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

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

在调整 Amazon 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的。 xen表示您的实例基于 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

      分区号是后面的数字p。例如,对于nvme0n1p1,分区号为1。对于nvme0n1p128,分区号为128

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

      重要

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

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

      分区号是设备名称之后的数字。例如,对于xvda1,分区号为1。对于xvda128,分区号为128

      要扩展名为的分区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. 在扩展包含有用数据的文件系统之前,最佳实践是创建包含它的卷的快照 (如果您需要回滚您的更改)。有关更多信息,请参阅创建亚马逊EBS快照

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

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

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

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

    注意

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

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

    • 该卷使用 Master Boot Recor MBR d () 分区样式,其大小已为 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

使用以下步骤使用扩展 Windows 文件系统 PowerShell。

使用扩展文件系统 PowerShell
  1. 在扩展包含有用数据的文件系统之前,最佳实践是创建包含它的卷的快照(如果您需要回滚您的更改)。有关更多信息,请参阅创建亚马逊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 -spectional扩展分区

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

    使用 PowerShell -max 扩展分区