基于centos安装并使用KVM
KVM(Kernel-based Virtual Machine,基于内核的虚拟机)是为AMD64和Intel 64硬件上的Linux提供的完全虚拟化的解决方案。
目录
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

更多推荐

所有评论(0)