分布式文件系统FastDFS安装与配置(单机版)

简介

FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。

存储节点存储文件,完成文件管理的所有功能:就是这样的存储、同步和提供存取接口,FastDFS同时对文件的metadata进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key valuepair)方式表示,如:width=1024,其中的key为width,value为1024。文件metadata是文件属性列表,可以包含多个键值对。

跟踪器和存储节点都可以由一台或多台服务器构成。跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务。其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。

为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。

在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。

当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。

FastDFS中的文件标识分为两个部分:卷名和文件名,二者缺一不可。

上传交互过程

1. client询问tracker上传到的storage,不需要附加参数;

2. tracker返回一台可用的storage;

3. client直接和storage通讯完成文件上传。

FastDFS file download

下载交互过程

1. client询问tracker下载文件的storage,参数为文件标识(卷名和文件名);

2. tracker返回一台可用的storage;

3. client直接和storage通讯完成文件下载。

需要说明的是,client为使用FastDFS服务的调用方,client也应该是一台服务器,它对tracker和storage的调用均为服务器间的调用。

下面开始部署配置,所需安装包如下:
fastdfs-nginx-module_v1.16.tar.gz   
FastDFS_v5.08.tar.gz      
libfastcommon-master.zip

一、安装libfastcommon

FastDFS 5.08版本不再依赖libevent,而依赖于libfastcommon,因此需要先安装libfastcommon。
软件包下载地址:https://github.com/happyfish100/libfastcommon

# unzip libfastcommon-master.zip
# cd libfastcommon-master
# ./make.sh
# ./make.sh install

libfastcommon.so 默认安装到了/usr/lib64/libfastcommon.so,而FastDFS主程序设置的lib目录是/usr/local/lib,因此需要设置软链接(如果已存在,可以忽略)。

# ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
# ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so

二、安装FastDFS

软件包下载地址:
1、https://sourceforge.net/projects/fastdfs/files/
2、https://code.google.com/archive/p/fastdfs/downloads
3、https://github.com/happyfish100/fastdfs

# tar zxf FastDFS_v5.05.tar.gz
# cd FastDFS
# ./make.sh
# ./make.sh install

安装完成后可以看到/etc/fdfs目录下生成了3个文件:

[root@localhost FastDFS]# cd /etc/fdfs/
[root@localhost fdfs]# ll
total 20
-rw-r--r--. 1 root root 1461 Sep  7 07:45 client.conf.sample
-rw-r--r--. 1 root root 7927 Sep  7 07:45 storage.conf.sample
-rw-r--r--. 1 root root 7200 Sep  7 07:45 tracker.conf.sample
[root@localhost fdfs]# 

三、配置tracker节点

cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
vim /etc/fdfs/tracker.conf
# 修改的内容如下:
disabled=false              # 启用配置文件
port=22122                  # tracker服务器端口(默认22122)
base_path=/fastdfs/tracker  # 存储日志和数据的根目录
创建目录
mkdir -p /fastdfs/tracker
启动tracker服务
[root@localhost /]# /etc/init.d/fdfs_trackerd start
Starting FastDFS tracker server: 
初次启动tracker服务后会在配置的目录下生成logs,data文件目录
[root@localhost /]# cd /fastdfs/tracker/
[root@localhost tracker]# ll
total 8
drwxr-xr-x. 2 root root 4096 Sep  7 07:59 data
drwxr-xr-x. 2 root root 4096 Sep  7 07:59 logs
验证查看tracker是否启动成功
[root@localhost tracker]# ps -ef|grep tracker
root       3160      1  0 07:59 ?        00:00:00 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
root       3186   2475  0 08:00 pts/1    00:00:00 grep tracker

四、配置storage节点

[root@localhost tracker]# cd /etc/fdfs/
[root@localhost fdfs]# ll
total 28
-rw-r--r--. 1 root root 1461 Sep  7 07:45 client.conf.sample
-rw-r--r--. 1 root root 7927 Sep  7 07:45 storage.conf.sample
-rw-r--r--. 1 root root 7196 Sep  7 07:54 tracker.conf
-rw-r--r--. 1 root root 7200 Sep  7 07:45 tracker.conf.sample
[root@localhost fdfs]# cp storage.conf.sample ./storage.conf
# 修改的内容如下:
disabled=false                      # 启用配置文件
port=23000                          # storage服务端口
group_name=group1                   # 组名(第一组为group1,第二组为group2,依次类推...)
base_path=/fastdfs/storage          # 数据和日志文件存储根目录
store_path0=/fastdfs/storage        # 第一个存储目录,第二个存储目录起名为:store_path1=xxx,其它存储目录名依次类推...
store_path_count=1                  # 存储路径个数,需要和store_path个数匹配
tracker_server=192.168.184.132:22122  # tracker服务器IP和端口
http.server_port=8888               # http访问文件的端口
创建数据目录
 mkdir -p /fastdfs/storage
