FastDFS是一个开源的轻量级分布式文件系统,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合中小文件(建议范围:4KB < file_size <500MB),对以文件为载体的在线服务,如相册网站、视频网站等。

fastDFS的组成:

  tracker:起核心调度的作用,用于保存下面各个存储文件的信息,包括文件上传记录,下载记录等。是各个storage文件同步的核心。

  storage:用于存储数据,定时向tracker发送自身信息。

  client:通过访问tracker去上传或下载文件。

tracker和storage的对应关系:

  

一个tracker对应多个storage,又将storage集群抽象为组的概念,同一个组内的storage数据彼此同步,通过client向tracker中上传数据,而数据最后是存储在storage中的。

group之内的storage是数据冗余的关系,group之间的数据是负载均衡的关系。

fastDFS的安装:

  

因为安装包中是集成了tracker,storage,client的,所有无论要使用哪种功能,安装过程都是一样的,只是需要修改不同的配置文件即可:

安装过程:

  

1、安装开发环境

yum groupinstall "Development Tools" "Server platform Development" -y

2、安装libfastcommon

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

cd libfastcommon/

./make.sh

./make.sh install

3、安装fastdfs

cd /root/

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

cd fastdfs/

./make.sh

./make.sh install

经过以上过程fastdfs已经安装完成,然后只需要到/etc/fdfs/下修改相应的配置文件即可:

tracker配置:

  

cd /etc/fdfs

cp tracker.conf.sample tracker.conf

vim /etc/fdfs/tracker.conf

base_path=/fdfs/tracker/data   # 存储日志及tracker的状态信息的软件根目录

修改完配置文件之后可以创建数据存放的目录:mkdir -p /fdfs/tracker/data

之后可以直接启动服务:service fdfs_trackerd start

storage 配置:

cd /etc/fdfs/

cp storage.conf.sample storage.conf     copy一份storage的配置文件

vim /etc/fdfs/storage.conf   修改配置文件

 group_name=group1  #指定组名

base_path=/data/fdfs/storage # storage根目录

store_path_count=2 # 设置设备数量,即使用几个路径来存储数据,一般是应用到多块磁盘

store_path0=/data/fdfs/storage/m0 #指定存储路径0

store_path1=/data/fdfs/storage/m1 #指定存储路径1# 注意:同一组内存储路径不能冲突,例如:下一个节点的存储路径就是m2,m3....等

tracker_server=192.168.0.107:22122 #指定tracker

mkdir -pv /data/fdfs/storage/{m0,m1} # 创建数据目录

service fdfs_storaged start  启动服务

client配置

cd /etc/fdfs/

cp client.conf.sample client.conf

修改客户端配置文件:vim client.conf

base_path=/fdfs/client/data

tracker_server=192.168.0.107:22122

从客户端上传文件:

fdfs_upload_file   /etc/fdfs/client.conf      root.gz.tar

程序           所使用的配置文件      上传的文件(接路径)

删除文件:

fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/rBURalsOVh2AeqF6AAFaxahaL98208.jpg

查看fastdfs集群状态:fdfs_monitor /etc/fdfs/client.conf

关于集群:

fastDFS的集群配置不难,只要在storage中指明相应的group就能自动加入到集群中了。

集群模式的storage配置文件需要注意两个字段:

group_name和tracker_server 这是一个多对多的关系,一个group可以属于多个tracker,而一个tracker可以拥有多个group。

具体的架构设计,应根据实际业务需求设置tracker和storage的数量以及它们之间的关系。

附:

fastDFS批量上传脚本: 

  

#!/bin/bash

dir=/home/picture   #将所有要上传的文件放在此目录下

for file_name in `ls $dir`;do

file_id=`fdfs_upload_file /etc/fdfs/client.conf $dir/$file_name`

if [ $? -eq 0 ];then

printf "%-40s %10s\n" "$file_name" "$file_id"

else

echo "This time for upload file has failed."

fi

done

