调整卷大小后扩展 Linux 文件系统 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

注意

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

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

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

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

  2. 扩展文件系统。

开始前的准备工作

扩展 EBS 卷的文件系统

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

请注意,Xen 实例和 Nitro 实例的设备和分区命名有所不同。要确定实例是基于 Xen 还是基于 Nitro,请使用 describe-instance-types Amazon 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 命令并确认文件系统大小等于卷大小。