Linux磁碟格式化(mkfs、mkfs.xfs、mkfs.ext4)、Linux檔案系統的校驗(xfs_repair、fsck_ext4)
一、mkfs命令
磁碟分割槽完畢後自然就是要進行檔案系統的格式化
格式化其實就是建立檔案系統。命令就是===>mkfs(make fileststem),這個命令只是個綜合命令。它會呼叫正確的檔案系統格式化工具
功能:mkfs是個綜合命令
使用
mkfs [tab] [tab]:按下兩下tab鍵檢視系統支援哪些檔案系統的格式化功能
mkfs -t [檔案系統格式名]===>等同於mkfs.檔案系統格式名
mkfs -t xfs 與 mkfs.xfs相同
二、格式化XFS檔案系統(mkfs.xfs)
XFS檔案系統簡介:https://dongshao.blog.csdn.net/article/details/86694903
功能:建立xfs檔案系統
格式
mkfs.xfs [-b 引數] [-d 引數] [-i 引數] [-l 引數] [-L 引數] [-f] [-r 引數] 裝置名稱
第一次執行mkfs.xfs可能需要安裝:apt-get install xfsprogs
相關引數
-b:後面接的是區塊容量,範圍是512B-64K。不過Linux最大為4K
-d:後面接的是data section(資料區)的相關引數值
agcount=數值 設定需要幾個儲存群組的意思(AG),通常與CPU有關
agsize=數值 每個AG設定為多少容量的意思。通常agcount/agsize只選一個設定
file 指的是格式化的裝置是個檔案而不是個裝置的意思(例如虛擬磁碟)
size=數值 data section的容量。你可以設定大小
su=數值 當有RAID(磁碟列陣)時,代表stripe的數值大小,與下面的sw搭配使用
sw=數值 當有RAID時,用於儲存資料的磁碟數量(需扣除備份盤與備用盤)
sunit=數值 與su意思相同。不過單位使用的是幾個sector(512B)的意思(一個stripe由多少個扇區組成)
swidth=數值 就是su*sw的數值,但是以幾個sector(512B)來設定
-f:如果裝置內已經有了檔案系統,則需要使用-f強制格式化
-i的引數:與inode有較相關的設定
size=數值 最小的是256B,最大是2K。一般使用256B就足夠了
internal=[0/1] log裝置是否為內建。預設1為內建,如果使用外部裝置,使用下面設定
logdev=裝置名 log裝置為後面接的那個裝置上面的意思,需設定internal=0才可以
size=數值 指定這塊登入區的容量,通常最小得要512個區塊,大約2M=以上才行
-L引數:後面接這個檔案系統的標頭名稱Label name
-r引數:指定realtime section(實時執行區)的相關設定值
extsize=數值 就是那個重要的extent區塊數值,一般不需設定。但有RAID時,最好設定與swidth的數值相同較佳。最小為4K,最大為1G
演示案例
使用mkfs.xfs命令時,一般預設回車就可以了,使用系統預設的
演示案例1:使用gdisk新建一個sda2新分割槽,並格式化成為xfs檔案系統
演示案例2:設定CPU的數量
有時我們為了使用多個數據流來讀寫系統,以增加速度,需要設定多個agcount數量,agcount與CPU的核心數有關
檢視一下系統的CPU數量:grep 'processor' /proc/cpuinfo
如果需要兩個執行緒的CPU數量時:mkfs.xfs -f -d agcount=2 /dev/sda2
XFS檔案系統for RAID效能優化
磁碟列陣(RAID):磁碟列陣是多塊磁碟組成一塊大磁碟的意思,利用同步寫入到這塊磁碟的技術,不但可以加快讀寫速度,還可以讓某一塊磁碟壞掉時,整個檔案系統還是可以持續執行,這就是所謂的容錯
結構特點
stripe:磁碟列陣通過將檔案先細分成為數個小型的分割槽區塊(stripe)之後,然後將眾多的stripes分別放到磁碟列陣裡面的所有磁碟,所以一個檔案是被同時寫入到多個磁碟中,效能會好一些。stripe與你的檔案資料容量以及效能相關性較高
stripe的大小:分割槽區塊的數值介於4K-1M之間,這與你的磁碟列陣卡支援的選項有關。當你的系統多大是大型檔案時,一般建議stripe大一些,如果小檔案較多,建議設定64K左右
安全性:在這些磁盤裡面,會保留數個校驗磁碟(parity disk),以及可能會保留一個以上的備用磁碟(spare disk)。這些磁碟會佔用總磁碟列陣的容量
演示案例:使用mkfs.xfs格式化磁碟列陣。我們假設:
我有兩個執行緒的CPU數量,所以agcount最好指定為2
RAID的stripe指定為256K,則su也指定為256K
磁碟列陣總共有8塊,因為RAID 5標準的設定,有1個校驗盤,所以指定sw為7
由上述可知,資料寬度(swidth)指定為256K*7=1792K,extsize=1792K
mkfs.xfs -f -d agcount=2,su=256k,sw=7 -r extsize=1792k /dev/sda2
承上,如果我們使用sunit與swidth來設定,則
sunit=256K/512B*1024B=512個sector
swidth=7個磁碟*sunit=7*512=3584個sector
mkfs.xfs -f -d agcount=2,sunit=512,swidth=3584 -r extsize=1792k /dev/sda2
三、ext4檔案系統格式化(mkfs.ext4)
功能:建立ext4檔案系統
格式
mkfs.ext4 [-b 引數] [-L 引數] 裝置名稱
引數
-b:後面設定區塊的大小,有1K、2K、4K
-L:後面接這個裝置的標頭名稱Label name
提示:
ext4的預設值已經相當合適我們系統使用,大部分的預設值寫入至/etc/mke2fs.conf這個檔案中
因此我們無需額外指定inode的容量,系統都幫我們做好了預設值,只需要知道uuid即可
演示案例:
mkfs.ext4 /dev/sda2
四、其他檔案系統格式化
mkswap 裝置檔名:用於記憶體交換分割槽的格式化
mkfs.vfta 裝置檔名:vfat檔案系統格式的格式化
五、Linux檔案系統的校驗
系統執行時,如果硬體或者電源等出問題,或者檔案系統執行時,磁碟與記憶體資料非同步的狀態發生,系統會出錯
此時就需要檔案系統的校驗,不同的檔案系統命令不一樣,下面我們主要針對xfs於ext4檔案系統進行講解
下面的命令只有當檔案系統出錯且為root身份時在使用,不要隨意使用,可能會對系統造成危害
重點:修復檔案系統時,可能會造成檔案系統的改變,所以執行命令時,被檢測的硬碟分割槽不能被掛載,若掛載則不能順利的修復檔案系統,需要解除安裝後再處理。當然,沒有掛載的檔案系統可以處理
六、xfs_repair處理XFS檔案系統
功能:對XFS檔案系統進行檢測或者修復
格式:
xfs_repair [選項] 裝置名稱
選項:
-f:後面的裝置其實是個檔案而不是裝置時使用
-n:單純檢查並不修改檔案系統的任何資料
-d:通常用在單人維護模式下,針對根目錄(/)進行檢查與修復(很危險,不要隨便使用)
注意事項:Linux的根目錄無法被解除安裝,所以需要使用-d進入單人維護模式處理,但是跟某的檢查與修復儘量避免
例如:校驗/dev/sda2分割槽
xfs_repair /dev/sda2
七、fsck_ext4處理ext4檔案系統
功能:對ext4檔案系統進行檢測或者修復
格式:
fsck_ext4 [選項] [-b 引數] 裝置名稱
選項與引數:
-p:當檔案系統在修復時,如果有需要回復y的操作,自動回覆
-f:強制詳細檢查。一般來說,fsck沒有發現任何unclean的標識,不會主動進入詳細檢查的。如果加上這個引數,fsck就會詳細檢查
-D:針對檔案系統下的目錄進行最佳化配置
-b的引數:後面跟的是超級區塊的位置,這個選項一般用不到。如果你的超級區塊受損時,就可以使用這個引數利用檔案系統的備份超級區塊來嘗試修復。一般來說,超級區塊備份在:1K區塊在8193、2K區塊在16384、4K區塊在32768
演示案例
①對32768區塊進行校驗:如果檔案系統出問題,會提示你是否輸入y進行修復。並且檔案系統修復完,會有警告資訊
fsck_ext4 -b 32768 /dev/sda2
②檔案系統正確,進行強制校驗
fsck_ext4 -f /dev/sda2