Oracle® Solaris 11.2 での ZFS ファイルシステムの管理

印刷ビューの終了

更新: 2014 年 12 月
 
 

ブートできないシステムを修復する

ZFS は、エラーが発生した場合でも、堅牢で安定した状態であるように設計されています。それでも、ソフトウェアのバグや予期しない異常な操作のために、プールにアクセスするときにシステムでパニックが発生することがあります。各プールはブート処理のときに開く必要があるので、このような障害が発生すると、システムがパニックとリブートのループに入ってしまうことになります。この状況から回復するには、起動時にプールを検索しないよう ZFS に通知する必要があります。

ZFS では、利用できるプールとその構成の内部キャッシュを /etc/zfs/zpool.cache で管理しています。このファイルの場所と内容は非公開で、変更される可能性があります。システムをブートできなくなった場合は、–m milestone=none ブートオプションを使用して、マイルストーン none でブートします。システムが起動したら、ルートファイルシステムを書き込み可能として再マウントしてから、/etc/zfs/zpool.cache ファイルの名前を変更するかこのファイルを別の場所に移動します。これらの操作によって、システムに存在するすべてのプールがキャッシュから消去されるので、問題の原因となっている正常でないプールにアクセスしようとしなくなります。この状態になったら、svcadm milestone all コマンドを実行して、通常のシステムの状態に戻ることができます。代替ルートからブートして修復を行う場合にも、同じような工程を使用できます。

システムが起動したあとで、zpool import コマンドを使ってプールをインポートしてみることができます。ただし、このコマンドを実行すると、ブートで発生したエラーと同じエラーが発生する可能性があります。これは、プールにアクセスするときにブート時と同じ方法が使用されているためです。複数のプールがシステムに存在する場合は、次の手順を実行します。

  • すでに説明したように、zpool.cache ファイルの名前を変更するか、このファイルを別の場所に移動します。

  • どのプールに問題が発生している可能性があるかを調べるために、致命的エラーが報告されているプールを fmdump -eV コマンドで表示します。

  • fmdump の出力に示された問題のあるプールを除き、プールを 1 つずつインポートします。