2017-05-10 6 views
0

Openstack Swiftでは非常に奇妙な動作が見られます。すべての迅速なプロセスを開始し、操作(たとえばファイルのアップロード)を実行すると、すべてのSwiftプロセスが終了したら、すべてのデータディレクトリを別の一時的な場所にコピーし、すべてのデータディレクトリの内容を削除し、すべての一時ディレクトリをデータディレクトリにコピーし直して再度迅速なプロセスを開始すると、オブジェクトのGETを実行できません。 (私はコンテナ情報にアクセスできますが、ダウンロードは失敗します)。Openstack Data Dirsをコピーバックする際の奇妙な振る舞い

私はこの非常に奇妙な動作をデバッグするのに時間を費やしています。誰もがこの問題を経験しましたか?

バグを再現するための

ステップ:(4つのデータDIRSはを/ mnt/sdb1が/ディレクトリに言うと仮定)

=> SWIFT-initをすべて開始
=>迅速アップロードsome_container some_file
=>(原稿からの一時ディレクトリへの迅速な操作のNO)
=> SWIFT-INIT全て殺す
=> CP -R/MNT/SDB1/1/MNT/SDB1/1_temp(コピーが続くことができる)
= > cp -R/mnt/sdb1/2/mnt/sdb1/2_temp(オリジナルから一時ディレクトリにコピー)
=> cp -R/mnt/sdb1/3/mnt/sdb1/3_temp(オリジナルから一時ディレクトリにコピー)
=> cp -R/mnt/sdb1/4/mnt/sdb1/4_temp (元のデータディレクトリのすべての内容を削除します)
=> rm -rf/mnt/sdb1/2/*(すべての内容を削除してください)
=> rm -rf/mnt/sdb1/1/* (元のデータディレクトリのすべての内容を削除します)
=> rm -rf/mnt/sdb1/4/*(すべての内容を削除します)
=> rm -rf/mnt/sdb1/3/*
=> cp -R/mnt/sdb1/1_temp/mnt/sdb1/1(一時ディレクトリから元にコピー)
=> cp -R/mnt/sdb1/2_temp/mnt/sdb1/2(c #cp -R/mnt/sdb1/3_temp/mnt/sdb1/3(テンポラリから元にコピー)
=> cp -R/mnt/sdb1/3(一時ディレクトリから元にコピー)
=> cp -R/mnt/sdb1/4_temp/MNT/SDB1/4(一時ディレクトリから原稿にコピー)

=> SWIFT-INITすべての開始(再び迅速に開始)
=>迅速リスト(これが成功)
=>迅速リストsome_container(これが成功)
=>迅速なダウンロードsome_containerのsome_file(これが失敗した)

これはconsiderin非常に奇妙です実際に私がコンテンツを移動したという事実。

任意のポインタ?

答えて

0

Openstack Swiftには、ファイルの複製と整合性をチェックするバックグラウンドプロセスがいくつかあります。あなたが自分でファイルを移動すると、Swiftはおそらくあなたのクラスタ設定に応じて何らかの矛盾として理解し、修正しようとします。だから、それは動作するはずがありません。

しかし、もし何が起こっているのかを発見したいのであれば、アップロード後にコンテナのコンテンツをリストし、ファイルを移動し、コンテナのコンテンツを再度リストすることをお勧めします。数分待ってから再度リストしてください。ファイルを元に戻し、再度リストします。それはあなたがファイルを移動している間、バックグラウンドプロセスが何かをしているかどうかを調べるのに役立ちます。