目录
- 一、kvm介绍
- 二、kvm软件安装
- 三、GuestOS安装
- 第一种方式:图形化安装
- 第二种方式:命令行模式安装
- 四、GuestOS升级配置
- 五、KVM存储
- 六、磁盘格式
- 七、创建磁盘文件
- 八、KVM基本管理
- 九、虚拟机克隆
- 十、虚拟机快照
- 十一、KVM网络管理
- 1、kvm修改virbr0地址段:
- 2、kvm虚拟机配置固定ip
- 3、kvm新建一个虚拟网卡
- 3、kvm虚拟机桥接网络
实验环境:redhat:9
一、kvm介绍
KVM(Kernel-based Virtual Machine)是一个基于 Linux 内核的开源虚拟化解决方案。它允许在同一台物理主机上运行多个虚拟机,每个虚拟机都可以运行自己的操作系统。KVM 利用了 Linux 内核中的虚拟化扩展(如 Intel VT-x 或 AMD-V 技术),使得它能够提供高性能的硬件辅助虚拟化。
kvm优势:
- 高性能:KVM 利用硬件辅助虚拟化技术,因此能够提供接近原生性能的虚拟化体验。
- 支持多种操作系统:KVM 可以运行各种不同类型的客户操作系统,包括 Linux、Windows、BSD 等。
- 安全性:由于 KVM 是基于 Linux 内核的,因此能够受益于 Linux 的安全性特性,并且能够利用诸如 SELinux 等安全模块来增强虚拟化环境的安全性。
- 灵活性:KVM 提供了丰富的管理工具和 API,使得用户能够轻松地管理虚拟化环境。
- 成本效益:作为开源软件,KVM 没有额外的许可费用,并且能够充分利用现有的 Linux 基础设施。
KVM 被广泛应用于数据中心、云计算和虚拟化环境中,它已经成为许多企业和组织的首选虚拟化解决方案之一。
二、kvm软件安装
1、查看CPU是否支持VT技术
diff 命令可以查看两个配置文件的区别
cat /proc/cpuinfo | grep -E 'vmx|svm'
2、清理环境:卸载KVM
yum remove `rpm -qa | egrep 'qemu|virt|KVM'` -y
rm -rf /var/lib/libvirt /etc/libvirt/
3、安装软件
yum install qemu-kvm libvirt libguestfs-tools virt-install virt-manager libguestfs-tools
解释:
qemu-KVM: 主包,是由两个组件构成,kvm实现cpu,内存的虚拟化,qemu实现i/o的虚拟化
libvirt:API接⼝,管理虚拟机的
4、启动服务
systemctl start libvirtd
5、查看KVM模块加载
lsmod | grep kvm
三、GuestOS安装
“Guest OS” 是指在虚拟化环境中安装在虚拟机上的操作系统。在虚拟化技术中,物理服务器上的虚拟化软件(比如 KVM、VMware、VirtualBox 等)可以创建和管理多个虚拟机,每个虚拟机都运行着一个独立的操作系统,这些操作系统就是虚拟机的 “Guest OS”。
第一种方式:图形化安装
virt-manager #调出图形化界面
第二种方式:命令行模式安装
虚拟机的组成部分:
1、虚拟机配置⽂件
[root@ctrol ~]# ls /etc/libvirt/qemu
centos7.0.xml networks
2、储存虚拟机的介质
[root@ctrol ~]# ls /var/lib/libvirt/images/
centos7.0.qcow2
模板镜像+配置⽂件 ⽅式创建虚拟机
1.拷⻉模板镜像和配置⽂件
[root@ctrol ~]# cp /var/lib/libvirt/images/centos7.0.qcow2 /var/lib/libvirt/images/vm1.img
[root@ctrol ~]# cp /etc/libvirt/qemu/centos7.0.xml /etc/libvirt/qemu/vm1.xml2.修改配置文件
[root@ctrol ~]# vim /etc/libvirt/qemu/vm1.xml
修改的主要参数是:name,uuid,source位置,以及mac地址,mac地址前24位是厂商标识,不能修改,修改后24位。memory,currentMemory保持一致
[root@ctrol qemu]# diff vm1.xml centos7.0.xml
9,10c9,10
< <name>vm1</name>
< <uuid>6818b9a0-45a7-4896-b43e-97afcfcf468e</uuid>
---
> <name>centos7.0</name>
> <uuid>6818b9a0-45a7-4786-b43e-97afcfcf468e</uuid>
16,17c16,17
< <memory unit='KiB'>1008576</memory>
< <currentMemory unit='KiB'>1008576</currentMemory>
---
> <memory unit='KiB'>1048576</memory>
> <currentMemory unit='KiB'>1048576</currentMemory>
44c44
< <source file='/var/lib/libvirt/images/vm1.img'/>
---
> <source file='/var/lib/libvirt/images/centos7.0.qcow2'/>
100c100
< <mac address='52:54:00:58:45:9b'/>
---
> <mac address='52:54:00:58:45:9a'/>3.创建虚拟机
[root@ctrol qemu]# virsh define /etc/libvirt/qemu/vm1.xml
Domain 'vm1' defined from /etc/libvirt/qemu/vm1.xml4.重启一下
[root@ctrol qemu]# systemctl restart libvirtd5.宿主机开启路由转发功能
[root@ctrol qemu]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@ctrol qemu]# sysctl -p6、去虚拟机ping www.baidu.com
如果ping不通,但是ip能通,去/etc/resolve中写dns解析额地址
四、GuestOS升级配置
以下配置就是手动写配置文件添加磁盘
1、修改配置⽂件(⽐如添加磁盘,那就添加如下配置)
需要主要的是:dev='vdb' ,slot='0x00',添加source镜像存放目录<disk type='file' device='disk'>
< <driver name='qemu' type='qcow2'/>
< <source file='/var/lib/libvirt/images/centos7.0-1.qcow2'/>
< <target dev='vdb' bus='virtio'/>
< <address type='pci' domain='0x0000' bus='0x08' slot='0x00' function='0x0'/>
< </disk>
2、创建新的空磁盘卷
qemu-img create -f qcow2 /var/lib/libvirt/images/centos7.0-1.qcow2 1G
3、重新定义
virsh define /etc/libvirtd/qemu/centos7.0.xml
五、KVM存储
概念:
KVM必须要配置⼀个目录当作他存储磁盘镜像(存储卷)的⽬录,我们称这个目录为存储池。
默认存储池:
/var/lib/libvirt/images/
1、存储池管理
1.创建基于⽂件夹的存储池(⽬录)mkdir -p /data/vmfs
2.定义存储池与其⽬录virsh pool-define-as vmdisk --type dir --target /data/vmfs #vmdisk是池的名字
3.创建已定义的存储池
(1) 创建已定义的存储池virsh pool-build vmdisk
(2) 查看已定义的存储池,存储池不激活⽆法使⽤
#virsh pool-list --all
4.激活并⾃动启动已定义的存储池
virsh pool-start vmdisk
virsh pool-autostart vmdisk
这⾥vmdisk存储池就已经创建好了,可以直接在这个存储池中创建虚拟磁盘⽂件了。
5.在存储池中创建虚拟机存储卷
virsh vol-create-as vmdisk oeltest03.qcow2 20G --
format qcow2
注1:KVM存储池主要是体现⼀种管理⽅式,可以通过挂载存储⽬录,lvm逻辑卷的⽅式创建存储池,虚拟机存储卷创建完成后,剩下的操作与⽆存储卷的⽅式⽆任何区别了。
2.存储池相关管理命令
(1)在存储池中删除虚拟机存储卷
virsh vol-delete --pool vmdisk oeltest03.qcow2
(2)取消激活存储池
virsh pool-destroy vmdisk
(3)删除存储池定义的⽬录/data/vmfs
virsh pool-delete vmdisk
(4)取消定义存储池virsh pool-undefine vmdisk
六、磁盘格式
raw:原始格式,性能最好
qcow2:性能上还是不如raw,但是raw不⽀持快照,qcow2⽀持快照。
七、创建磁盘文件
创建磁盘⽂件
#qemu-img create -f qcow2 test.qcow2 20G
建⽴raw格式磁盘⽂件:
qemu-img create -f raw test.raw 20G
查看已经创建的虚拟磁盘⽂件:
qemu-img info test.qcow2
查看虚拟机磁盘:
[root@ctrol qemu]# virsh domblklist vm1目标 源
-----------------------------------------vda /var/lib/libvirt/images/vm1.imgsda -
八、KVM基本管理
查看 启动 关闭 重启 重置 查看
查看虚拟机:
virsh list --all
查看KVM虚拟机配置⽂件:
virsh dumpxml vm1
修改配置⽂件:
virsh edit vm1
如果直接⽤vim编辑器修改配置⽂件的话,需要重启libvirtd服务(这种方式就不需要)
暂停虚拟机:virsh suspend vm_name
恢复虚拟机:virsh resume vm_name
关闭: virsh shutdown vm1
虚拟机开机⾃动启动: virsh autostart vm1
删除虚拟机开机自启:virsh autostart --disable vm1
查看所有开机自启的虚拟机:virsh list --all --autostart #会生成你一个autostart的目录,/etc下
重启:virsh reboot vm1
删除虚拟机: virsh undefine vm2
查看虚拟机的VNC端口
虚拟机的vnc端口默认从5900开始,每个虚拟机分配一个端口;
[root@ctrol qemu]# virsh vncdisplay vm1
127.0.0.1:0
查看虚拟机的网络地址
virsh domifaddr vm1
九、虚拟机克隆
1、图形化界面
2、字符命令克隆
virt-clone -o vm1 -n vm2 --auto-clone # -n 的参数是取名字 -o 是源镜像virt-clone -o vm1 -n vm2 -f /var/lib/libvirt/images/vm2.img #-f 是使用现有的镜像克隆
十、虚拟机快照
查看镜像文件格式:
qemu-img info /var/lib/libvirt/images/vm1.img 把raw格式转换成qcow2格式:
qemu-img convert -f raw -o qcow2 /var/lib/libvirt/images/vm8.img /var/lib/libvirt/images/vm8_qcow2.img
给虚拟机vm1创建第⼀个快照
virsh snapshot-create-as vm1 vm1.snap
查看虚拟机的快照
virsh snapshot-list vm1
恢复到第⼀个快照
virsh snapshot-revert vm1 vm1.snap
删除虚拟机快照
virsh snapshot-delete --snapshotname vm1.snap vm1
十一、KVM网络管理
KVM虚拟网络介绍:
libvirt服务安装后,默认会安装一块virbr0的虚拟网卡(虚拟交换机),libvirt在创建KVM虚拟机后,默认使用了一个名为default的nat网络。地址段为192.168.122.0/24,为虚拟机提供网络服务。
dhcp分配到虚拟机的ip列表在以下文件查看:
cat /var/lib/libvirt/dnsmasq/default.conf
查看网卡
virsh net-list
1、kvm修改virbr0地址段:
可以修改网段,也可以用默认网段,如需修改通过如下方式:
virsh net-edit default
然后再重新定义网络,default网络的配置文件:
virsh net-define /etc/libvirt/qemu/networks/default.xml
停止网卡(关闭虚拟机)
virsh net-destroy default
启动网卡:
virsh net-start default
重启libvirtd:
systemctl restart libvirtd
2、kvm虚拟机配置固定ip
cd /etc/sysconfig/network-scripts/ #找到网卡编辑
把dhcp改为none,添加IPADDR,NETMASK,GATEWAY,DNS1等
然后systemctl restart network
3、kvm新建一个虚拟网卡
一、图像化方式
二、命令行方式
virsh net-dumpxml default > /etc/libvirt/qemu/networks/net1.xml #创建一个net1网卡的配置[root@ctrol ~]# cat /etc/libvirt/qemu/networks/net1.xml
<network><name>net1</name><uuid>243f2a7c-696c-4834-81d1-bca8e7d8878b</uuid><forward mode='nat'><nat><port start='1024' end='65535'/></nat></forward><bridge name='virbr1' stp='on' delay='0'/><mac address='52:54:01:12:2e:9b'/><ip address='192.168.100.1' netmask='255.255.255.0'><dhcp><range start='192.168.100.2' end='192.168.100.254'/></dhcp></ip>
</network>
需要注意的是name,uuid,网桥名,mac地址,改哈ip就行virsh net-create /etc/libvirt/qemu/networks/net1.xml #根据配置文件进行创建
virsh net-list --all #查看网卡[root@ctrol ~]# virsh net-autostart net1 #开机自启
网络net1标记为自动启动给vm1虚拟机修改网卡:
virsh edit vm1
然后再启动该虚拟机
3、kvm虚拟机桥接网络
在KVM虚拟机中,Bridge (桥接)模式可以让KVM虚拟机和宿主机共享一个物理网络设备来连接网络,这样KVM虚拟机可以访问外部网络,而外部网络也可以直接访问KVM虚拟机,Bridge桥接模式使用非常方便,应用也非常广泛。
查看虚拟机网卡类型
virsh domiflist vm1
在虚拟机中配置桥接网络:
nmcli con add ifname br0 type bridge con-name br0
nmcli con add type bridge-slave ifname ens160 master br0
nmcli con mod br0 ipv4.addresses 192.168.85.200/24 ipv4.gateway 192.168.85.2 ipv4.dns 223.5.5.4 ipv4.method manual autoconnect yes
nmcli con up br0