黑帽联盟

标题: kvm虚拟化,使用virt-install创建虚拟机,virsh管理虚拟机 [打印本页]

作者: admin    时间: 2019-12-3 21:25
标题: kvm虚拟化,使用virt-install创建虚拟机,virsh管理虚拟机
相关链接kvm虚拟化,使用qemu-kvm创建和管理虚拟机(全网最全,最完善)

继之前的一篇文章,我们继续讲解今天的课程:kvm虚拟化,使用virt-install创建虚拟机,virsh管理虚拟机,同时也可以使用virt-manager图形化方式创建虚拟机并管理虚拟机

思考:之前我们通过qemu-kvm来创建管理虚拟机,我们是否可以跨物理主机平台使用qemu-kvm来远程创建虚拟机并管理虚拟机呢?

这里qemu-kvm实现不了,所以这是它的短板之处,所以这里我们使用到了virt-install来远程连接创建虚拟机,之后就可以virsh远程连接管理虚拟机了,图形化virt-manager亦之

当然这些工具最终还是要依赖最底层,最原始的工具qemu-kvm来创建虚拟机

环境:
系统:centos6.7 | 同时也是dhcp服务器,给我们创建的虚拟机动态分配地址,并通过web方式和kickstart自动化安装虚拟机
ip地址:192.168.87.60

简单介绍:
kvm相关安装包及其作用


加载kvm模块以及网络桥接方式,这里就不讲述了,之前都说过,这里我们直接安装相关包来使用virsh、virt-install、virt-manager以及virt-viewer等

centos6安装方式:yum install libvirt libvirt-client python-virtinst virt-manager virt-viewer

centos7安装方式:yum install libvirt libvirt-client virt-install virt-manager virt-viewer

这里提一下:之前我们是通过以下这种方式把物理网卡eth0关联到桥接网卡br0上的
ip addr del 172.31.225.246/255.255.255.0 dev eth0; brctl addif br0 eth0; ip addr add 172.31.225.246/255.255.255.0 dev br0; route add default gw 172.31.225.1

这里我们也可以使用virsh一条命令搞定,命令如下:
virsh iface-bridge eth0 br0 --no-stp;route add default gw 172.31.225.1

下面我们正式使用virt-install创建虚拟机,所使用到的参数和qemu-kvm还是有些差别的,由于我们使用的是pxe方式安装虚拟机的,所以我们需要提前准备配置好pxe相关的环境,教程我之前也发过,Kickstart+HTTP+DHCP+TFTP全自动批量安装部署Linux系统 ,pxe引导文件放在本地tftp对应的目录里,web镜像和ks文件,放在我的物理机里面,用nginx搭建的
13.png

12.png
安装之前,创建保存系统的磁盘映像文件,文件格式为qcow2
qemu-img create -f qcow2 -o size=120G,preallocation=metadata /images/centos/centos6.7.qcow2

virt-install命令依赖libvirtd服务,所以我们需要启动libvirtd服务
service libvirtd start

创建虚拟机并执行自动化安装
virt-install -n centos6.7 -r 512 --vcpus=2,maxvcpus=4 --pxe --disk /images/centos/centos6.7.qcow2,bus=virtio --network bridge=br0,model=virtio --force

这里可能会报错,提示:/image/centos这个存储池不存在,找不到。原因就是其默认的存储池是/var/lib/libvirt/images,所有的映像文件都保存在这里,所以我们在创建虚拟机时候,自动从/var/lib/libvirt/images这个存储池里面找centos6.7.qcow2这个映像文件,结果找不到。

我们需要添加一个存储池/image/centos,即可
1) 定义一个存储池

    virsh pool-define-as vmdisk(存储池名称) --type dir --target /images/centos/

2) 查看创建的存储池信息

    virsh pool-list --all (此时存储池处于未激活状态)

3) 建立基于文件夹的存储池

    virsh pool-build vmdisk(根据定义的路径创建存储池)

4) 使存储池生效

     virsh pool-start vmdisk (激活状态)

5) 这时候,存储池还不是自动运行,使用virsh pool-autostart

     virsh pool-autostart vmdisk ( 自动运行,可以正常使用)

6) 验证存储池
[root@node5 centos]# virsh pool-info vmdisk
Name:           vmdisk
UUID:           cbaa7d57-77c9-c08a-0bc3-42193a08bcc9
State:          running
Persistent:     yes
Autostart:      yes
Capacity:       17.36 GiB
Allocation:     13.05 GiB
Available:      4.31 GiB

之后再次执行以下命令:
virt-install -n centos6.7 -r 512 --vcpus=2,maxvcpus=4 --pxe --disk /images/centos/centos6.7.qcow2,bus=virtio --network bridge=br0,model=virtio --force

就可以自动执行安装系统了
14.png

我们这里也可以通过导入的方式,导入一个装好系统的映像,在后面加入参数--import,centos6.8.qcow2是我复制centos6.7.qcow2的,这里我们就可以直接开启一个虚拟机了
virt-install -n centos6.7 -r 512 --vcpus=2,maxvcpus=4 --pxe --disk /images/centos/centos6.8.qcow2,bus=virtio --network bridge=br0,model=virtio --force --import

当然我们也可以通过virt-manager图形化的方式来创建虚拟机和管理虚拟机,直接运行virt-manager命令即可,会弹出图形界面。这里就不说了,有时间我会在单独些一篇文章给大家的(https://bbs.cnblackhat.com/thread-2815-1-1.html
15.png

ok,系统已经安装成功了,我们登录系统,来查看一下ip地址是192.168.87.87,通过物理机上的dhcp获取到的
16.png

关于四种网络模型搭建,就不做了,之前都做过。

那么,我们如何远程管理其它物理机上的虚拟机呢?这里我们通过ssh的方式连接的
virsh -c qemu+ssh://172.31.225.246/system
17.png

安装用参数--connect,远程创建虚拟机

virsh管理虚拟机相关操作,主要分为这几类:(Domain Management、Domain Monitoring、Host and Hypervisor 、Interface、Network Filter、Networking、Node Device、SecretSnapshot、Storage Pool、Storage Volume、Virsh itself),这里说一些常用的相关操作
根据xml文件创建:
关闭domain:
删除domain:
连接至console:
列出:
附加或拆除disk:
存储池一系列相关的操作:
附加或拆除网卡:
添加桥设备,并关联网卡至桥设备或取消关联,删除桥设备:
保存状态至磁盘文件或从磁盘文件恢复
暂停于内存或继续运行


虚拟化第三方管理工具:https://www.linux-kvm.org/page/Management_Tools

附:virsh如何去操作管理,这里大家看帮助文档,就不说了,实践记忆更深







欢迎光临 黑帽联盟 (https://bbs.cnblackhat.com/) Powered by Discuz! X2.5