OpenStack制作Ubuntu镜像的教程
我们平时会根据业务需求用OpenStack制作Ubuntu镜像,但是这个问题难倒了不少的小伙伴们,那么我们现在就跟随爱站小编一起去看看OpenStack制作Ubuntu镜像的教程,感兴趣的小伙伴们一起看看吧。
OpenStack制作Ubuntu 镜像
1. 下载对应需求的Ubuntu镜像
2. 安装kvm-pxe(此步骤因为在搭建openstack环境应该已经下载,故应该可以省略)
apt-get install kvm-pxe
Note:用于解决出现:failed to find romfile “pxe-rtf8138.bin”错误
3. 创建一个大小10G的“硬盘”(raw格式)
kvm-img create -f raw ubuntu.img 10G
4. 使用刚才下载的ubuntu“安装盘”和刚创建的“硬盘”引导启动系统,为了简单起见,本文使用kvm虚拟技术,避开xen繁琐的配置。-vnc参数代表撕开vnc访问,以便可以使用其他机器远程登陆到这个引导界面进行安装操作:
kvm -m 1024 -cdrom ubuntu-11.10-server-amd64.iso -drive file=ubuntu.img -boot d -nographic -vnc :5
Note:
1. 本命令是前台进程,会占用一个终端,后续操作需要打开一个新的终端
2. 启动kvm命令可以在server版本中运行,但是安装系统的操作需要桌面图形支持
3. 如果提示端口3被占用,访问拒绝,那么继续向后调整到端口4,5直到不提示错误
状态是上面一行命令保持不动,此时继续执行下面操作
5. 用vncviewer登陆引导界面后按照屏幕的提示完成ubuntu的安装工作(安装过程和自己电脑一样,安装过程省略)。需要注意的是在分区阶段把10GB硬盘全部分成一个ext4分分区,并挂在到/下,不要创建多个分区也不要创建swap分区
vncviewer 192.168.1.198:5905
Note:
1. 192.168.1.198是本机IP
2. 安装完成后退出,必要时kill掉kvm进程
3. 5905的数字3对应之前的vnc:5,如果修改,则二者应该保持一致。
6. 重启虚拟机镜像
kvm -m 1024 -drive file=ubuntu.img -boot c -net nic -net user -nographic -vnc :5
主意:2048代表虚拟机内存大小,如果真机内存较大的情况下,建议将该值调整到1024或者2048,这样可以保证较为流畅的操作
7. 安装相关模板服务制作
vncviewer 192.168.1.198:5905进入模板系统
(因为vnc内对ctrl+alt+t组合键不能识别,故不能通过快捷键在虚拟机内直接调用终端,所以需要手动点击左上角ubuntu图标,在搜索一栏输入终端,并启动终端),然后执行如下三行
apt-get update
apt-get upgrade
更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2013-11/92642p2.htm
相关阅读:
为 OpenStack Nova 制作 Ubuntu 镜像 http://www.linuxidc.com/Linux/2012-09/70031.htm
在Ubuntu 12.10 上安装部署Openstack http://www.linuxidc.com/Linux/2013-08/88184.htm
Ubuntu 12.04 OpenStack Swift单节点部署手册 http://www.linuxidc.com/Linux/2013-08/88182.htm
MySQL服务器的HA集群之Corosync+DRBD+Pacemaker实现 http://www.linuxidc.com/Linux/2012-08/68101.htm
MySQL服务器的HA集群之Corosync+DRBD+Pacemaker实现-上篇 http://www.linuxidc.com/Linux/2012-06/61963.htm
MySQL服务器的HA集群之Corosync+DRBD+Pacemaker实现-下篇 http://www.linuxidc.com/Linux/2012-06/61964.htm
8. 调整Ubuntu镜像
因为Openstack只接受ext4文件系统格式的镜像,所以需要把上面创建的raw镜像转换成ext4镜像。下面的步骤用来找出镜像文件里面的分区起点是从哪里开始的:
losetup -f ubuntu.img
losetup -a
会提示如下信息
/dev/loop0: [fb00]:24117291 (/home/localadmin/ubuntu.img)
fdisk -l /dev/loop0
提示如下信息
Disk /dev/loop0: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000502e6
Device Boot Start End Blocks Id System
/dev/loop0p1 * 2048 20969471 10483712 83 Linux
上面最后一行显示分区是从扇区(sector)2048开始的,每个扇区是512个字节,所以是从2048 x 512 = 1048576个字节开始的。记住这个1048576,下面会用到。
卸载 loop 后重新从1048576字节开始挂载:
losetup -d /dev/loop0
losetup -f -o 1048576 ubuntu.img
losetup -a
提示信息:/dev/loop0: [fb00]:24117291 (/home/localadmin/ubuntu.img), offset 1048576
把这整个分区拷贝到一个新文件就是一个我们要的 ext4文件系统镜像:
dd if=/dev/loop0 of=ubuntutemplate.img
会提示:
20969472+0 records in
20969472+0 records out
10736369664 bytes (11 GB) copied, 107.455 s, 99.9 MB/s
用完 loop 后记得卸载:
losetup -d /dev/loop0
挂载(mount)刚创建的 ext4文件系统镜像,并修改分区加载表(/etc/fstab),注释或删除以前的,加上 UUID=uec-rootfs一行:
mount -o loop ubuntutemplate.img /mnt
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云里。这个最好是手动进入/mnt/boot目录里查看initrd和vmlinuz这两个文件,因为不同版本ubuntu对应最后的标示不一样,如server版本ubuntu,则两个文件名分别都已server结尾,如果是desktop版本的,则会以generic结尾,笔者因为使用desktop版本制作,情况属于后者,至于拷贝到哪里,要看你img文件在哪里,笔者是直接放在了/root/目录下
使用完虚拟机镜像后记得卸载(unmount):
cp /mnt/boot/initrd.img-3.2.0-29-generic /root/
cp /mnt/boot/vmlinuz-3.2.0-29-generic/root/
umount /mnt
把刚才的虚拟机镜像 ubuntutemplate.img的文件系统标志改成 ‘uec-rootfs’:
tune2fs -L uec-rootfs ubuntutemplate.img
9. 发布 Ubuntu 镜像
发布镜像需要使用上述三个文件initrd.img-3.2.0-29-generic、vmlinuz-3.2.0-29-generic和ubuntutemplate.img
glance add name="ubuntu-ramdisk" is_public=true container_format=ari disk_format=ari < initrd.img-3.0.0-12-server
返回一个ramdisk_id(一大长串那个):如图1
glance add name="ubuntu-kernel" is_public=true container_format=aki disk_format=aki < vmlinuz-3.0.0-12-server
返回一个kernel_id:(一大长串那个)如图2
glance add name="ubuntufinal" is_public=true container_format=ami disk_format=ami kernel_id=图2的idramdisk_id=图1的id < ubuntutemplate.img
三个文件分别上传完毕之后,打开dashboard利用ubuntutemplate启动实例即可
建议给实例选择机器配置时选择多核高内存的选项,以保证实例的流畅运行
以上就是OpenStack制作Ubuntu镜像的教程,希望你正好需要,更多精彩内容尽在爱站技术频道。