centos7之KVM虚拟化平台
一、环境介绍:
centos7.4
172.16.5.238
vm虚拟机(BIOS打开VT功能,vmware station打开虚拟化选项)
检查是否支持虚拟化。
cat /proc/cpuinfo | grep vmx
二、部署
1、配置网卡。
ifcfg-ens33,本地宿主机网卡除了正常配置外,只需要加一个BRIDGE=br0就行。
2、新建一个ifcfg-br0网卡。
#touch ifcfg-br0
文件中写入如下内容,把宿主机的ip,mask,gateway,dns都原封不动移动过来,再新加其它几个选项。
3、重启网卡。
#systemctl restart network.service
4、验证(reboot重启完后查看)。
5、根据个人需求,安装需要的程序。
yum install -y wget lrzsz gcc gcc-c++ vim
6、安装kvm
yum -y install qemu-kvm qemu-kvm-tools qemu-img virt-manager libvirt libvirt-python libvirt-client bridge-utils virt-viewer virt-install
启动并设置开机自启动
systemctl start libvirtd systemctl enable libvirtd
7、查看模块
lsmod | grep kvm
8、关闭firewalld和selinux,如果有iptables的话,先关闭。
9、新建两个目录存放iso文件和image文件。
mkdir -p /data/iso mkdir -p /data/vm-image
10、开始安装虚拟机,这里我们安装的是centos7.4
virt-install --name centos7.4 --ram 1024 --vcpus=1 --disk path=/data/vm-image/centos7.4.img,size=5 --network bridge=br0 --cdrom /data/iso/CentOS-7-x86_64-DVD-1708.iso --vnclisten=172.16.5.238 --vncport=6900 --vnc
提示如下的时候,需要打开vnc客户端软件连接。
1 virt-install 2 --name centos7.4 #虚拟机名称 3 --ram 1024 #内存大小 4 --vcpus=1 #CPU个数 5 --disk path=/data/vm-image/centos7.4.img,size=5 #系统存放位置和硬盘大小(GB) 6 --network bridge=br0 #桥接网卡信息 7 --cdrom /data/iso/CentOS-7-x86_64-DVD-1708.iso #iso文件位置 8 --vnclisten=172.16.5.238 #vnc连接地址 9 --vncport=6900 #vnc连接端口 10 --vnc #连接方式
注意:
关闭虚拟机
virsh shutdown +域名
这个时候我在virsh list发现 这个虚拟机还是在运行的,并没有关闭。
我们需要安装一个acpid的服务并启动它,什么是ACPI?
ACPI是Advanced Configuration and PowerInterface缩写,高级配置和电源管理接口。
acpid中的d则代表daemon。Acpid是一个用户空间的服务进程,它充当linux内核与应用程序之间通信的接口,负责将kernel中的电源管理事件转发给应用程序。
Acpid是一个用户空间的服务进程,它充当linux内核与应用程序之间通信的接口,负责将kernel中的电源管理事件转发给应用程序。
其实,说明了就是通过这个服务来执行电源关闭的动作,这也是为什么我们执行virsh shutdown +域名无法关机的原因。
所以,我们需要在子系统里面安装acpid,启动服务器后重启一下子系统,这样我们在virsh控制台就可以reboot和shutdown了,如果是windows,需要在宿主机上安装acpid,但是是能用shutdown命令,reboot是不可以的。不过可以用destory这个命令。
#yum install -y acpid #/etc/init.d/acpid start或者service start acpid
如果此时我没法进入子机安装acpi协议的话,那么就无法关掉该虚拟机,此时可以用下面这种方法。
#virsh destroy +域名
这种方式的关闭,是一种删除的方式,只是在virsh list中删除了该虚拟机,更多的时候我们习惯用这个命令关机
11、安装vncviewer,地址https://www.realvnc.com/en/connect/download/viewer/
12、连接虚拟机
vnc连接上虚拟机后,下面是按照操作系统的事情了,这里不再熬述。
1 # virsh list //查看正在运行 2 # virsh list --all //查看所有 3 # virsh start benet //启动 4 # virsh shutdown benet //关机 5 # virsh destroy benet //强制关机 6 # virsh autostart benet //随机启动 7 # virsh suspend benet //挂起 8 # virsh resume benet //恢复 9 # virsh undefine benet //删除 10 # virsh edit benet //编辑、
13、增加硬盘
热添加(虚拟机必须是开机的状态下添加,添加成功后,重启就会失效。)
1、查看当前硬盘名称,如下,只有/dev/vda这个一个5GB的硬盘,我们下面给他增加一块3GB的硬盘。
2、进入img存放的目录,这里是/data/vm-image/,然后创建一个硬盘文件。
qemu-img create -f raw /data/vm-image/centos7.4_disk.img 3G
3、添加硬盘。
virsh attach-disk centos7.4 /data/vm-image/centos7.4_disk.img vdb --cache none
验证;
冷添加(虚拟机是关机状态下添加,常用)
qemu-img create -f qcow2 /data/vm-image/centos7.4_disk.img 4G
qcow2是我们提前看了安装操作系统完成后,对应操作系统的xml文件中disk区域type的名称。后面的路径就是我们要把这个硬盘文件存放到哪里,叫什么名字。最后面的4G是我们要添加的硬盘容量。
修改对应操作系统的xml文件(如若不熟悉可以提前cp一份,备份)
vim /etc/libvirt/qemu/centos7.4.xml
在文件中第一块硬盘的下面添加如下内容(注意里面的内容全部是从上面复制下来,删除开头是<address这一行,注意type的名称一定要和上面创建时候的-f后面选项对应上,file=硬盘文件的绝对路径和名称,dev是我们要加的第几块硬盘,这里我加的是第二块,所以是vdb,为什么是vd呢,看上面第一块硬盘的名称是vda,那第二块就是vdb,千万别自作主张写个sdb或者hdb。):
<disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/data/vm-image/centos7.4_disk.img'/> <target dev='vdb' bus='virtio'/> </disk>
修改完成后注意,一定要重启libvirtd服务才会生效。
systemctl restart libvirtd
开机启动虚拟机,查看
剩下的就不在熬述,结果如下图:
14、克隆
首先需要将被克隆的服务器关机,被克隆的机器没有增加过硬盘。
1 virt-clone 2 --original centos7.4 #被克隆服务器明后才能 3 --name centos7.4.bak #克隆后的服务器名称 4 -f /data/vm-image/centos7.4-bak #被克隆服务器存放位置 5 --force #强制
virt-clone --original centos7.4 --name centos7.4.bak -f /data/vm-image/centos7.4-bak --force
查看,一个克隆成功的操作系统已经完成,他也有xml和img文件。这里我们需要修改xml文件。
修改该xml文件,如下图克隆完成后的xml文件的连接信息,可以确定port肯定不能是自动。
修改为。
然后重启libvirtd服务,否则连接端口肯定就从5900开始了。
15、迁移
冷迁移:
基本原理就是把这个虚拟机的xml文件和img传到其它虚拟机里面,然后修改xml文件中的ip和端口等其它文件,如果你有磁盘文件,也需要一起cp到目标服务器上。
可以用domblklist centos7.4(domblklist 虚拟机名称)查看对应虚拟机的img文件(包括系统文件和硬盘文件等)
定义虚拟机。
#virsh define /etc/libvirt/qemu/centos7.4.xml
热迁移:
https://blog.csdn.net/taiyang1987912/article/details/47973479
a、首先用到的肯定是img和xml文件,先将这两个文件传动需要恢复的KVM主机上面。
16、增加网卡
a、首先我们需要在xml文件中复制一份interface的内容,并修改。
b,重启libvirtd服务。
c、使用ip a命令查看是否添加成功,如下,mac地址就是我上面在xml文件中写的那个mac地址。
d、使用命令nmcli conn查看网卡的UUID
e、cp ifcfg-eth0 到ifcfg-eth1。
f、这里是ifcfg-eth1网卡信息,注意网卡名称和UUID的修改。
g、添加成功