DFS分布式文件存储系统

1. 安装

版本依赖包
FastDFS < 5.05libevent
gcc-c++
perl…未完待续
FastDFS 5.05gcc
gcc-c++
openssl
openssl-devel
pcre
pcre-devel
zlib
zlib-devel
libfastcommon

1.1 安装rpm依赖

事先下载好各rpm包,离线安装gcc、gcc-c++、openssl、openssl-devel、pcre、pcre-devel、zlib、zlib-devel。
查询:rpm -q name;
安装:rpm -ivh name.rpm --force --nodeps
具体脚本如下:

#!/bin/bash
 
keyword='not installed'

#gcc
output=`rpm -q gcc`
if [[ $output != *$keyword* ]];then 
	echo $output
else
	rpm -ivh gcc-4.4.7-23.el6.x86_64.rpm --force --nodeps
fi

#gcc-c++
output=`rpm -q gcc-c++`
if [[ $output != *$keyword* ]];then
        echo $output
else
        rpm -ivh gcc-c++-4.4.7-23.el6.x86_64.rpm --force --nodeps
fi

#pcre
output=`rpm -q pcre`
if [[ $output != *$keyword* ]];then
        echo $output
else
        rpm -ivh pcre-7.8-7.el6.x86_64.rpm --force --nodeps
fi

#pcre-devel
output=`rpm -q pcre-devel`
if [[ $output != *$keyword* ]];then
        echo $output
else
        rpm -ivh pcre-devel-7.8-7.el6.x86_64.rpm --force --nodeps
fi

#openssl
output=`rpm -q openssl`
if [[ $output != *$keyword* ]];then
        echo $output
else
        rpm -ivh openssl-1.0.1e-57.el6.x86_64.rpm --force --nodeps
fi

#openssl-devel
output=`rpm -q openssl-devel`
if [[ $output != *$keyword* ]];then
        echo $output
else
        rpm -ivh openssl-devel-1.0.1e-57.el6.x86_64.rpm --force --nodeps
fi

#zlib
output=`rpm -q zlib`
if [[ $output != *$keyword* ]];then
        echo $output
else
        rpm -ivh zlib-1.2.3-29.el6.x86_64.rpm --force --nodeps
fi

#zlib-devel
output=`rpm -q zlib-devel`
if [[ $output != *$keyword* ]];then
        echo $output
else
        rpm -ivh zlib-devel-1.2.3-29.el6.x86_64.rpm --force --nodeps
fi

1.2 安装fastcommon

安装步骤是:解压——编译——安装

echo "start install libfastcommon" 
tar -zxvf libfastcommonV1.0.7.tar.gz -C . > /dev/null
cd libfastcommon-1.0.7/
./make.sh > libfastcommon.log 
./make.sh install > libfastcommoninstall.log

# copy dependencies to /usr/lib
cp /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so 

1.3 安装fastDfs

fastdfs是源码安装,需要c的编译环境,安装步骤是:解压——编译——安装

[root@fastdfs fast]# cd /usr/local/software/
[root@fastdfs software]# ll
-rw-r--r--. 1 root root 345400 4月  11 03:28 FastDFS_v5.05.tar.gz
-rw-r--r--. 1 root root 102378 4月  11 03:28 libfastcommon-master.zip
[root@fastdfs software]# tar -zxvf FastDFS_v5.05.tar.gz -C /usr/local/fast/
[root@fastdfs software]# cd /usr/local/fast/FastDFS/
[root@fastdfs FastDFS]# ./make.sh
[root@fastdfs FastDFS]# ./make.sh install

-----待确认-----
安装完成后,服务一系列的脚本在/usr/bin/;配置文件默认在/etc/fdfs/,若安装时更改位置,则在自定义的安装路径下,这里我们安装到/opt/infosec/FileServer;

在/etc/init.d/下有fdfs_storaged和fdfs_trackerd,内部bin目录为/usr/local/bin/,但是实际我们安装在了/usr/bin/下面。所以我们需要修改这两个配置文件。
在这里插入图片描述
在这里插入图片描述
-----待确认-----

2. 使用

DFS相关文件及作用:
启停追踪服务:/usr/bin/fdfs_trackerd /opt/infosec/FileServer/conf/tracker.conf start/stop/restart
启停存储服务:/usr/bin/fdfs_storaged /opt/infosec/FileServer/conf/storage.conf start/stop/restart

DFS相关文件作用示例
/etc/rc3.d/FileServer.sh启停DFS的追踪、存储服务,是对dfs命令的封装/etc/rc3.d/FileServer.sh s restart
/etc/rc3.d/FileServer.sh t restart
/etc/rc3.d/FileServerConf.sh增减配置/etc/rc3.d/FileServerConf.sh add xxx
/etc/rc3.d/FileServerConf.sh remove
/opt/infosec/FileServer/conf/storage.conf配置存储服务器端口,base_path配置真实的存储路径
配置追踪服务器地址,多个地址用逗号隔开
port=23000
base_path=/opt/infosec/FileServer/storage
tracker_server=10.20.87.66:22122,10.20.86.243:22122
/opt/infosec/FileServer/conf/tracker.conf配置追踪服务器端口,base_path配置追踪日志等数据存储路径port=22122
base_path=/opt/infosec/FileServer/tracker
/opt/infosec/FileServer/conf/client.conf配置追踪服务器地址,base_path与追踪服务器的base_path保持一致base_path=/opt/infosec/FileServer/tracker
tracker_server=10.20.87.66:22122

client.conf:当在linux上使用命令行测试dfs的功能时,需要在client.conf里面配置追踪服务器地址

