`
thrillerzw
  • 浏览: 146221 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

fastdfs

 
阅读更多

一、简介

fastdfs是一个开源的,高性能的的分布式文件系统,他主要的功能包括:文件存储,同步和访问,设计基于高可用和负载均衡,fastfd非常适用于基于文件服务的站点,例如图片分享和视频分享网站
fastfds有两个角色:跟踪服务和存储服务,跟踪服务控制,调度文件以负载均衡的方式访问;存储服务包括:文件存储,文件同步,提供文件访问接口,同时以key value的方式管理文件的元数据
跟踪和存储服务可以由1台或者多台服务器组成,同时可以动态的添加,删除跟踪和存储服务而不会对在线的服务产生影响,在集群中,tracker服务是对等的
存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。

 

可以实现图片分布式存储,实现冗余,方便扩容。

 

 二、最简单击部署、java客户端访问

部署结构:1个tracker、1个storage(1组),tracker、storage在同一台centos上,默认base_path,tracker、storage公用一个。如果其他服务器要加storage,只需要配置启动storage就行。
1、安装libevent
#卸载系统自带libevent,自带版本过低,安装fastdfs会出错
   rpm -qa|grep libevent
#  或者
  yum remove libevent*
#下载安装libevent
wget http://cloud.github.com/downloads/libevent/libevent/libevent-2.0.19-stable.tar.gz;
tar -zxvf libevent-2.0.19-stable.tar.gz;
cd libevent-2.0.19-stable;
#make clean;
./configure --prefix=/usr/local/libevent
make && make install;
#为libevent创建软链接到/lib库下,64位系统对应/lib64
ln -s /usr/local/libevent/lib/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.5
ln -s /usr/local/libevent/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5

2、安装fastdfs
#自行下载 4.06  http://sourceforge.net/projects/fastdfs/files/
wget http://fastdfs.googlecode.com/files/FastDFS_v4.06.tar.gz
tar -zxvf FastDFS_v4.06.tar.gz
cd FastDFS
#由于定义/usr/local/fastdfs为fastdfs安装目录,所以需要修改make.sh
vim make.sh
#/etc/fdfs 全部替换为 /usr/local/fastdfs/conf
%s/\/etc\/fdfs/\/usr\/local\/fastdfs\/conf/g
#TARGET_PREFIX=/usr/local 修改为 /usr/local/fastdfs
sed -i 's:TARGET_PREFIX=.*:TARGET_PREFIX=/usr/local/fastdfs:g' make.sh
#安装
./make.sh C_INCLUDE_PATH=/usr/local/libevent/include LIBRARY_PATH=/usr/local/libevent/lib
./make.sh install
#修改配置
tracker.conf  :bind_addr=192.168.211.230
storage.conf  :tracker_server=192.168.211.230:22122  #注意不要给bind_addr配置ip
client.conf: tracker_server=192.168.211.230:22122     #测试上传时候使用
#创建base_path
mkdir -p /home/yuqing/fastdfs
#启动tracker、storage
./fdfs_trackerd ../conf/tracker.conf
./fdfs_storaged ../conf/storage.conf
#重启
./restart.sh fdfs_trackerd ../conf/tracker.conf
./restart.sh fdfs_storaged ../conf/storage.conf
#停止
./stop.sh fdfs_trackerd ../conf/tracker.conf
./stop.sh fdfs_storaged ../conf/storage.conf
#查看端口是否正常
netstat -nat |grep 22122
netstat -nat |grep 23000
#测试
[root@Master bin]# netstat -nat |grep 22122
tcp        0      0 192.168.211.230:22122       0.0.0.0:*                   LISTEN
[root@Master bin]# netstat -nat |grep 23000
tcp        0      0 0.0.0.0:23000               0.0.0.0:*                   LISTEN     
[root@Master bin]# ./fdfs_monitor ../conf/storage.conf
[2014-02-15 09:55:38] DEBUG - base_path=/home/yuqing/fastdfs, 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.211.230:22122

group count: 1

Group 1:
group name = group1
disk total space = 7315 MB
disk free space = 2733 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.211.230
                ip_addr = 192.168.211.230  ACTIVE
                http domain =
                version = 4.06
                join time = 2014-02-15 09:54:47
                up time = 2014-02-15 09:54:47
                total storage = 7315 MB
                free storage = 2733 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
                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 = 2014-02-15 09:55:22
                last_source_update = 1970-01-01 08:00:00
                last_sync_update = 1970-01-01 08:00:00
                last_synced_timestamp = 1970-01-01 08:00:00
               
           
[root@Master conf]# /usr/local/fastdfs/bin/fdfs_test /usr/local/fastdfs/conf/client.conf upload /root/test/1.jpg
This is FastDFS client test program v4.06

Copyright (C) 2008, Happy Fish / YuQing

FastDFS may be copied only under the terms of the GNU General
Public License V3, which may be found in the FastDFS source kit.
Please visit the FastDFS Home Page http://www.csource.org/
for more detail.

[2014-02-15 10:33:42] DEBUG - base_path=/home/yuqing/fastdfs, 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

tracker_query_storage_store_list_without_group:
        server 1. group_name=, ip_addr=192.168.211.230, port=23000

group_name=group1, ip_addr=192.168.211.230, port=23000
storage_upload_by_filename
group_name=group1, remote_filename=M00/00/00/wKjT5lL-0gaAdOjxAAA2MkBlNFg473.jpg
source ip address: 192.168.211.230
file timestamp=2014-02-15 10:33:42
file size=13874
file crc32=1080374360
file url: http://192.168.211.230:8080/group1/M00/00/00/wKjT5lL-0gaAdOjxAAA2MkBlNFg473.jpg
storage_upload_slave_by_filename
group_name=group1, remote_filename=M00/00/00/wKjT5lL-0gaAdOjxAAA2MkBlNFg473_big.jpg
source ip address: 192.168.211.230
file timestamp=2014-02-15 10:33:43
file size=13874
file crc32=1080374360
file url: http://192.168.211.230:8080/group1/M00/00/00/wKjT5lL-0gaAdOjxAAA2MkBlNFg473_big.jpg

3安装nginx + fastdfs-nginx-module:
#下载并解压
 wget https://fastdfs.googlecode.com/files/fastdfs-nginx-module_v1.15.tar.gz
 wget http://nginx.org/download/nginx-1.4.2.tar.gz
 wget http://zlib.net/zlib-1.2.8.tar.gz
 wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.32/pcre-8.32.tar.gz
 
#其它依赖库,模块 都需要指定解压后的源码路径,才能编译到nginx里面
./configure --prefix=/usr/local/nginx --with-pcre=/usr/local/softpackage/pcre-8.32  --with-zlib=/usr/local/softpackage/zlib-1.2.8 --add-module=/usr/local/softpackage/fastdfs-nginx-module/src
make && make install 
#配置
[root@Master sbin]# cp /usr/local/softpackage/fastdfs-nginx-module/src/mod_fastdfs.conf /usr/local/fastdfs/conf/mod_fastdfs.conf
修改ip:tracker_server=192.168.211.230:22122  
location /M00 {      
                root /home/yuqing/fastdfs/data;
                ngx_fastdfs_module;
}
#启动nginx
./nginx
#测试
浏览器访问:http://192.168.211.230/M00/00/00/wKjT5lL-0gaAdOjxAAA2MkBlNFg473_big.jpg


4、java客户端:https://fastdfs.googlecode.com/files/fastdfs_client_v1.24.jar

public class FastdfsService {

	private static String clientFileName = "fast-client.conf";

	static {
		String classPath = null;
		try {
			classPath = new File(FastdfsService.class.getResource("/").getFile()).getCanonicalPath();
			String configFilePath = classPath + File.separator + clientFileName;
			ClientGlobal.init(configFilePath);
			//ClientGlobal.setG_tracker_group(tracker_group).setG_tracker_http_port("192.168.223.106 ");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * @Description: uploadFile服务
	 *
	 * @param bytes 上传文件字节流
	 * @param fileExtName (默认可以null)上传文件的后缀名,如jpg
	 * @return String
	 * @create 2013-5-3 下午3:31:08
	 */
	public static String uploadFile(byte[] bytes, String fileExtName) {
		long startTime = 0l;
		String[] results = null;
		String accessPath = null;
		StorageClient storageClient = null;
		try {
			TrackerClient trackerClient = new TrackerClient();
			TrackerServer trackerServer = trackerClient.getConnection();
			storageClient = new StorageClient(trackerServer, null);
			startTime = System.currentTimeMillis();
			results = storageClient.upload_file(bytes, fileExtName, null);
			if (results == null) {
				return accessPath;
			}
			accessPath = results[0] + "/" + results[1];//0groupname,1filename
		} catch (IOException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return accessPath;
	}

	/**
	 * @Description: 通过文件路径转化文件到字节流
	 *
	 * @param path 文件路径
	 * @return byte[]字节
	 */
	public static byte[] getFileBytes(String path) {
		FileInputStream fis = null;
		byte[] file_buff = null;
		try {
			File file = new File(path);
			fis = new FileInputStream(file);
			if (fis != null) {
				int len;
				len = fis.available();
				file_buff = new byte[len];
				fis.read(file_buff);
			}
		} catch (FileNotFoundException fe) {
			fe.printStackTrace();
		} catch (IOException ie) {
			ie.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return file_buff;
	}

	/**
	 * @Description: 通过文件对象转化文件到字节流
	 *
	 * @param file 文件对象
	 * @return byte[]字节
	 */
	public static byte[] getFileBytes(File file) {
		FileInputStream fis = null;
		byte[] file_buff = null;
		try {
			fis = new FileInputStream(file);
			if (fis != null) {
				int len;
				len = fis.available();
				file_buff = new byte[len];
				fis.read(file_buff);
			}
		} catch (FileNotFoundException fe) {
			fe.printStackTrace();
		} catch (IOException ie) {
			ie.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return file_buff;
	}
	
	//测试
	public static void main(String[] args){
		String path = "F:\\3.jpg";
		byte[] bytes = FastdfsService.getFileBytes(path);
		String filePath = FastdfsService.uploadFile(bytes, "jpg");
	}
}

配置文件fdfs_client.conf
connect_timeout = 2
network_timeout = 30
charset = ISO8859-1
http.tracker_http_port = 8088
http.anti_steal_token = no
http.secret_key = FastDFS1234567890

tracker_server = 192.168.211.230:22122 

 

分享到:
评论

相关推荐

    FastDFSClient C#源码

    FastDFS是一款开源的高性能、轻量级的分布式文件系统,主要设计用于互联网环境下的大容量存储,特别适合图片、视频等大数据量的文件存储。它提供了文件上传、下载等基本功能,同时也支持文件的元数据(metadata)...

    fastdfs安装包全.zip

    FastDFS是一款开源的高性能、轻量级的分布式文件系统,主要解决了大容量存储和负载均衡的问题,特别适合以文件为载体的在线服务,如图片和视频分享网站等。本安装包包含了在Linux环境下搭建FastDFS所需的全部组件,...

    fastdfs安装包(fastdfs-6.06,fastdfs-nginx-module-1.22,nginx-1.16.1)

    《搭建FastDFS分布式文件系统详解》 FastDFS是一款开源的高性能、轻量级的分布式文件系统,它对文件进行管理,包括文件存储、文件同步、文件访问(文件上传、文件下载)等功能,解决了大容量存储和负载均衡的问题。...

    fastDFS文件系统搭建

    ### FastDFS 文件系统搭建知识点详解 #### 一、概述 FastDFS是一款开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载等),解决了大容量存储和负载均衡...

    fastDFS1.25jar包

    标题 "fastDFS1.25jar包" 涉及的是FastDFS的特定版本1.25,并且与Maven的使用相结合。FastDFS是一个开源的、轻量级的分布式文件系统,它对文件进行管理,包括文件存储、文件同步、文件访问(文件上传、文件下载)等...

    虚拟机fastdfs配置静态ip

    ### 虚拟机FastDFS配置静态IP的知识点详解 #### 一、FastDFS简介 FastDFS是一款开源的轻量级分布式文件系统,主要应用于互联网环境下大规模文件存储场景。它支持高并发、高性能以及可扩展性,适用于图片、视频等大...

    fastdfs-nginx-module-1.24

    《FastDFS-Nginx-Module 1.24:高效文件服务器集成详解》 FastDFS-nginx-module 1.24 是一个针对 FastDFS 文件系统的 Nginx 模块,它使得 Nginx 可以无缝地与 FastDFS 集成,提供了高效的文件上传、下载服务。这一...

    fastdfs安装包以及步骤.zip

    7. 启动FastDFS服务:启动tracker和storage服务,命令分别为`/usr/local/fastdfs/bin/fdfs_trackerd /usr/local/fastdfs/etc/fdfs_tracker.conf`和`/usr/local/fastdfs/bin/fdfs_storaged /usr/local/fastdfs/etc/...

    FastDFS需要的配置需要软件和配置说明

    在这个场景下,我们主要讨论如何整合FastDFS、Nginx以及Nginx的FastDFS模块,以实现高效、稳定的服务。 首先,我们要理解FastDFS的核心特性。FastDFS提供文件存储、文件同步、负载均衡等功能,支持多组服务器集群,...

    FASTDFS 5.11稳定版

    FASTDFS是一款开源的高性能、轻量级的分布式文件系统,主要解决大容量存储和负载均衡的问题,特别适合以文件为载体的在线服务,如图片分享、视频分享等网站。5.11稳定版是经过实际测试,证明其在稳定性和性能上都有...

    fastDFS断点续传实例

    **FastDFS断点续传实例详解** FastDFS是一款开源的高性能、轻量级的分布式文件系统,主要用于解决海量数据存储和负载均衡的问题。在实际应用中,文件上传和下载是常见的操作,尤其是大文件,断点续传功能就显得尤为...

    fastDFS安装文件(fastdfs-nginx-module、libfastcommon等)

    用来搭建FastDFS. apache-tomcat-7.0.82.tar.gz fastdfs-nginx-module_v1.16.tar.gz FastDFS_v5.05.tar.gz libevent-2.0.22-stable.tar.gz libfastcommon_v1.01.tar.gz nginx-1.6.3.tar.gz ngx_cache_purge-...

    linux下搭建FastDFS+Nginx服务器

    在Linux环境下搭建FastDFS+Nginx服务器是一项常见的任务,尤其对于那些需要稳定、高效存储和分发大量静态文件(如图片、文档等)的Web应用来说。FastDFS是一款开源的高性能分布式文件系统,而Nginx则是一款强大的...

    fastdfs-client-1.27.2-API文档-中文版.zip

    赠送jar包:fastdfs-client-1.27.2.jar; 赠送原API文档:fastdfs-client-1.27.2-javadoc.jar; 赠送源代码:fastdfs-client-1.27.2-sources.jar; 赠送Maven依赖信息文件:fastdfs-client-1.27.2.pom; 包含翻译后...

    fastdfs-6.06搭建安装包

    《FastDFS 6.06:构建分布式存储系统的深度解析》 FastDFS是一款开源的、高性能的、轻量级的分布式文件系统,主要用于解决大容量存储和负载均衡的问题。其设计目标是简单易用,扩展性强,易于维护,能够提供高可用...

    fastdfs优点及其原理

    ### 分布式文件系统概述与FastDFS详解 #### 一、为什么需要分布式文件系统? 随着互联网业务的迅猛发展,单一服务器已经无法满足日益增长的数据存储和处理需求。传统的单机文件存储方式虽然简单易用,但在面对大...

    基于C#的FastDFS.Net客户端项目设计源码

    本设计源码提供了一个基于C#的FastDFS.Net客户端项目,包含70个文件,其中包括57个cs源文件,4个csproj项目文件,2个resx资源文件,2个config配置文件,以及1个gitattributes文件,1个gitignore文件,1个tfignore...

    FastDFS分布式文件系统 v6.12.0.zip

    《FastDFS分布式文件系统详解与应用》 FastDFS是一款开源的高性能、轻量级的分布式文件系统,由国人开发,专为互联网应用设计,尤其适用于存储海量小文件。FastDFS的最新版本为v6.12.0,该版本在前作的基础上进行了...

    FastDFS_v5.05.tar.gz

    《深入理解FastDFS_v5.05:一个高效稳定的分布式文件系统》 FastDFS是一个开源的、高性能的、轻量级的分布式文件系统,专为互联网应用设计。它提供了文件存储、文件同步、文件访问(文件上传、文件下载)等功能,...

    fastdfs-client-java-1.27.zip

    《FastDFS客户端Java版1.27详解》 在当今的互联网时代,数据存储与管理是每个企业都必须面对的核心问题。FastDFS是一款轻量级的分布式文件系统,专为互联网设计,尤其适用于图片和视频等大数据量的存储。本文将深入...

Global site tag (gtag.js) - Google Analytics