1. 准备好一台装有centos7桌面版系统的物理机,进入后
yum update
(安装过程交互的三种方式:这里我们使用桌面系统上的界面操作,更方便简单,推荐;纯敲命令,使用vnc登陆安装的方式较为麻烦,不推荐;纯敲命令,不使用界面交互的方式理论上可行,较麻烦,不推荐)
2. 安装libvirt各项组件
yum install kvm libvirt libvirt-pythonvirt-install virt-manager virt-viewer libguestfs-tools qemu bridge-utils qemu-kvm virt-top
其中kvm和qemu相关的软件系统自带,这里是以防万一;virt-manager安装后会在系统工具中看到虚拟机管理程序,可以界面操作;virt-install是启动虚拟机命令;其他相关组件具体作用不做交代,请自行查询。
3. 创建qcow2磁盘:
qemu-img create -f qcow2 centos7.qcow2 20G
4. 启动虚拟机:(用虚拟机管理程序创建qcow2磁盘、导入iso文件安装更简单,不必考虑下列各项参数具体含义)
virt-install --name centos --ram 1024--disk /tmp/centos.qcow2,format=qcow2 --network network=default --graphicsvnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=rhel7 --location=/data/isos/CentOS-7-x86_64-NetInstall-1511.iso
disk:指定虚拟磁盘路径
network:网络连接方式,默认使用NAT;使用bridge方式参数:--network bridge:br0,使用网桥方式需要先在物理机上创建网桥br0
graphices: 界面交互方式;这里创建了一个vnc连接,使用vnc方式;我们实际使用的是virt-manager界面;如果想纯敲命令不进行界面交互,参数为--graphics
none,并添加--extra-args="console=tty0 console=ttyS0,115200",再使用virsh console centos7登陆
location:指定iso文件路径
(我们制作完镜像后,使用时会修改硬件资源的参数,所以启动虚拟机时可以指定任意参数,如这里ram是1024M,vcpu没有指定,网络使用NAT,修改为其他参数也可以)
5. 对镜像进行配置修改:
a. 允许ssh root登陆:
b. 安装acpid
为了hypervisor能够管理虚拟机生命周期(shutdown、reboot等),虚拟机需要安装acpid服务:
yum install -y acpid
systemctl enable acpid
c. 记录虚拟机的启动日志供nova console-log使用
编辑/etc/default/grub文件
修改GRUB_CMDLINE_LINUX 行,删除 rhgb quiet
添加the console=tty0 console=ttyS0,115200n8
运行grub2-mkconfig -o /boot/grub2/grub.cfg保存修改
d. yum update
e. 安装qemu-guest-agent:用于从面板在线更新密码/密钥
yum install -y qemu-guest-agent
配置qemu-ga,修改/etc/sysconfig/qemu-ga
TRANSPORT_METHOD="virtio-serial"
DEVPATH="/dev/virtio-ports/org.qemu.guest_agent.0"
LOGFILE="/var/log/qemu-ga/qemu-ga.log"
PIDFILE="/var/run/qemu-ga.pid"
BLACKLIST_RPC=""
FSFREEZE_HOOK_ENABLE=0
f. 禁用zeroconf route:
echo "NOZEROCONF=yes" >>/etc/sysconfig/network
g. 安装cloud-init:实现密码注入功能
yum install epel-release.noarch
yum install cloud-init
h. 安装growpart:在创建虚拟机时能够自动识别根分区大小并自动调整
yum install -y epel-release
yum install -ycloud-utils-growpart
rpm -qa kernel |sed 's/^kernel-//' | xargs -I {} dracut -f/boot/initramfs-{}.img {}
i. 关机
shuedown now
j. 删除硬件信息:
virt-sysprep -d centos7
k. 删除虚拟机配置文件:
virsh undefine centos7
(至此镜像制作完成)
6. 使用镜像:
1)在openstack平台上,导入镜像文件验证密码注入、磁盘根分区大小修改等功能是否正常;
glance image-create --progress --container-format bare --disk-format raw --fileimg.raw --name img --property hw_qemu_guest_agent=yes --propertyos_admin_user=root --property os_type="linux"