首頁 > 軟體

怎樣用 parted 管理硬碟分割區

2020-06-16 16:53:04

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

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

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

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

 

什麼是 parted

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

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

 

怎樣安裝 parted

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

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

  1. $ sudo apt install parted

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

  1. $ sudoyum install parted

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

  1. $ sudo dnf install parted

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

  1. $ sudo pacman -S parted

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

  1. $ sudo zypper inparted

 

怎樣啟動 parted

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

  1. $ sudoparted
  2. GNU parted3.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. $ sudoparted[DeviceName]
  1. $ sudoparted/dev/sdb
  2. GNU parted3.2
  3. Using/dev/sdb
  4. Welcome to GNU parted!Type'help' to view a list of commands.
  5. (parted)

 

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

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

  1. $ sudoparted-l
  2. Model: ATA VBOX HARDDISK (scsi)
  3. Disk/dev/sda:32.2GB
  4. Sectorsize(logical/physical):512B/512B
  5. PartitionTable: msdos
  6. DiskFlags:
  7. NumberStartEndSizeTypeFile system Flags
  8. 11049kB32.2GB32.2GB primary ext4 boot
  9. Error:/dev/sdb: unrecognised disk label
  10. Model: ATA VBOX HARDDISK (scsi)
  11. Disk/dev/sdb:53.7GB
  12. Sectorsize(logical/physical):512B/512B
  13. PartitionTable: unknown
  14. DiskFlags:

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

 

怎樣用 parted 建立硬碟分割區

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

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

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

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

  1. $ sudoparted/dev/sdb
  2. GNU parted3.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. Sectorsize(logical/physical):512B/512B
  16. PartitionTable: msdos
  17. DiskFlags:
  18. NumberStartEndSizeTypeFile system Flags
  19. 10.00GB10.0GB10.0GB primary ext4 lba
  20. (parted) quit
  21. Information:You may need to update /etc/fstab.

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

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

  1. $ sudoparted[DiskName][mkpart][PartitionType][FilesystemType][PartitionStartSize][PartitionEndSize]
  1. $ sudoparted/dev/sdb mkpart primary ext4 10.0GB20.0GB
  2. Information:You may need to update /etc/fstab.

 

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

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

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

  1. $ sudoparted[DiskName][mkpart][PartitionType][FilesystemType][PartitionStartSize][PartitionEndSize]
  2. $ sudoparted/dev/sdb mkpart primary ext4 20.0GB100%
  3. Information:You may need to update /etc/fstab.

 

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

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

  1. $ sudoparted/dev/sdb print
  2. Model: ATA VBOX HARDDISK (scsi)
  3. Disk/dev/sdb:53.7GB
  4. Sectorsize(logical/physical):512B/512B
  5. PartitionTable: msdos
  6. DiskFlags:
  7. NumberStartEndSizeTypeFile system Flags
  8. 11049kB10.0GB9999MB primary ext4
  9. 210.0GB20.0GB9999MB primary ext4
  10. 320.0GB53.7GB33.7GB primary ext4

 

怎樣用 mkfs 格式化分割區

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

  1. $ sudomkfs.ext4 /dev/sdb1
  2. mke2fs1.43.4(31-Jan-2017)
  3. Creating filesystem with26214404k blocks and656640 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. $ sudomkfs.ext4 /dev/sdb2
  2. $ sudomkfs.ext4 /dev/sdb3

建立必要的資料夾然後將這些分割區掛載在上面。

  1. $ sudomkdir/par1 /par2 /par3
  1. $ sudomount/dev/sdb1 /par1
  2. $ sudomount/dev/sdb2 /par2
  3. $ sudomount/dev/sdb3 /par3

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

  1. $ df-h /dev/sdb[1-3]
  2. FilesystemSizeUsedAvailUse%Mounted on
  3. /dev/sdb1 9.2G37M8.6G1%/par1
  4. /dev/sdb2 9.2G37M8.6G1%/par2
  5. /dev/sdb3 31G49M30G1%/par3

 

