我开始学习如何使用 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 存储文档,但我不明白其中的区别
这两者的效果是一样的,但是在一种情况下你是手动做所有事情,而在另一种情况下,libvirt 可以为你做所有事情。
定义存储池后,libvirt 能够在该池中创建和管理卷。如果没有定义存储池,您必须在 libvirt 之外手动创建和管理卷。
请注意,块设备不必是存储池的一部分,libvirt 管理的虚拟机也可以使用它。但如果不是,那么您必须自己管理它。
正如上面所说的非常相似,存储池基本上是一个卷组,libvirt 管理创建的逻辑卷。
而您将手动创建卷组并手动创建磁盘,然后将它们添加到 VM。
只需添加一个存储池并在创建 VM 时创建磁盘。