分布式文件系统——fastDFS
分布式文件系统的定义
分布式文件系统(Distributed File System,DFS)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点(可简单的理解为一台计算机)相连;或是若干不同的逻辑磁盘分区或卷标组合在一起而形成的完整的有层次的文件系统。可简单的理解为文件可以同时存储在不同的服务器上。
1 fastDFS概述:
fastDFS 是以C语言开发的一项开源轻量级分布式文件系统,他对文件进行管理,主要功能有:文件存储,文件同步,文件访问(文件上传/下载),特别适合以文件为载体的在线服务,如图片网站,视频网站等。
FastDFS由跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client)构成。
1.1 Tracker server
追踪服务器负责接收客户端的请求,选择合适的组合storage server ,tracker server 与 storage server之间也会用心跳机制来检测对方是否活着。
Tracker需要管理的信息也都放在内存中,并且里面所有的Tracker都是对等的(每个节点地位相等),很容易扩展
客户端访问集群的时候会随机分配一个Tracker来和客户端交互。
1.2 Storage server
实际存储数据,分成若干个组(group),实际traker就是管理的storage中的组,而组内机器中则存储数据,group可以隔离不同应用的数据,不同的应用的数据放在不同group里面,
1.3 Client
主要是上传下载数据的服务器。
1.4 fastDFS组群
group内可进行垂直拓展(数据备份),组群文件容量为组群中的服务器容量最小值;group之间可进行水平拓展(容量拓展),总的容量为各个组群的文件容量之和。
2 文件的上传与下载
文件的上传与下载都是通过tracker server中介进行的,可简单的理解为:client向track server问询可用的存储节点,然后tracker查询管理的可用节点,将IP端口号等信息返回给client。
3 fastDFS安装
(1)安装地址github源文件
(2)下载并解压 libfastcommon-master.zip 库
./make.sh
./make.sh install
(3) 下载并解压fastdfs-master.zip
同上面的步骤进行安装
(4)检测安装是否成功
./fdfs_test
出现以下界面即为安装成功
4 启动fastDFS
4.1 修改fastDFS配置文件
为了防止后续修改配置文件出错,备份/etc/fdfs 下的三个配置文件。
cp tracker.conf.sample tracker.conf
cp storage.conf.sample storage.con
cp client.conf.sample client.conf
修改三个备份后的配置文件,以下是一些常用的配置:
tracker.conf
bind_addr = 主机IP
port = 端口 (可使用netstat -apn |grep "端口号"查看端口是否被占用)
base_path = log目录
client.conf
base_path = log目录
tracker_server = tracker服务器IP
storage.conf
group_name = 组名,存储节点可以分组
bind_addr = 存储服务器IP
base_path = log目录
store_path_count = 存储目录个数
store_path0 = 存储目录
tracker_server = tracker服务器IP及端口
4.2 启动tracker、client、storage
fdfs_trackerd /etc/fdfs/tracker.con
fdfs_storaged /etc/fdfs/storage.conf
fdfs_monitor /etc/fdfs/client.conf
查看后台的运行的进程,若出现fdfs_trackerd /etc/fdfs/tracker.conf和fdfs_storaged /etc/fdfs/storage.conf两条command相关的进程则表明运行成功,结果图下图所示:
4.3 文件上传操作
fdfs_upload_file /etc/fdfs/client.conf examples.desktop #examples.desktop是要上传的文件
成功后返回:group1/M00/00/00/wKhvgl7U4rqAZC37AAAjFBk-1FU4291297
其中wKhvgl7U4rqAZC37AAAjFBk-1FU4291297是编码算法返回的文件代码
之后我们进入前面前面storage.conf配置文件中指定的文件存储路径:
可发现相同的字符串,它表示的就是我们前面上传的文件。