fdfs-命令总结

补充
/bin 存放单用户模式下还可以操作的命令.
/usr/sbin Linux系统开机时不会使用到的软件/命令/脚本.
/usr/bin下面的都是系统预装的可执行程序,系统升级有可能会被覆盖.
/usr/local/bin目录是给用户放置自己的可执行程序.

/usr/bin/下的fdfs文件

fdfs_append_file
fdfs_appender_test
fdfs_appender_test1
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

1、fdfs_upload_file
使用“fdfs_upload_file”表示要上传文件,命令:
方法:fdfs_upload_file <config_file> <local_filename>
例如:/usr/bin/fdfs_upload_file /etc/fdfs/client.conf a.txt

在这里插入图片描述

上传过程
FastDFS向使用者提供基本文件访问接口,比如upload、download、append、delete等,以客户端库的方式提供给用户使用。
Storage Server会定期的向Tracker Server发送自己的存储信息。当Tracker Server Cluster中的Tracker Server不止一个时,各个Tracker之间的关系是对等的,所以客户端上传时可以选择任意一个Tracker。
当Tracker收到客户端上传文件的请求时,会为该文件分配一个可以存储文件的group,当选定了group后就要决定给客户端分配group中的哪一个storage server。当分配好storage server后,客户端向storage发送写文件请求,storage将会为文件分配一个数据存储目录。然后为文件分配一个fileid,最后根据以上的信息生成文件名存储文件。
(1)选择tracker server
当集群中不止一个tracker server时,由于tracker之间是完全对等的关系,客户端在upload文件时可以任意选择一个trakcer。
(2)选择存储的group
当tracker接收到upload file的请求时,会为该文件分配一个可以存储该文件的group,支持如下选择group的规则: 1. Round robin,所有的group间轮询 2. Specified group,指定某一个确定的group 3. Load balance,剩余存储空间多多group优先
(3)选择storage server
当选定group后,tracker会在group内选择一个storage server给客户端,支持如下选择storage的规则: 1. Round robin,在group内的所有storage间轮询 2. First server ordered by ip,按ip排序 3. First server ordered by priority,按优先级排序(优先级在storage上配置)
(4)选择storage path
当分配好storage server后,客户端将向storage发送写文件请求,storage将会为文件分配一个数据存储目录,支持如下规则: 1. Round robin,多个存储目录间轮询 2. 剩余存储空间最多的优先
(5)生成Fileid
选定存储目录之后,storage会为文件生一个Fileid,由 storage server ip、文件创建时间、文件大小、文件crc32和一个随机数拼接而成,然后将这个二进制串进行base64编码,转换为可打印的字符串。
(6)选择两级目录
当选定存储目录之后,storage会为文件分配一个fileid,每个存储目录下有两级256*256的子目录,storage会按文件fileid进行两次hash(猜测),路由到其中一个子目录,然后将文件以fileid为文件名存储到该子目录下。
(7)生成文件名
当文件存储到某个子目录后,即认为该文件存储成功,接下来会为该文件生成一个文件名,文件名由group、存储目录、两级子目录、fileid、文件后缀名(由客户端指定,主要用于区分文件类型)拼接而成。
2、fdfs_download_file
使用“fdfs_download_file”可以进行文件的下载,命令:
方法:fdfs_download_file <config_file> <path>
例如:/usr/bin/fdfs_download_file /etc/fdfs/client.conf group1/M00/00/21/rBABl2IgEJ2AXTIxAAC5ERGBk_A734.png

在这里插入图片描述

下载过程
客户端uploadfile成功后,会拿到一个storage生成的文件名,接下来客户端根据这个文件名即可访问到该文件。【Clinent可以直接进Storage读取和下载操作 需要IP地址/P端口号/卷名/文件名,如只知道卷名和文件名,就去找跟踪器,跟踪器会找到对应卷名和文件名所在的存储节点,将ip/p返回给用户…】
跟upload file一样,在downloadfile时客户端可以选择任意tracker server。tracker发送download请求给某个tracker,必须带上文件名信息,tracke从文件名中解析出文件的group、大小、创建时间等信息,然后为该请求选择一个storage用来服务读请求。
tracker发送download请求给某个tracker,必须带上文件名信息,tracke从文件名中解析出文件的group、大小、创建时间等信息,然后为该请求选择一个storage用来服务读请求。由于group内的文件同步时在后台异步进行的,所以有可能出现在读到时候,文件还没有同步到某些storage server上,为了尽量避免访问到这样的storage,tracker按照如下规则选择group内可读的storage。
1、 该文件上传到的源头storage - 源头storage只要存活着,肯定包含这个文件,源头的地址被编码在文件名中。 2、文件创建时间戳==storage被同步到的时间戳且(当前时间-文件创建时间戳) > 文件同步最大时间(如5分钟) - 文件创建后,认为经过最大同步时间后,肯定已经同步到其他storage了。 3、 文件创建时间戳 < storage被同步到的时间戳。 - 同步时间戳之前的文件确定已经同步了 4、 (当前时间-文件创建时间戳) > 同步延迟阀值(如一天)。 - 经过同步延迟阈值时间,认为文件肯定已经同步了。
3、fdfs_file_info
使用fdfs_file_info可以查看到而文件的详细存储信息
这时FastDFS会给我们返回该文件的存储服务器节点id、存储服务器的ip地址、文件上传的时间、文件大小以及crc32的校验信息(保证数据的正确,就不得不采用检错的手段)。
命令:
方法:fdfs_file_info <config_file> <path>
例如: /usr/bin/fdfs_file_info /etc/fdfs/client.conf group1/M00/00/1F/rBABtGIfljmACwDjAAC5ERGBk_A347.png  
4、fdfs_delete_file
使用fdfs_delete_file可以删除文件,命令:
方法:fdfs_delete_file <config_file> <path>
例如: /usr/bin/fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/1F/rBABtGIfljmACwDjAAC5ERGBk_A347.png  
5、 fdfs_upload_appender/fdfs_append_file
使用"fdfs_upload_appender"表示要上传一个可以追加内容的文件,后面跟上客户端的配置文件以及要上传的文件的路径:
# echo "upload_appende 2022-3-3"  >a.txt
# echo "upload_appender2 2022-3-3" >b.txt
#/usr/bin/fdfs_upload_appender /etc/fdfs/client.conf a.txt 
# cat rBABl2IgHTaENYMrAAAAADBEg7A330.txt 
upload_appender 2022-3-3

