目录

KVM架构

 KVM架构解析

安装KVM 

准备环境

 安装虚拟机

方法一:图形模式安装。

方法二:使用命令行创建。

方法三:通过飞机驾驶舱安装和管理虚拟机。

删除虚拟机

 KVM存储

存储池管理

磁盘格式:

写时拷贝:

转换默认磁盘格式

方法一:图形化界面添加和删除

方法二:命令行方式创建和删除。

修改磁盘文件的大小

虚拟机克隆

方式一:图形化界面方式。

方式二:命令行方式。

虚拟机创建快照

方式一:图形化界面方式

方式二:命令行方式。

恢复快照

命令行方式

删除快照


KVM(Kernel-based Virtual Machine,基于内核的虚拟机)是为AMD64和Intel 64硬件上的Linux提供的完全虚拟化的解决方案。

KVM架构

 KVM架构解析

安装KVM 
准备环境

想要在虚拟机里安装虚拟机,首先虚拟机的引擎必须要能支持虚拟化的应用。

1,将三个都勾选上。将处理器数量设置为二,也可将每个处理器的内核数量设置为二。

 电脑关机之后想要再一次进入需要将虚拟化引擎的三个勾去掉。

2,查看CPU是否支持VT技术(虚拟化技术)

cat /proc/cpuinfo | grep -E 'vmx|svm'

vmx:当前cpu支持Intel虚拟化技术

svm:当前cpu支持amd虚拟化技术

3,更改主机名字

hostnamectl set-hostname kvm
hostname

4,对宿主机的IP地址及宿主机名字进行配置

vim /etc/hosts

#最后一行输入 (宿主机的IP地址) kvm(宿主机的名字)

5,对宿主机的环境进行清理

卸载KVM

yum remove `rpm -qa|egrep 'qemu|virt|KVM'` -y
rm -rf /var/lib/libvirt /etc/libvirt/

6,关闭防火墙

systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld

7,关闭selinux(一种强制访问控制(MAC)的安全系统):

永久关闭

sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
getenforce #重启之后显示为Disabled为正确关闭

临时关闭

setenforce 0
getenforce #不需要重启,显示为Permissive为正确关闭

或者进入配置文件,将enforcing修改成disable。

vim /etc/selinux/config

查看是否生效。 

cat /etc/selinux/config

8,安装KVM模块、管理工具和libvirt(创建虚拟机的工具)

yum -y install kvm bridge-utils virt-v2v libgesttfs-tools libcanberra-gtk2qemu-kvm.x86_64 qemu-kvm-tools.x86_64 libvirt.x86_64 libvirt-cim.x86_64libvirt-client.x86_64 libvirt-java.noarch libvirt-python.x86_64 libiscsidbus-devel virt-clone tunctl virt-manager libvirt python-virtinst virt-viewer virt-top dejavu-lgc-sans-fonts nfs-utils

yum -y install kvm virt-manager libvirt
KVM安装包 含义
qemu-kvm 主要KVM程序包
python-virtinst 创建虚拟机所需要的命令行工具和程序
virt-manager GUI虚拟机管理工具
virt-top 虚拟机统计命令
virt-viewer GUI连接程序,连接到已经配置好的虚拟机
libvirt C语言工具包,提供libvirt服务
libvirt-client 为虚拟机客户提供的C语言工具包9,
virt-install 基于libvirt服务的虚拟机创建命令
bridge-utils 创建和管理桥接设备的工具

9,启动服务,确定系统是否正确加载KVM模块

systemctl start libvirtd.service  
systemctl enable libvirtd.service   
systemctl status libvirtd.service   

10,检查KVM模块是否安装成功

lsmod|grep kvm

11,检查KVM是否安装成功

virsh -c qemu:///system list

 

 安装虚拟机

有两种方法安装虚拟机。

方法一:图形模式安装。

1,确认libvirt 程序正在运行。利用ps命令查看系统进程信息。

ps ax|grep libvirtd

2,确认virt-manager是否安装。

which virt-manager

3,使用virt-manager创建虚拟机。

下载所需的ISO镜像,使用finalshell连接虚拟机,将镜像文件复制到root目录下。

启动virt-manager

virt-manager

创建新的虚拟机,选择“本地安装介质(ISO映像或者光驱)”

 定义虚拟机耳朵执行环境,为虚拟机分配1GB和CPU

