背景知识
桶中不完整的数据称之为碎片。OBS采用分段上传的模式上传数据,在下列情况下(但不仅限于此)通常会导致数据上传失败而产生碎片。
- 网络条件较差,与OBS的服务器之间的连接经常断开。
- 上传过程中,人为中断上传任务。
- 设备故障。
- 突然断电等特殊情况。
上传失败而产生的碎片会存储在OBS中,需手动清理碎片。文件上传失败后,需重新上传。
OBS中的碎片会占用存储空间,会按照存储空间计费项进行计费。当存在运行中断或失败的分段上传任务并产生碎片后,您可以继续运行中断或失败的上传任务来消除碎片,或直接将碎片删除以节省存储空间。
您可以根据需要选用合适的方式清理碎片,详情请参见如何处理碎片。
- 当您遇到删除桶失败的场景,请检查碎片列表中的对象是否已经全部删除。如果没有,请先删除碎片列表中的所有对象。
- 当您遇到桶内无对象,却还在扣费的场景,请检查桶内是否还存在碎片。如果存在,请删除碎片以节约存储成本。
OBS中的碎片会占用存储空间,会按照存储空间计费项进行计费。
使用方式
OBS支持通过控制台、API、SDK、OBS Browser+、obsutil方式清理碎片。
使用OBS控制台
- 在OBS管理控制台左侧导航栏选择“桶列表”。
- 在OBS管理控制台桶列表中,单击待操作的桶,进入“对象”页面。
- 单击“碎片”,选中需要清理的碎片,单击右侧的“删除”。
也可选中多个碎片,单击对象列表上方的“删除”进行批量删除。
- 单击“确定”,确认删除碎片。
图1 删除碎片
使用API
您可以通过以下步骤来直接删除桶中碎片:
- 使用列举桶中已初始化多段任务接口,来列举所有分段上传任务,获取所有UploadId。
- 使用取消多段上传任务接口,来取消分段上传任务,即可删除所有碎片。
使用SDK
OBS SDK通常只有采用多段上传,并且最后没有合并多段上传任务时会产生碎片,您通过取消多段上传任务来删除桶内碎片。步骤如下:
- 使用ObsClient.listMultipartUploads列举所有分段上传任务,获取所有UploadId。
- 使用ObsClient.abortMultipartUpload取消分段上传任务,即可删除所有分段碎片。
使用命令行工具obsutil
obsutil分段上传任务产生的碎片,可以通过删除分段上传任务来删除碎片。如果一个桶内有多个分段任务,则需要删除多个任务来删除桶中所有碎片。
具体操作请参见删除分段上传任务。