Fastdfs文件系统扩容
1.简介
- 扩充group的存储空间,配置多个存储文件目录地址。
- 扩充存储节点,新加服务器配置多个storage。
2.storage文件存储原理介绍
在处理文件服务器扩充容量的时候,首先需要了解文件服务器存储的关键机制和一些重要参数。
- 一般设置一个storage属于一个分组group,一个分组group对应的数据存储目录地址可一个或多个。(这一点保证了group的文件地址容量扩展)
- 一个group的一个目录存储地址最多可存储的文件个数为:256*256*1000=65536000。storage文件存储机制中,有小文件合并存储到一个大文件的机制。
- 一个storage可以配置多个tracker地址,同理一个tracker可以分配文件存储到多个storage上面。(这一点保证了服务器storage容量扩展)
- 当一个storage中有多个文件目录地址时,通过tracker.conf中的关键参数store_path,可以配置一个文件在存储时,多个对应存储目录地址的存储机制,如轮询或选择剩余空间大的文件目录。
- 当一个tracker对应的存储storage具有多个时,通过tracker.conf中的store_lookup,store_server,可以配置当文件上传时,对应多个storage服务器的存储机制,如轮询或选择空间大的服务器。
- storage文件服务器默认存储空间配置时,当达到文件目录空间的10%时,便不可以在存储文件,可通过tracker.conf中的reserved_storage_space参数,修改默认值。
- 多个storage可以属于一个组或多个组,当两个或多个storage属于一个组时,各个storage中的文件相互备份。这种机制的优点是保证了文件服务器的备份和负载均衡,缺点是两个storage的存储容量是两个中较小storage的存储容量。
2.基于group模式的文件存储扩容(添加磁盘)
group模式扩容是通过给group的机器添加硬盘的方式,实现某个group的扩容。fastdfs在一台服务器支持多个store_path,每个store_path指向一个存储路径。如:url “M00/3F/E1/oYYBAFXfyuOABOf5AAAHoDwhqE0491.txt”中M00表示使用store_path0,如果没有配置store_path,就使用base_path的路径。添加了硬盘后,通过把新的store_path指向新硬盘的挂载点,再修改配置文件,就能实现group的扩容。扩容后的地址如:url “M01/3F/E3/oYYBAFXfyuOABOf5AAAHoDwhqE0591.txt”中M01表示使用store_path1。group模式扩容主要步骤如下:
- 1.停止现有的tracker服务,storage服务,操作指令如:/etc/init.d/fdfs_trackerd stop ,/etc/init.d/fdfs_storaged stop ;
- 2.修改/etc/fdfs/storage.conf配置文件,修改字段store_path_count,新增store_path1文件存储路径,新建store_path1的文件目录;

- 3.修改/etc/fdfs/storage.conf/mod_fastdfs.conf配置文件,修改字段store_path_count,新增store_path1文件存储路径,设置group1的配置信息;

- 4.修改/application/nginx/conf/nginx.conf配置文件,增加store_path1的访问代理;

- 5.重新启动tracker,storage,nginx服务,通过命令 /usr/bin/fdfs_monitor /etc/fdfs/storage.conf( /usr/bin/fdfs_monitor为f调用astdfs的命令,根据安装目录而定)可查看文件服务器的运行状态和配置信息。

结果展示:调用文件clent.conf配置文件,通过文件上传命令上传文件,查看文件的存储地址信息如下:

3.添加group的文件存储扩容
storage扩容主要是通过新增服务器的模式,在一台电脑上安装多个storage的模式不推荐。新增一台服务器的目的是为了扩容,便不能让新加的storage与原来存在的storage属于同一个组,设置为同一个组并不能扩容,只是备份的效果。已有文件系统信息为:
单节点文件服务器:ip:10.63.0.155 部署tracer,storage,nginx服务;
扩容信息为:在服务器10.63.0.154上面新建storage存储文件。具体操作步骤如下:
- 1.在新的服务器上,安装单节点文件服务器,具体安装教程参考:FastDFS教程Ⅰ-文件服务器安装与Nginx配置
- 2.安装好文件服务器,nginx等相关软件后,设置配置文件storage.conf的tracker地址为10.63.0.155上面的tracker地址;
- 3.配置storage.conf,mod_fastdfs.conf文件中的group名字,如已经存在的storage属于group2,新加的设置为group1;
- 4.修改已经存在的tracker服务器配置信息,修改文件有mod_fastdfs.conf,nginx.conf,storage_ids.conf文件;
- 5.在做扩容时,新的storage配置的存储路径,若在老的tracker服务器上面,没有对应的文件路径地址,在启动tracer服务时,会有启动报文件找不到路径的错误情况,针对这样的问题,在tracker所在服务器上面,配置建立一套这样的文件路径就可以了。这个文件实际并没有存储信息。如:新路径为/data/storage/testtwo,启动tracker报/data/storage/testtwo找不到文件路径,在tracker服务器上面配置这个地址就可以了。

- 5.重新启动tracker,storage,nginx服务,通过命令 /usr/bin/fdfs_monitor /etc/fdfs/storage.conf( /usr/bin/fdfs_monitor为f调用astdfs的命令,根据安装目录而定)可查看文件服务器的运行状态和配置信息。

