本篇为新手入门向的基础教程,详细命令可参考:
libvirt命令帮助手册——筑梦之路_筑梦之路的博客-CSDN博客
准备环节:
1,电脑上装个vmware,并且用镜像起个linux系统。建议单独给这个台机器再单独挂个50G的盘把一会起虚机用镜像放里面(注意在处理器那里打开虚拟化)
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一个wget,install -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
其中网卡启动时候使用default比较无脑就带过了
重点在bridge适用场景更广一些,和宿主机共享同一网络,可操作性性更高
启动虚拟机(蓝色背景文字,请根据自己路径或情况写)
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端口都可以,下文就不赘述了。
本段网桥配置参考版权声明: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
左侧宿主机 右侧个人电脑
能ping通 此刻个人电脑可以访问到虚拟机
将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网卡配置
然后测试ping 8.8.8.8
network根据自己情况可以选择网桥或者其他模式;
5.根据自己情况对虚拟机定制一下配置,可以改改yum文件或者关闭selinux之类的。
6.清一下虚拟机历史记录history -c,然后poweroff关机即可
7.宿主机 用virsh list --all看虚拟机名字
virt-sysprep -d 虚拟机名 清一下机器信息
而后对镜像进行空隙压缩
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就搞完了,拖出去用就可以。