qemu:如何获取图像 UUID
qemu: how to get image UUID
我想将现有映像 (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 个磁盘占用),所以如果不登录 [=15],我不知道 file.vhd
将挂载到哪里=] 用于检查。
如何在挂载前知道挂载点file.vhd
?
顺便说一句,同时可能有其他客户端附加some.vhd
到guest1
,所以只需检查guest1
上的下一个挂载点远程可能无法工作。
我知道 lsblk
可以像这样列出设备的 UUID:
# lsblk -nio NAME,UUID
我不知道 UUID 是否存在于我附加到 guest1
之前的 file.vhd
中,或者仅由 guest1
生成。如果UUID存在于file.vhd
,如何获取?
我试过多次将同一个file.vhd
文件挂载到guest1
(使用不同的/dev/vd*
),它们的UUID似乎是相同的,所以我认为UUID 可能存在于 file.vhd
中,但我仍然不确定。
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 符号链接中,允许您使用可预测的设备名称来挂载它。
我想将现有映像 (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 个磁盘占用),所以如果不登录 [=15],我不知道 file.vhd
将挂载到哪里=] 用于检查。
如何在挂载前知道挂载点file.vhd
?
顺便说一句,同时可能有其他客户端附加some.vhd
到guest1
,所以只需检查guest1
上的下一个挂载点远程可能无法工作。
我知道 lsblk
可以像这样列出设备的 UUID:
# lsblk -nio NAME,UUID
我不知道 UUID 是否存在于我附加到 guest1
之前的 file.vhd
中,或者仅由 guest1
生成。如果UUID存在于file.vhd
,如何获取?
我试过多次将同一个file.vhd
文件挂载到guest1
(使用不同的/dev/vd*
),它们的UUID似乎是相同的,所以我认为UUID 可能存在于 file.vhd
中,但我仍然不确定。
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 符号链接中,允许您使用可预测的设备名称来挂载它。