本篇为新手入门向的基础教程,详细命令可参考:
libvirt命令帮助手册——筑梦之路_筑梦之路的博客-CSDN博客
准备环节:
一个VNC工具,强烈建议用mobax
一个vmware
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适用场景更广一些,和宿主机共享同一网络,可操作性性更高
(一)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
然后配置宿主机原生lo之外的另一张网卡,我这里网卡名叫ens33
配置ens33
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,同时宿主机和个人电脑也是同一个网段,便可以达到个人电脑可以访问到虚拟机效果
随后重启虚拟机网卡
我的环境(供参考)
宿主机br0:192.168.110.110
虚拟机ens3 :192.168.110.111,
个人电脑vm网卡:192.168.110.252
左侧宿主机 右侧个人电脑
能ping通 此刻个人电脑可以访问到虚拟机
(三)bridge(网桥模式访问公网)
将VMware宿主机的br0网卡变更为可以访问到公网的状态
可以在物理直连模式使用网关上网,我这里用的NAT模式
宿主机能够上网之后开始配置虚拟机上网
虚拟机也有多种情况可配置上网,NAT、直连网关等等
这里只记录桥接这一种情况
vi /etc/sysconfig/network-scripts/ifcfg-br0 如(二)写一下配置文件 ,不同点在于模式改为DHCP
接下来如(二)将vm自带的网卡ens33绑到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就搞完了,拖出去用就可以。
-------------------------------
这里用2008r2的标准版做例子
可以看到这里网卡和硬盘都用的virtio模式↓
并且再在挂载安装cdrom的iso的基础上,需要挂载virtio驱动的镜像,以在安装过程中加载virtio驱动(要不一会连驱动器都认不出来),这一行↓
需要注意的是virtio的新版本不支持如:win2008、XP...等老版本系统,如果是要给老版本装如windows2008这种则需要下载如:virtio-win-0.1-81等老版本。
下载地址:Index of /groups/virt/virtio-win/deprecated-isos/stable
还有比较新的:
Index of /groups/virt/virtio-win/direct-downloads/archive-virtio
然后拉起来就OK
这里我的报错了,提示驱动器里没有boot驱动,一般是没有加载到 系统.iso导致的,和启动顺序有关系
于是先把机器关一下
virsh destroy 虚机名
(因为多驱动器的关系,关一次可能关不上,隔几秒再关一次就好啦)
然后virsh edit 虚拟机名
观察devices的disk启动顺序
可以看到包含系统.iso的dev顺序是hdb,而hda则是virtio.iso,也就是说会先读virtio.iso,但是里面没有系统,所以报错是正常的。
由此,我们需要修改一下顺序(这里我改过,然后保存了,再次打开了他上下顺序颠倒了一下)
再修改boot的模式由hd变更为cdrom(因为这里挂载iso是以cdrom挂载的):
变更为
再把机器拉起来
virsh start 虚拟机
vnc连一下,现在可以正常加载系统了
到选择 选择安装系统位置 这一步时,点击加载驱动程序
选择 浏览 找到我们挂载的virtio所在的盘符
选取与自己系统版本对应的目录以及操作系统位数(这里我是win2008R2 x64位所以会选win7/amd64)
对应关系我是从这看的..
1325078 – Add TargetOSVersion to driver inf files
加载scsi的然后 下一步,等一会
就可以看到盘啦,正常分区加载系统就ok
等系统装好后,进设备管理器更新一下还没被加载的驱动。
下面这两个都更新加载一下
手动选择virito的盘内,自己对应的驱动目录
安装
这里因为用到的这三种,装好之后可以看到这三个
然后关机
cdrom还原回hd
disk部分把两个cdrom的iso对应的<disk>内容删掉就OK
再把机器拉起来看一下有没有报错,以及两个iso的cdrom没有自动挂载上就ok了