瘦身有道

已经成为许多备份和归档产品标准的数据缩减功能,正在主存储上变得越来越流行了。产生这种现象的驱动力是可量化的成本节约,从不得不购买更少的磁盘来减少每年的支持费用,到减少存储管理相关的运营花费。数据缩减在存储性能方面还有一个令人高兴的影响:通过减少不活跃数据对于昂贵的高性能存储的占用,使整个存储和应用系统的性能可以获得可喜的提升。

简介: 尽管 ZFS
所属的操作系统未来有一定的风险,但是不妨碍它成为最先进、功能最丰富的文件系统之一。它合并了可变块大小、压缩、加密、重复数据删除、快照、克隆以及(顾名思义)对大容量的支持。了解
ZFS 背后的概念,并了解目前如何在使用用户空间文件系统(Filesystem in
Userspace,FUSE)的 Linux 上使用 ZFS。

在典型的企业里,按照存储网络工业协会SNIA)的研究,存放在主存储上80%的文件在最近30天内没有被访问;同一份报告还指出,不活跃数据的增长是活跃数据的四倍。考虑到这些事实,数据缩减技术已经开始进入主存储领域就不觉得奇怪了。

Linux 与文件系统具有有趣的关系。因为 Linux
是开放式的,所以它往往是下一代文件系统和创新文件系统理念的关键开发平台。两个有趣的最新示例包括可大规模扩展的
Ceph 和连续快照文件系统
nilfs2(当然,主力文件系统,比如第四个扩展文件系统 [ext4]
的演化)。它还可以运行一些旧的文件系统 — DOS VFAT、Macintosh(HPFS)、VMS
ODS-2 和 Plan-9 的远程文件系统协议。在 Linux
支持的所有文件系统中,有一个您可能会因其实现的功能而非常感兴趣:Oracle
的 Zettabyte 文件系统(Zettabyte File System,ZFS)。

然而,对比备份和归档系统所使用的数据缩减方法,主存储系统不能够容忍任何一点对于性能和可靠性的影响,这是主存储系统最相关的属性。因此,数据缩减技术发生了变化,并且在主存储上和用在备份和归档系统上采用了不同的方式。在备份和归档系统上,重复数据删除和压缩是主要的数据缩减手段,而对于主存储系统,那些技术明显变得更加敏感,而且不会像重复数据删除和压缩一样影响性能。这些主要的数据缩减技术正在被应用到主存储系统中:选择合适的RAID级别;自动精简配置;高效克隆;自动存储分层;重复数据删除;压缩。

ZFS 是由 Sun Microsystems(在 Jeff Bonwick 下)设计和开发的,在 2004
年首次公布,并在 2005 年集成到 Sun Solaris
中)。虽然将最流行的开放式操作系统与谈论最多的、功能最丰富的文件系统配对在一起是最理想的匹配,但是许可证问题限制了集成。Linux
受 GNU 公共许可证(General Public License,GPL)保护,而 ZFS 是遵循由
Sun 的通用开发和发布许可证(Common Development and Distribution
License,CDDL)的。这些许可证协议的目标不同,各自的限制会有些冲突。所幸,这并不意味着您作为
Linux 用户不能享受 ZFS 及其提供的功能。

选择合适的RAID级别

本文探究了在 Linux 中使用 ZFS
的两种方法。第一种使用了用户空间文件系统(Filesystem in
Userspace,FUSE)系统来推动 ZFS
文件系统到用户空间以便避免许可证问题。第二种方法是一个 ZFS
本机端口,用于集成到 Linux 内核,同时避免知识产权问题。

把“选择合适的RAID级别”放在数据缩减技术列表的最前面首先看起来好像很奇怪,而且不像其它的数据缩减方法,这只是所有存储系统都可以使用的一个选项,但它对于磁盘的需求、性能和可靠性都有着很大的影响。如果不考虑可靠性缺陷,RAID
0跨所有磁盘的块级别条带,无校验或镜像)会是最划算和最高性能的选择,但单个磁盘故障将会丢失整个RAID组数据的缺点使其难登数据中心的大雅之堂。另一方面,RAID
1镜像,无校验或条带)和 RAID
10条带化磁盘组镜像),结合了高性能和高可靠性,但需要两倍的磁盘容量,因此也是站在数据缩减的对立面的。RAID
5块级别条带化,分布式校验)尽管需要一块额外的磁盘,但已成为近些年来最好的折衷方案了,但随着磁盘容量的增长,重建时间也越来越长,在单盘故障后,RAID组重建的时候,丢失两块磁盘的风险已经增加到一个不舒服却不得不接受的水平。因此,存储厂商们采用了RAID
6,通过对RAID
5增加一块额外的校验磁盘,使其能够经得起两次磁盘故障而不丢失数据–但随之而来的有不同程度的性能影响,这与实施情况有关。在购买一个新存储系统的时候,RAID
6和RAID 6的性能指标都会是要考虑的事情。

