NOTE: ‘#’开头的是root权限执行的命令
‘virsh #’开头的是virsh命令行下执行的命令
项目 | 版本 |
---|---|
服务器类型 | VMware虚拟机 |
服务器系统 | CentOS7.1503 |
服务器网络 | 桥接模式 |
服务器IP | 192.168.1.111 |
项目 | 版本 |
---|---|
hypervisor | qemu-kvm-1.5.3-141.el7_4.4 |
镜像网络模式 | Bridge |
镜像版本 | CentOS7.1 |
VNC客户端 | VNC-Viewer-6.17.1113-Windows-64bit |
安装kvm等工具
# yum install -y qemu-kvm libvirt libvirt-python \
libguestfs-tools virt-install
启动服务
# systemctl enable libvirtd && systemctl start libvirtd
由于我用的是VMware虚拟机,启动的镜像也采用bridge模式会使后续的远程连接调试更加方便
添加网桥br0需修改ifcfg-ens33与ifcfg-br0(dhcp模式),配置如下:
# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
DEVICE="ens33"
ONBOOT="yes"
BRIDGE="br0"
# cat /etc/sysconfig/network-scripts/ifcfg-br0
TYPE="bridge"
BOOTPROTO="dhcp"
DEVICE="br0"
ONBOOT="yes"
# qemu-img create -f qcow2 /tmp/CentOS67.qcow2 30G
# virt-install --name CentOS67 --vcpu 4 --ram 4096 \
--disk path=/tmp/CentOS67.qcow2 \
--network bridge=br0 \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=rhel6 \
--cdrom=/data/img/CentOS-6.7-x86_64-minimal.iso
##cdrom后面的镜像需要从CentOS官网下载
查看vnc端口
virsh # vncdisplay CentOS67
:0
外部连接的vnc端口为590x例如上面就为5900,以192.168.1.111:5900连接之后进行安装系统
如果要实现分区自动伸缩,必须在安装系统的时候手动将文件系统格式配置成ext4 lvm不支持自动伸缩功能
安装完系统之后就开始一一实现功能
yum install -y ntp vim wget net-tools tcpdump strace \
sysstat iotop pciutils lsof telnet iftop lrzsz \
unzip dos2unix ipmitool psmisc tree
echo "
* soft nproc 655360
* hard nproc 655360
* soft nofile 655360
* hard nofile 655360" >>/etc/security/limits.conf
sed -i -e "/UseDNS/c UseDNS no" /etc/ssh/sshd_config
sed -i -e "/StrictHostKeyChecking/c StrictHostKeyChecking no\nUserKnownHostsFile /dev/null" /etc/ssh/ssh_config
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 关闭SElinux
echo "net.ipv4.ip_forward=1
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.all.rp_filter=0" >> /etc/sysctl.conf
sysctl -p
service postfix stop
service iptables stop
chkconfig --del iptables
# 禁用防火墙
chkconfig --del postfix
redhat系可以通过cloud-utils-growpart
工具来实现,安装即可用***非lvm才可用***
yum install -y epel-release
yum install cloud-utils-growpart
默认安装之后会把ssh密码登陆关掉需手动开启
yum install cloud-init -y
/etc/cloud/cloud.cfg
users:
- default
disable_root: 0
ssh_pwauth: 1
/etc/ssh/sshd_config
sed -i '/^#Port/c Port 22' /etc/ssh/sshd_config
sed -i '/^PasswordAuthentication/c PasswordAuthentication yes' /etc/ssh/sshd_config
yum install -y openssh-clients
yum install -y qemu-guest-agent
chkconfig --add qemu-ga
保证虚拟机能连接到openstack元数据即可,一般情况用dhcp元数据,所以用不到zeroconf route,需将zeroconf禁用掉,否则zeroconf router在虚拟机开机时会自动生成路由169.254.0.0/16 0.0.0.0 导致无法与元数据通信
编辑vim /etc/sysconfig/network-scripts/ifup-eth
注释掉以下部分
if [ -z "${NOZEROCONF}" -a "${ISALIAS}" = "no" -a "${REALDEVICE}" != "lo" ]; then
ip route add 169.254.0.0/16 dev ${REALDEVICE} metric $((1000 + $(cat /sys/class/net/${REALDEVICE}/ifindex))) scope link
fi
或者
echo "NOZEROCONF=yes" >> /etc/sysconfig/network
重启网络 service network restart
centos6中udev rule会在服务器启动时生成mac地址信息,如果不清的话eth0网卡将无法正常使用
做完以上操作 清除mac信息
rm -f /etc/udev/rules.d/70-persistent-net.rules
如果网卡配置不是按照上面配的,网卡配置中也可能有mac地址 需要删掉
以上完成,就可以清除掉操作信息,关闭虚拟机导入上传镜像
> /root/.bash_history
poweroff
qemu-img convert -c -O qcow2 CentOS67.qcow2 CentOS67_convert.qcow2
镜像创建完先在vmvare上启动虚拟机测试一下,用创建的镜像启动虚拟机
cp CentOS67_convert.qcow2 CentOS67_convert_test.qcow2
qemu-img resize CentOS67_convert_test.qcow2 +30G
#扩容镜像 验证镜像分区自动扩展功能,首次启动之后虚拟还需重启一次才会扩容分区
virt-install --name centos67 --vcpu 2 --ram 4096 \
--disk /tmp/CentOS67_convert_test.qcow2 \
--import --network bridge=br0,model=virtio \
--graphics vnc,listen=0.0.0.0 --noautoconsole
启动之后一一验证功能,验证没问题之后,上传至openstack
qemu-img convert -f qcow -O raw CentOS67_convert_test.qcow2 CentOS67.raw
source ~/keystonerc_admin
glance image-create --name centos6.7 \
--file CentOS67.raw --dish-format raw \
--container-format bare --is-public true --progress
参考文献:
https://docs.openstack.org/image-guide/openstack-images.html
https://docs.openstack.org/image-guide/centos-image.html