admin 管理员组

文章数量: 887021


2023年12月17日发(作者:博客相册登陆)

Centos7安装kvm虚拟机(centos6也可以)

1. 本教程以vmware虚拟机为例子,在其中的centos7虚拟机上安装kvm虚拟机

首先开启虚拟化模块

2. 安装qemu-kvm 、libvirt

yum install -y qemu-kvm libvirt,其中qemu-kvm用来创建虚拟机硬盘,libvirt用来管理虚拟机

qemu下载地址:/(多种版本)

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_ 10G,硬盘名称为CentOS-7-x86_,硬盘大小为10G

6. 也可以用qcow2格式,此格式支持快照但是速度没有raw的快,命令方式类似,qemu-img create -f qcow2 /opt/2 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/ --disk path=/data2/ --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/,format=raw,if=none,id=drive-ide0-0-1,readonly=on: could not open disk image /root/: Could not open

'/root/': 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/文件

取消#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 ens33 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/ 20G以上

也可以用qcow2格式

qemu-img create -f qcow2 /data/2 20G(建议用qcow2因为支持快照但是速度没有raw快)

18. virt-install --virt-type kvm --name window --ram 1024

--cdrom=/iso/ --disk path=/data/2 --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

2. 关闭虚拟机将raw转换成qcow2格式

qemu-img convert -f raw -O qcow2 2

-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 >

centos6为重命名之后的虚拟机名称,编辑文件

3. 使用virsh undefine命令删除之前的虚拟机,根据新的xml文件定义新的kvm虚拟机

4. virsh undefine centos6.9 //删除原来的虚拟机

5. virsh define /etc/libvirt/ //重新定义新的虚拟机

6. 再次使用virsh list --all命令查看结果

注意:当虚拟机下面存在快照时无法用virsh undefine来删除,需要先将快照删除

报错如下:

更改虚拟机和内存时可以直接进入文件中修改virsh edit centos6

kvm虚拟机克隆

克隆可以手动克隆也可以选择通过virt-manager的方式来克隆

virt-manager克隆方式简单 只需要先关闭虚拟机后然后在图形界面邮件选择clone即可,例如:

克隆完成后新的克隆机的mac地址都会自动变更成新的,但是原来安装的机器的vnc端口不会变(如果是通过vnc来安装的).此时我们需要更改原端口

然后就可以通过vnc和端口来连接机器 连接之后更改ip地址,然后重启网卡或者重启机器后即可正常使用

手动克隆:

如果虚拟机出现下面这种情况:表示挂起

可以使用命令virsh resume k8s来唤醒虚拟机

如果要强制关闭虚拟机则使用virsh destroy k8s

更改虚拟机磁盘位置

当虚拟机所在的磁盘空间满了之后需要将部分虚拟机转移到另一个磁盘中,操作方法如下

首先将对应的磁盘文件转移到想要转移的地方,例如原来在/data目录下 现在转移到/vnetoo目录下 mv /data/ /vnetoo

移动之后然后修改对应的xml文件(修改之前先备份),xml文件在/etc/libvirt/qemu/目录下

修改一定要采用virsh edit ansible的方式修改 vi /vim方法修改后无法生效

修改后完后执行virsh start ansible即可重新启动虚拟机

将raw格式的虚拟机装换成qcow2格式也可以起到压缩空间的作用,qcow2属于动态的空间会随着使用量的增加而增加,例如原来设定的空间为20G,那么做成qcow2格式的可能只有几个G,然后随着使用量的增加而增加,最后达到峰值20G

禁止kvm虚拟机自启动命令:virsh autostart --disable centos7.0

通过xml来恢复虚拟机:

kvm虚拟机静态迁移:可以将B物理机器上的虚拟机的磁盘文件以及xml配置文件拷贝到A机器上然后重新定义机器即可,例如:

在A机器上执行:将B机器上的磁盘文件拷贝到A机器的指定目录下

scp root@B机器:/home/ /home/

scp root@B机器:/etc/libvirt/qemu/ /etc/libvirt/qemu/

重新定义机器:virsh define /etc/libvirt/qemu/

kvm虚拟机动态迁移:

1. 创建共享存储:(nfs)

2. 两台机器挂在共享存储

3. 启动动态迁移

4. 创建迁移互的配置文件

5. 重新定义虚拟机

将vmware虚拟机导入到kvm中

windows安装vmware后在安装目录下会有以vmdk结尾的镜像文件 如图:

此镜像即为vmware的镜像文件,上图中只有一个镜像文件表示创建时选择的是将磁盘存储为单个文件,如图:(建议创建时选择单个文件,可以提高磁盘性能)

如果创建时选择的是多个文件,则需要使用命令将多个文件合并成一个文件,如图表示多个文件

合并方法:以管理员身份运行cmd并进入到vmware安装路径下

用vmware自带的工具vmware- 来合并多个文件,命令如下

-r "D:" -t 0 "D:"

注意:合并的时候要以总文件来作为命令来执行 不要以下面的0001、0002等文件作为命令行,执行上述命令后下面的分支自然会和总的文件合并到一起

合并之后将磁盘文件拷贝到kvm宿主机目录下,然后将其格式转换成qcow2格式,例如

磁盘文件的格式即为qcow2

装换之后可以通过virt-manager来启动虚拟机(直接本地导入存在的磁盘文件即可)

选择刚才转换后的磁盘文件然后下一步即可打开虚拟机

至此vmware中虚拟机导入kvm中成功

windows虚拟机扩容:

关闭Windows机器

qemu-img resize +120G(原有磁盘镜像上添加空间即可)

执行完成后进入计算机-管理-磁盘管理-新建简单卷即可

linux系统内部kvm虚拟机扩容:

内部虚拟机有两种格式raw和qcow2格式,本教程扩容方式采用新增一个磁盘的方式实现扩容(简单方便)

1. 首先创建磁盘空间文件:qemu-img create -f raw 10G, 表示新增一块磁盘并且空间大小为10G

2. 关闭要扩容的虚拟机 virsh shutdown centos6

3. 编辑配置文件,virsh edit

centos6如图可以看到,磁盘名称要改成vdb 然后添加cache=’none’即可

4.

启动虚拟机 virsh start centos6

5. 连接虚拟机后执行fdisk -l 查看磁盘信息发现多了/dev/vdb磁盘

6. 格式化磁盘:4 /dev/vdb

7. 执行mount /dev/vdb /test挂载即可

virsh autostart

virsh autostart --disable

机器名:开启自启动机器名关闭自启动


本文标签: 安装 文件 磁盘 格式 机器