之前使用最多的分區命令無疑是fdisk了,大多數情況下fdisk可以滿足日常工作上的需求,極個別情況就需要使用parted命令了,至於及個別情況就要從MBR和GPT說起。
MBR主引導扇區
主引導扇區,是計算機開機后訪問硬盤時所必須要讀取的首個扇區,主引導扇區記錄着硬盤本身的相關信息以及硬盤各個分區的大小及位置信息,是數據信息的重要入口。如果它受到破壞,硬盤上的基本數據結構信息將會丟失,需要用繁瑣的方式試探性的重建數據結構信息后才可能重新訪問原先的數據。
硬盤分區表占據主引導扇區的64個字節,可以對四個分區的信息進行描述,其中每個分區的信息占據16個字節。主引導記錄僅僅包含一個64個字節的硬盤分區表。由於每個分區信息需要16個字節,所以對於采用MBR型分區結構的硬盤,最多只能識別4個主要分區(Primary partition)。對於一個采用此種分區結構的硬盤來說,想要得到4個以上的主要分區是不可能的。這里就需要引出擴展分區了。擴展分區也是主要分區的一種,但它與主分區的不同在於理論上可以划分為無數個邏輯分區。
MBR分區特點:
- 在MBR分區表中最多4個主分區或者3個主分區+1個擴展分區,也就是說擴展分區只能有一個,然后可以再細分為多個邏輯分區。
- 在Linux系統中,硬盤分區命名為sda1-sda4或者hda1-hda4(其中a表示硬盤編號可能是a、b、c等等)。在MBR硬盤中,分區號1-4是主分區(或者擴展分區),邏輯分區號只能從5開始。
- 在MBR分區表中,一個分區最大的容量為2T,且每個分區的起始柱面必須在這個disk的前2T內。你有一個3T的硬盤,根據要求你至少要把它划分為2個分區,且最后一個分區的起始扇區要位於硬盤的前2T空間內。如果硬盤太大則必須改用GPT。
MBR分區的第三個特點也就是我這里所說的極個別情況,MBR分區表中一個分區的最大容量為2T,所以我們使用fdisk規划分區時最大為2T,如果是大數據服務器或者日志服務器,很可能不能滿足我們的需求,這時我們就需要使用GPT分區表,使用parted命令來規划分區。
GPT分區表
全局唯一標識分區表(GUID Partition Table,縮寫:GPT)是一個實體硬盤的分區表的結構布局的標准。它是可擴展固件接口(EFI)標准(被Intel用於替代個人計算機的BIOS)的一部分,被用於替代BIOS系統中的一32bits來存儲邏輯塊地址和大小信息的主引導記錄(MBR)分區表。GPT可管理硬盤大小達到了18EB(1EB=1024PB=1,048,576TB)
分區表對應使用分區命令
| 分區表 | 使用命令 |
|---|---|
| MBR分區表 | fdisk/parted |
| GPT分區表 | parted |
很直觀的體現出其實parted的功能比fdisk更強。
parted命令使用
兩種運行模式:
- 命令行模式
- 交互模式
命令行模式
parted /dev/sdb mktable gpt:設置數據盤類型為GPT分區表
parted /dev/sdb mkpart p1 ext4 1MiB 10MiB:設置第一個分區名為p1,文件系統類型為ext4,大小為1MiB到10MiB。(與fdisk分區命令一致當磁盤分區表類型為MBR時分區還需要指定主分區或拓展分區)
parted -l
Model: ATA CentOS Linux-1 (scsi)
Disk /dev/sdb: 10.7GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 10.5MB 9437kB p1
交互模式
parted /dev/sdb
(parted) mkpart
Partition name? []? p1
File system type? [ext2]? ext4
Start? 0
End? 100%
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? ignore
(parted) print
Model: ATA CentOS Linux-1 (scsi)
Disk /dev/sdb: 10.7GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 17.4kB 10.7GB 10.7GB ext4 p1
(parted)
掛載使用
mount /dev/sdb1 test
cd test
touch 1.txt
ls
[root@centos-linux test]# ls
1.txt
[root@centos-linux test]#
