Fah*_*tha 64 raid software-raid lvm md
在他对“混合突袭类型”问题的回答中,HBruijn 建议使用 LVM 来实现 RAID,而不是更标准的 MDRAID。
经过一番调查,LVM 似乎也支持 RAID 功能。过去,我在 MDRAID 之上使用 LVM,直到现在才知道 LVM 也支持 RAID 功能。这似乎是一个相对较新的发展,但我还没有确切地知道这是什么时候实施的。
因此,这些是在 Linux 上实现软件 RAID 的替代方法。这两种不同方法的优缺点是什么?我正在寻找两种方法之间的功能比较,以便人们可以决定哪种方法更适合他们。如果您在答案中包含您的数据,则基于实验的结论(例如,此功能不如此功能好用,这就是原因)也可以。
要解决的一些具体问题:
笔记:
在http://www.olearycomputers.com/ll/linux_mirrors.html 上有详细的讨论, 但我不知道它的写作日期。
Serverfault 上的类似问题:linux LVM mirror vs. MD mirror。不过这个问题是2010年问的,答案可能已经过时了。
2.02.87 版的变更日志条目 - 2011 年 8 月 12 日有
为新的 segtype 'raid' 添加 configure --with-raid 以支持 MD RAID 1/4/5/6
因此,看起来 LVM 中的 RAID 支持已有大约 3 年的历史。
der*_*ert 73
LVM-RAID 实际上是幕后的 mdraid。它的工作原理是为每个 RAID 设备创建两个逻辑卷(一个用于数据,称为“rimage”;一个用于元数据,称为“rmeta”)。然后它将这些传递给现有的 mdraid 驱动程序。所以像处理磁盘读取错误、I/O 负载平衡等应该相当成熟。
这是好消息。
您不能使用mdadm
它(至少,不是以任何简单的方式¹)并且 LVM RAID 工具远未成熟。例如,在 Debian Wheezy 中,lvs
无法告诉您 RAID5 同步状态。我非常怀疑修复和恢复(特别是从“那不应该发生!”的情况下)几乎和 mdadm 一样好(我在测试中不小心遇到了其中一个,最后放弃了恢复它 - 恢复与mdadm 会很容易)。
特别是如果您没有使用所有工具的最新版本,情况会变得更糟。
当前版本的 LVM-RAID 不支持缩小 ( lvreduce
) RAID 逻辑卷。它们也不支持更改磁盘数量或 RAID 级别(lvconvert
给出一条错误消息,表示尚不支持)。lvextend
确实有效,甚至可以增加 mdraid 最近才获得支持的 RAID 级别,例如 RAID10。根据我的经验,扩展 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.
Run Code Online (Sandbox Code Playgroud)
通常,您不想运行 Wheezy 版本。
以上是安装完成后。这也不是一个微不足道的过程。
在玩我的 Jessie VM 时,我断开了(实际上)一个磁盘的连接。那行得通,机器一直在运行。lvs
但是,没有迹象表明阵列已降级。我重新连接了磁盘,并删除了一秒钟。保持运行(这是raid6)。重新连接,仍然没有来自 的指示lvs
。我跑lvconvert --repair
了音量,它告诉我没关系。然后我拉了第三个磁盘......机器死了。重新插入它,重新启动,现在我不确定如何修复。mdadm --force --assemble
会解决这个问题;既不vgchange
也不lvchange
显得有该选项(lvchange接受--force
,但它似乎并没有做任何事情)。即使尝试dmsetup
直接将映射表提供给内核,我也无法弄清楚如何恢复它。
此外,它mdadm
还是一个专门用于管理 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
Run Code Online (Sandbox Code Playgroud)安装程序不知道如何创建 LVM-RAID LV,因此您必须使用命令行来完成。注意我没有做任何基准测试;下面的条带大小 ( -I
) 完全是对我的 VM 设置的猜测:
lvcreate --type raid5 -i 4 -I 256 -L 10G -n root vg0
Run Code Online (Sandbox Code Playgroud)在 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
Run Code Online (Sandbox Code Playgroud)最后,切换回安装程序,然后在 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
Run Code Online (Sandbox Code Playgroud)实际上,在我最近的 Jessie VM 上 grub-install 挂了。切换到 F2 并执行while kill $(pidof vgs); do sleep 0.25; done
,然后是相同的 for lvs
,通过 grub-install 获得它。它似乎产生尽管一个有效的配置,但以防万一我做了chroot /target /bin/bash
,确信/proc
和/sys
封片,并做了一个update-grub
。那一次,它完成了。然后我做了一个dpkg-reconfigure grub-pc
选择在所有虚拟磁盘的 MBR 上安装 grub。
在 Wheezy 上,执行上述操作后,选择“不使用引导加载程序继续”。
完成安装。它会启动。大概。
有相当多的人了解mdadm
并且拥有丰富的部署经验。谷歌很可能会回答你的大多数问题。您通常可以在此处获得有关它的问题的答案,可能在一天之内。
LVM RAID 则不能这样说。很难找到向导。我运行的大多数 Google 搜索都找到了有关使用 mdadm 数组作为 PV 的内容。老实说,这可能主要是因为它较新,而且不太常用。在某种程度上,反对它感觉不公平 - 但如果出现问题,围绕 mdadm 的更大的现有社区使恢复我的数据的可能性更大。
LVM-RAID 发展相当迅速。在 Wheezy 上,它并不是真的可用(至少,没有对 LVM 和内核进行向后移植)。早些时候,在 2014 年,在 Debian 测试中,感觉这是一个有趣但未完成的想法。当前的测试,基本上是什么将成为 Jessie,感觉就像您可能实际使用的东西,如果您经常需要创建具有不同 RAID 配置的小片(这是管理上的噩梦mdadm
)。
如果使用 LVM 将几个大型 mdadm RAID 阵列切分成多个分区,可以充分满足您的需求,我建议您继续使用它。相反,如果您最终不得不创建许多阵列(甚至是逻辑卷阵列),请考虑改用 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
Run Code Online (Sandbox Code Playgroud)PS:我已经有一段时间没有真正进行原始实验了。我已经提供了我的原始笔记。请注意,我现在已经完成了更多最近的内容,这些内容包含在本答案中,而不是那些笔记中。
我也不知道 LVM 也可以做 RAID。就个人而言,我会坚持使用 mdadm,因为它是一个更成熟的软件,可以做同样的事情。如果 LVM RAID 出现问题,您可能无法获得与使用 mdadm 时一样多的支持。此外,我不相信 LVM RAID,因为 LVM 历来证明不是最强大的软件。
ZFS 和 BTRFS 是未来。它们带来的好处超出了块层的可能范围。除非我的目标是兼容性,否则我不会再使用 LVM/mdadm。ZFS 和 BTRFS 有很多特性,比如压缩、重复数据删除和写时复制,但我不会在这里讨论,因为它有点超出范围。
最后,做你的研究并使用任何适合你的需要/想要的东西。
归档时间: |
|
查看次数: |
74188 次 |
最近记录: |