为Openstack制作centos6镜像
制作Openstack的Linux镜像的基础知识
镜像的磁盘容器格式
- RAW:原始的格式,一个纯二进制镜像光盘映像,非常便携,一个字:裸。由于原生的裸格式,不支持快照
- QCOW2:qcow2(QEMU copy-on-write version 2)是KVN虚拟化常用的格式,附带有多种功能,例如大小经过压缩、支持快照、性能上接近raw、支持zlib的磁盘压缩、支持AES的加密等
- AMI:Amazon Machine Image
- AKI:Amazon Kernel Image
- ARI:Amazon Ramdisk Image
- AMDK:VMware’s ESXi用的格式
- VDI:Oracle VirtualBox用的格式
- VHD:微软的虚拟硬盘文件(Microsoft Hyper-V)
- VHDX也是微软的虚拟硬盘文件(Microsoft Hyper-V),但支持Microsoft Server 2012,附加一些防止数据损坏的特性
虚拟化以及镜像的工具
- qemu-kvm:vm负责cpu虚拟化+内存虚拟化;qemu是模拟IO设备(网卡,磁盘)。kvm加上qemu之后就能实现真正意义上服务器虚拟化。
- virt-manager:virt-manager 是基于 libvirt 的图像化虚拟机管理软件。
- libvirt:免费、开源的支持Linux下主流虚拟化工具的C函数库,为各种虚拟化工具提供一套方便、可靠的编程接口
CPU虚拟化技术
- CPU需要支持虚拟化技术
- 需要在BIOS开启虚拟化特性
openstack的Linux镜像要求
- 支持磁盘分区和调整引导根分区,使用cloud-init实现
- 清除MAC地址信息
- 开启SSH服务
- 禁用防火墙
- 支持注入公匙来访问SSH,使用cloud-init实现
- 支持处理用户的数据和其他元数据,使用cloud-init实现
制作镜像
官网下载Centos6的ISO文件
直接在官网上下载Centos6.6
mkdir /var/openstack-image
cd /var/openstack-image
wget http://mirrors.163.com/centos/6.6/isos/x86_64/CentOS-6.6-x86_64-minimal.iso
安装虚拟化工具和配置网络
安装
通过yum
来安装:
yum groupinstall Virtualization
yum groupinstall "Virtualization Client"
yum install libvirt
yum install libguestfs-tools
启动服务
service libvirtd restart
配置网络
配置虚拟环境的网络,这个链接描述得很清晰:
http://www.chenyudong.com/archives/libvirt-kvm-bridge-network.html
创建虚拟主机
创建qcow2镜像文件
qemu-img create -f qcow2 CentOS-6.6-x86_64.qcow2 10G
chown -R qemu:qemu *
创建虚拟机
virt-install -n CentOS-6.6-x86_64 -r 2048 --cpu host -c CentOS-6.6-x86_64-minimal.iso --disk path=CentOS-6.6-x86_64.qcow2,device=disk,bus=virtio,size=10,format=qcow2 -w bridge:br0 --os-type=linux --os-variant=rhel6 --vnc --vnclisten=0.0.0.0 -v
通过vnc界面安装centos
用VNC客户端安装Centos系统
查看虚拟机的vnc链接信息
Virsh vncdisplay CentOS-6.6-x86_64
然后用vncview客户端链接上(vncview下载地址:http://www.realvnc.com/download/viewer/)
看到这个界面就熟悉了,基本和平时安装系统一样进行下去,但有以下几点的要求:
网络的配置:
启用IPv4的DHCP
存储设备:
在选择存储设备的类型时,选择基本存储设备(Basic Storage Devices.
)。
磁盘分区:
如果不了解这块,选择默认分区方。
完成操作系统的安装:
完成系统安装需要重启虚拟机。重启前卸载CD-ROM:
virsh attach-disk --type cdrom --mode readonly CentOS-6.6-x86_64 "" hdc
使用上面virsh
命令可以弹出光驱
操作系统的一些配置
完成centos系统的安装后,用SSH客户端(例如PuTTY
)链接上虚拟机,修改操作系统的一些配置的
修改网络配置
Disable the zeroconf route:
echo "NOZEROCONF=yes" >> /etc/sysconfig/network
安装ACPI服务
yum install -y acpid
chkconfig acpid on
这样可以通过web界面控制虚拟化程序来重启或者关闭虚拟机实例
Configure consolenova console
命令读取到centos的log,需要在/boot/grub/menu.lst
文件下增加以下的内容:
serial --unit=0 --speed=115200
terminal --timeout=10 console serial
# Edit the kernel line to add the console entries
kernel ... console=tty0 console=ttyS0,115200n8
升级
yum upgrade
升级下操作系统
禁用selinux
修改/etc/selinux/config
文件,将SELINUX=enforcing
改为SELINUX=disabled
关闭防火墙
chkconfig iptables off
chkconfig ip6tables off
编辑/etc/rc.local
在/etc/rc.local
文件增加以下内容:
if [ ! -d /root/.ssh ] ; then
mkdir -p /root/.ssh
chmod 0700 /root/.ssh
restorecon /root/.ssh
fi
最重要的配置,Attention
这个配置很重要,提升自己的知名度,修改/etc/motd
,增加以下内容:
Welcome to XunyunEdu Elastic Compute Server
The CentOS Image Author:Jacken(chenjacken@gmail.com)
Pls Visit The Website:http://www.jacken.me
安装cloud-init和配置
直接用yum
进行安装
yum install -y http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install -y cloud-utils cloud-init
cloud-init
的配置文件在/etc/cloud/cloud.cfg
,编辑里面配置,定制自己所需要的功能。我的配置信息是:
1 | disable_root: 0 |
其中几点说明下:
1,允许root
登录和禁止password
验证
disable_root: 0
ssh_pwauth: 0
2,以下配置是让虚拟机根据openstack
的Flavors
自动resize根文件系统大小
resize_rootfs: 1
resize_rootfs_tmp: /dev
growpart:
mode: auto
devices: ['/']
但是遇到一个问题,虚拟机实例创建完,需要重启一次系统才能调整根文件系统的大小,请高手指点
3,数据源的获取方式
datasource_list: ['ConfigDrive','Ec2','NoCloud']
我配置了ConfigDrive
为先。这个需要修改openstack的nova的配置文件,开启Config Drive
。
简单说明下,在所有计算节点,修改nova.conf
配置,增加或修改以下内容:
force_config_drive=True
config_drive_format=iso9660
创建快照和恢复
镜像创建快照,目的是可以让镜像创建多种环境版本,例如这个快照是集成LAMP,那个快照安装了Mysql等。恢复到指定的快照,可以修复完成发现的问题或创建另一种环境的快照,再发布打包成镜像。
创建快照
virsh snapshot-create-as --domain CentOS-6.6-x86_64 --name "cloud-init" --description "cloud-init had installed and configured"
查看已有的快照
virsh snapshot-list CentOS-6.6-x86_64
恢复到指定的快照
virsh snapshot-revert --domain CentOS-6.6-x86_64 --snapshotname cloud-init
删除指定的快照
virsh snapshot-delete --domain CentOS-6.6-x86_64 --snapshotname cloud-init
发布镜像
清理镜像
把镜像系统关机:
shutdown -h now
删除硬件信息
virt-sysprep -d CentOS-6.6-x86_64
打包镜像
压缩镜像文件
virt-sparsify --tmp ./ --compress CentOS-6.6-x86_64.qcow2 CentOS-6.6-x86_64-Cloud.qcow2
在openstack上传镜像
选择刚才创建的镜像文件CentOS-6.6-x86_64-Cloud.qcow2
上传
当然你可以用命令glance add
创建镜像,这部分略!