parted是一个有名命令行工具,它是你能够容易地管理硬盘分区。它能够帮你添加,删除,收缩和扩展磁盘分区以及位于它们之上地文件系统。parted已经从它一开始出现时经过了很长时间。它其中一些功能被移除,另一些功能被添加。
在本文中,我们将学习parted基础并且我们将展示一些实例。如果你还没有parted地任何先前经验,请注意parted直接写更改到你的磁盘,所以如果你尝试修改你的磁盘分区要小心。
如果你计划测试parted,最好选择是只使用在它之上没有任何有价值信息的虚拟机或者旧计算机/笔记本。要对一个磁盘分区进行修改,它不得使用。如果你需要处理主分区,你可能引导到救援模式。
注意:为了使用parted, 你将需要对你将处理的机器的root访问权。
如何在Linux上安装parted
在很多Linux发行版上,parted是预装的。如果在你的发行版中没有包括它,你可以用以下命令安装它:
基于RHEL的发行版:
[root@areadetector blctrl]# dnf install parted
Last metadata expiration check: 1:46:21 ago on Tue 12 Jul 2022 06:49:38 AM CST.
Package parted-3.2-39.el8.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
Ubuntu:
blctrl@blctrl-KVM:~$ sudo apt install parted
[sudo] password for blctrl:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
parted is already the newest version (3.4-2build1).
parted set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 146 not upgraded.
一旦你确认安装了parted,你可以在本文余下部分中检查现实中的parted命令实例。
1、检查parted版本
运行以下命令,你看到类似以下显式的信息。不要担心你的parted版本是否不同。除非指定,否则,parted将使用你的主驱动器,其在大都数情况下是/dev/sda:
[root@areadetector blctrl]# parted
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
如果要退出parted,只要输入:
(parted) quit
[root@areadetector blctrl]#
2、列出Linux磁盘分区
现在parted启动了,列出所选硬盘的分区。如先前提到,parted默认选择你的第一个驱动器。要看到磁盘分区,运行print。
(parted) print
Model: ATA WDC WDS100T2B0A (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 630MB 629MB fat32 EFI System Partition boot, esp
2 630MB 1704MB 1074MB xfs
3 1704MB 361GB 359GB lvm
4 361GB 1000GB 639GB xfs
当运行print时,它也将显式硬盘信息和型号。在上例中,你可以看到磁盘型号,容量扇区大小和分区表。
3、列出或切换到不同磁盘
如果你有多个硬盘,你可以通过"select"命令容易地在磁盘间切换。在以下示例中,我将从/dev/sda切换到/dev/sdb,/dev/sdb是我系统上第二个驱动器。
在磁盘间切换,你可以使用:
[root@areadetector blctrl]# parted
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) select /dev/sdb
Using /dev/sdb
4、在Linux中创建主或逻辑分区
parted可以用于创建主或逻辑分区。在本例中,我间展示如何创建主分区,但对于逻辑分区步骤相同。
要创建新分区,parted使用"mkpart"。取决于你想要创建的分区类型,你可以给它像"primary"或"logical"的其它参数。
通过使用print开始:
(parted) print
Model: Generic Flash Disk (scsi)
Disk /dev/sdb: 8221MB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Disk Flags:
Number Start End Size File system Flags
1 0.00B 8221MB 8221MB ext4
如上所示,我们使用一个8GB闪存。首先,我们将赋给这个新磁盘一个标签并且接着创建一个分区并且在其上设置一个文件系统。
现在第一个步时用以下命令赋给新磁盘一个标签名:
(parted) mklabel msdos
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this
disk will be lost. Do you want to continue?
Yes/No? Y
(parted) print
Model: Generic Flash Disk (scsi)
Disk /dev/sdb: 8221MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
(parted)
现在用mkpart创建新分区。列出的单位是以兆字节为单位。我们将创建一个从1开始到4000的4GB分区:
(parted) mkpart
Partition type? primary/extended? primary
File system type? [ext2]?
Start? 1
End? 4000
(parted) print
Model: Generic Flash Disk (scsi)
Disk /dev/sdb: 8221MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 4000MB 3999MB primary ext2 lba
接着,用"quit"命令退出parted。我们将使用mkfs用ext4文件系统格式化我们的新分区。要使这个发生,运行以下命令:
(parted) quit
Information: You may need to update /etc/fstab.
[root@areadetector blctrl]# mkfs.ext4 /dev/sdb
sdb sdb1
[root@areadetector blctrl]# mkfs.ext4 /dev/sdb1
mke2fs 1.45.6 (20-Mar-2020)
Creating filesystem with 976384 4k blocks and 244320 inodes
Filesystem UUID: 7c850044-9169-4a3f-b740-22566b86342d
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
[root@areadetector blctrl]# fsck -N /dev/sdb1
fsck from util-linux 2.32.1
[/usr/sbin/fsck.ext4 (1) -- /dev/sdb1] fsck.ext4 /dev/sdb1
注意:在执行以上命令时,选择正确的磁盘和分区。
现在我们验证结果,通过输出在第二个磁盘上的分区表。在文件系统列,你应该看到ext4或者你决定为你分区使用的文件系统类型:
(parted) select /dev/sdb
Using /dev/sdb
(parted) print
Model: Generic Flash Disk (scsi)
Disk /dev/sdb: 8221MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 4000MB 3999MB primary ext4
5、调整Linux磁盘分区大小
parted包含了多个有用功能并且它们之一是"resizepart"。如你现在可能理解,"resizepart"帮助你调整分区大小。
在以下示例中,你将看到如何调整一个已有分区大小。出于这个示例的目的,我们使用先前创建的分区。
首先,你将需要知道你将调整大小的分区编号。通过使用"print"命令可以容易查找:
在这个示例中,分区编号是"1"。现在运行resizepart命令:
(parted) resizepart
Partition number? 1
End? [4000MB]? 5000
现在用"print"确认这个结果:
(parted) print
Model: Generic Flash Disk (scsi)
Disk /dev/sdb: 8221MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 5000MB 4999MB primary ext4
、
6、删除linux分区
你将学习的下一件事是如何从你的硬盘驱动器删除一个分区。要做这件事,你将需要在"parted"中使用"rm"命令。要删除一个磁盘分区,你将需要知道它的编号。
如上提到的,你可以通过使用"print"容易地获取这个编号。在本例中,我们将从我们第二个驱动器/dev/sdb删除编号1地分区:
(parted) rm 1
通过打印分区表验证结果:
(parted) print
Model: Generic Flash Disk (scsi)
Disk /dev/sdb: 8221MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
7、救援Linux磁盘分区
parted支持"resuce"工具,其帮助你恢复一个在开始和结束点之间的丢失分区。如果在那个范围内找到了一个分区,它将尝试恢复它。
这是一个示例:
(parted) rescue
Start? 1
End? 5000
searching for file systems... 0% (time left 05:48)Information: A ext4 primary partition was found at 1049kB -> 4000MB. Do you want to
add it to the partition table?
Yes/No/Cancel? Y
(parted) print
Model: Generic Flash Disk (scsi)
Disk /dev/sdb: 8221MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 4000MB 3999MB primary ext4
8、更改Linux分区标记
使用parted,你可以为磁盘分区封盖一个标准状态。支持的标记是:
- boot
- root
- swap
- hidden
- raid
- lvm
- lba
- legacy_boot
- irst
- esp
- palo
状态可以是"on"或"off"。要更改一个标记,只要在parted内运行"set"命令:
Number Start End Size Type File system Flags
1 1049kB 4000MB 3999MB primary ext4
(parted) set 1 lba on
(parted) print
Model: Generic Flash Disk (scsi)
Disk /dev/sdb: 8221MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 4000MB 3999MB primary ext4 lba
以上命令为第一个分区设置了lba标记为on。用print验证结果。