少し前に、ドライブのスナップショットを取得する機能を導入しました。これは、稼働中のシステムでもドライブの状態を迅速かつ効率的に保存できる非常に便利な機能です。
搭載されているZFSのおかげで、自動スナップショットは現在の状態とスナップショットが取得された時点の間の差分のみを消費します。つまり、元のドライブが15GBで、スナップショットと現在の状態の間で1MBのデータしか変更されていない場合、スナップショットのサイズは1MBになります。ディスクにさらに1メガバイト書き込むと、スナップショットはさらに1メガバイト増加します。
このシステムのもう一つの素晴らしい点は、どのスナップショットも完全なディスクドライブに昇格(クローン作成)できることです。これにより、完全に異なるストレージシステム上にある可能性のあるサーバーにマウントできる、独立したコピーを作成できます。そのため、これは(ワークロードに応じて)ストレージ管理戦略の基盤を形成します。
注意事項
定期的なスナップショットの使用はバックアップ戦略の一部になり得ますが、スナップショットのみを唯一の戦略として依存するのは賢明ではありません。
また、稼働中のデータベースサーバーのスナップショットを取得するなど、これらのスナップショットの使用が機能しない状況も数多くあります。スナップショット機能は、停止しているデータベースサーバー(特定の時点への復元を作成するため)では依然として有用な場合がありますが、これもやはり、唯一のバックアップ戦略にするべきではありません。
自動スナップショットの作成
当社のPythonライブラリを使用すると、スナップショットの自動化は非常に簡単です。ただし、スナップショットをトリガーするシステムにCloudSigmaの資格情報を保存する必要があるため、本番サービスの資格情報を安全でない方法で公開することは強くお勧めしません。たとえば、これをクラウドサーバー上で実行する場合は、インフラストラクチャの他の部分から保護されていること(当社のネットワークポリシー機能を使用するなど)、および完全にロックダウンされていることを確認してください。
Pythonライブラリをインストールした後、次のようにスクリプトをダウンロードして実行できます。
[bash light=”true”] $ wget https://raw.githubusercontent.com/cloudsigma/pycloudsigma/master/samples/snapshot.py$ python snapshot.py drive-uuid my-snapshot
[/bash]
snapshot.pyは2つの引数を取ります:
- スナップショットを作成したいドライブのUUID
- スナップショットのわかりやすい名前
手動でスナップショットを作成し、それが機能することを確認したら(これはドライブの‘snapshot’セクションで確認できます)、これを自動化できます。
このようなタスクを実行するための最も適した、標準化された方法は、crontabを使用することです(LinuxまたはMac OS Xを使用していることを前提としています)。
上記でスナップショットを作成したのと同じユーザーで、以下を実行します:
[bash light=”true”]
$ crontab -e
[/bash]
毎晩午前1時にスナップショットを取得したい場合は、次の行を追加します:
|
1 |
0 1 * * * python /path/to/snapshot.py drive-uuid my-snapshot >> $HOME/snapshot.log 2>&1 |
また、スクリプトを実行しているユーザーのホームディレクトリにあるsnapshot.logという名前のファイルにスクリプトがログを記録することにも気づくでしょう。
スナップショットの自動削除
スナップショットは時間の経過とともに増加するため、一定時間経過した後にこれらのスナップショットを削除したくなるでしょう。この問題を解決するために、これを自動で行う別のスクリプトを作成しました。そのスクリプトはsnapshot_purge.pyという名前で、2つの引数を取ります:
- ドライブのUUID
- 保持したいスナップショットの日数
たとえば、30日分のスナップショットを保持したい場合は、単に以下を実行します:
[bash light=”true”]
$ wget https://raw.githubusercontent.com/cloudsigma/pycloudsigma/master/samples/snapshot_purge.py
$ python snapshot_purge.py drive-uuid 30
[/bash]
もちろん、これも自動化できます。たとえば、30日より古いスナップショットをパージしたい場合は、crontabに以下を追加します(午前1時30分に実行されます):
|
1 |
30 1 * * * python /path/to/snapshot_purge.py drive-uuid 30 >> $HOME/snapshot_purge.log 2>&1 |
まとめ
皆さん、以上です。これら2つのスクリプトを使用することで、ドライブのスナップショットを自動化できます。複数のドライブのスナップショットを取得する必要がある場合は、異なるUUIDを指定した snapshot.py の行を crontab に追加するだけです。
もちろん、これはスナップショットでできることのほんの一部に過ぎませんが、ストレージ管理ルーチンでスナップショットを使用するための簡単な入門コースとして役立つことを願っています。
より高度なデータ保持のニーズがある場合は、上記のスクリプトのコードの一部を再利用できるでしょう。
コメント
コメントはまだありません。最初のコメントを投稿しましょう。