

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

# 调整 Amazon EBS 卷大小后扩展文件系统
<a name="recognize-expanded-volume-linux"></a>

[增加 EBS 卷的大小后](requesting-ebs-volume-modifications.md)，您必须将分区和文件系统扩展到新的较大大小。您可以在卷进入 `optimizing` 状态后立即执行此操作。

## 开始前的准备工作
<a name="extend-file-system"></a>
+ 如果需要回滚更改，则创建卷的快照。有关更多信息，请参阅 [创建 Amazon EBS 快照](ebs-creating-snapshot.md)。
+ 确认卷修改成功并且其处于 `optimizing` 或 `completed` 状态。有关更多信息，请参阅 [监控 Amazon EBS 卷修改的进度](monitoring-volume-modifications.md)。
+ 确保卷已附加到实例，并且已格式化和挂载。有关更多信息，请参阅 [格式化并挂载附加的卷](ebs-using-volumes.md#ebs-format-mount-volume)。
+ （*仅限 Linux 实例*）如果在 Amazon EBS 卷上使用逻辑卷，则必须使用逻辑卷管理器（LVM）来扩展逻辑卷。有关如何执行此操作的说明，请参阅[如何使用 LVM 在 EBS 卷的分区上创建逻辑卷？](https://repost.aws/knowledge-center/create-lv-on-ebs-partition)一文中的**扩展 LV** 部分。

## Linux 实例
<a name="extend-linux"></a>

**注意**  
以下说明将引导您完成为 Linux 扩展 **XFS** 和 **Ext4** 文件系统的过程。有关扩展其他文件系统的信息，请参阅相关文档。

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

### 扩展 EBS 卷的文件系统
<a name="extend-file-system"></a>

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

请注意，Xen 实例和基于 Nitro 系统构建的实例的设备和分区命名有所不同。要确定您的实例是基于 Xen 还是基于 Nitro，请参阅 [Amazon EC2 hypervisor type](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#instance-hypervisor-type)。

**扩展 EBS 卷的文件系统**

1. [连接到您的 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html)。

1. 如果需要，调整分区的大小。为此，请执行以下操作：

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

------
#### [ Nitro instance example ]

      在以下示例输出中，根卷（`nvme0n1`）有两个分区（`nvme0n1p1` 和 `nvme0n1p128`），而额外的卷（`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。
**故障排除技巧**  
如果没有在命令输出中看到该卷，请确保该卷已[附加到实例](ebs-attaching-volume.md)并且[已格式化和挂载](ebs-using-volumes.md#ebs-format-mount-volume)。

   1. 检查是否需要扩展分区。在上一步的 **lsblk** 命令输出中，比较分区大小和卷大小。
      + 如果分区大小小于卷大小，则继续执行下一步（2c）。
      + 如果分区大小等于卷大小，则无需扩展分区，请跳过步骤 2c 和 2d，继续执行步骤 3。
**故障排除技巧**  
如果卷仍然反映原始大小，则请[确认卷修改成功](monitoring-volume-modifications.md)。

   1. 扩展分区。使用 **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`：表示分区已经扩展了整个卷，无法再扩展。[确认卷修改成功](monitoring-volume-modifications.md)。

   1. 验证是否已扩展分区。使用 **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
      ```

------

1. 扩展文件系统。

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

------
#### [ Nitro instance example ]

      **df -hT** 命令的以下示例输出显示了 `/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 ]

      **df -hT** 命令的以下示例输出显示了 `/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
      ...
      ```

------
      + 如果文件系统大小小于卷大小，则继续执行下一步（3b）。
      + 如果文件系统大小等于卷大小，则无需扩展。在这种情况下，请跳过剩余步骤：分区和文件系统已扩展到新的卷大小。

       

   1. 扩展文件系统的命令因文件系统类型而异。根据您在上一步中记录的文件系统类型选择以下正确命令。
      + **[XFS 文件系统]** 使用 **xfs\$1growfs** 命令并指定您在上一步中记录的文件系统的挂载点。

------
#### [ 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`：表示文件系统已经扩展了整个卷。如果卷没有分区，则请[确认卷修改成功](monitoring-volume-modifications.md)。如果卷有分区，则请确保该分区已按照步骤 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!`：表示文件系统已经扩展了整个卷。如果卷没有分区，则请[确认卷修改成功](monitoring-volume-modifications.md)。如果卷有分区，则请确保该分区已按照步骤 2 中的说明进行扩展。
      + **[其他文件系统]**，请参阅文件系统的文档，了解相关说明。

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

## Windows 实例
<a name="extend-windows"></a>

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

------
#### [ Disk Management utility ]

**使用磁盘管理扩展文件系统**

1. 在扩展包含有用数据的文件系统之前，最佳实践是创建包含它的卷的快照（如果您需要回滚您的更改）。有关更多信息，请参阅[创建 Amazon EBS 快照](ebs-creating-snapshot.md)。

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

1. 在**运行**对话框中，输入 **diskmgmt.msc** 并按 Enter。然后，磁盘管理实例程序随之打开。  
![\[Windows Server 磁盘管理实用工具\]](http://docs.aws.amazon.com/zh_cn/ebs/latest/userguide/images/Expand-Volume-Win2008-before.png)

1. 在 **Disk Management** 菜单上，选择 **Action**、**Rescan Disks**。

1. 打开扩展驱动器的上下文（右键单击）菜单，然后选择**扩展卷**。
**注意**  
如果出现以下情况，说明**扩展卷**可能已被禁用（灰显）：  
未分配的空间不在驱动器旁边。未分配的空间必须与要扩展的驱动器的右侧相邻。
卷使用主引导记录（MBR）分区样式，大小已经为 2TB。使用 MBR 的卷的大小不能超过 2TB。  
![\[Windows Server 磁盘管理实用工具\]](http://docs.aws.amazon.com/zh_cn/ebs/latest/userguide/images/Expand-Volume-Win2008-before-menu.png)

1. 在**扩展卷**向导中，选择**下一步**。对于 **Select the amount of space in MB**，输入扩展卷的兆字节数。通常，您可指定最大可用空间。**Selected** 下突出显示的文本是将添加的空间量，而不是卷最终将具有的大小。完成向导。  
![\[Windows Server 扩展卷向导\]](http://docs.aws.amazon.com/zh_cn/ebs/latest/userguide/images/Extend-Volume-Wizard-Win2008.png)

1. 如果您在没有 AWS NVMe 驱动程序的实例上增加 NVMe 卷的大小，则必须重启该实例才能让 Windows 看到新的卷大小。有关安装 AWS NVMe 驱动程序的更多信息，请参阅[AWS NVMe 驱动程序](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/aws-nvme-drivers.html)。

------
#### [ PowerShell ]

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

**使用扩展文件系统 PowerShell**

1. 在扩展包含有用数据的文件系统之前，最佳实践是创建包含它的卷的快照（如果您需要回滚您的更改）。有关更多信息，请参阅[创建 Amazon EBS 快照](ebs-creating-snapshot.md)。

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

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

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

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

   ```
   "rescan" | diskpart
   ```

1. 运行以下命令，使用您在步骤 4 中记下的驱动器号代替**<drive-letter>**。 PowerShell 返回允许的分区的最小和最大大小（以字节为单位）。

   ```
   Get-PartitionSupportedSize -DriveLetter <drive-letter>
   ```

1. 要将分区扩展到指定的量，请运行以下命令，并在 **<size>** 的位置输入卷的新大小。您可以输入以 `KB`、`MB` 和 `GB` 为单位的大小，例如 `50GB`。

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

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

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

   以下 PowerShell 命令显示了将文件系统扩展到特定大小的完整命令和响应流。  
![\[使用 PowerShell -spectional扩展分区\]](http://docs.aws.amazon.com/zh_cn/ebs/latest/userguide/images/ebs-extend-powershell-v3-specific.png)

   以下 PowerShell 命令显示了将文件系统扩展到最大可用大小的完整命令和响应流。  
![\[使用 PowerShell -max 扩展分区\]](http://docs.aws.amazon.com/zh_cn/ebs/latest/userguide/images/ebs-extend-powershell-v3-max.png)

------