最近更新时间:2025-07-15 16:48:58
本文介绍如何实现金山云对象存储KS3和文件存储KPFS(容量型&标准型)之间的数据双向迁移。
如果使用云服务器或裸金属服务器作为数据传输节点,会根据实例配置收取费用。
KPFS数据迁移至KS3,迁移过程中会涉及到KS3 Put类请求费用。KS3数据迁移至KPFS,迁移过程中会涉及到KS3 Get类请求费用。请参见 KS3 计费说明。
在执行迁移的云服务器或裸金属挂载KPFS文件系统,参考 快速上手-挂载文件系统
执行sync命令将您账号下的KS3存储桶数据迁移至KPFS文件系统
AccessKey:快速上手-挂载文件系统 中获取到的AccessKey。
SecretKey:快速上手-挂载文件系统 中获取到的SecretKey。
bucket:待迁移的存储桶名称。
endpoint:待迁移的存储桶内网域名。
地域 | 内网域名 |
|---|---|
华北1(北京) | ks3-cn-beijing-internal.ksyuncs.com |
西北3区(宁夏) | ks3-cn-ningxia-internal.ksyuncs.com |
西北4(海东) | ks3-cn-qinghai-internal.ksyuncs.com |
华东1(上海) | ks3-cn-shanghai-internal.ksyuncs.com |
vol_name:KPFS文件系统名称。
prefix:可选,源路径和目标路径的前缀,可用于限定只迁移某些路径中的数据。
juicefs sync ks3://AccessKey:SecretKey@bucket.endpoint/prefix jfs://vol_name/prefix数据迁移完成后,执行sync命令将KS3数据删除,以免产生额外费用
--delete-dst:删除目标中多余的文件和目录(即目标中有但源存储中没有的数据)。
--dirs:迁移目录(包括空目录)。
# 在本地创建一个空目录
mkdir empty-dir
juicefs sync ./empty-dir ks3://AccessKey:SecretKey@bucket.endpoint --delete-dst --dirs如下为可提升单机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 ks3://AccessKey:SecretKey@bucket.endpoint/prefix jfs://vol_name/prefix --flush-wait=30s --buffer-size=1024 --threads=50 --max-uploads=64在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://AccessKey:SecretKey@bucket.endpoint/prefix jfs://vol_name/prefix运行这个命令后,当前节点与两个 Worker 节点 ip1 和 ip2 将共同分担数据迁移任务。同样的,您也可以参考性能提升参数部分进行性能调优。
在执行迁移的云服务器或裸金属挂载KPFS文件系统,参考 快速上手-挂载文件系统。
执行sync命令将您账号下的KPFS文件系统数据迁移至KS3存储桶
vol_name:KPFS文件系统名称。
AccessKey:快速上手-挂载文件系统 中获取到的AccessKey。
SecretKey:快速上手-挂载文件系统 中获取到的SecretKey。
bucket:待迁移的存储桶名称。
endpoint:待迁移的存储桶内网域名。
地域 | 内网域名 |
|---|---|
华北1(北京) | ks3-cn-beijing-internal.ksyuncs.com |
西北3区(宁夏) | ks3-cn-ningxia-internal.ksyuncs.com |
西北4(海东) | ks3-cn-qinghai-internal.ksyuncs.com |
华东1(上海) | ks3-cn-shanghai-internal.ksyuncs.com |
prefix:可选,源路径和目标路径的前缀,可用于限定只迁移某些路径中的数据。
juicefs sync jfs://vol_name/prefix ks3://AccessKey:SecretKey@bucket.endpoint/prefix参考性能提升参数。
juicefs sync jfs://vol_name/prefix ks3://AccessKey:SecretKey@bucket.endpoint/prefix --flush-wait=30s --buffer-size=1024 --threads=50 --max-uploads=64 参考分布式同步,将步骤2的命令替换为:
juicefs sync --worker ip1,ip2 jfs://vol_name/prefix ks3://AccessKey:SecretKey@bucket.endpoint/prefix
纯净模式
