Solaris のシステム管理 (基本編)

UFS ファイルシステムを対話式でチェックして修復する

次の場合には、ファイルシステムを対話式でチェックする必要があります。

使用中のシステムの整合性が失われると、コンソールウィンドウにエラーメッセージが表示されたり、システムがクラッシュしたりすることがあります。

fsck コマンドを使用する前に、fsck コマンドの構文とオプションおよび『Solaris のシステム管理 (上級編)』の「UFS ファイルシステムの不整合解決 (手順)」を参照してください。

ファイルシステムのチェックが必要かを調べる方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. ファイルシステムがマウントされている場合、マウントを解除します。


    # umount /mount-point
    
  3. ファイルシステムをチェックします。


    # fsck -m /dev/rdsk/device-name
    

    指定したファイルシステムのスーパーブロック内の状態フラグがチェックされて、ファイルシステムがクリーンであるか、チェックする必要があるかどうかが判断されます。

    デバイス引数を省略すると、/etc/vfstab ファイル内で「fsck pass」の値が 0 より大きいすべての UFS ファイルシステムがチェックされます。

例 — ファイルシステムのチェックが必要かを調べる

次の例では、ファイルシステムのチェックが必要なことを示しています。


# fsck -m /dev/rdsk/c0t0d0s6
** /dev/rdsk/c0t0d0s6
ufs fsck: sanity check: /dev/rdsk/c0t0d0s6 needs checking

ファイルシステムを対話式でチェックする方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. ルート (/) と /usr 以外のローカルファイルシステムをマウント解除します。


    # umountall -l
    
  3. ファイルシステムをチェックします。


    # fsck
    

    /etc/vfstab ファイル内で、「fsck pass」フィールドのエントリが 0 より大きいすべてのファイルシステムがチェックされます。また、fsck コマンドの引数として、マウントポイントディレクトリや /dev/rdsk/device-name も指定できます。整合性が失われている場合には、そのことを示すメッセージが表示されます。

    1 つまたは複数の UFS ファイルシステムを対話式でチェックしながら、エラーメッセージのプロンプトに応答する方法については、『Solaris のシステム管理 (上級編)』の「UFS ファイルシステムの不整合解決 (手順)」を参照してください。


    注意 – 注意 –

    マウントされているファイルシステム上で fsck コマンドを実行すると、fsck コマンドによってなんらかの変更が行われた場合にシステムがクラッシュする可能性があります。ただし、シングルユーザーモードで fsck コマンドを実行してファイルシステムを修復する場合などは除きます。


  4. エラーを修正し終わったら、fsck と入力して Return キーを押します。

    fsck コマンドは、一度の実行ですべてのエラーを修正できないことがあります。「FILE SYSTEM STATE NOT SET TO OKAY」というメッセージが表示される場合は、fsck コマンドを使って、修正作業を繰り返します。fsck では修正できない場合は、fsck コマンドで修復できない UFS ファイルシステムの修正を参照してください。

  5. lost+found ディレクトリに保存されているファイルの名前を変更して移動します。

    fsck コマンドによって lost+found ディレクトリに入れられた各ファイルの名前は、その i ノード番号を使用して変更されます。可能であれば、ファイル名を変更し、ファイルが含まれるディレクトリに移動してください。grep コマンドを使用して各ファイル中の語句を探したり、file コマンドを使用してファイルタイプを識別できる場合もあります。ディレクトリ全体が lost+found ディレクトリに書き込まれている場合の方が、復帰先のディレクトリを調べて、移動することは容易です。

例 — ファイルシステムを対話式でチェックする

次の例は、/dev/rdsk/c0t0d0s6 ファイルシステムをチェックし、不正なブロック数を訂正する方法を示しています。


# fsck /dev/rdsk/c0t0d0s6
checkfilesys: /dev/rdsk/c0t0d0s6
** Phase 1 - Check Block and Sizes
INCORRECT BLOCK COUNT I=2529 (6 should be 2)
CORRECT? y

** Phase 2 - Check Pathnames
** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts
** Phase 5 - Cylinder Groups
929 files, 8928 used, 2851 free (75 frags, 347 blocks, 0.6%
fragmentation)
/dev/rdsk/c0t0d0s6 FILE SYSTEM STATE SET TO OKAY
 
***** FILE SYSTEM WAS MODIFIED *****

UFS ファイルシステムの修復

fsck -o p コマンド (p は修復用) は、UFS ファイルシステムをチェックし、通常は予期しないシステムのシャットダウンによって発生する問題を自動的に修正します。オペレータの介入が必要な問題が発見されると、このコマンドは即座に終了します。このコマンドによって、ファイルシステムを並列にチェックすることも可能です。

システムがクリーンな状態でシャットダウンしなかった後のファイルシステムの修復にも、fsck -o p コマンドを実行することができます。このモードでは、fsck コマンドはクリーンフラグを調べずに完全チェックを実行します。これらの処理は、fsck コマンドを対話式で実行した場合の処理のサブセットです。

UFS ファイルシステムを修復する方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. UFS ファイルシステムをマウント解除します。


    # umount /mount-point
    
  3. 修復オプションを指定して UFS ファイルシステムをチェックします。


    # fsck -o p /dev/rdsk/device-name
    

    fsck コマンドの引数として /mount-point または /dev/rdsk/device-name を使用すると、個々のファイルシステムを修復できます。

例 — UFS ファイルシステムを修復する

次の例は、/usr ファイルシステムを修復する方法を示しています。


# fsck -o p /usr

fsck コマンドで修復できない UFS ファイルシステムの修正

あるパスで問題が訂正されたために、前のパスで見つからなかった問題が表面化する場合があるので、fsck コマンドを何度か実行してファイルシステムを修正しなければならないことがあります。fsck コマンドはクリーンになるまで動作を続けるわけではないので、手作業で再実行しなければなりません。

fsck コマンドで表示される情報に注目してください。問題を解決する上で参考になります。たとえば、メッセージは損傷したディレクトリを指している場合があります。そのディレクトリを削除すると、fsck コマンドが問題なく実行されるようになる場合もあります。

それでも fsck コマンドでファイルシステムを修復できない場合は、fsdbffclri、または ncheck コマンドを使用し、間違いを指定して修正します。これらのコマンドの使用方法については、fsdb(1M)ff(1M)clri(1M)ncheck(1M) の各マニュアルページを参照してください。最終的には、ファイルシステムを作成し直し、その内容をバックアップメディアから復元せざるを得ない場合があります。

ファイルシステム全体を復元する方法については、第 49 章「ファイルとファイルシステムの復元 (手順)」を参照してください。

ファイルシステムを完全に修復できないが、読み取り専用としてマウントできる場合は、cptar、または cpio コマンドを使用して、データのすべてまたは一部をファイルシステムから取り出してください。

問題の原因がハードウェア上のディスクエラーであれば、ファイルシステムを作成し直して復元する前に、ディスクをフォーマットし直して再びスライスに分割しなければならない場合があります。一般に、ハードウェアエラーが発生すると、さまざまなコマンドで同じエラーが繰り返し表示されます。format コマンドはディスク上の不良ブロックを使用しないようにします。ただし、ディスクの損傷が致命的な場合、フォーマットし直した後も問題が解決されないことがあります。format コマンドの使用方法については、format(1M) のマニュアルページを参照してください。新しいディスクのインストール方法については、第 34 章「SPARC: ディスクの追加 (手順)」または第 35 章「x86: ディスクの追加 (手順)」を参照してください。