结果展示:调用文件clent.conf配置文件,通过文件上传命令上传文件,查看文件的存储地址信息如下:

4.fastDFS文件系统扩容方案总结
通过上述两种方式均可以达到文件扩容的目的,对于在服务器上面添加硬盘的模式,建议采用方案1,直接在group新加文件存储地址;在具有新的服务器时,可采用方案2处理。在服务器和硬盘信息都有的情况下,可同时采用这两种模式扩充容量。
添加group:
1. 修改storaged.conf配置文件
2. 修改nginx_http_module模块配置文件
在所有storage机器上,修改/etc/fdfs/mod_fastdfs.conf
group_name=group1/group2/group3 # 所有组名
group_count = # 组的总数 # 把所有组和目录都添加上
[group1]
group_name=group1
storage_server_port=
store_path_count=
store_path0=/var/local/fdfs/data/group1/M00
store_path1=/var/local/fdfs/data/group1/M01
store_path2=/var/local/fdfs/data/group1/M02 # group settings for group #
# since v1.
# when support multi-group, uncomment following section as neccessary
[group2]
group_name=group2
storage_server_port=
store_path_count=
store_path0=/var/local/fdfs/data/group2/M00
store_path1=/var/local/fdfs/data/group2/M01
store_path2=/var/local/fdfs/data/group2/M02 [group3]
group_name=group3
storage_server_port=
store_path_count=
store_path0=/var/local/fdfs/data/group3/M00
store_path1=/var/local/fdfs/data/group3/M01
store_path2=/var/local/fdfs/data/group3/M02
分布式文件系统FastDFS动态扩容
https://www.cnblogs.com/zhangs1986/p/8329555.html
当用户量越来越大,则集群中某个group总会到达其极限,这时就得扩展集群的容量了。
FastDFS的扩容分为对group纵向扩容和横向扩容
纵向扩容 指在同一个group组中增加服务器,实现数据冗余,数据备份。同一个group中最大容量取决于最小的storage的存储容量。因此如果还想继续使用此group,则需要对此group对应的所有服务器挂载同样容量的磁盘,指定store_path1……,但这样做的话成本相当的高,不推荐。
横向扩容是通过集群实现,指新增一个group,增加整个FastDFS的存储空间。fastDFS的存储空间指的是所有group加起来的存储容量。
下面就横向扩容来做介绍
在 高可用高性能分布式文件系统FastDFS进阶keepalived+nginx对多tracker进行高可用热备 中已经讲了如何配置集群的2个tracker和4个storage,分group1和group2,下面增加一组group3,也由2台服务器组成 group3:36、37。
安装storage
按照 高可用高性能分布式文件系统FastDFS进阶keepalived+nginx对多tracker进行高可用热备 分别布署storage存储节点。
安装 nginx和fastdfs-nginx-module 到 storage存储节36、37。
将/etc/fdfs/storage.conf里面的 group_name=group3 其它内容与其它storage存储节一样。
然后开启这两个storage,并加入开机启动:
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
chkconfig fdfs_storaged on
查看集群状态,会显示整体内容:
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
安装配置nginx
/opt/nginx/conf/nginx.conf 文件内容与其它结点一样。
但修改/etc/fdfs/mod_fastdfs.conf

base_path=/data/fastdfs/storage
tracker_server=192.168.80.30:22122
tracker_server=192.168.80.31:22122
storage_server_port=23000
group_name=group3 # 第一组storage的组名
url_have_group_name=true
store_path0=/data/fastdfs/storage
group_count=2
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/data/fastdfs/storage
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/data/fastdfs/storage
[group3]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/data/fastdfs/storage

注意:
将存储结点32到37的/etc/fdfs/mod_fastdfs.conf里面都加上
[group3]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/data/fastdfs/storage
启动Nginx,并加和自启动
shell> /opt/nginx/sbin/nginx
上传测试文件到group3上。
浏览器访问测试时上传的文件,应该都能正常访问。
http://192.168.80.36:8888/group3/M00/00/00/CgNXGVpddOKANpzbAABdrZgsqUU369_big.jpg
http://192.168.80.37:8888/group3/M00/00/00/CgNXGVpddOKANpzbAABdrZgsqUU369_big.jpg
配置Nginx,设置tracker负载均衡以及缓存
vi /opt/nginx/conf/nginx.conf
添加以下内容
#设置 group3 的服务器
upstream fdfs_group3 {
server 192.168.80.36:8888 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.80.37:8888 weight=1 max_fails=2 fail_timeout=30s;
}
和

location /group3/M00 {
proxy_next_upstream http_502 http_504 error timeout invalid_header; proxy_cache http-cache;
proxy_cache_valid 200 304 12h;
proxy_cache_key $uri$is_args$args;
proxy_pass http://fdfs_group3;
expires 30d;
}

