一次openstack swift生产集群差点全部数据删除的抢救行动

一次openstack swift生产集群差点全部数据删除的抢救行动
openstack swift集群用来保存视频监控数据,接入了十几万的摄像机
集群中创建了一个swift account,下面有几千个container。
如果一个account被删除了,openstack-swift-account-reaper.service会回收该account所有资源,删除下面的container和object数据
问题现象:
put对象时,proxy server的log显示404错误
swift account状态显示Deleted
[root@HP2-50 ~]# curl 127.0.0.1:8867/v1/swift --head
HTTP/1.1 410 Gone
Content-Length: 0
Content-Type: text/html; charset=UTF-8
X-Account-Status: Deleted
X-Trans-Id: txb21d03987a484b8faae36-00670e1001
X-Openstack-Request-Id: txb21d03987a484b8faae36-00670e1001
Date: Tue, 15 Oct 2024 06:47:29 GMT

原因分析:
最近新上线一个业务,本来要删除 /swift/R000000/obj1,由于异常处理错误,拼接url错误,导致删除了/swift。同时
如果一个account被删除了,openstack-swift-account-reaper.service会回收该account所有资源,删除下面的container和object数据,发现及时,但还是丢失了几万个object文件。
解决方案:
1 停止相关服务:
systemctl stop openstack-swift-account-auditor.service openstack-swift-account-reaper.service openstack-swift-account-replicator.service
systemctl stop openstack-swift-container-auditor.service openstack-swift-container-replicator.service openstack-swift-container-updater.service
2 修改swift account的db
UPDATE account_stat SET status =‘’;
UPDATE account_stat SET delete_timestamp = ‘0’;
UPDATE account_stat SET status_changed_at = ‘1535442533.38927’;
3 修复一些被标记删除container的db
UPDATE container_stat SET delete_timestamp=‘0’, status=‘’;
4 永久停止 openstack-swift-account-reaper.service
5 proxy-server.conf 中的allow_account_management = false, 禁止了DELETE account操作

import os
import sys
import unittest
from tempfile import mkdtemp
from shutil import rmtree, copy
from uuid import uuid4
import six.moves.cPickl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值