我想使用全新安装为工作站设置软件 raid 10 阵列 (4x2TB),但我在网上发现不适用/冲突/旧的资源。我想获得社区关于设置此类阵列的建议,因为似乎有大量可能的配置。
具体来说,我将使用工作站进行图像分析(即典型的文件大小从几百 MB 到几 GB),因此如果可以为此目的进行优化,那就太好了。
干杯
答案1
我不记得在服务器上设置 RAID 时我具体遵循了哪些资源,但我认为本文是信息的重点。一些重要的事情:
- 使用
mdadm
而不是 dmraid。 - 使用
/dev/disk/by-id/
路径指向磁盘,而不是 /dev/sda 等……将它们映射到物理设备更容易,以防您需要更换磁盘或类似的东西。 - 要有耐心。起初我以为我的 RAID 会在 5 小时的初始设置时间后准备就绪。然后又花了一天时间重建并真正准备就绪。(4x2TB)
- 使用单独的磁盘/分区/RAID 安装主操作系统。如果将大型数据 RAID 与主操作系统及其数据分开,则管理一切会更容易。如果操作系统方面出现问题,恢复小型操作系统磁盘比重建大型多 TB 阵列要容易得多。
答案2
在给定情况下,对于 RAID10,我发现只有两个变量可供优化:
区块大小
将其设置为大于默认值 512KiB,以最大限度地减少大文件的线性读写开销。您应该在机器上的一个小分区上尝试一下,看看哪个分区可以提供最佳性能,例如 1MB、2MB、5MB、10MB...
近与远布局
RAID1+0 与 RAID0+1 相当。Far 稍快一些,因为读取性能更像 RAID0。然而 Near 布局是默认布局,因为它在所有镜像磁盘都损坏的不太可能发生的情况下幸存的几率略高(这里有一些概率数学)。下面是一些关于差异的更直观的想法,很高兴从SLES mdadm 文档:
靠近好像
sda1 sdb1 sdc1 sdd1 0 0 1 1 2 2 3 3 4 4 5 5
远的好像
sda1 sdb1 sdc1 sdd1 0 1 2 3 4 5 6 7 . . . 3 0 1 2 7 4 5 6
从评论中的讨论中更新有关远冗余和近冗余的信息。假设sda
失败:
near
sda1 sdb1 sdc1 sdd1
- 0 1 1
- 2 3 3
- 4 5 5
然后sdc
或者 sdd
仍然会失败,但远远不够:
far
sda1 sdb1 sdc1 sdd1
- 1 2 3
- 5 6 7
. . .
- 0 1 2
- 4 5 6
现在只会sdc
失败,因为故障的sdb
驱动器会使块 4 无法访问,而故障的sdd
驱动器会使块 3 无法访问。
结论:使用近布局时,双磁盘故障存活的几率更高。(有人可以在这里计算出一个定量的数字吗?)
答案3
提前准备一些热备件是个好主意。还请考虑这些注意事项。
推荐的家庭服务器存储方案?(LVM/JBOD/RAID 5...)
请参阅上面链接中的脚注[1],看看当您最需要廉价存储时会发生什么。
然而,在您分析目标应用程序实际如何使用存储之前,这一切都是没有实际意义的。您可能会发现并行是可能的,因此可以使用一个块来读取结果,另一个块来写入结果。这可以在 RAID0 后面进一步抽象(直到 HBA 报告 QUEUE_FULL),并通过 rsync 备份结果。
这确实要视情况而定,说“我正在做图像分析”而不定义工作量或服务级别是不够的;即使你定义了,这种级别的性能分析也是真正的工作,我知道“我”不会在业余时间做这件事。我的目的是让你思考你的应用程序,以创建你自己的解决方案。主轴始终是系统中最慢的部分,请相应地进行规划。
如果您希望采用多阵列方法,可以创建两个 RAID 1,在单独的控制器上并将这些 MD 设备添加到 LVM VG 进行管理。当然,RAID 10 速度很快,但它仍然是一个存储队列,现在您有两个,并且使用单独的控制器,也没有 HBA 队列共享。
性能说明:
- http://www.thesanman.org/2011/12/exchange-completion-time-san-storage.html
- http://sqlblog.com/blogs/joe_chang/archive/2010/10/18/io-queue-depth-strategy.aspx
- http://www.ibm.com/developerworks/linux/library/l-4kb-sector-disks/index.html
请记住,SW RAID 与 HW RAID 并无不同,了解其工作原理,否则当其发生故障时,您最终可能会面临更大的风险,而不是花费精力创建常规备份策略 (rsync.net)。我已经记不清有多少用户因为没有阅读手册并实际测试故障模式而失去了一切。