FastDFS的安装配置及其使用

一、fastDFS是什么
       fastDFS是c语言编写的一款开源分布式文件系统,使用fastDFS可以很方便搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
二、fastDFS工作原理
       fastDFS包括Tracker server和Storage server,客户端请求Tracker server进行文件上传和下载,Tracker server通过调度Storage server完成上传和下载。如下图所示:
在这里插入图片描述
详细解释:
(1)Tracker Server
       其作用是负载均衡和调度,通过Tracker可以在文件上传时根据一些策略找到Storage提供文件上传服务,Tracker也就是追踪/调度服务器。
(2)Storage
       其作用是文件存储,客户端上传的文件实质上都是保存在Storage服务器上,Storage也就是存储服务器。Storage会连接集群中的所有Tracker,定时向他们报告自己的磁盘剩余空间、文件同步状态、文件上传下载次数等统计信息,Tracker可以根据每组Storage的状态来进行调度。
       Storage集群采用分组存储方式,Storage集群由一个或者多个组构成,其存储总量为集群中所有组的存储容量之和。一个组由一台或多台存储器构成,同组内的Storage之间会相互连接进行文件同步,从而保证同组内的每个storage文件完全一样,不同组的storage之间不会相互通信的。一个组的存储容量为该组内存容量最小的那个。

上传文件流程
在这里插入图片描述
说明:
       客户端上传文件之后,服务器会返回文件id,该id用于之后访问该文件。内容包括:组名、虚拟磁盘路径、数据两级目录、文件名。如下所示:
在这里插入图片描述
组名:文件上传之后文件所在的storage组名称,需要客户端自行保存。

虚拟磁盘路径:与配置的store_path*对应。例如配置store_path0则对应M00,配置store_path1则对应M01…

数据两级目录:storage在每个虚拟磁盘路径下创建两级目录,用于存储数据文件。

文件名:不是上传时的文件名,而是存储服务器根据特定信息生成的,文件名包含:原存储服务器ip、文件创建时间戳、文件大小、随机数和文件拓展名等。

下载文件流程:
在这里插入图片描述
说明:
       tracker根据客户端提供的文件id来快速定义文件,通过组名定位到客户端需要访问的存储器服务器是哪个组,并选择合适的存储服务器提供给客户端访问;虚拟路径可以找到对应文件的存储路径,再根据文件的两级目录和文件名,就可以很快的找到需要下载的文件。

三、fastDFS安装与配置
1、下载地址:https://github.com/happyfish100/fastdfs/releases
选择自己所需要的版本下载,如下所示:
在这里插入图片描述2、安装libfastcommon依赖
由于要从gitbub上clone依赖libfastcommon,所以先安装git

apt install git

克隆

git clone https://github.com/happyfish100/libfastcommon.git

完成之后libfastcommon中包含如下文件:
在这里插入图片描述
进入libfastcommon文件夹执行如下命令:

./make.sh
./make.sh install

注:在32位ubuntu中,libfastcommon会安装在/usr/lib 中,64位系统则安装在 /usr/lib64 中,如下图:
在这里插入图片描述
根据系统执行如下命令:

export LD_LIBRARY_PATH=/usr/lib64/
或
export LD_LIBRARY_PATH=/usr/lib/
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
或
ln -s /usr/lib/libfastcommon.so /usr/local/lib/libfastcommon.so

3、解压并安装fastDFS

tar -zxvf fastdfs-5.11.tar.gz

进入解压目录:

cd fastdfs-5.11

执行以下:

./make.sh
./make.sh install

执行完成之后,进入"/etc/fdfs"目录下,可以看到如下配置示例文件:

在这里插入图片描述
       接下来,我们将使用storage.conf.sample,tracker.conf.sample两个进行配置。首先将文件的".sample"去掉,也就是重命名一下。

(1)修改tracker.conf 文件
注:以下凡是出现配置目录的地方,必须是存在的目录。
tracker的数据log文件目录(路径必须存在),如下:
在这里插入图片描述
服务端口设置:
在这里插入图片描述
(2)修改storage.conf文件
组名设置:
在这里插入图片描述
虚拟路径映射的路径(路径必须存在):
在这里插入图片描述
stroage的数据log文件目录(路径必须存在),如下:
在这里插入图片描述
tracker服务器ip和端口:
在这里插入图片描述
storage的服务端口:
在这里插入图片描述
4、启动tracker和storage

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf

在这里插入图片描述

5、使用java测试
FastDFS java client SDK:
https://github.com/happyfish100/fastdfs-client-java

放置在java工程resource目录下:
conf/fastdfs-client.properties

## fastdfs-client.properties

fastdfs.connect_timeout_in_seconds = 5
fastdfs.network_timeout_in_seconds = 30

