分區、格式化與修復
磁盤分區命令
不同的文件系統要用不同的命令來分區,在執行分區前應該執行lsblk和parted命令來查看相關信息,然后再執行分區。執行磁盤分區時主要用gdisk和fdisk命令,這兩個命令分別適用於MBR分區和GPT分區,不能搞混。
gdisk后加裝置命令就可以進入分區命令模式,然后會讓用戶輸入指令,可以按?查看可輸入的指令,注意該命令只能root使用,且裝置名不能加數字,因為它不是針對某個分區的命令。
新增分區槽時會詢問用戶分區號和新分區空間,刪除分區時會讓用戶指定要刪除的分區號,刪除和新增都需要執行partprobe命令更新linux核心分區表信息,注意不能刪除正在活動的文件系統,應該先卸除(取消掛載)該分區然后再刪除。
分區命令還有一個parted命令,它同時支持MBR和GPT,而且它還能修改分區表格式,這個parted的好處在於適合寫入腳本中自動執行,它可以不和用戶進行互動來完成分區。
以fdisk為例:
執行fdisk /dev/sdb
其中sdb是設備文件名,不能后面加編號,如sdb1,因為此時還沒有分區。執行分區后進入命令模式,按p會顯示分區狀態,l可以查看分區ID號,82是swap,83是linux分區,n是新建分區,然后按e表示建立擴展分區,按p表示創建主分區。然后輸入分區號,開始柱面和結束柱面。

必須建立擴展分區后才能建立邏輯分區。
分區后按w保存退出,有時必須重啟才能生效,此時可以重新讀取分區表信息partprobe
,如果該命令還是無效還是要重啟。
分區結束后進行格式化mkfs -t ext4 /dev/sdb1
注意此時擴展分區不能格式化。然后把設備掛載就可以使用了,但是使用mount命令再次開機時掛載就會失效,此時應該進行永久掛載。
磁盤格式化
當磁盤分區好后,應該執行磁盤格式化。格式化主要是使用mkfs(make filesystem)命令
把磁盤分區格式化為xfs文件系統:mkfs.xfs 分區裝置名
,這個命令可以設置格式化時的參數,包括block的大小、inode大小、CPU核心數、stripe大小等,一般默認即可。stripe和磁盤陣列(RAID)有關,磁盤陣列就是將多個磁盤組合成一個大磁盤,然后寫文件時可以將文件分為多個小型的分區區塊(stripe)后,同時寫入多個磁盤中,這樣不僅可以加快讀寫速度,還增加了容錯能力。
把磁盤分區格式化為ext4文件系統:mkfs.ext4 分區裝置名
,格式化時也可以設置參數。
也可以把磁盤格式化為其他文件系統,輸入mkfs按兩下tab就可以顯示可格式化的文件系統。
文件系統的修復
因為數據異步的原因,宕機可能會導致文件系統的混亂,對於XFS文件系統主要用xfs_repair加裝置分區名來修復文件系統,對於EXT4系統應該用fsck.ext4命令加裝置分區名來修復,被修復的文件系統不能被掛載,可以卸除再進行修復,但對於不可卸除的根目錄來說,想要修復就必須進入單人模式然后通過加選項強制修復。這個命令只能root用戶有執行權限,正常情況下使用這些指令可能會造成對系統的損壞。
文件系統參數修改
裝置文件有兩個參數分別是major和minor,執行lsblk就能看到相關的數字,系統就是通過這兩個參數來識別各種裝置的,參考linux核心官網就能找到很多的硬件裝置代碼major和minor。
mknod可以修改裝置代碼:mknod 裝置分區名 b 252 10
,后面兩個數字分別代表major和minor。
還可以建立FIFO文件:mknod 文件名 p
,用ll命令可以看到文件類型變成了p。
xfs_admin可以修改XFS文件系統的UUID和LABEL:
xfs_admin -L 標簽名 裝置分區名
、xfs_admin -U uuid值 裝置分區名
,注意這里的uuid值必須是新的,可以用uuidgen命令來產生新的UUID。
tune2fs可以修改ext4文件系統的UUID和LABEL:
tune2fs -L 標簽名 裝置分區名
系統修復模式
進入修復模式步驟:首先在開機時按鍵盤,(如果已加密就先按p輸入密碼),按e,將光標移動到kernel再按e,改為b quiet 1,然后回車,再按b就能單用戶模式啟動。
該模式不需要輸入用戶名和密碼,可以在該狀態重新設置root密碼:passwd root
,還可以修改默認運行級別(如果修改為0就無法開機,但是可以通過這種方法來設置回去)
如果忘記grub密碼可以通過光盤修復模式破解,光盤修復模式開機時加載的是光盤而不是硬盤,此時可以修改grub加密密碼從而得到root用戶密碼。