前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深入学习下Lustre文件布局上篇

深入学习下Lustre文件布局上篇

作者头像
用户4700054
发布2022-08-17 13:21:01
8711
发布2022-08-17 13:21:01
举报
文章被收录于专栏:存储内核技术交流

实验环境

类型

版本

节点

Lustre Server

4.18.0-240.1.1.el8_lustre.x86_64,lustre-2.14.0

10.211.55.6

Lustre Client

4.18.0-240.1.1.el8_lustre.x86_64,lustre-2.14.0

10.211.55.3

节点

磁盘

类型

挂载点

10.211.55.6

Lustre Server

MDT

mount-lustre:/mgt_mdt,mount-ldiskfs:/mnt/mgt_mdt

10.211.55.6

Lustre Server

OST0

mount-lustre:/ost0,mount-ldiskfs:/mnt/ost0

10.211.55.6

Lustre Server

OST1

mount-lustre:/ost1,mount-ldiskfs:/mnt/ost1

10.211.55.6

Lustre Server

OST2

mount-lustre:/ost2,mount-ldiskfs:/mnt/ost2

测试环境设置

创建2个目录,一个是/mnt/lustre/dir1默认是布局;另外一个是/mnt/lustre/dir2设置stripe_count=3,stripe_size=1M.然后分别在2个文件夹下拷贝大于1M的文件,然后在MDTOST观察写入新文件的布局。

代码语言:javascript
复制
[root@CentOS-Lustre-Client ~]$ ls -l -1h lustre.log 
-rw-r--r--. 1 root root 1.1M Jun 22 13:01 lustre.log[root@CentOS-Lustre-Client ~]$ md5sum lustre.log 
7b63e9404abf294f25ef692604b8a360  lustre.log[root@CentOS-Lustre-Client ~]$ 
[root@CentOS-Lustre-Client ~]$ mkdir /mnt/lustre/dir1[root@CentOS-Lustre-Client ~]$ mkdir /mnt/lustre/dir2[root@CentOS-Lustre-Client ~]$ lfs setstripe  -c 3 /mnt/lustre/dir2[root@CentOS-Lustre-Client ~]$ 
[root@CentOS-Lustre-Client ~]$ lfs getstripe  /mnt/lustre/dir1
/mnt/lustre/dir1
stripe_count:  1 stripe_size:   1048576 pattern:       0 stripe_offset: -1[root@CentOS-Lustre-Client ~]$ lfs getstripe  /mnt/lustre/dir2
/mnt/lustre/dir2
stripe_count:  3 stripe_size:   1048576 pattern:       raid0 stripe_offset: -1[root@CentOS-Lustre-Client ~]$ cp lustre.log  /mnt/lustre/dir1/[root@CentOS-Lustre-Client ~]$ cp lustre.log  /mnt/lustre/dir2/

文件布局概览

MDT端分析

O目录说明
代码语言:javascript
复制
// MGT和MDT共享一个磁盘,/mnt/mgt_mdt下的O是数据目录,其中1 是未命名log,10是命名log,200000003 是本地命令对象用于lustre内部使用[root@CentOS-Lustre-Server /mnt/mgt_mdt/O]$ tree ./ -L 1./
├── 1├── 10└── 200000003
ROOT目录说明
代码语言:javascript
复制
// 挂载点的ROOT目录是lustre所有的客户端看到的fs的统一视图
// 
[root@CentOS-Lustre-Server /mnt/mgt_mdt/ROOT]$ tree ./
./
├── dir1
│   └── lustre.log
└── dir2
    └── lustre.log2 directories, 2 files
dir1属性
代码语言:javascript
复制
[root@CentOS-Lustre-Server /mnt/mgt_mdt/ROOT]$ getfattr -d -m ".*"  ./dir1# file: dir1security.selinux="unconfined_u:object_r:unlabeled_t:s0"trusted.link=0s3/HqEQEAAAAuAAAAAAAAAAAAAAAAAAAAABYAAAACAAAABwAAAAEAAAAAZGlyMQ==trusted.lma=0sAAAAAAAAAADRCwAAAgAAAAEAAAAAAAAA[root@CentOS-Lustre-Server /mnt/mgt_mdt/ROOT]$ getfattr -d -m ".*"  ./dir1/lustre.log 
# file: dir1/lustre.logsecurity.selinux="unconfined_u:object_r:unlabeled_t:s0"trusted.link=0s3/HqEQEAAAA0AAAAAAAAAAAAAAAAAAAAABwAAAACAAAL0QAAAAEAAAAAbHVzdHJlLmxvZw==trusted.lma=0sAAAAAAAAAADRCwAAAgAAAAMAAAAAAAAA
trusted.lov=0s0AvRCwEAAAADAAAAAAAAANELAAACAAAAAAAQAAEAAAAiAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAA=trusted.som=0sBAAAAAAAAACtFBAAAAAAAAAAAAAAAAAA

OST端分析

dir1/lustre.log目录下文件分析
  • MDT端不同的是OST中的O存储的是实际的数据分片,接下来查看lustre.log的数据文件分布情况.如下是客户端视角查看lustre.log的布局,从下面信息看出文件位于ost1中的O/{grop}/d{objid%32}/34这个文件(O/0/d2/34)就是这个文件的分片