根据虚拟机存储情况分配空间大小。(不低于2G)

点击“完成”就创建完成了。

方法二:使用命令行创建。

(模板镜像+配置⽂件⽅式配置规格)

1,查看虚拟机配置文件。

ls /etc/libvirt/qemu

2,查看磁盘镜像文件。

ls /var/lib/libvirt/images

3,创建虚拟机。

拷贝虚拟机配置文件。(根据列出的文件名字拷贝,后缀名是“.xml”)

cd /etc/libvirt/qemu/
ls
cp vm1.xml vm2.xml
ls

 拷贝虚拟机磁盘镜像文件。(根据列出的文件名字进行拷贝,后缀名字是“.qcow2”或者“.img”)

cd /var/lib/libvirt/images/
ls
cp vm1.qcow2 vm2.qcow2
ls

4,修改配置文件

vim /etc/libvirt/qemu/vm2.xml

 修改,name,uuid,Memory(可以不用修改),Currentmemory(如果修改了Memory,就一定要修改Currentmemory),vcpu(修改成2,或者不修改)

 镜像文件名要一致。

 修改mac地址,mac地址是唯一的(只能修改后三组,后三组随便修改一个)。

 5,创建虚拟机,(重定义一下),再重启KVM

virsh define /etc/libvirt/qemu/vm2.xml
systemctl restart libvirtd

6, 宿主机开启路由转发

vim /etc/sysctl.conf
net.ipv4.ip_forward=1

 使重新配置的联网功能生效

sysctl -p

7,调出图形界面,查看是否有两台虚拟机。(重新连接一下)

virt-manager

方法三:通过飞机驾驶舱安装和管理虚拟机。

(提供一个web界面,对系统图形化管理)

1,安装飞机驾驶舱,并开启服务。

yum install -y cockpit
systemctl start cockpit

2,查看端口

netstat -lntp

3,查看虚拟机IP地址

ip a

4,通过浏览器访问服务器地址

5,退出飞机驾驶舱,最后查看端口是否还在

systemctl stop cockpit.socket
netstat -lntp

删除虚拟机
方法一:图形界面。

前提是虚拟机在关机的状态下,在需要删除的虚拟机上右击。

方法二:命令行。

进入到镜像文件以及配置文件下删除。

cd /etc/libvirt/qemu
rm -rf vm2.xml
ls
cd /var/lib/libvirt/images/
rm -rf vm2.qcow2
ls
systemctl restart libvirtd
virt-manager

 

 KVM存储
存储池管理

 概念:KVM必须配置一个目录当作它存储磁盘镜像(存储卷)目录(存储池)。

默认存储池: 

cd /var/lib/libvirt/images
ls

 1,创建基于文件夹得存储池(目录)

mkdir -p /data/vmfs

 2,定义存储池和目录

定义一个名字为vmdisk得存储池,类型是目录,目标路劲是 /data/vmfs

virsh pool-define-as vmdisk --type dir --target /data/vmfs

定义成功 

3,创建已经定义的存储池,

virsh pool-build vmdisk

并查看已经定义的存储池, 存储池不激活无法使用

virsh pool-list --all

 4,激活,并自启动已经定义的存储池

virsh pool-start vmdisk
virsh pool-autostart vmdisk

 #这里的vmdisk 已经创建好了,可以直接使用在这个存储池中创建虚拟机磁盘文件了。

5,在存储池中创建虚拟机存储卷。

virsh vol-create-as vmdisk oeltest.qcow2 1G --format qcow2

 6,存储池中删除虚拟机存储卷

在存储池中删除虚拟机存储卷

virsh vol-delete --pool vmdisk oeltest.qcow2

取消激活存储池

virsh pool-destroy vmdisk

 7,存储池相关命令

删除存储池定义的目录 /data/vmfs,激活状态不能被删除

virsh pool-delete vmdisk

 取消定义存储池

virsh pool-undefine vmdisk
磁盘格式:
磁盘格式 性能 快照功能
raw(裸辞盘格式) 好(性格接近物理机) 不支持
qcow2(cow写时拷贝,copy on write) 不如raw 支持(支持拷贝)
写时拷贝:

1,raw:立即分配空间,不管你有没有用到那么多空间(如:空间是5G,立即全部分配)