fastdfs.charset = UTF-8

fastdfs.http_anti_steal_token = false
fastdfs.http_secret_key = FastDFS1234567890
fastdfs.http_tracker_http_port = 80

fastdfs.tracker_servers = ip:22122

上传:

 //要上传的文件地址
    public static String local_filename = "E:\\test.txt";
    public static void testUpload() {
        try { 
        	//加载fastDFS客户端的配置文件
            ClientGlobal.initByProperties("conf/fastdfs-client.properties");
            
            //创建tracker的客户端
            TrackerClient tracker = new TrackerClient(); 
            TrackerServer trackerServer = tracker.getConnection(); 
            StorageServer storageServer = null;
            //定义storage客户端
            StorageClient storageClient = new StorageClient(trackerServer, storageServer); 
            NameValuePair nvp [] = new NameValuePair[]{ 
                    new NameValuePair("fileName", "test.txt"), 
            }; 
            //执行上传
            String fileIds[] = storageClient.upload_file(local_filename, "txt", nvp);

            System.out.println("上传组名:" + fileIds[0]); 
            System.out.println("上传路径: " + fileIds[1]);
            trackerServer.close();
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
    }

下载:

public static void testDownload() {
        try {
        	ClientGlobal.initByProperties("conf/fastdfs-client.properties");

            TrackerClient tracker = new TrackerClient(); 
            TrackerServer trackerServer = tracker.getConnection(); 
            StorageServer storageServer = null;

            StorageClient storageClient = new StorageClient(trackerServer, storageServer); 
            byte[] b = storageClient.download_file("group1", "M00/00/00/wKgAA1zWw0eAbML5AAAAFtpUszA462.txt"); 
            String downFile = new String(b, "UTF-8");
            System.out.println(downFile);
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
    }

删除:

public static void testDelete() {
		try {
			ClientGlobal.initByProperties("conf/fastdfs-client.properties");

			TrackerClient tracker = new TrackerClient();
			TrackerServer trackerServer = tracker.getConnection();
			StorageServer storageServer = null;

			StorageClient storageClient = new StorageClient(trackerServer, storageServer);
			int i = storageClient.delete_file("group1", "M00/00/00/wKgAA1zWw0eAbML5AAAAFtpUszA462.txt");
			System.out.println(i == 0 ? "文件删除成功" : "文件删除失败:" + i);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
安装配置 FastDFS 可以按照以下步骤进行操作: 1. 安装依赖库: ``` sudo apt-get update sudo apt-get install -y libevent-dev libevent-extra-2.1-6 libevent-openssl-2.1-6 libevent-pthreads-2.1-6 zlib1g-dev ``` 2. 下载 FastDFS: ``` wget https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz tar -zxvf V6.06.tar.gz cd fastdfs-6.06/ ``` 3. 编译和安装 FastDFS: ``` ./make.sh sudo ./make.sh install ``` 4. 配置 Tracker 服务器: - 复制 `tracker.conf.sample` 文件并重命名为 `tracker.conf`: ``` cp conf/tracker.conf.sample conf/tracker.conf ``` - 编辑 `tracker.conf` 文件,设置 `base_path` 参数为 FastDFS 存储数据的根目录: ``` vi conf/tracker.conf base_path=/your/path/to/fdfs/tracker/data ``` 5. 启动 Tracker 服务器: ``` sudo /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf ``` 6. 配置 Storage 服务器: - 复制 `storage.conf.sample` 文件并重命名为 `storage.conf` : ``` cp conf/storage.conf.sample conf/storage.conf ``` - 编辑 `storage.conf` 文件,设置 `base_path` 参数为 FastDFS 存储数据的根目录,设置 `tracker_server` 参数为 Tracker 服务器的 IP 地址: ``` vi conf/storage.conf base_path=/your/path/to/fdfs/storage/data tracker_server=tracker_ip:tracker_port ``` 7. 启动 Storage 服务器: ``` sudo /usr/bin/fdfs_storaged /etc/fdfs/storage.conf ``` 8. 配置客户端: - 复制 `client.conf.sample` 文件并重命名为 `client.conf`: ``` cp conf/client.conf.sample conf/client.conf ``` - 编辑 `client.conf` 文件,设置 `base_path` 参数为 FastDFS 存储数据的根目录,设置 `tracker_server` 参数为 Tracker 服务器的 IP 地址: ``` vi conf/client.conf base_path=/your/path/to/fdfs/data tracker_server=tracker_ip:tracker_port ``` 9. 测试 FastDFS 是否安装成功: ``` sudo /usr/bin/fdfs_test /etc/fdfs/client.conf upload /path/to/your/file.ext ``` 以上是基本的 FastDFS 安装配置步骤,根据实际情况进行调整。希望对你有所帮助!如果你还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值