歡迎光臨
每天分享高質量文章

怎樣用 parted 管理硬碟分割槽 | Linux 中國

parted 是一個操作硬碟分割槽的程式。它支援多種分割槽表型別,包括 MS-DOS 和 GPT。
— Magesh Maruthamuthu


致謝
編譯自 | https://www.2daygeek.com/how-to-manage-disk-partitions-using-parted-command/ 
 作者 | Magesh Maruthamuthu
 譯者 | zyk (zyk2290) ? 共計翻譯:1 篇 貢獻時間:7 天

眾所周知,對硬碟分割槽是 Linux 管理員一項最重要的管理任務之一,他們不能不知道這個。

在最糟糕的時候,你至少每週會收到一次依賴小組的請求,而在更大的環境裡會更加頻繁 。

你可能會問為什麼我們要用 parted 而不是 fdisk? 它們有什麼區別?好問題,我會告訴你這兩者的區別。

◈ parted 支援使用者在大於 2TB 的硬碟上建立硬碟分割槽, 但 fdisk 命令不支援
◈ 對比 fdisk 來說,parted 是一個更高階的工具
◈ 支援更多的分割槽表型別,包括 GPT (LCTT 譯註:全域性唯一標識分割槽表)
◈ 它允許使用者調整分割槽大小, 但當縮減分割槽空間的時候,它沒有如我意料的工作,多數情況下我會得到錯誤訊息。所以我會建議使用者不要用 parted 來縮減分割槽大小。

什麼是 parted

parted 是一個操作硬碟分割槽的程式。它支援多種分割槽表型別,包括 MS-DOS 和 GPT。

它允許使用者建立、刪除、調整、縮減、移動和複製分割槽,以及重新組織硬碟的使用,複製資料到新的硬碟上。gparted 是 parted 的圖形介面前端。

怎樣安裝 parted

大部分發行版已經預安裝了 parted。如果沒有,用下列命令來安裝 parted

對於 Debian/Ubuntu 使用者, 使用 APT-GET 命令[1] 或者 APT 命令[2] 來安裝 parted

  1. $ sudo apt install parted

對於 RHEL/CentOS 使用者,用 YUM 命令[3] 來安裝 parted

  1. $ sudo yum install parted

對於 Fedora 使用者,用 DNF 命令[4] 來安裝 parted

  1. $ sudo dnf install parted

對於 Arch Linux 使用者,用 Pacman 命令[5]來安裝 parted

  1. $ sudo pacman -S parted

對於 openSUSE 使用者, 用 Zypper 命令[6]來安裝 parted

  1. $ sudo zypper in parted

怎樣啟動 parted

下麵的 parted 命令會自動選擇 /dev/sda ,因為這是系統的第一個硬碟。

  1. $ sudo parted

  2. GNU parted 3.2

  3. Using /dev/sda

  4. Welcome to GNU parted! Type 'help' to view a list of commands.

  5. (parted)

同時我們也可以用下麵的命令來重新選擇對應的的硬碟。

  1. (parted) select /dev/sdb

  2. Using /dev/sdb

  3. (parted)

如果你想選擇特定的硬碟, 用下列的格式來輸入命令。 這次 ,我們將選擇 /dev/sdb

  1. $ sudo parted [Device Name]

  1. $ sudo parted /dev/sdb

  2. GNU parted 3.2

  3. Using /dev/sdb

  4. Welcome to GNU parted! Type 'help' to view a list of commands.

  5. (parted)

怎樣用 parted 列出所有可用的硬碟

如果你不知道你的電腦上有什麼硬碟,只需要執行下列命令,該命令會顯示所有可用硬碟的名字,以及其它的有用資訊比如儲存空間、型號、扇區大小、硬碟標誌以及分割槽資訊。

  1. $ sudo parted -l

  2. Model: ATA VBOX HARDDISK (scsi)

  3. Disk /dev/sda: 32.2GB

  4. Sector size (logical/physical): 512B/512B

  5. Partition Table: msdos

  6. Disk Flags:

  7. Number Start End Size Type File system Flags

  8. 1 1049kB 32.2GB 32.2GB primary ext4 boot

  9. Error: /dev/sdb: unrecognised disk label

  10. Model: ATA VBOX HARDDISK (scsi)

  11. Disk /dev/sdb: 53.7GB

  12. Sector size (logical/physical): 512B/512B

  13. Partition Table: unknown

  14. Disk Flags:

