rgw bucket sync
1. c創建bucket?à(元數據是否同步到對端?)—>disableà(已同步的元數據是否還在)—>寫數據(數據是否同步到對端)àenable(剛才寫入的數據是否同步到對端了)àdisable(寫入的數據還在對端?)
結果:rados ls -p second.rgw.meta --namespace root 兩端可以看到由新建的bucket信息—>再次執行命令兩端可以看到由新建的bucket信息-à寫入的數據沒有同步到對端,在對端bucket?list看不到寫入的文件且bucket?stats的usage是空的à剛才寫的數據同步到對端了且bucket?list/stats正常à數據還在對端且bucket?list/stats正常
2. 2個線程用于sync : BucketsSyncThread ,UserSyncThread
rgw data sync同步過程:
full sync(per shard):
1.?依次處理這個shard里的bucket:
(1)讀出bucket的marker
(2)同步每個object,對于同步失敗的object會被記錄在replica log,之后會嘗試sync
(3)同步完成后把bucket_name,bucket_marker,需要重試sync的object列表存入目的ceph的replica log里
2.?這個shard里的bucket都處理完后:
(1) 把shard_num,需要重試sync的bucket列表更新到目的ceph的replica log里
?
incremental sync:
1.?查看replica log里的各個datalog shard找到需要重試sync的bucket,獲取bucket 當前marker
2.?通過讀取datalog shard找到有變化的bucket
3.?依次處理各個bucket:
(1)?從replica log中需要重試sync的object
(2)?讀取bucket的bilog ,起點是replica log讀出的marker
(3)?開始同步object
(4)?更新已經同步了的最新marker和需要再次嘗試sync的object列表到replica log
4.?各個bucket處理完成后:
(1)?生成新marker并把需要再次嘗試sync的bucket列表更新到replica log
?
1.?亞馬遜云:bucket跨區域備份:
(1)?源/目標bucket開啟versioning
(2)?對源bucket全部備份或者選擇備份指定前綴的文件
(3)?目標bucket必須由可以訪問源的對象列表權限
(4)?可在目標bucket上設置lifecycle來管理刪除舊版本
(5)?只能在不同的region里使用(對應12版本的zonegroup?)
(6)?可監視源bucket上的對象變化,因此只能備份新文件,需要復制已有對象可使用copy功能
2.?S3同一個集群內的bucket?復制(桶名后面要加/)
s3cmd sync s3://from/this/bucket/ s3://to/this/bucket/
s3cmd sync -r -v --dry-run --delete-removed ?s3://cos-test-private-bucket/./
s3cmd sync -r -v --dry-run --delete-removed ./ ?s3://ft-cos-test-private-bucket/
aws s3 sync s3://mybucket s3://backup-mybucket
3.?把bucket1的文件拷貝到bucket2中
1.?同步/home/sen/tmp?文件到bucket里(只同步有差異的文件):
s3cmd sync /home/sen/tmp s3://slboat/tmp
加 "--dry-run"參數后,僅列出需要同步的項目,不實際進行同步
加 " --delete-removed"參數后,會在bucket里刪除本地不存在的文件
加 " --skip-existing"參數后,不進行MD5校驗,bucket里直接跳過本地已存在的文件
為了保持保留文件屬性,如日期/時間等使用 -p 或 -preserve 參數
排除、包含規則(--exclude 、--include)
?
?
?
ch
?
?
?
?
?
總結
以上是生活随笔為你收集整理的rgw bucket sync的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 排查【Jedis客户端触发 Too ma
- 下一篇: ceph radosgw-admin的操