fastdfs开源分布式文件系统及迁移部署

news2024/9/30 9:37:06

背景是这样的:最近在做机房迁移,其中涉及到一套古早的fastdfs系统,当时部署的同事已经不在了,也没有交接文档,但是必须做迁移,坑的是这活落到我的头上了,虽然几年前接触过fasdfs,但早就不用了啊,现在要不是用minio,要不用的是云上的OSS等。

这篇文章记录下,如何部署新的fastdfs及如何做文件迁移及验证。

什么是 FastDFS?

FastDFS是一个开源的分布式文件系统,旨在提供高性能的文件存储和访问解决方案。它最初由淘宝开发,并已成为开源社区的一部分。FastDFS具有以下主要特点:

  1. 高性能: FastDFS被设计成能够快速处理大量文件的系统。它具有低延迟和高吞吐量,使其成为存储和检索文件的理想选择。

  2. 可扩展性: FastDFS可以轻松扩展以满足不断增长的存储需求。通过添加更多的存储服务器,可以实现水平扩展。

  3. 简单部署: FastDFS的部署相对简单,因此用户可以快速开始使用。它的架构清晰,易于管理。

  4. 开源: FastDFS是一个开源项目,因此用户可以免费使用它,同时也可以根据需要进行自定义修改。

FastDFS 架构

FastDFS的架构非常简单,由以下几个关键组件组成:

  1. Tracker Server: Tracker服务器是FastDFS的管理节点,用于协调存储服务器的操作。它负责跟踪存储服务器的状态和文件位置。

  2. Storage Server: 存储服务器是实际存储文件的节点。FastDFS可以有多个存储服务器,每个服务器负责存储一部分文件。

  3. Client: 客户端是用户或应用程序与FastDFS交互的接口。客户端通过Tracker服务器查找文件并与存储服务器通信以上传、下载或删除文件。

FastDFS 迁移部署的过程

步骤 1:准备环境

在开始迁移部署之前,首先要确保你已经准备好了合适的环境。这包括:

  • 一组新的服务器用于FastDFS存储节点。
  • 适当的网络连接,确保存储节点可以相互通信。
  • 同版本的FastDFS软件包。

先挂盘,可以按照如下操作:

fdisk -l 
echo "n 
p 
1 
t 
8e 
p 
w 
" | fdisk /dev/vdc 
pvcreate /dev/vdc1 && vgcreate lrGroup /dev/vdc1 && lvcreate -l +100%FREE -n lv_ky lrGroup && mkfs -t xfs /dev/lrGroup/lv_ky && mkdir /data && mount /dev/lrGroup/lv_ky /data 

解压安装包到/data

cd /data/
tar -xvf fastdfs-5.11.tar.gz 
tar -zxvf fastdfs-nginx-module-1.20.tar.gz 
tar -zxvf libfastcommon-1.0.39.tar.gz 
tar -xzvf nginx-1.22.0.tar.gz 

依赖nginx,所以需要提前部署好nginx,需要加载fastdfs模块

mv nginx-1.22.0 nginx_src 
cp fastdfs-nginx-module-1.20 nginx_src/ 
ls 
cp -r fastdfs-nginx-module-1.20 nginx_src/ 
cd nginx_src 
cd fastdfs-nginx-module-1.20 
cd src 
cp /data/conf/config ./ 
yum install pcre-devel zlib zlib-devel openssl openssl-devel -y 
cd ../.. 
./configure --prefix=/data/nginx --add-module=fastdfs-nginx-module-1.20/src/ 

修改nginx配置文件

user  root;
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       38080;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location /group1/M00 {
                root /data/fastdfs/data/;
                ngx_fastdfs_module;
        }
    }
}

启动nginx

/data/nginx/sbin/nginx
步骤 2:安装和配置 Tracker 服务器

在新的环境中安装并配置Tracker服务器。这是FastDFS的管理节点,负责跟踪存储服务器的状态和文件位置。配置文件通常位于 /etc/fdfs/tracker.conf

