KVM虚拟化

实验材料
centos7(最好有图形化界面)一台,centos7或其他镜像一个,

准备工作

1)安装方式

首先开启虚拟机的虚拟化功能

centos7 kvm虚拟机打开方法 centos7安装kvm虚拟化_centos7部署KVM虚拟化平台


我这里演示一些没有图形界面的操作

Xshell连接,然后配置yum,mount就不说了

[root@CentOS7-02 ~]# yum groupinstall -y "GNOME Desktop"

(上面这部是安装图形化界面,如果你有就不用执行这条了)

有的包会提示已安装不用管他

[root@CentOS7-02 ~]# yum -y install qemu-kvm

[root@CentOS7-02 ~]# yum -y install qemu-kvm-tools

[root@CentOS7-02 ~]# yum -y install virt-install

[root@CentOS7-02 ~]# yum -y install qemu-img

[root@CentOS7-02 ~]# yum -y install bridge-utils

[root@CentOS7-02 ~]# yum -y install libvirt

[root@CentOS7-02 ~]# yum -y install virt-manager

2)查看CUP虚拟化

这一步,一般真的服务器才可以看到,如果你是vm虚拟机做的,只要打开了上面那个虚拟化功能就行了

intel类型
[root@CentOS7-02 ~]# cat /proc/cpuinfo | grep vmx
AMD类型
[root@CentOS7-02 ~]# cat /proc/cpuinfo | grep smv
具体你是那种类型,取决你的真机,
真机中"计算机右机,属性查看, 处理器那项"

3)图形界面
刚刚安装了图形界面,现在要优化一下,要执行如下命令,要不然启动时会报错的
[root@CentOS7-02 ~]# ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target (默认启动将变为图形界面)
重启后进行简单配置就可以进入图形界面了
它会让创建用户,可以随意创建
打开一个终端
[zhangsan@CentOS7-02 ~]$ su root (下面输入原来的root密码
密码:

4)开启libvirtd服务,需要这个服务支持
[root@CentOS7-02 ~]# systemctl start libvirtd
[root@CentOS7-02 ~]# systemctl enable libvirtd

5)设置KVM网络

有两种模式

用户模式:NAT方式,可以访问外网但是,外部无法访问虚拟机网络

桥接模式: 独立主机,外部可以访问内部虚拟机,需要有限网卡支持,一般网卡都支持

这里使用桥接模式

[root@CentOS7-02 ~]# ifconfig (查看现在使用的网卡名称,我这是ens33)

[root@CentOS7-02 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

滑倒最后添加一项

BRIDGE=br0

[root@CentOS7-02 ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0

添加如下配置项,除了ip网关什么的可以改其他,不要乱写,最按照我这里来

TYPE=BridgeBOOTPROTO=static
PEERNS=yes
PEERROUTES=yes
IPV4_FALLURE_FATAL=no
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.100.100
NETMASK=255.255.255.0
GATEWAY=192.168.100.254

[root@CentOS7-02 ~]# /etc/init.d/network restart

会发现Xshell断了,因为ip改变了,当然如果上面那个配置文件中的ip和你原来的一样就不会断掉

centos7 kvm虚拟机打开方法 centos7安装kvm虚拟化_centos7KVM配置_02


重新连新的网卡地址100.100就ok

KVM新建虚拟机

首先关掉虚拟机,添加一块30G磁盘(一会用来做存放虚拟机的磁盘)
[root@CentOS7-02 ~]# fdisk -l (就可以看到新的磁盘名称,一般第二块都是“ /dev/sdb")
[root@CentOS7-02 ~]# fdisk /dev/sdb
输入n
p (主分区)
后面一直回车,当然我这里是使用了全部磁盘空间,你可以自己设置
w (保存退出)

[root@CentOS7-02 ~]# mkfs -t xfs /dev/sdb1 (格式化,)
[root@CentOS7-02 ~]# mkdir /kvm (这是一个挂载点)
[root@CentOS7-02 ~]# vim /etc/fstab (添加如下)
/dev/sdb1 /kvm xfs defaults 0 0
[root@CentOS7-02 ~]# reboot
[root@CentOS7-02 ~]# df -hT
/dev/sdb1 xfs 30G 33M 30G 1% /kvm
[root@CentOS7-02 ~]# mkdir /kvm/disk (存放虚拟机磁盘文件位置,磁盘文件一会创建)
[root@CentOS7-02 ~]# mkdir /kvm/iso (存放iso镜像文件的位置)

使用Xshell连接,进入/kvm/iso目录中,包centos7镜像拖入,速度较慢请耐心等待

进入到图形化界面中,打开一个终端

[root@CentOS7-02 ~]# virt-manager (打开图形化管理软件)

名称下面有个 GEMU/KVM 双击这个

存储,然后按我下图来

centos7 kvm虚拟机打开方法 centos7安装kvm虚拟化_KVM虚拟化_03


然后,记得下面这部要点击完成

centos7 kvm虚拟机打开方法 centos7安装kvm虚拟化_centos7部署KVM虚拟化平台_04


然后以相同的方法,就是名字有变化,创建一个叫centos7_iso名字类型还是默认,

路径填写/kvm/iso

(这个是一会安装系统要的的镜像目录位置,镜像我们前面已经提前拖进去了)创建存储池按下图来就行,这个只创建一个

centos7 kvm虚拟机打开方法 centos7安装kvm虚拟化_centos7 kvm虚拟机打开方法_05


上面记得按完成

然后关掉那个连接详情的总窗口打开到最初的那个界面,如果没有可以再次执行

[root@CentOS7-02 ~]# virt-manager

点击小电脑图标

centos7 kvm虚拟机打开方法 centos7安装kvm虚拟化_KVM_06


按我下图来,点击浏览

centos7 kvm虚拟机打开方法 centos7安装kvm虚拟化_centos7KVM配置_07


这步简单,我就不给图片了,内存和CUP可以自定义,CPU一般是一个,点击完成,进到下图界面

勾选“选择或创建自定义,管理,选择刚刚的存储池”

centos7 kvm虚拟机打开方法 centos7安装kvm虚拟化_centos7KVM配置_08


名称自定义,你也可以勾选“在安装前自定义配置"最一些简单的配置,我这里直接点击完成"

然后等待一会直接弹出centos7安装界面,就和光盘安装一样了

选择最长的那个,是图形界面安装系统

这里因为是测试,所以你安装的时候软件选择就选择最小安装就可以了

等待安装成功即可

使用kvm命令集管理虚拟机

1.KVM基本功能管理

1)查看命令帮助

[root@CentOS7-02 ~]# virsh -h

2)查看KVM的配置文件存放目录

