用於管理磁盤分區的 Parted 命令

Parted 是一個免費的 GNU 實用程序,用於從命令行管理硬盤分區。 它可以在 Linux 上創建、刪除、調整大小和打印磁盤分區等。

我們更多地使用 parted 工具進行磁盤分區,以運行多個操作系統、分配特定的系統空間、或分離有價值的文件或擴展卷。

傳統上很多用戶使用 fdisk 工具進行分區,當磁盤大小大於 2TB 時使用 parted 的主要原因。 最初parted只支持GPT,從util-linux 2.23 fdisk也開始支持GPT。

在本教程中,我將展示如何在 Linux 中使用 parted 命令進行磁盤管理

在 Linux 上安裝 Parted

Parted 默認安裝在大多數現代 Linux 發行版上。 如果它不包含在您的發行版中,請手動安裝 parted。

在 Ubuntu 和 Debian 風格的發行版上安裝 parted:

$ sudo apt-get install parted

在 CentOS 和 RHEL 上安裝 parted:

$ sudo yum install parted

當您在沒有任何選項的情況下運行 parted 命令時,它將打印 parted 包版本,默認情況下選擇第一個驅動器並在提示下等待額外的命令。 Parted 命令必須以 root 或具有 Sudo 訪問權限的用戶身份運行。

$ sudo parted
GNU Parted 3.2
Using /dev/xvda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)

類型 quit 退出 parted 提示。

重要的: 輸入您的命令後,所有更改都會對磁盤進行。

列出磁盤分區

讓我們來看看如何打印所有磁盤信息及其分區。 默認情況下,parted 選擇第一個驅動器。 打印所有磁盤分區類型 print all.

注意:輸出中顯示的警告是因為該磁盤有尚未分配的未分配磁盤空間。

ubuntu@linoxide:~$ sudo parted
GNU Parted 3.2
Using /dev/xvda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print all
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvda: 8590MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number Start End Size Type File system Flags
1 1049kB 8590MB 8589MB primary ext4 boot

Warning: Not all of the space available to /dev/xvdb appears to be
used, you can fix the GPT to use all of the space (an extra 25165824
blocks) or continue with the current setting?
Fix/Ignore? Ignore
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1 17.4kB 1024MB 1024MB ext4 primary
2 1024MB 2048MB 1023MB ext4 primary
(parted)

相反,您也可以使用單個命令:

$ sudo parted /dev/xvda print all

如果您有多個磁盤,則可以使用 select 命令在磁盤之間進行選擇:

Parted – 選擇一個磁盤

查找磁盤上未分配的空間

要找到未分配的空間,請選擇您的磁盤然後運行 print free 命令。

使用 parted 查找未分配的磁盤空間

稍後我們將討論當您有更多未分配的磁盤空間時如何使用 resizepart 命令擴展分區。

使用 parted 創建新的磁盤分區

通常操作系統安裝在第一張磁盤上 /dev/sda. 當您添加新磁盤時,操作系統將選擇下一個數字作為 /dev/sdb. 為了說明我正在使用 Xen 虛擬磁盤,它使用命名約定作為 /dev/xvd.

我添加了一個新的 20GB 磁盤,您可以將其視為 unrecognised disk label.

使用 parted 顯示新磁盤

第一步是設置您需要的磁盤標籤,支持的磁盤標籤有 bsd、loop、gpt、mac、msdos、pc98 和 sun。

(parted) mklabel msdos

現在我要將 /dev/xvdb 分成兩個主分區,第一個分區為 10GB,第二個分區為 5GB。

要創建一個新分區,我們使用 mkpart 開始 0 結束 10000 的命令:

使用 parted 創建一個新分區

要創建第二個分區,請再次運行 mkpart 命令指定開始和結束大小

創建第二個分區

注意:’primary’ 的概念是從 MBR 中反映出來的,GPT 不在乎但仍然需要添加一個名稱。

