EC2增大尺寸后无法调整音量大小

Wil*_*ete 85 centos snapshot volume amazon-ec2 image-resizing

我已按照调整EC2卷大小的步骤进行操作

  1. 停止了实例
  2. 拍摄当前音量的快照
  3. 在上一个快照中创建了一个新卷,在同一区域中具有更大的大小
  4. 从实例中删除旧卷
  5. 将新卷附加到同一安装点的实例

旧卷为5GB,我创建的卷为100GB现在,当我重新启动实例并运行时df -h I仍然看到这个

Filesystem            Size  Used Avail Use% Mounted on
/dev/xvde1            4.7G  3.5G 1021M  78% /
tmpfs                 296M     0  296M   0% /dev/shm
Run Code Online (Sandbox Code Playgroud)

这是我跑步时得到的

sudo resize2fs /dev/xvde1

The filesystem is already 1247037 blocks long.  Nothing to do!
Run Code Online (Sandbox Code Playgroud)

如果我跑,cat /proc/partitions我明白了

 202       64  104857600 xvde
 202       65    4988151 xvde1
 202       66     249007 xvde2
Run Code Online (Sandbox Code Playgroud)

根据我的理解,如果我遵循正确的步骤xvde应该具有与xvde1相同的数据,但我不知道如何使用它

如何使用新卷或卸载xvde1并挂载xvde?

我无法理解我做错了什么

我也试过了 sudo ifs_growfs /dev/xvde1

xfs_growfs: /dev/xvde1 is not a mounted XFS filesystem
Run Code Online (Sandbox Code Playgroud)

顺便说一下,这是一个带有centos 6.2 x86_64的linux盒子

在此先感谢您的帮助

Dmi*_*yas 270

没有必要停止实例并分离EBS卷以重新调整它的大小!

2017年2月13日亚马逊宣布:" 亚马逊EBS更新 - 新弹性卷改变一切 "

即使要扩展的卷是运行实例的根卷,该过程仍然有效!


假设我们想要将Ubuntu的启动驱动器从8G增加到16G"即时".

步骤1)登录AWS Web控制台 - > EBS - >右键单击要调整大小的文件 - >"修改卷" - >更改"大小"字段并单击[修改]按钮

在此输入图像描述

在此输入图像描述

在此输入图像描述


步骤2)ssh进入实例并调整分区大小:

让我们列出附加到我们框中的块设备:

lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  16G  0 disk
??xvda1 202:1    0   8G  0 part /
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,/ dev/xvda1在16 GiB设备上仍然是8 GiB分区,并且卷上没有其他分区.让我们使用"growpart"来调整8G分区的大小,最高可达16G:

# install "cloud-guest-utils" if it is not installed already
apt install cloud-guest-utils

# resize partition
growpart /dev/xvda 1
Run Code Online (Sandbox Code Playgroud)

让我们检查结果(你可以看到/ dev/xvda1现在是16G):

lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  16G  0 disk
??xvda1 202:1    0  16G  0 part /
Run Code Online (Sandbox Code Playgroud)

很多SO答案建议将fdisk与删除/重新创建分区一起使用,这是一个令人讨厌,风险,容易出错的过程,尤其是当我们更改启动驱动器时.


步骤3)调整文件系统的大小以一直增长以充分利用新的分区空间

# Check before resizing ("Avail" shows 1.1G):
df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.8G  6.3G  1.1G  86% /

# resize filesystem
resize2fs /dev/xvda1

# Check after resizing ("Avail" now shows 8.7G!-):
df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       16G  6.3G  8.7G  42% /
Run Code Online (Sandbox Code Playgroud)

因此我们没有停机时间和大量新空间.
请享用!

  • 这是非常有帮助的我必须登录并提升它. (28认同)
  • 有人请接受这个作为正确的答案吗?只是因为......它是. (4认同)
  • 嗯,官方文档没有提到growpart,这就是我之前无法工作的原因.谢谢! (4认同)

小智 67