[root@CentOS7-02 ~]# ls /etc/libvirt/qemu (这个位置不会变,和前面的配置的位置没有关系)

centos7.0.xml networks (centos7.0.xml是虚拟机系统实例的配置文件)

3)查看虚拟机状态

[root@CentOS7-02 ~]# virsh list --all

Id 名称 状态----------------------------------------------------
1 centos7.0 running

4)虚拟机的开机和运行

要确保acpid服务运行 acpid左右是KVM的进程,只要安装了KVM服务一般没有问题

[root@CentOS7-02 ~]# virsh shutdown centos7.0 (后面的是虚拟机的名字)

域 centos7.0 被关闭

[root@CentOS7-02 ~]# virsh start centos7.0

域 centos7.0 已开始

5),有时候普通关闭会关不上,可以通过电源强制关闭虚拟机

[root@CentOS7-02 ~]# virsh destroy centos7.0

域 centos7.0 被删除

6)通过配置文件启动虚拟机系统实例

[root@CentOS7-02 ~]# virsh list --all (确保虚拟机是关闭状态)

Id 名称 状态----------------------------------------------------
- centos7.0 关闭

如果关不上运行这个命令

[root@CentOS7-02 ~]# virsh destroy centos7.0

[root@CentOS7-02 ~]# virsh create /etc/libvirt/qemu/centos7.0.xml

域 centos7.0 被创建(从 /etc/libvirt/qemu/centos7.0.xml)

[root@CentOS7-02 ~]# virsh list --all

7)挂起虚拟机

[root@CentOS7-02 ~]# virsh suspend centos7.0

域 centos7.0 被挂起查看

[root@CentOS7-02 ~]# virsh list --all

Id 名称 状态

----------------------------------------------------

4 centos7.0 暂停

8)恢复虚拟机

[root@CentOS7-02 ~]# virsh resume centos7.0

域 centos7.0 被重新恢复

[root@CentOS7-02 ~]# virsh list --all

9)配置虚拟机实例伴随宿主机自动启动

[root@CentOS7-02 ~]# reboot (等系统起来,不要手动打开虚拟机,查看)

[root@CentOS7-02 ~]# virsh list --all

Id 名称 状态----------------------------------------------------
1 centos7.0 running

[root@CentOS7-02 ~]# cd /etc/libvirt/qemu/autostart/ (这个目录中是要开机自启的项)

[root@CentOS7-02 autostart]# ls

centos7.0.xml

10)导出虚拟机配置

