亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

kvm虛擬化channel設備介紹

2023-06-27 11:28:33
79
0

  在kvm虛擬化環境中,我們經常遇到一些需求,如忘記虛擬機密碼,使用鏡像部署虛擬機不知道初始密碼,在不登錄虛擬機的情況下如何對虛擬機進行一些簡單的操作等等。此篇文章會給你答案,在介紹方法之前,先介紹一個一個概念channel device,如下:

1. channel是主機和虛擬機之前的私有通道,在libvirt的xml中典型的配置如下:

...
<devices>
  <channel type='unix'>
    <source mode='bind' path='/tmp/guestfwd'/>
    <target type='guestfwd' address='10.0.2.1' port='4600'/>
  </channel>

  <!-- KVM virtio channel -->
  <channel type='pty'>
    <target type='virtio' name='arbitrary.virtio.serial.port.name'/>
  </channel>
  <channel type='unix'>
    <source mode='bind' path='/var/lib/libvirt/qemu/f16x86_64.agent'/>
    <target type='virtio' name='org.qemu.guest_agent.0' state='connected'/>
  </channel>
  <channel type='spicevmc'>
    <target type='virtio' name='com.redhat.spice.0'/>
  </channel>
</devices>
...

channel可以通過多種方式實現。通道的具體類型在目標元素的type屬性中給出。不同的通道類型具有不同的目標屬性。

guestfwd

TCP流量通過制定的IP地址和端口被轉發道host的管道設備中,target設備必須要有IP地址和端口

virtio

半虛擬化virtio通道,通道被暴露在/dev/vport*下。

  channel的基本實現原理:創建虛機時,需要在xml中配置channel段,寫入相關參數,啟動虛機時,會在宿主機上生成對應unix socket文件,同時,會在vm里生成一個字符設備,生成的unix socket和字符設備可以理解為一個channel隧道的兩端。

 

2.比較常見的是通過channel使用qemu guest agent(qga)qga實現過程:

虛擬機鏡像制作時,安裝好qemu-guest-agent守護進程并配置開啟自啟動,qemu-guest-agent進程會監聽字符設備。

宿主機上,將虛機中qga支持的rpc指令,通過channel發送,虛機中的qemu-guest-agent從串口設備收到數據后,執行相關指令。可實現文件讀寫、密碼修改等。使用步驟如下:

1)虛擬機安裝agent

#yum install qemu-guest-agent

2)啟動服務

#systemctl enable qemu-guest-agent

3)創建虛擬機,xml里面加入:

    <channel type='unix'>
      <source mode='bind' path='/var/lib/libvirt/qemu/compile.agent'/>
      <target type='virtio' name='org.qemu.guest_agent.0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>

4)啟動虛擬機,通道建立就可以通信,如:

 # virsh
virsh # set-user-password
error: command 'set-user-password' requires <domain> option
error: command 'set-user-password' requires <user> option
error: command 'set-user-password' requires <password> option
virsh # set-user-password 10 administrator xxxxxx
Password set successfully for administrator in 10