代码语言:javascript
复制
[root@CentOS-Lustre-Client ~]$ lfs getstripe  /mnt/lustre/dir1/lustre.log 
/mnt/lustre/dir1/lustre.log
// 分片数量
lmm_stripe_count:  1// 每个分片的大小,默认是1M
lmm_stripe_size:   1048576// 采用raid0方式布局
lmm_pattern:       raid0
// 文件布局改变的次数
lmm_layout_gen:    0lmm_stripe_offset: 2// objidx是位于哪个ost(index=2),objid是文件分片名称,一个是十进制,一个是16进制;group是数据在O这个文件夹下哪个目录
        obdidx           objid           objid           group             2              34           0x22                0
  • 核对文件的数据校验,lustre.log的md5校验值是7b63e9404abf294f25ef692604b8a360,我们验证下ost2上面的O/0/d2/34和lustre.log的同一个文件,从下面结果发现是同一个文件。
代码语言:javascript
复制
// 进入ost1的以ldiskfs的挂载[root@CentOS-Lustre-Server /mnt/ost0/O]$ cd /mnt/ost2/O/0/d2[root@CentOS-Lustre-Server /mnt/ost2/O/0/d2]$ ls -l
total 1032-rwSrwSrwT 1 root root       0 Dec 31  1969 2-rw-rw-rw- 1 root root 1053869 Jun 22 01:20 34[root@CentOS-Lustre-Server /mnt/ost2/O/0/d2]$ 
// 这里查看是同一个文件[root@CentOS-Lustre-Server /mnt/ost2/O/0/d2]$ md5sum 347b63e9404abf294f25ef692604b8a360  34[root@CentOS-Lustre-Server /mnt/ost2/O/0/d2]$
  • dir1/lustre.log的文件属性
代码语言:javascript
复制
[root@CentOS-Lustre-Server /mnt/ost2/O/0/d2]$ getfattr -d -m ".*" ./34# file: 34trusted.fid=0s0QsAAAIAAAADAAAAAAAAAAAAEAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==trusted.lma=0sCAAAAAAAAAAAAAIAAQAAACIAAAAAAAAA
dir2/lustre.log目录下文件分析
  • dir2下的目录是采用3个分片的设置,接下来看下这个文件的布局信息。这个文件分别在ost0上的/mnt/ost0/O/0/d2/34、ost1上的/mnt/ost1/O/0/d2/34、ost2上的/mnt/ost2/O/0/d3/35这三个分片。ost0上的是一个空的文件,数据集中在ost1和ost2上
代码语言:javascript
复制
[root@CentOS-Lustre-Client ~]$ lfs getstripe  /mnt/lustre/dir2/lustre.log 
/mnt/lustre/dir2/lustre.log
lmm_stripe_count:  3lmm_stripe_size:   1048576lmm_pattern:       raid0
lmm_layout_gen:    0lmm_stripe_offset: 1
        obdidx           objid           objid           group             1              34           0x22                0
             2              35           0x23                0
             0              34           0x22                0
代码语言:javascript
复制
// 查看lustre后端的ost0/ost1/ost2上面的lustre.log的数据分片[root@CentOS-Lustre-Server /mnt/ost1/O/0/d2]$ ls -l /mnt/ost0/O/0/d2/34
-rwSrwSrwT 1 root root 0 Dec 31  1969 /mnt/ost0/O/0/d2/34[root@CentOS-Lustre-Server /mnt/ost1/O/0/d2]$ ls -l /mnt/ost1/O/0/d2/34
-rw-rw-rw- 1 root root 1048576 Jun 22 01:20 /mnt/ost1/O/0/d2/34[root@CentOS-Lustre-Server /mnt/ost1/O/0/d2]$ ls -l /mnt/ost2/O/0/d3/35
-rw-rw-rw- 1 root root 5293 Jun 22 01:20 /mnt/ost2/O/0/d3/35

// 聚合文件到1这个文件,然后比对md5的值[root@CentOS-Lustre-Server ~]$ cat /mnt/ost1/O/0/d2/34 >> ~/lustre_tmp.log[root@CentOS-Lustre-Server ~]$ cat /mnt/ost2/O/0/d3/35 >> ~/lustre_tmp.log[root@CentOS-Lustre-Server ~]$ sync// 最终发现这2个文件的md5是同一个文件内容[root@CentOS-Lustre-Server ~]$ md5sum lustre.log 
7b63e9404abf294f25ef692604b8a360  lustre.log[root@CentOS-Lustre-Server ~]$ md5sum lustre_tmp.log 
7b63e9404abf294f25ef692604b8a360  lustre_tmp.log
  • dir2/lustre.log的文件属性
代码语言:javascript
复制
[root@CentOS-Lustre-Server ~]$ getfattr -d -m ".*"  /mnt/ost1/O/0/d2/34
getfattr: Removing leading '/' from absolute path names# file: mnt/ost1/O/0/d2/34trusted.fid=0s0QsAAAIAAAAEAAAAAAAAAAAAEAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==trusted.lma=0sCAAAAAAAAAAAAAEAAQAAACIAAAAAAAAA[root@CentOS-Lustre-Server ~]$ getfattr -d -m ".*"   /mnt/ost2/O/0/d3/35
getfattr: Removing leading '/' from absolute path names# file: mnt/ost2/O/0/d3/35trusted.fid=0s0QsAAAIAAAAEAAAAAQAAAAAAEAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==trusted.lma=0sCAAAAAAAAAAAAAIAAQAAACMAAAAAAAAA
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 存储内核技术交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实验环境
    • 测试环境设置
      • 文件布局概览
        • MDT端分析
          • O目录说明
          • ROOT目录说明
          • dir1属性
        • OST端分析
          • dir1/lustre.log目录下文件分析
          • dir2/lustre.log目录下文件分析
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档