存储服务:逻辑卷管理
虽然存储虚拟化曾经是高端存储系统的独特功能,但是现在它是 Linux 的标准功能。Linux 中可用的一个最重要的服务是逻辑卷管理器(Logical Volume Manager,LVM)。LVM 是一个薄层,其位于基础存储架构中可用的物理存储之上(附带用户空间工具),并将该存储提取到一个或多个管理更简单的逻辑卷中。例如,在物理磁盘不能调整大小时,可以调整逻辑卷大小以便从其中添加或删除空间。
通过将物理设备提取到逻辑设备的能力,LVM 创建了一些其他存储功能,例如卷的只读和读写快照、跨卷的数据分段以便提高性能(独立磁盘的冗余阵列 [RAID]-0)、跨卷 (RAID-1) 的数据镜像以及在物理设备之间的卷迁移(甚至联机时)。
对于镜像之外的数据保护来说,Linux 包括 md(其代表多个磁盘)并提供一系列丰富的 RAID 功能。此元素实现了软件 RAID 功能,支持 RAID-4(通过校验块分段数据)、RAID-5(通过分布式校验块分段数据)、RAID-6(通过分布式和双冗余校验块分段数据)以及 RAID-10(分段并镜像数据)。
LVM 依赖于另一个名为设备映射器 的存储组件,其提供(在其他功能中)多路径功能。例如,在 SAN 环境中,通常有多个到 SAN 构造的存储界面。多路径是一种提供保护以避免给定路径故障的功能,确保只要存在路径来与端点通信,就仍然可以使用存储。
存储功能
在过去几年中,项存储堆栈添加了两个相对简单的功能,说明了存储生态系统的发展:
○数据完整性
○支持固态磁盘(solid-state disks,SSDs)
数据完整性
第一个变更处理在企业存储设置中使用商用驱动器。虽然企业级驱动器(如 SAS 驱动器)是可靠的,但是 SATA 驱动器是以不同要求以及成本作为主要因素而创建的。由于这个原因,SATA 驱动器可能遭遇称为无提示数据损坏 的问题,即在从磁盘读取数据时可能引入错误且无法检测到这些错误。要在企业设置中解决此问题并支持 SATA 驱动器,需将数据完整性代码添加到磁盘上的块中(其中磁盘使用 520 字节扇区,而不是传统的 512 字节块)。此外,驱动器自身可以验证正在写入的数据,以便其完整性代码与数据匹配。用这种方式,可以在错误被写入磁盘时捕获这些错误,而不是以后在无法对这些错误进行任何操作时检测到它们。
这种机制被称为数据完整性字段(Data Integrity Field,DIF),如图 3 所示,其代表一个在数据块上包括循环冗余校验(Cyclic Redundancy Check,CRC)的 8 字节尾部、一个参考标记(通常是逻辑块地址(Logical Block Addressing [LBA])的一部分)以及一个应用程序定义的应用程序标记。参考标记对于捕获对不正确块的错误写入非常有用,其中应用程序标记可用于捕获软件堆栈中的其他错误。例如,如果写入 PDF 文档,那么应用程序标记可设置为用来指示特殊 PDF 标记的值。在读取 PDF 时,可以检查到每一个块的应用程序标记,以便确保所有标记都指定该 PDF 标记。自从内核版本 2.6.27 以来,Linux 内支持 DIF。
图 3. 适用于 512 字节扇区的 DIF 结构
对 SSD 的增加支持
SSD 的引入正在以一些方式改变着存储的生态系统。这些磁盘删除了在旋转磁盘中的一些比较大的延时,因此其提供了一种维护与 CPU 之间的数据流的方式。但是 SSD 不同于硬盘驱动器(Hard Disk Drive,HDD),因为它们是可以消耗掉的。SSD 内存储的编写次数是有限的(取决于技术);因此,在编写数据时要尽可能的有效是非常重要的。更糟的是,SSD 必须内部切换数据以便尽可能减低在称为垃圾收集 或耗损均衡 的进程中引入错误的可能。此进程会导致写入到可消耗的存储,因此应尽量减少。
使用 SSD 和传统存储的另一个问题是 HDD 不关心磁盘上的数据是否有效。如果文件系统使数据无效,则该数据可保留在磁盘上且没有任何不利之处。此限制不能与 SSD 同时存在因为耗损均衡的要求。由于这个原因,Linux 现在支持文件系统将丢弃块传递到 SSD 的功能(自内核版本 2.6.29 开始)。此功能允许 SSD 从耗损均衡进程删除这些块,并有助于增加驱动器的耐力。
文件系统
将 Linux 真正与其他操作系统分隔开的是其庞大的文件系统库。在 Linux 中,您可以发现像第三扩展文件系统(third extended file system,ext3)和第四扩展文件系统(fourth extended file system,ext4)那样的传统客户端文件系统,但是您还将发现先进的分布式文件系统、集群文件系统以及并行文件系统。您可以发现新的、高端的基于新理念的文件系统,以及在存储域中处理新问题。
今天,在尖端文件系统方面,Linux 支持 ZFS 和 Butter FS (BTRFS)。这两个文件系统互相竞争并共享即写即拷语义的区别(这些块从来没有编写到位)。此外,这两个文件系统都支持数据重复删除、内部数据保护(类 RAID 保护)、数据和元数据校验和以及其他存储功能(如快照)。
Linux 也是分布式文件系统的产地。一个示例就是 Lustre,其是支持成千上万节点并扩展到千兆兆存储容量的大规模并行分布式文件系统。Ceph 提供类似的功能并在去年被引入到 Linux 内核。Linux 中的其他的示例包括 GlusterFS 和通用并行文件系统(General Parallel File System,GPFS)。
您还可以在 Linux 中发现特定的文件系统,包括像新实现日志结构文件系统(New Implementation Log Structure File System,NiLFS(2))那样的日志结构文件系统和像 exofs 那样基于对象的文件系统。因为在许多使用模式中 Linux 可发现其自身,所以您还将发现资源约束使用(如嵌入式系统)以及低延时应用程序(如高性能计算(high-performance computing,HPC))的文件系统。嵌入式领域中的文件系统包括 Yet Another Flash File System 第 2 版 (YAFFS2)、Journaling Flash File System 第 2 版 (JFFS2) 以及未分类块图像文件系统(Unsorted Block Image File System,UBIFS)。HPC 空间中的文件系统包括并行 NFS(Parallel NFS,pNFS)、Lustre 以及 GPFS。
Linux 存储的未来
因为其开放性和大量的开发人员,Linux 是且将继续是文件系统和通用存储研究的目标。
存储的最新改变之一是使用远程服务以便经济有效地存储归档数据。今天众所周知的云存储,许多供应商都提供高效和透明的远程访问,具有不同服务等级协议(涵盖像保护和宽带那样的功能)的集中存储。两个示例包括 Ubuntu One 和 Dropbo。另一个服务被称为 SpiderOak,可用于将您的本地用户目录备份到云中,而只需很少的费用。
还有什么功能可能会出现在 Linux 中?也许是对大扇区大小的支持(超过 512 字节扇区)、精简配置以便避免保留但不使用的容量(其中已公布的存储超过了物理容量)、存储重复删除(以便最大化存储可用性)以及更有效的存储堆栈以便利用驱动器(例如 SSD)的新速度和效率?无论存储生态系统如何发展,Linux 永远是首当其冲的。
原文:http://www.ibm.com/developerworks/cn/linux/l-linux-storage/index.html?ca=drs-