使用场景
该实践主要应用在使用 Turbo 文件系统下,如何更好的进行目录结构和文件数的分配,以实现更高的性能和更低的延时。
背景介绍
客户端访问文件系统时,都会基于 VFS layer 进行操作,VFS 层在处理多进程同时读写相同文件时,会串行的进行锁的授予和召回。那么当某个客户端的 IO 在某一层超大目录下时,因 VFS 串行的锁操作行为,会导致 IO 延时变大。
Turbo 系统为强一致的文件系统,在实现任意客户端读写任意时刻一致的强大功能下,也意味着所有客户端,在执行 IO 操作,都会涉及到后端分布式锁的授予或召回。Turbo 后端基于分布式的元数据服务能并发地处理锁的请求,但为保证良好的延时表现,我们建议您按照本文推荐的方式进行目录和文件数的管理。
最佳实践建议
当您的业务不涉及频繁删除/修改/新增的情况下,如以读为主,建议单目录下子目录和文件数控制在10个-100万个。
当您的业务涉及频繁删除/修改/新增的情况下,建议单目录下子目录和文件数控制在10个-1万个。
常见的目录分级方案
哈希码串区段分类:一个64个字符的哈希码串,头2个字符形成一级子目录,次2个字符形成二级子目录,二级子目录下放文件。哈希函数统计特性良好时,文件可以比较均匀地分布到这65536个目录。文件系统文件规模为6亿时,每一个目录平均1万个文件;文件系统文件规模为12亿时,每一个目录平均2万个文件。
时间分类:年月日构成第一级子目录,小时构成第二级子目录,分钟构成第三级子目录(可以没有)。
本页内容是否解决了您的问题?