四台 debian 服务器下如何优雅地保持某个超大文件夹下的文件同步?

2023-08-01 03:40:04 +08:00
 spediacn

有四台 debian11 服务器,在其上保持四台服务器都能读写某一个文件夹并在其他服务器上实时同步,看看各位有什么脑洞?

注意:

  1. 这个文件夹下文件和子文件夹数量很庞大,可以达到百万;
  2. 可以用共享文件夹协议,也可以用文件同步协议,也可以用各种高速缓存组件,不考虑磁盘占用的空间浪费,可以冗余最高 4 份;服务器配置相同,内存均为 512G ,硬盘数量相同,CPU 也相同;写入频次和增量大约每秒 100 个文件或每秒 100M 数据量,读的频次很高,大约每秒读 500 个文件或者 300M 数据量
  3. 只有一个目的:该文件夹的读写是四台服务器高速共用的,网卡都是多个万兆口,不论同步预读还是共享,希望实际环境中不要长时间把带宽拉满哦。
4352 次点击
所在节点    Linux
45 条回复
vivisidea
2023-08-02 15:12:39 +08:00
需求细节还有些不清晰,比如“四台服务器都能读写某一个文件夹”具体会读写到同一个文件么? 如果两台服务器都在写同一个文件,以谁为准?怎么同步?

另外就是写的过程中可能会被读么?读到不完整文件会有什么问题么?
vivisidea
2023-08-02 15:13:55 +08:00
我会优先考虑对象存储,比如 S3 、MinIO ,其次会考虑 NFS 、ceph 、glusterfs 这些方案
mayli
2023-08-07 23:42:30 +08:00
@nuk 所以是穷人的方案
spediacn
2023-08-11 22:11:21 +08:00
一直忙着部署,没空上来看一下,今天来看居然有好多!感谢大家的建议,我列一下我的场景:

1. 这四台服务器配置为 Intel Silver 4416Y/521G DDR4/960G SSD*3/4T SATA 7200RPM*9
2. 要部署一套 4 节点高性能 ArcGIS Server 集群,集群需要依赖一个高速共享存储空间,用于存放集群配置和地图数据包,高速共享存储空间 ArcGIS Server 并没有做过多验证,他只要有一个文件夹能够四台服务器同时读写即可,但如果做同步的话,延迟不可太高,检测时如果写入完毕后超过十几秒后另外几台读不到文件就会出现离线判定;
3. ArcGIS Server 主要用于发布地图服务,也就是说读的业务量较大,但大部分服务在首次访问前会自动渲染缓存数据(瓦片 Tiles ),每个服务大约会生成 3000 万个 100-500KB 的瓦片文件,因此在渲染缓存时有超巨量的小文件写入,如果采用同步方式的话,此时同步压力巨大(我实测 rsync 会崩、fastdfs 扛住了、fastcfs 打算试试)
4. ArcGIS Server 存储瓦片有两种方式:分散模式和紧凑模式,分散模式每个瓦片存一个文件,紧凑模式按内置规则约 1000 个瓦片打包为 bundle 文件( zip )存储为一个文件
5. ArcGIS Server 提供大约 1600 个地图数据服务,由此产生的文件数量即使用紧凑模式也还是惊人的,本来用一台高性能 NAS 是最好解决方案,但目前没有,我只好用很土的办法,自己在底层直接挂 4T 裸盘然后用 zfs 组成一个存储池,再加入一块 ssd 做缓存,每台可提供 28TB 的存储空间
6. 目前不确定的是假如我在 zfs 之上叠一层 fastdfs/fastcfs ,他的同步性能如何?目前只能说没有崩溃,不过都在测试,后续我打算看看 fastdfs/fastcfs 的冗余策略测试一下,再和大家汇报
spediacn
2023-08-31 17:42:19 +08:00
@0superx0 主要每一台都有本地硬盘,不用会感觉浪费。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/961366

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX