调整卷大小后扩展 Linux 文件系统 - Amazon Elastic Compute Cloud

调整卷大小后扩展 Linux 文件系统

注意

以下主题将引导您完成为 Linux 扩展 XFSExt4 文件系统的过程。有关其他文件系统的信息,请参阅其文档了解相关说明。

增加 EBS 卷的大小后,您必须使用文件系统特定的命令将文件系统扩展到新的较大大小。您可以在卷进入 optimizing 状态后立即执行此操作。

若要在 Linux 上扩展文件系统,您需要执行以下操作:

  1. 如果卷有分区,则扩展分区。

  2. 扩展文件系统。

开始前的准备工作

扩展 EBS 卷的文件系统

按照以下过程扩展调整大小后的卷的文件系统。

请注意,Xen 实例和 Nitro 实例的设备和分区命名有所不同。要确定实例是基于 Xen 还是基于 Nitro,请使用 describe-instance-types AWS CLI 命令,如下所示:

[ec2-user ~]$ aws ec2 describe-instance-types --instance-type instance_type --query "InstanceTypes[].Hypervisor"

nitro 表示实例基于 Nitro。xenxen-on-nitro 则表示实例基于 Xen。

扩展 EBS 卷的文件系统
  1. 连接到您的 实例

  2. 如果需要,调整分区的大小。为此,请执行以下操作:

    1. 检查卷是否有分区。使用 lsblk 命令。

      Nitro instance example

      在以下示例输出中,根卷 (nvme0n1) 有两个分区(nvme0n1p1nvme0n1p128),而额外的卷 (nvme1n1) 没有分区。

      [ec2-user ~]$ sudo lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme1n1 259:0 0 30G 0 disk /data nvme0n1 259:1 0 16G 0 disk └─nvme0n1p1 259:2 0 8G 0 part / └─nvme0n1p128 259:3 0 1M 0 part
      Xen instance example

      在以下示例输出中,根卷 (xvda) 有一个分区 (xvda1),而额外的卷 (xvdf) 没有分区。

      [ec2-user ~]$ sudo lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 16G 0 disk └─xvda1 202:1 0 8G 0 part / xvdf 202:80 0 24G 0 disk

      如果该卷具有分区,则继续执行以下步骤(2b)。如果该卷没有分区,请跳过步骤 2b、2c 和 2d,然后继续执行步骤 3。

      故障排除技巧

      如果没有在命令输出中看到该卷,请确保该卷已附加到实例并且已格式化和挂载

    2. 检查是否需要扩展分区。在上一步的 lsblk 命令输出中,比较分区大小和卷大小。

      如果分区大小小于卷大小,则继续执行下一步。如果分区大小等于卷大小,则无法扩展分区。

      故障排除技巧

      如果卷仍然反映原始大小,则请确认卷修改成功

    3. 扩展分区。使用 growpart 命令并指定要扩展的分区。

      Nitro instance example

      例如,若要扩展名为 nvme0n1p1 的分区,请使用以下命令。

      重要

      请注意,设备名称 (nvme0n1) 和分区编号 (1) 之间有空格。

      [ec2-user ~]$ sudo growpart /dev/nvme0n1 1
      Xen instance example

      例如,若要扩展名为 xvda1 的分区,请使用以下命令。

      重要

      请注意,设备名称 (xvda) 和分区编号 (1) 之间有空格。

      [ec2-user ~]$ sudo growpart /dev/xvda 1
      故障排除技巧
      • mkdir: cannot create directory ‘/tmp/growpart.31171’: No space left on device FAILED: failed to make temp dir:表示卷上没有足够的可用磁盘空间供 growpart 创建执行调整大小所需的临时目录。请释放一些磁盘空间并重试。

      • must supply partition-number:表示您指定的分区不正确。使用 lsblk 命令以确认分区名称,并确保在设备名称和分区编号之间输入空格。

      • NOCHANGE: partition 1 is size 16773087. it cannot be grown:表示分区已经扩展了整个卷,无法再扩展。确认卷修改成功

    4. 验证是否已扩展分区。使用 lsblk 命令。分区大小现在应等于卷大小。

      Nitro instance example

      以下示例输出显示卷 (nvme0n1) 和分区 (nvme0n1p1) 的大小相同 (16 GB)。

      [ec2-user ~]$ sudo lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme1n1 259:0 0 30G 0 disk /data nvme0n1 259:1 0 16G 0 disk └─nvme0n1p1 259:2 0 16G 0 part / └─nvme0n1p128 259:3 0 1M 0 part
      Xen instance example

      以下示例输出显示卷 (xvda) 和分区 (xvda1) 的大小相同 (16 GB)。

      [ec2-user ~]$ sudo lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 16G 0 disk └─xvda1 202:1 0 16G 0 part / xvdf 202:80 0 24G 0 disk
  3. 扩展文件系统。

    1. 获取需要扩展的文件系统的名称、大小、类型和挂载点。使用 df -hT 命令。

      Nitro instance example

      以下示例输出显示了 /dev/nvme0n1p1 文件系统的大小为 8 GB,其类型为 xfs,其挂载点是 /

      [ec2-user ~]$ df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/nvme0n1p1 xfs 8.0G 1.6G 6.5G 20% / /dev/nvme1n1 xfs 8.0G 33M 8.0G 1% /data ...
      Xen instance example

      以下示例输出显示了 /dev/xvda1 文件系统的大小为 8 GB,其类型为 ext4,其挂载点是 /

      [ec2-user ~]$ df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/xvda1 ext4 8.0G 1.9G 6.2G 24% / /dev/xvdf1 xfs 24.0G 45M 8.0G 1% /data ...
    2. 扩展文件系统的命令因文件系统类型而异。根据您在上一步中记录的文件系统类型选择以下正确命令。

      • [XFS 文件系统] 使用 xfs_growfs 命令并指定您在上一步中记录的文件系统的挂载点。

        Nitro and Xen instance example

        例如,若要扩展挂载在 / 上的文件系统,请使用以下命令。

        [ec2-user ~]$ sudo xfs_growfs -d /
        故障排除技巧
        • xfs_growfs: /data is not a mounted XFS filesystem:表示指定的挂载点不正确,或者文件系统不是 XFS。若要验证挂载点和文件系统类型,请使用 df -hT 命令。

        • data size unchanged, skipping:表示文件系统已经扩展了整个卷。如果卷没有分区,则请确认卷修改成功。如果卷有分区,则请确保该分区已按照步骤 2 中的说明进行扩展。

      • [Ext4 文件系统] 使用 resize2fs 命令并指定您在上一步中记录的文件系统的名称。

        Nitro instance example

        例如,若要扩展名为 /dev/nvme0n1p1 的挂载文件系统,请使用以下命令。

        [ec2-user ~]$ sudo resize2fs /dev/nvme0n1p1
        Xen instance example

        例如,若要扩展名为 /dev/xvda1 的挂载文件系统,请使用以下命令。

        [ec2-user ~]$ sudo resize2fs /dev/xvda1
        故障排除技巧
        • resize2fs: Bad magic number in super-block while trying to open /dev/xvda1:表示文件系统不是 Ext4。若要验证文件系统类型,请使用 df -hT 命令。

        • open: No such file or directory while opening /dev/xvdb1:表示您指定的分区不正确。若要验证分区,请使用 df -hT 命令。

        • The filesystem is already 3932160 blocks long. Nothing to do!:表示文件系统已经扩展了整个卷。如果卷没有分区,则请确认卷修改成功。如果卷有分区,则请确保该分区已按照步骤 2 中的说明进行扩展。

      • [其他文件系统],请参阅文件系统的文档,了解相关说明。

    3. 验证是否已扩展文件系统。使用 df -hT 命令并确认文件系统大小等于卷大小。