本文主要介绍KVM虚拟机的一些基本实践操作。对KVM虚拟机的管理操作主要是基于libvirt的命令行工具virsh进行的。
一、安装与启动
1. KVM模块检查
(1)查看当前Linux系统核心是否包含KVM模块(Linux内核2.6.20及以上版本包含KVM模块):
uname` `-r``#或``cat` `/proc/version``#或``dmesg | ``grep` `Linux
(2)检查当前Linux系统是否已加载KVM核心模块:
lsmod | ``grep` `kvm
2. 安装libvirt,qemu-kvm
yum ``install` `libvirt libvirt-devel qemu-kvm
3. 启动libvirtd
systemctl start libvirtd``systemctl ``enable` `libvirtd
二、连接配置
1. 本地控制配置
libvirt安装后默认配置就可以连接到本地libvirtd。
测试是否可用:
virsh list
不可用重启试试:
systemctl restart libvirtd
2. 远程控制配置
只需修改服务端配置项,客户端保持默认配置即可。
(1)修改服务端配置文件/etc/libvirt/libvirtd.conf
listen_tls = 0``listen_tcp = 1``tcp_port = ``"16509"``auth_tcp = ``"none"
(2)修改服务端/etc/sysconfig/libvirtd
LIBVIRTD_ARGS=``"--listen"
(3)重启服务端libvirtd服务
systemctl restart libvirtd
(4)客户端保持默认配置,连接服务端的libvirtd服务执行命令
示例:
virsh -c qemu+tcp:``//root``@192.168.2.102:16509``/system` `list --all
此命令连接到服务端192.168.2.102的libvirtd服务,执行命令 virsh list --all。
这里使用的是tcp连接,也可使用其它连接方式,如TLS、ssl等,但配置文件需要做相应修改。
三、日志配置
libvirtd的日志文件一般为:/var/log/libvirt/libvirtd.log
若没有这个文件,需要修改libvirtd服务的日志级别和日志文件配置,配置文件:/etc/libvirt/libvirtd.conf。
配置示例:
log_level = 1``log_outputs = ``"1:file:/var/log/libvirt/libvirtd.log"
然后重启libvirtd:
systemctl restart libvirtd
在日志文件 /var/log/libvirt/libvirtd.log 中可查看每次执行virsh命令输出的info、debug等信息。
另外,目录 /var/log/iibvirt/qemu/ 下保存了每个虚拟机具体的日志信息,log文件名称与虚拟机名称相关。
(免费订阅,永久学习)学习地址: Dpdk/网络协议栈/vpp/OvS/DDos/NFV/虚拟化/高性能专家-学习视频教程-腾讯课堂
更多DPDK相关学习资料有需要的可以自行报名学习,免费订阅,永久学习,或点击这里加qun免费
领取,关注我持续更新哦! !
四、网络配置
1. 默认网络配置
查看libvirt的默认网络配置:
virsh net-list
默认网络配置文件为:/etc/libvirt/qemu/networks/default.xml,其内容示例如下:
其中配置项“bridge”、“mac”和“ip”分别定义了宿主机用于与虚拟机通信的网桥名称、mac地址和ip地址,libvirtd服务启动的时候会自动创建并启动该网桥,“dhcp”则配置了libvirt启动的虚拟机的ip地址范围。
“forward”配置的是网络模式,kvm虚拟机支持两种网络模式:
(1)NAT(网络地址转换):虚拟系统通过网络地址转换,将虚拟机地址映射到宿主机地址上,通过宿主机进行网络访问。这样虚拟机就可访问外网和局域网内的其他主机,但是局域网内的其他主机不能访问虚拟机,相当于单向访问。
(2)Bridge(桥接):双向访问。每个虚拟机都具有一个独立的局域网ip地址,虚拟机与局域网其他主机可相互访问。
2. 自定义网络配置
用户可参考libvirt的默认网络配置文件添加自定义网络配置。
(1)创建网络xml配置文件,然后创建新网络:
virsh net-define net-name.xml
此命令会将网络配置文件移至/etc/libvirt/qemu/networks/目录下。
查看/导出网络配置:
virsh net-dumpxml net-name
(2)启动网络:
virsh net-start net-name
(3)设置开机自启动:
virsh net-autostart net-name
此命令会在 /etc/libvirt/qemu/networks/autostart/ 目录下创建 /etc/libvirt/qemu/networks/ 目录下网络配置文件的软链接。
3. 删除网络
(1)关闭网络:
virsh net-destroy my-net
(2)删除网络:
virsh net-undefine my-net
此命令会将网络配置文件从/etc/libvirt/qemu/networks/目录下删除,若/etc/libvirt/qemu/networks/autostart/目录下存在对应软连接也一并删除。
4. 修改网络配置
修改libvirt网络配置有两种方式。
(1)virsh net-edit
修改网络配置文件:
virsh net-edit my-net
重启网络才能生效:
virsh net-destroy my-net``virsh net-start my-net
(2)virsh net-update
virsh net-update my-net add-last ip-dhcp-host ``""` `--live --config --parent-index 0
virsh net-edit需要重启网络,对线上系统不友好,而virsh net-update可动态修改运行中的网络,不会影响线上系统,但有些修改无法使用virsh net-update进行。
五、KVM虚拟机管理操作
1. 创建虚拟机
(1)从xml配置文件创建虚拟机但是不启动
virsh define vm-name.xml
(2)从xml配置文件创建虚拟机并启动,但不会持久化,虚拟机关机后就消失了
virsh create vm-name.xml
创建虚拟机后,在 /etc/libvirt/qemu/ 路径下自动生成一份虚拟机的xml配置文件,该配置文件在virsh undefine删除虚拟机的时候会自动删除。
虚拟机的xml配置文件主要配置了虚拟机名称、内存大小、vcpu数量、镜像文件路径、网桥等信息。
查看/导出虚拟机xml文件:
virsh dumpxml vm-name
xml文件修改:
virsh edit vm-name
修改后重启虚拟机才能生效:
virsh reboot vm-name
登录虚拟机:
virsh console vm-name
创建示例:
准备好虚拟机镜像文件,在虚拟机 xml 配置文件中配置好镜像文件的路径:
然后通过 virsh 命令创建虚拟机:
virsh define vm-name.xml
2. 启动虚拟机
(1)启动:
virsh start vm-name
(2)重启:
virsh reboot vm-name
3. 查看虚拟机列表
(1)运行状态的虚拟机列表
virsh list
(2)所有的虚拟机列表
virsh list --all
4. 关闭虚拟机
(1)正常关闭
virsh ``shutdown` `vm-name
(2)下电,强制立即关闭
virsh destroy vm-name
5. 删除虚拟机
virsh undefine vm-name
将非运行状态的虚拟机从virsh列表中删除,无法删除运行状态的虚拟机。
undefine命令会将虚拟机配置文件 /etc/libvirt/qemu/vm-name.xm 删除,但不会删除镜像文件。
6. 虚拟机挂起与恢复
(1)挂起
virsh suspend vm-name
只有运行状态(running)的虚拟机才能被挂起。
挂起状态的虚拟机无法被登录,也无法关闭。
(2)恢复
virsh resume vm-name
只有挂起状态(paused)的虚拟机才能被恢复。
7. 设置虚拟机在宿主机启动时自动启动
virsh autostart vm-name
8. 查看虚拟机
(1)查看虚拟机状态
virsh domstate vm-name
(2)查看虚拟机信息
virsh dominfo vm-name
9. 虚拟机磁盘管理操作
(1)查看磁盘列表
virsh domblklist vm-name
(2)查看磁盘信息
virsh domblkinfo vm-name block-name
(3)扩容磁盘
virsh blockresize --domain vm-name --path block-name --size 10G
(4)动态设置磁盘qos
virsh blkdeviotune vm-name block-name --``read``-bytes-sec 1024 --write-bytes-sec 1024 --``read``-iops-sec 1000 --write-iops-sec 1024 --live
(5)持久化挂载rbd
virsh attach-device vm-name rbd.xml --persistent
10. 内存、CPU管理操作
(1)动态设置CPU个数
virsh setvcpus vm-name --count 4 --config --live
(2)动态设置内存大小
virsh setmem vm-name --size 1024 --config --live
(3)设置最大内存大小
virsh setmaxmem vm-name --size 102400 --config
11. 网卡管理操作
(1)查看网卡列表
virsh domiflist vm-name
(2)添加持久化网卡
virsh attach-interface --domain vm-name --``type` `bridge --``source` `br111 --model virtio --mac ``'00.00.00.00.00.01'``- -live --config --persistent
(3)删除持久化网卡
virsh detach-interface --domain vm-name --``type` `bridge --mac ``'00.00.00.00.00.01'``- -live --config --persistent
参考:
KVM详解,学习kvm系列文章 - 腾讯云开发者社区-腾讯云
KVM 虚拟化技术 - 腾讯云开发者社区-腾讯云
linux如何载入kvm内核_linux 内核 kvm_linux无法载入新内核 - 腾讯云开发者社区 - 腾讯云
原文链接:https://www.cnblogs.com/wujuntian/p/16295818.html