本文主要是介绍FastDFS FileID与Trunk File信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Docker 安装 FastDfs:
https://registry.hub.docker.com/r/ygqygq2/fastdfs-nginx
https://github.com/ygqygq2/fastdfs-nginx
docker network create fastdfs-net
docker run -dit --network=fastdfs-net --name tracker -v /var/fdfs/tracker:/var/fdfs ygqygq2/fastdfs-nginx:latest tracker
docker run -dit --network=fastdfs-net --name storage0 -e TRACKER_SERVER=tracker:22122 -v /var/fdfs/storage0:/var/fdfs ygqygq2/fastdfs-nginx:latest storage
docker run -dit --network=fastdfs-net --name storage1 -e TRACKER_SERVER=tracker:22122 -v /var/fdfs/storage1:/var/fdfs ygqygq2/fastdfs-nginx:latest storage
docker run -dit --net=bridge -p 22122:22122 --name tracker -v /var/fdfs/tracker:/var/fdfs ygqygq2/fastdfs-nginx:latest tracker
docker run -dit --net=bridge -p 23000:23000 -p 8080:8080 --name storage0 -e TRACKER_SERVER=172.23.101.154:22122 -v /var/fdfs/storage0:/var/fdfs ygqygq2/fastdfs-nginx:latest storage
查了版本
$fdfs_trackerd --help
FastDFS server v6.06
合并存储:
FastDFS提供的合并存储功能,默认创建的大文件为64MB,然后在该大文件中存储很多小文件。大文件中容纳一个小文件的空间称为一个Slot,规定Slot最小值为256字节,最大为16MB,也就是小于256字节的文件也需要占用256字节,超过16MB的文件不会合并存储而是创建独立的文件。
1、合并存储配置:
FastDFS提供了合并存储功能的实现,所有的配置都在tracker.conf文件之中,具体摘录如下:
trunk功能启动与配置:通过tracker.conf文件启动与配置,个配置项如下:
use_trunk_file = true #是否启用trunk存储, 默认:false不开启,true是开启
slot_min_size = 256 #单位:bytes,trunk文件最小分配单元,小于this的也会花费256bytes存储
slot_max_size = 1MB #trunk内部存储的最大文件,超过该值会被独立存储,默认16MB
trunk_file_size = 64MB #trunk文件大小
trunk_create_file_advance = false #是否预先创建trunk文件
trunk_create_file_time_base = 02:00 #预先创建trunk文件的基准时间
trunk_create_file_interval = 86400 #预先创建trunk文件的时间间隔
trunk_create_file_space_threshold = 20G #trunk创建文件的最大空闲空间
trunk_init_check_occupying = false #启动时是否检查每个空闲空间列表项已经被使用
trunk_init_reload_from_binlog = false #是否纯粹从trunk-binlog重建空闲空间列表
trunk_compress_binlog_min_interval = 0 #对trunk-binlog进行压缩的时间间隔
2、合并存储文件命名与文件结构
向FastDFS上传文件成功时,服务器返回该文件的存取ID叫做fileid,当没有启动合并存储时该fileid和磁盘上实际存储的文件一一对应,当采用合并存储时就不再一一对应而是多个fileid对应的文件被存储成一个大文件。
注:下面将采用合并存储后的大文件统称为Trunk文件,没有合并存储的文件统称为源文件;
请注意区分三个概念:
1)Trunk文件:storage服务器磁盘上存储的实际文件,默认大小为64MB
2)合并存储文件的FileId:表示服务器启用合并存储后,每次上传返回给客户端的FileId,注意此时该FileId与磁盘上的文件没有一一对应关系;
3)没有合并存储的FileId:表示服务器未启用合并存储时,Upload时返回的FileID
Trunk文件文件名格式:fdfs_storage1/data/00/00/000001 文件名从1开始递增,类型为int;
fileid 采用 Base64 url编码。
1、在启动合并存储时服务返回给客户端的fileid也会有所变化
1)没有合并存储时fileid:
文件名(不含后缀名)采用Base64编码,包含如下5个字段(每个字段均为4字节整数):
group1/M00/00/00/rBEAAWCHwpKAG_IaAAE2xZYv3yo399.tar.gz
这个文件名中,除了.tar.gz 为文件后缀,CmQPRlP0T4-AA9_ECDsoXi21HR0 这部分是一个base64编码缓冲区,组成如下:
storage_id(ip的数值型)源storage server ID或IP地址
timestamp(文件创建时间戳)
file_size(若原始值为32位则前面加入一个随机值填充,最终为64位)
crc32(文件内容的检验码)
随机数 (引入随机数的目的是防止生成重名文件)
rBEAAWCHwpKAG_IaAAE2xZYv3yo399
| 4bytes | 4bytes | 8bytes |4byt
这篇关于FastDFS FileID与Trunk File信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!