最近更新时间:2025-03-03 12:07:15
本文介绍如何通过juicefs sync工具实现金山云对象存储KS3和文件存储KPFS(容量型&标准型)之间的数据双向迁移,包括将您金山云账号下的KS3存储桶数据同步至KPFS文件系统 以及 将KPFS文件系统数据同步至KS3存储桶。
如果您使用云服务器或裸金属服务器作为数据传输的中转节点,则会根据实例配置收取费用。
KPFS数据迁移至KS3,迁移过程中或涉及到KS3 Put类请求费用。KS3数据迁移至KPFS,迁移过程中会涉及到KS3 Get类请求费用。请参见 KS3 计费说明。
在执行迁移的云服务器或裸金属挂载KPFS文件系统,参考 快速上手-挂载文件系统
使用sync命令将您账号下的KS3存储桶数据同步至KPFS文件系统
AK:
快速上手-挂载文件系统 中获取到的AccessKey
SK:
快速上手-挂载文件系统 中获取到的SecretKey
bucket:
待同步的存储桶名称
endpoint:
待同步的存储桶endpoint
vol_name:
KPFS文件系统名称
prefix:
可选,源路径和目标路径的前缀,可用于限定只同步某些路径中的数据。
juicefs sync ks3://AK:SK@bucket.endpoint/prefix jfs://vol_name/prefix
如下为可提升单机sync
性能的关键参数(需根据待迁移文件大小 以及 执行迁移的云服务器或裸金属的性能灵活调整)
--flush-wait=5s
:持久化到KPFS后端的时间间隔,默认 5s。在大文件写入慢的情况下,过于频繁地调用持久化会导致碎片化,可以考虑增加时间间隔,如10s、30s
--buffer--size
:客户端读写缓冲区大小,单位 MiB,默认 300。在大文件同步情况下,可根据客户端实际可分配的内存资源情况提高读写缓冲区大小以提高同步性能,如1024、2048
--threads
:并发线程数,默认为 10。可根据需要设置 --threads
选项调大或减少线程数,增大并发数会增加资源占用,如果您的单机资源不足,可以考虑使用分布式同步
--max-uploads
:上传并发度,默认为 20。可提高该参数以提高同步性能(KPFS容量Ⅰ型及容量Ⅱ型建议至多调整为64,标准型建议至多调整为256)
juicefs sync --flush-wait=30s --buffer-size=1024 --threads=50 --max-uploads=64 ks3://AK:SK@bucket.endpoint/prefix jfs://vol_name/prefix
在sync
大量数据时,单机带宽往往会被占满出现瓶颈,针对这种情况,考虑使用多机并发sync
。
Manager节点:作为主控节点执行sync
命令,通过 --worker
参数定义多个 Worker 节点(Manager 自身也参与sync),会根据 Worker 的总数量,动态拆分同步任务并分发给各个节点并发执行,单位时间内能处理的数据量更大,总带宽也成倍增加。
Worker节点:执行数据sync
步骤如下:
步骤1:提前配置好 Manager 节点到 Worker 节点的 SSH 免密登录
如果 Worker 节点的 SSH 端口不是默认的 22,请在 Manager 节点的 ~/.ssh/config
设置其端口号。Manager 会将 客户端程序分发到 Worker 节点,为避免兼容性问题,Manager 和 Worker 应使用相同类型和架构的操作系统。
步骤2:在Manager节点上挂载文件系统后运行sync指令,--worker
为工作节点列表,使用逗号分隔。
juicefs sync --worker ip1,ip2 ks3://AK:SK@bucket.endpoint/prefix jfs://vol_name/prefix
运行这个命令后,当前节点与两个 Worker 节点 ip1
和 ip2
将共同分担数据同步任务。同样的,您也可以参考性能提升参数部分进行性能调优。
在执行迁移的云服务器或裸金属挂载KPFS文件系统,参考 快速上手-挂载文件系统
使用sync命令将您账号下的KPFS文件系统数据同步至KS3存储桶
vol_name:
KPFS文件系统名称
AK:
快速上手-挂载文件系统 中获取到的AccessKey
SK:
快速上手-挂载文件系统 中获取到的SecretKey
bucket:
待同步的存储桶名称
endpoint:
待同步的存储桶endpoint
prefix:
可选,源路径和目标路径的前缀,可用于限定只同步某些路径中的数据。
juicefs sync jfs://vol_name/prefix ks3://AK:SK@bucket.endpoint/prefix
参考性能提升参数
juicefs sync --flush-wait=30s --buffer-size=1024 --threads=50 --max-uploads=64 jfs://vol_name/prefix ks3://AK:SK@bucket.endpoint/prefix
参考分布式同步,将步骤2的命令替换为:
juicefs sync --worker ip1,ip2 jfs://vol_name/prefix ks3://AK:SK@bucket.endpoint/prefix
纯净模式