下面介紹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 ,虛機的網段跟他是一個網段。