HDD 障害復旧予行演習 〜 計画編(ZFS)
ファイルシステムを刷新するなら、「HDD がお釈迦になった際のバックアップからの復旧手段」を確認しておくのが大人の嗜み。というわけで、ZFS における障害復旧のフローを確認。
基本は:
- 外部メディアでブート
- バックアップから、新規 HDD にルートプールを再構築
- 再起動
という流れの筈。
外部メディアでのブートは、インストールにも使用した LiveCD(今なら LiveDVD ?)から起動しつつ、GRUB メニューから適当に text mode 起動でも選んでやれば完了。但し、ログインプロンプトが出てから慌てて「ログインが jack/jack、ルートパスワードが opensolaris」という情報を探し出したのは内緒。
新規 HDD にルートプールを再構築する手順は、「ZFS 管理ガイド」の「ZFS ルートプールを再作成しルートプールのスナップショットを復元する方法」に詳しいけど、一般的なディザスタリカバリ対策での保存先(= 別拠点)を考えるなら、解説にあるような NFS 経由でのデータ転送なんかじゃなくて、ssh 出力をパイプで繋ぐあたりが精々じゃなかろうか。
もっとも、「インターネット経由の ssh 回線」なんていう細い線でフルリストアのデータ転送を行うのは、ちょっと現実的では無い気がするので:
- バックアップ用のプールを更に複製
- いずれかのプール(HDD のローテーションを考えるなら古い方)を offline
- offline されたプールの HDD を取り外し
- 主環境に移植
みたいなのが現実的かな?アフリカの鳩転送の話じゃないけど、緊急時向けに無駄に太い線を常時維持するよりは、非常時に複製 HDD を一括移送する方が、コストあたりの転送レートとして健全な気が。
で、肝心のバックアップなのだが、import に関しては、プール名が重複していても numeric ID を使用すれば 可能なのだけれど、create に関しては、プール名の重複は一切許容されないらしく、バックアップ先も Solaris + ZFS ルートな環境の場合、rpool という名称でバックアップ用プールを作ることは無理そう。
バックアップ用プールの名称が rpool 以外になった場合、「ルート用のプール名は rpool 固定」という縛り(出典失念、確かブート可能になった版のリリースノートで見た記憶が…)があるので、HDD 移植⇒即再起動なフローは無理かも…。そうなると、「バックアッププール」⇒「(新規 HDD 上に作成した)rpool」でのデータ転送によるリストアとなるので、HDD も余分に必要になるなぁ。貧乏性で御免なさい。
と諦めかけていたところ、先の管理ガイドによれば「import 時にプール名の変更が可能」とのことなので:
- バックアップ先では適当な名前でプール作成
- 主環境での zpool import 時に名前を rpool に変更
- import 時(後?)に諸々の属性設定を調整
で上手く行く予感がしてきた。