磁盤管理

回顧

{a..f}

a b c d e f

]# arr=({a..z})

]# echo ${#arr[*]}

26

]# N1=N2

]# N2=zhuchaoming

]# echo ${!N1}

eval N1=\$$N2

echo $N1

創建臨時文件

mktemp NAME.XXX

交互式登錄

/etc/profile –> /etc/profile.d/*.sh –> ~/.bash_profile –> ~/.

bashrc –> /etc/bashrc

非交互式登錄

~/.bashrc –> /etc/bashrc –> /etc/profile.d/*.sh

bashrc類的文件

本地變量、別名

profile類

環境變量、腳本

yum

creatrepo 創建倉庫

./config –perfix=/PATH/TO/SONEFILE

make

make install

CentOS 5上以柱面劃分分區,最小為8M

MBR:

fdisk

GPT: 創建完以后一定要記得同步,

gdisk

磁盤管理

設備文件

設備類型

塊設備

字符設備

設備號碼

主設備號:major number

次設備號:minor number

硬盤接口類型

并行:ide 133MB\s

scsi:640MB\s 

串口:

SATA

SAS

USB

““`/dev/sd

a-z

主分區:1-3

擴展分區:4

邏輯分區:必須從5…..

硬盤結構

硬盤是后一個一個的扇區和磁道組成

扇區:一個扇區“512”字節

柱面:對應的磁道為一個柱面

簇:  兩個扇區為一個“簇”

63x512x1024x256=7.85G

使用分區空間

磁盤分區:

優點:

1、隔離系統和程序

2、安裝多個0S

3、提高修復速度

4、實現磁盤空間配額限制

5、優化I/O性能

分區

MBR

1982,,32位扇區數,分區不超過2T

GPT

支持128個分區,64位,支持8Z 64Z

MBR分區結構

GPT分區

分區管理:

blkid:、

塊設備屬性信息查看

blkid [OPTION]… [DEVICE]

-U UUID: 根據指定的UUID來查找對應的設備

-L LABEL:根據指定的LABEL來查找對應的設備

文件系統類型

分區工具fdisk和gdisk

fdisk:

創建MBR分區,也支持GPT,一塊硬盤,最多只能管理15個分區

fdisk -l[-u][device]

]# fdisk /dev/sdb \\對這塊設備進行操作

]# fdisk -l \\顯示所有的塊設備

gdisk: \\子命令跟fdisk基本相似,所以我們也可以用gdisk來管理MBR分區,但是不推薦這么管理,畢竟不同的分區用不同的管理工具更好

創建GPT分區

   p \\分區列表

t \\更改分區類型

n \\創建新分區

d \\刪除分區

w \\保持并推出

q \\不保存退出

partprobe:

重新設置內存中的內核分區表

同步分區表

查看內核識別新的分區

]# cat /proc/partations

新創建的分區一般都沒有被內存識別,所有在參加完新的分區以后通知內核重新讀取硬盤分區表

新增分區用

partx -a -n M:N /dev/DEVICE

kpartx -a /dev/DEVICE -f: force

刪除分區用

partx -d -n M:N /dev/DEVICE

centos6: –nr N-M

#因為在centos6上partprobe一直存在bug所有不推薦在6上使用partprobe命令,但是在7上已經解決了這個問題

parted命令

文件系統

文件系統是操作系統用于明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。操作系統中負責管理和存儲文件信息的軟件結構稱為文件管理系統,

簡稱文件系統。

? 從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲并對存入的文件進行保護和檢索的系統。具體地說,它負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日志,壓縮,

加密等。


文件系統類型

ext2,ext3,ext4,xfs,btrfs,reiserfs,jfs,swap

swap:交互分區

光盤:iso9660

Windows: fat32, ntfs

Unix: FFS( fast) , UFS( unix) , JFS2

網絡文件系統: NFS, CIFS

集群文件系統: GFS2, OCFS2( oracle)

分布式文件系統: ceph, moosefs, mogilefs, glusterfs,Lustre

RAW:未經處理或者未經格式化產生的文件系統

日志型文件系統:

ext3,ext4,xfs,…

非日志型文件系統:

ext2,vfat

文件系統的組成部分:

內核中的模塊: ext4, xfs, vfat

用戶空間的管理工具: mkfs.ext4, mkfs.xfs,mkfs.vfat

Linux的虛擬文件系統: VFS

查前支持的文件系統: cat /proc/filesystems

創建文件系統

mkfs:

# mkfs.FS_TYPE /dev/DEVICE

# mkfs FS_TYPE /dev/DEVICE

FS_TYPE:

ext4

xfs

btrfs

vfat

-L 'LATEL':設定卷標

創建ext文件系統

這個命令是專門用來創建ext文件系統的命令,不要和mkfs混淆

mke2fs:

-t {ext2|ext3|ext4}

-b {1024|2048|4096}

-L ‘LABEL’

-j 相當于 -t ext3

mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3

-i # :為數據空間中每多少個字節創建一個inode;此大小不應該小于block的大小

-N #:為數據空間創建個多少個inode

-m #: 默認5%,為管理人員預留空間占總空間的百分比

-O FEATURE[,…]:啟用指定特性

-O ^FEATURE:關閉指定特性

文件系統標簽

e2label:

管理ext系列文件系統的LABEL

# e2abel DEVICE [LABEL]

findfs:查找分區

findfs [options] LABEL=<label>

dinfs [options] UUID=<uuid>

tune2fs

tune2fs:重新設定ext系列文件系統可調整參數的值

-l: 查看指定文件系統超級塊信息; super block

-L 'LABEL': 修改卷標

-m #: 修預留給管理員的空間百分比

-j: 將ext2升級為ext3

-O: 文件系統屬性啟用或禁用, –O ^has_journal

-o: 調整文件系統的默認掛載選項,–o ^acl

-U UUID: 修改UUID號;

dumpe2fs:

用于打印“ext2/ext3/ext4”文件系統的超級塊和快組信息

-b:打印文件系統中預留的塊信息; 

-ob<超級塊>:指定檢查文件系統時使用的超級塊; 

-OB<塊大小>:檢查文件系統時使用的指定的塊大小; 

-h:僅顯示超級塊信息; 

-i:從指定的文件系統映像文件中讀取文件系統信息; 

-x:以16進制格式打印信息塊成員。

文件系統檢測和修復

常發生于死機或者非正常關機之后

掛載為文件系統標記為“ dirty”

fsck: File System Check

fsck.FS_TYPE

fsck -t FS_TYPE

-a: 自動修復錯誤

-r: 交互式修復錯誤

注意: FS_TYPE一定要與分區上已經文件類型相同;

e2fsck: ext系列文件專用的檢測修復工具

-y:自動回答為yes

-f:強制修復

mount

設備想要能夠被訪問就必須得掛載一個目錄下面,通過訪問這個目錄才能夠對這個行情進行操作

掛載:將額外文件系統與根文件系統某現存的目錄建立起關聯系,進而使得此目錄做為其它文件訪問入口的行為

卸載:為解除此關聯關系的過程

把設備關聯掛載點: mount Point

mount

卸載時:可使用設備,也可以使用掛載點

umount

掛載點下原有文件在掛載完成后會被臨時隱藏

掛載點目錄一般為空

mount命令掛載文件系統

mount DEVICE  DIR

通過查看/etc/mtab文件顯示當前意掛載的所有設備

mount [-fnrsvw] [-t vfstype] [-o options] device dir

DEVICE:

1、設備文件

2、卷標

3、UUID

4、偽文件系統名稱:proc,sysfs,devtmpfs,configfs

掛載點:

事先存在,使用空目錄

進程中正在使用的設備無法被卸載

選項:

-t vsftype:指定要掛載的設備上的文件系統類型

-r:只讀掛載

-w:讀寫掛載(默認)

-n:不更新/etc/mtab,相當于#mount

-a:自動掛載所有支持自動掛載的設備(定義在了/etc/fstab,選項中有auto功能)

-L ‘LABEL‘:以卷標指定掛載設備

-U UUID:以UUID

-B,–bind:綁定一個到你另一個目錄上

-o options: (掛載文件系統的選項),多個選項使用逗號分隔

async:異步模式

sync:同步模式,內存更改時,同時寫磁盤

atime/noatime:包含目錄和文件

diratime/nodiratime:目錄的訪問時間戳

auto/noauto:是否支持自動掛載,是否支持-a選項

exec/noexec:是否支持將文件系統上運行應用程序

dev/nodev:是否支持在此文件系統上使用設備文件

suid/nosuid:不否支持suid和sgid權限

remount:重新掛載

ro:只讀

rw: 讀寫

user/nouser:是否允許普通用戶掛載此設備,默認管理員才能掛載

acl:啟用此文件系統上的acl功能

Defaults:相當于rw, suid, dev, exec, auto, nouser, async

選項

卸載

查看掛載情況:

#findmnt MOUNT_POINT

查看正在訪問指定文件系統的進程:

#lsof MOUNT_POINT

#fuser -v MOUNT_POINT

終止所有在正訪問指定的文件系統的進程:

# fuser -km MOUNT_POINT

卸載:

# umount DEVICE

# umount MOUNT_POINT


掛載點和/etc/fstab

在系統后保留文件系統體系

可在設置蘭使用卷標

使用mount -a 掛載/etc/fstab下的所有文件系統

/etc/fstab 每行定義一個要掛載的文件系統;

格式:

要掛載的設備或偽文件系統(設備名、卷標、UUID)、掛載點、文件系統類型、掛載選項、轉儲頻率? 自檢次數

DEVICE/dir /path/dir fstab  

?  掛載選項: defaults

?  轉儲頻率: 0 :不做備份

1 :每天轉儲

2 :每隔一天轉儲

?  自檢次序: 0 :不自檢

1 :首先自檢;一般只有rootfs 才用1


SWAP分區

當系統內存空間被占滿時,系統將自動把磁盤交換分區的一部分空間用作系統內存,一般是系統內存空間的2倍

配置:

基本設置包括:

? 創建交換分區或者文件

? 使用mkswap 寫入特殊簽名

? 在 在/etc/fstab 文件中添加適當的條目

? 使用swapon -a 

級別:

磁盤上啟用了很多swap分區,讓這些swap分區有先后的使用順序

1、系統自動指定一個優先級

                -1~~~~~~

            2、新加入的自動減一(沒有指定優先級的swap)

            3、先添加的swap 的缺省優先級比較高,除非用戶自己指定一個優先級,而用戶指定的優先級( 是正數) 永遠高于核心缺省指定的優先級( 是負數)。 

            4、分布存放,高性能磁盤存放


光盤的使用

    在圖形環境下自動啟動掛載/run/media/<user>/<label>

?  否則就必須被手工掛載

        mount /dev/cdrom /mnt/

? eject 命令卸載或彈出磁盤

?  創建ISO 文件

        cp /dev/cdrom /root/centos7.iso

        kisofs -r -o /root/etc.iso /etc

?  刻錄光盤

        odim –v –eject centos.iso

        

掛載USB 介質

?  被內核探測為SCSI 設備

        ? /dev/sdaX 、/dev/sdbX 、或類似的設備文件

    在圖形環境中自動掛載

        ? 圖標在[ 計算機] 窗口中創建

    掛載在/run/media/<user>/<label>

        ?  手動掛載

        ? mount /dev/sdb1 /mnt


常見工具

?  內存空間使用狀態:

        free [OPTION]

            -m:  以MB 為單位

            -g:  以GB 為單位

?  文件系統空間占用等信息的查看工具:

        df [OPTION]… [FILE]…

            -H 1000

            -T  文件系統類型

            -h: human-readable

            -i :inodes instead of blocks

            -P:  以Posix 兼容的格式輸出

?  查看某目錄總體空間占用狀態:

        du [OPTION]… DIR

            -h: human-readable

            -s: summary


dd 命令:convert and copy a file

?  用法:

        dd if =/PATH/FROM/SRC of=/PATH/TO/DEST

            bs=# :block size,  復制單元大小

            ount=# :復制多少個bs

of=file 寫到所命名的文件而不是到標準輸出

        if=file 從所命名文件讀取而不是從標準輸入

        bs=size 指定塊大小(既是是ibs 也是obs)

        ibs=size 一次讀size 個byte

        obs=size 一次寫size 個byte

        cbs=size 一次轉化size 個byte

        skip=blocks 從開頭忽略blocks 個ibs 大小的塊

        seek=blocks 從開頭忽略blocks 個obs 大小的塊

        count=n 只拷貝n 個記錄

?       conv=conversion[,conversion…]  用指定的參數轉換文件。

?       轉換參數:

        ? ascii 換 轉換 EBCDIC 為 為 ASCII。 。

        ? ebcdic 換 轉換 ASCII 為 為 EBCDIC。 。

        ? block  轉換為長度為 cbs  的記錄,不足部分用空格填充。

        ? unblock 替代cbs 長度的每一行尾的空格為新行。

        ? lcase  把大寫字符轉換為小寫字符。

        ? ucase  把小寫字符轉換為大寫字符。

        ? swab  交換輸入的每對字節。

        ? noerror  出錯時不停止。

        ? notrunc  不截短輸出文件。

        ? sync  把每個輸入塊填充到ibs 個字節,不足部分用空(NUL)

        磁盤拷貝:

            dd if=/dev/sda of=/dev/sdb

        備份MBR: :

            dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1

        破壞MBR 中的bootloader: :

            dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446

            有二進制文件 fileA, , size>2K ?,F在想從第64 個字節位置開始讀取,需要讀取的大小是128Byts 。又有fileB,  想把上面讀取到的128Bytes 寫到第32個字節開始的位置,替換128Bytes ,請問如何實現?

            #dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc

        備份:

                dd if=/dev/sdx of=/dev/sdy

            將本地的/dev/sdx 整盤備份到/dev/sdy

                dd if=/dev/sdx of=/path/to/image

            將 將/dev/sdx 全盤數據備份到指定路徑的image 文件

                dd if=/dev/sdx | gzip >/path/to/image.gz

            備份/dev/sdx 全盤數據,并利用gzip 工具進行壓縮,保存到指定路徑

        恢復:

            dd if=/path/to/image of=/dev/sdx

                將備份文件恢復到指定盤

            gzip -dc /path/to/image.gz | dd of=/dev/sdx

                將壓縮的備份文件恢復到指定盤

        拷貝內存資料到硬盤

            dd if=/dev/mem of=/root/mem.bin bs=1024

            將內存里的數據拷貝到root 目錄下的mem.bin 文件

?      從光盤拷貝iso 鏡像

            dd if=/dev/cdrom of=/root/cd.iso

            拷貝光盤數據到root 文件夾下,并保存為cd.iso 文件

?      銷毀磁盤數據

            dd if=/dev/urandom of=/dev/sda1

            利用隨機的數據填充硬盤,在某些必要的場合可以用來銷毀數據。執行此操作以后,/dev/sda1 將無法掛載,創建和拷貝操作無法執行。

        得到最恰當的block size

            dd if=/dev/zero bs=1024 count=1000000

            of=/root/1Gb.file

            dd if=/dev/zero bs=2048 count=500000

            of=/root/1Gb.file

            dd if=/dev/zero bs=4096 count=250000

            of=/root/1Gb.file

            dd if=/dev/zero bs=8192 count=125000

            of=/root/1Gb.file

            通過比較dd 指令輸出中所顯示的命令執行時間,即可確定系統最佳的block size 大小

        測試硬盤讀寫速度

            dd if=/root/1Gb.file bs=64k | dd of=/dev/null

            dd if=/dev/zero of=/root/1Gb.file bs=1024

            count=1000000

                通過上兩個命令輸出的執行時間,可以計算出測試硬盤的讀/寫速度

        修復硬盤

            dd if=/dev/sda of=/dev/sda

            當硬盤較長時間(比如1 ,2 年)放置不使用后,磁盤上會產生消磁點。當磁頭讀到這些區域時會遇到困難,并可能導致I/O 錯誤。當這種情況影響到硬盤的第一個扇區時,可能導致硬盤報廢。上邊的命令有可能使這些數據起死回生。且這個過程是安全,高效的


練習

 1、創建一個2G的文件系統,塊大小為2048byte, 預留1%可用空間,文件系統ext4,卷標為TEST,要求此分區開機后自動掛載至/testdir目錄,且默認有acl掛載選項

2、寫一個腳本,完成如下功能:

    (1) 列出當前系統識別到的所有磁盤設備;

    (2) 如磁盤數量為1,則顯示其空間使用信息;

    否則,則顯示最后一個磁盤上的空間使用信息;


演示步驟

        分區啟動swap

            1、fdisk /dev/sdb #創建一個分區

            2、mkswap -L SWAP_SDB1 /dev/sdb1 #格式化swap

            3、vim /etc/fstab #寫入/etc/fstab

                    LABEL=SWAP_SDB1 swap swap defaults 0 0 #格式

            4、swapon -s #查看以啟用的swap

            5、swapon -a #啟用現有的分區

        文件啟動swap

            1、dd if=/dev/zero of=/testidr/swapfile bs=1M count=1024

            2.mkswap /testdir/swapfile

            3.vim /etc/fstab

                /testdir/swapfile swap swap defaults 0 0

            4.swapon -s 

            5.swapon -a 


        刪除swap

            swapoff /dev/sdb1 或swapoff /testdir/swapfile ##禁用swap分區

            刪除/etc/fstab相應記錄

            刪除分區和文件


        創建iOS文件

            cp /dev/sr0 /testdir/centos.iso

        掛載iso文件

            mount -o loop /testdir/centos7.iso /mnt/iso

        將目錄打包成iso文件

            mkisofs -r -o etc.iso /etc/

原創文章,作者:皺 多利亞,如若轉載,請注明出處:http://www.www58058.com/41447

(0)
皺 多利亞皺 多利亞
上一篇 2016-09-07 09:37
下一篇 2016-09-07 09:38

相關推薦

  • Shell腳本、特殊變量、declare、算術運算、退出狀態、條件測試、括號區別

    Shell腳本、特殊變量、declare、算術運算、退出狀態、條件測試、括號區別 Shell腳本基礎(一) 練習

    Linux干貨 2016-08-15
  • Python from entry to abandon 3

        第十章的內容是解決問題————編寫一個Python腳本。在我的電腦上因為Zip命令不能正常工作所以無法給出演示。該章給出了很有意義的編程思路,對以后學習和工作都有不錯的參考意義,這部分有興趣的同學還是自己去看原版教程吧。    這篇博客結合個人筆記整理了《簡明Python教程》第十一章到第十…

    Linux干貨 2017-04-07
  • 進程管理工具

    進程管理工具 kill man 7 signal 1) SIGHUP: 無須關閉進程而讓其重讀配置文件 kill -1 進程編號 2) SIGINT: 中止正在運行的進程;相當于Ctrl+c 9) SIGKILL: 殺死正在運行的進程 再生進程 kill -9 殺不掉 15) SIGTERM:終止正在運行的進程 kill -15/或不寫(默認) +進程編號。…

    Linux干貨 2016-09-11
  • 20160802課堂作業

    作業: 在/data/testdir里創建的新文件自動屬于g1組,組g2的成員如:alice能對這些新文件有讀寫權限,組g3的成員如:tom只能對新文件有讀權限,其它用戶(不屬于g1,g2,g3)不能訪問這個文件夾。 #groupadd g1 #groupadd g2 #groupadd g3 #useradd -G g2 alice #useradd -G…

    Linux干貨 2016-08-04
  • nfs

    NFS 服務 : Network File system 網絡文件系統效果: 好像在本機硬盤一樣原理: 當用戶去訪問 映射成本地系統 // 原理 掛載屬性: vsftpd 是應用程序,(內核支持) nfs 是一個文件系統應用: 局域網(最多用于) — 依賴網絡 應用層 app httpd 80 vsftpd 傳輸層 tcp/ipinternet層…

    Linux干貨 2018-02-05
  • N26-第七周博客作業

    一、創建一個10G分區,并格式為ext4文件系統; 1、 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;          A、創建一個10G的磁盤空間 [root@VM_221_40_centos ~]#fdisk /de…

    2017-07-09
欧美性久久久久