重村法克です。

On Fri, 24 Apr 2009 06:32:19 +0900
tamagotoka <tamagot...@yahoo.co.jp> wrote:
> 私はSTABLE追っかけ人なのですが、実際zfs使っている人はzfsのバージョンアッ
> プ時(はたしてそれはあるのか?)にどのような対応をされているのか、どなた
> か実運用されている方、教えてください。よろしくお願いいたします。

        ZFS のバージョンアップについては微妙な問題が絡んでいますが, 汎用的(?)な話
        から, 個別の事情に応じた対応まで, 思い付くまま…。。


        1. 7-STABLE でバージョンアップすることはありません。いくつか事情がありま
           すが, 一番大きな問題は ABI 互換性がなくなる点にあります。よって ZFS の
           バージョンアップが絡む話は 8-STABLE (8.0-RELEASE になってからかな)
           になったとき, 7-STABLE からのアップグレードで初めて問題となります。こ
           れは当面先の話でしょう。

        2. 8-CURRENT では非互換となるような修正が行われますが, さまざまなフィー
           ドバックにより, おかしな点が修正されます(ええ, 散々悩まされましたとも!!
           1 週間丸々使えなくなったり… orz)。よって, 8.0-R の時点で, バグによる
           バージョンアップによる不具合対応という事態はほぼ無いものと考えられます
           (0 とはいいませんが... もちろん「仕様」はあります/後述⇒5項)。

        3. コード的なバージョンアップが即, ファイルシステムへのバージョンアップとは
           つながらないため, 猶予があります。つまり zpool upgrade / zfs upgrade
           を行わない限りは, 古いカーネルでアクセスすることができます。これは切り戻
           しという点で重要な点であり, 同時に下位互換性があることを意味します。上位
           互換性はありませんので, 古いカーネルで新しい ZFS にアクセスすることはで
           きません。

        4. zpool import (あるいは暗黙的に - 起動時など)できるのであれば, 恐い
           ことはありません。これはデータ領域として使うなど, 起動時に ZFS がなく
           ても起動できる環境では重大ではありません(まぁアクセスできないわできない
           でそれは問題でしょうが)。いくらでもリカバリ効きます。この当たりは, 起動
           において, べったり依存するか, 完全に依存しないかにより, 難易度は変わっ
           てきます(トラブルシューティング時の)。

        5. ZFS から直接ブート(UFS から間接的にブートする場合は 4 項に準ずる)する
           場合注意しなければなりません。というのもファイルシステムの構造がバージョ
           ンアップにより変化するためです。つまり, ファイルシステムのアップグレード
           に合わせて(というか事前に)ブートコードをバージョンアップしなければなりま
           せん。 

           a. スライス(DOS パーティション)による起動方法では, boot2(zfsboot2)
              が ZFS が管理する領域に書き込まなければならないため, 原理的に自分自
              身でブートコードをアップデートする方法がありません。liveCD 等を使用
              し, 更新する必要があります。

              ※この時 boot0, boot1(zfsboo1)は更新しなくても問題ありません。

           b. GPT(PMBR)による起動では, gptzfsboot は freebsd-boot パーテ
              ィションに存在するので, ZFS が稼働状態であっても更新ができます。よ
              って ZFS をアップグレードする前に gptzfsboot を事前に更新可能で
              す/します。

           c. GPT(EFI)による起動では, /boot 以下を efi パーティションに存在
              させることになるので, その依存性は loader(/boot/loader) にかか
              ってきます。

           いずれの場合でも, /boot/loader が新しい ZFS に対応している必要があ
           ります。

        以上よろしくお願いいたします。

-- 
Norikatsu Shigemura <n...@ninth-nine.com>

メールによる返信