Parted

出自 Arch Linux 中文维基

GNU Parted 是創建和處理分區表的程序。GParted 是 GUI 前端。

安裝[編輯 | 編輯原始碼]

官方源安裝 軟體包 parted, 要使用圖像界面,安裝 gparted

使用[編輯 | 編輯原始碼]

Parted 有兩種模式:命令行和交互,請用下面命令啟動:

# parted device

device 是要編輯的硬碟設備(例如 /dev/sda)。如果忽略了 device 參數,parted 將嘗試猜測要使用的設備。

命令行模式[編輯 | 編輯原始碼]

在命令行模式下,可以同時執行一個或多個命令:

# parted /dev/sda mklabel gpt mkpart P1 ext3 1MiB 8MiB 
注意: --help 等參數只有在命令行中才能指定。

交互模式[編輯 | 編輯原始碼]

交互模式簡化了分區過程,可以自動對設備執行分區操作。打開需要新建分區表的設備:

# parted /dev/sdx

命令提示符會從 (#) 變成 (parted): 要查看可用的命令:

(parted) help

完成操作後,用下面命令退出:

(parted) quit

退出後命令提示符變成 #.

如果命令沒帶參數,Parted 會進行詢問:

(parted) mklabel
New disk label type? gpt

數值設定[編輯 | 編輯原始碼]

很多分區系統有複雜的限制,Parted 可能會對輸入的數值進行稍微的修改。例如設定了 10.4Mb,實際會使用 10.352Mb。如果修正後的數值差異太大,Parted 會進行提示確認。用扇區數值("s" 後綴)可以進行精確的數值設置。

parted 2.4 開始,當使用 「MiB」, 「GiB」, 「TiB」 等 IEC 單位時,parted 會使用精確數值,不進行修正。而使用 「4GB」 這樣的設置時,可能會落在前後 500MB 的未知。所以在創建分區時,應該指定比特(「B」)、扇區(「s」)或 IEC 二進位單位 「MiB」,不要使用 「MB」, 「GB」。

Partitioning[編輯 | 編輯原始碼]

創建新分區表[編輯 | 編輯原始碼]

如果設備沒有分區,或者要改變分區表類型,重建分區結構,需要新建分區表。

用下面命令打開分區:

# parted /dev/sdx

為 BIOS 系統創建 MBR/msdos 分區表:

(parted) mklabel msdos

為 UEFI 系統創建 GPT 分區表:

(parted) mklabel gpt

分區方案[編輯 | 編輯原始碼]

您可以決定磁碟應該分為多少個區,每個分區又掛載在系統的哪個目錄。將分區如何映射至目錄(一般稱此為掛載點),取決於您的分區方案。需要滿足:

  • 至少需要創建一個 / (root) 目錄,有些分區類型和 啟動加載器組合有額外的分區要求:
  • BIOS/GPT + GRUB: 需要按照 BIOS 啟動分區設置 的方式創建一個 1M 或 2M 的 EF02 類型分區.
  • UEFI 的主板,需要一個 EFI 系統分區.
  • 如果您需要加密磁碟,則必須加以調整分區方案。系統安裝後,也可以再配置加密文件夾,容器或 home 目錄。

系統需要需要 /boot/home 等目錄, Arch 文件系統架構 有各目錄的詳細介紹。如果沒有創建單獨的/boot/home 分區,這些目錄直接放到了根分區下面。後面會介紹如何創建 交換分區

在下面的示例中,假定將新的連續分區方案應用於單個設備。 還將為 /boot/home 目錄創建一些可選分區:另請參閱 Arch filesystem hierarchy,那裡將解釋各個目錄的用途。 如果沒有為 /boot/home 等目錄創建單獨的分區,則這些分區將僅包含在 / 分區中。 此外,還將說明為 swap space 創建可選分區的過程。

用下面命令打開 parted 交互模式:

# parted /dev/sdx

用下面命令創建分區:

(parted) mkpart part-type fs-type start end
  • part-type 是分區類型,可以選擇 primary, extendedlogical,僅用於 MBR 分區表.
  • fs-type 是文件系統類型,支持的類型列表可以通過 help mkpart 查看。 mkpart 並不會實際創建文件系統, fs-type 參數僅是讓 parted 設置一個 1-byte 編碼,讓啟動管理器可以提前知道分區中有什麼格式的數據。參閱 Wikipedia:Disk partitioning#PC partition types.
提示:大多數 Linux native file systems 對應的分區碼相同 (0x83), 所以對一個 ext4 格式的分區使用例如 ext2 類型是安全的.
  • start 是分區的起始位置,可以帶單位, 例如 1M 指 1MiB.
  • end 是設備的結束位置(不是start 值的差),同樣可以帶單位,也可以用百分比,例如 100% 表示到設備的末尾。
  • 為了不留空隙,分區的開始和結束應該首尾相連。
警告: 分區不相互重疊是很重要的:如果您不想在設備中留下未使用的空間,請確保每個分區從上一個分區的結尾處開始。

如果看到下面警告:

Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel?

表示分區沒對齊,請參照分區對齊進行修正。

下面命令設置 /boot 為啟動目錄:

(parted) set partition boot on
  • partition 是分區的編號,從 print 命令獲取。

UEFI/GPT 示例[編輯 | 編輯原始碼]

首先需要一個 EFI 系統分區.如果是和 Windows 雙系統啟動,此分區已經存在,不要重新創建。

用下面命令創建分區 (建議大小是 512MiB)。

(parted) mkpart ESP fat32 1M 513M
(parted) set 1 boot on

剩下的空間可以按需要創建,root 占用全部 100% 剩餘空間:

(parted) mkpart primary ext4 513M 100%

/ (20GiB),剩下的給 /home

(parted) mkpart primary ext4 513M 20.5G
(parted) mkpart primary ext4 20.5G 100%

創建 / (20GiB), swap (4Gib), 剩下給 /home

(parted) mkpart primary ext4 513M 20.5G
(parted) mkpart primary linux-swap 20.5G 24.5G
(parted) mkpart primary ext4 24.5G 100%

BIOS/MBR 示例[編輯 | 編輯原始碼]

單根目錄分區:

(parted) mkpart primary ext4 1M 100%
(parted) set 1 boot on

20Gib / 分區,剩下的給 /home

(parted) mkpart primary ext4 1M 20G
(parted) set 1 boot on
(parted) mkpart primary ext4 20G 100%

/boot (100MiB), / (20Gib), swap (4GiB) 剩下的給 /home:

(parted) mkpart primary ext4 1M 100M
(parted) set 1 boot on
(parted) mkpart primary ext4 100M 20G
(parted) mkpart primary linux-swap 20G 24G
(parted) mkpart primary ext4 24G 100%

調整分區[編輯 | 編輯原始碼]

警告: 若要調整分區,必須先停止使用並卸載它。如果無法卸載(比如,它被掛載到 /,使用安裝介質/備用系統。 )
注意:
  • 使用 parted,你只能移動分區的末尾.
  • 在 parted v4.2 resizepart 可能需要使用#交互模式.[1]
  • 這些說明適用于格式為ext2,ext3或ext4文件系統的分區。

如果要擴展分區,則必須先調整分區的大小,然後再調整其上的文件系統的大小; 如果要縮小分區,必須先調整文件系統的大小,再調整分區,以避免數據丟失。

擴展分區[編輯 | 編輯原始碼]

要擴展分區(在 parted 交互模式下):

(parted) resizepart number end

其中 number 是您正在擴展的分區的編號,而 end 是該分區的新末端(需要大於舊的末端)。

然後,擴展此分區上的文件系統:

# resize2fs /dev/sdaX size

sdaX 代表您正在擴展的分區,而 size 是分區的新大小。

縮小分區[編輯 | 編輯原始碼]

縮小分區上的文件系統:

# resize2fs /dev/sdaX size

其中 sdaX 代表您要縮小的分區,而 size 是該分區的新大小。

然後縮小分區(在 parted 交互模式下):

(parted) resizepart number end

其中 number 是您要縮小的分區的編號,而 end 是該分區的新末端(需要小於舊末端)。

完成後,使用 util-linux 中的 resizepart 命令告訴內核新的分區大小:

# resizepart device number size

其中 device 是保存分區的設備,number 是分區的編號, size 是分區的新大小。

Warnings[編輯 | 編輯原始碼]

Parted will always warn you before doing something that is potentially dangerous, unless the command is one of those that is inherently dangerous (viz., rm, mklabel and mkpart).

Alignment[編輯 | 編輯原始碼]

When creating a partition, parted might warn about improper partition alignment but does not hint about proper alignment. For example:

(parted) mkpart primary fat16 0 32M
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel?                                                     

The warning means the partition start is not aligned. Enter "Ignore" to go ahead anyway, print the partition table in sectors to see where it starts, and remove/recreate the partition with the start sector rounded up to increasing powers of 2 until the warning stops. As one example, on a flash drive with 512B sectors, Parted wanted partitions to start on sectors that were a multiple of 2048, which is 1 MiB alignment.

If you want parted to attempt to calculate the correct alignment for you, specify the start position as 0% instead of some concrete value. To make one large ext4 partition, your command would look like this:

(parted) mkpart primary ext4 0% 100%

小技巧[編輯 | 編輯原始碼]

雙啟動 Windows XP[編輯 | 編輯原始碼]

如果您打算將一個同屬於啟動分區的 Windows XP 分區移動到另一塊硬碟,只要將以下的註冊表刪除,之後就可以用 GParted 輕易地操作,Windows 不會出現任何問題:

HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices

相關資料參見這裡

Check alignment[編輯 | 編輯原始碼]

On an already partitioned disk, you can use parted to verify the alignment of a partition on a device. For instance, to verify alignment of partition 1 on /dev/sda:

# parted /dev/sda
(parted) align-check optimal 1
1 aligned