[root@CentOS7-02 autostart]# virsh dumpxml centos7.0 > /etc/libvirt/centos7.2.xml

11)虚拟机删除与添加,通过配置文件

centos7 kvm虚拟机打开方法 centos7安装kvm虚拟化_centos7 kvm虚拟机打开方法_09


12)修改虚拟机配置信息(内存大小)

[root@CentOS7-02 qemu]# virsh shutdown centos7.0

[root@CentOS7-02 qemu]# vim /etc/libvirt/qemu/centos7.0.xml

centos7 kvm虚拟机打开方法 centos7安装kvm虚拟化_KVM虚拟化_10


[root@CentOS7-02 qemu]# virsh start centos7.0

你也可以去图形界面,虚拟机运行时的框,那点击那个小灯泡改,改磁盘也是如下

centos7 kvm虚拟机打开方法 centos7安装kvm虚拟化_KVM_11

2.KVM文件管理
1)查看当前磁盘格式
[root@CentOS7-02 ~]# qemu-img info /kvm/disk/centos7_kvm.qcow2
image: /kvm/disk/centos7_kvm.qcow2file format: qcow2
virtual size: 9.0G (9663676416 bytes)
disk size: 1.2G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: true
2)转换格式,适用于上面的磁盘raw格式转换qcow2,不可以倒着转换,如果你的也是qcow2的就不要执行,因为已经是qocw2的了.img文件不会存在的
[root@CentOS7-02 ~]# qemu-img convert -f raw -o qcow2 /kvm/disk/ceontos7.img /kvm/disk/centos7.qocw2
3)virt-cat命令,类似cat命令
[root@CentOS7-02 ~]# virt-cat /kvm/disk/centos7_kvm.qcow2 /etc/sysconfig/grub
GRUB_TIMEOUT=5GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
3)virt-edit,可以直接编辑KVM虚拟机中的文件,如下是DNS文件
[root@CentOS7-02 ~]# virt-edit -a /kvm/disk/centos7_kvm.qcow2 /etc/resolv.conf
4)查看虚拟机磁盘信息
[root@CentOS7-02 ~]# virt-df -h centos7.0
文件系统 大小 已用空间 可用空间 使用百分比%centos7.0:/dev/sda1 1014M 92M 922M 10%
centos7.0:/dev/centos/root 7.1G 864M 6.2G 12%

3.虚拟机克隆
1)查看虚拟机状态,保证虚拟机是关闭状态
[root@CentOS7-02 ~]# virsh list --all
2)从centos7.0克隆一个叫centos7.1,-f指定克隆后磁盘放的位置
[root@CentOS7-02 ~]# virt-clone -o centos7.0 -n centos7.1 -f /kvm/disk/centos7.1.qcow2
3)查看状态
[root@CentOS7-02 ~]# virsh list --all
Id 名称 状态----------------------------------------------------
- centos7.0 关闭
- centos7.1 关闭
4) 启动克隆机7.1
[root@CentOS7-02 ~]# virsh start centos7.1
域 centos7.1 已开始

4.虚拟机快照

KVM虚拟机使用快照功能,磁盘必须是qcow2格式,

1)对centos7.0创建快照

[root@CentOS7-02 ~]# virsh shutdown centos7.1 (关闭克隆机)

[root@CentOS7-02 ~]# virsh start centos7.0

我这是开机快照,你也可以把虚拟机关机做快照

[root@CentOS7-02 ~]# virsh snapshot-create centos7.0

已生成域快照 1568237944

2)查看虚拟机快照版本

[root@CentOS7-02 ~]# virsh snapshot-current centos7.0

centos7 kvm虚拟机打开方法 centos7安装kvm虚拟化_KVM虚拟化_12


3)列出所有快照

[root@CentOS7-02 ~]# virsh snapshot-create centos7.0 (又做了一个快照,方便看效果)

[root@CentOS7-02 ~]# virsh snapshot-list centos7.0

名称 生成时间 状态------------------------------------------------------------
1568237944 2019-09-12 05:39:04 +0800 running
1568238564 2019-09-12 05:49:24 +0800 running

4)恢复至1568237944 (这里的号我们的是肯定不一样的,按你们的快照列表来)

[root@CentOS7-02 ~]# virsh snapshot-revert centos7.0 1568237944

centos7 kvm虚拟机打开方法 centos7安装kvm虚拟化_KVM_13


5)删除快照,如果你现在是恢复了那个快照了的,删除了快照不影响你使用现在的虚拟机

centos7 kvm虚拟机打开方法 centos7安装kvm虚拟化_centos7 kvm虚拟机打开方法_14

实验完毕