怎樣用parted管理硬盤分區(qū)
眾所周知,對硬盤分區(qū)是 Linux 管理員一項最重要的管理任務之一,他們不能不知道這個。
在最糟糕的時候,你至少每周會收到一次依賴小組的請求,而在更大的環(huán)境里會更加頻繁 。
你可能會問為什么我們要用 parted 而不是 fdisk? 它們有什么區(qū)別?好問題,我會告訴你這兩者的區(qū)別。
parted支持用戶在大于 2TB 的硬盤上創(chuàng)建硬盤分區(qū), 但fdisk命令不支持- 對比
fdisk來說,parted是一個更高級的工具 - 支持更多的分區(qū)表類型,包括 GPT (LCTT 譯注:全局唯一標識分區(qū)表)
- 它允許用戶調(diào)整分區(qū)大小, 但當縮減分區(qū)空間的時候,它沒有如我意料的工作,多數(shù)情況下我會得到錯誤消息。所以我會建議用戶不要用
parted來縮減分區(qū)大小。
什么是 parted
parted 是一個操作硬盤分區(qū)的程序。它支持多種分區(qū)表類型,包括 MS-DOS 和 GPT。
它允許用戶創(chuàng)建、刪除、調(diào)整、縮減、移動和復制分區(qū),以及重新組織硬盤的使用,復制數(shù)據(jù)到新的硬盤上。gparted 是 parted 的圖形界面前端。
怎樣安裝 parted
大部分發(fā)行版已經(jīng)預安裝了 parted。如果沒有,用下列命令來安裝 parted。
對于 Debian/Ubuntu 用戶, 使用 APT-GET 命令 或者 APT 命令 來安裝 parted。
$ sudo apt install parted
對于 RHEL/CentOS 用戶,用 YUM 命令 來安裝 parted。
$ sudo yum install parted
對于 Fedora 用戶,用 DNF 命令 來安裝 parted。
$ sudo dnf install parted
對于 Arch Linux 用戶,用 Pacman 命令來安裝 parted。
$ sudo pacman -S parted
對于 openSUSE 用戶, 用 Zypper 命令來安裝 parted。
$ sudo zypper in parted
怎樣啟動 parted
下面的 parted 命令會自動選擇 /dev/sda ,因為這是系統(tǒng)的第一個硬盤。
$ sudo partedGNU parted 3.2Using /dev/sdaWelcome to GNU parted! Type 'help' to view a list of commands.(parted)
同時我們也可以用下面的命令來重新選擇對應的的硬盤。
(parted) select /dev/sdbUsing /dev/sdb(parted)
如果你想選擇特定的硬盤, 用下列的格式來輸入命令。 這次 ,我們將選擇 /dev/sdb。
$ sudo parted [Device Name]
$ sudo parted /dev/sdbGNU parted 3.2Using /dev/sdbWelcome to GNU parted! Type 'help' to view a list of commands.(parted)
怎樣用 parted 列出所有可用的硬盤
如果你不知道你的電腦上有什么硬盤,只需要運行下列命令,該命令會顯示所有可用硬盤的名字,以及其它的有用信息比如儲存空間、型號、扇區(qū)大小、硬盤標志以及分區(qū)信息。
$ sudo parted -lModel: ATA VBOX HARDDISK (scsi)Disk /dev/sda: 32.2GBSector size (logical/physical): 512B/512BPartition Table: msdosDisk Flags:Number Start End Size Type File system Flags1 1049kB 32.2GB 32.2GB primary ext4 bootError: /dev/sdb: unrecognised disk labelModel: ATA VBOX HARDDISK (scsi)Disk /dev/sdb: 53.7GBSector size (logical/physical): 512B/512BPartition Table: unknownDisk Flags:
上面的錯誤信息清晰地顯示出硬盤 /dev/sdb 沒有有效的磁盤標簽。 它不會自動得到磁盤標簽,所以, 我們便要自己設置硬盤標簽。
怎樣用 parted 創(chuàng)建硬盤分區(qū)
parted 允許用戶創(chuàng)建主分區(qū)或者拓展分區(qū)。創(chuàng)建這兩種類型的分區(qū)的步驟還是一樣,但請確保你已經(jīng)指定了需要的分區(qū)類型,比如 primary (主分區(qū))或者 extended (擴展分區(qū))。
為了演示這項操作 ,我們安裝了一個新的 50 GB 的硬盤到到電腦上,掛載在 /dev/sdb 上。
有兩種方法創(chuàng)建分區(qū),第一種是更詳細的方法,另一種只是一個命令。 在下面的例子中,我們將用更詳細的方法添加一個主分區(qū)。提醒一下, 我們應該先設置磁盤標簽,因為它不會自動設置任何標簽。
在下面的例子中,我們將要創(chuàng)建一個 10 GB 的分區(qū)
$ sudo parted /dev/sdbGNU parted 3.2Using /dev/sdbWelcome to GNU parted! Type 'help' to view a list of commands.(parted) mklabel msdos(parted) unit GB(parted) mkpartPartition type? primary/extended? primaryFile system type? [ext2]? ext4Start? 0.00GBEnd? 10.00GB(parted) printModel: ATA VBOX HARDDISK (scsi)Disk /dev/sdb: 53.7GBSector size (logical/physical): 512B/512BPartition Table: msdosDisk Flags:Number Start End Size Type File system Flags1 0.00GB 10.0GB 10.0GB primary ext4 lba(parted) quitInformation: You may need to update /etc/fstab.
同時,我們也可以使用單條 parted 命令
在下面的例子中,我們將在硬盤上創(chuàng)建一個 10 GB 的分區(qū)。
$ sudo parted [Disk Name] [mkpart] [Partition Type] [Filesystem Type] [Partition Start Size] [Partition End Size]
$ sudo parted /dev/sdb mkpart primary ext4 10.0GB 20.0GBInformation: You may need to update /etc/fstab.
怎樣使用所有剩余空間創(chuàng)建分區(qū)
你已經(jīng)創(chuàng)建了除了 /home 之外等所有要求的分區(qū),而且你想要用硬盤上所有剩余的空間來創(chuàng)建 /home 分區(qū),要怎樣做?可以使用下面的命令來創(chuàng)建分區(qū)。
下面的命令創(chuàng)建了一個 33.7 GB 的分區(qū),從 20 GB 開始到 53 GB 結(jié)束。 100% 使用率允許用戶用硬盤上所有剩余的空余空間。
$ sudo parted [Disk Name] [mkpart] [Partition Type] [Filesystem Type] [Partition Start Size] [Partition End Size]$ sudo parted /dev/sdb mkpart primary ext4 20.0GB 100%Information: You may need to update /etc/fstab.
怎樣用 parted 列出所有的分區(qū)
你也許注意到了,我們已經(jīng)在上述步驟中創(chuàng)建了三個分區(qū),如果你想要列出所有在硬盤上可用的分區(qū),可以使用 print 命令。
$ sudo parted /dev/sdb printModel: ATA VBOX HARDDISK (scsi)Disk /dev/sdb: 53.7GBSector size (logical/physical): 512B/512BPartition Table: msdosDisk Flags:Number Start End Size Type File system Flags1 1049kB 10.0GB 9999MB primary ext42 10.0GB 20.0GB 9999MB primary ext43 20.0GB 53.7GB 33.7GB primary ext4
怎樣用 mkfs 格式化分區(qū)
用戶可以用 mkfs 命令格式化分區(qū)。下面的步驟會用 mkfs 來格式化分區(qū)。
$ sudo mkfs.ext4 /dev/sdb1mke2fs 1.43.4 (31-Jan-2017)Creating filesystem with 2621440 4k blocks and 656640 inodesFilesystem UUID: 415cf467-634c-4403-8c9f-47526bbaa381Superblock backups stored on blocks:32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632Allocating group tables: doneWriting inode tables: doneCreating journal (16384 blocks): doneWriting superblocks and filesystem accounting information: done
同樣的。
$ sudo mkfs.ext4 /dev/sdb2$ sudo mkfs.ext4 /dev/sdb3
創(chuàng)建必要的文件夾然后將這些分區(qū)掛載在上面。
$ sudo mkdir /par1 /par2 /par3
$ sudo mount /dev/sdb1 /par1$ sudo mount /dev/sdb2 /par2$ sudo mount /dev/sdb3 /par3
運行下列命令來檢查是否成功掛載上新創(chuàng)建的分區(qū)。
$ df -h /dev/sdb[1-3]Filesystem Size Used Avail Use% Mounted on/dev/sdb1 9.2G 37M 8.6G 1% /par1/dev/sdb2 9.2G 37M 8.6G 1% /par2/dev/sdb3 31G 49M 30G 1% /par3
怎樣檢查硬盤空閑空間
運行下列命令來檢查硬盤上的空閑空間,這塊硬盤上有 25.7 GB 的空閑空間。
$ sudo parted /dev/sdb print freeModel: ATA VBOX HARDDISK (scsi)Disk /dev/sdb: 53.7GBSector size (logical/physical): 512B/512BPartition Table: msdosDisk Flags:Number Start End Size Type File system Flags32.3kB 1049kB 1016kB Free Space1 1049kB 10.0GB 9999MB primary ext42 10.0GB 20.0GB 9999MB primary ext43 20.0GB 28.0GB 8001MB primary ext428.0GB 53.7GB 25.7GB Free Space
怎樣使用 parted 命令來重新調(diào)整分區(qū)大小
parted 允許用戶重新調(diào)整分區(qū)大小。不過我已在文章的開頭說了,不要縮小分區(qū)大小,不然會有許多錯誤。
運行下列命令來檢查硬盤分區(qū)以及所有可用空間。 可以看到硬盤上有 25.7GB 的可用空間。
$ sudo parted /dev/sdb print freeModel: ATA VBOX HARDDISK (scsi)Disk /dev/sdb: 53.7GBSector size (logical/physical): 512B/512BPartition Table: msdosDisk Flags:Number Start End Size Type File system Flags32.3kB 1049kB 1016kB Free Space1 1049kB 10.0GB 9999MB primary ext42 10.0GB 20.0GB 9999MB primary ext43 20.0GB 28.0GB 8001MB primary ext428.0GB 53.7GB 25.7GB Free Space
運行下列命令來重新調(diào)整分區(qū)大小。 我們將要重新調(diào)整(增加)分區(qū) 3 的結(jié)束位置,從 28GB 到 33GB。
$ sudo parted [Disk Name] [resizepart] [Partition Number] [Partition New End Size]$ sudo parted /dev/sdb resizepart 3 33.0GBInformation: You may need to update /etc/fstab.
運行下列命令來確認分區(qū)是否已經(jīng)擴容。可以看到,分區(qū) 3 已經(jīng)從 8GB 增加到 13GB。
$ sudo parted /dev/sdb printModel: ATA VBOX HARDDISK (scsi)Disk /dev/sdb: 53.7GBSector size (logical/physical): 512B/512BPartition Table: msdosDisk Flags:Number Start End Size Type File system Flags1 1049kB 10.0GB 9999MB primary ext42 10.0GB 20.0GB 9999MB primary ext43 20.0GB 33.0GB 13.0GB primary ext4
重新調(diào)整文件系統(tǒng)大小。
$ sudo resize2fs /dev/sdb3resize2fs 1.43.4 (31-Jan-2017)Resizing the filesystem on /dev/sdb3 to 3173952 (4k) blocks.The filesystem on /dev/sdb3 is now 3173952 (4k) blocks long.
最后,確認分區(qū)是否已經(jīng)擴容。
$ df -h /dev/sdb[1-3]Filesystem Size Used Avail Use% Mounted on/dev/sdb1 9.2G 5.1G 3.6G 59% /par1/dev/sdb2 9.2G 2.1G 6.6G 24% /par2/dev/sdb3 12G 1.1G 11G 10% /par3
怎樣用 parted 刪除分區(qū)
我們用 rm 命令方便地刪除未使用的分區(qū)(如果該分區(qū)不會再被用到了)。下列步驟中,我們將會刪除分區(qū) 3 (/dev/sdb3)。
$ sudo parted [Disk Name] [rm] [Partition Number]$ sudo parted /dev/sdb rm 3Warning: Partition /dev/sdb3 is being used. Are you sure you want to continue?Yes/No? YesError: 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.You should reboot now before making further changes.Ignore/Cancel? IgnoreInformation: You may need to update /etc/fstab.
我們也可以用下列的命令檢查。可以看到,分區(qū) 3 已經(jīng)被成功移除。
$ sudo parted /dev/sdb printModel: ATA VBOX HARDDISK (scsi)Disk /dev/sdb: 53.7GBSector size (logical/physical): 512B/512BPartition Table: msdosDisk Flags:Number Start End Size Type File system Flags1 1049kB 10.0GB 9999MB primary ext42 10.0GB 20.0GB 9999MB primary ext4
怎樣用 parted 命令設置/更改分區(qū)標志
我們可以用下列的命令來輕易更改分區(qū)的標志。 我們將對 /dev/sdb2 設置 lvm 標志。
$ sudo parted [Disk Name] [set] [Partition Number] [Flags Name] [Flag On/Off]$ sudo parted /dev/sdb set 2 lvm onInformation: You may need to update /etc/fstab.
我們可以列出分區(qū)來驗證這次的更改。
$ sudo parted /dev/sdb printModel: ATA VBOX HARDDISK (scsi)Disk /dev/sdb: 53.7GBSector size (logical/physical): 512B/512BPartition Table: msdosDisk Flags:Number Start End Size Type File system Flags1 1049kB 10.0GB 9999MB primary ext42 10.0GB 20.0GB 9999MB primary ext4 lvm
如果你想知道可用的標志,只需要用如下的命令。
$ (parted) help setset NUMBER FLAG STATE change the FLAG on partition NUMBERNUMBER 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.FLAG is one of: boot, root, swap, hidden, raid, lvm, lba, hp-service, palo, prep, msftres, bios_grub, atvrecv, diag, legacy_boot, msftdata, irst, espSTATE is one of: on, off
如果你想知道 parted 的其它可用命令, 只需要去到 help 頁面。
$ sudo partedGNU parted 3.2Using /dev/sdaWelcome to GNU parted! Type 'help' to view a list of commands.(parted) helpalign-check TYPE N check partition N for TYPE(min|opt) alignmenthelp [COMMAND] print general help, or help on COMMANDmklabel,mktable LABEL-TYPE create a new disklabel (partition table)mkpart PART-TYPE [FS-TYPE] START END make a partitionname NUMBER NAME name partition NUMBER as NAMEprint [devices|free|list,all|NUMBER] display the partition table, available devices, free space, all found partitions, or a particular partitionquit exit programrescue START END rescue a lost partition near START and ENDresizepart NUMBER END resize partition NUMBERrm NUMBER delete partition NUMBERselect DEVICE choose the device to editdisk_set FLAG STATE change the FLAG on selected devicedisk_toggle [FLAG] toggle the state of FLAG on selected deviceset NUMBER FLAG STATE change the FLAG on partition NUMBERtoggle [NUMBER [FLAG]] toggle the state of FLAG on partition NUMBERunit UNIT set the default unit to UNITversion display the version number and copyright information of GNU parted(parted) quit





















