91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

bucket刪除中的細節有哪些

發布時間:2021-12-23 18:33:59 來源:億速云 閱讀:151 作者:柒染 欄目:云計算

bucket刪除中的細節有哪些,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

問題描述

社區群里有人說刪除bucket以后還有部分數據殘留,用的ceph 10.2.x版本做的驗證

測試用例

from boto.s3.connection import S3Connection
import boto

conn = boto.connect_s3(
            aws_access_key_id = '',
            aws_secret_access_key = '',
            host = 's3.cephbook.com',
            port = 80,
            is_secure = False,
            calling_format = boto.s3.connection.OrdinaryCallingFormat(),
            )
bucket = conn.create_bucket('foo')
#bucket.delete()

刪除前

root@demohost:/home/user# rados ls -p rgw.root
foo
.bucket.meta.foo:70af9a54-20bb-480b-92f4-cbdeef0b775c.217357.1

刪除后

root@demohost:/home/user# rados ls -p rgw.root
.bucket.meta.foo:70af9a54-20bb-480b-92f4-cbdeef0b775c.217357.1 #殘留

原因分析

對meta file的刪除操作需要根據是否開啟了多集群同步來決定

# src/rgw/rgw_rados.cc
    op_ret = store->delete_bucket(s->bucket, ot);#入口
    ....

  /* if the bucket is not synced we can remove the meta file */
  if (!is_syncing_bucket_meta(bucket)) {
    RGWObjVersionTracker objv_tracker;
    string entry = bucket.get_key();
    r= rgw_bucket_instance_remove_entry(this, entry, &objv_tracker);
    if (r < 0) {
      return r;
    }
    /* remove bucket index objects*/
    map<int, string>::const_iterator biter;
    for (biter = bucket_objs.begin(); biter != bucket_objs.end(); ++biter) {
      index_ctx.remove(biter->second);
    }
  }

滿足下面4種情況是不會進行meta file的刪除操作
當前period不是最新版本 zonegroup為非master zonegroup
當前集群只有單個zonegroup,且只有一個zone 當前zone不是master zone

/**
  * Check to see if the bucket metadata could be synced
  * bucket: the bucket to check
  * Returns false is the bucket is not synced
  */
bool RGWRados::is_syncing_bucket_meta(rgw_bucket& bucket)
{

  /* no current period  */
  if (current_period.get_id().empty()) {
    return false;
  }

  /* zonegroup is not master zonegroup */
  if (!get_zonegroup().is_master) {
    return false;
  }

  /* single zonegroup and a single zone */
  if (current_period.is_single_zonegroup(cct, this) && get_zonegroup().zones.size() == 1) {
    return false;
  }

  /* zone is not master */
  if (get_zonegroup().master_zone.compare(zone_public_config.id) != 0) {
    return false;
  }

  return true;
}

解決方案

  1. rados命令手工刪除對應的obj,但是要注意相應的bucket一定是不再需要的,最好是在多個集群上確認最終操作,確保數據一致性。

  2. 修改集群配置,滿足上面4點需求之一。

最后非標準操作去刪除bucket可能破壞底層數據一致性,起手無悔,一定要慎重。

看完上述內容,你們掌握bucket刪除中的細節有哪些的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

仪征市| 嫩江县| 古田县| 永德县| 嘉义县| 搜索| 南皮县| 讷河市| 崇义县| 辽宁省| 曲松县| 孝昌县| 伊宁县| 安溪县| 海口市| 江孜县| 平山县| 遂川县| 开平市| 长寿区| 类乌齐县| 明星| 霍林郭勒市| 保德县| 静乐县| 普洱| 专栏| 陆良县| 宜良县| 那坡县| 蒙山县| 东阿县| 通辽市| 雅安市| 横峰县| 称多县| 罗田县| 策勒县| 龙口市| 沾益县| 津南区|