每天5分鐘復習OpenStack(四) virsh 常用命令

    在上一章節中,我們拉起了第一臺虛擬機,但是執行virsh shutdown 關機是無法關機的,需要使用virsh destroy 強制斷電的命令來關機。為什么會這樣了?

    這里我們介紹下 QGA的概念 ,通過 QGA 的引入我們來熟悉下 virsh 命令。

    1 什么是 QGA ?

    • QEMU Guest Agent 是運行在虛擬機內部的一個守護程序(qemu-guest-agent),用它來輔助Hypervisor實現對Guest 虛擬機的管理。

    • QEMU 為宿主機和虛擬機提供了一個數據通道(channel),這個通道的兩端分別是在虛擬機內看到的串口和在宿主機上看到的unix socket文件。

    • 宿主機與虛擬機內的 qga 通訊就擴展了對虛擬機的控制能力,例如在宿主機上獲取虛擬機的 ip 地址等。

    • libvrit 提供了專門的 virDomainQemuAgentCommand API(對應 virsh qemu-agent-command 命令)來和 qemu-guest-agent 通訊,另外 libvirt 內置 api 也可以支持 qga,例如 reboot、shutdown 等。

    一句話總結: QGA 是一個守護進程,連通虛擬機的串口和物理機的 unix socket 的兩頭。

    默認鏡像已經配置 channel,我們通過命令 來驗證一下已經配置了 channel

    virsh dumpxml test
    

    如果虛擬機沒有咋辦?

    如下步驟來添加既可 。

    1. 通過 virsh edit 來編輯 xml 文件
    <channel type='unix'>
     <source mode='bind' path='/var/lib/libvirt/qemu/org.qemu.guest_agent.0'/>
     <target type='virtio' name='org.qemu.guest_agent.0'/>
    </channel>
    
    1. 重啟虛擬機
    virsh destroy test
    virsh start test
    
    1. Linux 虛擬機安裝 qemu-guest-agent
    yum install qemu-guest-agent
    setenforce 0
    systemctl restart qemu-guest-agent.service && systemctl enable qemu-guest-agent.service
    
    1. 宿主機安裝 qemu-guest-agent
    yum install qemu-guest-agent
    
    1. 驗證部分
    #1 關機
    virsh shutdown
    

    查看虛擬機對應的網絡的 IP 地址

    修改虛擬機密碼

    virsh set-user-password domain --user 用戶 --password 密碼
    virsh set-user-password test --user root --password 123456
    

    2 kvm 虛擬機批量復制

    第一臺虛擬機已經通過光盤安裝好了系統,能否將虛擬機做為一個模塊,之后的虛擬機以該虛擬機為模板來批量復制了?

    virt-clone 命令將實現你的需求。

    1 轉換raw 格式為qcow2 格式
    qemu-img convert -f raw -O qcow2  kvm001.raw test.qcow2
    
    2 克隆虛擬機
      #克隆之前需要先關機 virsh shutdown test
      virt-clone –o 原虛擬機 –n 新虛擬機 –f 新虛擬機存放的路徑
      virt-clone -o test -n test2 -f test2.qcow2
    

    修復 virsh console 登錄失敗問題咋辦

    1. 通過 vnc 登錄虛擬機 test2

    2. 修改 /etc/default/grub 文件中

    3. 重新生成 grub 文件 grub2-mkconfig -o /boot/grub2/grub.cfg,

    4. reboot 重啟后就ok了.

    virsh console 登錄了

    virsh console test2 #登錄虛擬機,修復完成console 等問題后,我們以該虛擬機做為模板文件,以后的虛擬機都按這個模塊來生成 。
    
    # 克隆虛擬機
    virt-clone -o test2 -n template-vm -f template-vm.qcow2
    
    #啟動虛擬機驗證
    virsh start template-vm
    
    [root@192-168-48-11 images]# virsh list
     Id    Name                           State
    ----------------------------------------------------
     6     template-vm                    running
    
    #修改虛擬機IP為 192.168.122.12/24
    #重啟網絡
    systemctl restart network
    
    #拉起原先的test 虛擬機
    virsh start test
    
    #ssh 登錄test
    #ssh 192.168.122.11 來測試連通 192.168.122.12
    

    現在我們查看所有的虛擬機

    test2 和 test02 我們都不想要了,怎么刪除了?

    1 刪除虛擬機定義

    virsh undefine test02
    virsh undefine test2
    

    2 刪除虛擬機的磁盤文件,本環境的路徑在

    [root@192-168-48-11 images]# pwd
    /data/images
    
    [root@192-168-48-11 images]# ls
    kvm001.raw  template-vm.qcow2  test2.qcow2  test.qcow2
    
    #刪除文件
    rm -rf test.qcow2 test2.qcow2
    

    命令總結:

    1 查看虛擬機xml文件
    virsh dumpxml
    
    2 編輯虛擬機的xml 文件
    virsh edit
    
    3 關閉虛擬機
    virsh shutdown  #正常關機
    virsh destroy    #強制斷電
    
    4 啟動虛擬機
    virsh start
    
    5 刪除虛擬機
    virsh undefine
    
    6 修改虛擬機密碼
    virsh set-user-password
    


    posted @ 2023-10-09 23:52  ALEX_li88  閱讀(205)  評論(0編輯  收藏  舉報
    正能量网站你懂我意思下载,欧美亚洲综合视频,97国产超碰,久在线中文欧美