EC2增大大小后无法调整大小


95

我已经按照步骤调整了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

这是我跑步时得到的

sudo resize2fs /dev/xvde1

The filesystem is already 1247037 blocks long.  Nothing to do!

如果我跑步cat /proc/partitions我会看到

 202       64  104857600 xvde
 202       65    4988151 xvde1
 202       66     249007 xvde2

据我了解,如果我已按照正确的步骤进行操作,则xvde应该与xvde1具有相同的数据,但我不知道如何使用它

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

我不明白我在做什么错

我也试过 sudo ifs_growfs /dev/xvde1

xfs_growfs: /dev/xvde1 is not a mounted XFS filesystem

顺便说一句,这是一个带有centos 6.2 x86_64的Linux机器

在此先感谢您的帮助

Answers:


70

谢谢威尔曼,您的命令正常工作,如果我们将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的新空间

1
“警告:不建议使用DOS兼容模式。强烈建议关闭该模式(命令'c')并将显示单位更改为扇区(命令'u')”对我来说这不是必需的(Ubuntu 13.04)。它已经关闭了DOS兼容性,并且默认情况下使用了扇区。按下cu实际切换到不赞成使用的模式。
wisbucky

6
该解决方案工作得很好,但是该实例卡在了“ 1/2个通过的检查”上,并带有感叹号(ReadHat 6.5)。为了解决这个问题,我将“第一个圆柱”设置为16(就像以前一样)。此后,实例以“通过2/2检查”正常启动。希望这可以帮助某人...
user3586516

1
我也必须更改第一个柱面,但必须将其更改为2048。我建议您在删除前检查当前分区设置。
Doyley 2014年

9
重新启动实例后,无法通过SSH连接。连接超时,并且aws控制台显示无法启动其状态检查。我认为它已经死了。知道该怎么办吗?
理查德

5
由于AWS支持在线调整EBS卷的大小,因此现在不赞成使用此答案。
Dale Anderson

303

无需停止实例并分离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 /

如您所见,/ 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

让我们检查结果(您可以看到/ 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 /

大量的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% /

因此,我们的停机时间为零,可以使用很多新空间。
请享用!

更新:更新:XFS文件系统时,请使用sudo xfs_growfs / dev / xvda1代替resize2fs。


调整分区大小很有帮助。最奇妙的是,即使对于根卷它也可以工作。
piyushmandovra

4
有人可以接受这个作为正确答案吗?只是因为...是。
eduardohl '17

扎实,非常感谢。。。我对执行上述答案中提到的步骤持怀疑态度,但这真是太酷了……
AAgg

4
the,官方文档没有提到growpart,这就是为什么我以前无法使其正常工作。谢谢!
易卜拉欣

1
@Shihas,是的。这就是重点。甚至可以安全地增加可引导的“ root”安装驱动器,而无需重新引导!
德米特里Shevkoplyas

42

上面的jperelli的完美评论。

我今天也遇到同样的问题。AWS文档未明确提及growpart。我想出了很难的方法,实际上这两个命令在Ubuntu上的M4.large和M4.xlarge上都可以完美地工作

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

附加的第二个答案,此答案是调整大小
Adiii

惊人!在我的t2.small实例上工作。ew。以为那会比这更血腥。谢谢!
publicknowledge

我似乎无法安装包含growpart的cloud-guest-utils。Linux版本3.16.0-4-amd64
nettie

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

就是这个

祝好运!


1
在Amazon EBS卷中,在resize2fs中使用与fdisk相同的挂载点似乎很重要。df将附加的EBS卷显示为/ dev / xvda1之类的内容,但resize2fs命令仅对使用/ dev / sdf1标识符的用户有效,该标识符在fdisk中创建新分区时使用。
Garreth McDaid 2014年

这在AWS文档中。可怜的是,经过3年的努力,他们的程序仍然不完善。如果您有图像,可以回退。总是也可以从运行桌面的实例临时挂起新磁盘,但是如果您考虑使用gparted,则需要挂载它以调整大小可能会成为一个问题。gcloud可即时调整大小。
mckenzm '16

我的存储设备(/ dev / xvda1)从扇区16065开始,而不是扇区1。因此,在我的情况下,步骤13(命中1以设置第一个柱面)必须为16065。
Simon Paarlberg

不要采用这些解决方案,否则可能会丢失数据。实际上,我发现如果在分区表中显示分区列表值,则不要选择删除分区选项,因为如果列表中存在该列表,则它将删除该分区,因此即使答案为“不会删除”。有一种方法可以扩展分区大小,请在底部检查是否有其他实用程序可以帮助您顺利扩展分区大小。
piyushmandovra

6
  1. 登录到AWS Web控制台-> EBS->右键单击您想要调整大小的那个->“修改卷”->更改“大小”字段,然后单击[修改]按钮

  2. growpart /dev/xvda 1

  3. resize2fs /dev/xvda1

这是Dmitry Shevkoplyas回答的切入实际的版本。AWS文档未显示该growpart命令。对于ubuntu AMI来说可以正常工作。


6
  1. sudo growpart / dev / xvda 1
  2. 须藤resize2fs / dev / xvda1

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



4

万一有人在这里使用GCP谷歌云平台,
请尝试以下操作:

sudo growpart /dev/sdb 1
sudo resize2fs /dev/sdb1

2

您是否在该卷上进行了分区?如果这样做,则需要首先扩展分区。


不,我没有。我应该怎么办?请记住,我附加的这个新卷应该具有所有先前的数据,因为它是原始卷的快照
Wilman Arambillete 2012年

否。但是,如果连接了分区,则会出现该错误。去仔细检查您将卷设置为正确的大小,然后再次检查您是否安装了新卷。
chantheman 2012年

另外,您不必停止实例即可执行此操作。如果在该卷上进行写操作是安全的,但是可以在实例运行时对其进行快照。
chantheman 2012年

1

可引导标志(a)在我的情况下不起作用(EC2,centos6.5),因此我不得不从快照重新创建卷。重复所有步骤后(可引导标志除外)-一切正常,因此我能够在之后重新调整大小。谢谢!


1

谢谢@Dimitry,它的工作原理很不错,只需进行少量更改即可匹配我的文件系统。

来源:http : //docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html#recognize-expanded-volume-linux

然后,使用以下命令替换文件系统的安装点(必须安装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失败:无法分配内存错误,则可能需要在实例上更新Linux内核。有关更多信息,请参阅您的特定操作系统文档。如果收到文件系统已经nnnnnnn块长。没事做!错误,请参阅扩展Linux分区。


0

没有足够的代表在上面发表评论;但还要注意以上注释,如果您从1开始,您可能会破坏实例;如果您在启动fdisk之后单击“ u”,然后用“ p”列出分区,则实际上会为您提供正确的起始编号,因此您不会损坏卷。对于centos 6.5 AMI,如上所述,2048对我来说也是正确的。


0

因此,万一有人遇到了一个问题,他们使用100%使用率就遇到了这个问题,甚至没有空间可以运行growpart命令(因为它在/ tmp中创建了一个文件)

这是我发现的一条命令,即使在使用EBS卷时,如果您的ec2上没有剩余空间,并且您处于100%的状态,它也会绕过

/sbin/parted ---pretend-input-tty /dev/xvda resizepart 1 yes 100%

在这里查看此站点:

https://www.elastic.co/blog/autoresize-ebs-root-volume-on-aws-amis


此命令后应该进行sudo resize2fs /dev/xvda1update /etc/fstab,之后df -h才会显示增长的磁盘空间
karmendra

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.