目录
- kvm介绍
- kvm虚拟化安装
- kvm虚拟化相关信息
- kvm配置桥接接口
- 手动安装虚拟机
- 虚拟机管理命令
- 虚拟机快照
kvm介绍
1.kvm(kernel-based virtual machine):基于内核的虚拟机,实际上它是linux内核的一个模块。
inter cpu---->vmx
amd cpu---->svm
2.kvm架构
(1)virt-manager:用来管理vm的GUI/CUI用户接口,它使用libvirt API调用vm的各项功能。
(2)libvirt:工具集及接口
(3)qemu:kvm内核模块交互的模拟器,处理多种客户机系统请求的I/O,一个qemu进程对应一个客户机系统。
(4)kvm模块:用于处理vm exits和vm entry指令
(5)linux内核:处理客户机系统调度
kvm虚拟化安装
yum group install "Virtualization Client" "Virtualization Hypervisor" "Virtualization Tools" -y
Virtualization Client #虚拟化客户端
Virtualization Hypervisor #虚拟化核心套件
Virtualization Tools #虚拟化工具
安装步骤:
在安装kvm之前先新建一台虚拟机,内存8G,硬盘50G,两个处理器,勾选虚拟化功能。
可以发现虚拟机是支持vmx的
配置yum仓库
开始安装kvm一组软件
注意,可以使用 yum group info 指令查看组件信息。
kvm虚拟化相关信息
1.服务名称: libvirtd
2.虚拟化核心: qemu/kvm
3.虚拟化存储目录(虚拟机硬盘):/var/lib/libvirt/images/
test.qcow2
4.虚拟化硬件信息: /etc/libvirt/qemu/test.xml
kvm配置桥接接口
以桥接的方式搭建虚拟机网络,优势在于可以将虚拟机看作是与主机同等地位的服务器。
配置完成
手动安装虚拟机
首先要明确在安装完虚拟化组件之后,libvirtd服务就开启了。
如果将服务libvirtd关闭,仍可以使用virt-manager虚拟机控制器,但是不能新建虚拟机了。
1.以光盘方式新建虚拟机
注意如果要安装图形的话,内存一定要大于768M。
同样硬盘也不能小于6G,否则图形安装不上。
设置虚拟机的名字,在安装前进行硬件检测,使用桥接模式。
将光盘调到第一位,其他选择默认即可,这里注意网卡和硬盘都是虚拟I/O。
报错,虚拟机不让我们使用光盘安装。
2.以网络方式进行安装
(1)配置dhcp服务器
(2)配置vsftpd服务
(3)安装lftp
(4)关闭selinux
(5)关闭防火墙
(6)测试
(7)新建虚拟机
安装成功,使用root密码可以登录系统。
补充:进入/etc/libvirt/qemu目录,我们可以看到test.xml文件,这个文件保存了虚拟机test的硬件信息,这个文件很小。
进入/var/lib/libvirt/images目录,可以看到test.qcow2文件,这是虚拟机test的硬盘,这个文件很大。
虚拟机管理命令
1.virt-viewer test #显示虚拟机test
2.virt-manager #打开虚拟机控制器
3.virsh list #列出运行的虚拟机
4.virsh list --all #列出所有的虚拟机
5.virsh start test #开启虚拟机
6.virsh shutdown test #正常关闭虚拟机
7.virsh destroy test #断电关闭虚拟机
8.virsh define test.xml #通过硬件信息文件恢复虚拟机
9.virsh create test.xml #通过硬件信息文件打开虚拟机
10.virsh undefine test #删除硬件信息文件
命令展示:
(1)virt-viewer test
(2)virt-manager
(3)virsh list和virsh list --all
(4)virsh shutdown test
shutdown表示正常关闭虚拟机,会被阻塞。
(5)virsh start test
(6)virsh destroy test
destroy表示断电关闭虚拟机,不会被阻塞,关闭的速度比shutdown快。
(7)virsh undefine test
发现虚拟机test的硬件信息已被删除
(8)virsh create test.xml
使用/mnt下的test.xml文件来打开虚拟机,必须要将硬件资源test.qcow2放到目录/var/lib/libvirt/images/下。要注意的是,create只是打开虚拟机,而不是恢复虚拟机,当我们把打开的虚拟机关闭后就找不到了。
(9)virsh define test.xml
这样就是永久恢复
虚拟机快照
1.快照的含义: 通过快照,我们可以对这个虚拟机进行一系列操作,而不破坏原来的虚拟机,如果一不小心将虚拟机快照弄坏了,还可以根据原虚拟机创建出新的快照。(更改在快照上,透过快照实际看的是母盘)
补充: 快照和克隆的对比
克隆相当于复制,得到一个全新的虚拟机,因此占用空间大。而快照相当于软链接,是透过快照看母盘(test.qcow2文件),只有更改在快照上,因此占用空间小,更改多少就占用多少。
2.快照的制作:
(1)命令方式
-f:指定类型 -b:备份
qemu-img create -f qcow2 -b /var/lib/libvirt/images/test.qcow2 /var/lib/libvirt/images/node.qcow2
实验步骤:
可以发现实际看的是test.qcow2文件,并且node.qcow2大小只有196K,远远小于test.qcow2文件大小。
现在将快照node导入
导入成功之后将node的根和boot目录删掉,关闭node再开启时发现系统启动失败了。
我们将node.qcow2删掉,再进行快照,关闭node再重新启动,发现node又可以使用了。
(2)脚本方式
导入快照的时候就不用一步步选了
\:换行继续输出
&:在后台执行,这样就能同时导入多个快照。
$1:使用sh执行脚本时,脚本名称后面跟的字符。
&>:将输出重定向
/dev/null:垃圾箱
vim virt_snapshot.sh
#!/bin/bash #指定命令运行环境(shell的头部信息)
qemu-img \
create -f qcow2 \
-b /var/lib/libvirt/images/test.qcow2 \
/var/lib/libvirt/images/$1.qcow2 &> /dev/null
virt-install \
--name $1 \
--memory 1024 \
--vcpus 1 \
--disk /var/lib/libvirt/images/$1.qcow2 \
--os-variant rehl8.0 \
--import &> /dev/null &
sh virt_snapshot.sh xxx
实验步骤:
导入成功🍓