数据存储产业服务平台

你的存储阵列能防止数据损失吗?

存储不需要很难,而且它一点儿都不难。如果你有这样的疑问“我的存储设备会不会让我的数据受损啊?“那这时候你就开始你的担心之旅了。作为一个存储菜鸟,我愿意尽自己的微薄之力,去揭开目前用于存储行业,解决用户问题的主要存储技术的面纱。

某些存储技术(如rsync,DFSR),在出现错误的时候就会有数据损失的风险。在这种情况下,存储技术的改变不可避免。新的技术往往被认为是高可用性技术,与被滥用的容错存储技术可不同。

对于高可用设备来说,数据的损失是不可接受的。现在我们要说的就是真正的容错。在存储产品上,则包括RAID(或者ZFS)还有各种形式的集群。一个来自主要厂商的合适的存储领域的网络(SAN)可能会包括一种或多种技术,有时还可以和用户自己的技术强强联合。

RAID(独立磁盘冗余阵列)

RAID原来是相当得微不足道,但是那段惨淡的岁月已经过去了。RAID把多个硬盘集中到一个卷中,根据RAID的水平,实现相应的应对硬盘故障的能力。考虑到硬盘的大小(当然也有其它因素),RAID5现在经常出现在某些应用中,而它的后继者,RAID6,也马上就要到来了。

当然,我在这里要提一下致命的不可恢复读取错误(URE)。这个东西几乎可以出现在你的任何硬盘中,而且硬盘自己侦测不到,控制器元件也检查不出来。很多情况可以引发URE,有些你根本无能为力(比如宇宙射线的影响)。RAID技术可以让你承受硬盘出现故障,但是如果你在重建过程中,在一个看起来“很好”的硬盘中,不巧碰到了URE,那你就惨了。

但这并不是世界末日,这个问题早已被人们熟知,人们针对它也研究了各种方法。你是不是会碰到URE,取决于你使用的硬盘的质量。如果你使用低端的SATA硬盘,那你需要考虑采用RAID5,RAID0就算了(那样绝对不安全),RAID6也可以考虑,但应该作为临时补丁直到你把数据转移到更可靠的东西上。

生活中三大必然要发生的事:税收,死亡,硬盘故障

硬盘的质量越好——比如说SAS硬盘,或者光纤通道的硬盘——它们的URE率就越低。在你重建存储系统时,这些硬盘能显著减少灾难性阵列故障的机会,而且还会让你的阵列使用寿命延长。一个好的硬件RAID控制器可以在RAID6中应对URE,并在周围做出标注。在RAID6中,在同一时刻,在两个硬盘中,在两个标注区域发生URE的几率非常小。

这些高质量的硬盘只会为我们服务一定的时间,更长的重建时间和更多的硬盘故障相关的问题都需要解决。阵列中的硬盘使用时间相同,都进行同样的工作,有相同的缺点,出现故障也会成组出现。闪存也有自己的问题,无法拯救RAID。看来我们对RAID的希望要放到接下来的10年里,那个时候或许会有设计完美的,用于企业级的RAID产品,也许还会有消费级的产品出现呢。

来自Sun的ZFS

ZFS感觉像是由疯子设计出来的文件系统。它还被认为能取代RAID。它的真实的保证数据完整性的技术已经远远超出了本文所要讨论的范围,但是据说它能承受三倍的硬盘故障,更能与URE血战到底。它那几乎如同魔法般的数据完整性保障能力使人们在使用ZFS时只需要注意一点:在任何情况下,永远永远都不要对ZFS撒谎。

不要在虚拟磁盘(超级监管程序创建的,ISCSI或FCoE)上使用ZFS,也不要在硬件RAID上使用。ZFS必须完全透明地控制硬件。可以使用像VMware“原始设备映射”那样的功能,但要保证你映射的是本地硬盘。

一些管理员在无论什么样的硬件RAID上运行ZFS都禁止ZFS Intent Log,同时还配置硬件控制器忽略ZFS的刷新磁盘上数据的命令。这就可以让RAID控制器决定硬盘的刷新,并且可以依靠电池来应对电力中断。

这是一种提升性能的调试策略,最终以IOPS来衡量。这种做法很常见,主要用在混合使用ZFS,NFS的系统中,NFS会要求系统在每次写入后都刷新数据,这和ZFS更高级的用于IOPS的算法和数据完整性平衡有冲突。其它的管理员——也包括我自己——并不赞同这种做法,因为它放弃了ZFS保持数据完整性的一些功能。如果对IPOS有要求,我更倾向于依赖使用了固态硬盘或NVRAM硬盘的混合存储池。它可以更好地配置ZFS,也可以满足NFS对数据写入刷新的要求,同时,还能使ZFS的保护机制完整。

