我们专注服务于当下互联网基础设施建设与云计算、大数据时代的各种需求!

使用ZFS实现大量快速而又稳定的存储

ZFS 和 RAID-Z 简介

ZFS 是目前可用的最先进的文件系统之一。ZFS 是 zettabyte 文件系统 的首字母缩写,可以作为对该系统的存储功能的直接引用,该系统最多可存储 256 万亿 zettabyte 。换一种方式来表达的话,一个 zettabyte 等于 1,073,741,824 个太字节!

ZFS 这个独特而强大的工具具有多面性。可伸缩的、冗余存储服务器是使用zfs的关键。RAID-Z 的概念 ,顾名思义,RAID-Z 是与 RAID 技术类似 (更确切地说是与 RAID-5 类似)的一项技术。

原子数据写入
RAID-Z 和 ZFS 文件系统使用的是原子数据写入 ,要么将所有数据写入磁盘,要么不写入任何数据,不存在介于两者之间的情况。这种写入方式几乎总是保证写入内容不会因为与网络连接性、电力或操作系统崩溃有关的故障而遭到毁坏。

熟悉 RAID 的人大概都想知道应该用什么设备(或控制器)来处理磁盘和数据。在使用 RAID-Z 时,所有一切都由文件系统本身来处理。但是,与类似技术不同的是,RAID-Z 会自我修复毁坏的数据块,并且无需用户参与即可动态修复它们。RAID-Z 会经常检验数据校验和,以确认完整性,它还能够识别需要重新构建的块。它会在所请求的数据到达用户那里之前完成检验工作。

由于许多操作系统都支持 RAID-Z 和 ZFS,所以可以根据您的偏好来选定 OS。无论选择的是哪种 OS,都应该能够正确应用和运作。

存储设计

您现在需要多少空间?预计一年中需要使用多少空间?需要提供多少个用于安装的硬盘驱动器才合适?所有这些都是开始安装前应该考虑的问题。为了提供最好的准备,将讨论每个设计决策。

操作系统

强烈推荐使用对 ZFS 文件系统提供本机支持的操作系统,以便充分利用所有的特性和性能。将要采用的所有示例都使用 OpenIndiana(Open Solaris 的社区维护分支)作为操作系统,因此,所用的命令和终端互动会反映出 OpenIndiana 环境。

不过,如果您更习惯于使用 Linux®,并且知道使用兼容命令可以获得与本文同样的结果,那么您应该了解您选择的分布是否支持 zfs-fuse(ZFS 文件系统的一个端口)。或者选择FreeBSD9额上非常不错的。

存储空间

因为存储空间将直接影响到您的其他选择,所以从设计阶段就开始规划存储空间极其重要。空间还会受到所需 RAID-Z 配置类型的影响。

不要指望将 OS 用作整个存储的一部分。建议在单独的硬盘驱动器上安装 OS,因为这样会使得重装或修复系统变得更容易,且不会影响共享。

无论使用多少设备,要确保这些设备能够满足 RAID-Z 需求。尽管 RAID-Z 安装可以配备不同大小的硬盘驱动器(例如一个 5 x 2 太字节的驱动器和一个 1 x 1 太字节的驱动器),ZFS 会依据池中最小的驱动器的大小来有效定义硬盘驱动器。
同一品牌、相同大小的驱动器会提供更佳的性能。
总存储大小
当决定总存储大小时,需要牢记,最终大小会根据 RAID-Z 配置而各不相同。例如,在一个镜像安装中的两太字节总共需要四太字节的空间。

RAID-Z 选项

RAID-Z 是最小的容错。它在池中提供了一个磁盘奇偶校验磁盘,如果一个以上驱动器出问题,则会出现一个损坏的、不可恢复的存储池。

RAID-Z2 将两个磁盘用于奇偶校验。即使出现有损坏的或出故障的磁盘,这两个磁盘也能提供安全性。尽管 RAID-Z2 为了使系统正确运行而使用两个额外的磁盘,但与普通的 RAID-Z 安装相比,提供了更强大的容错功能。

RAID-Z2 安装的最低要求是应该配置 5 个驱动器(两个用于奇偶校验),剩下三个驱动器全部用于存储。例如,两太字节的驱动器会导致六太字节的存储。

硬盘驱动器

最好使用同一牌子、相同大小的驱动器。使用极为相似的一组驱动器可以提供更好的安全性。

在构建存储服务器时,最好购买至少一个额外硬盘驱动器来减少可能的延迟。碰到有制造问题的硬盘驱动是很常见的事。

成长和可伸缩性

额外的驱动器意味着速度的增加,因为数据遍布于整个空间。因此,确保总空间大小与目标存储空间匹配非常重要。有一些 SATA 控制器允许对主机板进行扩展,但如果不事先做好准备的话,可能会带来一些麻烦。

获得可伸缩、可成长存储的三个关键要素如下:
硬盘驱动器的数量
总存储容量
硬盘驱动器的服务器容量

我刚刚建立了一个16T的存储服务器,该服务器提供了将空间扩展至两倍的能力,这使您能够应对无法预料的空间增长,并帮助您控制预算。