1

我想将现有图像 ( 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.vhdguest1和下/dev/vdf,但是当只有两个设备存在时guest1file.vhd会挂载到/dev/vdc/dev/vda并且已经被现有的2个磁盘占用),所以不登录检查/dev/vbd不知道会挂载到哪里。file.vhdguest1

如何在我挂载之前知道挂载点file.vhd

顺便说一句,同时可能有其他客户端附加some.vhd到,所以远程guest1检查下一个挂载点可能不起作用。guest1

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

# lsblk -nio NAME,UUID

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

我试过多次挂载同一个file.vhd文件guest1(不同的/dev/vd*),似乎它们的 UUID 是相同的,所以我认为 UUID 可能存在于 中file.vhd,但我仍然不确定。

4

1 回答 1

3

libguestfs 提供了一组用于操作/检查磁盘映像的工具。这能够报告与来宾磁盘映像中的任何文件系统关联的标签和 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 符号链接中,允许您使用可预测的设备名称来挂载它。

于 2017-03-20T10:26:28.797 回答