文件服务器之fastDFS的更多相关文章

  1. Linux云计算-07_Linux文件服务器之vsftpd服务器

    本章向读者介绍企业vsftpd服务器实战.匿名用户访问.系统用户访问及虚拟用户实战等. 1 vsftpd服务器企业实战 文件传输协议(File Transfer Protocol,FTP),基于该协议 ...

  2. 第2-1-1章 FastDFS分布式文件服务背景及系统架构介绍

    目录 1 背景 1.1 为什么需要分布式文件服务 1.1.1 单机时代 1.1.2 独立文件服务器 1.1.3 分布式文件系统 1.2 什么是FastDFS 2 系统架构 2.1 Tracker集群 ...

  3. Web服务器之iis,apache,tomcat三者之间的比较

    IIS-Apache-Tomcat的区别 IIS与Tomcat的区别 IIS是微软公司的Web服务器.主要支持ASP语言环境. Tomcat是Java Servlet 2.2和JavaServer P ...

  4. 【转】Android 服务器之SFTP服务器上传下载功能

    原文网址:http://blog.csdn.net/tanghua0809/article/details/47056327 本文主要是讲解Android服务器之SFTP服务器的上传下载功能,也是对之 ...

  5. linux下维护服务器之常用命令

    linux下维护服务器之常用命令! 第1套如下: 正则表达式: 1.如何不要文件中的空白行和注释语句: [root@localhost ~]# grep -v '^$' 文件名 |grep -v '^ ...

  6. backup服务器之rsync服务

    backup服务器之rsync服务   rsync是开源的.快速的.多功能的可实现全量及增量的本地或远程数据同步备份的优秀工具.它拥有scp.cp的全量复制功能,同时比scp.cp命令更优秀.更强大. ...

  7. CentOS文件服务与数据管理

    CentOS文件服务与数据管理-专栏简介 本专栏内容涵盖了中高级Linux系统管理员所必须的文件服务.磁盘管理.数据管理.文件恢复等必备技能,实乃涨薪.跳槽之必备技能,且听一线运维老兵为你逐步揭开迷雾 ...

  8. 【转】Android 服务器之SFTP服务器上传下载功能 -- 不错

    原文网址:http://blog.csdn.net/tanghua0809/article/details/47056327 本文主要是讲解Android服务器之SFTP服务器的上传下载功能,也是对之 ...

  9. Xbin-Store(分布式商城)项目所用Linux服务系列 FastDFS安装(五)

    系列 Xbin-Store(分布式商城)项目所用Linux服务系列 MySQL安装(一) Xbin-Store(分布式商城)项目所用Linux服务系列 Redis集群安装(二) Xbin-Store( ...

随机推荐

  1. 关于真机测试root权限问题

    普通用户好像也无伤大雅: 输入后看到这样的有个美元符号,说明你的虚拟机获取不了权限,有权限的应该是root和#都有,这个时候你输入su 如果还是没有变化,看看你的虚拟机是不是android7.0,An ...

  2. 01-Java基本语法【前言、入门程序、常量、变量】

    重点知识记录: 1.java语言是美国Sun公司在1995年推出的高级编程语言. 2.java语言主要应用在互联网程序的开发领域. 3.二进制转换 1)十进制数据转换成二进制数据:使用除以2获取余数的 ...

  3. anniversary party_hdu1520

    本来以为是一道很简单的提,可以分分钟解决(实际上就是很简单) 然而一直报错,找半天,竟然要多组输入(还是太菜了) 所以每组需要先初始化, 这是一道树形DP的简单题,具体思路就是我选这个上司就不能选他的 ...

  4. 部署项目到jetty

    一.打包项目 1.在pom.xml中添加以下依赖 <dependency> <groupId>org.mortbay.jetty</groupId> <art ...

  5. Bayer Pattern

    在刚加入工作的时候,听到最多的就是RGGB Bayer Pattern.在之前的接触中,一直默认一张图片的每个像素点有RGB三个分量,那“RGGB Bayer Pattern”究竟是什么意思.在网上查 ...

  6. 命令行(二):Anaconda3

    1,进入base虚拟环境 $:activate 2,创建虚拟环境(自动下载Python3最新版本) $:conda create -n <virtual_name> python= 3,切 ...

  7. 题解【洛谷P3951】[NOIP2017]小凯的疑惑

    题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的.现在小 凯想知道在无法准确支付的物品中,最贵的 ...

  8. Android开发实战——记账本(4)

    开发日志(4)——MainActivity 在MainActivity中编写了几个方法.首先,点击账本的一条记录可以选择删除他,然后重写了fab,使之在点击他后能够添加记录.还写了删除全部记录的方法. ...

  9. eli和字符串 (牛客假期训练)

    链接:https://ac.nowcoder.com/acm/contest/3002/G来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言5242 ...

  10. 数据存储 csv

    # # 保存csv格式的数据import csv csvFile = open('test.csv','w+',newline='') #文本方式可读写 try: writer = csv.write ...