ZFS / Linux MD RAID理想的SATA/SAS控制器

翻译自http://blog.zorinaq.com/?e=10版权属于原文作者!有少量的删减。

[最后更新于2012-06-03]

作者需要很多的可靠和廉价的存储空间(媒体收集,备份)。硬件RAID往往昂贵和笨重。他感受了不少在Solaris / FreeBSD上的ZFS和Linux MD RAID的优势:

性能

在许多情况下,软件RAID和硬件RAID一样快,有时侯甚至更快,因为操作系统知道RAID布局,从而可以优化RAID的I/O模式。事实上,即使是最计算密集型的RAID5或RAID6在奇偶校验上CPU的开销对于现代处理器来说可以忽略不计。一个具体的例子,Linux2.6.32中,Phenom II X4 945 3.0GHz CPU在RAID6寄偶校验上的速度接近8GB/s每核心(在dmesg中显示: "raid6: using algorithm sse2x4 (7976 MB/s)")。因此,实现了在Linux MD RAID6阵列500MB/s的吞吐量,而用于奇偶校验的CPU开销却不到1.5%。现在关于优化I/O模式,有个有趣的故事:成立初期的Youtube,扩展其基础设施的举措之一就是将他们的数据库服务器从硬件RAID切换到软件RAID,他们发现I/O吞吐量提高了20-30%。

扩展性

ZFS和Linux MD RAID允许跨多个磁盘控制器或多个SAN设备创建阵列,减轻在PCIe链路或GbE链路吞吐量上可能出现的瓶颈。而硬件RAID限制到一个单一的控制器,无扩展余地。

可靠性

No hardware RAID = one less hardware component that can fail.
非硬件RAID = 更少的会出故障的硬件(我是这么理解的,不知道妥否?)

数据恢复简便

只要将磁盘插入任何服务器,数据就可以被恢复。不依赖于任何一个特定的RAID控制器。

灵活性

可以在系统中任意磁盘控制器上的任意磁盘创建阵列,也可以将磁盘从一个控制器移到另一个控制器。

管理便捷

只要学习使用一种管理工具:zpool或mdadm就可管理阵列。不在需要安装专门的管理工具,或重启进入BIOS来管理阵列。

成本

不需要购买昂贵的硬件RAID控制器显然会很便宜。

因此,许多ZFS和Linux MD RAID的使用者,包括作者,一直在寻找简单可靠,速度快,价格便宜,没有花里胡哨功能的非RAID控制器。大多数主板有多达4或6个板载端口(一定要在BIOS中启用AHCI模式,这是精心设计的高级主机控制器接口,操作系统可以使用该接口来发挥最大的性能)但是对于超过4或6个磁盘,没有太多的选择。多年来,本文作者已经花了相当长的一段时间在访问控制器制造商的网站,LKML,LINUX-IDE和ZFS的邮件列表上,从而建立了一个清单,列出了ZFS或Linux MD RAID理想的SATA/SAS控制器。清单同时也列出了在线零售商的链接,因为有些控制器在网上不容易找得到。

清单中包含SAS控制器,因为它们和SATA控制器一样,也是一种好选择。有很多SAS控制器和SATA控制器一样廉价(即使它们是针对企业市场的),它们完全兼容SATA3Gbps和6Gbps的磁盘,支持所有常用的功能:热插拔,队列等。SAS控制器通常使用SFF-8087接口,也被称为internal mini SAS连接器,或iPASS连接器。使用内置SFF-8087到4xSATA的正向数据线(非反向)可连接多达4个SATA磁盘到控制器的SFF-8087接口。这种类型的电缆通常售价为15-30美元。

事实上在市场上只有4个重要的非RAID SATA/SAS控制器独立芯片制造商,LSI、Marvell、JMicron(智微)、Silicon Image。控制器卡制造商像Adaptec、HighPoint、英特尔、超微、泰安等,几乎都是使用这4家芯片制造商的芯片。

清单列出了从2端口到16端口,Linux和Solaris系统下内核驱动支持的,以及FreeBSD系统下有限支持的的非RAID SATA/SAS控制器。作者只关注原生PCIe的控制器,很少专注PCI-X的(事实上有1个PCI-X控制器是非常流行的:88SX6081)。

清单中[xxx-xxxMB/s/port]代表每端口预估的实际最大吞吐量(假设当控制卡所有端口都产生I/O并发,对Host Link或PCIe/PCI-X总线产生瓶颈时)。作者认为PCIe的控制卡可以达到PCIe总线最大理论吞吐量的60-70%,PCI-X的控制器可以达到PCI-X总线最大理论吞吐量的80%。作者在实际环境中将PCIe总线的Max Payload Size的设置为128或256字节(一种常见的默认值),提高或降低PCI-X总线的默认延迟进行基准测试,测试的结果论证了这种假设的成立。截至2010年5月,现代磁盘在盘片的外圈进行读写时可以轻易地达到120-130MB/s的持续吞吐量,如果你想将产生瓶颈的可能性降低至最低的话,要避免选择吞吐量小于150MB/s/port的控制器。

32 端口

  • [SAS] 4 x switched Marvell 88SE9485, 6Gbps, PCIe (gen2) x16 [150-175MB/s/port]
    [2011-09-29 更新:HighPoint / RocketRAID 2782]
    Linux/Solaris/FreeBSD support: see Marvell 88SE9485 or 88SE9480 below

24 端口

  • [SAS] 3 x switched Marvell 88SE9485, 6Gbps, PCIe (gen2) x16 [200-233MB/s/port]
    [2011-09-29 更新:HighPoint / RocketRAID 2760A]
    Linux/Solaris/FreeBSD support: see Marvell 88SE9485 or 88SE9480 below

16 端口

  • [SAS] LSI SAS2116, 6Gbps, PCIe (gen2) x8 [150-175MB/s/port]
    LSI / LSISAS9200-16e,
    [2010-10-27 更新:LSI / LSISAS9201-16i]

    Linux support: mpt2sas (2.6.30+)
    Solaris support: mptsas (snv137+)
    FreeBSD support: mps (first in FreeBSD 9.0, then backported to 8.2-stable, and 8.1, 8.0, 7.4)[Added on 2011-09-29]

  • [SAS] 2 x switched Marvell 88SE9485, 6Gbps, PCIe (gen2) x16 [300-350MB/s/port]
    [2011-09-29 更新:HighPoint / RocketRAID 2740 and 2744]

    Linux/Solaris/FreeBSD support: see Marvell 88SE9485 or 88SE9480 below

8 端口

  • [SAS] Marvell 88SE9485 or 88SE9480, 6Gbps, PCIe (gen2) x8 [300-350MB/s/port]
    [2011-07-01 更新:Supermicro / AOC-SAS2LP-MV8]
    Areca / ARC-1320
    HighPoint / RocketRAID 272x

    Linux support: mvsas (94xx: 2.6.31+, ARC-1320: 2.6.32+)
    Solaris support: not supported (see 88SE6480)

  • [SAS] LSI SAS2008, 6Gbps, PCIe (gen2) x8 [300-350MB/s/port]

To be continued