移植

此处使用的解决方案是在逻辑上将大型 NFS 共享分成两个区域:

  • 一个称为“运行 NFS”共享的区域,仅包含待处理的数据,以及用于后处理和重新处理的数据。
  • 可以定期清理的临时暂存区。

对于 NFS 存储的临时区域,将创建一个 OCI 对象存储存储桶,目的是使用标准对象/路径命名镜像 NFS 归档中的大型目录结构。

请注意,除了预期归档目录 (20TB+) 最终将复制到对象存储之外,不会对 NFS 结构进行任何更改。操作区域中的数据将像以前一样处理、检查和保存在临时暂存区域中。最终确定后,数据将移至基于对象的归档,并清理临时暂存区域。将对象从本地操作 NFS 共享复制到归档存储桶的机制可以是 RCLONE 或 OCIFS。

对于 NFS 文件系统的归档部分,我们将使用之前创建的对象存储桶。我们的目的是使用与路径相同的结构将大型归档文件从 NFS 镜像到对象存储。为此,将使用类似于以下内容的 RCLONE 命令:
cd archive
rclone copy . <the_rclone_config>:BucketName/

请注意,根据应用程序的开发方式,现有进程可以继续写入现有位置,直到进行切换。此时已复制整个归档文件,应用程序代码正在从对象存储读取,并将新文件生成到新归档文件 location.While,切换事件的确切顺序将取决于每种情况,在迁移结束时,可以删除基于 NFS 的文件的主归档文件。在这一点上,账单将反映节省。可以进行批处理,通过标准 shell 脚本,可以通过 RCLONE 将大型文件层次结构复制到对象存储。

虽然操作顺序的确切详细信息特定于实现,但是在过程结束时,一旦归档文件安全地存储在对象存储中,NFS 共享资源的归档区域就会被清除。每次批处理运行都会创建新的归档文件,这些文件在删除之前通过 RCLONE 复制到对象存储。