虚拟化(KVM)

虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

为什么不用vm?

VM相对于KVM技术,更臃肿一些,VM适合刚解除虚拟机的萌新。并且虚拟机化分为全虚拟,半虚拟化。

KVM安装

1.虚拟机配置

KVM简单操作与使用 - 图1

要添加一块额外硬盘

2.安装虚拟机

安装完成后使用命令查看内存

  1. free -h #-h 自动识别要显示的内存类型

KVM简单操作与使用 - 图2

  1. grep -Ei 'vmx|svm' /pro/cpuinfo #查看CPU是否开启虚拟化
  2. #命令本质是查看/pro/cpuinfo中,是否有vmx和svm字符

不需要管为什么显示的不一样,只要显示字符了即可。

KVM简单操作与使用 - 图3

3.挂载新硬盘

  1. lsblk #查看虚拟机磁盘情况
  2. #主要就是查看是否有这块sdb磁盘

KVM简单操作与使用 - 图4

将这块sdb磁盘格式化

  1. mkfs.ext4 /dev/sdb #将sdb磁盘格式化为ext4格式
  2. Proceed anyway? (y,n) y #同意即可
  3. blkid /dev/sdb #查看磁盘的信息

创建保存KVM虚拟机的文件夹,将磁盘挂载上去

  1. mkdir /kvm_data #在根目录创建文件夹
  2. mount -o loop /dev/sdb /kvm_data #挂载磁盘到该文件夹,-o loop 循环挂载,重启了不会取消挂载

4.关闭防火墙和selinux

  1. systemctl stop firewalld
  2. systemctl disable firewalld
  3. vi /etc/selinux/config #SELINUX=disabled 修改这一位置的内容

5.安装KVM需要用到的包

  1. #挂载本地yum源(省略)
  2. yum install -y virt-* libvirt bridge-utils qemu-img qemu-kvm

6.配置网卡与服务 ★

  1. cd /etc/sysconfig/network-scripts/ #进入网卡配置文件夹
  2. cp ifcfg-ens33 ifcfg-br0 #复制个NAT网卡配置文件,br0(桥接网卡)

br0网卡配置文件:

  1. TYPE=Bridge #TYPE改为 Bridge,代表桥接网卡
  2. PROXY_METHOD="none"
  3. BROWSER_ONLY="no"
  4. BOOTPROTO=static #静态
  5. DEFROUTE="yes"
  6. NAME=br0 #NAME和DEVICE都要改为br0
  7. DEVICE=br0
  8. ONBOOT="yes"
  9. IPADDR=192.168.174.110 #这里要添加NAT网卡的IPADDR,NETMASK等配置。
  10. NETMASK=255.255.255.0
  11. GATEWAY=192.168.174.2
  12. DNS1=8.8.8.8

ens33网卡配置文件:

  1. TYPE="Ethernet"
  2. PROXY_METHOD="none"
  3. BROWSER_ONLY="no"
  4. BOOTPROTO=static #静态
  5. DEFROUTE="yes"
  6. NAME="ens33"
  7. DEVICE="ens33"
  8. ONBOOT="yes"
  9. BRIDGE=br0 #BRIDGE这里填写为桥接网卡

(其实部分配置无需删除,只是删除了排版好一点。哪些要删,要改自行分辨。)

重启网卡与服务,查看网卡是否配置成功

  1. service network restart #重启网卡,如果这里显示错误,就是有问题
  2. ip a #查看网卡
  3. #正常来说,NAT网卡将没有IP,新建的br0网卡会有IP。
  4. lsmod | grep kvm #查看是否有服务启动
  5. systemctl start libvirtd #启动libvirt服务
  6. brctl show #使用brctl看到俩网卡,就代表成功

启动KVM

1.上传iso镜像

将所需要的的ISO镜像上传到/tmp文件夹下。

但是大多情况下,会上传到/root/文件夹下,所以通过下面命令进行转移

  1. cd #只输入一个cd,进入到家目录下
  2. mv CentOS-7-x86_64-DVD-1804.iso /tmp/ #转移镜像到/tmp/文件夹下

