如果某个人恰好有一些服务器级的硬件需要处理,那么是否build议在基于硬件的RAID1之上运行ZFS? 是否应该closures基于硬件的RAID,然后在mirror
或raidz
zpool
上运行ZFS?
在硬件RAIDfunctionclosures的情况下,基于硬件RAID的SATA2和SAS控制器比非硬件RAID控制器隐藏读取和写入错误的可能性更大或更小?
就非可定制的服务器而言,如果存在硬件RAID控制器实际上成本中立的情况(甚至降低了预build服务器产品的成本,因为它的存在提高了托pipe公司提供互补IPMI的可能性访问),是否应该完全避免? 但是,它应该追求?
ZFS的想法是尽可能地让它知道磁盘是如何运作的。 那么,从最糟糕到最好:
由于ZFS对于硬件相当偏执,所以隐藏的越less,就越能应付任何硬件问题。 正如Sammitch指出的那样 ,configurationRAID控制器也意味着在死亡(硬件和configuration)的日子里也会遇到同样的问题。
关于硬件标准化的问题,硬件RAID控制器,硬件控制器有一个真正的传递或JBOD模式。
问:如果某个人恰好拥有一些服务器级的硬件,那么build议在基于硬件的RAID1之上运行ZFS吗?
答:强烈build议将ZFS直接运行到磁盘,而不要使用任何forms的RAID。 无论是否有效地要求您使用RAID卡的系统都无法使用ZFS,与ZFS的其他好处相比,它具有更高的数据弹性。 如果有底层的RAID卡负责为ZFS提供单个LUN,那么ZFS就不会提高数据永续性。 如果你首先考虑使用ZFS的唯一原因是数据弹性改善,那么你就失去了使用它的一切理由。 但是,ZFS还提供了ARC / L2ARC,压缩,快照,克隆以及其他您可能也需要的其他改进,在这种情况下,它可能仍然是您select的文件系统。
问:是否应该closures基于硬件的RAID,然后在镜像或raidz zpool上运行ZFS?
答:是的,如果可能的话。 一些RAID卡允许直通模式。 如果有的话,这是最好的办法。
问:在硬件RAIDfunctionclosures的情况下,基于硬件RAID的SATA2和SAS控制器比非硬件RAID控制器隐藏读取和写入错误的可能性更大或更小?
答:这完全取决于有问题的RAID卡。 您必须仔细阅读手册或联系RAID卡的制造商/供应商才能find答案。 有一些非常重要,是的,特别是如果“closures”RAIDfunction实际上并没有完全closures它。
问:就非可定制的服务器而言,如果存在硬件RAID控制器实际上成本中立的情况(或者甚至降低了预先构build的服务器产品的成本,因为它的存在提高了主机公司提供的可能性互补的IPMI访问),是否应该完全避免? 但是,它应该追求?
答:这和你的第一个问题是一样的。 再说一次 – 如果您只希望使用ZFS,可以提高数据弹性,并且您select的硬件平台需要RAID卡为ZFS(或多个LUN,但您的ZFS分区)提供单个LUN,那么您正在没有什么可以提高数据弹性,因此您selectZFS可能不合适。 但是,如果您发现其他任何ZFSfunction都有用,它可能仍然是。
我想添加一个额外的问题 – 上述答案依赖于在ZFS下使用硬件RAID卡不会损害ZFS,除去提高数据永续性的能力。 事实是,这是一个灰色地带。 ZFS中有各种可调和假设,在交付多磁盘LUN而不是原始磁盘时,运行得并不一定好。 大多数情况下,可以通过适当的调整来取消,但是在大型RAID LUN之上,ZFS不会像在单个主轴之上一样高效。
此外,还有一些证据表明,ZFS与LUN的对话方式与传统的文件系统截然不同,它们通常会调用RAID控制器中的代码path以及他们不习惯的工作负载,这可能会导致一些怪异现象。 最值得注意的是,如果您不是还提供了一个单独的日志设备,您可能会完全禁用ZILfunction,如果您还没有提供单独的日志设备,尽pipe当然我会强烈build议您请提供一个单独的原始日志设备(如果可能的话,不是来自RAID卡的LUN)。
我经常在HP ProLiant Smart Array RAIDconfiguration上运行ZFS。
为什么?
一个例子:
RAID控制器configuration。
[root@Hapco ~]# hpacucli ctrl all show config Smart Array P410i in Slot 0 (Embedded) (sn: 50014380233859A0) array B (Solid State SATA, Unused Space: 250016 MB) logicaldrive 3 (325.0 GB, RAID 1+0, OK) physicaldrive 1I:1:3 (port 1I:box 1:bay 3, Solid State SATA, 240.0 GB, OK) physicaldrive 1I:1:4 (port 1I:box 1:bay 4, Solid State SATA, 240.0 GB, OK) physicaldrive 2I:1:7 (port 2I:box 1:bay 7, Solid State SATA, 240.0 GB, OK) physicaldrive 2I:1:8 (port 2I:box 1:bay 8, Solid State SATA, 240.0 GB, OK)
块设备列表
[root@Hapco ~]# fdisk -l /dev/sdc Disk /dev/sdc: 349.0 GB, 348967140864 bytes 256 heads, 63 sectors/track, 42260 cylinders Units = cylinders of 16128 * 512 = 8257536 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/sdc1 1 42261 340788223 ee GPT
zpoolconfiguration
[root@Hapco ~]# zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT vol1 324G 84.8G 239G 26% 1.00x ONLINE -
zpool细节
pool: vol1 state: ONLINE scan: scrub repaired 0 in 0h4m with 0 errors on Sun May 19 08:47:46 2013 config: NAME STATE READ WRITE CKSUM vol1 ONLINE 0 0 0 wwn-0x600508b1001cc25fb5d48e3e7c918950 ONLINE 0 0 0
zfs文件系统列表
[root@Hapco ~]# zfs list NAME USED AVAIL REFER MOUNTPOINT vol1 84.8G 234G 30K /vol1 vol1/pprovol 84.5G 234G 84.5G -
通常情况下,您不应该在RAIDarrays中configuration的磁盘上运行ZFS。 请注意,ZFS不必在RAID模式下运行。 您可以使用单个磁盘。 但是,几乎99%的人为它的RAID部分运行ZFS。 你可以在条带模式下运行你的磁盘,但这是ZFS的一个糟糕的用处。 就像其他海报所说的,ZFS想知道很多关于硬件的知识。 ZFS只能连接到可以设置为JBOD模式的RAID卡,或者最好连接到HBA。 跳到IRC Freenode频道#openindiana; 渠道中的任何ZFS专家都会告诉你同样的事情。 如果他们不提供HBA,请要求您的主机提供商提供JBOD模式。
简而言之:在ZFS下使用RAID只是简单地杀死了使用ZFS的想法。 为什么? – 因为它devise用于纯磁盘,而不是RAID。
对于你们所有人来说…任何Raid的ZFS都是一个完全的PAIN,只能由MAD人来完成!就像使用非ECC内存的ZFS一样。
有了样品,你会更好地理解:
ZFS的好处在于检测当没有电源的磁盘(RAID控制器不能这样做)时发生改变的位,以及在没有被请求时改变的东西等等。
当RAM模块中的某一位自发地改变而没有被要求时,这是一样的问题…如果存储器是ECC,则存储器自己纠正它; 如果没有,数据已经改变,这样数据将被发送到修改的磁盘; 撬这个变化是不是在UDEV部分,如果失败是在VDEV部分…整个ZPOOL永远丢失所有的数据。
这是ZFS的一个弱点…… VDEV失败意味着所有的数据永远丢失。
硬件Raid和软件Raid无法检测到自发的比特变化,他们没有校验和,在Raid1级别(mirros)最差,他们读取不是所有的部分和比较他们supose所有部分将总是有相同的数据,总之它大声)Raid suposes数据没有改变任何其他的东西/方式…但磁盘(作为内存)容易发生自发的位变化。
永远不要在非ECC RAM上使用ZFS,也不要在突袭的磁盘上使用ZFS,让ZFS看到所有磁盘,不要添加可能会破坏VDEV和POOL的层。
如何模拟这种失败…closures电脑,拿出一个Raid1的磁盘,只改变一个位…重新调整,看看Raid控制器如何不知道已经改变… ZFS可以因为所有的读取被testing反对校验和,如果不匹配,阅读forms另一部分… RAID再也没有读过,因为一个失败(硬件不可能读取失败)…如果Raid可以读取它认为数据是好的(但它不是在这种情况下)… RAID只尝试从另一个磁盘读取,如果它读的地方说“嘿,我不能从那里读取,硬件失败”…如果校验和不匹配,如果它读取从另一个磁盘ZFS读取说:“嘿,我不能从那里读取,硬件失败”。
希望我能说得很清楚…在任何级别的Raid上ZFS都是一种全身痛苦和总体风险! 以及非ECC内存上的ZFS。
但是没有人说(除了我)是:
那么使用什么磁盘?
但是,嘿,大多数人都不知道这一切,从来没有遇到过问题……我对他们说:哇,你真幸运,在幸运离开之前买一些彩票。
风险在那里……这样的失败可能会发生……所以更好的答案是:
我个人做什么?
希望我能给ZFS一点点反对Raid,当事情出错时真的很痛苦!