使用Parted命令来管理磁盘分区
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)