一天一個 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

結果如下所示,如果出現新建文件系統的信息,表示文件系統掛載成功。

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM