lustre集群环境
角色 | 节点 | 版本 | 磁盘 |
---|---|---|---|
MGS/MDS | 10.211.55.16 | lustre 2.15 | /dev/sdb |
OSS | 10.211.55.17 | lustre 2.15 | /dev/sdb /dev/sdc |
Client | 10.211.55.18 | lustre 2.15 | nil |
核心参数说明
checksum_pages
解说llite
内核模块中的llit.*.checksum_pages
参数.设置完这个参数可以通过lctl get_param osc.*.checksums
查看基于网络传输checksum
开启状态//参数查看,在llite端checksum_pages是客户端super_block的一个标记
[root@CentOS-Lustre-Client ~]$ lctl list_param llite.*.* |grep checksum_pages
llite.bigfs-ffff8aac839ed800.checksum_pages
// 查看参数默认值
[root@CentOS-Lustre-Client ~]$ lctl get_param llite.*.checksum_pages
llite.bigfs-ffff8aac839ed800.checksum_pages=1
[root@CentOS-Lustre-Client ~]$ lctl get_param osc.*.checksums
osc.bigfs-OST0001-osc-ffff8aac839ed800.checksums=1
osc.bigfs-OST0002-osc-ffff8aac839ed800.checksums=1
/***********************执行更改*********************/
// mgs端执行关闭checksum_pages
[root@CentOS-Lustre-MDS ~]$ lctl set_param -P llite.bigfs-ffff8aac839ed800.checksum_pages=0
// 客户端查看2个osc的都关闭checksum
[root@CentOS-Lustre-Client ~]$ lctl get_param osc.*.checksums
osc.bigfs-OST0001-osc-ffff8aac839ed800.checksums=0
osc.bigfs-OST0002-osc-ffff8aac839ed800.checksums=0
//在客户端查看checksum_pages已经关闭
[root@CentOS-Lustre-Client ~]$ lctl get_param llite.*.checksum_pages
llite.bigfs-ffff8aac839ed800.checksum_pages=0
max_rpcs_in_flight
解说max_rpcs_in_flight
是osc到ost
通信或者mdc到mdt
通信的rpc的并发数,默认设置的是8
.针对IB环境可以设置到32
;针对Ethernet以太网
可以设置到256
.// 参数列举
[root@CentOS-Lustre-Client ~]$ lctl list_param *.*.* |grep max_rpcs_in_flight
mdc.bigfs-MDT0000-mdc-ffff9a8f9c67c000.max_rpcs_in_flight
osc.bigfs-OST0001-osc-ffff9a8f9c67c000.max_rpcs_in_flight
osc.bigfs-OST0002-osc-ffff9a8f9c67c000.max_rpcs_in_flight
// 查看参数默认值
[root@CentOS-Lustre-Client ~]$ lctl get_param mdc.bigfs-MDT0000-mdc-ffff9a8f9c67c000.max_rpcs_in_flight
mdc.bigfs-MDT0000-mdc-ffff9a8f9c67c000.max_rpcs_in_flight=8
[root@CentOS-Lustre-Client ~]$ lctl get_param osc.bigfs-OST0001-osc-ffff9a8f9c67c000.max_rpcs_in_flight
osc.bigfs-OST0001-osc-ffff9a8f9c67c000.max_rpcs_in_flight=8
// 测试环境是以太网,可以设置为256
[root@CentOS-Lustre-MDS ~]$ lctl set_param -P mdc.bigfs-MDT0000-mdc-ffff9a8f9c67c000.max_rpcs_in_flight=256
[root@CentOS-Lustre-MDS ~]$ lctl set_param -P osc.bigfs-OST0001-osc-ffff9a8f9c67c000.max_rpcs_in_flight=256
max_dirty_mb
参数解说max_dirty_mb
这个参数是osc
可以所在客户端写入到page cache
的脏数据大小(单位是MB).如果触及到上限,这些写操作会被阻塞直到脏数据flush
到后端服务器,r如果内存足够这个参数设置原则按照4倍的max_rpcs_in_flight
来设置。// 参数列举
[root@CentOS-Lustre-Client ~]$ lctl list_param *.*.* |grep max_dirty_mb
osc.bigfs-OST0001-osc-ffff9a8f9c67c000.max_dirty_mb
osc.bigfs-OST0002-osc-ffff9a8f9c67c000.max_dirty_mb
mdc.bigfs-MDT0000-mdc-ffff9a8f9c67c000.max_dirty_mb
// 查看默认值
[root@CentOS-Lustre-Client ~]$ lctl get_param osc.bigfs-OST0001-osc-ffff9a8f9c67c000.max_dirty_mb
osc.bigfs-OST0001-osc-ffff9a8f9c67c000.max_dirty_mb=101
[root@CentOS-Lustre-Client ~]$ lctl get_param mdc.bigfs-MDT0000-mdc-ffff9a8f9c67c000.max_dirty_mb
mdc.bigfs-MDT0000-mdc-ffff9a8f9c67c000.max_dirty_mb=101
// 设置参数
[root@CentOS-Lustre-MDS ~]$ lctl set_param -P mdc.bigfs-MDT0000-mdc-ffff9a8f9c67c000.max_dirty_mb=1024
[root@CentOS-Lustre-MDS ~]$ lctl set_param -P osc.bigfs-OST0001-osc-ffff9a8f9c67c000.max_dirty_mb=1024
client_adjust_max_dirty
实现max_dirty_mb
自适应.max_dirty_mb
对应的的是cl_dirty_max_pages
这个变量
static inline void client_adjust_max_dirty(struct client_obd *cli)
{
/* */
if (cli->cl_dirty_max_pages <= 0) {
// PAGE_SHIFT定义为12,OSC_MAX_DIRTY_DEFAULT定义为2000
// cl_dirty_max_pages初始化值为 2000*1024*1024/4096
cli->cl_dirty_max_pages =
(OSC_MAX_DIRTY_DEFAULT * 1024 * 1024) >> PAGE_SHIFT;
} else {
// 动态计算单个客户端并发的rpc和,每个rpc能最大发送的pages来计算dirty_max
unsigned long dirty_max = cli->cl_max_rpcs_in_flight *
cli->cl_max_pages_per_rpc;
// dirty_max和当前的cl_dirty_max_pages比较,如果超了取dirty_max
if (dirty_max > cli->cl_dirty_max_pages)
cli->cl_dirty_max_pages = dirty_max;
}
// 如果当前的客户端的脏pages占用内存空间超过了节点的总的pages的八分之一,则设置最大的脏pages
if (cli->cl_dirty_max_pages > cfs_totalram_pages() / 8)
cli->cl_dirty_max_pages = cfs_totalram_pages() / 8;
// 向上取整设置cl_dirty_max_pages
cli->cl_dirty_max_pages = round_up(cli->cl_dirty_max_pages,
1 << (20 - PAGE_SHIFT));
}
max_pages_per_rpc
解说max_pages_per_rpc
定义单个rpc能发送的最大的pages数。// 查看mdc/osc能发送的最大pages数
[root@CentOS-Lustre-Client ~]$ lctl list_param *.*.* |grep max_pages_per_rpc
mdc.bigfs-MDT0000-mdc-ffff9a8f9c67c000.max_pages_per_rpc
osc.bigfs-OST0001-osc-ffff9a8f9c67c000.max_pages_per_rpc
osc.bigfs-OST0002-osc-ffff9a8f9c67c000.max_pages_per_rpc
// mdc默认是1M数据
[root@CentOS-Lustre-Client ~]$ lctl get_param mdc.bigfs-MDT0000-mdc-ffff9a8f9c67c000.max_pages_per_rpc
mdc.bigfs-MDT0000-mdc-ffff9a8f9c67c000.max_pages_per_rpc=256
[root@CentOS-Lustre-Client ~]$ lctl get_param osc.bigfs-OST0001-osc-ffff9a8f9c67c000.max_pages_per_rpc
// osc默认是4M
osc.bigfs-OST0001-osc-ffff9a8f9c67c000.max_pages_per_rpc=1024
[root@CentOS-Lustre-Client ~]$