ZFS 简介

“与我们大多数的竞争者不同,我们可以采用只有5%额外开销的RAID-DPNetApp公司的RAID
6技术)技术,”NetApp公司的高级存储技术专家Larry Freeman表示。

将 ZFS
称为文件系统有点名不副实,因为它在传统意义上不仅仅是个文件系统。ZFS
将逻辑卷管理器的概念与功能丰富的和可大规模扩展的文件系统结合起来。让我们开始先探索一些
ZFS 所基于的原则。首先,ZFS
使用池存储模型,而不是传统的基于卷的模型。这意味着 ZFS
视存储为可根据需要动态分配(和缩减)的共享池。这优于传统模型,在传统模型中,文件系统位于卷上,使用独立卷管理器来管理这些资产。ZFS
内嵌入的是重要功能集(如快照、即写即拷克隆、连续完整性检查和通过 RAID-Z
的数据保护)的实现。更进一步,可以在 ZFS
卷的顶端使用您自己最喜爱的文件系统(如 ext4)。这意味着您可以获得那些
ZFS 的功能,如独立文件系统中的快照(该文件系统可能并不直接支持它们)。

自动精简配置

但是 ZFS
不只是组成有用文件系统的功能集合。相反,它是构建出色文件系统的集成和补充功能的集合。让我们来看看其中的一些功能,然后再看看它们的一些实际应用。

直到最近,仍然没有一个真正替代现有按需供应的存储产品,因此,存储的利用率一直不高。对于在公司数据中心有几百个GB的已经分配但还没有使用过的存储,这种情况很常见。“在我们使用康贝公司的磁盘阵列和自动精简配置技术之前,我们依赖用户帮助我们估计存储的需求,我们给每个用户的估计再增加20%到100%,这取决于是什么样应用系统,”
Brandon
Jackson,北卡罗来纳州加斯顿郡的CIO,描述了这个被许多企业使用以保证足够的存储容量的不科学并且浪费的过程。

存储池

自动精简配置技术可以通过允许存储系统按照实际需要的物理容量进行分配的方式,来终结这种存储资源浪费式的管理。存储按需分配到精简卷。例如,自动精简配置可以分配一个100GB的卷,尽管它只有10GB的物理存储。自动精简配置对于用户是透明的,用户会看到一个100GB的卷。精简供应节约的成本可能会非常巨大,并且使存储的利用率超过90%.

正如前面所讨论的,ZFS
合并了卷管理功能来提取底层物理存储设备到文件系统。ZFS 对存储池(称为
zpools)进行操作,而不是直接查看物理块设备,存储池构建自虚拟驱动器,可由驱动器或驱动器的一部分物理地进行表示。此外,可以动态构造这些池,甚至这些池正在活跃地使用时也可以。

支持自动精简配置的厂商正在快速增长,同时,这已经成为选择存储系统的关键标准之一。可是要记住,并不是所有的自动精简配置的实施都是相同的。一些系统需要为自动精简配置设置单独的区域,而其他所有的容量都可以用来做自动精简配置而不需要特别的保留。把“thick”卷转换为“thin”卷的功能,没有使用的存储如何恢复以及自动精简配置的许可方式,是另外一些不同的地方。随着自动精简配置存储的越来越多,物理存储的耗尽成为自动精简配置环境中经常出现的风险。因此,告警、通知和存储分析成为必要的功能,并且对比传统环境,在自动精简配置的环境中扮演了更大的角色。

即写即拷

高效克隆

ZFS
使用即写即拷模型来管理存储中的数据。虽然这意味着数据永远不会写入到位(从来没有被覆盖),而是写入新块并更新元数据来引用数据。即写即拷有利的原因有多个(不仅仅是因为它可以启用的快照和克隆等一些功能)。由于从来不覆盖数据,这可以更简单地确保存储永远不会处于不一致的状态(因为在新的写入操作完成以后较早的数据仍保留)。这允许
ZFS 基于事务,且更容易实现类似原子操作等的功能。

克隆用于对现有的卷建立一个完全相同的复本,这更适用于服务器虚拟化,它可以经常用来克隆虚拟化操作系统卷。克隆最基本最主要的实施是建立源卷的完全拷贝,克隆卷会占用与源卷完全相同的物理存储。

即写即拷设计的一个有趣的副作用是文件系统的所有写入都成为顺序写入(因为始终进行重新映射)。此行为避免存储中的热点并利用顺序写入的性能(比随机写入更快)。

