分布式对象存储之FDFS
1、它是一个开源的分布式文件系统,它对文件进行管理。
功能有:文件存储、文件同步、文件访问(文件的上传下载)等。特别适合以文件为主的在线服务。
2、fastDFS服务端有两个角色:跟踪器(tracker)和存储点(storage)。跟踪器主要做调度监听工作,在访问上器负载均衡作用。
存储节点存储文件,完成文件管理的所有功能。如:存储、同步、提供存取接口。
Tracker Server:跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的 storage server和 group,每个 storage 在启动后会连接 Tracker,告知自己所属 group 等信息,并保持周期性心跳。
Storage Server:存储服务器,主要提供容量和备份服务;以 group 为单位,每个 group 内可以有多台 storage server,数据互为备份。
Client:客户端,上传下载数据的服务器,也就是我们自己的项目所部署在的服务器。

为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。
在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。
3、fastDFS工作特点
tracker和storage可以是多台服务器。可以随时增加或下线而不会影响线上的服务。
为了支持大容量,storage采用了分卷分组的组织方式。存储系统由一个或多个卷组成。卷与卷之间是相互独立的。同一个卷中的文件都是相同的。
4、上传下载流程
上传文件交互过程:
1. client询问tracker上传到的storage,不需要附加参数;
2. tracker返回一台可用的storage;
3. client直接和storage通讯完成文件上传。
下载文件交互过程:
1. client询问tracker下载文件的storage,参数为文件标识(卷名和文件名);
2. tracker返回一台可用的storage;
3. client直接和storage通讯完成文件下载。
5、fastDFS的常用命令
#启动tracker 端口:23000 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start #启动storage 端口:22122 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf start # 监控storage服务状态 /usr/bin/fdfs_monitor /etc/fdfs/client.conf
#停止服务 pkill -9 fdfs killall fdfs_storaged killall fdfs_trackerd 或者 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf stop /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf stop
6.上传文件
/usr/bin/fdfs_upload_file /etc/fdfs/storage.conf test.txt 命令 storage配置文件绝对路径 需要上传的文件 上传完成之后返回上传之后的路径地址 /fastdfs/data/data/01/01/rBLilGHuexGAaMmzAAAH2EiPe7Q42.html fastdfs: 配置文件中的group_name 上传文件(2)(不能用于生产线上使用) fdfs_test storage配置文件的绝对路径 本地文件 实例:fdfs_test /etc/fdfs/storage.conf 1.txt
返回的文件ID由group、存储目录、两级子目录、fileid、文件后缀名(由客户端指定,主要用于区分文件类型)拼接而成。

7.删除上传的文件
/usr/local/bin/fdfs_delete_file 配置文件 需要删除的文件路径 /usr/local/bin/fdfs_delete_file /etc/fdfs/client.conf group3/M00/00/00/wKgAUE5yiVK0VEpSACiWWseqpak.tar.gz
8.下载文件
/usr/local/bin/fdfs_download_file 配置文件 需要下载文件的路径 下载后改的名字 /usr/local/bin/fdfs_download_file /etc/fdfs/client.conf group3/M00/00/00/wKgAUE5yiVK0VEpSACiWWseqpak_big.tar.gz /cairo.tar.gz
9.配置文件
storaged.conf配置文件
# 配置文件是否不生效,false 为生效 disabled=false # 指定此 storage server 所在 组(卷) group_name=group1 # storage server 服务端口 port=23000 # 心跳间隔时间,单位为秒 (这里是指主动向 tracker server 发送心跳) heart_beat_interval=30 # Storage 数据和日志目录地址(根目录必须存在,子目录会自动生成) base_path=/ljzsg/fastdfs/storage # 存放文件时 storage server 支持多个路径。这里配置存放文件的基路径数目,通常只配一个目录。 store_path_count=1 # 逐一配置 store_path_count 个路径,索引号基于 0。 # 如果不配置 store_path0,那它就和 base_path 对应的路径一样。 store_path0=/ljzsg/fastdfs/file # FastDFS 存储文件时,采用了两级目录。这里配置存放文件的目录个数。 # 如果本参数只为 N(如: 256),那么 storage server 在初次运行时,会在 store_path 下自动创建 N * N 个存放文件的子目录。 subdir_count_per_path=256 # tracker_server 的列表 ,会主动连接 tracker_server # 有多个 tracker server 时,每个 tracker server 写一行 tracker_server=file.ljzsg.com:22122# 允许系统同步的时间段 (默认是全天) 。一般用于避免高峰同步产生一些问题而设定。sync_start_time=00:00sync_end_time=23:59 # 访问端口http.server_port=80
启动之后,在base_path路径下会创建data,logs目录 记录storage Server信息
10.设置开机启动
chkconfig fdfs_storaged on 或者 vim /etc/rc.d/rc.local 加入配置项 /etc/init.d/fdfs_storaged start
更多参考:

浙公网安备 33010602011771号