FastDFS 主要由三个核心组件组成:Tracker Server、Storage Server 和 Client。
Tracker Server:跟踪服务器,主要做调度工作,起负载均衡的作用。在内存中记录集群中所有存储组和存储服务器的状态信息,是客户端和数据服务器交互的枢纽。相比GFS中的master更为精简,不记录文件索引信息,占用的内存量很少。
Storage Server :存储服务器(又称:存储节点或数据服务器),文件和文件属性(meta data)都保存到存储服务器上。storage server直接利用OS的文件系统调用管理文件。
Client:客户端,作为业务请求的发起方,通过专有接口,使用TCP/IP协议与跟踪器服务器或存储节点进行数据交互。
1、通过复制数据目录文件
如需要单独备份数据文件,此种方法更新好,备份之前,我们需要找到配置文件中配置的存储目录,找到需要复制的数据目录。一般有两种情况:
1)服务器IP相同
若迁移到的服务器,与原来的服务器IP相同,我们直接复制data目录即可。
2)服务器IP不同
如使用了V4的自定义ServerID特性,需要修改storage_ids.conf,将对应关系调整好。如采用IP地址进行标识,需要修改或删除 data目录下的数据文件,
tracker server上需要调整的文件列表:
data/storage_groups_new.dat
data/storage_servers_new.dat
data/storage_sync_timestamp.dat
storage server需要调整的文件列表:
data/.data_init_flag
data/sync/{ip_addr}_{port}.mark
:此类文件,需要将文件名中的IP地址调整过来。
注意:storage的data目录下有一个.打头的隐藏文件也需要修改。若不想调整文件,也可以尝试将文件备好,然后直接删除上面文件,在进行重启服务器,FastDFS会自动重建配置文件。
2、通过FastDFS同步数据
若不需要单独备份数据文件,需们我们可以通过将新服务器和原来的服务器,设置成同一个tracker server 的来进行数据同步。
1)停止新服务器的tracker server和storage server
/usr/local/bin/stop.sh /usr/local/bin/fdfs_storaged /etc/fdfs/storage.conf
/usr/local/bin/stop.sh /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf
2)修改新服务器的/etc/fdfs/storage.conf
将新服务器storage server的配置文件,/etc/fdfs/storage.conf
中的tracker_server配置成旧服务器的地址,storage.conf
文件中,group_name、store_path_count要和旧的conf文件保持一致。
3)启动新服务器的storage server
可以在新服务器的storage.log中查看同步进程,fdfs_monitor /etc/fdfs/storage.conf
,对应的storage的ip_addr字段提示ACTIVE则代表同步完成;这时一个旧服务器的tracker server 对应了两个storage,在客户端上传文件,会同时存储到两个storage。
4)修改/etc/fdfs/storage.conf 配置
同步完成后,将新的storage server 停止,然后将新服务器storage server的配置文件,/etc/fdfs/storage.conf
中的tracker_server配置改回新的服务器地址。
5)将.data_init_flag中sync_src_server设置为空
使用cd进入data目录,然后使用下面命令修改:
vim .data_init_flag sync_src_server= #留空即可
注意:同步过程中,若新服务器的storage.log报错response2!=0
,则需要kill新服务器中的tracker和storage进程,再重新启动。若旧服务器上传文件失败,则需要停启旧服务器的tracker与storage。另外,如文件同步时,配置多个tracker server 时,应该确定是不是需要同步的存储服务器的tracker server是leader,如不是可以改变启动顺序来调整。