最近闲着没事,搞搞KVM虚拟化,弄得好可以在本地服务器装上个Windows,用于一些应急临时的使用。研究了两天,终于有点成果了,搞得也还不错。本次实验用了套娃,在本地建了一个CentOS的虚拟机,然后在虚拟机里面实验KVM,因为配置的问题,这次实验的虚拟系统用了xp,而且这次抛开了用CentOS7的想法,用了8.1,主要也想通过这次机会熟悉一下8.1的一个命令nmcli。废话不多说,下面开始我的安装记录。
准备工具
1.CentOS8.1
2.xp系统包
3.virtio的驱动包 ——>下载链接:点击此处进入驱动下载页
配置过程
安装KVM相关软件依赖
yum install libvirt virt-install qemu-kvm -y这里其实可以把yum改成dnf,因为在CentOS8开始,dnf开始取代yum,但是yum依然还在
关闭相关服务和端口
这里不再过多详细叙述,就是把防火墙(firewalld)和selinux关掉,教程:关于建站时候的相关端口(80和443等)和相关服务(selinux)。当然防火墙可以根据需求打开,但是这里先关闭,之后再按照需求启动。
启动libvirt服务
systemctl start libvirtd这里主要是启动服务,使得有关服务和命令可用
建立网桥
搭建网桥 nmcli方法(CentOS8)
先用ifconfig查看当前本地网卡的网卡名称,然后建立一个桥接用的网卡,最后利用网桥把桥接网卡和当前本地网卡连接上,就可以实现桥接网卡和本地网卡通网,假设我当前网卡名称是ens22,桥接网卡的名称是br0:
nmcli c add type bridge con-name br0 ifname br0 autoconnect yes
nmcli c add type bridge-slave ifname ens22 master br0此时会有一个网卡名称是:bridge-slave-ens22的,ens22是我本地网卡的名称。
最后启动网卡,CentOS8因为使用了nmcli,所以启动网络方法和以前不一样,需要先重置网卡信息才行,不过配置文件依然是存放在/etc/sysconfig/network-scripts/中,这里尽量让本地网卡使用静态IP。
启动网卡命令:
nmcli c reload //重置网卡信息
nmcli c up bridge-slave-ens22这里如过是使用ssh连接服务器或者虚拟机的话,会卡顿一下,因为在切换网卡,耐心等待即可。
再使用nmcli c命令查看一下,发现bridge-slave-ens22是绿色的证明连接上了。
这里细心的人会发现有一个virbr0网卡,这个网卡其实virbr0是 KVM 默认创建的一个 Bridge,其作用是为连接其上的虚机网卡提供 NAT 访问外网的功能。
virbr0 默认分配了一个IP 192.168.122.1,并为连接其上的其他虚拟网卡提供 DHCP 服务。
补充一条命令:
nmcli c down 网卡名称 //此命令是网卡关闭命令搭建网桥 brctl方法(CentOS7)
过程实际上和nmcli方法一样,不过有些系统还是内置brctl,而不是用nmcli,所以这里记录一下brctl的方法。
先检查系统是否有:bridge-utile包,没有就需要安装:
yum install -y bridge-utile接下来要创建一个桥接网卡信息,并配置静态ip,当然也可使用dhcp,但是为了后面可以使用远程协助,尽量使用静态ip:
在/etc/sysconfig/network-scripts/中创建一个ifcfg-br0文件:
vi /etc/sysconfig/network-scripts/ifcfg-br0输入以下内容:
DEVICE=br0
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=static
NAME=br0
IPADDR=ip地址
NETMASK=子网掩码
GATEWAY=网关
DNS1=DNS解析
DNS2=DNS解析
//ip地址,子网掩码,网关,DNS根据实际条件写保存退出,然后还需配置一下物理网卡,假设我们的物理网卡名称是ens22,然后进入ifcfg-ens22里面
vi /etc/sysconfig/network-scripts/ifcfg-ens22对照找到以下内容并修改:
BOOTPROTO=none
ONBOOT=yes接着删除或者用#注释掉下面的内容:
IPADDR=192.168.0.99
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=202.96.128.86
DNS2=8.8.8.8最后在末尾追加这句话:
BRIDGE=br0保存退出,重启一下网络服务或者重启一下电脑。
然后开始配置网卡桥接,具体过程和nmcli差不多,就是先创建网桥然后连接br0和物理网卡即可,此处物理网卡用ens22为:
创建网桥:
brctl addbr br0连接ens22和br0:
brctl addif br0 ens22这个时候就会卡一下网络,等待一下就行了。完成到了这里,brctl的桥接网络就算完成了。
创建虚拟机
创建虚拟机主要是用virt-install命令创建,virt-install命令用法->点击此处:virt-install命令集合,这里放上一条可以用的参考命令:
virt-install --name=xptest --ram=512 --vcpus cores=1,threads=1 --cdrom=/path/to/system's iso.iso --disk path=/path/to/disk,size=10,format=raw --network=default --graphics vnc,listen=0.0.0.0,port=6000 --noautoconsole --virt-type=kvm
其中--name指定了虚拟机实例的名称;--ram是内存大小,可以使用--memory,是一样的;--cdrom=和--disk path=后面的路径根据实际修改,其他请参考virt-install命令手册——>点击此处:virt-install命令集合
本命令已经直接创建虚拟磁盘了,当然也可以手动先创建,命令如下:
qemu-img create -f raw /path/to/vdisk.raw 10G //路径和空间大小需自定义安装虚拟机
操作方法
完成创建之后,就会自动进入安装,因为上面的命令使用的vnc远程,所以这里我们也用vnc,vnc里面输入本地服务器或者虚拟机ip和端口号进入虚拟机,记住一定是本地网卡的ip,因为这时候虚拟机没建立完成是没有ip的,上面的0.0.0.0只是允许所有用户远程的意思。因为这是个xp,只要按照windows的安装方法操作就行了。操作完之后关机,开始准备配网。
添加网卡信息
虚拟机安装完成之后,需要让我们上面配置的桥接网卡加进虚拟机里面才能让虚拟机内部联网。这里需要修改虚拟机xml配置文件,所以需要先把虚拟机关机,关机有两种方式,第一种是直接在虚拟机里面操作关机,第二种是命令关机,命令如下:
virsh shutdown xptest //虚拟机关机,xptest为虚拟机名称,可根据实际修改然后修改配置信息,命令如下:
virsh edit xptest //修改虚拟机配置文件,xptest为虚拟机名称,可根据实际修改找到如下内容:
<interface type='network'>
<mac address='52:54:00:4c:e7:87'/>
<source network='default'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>修改成如下:
<interface type='bridge'>
<mac address='52:54:00:4c:e7:87'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>其中<source bridge='br0'/>的br0是你的桥接网卡名称,根据上面的步骤实际来写,不一定和我一样是br0
完成之后保存退出,保存退出和vi一样。此时不需要开机,先看完下面一步。
安装相关驱动
windowsxp安装完成之后,是不会有网卡的,因为驱动还没装上,但是如果完成了上一步修改网卡信息之后,会在任务管理器会出现黄色感叹号,表示有一个以太网控制器加入,这时候掏出我们准备的virtio.iso挂载上去,然后在虚拟机里面安装,首先先挂载iso,这里同样需要修改虚拟机的xml文件,所以上一步不需要开机。那么同样的方法进入配置文件之后,找到如下内容:
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hdb' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='0' target='0' unit='1'/>
</disk>在<driver>和<target>中间增加一条:<source file='/path/to/virtio.iso'/>即可。
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='/path/to/virtio.iso'/>
<target dev='hdb' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='0' target='0' unit='1'/>
</disk>然后重新启动虚拟机,命令如下:
virsh start xptest //虚拟机开机,xptest为虚拟机名称,可根据实际修改这时候就会在虚拟机内部出现了加载光盘,然后到任务管理器,会发现有一个以太网控制器是黄色感叹号,给这个设备添加驱动即可。这里不多叙述如何安装windows驱动
最后配置
最后对系统进行软件安装,缺少的驱动安装,服务安装,网络IP配置即可,这里尽量都使用静态IP,可以使用远程协助接入,不需要ip+端口。
补充几条常用命令
virsh reboot //虚拟机重启
virsh shutdown //虚拟机关机
virsh start //虚拟机开机
virsh destroy //虚拟机域删除
virsh undefine //虚拟机定义删除
virsh edit //修改虚拟机配置文件这里需要注意的是,destroy之后一定要undefine一下,要不然虚拟机的名称还在,就不能用同样的名字了。
virsh命令集合
总结
其实看着文章内容这么少,实际有很多内容,例如命令其实有很多参数要细讲是什么意思,但是因为这样文章内容会很乱,所以我把它独立出来,把每一个命令的具体参数内容都扔到了独立的文章上,可以直接翻出来参考,其他也没啥好讲的了。
参考文献
1.使用virt-install创建虚拟机
2.nmcli 命令的基本使用
3.linux中nmcli命令使用及网络配置
4.理解 virbr0
5.KVM虚拟化使用详解
6.KVM安装及配置详解
7.Centos8如何配置网桥
8.QEMU虚拟机中如何安装Virtio驱动
9.KVM 安装windows XP 系统
10.centos7 kvm和设置桥接br0




0 条评论