我开始学习如何使用 libvirt 创建良好的虚拟化堆栈。我创建了一个 LVM 卷组,它公开了一个由 Linux RAID 组成的设备块。我的想法是为每个虚拟机提供一个逻辑卷,但有人建议我改用存储池,比如
<pool type='logical'>
<name>VG_foo</name>
<uuid>foo</uuid>
<capacity unit='bytes'>0</capacity>
<allocation unit='bytes'>0</allocation>
<available unit='bytes'>0</available>
<source>
<device path='/dev/md2'/>
<name>vg_foo</name>
<format type='lvm2'/>
</source>
<target>
<path>/dev/vg_foo</path>
<permissions>
<mode>0755</mode>
<owner>-1</owner>
<group>-1</group>
</permissions>
</target>
</pool>
我读过了libvirt 存储文档但我不明白区别
答案1
这两种方式的效果是一样的,但是在一种情况下你需要手动完成所有事情,而在另一种情况下,libvirt 能够为您完成所有事情。
定义存储池后,libvirt 便能够在该池中创建和管理卷。如果没有定义存储池,则必须在 libvirt 之外手动创建和管理卷。
请注意,块设备不是必须是存储池的一部分,以便 libvirt 管理的虚拟机可以使用它。但如果不是,那么你必须自己管理它。
答案2
如上所述,它们非常相似,存储池基本上是一个卷组,libvirt 管理创建的逻辑卷。
而您需要手动创建卷组并手动创建磁盘,然后将其添加到虚拟机。
只需添加存储池并在创建虚拟机时创建磁盘。