测试cephfs写入海量文件

前言

测试cephfs的写入大量文件,通过mdtest写入1K大小的文件1亿个,每个目录里面文件为1万,目录总数为1万,总文件数目就为1亿了

写入的命令

1
mdtest -C -F -L -z 4 -b 10 -I 10000 -d /mnt/1yi/ -w 1024
  • -C 只创建
  • -F 只创建文件
  • -L 只在叶子层目录创建文件
  • -z 目录深度层级为4
  • -b 每个树下面子目录为10
  • -I 指定目录里面的文件数目
  • -w指定文件大小为1K
    每层的目录数目

1,10,100,1000,10000

统计写入的情况

通过扩展属性统计

1
2
3
4
5
6
7
8
9
10
[root@lab101 #test-dir.0]# getfattr -d -m ceph.dir.* mdtest_tree.0/
# file: mdtest_tree.0/
ceph.dir.entries="10"
ceph.dir.files="0"
ceph.dir.rbytes="1000307712"
ceph.dir.rctime="1600762346.09161429944"
ceph.dir.rentries="1001670"
ceph.dir.rfiles="990559"
ceph.dir.rsubdirs="11111"
ceph.dir.subdirs="10"

参数解析

1
2
3
4
5
6
7
8
ceph.dir.entries 指定目录下面文件和目录总个数
ceph.dir.files 指定目录下面没有文件
ceph.dir.rbytes 指定目录下面的文件总文件容量为1000307712 bytes
ceph.dir.rctime 目录的访问时间戳
ceph.dir.rentries 目录下面的文件和目录的总个数
ceph.dir.rfiles 目录下面的文件的个数
ceph.dir.rsubdirs 目录下面的子目录总个数(递归统计)
ceph.dir.subdirs 目录下面的子目录的个数(一层的)

mds内存占用统计

200万文件 内存3.3G
300万文件 内存4.3G

统计脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@lab101 ~]# cat getmdsmem.sh 
#! /bin/sh

while [ 2 > 1 ]
do
mem=`ps -p 49808 -o rsz|tail -n 1`
file_num=`getfattr -d -m ceph.dir.* /mnt/1yi/|grep ceph.dir.rfiles|cut -d "=" -f 2|cut -d "\"" -f 2`
date=`date "+%Y%m%d%H%M%S"`
echo $date,$file_num,$mem>>/opt/recode.txt

sleep 2
done