怎樣檢查硬碟空閒空間

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

  1. $ sudoparted/dev/sdb print free
  2. Model: ATA VBOX HARDDISK (scsi)
  3. Disk/dev/sdb:53.7GB
  4. Sectorsize(logical/physical):512B/512B
  5. PartitionTable: msdos
  6. DiskFlags:
  7. NumberStartEndSizeTypeFile system Flags
  8. 32.3kB1049kB1016kBFreeSpace
  9. 11049kB10.0GB9999MB primary ext4
  10. 210.0GB20.0GB9999MB primary ext4
  11. 320.0GB28.0GB8001MB primary ext4
  12. 28.0GB53.7GB25.7GBFreeSpace

 

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

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

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

  1. $ sudoparted/dev/sdb print free
  2. Model: ATA VBOX HARDDISK (scsi)
  3. Disk/dev/sdb:53.7GB
  4. Sectorsize(logical/physical):512B/512B
  5. PartitionTable: msdos
  6. DiskFlags:
  7. NumberStartEndSizeTypeFile system Flags
  8. 32.3kB1049kB1016kBFreeSpace
  9. 11049kB10.0GB9999MB primary ext4
  10. 210.0GB20.0GB9999MB primary ext4
  11. 320.0GB28.0GB8001MB primary ext4
  12. 28.0GB53.7GB25.7GBFreeSpace

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

  1. $ sudoparted[DiskName][resizepart][PartitionNumber][PartitionNewEndSize]
  2. $ sudoparted/dev/sdb resizepart 333.0GB
  3. Information:You may need to update /etc/fstab.

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

  1. $ sudoparted/dev/sdb print
  2. Model: ATA VBOX HARDDISK (scsi)
  3. Disk/dev/sdb:53.7GB
  4. Sectorsize(logical/physical):512B/512B
  5. PartitionTable: msdos
  6. DiskFlags:
  7. NumberStartEndSizeTypeFile system Flags
  8. 11049kB10.0GB9999MB primary ext4
  9. 210.0GB20.0GB9999MB primary ext4
  10. 320.0GB33.0GB13.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. FilesystemSizeUsedAvailUse%Mounted on
  3. /dev/sdb1 9.2G5.1G3.6G59%/par1
  4. /dev/sdb2 9.2G2.1G6.6G24%/par2
  5. /dev/sdb3 12G1.1G11G10%/par3

 

怎樣用 parted 刪除分割區

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

  1. $ sudoparted[DiskName][rm][PartitionNumber]
  2. $ sudoparted/dev/sdb rm3
  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 inuse.As a result, the old partition(s) will remain inuse.
  6. You should reboot now before making further changes.
  7. Ignore/Cancel?Ignore
  8. Information:You may need to update /etc/fstab.

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

  1. $ sudoparted/dev/sdb print
  2. Model: ATA VBOX HARDDISK (scsi)
  3. Disk/dev/sdb:53.7GB
  4. Sectorsize(logical/physical):512B/512B
  5. PartitionTable: msdos
  6. DiskFlags:
  7. NumberStartEndSizeTypeFile system Flags
  8. 11049kB10.0GB9999MB primary ext4
  9. 210.0GB20.0GB9999MB primary ext4

 

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

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

  1. $ sudoparted[DiskName][set][PartitionNumber][FlagsName][FlagOn/Off]
  2. $ sudoparted/dev/sdb set2lvm on
  3. Information:You may need to update /etc/fstab.

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

  1. $ sudoparted/dev/sdb print
  2. Model: ATA VBOX HARDDISK (scsi)
  3. Disk/dev/sdb:53.7GB
  4. Sectorsize(logical/physical):512B/512B
  5. PartitionTable: msdos
  6. DiskFlags:
  7. NumberStartEndSizeTypeFile system Flags
  8. 11049kB10.0GB9999MB primary ext4
  9. 210.0GB20.0GB9999MB 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 from1 to 4, logical partitions from5 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. $ sudoparted
  2. GNU parted3.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 ENDmake 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 ENDrescue a lost partition near START andEND
  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 譯者:zyk2290 校對:wxy

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

本文永久更新連結地址https://www.linuxidc.com/Linux/2018-04/151853.htm


IT145.com E-mail:sddin#qq.com