パスワードを忘れた? アカウント作成
14175920 journal
日記

tuneoの日記: 差分/増分バックアップが遅いんじゃあ! 6

日記 by tuneo

俺のバックアップなんて実際には「気が向いたときに外付けHDDをつないでrsync」で事が足りているんだが(どうせ入っているのは「原本を収納から引っ張り出すのが面倒だからサーバ上に置いてある」データばかりだし)、世間には細かいファイルを山ほど拵えて差分バックアップを取りたい人もいるのだ。

山ほどファイルがあるディレクトリを再起検索して
・バックアップ先ディレクトリに存在しないファイルはバックアップ
・バックアップ先ディレクトリに存在するがmtimeまたはハッシュ値が異なるファイルはバックアップ
みたいな判定すりゃあ遅いに決まってるじゃないですか(呆

そんなのヤダヤダ!というのであればいっそ、リアルタイムで監視ディレクトリの中を再起的に監視して変化を記録し続けるか、スナップショットを取ってsend/receiveできるモダンなファイルシステムを使うしかなかろう。

検証ということで、Proliant Microserverにぶら下げたHDDの中に1万個ぐらい(少ないか?)ファイルを拵えて別のHDDに最初のバックアップを行い、次に何個かのファイルをランダムに更新してバックアップを取る時間を計測、みたいなテストをrsyncとsend/receiveで比較してみる、というシナリオを考えているのだが……badbocksによる8TB HDDの検査が終わりゃしない。とりあえず一個目のパターンでのテストは終わったらしいから、もう切り上げてしまおう。

この議論は、tuneo (2938)によって テキとトモのテキ禁止として作成されたが、今となっては 新たにコメントを付けることはできません。
  • by ei (19798) on 2020年05月02日 23時43分 (#3808530) 日記
    って、OneDriveに全てを委ね…、とかは如何?
  • 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. 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で遊んでみよう。

    • 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コントローラのドライバでも探してみるかな。

      親コメント
      • どえらくHDDへの書き込みが遅い件には目をつぶってテストを実行:

        64KiBのファイルを1万個作成
        1回目のバックアップ
        ランダムに1000個を書き換え(今回はrsyncによるファイル更新チェックvs.ZFSの差分sendを比較するため、ファイル転送のトラフィックは同様になるように更新するファイルは先頭から末尾まで全部書き換え)
        2回目のバックアップ

        で「2回目のバックアップ」の時間を計測したところ……rsyncはsnapshotのsend/receiveにくらべて1分も遅い、という結果だった。

        親コメント
typodupeerror

海軍に入るくらいなら海賊になった方がいい -- Steven Paul Jobs

読み込み中...