我已经学习过许多教程,它们基本上都讲了同一件事:
- 停止实例
- 分离卷
- 创建卷的快照
- 从快照创建更大的卷
- 将新卷附加到实例
- 启动实例备份
- 跑步
resize2fs /dev/xxx
但是,问题开始出现在第 7 步。无论如何,运行resize2fs
总是告诉我它已经是 xxxxx 块大,并且什么也不做,即使-f
通过了。所以我开始继续学习教程,这些教程基本上都说了同一件事,那就是:
- 删除所有分区
- 将它们恢复到原来的样子,只是尺寸更大
- 重启实例并运行
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 交换 / Solaris 分区 2 未在圆柱边界上结束。
此外,还sudo resize2fs /dev/xvde1
表示:
resize2fs 1.41.12(2010 年 5 月 17 日) 文件系统的长度已达 1536000 个块。无需执行任何操作!
答案1
我会选择更安全的路线。而且看起来你已经在做一些同样复杂的事情了。将旧卷附加到使用 Amazon Linux 或 Ubuntu 或任何你习惯使用的启动的实例。以只读方式挂载它。然后,创建一个你需要的更大尺寸的新卷。将其附加到另一个设备字母处的同一实例。使用相同的标签对其进行格式化(或者,如果你的 fstab 通过 UUID 挂载,则使用相同的 UUID... AWS 中没有真正的需要,但这并不能保证它没有被完成)。以读写方式挂载它。将文件树从旧卷复制到新卷。你可以为此使用 cp 或 rsync。
如果您没有使用 PVGRUB“引导加载程序内核”从卷加载您的真实内核,则可能需要采取其他步骤使其可启动。
确保在此之前对旧卷进行快照,并在此之后对新卷进行快照。
答案2
基本上,这里的问题是您试图增加文件系统的大小以填满分区,但分区的大小实际上并没有增加。
这里的技巧是将卷的快照安装到不同的实例上,例如 /dev/xdf。然后使用 parted 或 fdisk 删除 /dev/xdf2 处的交换分区。
parted /dev/xdf
rm 2
然后你可以调整其他分区的大小来填充磁盘
parted /dev/xdf
resize 1
然后使用默认的起始分区和适当的数字作为结束位置。然后重新创建交换分区。然后,如果您运行 resize2fs /dev/sdf,它应该会增加分区的大小。然后卸载该磁盘并将其用作新实例的根卷。
答案3
嗯,问题实际上是你使用的 AMI 质量较差,设置了交换分区。Amazon 虚拟机不需要交换分区,你一直遵循的教程假设你的 EBS 卷未分区。我建议从来自 Alestic.com 的 Ubuntu AMI或使用亚马逊 Linux AMI。
如果您必须继续使用您正在使用的 AMI,那么您需要做的是删除交换分区并调整 ext4 分区的大小,fdisk
然后您可以调整文件系统的大小。这样做相当漫长、复杂和可怕,我从来没有这样做过,所以我不会解释如何做到这一点。如果你敢的话,你可以通过 Google 找到说明。