2012年12月26日水曜日

Openstack Swift Objectを間違って消しちゃった太郎

OpenStack Swiftでわざとobjectを消したときの復旧方法 基本はないとは思うんだけど、rmとかでミスって消しちゃいました的な感じの対応用に。 ちなみにファイル間違って消して、べつのレプリカからcpしても使えない(objectとして認識できない?) 状態になるので注意だお(*´ω`*)


#まずはファイルを確認する。ファイルあるよね。

root@yatta-swift01:/srv/node/sdb1/objects/222204# ls -l
total 4
drwxr-xr-x 3 yatta_swift yatta_swift  45 Dec 26 14:15 159
drwxr-xr-x 3 yatta_swift yatta_swift  45 Dec 26 14:15 2bb
drwxr-xr-x 3 yatta_swift yatta_swift  45 Dec 26 14:15 a82
drwxr-xr-x 3 yatta_swift yatta_swift  45 Dec 26 14:15 b24
drwxr-xr-x 3 yatta_swift yatta_swift  45 Dec 26 14:15 e20
-rw------- 1 yatta_swift yatta_swift 223 Dec 26 14:15 hashes.pkl
root@yatta-swift01:/srv/node/sdb1/objects/222204# 
root@yatta-swift01:/srv/node/sdb1/objects/222204# ls -l e20/d8ff1b40757392c4af291b9839ae1e20/1356405624.80957.data 
-rw------- 1 yatta_swift yatta_swift 211481 Dec 26 14:15 e20/d8ff1b40757392c4af291b9839ae1e20/1356405624.80957.data
root@yatta-swift01:/srv/node/sdb1/objects/222204#




#
#ディレクトリ消してみる。ポイントはレプリのチェックをする
#hashes.pklも一緒にけすこと。

root@yatta-swift01:/srv/node/sdb1/objects/222204# rm -fR e20/ hashes.pkl 
root@yatta-swift01:/srv/node/sdb1/objects/222204# ls -ltr
root@yatta-swift01:/srv/node/sdb1/objects/222204# ls -ltr
total 0
drwxr-xr-x 3 cy_yatta cy_yatta 45 Dec 26 14:15 b24
drwxr-xr-x 3 cy_yatta cy_yatta 45 Dec 26 14:15 a82
drwxr-xr-x 3 cy_yatta cy_yatta 45 Dec 26 14:15 2bb
drwxr-xr-x 3 cy_yatta cy_yatta 45 Dec 26 14:15 159

#
#そのうち復旧される
#

root@yatta-swift01:/srv/node/sdb1/objects/222204# ls -ltr
total 4
drwxr-xr-x 3 cy_yatta cy_yatta  45 Dec 26 14:15 b24
drwxr-xr-x 3 cy_yatta cy_yatta  45 Dec 26 14:15 a82
drwxr-xr-x 3 cy_yatta cy_yatta  45 Dec 26 14:15 2bb
drwxr-xr-x 3 cy_yatta cy_yatta  45 Dec 26 14:15 159
drwxr-xr-x 3 cy_yatta cy_yatta  45 Dec 26 14:42 e20
-rw------- 1 cy_yatta cy_yatta 223 Dec 26 14:42 hashes.pkl
root@yatta-swift01:/srv/node/sdb1/objects/222204# ls -l e20/d8ff1b40757392c4af291b9839ae1e20/
total 208
-rw------- 1 cy_yatta cy_yatta 211481 Dec 26 14:42 1356405624.80957.data






ブラウザからも確認できたお(*´ω`*) この復旧方法でいいのかちょっと微妙だけど・・・

2012年12月14日金曜日

Openstack swift objectの情報調べる太郎

Swiftでobjectの情報、どのサーバにレプリカがあるかを確認する方法(*´ω`*)
#実データに対して、swift-object-infoコマンドを実行。
#Ring locationのところにどのサーバにレプリカがあるかが表示される
root@swift-obj03:# swift-object-info /srv/node/sdb1/objects/222228/7a4/d90536ed78c14cf9335ebff89e21f7a4/1355209796.68366.data 
Path: /AUTH_yattarou/test/20121202/22/22/22/33/test8957.jpg
  Account: AUTH_yattarou
  Container: test
  Object: 20121202/22/22/22/33/test8957.jpg
  Object hash: d90536ed78c14cf9335ebff89e21f7a4
Ring locations:
  xxx.xxx.xxx.xx1:6000 - /srv/node/sdb1/objects/222228/7a4/d90536ed78c14cf9335ebff89e21f7a4/1355209796.68366.data
  xxx.xxx.xxx.xx2:6000 - /srv/node/sdb1/objects/222228/7a4/d90536ed78c14cf9335ebff89e21f7a4/1355209796.68366.data
  xxx.xxx.xxx.xx3:6000 - /srv/node/sdb1/objects/222228/7a4/d90536ed78c14cf9335ebff89e21f7a4/1355209796.68366.data
Content-Type: image/jpeg
Timestamp: 2012-12-11 16:09:56.683660 (1355209796.68366)
ETag: 3a650f6dd89d775ef02f48963e821706 (valid)
Content-Length: 211481 (valid)
User Metadata: {}

swift-get-nodesコマンドでも同じような情報がとれるんだけど、表示されたパスをみにいくとファイルがない・・・ 使い方まちがってるんだろうか。