KVM虚拟机相关步骤
Posted 三度
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了KVM虚拟机相关步骤相关的知识,希望对你有一定的参考价值。
KVM是Kernel-based Virtual Machine的简称,是一个开源的虚拟化模块,该文档是基于CentOS 7.4环境操作的
一、操作系统安装
本文采用的是CentOS 7.4
1、查看系统版本
cat /etc/redhat-release
2、系统更新
Yum makecache &&yum update && yum upgrade
3、关闭SElinux
setenforce 0 (临时生效)
vi /etc/sysconfig/selinux
将SElinux=enforcing修改成SElinux=disabled
reboot (重启后永久生效)
getenforce (查看selinux状态)
4、安装防火墙
yum –y install iptables-service
systemctl start iptables.service
systemctl enable iptables.service
二、虚拟化环境配置
1、验证CPU是否支持KVM
半虚拟化是不能运行与安装KCM虚拟机的
egrep ‘vmx|svm‘ /proc/cpuinfo
如果结果中有vmx(Intel)或svm(AMD)字样,说明CPU支持
2、安装基本软件包
yum –y install epel-release net-tools vim unzip zip wget
3、安装KVM软件包
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
4、验证安装结果
4.1查看虚拟机环境
systemctl start libvirtd
virsh –c qemu:///system list
4.2查看kvm模块支持
lsmod | grep kvm
kvm_intel 170086 0
kvm 566340 1 kvm_intel
irqbypass 13503 1 kvm
4.3查看虚拟工具版本
virsh –version
ls -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm
qemu-kvm -version
5、查看操作状态
systemctl status libvirtd
systemctl is-enabled libvirtd
6、配置网桥模式
先把/etc/sysconfig/network-scripts/目录下的网卡配置文件备份一份(不要备份在当前目录及其子目录,其他目录随意)
cp /etc/sysconfig/network-scripts/ifcfg-enp6s0 /root/ifcfg-enp6s0.bak
6.1创建ifcfg-br0文件
内容如下:
BOOTPROTO=static
DEVICE=br0
TYPE=Bridge
NM_CONTROLLED=no
IPADDR=192.168.0.121
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=222.88.88.88
DNS2=222.85.85.85
6.2移除掉原来的ifcfg-enp6s0,重新创建该文件
内容如下:
BOOTPROTO=none
DEVICE=enp6s0
NM_CONTROLLED=no
ONBOOT=yes
BRIDGE=br0
6.3重启网络服务
systemctl restart network
使用ifconfig验证结果,多出来一块网卡br0,现在访问该服务器使用192.168.0.121就可以了
ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.121 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::a62:66ff:fea2:54f2 prefixlen 64 scopeid 0x20<link>
ether 08:62:66:a2:54:f2 txqueuelen 1000 (Ethernet)
RX packets 973 bytes 98149 (95.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 84 bytes 13557 (13.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp6s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::a62:66ff:fea2:54f2 prefixlen 64 scopeid 0x20<link>
ether 08:62:66:a2:54:f2 txqueuelen 1000 (Ethernet)
RX packets 62930 bytes 66814944 (63.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 25644 bytes 2550988 (2.4 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 17 memory 0xcc200000-cc220000
enp7s0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 08:62:66:a2:54:f3 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 18 memory 0xcc100000-cc120000
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 60 bytes 7012 (6.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 60 bytes 7012 (6.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:a9:aa:73 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
三、安装linux虚拟机
1、准备操作系统安装镜像文件
make -p/home/iso与本机环境一样的CentOS7.4,放在/home/iso目录下
2、创建虚拟机文件存放目录
nkdir –p /home/kvm-bak
3、使用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
说明:在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
不用理会提示里面的错误,接着往下走
4、打开防火墙的5910端口
vim /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5910 -j ACCEPT
systemctl reload iptables.service
5、使用VNC连接该虚拟机,进行虚拟机系统的安装
a. VNC Viewer
b. 新建连接
提供宿主IP、端口号(在virt-install创建过程中指定的)以及名称
c. Expert页签
将ColorLevel的值由原来的 pal8 修改为 rgb222 ,点击OK按钮保存(新版VNC Viewer该值默认已经是rgb222)
d. 双击连接的名称后,进入安装界面
e、接下来就安装CentOS7.4
过程略,默认是最小化的安装(估计跟上面使用的镜像有关)
6、重启
安装完CentOS,系统要求重启,虚拟机重启后自动关闭了
[[email protected] home]# virsh list --all
Id 名称 状态
----------------------------------------------------
- vm01 关闭
7、手动启动虚拟机
[[email protected] home]# virsh start vm01
域 vm01 已开始
[[email protected] home]# virsh list --all
Id 名称 状态
----------------------------------------------------
4 vm01 running
再次使用VNC连接,发现已经可以连接进去了
8、虚拟机开启电源服务模式
yum -y install acpid
systemctl start acpid.service
systemctl enable acpid.service
四、安装windows server 2012 R2 datacenter虚拟机
1、上传镜像文件到/home/iso目录
cn_windows_server_2012_r2_vl_with_update_x64_dvd_6052729.iso
2、安装
virt-install -n ws1 -r 4096 --vcpus=4 --disk /home/kvm-bak/ws1.img,format=qcow2,size=40 --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
3、防火墙放行该端口,使用VNC进行连接安装系统
安装完毕后系统会重启,但是重启不来,需要手动重启
账号:Administrator,密码:1123456bnm,.
4、网络配置
同其他windows系统配置那样,使用的桥接网络,虽说是虚拟机,但跟真实的物理机一样
五、简单配置KVM虚拟机
KVM虚拟机的管理主要是通过virsh命令对虚拟机进行管理
1、网桥配置
如果在虚拟机安装CentOS的过程中配置了合适的网络参数,那么这时虚拟机是可以使用网络的。如果当时采用系统安装包的默认方式,未启用网卡,那么此时需要启动虚拟机的网卡,网卡配置文件是ifcfg-eth0,,配置文件跟普通安装的没啥区别,按照实际情况配置即可,默认是dhcp模式
2、配置在宿主端登录虚拟机shell
当然在宿主端可以通过SSH登录的,虚拟机也可以直接使用SSH方式登录,但是直接登录也是一个不错的方式.(虚拟机中的文件,不是宿主机中的)
a. 在虚机里运行命令
Cetos7系统:grubby --update-kernel=ALL --args="console=ttyS0"
b.重启虚拟机reboot
c.在宿主机上进入虚拟控制台
退出的话使用ctrl+](右方括号)
virsh start vm2
virsh console vm2
3、查看KVM虚拟机配置文件及运行状态
3.1 kvm虚拟机默认配置文件位置
/etc/libvirt/qemu,autostart目录是配置kvm虚拟机开机自启动的目录
3.2 KVM虚拟机运行状态
virsh list --all
六、迁移虚拟机
虚拟机建好后,最大的好处就是任由我们折腾,而不用担心重装系统的麻烦。所以一定要知道虚拟机怎么复制迁移,这里有两种情况,一种是本机上镜像复制,另一种是将本机镜像迁移到其他服务器上。
1、本机复制
a.先关闭虚拟机
virsh shutdown vm1
b.在 /home 下新建文件夹 /home/kvm-img
mkdir -p /home/kvm-img
c.使用virt-clone克隆vm2为新的虚拟机
virt-clone -o vm1 -n vm2 -f /home/kvm-img/vm2.img
注意:提示图形设备端口为自动端口,需要进行如下操作查看:
c.1 virsh dumpxml vm2
<graphics type=‘vnc‘ port=‘5900‘ autoport=‘yes‘ listen=‘0.0.0.0‘>
<listen type=‘address‘ address=‘0.0.0.0‘/>
</graphics>
c.2在宿主机的防火墙上放行该端口,即可使用VNC连接克隆出的该虚拟机,使用 virsh list --all 查看
d. 开启vm2,修改IP地址、主机名
virsh start vm2
d.1 修改IP地址
vi /etc/sysconfig/network-scripts/ ifcfg-eth0 静态配置
BOOTPROTO=static
IPADDR=192.168.0.252
GATEWAY=192.168.0.1
NETMASK=255.255.255.0
DNS1=222.88.88.88
DNS2=222.85.85.85
重启网络:service network restart
d.2修改主机名
hostname vm2
vi /etc/hostname (echo ‘vm2’ > /etc/hostname)
e. reboot 重启虚拟机
2. 将虚拟机镜像迁移到其他服务器上
a. 先将虚拟机的配置文件和镜像文件放到传输到新服务器上
虚拟机配置文件路径:/etc/libvirt/qemu/vm2.xml
虚拟机镜像文件路径:/home/kvm-img/vm2.img
b.在新服务器上编辑要迁移过来的虚拟机
把vm2.xml放在新服务器的/etc/libvirt/qemu/目录下,把vm2.img放在新服务器的/home/kvm-img/目录下
编辑vm2.xml文件,将里面所有vm2替换为vm3,然后把UUID换为新的(UUID在线生成)
c.定义新虚拟机
virsh define /etc/libvirt/qemu/vm3.xml
d.给新虚拟机配置新主机名和ip等
vrish start --all ,virsh start vm3, virsh console vm3
3. 克隆或迁移后的虚拟机使用VNC连接
重新指定VNC的端口号,将 /etc/libvirt/qemu/vm3.xml 中的VNC端口号修改你需要的值,然后在防火墙中放行该端口号
七、虚拟机快照
KVM虚拟机要使用快照功能,磁盘格式必须是qcow2,通过查看虚拟机配置文件获取,路径:/etc/libvirt/qemu/
1、创建快照
[[email protected] ~]# virsh snapshot-create vm2
已生成域快照 1508564438
快照配置文件在/var/lib/libvirt/qemu/snapshot/虚拟机名称/下
2、查看当前虚拟机快照版本信息
[[email protected] ~]# virsh snapshot-current vm2
<domainsnapshot>
<name>1508564438</name> //快照版本号
<state>shutoff</state>
<creationTime>1508564438</creationTime>
<memory snapshot=‘no‘/>
…………. //省略部分内容
3、查看虚拟机镜像快照信息
[[email protected] ~]# virsh snapshot-list vm2
名称 生成时间 状态
------------------------------------------------------------
1508564438 2017-10-21 13:40:38 +0800 shutoff
4、再次创建新快照
[[email protected] ~]# virsh snapshot-create vm2
已生成域快照 1508564761
5、查看快照信息
[[email protected] ~]# virsh snapshot-list vm2
名称 生成时间 状态
------------------------------------------------------------
1508564438 2017-10-21 13:40:38 +0800 shutoff
1508564761 2017-10-21 13:46:01 +0800 shutoff
6、恢复虚拟机状态至某个版本
6.1先关闭虚拟机
virsh shutdown vm2
6.2 确认恢复的快照时间进行版本恢复
virsh snapshot-revert vm2 1508564438
7、删除快照
7.1 查看虚拟机快照
qemu-img info vm2.qcow2
7.2 删除快照
virsh snapshot-delete vm2 1508564761
已删除域快照 1508564761
八、virsh常用命令篇
1、查看运行的虚拟机
virsh list
2、查看所有的虚拟机
virsh list –all
3、开启虚拟机
virsh start vm01 或virsh create /etc/libvert/qemu/vm01.xml(通过配置文件的方式)
4、连接虚拟机
virsh console +域名(虚拟机的名称)
5、退出虚拟机
ctrl+]
6、关闭虚拟机
6.1 virsh shutdown +域名
这个时候在virsh list发现 test02这个虚拟机还是在运行的,并没有关闭。我们需要安装一个acpid的服务并启动它,什么是ACPI? ACPI是Advanced Configuration and PowerInterface缩写,高级配置和电源管理接口。acpid中的d则代表daemon。Acpid是一个用户空间的服务进程,它充当linux内核与应用程序之间通信的接口,负责将kernel中的电源管理事件转发给应用程序。
Acpid是一个用户空间的服务进程,它充当linux内核与应用程序之间通信的接口,负责将kernel中的电源管理事件转发给应用程序。
其实,说明了就是通过这个服务来执行电源关闭的动作,这也是为什么我们执行virsh shutdown +域名无法关机的原因。
(虚拟机安装acpid服务)
yum install -y acpid
systemctl start acpid.service
systemctl enable acpid.service
如果此时我没法进入虚拟机安装acpi协议的话,那么就无法关掉该虚拟机,此时可以用下面这种方法。
6.2 virsh destroy +域名
强制关闭电源
7、挂起虚拟机
virsh suspend +域名
8、恢复被挂起的虚拟机
virsh resume +域名
9、配置开机自启动虚拟机
virsh autostart +域名
autostart目录是kvm虚拟机开机自启动目录,可以看到该目录中有KVM配置文件链接
10、取消自动启动
virsh auotstart --disable +域名
11、彻底删除虚拟机
11.1删除虚拟机
virsh destroy +域名
11.2解除标记
virsh undefine +域名
说明:该命令只是删除vm01的配置文件,并不删除虚拟磁盘文件
附:重新定义虚拟机配置文件
mv /root/vm01.xml /etc/libvirt/qemu/vm01.xml (备份的虚拟机文件放到虚拟机配置文件存放路径)
virsh define /etc/libvirt/qemu/vm01.xml
11.3删除虚拟机文件
12、启动虚拟机并进入该虚拟机
virsh start 域名 --console
13、导出kvm虚拟机配置文件
virsh dumpxml vm01 > /root/vm01.xml
kvm虚拟机配置文件可以通过这种方式进行备份
14、编辑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 oeltest01
<graphics type=‘vnc‘ port=‘5910‘ autoport=‘no‘ listen=‘0.0.0.0‘>
<listen type=‘address‘ address=‘0.0.0.0‘/>
</graphics>
配置VNC的配置文件,port是指定端口号,autoport是自己分配端口号
3、查看vnc
netstat –tulnp
十、kvm虚拟机时间配置
在虚拟化环境中,虚拟机在长时间运行过程中,时间会变慢,通常的作法是配置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虚拟机相关步骤的主要内容,如果未能解决你的问题,请参考以下文章