上面的錯誤資訊清晰地顯示出硬碟 /dev/sdb 沒有有效的磁碟標簽disk label。 它不會自動得到磁碟標簽,所以, 我們便要自己設定硬碟標簽。

怎樣用 parted 建立硬碟分割槽

parted 允許使用者建立主分割槽或者拓展分割槽。建立這兩種型別的分割槽的步驟還是一樣,但請確保你已經指定了需要的分割槽型別,比如 primary (主分割槽)或者 extended (擴充套件分割槽)。

為了演示這項操作 ,我們安裝了一個新的 50 GB 的硬碟到到電腦上,掛載在 /dev/sdb上。

有兩種方法建立分割槽,第一種是更詳細的方法,另一種只是一個命令。 在下麵的例子中,我們將用更詳細的方法新增一個主分割槽。提醒一下, 我們應該先設定磁碟標簽,因為它不會自動設定任何標簽。

在下麵的例子中,我們將要建立一個 10 GB 的分割槽

  1. $ sudo parted /dev/sdb

  2. GNU parted 3.2

  3. Using /dev/sdb

  4. Welcome to GNU parted! Type 'help' to view a list of commands.

  5. (parted) mklabel msdos

  6. (parted) unit GB

  7. (parted) mkpart

  8. Partition type? primary/extended? primary

  9. File system type? [ext2]? ext4

  10. Start? 0.00GB

  11. End? 10.00GB

  12. (parted) print

  13. Model: ATA VBOX HARDDISK (scsi)

  14. Disk /dev/sdb: 53.7GB

  15. Sector size (logical/physical): 512B/512B

  16. Partition Table: msdos

  17. Disk Flags:

  18. Number Start End Size Type File system Flags

  19. 1 0.00GB 10.0GB 10.0GB primary ext4 lba

  20. (parted) quit

  21. Information: You may need to update /etc/fstab.

同時,我們也可以使用單條 parted 命令

在下麵的例子中,我們將在硬碟上建立一個 10 GB 的分割槽。

  1. $ sudo parted [Disk Name] [mkpart] [Partition Type] [Filesystem Type] [Partition Start Size] [Partition End Size]

  1. $ sudo parted /dev/sdb mkpart primary ext4 10.0GB 20.0GB

  2. Information: You may need to update /etc/fstab.

怎樣使用所有剩餘空間建立分割槽

你已經建立了除了 /home 之外等所有要求的分割槽,而且你想要用硬碟上所有剩餘的空間來建立 /home 分割槽,要怎樣做?可以使用下麵的命令來建立分割槽。

下麵的命令建立了一個 33.7 GB 的分割槽,從 20 GB 開始到 53 GB 結束。 100% 使用率允許使用者用硬碟上所有剩餘的空餘空間。

  1. $ sudo parted [Disk Name] [mkpart] [Partition Type] [Filesystem Type] [Partition Start Size] [Partition End Size]

  2. $ sudo parted /dev/sdb mkpart primary ext4 20.0GB 100%

  3. Information: You may need to update /etc/fstab.

怎樣用 parted 列出所有的分割槽

你也許註意到了,我們已經在上述步驟中建立了三個分割槽,如果你想要列出所有在硬碟上可用的分割槽,可以使用 print 命令。

  1. $ sudo parted /dev/sdb print

  2. Model: ATA VBOX HARDDISK (scsi)

  3. Disk /dev/sdb: 53.7GB

  4. Sector size (logical/physical): 512B/512B

  5. Partition Table: msdos

  6. Disk Flags:

  7. Number Start End Size Type File system Flags

  8. 1 1049kB 10.0GB 9999MB primary ext4

  9. 2 10.0GB 20.0GB 9999MB primary ext4

  10. 3 20.0GB 53.7GB 33.7GB primary ext4

怎樣用 mkfs 格式化分割槽

使用者可以用 mkfs 命令格式化分割槽。下麵的步驟會用 mkfs 來格式化分割槽。

  1. $ sudo mkfs.ext4 /dev/sdb1

  2. mke2fs 1.43.4 (31-Jan-2017)

  3. Creating filesystem with 2621440 4k blocks and 656640 inodes

  4. Filesystem UUID: 415cf467-634c-4403-8c9f-47526bbaa381

  5. Superblock backups stored on blocks:

  6.    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

  7. Allocating group tables: done

  8. Writing inode tables: done

  9. Creating journal (16384 blocks): done

  10. Writing superblocks and filesystem accounting information: done