启动storage服务
/etc/init.d/fdfs_storaged start
初次启动storage服务会生成data和logs目录
[root@localhost fdfs]# cd /fastdfs/storage/
[root@localhost storage]# ll
total 8
drwxr-xr-x. 259 root root 4096 Sep  7 08:08 data
drwxr-xr-x.   2 root root 4096 Sep  7 08:08 logs
生成的data目录内容
[root@localhost storage]# ll
total 8
drwxr-xr-x. 259 root root 4096 Sep  7 08:08 data
drwxr-xr-x.   2 root root 4096 Sep  7 08:08 logs
[root@localhost storage]# cd data/
[root@localhost data]# ls
00  06  0C  12  18  1E  24  2A  30  36  3C  42  48  4E  54  5A  60  66  6C  72  78  7E  84  8A  90  96  9C  A2  A8  AE  B4  BA  C0  C6  CC  D2  D8  DE  E4  EA  F0  F6  FC                 sync
01  07  0D  13  19  1F  25  2B  31  37  3D  43  49  4F  55  5B  61  67  6D  73  79  7F  85  8B  91  97  9D  A3  A9  AF  B5  BB  C1  C7  CD  D3  D9  DF  E5  EB  F1  F7  FD
02  08  0E  14  1A  20  26  2C  32  38  3E  44  4A  50  56  5C  62  68  6E  74  7A  80  86  8C  92  98  9E  A4  AA  B0  B6  BC  C2  C8  CE  D4  DA  E0  E6  EC  F2  F8  fdfs_storaged.pid
03  09  0F  15  1B  21  27  2D  33  39  3F  45  4B  51  57  5D  63  69  6F  75  7B  81  87  8D  93  99  9F  A5  AB  B1  B7  BD  C3  C9  CF  D5  DB  E1  E7  ED  F3  F9  FE
04  0A  10  16  1C  22  28  2E  34  3A  40  46  4C  52  58  5E  64  6A  70  76  7C  82  88  8E  94  9A  A0  A6  AC  B2  B8  BE  C4  CA  D0  D6  DC  E2  E8  EE  F4  FA  FF
05  0B  11  17  1D  23  29  2F  35  3B  41  47  4D  53  59  5F  65  6B  71  77  7D  83  89  8F  95  9B  A1  A7  AD  B3  B9  BF  C5  CB  D1  D7  DD  E3  E9  EF  F5  FB  storage_stat.dat
[root@localhost data]# 

验证是否启动成功

[root@localhost data]# ps -ef|grep storage
root       3220      1  1 08:08 ?        00:00:02 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf
root       3251   2475  0 08:12 pts/1    00:00:00 grep storage

确认启动成功后,可以运行 fdfs_monitor 查看 storage服务器是否已经登记到 tracker服务器。
# /usr/bin/fdfs_monitor /etc/fdfs/storage.conf
[root@localhost data]# /usr/bin/fdfs_monitor /etc/fdfs/storage.conf
[2017-09-07 08:14:32] DEBUG - base_path=/fastdfs/storage, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0

server_count=1, server_index=0

tracker server is 192.168.184.132:22122

group count: 1

Group 1:
group name = group1
disk total space = 18916 MB
disk free space = 14929 MB
trunk free space = 0 MB
storage server count = 1
active server count = 1
storage server port = 23000
storage HTTP port = 8888
store path count = 1
subdir count per path = 256
current write server index = 0
current trunk file id = 0

	Storage 1:
		id = 192.168.184.132
		ip_addr = 192.168.184.132  ACTIVE
		http domain = 
		version = 5.08
		join time = 2017-09-07 08:08:50
		up time = 2017-09-07 08:08:50
		total storage = 18916 MB
		free storage = 14929 MB
		upload priority = 10
		store_path_count = 1
		subdir_count_per_path = 256
		storage_port = 23000
		storage_http_port = 8888
		current_write_path = 0
		source storage id = 
		if_trunk_server = 0
		connection.alloc_count = 256
		connection.current_count = 0
		connection.max_count = 0
		total_upload_count = 0
		success_upload_count = 0
		total_append_count = 0
		success_append_count = 0
		total_modify_count = 0
		success_modify_count = 0
		total_truncate_count = 0
		success_truncate_count = 0
		total_set_meta_count = 0
		success_set_meta_count = 0
		total_delete_count = 0
		success_delete_count = 0
		total_download_count = 0
		success_download_count = 0
		total_get_meta_count = 0
		success_get_meta_count = 0
		total_create_link_count = 0
		success_create_link_count = 0
		total_delete_link_count = 0
		success_delete_link_count = 0
		total_upload_bytes = 0
		success_upload_bytes = 0
		total_append_bytes = 0
		success_append_bytes = 0
		total_modify_bytes = 0
		success_modify_bytes = 0
		stotal_download_bytes = 0
		success_download_bytes = 0
		total_sync_in_bytes = 0
		success_sync_in_bytes = 0
		total_sync_out_bytes = 0
		success_sync_out_bytes = 0
		total_file_open_count = 0
		success_file_open_count = 0
		total_file_read_count = 0
		success_file_read_count = 0
		total_file_write_count = 0
		success_file_write_count = 0
		last_heart_beat_time = 2017-09-07 08:14:29
		last_source_update = 1969-12-31 16:00:00
		last_sync_update = 1969-12-31 16:00:00
		last_synced_timestamp = 1969-12-31 16:00:00 

看到“192.168.184.132  ACTIVE”即可确认 storage 运行正常。

目前tracker,storage服务都正常启动运行

五 上传测试文件测试

1修改client.conf文件

cp client.conf.sample ./client.conf
vi client.conf
base_path=/fastdfs/tracker   #存放数据和日志目录
tracker_server=192.168.1.200:22122 #  tracker服务地址
新建个test.txt文件,
vi test.txt 
内容随意写  hello world

执行上传文件

/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/test.txt
[root@localhost fdfs]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/tools/test.txt 
group1/M00/00/00/wKi4hFmxZJ6AYqyCAAAADFmwwCQ352.txt

此时返回了一个文件信息,说明上传成功

猜你喜欢

转载自my.oschina.net/u/3164861/blog/1531314
今日推荐