来自微软的ReFS

微软的ReFS被认为是对ZFS的回应。我在这里得说清楚:这绝不是指形状或形式。ReFS相对于NTFS来说是个巨大的进步,但是还有许多不足。令人充满期待的是,微软的弹性存储技术可以弥补不止一个硬盘故障的损失,但是目前来看,我个人认为它还仅仅是个技术展示。

ReFS和Storage Spaces需要整合在一起,积累一些用户基础,这样它们再去正面挑战ZFS。在目前的情况下,就在这个领域中,微软的管理员在其服务器中使用本地存储,最好还是使用硬件RAID。

来看看RAIN怎么样

RAIN是一个冗余的(或可靠的)廉价节点阵列。简而言之,RAIN可以跨越多个个人电脑复制你的数据从而进行冗余。

现在,有许多不同的RAIN的实现形式,这也是目前“大数据混战”造成的结果。当你了解了HDFS,GlusterFS或是亚马逊的S3之后,你再 讨论RAIN。一般情况下,RAIN设备并不像传统的文件系统那样工作,而Gluster的团队正在研发用在GlusterFS上的技术来改变其工作方 式。

对于大部分RAIN设备来说,操作系统并不会安装它们,你不用创建NFS或SMB共享。如果你真的想去做这种类型的工作,你需要在RAIN阵列上使 用某种类似FUSE的东西来建立虚拟硬盘。这个时候你就不在正轨了,你需要重新评价你的整个工程了。如果,你仍然想这么做,那你可以借助一个NFS服务器 转换器在Gluster上运行VMware虚拟机,不过这有点奇怪。

你可以减少RAIN设备顶层上转化过来的层次,这样可以使它看起来像是一个传统的硬盘,RAIN通常用于对象存储(不是文件)。最好还是把RAIN设备当成一个特别大的数据库,而不是传统的文件系统。

防弹的集群

当然,如果ZFS和RAID都加强了你的存储层,那如果我攻击你的存储服务器呢?RAIN可以很有弹性地应对个人系统的损失,但是对于ZFS和RAID来说,没有什么本地的东西能应对来自CPU的故障。

这就是集群出现的原因。对于容错来说,理想的部署应该是有两个服务器同步。在免费的软件世界里你可以寻找采用Linux的DRBD和采用FreeBSD的HAST。

假如你有一个稳定的硬件RAID基础,微软的Server 2012实际上是可靠性很好的集群基础。

Cluster Shared Volumes v2表明我是如何实现RAID 61的:在每个节点上都采用硬件RAID 6.同时采用镜像(我把它们写入缓存了,这样即使一个节点出现问题,也可以保证我不会丢失数据,这很慢,但是更安全)。

把Server 2012新的NFS 4.1,ISCSI target或SMB 3.0(支持多渠道,透明的故障转移和节点容错)联合起来,我对我的微软服务器就放心了,不需要VMware集群(通过它们可以了解存储的情况)。

说到VMware,它们提供vSphere存储产品。这是一个可靠的技术,可用来创建存储节点,但是在每个存储设备上它只能扩展到3个物理系统。

现在你的大脑是不是一片混乱?

如果你现在感觉到了存储产品功能可用性上的漏洞,那么恭喜你,你并不是一个人在战斗,大家都感同身受。这就是为什么存储产品生产商们都作为独立的厂 商存在的原因。有开源工具的容错存储技术绝对是各大厂商追逐的对象,微软也需要时间来把所有的技术梳理出来(在它真正成为一支重要力量之前,它需要把其3 个硬盘冗余的RdFS用在集群共享卷上,在扩展到成百上千个节点中),VMware有基本的技术,但是它需要好好发展自己的技术。

这就是为什么如此多的厂商出现在这里的原因,这也是为什么那些存储巨头们还在销售大的,昂贵的SAN产品的原因。如今,在你计划你的存储部署的时候,即使你只有一个单一的服务器,你也要考虑许多东西,你10年前了解的东西现在已经过时了。

当然,这些技术并不仅仅用于容错。容错并不是备份。如果你的数据没有存在至少两个物理位置中,你的数据就相当于没存。你要保证在你对容错跃跃欲试时 你已经有了一个完美的备份计划。另外你还要记住:一个容错系统(或者一个备份系统)如果未经过测试的话,那它就起不到任何形式的保护作用。

未经允许不得转载:存储在线-存储专业媒体 » 你的存储阵列能防止数据损失吗?