0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ディスク故障時のファイルシステムの復旧方法(USBにISOの作成方法も記載)

Posted at

概要

サーバ、PC等を運用している途中、ディスクが壊れてファイルシステムが破損してしまうという事が起こる。その時、起動に影響のないパーティションであればそのまま復旧も可能だろうが、/領域みたいな箇所である場合は、レスキューモードで起動してあげる必要があるため、その方法を記載する。

エラーの確認

ディスクが復旧したのにサーバがうまく動作しない場合があるとする。たとえばdocker-build時に以下のようなエラーがでる。ERROR: failed to solve: failed to register layer: mkdir /usr/local/lib/python3.10/lib2to3/pgen2: structure needs cleaningこれはディスク等の領域に問題が起こっている場合に起こりうるエラーである。
これは、対象のサーバ上で以下のようなコマンドでカーネルのdmsegからエラー有無を確認できる。ここから事象をディスクのxfsエラーであると確定する。また、対象のディスクをアンマウント後、xfs_repairコマンドを実行するようにと言われている。

dmesg | grep -i xfs
実行結果
[2235933.427395] XFS (sda3): Metadata CRC error detected at xfs_inobt_read_verify+0x1a/0xc0 [xfs], xfs_inobt block 0x9d4e8710 [2235934.025478] XFS (sda3): Unmount and run xfs_repair [2235934.305206] XFS (sda3): First 128 bytes of corrupted metadata buffer:

ISO入りのUSBファイルの作成。

まずは故障したOSと同じISOイメージを使ったUSBファイルを作成する。
ISOイメージは任意のPC(ここではLinuxとする)に既に置いてあるものとする。
任意のPCに起動用のUSBを刺した後、以下のコマンドでどの名前で認識されているか確認する。

lsblk

コマンド等でUSBのブロックを確認する。
その後以下のコマンドで起動用のUSBを作成する。

  • ifがISOファイル
  • ofはUSBファイル
sudo dd if=/path/to/CentOS-7-x86_64-DVD-2009 of=/dev/sdX bs=4M 

数分待つと、USBにISPファイルが書き込まれる

レスキューモードで起動

その後、USBファイルを故障機に刺し、リブートさせる。
USBかilo image mountで起動ディスクを読めるようにしておく。

image.png

今回はUSBボートを行うため、3番を選んで起動させる。

image.png

その後、Troubleshootingを選択する。
image.png

Rescue a CentOS8 Stream systemを選択
image.png

ファイルシステムの修復

2番を押してTTY2を起動を行う。(shellの起動を行う。)
その後、以下のコマンドで復旧対象のデバイスブロックが存在する事を確認する。

lsblk

また、mountコマンドで現在のボリュームのマウント状況を確認する。

mount

そして、以下のコマンドで修復予定のファイルシステムをアンマウントする。
(故障している場合はもうアンマウントできないといわれる可能性もある。)

umount /dev/ブロック名

その後、以下のコマンドで修復する。

xfs_repair /dev/sda3

うまくいかない場合は、再度アンマウントされている事を確認後以下のコマンドを実行する。今回はこれを実行した。
xfs_repair -L /dev/sda3

その時のエラー文は以下のような形。
image.png
その後以下のコマンドを実行して再マウントする。

(事前にdfコマンド等で使用している領域を確認する事)

mount /dev/修復したブロック /(元のマウント場所)

その後、以下のコマンドでマウントできている事を確認する。df -hの場合のみ、/ でマウントしている箇所がレスキューモード用のマウントの位置になっている可能性がある。

mount
lsblk
df -h

その後再起動を実行し、さらにUSBを抜く。

reboot

その後、OSが立ち上がるまで待つ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?