我在 AWS 美国东部地区的 m1.small 上运行了一个 Ubuntu Lucid 10.04 实例。前段时间它出现了一些问题(我认为是 AWS 的问题),不管怎样,我们启动了一个新实例,将单独的数据卷附加到新实例上,一切恢复正常。
旧实例的启动卷上有一些文件我想访问,因此我停止了旧实例,分离了启动卷,并将这个旧启动卷安装到 /dev/sdg 上的新实例上以访问它。不幸的是,我之后没有整理,卷仍然连接并安装着。
昨天我不得不重新启动新实例(AWS 说一些计划维护需要这样做,我可以在他们这样做之前手动完成)
重新启动后,我注意到它存在一些问题。例如:最近添加的新用户未显示在 /etc/passwd 中,只有较老的用户显示在那里。
据我所知,该实例似乎已从旧的启动驱动器重新启动。
那么我该如何…
1)确定我实际上是从哪个卷启动的,以证实我的怀疑?
2)告诉实例从哪个卷启动(如果我是对的)?
问候
保罗
答案1
您可以使用以下方法确定根设备:
ec2-describe-instance-attribute INSTANCE_ID --根设备名称
示例输出:
root设备名称 i-xxxxxx /dev/sda1
然后,您可以使用以下方法确定映射到哪个“块设备”:
ec2-describe-instance-attribute INSTANCE_ID --块设备映射
示例输出:
BLOCKDEVICE /dev/sda1 vol-xxxxxxxa 2011-11-13T21:09:53.000Z BLOCKDEVICE /dev/sdf vol-xxxxxxxb 2011-11-13T21:09:53.000Z BLOCKDEVICE /dev/sdg vol-xxxxxxxc 2011-11-13T21:09:53.000Z
(当然,您可以只使用
df
或mount
来确定根设备,然后查看块设备映射)。要更改根设备,有两种方法:
a. 停止实例,分离错误的根卷,将正确的根卷附加为同一设备(例如 /dev/sda1),然后重新启动实例。更改应在重新启动后持续存在,但不会持续存在,因为您尚未修改其所基于的映像。
b. 修改映像并使用该映像启动新实例。为此,请运行:
ec2-register -s snap-xxxxxxxa -name “AMI_NAME″ –root-device-name /dev/sda1 --block-device-mapping "/dev/sda1=snap-xxxxxxxa"
据我所知,实例一旦启动就无法更改其“根设备名称”。