赞
踩
目录
KVM(Kernel-based Virtual Machine,基于内核的虚拟机)是为AMD64和Intel 64硬件上的Linux提供的完全虚拟化的解决方案。
想要在虚拟机里安装虚拟机,首先虚拟机的引擎必须要能支持虚拟化的应用。
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必须配置一个目录当作它存储磁盘镜像(存储卷)目录(存储池)。
默认存储池:
- 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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。