Lustre名字是由Linux和Clusters演化而来,是为解决海量存储问题而设计的全新文件系统。
是下一代的集群文件系统,可支持10,000个节点,PB的存储量,100GB/S的传输速度,完美
的安全性和可管理性。 目前Lustre已经运用在一些领域,例如HP SFS产品等。
集群存储简介:
在集群里,一组独立的节点或主机可以象一个系统一样步调一致地工作。整个集群只有唯一
的命名空间。厂商们也已经制造了一些软件和硬件设备,它们可以把不相干的文件系统融合成只使用一个命名空间的文件系统。用户可以访问并共享其他用户的数据,而无需考虑是什么介质或其所处的是哪台主机。
集群存储系统需要解决的最基本的问题:
(1)提供共享访问数据,便于集群应用程序的编写和存储的负载均衡;
(2)提供高性能的存储,在I/O级和数据吞吐率方面能满足成百上千台规模的Linux集群服务器聚合访问的需求
与分布式文件系统相比:
数据不需要从一个文件系统拷贝或复制到另一个文件系统,通过集群系统共享应用和数据的任务执行起来要比在单独的设备上执行快得多;
集群可以为文件和文件系统提供更多的空间;
因为只需要管理一个文件系统,而不再是每个存储设备或主机都需要一个文件系统,管理也更容易了;如果集群内的某台服务器出现了故障,另一台服务器就可以把它的工作接手过来,故障恢复也成为了现实;
用户也可以同时对位于其网络上的存储设备里的所有文件进行访问。
二、对象存储文件系统
2.1 对象存储文件系统架构
对象存储文件系统的核心是将数据通路(数据读或写)和控制通路(元数据)分离,并且基于对象存储设备(Object-based Storage Device,OSD)构建存储系统,每个对象存储设备具有一定的智能,能够自动管理其上的数据分布,对象存储文件系统通常有以下几部分组成。
1、对象
对象是系统中数据存储的基本单位,一个对象实际上就是文件的数据和一组属性的组合,这些属性可以定义基于文件的RAID参数、数据分布和服务质量等,而传统的存储系统中用文件或块作为基本的存储单位,在块存储系统中还需要始终追踪系统中每个块的属性,对象通过与存储系统通信维护自己的属性。在存储设备中,所有对象都有一个对象标识,通过对象标识OSD命令访问该对象。通常有多种类型的对象,存储设备上的根对象标识存储设备和该设备的各种属性,组对象是存储设备上共享资源管理策略的对象集合等。
2、对象存储设备
对象存储设备具有一定的智能,它有自己的CPU、内存、网络和磁盘系统,目前国际上通常采用刀片式结构实现对象存储设备。OSD提供三个主要功能:
(1) 数据存储。OSD管理对象数据,并将它们放置在标准的磁盘系统上,OSD不提供块接口访问方式,Client请求数据时用对象ID、偏移进行数据读写。
(2) 智能分布。OSD用其自身的CPU和内存优化数据分布,并支持数据的预取。由于OSD可以智能地支持对象的预取,从而可以优化磁盘的性能。
(3)每个对象元数据的管理。OSD管理存储在其上对象的元数据,该元数据与传统的inode元数据相似,通常包括对象的数据块和对象的长度。而在传统的NAS 系统中,这些元数据是由文件服务器维护的,对象存储架构将系统中主要的元数据管理工作由OSD来完成,降低了Client的开销。
3、元数据服务器(Metadata Server,MDS)
MDS控制Client与OSD对象的交互,主要提供以下几个功能:
(1) 对象存储访问。MDS构造、管理描述每个文件分布的视图,允许Client直接访问对象。MDS为Client提供访问该文件所含对象的能力,OSD在接收到每个请求时将先验证该能力,然后才可以访问。
(2) 文件和目录访问管理。MDS在存储系统上构建一个文件结构,包括限额控制、目录和文件的创建和删除、访问控制等。
(3) Client Cache一致性。为了提高Client性能,在对象存储文件系统设计时通常支持Client方的Cache。由于引入Client方的Cache,带来了Cache一致性问题,MDS支持基于Client的文件Cache,当Cache的文件发生改变时,将通知Client刷新Cache,从而防止Cache不一致引发的问题。
优势:
Lustre是基于对象的存储系统,减少元数据服务器的inode。
Lustre实际上还是将数据条带化到各个存储目标上,所以可以实现高度聚合io能力。
Lustre原生态支持海量小文件读写。且对大文件读写在linux内核做了特殊优化。
工作:
但是Lustre是个对用户透明的share文件系统,条带化数据的"位置信息"不能很完美的暴露出来。所以要用上Hadoop的map/reduce优势还有许多工作要做。
实现廉价的Lustre容错冗余机制,实现基于对象的副本复制策略。
不足:
还有目前Lustre只能部署在linux特定内核的平台上,需要对内核打补丁,限制lustre的普及。
Lustre容错机制采用对每个OSS采用RAID方法,成本昂贵,需要通过副本的方式实现廉价的容错。