OpenStack SWIFT 中的容器_segments 起什么作用?

OpenStack SWIFT 中的容器_segments 起什么作用?

jobs几个月前我创建了一个名为的容器,今天我看到另一个名为的容器jobs_segments保存了几 GB 的数据。

我读到过,它是为了在进行分段 SWIFT 上传时保存各个部分而创建的。

问题是:

  • 或者分段上传完成后是否应该删除该容器或其中的文件?
  • 有什么选择可以避免使用第二个容器_segments并仅在主容器上工作jobs

答案1

命名的容器SOMETHING_segments可能是大物体上传。术语“大对象”有点误导;“分段对象”可能更具描述性,但此功能主要用于存储大对象,尤其是大于 5GB 的对象大小限制。

由于您的容器已命名jobs_segments,我通常会假设它包含目的命名jobs,而不是容器使用此名称。但是,没有什么可以阻止您创建与对象同名的容器。

回答第一个问题:如果你删除jobs_segments,你将丢失对象的数据jobs。最好删除jobs对象而不是只删除其片段。

第二个问题:jobs容器与没有直接关系jobs_segments

话虽如此,您可以创建一个容器SOMETHING_segments并将其用于除大物体之外的其他用途。最后,它jobs_segments可以是一个普通的容器。

答案2

来自 Openstack Swift 文档:

swift 命令对其分段对象支持使用严格的约定。在上面的示例中,它将所有分段上传到名为 test_container_segments 的第二个容器中。这些分段的名称将类似于 large_file/1290206778.25/21474836480/00000000、large_file/1290206778.25/21474836480/00000001 等。

使用单独容器的主要好处是主容器列表不会被所有段名称污染。使用 /// 段名称格式的原因是,上传同名的新文件不会覆盖第一个文件的内容,直到清单文件更新的最后一刻。

swift 将为您管理这些段文件,在删除和覆盖等时删除旧段。如果需要,您可以使用 --leave-segments 选项覆盖此行为;如果您想要有同一大对象的多个版本可用,这很有用。

https://docs.openstack.org/swift/latest/overview_large_objects.html

相关内容