磁碟分割是指使用磁碟分割工具將磁碟劃分為一個或多個獨立的地區進行管理。磁碟在分區表中儲存了每個分區的位置和大小資訊,作業系統根據這些資訊將分區視作一個邏輯磁碟。從而防止資料丟失以及增加磁碟空間的利用率。本文將介紹如何管理磁碟分割,包括磁碟分割的建立、改變磁碟分割大小、修改磁碟分割類型和刪除分區。
磁碟分割
分區表的類型決定了單個分區的最大數量和大小。
磁碟分割表的類型有兩種:主引導記錄(MBR)和GUID分區表(GPT)。
最大分區數量
在MBR中,最大分區數為:“4個主要磁碟分割”或“3個主要磁碟分割和1個擴充分區”。其中,擴充分區又可以劃分為多個邏輯分區。
在GPT分區表中,最大分區數量為任意多分區,但某些分區工具(例如
parted
)會限制分區數目。
支援最大的磁碟大小
MBR支援的最大磁碟大小為:
如果扇區大小為512位元組,磁碟最大為2 TB。
如果扇區大小為4096位元組,磁碟最大為16 TB。
GPT支援的最大磁碟大小為:
如果扇區大小為512位元組,磁碟最大為8 ZB。
如果扇區大小為4096位元組,磁碟最大為64 ZB。
本文以MBR分區類型基於fdisk工具為例進行示範。
查看系統資訊。
sudo cat /etc/os-release
返回系統資訊如下所示。
NAME="Alibaba Cloud Linux" VERSION="3 (Soaring Falcon)" ID="alinux" ID_LIKE="rhel fedora centos anolis" VERSION_ID="3" UPDATE_ID="9" PLATFORM_ID="platform:al8" PRETTY_NAME="Alibaba Cloud Linux 3 (Soaring Falcon)" ANSI_COLOR="0;31" HOME_URL="https://www.aliyun.com/"
查看是否安裝了fdisk。
fdisk --help
若提示無法找到該指令,則執行以下命令安裝。
sudo yum install -y util-linux
查看fdisk是否安裝成功。
fdisk --help
列印以下資訊,表明fdisk工具安裝成功。
Usage: fdisk [options] <disk> change partition table fdisk [options] -l [<disk>] list partition table(s) ... For more details see fdisk(8).
建立分區表
本文以在磁碟/dev/vdb
下建立分區表為例進行說明。
查看系統磁碟資訊。
lsblk
返回磁碟資訊如下所示。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 253:0 0 40G 0 disk ├─vda1 253:1 0 2M 0 part ├─vda2 253:2 0 200M 0 part /boot/efi └─vda3 253:3 0 39.8G 0 part / vdb 253:16 0 20G 0 disk
進入
fdisk
的操作介面。sudo fdisk /dev/vdb
輸入
m
查看所有支援的命令,如下所示。... Create a new label g create a new empty GPT partition table G create a new empty SGI (IRIX) partition table o create a new empty DOS partition table s create a new empty Sun partition table
輸入指令
g
建立一份GPT分區表,輸入指令o
建立MBR分區表。輸入p
指令查看磁碟資訊如下所示。Command (m for help): o Created a new DOS disklabel with disk identifier 0x34c3f526. Command (m for help): p Disk /dev/vdb: 20 GiB, 21474836480 bytes, 41943040 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 Disklabel type: dos Disk identifier: 0x34c3f526
輸入
w
指令將分區表資訊寫入磁碟並退出。
建立分區
本文以在磁碟/dev/vdb
下建立分區為例進行說明。
進入
fdisk
的操作介面。sudo fdisk /dev/vdb
輸入指令
p
查看當前磁碟的資訊。Command (m for help): p Disk /dev/vdb: 20 GiB, 21474836480 bytes, 41943040 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 Disklabel type: dos Disk identifier: 0x34c3f526
輸入指令
n
建立新分區。Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): First sector (2048-41943039, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039): +100M Created a new partition 1 of type 'Linux' and of size 100 MiB.
輸入指令
p
選擇主要磁碟分割類型的分區。輸入
1
選用預設的分區號。輸入
2048
設定起始扇區為預設值2048。說明起始扇區為預設的2048,截止扇區為起始扇區開始往後+100 M大小的位置。兩種方式指定分區的大小。
+sectors:這種方式指定分區的大小為sectors個扇區。
+size:這種方式指定分區的大小為size,例如+100 M則指定分區大小為100 M。
輸入
+100 M
指定分區大小為100 M。建立的分區如下所示,其大小為100 M。
... Created a new partition 1 of type 'Linux' and of size 100 MiB.
輸入指令
w
將分區資訊寫入分區表中並退出。Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
修改分區大小
本文以分區擴容為例,介紹如何修改分區大小。fdisk
工具並沒有直接提供修改分區大小的指令,因此在使用fdisk
修改分區大小時,只能通過刪除原有分區並建立一個新的大小的分區來實現,然而,這一操作可能會導致原有資料的丟失。parted
是另一種磁碟分割工具,它提供了修改分區大小的相關指令。以下將介紹使用parted
工具修改分區大小的方法。
安裝
parted
。sudo yum install -y parted
確認是否安裝成功。
sudo parted --help
返回結果如下則證明安裝成功。
Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...] Apply COMMANDs with PARAMETERS to DEVICE. If no COMMAND(s) are given, run in interactive mode. OPTIONs: -h, --help displays this help message ...
進入
parted
操作介面。sudo parted /dev/vdb
設定
parted
的單位為MiB。(parted) unit MiB
輸入
p
指令查看所有的分區資訊:(parted) p Model: Virtio Block Device (virtblk) Disk /dev/vdb: 20480MiB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1.00MiB 101MiB 100MiB primary 2 101MiB 201MiB 100MiB primary
修改分區大小。
請將
NUMBER
END替換為對應的分區號和結束位置。resizepart NUMBER END
分區2的起始位置為101 MiB,若希望將其大小擴充至500 MiB,則結束位置為601 MiB。
(parted) resizepart 2 601MiB (parted) p Model: Virtio Block Device (virtblk) Disk /dev/vdb: 20480MiB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1.00MiB 101MiB 100MiB primary 2 101MiB 601MiB 500MiB primary
輸入
quit
退出parted
程式。進入
fdisk
的操作介面。sudo fdisk /dev/vdb
輸入指令p查看當前磁碟的資訊,確認分區大小。
Command (m for help): p Disk /dev/vdb: 20 GiB, 21474836480 bytes, 41943040 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 Disklabel type: dos Disk identifier: 0xefabc860 Device Boot Start End Sectors Size Id Type /dev/vdb1 2048 206847 204800 100M 83 Linux /dev/vdb2 206848 1230847 1024000 500M 83 Linux
輸入
q
退出。
修改分區類型
使用fdisk
修改分區類型。
進入
fdisk
操作介面。sudo fdisk /dev/vdb
輸入
p
查看當前分區資訊,分區資訊如下所示。Command (m for help): p Disk /dev/vdb: 20 GiB, 21474836480 bytes, 41943040 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 Disklabel type: dos Disk identifier: 0xefabc860 Device Boot Start End Sectors Size Id Type /dev/vdb1 2048 206847 204800 100M 83 Linux /dev/vdb2 206848 1230847 1024000 500M 83 Linux
輸入
l
查看所有分區類型,分區類型如下所示。0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris 1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT- 2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT- 3 XENIX usr 3c PartitionMagic 84 OS/2 hidden or c6 DRDOS/sec (FAT- 4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx 5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data 6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / . ......
修改分區類型。
以將分區2修改為擴充分區(類型號為5)為例,首先輸入指令
t
,接著輸入2,最後輸入5即可。Command (m for help): t Partition number (1,2, default 2): 2 Hex code (type L to list all codes): 5 Changed type of partition 'Linux' to 'Extended'.
輸入指令
p
查看分區資訊。Command (m for help): p Disk /dev/vdb: 20 GiB, 21474836480 bytes, 41943040 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 Disklabel type: dos Disk identifier: 0xefabc860 Device Boot Start End Sectors Size Id Type /dev/vdb1 2048 206847 204800 100M 83 Linux /dev/vdb2 206848 1230847 1024000 500M 5 Extended
輸入
w
儲存分區資訊至分區表中,並退出。Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
刪除分區
進入
fdisk
操作介面。sudo fdisk /dev/vdb
輸入
p
指令查看分區資訊。Command (m for help): p Disk /dev/vdb: 20 GiB, 21474836480 bytes, 41943040 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 Disklabel type: dos Disk identifier: 0xefabc860 Device Boot Start End Sectors Size Id Type /dev/vdb1 2048 206847 204800 100M 83 Linux /dev/vdb2 206848 1230847 1024000 500M 5 Extended
以刪除分區2為例,首先輸入指令
d
,然後輸入需要刪除的分區號2,將顯示如下資訊。Command (m for help): d Partition number (1,2, default 2): 2 Partition 2 has been deleted.
輸入
p
指令查看分區資訊,此時分區2已被刪除。Command (m for help): p Disk /dev/vdb: 20 GiB, 21474836480 bytes, 41943040 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 Disklabel type: dos Disk identifier: 0xefabc860 Device Boot Start End Sectors Size Id Type /dev/vdb1 2048 206847 204800 100M 83 Linux
輸入
w
指令儲存分區資訊至磁碟分割表並退出。Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.