查看手册页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