- 什么是kvm
- 0安装控制面板
- 1虚拟化环境配置
- 1.0验证CPU是否支持KVM
- 1.1安装kvm虚拟化套件
- 1.1.1安装virt套件
- 1.1.2配置tuned调优方案为virtual-host
- 1.1.3启动libvirtd服务和虚拟机acpid电源服务
- 使用virt-manager打开gui管理界面(非必须)
- 2验证安装结果
- 2.1查看虚拟机环境
- 2.2查看kvm模块支持
- 2.3查看虚拟工具版本
- 使用virt-install创建虚拟机
- 查看虚拟机的虚拟网卡
- 查看虚拟机列表和虚拟机状态
- 手动启动虚拟机
- 关闭虚拟机
- 连接到虚拟机控制台
- 配置虚拟机开机自启
- 克隆虚拟机
- 创建快照
- 查看当前虚拟机快照版本信息
- 查看虚拟机镜像快照信息
- 恢复虚拟机状态至某个版本
- 删除快照
- virsh常用命令篇
- 删除虚拟机文件
- kvm虚拟机vnc配置
- kvm虚拟机时间配置
kvm是kernel based virtual machine
意思是基于内核的虚拟机
如果未安装cockpit,则可以使用以下命令进行安装:
#安装Cockpit和cockpit-machines ## cockpit-machines是管理虚拟机的模块 # yum install -y cockpit cockpit-machines #设置开机自启服务并现在启动 systemctl enable --now cockpit.socket #查看端口是否启动 ss -nltp | grep 9090 #防火墙放行9000端口 ## 临时放行9000/tcp firewall-cmd --add-port=9000/tcp ## 永久放行9000/tcp firewall-cmd --add-port=9000/tcp --per
下一步是在管理机上打开Web浏览器, cockpit使用9090端口,例如:
https://host-ip:9090
然后试用root账号登录
1虚拟化环境配置
1.0验证CPU是否支持KVM
半虚拟化是不能运行与安装KCM虚拟机的
egrep 'vmx|svm' /proc/cpuinfo
如果结果中有vmx(Intel)或svm(AMD)字样,说明CPU支持
1.1安装kvm虚拟化套件 1.1.1安装virt套件
# 安装epel源 yum -y intall epel-release # 安装依赖包 yum –y install net-tools vim unzip zip wget # 安装kvm虚拟化套件(32个包) yum install virt* -y # 或 yum –y install qemu-kvm libvirt virt-install bridge-util virt-viewer acpid kvm python-virtinst tunctl virt-manager qemu-kvm-tools virt-v2v libguestfs-tools
1.1.2配置tuned调优方案为virtual-host
# 设置调优方案 tuned-adm profile virtual-host1.1.3启动libvirtd服务和虚拟机acpid电源服务
# 开机自启libvirtd服务并现在启动 systemctl enable --now libvirtd # 为虚拟机提供关闭电源服务 systemctl enable --now acpid.service使用virt-manager打开gui管理界面(非必须)
# 打开虚拟机gui管理界面 virt-manager
2验证安装结果
2.1查看虚拟机环境
# 查看libvirtd服务是否正常运行 systemctl status libvirtd # 查看qemu系统列表 virsh –c qemu:///system list2.2查看kvm模块支持
# 查看kvm模块支持 lsmod | grep kvm ## 有下列内容就说明模块正常 kvm_intel 170086 0 kvm 566340 1 kvm_intel irqbypass 13503 1 kvm2.3查看虚拟工具版本
# 查看virsh版本 virsh –version # 创建qemu-kvm的软链接,让用户可以直接通过命令行使用 ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm # 查看qemu-kvm的版本 qemu-kvm -version
使用virt-install创建虚拟机
virt-install -n vm01 -r 2048 --disk /home/kvm-bak/vm01.img,format=qcow2,size=40 --network bridge=br0 --os-type=linux --os-variant=rhel7.4 --cdrom /home/iso/CentOS-7-x86_64-Minimal-1708.iso --vnc --vncport=5910 --vnclisten=0.0.0.0查看虚拟机的虚拟网卡
# 查看虚拟机的虚拟网卡 bridge link
说明:在linux系统安装开始就要注意添加提高性能的一些参数,后面就不需要做一些调整了。
参数说明: --name:指定虚拟机名称 --ram:分配内存大小。 --vcpus:分配CPU核心数,最大与实体机CPU核心数相同 --disk:指定虚拟机镜像,size指定分配大小单位为G。 --network:网络类型,此处用的是默认,一般用的应该是bridge桥接。 --accelerate:加速 --cdrom:指定安装镜像iso --vnc:启用VNC远程管理,一般安装系统都要启用。 --vncport:指定VNC监控端口,默认端口为5900,端口不能重复。 --vnclisten:指定VNC绑定IP,默认绑定127.0.0.1,这里改为0.0.0.0。 --os-type=linux,windows --os-variant= win7:MicrosoftWindows7 winxp:MicrosoftWindowsXP win2k8:MicrosoftWindowsServer2008 rhel7:RedHatEnterpriseLinux7
不用理会提示里面的错误,接着往下走
打开防火墙的5910端口
# 防火墙放行5910端口 firewall-cmd --add-port=5910/tcp firewall-cmd --add-port=5910/tcp --per查看虚拟机列表和虚拟机状态
[root@localhost home]# virsh list --all手动启动虚拟机
# 启动vm01虚拟机 [root@localhost home]# virsh start vm01 # 查看虚拟机状态 [root@localhost home]# virsh list --all关闭虚拟机
virsh shutdown vm1连接到虚拟机控制台
virsh console vm2配置虚拟机开机自启
/etc/libvirt/qemu,autostart目录是配置kvm虚拟机开机自启动的目录
克隆虚拟机# 使用virt-clone克隆vm2为新的虚拟机 virt-clone -o vm1 -n vm2 -f /home/kvm-img/vm2.img创建快照
[root@localhost ~]# virsh snapshot-create vm2 已生成域快照 1508564438 # 快照配置文件在/var/lib/libvirt/qemu/snapshot/虚拟机名称/下查看当前虚拟机快照版本信息
[root@localhost ~]# virsh snapshot-current vm2查看虚拟机镜像快照信息
[root@localhost ~]# virsh snapshot-list vm2 名称 生成时间 状态 ------------------------------------------------------------ 1508564438 2017-10-21 13:40:38 +0800 shutoff恢复虚拟机状态至某个版本
# 先关闭虚拟机 virsh shutdown vm2 # 确认恢复的快照时间进行版本恢复 virsh snapshot-revert vm2 1508564438删除快照
# 查看虚拟机快照 qemu-img info vm2.qcow2 # 删除快照 virsh snapshot-delete vm2 1508564761 已删除域快照 1508564761virsh常用命令篇
# 查看运行的虚拟机 virsh list # 查看所有的虚拟机 virsh list –all # 开启虚拟机 virsh start vm01 #或 virsh create /etc/libvert/qemu/vm01.xml(通过配置文件的方式) # 连接虚拟机 virsh console 虚拟机名称 # 退出虚拟机 ctrl+] # 关闭虚拟机 virsh shutdown 虚拟机名 # 关闭虚拟机电源 virsh destroy 虚拟机名 # 挂起虚拟机 virsh suspend 虚拟机名 # 恢复被挂起的虚拟机 virsh resume 虚拟机名 # 配置开机自启动虚拟机 virsh autostart 虚拟机名 # autostart目录是kvm虚拟机开机自启动目录,可以看到该目录中有KVM配置文件链接 # 取消自动启动 virsh auotstart --disable 虚拟机名 # 彻底删除虚拟机 #删除虚拟机 virsh destroy 虚拟机名 #解除标记 virsh undefine 虚拟机名 # 说明:该命令只是删除vm01的配置文件,并不删除虚拟磁盘文件 # 附:重新定义虚拟机配置文件 mv /root/vm01.xml /etc/libvirt/qemu/vm01.xml (备份的虚拟机文件放到虚拟机配置文件存放路径) virsh define /etc/libvirt/qemu/vm01.xml删除虚拟机文件
# 启动虚拟机并进入该虚拟机 virsh start 虚拟机名 --console # 导出kvm虚拟机配置文件 virsh dumpxml vm01 > /root/vm01.xml # kvm虚拟机配置文件可以通过这种方式进行备份 # 编辑kvm虚拟机配置文件 virsh edit vm01 ## virsh edit将调用vi命令编辑/etc/libvirt/qemu/vm01.xml配置文件。也可以直接通过vi命令进行编辑,修改,保存。可以但不建议直接通过vi编辑。kvm虚拟机vnc配置
# 1、修改qemu.conf vi /etc/libvirt/qemu.conf vnc_listen = "0.0.0.0" ## 说明1:vnclisten 默认绑定127.0.0.1 在配置文件里指定VNC 绑定0.0.0.0IP,就不用在安装kvm虚拟机时指定vnclisten参数了。 ## 说明2:在虚拟主机上有很多个虚拟机的时候,需要指定每个虚拟机的端口,否则将会很乱。 # 2、修改虚拟机配置文件 virsh edit oeltest01kvm虚拟机时间配置配置VNC的配置文件,port是指定端口号,autoport是自己分配端口号 # 3、查看vnc netstat –tulnp
在虚拟化环境中,虚拟机在长时间运行过程中,时间会变慢,通常的作法是配置ntpdate定时与时间服务器进行时间同步的计划任务。KVM虚拟机默认采用utc时间,需要专门修改,以及考虑kvm时间同步问题。
1、kvm虚拟机修改时间配置文件
kvm虚拟机采用utc时间,需要先修改配置文件使用KVM虚拟机的时间与虚拟主机同步。
修改utc为localtime,保存退出,重启虚拟机。
2、关于kvm虚拟机时间问题解决思路
(1) 虚拟机时间慢是所有虚拟化平台的一共性问题。
(2) 解决时间的最终解决方法就是在生产环境中配置时间服务器,kvm虚拟化服务器与kvm机均都要配置时间同步的计划任务,这才是解决这一个问题最终解决方案。
示例:如果能访问互联网,最简单了,需要kvm虚拟机与主机时间同步,但是运行一段时间会慢,一定要做时间同步,特别是对时间敏感的环境。
# crontab -e
01 */3 * * * /usr/sbin/ntpdate ntp.fudan.edu.cn >> /dev/null 2>&1
十一、KVM的Windows server 虚拟机使用virtio驱动
KVM安装Windows默认使用的是qemu虚拟化IDE硬盘模式,在这种情况下,IO性能比较低,如果使用virtio的方式可以提高虚拟机IO性能。而virtio所驱动的网卡,也将原来的百兆扩展到千兆。
这里就简单介绍下如何使用virtio驱动安装window server 2008. 其它windows版本操作相同,只需选择对应的驱动即可。
KVM安装Windows需要使用virtio的驱动:
https://fedoraproject.org/wiki/Windows_Virtio_Drivers#Direct_download
1、下载virtio驱动yum文件并安装
wget https://fedorapeople.org/groups/virt/virtio-win/virtio-win.repo -O /etc/yum.repos.d/virtio-win.repo
yum install virtio-win -y
2、查看virtio-win提供的驱动
[root@localhost ~]# rpm -ql virtio-win | grep iso
/usr/share/virtio-win/virtio-win-0.1.141.iso =>virtio-win- latest
/usr/share/virtio-win/virtio-win.iso =>virtio-win- stable
3、wget方式下载
Stable virtio-win iso: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
Stable virtio-win x86 floppy: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win_x86.vfd
Stable virtio-win amd64 floppy: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win_amd64.vfd
Latest virtio-win iso: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win.iso
Latest virtio-win x86 floppy: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win_x86.vfd
Latest virtio-win amd64 floppy: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win_amd64.vfd
Latest qemu-ga files: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-qemu-ga/
4、安装window虚拟机时附带virtio驱动
(1)、安装windows
使用virtio驱动安装虚拟机:
virt-install -n ws2 -r 4096 --vcpus=4 --disk /home/kvm-bak/ws2.img,format=qcow2,size=40,bus=virtio --disk path=/usr/share/virtio-win/virtio-win_x86.vfd,device=floppy --network bridge=br0 --accelerate --os-type=windows --os-variant=win2k8 --cdrom /home/iso/cn_windows_server_2012_r2_vl_with_update_x64_dvd_6052729.iso --vnc --vncport=5912 --vnclisten=0.0.0.0
提示: 这里是使用的是软盘方式加载,如果镜像和驱动都使用cdrom的方式加载,在有些情况系统会找不到启动镜像,导致无法启动. 加载的驱动有x86和amd64两种类型,64位系统选择amd64. 32为系统选择x86.
(2)、 安装过程中,在选择磁盘界面会找不到磁盘,选择“加载驱动”,“浏览”,找到“软盘驱动器”,点开后选择 “server 2008”确定,驱动加载完成后,磁盘就出现了,继续安装即可。
(3)、安装完成后,在设备管理器中可以看到使用的是virtio:
5、在已安装的kvm虚拟机上添加virtio驱动
(1)、以传统的IDE硬盘模式安装
virt-install -n ws2 -r 4096 --vcpus=4 --disk /home/kvm-bak/ws2.img,format=qcow2,size=40 --network bridge=br0,model=virtio --accelerate --os-type=windows --os-variant=win2k8 --cdrom /home/iso/cn_windows_server_2012_r2_vl_with_update_x64_dvd_6052729.iso --vnc --vncport=5912 --vnclisten=0.0.0.0
(2)、加载virtio驱动的iso文件到虚拟机光驱
virsh attach-disk ws2 /usr/share/virtio-win/virtio-win.iso hdb --type cdrom
或者使用如下命令:
virsh change-media ws2g hdb /usr/share/virtio-win/virtio-win.iso
举例:
[root@localhost ~]# virsh attach-disk ws2 /usr/share/virtio-win/virtio-win.iso hdb --type cdrom
成功附加磁盘
(3)、修改虚拟机的xml文件
使其能发现virtio类型的设备,否则驱动无法安装
增加一块virtio驱动的硬盘:
cd /home/kvm-img
qemu-img create -f qcow2 test.img 1G
注意test.img的权限问题,否则开启ws2时会提示test.img文件权限不够(chmod 777 test.img)
修改虚拟机的xml文件,在原有的"disk type"区域增加一个test磁盘的配置:
#注意磁盘,系统盘had,光驱hdb,这个应为hdc
修改网卡类型为 virtio, 在 interface type 区域,修改model type=‘virtio‘ :
提示:如果不是使用vnc远程连接,需要新增一个网卡配置,在没有安装驱动前,使用上面的配置,虚拟机是断网状态。
修改完成之后,开启虚拟机:virsh start ws2
(4)、手动更新驱动
可以事先把光驱中的驱动文件复制一份到磁盘中,开机后会发现没有网络适配器。在计算机设备管理器中找到网络适配器,然后手动更新,选择驱动文件所在目录
更新后的结果显示:
磁盘控制区:QEMU HARDDISK ATA Device(原有的)和Red Hat VirtIO SCSI controller(新增的)
存储控制器:Microsoft存储空间控制器(原有的)和Red Hat VirtIO SCSI controller(新增的)
网络适配器:Red Hat VirtIO Ethernet Adapter(速度是10.0Gbps)
(5)、再次修改xml文件
virsh edit ws2
原有磁盘信息:
新增的磁盘信息:
两者更改后的信息显示:
操作说明:把原有磁盘信息中的address这一行替换为新增磁盘的address这一行,然后把dev=‘vda’ bus=‘virtio’。
十二、调整虚拟机cpu和内存
1、查看虚拟机配置信息
virsh dumpxml ws2 | head –n 10
ws2
cc86e316-cb50-4983-8eba-c714f3b447f7
8388608 #当前内存大小
8388608 #最大内存大小
6 #最大cpu数
hvm
或者:virsh dominfo ws2
2、调整cpu
2.1修改配置文件
6的值(需关机)
2.2在线调整虚拟机CPU
# virsh setvcpus ws2 4 (只能增大,不能减小)
同样,能够动态调整的最大VCPU个数也不能超过为虚拟机设置的最大VCPU数量
设置VM使用的最大内存或最大CPU可以使用 # virsh edit vm1命令
3、调整内存
3.1修改配置文件
virsh edit ws2
8388608 #当前内存大小 8388608/1024/1024=8G
8388608 #最大内存大小
3.2在线调整虚拟机内存
virsh setmem ws2 4G (增大或减小)
能够在线调整的最大内存不能超过为虚拟机分配的最大内存,否则需要关闭虚拟机上调最大内存



