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