Lustre,一种平行分布式文件系统,通常用于大型计算机集群和超级电脑。Lustre是源自Linux和Cluster的混成词。最早在1999年,由皮特·布拉姆(英语:Peter Braam)创建的集群文件系统公司(英语:Cluster File Systems Inc.)开始研发,于2003年发布 Lustre 1.0。采用GNU GPLv2开源码授权。
一:lustre文件系统各个组件对存储和硬件需求
需要附加存储 | 理想的硬件特性 | |
MDS | 1-2%文件系统容量 | 足够的cpu频率,大量的内存,快速的磁盘存储 |
OSS | 每个OST大小为最大128TB,每个OSS 2-8个OSTs | 好的总线带宽,建议,通过多个OSSs平衡存储 |
Clients | 无 | 低延迟,高带宽的网络 |
二:lustre存储硬件方面的考虑
1.MGT要求存储空间小(<100M),而且数据只是在服务端或客户端挂载的时候才会访问,所以磁盘性能不考虑,但是这些数据非常重要,所以建议用RAID1
2. MDT的存储在数据库中被访问,访问模式大多数为,寻道和读写小数据量,高吞吐量的存储对mds是不重要的,所以存储类型应该能够提供低的多的寻道时间,所以建议用高转速的SAS或SSD驱动器,为获得最佳性能,应该配置一个拥有内部日志并且两个磁盘来自不同控制器的RAID1
若果你需要更大一点的MDT,可以先创建多个RAID1设备,然后再通过创建好的RAID1创建RAID0(即创建RAID10),这样保证了最大的可靠性,以为多个磁盘在同一个装置中故障的概率小于只有一个RAID1设备
注意:相反(先做RAID0再做RAID1,即两个RAID0组成RAID1),那就有50%的几率发生同时又两个磁盘故障,从而导致整个MDT数据丢失
3.OSS的存储数据访问模式,是一个取决于正在应用的访问模式的流I/O模式,每个OSS可以有多个OST,通常为2-8个OST,每个OST大小高达128TB,OSS配置应该在网络带宽和存储带宽之间取得平衡
lustre文件系统的容量为所有OST容量之和,比如,有64个OSS,每个OSS有2个8TB的OST,那就能提供一个容量大小为1PB的lustre文件系统,假如每个OST由10个1TB的SATA磁盘(组成RAID6,8个数据盘,2个做奇偶校验),每个磁盘提供50MB/sec的磁盘带宽,那每个OST就可以提供大概400MB/sec的磁盘带宽,如果这个文件系统作为网络存储后端,使用Infiniband网络(能提供40Gb/sec,大概500MB/sec),那每个OSS就可以提供800M/sec的端到端的吞吐量(这是理论值,实际环境中还要仔细的选择硬件并测试)
三:确定空间要求
1.MGT空间需求
需要小于100MB磁盘空间,建议100MB,空间取决于集群里服务器的数量
2.MDT空间要求
当在计算MDT需要的空间时,最重要的因素就是要考虑,存储到文件系统的文件数量,这也就决定了需要多少inodes(inodes决定的MDT大小),为了安全起见,计划每个inode大小为2KB(这也是默认大小)
例如:要存储的文件平均大小为5MB,你有100TB可用的OST存储空间,那你就可以计算需要的最少inodes数了
(100 TB * 1024 GB/TB * 1024 MB/GB) / 5 MB/inode = 20million inodes
我们建议使用最少inodes数的2倍,做为inodes数,并且考虑允许文件的平均大小小于预期值,因此,所需的空间如下
2 KB/inode * 40 million inodes = 80 GB
如果平均文件大小太小,比如要存储的文件平均大小为4KB,那需要的MDT大小差不多为50TB,那这样用lustre文件系统就不合理了
备注:
如果MDT太小,会导致不能利用OST的所有空间,因为在格式换前,一定要确定好MDT大小,以为格式化完后再增加inodes是很困难的
3.确定OST的空间要求
OST里每个对象使用空间的多少取决于用户的使用模式和系统上运行的应用程序,lustre文件系统默认每个对象大小为16KB,如果你确定要存储的文件平均大小大于16KB,你就可以指定一个更大的平均文件大小,以减少文件系统开销和减少文件系统检查时间
4.文件和文件系统限制(lustre2.3和之前的版本)
限制项目 | 阀值 | 描述 |
MDT的最大数量 | 1个(lustre2.4最多4096个) | |
OST最大数量 | 8150个 | 已经测试过4000个OST |
单个OST最大容量 | 128TB | 这不是一个硬限制,当然大于128TB也可以,但通常都不超过128TB |
客户端最大数量 | 131072个 | 数量可以在编译的时候更改 |
一个lustre文件系统最大容量 | 512PB | |
最大条带数量 | 2000 | |
最大条带大小 | <4GB | |
最小条带大小 | 64KB | |
对象最大大小 | 16TB | |
文件最大大小 | 16TB-32位 31.25PB-64位 | |
单个目录下最大文件数量或子目录数量 | 1千万 | |
文件系统内最大文件数量 | 40亿 | |
最大文件名长度 | 255字节 | |
路径最大长度 | 4096字节 | |
文件系统内打开的最大文件数 | 无限制 | |
四:确定内存要求
1.客户端内存要求
最小2GB的内存
2.MDS内存要求
MDS内存要求由以下因素决定
客户数量
目录大小
负载放置在服务器
例如:MDS有一个MDT,1000个客户端,16互动节点,2000000工作组文件(其中400000个文件缓存在客户端),那么所需内存如下
操作系统消耗=512MB
文件系统日志=400MB
1000 * 4-core clients * 100files/core * 2kB = 800 MB 16 interactive clients * 10,000files * 2kB = 320 MB 1,600,000 file extra working set * 1.5kB/file = 2400MB
所以最少需要大概4GB,当然内存越大性能越好
3.OSS内存需求
The minimum recommended RAMsize for an OSS with two OSTs is computed below: Ethernet/TCP send/receive buffers(4 MB * 512 threads) = 2048 MB 400 MB journal size * 2 OSTdevices = 800 MB 1.5 MB read/write per OST IOthread * 512 threads = 768 MB 600 MB file system read cache *2 OSTs = 1200 MB 1000 * 4-core clients * 100 files/core * 2kB = 800MB 16 interactive clients * 10,000files * 2kB = 320MB 1,600,000 file extra workingset * 1.5kB/file = 2400MB DLM locks + file systemmetadata TOTAL = 3520MB Per OSS DLM locks + file systemmetadata = 3520MB/6 OSS = 600MB (approx.) Per OSS RAM minimum requirement= 4096MB (approx.) This consumes about 1,400 MBjust for the pre-allocated buffers, and an additional 2 GB for minimal file system and kernel usage.Therefore, for a non-failover configuration, the minimum RAM would be 4 GB for an OSS node with two OSTs.Adding additional memory on the OSS will improve the performance of reading smaller,frequently-accessed files. For a failover configuration,the minimum RAM would be at least 6 GB. For 4 OSTs on each OSS in a failover configuration 10GB ofRAM is reasonable. When the OSS is not handling any failed-over OSTs the extra RAM will be used as aread cache. As a reasonable rule of thumb,about 2 GB of base memory plus 1 GB per OST can be used. In failover configurations, about 2 GB per OST is needed.
五:关于存储设备RAID
1.为了获得更好的性能,如果是RAID5,每个RAID5用5块盘或者是9块盘,如果是RAID6,每个RAID6用6块盘或10块盘,并且磁盘在不同的控制器上
六:双网卡绑定
设置绑定:
1.创建一个虚拟网口“bond0”:
# vi/etc/sysconfig/network-scripts/ifcfg-bond0
bond0内容如下:
#cat/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0 IPADDR=192.168.10.79 NETWORK=192.168.10.0 NETMASK=255.255.255.0 USERCTL=no BOOTPROTO=none ONBOOT=yes
2.编辑eth0网卡配置文件
# vi/etc/sysconfig/network-scripts/ifcfg-eth0
修改内容如下:
DEVICE=eth0 USERCTL=no ONBOOT=yes MASTER=bond0 SLAVE=yes BOOTPROTO=none
3.编辑eth1网卡配置文件
# vi /etc/sysconfig/network-scripts/ifcfg-eth1
修改内容如下:
DEVICE=eth1 USERCTL=no ONBOOT=yes MASTER=bond0 SLAVE=yes BOOTPROTO=none
4. 设置绑定端口bond0选项
# vi/etc/modprobe.d/bond.conf
添加内容如下
alias bond0 bonding options bond0mode=balance-alb miimon=100
5.载入bonding模块并激活bond0
# modprobe bonding # ifconfig bond0 up # ifenslave bond0eth0 eth1
6.检查 /proc/net/bonding获取bond0信息
# cat/proc/net/bonding/bond0
Ethernet ChannelBonding Driver: v3.0.3 (March 23, 2006) Bonding Mode: loadbalancing (round-robin) MII Status: up MII Polling Interval(ms): 0 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface:eth0 MII Status: up Link Failure Count:0 Permanent HW addr:4c:00:10:ac:61:e0 Slave Interface:eth1 MII Status: up Link Failure Count:0 Permanent HW addr:00:14:2a:7c:40:1d
7. 使用ifconfig命令查看bond0信息
#ifconfig
bond0 Linkencap:Ethernet HWaddr 4C:00:10:AC:61:E0 inetaddr:192.168.10.79 Bcast:192.168.10.255 \ Mask:255.255.255.0 inet6 addr:fe80::4e00:10ff:feac:61e0/64 Scope:Link UP BROADCAST RUNNINGMASTER MULTICAST MTU:1500 Metric:1 RX packets:3091errors:0 dropped:0 overruns:0 frame:0 TX packets:880errors:0 dropped:0 overruns:0 carrier:0 collisions:0txqueuelen:0 RX bytes:314203(306.8 KiB) TX bytes:129834 (126.7 KiB) eth0 Linkencap:Ethernet HWaddr 4C:00:10:AC:61:E0 inet6 addr:fe80::4e00:10ff:feac:61e0/64 Scope:Link UP BROADCAST RUNNINGSLAVE MULTICAST MTU:1500 Metric:1 RX packets:1581errors:0 dropped:0 overruns:0 frame:0 TX packets:448errors:0 dropped:0 overruns:0 carrier:0 collisions:0txqueuelen:1000 RX bytes:162084(158.2 KiB) TX bytes:67245 (65.6 KiB) Interrupt:193 Baseaddress:0x8c00 eth1 Linkencap:Ethernet HWaddr 4C:00:10:AC:61:E0 inet6 addr:fe80::4e00:10ff:feac:61e0/64 Scope:Link UP BROADCAST RUNNINGSLAVE MULTICAST MTU:1500 Metric:1 RX packets:1513errors:0 dropped:0 overruns:0 frame:0 TX packets:444errors:0 dropped:0 overruns:0 carrier:0 collisions:0txqueuelen:1000 RX bytes:152299(148.7 KiB) TX bytes:64517 (63.0 KiB) Interrupt:185 Baseaddress:0x6000
七:lustre各版本支持的linux发行版
Lustre发行版 | 已测试支持lustre 服务端的发行版 | 已测试支持lustre客户端的发行版 |
2.0 | RHEL 5, CentOS 5 | RHEL 5, CentOS 5, SLES 11 SP0 |
2.1.x | RHEL 5, CentOS 5, RHEL 6, CentOS 6 | RHEL 5, CentOS 5, RHEL 6, CentOS 6, SLES 11 SP1 |
2.2 | RHEL 6, CentOS 6 | RHEL 5, CentOS 5, RHEL 6, CentOS 6, SLES 11 SP1 |
2.3 | RHEL 6.3, CentOS 6.3 | RHEL 6.3, CentOS 6.3, RHEL 5.8, CentOS 5.8, SLES 11 SP1 |
2.4.x | RHEL 6.4, CentOS 6.4 | RHEL 6.4, CentOS 6.4, SLES 11 SP2, FC18 |
请根据上表依据linux发行版安装合适的lustre版本
网友留言: