我在家里和工作中运行了几台 Linux 机器。我的大部分计算都是 I/O 受限的,例如大型编译器回归套件等。在家里,我也有一台可以从地面天线捕获高清视频的机器。一项体育赛事进入一个大约 30GB 的文件;我有超过 4TB 的存储空间专门用于高清视频。
我的问题是在什么情况下我应该条纹?我当前的主目录和根文件系统设置是使用 LVM 在两个驱动器上对 XFS 进行条带化。示例输出lvdisplay -m
:
Logical extent 0 to 117247:
Type striped
Stripes 2
Stripe size 64 KB
Stripe 0:
Physical volume /dev/sdb2
Physical extents 0 to 58623
Stripe 1:
Physical volume /dev/sda2
Physical extents 0 to 58623
但是,我刚刚阅读了诸如 RAID 之类的文章:对于您的家用 PC来说 不是一个聪明的主意,两个驱动器比一个驱动器好吗?,以及 来自 storagereview.com 的一篇文章——所有这些都说使用 RAID-0 进行条带化对于单用户台式机来说是浪费金钱和精力。 但
这些研究使用的是 Windows,而不是 Linux
他们使用硬件 RAID,而不是 LVM
他们不处理 30GB 的视频文件
我想了解其他人的经验,了解什么样的配置(如果有的话)跨两个磁盘的 LVM 条带化是否可以改善单用户 Linux 桌面体验?
如果您谈论的是“镜像”条带,您将使用它将数据从一个驱动器迁移到另一个驱动器。您不会将其用作 RAID-1 的一种形式,因为它的效率不如常规
md
驱动程序。如果您正在谈论扩展驱动器空间的条带,那么这就是它的用途:当您用完空间时。
否则,我不会为 LVM 条带选项而烦恼。
好吧,我已经为一个繁忙的服务器打开了 LVM 镜像,在一个 eSATA 机箱中有两个驱动器。我观察到的行为是,它会将镜像写入“突发”到另一个驱动器,并且通常落后于主驱动器一两秒。这让我非常紧张,因为在主驱动器故障期间可能存在潜在的一致性问题。在繁重的写入负载下性能也很糟糕,并且读取性能没有提高,因为它没有使用其他驱动器进行读取。我取消了该设置并通过驱动程序将其切换到 RAID-1
md
,速度提升立即可见,没有“突发”行为。一些建议:
RAID-0 条带化的存在是有原因的:您的存储容量不足,您暂时需要增加它。这里的关键词是“暂时的”,意思是您很快就会通过永久修复来解决问题。
如果您正在谈论一些可以擦拭并重新安装的游戏盒,那么是的,这是浪费时间。
如果您谈论的是一个可以处理您的生计的盒子,而使事情正常进行的唯一方法是将卷扩展到另一个驱动器上,那么情况就不同了。你需要做你需要做的事情。
条带化可能无助于您的日常桌面活动。当您有大型且(相对)长的 IO 操作时,最好使用条带化。在常规桌面上,您通常有很多小的、随机的 IO 操作,这些操作不会从条带化中受益。
恕我直言,最好使用条纹:
考虑到高清广播使用 19.4Mbit/sec 的最大比特率。这不到 2.5MB/秒。您可以一次录制 4-5 个高清广播,单个硬盘就可以跟上。所以我想说,在这种情况下,风险大于任何好处。
您可能会注意到不同的唯一真实情况是,如果您将这些 30GB 文件复制到另一个系统,该系统也对千兆以太网进行了某种突袭,或者可能编辑这些视频。但我的猜测是,在这种情况下,我们正在谈论一个神话电视盒,它可能也在标记广告。因此,商业标记可能会稍微快一些,但一旦捕获了流,mythtv 就会将其作为后台进程进行。不过,从最终用户的角度来看,我没有看到任何改进。
我说 -总是使用 LVM。你永远不知道什么时候你可能想要扩展你正在使用的 LV,所以为什么不选择通过添加另一个驱动器来实现,或者通过将整个东西添加到一个更大的驱动器并在空的驱动器上添加一个 PV空间。
更不用说快照的可能性,以及 LVM 提供的其他功能
至于那些文章,raid 和 LVM 是不同的东西,是为了达到不同的目的。Raid主要是为了增加存储的健壮性,或者提高它的速度。LVM 是关于灵活的空间管理和一些额外的好处,比如快照,否则只能在高端存储系统上实现。
条带化仅适用于可能丢失数据的情况。您的块设备的可靠性将是单个驱动器的一半。如果您可以忍受它以换取额外的性能,那么条带化可能对您很有效。
是否获得额外的性能将取决于系统的其余部分。SATA 芯片与系统其他部分之间是否存在瓶颈。你真的是 I/O 绑定等吗?
查看您是否会有所收获的唯一简单方法是对您想要使用该系统的工作负载进行实验。
正如其他人所说,始终使用 LVM,因为它为您提供了灵活性。除非是用于 tmp 空间,否则我不会在家里使用非镜像条纹。
通常,工作站级设备上的“硬件 RAID”适配器是垃圾。关于该主题有很多 StackOverflow 问题,所以我将把它留在那里。
无论您采用哪种方式,条带化(也称为 RAID-0)都是一种提高您拥有的 IO 绑定应用程序性能的好技术。这种性能的代价是更高的、未知的额外灾难性故障风险。
这有什么大不了的吗?对我来说,它不是——我使用的是带有 4 个条带驱动器的 Mac Pro,所有这些都由 Time Machine 备份。当我从备份中恢复时,我可以忍受几个小时无法使用的情况。对于您,我建议您在进行条带化之前采用您可以接受的备份/恢复策略。
IMO,仅当您根本不关心数据时才应单独使用条带化。
当您跨多个驱动器条带化数据时,您会增加丢失所有驱动器上的所有内容的风险,因为任何一个驱动器的故障都意味着整个卷的完全丢失......并且您条带化的驱动器越多,风险就越大。
因此,IMO,“我什么时候应该条纹?”的答案。是“从不”或“当您对镜像卷进行条带化时,如在 RAID-10 中”。
如果数据本身和 IO 性能对您来说都很重要,那么请使用具有大型电池支持写入缓存的优质硬件 SAS RAID 卡(例如,adaptec 3805 或 5805 或类似产品),并制作 RAID-6 卷。要使用 RAID-6 获得 4TB,您需要 6 个 1TB 驱动器。再加一个作为热备件或冷备件。
SAS 控制器支持 SAS 驱动器和 SATA 驱动器。上面提到的型号直接支持多达 8 个驱动器,但可以通过使用 SAS 扩展器支持更多(以性能为代价 - 更多驱动器意味着每个驱动器的 IO 带宽更少,但您可能会扩展到 16 个左右驱动器而不会注意到任何真正的性能冲击。每个 SATA 通道 3Gbps 可能为您提供 250MB/s 的 IO,当前好的非 SSD 驱动器每个可以使用大约 100-120MB/s 左右)。
或者,使用软件 RAID-10(镜像卷的条带阵列)。4TB 阵列需要 8x1TB 驱动器。例如,4 个 RAID-1 阵列与 RAID-0(或 LVM)一起条带化,用于单个 4TB 卷。
您可以在这些 RAID 阵列之上使用 LVM 来管理空间。如果您要走 RAID-10 路线,则可以使用 LVM 而不是 RAID-0 进行条带化。
要考虑的另一件事是将消耗 IO 的应用程序分开,这样它们就不会竞争 IO。例如,将您的操作系统保存在一个较小的驱动器上,例如 80GB(或 RAID-1 镜像对),将编译器回归的源代码保存在另一个驱动器或 RAID-1 对上,以及将视频数据保存在 sw RAID-10 或硬件 RAID- 6.
并在机器中安装尽可能多的内存,因为 linux 会将其全部用于磁盘缓冲。最常见的主板最多支持 4 个 DDR-2 或 6 个 DDR-3 记忆棒,因此 2GB 记忆棒比 4GB 记忆棒便宜得多,您可以以合理的价格安装最多 8GB 或 12GB。如果您需要更多,用具有更多 RAM 插槽的服务器 MB(来自 Tyan 或 SuperMicro 等)替换主板比使用 4GB 记忆棒更具成本效益。
哦,热插拔托架是个好主意 - 当(不是如果,当)驱动器发生故障时,您需要能够尽快更换它。RAID-6 可以应对任何两个同时发生故障的驱动器,因此当一个驱动器发生故障时,它只需要一个驱动器死亡就可以带走所有东西。RAID-10 可以应对更多的驱动器故障(只要每个镜像对中有 1 个幸存,多达一半的驱动器可能会出现故障)。
最后,备份。正如许多人之前多次提到的那样,RAID不是备份的替代品。目前唯一能够在合理的时间内备份您拥有的大量数据而无需花费数天更换磁带的磁带介质是 LTO-4。用于此的驱动器很昂贵,而且盒式磁带似乎也很昂贵(但在计算每 GB 的成本时实际上比硬盘驱动器便宜)。如果您的预算不够,那么您可以使用多个额外的驱动器(通过 e-sata、火线、备用热插拔托架......甚至 USB 连接)来备份 - 插入驱动器、运行备份、删除驱动器、货架存储或异地存储...当前驱动器容量高达 2TB,并且随着时间的推移会变得更大、更便宜。顺便说一句,按当前价格(裸 LTO 驱动器约 1500 至 2000 美元,而 1TB 硬盘约 100 美元 - 约当前澳元价格),
这可能是因为我安装所有游戏的驱动器比我的主系统/工作分区所在的驱动器旧一些,但是当我添加第二个驱动器时,我注意到某些游戏的加载和级间时间有明显改善(相同的血统),然后设置为 RAID0 阵列。不接近理论两倍的性能,但足以引起注意。这当然是相当主观的:我没有执行任何统计上合理的基准。
这些文章相当陈旧,storagereview 一篇专门讨论了 PCI 总线的局限性(这意味着它将成为批量吞吐量方面的瓶颈,而不是现代驱动器,从而限制了 RAID0 的批量性能)。但是,如果您的控制器是基于 PCI-E 的,那么您将拥有更大的吞吐量。
话虽如此,我只是在我的台式机上设置 RAID0 作为实验,看看它实际上会产生什么不同。如果我在家里组装一台全新的台式电脑和新的闪亮快速驱动器,我不确定我是否会再次这样做。对于桌面使用,我建议使用一对驱动器作为 RAID1 阵列来获得冗余,而不是出于性能原因在 RAID0 配置中使用它们。
LVM 条带化可方便地将条带卷和非条带卷混合在单个卷组中,从而轻松移动空间(缩小一个卷,扩展另一个卷)。如果您事先不知道自己需要什么,这很好。
我之前的另一个用例是让使用机器的客人不那么明显地看到正在使用条带化。使用 md RAID,可以
/dev/md0
在df
输出中查看并在/proc/mdstat
.对于视频编辑,以https://www.linuxtoday.com/blog/raid-vs-lvm/中的顺序读/写性能为指导,md RAID-0 可能会比 LVM 条带化提供更好的性能。我认为文件系统(ext4/xfs/btrfs 等)的选择更重要。