我怎样才能configuration一个Xen映像运行在EC2与不同的驱动器名称?

我正在创build许多基于我们的Xen映像上传和运行的亚马逊机器映像(AMI)。 但是,我遇到了一些平台的问题,在EC2上运行的驱动器名称分配的平台与我们在本地运行映像时命名的平台不同。

例如,在本地运行的SUSE下,我们看到以下内容:

brw-rw —- 1个根盘202,1月30日07:49 xvda1
brw-rw —- 1根磁盘202,1月30日07:49 xvda2
brw-rw —- 1根磁盘202,3月30日07:49 xvda3

Amazon提供的映像在t1.micro上运行时报告以下内容:

brw-rw —- 1根盘8,1月30日13:18 sda1

我如何准备我的Xen映像,以便当我们使用ec2-bundle-image打包它们时,会自动select正确的磁盘名称?

最好的方法是不要通过实际名称来引用驱动器,而是通过文件系统UUID或标签来引用驱动器。 它们分别在/dev/disk/by-uuid/dev/disk/by-label显示,可以在/etc/fstab中用UUID=LABEL=语法指定:

 UUID=e6c4e981-ce1d-423e-9f23-167f8b370021 / ext4 defaults 0 0 

这也适用于bootloader中configuration的root= kernel参数,所以使用GRUB1例如:

 kernel /vmlinuz-3.2.0-31-virtual root=UUID=e6c4e981-ce1d-423e-9f23-167f8b370021 ro 

GRUB2和一些修补版本的GRUB1支持用于查找包含/boot的分区的UUID。 这不应该是一个问题,但是由于引导加载程序不以不同的方式命名虚拟磁盘。