文件服务器之fastDFS
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的更多相关文章
- Linux云计算-07_Linux文件服务器之vsftpd服务器
本章向读者介绍企业vsftpd服务器实战.匿名用户访问.系统用户访问及虚拟用户实战等. 1 vsftpd服务器企业实战 文件传输协议(File Transfer Protocol,FTP),基于该协议 ...
- 第2-1-1章 FastDFS分布式文件服务背景及系统架构介绍
目录 1 背景 1.1 为什么需要分布式文件服务 1.1.1 单机时代 1.1.2 独立文件服务器 1.1.3 分布式文件系统 1.2 什么是FastDFS 2 系统架构 2.1 Tracker集群 ...
- Web服务器之iis,apache,tomcat三者之间的比较
IIS-Apache-Tomcat的区别 IIS与Tomcat的区别 IIS是微软公司的Web服务器.主要支持ASP语言环境. Tomcat是Java Servlet 2.2和JavaServer P ...
- 【转】Android 服务器之SFTP服务器上传下载功能
原文网址:http://blog.csdn.net/tanghua0809/article/details/47056327 本文主要是讲解Android服务器之SFTP服务器的上传下载功能,也是对之 ...
- linux下维护服务器之常用命令
linux下维护服务器之常用命令! 第1套如下: 正则表达式: 1.如何不要文件中的空白行和注释语句: [root@localhost ~]# grep -v '^$' 文件名 |grep -v '^ ...
- backup服务器之rsync服务
backup服务器之rsync服务 rsync是开源的.快速的.多功能的可实现全量及增量的本地或远程数据同步备份的优秀工具.它拥有scp.cp的全量复制功能,同时比scp.cp命令更优秀.更强大. ...
- CentOS文件服务与数据管理
CentOS文件服务与数据管理-专栏简介 本专栏内容涵盖了中高级Linux系统管理员所必须的文件服务.磁盘管理.数据管理.文件恢复等必备技能,实乃涨薪.跳槽之必备技能,且听一线运维老兵为你逐步揭开迷雾 ...
- 【转】Android 服务器之SFTP服务器上传下载功能 -- 不错
原文网址:http://blog.csdn.net/tanghua0809/article/details/47056327 本文主要是讲解Android服务器之SFTP服务器的上传下载功能,也是对之 ...
- Xbin-Store(分布式商城)项目所用Linux服务系列 FastDFS安装(五)
系列 Xbin-Store(分布式商城)项目所用Linux服务系列 MySQL安装(一) Xbin-Store(分布式商城)项目所用Linux服务系列 Redis集群安装(二) Xbin-Store( ...
随机推荐
- SSM开发基于Java EE在线图书销售系统
SSM(Spring+Spring MVC+MyBatis)开发基于Java EE在线图书销售系统 网站成功建立和运行很大部分取决于网站开发前的规划,因此为了在网站建立过程中避免一些不 ...
- php核心技术与最佳实践 --- 错误与异常
<?php /*php error*/ /* * 异常和错误的概念不一样 * 在PHP里,遇到任何自身错误都会触发一个错误,而不是抛出异常(对于一些情况,会同时抛出异常和错误) * 异常处理机制 ...
- c# 泛型<T>类型参数T的约束where
在定义泛型类时,可以对客户端代码能够在实例化类时用于类型参数的类型种类施加限制.如果客户端代码尝试使用某个约束所不允许的类型来实例化类,则会产生编译时错误.这些限制称为约束.约束是使用 where 上 ...
- Docker+JMeter单机版+File Browser
基于JMeter5.1.1+File Browser2.1.0 JMeter发起压测 File Browser作为文件服务器 一.目录结构: Dockerfile文件: FROM ubuntu:1 ...
- spring bean 的作用域
spring bean 的作用域: 1.单例(singleton):默认是单例模式,也就是说不管给定的bean被注入到其他bean多少次,注入的都是同一个实例. 2.原型(prototype):每次注 ...
- OpenCV的视频输入和相似度测量
#include <iostream> #include <string> #include <iomanip> // 控制浮动类型的打印精度 #include & ...
- 同步循环发请求用promise
function ajax(image, ind) { return new Promise(function(resolve, resject) { setTimeout(fu ...
- bzoj4765: 普通计算姬 (分块 && BIT)
最近一直在刷分块啊 似乎感觉分块和BIT是超级棒的搭档啊 这道题首先用dfs预处理一下 得到每一个sum值 此时查询是O(1)的 (前缀和乱搞什么的 但是修改需要O(n) (需要修改该节点所有祖先的 ...
- nginx mime.types 常用配置
常见mime type类型 nginx的mime.types 配置如下 types { text/html html htm shtml; text/css css; text/xml xml pli ...
- selenium的元素定位方法-By
如果在定位元素属性中包含了如ID等元素属性,那么在一个测试中,定位方法具体有哪几种,可以参考by模块中的By类,By的代码如下: class By(object): """ ...