同樣的。

  1. $ sudo mkfs.ext4 /dev/sdb2

  2. $ sudo mkfs.ext4 /dev/sdb3

建立必要的檔案夾然後將這些分割槽掛載在上面。

  1. $ sudo mkdir /par1 /par2 /par3

  1. $ sudo mount /dev/sdb1 /par1

  2. $ sudo mount /dev/sdb2 /par2

  3. $ sudo mount /dev/sdb3 /par3

執行下列命令來檢查是否成功掛載上新建立的分割槽。

  1. $ df -h /dev/sdb[1-3]

  2. Filesystem Size Used Avail Use% Mounted on

  3. /dev/sdb1 9.2G 37M 8.6G 1% /par1

  4. /dev/sdb2 9.2G 37M 8.6G 1% /par2

  5. /dev/sdb3 31G 49M 30G 1% /par3

怎樣檢查硬碟空閑空間

執行下列命令來檢查硬碟上的空閑空間,這塊硬碟上有 25.7 GB 的空閑空間。

  1. $ sudo parted /dev/sdb print free

  2. Model: ATA VBOX HARDDISK (scsi)

  3. Disk /dev/sdb: 53.7GB

  4. Sector size (logical/physical): 512B/512B

  5. Partition Table: msdos

  6. Disk Flags:

  7. Number Start End Size Type File system Flags

  8. 32.3kB 1049kB 1016kB Free Space

  9. 1 1049kB 10.0GB 9999MB primary ext4

  10. 2 10.0GB 20.0GB 9999MB primary ext4

  11. 3 20.0GB 28.0GB 8001MB primary ext4

  12. 28.0GB 53.7GB 25.7GB Free Space

怎樣使用 parted 命令來重新調整分割槽大小

parted 允許使用者重新調整分割槽大小。不過我已在文章的開頭說了,不要縮小分割槽大小,不然會有許多錯誤。

執行下列命令來檢查硬碟分割槽以及所有可用空間。 可以看到硬碟上有 25.7GB 的可用空間。

  1. $ sudo parted /dev/sdb print free

  2. Model: ATA VBOX HARDDISK (scsi)

  3. Disk /dev/sdb: 53.7GB

  4. Sector size (logical/physical): 512B/512B

  5. Partition Table: msdos

  6. Disk Flags:

  7. Number Start End Size Type File system Flags

  8. 32.3kB 1049kB 1016kB Free Space

  9. 1 1049kB 10.0GB 9999MB primary ext4

  10. 2 10.0GB 20.0GB 9999MB primary ext4

  11. 3 20.0GB 28.0GB 8001MB primary ext4

  12. 28.0GB 53.7GB 25.7GB Free Space

執行下列命令來重新調整分割槽大小。 我們將要重新調整(增加)分割槽 3 的結束位置,從 28GB到 33GB

  1. $ sudo parted [Disk Name] [resizepart] [Partition Number] [Partition New End Size]

  2. $ sudo parted /dev/sdb resizepart 3 33.0GB

  3. Information: You may need to update /etc/fstab.

執行下列命令來確認分割槽是否已經擴容。可以看到,分割槽 3 已經從 8GB 增加到 13GB

  1. $ sudo parted /dev/sdb print

  2. Model: ATA VBOX HARDDISK (scsi)

  3. Disk /dev/sdb: 53.7GB

  4. Sector size (logical/physical): 512B/512B

  5. Partition Table: msdos

  6. Disk Flags:

  7. Number Start End Size Type File system Flags

  8. 1 1049kB 10.0GB 9999MB primary ext4

  9. 2 10.0GB 20.0GB 9999MB primary ext4

  10. 3 20.0GB 33.0GB 13.0GB primary ext4

重新調整檔案系統大小。

  1. $ sudo resize2fs /dev/sdb3

  2. resize2fs 1.43.4 (31-Jan-2017)

  3. Resizing the filesystem on /dev/sdb3 to 3173952 (4k) blocks.

  4. The filesystem on /dev/sdb3 is now 3173952 (4k) blocks long.

最後,確認分割槽是否已經擴容。

  1. $ df -h /dev/sdb[1-3]

  2. Filesystem Size Used Avail Use% Mounted on

  3. /dev/sdb1 9.2G 5.1G 3.6G 59% /par1

  4. /dev/sdb2 9.2G 2.1G 6.6G 24% /par2

  5. /dev/sdb3 12G 1.1G 11G 10% /par3

