HOME / コンピュータTips / Solaris / zfs / auto-snapshot,time-sliderの設定
Date: 2012/01/24 | | Tags: Solaris11, タイムスライダー, Time Slider, auto-snapshot, CLI, CUI
タイムスライダーは、zfsのsnapshot機能を用いて、定期的にファイルシステムのスナップショットを取る機能です。そのため、別名、auto-snapshotとも言います。
タイムスライダーをGUIで使うと、Mac OSXのTime Machine機能のように、過去の物を参照することができます。ただし、Solaris11のTime Sliderはもっと手軽で、且つ、高速に管理できます
したがって、別のディスクを必要とせず、取得に対してコストがかからないのが特徴です。
とっても便利な機能なのですが、デフォルトではGUIでの設定ツールしかありません。Solaris11をテキストインストールした場合は、この機能は有効にならないのです。
たとえばファイルサーバでタイムスライダーが使えれば、ファイルシステム直下の.zfs/snapshot/以下に、過去のファイルが見えます。ユーザに伝えておけば、ユーザがおもわずやってしまったときにとても便利です。
ウェブサーバで使えば、改ざんがあったときに、何を改ざんされたかのチェックにも使えます。ftpでデザイナーが書き換えをした時、過去のバージョンを取り出すこともできます。
アプリケーションサーバで使えば、メンテ前とメンテ後の比較や、何となればそのスナップショットポイントに巻き戻すこともできます。
DBMSの場合、データストレージが壊れてしまうようなインシデントがあったときに便利です。某OSSのDBの場合、知らない間に物理エリアが壊れてることが、たまに・・・・というかしばしばあり、こうなると一度落とすと二度と起動しなかったりします。でも、スナップショットがあれば、もしかしたら戻れるかも知れません。
というわけ、サーバこそタイムスライダーがあるといい!というわけで、CLIでタイムスライダを設定する方法です。
sudo pkg install -v desktop/time-slider
だけです。
なぜか、dbusのリスタートがいります。
sudo svcadm refresh dbus sudo svcadm restart dbus
time-sliderを起動します。
sudo svcadm enable svc:/application/time-slider:default
auto-snapshotポイントの起動
sudo svcadm enable svc:/system/filesystem/zfs/auto-snapshot:hourly sudo svcadm enable svc:/system/filesystem/zfs/auto-snapshot:daily sudo svcadm enable svc:/system/filesystem/zfs/auto-snapshot:weekly sudo svcadm enable svc:/system/filesystem/zfs/auto-snapshot:monthly sudo svcadm enable svc:/system/filesystem/zfs/auto-snapshot:frequent
5つのポイントがあります。それぞれ1時間後と、1日ごと、1週間後と、月ごと、15分ごとです。全部有効にしちゃっても良いのですが、スナップショットを取得する数xzfsデータセットの数必要になるので、この時間がだんだん馬鹿にできなくなります。
ディスクIOが定期的に増えたなぁと思ったら、frequentあたりを、disableにするといいでしょう。
これで、タイムスライダーが起動しました。
データセット(当然、ファイルシステム型のみ)の単位で、zfsのプロパティを設定します。
sudo zfs set com.sun:auto-snapshot=true rpool
こうすると、全てが有効になります。
基本、inherit(継承)するので、一番上だけつければ、全てが有効になります。
sudo zfs set com.sun:auto-snapshot=true rpool/ROOT
ちなみに、varだけをsnapshotの対象外にしたいときもあるかもしれない。理由は、ログにsnapshotをかけられると、logrotate等と相性が悪くなるから。
Solaris 11のデフォルトでは、varが割れてるので、次のようにすればいい。
zfs list -o name -H -r rpool/ROOT | grep /var | xargs -n1 sudo zfs set com.sun:auto-snapshot=false
sudo zfs set com.sun:auto-snapshot=true rpool/export/home
全然関係ないのですが、MacOSX Lionは、たまーに、タイムマシンのエリアを壊すことがあり、私は過去、これで大ダメージを何度か食らったことがあります。baffaloのNASのTimeMachine機能(netatalk)を使っているので、純正じゃないからそのためかもしれませんが。
そこで、先日Solaris11でnetatalkを立ち上げ、TimeMachine用にzfsのエリアを公開、これをタイムスライダー対象にしました。こうしておけば、TimeMachineなのかnetatalkの互換性問題なのか、どっちにしろやってしまったとしても、後戻りができます。
sudo zfs set com.sun:auto-snapshot=true dpool/export/backup/macosx
zfs list -o name,com.sun:auto-snapshot -r rpool/ROOT
後で調査する予定。