Amazon Elastic Compute Cloud
Linux 实例用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

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

使用特定于文件系统的命令,将文件系统调整为更大的新卷大小。即使要扩展的卷是根卷,这些命令依然有效。对于 ext2、ext3 和 ext4 文件系统,该命令为 resize2fs。对于 XFS 文件系统,该命令为 xfs_growfs。对于其他文件系统,请参阅这些文件系统的特定文档以了解有关如何进行扩展的说明。

如果您不确定所使用的文件系统,可以使用 file -s 命令列出设备的文件系统数据。以下示例演示一个 Linux ext4 文件系统和一个 SGI XFS 文件系统。

[ec2-user ~]$ sudo file -s /dev/xvd* /dev/xvda1: Linux rev 1.0 ext4 filesystem data ... /dev/xvdf: SGI XFS filesystem data ...

注意

如果您正扩展的卷已进行分区,那么,您需要在调整文件系统前,增加分区的大小。此时,您还可以分配其他分区。有关更多信息,请参阅扩展 Linux 分区

一旦卷进入 Optimizing 状态,您就可以开始调整文件系统的大小。

重要

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

检查您的卷分区是否需要调整大小

  • 使用 lsblk 命令可列出附加到实例的块储存设备。以下示例显示三个卷:/dev/xvda/dev/xvdb/dev/xvdf

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

    根卷 /dev/xvda1/dev/xvda 上的分区。请注意,两者大小都是 30 GiB。在这种情况下,分区会占用设备上的所有空间,因此无需调整大小。

    /dev/xvdb 完全未进行分区,因此无需调整大小。

    然而,/dev/xvdf1 是一个 8 GiB 分区,位于一个 35 GiB 设备上,并且卷上没有其他分区。在这种情况下,分区必须调整大小,以便使用卷上的剩余空间。有关更多信息,请参阅扩展 Linux 分区。调整分区大小之后,您可以按照下一个过程扩展文件系统以占用分区上的所有空间。

扩展 Linux 文件系统

  1. 使用 SSH 客户端登录到您的 Linux 实例。有关如何连接到 Linux 实例的更多信息,请参阅使用 SSH 连接到 Linux 实例

  2. 使用 df -h 命令可报告文件系统上的现有磁盘空间使用率。在此新示例中,/dev/xvda1 设备已扩展为 35 GiB,但操作系统仍只能看到原来的 8 GiB ext4 文件系统。与此类似,/dev/xvdf 设备已扩展为 35 GiB,但操作系统仍只能看到原来的 1 GiB XFS 文件系统。

    [ec2-user ~]$ df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 8.0G 943M 6.9G 12% / tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/xvdf 1014M 33M 982M 4% /mnt
  3. 使用 growpart 展开修改后的分区 (请注意将设备名称与分区名称分隔开的不寻常语法):

    $sudo growpart /dev/xvdf 1 CHANGED: disk=/dev/xvdf partition=1: start=4096 old: size=16773086,end=16777182 new: size=73396190,end=73400286

    通过查看 lsblk 可以确认分区 /dev/xvdf1 现已填充卷 /dev/xvdf 上的可用空间:

    [ec2-user ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT ... xvdf 202:80 0 35G 0 disk └─xvdf1 202:81 0 35G 0 part
  4. 可使用特定于文件系统的命令将每个文件系统调整为新的卷容量。

    对于 Linux ext2、ext3 或 ext4 文件系统,请使用以下命令并替换要扩展的设备名称:

    [ec2-user ~]$ sudo resize2fs /dev/xvdf1 resize2fs 1.42.3 (14-May-2012) old_desc_blocks = 1, new_desc_blocks = 3 The filesystem on /dev/xvdf1 is now 9174523 blocks long.

    对于 XFS 文件系统,请首先安装 XFS 用户空间工具:

    [ec2-user ~]$ sudo yum install xfsprogs

    然后,使用以下命令,替换文件系统的装载点 (必须装载 XFS 文件系统才能调整其大小):

    [ec2-user ~]$ sudo xfs_growfs -d /mnt meta-data=/dev/xvdf isize=256 agcount=4, agsize=65536 blks = sectsz=512 attr=2 data = bsize=4096 blocks=262144, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 262144 to 26214400

    注意

    如果您收到 xfsctl failed: Cannot allocate memory (xfsctl 失败: 无法分配内存) 错误,则可能需要更新实例上的 Linux 内核。有关更多信息,请参阅您的特定操作系统文档。

    如果您收到 The filesystem is already nnnnnnn blocks long. Nothing to do! 错误,请参阅扩展 Linux 分区

  5. 使用 df -h 命令报告现有文件系统磁盘空间使用率,在本示例中,在 ext4 文件系统上显示了 70 GiB,在 XFS 文件系统上显示了 100 GiB:

    # df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 70G 951M 69G 2% / tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/xvdf 100G 45M 100G 1% /mnt

提示

如果您的卷中增加的可用空间在系统中仍不可见,请尝试重新初始化卷,具体说明请参阅初始化 Amazon EBS 卷