Linux 就像是文件系统的瑞士军刀,它还为桌面系统和服务器提供广泛的存储技术。除了文件系统,Linux 结合了世界级的 NAS 和 SAN 技术、数据保护、存储管理、云支持以及固态存储。了解有关 Linux 存储生态系统的更多信息以及为何它能成为服务器市场霸主。
Linux 意味着许多事情,它的力量在于它能够灵活地支持截然不同的使用模式。但是 Linux 最重要的优势之一是作为存储领域的主力。关于 Linux 和存储通常让人想到直接附加存储或最新的文件系统,但是关于存储和 Linux 还有比所看到的多得多的东西。Linux 中的元素不仅稳定而且高端。
本文探讨了使 Linux 处于存储领域中心的各种存储技术。让我们从底部开始 — 即存储架构 —,然后逐步将堆栈发展为功能、文件系统和待执行计划(请参考图 1)。
图 1. 本文中探索的存储堆栈
存储架构
存储如何附加到平台是整体存储架构的关键。三个常见的架构涵盖了绝大多数模型:
○直接附加存储(Direct-attached storage,DAS)
○存储区域网络(Storage area networks,SAN)
○网络附加存储(Network-attached storage,NAS)
当然,Linux 支持所有三种模型并通过与这些模型一起发生的变更而发展。
图 2 说明了这些模型,侧重于文件系统和存储的位置。DAS 模型包含到平台的直接存储附件,代表了绝大多数的存储使用。SAN 将存储从平台中分离出来并使其可通过块存储协议中的一个进行访问。最后,NAS 提供与 SAN 类似的架构,但是在文件级上进行操作。
图 2. 主要存储架构
直接附加的存储
Linux 支持种类繁多的 DAS 界面,包括像并行高级技术附件(Advanced Technology Attachment,ATA)的旧标准 — 电子集成驱动器 [IDE](Integrated Drive Electronics [IDE])/ATA — 并行 SCSI 和光纤通道 (Fibre Channel) 以及新的存储界面,例如串行连接的 SCSI(Serial Attached SCSI,SAS)、串行 ATA(Serial ATA,SATA)和外部 SATA(external SATA,eSATA)。您还将发现高级存储技术,例如 USB3(可扩展的主机控制器界面,Extensible Host Controller Interface [xHCI])和 Firewire (Institute of Electrical and Electronics Engineers 1394)。
存储区域网络
SAN 提供块级存储合并,以便在一些服务器中共享它。存储对服务器显示为是本地的,其中端点存储设备可以为客户端设备实现附加服务(例如备份和复制)。
SAN 的协议和界面是广泛和多样的。您可以在 Linux 中发现典型的 SAN 协议,例如光纤通道以及其通过 IP 的扩展 (iFCP)。还存在更新的协议,例如 SAS、以太网光纤通道(Fibre Channel over Ethernet,FCoE)以及 Internet SCSI (iSCSI),更多域特定协议,例如适用于远程直接内存访问 (RDMA-iSER) 和 SCSI RDMA 协议(SCSI RDMA Protocol,SRP),其通过 Infiniband 的 RDMA 扩展 SCSI。
作为存储协议出现的以太网已经在 Linux 中完全实现,其说明了这些方法的力量和灵活性。此外,Linux 中完全支持 10 千兆位以太网(10-gigabit Ethernet,10GbE),并允许构造高性能 SAN。您还可以发现类似 ATA over Ethernet (ATAoE) 的协议,其通过无所不在的以太网协议扩展 ATA 协议。
网络附加存储
最后但同样重要的是 NAS。NAS 是通过网络的存储合并,以便不同类型客户端在文件级别进行访问。Linux 中完全支持的两种最流行协议是网络文件系统(Network File System,NFS)和服务器消息块/通用互联网文件系统(Server Message Block/Common Internet File System,SMB/CIFS)。
虽然原始的 SMB 实现是专有的,但是它被逆向设计以便在 Linux 中受到支持。后来的 SMB 修订版被公开记录以便允许在 Linux 中进行更简单的开发。
Linux 继续发展针对 NFS 的各种增强和扩展。NFS 现在是一个状态协议并包括对数据和元数据分离的优化以及数据访问并行。通过参考资料 中的链接可以阅读有关 NFS 发展的更多信息。正如基于以太网的 SAN,Linux 中对 10GbE 的支持允许高性能的 NAS 库。
其他存储架构
不是所有的存储架构都非常适合 DAS、SAN 和 NAS 存储器。因为 Linux 是开放的,所以更容易在其内部开发新的技术,这就是为什么您可以在 Linux 中发现最新尖端技术的原因。
一个值得一提的存储架构是对象存储架构,尽管不是新功能,但是它很有趣。对象存储架构将文件从其元数据中分离出来并独立存储它们(在其各自的数据和元数据服务器上)。此分离提供了一些优势,例如最大程度降低了元数据的瓶颈(因为与此服务器交互只需要定位并打开文件)。还可以通过在多个数据服务器上分段数据进行并行访问来增强性能。对象存储在 Linux 内以各种方式来实现,包括对对象存储设备(Object Storage Device,OSD)规范的支持,以及在 Linux clUSTER (Lustre) 和扩展对象文件系统(Extended Object File System,exofs)内以不同方式实现。
存在名为内容寻址存储(content-addressable storage,CAS)的类似技术,其使用数据散列值以便标识其名称和地址。此技术还称为固定内容存储(fixed-content storage,FCS),是非常有用的,因为其容易识别重复数据:该散列之(如果足够强)将是相同的且允许简单的重复数据删除。Venti 架构支持这种方法并存在于 Linux 内(除了贝尔实验室的 Plan 9 版本之外)。