windows个人电脑上用vmware作为宿主机制作qcow2镜像

通常云服务商提供的多为基础镜像主机,无法定制系统环境。

本篇主要为了解决项目上云过程有自定义镜像需求以达到快速部署集群需求以节约时间成本的场景

如:项目镜像需要集成k8s、agent脚本等各种集成场景。

本篇为新手入门向的基础教程,详细命令可参考:

libvirt命令帮助手册——筑梦之路_筑梦之路的博客-CSDN博客

准备环节:

一个VNC工具,强烈建议用mobax

一个vmware

1,电脑上装个vmware,并且用镜像起个linux系统。建议单独给这个台机器再单独挂个50G的盘把一会起虚机用镜像放里面(注意在处理器那里打开虚拟化)

windows个人电脑上用vmware作为宿主机制作qcow2镜像_第1张图片

Index of /centos-vault/7.6.1810/isos/x86_64/ 上古镜像下载地址

附,阿里云镜像站CENTOS7.9镜像下载地址:https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso

2.建议装个GUI界面,系统安装结束,进入系统,这里用要改用阿里的yum源的话建议先用原来yum源install一个wgetinstall -y install wget

然后直接

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

或自行更改/etc/yum.repos.d源(可以使用rm -rf /etc/yum.repos.d/*清空原系统自带yum源)

注(如没有,可无视这段跳到3.):如果你像我一样还没yum wget就先把yum的.repo文件全删了,导致vmware-tools也没法安装,就建议改一下vmware当前虚拟机的网卡配置,改成仅主机模式和你个人电脑在同一个网络内,然后配置一下linux的/etc/sysconf/network-scripts/目录下的ifcfg-xxx;我这里是ifcfg-ens33,网卡配置文件。

然后BOOTPROTO=如果是none的话改成static(静态IP)

prefix改成24或者其他,只要别是默认的32位掩码就行..

onboot=yes(开机时候启动本网卡)

IPADDR=192.168.110.110(改一个IP,和你本机电脑的vmware虚拟网卡要在同一个网段)

然后wq!保存

systemctl restart network重启网卡

再配一下你个人电脑vmware的虚拟网卡就OK,注意掩码别搞错,或者和虚拟机IP冲突建议用24掩码,就是255.255.255.0,能ping通就OK,然后用xshell或者xmoba ssh过去可以复制粘贴yum源了,灰常方便。

3.yum kvm虚拟化组件

这里命令照搬参考CentOS7 KVM环境下制作qcow2格式镜像 - 云+社区 - 腾讯云

简单解释一哈kvm:kvm(底层虚拟化)qemu(辅助kvm虚拟化)libvirt(承载于kvm-qemu之上负责管理虚拟机) virt(最小化虚拟机控制台)

yum -y install qemu-kvm qemu-img kvm qemu-kvm-tools libvirt bridge-utils

yum install virt-*

systemctl enable libvirtd (默认启动虚拟机管理服务)

systemctl start libvirtd (启动服务)

echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf (ip转发)

sysctl -p (重新加载本机系统参数)

4.上传要做的qcow2镜像源iso文件到这台主机(我上传到的目录是/data)

试了一下没有办法直接调用qume-kvm 软连接一下

ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm

创建一个给一会启动的虚拟机存储的地方 我这里创建的40G 一会镜像也这么大

(设定的大小决定上云后系统盘大小,以预防系统盘满了无法写入扩容增加成本,建议40G+,)

qemu-img create -f qcow2 CentOS7.6_x86.qcow2 40G

这里写三种虚拟机网络的情况:

1.default (默认)2.bridge(网桥)3.bridge(网桥模式访问公网)

其中网卡启动时候使用default比较无脑就带过了

重点在bridge适用场景更广一些,和宿主机共享同一网络,可操作性性更高

(一)default (默认)情况

启动虚拟机(蓝色背景文字,请根据自己路径或情况写)

virt-install --name centos7.6 --ram 2048 --vcpus 2 --os-type linux --os-variant rhel7.6 --arch=x86_64 \
--network network=default,model=virtio --disk path=/data/CentOS7.6_x86.qcow2,format=qcow2 --location /data/CentOS-7-x86_64-Minimal-1810.iso\
--console pty,target_type=serial\
--graphics vnc,listen=0.0.0.0,port=7788

这里我用mobax启动虚拟机时候启动X服务自动弹出VNC;或者用其他vnc工具连接宿主机的7788端口都可以,下文就不赘述了。

(二)bridge (网桥)情况

本段网桥配置参考版权声明:CSDN博主「wayees」,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41248237/article/details/115443878

首先确定宿主机的virbr0 NAT网卡是否正常

ifconfig virbr0   没有ifconfig可以用 ip a 看看有没有这张网卡就可以

没起来的话就 ifup 网卡名 起来

确定virbr0网卡正常之后 因为在装组件的时候不会自动生成他的配置文件 故需要手动写入一下网卡的配置文件

vi /etc/sysconfig/network-scripts/ifcfg-br0
 

BOOTPROTO=static
NAME=br0
DEVICE=br0
TYPE=Bridge
IPADDR=(建议和你个人电脑相同的网段)
NETMASK=255.255.255.0(根据网络场景写)
GATEWAY=(根据网络场景写)
ONBOOT=yes

然后配置宿主机原生lo之外的另一张网卡,我这里网卡名叫ens33

配置ens33

TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0

systemctl restart network 重启网卡

virt-install --name centos7.6 --ram 2048 --vcpus 2 --os-type linux --os-variant rhel7.6 --arch=x86_64 \
--network bridge=br0,model=virtio --disk path=/data/CentOS7.6_x86.qcow2,format=qcow2 --location /data/CentOS-7-x86_64-Minimal-1810.iso\
--console pty,target_type=serial\
--graphics vnc,listen=0.0.0.0,port=7788

注:网桥模式的虚拟机可以配置虚拟机网卡和宿主机br0同一网段IP,同时宿主机和个人电脑也是同一个网段,便可以达到个人电脑可以访问到虚拟机效果

#宿主机
BOOTPROTO=static
NAME=br0
DEVICE=br0
TYPE=Bridge
IPADDR=192.168.110.110
NETMASK=255.255.255.0(根据网络场景写)
#GATEWAY=(根据网络场景写)
ONBOOT=yes
--------------------
#虚拟机
BOOTPROTO=static
NAME=ens3
DEVICE=ens3
TYPE=Ethernet
IPADDR=192.168.110.111
NETMASK=255.255.255.0(根据网络场景写)
#GATEWAY=(根据网络场景写)
ONBOOT=yes

随后重启虚拟机网卡

我的环境(供参考)

宿主机br0:192.168.110.110

虚拟机ens3 :192.168.110.111,

个人电脑vm网卡:192.168.110.252

windows个人电脑上用vmware作为宿主机制作qcow2镜像_第2张图片

 左侧宿主机        右侧个人电脑

能ping通 此刻个人电脑可以访问到虚拟机

(三)bridge(网桥模式访问公网)

VMware宿主机的br0网卡变更为可以访问到公网的状态

可以在物理直连模式使用网关上网,我这里用的NAT模式

宿主机能够上网之后开始配置虚拟机上网

虚拟机也有多种情况可配置上网,NAT、直连网关等等

这里只记录桥接这一种情况

vi /etc/sysconfig/network-scripts/ifcfg-br0  如(二)写一下配置文件 ,不同点在于模式改为DHCP

BOOTPROTO=DHCP
NAME=br0
DEVICE=br0
TYPE=Bridge
ONBOOT=yes

接下来如(二)将vm自带的网卡ens33绑到br0    ↓

TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0

systemctl restart network重启网卡后

启动主机  详见(二)的virt-install bridge模式主机拉起命令

安装步骤这里就略过了,进入后查看ens3网卡配置

windows个人电脑上用vmware作为宿主机制作qcow2镜像_第3张图片

然后测试ping 8.8.8.8

windows个人电脑上用vmware作为宿主机制作qcow2镜像_第4张图片

network根据自己情况可以选择网桥或者其他模式;

5.根据自己情况对虚拟机定制一下配置,可以改改yum文件或者关闭selinux之类的。

6.清一下虚拟机历史记录history -c,然后poweroff关机即可

7.宿主机 用virsh list --all看虚拟机名字

virt-sysprep -d 虚拟机名 清一下机器信息

windows个人电脑上用vmware作为宿主机制作qcow2镜像_第5张图片

而后对镜像进行空隙压缩

virt-sparsify --compress /data/CentOS7.6_x86.qcow2 /data/centos.7.6.qcow2

virt-sparsify --compress /xxx/源镜像.qcow2 /xxxx/压缩生成镜像.qcow2

8.测试压缩后镜像是否能启动virt-install --virt-type kvm --name Centos7.6 --memory 2048 --vcpus=4  --import --disk path=/data/centos.7.6.qcow2,format=qcow2  --graphics vnc,listen=0.0.0.0,port=7788 --os-type=linux

(如提示ERROR    internal error: qemu unexpectedly closed the monitor: Cannot set up guest memory 'pc.ram': Cannot allocate memory
Domain installation does not appear to have been successful,则代表本宿主机启动虚拟机所需的内存不足,须将memory调小

测试了一下登陆没问题,这一步我的vnc卡住了..

在宿主机virsh shutdown 虚机名 可以给虚机关机,同理virsh start 主机名 可以把离线的主机拉起来

virt-sysprep -d 主机名 再清一哈

弹出VNC的login界面,即代表测试无误。

附vritsh基础指令

virsh list --all 可以查看当前主机上所有虚拟机

将虚机拉起:virsh start 虚机名————仅在虚机关机的情况下

关机:virsh shutdown 虚机名————正常关机

断电:virsh destroy 虚机名————可以理解为强制关机 直接把虚机干碎关机

删除虚拟机:virsh undefine 虚机名    将虚拟机从宿主机删除

9.到此qcow2就搞完了,拖出去用就可以。

windows个人电脑上用vmware作为宿主机制作qcow2镜像_第6张图片

你可能感兴趣的:(linux,云计算)