GPT table is corrupt or invalid というエラーメッセージが出た際の対処

この記事を読むのに必要な時間は約 4 分です。

FreeNAS を 9.2 → 9.3 に更新する際にあれこれやっていたら、以下のエラーメッセージが出てしまいました。

以下のコマンドを実行することで、取り敢えず治ったようですので、メモしておきたいと思います。

スポンサーリンク
スポンサーリンク

環境

OS : FreeNAS 9.3

Disk : USB メモリ (da0, da1 の 2つを挿入)

何をしていたか

FreeNAS 9.3 で、システム用 USB メモリの二重化用に、ミラー pool を作成しようとしていました。

FreeNAS 9.3 インストール済みの USB メモリ (da0) で起動し、gpart で、ミラーに追加しようとしている USB メモリ (da1) のパーティションを切って、glabel でラベルを付与していました。

da1 を da0 と同じようにパーティションを切って、glabel でラベル付与する際に、 #glabel label xxx da1p2 とすべきところを、先に誤って #glabel label yyy da1  としてしまいました。

構わず、 #zpool attach freenas-boot 999999 label/xxx  等とミラーへ追加していたりしたら、気がついたら冒頭のエラーメッセージが出ていました。

gpart show  で見てみても [CORRUPT] と表示されています。

エラーの内容としては、GPT table は、primary (ディスクの頭) と secondary (ディスクのおしり) と 2 つ保持していて、secondary がおかしいよ、primary のみを利用するけど、recovery 推奨だよ、ということのようです。

gpart recovery  というコマンドがあるようですので、実行してみたら、治りました。

/dev/label/ を見てみると、da1 に設定していた yyy というラベルはなくなり、da1p2 に設定していた xxx というラベルのみが残っています。

gpart show  で確認してみると、[CORRUPT] は消えています。

gpart recovery が出来ない場合

システムで利用していて、 device busy の場合は、以下のような方法があるかも知れません。

  • 対象をアンマウントする。
  • zfs 等であれば、detach して一旦切り離す。
  • システムをシャットダウンして、VM 等の別システム上で認識させ、マウントしないで recovery する。

最終手段としては、dd を利用して、gpt table を直接消去して、作成し直す方法になるかも知れません。以下をご参考に。

HDDを増設したところGPTテーブルが壊れた – 嫁がEmacsを使いたいなんて言い出すから

参考

SOLVED – GPT table is corrupt or invalid error on bootup | FreeNAS Community


今回は以上です。

スポンサーリンク
スポンサーリンク
  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です