•合并存储是指将多个小文件存储到一个较大的文件(trunk file)中,这个trunk file的文件大小是固定的,比如64MB。
•小于一定size的文件才合并存储到trunk file中,否则在文件系统创建一个独立的文件来存储
•海量小文件带来的挑战:
—文件系统inode面临不够的风险
—文件系统定位文件的效率急剧下降
•合并存储可以有效地解决上面的两个问题,解决海量小文件的存储和访问问题。
•小文件合并存储是业界普遍采用的做法。
配置:
参数都在tracker.conf里
•所有参数均在tracker.conf中配置,storage server启动的时候,从tracker server上获取
•修改了合并存储相关参数后,需要先重启tracker server,然后再重启storage server
•use_trunk_file :是否使用合并存储,缺省关闭
•slot_min_size:为一个小文件分配的最小空间,缺省256字节。即使你上传的文件只有0字节,也会分配这么多空间
•slot_max_size:使用合并存储的最大文件大小,缺省为16MB,超过这个size的文件,不会存储到trunk file中,而是作为一个单独的文件直接存储到文件系统中
•trunk_file_size:trunk file大小,缺省为64MB。不要配置得过大或者过小,最好不要超过256MB。
•trunk_create_file_advance:是否提前创建trunk file,缺省关闭
•trunk_create_file_time_base:提前创建trunk file的时间点,比如可以指定半夜02:00创建
•trunk_create_file_interval:提前创建trunk file的时间间隔,单位为秒。如果一天创建一次,可以设置为86400
•trunk_create_file_space_threshold:创建trunk file需要达到的可用空间大小。如果空闲的trunk file空间大于本参数,则不会提前创建
•trunk_init_check_occupying:trunk server初始化加载空闲blocks时,是否检查对应trunk file,看这个block是否已被占用。缺省为false。启用了本参数,trunk server初始化时间将大大延长。除非必要,请不要打开本选项
•trunk_init_reload_from_binlog:忽略快照文件,只从trunk binlog中加载空闲block。缺省为false。只要当从v3.10以下版本升级到v3.10以上版本时,可能才需要打开本选项。
-------------------以上内容摘自官方群里的PDF-----------------------
自己补充一些说明:
修改完配置文件后,请用killall命令,将tracker和storage进程都结束掉,重新启动它们,并且如果有apache和nginx模块的,请重启一下nginx/apache服务。
合并存储的文件会在data/00/00/ 下从000001 文件开始,合并存储的文件不会产生新的文件,所以根据返回的文件ID,在存储目录下是找不到对应的文件的。合并存储并不影响fastdht排重效果。