最近发现不少朋友,对cephfs的使用方式存在误区。很多朋友线上连接数十几万,IOPS压力巨大,依然在跑着单mds。直接导致单mds session耗尽,mds进程down。或者扛不住那么大的IOPS,性能很慢。要知道cephfs的性能是随着mds的数量增加线性增长的,mds越多cephfs性能越好。灵活的让多个mds分担IOPS,连接压力是最佳选择。但是多mds如果配置不好,会导致IO夯住,这就让cephfs更冷门了。我和朋友tiger认为有必要帮助下社区。下面进入正题。
多mds的坑在哪?
cephfs多mds默认是动态负载均衡的,为了负载文件系统请求到多个mds。cephfs会根据每个mds计算一个热点值,热点高的mds缓存中的目录会往热点低的mds迁移,缓存中的目录在迁移的过程中是被锁定的,应用层的IO不能访问正在迁移的目录或文件,会导致部分IO访问中断几秒。于是用户就感觉卡了。
我们怎么才能让多mds之间缓存目录不迁移,或者尽量少的数据迁移呢?有2种方案,两种方案是独立使用的。
一,使用静态负载均衡,我们把业务绑定到mds,每次来业务我们根据mds性能监控报表,把业务绑定到负载低的mds上去,也叫手动负载均衡。操作过程如下:
1,把业务的根目录pin到mds上。