进一步的升级功能是对于自动精简配置卷的克隆。而一些存储系统在克隆期间会把精简卷转换为传统卷,另外一些可以建立精简卷的克隆,精简源卷和克隆卷需要分配相同的物理存储。“我们的Virtual
Storage
PlatformVSP),能够通过一个精简卷建立一个精简的克隆卷,”日立数据系统公司企业平台部的高级产品市场经理,Mike
Nalls如是说。

数据保护

最有效的克隆是精简克隆,克隆卷完全不保留数据,而是根据原始影像。精简克隆只需要保存原始影像和克隆影像的差异即可,这样可以节约大量的磁盘空间。换句话,一份最新的克隆需要最少的物理磁盘空间,并且只有区别于源影像的克隆变化才会被保存。NetApp公司的FlexClone和Oracle公司的ZFS
Storage ApplianceSun公司ZFS Storage
7000系列)的克隆功能是当今支持精简克隆的存储系统。

可以使用 ZFS
的众多保护方案之一来保护由虚拟设备组成的存储池。您不但可以跨两个或多个设备(RAID
1)来对池进行镜像,通过奇偶校验来保护该池(类似于 RAID
5),而且还可以跨动态带区宽度(后面详细介绍)来镜像池。基于池中设备数量,ZFS
支持各种不同的的奇偶校验方案。例如,您可以通过 RAID-Z (RAID-Z 1)
来保护三个设备;对于四个设备,您可以使用 RAID-Z 2(双重奇偶校验,类似于
RAID6)。对于更大的保护来说,您可以将 RAID-Z 3
用于更大数量的磁盘进行三重奇偶校验。

银河国际手机版最新,…

为提高速度(不存在错误检测以外的数据保护),您可以跨设备进行条带化(RAID
0)。您还可以创建条带化镜像(来镜像条带化设备),类似于 RAID 10。

ZFS 的一个有趣属性随
RAID-Z、即写即拷事务和动态条带宽度的组合而来。在传统的 RAID 5
体系结构中,所有磁盘都必须在条带内具有其自己的数据,或者条带不一致。因为没有方法自动更新所有磁盘,所以这可能产生众所周知的
RAID 5 写入漏洞问题(其中在 RAID 集的驱动器中条带是不一致的)。假设
ZFS
处理事务且从不需要写入到位,则写入漏洞问题就消除了。此方法的另外一个便捷性体现在磁盘出现故障且需要重建时。传统的
RAID 5 系统使用来自该集中其他磁盘的数据来重建新驱动器的数据。RAID-Z
遍历可用的元数据以便只读取有关几何学的数据并避免读取磁盘上未使用的空间。随着磁盘变得更大以及重建次数的增加,此行为变得更加重要。

校验和

虽然数据保护提供了在故障时重新生成数据的能力,但是这并不涉及处于第一位的数据的有效性。ZFS
通过为写入的每个块的元数据生成 32 位校验和(或 256
位散列)解决了此问题。在读取块时,将验证此校验和以避免静默数据损坏问题。在有数据保护(镜像或
AID-Z)的卷中,可自动读取或重新生成备用数据。

在 ZFS 上校验和与元数据存储在一起,所以可以检测并更正错位写入 —
如果提供数据保护(RAID-Z)—。

快照和克隆

由于 ZFS 的即写即拷性质,类似快照和克隆的功能变得易于提供。因为 ZFS
从不覆盖数据而是写入到新的位置,所以可以保护较早的数据(但是在不重要的情况下被标记为删除以逆转磁盘空间)。快照
就是旧块的保存以便及时维护给定实例中的文件系统状态。这种方法也是空间有效的,因为无需复制(除非重新写入文件系统中的所有数据)。克隆
是一种快照形式,在其中获取可写入的快照。在这种情况下,由每一个克隆共享初始的未写入块,且被写入的块仅可用于特定文件系统克隆。

可变块大小

传统的文件系统由匹配后端存储(512 字节)的静态大小的块组成。ZFS
为各种不同的使用实现了可变块大小(通常大小达到
128KB,但是您可以变更此值)。可变块大小的一个重要使用是压缩(因为压缩时的结果块大小理想情况下将小于初始大小)。除了提供更好的存储网络利用外,此功能也使存储系统中的浪费最小化(因为传输更好的数据到存储需要更少的时间)。

在压缩以外,支持可变块大小还意味着您可以针对所期望的特定工作量优化块大小,以便改进性能。

其他功能

ZFS
并入了许多其他功能,如重复数据删除(最小化数据重复)、可配置的复制、加密、缓存管理的自适应更换缓存以及在线磁盘清理(标识并修复在不使用保护时可以修复的潜在错误)。它通过巨大的可扩展性来实现该功能,支持
16 千兆兆个字节的可寻址存储(264 字节)。

银河国际手机版最新 1

发表评论

电子邮件地址不会被公开。 必填项已用*标注