使用场景
桶中不完整的数据称之为碎片。OBS采用分段上传的模式上传数据,在下列情况下(但不仅限于此)通常会导致数据上传失败而产生碎片。
- 网络条件较差,与OBS的服务器之间的连接经常断开。
- 上传过程中,人为中断上传任务。
- 设备故障。
- 突然断电等特殊情况。
上传失败而产生的碎片会存储在OBS中,你可以使用本章提供的方式进行手动清理碎片,也可以根据需要选择通过继续运行中断或失败的分段上传任务消除碎片或者通过生命周期的清除碎片功能定期自动清理碎片。
- 当您遇到删除桶失败的场景,请检查碎片列表中的对象是否已经全部删除。如果没有,请先删除碎片列表中的所有对象。
- 当您遇到桶内无对象,却还在扣费的场景,请检查桶内是否还存在碎片。如果存在,请删除碎片以节约存储成本。
费用说明
OBS中的碎片会占用存储空间,会按照存储空间计费项进行计费。
使用方式
OBS支持通过控制台、API、SDK、OBS Browser+、obsutil方式清理碎片。
使用OBS控制台
- 在OBS管理控制台左侧导航栏选择“桶列表”。
- 在OBS管理控制台桶列表中,单击待操作的桶,进入“对象”页面。
- 单击“碎片”,选中需要清理的碎片,单击右侧的“删除”。
也可选中多个碎片,单击对象列表上方的“删除”进行批量删除。
- 单击“确定”,确认删除碎片。
图1 删除碎片
使用API
您可以通过以下步骤来直接删除桶中碎片:
- 使用列举桶中已初始化多段任务接口,来列举所有分段上传任务,获取所有UploadId。
- 使用取消多段上传任务接口,来取消分段上传任务,即可删除所有碎片。
使用SDK
OBS SDK通常只有采用多段上传,并且最后没有合并多段上传任务时会产生碎片,您通过取消多段上传任务来删除桶内碎片。步骤如下:
- 使用ObsClient.listMultipartUploads列举所有分段上传任务,获取所有UploadId。
- 使用ObsClient.abortMultipartUpload取消分段上传任务,即可删除所有分段碎片。
使用图形化工具OBS Browser+
- 登录OBS Browser+。
- 选中待配置的桶,单击“碎片”。
- 在“碎片”窗口中选择需要删除的碎片,单击上方清理图标。也可单击页面上方“删除所有”,清除所有碎片。单击右上角刷新碎片列表,如图2所示。
图2 碎片管理
- 在弹出的“警告”对话框中确认删除任务信息,单击“是”。
- 单击“是”。
页面返回到“碎片”窗口,可关闭此窗口返回到OBS Browser+首页。
使用命令行工具obsutil
obsutil分段上传任务产生的碎片,可以通过删除分段上传任务来删除碎片。如果一个桶内有多个分段任务,则需要删除多个任务来删除桶中所有碎片。
具体操作请参见删除分段上传任务。
相关操作
OBS提供任务管理功能,当分段上传任务中断或失败时,您可以通过以下多种方式继续运行这些任务,任务完成后,碎片也会随着消除。
表1 消除碎片的不同方式
方式 |
操作指导 |
OBS Browser+ |
OBS Browser+提供图形化的任务管理界面,运行完成碎片对应的上传对象任务,碎片即可消除。
具体操作请参考管理失败队列、管理已暂停队列。 |
obsutil |
obsutil通过结果清单记录失败的任务,您可以通过结果清单对应的任务号恢复失败的上传任务,从而消除碎片。
具体操作请参考恢复失败的上传任务。 |
OBS SDK |
OBS SDK通过记录上传进度提供断点续传,您可以读取记录的进度,继续上传中断或失败的分段上传任务。
具体操作请参考各SDK开发指南中的“断点续传”章节。 |