调整 EBS 卷大小后扩展文件系统 - Amazon EBS

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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

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

开始前的准备工作

注意

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

如果卷有分区,则必须先扩展分区,才能在 Linux 上扩展文件系统。

扩展 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 命令并确认文件系统大小等于卷大小。

使用以下任一方法在 Windows 实例上扩展文件系统。

Disk Management utility
使用磁盘管理扩展文件系统
  1. 在扩展包含有用数据的文件系统之前,最佳实践是创建包含它的卷的快照 (如果您需要回滚您的更改)。有关更多信息,请参阅创建 Amazon EBS 快照

  2. 使用远程桌面登录 Windows 实例。

  3. 运行对话框中,输入 diskmgmt.msc 并按 Enter。然后,磁盘管理实例程序随之打开。

    Windows Server 磁盘管理实用工具
  4. Disk Management 菜单上,选择 ActionRescan Disks

  5. 打开扩展驱动器的上下文(右键单击)菜单,然后选择扩展卷

    注意

    如果出现以下情况,说明扩展卷可能已被禁用(灰显):

    • 未分配的空间不在驱动器旁边。未分配的空间必须与要扩展的驱动器的右侧相邻。

    • 卷使用主引导记录(MBR)分区样式,大小已经为 2TB。使用 MBR 的卷的大小不能超过 2TB。

    Windows Server 磁盘管理实用工具
  6. 扩展卷向导中,选择下一步。对于 Select the amount of space in MB,输入扩展卷的兆字节数。通常,您可指定最大可用空间。Selected 下突出显示的文本是将添加的空间量,而不是卷最终将具有的大小。完成向导。

    Windows Server 扩展卷向导
  7. 如果您在没有 AWS NVMe 驱动程序的实例上增加了 NVMe 卷的大小,则必须重启实例才能使 Windows 发现新的卷大小。有关安装 AWS NVMe 驱动程序的更多信息,请参阅适用于 Windows 实例的 AWS NVMe 驱动程序

PowerShell

通过以下过程可以使用 PowerShell 来扩展 Windows 文件系统。

使用 PowerShell 扩展文件系统
  1. 在扩展包含有用数据的文件系统之前,最佳实践是创建包含它的卷的快照(如果您需要回滚您的更改)。有关更多信息,请参阅创建 Amazon EBS 快照

  2. 使用远程桌面登录 Windows 实例。

  3. 以管理员身份运行 PowerShell。

  4. 运行 Get-Partition 命令。PowerShell 返回每个分区的相应分区号、驱动器号、偏移量、大小和类型。请注意要扩展的分区的盘符。

  5. 运行以下命令重新扫描磁盘。

    "rescan" | diskpart
  6. 运行以下命令,使用您在第 4 步中记下的盘符替换 <drive-letter>。PowerShell 会返回允许的分区最小和最大大小(以字节为单位)。

    Get-PartitionSupportedSize -DriveLetter <drive-letter>
  7. 要将分区扩展到指定的量,请运行以下命令,并在 <size> 的位置输入卷的新大小。您可以输入以 KBMBGB 为单位的大小,例如 50GB

    Resize-Partition -DriveLetter <drive-letter> -Size <size>

    要将分区扩展到最大可用大小,请运行以下命令。

    Resize-Partition -DriveLetter <drive-letter> -Size $(Get-PartitionSupportedSize -DriveLetter <drive-letter>).SizeMax

    下面的 PowerShell 命令显示了将文件系统扩展到指定大小的完整命令和响应流。

    使用 PowerShell 扩展分区 - 指定

    下面的 PowerShell 命令显示了将文件系统扩展到最大可用大小的完整命令和响应流。

    使用 PowerShell 扩展分区 - 最大