fastDFS(二) 安装 本是古典 何须时尚 2022-12-25 14:56 123阅读 0赞 FastDFS作为一款轻量级分布式文件系统,版本V6.01代码量6.3万行。FastDFS用C语言实现,支持Linux、FreeBSD、MacOS等类UNIX系统。FastDFS类似google FS,属于应用级文件系统,不是通用的文件系统,只能通过专有API访问,目前提供了C和Java SDK,以及PHP扩展SDK。 FastDFS为互联网应用量身定做,解决大容量文件存储问题,追求高性能和高扩展性。FastDFS可以看做是基于文件的key value存储系统,key为文件ID,value为文件内容,因此称作分布式文件存储服务更为合适。 # 一. 在阿里云中安装FastDFS环境. # 阿里云的ECS版本: Ubuntu 20.04 LTS (GNU/Linux 5.4.0-31-generic x86\_64) 以下的安装文件都放到/opt目录下. ## 1. 在ECS中安装 git 工具: ## apt install git ## 2、下载安装 libfastcommon ## libfastcommon是从 FastDFS 和 FastDHT 中提取出来的公共 C 函数库,基础环境,安装即可 。 # github 地址: https://github.com/happyfish100/libfastcommon.git # gitee 地址: https://gitee.com/fastdfs100/libfastcommon.git 运行以下命令: git clone https://gitee.com/fastdfs100/libfastcommon.git cd libfastcommon; git checkout V1.0.43 ./make.sh clean && ./make.sh && ./make.sh install ## 3、下载安装FastDFS ## github 地址: https://github.com/happyfish100/fastdfs.git gitee 地址: https://gitee.com/fastdfs100/fastdfs.git 运行以下命令: git clone https://gitee.com/fastdfs100/fastdfs.git cd fastdfs; git checkout V6.06 ./make.sh clean && ./make.sh && ./make.sh install 默认安装方式安装后的相应文件与目录: A、服务脚本: /etc/init.d/fdfs_storaged /etc/init.d/fdfs_tracker B、配置文件(这三个是作者给的样例配置文件) : /etc/fdfs/client.conf.sample /etc/fdfs/storage.conf.sample /etc/fdfs/tracker.conf.sample C、命令工具在 /usr/bin/ 目录下: fdfs_appender_test fdfs_appender_test1 fdfs_append_file fdfs_crc32 fdfs_delete_file fdfs_download_file fdfs_file_info fdfs_monitor fdfs_storaged fdfs_test fdfs_test1 fdfs_trackerd fdfs_upload_appender fdfs_upload_file stop.sh restart.sh ## 4、在/opt/fastdfs目录中运行以下命令创建配置文件. ## ./setup.sh /etc/fdfs #再查看一下/etc/fdfs目录,看是否已经创建好了配置文件 ls /etc/fdfs -------以下是创建后的文件 client.conf http.conf storage.conf storage_ids.conf tracker.conf client.conf.sample mime.types storage.conf.sample storage_ids.conf.sample tracker.conf.sample ## 5. 配置FastDFS跟踪器(Tracker) ## ### 1. 进入 /etc/fdfs,修改 tracker.conf ### root@iZ8vbeeelmyzkhxvdqblbyZ:/opt/fastdfs# cd /etc/fdfs root@iZ8vbeeelmyzkhxvdqblbyZ:/etc/fdfs# ls client.conf http.conf storage.conf storage_ids.conf tracker.conf client.conf.sample mime.types storage.conf.sample storage_ids.conf.sample tracker.conf.sample root@iZ8vbeeelmyzkhxvdqblbyZ:/etc/fdfs# vi tracker.conf ### 2. 编辑tracker.conf ### 下面的配置项修改下,其它的默认即可。 # Tracker 数据和日志目录地址(根目录必须存在,子目录会自动创建) base_path=/home/fastdfs/tracker # HTTP 服务端口 http.server_port=80 ### 3. 创建tracker基础数据目录,即base\_path对应的目录 ### mkdir -p /home/fastdfs/tracker ### 4. 防火墙中打开跟踪端口(默认的22122) ### ![2020120215572723.png][] 如果是虚拟机中,则使用以下命令打开端口. # vim /etc/sysconfig/iptables 添加如下端口行: -A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT 重启防火墙: # service iptables restart ### 5. 启动Tracker ### /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart 也可以以服务的方式启动: 1。 首先要 建立 /usr/bin 到 /usr/local/bin 的软链接 ln -s /usr/bin/fdfs_trackerd /usr/local/bin 2. 重启一下服务器: reboot 2. 这样才可以使用服务启动 /sbin/service fdfs_trackerd restart 查看 FastDFS Tracker 是否已成功启动 ,22122端口正在被监听,则算是Tracker服务安装成功。 netstat -unltp|grep fdfs ![20201202160200505.png][] 关闭tracker服务. /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf stop 也可以以服务的方式启动: /sbin/service fdfs_trackerd stop ### 6. 设置Tracker开机启动 ### ubuntu不支持chkconfig命令,用 sysv-rc-conf 替换,请先安装 sysv-rc-conf命令. sudo apt-get update sudo apt-get install sysv-rc-conf 如果安装失败,请参考: [ Ubuntu20 下安装sysv-rc-conf报错][Ubuntu20 _sysv-rc-conf]: sysv-rc-conf安装成功后, 配置开机自启动. sysv-rc-conf fdfs_trackerd on ### 7. tracker server 目录及文件结构 ### Tracker服务启动成功后,会在base\_path下创建data、logs两个目录。目录结构如下: root@iZ8vbeeelmyzkhxvdqblbyZ:/home/fastdfs/tracker# tree . ├── data │ ├── fdfs_trackerd.pid #进程编号 │ ├── storage_changelog.dat #日志 │ ├── storage_groups_new.dat # 存储分组信息 │ ├── storage_servers_new.dat #存储服务器列表 │ └── storage_sync_timestamp.dat #同步时间 └── logs └── trackerd.log #日志 ## 6、配置 FastDFS 存储 (Storage) ## ### 1) 进入 /etc/fdfs, 编辑 storage.conf ### # Storage 数据和日志目录地址(根目录必须存在,子目录会自动生成) base_path=/home/fastdfs/storage # 存放文件时 storage server 支持多个路径。这里配置存放文件的基路径数目,通常只配一个目录。 store_path_count=1 # 逐一配置 store_path_count 个路径,索引号基于 0。 # 如果不配置 store_path0,那它就和 base_path 对应的路径一样。 store_path0=/home/fastdfs/file # FastDFS 存储文件时,采用了两级目录。这里配置存放文件的目录个数。 # 如果本参数只为 N(如: 256),那么 storage server 在初次运行时,会在 store_path 下自动创建 N * N 个存放文件的子目录。 subdir_count_per_path=256 # tracker_server 的列表 ,会主动连接 tracker_server # 有多个 tracker server 时,每个 tracker server 写一行 # ip不能是localhost或是127.0.0.1 tracker_server=外网ip:22122 # 允许系统同步的时间段 (默认是全天) 。一般用于避免高峰同步产生一些问题而设定。 sync_start_time=00:00 sync_end_time=23:59 # 访问端口 http.server_port=80 ### 2) 创建Storage基础数据目录,对应base\_path目录 ### root@iZ8vbeeelmyzkhxvdqblbyZ:/etc/fdfs# cd /home/fastdfs/ root@iZ8vbeeelmyzkhxvdqblbyZ:/home/fastdfs# ls tracker root@iZ8vbeeelmyzkhxvdqblbyZ:/home/fastdfs# mkdir -p storage root@iZ8vbeeelmyzkhxvdqblbyZ:/home/fastdfs# mkdir -p file ### 3) 防火墙中打开存储器端口(默认的 23000) ### ![20201203165730223.png][] ### 重启服务器: ### reboot ### 4) 启动 Storage ### 启动Storage前确保Tracker是启动的。初次启动成功,会在 /home/fastdfs/storage 目录下创建 data、 logs 两个目录。 service fdfs_storaged start 查看 Storage 是否成功启动,23000 端口正在被监听,就算 Storage 启动成功(此时应该有两个服务 fdfs\_storaged, fdfs\_trackerd )。 netstat -unltp|grep fdfs root@iZ8vbeeelmyzkhxvdqblbyZ:~# netstat -unltp|grep fdfs tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 594/fdfs_storaged tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 598/fdfs_trackerd 如果无法启动 storage, 请查看日志文件,并找出错误原因: cat /home/fastdfs/storage/logs/storaged.log 例如下面有一个错误,表示的是 storage中配置的tracker地址不能是 localhost,必须是ip地址. [2020-12-03 16:58:49] ERROR - file: storage_func.c, line: 1361, conf file "/etc/fdfs/storage.conf", tracker: "127.0.0.1:22122" is invalid, tracker server ip can't be 127.0.0.1 如果能勉励看到服务了,说明storage启动没有问题,再查看Storage和Tracker是否在通信: /usr/bin/fdfs_monitor /etc/fdfs/storage.conf root@iZ8vbeeelmyzkhxvdqblbyZ:~# /usr/bin/fdfs_monitor /etc/fdfs/storage.conf [2020-12-07 14:22:29] DEBUG - base_path=/home/fastdfs/storage, connect_timeout=5, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=1, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0 server_count=1, server_index=0 tracker server is 39.99.175.175:22122 group count: 1 Group 1: group name = group1 disk total space = 40,188 MB disk free space = 32,536 MB trunk free space = 0 MB storage server count = 1 active server count = 1 storage server port = 23000 storage HTTP port = 80 store path count = 1 subdir count per path = 256 current write server index = 0 current trunk file id = 0 Storage 1: id = 39.99.175.175 ip_addr = 39.99.175.175 ACTIVE http domain = version = 6.06 join time = 2020-12-07 14:19:35 up time = 2020-12-07 14:19:35 total storage = 40,188 MB free storage = 32,536 MB upload priority = 10 store_path_count = 1 subdir_count_per_path = 256 storage_port = 23000 storage_http_port = 80 current_write_path = 0 source storage id = if_trunk_server = 0 connection.alloc_count = 256 connection.current_count = 0 connection.max_count = 0 total_upload_count = 0 success_upload_count = 0 total_append_count = 0 success_append_count = 0 total_modify_count = 0 success_modify_count = 0 total_truncate_count = 0 success_truncate_count = 0 total_set_meta_count = 0 success_set_meta_count = 0 total_delete_count = 0 success_delete_count = 0 total_download_count = 0 success_download_count = 0 total_get_meta_count = 0 success_get_meta_count = 0 total_create_link_count = 0 success_create_link_count = 0 total_delete_link_count = 0 success_delete_link_count = 0 total_upload_bytes = 0 success_upload_bytes = 0 total_append_bytes = 0 success_append_bytes = 0 total_modify_bytes = 0 success_modify_bytes = 0 stotal_download_bytes = 0 success_download_bytes = 0 total_sync_in_bytes = 0 success_sync_in_bytes = 0 total_sync_out_bytes = 0 success_sync_out_bytes = 0 total_file_open_count = 0 success_file_open_count = 0 total_file_read_count = 0 success_file_read_count = 0 total_file_write_count = 0 success_file_write_count = 0 last_heart_beat_time = 2020-12-07 14:22:11 last_source_update = 1970-01-01 08:00:00 last_sync_update = 1970-01-01 08:00:00 last_synced_timestamp = 1970-01-01 08:00:00 正常启动storage后,可以看到在base\_path 下创建了data、logs目录,记录着 Storage Server 的信息。 在 store\_path0 目录下,创建了N\*N个子目录: root@iZ8vbeeelmyzkhxvdqblbyZ:/home/fastdfs/file/data# ls /home/fastdfs/file/data 00 0D 1A 27 34 41 4E 5B 68 75 82 8F 9C A9 B6 C3 D0 DD EA F7 01 0E 1B 28 35 42 4F 5C 69 76 83 90 9D AA B7 C4 D1 DE EB F8 02 0F 1C 29 36 43 50 5D 6A 77 84 91 9E AB B8 C5 D2 DF EC F9 03 10 1D 2A 37 44 51 5E 6B 78 85 92 9F AC B9 C6 D3 E0 ED FA 04 11 1E 2B 38 45 52 5F 6C 79 86 93 A0 AD BA C7 D4 E1 EE FB 05 12 1F 2C 39 46 53 60 6D 7A 87 94 A1 AE BB C8 D5 E2 EF FC 06 13 20 2D 3A 47 54 61 6E 7B 88 95 A2 AF BC C9 D6 E3 F0 FD 07 14 21 2E 3B 48 55 62 6F 7C 89 96 A3 B0 BD CA D7 E4 F1 FE 08 15 22 2F 3C 49 56 63 70 7D 8A 97 A4 B1 BE CB D8 E5 F2 FF 09 16 23 30 3D 4A 57 64 71 7E 8B 98 A5 B2 BF CC D9 E6 F3 0A 17 24 31 3E 4B 58 65 72 7F 8C 99 A6 B3 C0 CD DA E7 F4 0B 18 25 32 3F 4C 59 66 73 80 8D 9A A7 B4 C1 CE DB E8 F5 0C 19 26 33 40 4D 5A 67 74 81 8E 9B A8 B5 C2 CF DC E9 F6 ### 5) 设置 Storage 开机自启动 ### sysv-rc-conf fdfs_storaged on 查看开机自启动是否成功: sysv-rc-conf --list 结果如下: root@iZ8vbeeelmyzkhxvdqblbyZ:~# sysv-rc-conf --list aegis 2:on 3:on 4:on 5:on apparmor S:on atd 0:off 1:off 2:on 3:on 4:on 5:on 6:off chrony 0:off 1:off 2:on 3:on 4:on 5:on 6:off cron 2:on 3:on 4:on 5:on dbus 2:on 3:on 4:on 5:on fdfs_storage 2:on 3:on 4:on 5:on fdfs_tracker 2:on 3:on 4:on 5:on fio grub-common 2:on 3:on 4:on 5:on irqbalance 0:off 1:off 2:on 3:on 4:on 5:on 6:off kmod S:on mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off ntp 2:off 3:off 4:off 5:off plymouth 0:off 2:on 3:on 4:on 5:on 6:off plymouth-log S:on procps S:on resolvconf 0:off 6:off S:on rsync 2:on 3:on 4:on 5:on rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off ssh 2:on 3:on 4:on 5:on sysstat 2:on 3:on 4:on 5:on udev 0:off 6:off S:on ufw 1:off S:on uuidd 0:off 1:off 2:on 3:on 4:on 5:on 6:off x11-common S:on 可以看到 fdfs\_storage, fdfs\_tracker都已经配置成开机自启动了. ## 7. 文件上传测试 ## ### 1) 修改 Tracker 服务器中的客户端配置文件 ### cd /etc/fdfs vi client.conf 修改以下内容: # the base path to store log files Client 的数据和日志目录 base_path = /home/fastdfs/client #Tracker端口 tracker_server = localhost:22122 2) 在/home/fastdfs下创建client目录 mkdir client 2) 上传测试. 在 ubuntu的 /home下创建或上传一个 test.txt 文件,随例写入一些内容. 以用于测试文件上传 在linux内部执行如下命令上传 test.txt 文件 root@iZ8vbeeelmyzkhxvdqblbyZ:/home# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.txt group1/M00/00/00/rBq3g1_NzIGAAlxnAAAADK8IOy0132.txt 返回文件的格式: group/存储目录/一级子目录/二级子目录/文件id.后缀名 返回的文件ID由group、存储目录、两级子目录、fileid、文件后缀名(由客户端指定,主要用于区分文件类型)拼接而成. 至此, fastDFS安装成功,已经可以接受文件上传了。但有以下问题要解决: 1. fastDFS的的配置文件还有哪些详细内容? 2. 如何下载及查看到文件内容? 3. 如何用java API访问fastDFS中的内容? 4. 如何控制访问权限? [2020120215572723.png]: /images/20221120/76e8c82b9260424b97e96b778a2cc7a4.png [20201202160200505.png]: https://img-blog.csdnimg.cn/20201202160200505.png [Ubuntu20 _sysv-rc-conf]: https://forestcat.blog.csdn.net/article/details/110491570 [20201203165730223.png]: https://img-blog.csdnimg.cn/20201203165730223.png
还没有评论,来说两句吧...