彷徨えるフジワラ

年がら年中さまよってます

HDD 障害復旧予行演習 〜 計画編(ZFS)

ファイルシステムを刷新するなら、「HDD がお釈迦になった際のバックアップからの復旧手段」を確認しておくのが大人の嗜み。というわけで、ZFS における障害復旧のフローを確認。

基本は:

  1. 外部メディアでブート
  2. バックアップから、新規 HDD にルートプールを再構築
  3. 再起動

という流れの筈。
外部メディアでのブートは、インストールにも使用した LiveCD(今なら LiveDVD ?)から起動しつつ、GRUB メニューから適当に text mode 起動でも選んでやれば完了。但し、ログインプロンプトが出てから慌てて「ログインが jack/jack、ルートパスワードが opensolaris」という情報を探し出したのは内緒。

新規 HDD にルートプールを再構築する手順は、「ZFS 管理ガイド」の「ZFS ルートプールを再作成しルートプールのスナップショットを復元する方法」に詳しいけど、一般的なディザスタリカバリ対策での保存先(= 別拠点)を考えるなら、解説にあるような NFS 経由でのデータ転送なんかじゃなくて、ssh 出力をパイプで繋ぐあたりが精々じゃなかろうか。

もっとも、「インターネット経由の ssh 回線」なんていう細い線でフルリストアのデータ転送を行うのは、ちょっと現実的では無い気がするので:

  1. バックアップ用のプールを更に複製
  2. いずれかのプール(HDD のローテーションを考えるなら古い方)を offline
  3. offline されたプールの HDD を取り外し
  4. 主環境に移植

みたいなのが現実的かな?アフリカの鳩転送の話じゃないけど、緊急時向けに無駄に太い線を常時維持するよりは、非常時に複製 HDD を一括移送する方が、コストあたりの転送レートとして健全な気が。

で、肝心のバックアップなのだが、import に関しては、プール名が重複していても numeric ID を使用すれば 可能なのだけれど、create に関しては、プール名の重複は一切許容されないらしく、バックアップ先も Solaris + ZFS ルートな環境の場合、rpool という名称でバックアップ用プールを作ることは無理そう。

バックアップ用プールの名称が rpool 以外になった場合、「ルート用のプール名は rpool 固定」という縛り(出典失念、確かブート可能になった版のリリースノートで見た記憶が…)があるので、HDD 移植⇒即再起動なフローは無理かも…。そうなると、「バックアッププール」⇒「(新規 HDD 上に作成した)rpool」でのデータ転送によるリストアとなるので、HDD も余分に必要になるなぁ。貧乏性で御免なさい。

と諦めかけていたところ、先の管理ガイドによれば「import 時にプール名の変更が可能」とのことなので:

  • バックアップ先では適当な名前でプール作成
  • 主環境での zpool import 時に名前を rpool に変更
  • import 時(後?)に諸々の属性設定を調整

で上手く行く予感がしてきた。