qemu:如何获取图像UUID

时间:2017-03-19 09:39:32

标签: libvirt mount-point

我想将现有图片(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.vhdguest1,因此只需远程检查guest1上的下一个挂载点可能不会工作。

我知道lsblk可以像这样列出设备的UUID:

# lsblk -nio NAME,UUID

我不知道在我file.vhd附加或仅由guest1生成之前,UUID是否存在于guest1内。如果UUID存在于file.vhd中,如何获取?

我已经尝试将相同的file.vhd文件多次挂载到guest1(使用不同的/dev/vd*),看起来它们的UUID是相同的,所以我认为UUID可能存在于file.vhd内,但我仍然不确定。

1 个答案:

答案 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符号链接中,允许您使用可预测的设备名称来安装它。