谢谢你Wilman你的命令正常工作,如果我们将EBS增加到更大的尺寸,需要考虑小的改进

  1. 停止实例
  2. 从卷创建快照
  3. 根据增加大小的快照创建新卷
  4. 检查并记住当前的音量安装点(即/dev/sda1)
  5. 分离当前音量
  6. 将最近创建的卷附加到实例,设置确切的安装点
  7. 重启实例
  8. 通过SSH访问实例并运行 fdisk /dev/xvde

    警告:不推荐使用DOS兼容模式.强烈建议关闭模式(命令'c')并将显示单位更改为扇区(命令'u')

  9. 点击p以显示当前分区

  10. 点击d删除当前分区(如果有多个,则必须一次删除一个)注意:不要担心数据不会丢失
  11. 点击n创建一个新分区
  12. 点击p将其设置为主要
  13. 点击1设置第一个圆柱体
  14. 设置所需的新空间(如果为空则保留整个空间)
  15. 点击a以使其可启动
  16. 点击1w写入更改
  17. 重新启动实例或使用partprobe(从parted包中)告诉内核有关新分区表的信息
  18. 通过SSH登录并运行resize2fs/dev/xvde1
  19. 最后检查运行df -h的新空间

  • 重新启动我的实例后,我无法通过SSH连接.连接超时,aws控制台显示无法启动其状态检查.我觉得它已经死了.知道该怎么办? (9认同)
  • 该解决方案非常出色,但是实例却被"感叹号传递1/2"并带有感叹号(ReadHat 6.5).为了解决这个问题,我将**"第一个气缸"设置为16**(就像之前一样).之后,实例开始正常,"2/2检查通过".希望这有助于某人...... (6认同)
  • 现在,由于AWS支持EBS卷的在线调整大小,因此现已弃用此答案. (4认同)

小智 36

以上jperelli的完整评论.

我今天遇到了同样的问题.AWS文档没有明确提到growpart.我想出了困难的方法,实际上这两个命令在M4.large和M4.xlarge上与Ubuntu完美配合

sudo growpart /dev/xvda 1
sudo resize2fs /dev/xvda1
Run Code Online (Sandbox Code Playgroud)


Wil*_*ete 15

[解决了]

这就是它必须要做的事情

  1. 停止实例
  2. 从卷创建快照
  3. 根据增加大小的快照创建新卷
  4. 检查并记住当前的卷装入点(即/ dev/sda1)
  5. 分离当前音量
  6. 将最近创建的卷附加到实例,设置确切的安装点
  7. 重启实例
  8. 通过SSH访问实例并运行 fdisk /dev/xvde
  9. 点击p以显示当前分区
  10. 点击d删除当前分区(如果有多个,则必须一次删除一个)注意:不要担心数据不会丢失
  11. 点击n创建一个新分区
  12. 点击p将其设置为主要
  13. 点击1设置第一个圆柱体
  14. 设置所需的新空间(如果为空则保留整个空间)
  15. 点击a以使其可启动
  16. 点击1w写入更改
  17. 重启实例
  18. 通过SSH登录并运行 resize2fs /dev/xvde1
  19. 最后检查新空间的运行情况 df -h

就是这个

祝好运!


Chi*_*ati 9

修改 EBS 的大小后,

列出块设备

sudo lsblk

NAME        MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1     259:2    0  10G  0 disk
|-nvme0n1p1 259:3    0   1M  0 part
`-nvme0n1p2 259:4    0  10G  0 part /
Run Code Online (Sandbox Code Playgroud)

扩大分区

假设您要扩展安装在 上的第二个分区/

sudo growpart /dev/nvme0n1 2

如果根卷中的所有空间都已用完,并且基本上您无法访问/tmpie 并出现错误消息Unable to growpart because no space left

  1. 临时挂载一个/tmp卷:sudo mount -o size=10M,rw,nodev,nosuid -t tmpfs tmpfs /tmp
  2. 完成调整大小后卸载:sudo umount -l /tmp

验证新尺寸

NAME        MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1     259:2    0  20G  0 disk
|-nvme0n1p1 259:3    0   1M  0 part
`-nvme0n1p2 259:4    0  10G  0 part /
Run Code Online (Sandbox Code Playgroud)

调整文件系统大小

对于 XFS(使用挂载点作为参数)

sudo xfs_growfs /

对于 EXT4(使用分区名称作为参数)

sudo resize2fs /dev/nvme0n1p2


jpe*_*lli 6

  1. 登录AWS Web控制台 - > EBS - >右键单击要调整大小的文件 - >"修改卷" - >更改"大小"字段并单击[修改]按钮

  2. growpart /dev/xvda 1

  3. resize2fs /dev/xvda1

这是Dmitry Shevkoplyas回答的一个追逐版本.AWS文档未显示该growpart命令.这适用于ubuntu AMI.


HD2*_*298 6

  1. sudo growpart/dev/xvda 1
  2. sudo resize2fs/dev/xvda1

以上两个命令为AWS ubuntu ec2实例节省了我的时间.


Sau*_*tel 5

这将适用于 xfs 文件系统只需运行此命令

xfs_growfs /
Run Code Online (Sandbox Code Playgroud)


yun*_*nus 5

以防万一如果有人在这里使用 GCP 谷歌云平台,
试试这个:

sudo growpart /dev/sdb 1
sudo resize2fs /dev/sdb1
Run Code Online (Sandbox Code Playgroud)