再重启nginx就行了。
从上面来看,给集群增加group,storage的安装配置很简单,主要是 nginx和fastdfs-nginx-module的配置比较麻烦,需要手动添加组,因此要注意以上要注意的地方不要漏掉了
Fastdfs文件系统扩容的更多相关文章
- 分布式文件系统FastDFS动态扩容
当用户量越来越大,则集群中某个group总会到达其极限,这时就得扩展集群的容量了. FastDFS的扩容分为对group纵向扩容和横向扩容 纵向扩容 指在同一个group组中增加服务器,实现数据冗余, ...
- FastDFS文件系统(二) fastdfs和其他文件系统区别
FastDFS文件系统(二) fastdfs和其他文件系统区别 一.概述 普通存储方案:Rsync.DAS(IDE/SATA/SAS/SCSI等块).NAS(NFS.CIFS.SAMBA等文件系统). ...
- Linux文件系统扩容步骤
1 扩容前检查 cat /etc/fstab df -h 在扩容之前请确认VG的Free大小,以及文件和文件系统是否达到系统限制 2 系统识别硬盘 #echo "- - -" &g ...
- RedHat6.5系统LVM增加新硬盘实现根文件系统扩容
一.新增物理空间 二.linux中创建新分区 1.首先查看硬盘信息,用fdisk -l命令,如果有硬盘有剩余空间就可以对其进行分区. [root@master 桌面]# fdisk -l Disk / ...
- Centos7迁移fastdfs文件系统
系统从一个地方迁移到另一个地方,数据保持不变,但是ip地址和网络情况不一样了,最困难的是要迁移的那个地方还么有互联网,这TM就坑了,所以想到将FastDFS存储的目录整体拷贝过去,这个方法简单粗暴,这 ...
- 使用docker搭建FastDFS文件系统
1.首先下载FastDFS文件系统的docker镜像 docker search fastdfs 2.使用docker镜像构建tracker容器(跟踪服务器,起到调度的作用): docker run ...
- 实战:docker搭建FastDFS文件系统并集成SpringBoot
实战:docker搭建FastDFS文件系统并集成SpringBoot 前言 15年的时候,那时候云存储还远远没有现在使用的这么广泛,归根结底就是成本和安全问题,记得那时候我待的公司是做建站开发的,前 ...
- FastDFS文件系统迁移和数据恢复
迁移步骤 打包旧服务器文件的所有文件 定位到旧服务器的tracker和Storage目录,将整个文件夹打包 tar -zcf fdfs-storage-data.tar.gz /fastdfs/sto ...
- 通过Nginx訪问FastDFS文件系统并进行图片文件裁剪的性能測试和分析
前段时间公司的分布式图片文件系统(FastDFS)做了图片裁剪和缩放功能,并把缩放计算和FastDFS做了解耦分离,前端用虚拟机作为图片文件缩放的訪问代理层(Nginx Proxy),后端使用ngin ...
随机推荐
- 人见人爱A-B 题解
参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的减法运算.(当然,大家都知道集合的定义,就是 ...
- Centos7报Could not resolve host: mirrorlist.centos.org; Unknown error(VMware网络设置)
软件:VMware 12 Linux版本:centOS 7 网络设置:桥接模式 安装后ping百度网址时报错:Name or service not know,使用yum安装时报错:Could not ...
- Javaweb编程
首先是题目要求: 1登录账号:要求由6到12位字母.数字.下划线组成,只有字母可以开头:(1分) 2登录密码:要求显示“• ”或“*”表示输入位数,密码要求八位以上字母.数字组成.(1分) 3性别:要 ...
- Collection-接口中的方法(新手)
/* Collection 接口中的方法 ArrayList implements List 数组列表 实现 列表 List extends Collection 列表 继承 数组列表*///导入包. ...
- 《前端之路》- TypeScript (三) ES5 中实现继承、类以及原理
目录 一.先讲讲 ES5 中构造函数(类)静态方法和多态 1-1 JS 中原型以及原型链 例子一 1-2 JS 中原型以及原型链中,我们常见的 constructor.prototype.**prot ...
- 使用new Image()可以针对单单请求,不要返回数据的情况
使用new Image()可以针对单单请求,不要返回数据的情况,比如我这里写了一个Demo,请求百度的Logo一个示例: <html> <head> </head> ...
- 渗透测试-IP相关知识整理
IP地址: 英文名称为Internet Protocol Address,是指互联网协议地址又称为网际协议地址.IP地址是Ip协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台机器分配一个 ...
- 免费开源数字货币交易所——基于Java开发的比特币交易所 | BTC交易所 | ETH交易所 | 数字货币交易所
本项目是基于Java开发的比特币交易所 | BTC交易所 | ETH交易所 | 数字货币交易所 | 交易平台 | 撮合交易引擎.本项目基于SpringCloud微服务开发,可用来搭建和二次开发数字货币 ...
- Spring优雅整合Redis缓存
“小明,多系统的session共享,怎么处理?”“Redis缓存啊!” “小明,我想实现一个简单的消息队列?”“Redis缓存啊!” “小明,分布式锁这玩意有什么方案?”“Redis缓存啊!” “小明 ...
- leetcode签到 892. 三维形体的表面积
题目 三维形体的表面积 在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体. 每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上. 请你返回最 ...