黑帽联盟

 找回密码
 会员注册
查看: 1174|回复: 0
打印 上一主题 下一主题

[资源教程] kvm虚拟化,使用virt-install创建虚拟机,virsh管理虚拟机

[复制链接]

293

主题

18

听众

955

积分

管理员

Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    奋斗
    2023-10-26 13:13
  • 签到天数: 358 天

    [LV.8]以坛为家I

    相关链接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相关安装包及其作用
    • qemu-kvm          主要的KVM程序包
    • python-virtinst   创建虚拟机所需要的命令行工具和程序库
    • virt-manager      GUI虚拟机管理工具
    • virt-top          虚拟机统计命令
    • virt-viewer       GUI连接程序,连接到已配置好的虚拟机
    • libvirt           C语言工具包,提供libvirt服务
    • libvirt-client    虚拟客户机提供的C语言工具包
    • virt-install      基于libvirt服务的虚拟机创建命令
    • bridge-utils      创建和管理桥接设备的工具


    加载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文件创建:
    • create:创建并启动
    • define:创建但不启动
    关闭domain:
    • destroy
    • shutdown
    • reboot
    删除domain:
    • undefine
    连接至console:
    • console
    列出:
    • list
    附加或拆除disk:
    • attach-disk
    • detach-disk
    存储池一系列相关的操作:
    • pool-define-as
    • pool-list
    • pool-build
    • pool-start
    • pool-autostart
    • pool-info
    • pool-autostart
    • pool-delete
    附加或拆除网卡:
    • attach-interface
    • detach-interface
    添加桥设备,并关联网卡至桥设备或取消关联,删除桥设备:
    • iface-bridge
    • iface-unbridge
    保存状态至磁盘文件或从磁盘文件恢复
    • save
    • restore
    暂停于内存或继续运行
    • suspend
    • resume


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

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


    帖子永久地址: 

    黑帽联盟 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与黑帽联盟享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和黑帽联盟的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、黑帽联盟管理员和版主有权不事先通知发贴者而删除本文

    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部