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

前書き

最善を尽くしても、サーバーでファイルの破損が発生し、リカバリが必要になる場合があります。 これは、VPSの電源が突然切れたとき、またはソフトウェアまたはハードウェアの一部が突然故障したときに発生することがあります。

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

重要な考慮事項とリスク

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

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

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

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

sudo nextboot -o "-s" -k kernel

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

sudo reboot

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

image:https://assets.digitalocean.com/articles/freebsd-single-user/single_user_start.png [image]

行が表示されたら:

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

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

別の方法

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

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

この直後に、液滴のコンソールを開きます。 数秒後、次のような画面が表示されます。

image:https://assets.digitalocean.com/articles/freebsd-single-user/boot-menu.png [image]

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

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

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

cat /etc/fstab

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

image:https://assets.digitalocean.com/articles/freebsd-single-user/fstab.png [image]

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

fsck -yf /dev/gpt/rootfs

結果を確認する

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

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

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

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

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

sudo su
cd /lost+found
ls

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

ファイルシステムがまだ著しく破損している場合、またはマルチユーザーモードに戻すときにブートが失敗する場合、最善のオプションはhttps://www.digitalocean.com/community/tutorials/recovering-files-from-a-破損したドロップレットを使用してリカバリISO [リカバリISOを使用して必要なファイルをリカバリする]。 これを行うには、https://cloud.digitalocean.com/support [サポートチームとチケットを開く]を使用して、液滴を回復環境に起動できるようにする必要があります。

結論

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

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