您還可以使用 mkpart 通過指定要使用的百分比(此處為 0% 到 100%)來創建跨越整個驅動器的分區。

為了 example:

$ sudo parted -a opt /dev/sda mkpart primary ext4 0% 100%

您可以運行替代命令,而不是使用打印命令,例如 lsblk, fdisk -l to see partitions created.

$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 18M 1 loop /snap/amazon-ssm-agent/1566
loop1 7:1 0 93.8M 1 loop /snap/core/8935
loop2 7:2 0 93.9M 1 loop /snap/core/9066
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdb 202:16 0 20G 0 disk
├─xvdb1 202:17 0 9.3G 0 part
└─xvdb2 202:18 0 4.7G 0 part
$

現在我們可以使用 ex4 文件系統格式化分區(/dev/xvdb1),使用 mkfs.ext4 如下:

$ sudo mkfs.ext4 /dev/xvdb1

使用 resizepart 調整磁盤分區大小

要擴大分區,必須首先調整它的大小。 簡單調整大小意味著移動分區的結束位置。

在這裡,我將調整 /dev/xvdb 的第二個分區的大小,將結束位置移動到 20000:

(parted) resizepart

調整大小部分分開

注意:growpart 是 Linux 上另一個可用於擴展分區的便捷工具。

要將每個文件系統調整為新容量,您必須運行特定於文件系統的命令。 在 Linux 中擴展文件系統使用 resize2fs 命令如下:

$ sudo resize2fs /dev/xvdb2
resize2fs 1.44.1 (24-Mar-2018)
Resizing the filesystem on /dev/xvdb2 to 2441340 (4k) blocks.
The filesystem on /dev/xvdb2 is now 2441340 (4k) blocks long.

從所選磁盤中刪除分區

要刪除分區,您應該知道磁盤上的分區號。 利用 print 命令 parted 顯示所有分區及其對應的編號。

要刪除,您可以使用 rm 命令後跟分區號。 在這裡,我們將刪除第二個分區,如下所示:

(parted) rm 2

刪除分區

在分區上設置標誌

Parted 允許在分區上設置標誌。 不要對某些標誌依賴於磁盤標籤感到驚訝。 標誌可以打開或關閉。 最常見的標誌是引導、實驗室、交換、raid、LVM 等。

以下命令在分區 2 上設置 LVM 標誌:

(parted) 設置 2 LVM on

另一個實用 example 當我們需要設置啟動分區時:

(parted) set 2 boot on

拯救Linux磁盤分區

當您不小心刪除分區時,救援會派上用場。 可以通過在開始和結束之間定位來恢復丟失的分區。

讓我們刪除 /dev/xvdb 上的分區 1 並使用救援命令來恢復它:

(parted) rescue

救援命令

設置默認單位

parted 中的單位命令有助於設置默認單位以顯示容量和位置。
支持的單位有:

KiB- kibibyte
MiB - mebibyte
GiB - gibibyte
TiB - tebibyte
kB - kilobyte
MB - megabyte
GB - gigabyte
TB - terabyte
% - percentage of the device
cyl - cylinders
chs - cylinders, heads, sectors addressing
compact - Use human-readable representation for output

以下命令將單元設置為壓縮:

(parted) unit compact
(parted) print
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvda: 8590MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number Start End Size Type File system Flags
1 1049kB 8590MB 8589MB primary ext4 boot
(parted)

您還可以按以下單位打印:

(parted) unit GB print
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvda: 8.59GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number Start End Size Type File system Flags
1 0.00GB 8.59GB 8.59GB primary ext4 boot

(parted)

結論

在更新本教程時,我們使用的是 parted 3.1 版本,很好地驗證了當前支持的命令使用 -h 選項。 Parted 直接寫入磁盤,所以在運行任何命令時要小心。

進行任何更改時,請確保選擇正確的驅動器,否則可能會導致數據丟失。

如果您對此主題有任何問題或想法要分享,請使用下面的評論部分。