今日、新しいハードウェアをインストールしているときに、サーバーの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
わかりました、私が他の答えで言ったことを気にしないでください。とにかくZFSパーティションに問題がある場合は、シングルユーザーモードで起動できません。おかしいのは、回答を投稿した後、再び電源に問題があり、あなたの問題と同じようにシステムを起動できませんでした。
だからここに戻るために私がやったことです。
FreeBSD 10.0-RELEASE
のライブCDを使用しました(ダウンロードを最小限にするためにbootonly
だと思います)
root
としてログイン)次のコマンドを実行して、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
など)をロードできます。
それが役に立てば幸いです、そして誰かが上記のブートプールの問題のクリーンな修正を知っているなら、私とそれを共有してください。
おかげで、
ドラコ
参照:
シングルユーザーモードで起動してZFSパーティションを強制マウントしようとしましたか?
# zfs mount -a
FreeBSD 10(Root-on-ZFSでもあります)で電源障害が発生し、上記のコマンドを使用して起動することができました。
どうなるか教えてください。