# virsh qemu-agent-command vm01 '{"execute":"guest-info"}'
{"return":{"version":"5.0.0.4","supported_commands":[{"enabled":true,"name":"guest-get-osinfo","success-response":true},{"enabled":true,"name":"guest-get-timezone","success-response":true},{"enabled":true,"name":"guest-get-users","success-response":true},{"enabled":true,"name":"guest-get-host-name","success-response":true},{"enabled":false,"name":"guest-exec","success-response":true},{"enabled":false,"name":"guest-exec-status","success-response":true},{"enabled":true,"name":"guest-get-memory-block-info","success-response":true},{"enabled":true,"name":"guest-set-memory-blocks","success-response":true},{"enabled":true,"name":"guest-get-memory-blocks","success-response":true},{"enabled":true,"name":"guest-set-user-password","success-response":true},{"enabled":true,"name":"guest-get-fsinfo","success-response":true},{"enabled":true,"name":"guest-set-vcpus","success-response":true},{"enabled":true,"name":"guest-get-vcpus","success-response":true},{"enabled":true,"name":"guest-network-get-interfaces","success-response":true},{"enabled":true,"name":"guest-suspend-hybrid","success-response":false},{"enabled":true,"name":"guest-suspend-ram","success-response":false},{"enabled":true,"name":"guest-suspend-disk","success-response":false},{"enabled":true,"name":"guest-fstrim","success-response":true},{"enabled":true,"name":"guest-fsfreeze-thaw","success-response":true},{"enabled":true,"name":"guest-fsfreeze-freeze-list","success-response":true},{"enabled":true,"name":"guest-fsfreeze-freeze","success-response":true},{"enabled":true,"name":"guest-fsfreeze-status","success-response":true},{"enabled":false,"name":"guest-file-flush","success-response":true},{"enabled":false,"name":"guest-file-seek","success-response":true},{"enabled":false,"name":"guest-file-write","success-response":true},{"enabled":false,"name":"guest-file-read","success-response":true},{"enabled":false,"name":"guest-file-close","success-response":true},{"enabled":false,"name":"guest-file-open","success-response":true},{"enabled":true,"name":"guest-shutdown","success-response":false},{"enabled":true,"name":"guest-info","success-response":true},{"enabled":true,"name":"guest-set-time","success-response":true},{"enabled":true,"name":"guest-get-time","success-response":true},{"enabled":true,"name":"guest-ping","success-response":true},{"enabled":true,"name":"guest-sync","success-response":true},{"enabled":true,"name":"guest-sync-delimited","success-response":true}]}}

[root@gzinf-computer-55e235e17e32 tmp]# virsh qemu-agent-command vm02 '{"execute":"guest-info"}'
error: Guest agent is not responding: QEMU guest agent is not connected

其他常用命令如:

'{"execute":"guest-network-get-interfaces"}'

'{"execute":"guest-ping"}'

如此便可以在不登陸虛擬機的情況下對虛擬機進行一些簡單的操作。

0條評論
0 / 1000
張****萍
2文章數
1粉絲數
張****萍
2 文章 | 1 粉絲
張****萍
2文章數
1粉絲數
張****萍
2 文章 | 1 粉絲
原創

kvm虛擬化channel設備介紹

2023-06-27 11:28:33
79
0

  在kvm虛擬化環境中,我們經常遇到一些需求,如忘記虛擬機密碼,使用鏡像部署虛擬機不知道初始密碼,在不登錄虛擬機的情況下如何對虛擬機進行一些簡單的操作等等。此篇文章會給你答案,在介紹方法之前,先介紹一個一個概念channel device,如下:

1. channel是主機和虛擬機之前的私有通道,在libvirt的xml中典型的配置如下:

...
<devices>
  <channel type='unix'>
    <source mode='bind' path='/tmp/guestfwd'/>
    <target type='guestfwd' address='10.0.2.1' port='4600'/>
  </channel>

  <!-- KVM virtio channel -->
  <channel type='pty'>
    <target type='virtio' name='arbitrary.virtio.serial.port.name'/>
  </channel>
  <channel type='unix'>
    <source mode='bind' path='/var/lib/libvirt/qemu/f16x86_64.agent'/>
    <target type='virtio' name='org.qemu.guest_agent.0' state='connected'/>
  </channel>
  <channel type='spicevmc'>
    <target type='virtio' name='com.redhat.spice.0'/>
  </channel>
</devices>
...

channel可以通過多種方式實現。通道的具體類型在目標元素的type屬性中給出。不同的通道類型具有不同的目標屬性。

guestfwd

TCP流量通過制定的IP地址和端口被轉發道host的管道設備中,target設備必須要有IP地址和端口

virtio

半虛擬化virtio通道,通道被暴露在/dev/vport*下。

  channel的基本實現原理:創建虛機時,需要在xml中配置channel段,寫入相關參數,啟動虛機時,會在宿主機上生成對應unix socket文件,同時,會在vm里生成一個字符設備,生成的unix socket和字符設備可以理解為一個channel隧道的兩端。

 

2.比較常見的是通過channel使用qemu guest agent(qga)qga實現過程:

虛擬機鏡像制作時,安裝好qemu-guest-agent守護進程并配置開啟自啟動,qemu-guest-agent進程會監聽字符設備。

宿主機上,將虛機中qga支持的rpc指令,通過channel發送,虛機中的qemu-guest-agent從串口設備收到數據后,執行相關指令。可實現文件讀寫、密碼修改等。使用步驟如下:

1)虛擬機安裝agent

#yum install qemu-guest-agent

2)啟動服務

#systemctl enable qemu-guest-agent

3)創建虛擬機,xml里面加入:

    <channel type='unix'>
      <source mode='bind' path='/var/lib/libvirt/qemu/compile.agent'/>
      <target type='virtio' name='org.qemu.guest_agent.0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>

4)啟動虛擬機,通道建立就可以通信,如:

 # virsh
virsh # set-user-password
error: command 'set-user-password' requires <domain> option
error: command 'set-user-password' requires <user> option
error: command 'set-user-password' requires <password> option
virsh # set-user-password 10 administrator xxxxxx
Password set successfully for administrator in 10

# virsh qemu-agent-command vm01 '{"execute":"guest-info"}'
{"return":{"version":"5.0.0.4","supported_commands":[{"enabled":true,"name":"guest-get-osinfo","success-response":true},{"enabled":true,"name":"guest-get-timezone","success-response":true},{"enabled":true,"name":"guest-get-users","success-response":true},{"enabled":true,"name":"guest-get-host-name","success-response":true},{"enabled":false,"name":"guest-exec","success-response":true},{"enabled":false,"name":"guest-exec-status","success-response":true},{"enabled":true,"name":"guest-get-memory-block-info","success-response":true},{"enabled":true,"name":"guest-set-memory-blocks","success-response":true},{"enabled":true,"name":"guest-get-memory-blocks","success-response":true},{"enabled":true,"name":"guest-set-user-password","success-response":true},{"enabled":true,"name":"guest-get-fsinfo","success-response":true},{"enabled":true,"name":"guest-set-vcpus","success-response":true},{"enabled":true,"name":"guest-get-vcpus","success-response":true},{"enabled":true,"name":"guest-network-get-interfaces","success-response":true},{"enabled":true,"name":"guest-suspend-hybrid","success-response":false},{"enabled":true,"name":"guest-suspend-ram","success-response":false},{"enabled":true,"name":"guest-suspend-disk","success-response":false},{"enabled":true,"name":"guest-fstrim","success-response":true},{"enabled":true,"name":"guest-fsfreeze-thaw","success-response":true},{"enabled":true,"name":"guest-fsfreeze-freeze-list","success-response":true},{"enabled":true,"name":"guest-fsfreeze-freeze","success-response":true},{"enabled":true,"name":"guest-fsfreeze-status","success-response":true},{"enabled":false,"name":"guest-file-flush","success-response":true},{"enabled":false,"name":"guest-file-seek","success-response":true},{"enabled":false,"name":"guest-file-write","success-response":true},{"enabled":false,"name":"guest-file-read","success-response":true},{"enabled":false,"name":"guest-file-close","success-response":true},{"enabled":false,"name":"guest-file-open","success-response":true},{"enabled":true,"name":"guest-shutdown","success-response":false},{"enabled":true,"name":"guest-info","success-response":true},{"enabled":true,"name":"guest-set-time","success-response":true},{"enabled":true,"name":"guest-get-time","success-response":true},{"enabled":true,"name":"guest-ping","success-response":true},{"enabled":true,"name":"guest-sync","success-response":true},{"enabled":true,"name":"guest-sync-delimited","success-response":true}]}}

[root@gzinf-computer-55e235e17e32 tmp]# virsh qemu-agent-command vm02 '{"execute":"guest-info"}'
error: Guest agent is not responding: QEMU guest agent is not connected

其他常用命令如:

'{"execute":"guest-network-get-interfaces"}'

'{"execute":"guest-ping"}'

如此便可以在不登陸虛擬機的情況下對虛擬機進行一些簡單的操作。

文章來自個人專欄
文章 | 訂閱
0條評論
0 / 1000
請輸入你的評論
0
0