2.开始安装

  1. virt-install --name=test --memory=512,maxmemory=1024 --vcpus=1,maxvcpus=2 --os-type=linux --os-variant=rhel7 --location=/tmp/CentOS-7-x86_64-DVD-1804.iso --disk path=/kvm_data/test.img,size=10 --bridge=br0 --graphics=none --console=pty,target_type=serial --extra-args="console=tty0 console=ttyS0"

KVM简单操作与使用 - 图5

命令解释:

—name:指定虚拟机的名称。

—memory:指定分配给虚拟机的内存资源大小。

maxmemory:指定可调节的最大内存资源大小,因为KVM支持热调整虚拟机的资源。

—vcpus:指定分配给虚拟机的CPU核心数量。

maxvcpus:指定可调节的最大CPU核心数量。

—os-type:指定虚拟机安装的操作系统类型。

—os-variant:指定系统的发行版本。

—location:指定ISO镜像文件所在的路径,支持使用网络资源路径,也就是说可以使用URL。

—disk path:指定虚拟硬盘所存放的路径及名称,size则是指定该硬盘的可用大小,单位是G。

—bridge:指定使用哪一个桥接网卡,也就是说使用桥接的网络模式。

—graphics:指定是否开启图形。

—console:定义终端的属性,target_type 则是定义终端的类型。

—extra-args:定义终端额外的参数。

3.启动时的配置

当你启动成功,并且没有报错时,会出现以下界面。

英文自行翻译。自行翻译。自行翻译。自行翻译。自行翻译。自行翻译。自行翻译。

KVM简单操作与使用 - 图6

1.语言设置 2.时间设置 3.设置源 4.软件设置 5.设置磁盘 6.设置名称 7.网络结构 8.管理员密码

目前仅需设置,2,5,8。

输入2

2——1——2——63(ShangHai)

KVM简单操作与使用 - 图7

输入5

如果没特殊要求,三次“c” continue

输入8

输入后:自行翻译。自行翻译。自行翻译。自行翻译。自行翻译。自行翻译。自行翻译。

除了7和9,其他的”[]”里面带上 X 就可以继续了。此时按下b,静待安装

KVM简单操作与使用 - 图8

KVM基本管理

查看虚拟机列表

  1. virsh list #查看虚拟机列表
  2. virsh list --all #查看虚拟机列表,包括已经关闭的
  3. virsh console test #进入指定虚拟机
  4. virsh shutdown test #关闭虚拟机
  5. virsh start test #开启虚拟机
  6. virsh destroy test #强制停止
  7. virsh undefine test #彻底销毁虚拟机
  8. virsh autostart test #设置开机绑定
  9. virsh autostart --disable test #解除开启启动
  10. virsh suspend test #挂起
  11. virsh resume test #恢复

KVM的基础操作

1.克隆虚拟机

  1. virsh shutdown test #关闭test虚拟机
  2. virt-clone --original test --name test02 --file /kvm_data/test02.img
  3. #以test为基准,创建名称为test02的克隆机,文件为test02.img

KVM简单操作与使用 - 图9

命令解释:

—original:指定克隆源虚拟机。

—name:指定克隆后的虚拟机名字。

—file:指定目标虚拟机的虚拟磁盘文件。

查看虚拟机的配置文件 /etc/libvirt/qemu/ 是否增加了test02.xml

KVM简单操作与使用 - 图10

2.快照管理

Vmware中我们常用快照来功能,但是KVM中的RAW格式的虚拟磁盘不支持做快照,qcow2。

KVM简单操作与使用 - 图11

查看是否生成域快照。并且在Snapshot list中查看是否生成快照。或者使用命令:

  1. virsh snapshot-list test #查看快照列表
  2. virsh snapshot-current test #查看当前快照版本
  3. ls /var/lib/libvirt/qemu/snapshot/test/ #查看快照配置文件
  4. virsh snapshot-revert test 1639995456 #恢复指定快照
  5. virsh snapshot-delete test 1639995456 #删除指定快照

3.磁盘格式

