Isilon 集群在设计的时候就要求系统具有在组件发生故障时也能继续提供数据服务的能力。OneFS默认使用erasure code(纠删码)保护数据,节点或磁盘发生故障时也能获取文件。作为纠删码的另一种选择,可以采用镜像保护数据。
创建五个或更多节点的集群时,纠删码可以实现80%的效率。在更大的集群上,纠删码能够提供四级冗余。
OneFS提供文件级别数据保护,而不是块级别。你可以在目录、文件、文件池、子池和集群上设置不同的保护级别。
尽管文件默认继承其父目录的保护级别,但你可以在任何时候修改。OneFS为元数据和inode提供与其数据同样级别的保护。一个被称为FlexProtect的system job能够发现并修复“降级的文件“(degraded file)。
除了纠删码和镜像,OneFS还包含以下功能帮助保护数据的完整性、可用性和保密性:反病毒、克隆、NDMP备份和恢复、保护域。以下软件模块也能帮助保护数据,但需要单独的许可证:SyncIQ、SnapshotIQ、SmartLock、
N+M数据保护
OneFS支持的N+M 纠删码级别有:N+1、N+2、N+3和N+4。对于这种N+M数据模型,N代表节点的数量,M代表在不发生数据丢失的前提下,集群所允许的【同时发生故障的节点数或磁盘数】。例如,N+2允许集群在不同的节点上丢失两块盘,或者丢失两个节点。
为了分别保护磁盘和节点,OneFS支持N+M:B,M代表故障磁盘的数量,B代表故障节点的数量。例如N+3:1,表示集群可以丢失三块磁盘或一个节点而不至于数据丢失。
默认大于18TB的集群,其保护级别是N+2:1,小于18TB的话是N+1。另外,仲裁规则规定了支持一个保护级别所要求的节点数量,例如N+3要求至少7个节点,从而可以在三个节点发生故障时依旧维持仲裁。
数据镜像
镜像通过将数据拷贝到多个位置来保护磁盘上的数据。OneFS支持2~8个镜像。你可以使用镜像而非纠删码,或者混合纠删码和镜像。镜像相比纠删码消耗更多空间且适合要求高性能的事务,比如iSCSI LUN。
如何混合纠删码和镜像,在写操作的过程中,OneFS将数据划分成冗余的保护组。对于那些受纠删码保护的文件,保护组由数据块和它们的纠删码组成。对于镜像的文件,保护组包含一组数据块的所有镜像。OneFS可以在向磁盘写文件的时候切换保护组的类型,通过这种动态切换,即便发生节点故障导致无法应用纠删码,OneFS也能继续写数据。节点恢复之后,OneFS自动将镜像保护组转换成纠删码。
文件系统日志
日志能够将文件系统更改记录在电池备用的NVRAM卡内,在文件系统发生故障后恢复系统,比如掉电。当节点重启时,日志重播(replay)文件事务来还原文件系统。
虚拟热备用
当一块磁盘发生故障时,OneFS使用保留在子池中的空间而不是一块热备盘,这块保留空间被称为虚拟热备用。
在保护级别与存储空间之间做出平衡
你可以通过设置保护级别来平衡存储空间和保护需求。较高级别的保护通常相比较低级别的保护消耗更多的磁盘空间,因为需要牺牲空间保护 erasure code。erasure code的开销依赖保护级别、文件大小和集群中的节点数量。因为OneFS将数据和erasure code跨节点做条带,所以随着节点的增加,开销也会降低。