FreeBSDのシングルユーザーモードを使用してファイルシステムの破損から回復する方法

提供:Dev Guides
移動先:案内検索

##序章

あなたの最善の努力にもかかわらず、あなたのサーバーがファイルの破損に苦しみ、回復を必要とするかもしれない特定の例があります。 これは、VPSの電源が突然オフになった場合、またはソフトウェアまたはハードウェアの一部が突然誤動作した場合に発生することがあります。

いずれにせよ、VPSの回復を試みるために実行できる手順があります。 FreeBSDでは、これらの機能の多くはシングルユーザーモードから実行できます。 このチュートリアルでは、FreeBSDドロップレットをシングルユーザーモードで起動するために実行できる手順と、そこでのツールを使用して損傷したファイルシステムの回復を試みる方法について説明します。

    1. 重要な考慮事項とリスク

どのような状況でも、データの損失を防ぐには、適切なバックアップが最善の方法です。 信頼性の高いオフサイトバックアップソリューションを実装し、定期的に徹底的にテストすることが、重要なデータの整合性を保証する唯一の方法です。

fsckのようなリカバリオプションは便利なことがよくありますが、正しく機能するという保証はなく、成功は単に運の問題であることがよくあります。 fsck操作により、アクティブディスクのデータが破損する場合があります。 ただし、深刻な損傷が発生した場合でも問題が発生する可能性があるため、データ回復のためのこれらの最後の手段を検討してください。

    1. シングルユーザーモードで起動する

ドロップレットをシングルユーザーモードで起動するには、次のコマンドを実行できます。

sudo nextboot -o "-s" -k kernel

これにより、システム全体をロードしようとするのではなく、次回の再起動時にシングルユーザーモードに入るようにドロップレットに指示します。 準備ができたら、rebootコマンドを使用してドロップレットを再起動できます。

sudo reboot

再起動後、ドロップレットはssh経由でネットワーク経由でアクセスできなくなります。 次に、コントロールパネルのコンソールから液滴にアクセスする必要があります。 再起動が完了すると、以下に示すような非常に最小限のシェルが表示されます。

次の行が表示されたら:

Enter full pathname of shell or RETURN for /bin/sh:

Enterを押すと、シェルセッションを開始できます。

別の方法

ドロップレットにssh経由でアクセスできない場合でも、この代替方法を使用してドロップレットをシングルユーザーモードで起動できます。

まず、コントロールパネルで、電源を入れ直すボタンをクリックして、液滴を再起動します。

この直後に、ドロップレットのコンソールを開きます。 数秒後、次のような画面が表示されます。

このメニューで項目2を選択し、Enterキーを押して続行します。

    1. ファイルシステムチェックの実行

ドロップレットがシングルユーザーモードになったので、次に進みます。 まず、チェックしているデバイスがわかっていることを確認しましょう。 以下のコマンドを実行すると、現在構成されているファイルシステムが表示されます。

cat /etc/fstab

表示される出力は次のようになります。

リストの最初の項目は、私たちが探しているufsファイルシステムを示しています。 これで、次のコマンドを実行して、このディスクでファイルシステムチェックを実行できます。

fsck -yf /dev/gpt/rootfs
    1. 結果の確認

ファイルシステムのチェックが完了したら、rebootコマンドを使用してドロップレットを再起動し、シングルユーザーモードを終了して、ドロップレットを通常(マルチユーザー)モードで再起動できます。

SSHクライアントを使用してドロップレットに接続します。 ドロップレットがssh接続に応答し、それ以前ではなかった場合、これは良い兆候です。 以前に破損の可能性を警告する特定の問題に遭遇した場合は、これらの操作を再試行して、成功するかどうかを確認する必要があります。

重要なことは、/ lost+foundディレクトリを確認することです。 これは、fsckが部分的に回復されたファイルを配置する場所です。

fsckはファイルデータを回復できる場合がありますが、ファイルシステム上でファイルへの参照を見つけることができません。 基本的には名前のないファイルです。 fsckがこの状況に直面した場合、これらのファイルを/ lost + foundディレクトリに配置して、ファイルが何であるかを手動で把握できるようにします。

fsckを実行した後、そのディレクトリに何かが配置されているかどうかを確認します。 lost + foundディレクトリはrootユーザーのみが使用できるため、最初にsudo suコマンドを使用してrootアカウントに変更します。

sudo su
cd /lost+found
ls

このディレクトリにファイルがある場合は、それらを識別できるかどうかを確認する必要があります。 多くの場合、これらはとにかく削除したが、システムがクラッシュしたときにまだ使用されていたファイルです。 確かにそれらをチェックする価値があります。

それでもファイルシステムが著しく壊れている場合、またはマルチユーザーモードに戻ったときに起動に失敗した場合は、リカバリISOを使用して必要なファイルをリカバリするのが最善の方法です。 これを行うには、サポートチームでチケットを開いて、ドロップレットをリカバリ環境で起動できるようにする必要があります。

##結論

ファイルシステムの破損は決して良いことではありませんが、必ずしもすべての重要なデータが失われたことを意味するわけではありません。 リカバリ操作の成功は、ファイルシステムが破損に気付いた速さ、問題の広がり、影響を受けたファイルなど、さまざまな要因によって決まります。

結局のところ、自動化されたツールを使用した単純な回復は、主に運の関数です。 そうは言っても、多くの場合、fsckの回復は成功しており、あまり頭を悩ませることなくサーバーの使用に戻ることができます。 適切なバックアップを維持することは、データの損失を防ぐために実行できる最も重要な手順であることを忘れないでください。