---
url: /dev/n1o03jxu/index.md
description: FastDFS 分布式文件系统安装配置指南，详解 Tracker 和 Storage 节点的部署、配置及启动流程。
---
FastDFS安装和配置

## 简介

### 角色

1. **跟踪器（tracker）**
   **主要做调度工作，在访问上起负载均衡的作用**
2. **存储节点（storage）**
   **存储系欸但存储文件，完成文件管理的所有功能**

### 术语

`TrackkerServer`：跟踪服务器，主要做调度工作，在访问上起负载均衡的作用。记录storage server 的状态，是链接Client 和 Storage Server 的枢纽。

`Storage Server` ：存储服务器，文件和 meta data 都保存到存储服务器上

`group`：组，也成为卷，同组内服务器上的文件是完全相同的

`文件标识`：包括两部分：组名和文件名（包含路径）

`meta data`：文件相关属性，键值对（Key Value Pair）方式，如： key=a，value=123

> `meta data` 可存可不存，但存了更清晰！

### 同步机制

1. **同一组内的 storage server 之间是对等的，文件上传、删除等操作可以在任意一台 storage server 上进行；**
2. **文件同步只在同组内的 storage server 之间进行，采用 push 方式，即源服务器同步给目标服务器；**
3. **源头数据才需要同步，备份数据不需要再次同步，否则就构成环路（死循环）；**

> **上述第二条规则有个例外情况，就是新增加一台 storage server 时，由已有的一台 storage server 将已有的所有数据（包括源头数据和备份数据）同步给该新增服务器**

## 安装

### 安装地址

**fastdfs**

**[happyfish100/fastdfs](https://github.com/happyfish100/fastdfs)**

**libfastcommon**

**[happyfish100/libfastcommon](https://github.com/happyfish100/libfastcommon)**

## C语言环境

> 由于 fastDFS 是 `C语言`开发，故需保证C语言环境

#### centos

```shell
yum -y install cmake make gcc-c++
```

#### ubuntu

```shell
apt-get install 'g++'
apt-get install make cmake
```

### 安装核心库

```shell
#新建目录
mkdir -p /opt/fastdfs
#上传libfastcommon-1.0.43.tar.gz 到该目录 然后解压
tar -zxvf libfastcommon-1.0.43.tar.gz
cd libfastcommon-1.0.43/
#编译
./make.sh
#安装
./make.sh install
```

### 安装

```shell
#上传fastdfs-6.06.tar.gz到 /opt/fastdfs 目录下并解压
tar -zxvf fastdfs-6.06.tar.gz
#编译
cd fastdfs-6.06/
./make.sh
#安装
./make.sh install
```

## 跟踪器（Tracker）配置

### 配置

```shell
#创建Tracker存储节点目录
mkdir -p /fastdfs/tracker
#修改配置文件
cd /etc/fdfs/
cp tracker.conf.sample tracker.conf
vim /etc/fdfs/tracker.conf
#修改Tracker存储节点目录
base_path = /fastdfs/tracker
#保存退出
```

### 启动

```shell
cd /etc/init.d/
./fdfs_trackerd start
#查看进程是否启动成功
ps -ef | grep fdfs
```

### 开机启动

> **不推荐开机启动，建议手动启动**

#### centos

```shell
vim /etc/rc.d/rc.local
#加入
/etc/init.d/fdfs_tracked start
```

#### Ubuntu

```shell
#查看/etc/rc.local 是否存在
cat /etc/rc.local
#不存在主动创建
touch /etc/rc.local
#编辑 rc.local
vim /etc/rc.local
```

```shell
#!/bin/bash
cd /etc/init.d/
./fdfs_trackerd start
exit 0
```

## 存储节点（storage）配置

```shell
#创建存储节点（storage）目录
mkdir -p /fastdfs/storage/base
mkdir -p /fastdfs/storage/store

#修改配置文件
cd /etc/fdfs/
cp storage.conf.sample storage.conf
vim /etc/fdfs/storage.conf
#修改storage存储节点目录
base_path = /fastdfs/storage/base
#修改存放文件目录store_path0
store_path0 = /fastdfs/storage/store
#修改tracker_server ip地址为 tracker 机器的ip ，本地的话请填写局域网ip，不能为127.0.0.1或localhost
tracker_server = 192.168.0.2:22122
#保存退出
```

### 启动

```shell
cd /etc/init.d/
./fdfs_storaged start
#查看进程是否启动成功
ps -ef | grep fdfs
```

### 开机启动

> **不推荐开机启动，建议手动启动**

#### centos

```shell
vim /etc/rc.d/rc.local
#加入
/etc/init.d/fdfs_storaged start
```

#### Ubuntu

```shell
#查看/etc/rc.local 是否存在
cat /etc/rc.local
#不存在主动创建
touch /etc/rc.local
#编辑 rc.local
vim /etc/rc.local
```

```shell
#!/bin/bash
cd /etc/init.d/
./fdfs_storaged start
exit 0
```

## 客户端（client）配置

> **使用命令行测试，不是必须**

```shell
mkdir -p /fastdfs/client

cd /etc/fdfs
cp client.conf.sample client.conf

vim client.conf
#修改storage存储节点目录
base_path = /fastdfs/client
#修改tracker_server ip地址为 tracker 机器的ip ，本地的话请填写局域网ip，不能为127.0.0.1或localhost
tracker_server = 192.168.0.2:22122
```

### 上传

**以上传**`libfastcommon-1.0.43.tar.gz` 为例：

```shell
cd /usr/bin/
./fdfs_upload_file /etc/fdfs/client.conf /opt/fastdfs/libfastcommon-1.0.43.tar.gz

#或者
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /opt/fastdfs/libfastcommon-1.0.43.tar.gz
```

**返回**

```shell
group1/M00/00/00/wKgAAmDQTm2AHlDaAAKKfr3HBzE.tar.gz
```

**对应存储节点位置为：**

```shell
cd /fastdfs/storage/store/data/00/00/
ll
wKgAAmDQTm2AHlDaAAKKfr3HBzE.tar.gz
```

### 删除文件

```shell
cd /usr/bin/ 
./fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKgAAmDQTm2AHlDaAAKKfr3HBzE.tar.gz
```