怎樣用 parted 刪除分割槽

我們用 rm 命令方便地刪除未使用的分割槽(如果該分割槽不會再被用到了)。下列步驟中,我們將會刪除分割槽 3 (/dev/sdb3)。

  1. $ sudo parted [Disk Name] [rm] [Partition Number]

  2. $ sudo parted /dev/sdb rm 3

  3. Warning: Partition /dev/sdb3 is being used. Are you sure you want to continue?

  4. Yes/No? Yes

  5. Error: Partition(s) 3 on /dev/sdb have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use. As a result, the old partition(s) will remain in use.

  6. You should reboot now before making further changes.

  7. Ignore/Cancel? Ignore

  8. Information: You may need to update /etc/fstab.

我們也可以用下列的命令檢查。可以看到,分割槽 3 已經被成功移除。

  1. $ sudo parted /dev/sdb print

  2. Model: ATA VBOX HARDDISK (scsi)

  3. Disk /dev/sdb: 53.7GB

  4. Sector size (logical/physical): 512B/512B

  5. Partition Table: msdos

  6. Disk Flags:

  7. Number Start End Size Type File system Flags

  8. 1 1049kB 10.0GB 9999MB primary ext4

  9. 2 10.0GB 20.0GB 9999MB primary ext4

怎樣用 parted 命令設定/更改分割槽標誌

我們可以用下列的命令來輕易更改分割槽的標誌。 我們將對 /dev/sdb2 設定 lvm 標誌。

  1. $ sudo parted [Disk Name] [set] [Partition Number] [Flags Name] [Flag On/Off]

  2. $ sudo parted /dev/sdb set 2 lvm on

  3. Information: You may need to update /etc/fstab.

我們可以列出分割槽來驗證這次的更改。

  1. $ sudo parted /dev/sdb print

  2. Model: ATA VBOX HARDDISK (scsi)

  3. Disk /dev/sdb: 53.7GB

  4. Sector size (logical/physical): 512B/512B

  5. Partition Table: msdos

  6. Disk Flags:

  7. Number Start End Size Type File system Flags

  8. 1 1049kB 10.0GB 9999MB primary ext4

  9. 2 10.0GB 20.0GB 9999MB primary ext4 lvm

如果你想知道可用的標誌,只需要用如下的命令。

  1. $ (parted) help set

  2. set NUMBER FLAG STATE change the FLAG on partition NUMBER

  3.    NUMBER is the partition number used by Linux. On MS-DOS disk labels, the primary partitions number from 1 to 4, logical partitions from 5 onwards.

  4. FLAG is one of: boot, root, swap, hidden, raid, lvm, lba, hp-service, palo, prep, msftres, bios_grub, atvrecv, diag, legacy_boot, msftdata, irst, esp

  5. STATE is one of: on, off

如果你想知道 parted 的其它可用命令, 只需要去到 help 頁面。

  1. $ sudo parted

  2. GNU parted 3.2

  3. Using /dev/sda

  4. Welcome to GNU parted! Type 'help' to view a list of commands.

  5. (parted) help

  6. align-check TYPE N check partition N for TYPE(min|opt) alignment

  7. help [COMMAND] print general help, or help on COMMAND

  8. mklabel,mktable LABEL-TYPE create a new disklabel (partition table)

  9. mkpart PART-TYPE [FS-TYPE] START END make a partition

  10. name NUMBER NAME name partition NUMBER as NAME

  11. print [devices|free|list,all|NUMBER] display the partition table, available devices, free space, all found partitions, or a particular partition

  12. quit exit program

  13. rescue START END rescue a lost partition near START and END

  14. resizepart NUMBER END resize partition NUMBER

  15. rm NUMBER delete partition NUMBER

  16. select DEVICE choose the device to edit

  17. disk_set FLAG STATE change the FLAG on selected device

  18. disk_toggle [FLAG] toggle the state of FLAG on selected device

  19. set NUMBER FLAG STATE change the FLAG on partition NUMBER

  20. toggle [NUMBER [FLAG]] toggle the state of FLAG on partition NUMBER

  21. unit UNIT set the default unit to UNIT

  22. version display the version number and copyright information of GNU parted

  23. (parted) quit


via: https://www.2daygeek.com/how-to-manage-disk-partitions-using-parted-command/

作者:Magesh Maruthamuthu[8] 譯者:zyk2290 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

贊(0)

分享創造快樂

© 2024 知識星球   網站地圖