tuneoの日記: 差分/増分バックアップが遅いんじゃあ! 6
日記 by
tuneo
俺のバックアップなんて実際には「気が向いたときに外付けHDDをつないでrsync」で事が足りているんだが(どうせ入っているのは「原本を収納から引っ張り出すのが面倒だからサーバ上に置いてある」データばかりだし)、世間には細かいファイルを山ほど拵えて差分バックアップを取りたい人もいるのだ。
山ほどファイルがあるディレクトリを再起検索して
・バックアップ先ディレクトリに存在しないファイルはバックアップ
・バックアップ先ディレクトリに存在するがmtimeまたはハッシュ値が異なるファイルはバックアップ
みたいな判定すりゃあ遅いに決まってるじゃないですか(呆
そんなのヤダヤダ!というのであればいっそ、リアルタイムで監視ディレクトリの中を再起的に監視して変化を記録し続けるか、スナップショットを取ってsend/receiveできるモダンなファイルシステムを使うしかなかろう。
検証ということで、Proliant Microserverにぶら下げたHDDの中に1万個ぐらい(少ないか?)ファイルを拵えて別のHDDに最初のバックアップを行い、次に何個かのファイルをランダムに更新してバックアップを取る時間を計測、みたいなテストをrsyncとsend/receiveで比較してみる、というシナリオを考えているのだが……badbocksによる8TB HDDの検査が終わりゃしない。とりあえず一個目のパターンでのテストは終わったらしいから、もう切り上げてしまおう。
M$に魂を売 (スコア:2)
Re:M$に魂を売 (スコア:1)
あいにくオンプレミス必須です
スクリプト組んだ (スコア:1)
NetAppの7mode to ONTAP9.5のデータ移行でsnapmirrorが異常動作で動かなかったのでrsyncで乗り切る羽目になったときに力技で乗り切ったことが・・・
雰囲気的な例
1. とりあえず2階層目までrsyncでコピー
rsync --archive -v --exclude="*/*" /from/vol/vol100 /to/vol/vol100
2. findコマンドで2階層目にあるディレクトリリスト作成(ちなみに1万以上あった)
find /from/vol/vol100 -mindepth 2 -maxdepth 2 -type d -print
3. 上記で作ったディレクトリリストを元に下記のようなrsyncコマンド実行用テキストを作成
rsync --archive –hard-links 元ディレクトリ 先ディレクトリ
4. 上記のrsyncコマンド実行用テキストから指定した同時実行数で実行していくスクリプトを作って実行
perlのThread::Queueを使って実装
1サーバで実行したら遅かったので6サーバで分割実行した
やってみた (スコア:1)
1. HDDを1台ずつ使ってZFSボリューム/tank1, /tank2を作成
2. /tank1に10000個のファイルを作成
3. /tank1にスナップショットoriginalを作成(zfs sendのみ)
4. /tank2に最初のrsync(またはzfs send tank1@original)
5. /tank1のファイルのうち1000個を更新
6. /tank2にスナップショットmodifiedを作成(zfs sendのみ)
7. /tank2に2度目のrsync(またはzfs send -i tank1@original tank1@modified)し、timeで時間を測定
久しぶりにPython書いたのでいろいろとパニックを起こしたりw
全体的に遅いしもっさり……とはいえ、zfs send -iした方が1分ばかり速かったです。
もっさりなのはZFSが原因なのか、AMD Opteron X3416とかいうAPUが悪いのか。
SMRでデスクトップ用とはいえ、最新モデルのHDDだしそんなに遅いはずはないのだが。
とりあえず今日はZFSで遊んでみよう。
Re:やってみた (スコア:1)
4本でRAID-Zしてddでシーケンシャルライトしてみたが50MB/s出ないな。あまりに遅い。
お試しでbtrfs raid5もやってみたところ、こっちは倍の100MB/sくらい出る……んだが、それでもだいぶ遅い気がする。
mdでRAID5してみたところ同期は40MB/sとか凄い低速に落ちてる。
……なお、単品でddしたら40MB/sも出ないorz。
これがSMRの特性ってやつなんだとすると使いどころが悩ましいな。ZFS RAID-Zがbtrfsより「若干遅い」程度なら検討の余地などなかったのだが。
ZFS RAID-Zは遅くて論外、btrfs raid5は不安定で論外、mdのraid5はビット化けが起きても直せないから論外、と。
とりあえず、SATAコントローラのドライバでも探してみるかな。
Re:やってみた (スコア:1)
どえらくHDDへの書き込みが遅い件には目をつぶってテストを実行:
64KiBのファイルを1万個作成
1回目のバックアップ
ランダムに1000個を書き換え(今回はrsyncによるファイル更新チェックvs.ZFSの差分sendを比較するため、ファイル転送のトラフィックは同様になるように更新するファイルは先頭から末尾まで全部書き換え)
2回目のバックアップ
で「2回目のバックアップ」の時間を計測したところ……rsyncはsnapshotのsend/receiveにくらべて1分も遅い、という結果だった。