openstack使用ISO镜像

openstack默认使用ISO镜像创建虚机时,nova从glance那获取镜像,并将根磁盘设置的磁盘类型设置为cdrom类型,ide总线类型,导致到安装系统界面时,会发现找不到磁盘。

这种情况是正常的,因为你的根分区mout了这个系统的cdrom。当我们在直接使用kvm或vmware时,使用cdrom做为安装介质时,我们也是在选完安装介质后,还需要在创建硬盘进行安装,总好像pc的cdrom是 cd或dvd设备,创建的磁盘是pc的硬盘一样。


解决方法
1、修改flavor,增加临时磁盘空间,这样安装时就可以看见硬盘了

弊端是
openstack的快照功能只能针对根磁盘,所以想通过此方法创建主机,在做快照,通过快照做成镜像是不行的。
可以通过修改libvirt代码将cdrom mount到临时磁盘,根分区用来安装系统就解决了这个问题。

2、给云主机挂载块云硬盘,将系统安装在云硬盘内

将此云硬盘做为镜像方法
通过glance create创建一个空镜像,记录uuid占个坑
glance image-create

在ceph底层将这个volume卷cp到glance读取image的pool

rbd cp volume/volume-xxxxx images/image_uuid

创建snap打上protect
rbd snap create images/image_uuid@snap
rbd snap protet image/image_uuid@snap

修改刚刚创建的空的glance镜像

1
ceph_id=`ceph -s | grep cluster | awk '{print $2}'`  

设置后端存储URL

1
glance location-add --url rbd://${ceph_id}/images/${image_uuid}/snap $image_uuid

images为ceph中存放镜像的pool名,根据实际环境修改。
更新镜像元数据

1
glance image-update --name="test_image" --disk-format=raw --container-format=bare image_uuid

然后就可以基于新的镜像创建云主机了。