使用Parted命令来管理磁盘分区

时间:2020-03-05 15:29:06  来源:igfitidea点击:

Parted是一个免费的GNU实用程序,用于从命令行管理硬盘分区。
它可以在Linux上创建,删除,调整大小和打印磁盘分区等。

通常,我们使用分区工具对磁盘进行分区,以运行多个OS,分配特定的系统空间,分离有价值的文件或者扩展卷。

传统上,许多用户使用fdisk工具进行分区,这是当磁盘大小大于2TB时使用parted的主要原因。
最初分开仅支持GPT,从util-linux 2.23开始,fdisk也开始支持GPT。

在本教程中,我将展示如何在Linux中使用parted命令进行磁盘管理

在Linux上安装Parted

默认情况下,Parted安装在大多数现代Linux发行版中。
如果发行版中未包含该软件,请手动安装parted。

在Ubuntu和Debian风格的发行版上进行了部分安装:

$sudo apt-get install parted

在CentOS和RHEL上分开安装:

$sudo yum install parted

当我们运行没有任何选项的parted命令时,它将打印parted软件包的版本,默认情况下选择第一个驱动器,并在提示时等待其他命令。
Parted命令必须以root用户或者具有Sudo访问权限的用户身份运行。

$sudo parted
GNU Parted 3.2
Using /dev/xvda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)

键入“ quit”退出分开的提示。

重要说明:键入命令后,所有更改都将在磁盘上进行。

列出磁盘分区

让我们检查一下如何打印所有磁盘信息及其分区。
默认情况下,parted选择第一个驱动器。
要打印所有磁盘分区,请输入'print all'。

注意:输出中显示的警告是因为该磁盘具有尚未分配的磁盘空间,尚未配置。

ubuntu@theitroad:~$sudo parted
GNU Parted 3.2
Using /dev/xvda
Welcome to GNU Parted! Type 'help' to view a list of commands.
                                                                       (parted) print all
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvda: 8590MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number  Start   End     Size    Type     File system  Flags
 1      1049kB  8590MB  8589MB  primary  ext4         boot
Warning: Not all of the space available to /dev/xvdb appears to be
used, you can fix the GPT to use all of the space (an extra 25165824
blocks) or continue with the current setting?
                                                                                                                                              Fix/Ignore? Ignore
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number  Start   End     Size    File system  Name     Flags
 1      17.4kB  1024MB  1024MB  ext4         primary
 2      1024MB  2048MB  1023MB  ext4         primary
(parted)

相反,我们也可以使用单个命令:

$sudo parted /dev/xvda print all

如果有多个磁盘,则可以使用select命令在磁盘之间进行选择:

分区选择磁盘

查找磁盘上未分配的空间

要查找未分配的空间,请选择磁盘,然后运行“免费打印”命令。

稍后,我们将讨论当有更多未分配的磁盘空间时,如何使用resizepart命令扩展分区。

使用parted创建新的磁盘分区

通常,操作系统安装在第一个磁盘'/dev/sda'上。
添加新磁盘时,操作系统将选择下一个数字作为'/dev/sdb'。
为了说明这一点,我正在使用Xen虚拟磁盘,该磁盘使用命名约定作为'/dev/xvd'。

我添加了一个新的20GB磁盘,我们可以将其视为“无法识别的磁盘标签”。

第一步是设置所需的磁盘标签,支持的磁盘标签为bsd,loop,gpt,mac,msdos,pc98和sun。

(parted) mklabel msdos

现在,我将/dev/xvdb分为两个主要分区,第一个分区为10GB,第二个分区为5GB。

要创建一个新分区,我们使用'mkpart'命令,其起始位置为0,结束位置为10000:

要创建第二个分区,请再次运行mkpart命令,指定开始和结束大小

注意:“主要”的概念从MBR反映出来,GPT不在乎,但仍必须添加名称。

我们还可以使用mkpart通过指定要使用的百分比(此处为0%至100%)来创建跨整个驱动器的分区。

例如:

$sudo parted -a opt /dev/sda mkpart primary ext4 0% 100%

除了使用print命令外,我们还可以运行其他命令,例如'lsblk','fdisk -l''以查看创建的分区。

$lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0     7:0    0   18M  1 loop /snap/amazon-ssm-agent/1566
loop1     7:1    0 93.8M  1 loop /snap/core/8935
loop2     7:2    0 93.9M  1 loop /snap/core/9066
xvda    202:0    0    8G  0 disk
└─xvda1 202:1    0    8G  0 part /
xvdb    202:16   0   20G  0 disk
├─xvdb1 202:17   0  9.3G  0 part
└─xvdb2 202:18   0  4.7G  0 part
$

现在我们可以使用ex4文件系统格式化分区(/dev/xvdb1),使用mkfs.ext4如下:

$sudo mkfs.ext4 /dev/xvdb1

使用resizepart调整磁盘分区的大小

要扩展分区,必须首先调整其大小。
简单地调整大小意味着移动分区的结束位置。

其中我将调整/dev/xvdb的第二个分区的大小,将结束位置移动到20000:

(parted) resizepart

注意:growpart是Linux上可用的另一个方便的工具,用于扩展分区。

要将每个文件系统的大小调整到新的容量,必须运行特定于文件系统的命令。
要在Linux中扩展文件系统,请使用“ resize2fs”命令,如下所示:

$sudo resize2fs /dev/xvdb2
resize2fs 1.44.1 (24-Mar-2016)
Resizing the filesystem on /dev/xvdb2 to 2441340 (4k) blocks.
The filesystem on /dev/xvdb2 is now 2441340 (4k) blocks long.

从所选磁盘删除分区

要删除分区,我们应该知道磁盘上的分区号。
分开使用'print'命令来显示所有分区及其对应的编号。

要删除,可以使用rm命令,后跟分区号。
这里我们要删除第二个分区,如下所示:

(parted) rm 2

在分区上设置标志

Parted允许在分区上设置标志。
不用担心某些标志取决于磁盘标签。
标志可以是开或者关。
最常见的标志是引导,实验室,交换,raid,LVM等。

以下命令在分区2上设置LVM标志:

(分开)设置2 LVM在

需要设置启动分区时的另一个实际示例:

(parted) set 2 boot on

救援Linux磁盘分区

当我们意外删除分区时,救援会有所帮助。
丢失的分区可以通过在开始和结束之间定位来恢复。

让我们删除/dev/xvdb上的分区1并使用救援命令将其恢复:

(parted) rescue

设置默认单位

分部中的“单位”命令有助于设置默认单位以显示容量和位置。

支持的单位有:

KiB- kibibyte 
MiB - mebibyte
GiB - gibibyte
TiB - tebibyte
kB - kilobyte
MB - megabyte
GB - gigabyte
TB - terabyte
% - percentage of the device
cyl - cylinders
chs - cylinders, heads, sectors addressing
compact - Use human-readable representation for output

以下命令将单位设置为紧凑:

(parted) unit compact
(parted) print
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvda: 8590MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number  Start   End     Size    Type     File system  Flags
 1      1049kB  8590MB  8589MB  primary  ext4         boot
(parted)

我们还可以按以下单位打印:

(parted) unit GB print
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvda: 8.59GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number  Start   End     Size    Type     File system  Flags
 1      0.00GB  8.59GB  8.59GB  primary  ext4         boot
(parted)