2,qcow2:是只承诺给你分配空间。是只有你需要用到的时候才会给你空间,只会给你承诺的空间大小,避免浪费空间(如:空间是5G,只会分配193KB)

转换默认磁盘格式

默认安装是raw格式,想做快照,要将raw格式转换成qcow2格式。 

qemu-img convert -f raw -O qcow2 test.raw test.raw.qcow2

方法一:图形化界面添加和删除

添加

在虚拟机关闭的状态,打开控制台,双击虚拟机或者点击“打开”

 

 注意磁盘可用空间。创建好之后有两个磁盘。

 

删除

cd /var/lib/libvirt/images
ls
rm -rf #磁盘名字vm1-1.qcow2  
方法二:命令行方式创建和删除。

1,创建磁盘文件

创建qcow2格式磁盘文件

qemu-img create -f qcow2 test01.qcow2 2G

创建raw格式磁盘文件

qemu-img create -f raw test02.raw 2G
qemu-img create -f raw /var/lib/libvirt/images/vm1-1raw.raw 2G

2,查看已经的创建磁盘文件。

qemu-img info test01.qcow2

qemu-img info test02.raw
ll -h /var/lib/libvirt/images/vm1-1.raw
修改磁盘文件的大小
qemu-img resize filename[+|-]size

qemu-img resize test01.qcow2 +2G

虚拟机克隆
方式一:图形化界面方式。

修改名称

等待克隆完成

 

方式二:命令行方式。
virt-clone -o vm1 --auto-clone
virt-clone -o vm1 -n vm2 --auto-clone
虚拟机创建快照
方式一:图形化界面方式

查看虚拟机状态和信息

方式二:命令行方式。

1,为虚拟机创建快照。

virsh snapshot-create-as vm1 vm1.snap

2,查看磁盘镜像文件。

qemu-img info /var/lib/libvirt/images/vm1.qcow2

3,查看快照。

virsh snapshot-list vm1

4,创建raw磁盘(指定目录)

qemu-img create -f raw /var/lib/libvirt/images/vm1-1raw.raw 2G

 (在镜像目录下)

cd /var/lib/libvirt/images/
qemu-img create -f raw test.raw 2G

查看磁盘信息

ll -h /var/lib/libvirt/images/vm1-1.raw

( 在镜像目录下)

qemu-img info test.raw

 

添加磁盘到虚拟机上,并修改配置文件

cd /etc/libvirt/qemu
ls
vim vm1.xml

重新定义

virsh define vm1.xml

开启虚拟机

virsh start vm1.xml

创建快照(失败)因为磁盘不是qcow2

virsh snapshot-create-as vm1 vm1.snap2

转换格式

qemu-img convert -O qcow2 /var/lib/libvirt/images/vm1-1.raw /var/lib/libvirt/images/vm1-1.qcow2

cd /var/lib/libvirt/images/
ll -h

查看磁盘格式(是不是qcow2)

qemu-img info vm1-1.qcow2

修改配置文件

vim /etc/libvirt/qemu/vm1.xml
virsh define /etc/libvirt/qemu/vm1.xml

创建快照

virsh snapshot-create-as vm1 vm1.snap2

 

虚拟机恢复快照
方法一:图形界面方式

第一个是恢复快照

 

方法二:命令行方式

1,在vm1创建一个空目录(在虚拟机操作:)

mkdir /test
ls /test

2,给虚拟机创建快照(在宿主机操作)。

virsh snapshot-create-as vm1 vm1.snap2

3,在虚拟机中给 /test中创建文件(在虚拟机操作)。

cd /test
touch a.txt b.txt
ls

4,给虚拟机创建快照(在宿主机操作)。

virsh snapshot-create-as vm1 vm1.snap3

5,关闭虚拟机,恢复到第二个快照

宿主机操作:

virsh shutdown vm1
virsh snapshot-revert vm1 vm1.snap2

虚拟机操作:

cd /test
ls

6,关闭虚拟机,恢复到第3个快照

virsh shutdown vm1
virsh snapshot-revert vm1 vm1.snap3

查看快照

 virsh snapshot-list #虚拟机名字
virsh snapshot-list vm1

 running是正在启动的状态。shutoff是关闭的状态。

删除快照

virsh snapshot-list vm1
virsh snapshot-delete --snapshotname vm1.snap2 vm1

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