treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

実際に使っているsambaファイルサーババックアップ教えます。

今日は実際に使っているsambaサーバの共有フォルダをどのようにバックアップしているかを、ご報告します。
もし、小規模ファイルサーバでかつLinuxsambaでファイルサーバを構築している方が、バックアップどのように取ろうか、とお悩みでしたら参考になると思います。
また、家庭内NASのバックアップの取得、という意味でも何か使える部分はあるかもしれません。

バックアップを取得する構成

バックアップを取得するにもいくつかの構成があると思います。
単純にバックアップ対象となるsambaサーバにストレージを接続してバックアップを取得するパターンが一番シンプルです。
図:直接バックアップの図

f:id:treedown:20160429154300p:plain
ちょっとひねって、ネットワーク経由で別PC(別筐体)でバックアップを取得するパターンもあります。
図:ネットワークバックアップ

f:id:treedown:20160429154309p:plain

ここではネットワーク経由で別PCによるバックアップを前提に話を進めていきたいと思います。
別PC、特にWindowsPCでバックアップを取得することで、一つ生まれるメリットがあります。取得したバックアップデータをWindows標準のインデックスサービスや以前ご紹介したEverythingといったフリーソフトなどを用いてバックアップを取得する都度データのインデックスをPCが自動的に生成してくれる、という点です。WindowsOSを使えばOS標準のインデックスサービスが使えるのでWindowsサーチでバックアップしたデータを検索するのが容易になります。特に意識しなくてもバックアップを取得するドライブ・フォルダをWindowsサーチのインデックス対象に設定しておくだけでWindows検索からバックアップデータを検索することができるようになります。
最近ではギガイーサを導入することで通信速度もかなり期待できますので、テラバイト(TB)級のデータであってもある程度の時間があればバックアップは完了させることが可能な水準にあります。

バックアップのタスク

バックアップのタスクは二種類用意しています。
二時間~数時間おきにフォルダをミラーリング(スナップショット的な)バックアップし、一日一回フルバックアップします。
つまり、sambaサーバの丸ごとバックアップ的なデータは二セット生成されることになります。
不測の事態に備えるための世代管理としては、
 ミラーリングバックアップは一日分の世代だけを残すようにし、
 フルバックアップは(ストレージの余裕によって)数日~一週間~一カ月程度
と言った具合に世代を残すようにします。
こうして、ユーザが上書き間違いや誤操作でのファイル削除についてはミラーリングバックアップから直近の時間帯のファイルをリストアするようにします。
ミラーリングバックアップで世代を持ち続けると一日の更新分を丸ごとバックアップストレージに記憶することになってしまいますので、日内の変更点は翌日に持ち越さないよう、一日一回のフルバックアップを収集します。(日内の変更点をコミット・チェックアウトする、というイメージです。
つまり、日内のリカバリポイントはミラーリングバックアップから、前日以前のリカバリポイントは日別のフルバックアップからと言った具合にバックアップを構成します。

ただし規模やデータの頻度にもよりますので、ご自身で取捨選択をする必要はあります。
十数人~数十人程度のsambaサーバであれば日常的に文書ファイルが読み書きされ時間単位で更新されていくケースが想定されます。
このため、文書ファイルの軽微な変更に対するリカバリは頻繁に取得するミラーリングバックアップを頼りにして収集し、月次処理や週次処理のようなスパンが長いデータのバックアップは日単位のフルバックアップを頼りにして収集するようにしています。
sambaサーバが不幸にも全データを損壊するようなデータロストが発生した場合には、フルバックアップをリストアすることで、その日の早朝時点まで巻き戻りますが、ミラーリングバックアップを組み合わせることで極力最新に近づけることができます。時間帯によってはミラーリングバックアップを適用するだけでもOK、という場合もありますね。

この二種類のバックアップを

  • 重要な共有フォルダには両方のバックアップを適用し二重のバックアップ
  • 更新頻度が低い、リストアもめったにない共有フォルダであればフルバックアップだけ

という使い分けをして、バックアップ先のストレージを節約する、という手もあります。(くれぐれもバックアップ取得漏れによってユーザと対立しないようご注意を)

タスクスケジューラのトリガで例えると

タスクスケジューラにバックアップのコマンドを自動実行するようにしかけるとすると、

  • ミラーリングバックアップは、毎日、始業時刻朝8:00(9:00)スタート、繰り返し間隔で1時間(2時間や3時間など)を設定し繰り返し動作するよう
  • フルバックアップは毎日深夜(AM2:00とか3:00とか4:00とか)に一回(間隔=1日として)全共有フォルダを対象にバックアップを収集するよう

にします。

まとめ

フルバックアップを取得したバックアップ運用だけでは、バックアップを収集したタイミングまで巻き戻れる、というだけで、バックアップからダウンタイムまでの間に修正されたデータは失われてしまうことになります。
これを防ぐ方法が数時間置きのバックアップ収集です。
家庭内やSOHOのNASであればそれほどシビアに考える必要はないかもしれませんが、十人程度の規模でsambaサーバを使うようになってくるとバックアップも多少の手を入れる必要はでてきます。
サービスインからフルバックアップ一本やりでそのままの場合、現在の規模感を見直してみて、もう少しバックアップを手厚くするというのも考え時かもしれません。