FreeNAS 硬件指南①:目标与最佳实践

2015-2-16 22:41 Herald 6572 FreeNAS硬件硬件指南

FreeNAS硬件是一个交织着深度和复杂性的主题,本指南分为四个部分,力求涵盖各种应用场景的硬件搭配问题。就像世间不存在包治百病的万能灵药,同样不存在某种通用硬件配置能够适用于所有的应用场景。

大量的硬件兼容FreeNAS,选配硬件方面,除了基本组件外,还需要充分考虑不同应用场景下的性能、可靠性、冗余、扩展能力、预算等等。

FreeNAS开发团队融汇了多年在FreeNAS、ZFS、FreeBSD等方面的实践经验撰写了这份指南,目的是通过结合多种复杂的应用场景中可能存在的问题和最优化配置实践,帮助你更明智的选择硬件。

freenashome

关于软件定义存储:

FreeNAS 是软件定义存储的一种实现;软件和硬件对FreeNAS来说都非常重要,且二者中任何一个都可能成为系统的短板。FreeNAS官方开发并提供软件部分,硬件部分则交由用户自由选择搭配。理论上,所有硬件都应能够良好的协同工作,但事实却是每个硬件都有其固件,很多硬件需要驱动程序,硬件之间总是或多或少的存在不兼容的问题。

最佳实践

是否应该选用ECC内存?

这可能是目前围绕 ZFS(FreeNAS用于存储数据的文件系统)争论最多的一个问题。有人认为ECC内存是必须的,而有人却认为采用ECC内存除了浪费钱以外没有其他意义。

ZFS的工作机制:它会校验你的数据和ZFS元数据,同时会对校验本身进行校验。如果内存中的数据在尚未写入硬盘前发生了损坏,ZFS会校验损坏的数据(将其视为未损坏的数据),并会将损坏的数据写入硬盘。另外,ZFS并没有预挂载校验机制和相关的工具,因此它无法修复损坏的文件系统。ZFS的工作机制对64TB以上的高容量存储池有很大的好处,在非法关机的情况下只需几秒钟就能完成存储池挂载。换个角度来看,如果使用非ECC内存时发生了数据损坏,这种工作机制就可能导致ZFS存储池中的数据完全丢失。出于这种原因,为了满足ZFS这种挑剔的文件系统需求,强烈建议您使用ECC内存。ECC内存可以矫正内存中的错误数据,同时会在检测到多个错误是挂起系统,直到完成错误修复。如果数据可用性是你的关键需求,那么应该首先考虑使用ECC内存。

需要多大内存?

FreeNAS系统要求最少8GB内存。如果你使用插件或Jails虚拟机,那么12GB内存是个不错的起点。“每1TB存储需要搭配1GB内存”这种观点或多或少有些误导。ZFS需要一个基本的内存量来保证系统稳定运行,这个基本的内存容量要随着存储容量的增加而增加。8GB内存可以带动24TB左右的存储。超过100TB的存储空间,则16GB内存是安全范围内的最低需求,32GB是推荐的内存容量。需要注意的是,上面给出的建议是基于系统稳定的性方面的内存容量建议。我们使用NAS存储,除了稳定性需求外,还有性能方面的需求。ZFS的性能优劣主要取决于缓存,但过缓存方面并没有确切的搭配方案,比如3个用户使用的2TB存储可以额外搭配1GB内存,50个用户使用的500TB存储则额外搭配8GB内存作为缓存可能更好。当然,这并不是硬性的搭配方案。你要明白,满足ZFS稳定性的基础上,需要通过增加额外的内存作为缓存来提升系统的性能。FreeNAS WebGUI中可以查看系统报告,也可以用命令行工具查看系统缓存,如果高速缓存命中率低于90%,则应该考虑增加内存或SSD L2ARC缓存设备。

磁盘阵列(RAID) vs. 主机总线控制器 (HBAs)

最理想的方式工作方式是让ZFS直接控制底层存储设备,增加中间层只会让ZFS变得不稳定。因此,将硬盘等存储设备直接连接到HBA卡或主板原生的xATA接口要比使用RAID控制器更可靠。幸运的是,相比RAID卡,HBA卡的价格更便宜。如果必须使用RAID卡,最好禁用阵列卡的写缓存,并禁用阵列卡上的数据完整性校验功能。如果RAID卡有JBOD模式或支持磁盘直连,则应该优先考虑使用这两种模式。对FreeNAS而言,RAID 控制器会让磁盘替换变得复杂,不恰当的配置更会给数据安全造成一定风险。

虚拟化(Virtualization) vs. 裸机(Bare Metal)

前面已经说过,ZFS 最好直接控制硬盘。由于大多数虚拟化平台采用RAID卡管理存储,运行在虚拟化平台上的FreeNAS只能使用虚拟硬盘,等于在ZFS与物理硬盘之间增加了两层,第一层是虚拟化操作系统创建的虚拟磁盘,第二层是RAID磁盘阵列卡,增加中间层只会令ZFS文件系统失去其优势。FreeNAS虽然对VMware有一定的支持,但主要用于开发和测试用途,在虚拟化环境中运行FreeNAS若出现问题很难排除。基于如上原因,强烈建议你将FreeNAS运行在裸机上。

作者:Josh Paetzel  译者:Herald

{{ headers["x-wp-total"] }} 条评论

{{ post_id = '864' }}

回复 {{ reply_to }}