Centos7安装kvm虚拟机(centos6也可以)
1.本教程以vmware虚拟机为例子,在其中的centos7虚拟机上安装kvm虚拟机
首先开启虚拟化模块
2.安装qemu-kvm 、libvirt
yum install-y qemu-kvm libvirt,其中qemu-kvm用来创建虚拟机硬盘,libvirt 用来管理虚拟机
qemu下载地址:https://https://www.sodocs.net/doc/466523283.html,/(多种版本)
3.安装virt-install,yum -y install virt-install(virt-install用来创建虚拟机)
4.启动libvirtd并且设置开机自启动,systemctl start libvirtd 、systemctl enable libvirtd
5.创建虚拟机硬盘,(使用qemu来创建一个虚拟机硬盘,大小可以自定义),qemu-img create -f raw /opt/CentOS-7-x86_64.raw 10G,硬盘名称为CentOS-7-x86_64.raw,硬盘大小为10G
6.也可以用qcow2格式,此格式支持快照但是速度没有raw的快,命令方式类似,qemu-img create -f qcow2 /opt/centos.qcow2 10G
7.在根目录下创建一个文件夹iso,将centos7的镜像上传到此目录下
8.利用virt-install 创建一个名称为CentOS-7-x86_64的虚拟机,内存为1024
9.virt-install --virt-type kvm --name=centos --ram 1024 --vcpus=16 --cdrom=/iso/centos.iso --disk path=/data2/centos.raw --network bridge=br0 --graphics vnc,listen=0.0.0.0,port=5988, --force
--autostart
10.如果启动报错:ERROR internal error: process exited while connecting to monitor: 2019-05-10T17:10:20.075431Z qemu-kvm: -drive
file=/root/window.iso,format=raw,if=none,id=drive-ide0-0-1,readonly=o n: could not open disk image /root/window.iso: Could not open
'/root/window.iso': Permission denied
Domain installation does not appear to have been successful.
If it was, you can restart your domain by running:
virsh --connect qemu:///system start windows
otherwise, please restart your installation.
表示权限不足可以编辑配置文件 vi /etc/libvirtd/qemu.conf文件
取消#user=”root” #group=”root”注释
然后重启libvirtd systemctl restart libvirtd
11.其中--name表示名称,ram表示内存为1024M,--vcpus表示cpu核数,cdrom 表示镜像所在目录,disk表示创建的虚拟机硬盘位置,port指定哪个端口安装时通过vnc连接就用哪个端口连接,安装多台机器时可以指定不同的端口然后来分别安装不同的操作系统,--graphics表示指定图形界面工具
表示安装成功
12.接下来通过vnc来连接虚拟机进行安装,地址为宿主机地址,端口为5988(防火墙提前开放端口)
如果报错提示如下:
修改成rgb222连接即可
13.然后开始正常的系统安装过程,不在赘述
14.安装成功后可以通过命令virsh list --all
上述表示虚拟机是关闭状态
开启kvm虚拟机命令virsh start CentOS-7-x86_64,关闭虚拟机命令为virsh shutdown CentOS-7-x86_64 重启为virsh reboot CentOS-7-x86_64
有的时候virsh shutdown 命令不能关闭虚拟机,此时要在虚拟机(不是宿主)
内安装acpid软件并设置开机自启动,然后就可以执行shutdown|reboot来关闭和重启了了
yum -y install acpid
service acpid start
chkconfig acpid on
如果想连接此虚拟机还是要通过vnc来连接
登陆安装net-tools 安装后才可以执行ifconfig命令
ip地址走的是宿主机的虚拟网卡virbr0,宿主机网卡如下:
上图中的虚拟机默认的是nat模式,内部的虚拟机可以访问外部网络,但是外部网络无法访问内部的虚拟机(xshell无法连接),可以通过配置成桥接的方式来实现xshell连接内部虚拟机
15.配置桥接网络:
系统如果安装了桌面环境,网络由NetworkManager来管理,它不支持桥接网络,所以需要先关闭NetworkManager,一定要关闭,否则容易报错,配置完桥接后还要启动NetworkManager要不桌面无法使用,是黑屏状态。可以执行如下命令关闭:systemctl stop NetworkManager systemctl restart network,如果不关闭它也可以在下面创建网桥后在配置文件中加上参数"NM_CONTROLLED=no"即可
创建网桥:
virsh iface-bridge e ns33 br0
创建完成后可以ifconfig可以看到br0网卡信息
编辑虚拟机配置文件,修改如下内容:virsh edit CentOS-7-x86_64
上图中的mac地址可以自定义,在这里配置即可,无需再去虚拟机的网卡里配置重启虚拟机virsh shutdown CenoOS-7-x86_64 virsh start CentOS-7-x86_64
ip地址已和宿主机相同,可以访问外网并且xshell也可以连接
也可以手动配置静态ip,如果还是没有显示eth0网卡信息,可以执行ifup eth0命令开启网卡,配置文件中的onboot一定设置成yes
至此,搭建kvm虚拟机完成!!!
附加:
16.如果要安装多个kvm虚拟机那么步骤同上,安装完操作系统后同样配置网络方式更改为网桥模式,例如又安装了centos6.5系统
安装完成后编辑文件,配置网桥信息:
然后编辑虚拟机内的网卡配置文件,添加自定义网卡信息:
重启网卡service network restart 测试上网情况以及xshell连接
可以正常连接
17.如果一台机器上安装了多台kvm虚拟机,如果想通过vnc连接只能输入对应的端口号(从5900开始递增),此种方法过于麻烦,可以通过安装图形化管理界面virt-manager来管理所有虚拟机(前提是宿主机已经安装了桌面环境,gnome 或者kde桌面都可以,建议kde桌面,安装简单)
在宿主机命令行界面执行yum -y install virt-manager安装即可
宿主机安装vnc 通过vnc连接宿主机桌面环境(不是连接内部机器),并打开终端命令行,在其中执行virt-manager,弹出界面如下:
如果右键关机键无法实现关机可以从此处关机
windows安装
安装window的方法和上面一样,创建的磁盘空间要大一些,最好20G以上
qemu-img create -f raw /data/window.raw 20G以上
也可以用qcow2格式
qemu-img create -f qcow2 /data/window.qcow2 20G(建议用qcow2因为支持
快照但是速度没有raw快)
18.virt-install --virt-type kvm --name window --ram 1024
--cdrom=/iso/window.iso --disk path=/data/window.qcow2 --network
bridge=br0 --graphics vnc,listen=0.0.0.0,port=5958, --force --autostart
然后通过vnc 端口5958进行连接
安装过程中可能重启数次,可能关闭后不能启动需要手动执行命令virsh start windows 启动继续完成安装
.创建密码:
默认也是nat模式,同理去配置文件中更改成网桥模式,如果ipconfig没有网卡信息就手动配置下自定义的
virsh edit windows
更改后重启机器
如图,已变成桥接模式并且可以本地通过mstsc访问
kvm安装的虚拟机默认网卡为rtl8139此网卡在网路负载过重的情况下会出现崩溃的情况导致无法上网,如果出现此种情况可以将默认网卡修改为e1000 命令如下:(先关机)
上述命令执行完后启动机器即可
同样可以通过virt-manager来管理
如果手动安装完虚拟机后在virt-manager里看不到那么可以先断开virt-manager与虚拟机的连接然后在重新连接即可看到
Virt-manager来安装虚拟机,此种方法简单,操作如图所示:
选择镜像位置
设置内存和CPU
创建磁盘空间
自定义名称
点击finish即可开始安装!!
kvm快照管理
kvm虚拟机默认使用raw的镜像格式,优点是性能好,速度快,但是缺点是不支持一些新的功能,如镜像、zlib磁盘压缩、AES加密等,要使用镜像功能需要将raw装换为qcow2格式进行快照备份
1.查看现有磁盘镜像格式
qemu-img info centos.raw
2.关闭虚拟机将raw转换成qcow2格式
qemu-img convert -f raw -O qcow2 centos.raw centos.qcow2
-f表示源镜像格式,-O表示目标镜像格式(不是零是大写的欧)
还将原格式的拷贝了一份
再次查询当前镜像格式发现已经变成了qcow2
3.修改虚拟机配置文件,将配置文件中的raw格式修改成qcow2格式
4.对虚拟机centos6.9进行创建快照
virsh snapshot-create-as centos6.9 centos
其中centos属于快照别名,通过as制定的,也可以不加as不加别名得到的就是一个版本号5.查看虚拟机快照版本
virsh snapshot-list centos6.9
virsh snapshot-current centos6.9可以看到版本号
创建的快照默认在/var/lib/libvirt/qemu/snapshot目录下
6.恢复虚拟机快照,恢复之前要先关闭虚拟机,virsh domstate centos6.9确认是否为关闭状态
7.virsh snapshot-revert centos6.9 centos
恢复之前可以通过virsh snapshot-list centos6.9查看当前镜像下有几个快照然后选怎恢复哪个版本的快照
8.删除虚拟机快照
virsh snapshot-delete centos6.9 centos
kvm虚拟机重命名
1.查看所有kvm虚拟机virsh list --all
2.重命名虚拟机需要先将虚拟机关闭,然后导出其xml文件
cd /etc/libvirt/qemu //进入xml文件目录下
virsh dumpxml centos6.9 > centos.xml
centos6为重命名之后的虚拟机名称,编辑centos6.xml文件
3.使用virsh undefine命令删除之前的虚拟机,根据新的xml文件定义新的kvm虚拟机
4.virsh undefine centos6.9 //删除原来的虚拟机
5.virsh define /etc/libvirt/centos
6.xml //重新定义新的虚拟机
6.再次使用virsh list --all命令查看结果
注意:当虚拟机下面存在快照时无法用virsh undefine来删除,需要先将快照删除
报错如下:
更改虚拟机和内存时可以直接进入文件中修改virsh edit centos6
kvm虚拟机克隆
克隆可以手动克隆也可以选择通过virt-manager的方式来克隆
virt-manager克隆方式简单只需要先关闭虚拟机后然后在图形界面邮件选择clone即可,例如: