Hy,我目前正在使用libvirt + kvm设置一个新的服务器。 之后,这个服务器上应该有大约5台虚拟机在运行(+一些testing机器)。
存储被放在使用LVM设置的RAID-5设备上。 KVM现在运行在一些LVM逻辑卷上。
问题是: 在虚拟机内再次使用lvm来分区还有什么缺点吗? 所以它将是:硬盘 – > RAID控制器 – >物理服务器的LVM – >每个虚拟机一个逻辑卷 – >每个虚拟机内的LVM – >每个虚拟机内的几个逻辑卷。
如果我想在虚拟机中使用dynamic分区,还有其他的可能吗?
谢谢
LVM的性能开销是微不足道的,使用它两次不会改变。 你的raid-5设备将比lvm有更大的影响。
我试了一下,长话短说:似乎工作,我能放大LV和文件系统上。
这是一个漫长的故事,也就是我所做的:
在主机(运行Ubuntu 10.04)上为VM创buildroot,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
创build文件系统并交换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
创build了VM:
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连接到新的VM,Ubuntu安装程序在那里等待。 我select了“安装最小虚拟机”(F4键)模式。
在分区阶段,我select了手动分区。 安装程序find了虚拟磁盘vda,vdb和vdc,并识别出前两个有ext3,最后一个为swap。 我select了ext3分区,告诉把它们作为ext3分区(默认是“不要使用”),使用“no,保留已经存在的数据”,挂载点作为/第一个和/ var作为第二个。 Swap默认设置正确。 然后我select在第一个磁盘上安装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
它调整好了。
我不知道这是否是一个好办法,但到目前为止似乎工作。 任何意见?
我认为,再次使用LVM对性能不利,除了networking文件系统外,我想不出带有dynamic分区的另一个稳定解决scheme(可以使用fuse或btrfs来尝试zfs,但是没有准备就绪)。
如果要将LVM保留在虚拟机内部,可以在主机上为每个虚拟机上的每个分区创build一个LV。
一般来说,使用更多的零件意味着更多的事情要打破。 我build议重新考虑你在做什么,这样LVM就不需要两次了。 也许使用OpenVZ而不是KVM,OpenVZ支持快速调整虚拟分区大小。