无法调整ec2 ebs根卷的大小

我遵循了许多教程,几乎所有的基本上都是这样说的:

  1. 停止实例
  2. 分离音量
  3. 创build卷的快照
  4. 从快照创build更大的卷
  5. 将新卷附加到实例
  6. 重新启动实例
  7. 运行resize2fs /dev/xxx

然而,第7步是问题开始发生的地方。 在任何情况下运行resize2fs总是告诉我,它已经是xxxxx块大,什么都不做,即使-f通过。 所以我开始继续教程,基本上讲同样的事情,那就是:

  1. 删除所有的部分
  2. 重新创build它们,除了更大的尺寸之外
  3. 重新启动实例并运行resize2fs

(我已经从活动实例和将卷附加到另一个实例并在那里运行命令,尝试了这些步骤)主要的问题是实例不会再次启动并且AWS控制台中提供的系统错误日志不会不提供任何错误。 (然而,它停在grub引导程序,对我来说这表示它不喜欢分区(是的,引导标志是在分区上切换而没有任何影响))另一件事发生,无论我做了什么变化分区是卷所连接的实例表示该分区具有无效的幻数,并且超级块已损坏。 但是,如果我不做任何更改并重新连接卷,则实例运行时不会出现问题。

任何人都可以阐明我可能做错了什么?


编辑

在我的新容量为20GB的6GB映像上, df -h说:

使用的文件系统大小可用使用%
 / dev / xvde1 5.8G 877M 4.7G 16%/
 tmpfs 836M 0 836M 0%/ dev / shm 

fdisk -l /dev/xvde说:

磁盘/ dev / xvde:21.5 GB,21474836480字节
 255个磁头,63个扇区/磁道,2610个磁道
单位= 16065 * 512 = 8225280字节的柱面
扇区大小(逻辑/物理):512字节/ 512字节
 I / O大小(最小/最佳):512字节/ 512字节
磁盘标识符:0x7d833f39

    设备引导启动结束块Id系统
 / dev / xvde1 1 766 6144000 83 Linux
分区1不结束于柱面边界。
 / dev / xvde2 766 784 146432 82 Linux swap / Solaris
分区2不结束于柱面边界。

另外, sudo resize2fs /dev/xvde1说:

 resize2fs 1.41.12(2010年5月17日)
文件系统已经是1536000个块。 没事做!

我会采取更安全的路线。 而且看起来你已经在做着复杂的事情了。 将旧卷附加到使用Amazon Linux或Ubuntu启动的实例或任何您喜欢使用的实例。 挂载它只读/只。 然后,创build一个您需要的较大尺寸的新卷。 将它附加到另一个设备字母的同一实例。 格式化它使用相同的标签(或相同的UUID,如果你的fstab挂载UUID …没有真正需要在AWS中,但不能保证它没有完成)。 挂载它读写。 将旧卷中的文件树复制到新卷中。 你可以使用cp或rsync。

如果您不使用PVGRUB“引导加载程序内核”从卷加载实际内核,则可能需要采取其他步骤使其可启动。

确保在此之前创build旧卷的快照,并在此之后创build新卷的快照。

基本上这里的问题是,你正在努力增加文件系统的大小来填满分区,但是分区实际上并没有增加。

这里的技巧是将卷的快照挂载到不同的实例上,如/ dev / xdf。 然后使用parted或fdisk删除/ dev / xdf2上的交换分区。

 parted /dev/xdf rm 2 

然后您可以调整其他分区来填充磁盘

 parted /dev/xdf resize 1 

然后使用默认启动分区和一个适当的数字结束位置。 然后重新创build交换分区。 那么如果你运行resize2fs / dev / sdf它应该增加分区的大小。 然后卸载该磁盘并将其用作新实例的根卷。

那么,真正的问题是你正在使用一个可怜的AMI,build立一个交换分区。 Amazon虚拟机不需要交换分区,并且您所遵循的教程假定您的EBS卷未被分区。 我build议从Alestic.com的Ubuntu AMI或使用Amazon Linux AMI开始 。

如果您必须继续使用您正在使用的AMI,则需要执行的操作是删除交换分区,并使用fdisk调整ext4分区的大小,然后调整文件系统的大小。 这样做是相当长,复杂和可怕的,我从来没有这样做,所以我不会解释如何做到这一点。 如果你敢,你可以通过谷歌find说明。