查看虚拟磁盘格式

  1. qemu-img info /kvm_data/test.img

创建2GB的RAW格式磁盘,命令如下:

  1. qemu-img create -f raw /kvm_data/test_1.img 2G
  2. #Formatting '/kvm_data/test_1.img', fmt=raw size=2147483648

RAW格式的磁盘转换为qcow2格式

  1. qemu-img convert -O qcow2 /kvm_data/test_1.img /kvm_data/test_1.qcow2

test_1.img创建完成,可以查看一下。

KVM简单操作与使用 - 图12

将test02转换为raw模式

  1. qemu-img convert -O raw /kvm_data/test02.img /kvm_data/test02_2.raw

更改磁盘格式和文件路径,然后启动test02虚拟机

virsh edit test02 更改test02的XML配置文件

KVM简单操作与使用 - 图13

启动虚拟机test02,然后查看磁盘所属用户和组

此时的test02.img变为了qemu qemu 代表这个磁盘正在被使用。

KVM简单操作与使用 - 图14

4.磁盘扩容

磁盘有两种格式,一种是RAW,一种是qcow2。然后我们对两种磁盘格式进行扩容。

首先是RAW格式扩容

  1. qemu-img resize /kvm_data/test02_2.raw +2G
  2. #Image resized.
  3. qemu-img info /kvm_data/test02_2.raw #查看test02_2.raw信息

KVM简单操作与使用 - 图15

进入虚拟机,使用fdisk -l 查看磁盘

KVM简单操作与使用 - 图16

可以看到从刚开始设置的10变为12G了。现在我们开始分区。

此时我们开始进行分区,并且查看分区情况

KVM简单操作与使用 - 图17

除了扩容磁盘,我们还可以添加额外的磁盘。

  1. qemu-img create -f raw /kvm_data/test02_3.raw 5G
  2. #创建新的raw磁盘,存储空间为5G
  3. virsh destroy test02 #关闭虚拟机
  4. virsh start test02 #开启虚拟机

KVM简单操作与使用 - 图18

  1. #进入test02,然后查看磁盘
  2. virsh console test02

KVM简单操作与使用 - 图19

此时我们看到,多了一块qcow2格式磁盘。

5.调整CPU,内存,网卡

查看虚拟机配置信息

编辑虚拟机,根据图中进行修改最大内存,可用内存和最大cpu

重启虚拟机,查看配置信息

还可以进行动态修改:

  1. virsh setmem test 800m
  2. #动态修改内存
  3. virsh setvcpus test 2
  4. #动态修改cpu,只可以添加不可以减少
  5. virsh dominfo test
  6. #此时再通过命令查看配置信息
  7. virsh dumpxml test > /etc/libvirt/qemu/test.xml
  8. #将配置写入到配置文件中

KVM简单操作与使用 - 图20

查看网卡列表

  1. virsh domiflist test
  2. #增加一块新的网卡,并设置为NAT网络模式(virbr0类似VMware的VMnet8),这里如果写--source br0,则网络模式为桥接,命令如下:
  3. virsh attach-interface test --type bridge --source virbr0
  4. virsh dumpxml test > /etc/libvirt/qemu/test.xml

KVM简单操作与使用 - 图21

KVM简单操作与使用 - 图22

进入到test虚拟机,我们会发现多了一张网卡

KVM简单操作与使用 - 图23

6.迁移虚拟机

首先关闭虚拟机,然后查看虚拟机磁盘所在的目录

KVM简单操作与使用 - 图24

  1. virsh dumpxml test > /etc/libvirt/qemu/test03.xml
  2. #如果是远程机器,需要把该配置文件拷贝到远程机器上
  3. yum install -y rsync
  4. rsync -av /kvm_data/test.img /kvm_data/test03.img
  5. #如果是迁移到远程,则需要把该磁盘文件拷贝到远程机器上
  1. vi /etc/libvirt/qemu/test03.xml

KVM简单操作与使用 - 图25

KVM简单操作与使用 - 图26

最后重新定义虚拟机,并且查看虚拟机列表。此时就迁移成功

KVM简单操作与使用 - 图27