Fastdfs使用小记

还记得上次没事搞了下分布式文件系统MFS,简单的把环境搭建了下测试玩玩,就不了了之了。记忆真是个不靠谱的东西,现在已经把MFS忘记的差不多了;笔记与博客是靠谱的,没事过来瞅瞅,才知道我以前搞过这个,这也是我一直坚持写点东西的原因。

原理就不多说了,复制粘贴别人的文章,这也不是我的风格。具体可以看看这两篇文章,已经讲述的很清楚了:

  1. 作者余庆 分布式文件系统FastDFS架构剖析:http://os.51cto.com/art/201205/335144_all.htm
  2. UC 砣哥 分布式文件系统FastDFS原理介绍: http://tech.uc.cn/?p=221

环境:

 tracker:1.2.3.146
 storage:1.2.3.147 && 1.2.3.148

安装与配置

tracker && storage 安装过程如下:

 [root@vianet ~]# tar zxvf fastdfs-read-only.tar.gz
 [root@vianet ~]# cd fastdfs-read-only
 [root@vianet fastdfs-read-only]# ./make.sh
 [root@vianet fastdfs-read-only]# ./make.sh install

配置tracker:

 mkdir -p /home/yuqing/fastdfs
 base_path=/home/yuqing/fastdfs
 /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf start

配置storage:

 mkdir -p /home/yuqing/fastdfs
 mkdir -p /home/yuqing/fastdfs0
 mkdir -p /home/yuqing/fastdfs1
 base_path=/home/yuqing/fastdfs
 store_path0=/home/yuqing/fastdfs0
 store_path1=/home/yuqing/fastdfs1
 tracker_server=1.2.3.146:22122
 /usr/local/bin/fdfs_storaged /etc/fdfs/storage.conf start

安装fdfs的python客户端:

 tar zxvf fdfs_client-py-1.2.6.tar.gz     
 cd fdfs_client-py-1.2.6
 sudo python setup.py install

安装过程可参考官方wiki:https://code.google.com/p/fastdfs/wiki/Setup

简单使用

绝对够简单的测试代码:

#!/usr/bin/env python2.7
#coding: utf-8

from fdfs_client.client import *

client = Fdfs_client('/etc/fdfs/client.conf')
ret = client.upload_by_filename('/data9/main.c')
print ret

上传:

python test_fdfs.py
{'Status': 'Upload successed.',
'Storage IP': '1.2.3.148',
'Remote file_id': 'group1/M00/00/00/eRLWlFR2JY2ABZ3UAAAAUiAmOJU14653.c',
'Group name': 'group1',
'Local file name': '/data9/main.c',
'Uploaded size': '82B'}

通过上述信息,我们可以知道文件被上传到了1.2.3.148,fileid是group1/M00/00/00/eRLWlFR2JY2ABZ3UAAAAUiAmOJU14653.c。可以看到我们的group1里是有两个storage 1.2.3.147 && 1.2.3.148,因此文件也会被同步到1.2.3.147。

group1 :组名
M00:虚拟磁盘路径,这里对应的是/home/yuqing/fastdfs0/data
00/00:数据两级目录,fastdfs自己建立的
eRLWlFR2JY2ABZ3UAAAAUiAmOJU14653.c:文件名,由服务器端生成

因此不难算出文件在1.2.3.147 && 1.2.3.148上的实际路径应该是

/home/yuqing/fastdfs0/data/00/00/eRLWlFR2JY2ABZ3UAAAAUiAmOJU14653.c

接着登录服务器验证下,文件是否已经存在:

1.2.3.147:
[root@vianet ~]# ll /home/yuqing/fastdfs0/data/00/00/eRLWlFR2JY2ABZ3UAAAAUiAmOJU14653.c
-rw-r--r-- 1 root root 82 Nov 27 03:10 /home/yuqing/fastdfs0/data/00/00/eRLWlFR2JY2ABZ3UAAAAUiAmOJU14653.c

1.2.3.148:
[root@004 ~]# ll /home/yuqing/fastdfs0/data/00/00/eRLWlFR2JY2ABZ3UAAAAUiAmOJU14653.c
-rw-r--r-- 1 root root 82 Nov 27 03:10 /home/yuqing/fastdfs0/data/00/00/eRLWlFR2JY2ABZ3UAAAAUiAmOJU14653.c

上传文件后请将fileid保存下来,根据这个你可以直接从storage上找到文件或者问下tracker他会返回一个可供下载的地址给你。


自言自语:

各种忙了,以后估计会很少写博客了,且写且珍惜吧。