cd libfastcommon-1.0.39 
yum -y install gcc gcc-c++ 
./make.sh 
./make.sh install 
cd ../fastdfs-5.11 
yum install -y perl 
./make.sh 
./make.sh install 
ll /usr/bin|grep fdfs 
mkdir -p /data/fastdfs/{client,data,logs}
echo "service fdfs_trackerd start" |tee -a /etc/rc.d/rc.local
cp ./conf/* /etc/fdfs/ 

修改tracker配置文件

#cat /etc/fdfs/
disabled=false
bind_addr=
port=22122
connect_timeout=30
network_timeout=60
base_path=/data/fastdfs
max_connections=256
accept_threads=1
work_threads=4
min_buff_size = 8KB
max_buff_size = 128KB
store_lookup=2
store_group=group2
store_server=0
store_path=0
download_server=0
reserved_storage_space = 10%
log_level=info
run_by_group=
run_by_user=
allow_hosts=*
sync_log_buff_interval = 10
check_active_interval = 120
thread_stack_size = 64KB
storage_ip_changed_auto_adjust = true
storage_sync_file_max_delay = 86400
storage_sync_file_max_time = 300
use_trunk_file = false 
slot_min_size = 256
slot_max_size = 16MB
trunk_file_size = 64MB
trunk_create_file_advance = false
trunk_create_file_time_base = 02:00
trunk_create_file_interval = 86400
trunk_create_file_space_threshold = 20G
trunk_init_check_occupying = false
trunk_init_reload_from_binlog = false
trunk_compress_binlog_min_interval = 0
use_storage_id = false
storage_ids_filename = storage_ids.conf
id_type_in_filename = ip
store_slave_file_use_link = false
rotate_error_log = false
error_log_rotate_time=00:00
rotate_error_log_size = 0
log_file_keep_days = 0
use_connection_pool = false
connection_pool_max_idle_time = 3600
http.server_port=38080
http.check_alive_interval=30
http.check_alive_type=tcp
http.check_alive_uri=/status.html

启动

service fdfs_trackerd start 
步骤 3:安装和配置 Storage 服务器

安装并配置存储服务器,这是实际存储文件的地方。每个存储服务器都需要一个唯一的storage.conf配置文件。确保在新环境中创建一个存储服务器群集。

echo "service fdfs_storaged start" |tee -a /etc/rc.d/rc.local 

修改配置文件

# cat torage.conf
disabled=false
group_name=group1
bind_addr=
client_bind=true
port=23000
connect_timeout=30
network_timeout=60
heart_beat_interval=30
stat_report_interval=60
base_path=/data/fastdfs
store_path0=/data/fastdfs
max_connections=10
buff_size = 256KB
accept_threads=1
work_threads=4
disk_rw_separated = true
disk_reader_threads = 1
disk_writer_threads = 1
sync_wait_msec=50
sync_interval=0
sync_start_time=00:00
sync_end_time=23:59
write_mark_file_freq=500
store_path_count=1
subdir_count_per_path=256
tracker_server=ip1:22122,ip222122
log_level=info
run_by_group=
run_by_user=
allow_hosts=*
file_distribute_path_mode=0
file_distribute_rotate_count=100
fsync_after_written_bytes=0
sync_log_buff_interval=10
sync_binlog_buff_interval=10
sync_stat_file_interval=300
thread_stack_size=512KB
upload_priority=10
if_alias_prefix=
check_file_duplicate=0
file_signature_method=hash
key_namespace=FastDFS
keep_alive=0
use_access_log = false
rotate_access_log = false
access_log_rotate_time=00:00
rotate_error_log = false
error_log_rotate_time=00:00
rotate_access_log_size = 0
rotate_error_log_size = 0
log_file_keep_days = 0
file_sync_skip_invalid_record=false
use_connection_pool = false
connection_pool_max_idle_time = 3600
http.domain_name=
http.server_port=38080

启动

service fdfs_storaged start 
步骤 4:配置 Client 客户端

在迁移的环境中配置FastDFS客户端,以便与新的Tracker和Storage服务器进行通信。更新客户端的配置文件,以使用新的Tracker服务器的地址。

#cat client.conf

connect_timeout=30
network_timeout=60
base_path=/data/fastdfs/client
tracker_server=ip1:22122,ip2:22122
log_level=info
use_connection_pool = false
connection_pool_max_idle_time = 3600
load_fdfs_parameters_from_tracker=false
use_storage_id = false
storage_ids_filename = storage_ids.conf
http.tracker_server_port=38080

修改mod_fastdfs.conf配置文件

#include http.conf
connect_timeout=2
network_timeout=30
base_path=/tmp
load_fdfs_parameters_from_tracker=true
storage_sync_file_max_delay = 86400
use_storage_id = false
storage_ids_filename = storage_ids.conf
tracker_server=ip1:22122,ip2:22122
storage_server_port=23000
group_name=group1
url_have_group_name = true
store_path_count=1
store_path0=/data/middleware/fastdfs
log_level=info
log_filename=
response_mode=proxy
if_alias_prefix=
flv_support = true
flv_extension = flv
group_count = 0
步骤 5:迁移数据

现在,你需要迁移原始FastDFS环境中的所有数据到新的环境。这可能涉及将文件从旧的存储服务器复制到新的存储服务器。

将旧服务器data目录打包:

cd /data/fastdfs/

zip -r data.zip ./data

#scp到新的节点

新节点如下操作

cd /data/fastdfs

cp data/*.dat . 
mv data data-bak

unzip data.zip

cp *.dat ./data

cd ./data/sync

# 修改mark文件
mv 10.255.220.101_23000.mark newip_23000.mark

重启服务

service fdfs_trackerd restart 
service fdfs_storaged restart
步骤 6:测试和验证

在完成数据迁移后,确保一切正常工作。测试文件的上传、下载和删除功能以确保系统正常运行。

步骤 7:监控和维护

建立监控机制以跟踪FastDFS集群的性能和健康状况。定期维护存储服务器和Tracker服务器,确保它们保持最新状态。

FastDFS 的最佳实践

在使用FastDFS时,有一些最佳实践可以帮助你提高系统的性能和可靠性:

  1. 备份和恢复策略: 确保实施了数据备份和恢复策略,以防止数据丢失。

  2. 安全性: 保护Tracker和Storage服务器,确保只有授权用户可以访问。

  3. 监控和警报: 使用监控工具来跟踪性能指标并设置警报,以及时发现和解决问题。

  4. 定期维护: 定期检查和维护存储服务器,确保它们处于最佳状态。

结论

FastDFS是一个强大的开源分布式文件系统,适用于需要高性能、可扩展性和简单部署的文件存储和访问解决方案。通过遵循上述迁移部署过程和最佳实践,你可以轻松地将FastDFS引入你的环境,并有效地管理文件。在数字化时代,一个可靠的文件系统对于企业的成功至关重要,FastDFS为此提供了一个出色的解决方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2179291.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

window java17改成java 8

window上装了两个版本的Java,目前全局生效的是Java17,想切换成java8的全局。但是在修改环境变量的Path之后,java -version 还是java 17 但是自己的JAVA_HOME 和Path 都没配错啊… 怕是%JAVA_HOME%\bin\ 有问题,我还特意重写了bin…

【GEE学习第二期】GEE数据类型、语法

【GEE学习第二期】GEE数据类型、语法 GEE基本数据类型基本语法循环条件判断累加 可视化影像与波段影像集数据导出数值与绘图保存影像 参考 GEE基本数据类型 GEE 中使用的主要数据类型是栅格,涵盖从本地到全球范围的图像,可从数百个卫星和航空资源获得图…

网盘能否作为FTP替代产品?企业该如何进行FTP国产化替代?

近年来,信创的概念引入和高效实践落地让更多的行业企业自发性地进行国产化替代,目前信创国产化替代还多发生在操作系统和应用层面,软件工具等目前还在下一阶段规划,但很多企业未雨绸缪,已经在做调研和尝试。 FTP作为世…

数据结构:并查集

数据结构:并查集 并查集原理实现框架初始化合并查询获取成员路径压缩其它 总代码 并查集 在生活中,经常会出现分组问题。比如一个班级分为多个小组,打篮球分为两方等等。在同一个组中的所有成员,就构成一个集合。对这种一个群体分…

基于SSM的会员管理系统【附源码】

基于SSM的会员管理系统(源码L文说明文档) 目录 4 系统设计 4.1 系统概述 4.2 数据库设计原则 4.3 数据表 第五章 系统实现 5.1用户功能模块 5.2管理员功能模块 5.3前台首页功能模块 4 系统…

可视化是工业互联网的核心技术之一,都有哪些应用场景?

一、工业互联网是什么,发展的来胧去脉 工业互联网是指利用互联网技术和物联网技术,将工业生产中的各种设备、机器、传感器等进行互联互通,实现信息的实时采集、传输和分析,从而实现生产过程的智能化、自动化和高效化。 工业互联网…

微信网页 上传图片压缩

微信网页上传图片时的压缩问题可以通过多种方法解决。以下是一些有效的方案和相关API的使用说明。 主要解决方案 1. 使用Canvas进行自定义压缩: 对于需要适配多种设备和格式的情况,可以利用Canvas API进行图片重绘和压缩。通过获取图片信息、设置Canvas尺寸、绘制图片并…

地图资源下载工具(geodatatool)下载 亚洲 8 米 DEM数据

本数据集提供的 DEM 镶嵌图是由 DigitalGlobe 卫星的超高分辨率 (VHR) 沿轨和跨轨立体图像生成的。为了生成 DEM 镶嵌图块,超过 4000 个 DEM 条带与加权平均 镶嵌程序合并,以减少错误并消除接缝。镶嵌图块为 100 公里 x 100 公里,8 米处为 …

【easypoi 一对多导入解决方案】

easypoi 一对多导入解决方案 1.需求2.复现问题2.1校验时获取不到一对多中多的完整数据2.2控制台报错 Cannot add merged region B5:B7 to sheet because it overlaps with an existing merged region (B3:B5). 3.如何解决第二个问题处理: Cannot add merged region …

tr命令:替换文本中的字符

一、命令简介 ​tr​ 命令用于转换或删除文件中的字符。它可以从标准输入中读取数据,对数据进行字符替换、删除或压缩,并将结果输出到标准输出。 ‍ 二、命令参数 格式 tr [选项] [集合1] [集合2]选项和参数 ​ ​-c​​: 指定 集合 1 的补集。​ …

Vulhub zico 2靶机详解

项目地址 https://download.vulnhub.com/zico/zico2.ova实验过程 将下载好的靶机导入到VMware中,设置网络模式为NAT模式,然后开启靶机虚拟机 使用nmap进行主机发现,获取靶机IP地址 nmap 192.168.47.1-254根据对比可知Zico 2的一个ip地址为…

以太网交换安全:MAC地址表安全

一、MAC地址表安全 MAC地址表安全是网络安全中的一个重要方面,它涉及到网络设备的MAC地址表的管理和保护。以下是对MAC地址表安全的详细介绍: (1)基本概念 定义:MAC地址表是网络设备(如交换机&#xff0…

群晖安装Audiobookshelf(有声书)

一、Audiobookshelf是什么? Audiobookshelf是一款自托管的有声读物和播客服务器,用于管理和播放您的有声读物。为用户提供便捷、个性化的音频书籍管理与播放体验 支持网页端、安卓端、IOS端三端同步,支持对有声书进行不同分类。 二、安装教程 通过群晖…

【C语言进阶】一次解决字符串输入问题——为什么输入这么容易奔溃?

文章一览 写在前面一、scanf、getchar与gets函数的爱恨情仇1.1 scanf函数1.1.1 %c输入单个字符2. %s 输入字符串1.1.3 %d输入数字 1.2 getchar函数1.3 gets函数 二、不同输入情况下的使用三、回顾C语言的输入函数总结 写在前面 在之前的文章中,笔者详细介绍了scanf函…

基于Springboot+Vue的课程教学平台的设计与实现系统(含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 这个系…

Arm Linux 交叉编译openssl 1.1.1

一、openssl 源码下载 OpenSSL的官方网站或源代码仓库下载最新或指定版本的OpenSSL源代码。 官网地址: https://openssl-library.org/source/index.html 旧版本下载: https://openssl-library.org/source/old/index.html 这里以 1.1.1 为例 国内git…

网线最短不能短于1米?

大家都知道网线最长不能长于100米,但你有没有听说过“网线最短不能短于1米”这个说法呢?也有的朋友说不能低于0.6米。 有的网友说“‌‌网线最短1米的说法是真的。‌ 短于1米的网线电阻几乎为零,设备可能无法识别,因此在实际应用中…

Android 安卓内存安全漏洞数量大幅下降的原因

谷歌决定使用内存安全的编程语言 Rust 向 Android 代码库中写入新代码,尽管旧代码(用 C/C 编写)没有被重写,但内存安全漏洞却大幅减少。 Android 代码库中每年发现的内存安全漏洞数量(来源:谷歌&#xff09…

【前端开发入门】html快速入门

目录 引言html基础模板内容html文档流html 标签块级元素行内元素功能性元素标签嵌套 html编码习惯总结 引言 本系列教程旨在帮助一些零基础的玩家快速上手前端开发。基于我自学的经验会删减部分使用频率不高的内容,并不代表这部分内容不重要,只是对于初学…

一站式大语言模型API调用:快速上手教程

智匠MindCraft是一个强大的AI工具及开发平台,支持多种大语言模型和多模态AI模型。本文将详细介绍如何通过API调用智匠MindCraft中的大语言模型,帮助开发者快速上手。 注册与登录 访问智匠MindCraft官网,注册并登录账号。 进入开发者平台&…