下面介绍CentOS7 KVM环境下制作CentOS7 qcow2格式镜像
如果是CentOS7 KVM环境是VMware虚拟机,需要CPU开启虚拟化
1、配置yum镜像源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo yum clean all yum makecache
2、安装kvm qemu-img libvirt kvm虚拟化所需环境组件
yum -y install qemu-kvm qemu-img kvm qemu-kvm-tools libvirt bridge-utils
另外还需要安装virt-*
yum install virt-*
3、启动libvirtd
systemctl enable libvirtd systemctl start libvirtd echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf sysctl -p
4、上传原版CentOS ISO镜像到/data目录
5、先创建qcow2镜像文件
qemu-img create -f qcow2 /data/CentOS7_mini.qcow2 20G
6、创建KVM虚拟机
virt-install --name CentOS7_mini --ram 4096 --vcpus 4 --os-type linux --os-variant rhel7 --arch=x86_64 --network network=default,model=virtio --disk path=/data/CentOS7_mini.qcow2,format=qcow2 --location /data/CentOS-7-x86_64-Minimal-1908.iso --console pty,target_type=serial --graphics vnc,listen=0.0.0.0,port=7788
使用UltraVNC工具连接宿主机的VNC:7788端口,并完成系统的安装,就不详细介绍安装步骤了
系统安装略... 安装完后 reboot。
注意点击reboot,注意并不会重启,需要我们手动启动:
1. virsh list --all 查看镜像
2. virsh start xxx 启动镜像
7、等待虚拟机安装完后,登录查看相关IP磁盘分区信息
vnc连接宿主机7788端口
8、ssh登录虚拟机进行定制、优化等等(可以省略)
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo curl -o /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo yum install -y acpid net-tools sed -i '/UUID/d' /etc/sysconfig/network-scripts/ifcfg-eth* sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0 systemctl disable firewalld systemctl stop firewalld
9、安装ACPI服务
启动后,你可能需要手动配置你的虚拟机的网络。为了让虚拟化层能重启和关闭虚拟机,必须在虚拟机内安装并运行 acpid 服务。 在 CentOS虚拟机内运行以下命令安装 ACPI 服务并配置为系统启动时自动启动。 # yum install acpid # systemctl enable acpid
10、配置获取metadata
yum install cloud-init
10、清除MAC地址信息
操作系统会在/etc/sysconfig/network-scripts/ifcfg-eth0 和
/etc/udev/rules.d/70-persistent-net.rules 这类文件记录下网卡MAC地址,但是,虚拟机的网卡MAC地址在每次虚拟机创建的时候都会不同,因此这些信息必须从配置文件删除掉。
11、其他标准化操作..略
12、收尾工作
最后,你可以关闭虚拟机了,如果以后不在需要该虚拟机也可以直接删除。建议是保留,方便后期进行虚拟机镜像的定制。
13、定制化之后关机
history -c poweroff
14、virt-sysprep -d 清理机器信息
#如果没有virtsysprep命令,安装下 yum whatprovides */virt-sysprep yum install libguestfs-tools -y #清理虚机信息 virt-sysprep -d 虚拟机名 virt-sysprep -d CentOS7_mini
15、virt-sparsify compress压缩镜像
virt-sparsify时可能因为默认的/tmp空间不足,会提示tmp不足,可以提前定义好tmp目录
mkdir /data/tmp chmod 777 /data/tmp/ export TEMP=/data/tmp export TMPDIR=/data/tmp echo 'export TEMP=/data/tmp' >> /etc/profile echo 'export TMPDIR=/data/tmp' >> /etc/profile source /etc/profile #镜像压缩 virt-sparsify --compress /data/CentOS7_mini.qcow2 /data/centos7_mongodb4.2.qcow2 ls #查看压缩后的镜像文件 2.4G CentOS7_mini.qcow2 1.1G centos7_mongodb4.0.qcow2
可以看到压缩后的centos7_mongodb4.0.qcow2文件只有1.1G左右(备注,我这个系统镜像搭载了mongodb服务,不是单纯的系统镜像)
16、测试镜像文件
#测试镜像是否可用 virt-install --virt-type kvm --name liuxd_image --ram 4096 --vcpus=4 --import --disk path=/data/centos7_mongodb4.0.qcow2,format=qcow2 --network network=default,model=virtio --graphics vnc,listen=0.0.0.0,port=7799 --os-type=linux
vnc连接登录后,qcow2镜像正常可用,那么qcow2镜像就制作完成了
17、上传镜像到Glance
# glance image-create --name "CentOS-7-x86_64" --disk-format qcow2 --container-format bare --file /tmp/CentOS-7-x86_64.qcow2 --visibility public --progress
18、备注相关
通过virt-install 安装镜像后,后面启动镜像,直接 virsh start image-name即可。 #查询镜像 virsh list --all #启动镜像 virsh start xxx
#网络
通过桥接的方式,宿主机可以和虚机直接通信。
查看宿主机网络,可以看到有一个 virbr0 ,虚机的网段跟他是一个网段。