带有ZFS和TLER / ERC / CCTL的FreeNAS

我目前正在build立一个新的存储服务器,用于虚拟机,文件和备份。 OS是FreeNAS,它使用ZFS作为软件RAID

我的问题是,我需要select硬盘,我已经看过消费者和企业硬盘,但我面临着一个没有答案的问题,我一直没有find明确的答案。

我是否可以使用ZFS(软件RAID)不支持TLER / ERC / CCTL的消费类硬盘,而不用担心后来有麻烦,还是需要使用支持TLER / ERC / CCTL的企业级硬盘?

关于这个有很多不同的意见,有人说你应该使用它,有些人说你不应该这样做。 我知道一些依靠软件RAID的操作系统,有自己的错误更正超时,因此不在乎是否有TLER / ERC / CCTL。 我知道,在处理硬件RAID时,你需要使用TLER / ERC / CCTL。

我真的希望,有人可以解决我的问题。

谢谢。

我是否可以使用ZFS(软件RAID)不支持TLER / ERC / CCTL的消费类硬盘,而不用担心后来有麻烦,还是需要使用支持TLER / ERC / CCTL的企业级硬盘?

想象一下,您的每个驱动器都是具有某些function,使用寿命等的黑匣子。它们都在存储arrays中独立工作。 因此,你必须独立地看每一个,看看在不同情况下会发生什么。

对于这个问题,假设您有一个由2个镜像驱动器A和B组成的池。可能的组合是:

  1. A和B有TLER
  2. A有,B不
  3. A没有它,但是B有
  4. A和B没有它

如果在所有磁盘上一切正常,没有问题。

一个错误:

如果磁盘A在尝试读取块时遇到错误,则对于每种可能情况都是这种情况:

  1. 系统询问磁盘的块。 磁盘试图一次又一次地find它,并且在大约7到9秒之后(无论TLER超时是什么),控制器将磁盘从arrays中取出。 该系统不保证一个磁盘丢失,并执行任何你已经configuration(提出一个电子邮件警报,开始一个热点restovering,什么都不做,继续退化,…)
  2. 和1一样。
  3. 系统询问磁盘的块。 磁盘尝试一次又一次地find它,直到达到自己的超时时间或者find该块为止。 这个超时可能是几分钟,并且对于每个不同的型号和制造商可能是不同的。 如果块可以被检索,则正常读取; 如果失败,则返回块本身的错误消息。
  4. 和3一样。

两个错误(每个磁盘上一个):

这种情况非常罕见,但在理论上是可能的。 两个磁盘在同一个块上遇到错误:

  1. 这两个磁盘将被丢弃,并且您的池变得不可用。
  2. 和上面的3一样。
  3. 和上面的3一样。
  4. 和上面的3一样。

性能与可靠性

正如你在上面看到的,你必须根据你的目标和游泳池布局来做出select。

  • 如果您始终需要最less的响应时间,并且不能接受长时间阻塞滞后,请使用TLER磁盘。 缺点是你必须潜在地提供额外的磁盘(Z2而不是Z1,Z3而不是Z2,3镜像而不是2镜像)或hotspares来达到相同的平均池健康状况。 此外,您必须预留可能长时间的重build时间,否则可能会影响您的整体性能。
  • 如果预算或空间受到限制,则使用非TLER磁盘,如果磁盘被保留,则滞后可接受。 由于ZFS已经可以帮助您对受影响的块进行自我修复,因此您不需要TLER最初设想的(控制器必须放下磁盘以便自我修复可以开始)
  • 将磁盘超时设置为您的应用程序/体系结构可以轻松处理的值。 这样,您可以让企业磁盘没有丢失或消费者磁盘丢弃,如你所愿。 并非所有的磁盘都是可以修改的,所以在购买之前请先在线检查。

还值得考虑的是Backblaze公布的关于企业驱动器寿命和消费者驱动器可靠性的数字 。

虽然他们使用的是定制的Reed-Solomon实现方式,但他们的数据(和商业模式)表明,消费驱动器绝对能够提供良好的可靠性,并且具有合适的错误检测/恢复algorithm,可以为您的数据提供良好的保护。 当然,他们的整个设置似乎没有任何这些企业function相当好。

正如@ user121391所说(我可能会稍微解释一下),消费者磁盘上的ZFS应该没问题,除非您有特定的需求需要企业function。