一天一個 Linux 命令(26):fdisk 命令
本文為joshua317原創文章,轉載請註明:轉載自joshua317部落格https://www.joshua317.com/article/162
一、簡介
Linux裡的fdisk(英文全稱:"Partition table manipulator for Linux")是一個建立和維護磁碟分割槽表的命令,它相容 DOS 型別的分割槽表、BSD 或者 SUN 型別的磁碟列表。進行硬碟分割槽從實質上說就是對硬碟的一種格式化, 用一個形象的比喻,分割槽就好比在一張白紙上畫一個大方框,而格式化好比在方框裡打上格子。
二、格式說明
fdisk [options] fdisk [引數] Usage: fdisk [options] <disk> change partition table fdisk [options] -l <disk> list partition table(s) fdisk -s <partition> give partition size(s) in blocks Options: -b <size> sector size (512, 1024, 2048 or 4096) -c[=<mode>] compatible mode: 'dos' or 'nondos' (default) -h print this help text -u[=<unit>] display units: 'cylinders' or 'sectors' (default) -v print program version -C <number> specify the number of cylinders -H <number> specify the number of heads -S <number> specify the number of sectors per track
三、選項說明
-b 指定每個硬碟分割槽的大小,可用數值為512, 1024, 2048 or 4096 -c 相容模式:'dos'或'nondos'(預設) -h 顯示幫助資訊 -u 搭配”-l”引數列表,會用分割槽數目取代柱面數目,來表示每個分割槽的起始地址 -v 顯示版本資訊 -l 列出指定的外圍裝置的分割槽表狀況 -s 將指定的分割槽大小輸出到標準輸出上,以塊(block)為單位 -C [cyls]:指定硬碟的柱面數(number of cylinders); -H [heads]:指定硬碟的磁頭數(number of heads),當然不是物理數值,而是作用於分割槽表。合理取值是255和16 -S [sects]:指定每個磁軌的扇區數,當然不是物理數值,而是用於分割槽表。一個合理的數值是63
塊(block)與扇區(sector)的區別。 扇區是對硬碟而言,扇區是硬碟的最小儲存單位,塊是對檔案系統而言,塊是檔案系統最小存取單位。一般而言,一個扇區大小為512B,一個塊大小為4KB,一個block是由連續的8個sector組成。
理解上面選項的含義,需瞭解磁碟的物理組成結構與相關概念,例如sector、cylinder、head等組成部件的具體含義,可參見硬碟的儲存原理和內部架構 。
四、命令功能
建立和維護磁碟分割槽表
五、常見用法
5.1 顯示當前分割槽情況
# fdisk -l Disk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x000d64b4 Device Boot Start End Blocks Id System /dev/vda1 * 2048 104857566 52427759+ 83 Linux # fdisk -lu Disk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x000d64b4 Device Boot Start End Blocks Id System /dev/vda1 * 2048 104857566 52427759+ 83 Linux
#引數說明
Device:分割槽名稱;
Boot:是否是活動分割槽。活動分割槽只能是主分割槽,一個硬碟只能有一個活動的主分割槽;一個硬碟的主分割槽與擴充套件分割槽總和不能超過4個。硬碟分割槽遵循著“主分割槽→擴充套件分割槽→邏輯分割槽”的次序原則,而刪除分割槽則與之相反。
主分割槽:一個硬碟可以劃分多個主分割槽,但沒必要劃分那麼多,一個足矣。
擴充套件分割槽:主分割槽之外的硬碟空間就是擴充套件分割槽,
邏輯分割槽:是對擴充套件分割槽再行劃分得到的。
Start:分割槽柱面的開始下標;
End:分割槽柱面的結束下標;
Blocks:該分割槽的塊數量。
Id:各種分割槽的檔案系統不同,如有ntfs分割槽,fat32分割槽,ext3分割槽,swap分割槽等。每一種檔案系統都有一個代號,對應這裡的Id。常見的檔案系統ID有:
f:FAT32 Extend,只限於擴充套件分割槽。
86:NTFS。
7:HPFS/NTFS
b:FAT32。
83:Linux Ext2。
82:Linux 交換區。
System:檔案系統名稱。
5.2 顯示指定裝置的分割槽
# fdisk -l /dev/vdb
Disk /dev/vdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xeecbd2e1
Device Boot Start End Blocks Id System
/dev/vdb1 2048 209715199 104856576 83 Linux
[root@iz8vb6yk5a7gzhaw7901zkz ~]#
5.3 對指定裝置建立分割槽和檔案系統並掛載,使磁碟變為可用
5.3.1 建立一個分割槽
1.執行以下命令對資料盤進行分割槽。
fdisk -u /dev/vdb
2.輸入p檢視資料盤的分割槽情況。
本示例中,資料盤沒有分割槽。
3.輸入n建立一個新分割槽。
4.輸入p選擇分割槽型別為主分割槽。
說明 建立一個單分割槽資料盤可以只建立主分割槽。如果要建立四個以上分割槽,您應該至少選擇一次e(extended),創 建至少一個擴充套件分割槽。
5.輸入分割槽編號,按回車鍵。
本示例中,僅建立一個分割槽,直接按回車鍵,採用預設值1。
6.輸入第一個可用的扇區編號,按回車鍵。
本示例中,直接按回車鍵,採用預設值2048。
7.輸入最後一個扇區編號,按回車鍵。
本示例中,僅建立一個分割槽,直接按回車鍵,採用預設值。
8.輸入p檢視該資料盤的規劃分割槽情況。
9.輸入w開始分割槽,並在完成分割槽後退出。
結果如下所示:
5.3.2 檢視新分割槽資訊
fdisk -lu /dev/vdb
執行結果如下所示,如果出現/dev/vdb1的相關資訊,表示新分割槽已建立完成。
5.3.3 為分割槽建立檔案系統
在新分割槽上建立一個檔案系統。以下命令介紹如何建立ext4和xfs檔案系統,您可以根據實際需求,建立對應的檔案系統。
-
執行以下命令,建立一個ext4檔案系統。
mkfs -t ext4 /dev/vdb1
-
執行以下命令,建立一個xfs檔案系統。
mkfs -t xfs /dev/vdb1
本示例中,建立一個ext4檔案系統。
5.3.4 配置/etc/fstab檔案並掛載分割槽
在/etc/fstab中寫入新分割槽資訊,啟動開機自動掛載分割槽。
注意: 建議您在/etc/fstab中使用全域性唯一識別符號UUID來引用新分割槽。由於釋放雲盤等操作可能會導致其他雲盤的裝置名變動,如果在/etc/fstab中直接使用裝置名,當裝置名變動時可能影響您的儲存資料。
1.執行以下命令,備份/etc/fstab檔案。
cp /etc/fstab /etc/fstab.bak
2.在/etc/fstab裡寫入新分割槽資訊。
如果是root使用者,可以執行以下命令直接修改/etc/fstab檔案。如果是普通使用者,可以手動修改/etc/fstab檔案
echo `blkid /dev/vdb1 | awk '{print $2}' | sed 's/\"//g'` /mnt ext4 defaults 0 0 >> /etc/fstab
其中:
/dev/vdb1:已建立好檔案系統的資料盤分割槽,您需要根據實際情況修改對應的分割槽名稱。
/mnt:掛載(mount)的目錄節點,您需要根據實際情況修改。
ext4:分割槽的檔案系統型別,您需要根據建立的檔案系統型別修改。
注意:
說明 Ubuntu 12.04系統不支援barrier,需要執行echo '`blkid /dev/vdb1 | awk '{print $3}' | sed 's/\"//g'` /mnt ext4 barrier=0 0 0' >> /etc/fstab命令。
3.檢視/etc/fstab中的新分割槽資訊。
cat /etc/fstab
結果如下所示,如果出現新建檔案系統的資訊,表示檔案系統掛載成功
4.掛載/etc/fstab配置的檔案系統
mount -a
5.檢查掛載結果。
df -h
結果如下所示,如果出現新建檔案系統的資訊,表示檔案系統掛載成功。
本文為joshua317原創文章,轉載請註明:轉載自joshua317部落格https://www.joshua317.com/article/162