LVM RAID有多成熟?
LVM-RAID实际上是秘密的。它基本上通过为每个RAID设备创建两个逻辑卷(一个用于数据,称为“ rimage”;一个用于元数据,称为“ rmeta”)来工作。然后,将其传递给现有的mdraid驱动程序。因此,处理磁盘读取错误,I / O负载平衡等工作应该已经相当成熟。
那是个好消息。
工具类
您不能mdadm
在上面使用它(至少,并非以任何简单的方式¹),LVM RAID工具还远远没有成熟。例如,在Debian Wheezy中,lvs
无法告诉您RAID5同步状态。我非常怀疑修复和恢复(尤其是从“永不发生!”的情况)是否与mdadm差不多(并且我偶然遇到了我的测试中的一个,而最终只是放弃了恢复) mdadm会很容易)。
特别是如果您不使用所有工具的最新版本,情况将会变得更糟。
缺少功能
当前版本的LVM-RAID不支持缩小(lvreduce
)RAID逻辑卷。它们也不支持更改磁盘数量或RAID级别(lvconvert
给出错误消息,提示尚不支持)。lvextend
确实有效,甚至可以增加直到最近才获得支持的RAID级别,例如RAID10。以我的经验,扩展LV比减少LV更常见,因此这实际上是合理的。
其他一些mdraid功能不存在,尤其是您不能自定义mdadm可以使用的所有选项。
在较旧的版本(例如,在Debian Wheezy中找到),LVM RAID也不支持增长。例如,在Wheezy上:
root@LVM-RAID:~# lvextend -L+1g vg0/root
Extending logical volume root to 11.00 GiB
Internal error: _alloc_init called for non-virtual segment with no disk space.
通常,您不想运行Wheezy版本。
上面是一旦您安装它。这也不是一个微不足道的过程。
工具问题
在玩我的Jessie VM时,我(实际上)断开了一个磁盘的连接。没问题,机器保持运转。lvs
但是,没有给出阵列降级的迹象。我重新连接了磁盘,并卸下了第二个磁盘。保持运行状态(这是raid6)。重新连接,仍然没有指示lvs
。我lvconvert --repair
按了体积,它告诉我还可以。然后我拉了第三个磁盘...机器死了。重新插入,重新启动,现在不确定如何修复。mdadm --force --assemble
将解决此问题;既没有,vgchange
也lvchange
似乎没有该选项(lvchange接受--force
,但似乎没有任何作用)。即使试图dmsetup
将映射表直接提供给内核,我也无法弄清楚如何恢复它。
另外,它mdadm
是仅用于管理RAID的专用工具。LVM的功能还很多,但感觉(我承认这是很主观的)就像RAID功能已被推入其中。它不太适合。
您如何实际安装带有LVM RAID的系统?
这是在Debian Jessie或Wheezy上安装它的简要概述。杰西要容易得多。请注意,如果您打算在Wheezy上尝试使用此功能,请先阅读整篇文章...
使用完整的CD映像而不是netinst映像进行安装。
正常进行操作,进入磁盘分区,设置LVM物理卷。你可以把/boot
对LVM-RAID(上杰西,并用喘息下文详述一些工作)。
创建您的卷组。保留在LVM菜单中。
最初的乐趣–安装程序没有dm-raid.ko
加载模块,甚至没有可用!因此,您可以从将要安装的linux-image软件包中获取它。切换到控制台(例如Alt- F2),然后:
cd /tmp
dpkg-deb --fsys-tarfile /cdrom/pool/main/l/linux/linux-image-*.deb | tar x
depmod -a -b /tmp
modprobe -d /tmp dm-raid
安装程序不知道如何创建LVM-RAID LV,因此您必须使用命令行来完成。注意,我没有进行任何基准测试;下面的条带大小(-I
)完全是我的VM设置的猜测:
lvcreate --type raid5 -i 4 -I 256 -L 10G -n root vg0
在Jessie上,您可以使用RAID10进行交换。在Wheezy上,不支持RAID10。因此,您可以使用两个交换分区,每个RAID1。但是,您必须准确地告诉它要放置在哪些物理卷上,或者将镜像的两半都放在同一磁盘上。是。说真的 无论如何,这看起来像:
lvcreate --type raid1 -m1 -L 1G -n swap0 vg0 /dev/vda1 /dev/vdb1
lvcreate --type raid1 -m1 -L 1G -n swap1 vg0 /dev/vdc1 /dev/vdd1
最后,切换回安装程序,然后在LVM菜单中单击“完成”。现在,您将看到许多逻辑卷。那是安装程序不了解正在发生的事情。忽略所有带有rimage
或带有rmeta
其名称的内容(有关上述内容的解释,请参见上面的第一段)。
继续正常创建文件系统,交换分区等。安装基本系统等,直到出现grub提示符。
在Jessie上,如果将grub2安装到MBR(或可能与EFI一起使用,但我尚未对其进行测试),它将可以工作。在Wheezy上,安装将失败,唯一的解决方案是向后移植Jessie的grub2。这实际上很容易,它可以在Wheezy上干净地编译。以某种方式,将您的反向移植的grub软件包放入/target
(或在chroot之后一秒钟执行),然后:
chroot /target /bin/bash
mount /sys
dpkg -i grub-pc_*.deb grub-pc-bin_*.deb grub-common_*.deb grub2-common_*.deb
grub-install /dev/vda … grub-install /dev/vdd # for each disk
echo 'dm_raid' >> /etc/initramfs-tools/modules
update-initramfs -kall -u
update-grub # should work, technically not quite tested²
umount /sys
exit
实际上,在我最近的Jessie VM grub-install上已挂起。切换到F2并执行while kill $(pidof vgs); do sleep 0.25; done
,接着执行相同的操作lvs
,通过grub-install获得了它。它似乎产生尽管一个有效的配置,但以防万一我做了chroot /target /bin/bash
,确信/proc
和/sys
封片,并做了一个update-grub
。到那时,它完成了。然后,我dpkg-reconfigure grub-pc
选择了在所有虚拟磁盘的MBR上安装grub。
完成上述操作后,在Wheezy上,选择“在没有引导程序的情况下继续”。
完成安装。它会启动。大概。
社区知识
有相当多的人了解mdadm
,并且具有很多部署经验。Google可能会回答有关您的大多数问题。通常,您可能希望在一天之内在此找到有关此问题的答案。
LVM RAID不能这么说。很难找到指南。我运行的大多数Google搜索反而为我找到了使用mdadm数组作为PV的东西。老实说,这可能主要是因为它是新的,并且不那么常用。某种程度上说,反对这样做是不公平的,但是,如果出现问题,mdadm周围更大的现有社区使恢复我的数据的可能性更大。
结论
LVM-RAID正在快速发展。在Wheezy上,它实际上不是可用的(至少,不进行LVM和内核的反向移植)。早在2014年,在Debian测试中,这是一个有趣但未完成的想法。如果您经常需要创建具有不同RAID配置的小片(这是管理上的噩梦mdadm
),那么当前的测试(基本上将成为Jessie)感觉就像您可能实际使用的东西。
如果几个大型mdadm RAID阵列(使用LVM分割为多个分区)可以充分满足您的需求,建议您继续使用该阵列。相反,如果您不得不创建许多阵列(甚至逻辑卷阵列),请考虑改用LVM-RAID。但是请保持良好的备份。
LVM RAID(甚至mdadm RAID)的许多用途已被集群存储/对象系统,ZFS和btrfs等事物所接管。我建议您也进行调查,以更好地满足您的需求。
谢谢你们
我要感谢psusi让我重新访问LVM-RAID的状态并更新了这篇文章。
脚注
我怀疑您可以使用设备映射器以将元数据和数据粘合在一起的方式mdadm --assemble
使用。当然,您可以只mdadm
在逻辑卷上运行就可以了……这会更明智。
在进行Wheezy安装时,我第一次没有这样做,并且没有使用grub配置。我必须通过在grub提示符下输入所有信息来引导系统。一旦启动,就可以了,所以我认为在安装程序中就可以了。如果您在grub提示符下结束,请输入以下神奇的行:
linux /boot/vmlinuz-3.2.0-4-amd64 root=/dev/mapper/vg0-root
initrd /boot/initrd.image-3.2.0-4-amd64
boot
PS:距离我实际进行原始实验已经有一段时间了。我已经提供了原始笔记。请注意,我现在做的是最近的一些,涵盖在此答案中,而不是在那些注释中。