所以,我的冒险开始如下:我有一个 OpenSUSE 13.1 VM,我想升级到 13.2,所以两个社区 amis(13.1 - `` 和 13.2 - ami-3a6cc64d
)之间的主要区别之一是 13.2 映像使用 HVM - 而不是 PV - 虚拟化类型。
我遇到的第一个问题是,我的 CloudFormation 模板/dev/sda
在 BlockDeviceMappings 下使用了 device_name,但显然这不是 HVM 类型的映像所期望的 device_name 类型(请参阅这里了解更多信息)。这导致 EC2 实例甚至没有进入running
状态。
无论如何,我能够/dev/sda1
按照建议通过分配来克服这个障碍,所以我的实例最终能够正常启动。
但是 - 现在启动时,由于依赖项失败,我的几个服务无法启动,我已经能够追踪到云配置没有正确完成 AWS 要求它执行的任何操作:
如果我跑
$ systemctl ... cloud-init-local.service loaded active exited Initial cloud-init job (pre-networking) cloud-init.service loaded failed failed Initial cloud-init job (metadata service crawler) ...
检查日志(/var/log/syslog)后,我可以看到以下内容:
... Failed to resize filesystem (cmd=('resize2fs', '/dev/hda1'))#012Traceback ...
但是,我自己并没有进行设置,这是 AWS 以某种方式决定通过云配置在我的图像上执行的操作...
我不知道为什么会发生这种情况,而且我似乎找不到很多相关的帖子,所以任何想法都非常受欢迎...!:)
提前致谢!!
答案1
好的,事实证明我必须明确禁用默认的云配置行为,使用resize_rootfs
属性:
# resize_rootfs should the / filesytem be resized on first boot
# this allows you to launch an instance with a larger disk / partition
# and have the instance automatically grow / to accomoddate it
# set to 'False' to disable
# by default, the resizefs is done early in boot, and blocks
# if resize_rootfs is set to 'noblock', then it will be run in parallel
resize_rootfs: True
将其设置为 False,消除错误,因此cloud-init.service
服务不再在启动时失败。
(我最初找到的大多数资源都让我相信我应该使用 growpart,但事实并非如此。)