web-dev-qa-db-ja.com

FreeBSD 10は電源障害の後にZFSルートから起動しません

今日、新しいハードウェアをインストールしているときに、サーバーの1つの電源を無意識に切断しました。このサーバーは、インストーラーが提供するRoot-on-ZFSを備えたFreeBSD 10を実行しています。合計36のディスクがあり、同じプール(zroot)に属する2つのRAID-Z2に分散されています。

サーバーを再びオンにすると、サーバーは起動しなくなります。ブートメニューが表示される前に、次のメッセージが出力されます。

Loading /boot/defaults/loader.conf ZFS: i/o error - all block copies unavailable Warning: error reading file /boot/loader.conf

これらのメッセージにもかかわらず、システムはカーネルがmountfrom>プロンプトで停止するまでカーネルを起動し続け、そこから続行することができません。 zfs:zroot/ROOT/defaultと入力すると、unknown filesystemと表示されます。

ただし、USBスティックから起動してzpoolをインポートすると、/boot/defaults/loader.conf/boot/loader.confの両方を読み取ることができます。実際、zpoolは完全に問題ないようです。

その後、ブートコードを再インストールしようとしました:

gpart bootcode -b /tmp/zroot/boot/pmbr -p /boot/gptzfsboot -i 1 da0

私はzpoolキャッシュファイルを再作成しようとしました:

zpool set cachefile=/tmp/zroot/boot/zfs/zpool.cache zroot

ブートローダーにZFSモジュールをロードするように手動で指示しようとしました。

これらの試みはすべて同じ結果をもたらしましたが、システムを再起動するために私ができることには完全に行き詰まっています。

編集:

zpool listの出力:

$ zpool list
NAME    SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
zroot  97.8T  28.0T  69.7T    28%  1.33x  ONLINE  /tmp/zfs

現在、システムはUSBスティックから起動されているため、プールを/にインポートできませんでした

/boot/loader.confの内容:

$ cat /boot/loader.conf
zfs_load="YES"
ipmi_load="YES"

編集2:

$ zpool status
  pool: zroot
 state: ONLINE
  scan:
config:

    NAME                                            STATE     READ WRITE CKSUM
    zroot                                           ONLINE       0     0     0
      raidz2-0                                      ONLINE       0     0     0
        gptid/f8c57b3a-083e-11e4-b11b-002590e745f4  ONLINE       0     0     0
        gptid/f97b7e8b-083e-11e4-b11b-002590e745f4  ONLINE       0     0     0
        gptid/fa3c41d9-083e-11e4-b11b-002590e745f4  ONLINE       0     0     0
        gptid/faf62101-083e-11e4-b11b-002590e745f4  ONLINE       0     0     0
        gptid/fbb19e1b-083e-11e4-b11b-002590e745f4  ONLINE       0     0     0
        gptid/fc6b75db-083e-11e4-b11b-002590e745f4  ONLINE       0     0     0
        gptid/fd26cd36-083e-11e4-b11b-002590e745f4  ONLINE       0     0     0
        gptid/fddb4b8e-083e-11e4-b11b-002590e745f4  ONLINE       0     0     0
        gptid/fe9a55f6-083e-11e4-b11b-002590e745f4  ONLINE       0     0     0
        gptid/ff582110-083e-11e4-b11b-002590e745f4  ONLINE       0     0     0
        gptid/001713d1-083f-11e4-b11b-002590e745f4  ONLINE       0     0     0
        gptid/00d90b6c-083f-11e4-b11b-002590e745f4  ONLINE       0     0     0
        gptid/0192be91-083f-11e4-b11b-002590e745f4  ONLINE       0     0     0
        gptid/023ea058-083f-11e4-b11b-002590e745f4  ONLINE       0     0     0
        gptid/02fb8ee4-083f-11e4-b11b-002590e745f4  ONLINE       0     0     0
        gptid/03ab78ec-083f-11e4-b11b-002590e745f4  ONLINE       0     0     0
        gptid/04632542-083f-11e4-b11b-002590e745f4  ONLINE       0     0     0
        gptid/052144fd-083f-11e4-b11b-002590e745f4  ONLINE       0     0     0
      raidz2-1                                      ONLINE       0     0     0
        da18                                        ONLINE       0     0     0
        da19                                        ONLINE       0     0     0
        da20                                        ONLINE       0     0     0
        da21                                        ONLINE       0     0     0
        da22                                        ONLINE       0     0     0
        da23                                        ONLINE       0     0     0
        da24                                        ONLINE       0     0     0
        da25                                        ONLINE       0     0     0
        da26                                        ONLINE       0     0     0
        da27                                        ONLINE       0     0     0
        da28                                        ONLINE       0     0     0
        da29                                        ONLINE       0     0     0
        da30                                        ONLINE       0     0     0
        da31                                        ONLINE       0     0     0
        da32                                        ONLINE       0     0     0
        da33                                        ONLINE       0     0     0
        da34                                        ONLINE       0     0     0
        da35                                        ONLINE       0     0     0

errors: No known data errors
4
Sarek

わかりました、私が他の答えで言ったことを気にしないでください。とにかくZFSパーティションに問題がある場合は、シングルユーザーモードで起動できません。おかしいのは、回答を投稿した後、再び電源に問題があり、あなたの問題と同じようにシステムを起動できませんでした。

だからここに戻るために私がやったことです。

FreeBSD 10.0-RELEASEのライブCDを使用しました(ダウンロードを最小限にするためにbootonlyだと思います)

  1. CDから起動し、オプションから[Live CD]を選択します。 (rootとしてログイン)
  2. 次のコマンドを実行して、geliを使用してパーティションをアタッチします。 root-on-ZFSフルディスク暗号化設定がある場合は、パスフレーズを入力する必要があります

     mkdir /tmp/bootpool
     zpool import -f bootpool
     zfs set mountpoint=/tmp/bootpool bootpool
     zfs mount -a
     cp /tmp/bootpool/boot/encryption.key /tmp/
     zfs umount -a
     zfs set mountpoint=/bootpool bootpool
     zpool export bootpool
     geli attach -k /tmp/encryption.key /dev/ada0p4
     zpool import -f -R /mnt zroot
    

パワーダウンの問題がパーティションを正しい方法でexportしなかったため、zpool importフラグを付けて-fを実行する必要がありました。

これらのコマンドを実行した後、私は再起動し、システムは再びオンラインになりました。

しかし、起動後にbootpoolが正しく読み込まれないという別の問題がありました。

/bootフォルダーは空でしたが、/bootpool/bootディレクトリーへのシンボリックリンクでもありました。また、zfsブートプールパーティションをインポートすると/bootpool/boot/bootが作成されるため、/bootpoolの下にある2つのbootフォルダーに問題があることがわかりました。

したがって、rebootの後にこれを実行して、ブートプールを手動でロードしました。

      zpool export bootpool
      zpool import -f bootpool
      (cd to root and remove the old symbolic link `boot`)
      cd /
      rm boot
      (notice the double `boot` directory issue)
      ln -sf bootpool/boot/boot/

それだけです。/bootシンボリックリンクが再び機能し、不足しているカーネルモジュール(kldload linuxなど)をロードできます。

それが役に立てば幸いです、そして誰かが上記のブートプールの問題のクリーンな修正を知っているなら、私とそれを共有してください。

おかげで、

ドラコ

参照:

4
Hefnawi

シングルユーザーモードで起動してZFSパーティションを強制マウントしようとしましたか?

# zfs mount -a

FreeBSD 10(Root-on-ZFSでもあります)で電源障害が発生し、上記のコマンドを使用して起動することができました。

どうなるか教えてください。

1
Hefnawi