KVM + LVM:将 LVM 放在哪里?

KVM + LVM:将 LVM 放在哪里?

嗨,我目前正在使用 libvirt+kvm 设置一台新服务器。之后该服务器上应该有大约 5 台虚拟机在运行(+一些测试机器)。

存储放在使用 LVM 设置的 raid-5 设备上。KVM 现在在一些 LVM 逻辑卷上运行。

问题是:在虚拟机内部再次(第二次)使用 lvm 来分区空间有什么缺点吗? 因此它将是:硬盘-> Raid 控制器-> 物理服务器的 LVM-> 每个 VM 一个逻辑卷-> 每个 VM 内的 LVM-> 每个 VM 内的多个逻辑卷。

如果我想在虚拟机内使用动态分区,还有其他可能性吗?

谢谢

答案1

LVM 的性能开销很小,使用两次不会改变这一点。您的 raid-5 设备将比 lvm 产生更大的影响。

答案2

博客文章http://hyperthese.net/post/kvmized-debian-on-lvm/建议您在主机(物理服务器)上创建 LVM 逻辑卷并直接在其上创建文件系统,而无需创建分区,并且在创建虚拟机之前。

我尝试了一下,长话短说:它似乎有效,并且我能够扩大 LV 及其上的文件系统。

以下是我所做的事情的详细内容:

在主机上(运行 Ubuntu 10.04)为 VM 的 root、var 和 swap 创建 LVM 逻辑卷:

me@host:~$ sudo lvcreate -L4G -n test-root vg1
me@host:~$ sudo lvcreate -L20G -n test-var vg1
me@host:~$ sudo lvcreate -L2G -n test-swap vg1

在 LV 上创建文件系统和交换:

me@host:~$ sudo mkfs.ext3 /dev/mapper/vg1-test--root
me@host:~$ sudo mkfs.ext3 /dev/mapper/vg1-test--var
me@host:~$ sudo mkswap -f /dev/mapper/vg1-test--swap

创建虚拟机:

me@host:~$ sudo virt-install --name=test --ram=2048 --os-type=linux --os-variant=ubuntulucid --cdrom=ubuntu-server-10.04-lts-64bit.iso --disk path=/dev/mapper/vg1-test--root --disk path=/dev/mapper/vg1-test--var --disk path=/dev/mapper/vg1-test--swap --network bridge=br0 --vnc --noautoconsole

然后我使用 virt-viewer 连接到新的虚拟机,Ubuntu 安装程序就在那里等着我。我选择了“安装最小虚拟机”模式(F4 键)。

在分区阶段,我选择了手动分区。安装程序找到了虚拟磁盘 vda、vdb 和 vdc,并识别出前两个具有 ext3,最后一个具有交换分区。我选择了 ext3 分区,并被告知将它们用作 ext3 分区(默认为“不使用”),第一个分区的挂载点为“否,保留现有数据”,第二个分区的挂载点为 /。默认情况下,交换分区设置正确。然后我选择在第一个磁盘上安装 grub。

我让虚拟机正常运行。Fdisk 显示 vda 有一个空分区表,而 vdb 和 vdc 没有有效的分区表。我不知道有或没有分区表是否是个问题,关于这个问题有一些讨论https://unix.stackexchange.com/questions/5162/how-to-install-grub-to-a-whole-ext4-disk-without-partition-table

最后我尝试调整 var 磁盘的大小。首先,在主机上:

me@host:~$ sudo lvextend -L24G /dev/vg1/test-var

然后我重新启动了虚拟机并调整了虚拟机上的文件系统大小:

me@test:~$ sudo resize2fs /dev/vdb

并且它的大小调整得很好。

我不知道这是不是个好办法,但目前看来还是有效的。有什么意见吗?

答案3

我认为,使用第二次 LVM 对性能不利,但除了网络文件系统,我想不出其他稳定的采用动态分区的解决方案(您可以尝试使用 fuse 或 btrfs 的 zfs,但它们还未投入生产)。

如果要将 LVM 保留在 VM 内部,则可以在主机上为每个 VM 上的每个分区创建一个 LV。

答案4

一般来说,使用更多部件意味着更多东西会被破坏。我建议你重新考虑一下你正在做的事情,这样 LVM 就不需要重复了。也许可以使用 OpenVZ 之类的东西来代替 KVM,OpenVZ 支持快速且动态地调整虚拟分区的大小。

相关内容