KVM环境下制作CentOS7 qcow2格式镜像

下面介绍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 ,虚机的网段跟他是一个网段。

 

**************************************************************************************
当你的才华还撑不起你的野心的时候,你就应该静下心来学习;当你的能力还驾驭不了你的目标时,就应该沉下心来,历练;梦想,不是浮躁,而是沉淀和积累,只有拼出来的美丽,没有等出来的辉煌,机会永远是留给最渴望的那个人,学会与内心深处的你对话,问问自己,想 要怎样的人生,静心学习,耐心沉淀,送给自己,共勉。
**************************************************************************************
原文地址:https://www.cnblogs.com/macoffee/p/14080781.html