fastdfs icon indicating copy to clipboard operation
fastdfs copied to clipboard

多个store_path时的分配问题及阈值问题

Open lystormenvoy opened this issue 2 years ago • 5 comments

多个store_path时的分配问题及阈值问题

版本6.9.4

配置类似:

store_path_count=4
store_path0=/nfs1
store_path1=/nfs2
store_path2=/nfs3
store_path3=/nfs4

问题1: 阈值是10%,不同path的容量不同。 按目前fastdfs的设计,是轮流传到4个store_path里。 假设 store_path1 的容量接近阈值了,比如差1GB到达阈值,那么我在上传2GB的文件的时候,会因为超过阈值而中断上传,报错Connection reset by peer: socket write error。但是当我后续再上传其他文件,又轮到传store_path1的时候,还是循环出现这样的问题。不知道是否能有什么配置或机制,让 store_path 在达到阈值后暂时被剔除出可用store_path里。

[2023-09-22 11:55:57] ERROR - file: storage_service.c, line: 4377, no space to upload file, free space: 2192 MB is too small, file bytes: 915535261, reserved space: 2047 MB(10.00%)
[2023-09-22 11:55:58] ERROR - file: storage_service.c, line: 8155, client ip: 192.168.22.38, unkown cmd: 1

image

问题2: 阈值是10%,不同path的容量不同。 按目前fastdfs的设计,是轮流传到4个store_path里。 假设store_path1的容量达到或超过阈值了,那么目前fastdfs永远都传store_path0,直到store_path0达到阈值,才会传到store_path2或store_path3里。是否有什么配置项或机制可以优化这种情况呢?

lystormenvoy avatar Sep 22 '23 06:09 lystormenvoy

阈值可以配置具体大小值,不一定非得配置百分比

heshc avatar Nov 01 '23 01:11 heshc

阈值可以配置具体大小值,不一定非得配置百分比

这个问题应该和配置类型无关。

我配置阈值是1G的话,这时候剩余1.5G,但传一个2G的文件,不也是有问题?

lystormenvoy avatar Nov 02 '23 08:11 lystormenvoy

1、配置项上传方式有多种模式,轮询、指定storage、剩余空间最大 2、使用上传模式为剩余空间最大时,是哪个空间大往哪传

which path (means disk or mount point) of the storage server to upload file

0: round robin

2: load balance, select the max free space path to upload file

store_path = 2 根据这个配置项,你问题1不存在了。 至于问题2 不同path容量不同,设置阈值是1G,肯定是一直往最大剩余空间传。假如剩余1.5G,你传2g的文件,肯定提示空间不足,这时候该考虑扩容了

heshc avatar Nov 13 '23 07:11 heshc

1、配置项上传方式有多种模式,轮询、指定storage、剩余空间最大 2、使用上传模式为剩余空间最大时,是哪个空间大往哪传

which path (means disk or mount point) of the storage server to upload file

0: round robin

2: load balance, select the max free space path to upload file

store_path = 2 根据这个配置项,你问题1不存在了。 至于问题2 不同path容量不同,设置阈值是1G,肯定是一直往最大剩余空间传。假如剩余1.5G,你传2g的文件,肯定提示空间不足,这时候该考虑扩容了

但我们需要用轮询

lystormenvoy avatar Nov 14 '23 05:11 lystormenvoy

用轮询模式,就一开始设计布局合理,比如path大小保持一致。 即使使用剩余空间最大模式,后续使用过程中跟轮询模式也差不多。这个会保障每个path逐渐均匀增加

heshc avatar Nov 14 '23 06:11 heshc