$ sudo vi /mnt/etc/fstab
#UUID=1dc3a59e-faab-41ee-b232-3300163676bf / ext4 errors=remount-ro 0 1
UUID=uec-rootfs / ext4 defaults 0 0
把内核(vmlinuz)和内存盘(initrd)文件拷贝出来以便后面和虚拟机镜像一起发布到OpenStack 云里。使用完虚拟机镜像后记得卸载(unmount):
$ sudo cp /mnt/boot/vmlinuz-2.6.32-28-server /home/vpsee/
$ sudo cp /mnt/boot/initrd.img-2.6.32-28-server /home/vpsee/
$ sudo umount /mnt
把刚才的虚拟机镜像 ubuntutemplate.img 的文件系统标志改成 ‘uec-rootfs’:
$ sudo tune2fs -L uec-rootfs ubuntutemplate.img
tune2fs 1.41.14 (22-Dec-2010)
发布 Ubuntu 镜像
好了,ubuntu 镜像已经做好了,现在可以发布到云里了,需要3个东西,虚拟机的内核文件、虚拟机的内存盘文件和虚拟机镜像文件:
$ uec-publish-image -t image --kernel-file vmlinuz-2.6.32-28-server \
--ramdisk-file initrd.img-2.6.32-28-server amd64 ubuntutemplate.img mybucket
ami-00000006 mybucket/ubuntutemplate.img.manifest.xml
等待一段时间后出现 ami-00000006 mybucket/ubuntutemplate.img.manifest.xml 表示我们刚制作的 ubuntu 镜像已经正式发布到云里,以后就可以以这个镜像为模板来快速生成虚拟机实例(instance)。可以通过 euca-describe-images 来查看:
$ euca-describe-images
IMAGE aki-00000001 mybucket/vmlinuz-2.6.32-28-server.manifest.xml availablpublic x86_64 kernel
IMAGE ari-00000002 mybucket/initrd.img-2.6.32-28-server.manifest.xml available public x86_64 ramdisk
IMAGE ami-00000003 mybucket/ubuntutemplate.img.manifest.xml untarring public x86_64 machine aki-00000001 ari-00000002
第一个 Ubuntu 虚拟机实例
有了 ubuntu 镜像(模板)以后我们就可以以这个 “镜像” 为模板来为云计算用户创建 n 个 ubuntu 虚拟机(操作系统)实例,不过在运行实例之前需要 key:
$ euca-add-keypair mykey > mykey.priv
$ chmod 600 mykey.priv
$ euca-describe-keypairs
KEYPAIR mykey 76:7d:93:88:a0:e5:3e:5d:4b:62:cd:85:c5:23:7a:05
$ euca-run-instances -k mykey -t m1.tiny ami-00000003
RESERVATION r-n0lpdme5 vpseecloud default
INSTANCE i-00000001 ami-00000003 scheduling mykey (vpseecloud, None) 0 m1.tin2011-05-20T14:00:34Z unknown zone
上面使用 euca-run-instances 创建一个实例后可以用 nova-manage 命令看到:
$ sudo nova-manage vm list
instance node type state launched image kernel ramdisk project user zone index
i-00000001 node01 launching None 3 1 2 vpseecloud vpsee None 0
还记得上篇:在 Ubuntu 上安装和配置 OpenStack Nova 的创建网络部分吗?可以看看现在的云里面 IP 分配情况:
$ sudo nova-manage network list
network netmask start address DNS
192.168.3.0/25 255.255.255.128 192.168.3.3 None
刚才用 euca-run-instances 启动的一个 ubuntu 虚拟机实例的 IP 就是从 192.168.3.3 开始的,所以 ssh 登录这个 IP 就登上了我们的第一个云虚拟机:)
$ ssh 192.168.3.3
vpsee@i-00000001:~$
想制作 CentOS 虚拟机镜像的话可以看:为 OpenStack Nova 制作 CentOS 镜像;想制作 Windows 虚拟机镜像的话可以看:为 OpenStack Nova 制作 Windows 镜像。