2016年3月20日日曜日

SSDが故障してOSが起動しない

Crucial m4 SSDの故障
Arch Linuxが入っていたSSD (Crucial m4 CT512M4SSD2)が故障したっぽい。pacmanでパッケージアップデートしていたら、突然GUIが落ちてCUI画面に切り替わり、以下のようなInput/outputエラーが延々と出るようになった。
[333311.366625] systemd-journald[245]: Failed to rotate /var/log/journal/6459213c1d6743478b95723dff97eb1c/system.journal: Input/output error
[333311.366625] systemd-journald[245]: Failed to rotate /var/log/journal/6459213c1d6743478b95723dff97eb1c/user-1000.journal: Input/output error
[333311.366625] systemd-journald[245]: Failed to open /var/log/journal/6459213c1d6743478b95723dff97eb1c/system.journal: Input/output error
[333311.366625] systemd-journald[245]: Failed to write entry (9 items, 261 bytes), ignoring: Input/output error
...

カーネルアップデートをしていたので、どうせカーネルイメージの作成に失敗したんだろうと高をくくっていたが、色々あがいても再びOSを起動させることはできなかった。幸い/homeのパーティションは生きていたので、必要なデータは救出することができた。今回の故障から、/home用のパーティションはルートパーティションから区切っておいてよかったと思った。

SSDのパーティションは以下のようにしていた。
  • sda1: /boot (FAT32)
  • sda2: swap
  • sda3: / (XFS)
  • sda4: /home (XFS)

試行錯誤のログ
データ救出とパーティションの修復
PCの電源ボタンで電源を切り、再度起動させてみると以下のようなエラーが出る。sda3はマウントできなくなっている様子。
starting version 229
/sbin/fsck.xfs: XFS file system.
[1.486072] XFS (sda3): Internal error XFS_WANT_CORRUPTED_RERURN at line 141 of file fs/xfs/libxfs/xfs_dir2_data.c. Caller xfs_dir3_data_verify+0x8f/0xa0 [xfs]
[1.486553] XFS (sda3): Metadata corruption detected at xfs_dir3_data_write_verify+0xef/0x100 [xfs], block 0x50fe8
[1.486602] XFS (sda3): Unmount and run xfs_repair
[1.486633] XFS (sda3): First 64 bytes of corrupted metadata buffer:
[1.486665] ffff880037db3000: 58 44 44 33 dd 8e 05 01 00 00 00 00 00 00 05 0f e8  XDD3..........
...
[1.486840] XFS (sda3): Corruption of in-memory data detected. Shutting down filesystem
[1.486884] XFS (sda3): Please umount the filesystem and rectify the problem(s)
mount: mount /dev/sda3 on /new_root failed: Structure needs cleaning
You are now being dropped into an emergency shell.
sh: can't access tty; job control turned off
[rootfs /]#

雲行きが怪しくなってきたので、Live CDを使ってストレージ用のHDDへ/home以下のデータをコピーした。幸い、/homeをマウントポイントとしていたsda4はマウントできた。

さらに、マウントできなくなっているsda3の修復を試みた。Live CDで起動したArch Linuxから、xfs_repairした。xfs_repairによってデータが破損する可能性があるので、xfs_repairを実行する前に、必要なデータは救出しておく。
# xfs_repair -L /dev/sda3

すると、disconnected inodeがいくつか検出されて、lost+foundに移された。OSが起動できるようになったか確認するために、PCを再起動してみたが、やはりfsckが通らずエラーが出る。
starting version 229
/sbin/fsck.xfs: XFS file system.
mount: wrong fs type, bad option, bad superblock on /dev/sda3,
            missing codepage or helper program, or other error

            In some cases useful info is found in syslog - try
            dmesg | tail or so.
You are now being dropped into an emergency shell.
sh: can't acess tty; job control turned off
[rootfs /]#

カーネルイメージの再作成
マウントできなかったsda3は先のxfs_repairによりマウントできるよになったので、「Arch Linuxが起動しない」の記事に従って、Live CDを使ってカーネルイメージの再作成を行った。

SSD側のシステムにchrootして、pacmanなどを使ってみると一応使える。しかし、ldconfigで「File /usr/lib/xxx.so is empty, not checked.」が大量に出ており、xfs_repairによりいくつか既存のファイルが壊れた様子。

ライブラリを再インストールしようと思い、とりあえず、pacmanのデータベースを更新しようとしたらここでもエラーが出た。
# pacman -Syy

:: Synchronizing package databases...
error: failed to update core (unable to lock database)
error: failed to update extra (unable to lock database)
...
if you're sure a package manage is not already
running, you can remove /var/lib/pacman/db.lck

/var/lib/pacman/db.lckを消せとのことなので、消したらpacman -Syyは通るようになった。
# rm /var/lib/pacman/db.lck
# pacman -Syy

:: Synchronizing package databases...
core
extra
community
archlinuxfr

次にpacmanから、base, base-develを再インストールする。pacmanは正常に動作して、base, base-develパッケージはインストールできた。
# pacman -S base base-devel

mkinitcpioも通った。
# mkinitcpio -p linux

==> Building image from preset: /etc/mkinitcpio.d/linux.preset: ...
...
==> Image generation successful

chrootを抜け出して、PCを再起動したが、まだエラーが出る。
starting version 229
ERROR: device 'UUID=xxxxx-xxxxx-xxxxx-xxxxx' not found. Skipping fsck.
You are being dropped to a recovery shell
Type 'exit' to try and continue booting
sh: can't access tty; job control turned off
[rootfs /]#

xfs_repairして、sda3のUUIDが変わったのかと思って再度Live CDからchrootして/etc/fstabと/dev/disk/by-uuid/から、UUIDが合っているか確認したが問題なかった。打つ手がなくなってきたので、とりあえずもう一度xfs_repairしてみて、再起動。するとエラーの内容が変わった。
starting version 229
/sbin/fsck.xfs: XFS file system.
mount: wrong fs type, bad option, bad superblock on /dev/sda3,
            missing codepage or helper program, or other error

           In some cases useful info is found in syslog - try
           dmesg | tail or so.
You are now being dropped into an emergency shell.
sh: can't access tty; job control turned off
[rootfs /]#

rootfsからマウントしようとしても、やはりwrong fs type, bad option, bad superblock on /dev/sda3, missing codepage or helper program, or other errorが出てマウントできなかった。exitすると、カーネルパニックが起きるという状況。さすがに、ここまできたら諦めて予備のSSDに新したにArch Linuxをインストールすることにした。


参考:
[1]XFS - ArchWiki

スポンサーリンク

スポンサーリンク

0 件のコメント:

コメントを投稿