由ps -elf|grep dfs查询dfs的运行状态:结果包含storage.conf代表存储服务启动,结果包含tracker.conf代表追踪服务启动。
在这里插入图片描述

测试

文件上传,成功后返回存储路径

[root@fastdfs bin]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/software/3.jpg
group1/M00/00/00/wKicDVjr_ayAE4VVAAHk-VzqZ6w020.jpg
[root@fastdfs bin]#

3. 常见问题

3.1 stroarge无法启动

  1. 检查stroarge.conf中配置的23000端口启动情况,执行lsof -i:23000发现没有进程信息,说明未启动成功
[root@VM-8-4-centos rc3.d]# lsof -i:23000
[root@VM-8-4-centos rc3.d]# 
  1. 检查stroarge.log日志信息,使用tail -f xxx
[root@VM-8-4-centos ~]# tail -f /opt/infosec/FileServer/storage/logs/storaged.log
[2021-05-19 14:43:55] ERROR - file: storage_func.c, line: 896, mkdir "/home/fast_dfs/storage/store/data" fail, errno: 2, error info: No such file or directory
[2021-05-19 14:43:55] CRIT - file: storage_func.c, line: 1873, storage_check_and_make_data_dirs fail, program exit!
[2021-05-19 14:43:55] CRIT - exit abnormally!

发现是stroarge.conf配置的store_path0=/home/fast_dfs/storage/store,结果mkdir "/home/fast_dfs/storage/store/data"失败,是因为上层目录不存在,导致报错。手动创建路径后,成功!
应该使用mkdir -p “/home/fast_dfs/storage/store/data”,上层目录不存在时,一并创建。
配置的store_path0路径一定要真实存在

3.2 在上传时报错 getStoreStorage fail, errno code: 28

[root@VM-8-4-centos ~]# cd /opt/infosec/NetSeal/log/web/
[root@VM-8-4-centos web]# ls
debug.log  error.2021-05-18.log  error.log  info.2021-05-18.log  info.log
[root@VM-8-4-centos web]# tail -f error.log
Caused by: org.csource.common.MyException: getStoreStorage fail, errno code: 28
        at org.csource.fastdfs.StorageClient.newWritableStorageConnection(StorageClient.java:1622)
        at org.csource.fastdfs.StorageClient.do_upload_file(StorageClient.java:729)
        at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:175)
        at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:193)
        at org.csource.fastdfs.StorageClient1.upload_file1(StorageClient1.java:115)
        at cn.com.infosec.netseal.common.util.FastDFSUtil.upload(FastDFSUtil.java:99)
        at cn.com.infosec.netseal.common.util.FileUtil.saveFile(FileUtil.java:396)
        at cn.com.infosec.netseal.webserver.service.impl.CertServiceImpl.certToDb(CertServiceImpl.java:236)
        ... 161 common frames omitted

在寻求度娘的帮助后,发现有可能是因为存储空间不足导致的上传失败。

  1. 查看tracker.conf配置中reserved_storage_space的值,经查询reserved_storage_space=50%
  2. 查看系统剩余存储空间,命令df -h
    发现20G空间,使用56%,余44%,44%<50%,不满足reserved_storage_space配置
    可以将reserved_storage_space数值改小一点,即可解决
[root@VM-8-4-centos rc3.d]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        485M     0  485M   0% /dev
tmpfs           496M   24K  496M   1% /dev/shm
tmpfs           496M  536K  495M   1% /run
tmpfs           496M     0  496M   0% /sys/fs/cgroup
/dev/vda1        20G   11G  8.4G  56% /
tmpfs           100M     0  100M   0% /run/user/0
[root@VM-8-4-centos rc3.d]#

3.3 无法安装

3.3.1 gcc: error trying to exec ‘cc1’: execvp: 没有那个文件或目录

排查:(3和4不知道是否有用)
1. ping www.baidu.com 看网通不通,yum update 看yum源是否可用
2. yum源地址不可用时:上传自己的神器yum.repos.d.tgz,解压替换至/etc/yum.repos.d
3. 执行 yum install gcc-objc,还不行再往下看
4. 执行 yum install make libpng libpng-devel libtiff libtiff-devel libobjc libxml2 libxml2-devel libX11-devel libXt-devel libjpeg libjpeg-devel
5. 检查glibc-devel、cpp、binutils、mpfr、jemalloc是否安装:

rpm -qa glibc-devel;	yum install -y glibc-devel;
rpm -qa cpp;			yum install -y cpp;
rpm -qa binutils;		yum install -y binutils;
rpm -qa mpfr;			yum install -y mpfr;
rpm -qa jemalloc;		yum install -y jemalloc;

3.3.2 ./make.sh: line 99: perl: command not found

排查:
1.检查perl是否安装:
rpm -qa perl; yum install -y perl perl-devel;

集群

参考CSDN一位大牛的博客,fastdfs专栏,包括单机和集群的讲解
在这里插入图片描述
在这里插入图片描述

安装完dfs后,默认有三个配置文件
在这里插入图片描述
此处为了用命令行测试,所以复制一份client.conf,改一下配置,作为命令行操作时使用
在这里插入图片描述
client.conf改成正确的地址,base_path与tracker.conf中的base_path保持一致,tracker_server配置为要连接的tracker服务器地址
在这里插入图片描述

简洁化上传,只上传一份。
在这里插入图片描述
也可以用/usr/bin/fdfs_test 的upload操作,这种有详细信息,上传一个文件,实际会上传两次,并且每一次都有主从两个文件,也就是最终会有4个文件,比较占内存,删除时需要删两次,所以不建议用这种。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下载文件,自动保存至当前路径。
在这里插入图片描述
在这里插入图片描述
删除文件
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值