最近有人在FastDFS QQ技术交流群里爆料,说网上有人吐槽FastDFS是最难配置的一款开源软件。我当时在群里反驳说FastDFS自带配置文件示例,绝大多数配置项使用默认值即可,实际需要设置的配置项就十个左右。刚才统计了一下最新的配置文件示例,tracker.conf中有52个配置项,storage.conf中有59个配置项。嗯,居然有这么多,把我也吓了一跳。
众多配置项的好处主要体现在功能定制化和系统调优灵活性。如果你对某些系统调优和功能特性有需要,比如更好的运行性能、小文件合并存储、日志轮转和定期清除、binlog自动压缩和解压等等,可能就不会嫌弃配置项繁多了。
先抛开FastDFS配置这个梗,FastDFS一直在努力提高运维友好性。日志记录如何详尽周全且不冗余绝对营养之类的,属于软件开发的基本功,这里就不多说了。列举FastDFS几个充分体现运维友好性的功能和特性如下:
1. 更换单盘后自动恢复单盘数据
2. storage server支持动态增加存储路径(通常是增加磁盘)
3. 日志轮转和定期清除
4. binlog自动压缩和解压(V6.01支持的功能,已完成开发)
本文将对1、2这两个和磁盘有关的功能特性进行介绍。
先说1这个特性,更换单盘后自动恢复该盘上的数据,V2.08就实现了这个功能。
判断一个单盘(FastDFS为存储路径store_path)是否需要恢复数据的逻辑为:检测$store_path/data/目录下的两个子目录00/00/ 和 FF/FF/(每级子目录采用默认256个的情况下)是否存在,如果其中一个不存在,则自动建立所需子目录,并启动单盘数据自动恢复。
单盘数据恢复逻辑:
1. 从tracker server获取一台可用的storage server作为源服务器;
2. 从源storage server拉取该存储路径(按store_path顺序对应)的binlog,并存储到本地;
3. 根据本地binlog从源storage server复制文件到$store_path/data/下对应目录;
4. 单盘数据恢复完成后,才能对外提供服务。
我们再看2这个特性,storage server支持动态增加存储路径,这个特性应该是V3.05开始支持的。这个功能本身并不复杂,但有一点需要大家注意一下:一个group内的所有storage server的存储路径数量必须一致,配置不一致的storage server将无法加入集群。
群里偶尔有人反映说storage server增加磁盘后日志报错,这是因为同一group内的storage server的存储数量不同导致的。用fdfs_monitor可以查看集群中的服务器列表和状态,查看存储路径数目是否一致的命令行示例:
fdfs_monitor /etc/fdfs/client.conf list group1 | grep store | grep path | grep count
输出的第一个store path count为group接受的存储路径数,其余为各个storage server的存储路径数。当该group下所有storage server的存储路径数相同,group才会接受最新的存储路径数。
如果出现废弃的storage server而导致存储路径数量不一致,需要将其从集群中删除,命令行示例:
fdfs_monitor /etc/fdfs/client.conf delete <group> <id or IP>
为了防止误操作,不允许删除状态为ACTIVE的storage server。
删除后该storage server的状态为DELETED,如果看着不爽,重启tracker server后该storage server将从集群中消失。
查看一个group内storage server的IP地址及状态列表:
fdfs_monitor /etc/fdfs/client.conf list group1 | grep ip_addr
查看一个group内storage server的id列表(storage采用server id特性的情况下使用):
fdfs_monitor /etc/fdfs/client.conf list group1 | grep '^\s*id'
注:以上命令行示例中的group1为需要查看的group(存储分组)名称,修改为你要查看的group名称即可。
下一篇文章将介绍日志轮转和定期清除、binlog自动压缩和解压这两个功能,敬请期待。
本文分享自微信公众号 - FastDFS分享与交流(fastdfs100)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。