1. 程式人生 > 其它 >一天一個 Linux 命令(26):fdisk 命令

一天一個 Linux 命令(26):fdisk 命令

一、簡介

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

結果如下所示,如果出現新建檔案系統的資訊,表示檔案系統掛載成功。