七天七文件系统之lizardfs
概述
Lizardfs是一个分布式的文件系统,采用高可用、可扩展、容错的设计。供标准的POSIX接口支持统一命名空间,供标准的POSIX接口,资源上可使用不同物理节点上的磁盘。也属于软件定义存储。由Skytechnology支持。
高可用、容错-磁盘故障或者节点故障不会引起服务不可用或者数据丢失。支持多种数据复制模式,比如纠删码、副本(在lizardfs中称为standard)和类似raid5的xor模式。纠删码在一定程度上可以提高并发的能力。
可扩展性 - 节点加入时不会产生服务不可用,并且部分数据会分布到新的节点上,保持数据均衡。可至EB级别。
Lizardfs支持较多的文件系统特性:
支持ACL即访问控制列表
不赘述,对Linux Mode权限补充。
原生的Windows客户端(需要许可权)
支持磁带存储
提供LTO库和磁带设备对接
配额
支持针对用户/用户组的软硬配额,数量配额和容量配额,目前3.10版本已经支持目录级别的配额设置。
快速快照
在拷贝大文件或者虚拟机时,使用快速快照功能能加速拷贝过程。提供命令mfsmakesnapshot为大文件创建快照。在没有写入时快照只是创建一个新的inode节点,数据并不会产生真的复制。如果修改文件那么只需要保存改变的部分chunks。
QoS(Quality of Service)
允许设置读写带宽。主要是保证特定业务的连续性。比如对运维设置带宽上下限,从而保证生产环境带宽不会产生大的波动。
回收站
处在回收站的文件可以在指定时间内恢复,而过了时间则无法恢复。可以有效防止数据被意外删除。
支持多数据中心
针对目录设置"custom goal"将写入文件的数据指定在不同区域的服务器上,当一个区域的服务器失效,则可以使用另外区域的数据。
支持NFS和pNFS
通过nfs-ganesha方式导出,由nfs-ganesha服务提供共享。
在运维方面提供监控工具和监控接口。开发环境特别支持MacOS,可容器化部署,采用GPLv3许可证。
架构
目前大多数dfs都讲元数据和数据分离开进行管理,Lizardfs也不例外。
Lizardfs 组成类比HDFS的NameNode和DataNode,有些相似:
Metadata Server 元数据节点,负责存储元数据。采用主备模式。备节点和主节点进行同步,主节点的修改会立刻同步到备节点。备节点也被称为Shadow master(区别于主节点master)。元数据将存放在元数据节点的内存和本地磁盘中(类似和beegfs一样组raid1保证可靠性和性能?),推荐使用SSD作为后端存储介质。
Chunk Server 数据节点,负责存储数据。每个文件将会分成64MB的块。使用JBOD或者RAID组作为存储后端。默认使用3副本对chunk进行存储。当一部分数据丢失之后,根据剩余副本恢复到原先的数量,恢复速度随着节点的数目增加而增大。chunk server的数量应当大于数据副本数(副本不会落在同一个机器上)。同时也值支持的XOR模式,将chunk分成n块,并计算出1块校验块(实际上类似于n为1的纠删码)。
客户端,目前支持fuse客户端,Windows客户端
元数据logger,比较有特色的组件,轻量化组件(使用较少的cpu和内存),从master那里接收和slave master一样的元数据操作信息并存放在本地磁盘中作为冷拷贝(类似于ceph-mds 里面的journal,存放日志操作),如果所有元数据节点都失效,可以根据logger中的冷拷贝恢复。
底层并非采用对象存储,因此无法提供统一存储的功能。
应用场景
目前不如ceph那样热度很高。
-灾备中心,成为灾备中心主要是数据不丢失并且提供了远程复制的功能。
-归档,可以归档至磁带系统。
-云计算场景,为虚拟机使用,作为OpenStack的存储后端(快速拷贝是一特色,类似于ocfs2的reflink)。
-网络监控设备,媒体信息存储
-高性能计算场景(HPC)
参考:
官方白皮书 https://lizardfs.com/wp-content/uploads/2018/06/whitepaper_lizard_v3.12_web.pdf