我正在使用https://matt.berther.io/2015/02/03/how-to-resize-aws-ec2-ebs-volumes/和http://atodorov.org/blog/2014/02/07/aws-tip-shrinking-ebs-root-volume-size/上的说明移动到磁盘空间更少的EBS卷。在这两种情况下,当我将收缩的EBS卷(作为/ dev / xdva或/ dev / sda1,既不起作用)连接到EC2实例并启动它时,它会自动停止并显示消息
State transition reason
Client.InstanceInitiatedShutdown: Instance initiated shutdown
更多的修修补补,我发现新卷没有BIOS启动分区。所以我使用gdisk制作一个并将MBR从原始卷(可以工作并使用我可以启动实例)复制到新卷。现在实例没有终止,但是我无法进入新启动的实例。
这种情况背后的原因可能是什么?如何获取更多信息(来自日志/ AWS控制台等),说明为什么会这样?
要将GPT分区引导EBS卷缩小到标准图像似乎使用的8GB以下,您可以执行以下操作:(来自dd
的https://matt.berther.io/2015/02/03/how-to-resize-aws-ec2-ebs-volumes/方法略有不同)
源磁盘是/dev/xvdf
,目标是/dev/xvdg
$ sudo e2fsck -f /dev/xvdf1
$ sudo resize2fs -M /dev/xvdf1
会印出类似的东西
resize2fs 1.42.12 (29-Aug-2014)
Resizing the filesystem on /dev/xvdf1 to 257491 (4k) blocks.
The filesystem on /dev/xvdf1 is now 257491 (4k) blocks long.
我将其转换为MB,即257491 * 4 / 1024~ = 1006 MB$ sudo dd if=/dev/xvdf of=/dev/xvdg bs=1M count=1100
gdisk
修复新磁盘上的GPT分区
$ sudo gdisk /dev/xvdg
你会受到粗暴的欢迎
GPT fdisk (gdisk) version 0.8.10
Warning! Disk size is smaller than the main header indicates! Loading
secondary header from the last sector of the disk! You should use 'v' to
verify disk integrity, and perhaps options on the experts' menu to repair
the disk.
Caution: invalid backup GPT header, but valid main header; regenerating
backup header from main header.#
Warning! One or more CRCs don't match. You should repair the disk!
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: damaged
****************************************************************************
Caution: Found protective or hybrid MBR and corrupt GPT. Using GPT, but disk
verification and recovery are STRONGLY recommended.
****************************************************************************
Command (? for help):
以下是gdisk
中的键盘输入。要解决这些问题,需要调整复制的分区表中存在的数据分区以适应新磁盘。这意味着需要将其重新创建得更小,并且需要将其属性设置为与旧分区定义匹配。没有测试它所以可能不需要将备份表重新定位到磁盘的实际末端,但我仍然这样做:
去额外的专家选择:x
将备份数据结构重定位到磁盘的末尾:e
回到主菜单:m
现在来修复分区大小
打印并记下分区1的某些属性(如果存在,则记录其他非引导分区):
i
1
会表现出类似的东西
Partition GUID code: 0FC63DAF-8483-4772-8E79-3D69D8477DE4 (Linux filesystem)
Partition unique GUID: DBA66894-D218-4D7E-A33E-A9EC9BF045DB
First sector: 4096 (at 2.0 MiB)
Last sector: 16777182 (at 8.0 GiB)
Partition size: 16773087 sectors (8.0 GiB)
Attribute flags: 0000000000000000
Partition name: 'Linux'
现在删除
d
1
并重新创建分区
n
1
输入所需的参数。这里的所有默认值都适用于我(=按回车键),当有疑问时请参考上面的分区信息
第一部门= 4096
最后一个扇区=新磁盘的实际结束 - 在此处采用默认值
type = 8300(Linux)
新分区的默认名称与旧分区不匹配。所以把它改成原来的One
c
1
Linux
(见上面的Partition name
)
接下来要改变的是分区的GUID
x
c
1
DBA66894-D218-4D7E-A33E-A9EC9BF045DB
(请参阅Partition unique GUID
,而不是上面的分区指导代码)
那应该是它。返回主菜单和打印状态
m
i
1
现在打印
Partition GUID code: 0FC63DAF-8483-4772-8E79-3D69D8477DE4 (Linux filesystem)
Partition unique GUID: DBA66894-D218-4D7E-A33E-A9EC9BF045DB
First sector: 4096 (at 2.0 MiB)
Last sector: 8388574 (at 4.0 GiB)
Partition size: 8384479 sectors (4.0 GiB)
Attribute flags: 0000000000000000
Partition name: 'Linux'
唯一的变化应该是Partition size
。
写入磁盘并退出
w
y
如果您正在处理PVM图像并在实例日志中遇到$ sudo resize2fs -p /dev/xvdg1
内核恐慌 - 不同步:VFS:无法挂载root
当您的实例未通过启动检查时,您可能需要执行此额外步骤。
此错误的解决方案是在从快照创建映像期间为PVM映像选择适当的内核ID。可以获得内核ID(AKI)的完整列表mount error。
为您的图像选择合适的AKI,它们受到地区和建筑的限制!
问题出在BIOS启动分区上。我能够通过首先使用较小的EBS卷初始化实例来解决这个问题。然后分离卷并将其附加到实例上将用于从较小的卷中更大的卷中复制内容。这创建了一个实际可行的BIOS启动分区。只需创建一个新的并复制启动分区不起作用。
现在,遵循两个链接中的任何一个中概述的步骤将有助于缩小根EBS的数量。
今天,使用UBUNTU在这里没有任何其他解决方案。但是,我发现了: