kvm虚拟化完整教程.docx
《kvm虚拟化完整教程.docx》由会员分享,可在线阅读,更多相关《kvm虚拟化完整教程.docx(29页珍藏版)》请在冰豆网上搜索。
kvm虚拟化完整教程
Centos7安装kvm虚拟机(centos6也可以)
1.本教程以vmware虚拟机为例子,在其中的centos7虚拟机上安装kvm虚拟机
首先开启虚拟化模块
2.安装qemu-kvm、libvirt
yuminstall-yqemu-kvmlibvirt,其中qemu-kvm用来创建虚拟机硬盘,libvirt用来管理虚拟机
qemu下载地址:
https:
//download.qemu.org/(多种版本)
3.安装virt-install,yum-yinstallvirt-install(virt-install用来创建虚拟机)
4.启动libvirtd并且设置开机自启动,systemctlstartlibvirtd、systemctlenablelibvirtd
5.创建虚拟机硬盘,(使用qemu来创建一个虚拟机硬盘,大小可以自定义),qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G,硬盘名称为CentOS-7-x86_64.raw,硬盘大小为10G
6.也可以用qcow2格式,此格式支持快照但是速度没有raw的快,命令方式类似,qemu-imgcreate-fqcow2/opt/centos.qcow210G
7.在根目录下创建一个文件夹iso,将centos7的镜像上传到此目录下
8.利用virt-install创建一个名称为CentOS-7-x86_64的虚拟机,内存为1024
9.virt-install--virt-typekvm--name=centos--ram1024--vcpus=16--cdrom=/iso/centos.iso--diskpath=/data2/centos.raw--networkbridge=br0--graphicsvnc,listen=0.0.0.0,port=5988,--force--autostart
10.如果启动报错:
ERRORinternalerror:
processexitedwhileconnectingtomonitor:
2019-05-10T17:
10:
20.075431Zqemu-kvm:
-drivefile=/root/window.iso,format=raw,if=none,id=drive-ide0-0-1,readonly=on:
couldnotopendiskimage/root/window.iso:
Couldnotopen'/root/window.iso':
Permissiondenied
Domaininstallationdoesnotappeartohavebeensuccessful.
Ifitwas,youcanrestartyourdomainbyrunning:
virsh--connectqemu:
///systemstartwindows
otherwise,pleaserestartyourinstallation.
表示权限不足可以编辑配置文件vi/etc/libvirtd/qemu.conf文件
取消#user=”root”#group=”root”注释
然后重启libvirtdsystemctlrestartlibvirtd
11.其中--name表示名称,ram表示内存为1024M,--vcpus表示cpu核数,cdrom表示镜像所在目录,disk表示创建的虚拟机硬盘位置,port指定哪个端口安装时通过vnc连接就用哪个端口连接,安装多台机器时可以指定不同的端口然后来分别安装不同的操作系统,--graphics表示指定图形界面工具
表示安装成功
12.接下来通过vnc来连接虚拟机进行安装,地址为宿主机地址,端口为5988(防火墙提前开放端口)
如果报错提示如下:
修改成rgb222连接即可
13.然后开始正常的系统安装过程,不在赘述
14.安装成功后可以通过命令virshlist--all
上述表示虚拟机是关闭状态
开启kvm虚拟机命令virshstartCentOS-7-x86_64,关闭虚拟机命令为virshshutdownCentOS-7-x86_64重启为virshrebootCentOS-7-x86_64
有的时候virshshutdown命令不能关闭虚拟机,此时要在虚拟机(不是宿主)内安装acpid软件并设置开机自启动,然后就可以执行shutdown|reboot来关闭和重启了了
yum-yinstallacpid
serviceacpidstart
chkconfigacpidon
如果想连接此虚拟机还是要通过vnc来连接
登陆安装net-tools安装后才可以执行ifconfig命令
ip地址走的是宿主机的虚拟网卡virbr0,宿主机网卡如下:
上图中的虚拟机默认的是nat模式,内部的虚拟机可以访问外部网络,但是外部网络无法访问内部的虚拟机(xshell无法连接),可以通过配置成桥接的方式来实现xshell连接内部虚拟机
15.配置桥接网络:
系统如果安装了桌面环境,网络由NetworkManager来管理,它不支持桥接网络,所以需要先关闭NetworkManager,一定要关闭,否则容易报错,配置完桥接后还要启动NetworkManager要不桌面无法使用,是黑屏状态。
可以执行如下命令关闭:
systemctlstopNetworkManagersystemctlrestartnetwork,如果不关闭它也可以在下面创建网桥后在配置文件中加上参数"NM_CONTROLLED=no"即可
创建网桥:
virshiface-bridgeens33br0
创建完成后可以ifconfig可以看到br0网卡信息
编辑虚拟机配置文件,修改如下内容:
virsheditCentOS-7-x86_64
上图中的mac地址可以自定义,在这里配置即可,无需再去虚拟机的网卡里配置
重启虚拟机virshshutdownCenoOS-7-x86_64virshstartCentOS-7-x86_64
ip地址已和宿主机相同,可以访问外网并且xshell也可以连接
也可以手动配置静态ip,如果还是没有显示eth0网卡信息,可以执行ifupeth0命令开启网卡,配置文件中的onboot一定设置成yes
至此,搭建kvm虚拟机完成
附加:
16.如果要安装多个kvm虚拟机那么步骤同上,安装完操作系统后同样配置网络方式更改为网桥模式,例如又安装了centos6.5系统
安装完成后编辑文件,配置网桥信息:
然后编辑虚拟机内的网卡配置文件,添加自定义网卡信息:
重启网卡servicenetworkrestart测试上网情况以及xshell连接
可以正常连接
17.如果一台机器上安装了多台kvm虚拟机,如果想通过vnc连接只能输入对应的端口号(从5900开始递增),此种方法过于麻烦,可以通过安装图形化管理界面virt-manager来管理所有虚拟机(前提是宿主机已经安装了桌面环境,gnome或者kde桌面都可以,建议kde桌面,安装简单)
在宿主机命令行界面执行yum-yinstallvirt-manager安装即可
宿主机安装vnc通过vnc连接宿主机桌面环境(不是连接内部机器),并打开终端命令行,在其中执行virt-manager,弹出界面如下:
点击对应的虚拟机右键既可选择开启/关闭/重启虚拟机
如果右键关机键无法实现关机可以从此处关机
windows安装
安装window的方法和上面一样,创建的磁盘空间要大一些,最好20G以上
qemu-imgcreate-fraw/data/window.raw20G以上
也可以用qcow2格式
qemu-imgcreate-fqcow2/data/window.qcow220G(建议用qcow2因为支持快照但是速度没有raw快)
18.virt-install--virt-typekvm--namewindow--ram1024--cdrom=/iso/window.iso--diskpath=/data/window.qcow2--networkbridge=br0--graphicsvnc,listen=0.0.0.0,port=5958,--force--autostart
然后通过vnc端口5958进行连接
安装过程中可能重启数次,可能关闭后不能启动需要手动执行命令virshstartwindows启动继续完成安装
.创建密码:
默认也是nat模式,同理去配置文件中更改成网桥模式,如果ipconfig没有网卡信息就手动配置下自定义的
virsheditwindows
更改后重启机器
如图,已变成桥接模式并且可以本地通过mstsc访问
kvm安装的虚拟机默认网卡为rtl8139此网卡在网路负载过重的情况下会出现崩溃的情况导致无法上网,如果出现此种情况可以将默认网卡修改为e1000命令如下:
(先关机)
上述命令执行完后启动机器即可
同样可以通过virt-manager来管理
如果手动安装完虚拟机后在virt-manager里看不到那么可以先断开virt-manager与虚拟机的连接然后在重新连接即可看到
Virt-manager来安装虚拟机,此种方法简单,操作如图所示:
选择镜像位置
设置内存和CPU
创建磁盘空间
自定义名称
点击finish即可开始安装!
!
kvm快照管理
kvm虚拟机默认使用raw的镜像格式,优点是性能好,速度快,但是缺点是不支持一些新的功能,如镜像、zlib磁盘压缩、AES加密等,要使用镜像功能需要将raw装换为qcow2格式进行快照备份
1.查看现有磁盘镜像格式
qemu-imginfocentos.raw
2.关闭虚拟机将raw转换成qcow2格式
qemu-imgconvert-fraw-Oqcow2centos.rawcentos.qcow2
-f表示源镜像格式,-O表示目标镜像格式(不是零是大写的欧)
还将原格式的拷贝了一份
再次查询当前镜像格式发现已经变成了qcow2
3.修改虚拟机配置文件,将配置文件中的raw格式修改成qcow2格式
4.对虚拟机centos6.9进行创建快照
virshsnapshot-create-ascentos6.9centos
其中centos属于快照别名,通过as制定的,也可以不加as不加别名得到的就是一个版本号
5.查看虚拟机快照版本
virshsnapshot-listcentos6.9
virshsnapshot-currentcentos6.9可以看到版本号
创建的快照默认在/var/lib/libvirt/qemu/snapshot目录下
6.恢复虚拟机快照,恢复之前要先关闭虚拟机,virshdomstatecentos6.9确认是否为关闭状态
7.virshsnapshot-revertcentos6.9centos
恢复之前可以通过virshsnapshot-listcentos6.9查看当前镜像下有几个快照然后选怎恢复哪个版本的快照
8.删除虚拟机快照
virshsnapshot-deletecentos6.9centos
kvm虚拟机重命名
1.查看所有kvm虚拟机virshlist--all
2.重命名虚拟机需要先将虚拟机关闭,然后导出其xml文件
cd/etc/libvirt/qemu//进入xml文件目录下
virshdumpxmlcentos6.9>centos.xml
centos6为重命名之后的虚拟机名称,编辑centos6.xml文件
3.使用virshundefine命令删除之前的虚拟机,根据新的xml文件定义新的kvm虚拟机
4.virshundefinecentos6.9//删除原来的虚拟机
5.virshdefine/etc/libvirt/centos6.xml//重新定义新的虚拟机
6.再次使用virshlist--all命令查看结果
注意:
当虚拟机下面存在快照时无法用virshundefine来删除,需要先将快照删除
报错如下:
更改虚拟机和内存时可以直接进入文件中修改virsheditcentos6
kvm虚拟机克隆
克隆可以手动克隆也可以选择通过virt-manager的方式来克隆
virt-manager克隆方式简单只需要先关闭虚拟机后然后在图形界面邮件选择clone即可,例如:
克隆完成后新的克隆机的mac地址都会自动变更成新的,但是原来安装的机器的vnc端口不会变(如果是通过vnc来安装的).此时我们需要更改原端口
然后就可以通过vnc和端口来连接机器连接之后更改ip地址,然后重启网卡或者重启机器后即可正常使用
手动克隆:
如果虚拟机出现下面这种情况:
表示挂起
可以使用命令virshresumek8s来唤醒虚拟机
如果要强制关闭虚拟机则使用virshdestroyk8s
更改虚拟机磁盘位置
当虚拟机所在的磁盘空间满了之后需要将部分虚拟机转移到另一个磁盘中,操作方法如下
首先将对应的磁盘文件转移到想要转移的地方,例如原来在/data目录下现在转移到/vnetoo目录下mv/data/ansible.img/vnetoo
移动之后然后修改对应的xml文件(修改之前先备份),xml文件在/etc/libvirt/qemu/目录下
修改一定要采用virsheditansible的方式修改vi/vim方法修改后无法生效
修改后完后执行virshstartansible即可重新启动虚拟机
将raw格式的虚拟机装换成qcow2格式也可以起到压缩空间的作用,qcow2属于动态的空间会随着使用量的增加而增加,例如原来设定的空间为20G,那么做成qcow2格式的可能只有几个G,然后随着使用量的增加而增加,最后达到峰值20G
禁止kvm虚拟机自启动命令:
virshautostart--disablecentos7.0
通过xml来恢复虚拟机:
kvm虚拟机静态迁移:
可以将B物理机器上的虚拟机的磁盘文件以及xml配置文件拷贝到A机器上然后重新定义机器即可,例如:
在A机器上执行:
将B机器上的磁盘文件拷贝到A机器的指定目录下
scproot@B机器:
/home/centos.raw/home/
scproot@B机器:
/etc/libvirt/qemu/centos.xml/etc/libvirt/qemu/
重新定义机器:
virshdefine/etc/libvirt/qemu/centos.xml
kvm虚拟机动态迁移:
1.创建共享存储:
(nfs)
2.两台机器挂在共享存储
3.启动动态迁移
4.创建迁移互的配置文件
5.重新定义虚拟机
将vmware虚拟机导入到kvm中
windows安装vmware后在安装目录下会有以vmdk结尾的镜像文件如图:
此镜像即为vmware的镜像文件,上图中只有一个镜像文件表示创建时选择的是将磁盘存储为单个文件,如图:
(建议创建时选择单个文件,可以提高磁盘性能)
如果创建时选择的是多个文件,则需要使用命令将多个文件合并成一个文件,如图表示多个文件
合并方法:
以管理员身份运行cmd并进入到vmware安装路径下
用vmware自带的工具vmware-vdiskmanager.exe来合并多个文件,命令如下
vmware-vdiskmanager.exe-r"D:
\CentOS7.vmdk"-t0"D:
\centos7.vmdk"
注意:
合并的时候要以总文件来作为命令来执行不要以下面的0001、0002等文件作为命令行,执行上述命令后下面的分支自然会和总的文件合并到一起
合并之后将磁盘文件拷贝到kvm宿主机目录下,然后将其格式转换成qcow2格式,例如
Cen.img磁盘文件的格式即为qcow2
装换之后可以通过virt-manager来启动虚拟机(直接本地导入存在的磁盘文件即可)
选择刚才转换后的磁盘文件然后下一步即可打开虚拟机
至此vmware中虚拟机导入kvm中成功
windows虚拟机扩容:
关闭Windows机器
qemu-imgresizewin7.img+120G(原有磁盘镜像上添加空间即可)
执行完成后进入计算机-管理-磁盘管理-新建简单卷即可
linux系统内部kvm虚拟机扩容:
内部虚拟机有两种格式raw和qcow2格式,本教程扩容方式采用新增一个磁盘的方式实现扩容(简单方便)
1.首先创建磁盘空间文件:
qemu-imgcreate-frawtest.raw10G,表示新增一块磁盘并且空间大小为10G
2.关闭要扩容的虚拟机virshshutdowncentos6
3.编辑配置文件,virsheditcentos6
如图可以看到,磁盘名称要改成vdb然后添加cache=’none’即可
4.启动虚拟机virshstartcentos6
5.连接虚拟机后执行fdisk-l查看磁盘信息发现多了/dev/vdb磁盘
6.格式化磁盘:
mkfs.ext4/dev/vdb
7.执行mount/dev/vdb/test挂载即可
virshautostart机器名:
开启自启动
virshautostart--disable机器名关闭自启动