我想将现有图片(file.vhd
)挂载到正在运行的访客:
<!-- attach.xml -->
<disk type='file' device='disk'>
<driver name='qemu' type='vpc' cache='none' io='native' dataplane='on' />
<source file='/path/to/file.vhd'/>
<target dev='vdf'/>
</disk>
然后
# virsh attach-device guest1 attach.xml
在这里,我想将file.vhd
挂载到guest1
和/dev/vdf
下,但当guest1
上只存在两个设备时,file.vhd
将挂载到/dev/vdc
/dev/vda
和/dev/vbd
已被现有的2个磁盘占用了,所以我无法知道在没有登录file.vhd
的情况下将挂载guest1
的位置检查。
如何在挂载file.vhd
之前知道挂载点?
顺便说一句,同时,可能还有其他客户端附加some.vhd
到guest1
,因此只需远程检查guest1
上的下一个挂载点可能不会工作。
我知道lsblk
可以像这样列出设备的UUID:
# lsblk -nio NAME,UUID
我不知道在我file.vhd
附加或仅由guest1
生成之前,UUID是否存在于guest1
内。如果UUID存在于file.vhd
中,如何获取?
我已经尝试将相同的file.vhd
文件多次挂载到guest1
(使用不同的/dev/vd*
),看起来它们的UUID是相同的,所以我认为UUID可能存在于file.vhd
内,但我仍然不确定。
答案 0 :(得分:2)
libguestfs提供了一组用于操作/检查磁盘映像的工具。这能够报告标签&amp; UUID与来宾磁盘映像中的任何文件系统相关联。例如http://libguestfs.org/virt-filesystems.1.html
$ virt-filesystems -a win.img --all --long --uuid -h
Name Type VFS Label Size Parent UUID
/dev/sda1 filesystem ntfs System Reserved 100M - F81C92571C92112C
/dev/sda2 filesystem ntfs - 20G - F2E8996AE8992E3B
/dev/sda1 partition - - 100M /dev/sda -
/dev/sda2 partition - - 20G /dev/sda -
/dev/sda device - - 20G - -
虽然可能更简单的替代方案(特别是如果你在磁盘中只有一个分区),就是在磁盘XML中指定一个唯一的串行字符串,例如。
<disk type='file' device='disk'>
<driver name='qemu' type='vpc' cache='none' io='native' dataplane='on' />
<source file='/path/to/file.vhd'/>
<serial>XXXXXXXXXX</serial>
<target dev='vdf'/>
</disk>
串行字段中的文本包含在/ dev / disk / by-path符号链接中,允许您使用可预测的设备名称来安装它。