zoukankan      html  css  js  c++  java
  • virtio

    https://blogs.oracle.com/linux/how-to-emulate-block-devices-with-qemu

     virtio_pci 在probe(接管)每一个设备时,根据每个pci设备的subsystem device id来识别出这具体是哪一种virtio设备,然后相应的向内核注册一个 virtio 设备。见 include/uapi/linux/virtio_ids.h 。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #define VIRTIO_ID_NET       1 /* virtio net */
    #define VIRTIO_ID_BLOCK 2 /* virtio block */
    #define VIRTIO_ID_CONSOLE 3 /* virtio console */
    #define VIRTIO_ID_RNG 4 /* virtio rng */
    #define VIRTIO_ID_BALLOON 5 /* virtio balloon */
    #define VIRTIO_ID_RPMSG 7 /* virtio remote processor messaging */
    #define VIRTIO_ID_SCSI 8 /* virtio scsi */
    #define VIRTIO_ID_9P 9 /* 9p virtio console */
    #define VIRTIO_ID_RPROC_SERIAL 11 /* virtio remoteproc serial link */
    #define VIRTIO_ID_CAIF 12 /* Virtio caif */
    #define VIRTIO_ID_GPU 16 /* virtio GPU */
    #define VIRTIO_ID_INPUT 18 /* virtio input */
    #define VIRTIO_ID_VSOCK 19 /* virtio vsock transport */
    #define VIRTIO_ID_CRYPTO 20 /* virtio crypto */

    在启动virtio device后,Guest OS中不但在 /sys/bus/pci/devices 中出现一个对应的pci设备,而且在 /sys/bus/virtio/devices 中也会出现一个virtio类型设备。

    比如

    CONFIG_NET_9P=y

    CONFIG_NET_9P_VIRTIO=m

    CONFIG_9P_FS=y

    CONFIG_9P_FS_POSIX_ACL=y

    但是本文不讨论如何使用9P文件系统来达成这一目标的具体步骤 ,而是讨论其幕后实现中 的一个技术细节:pci总线与virtio总线的关系。

    在上述的背景下, 如果我们使用QEMU命令行来启动一个VM,在命令行中加入类似: -device virtio-9p-pci 这样的参数选项时, 那么在Guest OS中不但在/sys/bus/pci/devices中出现一个对应的pci设备,而且在/sys/bus/virtio/devices中也会出现一个virtio类型设备。

    root@srv6:~# ls  /sys/bus/virtio/devices
    virtio0  virtio1  virtio2
    root@srv6:~# ls  /sys/bus/virtio/devices/virtio
    ls: cannot access '/sys/bus/virtio/devices/virtio': No such file or directory
    root@srv6:~# ls  /sys/bus/virtio/devices/virtio0/
    device  driver  features  modalias  net  power  status  subsystem  uevent  vendor
    root@srv6:~# ls  /sys/bus/virtio/devices/virtio0/driver
    bind  module  uevent  unbind  virtio0
    root@srv6:~# ls  /sys/bus/virtio/devices/virtio0/driver/module
    coresize  drivers  holders  initsize  initstate  notes  parameters  refcnt  sections  srcversion  taint  uevent
    root@srv6:~# ls  /sys/bus/virtio/devices/virtio0/driver/module/drivers/
    virtio:virtio_net
    root@srv6:~# ls  /sys/bus/virtio/devices/virtio1/driver/module/drivers/
    virtio:virtio_blk
     
    root@srv6:~# ls  /sys/bus/virtio/devices/virtio2/driver/
    bind  uevent  unbind  virtio2
    root@srv6:~# ls  /sys/bus/virtio/devices/virtio2/driver/virtio2
    device  driver  features  modalias  power  status  subsystem  uevent  vendor
    root@srv6:~# ls  /sys/bus/virtio/devices/virtio2/driver/virtio2/driver
    bind  uevent  unbind  virtio2
    root@srv6:~# 
    root@ubuntu:~/kata_container# netstat -ax -p | grep sock
    Active UNIX domain sockets (servers and established)
    unix  2      [ ACC ]     STREAM     LISTENING     9997365  12361/containerd-sh  @/containerd-shim/ab1fc007b160aa73bae415d6dfd7bf32f442b5696ba7700b5ce9b45d8947cec8.sock@
    unix  2      [ ACC ]     STREAM     LISTENING     10015781 14617/containerd-sh  @/containerd-shim/d6b2419da7062ef5a53ccb11dcd4488f4553cef4f6c3e8d1105e147ed624bd06.sock@
    unix  2      [ ACC ]     STREAM     LISTENING     12011393 6166/kata-proxy      /run/vc/sbs/mycontainer/proxy.sock
    unix  2      [ ACC ]     STREAM     LISTENING     9952925  13761/containerd-sh  @/containerd-shim/6c2ca0d641866746f4a953912952bd3f1bf2b67e870aa39c0431b7c14d1b3263.sock@
    unix  2      [ ACC ]     STREAM     LISTENING     11758007 1/init               /var/run/docker.sock
    unix  2      [ ACC ]     STREAM     LISTENING     11328035 34127/containerd-sh  @/containerd-shim/k8s.io/64abb3931350d2762e805122d39ecbcee47e59a40331d1e09a5823dd0d11fa27/shim.sock@
    unix  2      [ ACC ]     STREAM     LISTENING     9969581  13100/containerd-sh  @/containerd-shim/c58597f53055bfca1289054c91c034613fc4a8da797ea6f9f7c0c5fd0639767c.sock@
    unix  2      [ ACC ]     STREAM     LISTENING     9031555  33824/containerd-sh  @/containerd-shim/1ca62d91c442c34e31054080bef78a032bc8ccc5a4fdc8a13fbcd18e06921c2d.sock@
    unix  2      [ ACC ]     STREAM     LISTENING     9782233  21667/containerd     /run/containerd/containerd.sock.ttrpc
    unix  2      [ ACC ]     STREAM     LISTENING     9782234  21667/containerd     /run/containerd/containerd.sock
    unix  2      [ ACC ]     STREAM     LISTENING     629318   1/init               /var/run/libvirt/virtlockd-sock
    unix  2      [ ACC ]     STREAM     LISTENING     639142   1/init               /var/run/libvirt/virtlogd-sock
    unix  2      [ ACC ]     STREAM     LISTENING     28061    1719/irqbalance      @irqbalance1719.sock
    unix  2      [ ACC ]     STREAM     LISTENING     9144111  34005/containerd-sh  @/containerd-shim/6f115e0f633f5dea385365ebd1e1f7f273da5b08272ac6f0a7ada95e32223303.sock@
    unix  2      [ ACC ]     STREAM     LISTENING     9921340  13444/containerd-sh  @/containerd-shim/19694df11cdb2f50566953edd191b3a7ac8c40ddcfbc8b006af4cf8281a24767.sock@
    unix  2      [ ACC ]     STREAM     LISTENING     9995828  13798/containerd-sh  @/containerd-shim/7cf4457a90b56831354543ad5ee83838338e3752b1fc8a172d031686302b0efd.sock@
    unix  2      [ ACC ]     STREAM     LISTENING     9053017  34079/containerd-sh  @/containerd-shim/58ad464be8db76d1b0ea3afe9672eed9343e48bbf799e9d1e562dd24f7b20e97.sock@
    unix  2      [ ACC ]     STREAM     LISTENING     26901    1/init               /var/lib/lxd/unix.socket
    unix  2      [ ACC ]     STREAM     LISTENING     44207    1/init               /run/lvm/lvmpolld.socket
    unix  2      [ ACC ]     STREAM     LISTENING     44209    1/init               /run/lvm/lvmetad.socket
    unix  9      [ ]         DGRAM                    44213    1/init               /run/systemd/journal/socket
    unix  2      [ ACC ]     STREAM     LISTENING     630482   11270/libvirtd       /var/run/libvirt/libvirt-sock
    unix  2      [ ACC ]     STREAM     LISTENING     630483   11270/libvirtd       /var/run/libvirt/libvirt-sock-ro
    unix  2      [ ACC ]     STREAM     LISTENING     630484   11270/libvirtd       /var/run/libvirt/libvirt-admin-sock
    unix  2      [ ACC ]     STREAM     LISTENING     9984728  13253/containerd-sh  @/containerd-shim/295f0dc91f1270559370e64cdaf8e9861b70a41c72a1beaa7a61e7bc85fbf8dd.sock@
    unix  2      [ ACC ]     STREAM     LISTENING     26899    1/init               /run/acpid.socket
    unix  2      [ ACC ]     STREAM     LISTENING     9971063  12848/kubelet        /var/lib/kubelet/device-plugins/kubelet.sock
    unix  2      [ ACC ]     STREAM     LISTENING     9985656  12336/containerd-sh  @/containerd-shim/6da10307571a03a7a26c3d94d4acf339f98bb4456f0129e72db786cce06ce229.sock@
    unix  2      [ ACC ]     STREAM     LISTENING     26903    1/init               /run/snapd.socket
    unix  2      [ ACC ]     STREAM     LISTENING     26905    1/init               /run/snapd-snap.socket
    unix  2      [ ACC ]     STREAM     LISTENING     26907    1/init               /var/run/dbus/system_bus_socket
    unix  2      [ ACC ]     STREAM     LISTENING     9978737  13654/containerd-sh  @/containerd-shim/a8b59d166076095cd78eed57fbccbad6e82cfc49126d97c797be6751587825a3.sock@
    unix  2      [ ACC ]     STREAM     LISTENING     10015800 14829/containerd-sh  @/containerd-shim/6d912dfe3499c3edb33b0010bcc0f742b1ac5f448e76427a1c5a68eb2074b970.sock@
    unix  2      [ ACC ]     STREAM     LISTENING     15202502 34081/containerd-sh  @/containerd-shim/k8s.io/bc6b585703b6cb29f5f1d6f5865f5eddeee474b330a08b8eac1e17a3e5f5367b/shim.sock@
    unix  2      [ ACC ]     STREAM     LISTENING     11713916 65115/dockerd        /var/run/docker/libnetwork/3ced1a442325.sock
    unix  2      [ ACC ]     STREAM     LISTENING     9162991  33945/containerd-sh  @/containerd-shim/e400710f07b23c235f42475d23ede80e2b9da0962d75d9951de7320d053374c5.sock@
    unix  2      [ ACC ]     STREAM     LISTENING     11605978 65115/dockerd        /var/run/docker.sock
    unix  2      [ ACC ]     STREAM     LISTENING     9968206  13615/containerd-sh  @/containerd-shim/c80bdd12afde75e0b41d8c35f04bea11f5113892f2cbc57501616725ecde3430.sock@
    unix  2      [ ACC ]     STREAM     LISTENING     11776041 65115/dockerd        /var/run/docker/metrics.sock
    unix  2      [ ACC ]     STREAM     LISTENING     9933780  13591/containerd-sh  @/containerd-shim/ade08ec2d9afa0c53cfaf535aece93b65a17fc0c7c1887de5fbffe82dd777b4d.sock@
    unix  3      [ ]         STREAM     CONNECTED     40024    1613/dbus-daemon     /var/run/dbus/system_bus_socket
    unix  3      [ ]         STREAM     CONNECTED     9965086  13591/containerd-sh  @/containerd-shim/ade08ec2d9afa0c53cfaf535aece93b65a17fc0c7c1887de5fbffe82dd777b4d.sock@
    unix  3      [ ]         STREAM     CONNECTED     10005687 21667/containerd     /run/containerd/containerd.sock.ttrpc
    unix  3      [ ]         STREAM     CONNECTED     9965104  21667/containerd     /run/containerd/containerd.sock.ttrpc
    unix  3      [ ]         STREAM     CONNECTED     40023    1613/dbus-daemon     /var/run/dbus/system_bus_socket
    unix  3      [ ]         STREAM     CONNECTED     11309567 34127/containerd-sh  @/containerd-shim/k8s.io/64abb3931350d2762e805122d39ecbcee47e59a40331d1e09a5823dd0d11fa27/shim.sock@
    unix  3      [ ]         STREAM     CONNECTED     9993587  13761/containerd-sh  @/containerd-shim/6c2ca0d641866746f4a953912952bd3f1bf2b67e870aa39c0431b7c14d1b3263.sock@
    unix  3      [ ]         STREAM     CONNECTED     9928663  21667/containerd     /run/containerd/containerd.sock.ttrpc
    unix  3      [ ]         STREAM     CONNECTED     9952204  21667/containerd     /run/containerd/containerd.sock
    unix  3      [ ]         STREAM     CONNECTED     15232045 34103/qemu-system-a  /run/vc/vm/bc6b585703b6cb29f5f1d6f5865f5eddeee474b330a08b8eac1e17a3e5f5367b/qmp.sock
    unix  3      [ ]         STREAM     CONNECTED     11342015 34143/qemu-system-a  /run/vc/vm/64abb3931350d2762e805122d39ecbcee47e59a40331d1e09a5823dd0d11fa27/qmp.sock
    unix  3      [ ]         STREAM     CONNECTED     9985660  12336/containerd-sh  @/containerd-shim/6da10307571a03a7a26c3d94d4acf339f98bb4456f0129e72db786cce06ce229.sock@
    unix  3      [ ]         STREAM     CONNECTED     11319701 34127/containerd-sh  @/containerd-shim/k8s.io/64abb3931350d2762e805122d39ecbcee47e59a40331d1e09a5823dd0d11fa27/shim.sock@
    unix  3      [ ]         STREAM     CONNECTED     9996565  21667/containerd     /run/containerd/containerd.sock.ttrpc
    unix  3      [ ]         STREAM     CONNECTED     9924121  21667/containerd     /run/containerd/containerd.sock.ttrpc
    unix  3      [ ]         STREAM     CONNECTED     9978716  13100/containerd-sh  @/containerd-shim/c58597f53055bfca1289054c91c034613fc4a8da797ea6f9f7c0c5fd0639767c.sock@
    unix  3      [ ]         STREAM     CONNECTED     33928    1613/dbus-daemon     /var/run/dbus/system_bus_socket
    unix  3      [ ]         STREAM     CONNECTED     11996656 65115/dockerd        /var/run/docker.sock
    unix  3      [ ]         STREAM     CONNECTED     10018074 21667/containerd     /run/containerd/containerd.sock.ttrpc
    unix  3      [ ]         STREAM     CONNECTED     10012695 13444/containerd-sh  @/containerd-shim/19694df11cdb2f50566953edd191b3a7ac8c40ddcfbc8b006af4cf8281a24767.sock@
    unix  3      [ ]         STREAM     CONNECTED     9946625  21667/containerd     /run/containerd/containerd.sock.ttrpc
    unix  3      [ ]         STREAM     CONNECTED     9844373  33824/containerd-sh  @/containerd-shim/1ca62d91c442c34e31054080bef78a032bc8ccc5a4fdc8a13fbcd18e06921c2d.sock@
    unix  3      [ ]         STREAM     CONNECTED     9991890  21667/containerd     /run/containerd/containerd.sock.ttrpc
    unix  3      [ ]         STREAM     CONNECTED     10015748 21667/containerd     /run/containerd/containerd.sock.ttrpc
    unix  3      [ ]         STREAM     CONNECTED     15242561 51399/guestmount     /tmp/libguestfsSR9Fcs/guestfsd.sock
    unix  3      [ ]         STREAM     CONNECTED     9953652  12361/containerd-sh  @/containerd-shim/ab1fc007b160aa73bae415d6dfd7bf32f442b5696ba7700b5ce9b45d8947cec8.sock@
    unix  3      [ ]         STREAM     CONNECTED     11767959 65115/dockerd        /var/run/docker.sock
    unix  3      [ ]         STREAM     CONNECTED     11780288 21667/containerd     /run/containerd/containerd.sock
    unix  3      [ ]         STREAM     CONNECTED     15136422 34103/qemu-system-a  /run/vc/vm/bc6b585703b6cb29f5f1d6f5865f5eddeee474b330a08b8eac1e17a3e5f5367b/kata.sock
    unix  3      [ ]         STREAM     CONNECTED     9952191  21667/containerd     /run/containerd/containerd.sock.ttrpc
    unix  3      [ ]         STREAM     CONNECTED     33931    1613/dbus-daemon     /var/run/dbus/system_bus_socket
    unix  3      [ ]         STREAM     CONNECTED     9987432  21667/containerd     /run/containerd/containerd.sock.ttrpc
    unix  3      [ ]         STREAM     CONNECTED     9996591  13798/containerd-sh  @/containerd-shim/7cf4457a90b56831354543ad5ee83838338e3752b1fc8a172d031686302b0efd.sock@
    unix  3      [ ]         STREAM     CONNECTED     40025    1613/dbus-daemon     /var/run/dbus/system_bus_socket
    unix  3      [ ]         STREAM     CONNECTED     9873593  34005/containerd-sh  @/containerd-shim/6f115e0f633f5dea385365ebd1e1f7f273da5b08272ac6f0a7ada95e32223303.sock@
    unix  3      [ ]         STREAM     CONNECTED     9953706  21667/containerd     /run/containerd/containerd.sock
    unix  3      [ ]         STREAM     CONNECTED     33932    1613/dbus-daemon     /var/run/dbus/system_bus_socket
    unix  3      [ ]         STREAM     CONNECTED     11751844 21667/containerd     /run/containerd/containerd.sock
    unix  3      [ ]         STREAM     CONNECTED     9852164  34079/containerd-sh  @/containerd-shim/58ad464be8db76d1b0ea3afe9672eed9343e48bbf799e9d1e562dd24f7b20e97.sock@
    unix  3      [ ]         STREAM     CONNECTED     9970644  13654/containerd-sh  @/containerd-shim/a8b59d166076095cd78eed57fbccbad6e82cfc49126d97c797be6751587825a3.sock@
    unix  3      [ ]         STREAM     CONNECTED     15155706 34081/containerd-sh  @/containerd-shim/k8s.io/bc6b585703b6cb29f5f1d6f5865f5eddeee474b330a08b8eac1e17a3e5f5367b/shim.sock@
    unix  3      [ ]         STREAM     CONNECTED     9869602  33945/containerd-sh  @/containerd-shim/e400710f07b23c235f42475d23ede80e2b9da0962d75d9951de7320d053374c5.sock@
    unix  3      [ ]         STREAM     CONNECTED     9953061  14617/containerd-sh  @/containerd-shim/d6b2419da7062ef5a53ccb11dcd4488f4553cef4f6c3e8d1105e147ed624bd06.sock@
    unix  3      [ ]         STREAM     CONNECTED     9952203  21667/containerd     /run/containerd/containerd.sock
    unix  3      [ ]         STREAM     CONNECTED     9883582  13615/containerd-sh  @/containerd-shim/c80bdd12afde75e0b41d8c35f04bea11f5113892f2cbc57501616725ecde3430.sock@
    unix  3      [ ]         STREAM     CONNECTED     9967503  14829/containerd-sh  @/containerd-shim/6d912dfe3499c3edb33b0010bcc0f742b1ac5f448e76427a1c5a68eb2074b970.sock@
    unix  3      [ ]         STREAM     CONNECTED     12033699 6158/qemu-system-aa  /run/vc/vm/mycontainer/kata.sock
    unix  3      [ ]         STREAM     CONNECTED     647040   1613/dbus-daemon     /var/run/dbus/system_bus_socket
    unix  3      [ ]         STREAM     CONNECTED     10002885 13253/containerd-sh  @/containerd-shim/295f0dc91f1270559370e64cdaf8e9861b70a41c72a1beaa7a61e7bc85fbf8dd.sock@
    unix  3      [ ]         STREAM     CONNECTED     15219762 34081/containerd-sh  @/containerd-shim/k8s.io/bc6b585703b6cb29f5f1d6f5865f5eddeee474b330a08b8eac1e17a3e5f5367b/shim.sock@
    unix  3      [ ]         STREAM     CONNECTED     9953065  21667/containerd     /run/containerd/containerd.sock.ttrpc
    unix  3      [ ]         STREAM     CONNECTED     11333037 34143/qemu-system-a  /run/vc/vm/64abb3931350d2762e805122d39ecbcee47e59a40331d1e09a5823dd0d11fa27/kata.sock
    unix  3      [ ]         STREAM     CONNECTED     33929    1613/dbus-daemon     /var/run/dbus/system_bus_socket
    root@ubuntu:~/kata_container# 
  • 相关阅读:
    advanceInstaller安装文件的ICON
    advanceInstaller制作中文安装界面
    vc对话框程序运行时隐藏
    VC++6.0 打印调试信息
    js使用正则表达式实现文本框只能输入数字和小数点
    Flexbox制作CSS布局实现水平垂直居中
    微信js SDK接口
    QQ JS_SDk相关功能接口
    github代码管理工具的使用方法
    webpack打包压缩工具的使用方法
  • 原文地址:https://www.cnblogs.com/dream397/p/13865810.html
Copyright © 2011-2022 走看看