如何获取 Ubuntu 上已连接的 NBD 设备列表?

如何获取 Ubuntu 上已连接的 NBD 设备列表?

查看手册页nbd 服务器nbd-客户端qemu-ndb我没有看到任何列出已连接 NBD 设备的方法。有办法吗?

我通过实验能找到最接近的是 ls/dev/nbd并从中获取信息。但你必须尝试安装一些东西才能看到它是什么。

答案1

我正在使用此代码将新的附加qcow到未使用的/dev/nbd

for x in /sys/class/block/nbd[0-9]{1,} ; do 
        S=$(cat $x/size)
        if [ "$S" = "0" ] ; then
            dev_name=$(basename $x)
            ${SUDO} qemu-nbd -d /dev/${dev_name} || true
            echo "connecting ${QCOW_FILE} to /dev/${dev_name}"
            ${SUDO} qemu-nbd -c /dev/${dev_name} ${QCOW_FILE} &&  IS_MOUNTED="yes" ||   ${SUDO} qemu-nbd -d /dev/${dev_name}
            [[ "${IS_MOUNTED:-no}" != "yes" ]] && continue
            break
        fi

    done

答案2

您可以检查该pid文件是否存在:

/sys/devices/virtual/block/nbdX/pid

如果存在,则nbdX可能已安装。此外,nbd0p1还会出现子文件夹等。

您还可以检查进程列表以查看qemu-nbd进程是否正在运行:

$ ps m -C qemu-nbd
  PID TTY      STAT   TIME COMMAND
25982 ?        -      0:00 qemu-nbd --connect=/dev/nbd0 test.qcow2

相关内容