// 追加内容
# /usr/bin/fdfs_append_file /etc/fdfs/client.conf group1/M09/00/21/rBABl2IgHTaENYMrAAAAADBEg7A330.txt b.txt 
# cat rBABl2IgHTaENYMrAAAAADBEg7A330.txt 
upload_appender 2022-3-3
upload_appender2 2022-3-3

在这里插入图片描述

步骤:
首先将第一个文件作为可追加文件上传到了存储服务器。
然后使用“fdfs_append_file”表示可以将内容追加到目标文件尾部,后面跟上客户端的配置文件以及要追加的目标文件在存储服务器的路径,以及要追加内容的本地文件路径
到存储服务器中观察,发现文件还是一个,但是文件内容被成功追加
6、fdfs_monitor查看确认storage是否自动注册到tracker中
在storage容器或者tracker容器中运行 fdfs_monitor /etc/fdfs/storage.conf
//删除storage节点
usr/bin/fdfs_monitor /etc/fdfs/storage.conf delete group3 172.16.1.180 
//增加Storage节点(通过配置,自动加入)。

//节点的状态
# FDFS_STORAGE_STATUSINIT      :初始化,尚未得到同步已有数据的源服务器
# FDFS_STORAGE_STATUSWAIT_SYNC :等待同步,已得到同步已有数据的源服务器
# FDFS_STORAGE_STATUSSYNCING   :同步中
# FDFS_STORAGE_STATUSDELETED   :已删除,该服务器从本组中摘除
# FDFS_STORAGE_STATUSOFFLINE   :离线
# FDFS_STORAGE_STATUSONLINE    :在线,尚不能提供服务
# FDFS_STORAGE_STATUSACTIVE    :在线,可以提供服务

 # group_name:所属组名
 # ip_addr:ip地址
 # version:
 # sync_src_ip_addr:向该storage server同步已有数据文件的源服务器
 # sync_until_timestamp:同步已有数据文件的截至时间(UNIX时间戳)
 # total storage: 总存储量
 # free storage
 # upload priority: 上传优先级
 # store_path_count: 路径数量
 # subdir_count_per_path: 每级文件夹数量
 # storage_port
 # storage_http_port
 # current_write_path: 当前写入路径
 # source storage id: 源存储id 
 # if_trunk_server :是否使用trunk
 # connection.alloc_count
 # connection.current_count
 # connection.max_count: 最大并发连接数
 # total_upload_count:上传文件次数
 # success_upload_count:成功上传文件次数
 # total_append_count:追加文件次数
 # success_append_count:成功追加文件次数
 # total_modify_count:总修改次数
 # success_modify_count :成功修改数
 # total_truncate_count :总截断计次数
 # success_truncate_count:成功截断次数
 # total_set_meta_count:更改meta data次数
 # success_set_meta_count:成功更改meta data次数
 # total_delete_count:删除文件次数
 # success_delete_count:成功删除文件次数
 # total_download_count:下载文件次数
 # success_download_count:成功下载文件次数
 # total_get_meta_count:获取meta data次数
 # success_get_meta_count:成功获取meta data次数
 # total_create_link_count:创建链接次数
 # success_create_link_count:成功创建链接次数
 # total_delete_link_count :删除链接次数
 # success_delete_link_count :成功删除链接次数
 # total_upload_bytes :上传字节总数
 # success_upload_bytes :成功上传字节总数
 # total_append_bytes :追加
 # success_append_bytes
 # total_modify_bytes 
 # success_modify_bytes
 # stotal_download_bytes
 # success_download_bytes
 # total_sync_in_bytes :同步字节数 
 # success_sync_in_bytes 
 # total_sync_out_bytes 
 # success_sync_out_bytes 
 # total_file_open_count 
 # success_file_open_count 
 # total_file_read_count 
 # success_file_read_count 
 # total_file_write_count: 文件写入次数
 # success_file_write_count:文件成功写入凑数
 # last_heart_beat_time:最近一次storage向tracker发送心跳的时间
 # last_source_update:最近一次源头更新时间(更新操作来自客户端)
 # last_sync_update:最近一次同步更新时间(更新操作来自其他storage server的同步)
 # last_synced_timestamp: 最近一次同步时间戳 

7. 启动命令

service fdfs_storaged restart
service fdfs_trackerd  restart

docker容器启动服务:
fdfs_storaged /etc/fdfs/storage.conf start
fdfs_trackerd /etc/fdfs/tracker.conf start

/usr/local/nginx/sbin/nginx -s reload
curl -i 127.0.0.1:8888 //查看nginx 版本
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值