Lustre概述
Lustre*是一个开源的、全局单个命名空间的、符合POSIX标准的分布式并行文件系统,旨在实现系统的可扩展性、高性能和高可用性。Lustre在基于Linux的操作系统上运行,并采用客户端-服务器模式的网络架构。Lustre的存储由一组服务器提供,这些服务器可以扩展到多达数百台的数量。运行着单个文件系统实例的Lustre服务器总共可以向数千个计算客户端提供高达几十PB的存储容量,总吞吐量超过1TB/s。

Lustre是一个文件系统,可扩展以满足从小型HPC环境到超级计算机等不同规模的系统上运行的各种应用程序的需求,而且Lustre是使用基于对象的存储构建块创建的,这样可以最大限度地提高系统扩展性。
当元数据和数据存储在独立的服务器上时,冗余服务器可以支持存储故障转移功能,这样每个文件系统可以针对不同的工作负载进行优化。Lustre可以通过高速网络结构(如英特尔全路径架构( OPA )、InfiniBand*和以太网)向应用程序提供快速的IO。
Lustre架构

图1. Lustre文件系统体系结构
Lustre文件系统架构被设计为建立在计算机网络上的可扩展存储平台,它是基于分布式的、基于对象的存储。其中的命名空间层级结构与文件内容分开存储。Lustre中的服务分为支持元数据操作的服务和支持文件内容操作的服务。
Lustre中有两种类型的对象。数据对象是用于存储与文件内容相关联的大量数据的简单数组,而索引对象用于存储键值信息,如POSIX目录。后端存储服务器负责管理数据块存储,所有应用程序级文件系统的访问都通过客户端和存储服务器之间的网络结构来进行。
Lustre文件系统的构建块有元数据服务器和对象存储服务器,它们分别提供对命名空间的操作和大数据量的IO服务。构件块还包括一台管理服务器,它是配置信息的全局注册表,功能上独立于任何一个Lustre实例。Lustre客户端负责为应用程序和Lustre服务之间的交互提供接口。客户端上的软件为最终用户应用程序提供一致POSIX接口。Lustre的网络协议LNet提供了将服务绑定在一起的通信框架。
元数据服务器( MDS ) : MDS管理Lustre文件系统上所有的命名空间操作。文件系统的目录层级结构和文件信息包含在称为元数据目标( MDT )的存储设备上,MDS为此存储提供逻辑接口。Lustre文件系统通常具有至少一个MDS和相应的MDT,并且可以添加更多MDT来满足特定环境下的扩展需求。在创建文件时,MDS可以为文件内容控制对象存储服务器上文件内容的存储对象分配,并管理文件的打开和关闭、删除、重命名以及其他命名空间上的操作。
MDT中存储的是命名空间的元数据信息,如文件名、目录、访问权限和文件布局,这些信息有效地为文件系统上的数据提供索引。在单个文件系统中包含多个MDT的能力使目录子树可以存储在次级MDT上,这有助于将那些元数据特别密集的工作负载隔离到专用硬件上(例如可以为一组特定的项目分配一个MDT )。单个的大型目录也可以跨多个MDT存储,这样可以为在扁平化目录结构中生成的大量文件的应用程序提供可扩展性。
对象存储服务器( OSS ) : OSS为Lustre文件系统中的文件内容提供大容量存储。一个或多个对象存储服务器( OSS )将文件数据存储在一个或多个对象存储目标( OST )上,单个Lustre文件系统可以扩展到包含数百个OSS的规模。单个OSS通常为2至8个OST (还有可能更多) 提供服务,OST存储在直连存储上。Lustre文件系统的容量等于所有OSS主机上的所有OST的容量总和。
OSS通常成对配置,每两台OSS连接到一个存放了OST的共享外部存储机架中。在主动-被动高可用性故障转移的配置下,机架中的OST可被两台服务器访问,以在服务器或组件出现故障时提供服务的连续性。OST一次只能挂载在一台服务器上,通常均匀分布在OSS主机上,以平衡性能和最大化吞吐量。
管理服务器( MGS ) : MGS存储了集群中所有Lustre文件系统的配置信息,并将这些信息提供给其他Lustre主机。服务器和客户端在启动时都会连接到MGS,以便获得文件系统的配置日志。如果文件系统的配置进行了更改,包括服务器重启等,MGS负责分发该通知。
MGS会将所有Lustre节点的持久化配置信息记录在名为管理目标( MGT )的存储设备上。在高可用性配置中,MGS可以成对的与一台MDS相连,每个服务器都连接到共享的存储上。多个Lustre文件系统可以由单个MGS管理。
客户端: 通过Lustre客户端的接口,应用程序可以访问和使用文件系统上的数据。Lustre客户端可以作为主机上的文件系统装载点,它使用标准POSIX语义,为应用程序呈现一个集中化的文件系统中所有文件和数据的统一命名空间。Lustre文件系统挂载在客户端操作系统上,看上去就像任何其他POSIX文件系统一样;每个Lustre实例在客户端的操作系统上显示为独立的挂载点,每个客户端可以同时挂载几个不同的Lustre文件系统实例。
Lustre 网络( Lnet ) : Lnet是一种高速的数据网络协议,用于客户端访问文件系统。Lnet是为满足大规模计算集群的需求而设计的,并针对相当大的节点数量和高吞吐量进行了优化。Lnet支持以太网、InfiniBand*、英特尔全路径架构( OPA )和特定的计算结构,如Cray * Gemini。
Lnet是从文件系统本身中抽象出网络细节,并支持全RDMA吞吐量和零拷贝通信。
Lnet支持路由功能,这为连接不同的网络结构提供了最大的灵活性。Lnet的路由功能为桥接不同的网络或使用不同的网络结构技术(如英特尔OPA和InfiniBand )提供了一种高效的协议。在客户端数量非常大的大型文件系统中,Lnet还可以支持多重网络连接以提高性能和可靠性。
Lustre安装
制作一个本地镜像
reposync configfile:
[root@localhost html]# cat lustre-repo.conf
[lustre-server]
name=lustre-server
baseurl=https://downloads.whamcloud.com/public/lustre/latest-release/el7.6.1810/server
# exclude=*debuginfo*
gpgcheck=0
[lustre-client]
name=lustre-client
baseurl=https://downloads.whamcloud.com/public/lustre/latest-release/el7.6.1810/client
# exclude=*debuginfo*
gpgcheck=0
[patchless-ldiskfs]
name=patchless-ldiskfs
baseurl=https://downloads.whamcloud.com/public/lustre/latest-release/el7.6.1810/patchless-ldiskfs-server
# exclude=*debuginfo*
gpgcheck=0
[e2fsprogs-wc]
name=e2fsprogs-wc
baseurl=https://downloads.whamcloud.com/public/e2fsprogs/latest/el7
# exclude=*debuginfo*gpgcheck=0
同步镜像:
[root@localhost html]# reposync -c lustre-repo.conf -n -r lustre-server -r lustre-client -r patchless-ldiskfs -r e2fsprogs-wc
如果因为网络问题,可以使用proxychains4 来进行代理访问:(proxychains4 安装教程)
[root@localhost repo]# proxychains4 reposync -c ../lustre-repo.conf -n -r lustre-server -r lustre-client -r patchless-ldiskfs -r e2fsprogs-wc
创建repo metadata:
cd /usr/share/nginx/html/repo
for i in e2fsprogs-wc lustre-client lustre-server patchless-ldiskfs; do
(cd $i && createrepo .)
done
制作lustre.repo文件:
[root@localhost html]# cat lustre.repo
[lustre-server]
name=lustre-server
baseurl=http://127.0.0.1/repo/lustre-server
# enabled=0
gpgcheck=0
proxy=_none_
[lustre-client]
name=lustre-client
baseurl=http://127.0.0.1/repo/lustre-client
# enabled=0
gpgcheck=0
[e2fsprogs-wc]
name=e2fsprogs-wc
baseurl=http://127.0.0.1/repo/e2fsprogs-wc
# enabled=0
gpgcheck=0
# patchless-ldiskfs
[patchless-ldiskfs]
name=patchless-ldiskfs
baseurl=http://127.0.0.1/repo/patchless-ldiskfs
# enabled=0gpgcheck=0
yum 安装教程,详细请参考lustre文档
http://wiki.lustre.org/Installing_the_Lustre_Software#Using_YUM_to_Manage_Local_Software_Provisioning
保持更新,如果对你有帮助,请点击推荐。
lustre 具体安装步骤步骤,针对本地文件资源:
0. 关闭防火墙,关闭 selinux
1. 安装 repo
a. 安装 epel-release repo , yum install, yum makecache
b. 安装 nginx repo , yum install , yum makecache
c. 启动 nginx ; cd /usr/share/nginx/html
d. 覆盖 nginx 配置文件并reload; nginx -s reload
e. 创建 lustre repo; 运行 makerepo.sh 更新索引;
f. 复制repo 配置文件;yum makecache;
2. 安装 lustre
a. 参考 lustre wiki; http://wiki.lustre.org/Installing_the_Lustre_Software
b. 安装dkms
c. 安装 Lustre Servers with LDISKFS OSD Support
d. 重新启动;进入新内核;
e. 继续完成安装;通过 modprobe -v lustre 检测lustre 模块是否能够加载;
3. 安装 lustre client
a. 参考 https://docs.aws.amazon.com/fsx/latest/LustreGuide/install-lustre-client.html
b. 进行在 ubuntu 18.04 安装 deb
c. dpkg -i install lustre-client-modules & lustre-utils
d. curl -O -L http://10.134.150.13/client/lustre-client-modules-4.15.0-45-generic_2.12.2-1_amd64.deb
e. curl -O -L http://10.134.150.13/client/lustre-client-utils_2.12.2-1_amd64.deb
f. 安装 apt install perl-modules-5.22; apt install libperl5.22; apt install libsnmp30;
g. 记得配置好ubuntu的源;
4. 启动lustre
a. 服务端格式化硬盘,并启动 lustre 服务;绑定到指定的网卡;并创建挂载点 /mnt/mdt /mnt/ost0
b. mkfs.lustre --fsname=lustrefs --mgs --mdt --index=0 /dev/sdb 配置 MGS
c. mount.lustre /dev/sdb /mnt/mdt 挂载 mgs
d. mkfs.lustre --fsname=lustrefs --mgsnode=10.134.150.13@tcp --ost --index=0 /dev/sdc 配置 OSS
e. mount.lustre /dev/sdc /mnt/ost0
f. 启动lustre 服务器 systemctl restart lustre;
g. 客户端挂在 lustre:mount.lustre 192.168.83.128@tcp:/lustrefs /mnt/lustreh. mkfs.lustre --fsname=lustrefs --mgsnode=192.168.83.128@tcp --ost --index=0 /dev/sdc 配置 OSS 防止网卡不够智能的时候出现找不到mgs的问题;
linux 创建虚拟块设备,制作文件系统并挂载,用于测试lustre:
参考链接:https://www.cnblogs.com/xuyaowen/p/lustre-loop-device.html
保持更新,更多内容请关注 cnblogs.com/xuyaowen;
Lustre 文件系统介绍:https://en.wikipedia.org/wiki/Lustre_(file_system)
阿里云Lustre 安装步骤:(2020年4月20日)
创建位于同一VPC的两台虚拟机;一台Ubuntu,一台Centos 1806;
在创建CentOS 实例的时候,注意多创建两块云盘;
设置好安全组,保证位于同一VPC两台机器可以互相访问;
上传Lustre安装包至其中一台VPC;
安装nginx: systemctl status nginx 在需要安装的Centos 上;
按照Lustre安装步骤进行安装;、
Lustre Client 挂载步骤:
安装客户端(开启客户端扩展属性):
dpkg -i install lustre-client-modules & lustre-utils
apt --fix-broken install
mount.lustre -o user_xattr 192.168.83.128@tcp:/lustrefs /mnt/lustre
结束语

