本文為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