LoginSignup
1
0

More than 3 years have passed since last update.

VirtualBoxで動かしていた旧いサーバをディスクエラーから救出する

Last updated at Posted at 2020-12-12

出張中に、旧いサーバが動かなくなったということで復旧の依頼がありました。
何も機材が無かったのですが、ありあわせの機材で何とかなりました。
久しぶりにストレージ障害を ddrescue で復旧したのでまとめ。

環境

  • ホストOS Debian GNU/Linux 7
  • VirtualBox
  • ゲストOS Scientific Linux 6
  • PostgreSQL

障害ストレージは 1TBytes の SATA HDD (Seagate ST1000DM003) 。 単一のストレージで運用していました。

救出用ストレージとして、2TBytes の HDD (TOSHIBA DT01ACA2) を用意。

診断

ホストOSは起動するけれどもゲストOSがVirtualBox上で起動しない。
image.png

ゲストOS上で /var/log/messages に記録されていました。

image.png

同様に、ホストOSにも記録がされていました。

image.png


Nov 20 07:17:01 penguinoffice /USR/SBIN/CRON[23461]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Nov 20 08:17:01 penguinoffice /USR/SBIN/CRON[23483]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Nov 20 08:51:14 penguinoffice kernel: [19251136.414265] ata6.00: exception Emask 0x0 SAct 0x180000 SErr 0x0 action 0x0
Nov 20 08:51:14 penguinoffice kernel: [19251136.414268] ata6.00: irq_stat 0x40000008
Nov 20 08:51:14 penguinoffice kernel: [19251136.414271] ata6.00: failed command: READ FPDMA QUEUED
Nov 20 08:51:14 penguinoffice kernel: [19251136.414275] ata6.00: cmd 60/20:98:90:fd:62/00:00:01:00:00/40 tag 19 ncq 16384 in
Nov 20 08:51:14 penguinoffice kernel: [19251136.414275]          res 41/40:20:a0:fd:62/00:00:01:00:00/00 Emask 0x409 (media error) <F>
Nov 20 08:51:14 penguinoffice kernel: [19251136.414277] ata6.00: status: { DRDY ERR }
Nov 20 08:51:14 penguinoffice kernel: [19251136.414278] ata6.00: error: { UNC }
Nov 20 08:51:14 penguinoffice kernel: [19251136.414979] ata6.00: supports DRM functions and may not be fully accessible
Nov 20 08:51:14 penguinoffice kernel: [19251136.415923] ata6.00: supports DRM functions and may not be fully accessible
Nov 20 08:51:14 penguinoffice kernel: [19251136.416098] ata6.00: configured for UDMA/133
Nov 20 08:51:14 penguinoffice kernel: [19251136.416103] ata6: EH complete
Nov 20 08:51:18 penguinoffice kernel: [19251140.067322] ata6.00: exception Emask 0x0 SAct 0x400000 SErr 0x0 action 0x0
Nov 20 08:51:18 penguinoffice kernel: [19251140.067325] ata6.00: irq_stat 0x40000008
Nov 20 08:51:18 penguinoffice kernel: [19251140.067328] ata6.00: failed command: READ FPDMA QUEUED
Nov 20 08:51:18 penguinoffice kernel: [19251140.067332] ata6.00: cmd 60/20:b0:90:fd:62/00:00:01:00:00/40 tag 22 ncq 16384 in
Nov 20 08:51:18 penguinoffice kernel: [19251140.067333]          res 41/40:20:a0:fd:62/00:00:01:00:00/00 Emask 0x409 (media error) <F>
Nov 20 08:51:18 penguinoffice kernel: [19251140.067334] ata6.00: status: { DRDY ERR }
Nov 20 08:51:18 penguinoffice kernel: [19251140.067335] ata6.00: error: { UNC }
Nov 20 08:51:18 penguinoffice kernel: [19251140.068045] ata6.00: supports DRM functions and may not be fully accessible
Nov 20 08:51:18 penguinoffice kernel: [19251140.068972] ata6.00: supports DRM functions and may not be fully accessible
Nov 20 08:51:18 penguinoffice kernel: [19251140.069148] ata6.00: configured for UDMA/133
Nov 20 08:51:18 penguinoffice kernel: [19251140.069153] ata6: EH complete
Nov 20 09:10:01 penguinoffice kernel: [19252262.806139] EXT4-fs (sda2): Unaligned AIO/DIO on inode 51904712 by AioMgr0-N; performance will be poor.
Nov 20 09:17:01 penguinoffice /USR/SBIN/CRON[23504]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Nov 20 10:17:01 penguinoffice /USR/SBIN/CRON[23526]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Nov 20 11:17:01 penguinoffice /USR/SBIN/CRON[23548]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Nov 20 12:17:01 penguinoffice /USR/SBIN/CRON[23580]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Nov 20 13:01:07 penguinoffice kernel: [19266123.424239] ata6.00: exception Emask 0x0 SAct 0xe000 SErr 0x0 action 0x0
Nov 20 13:01:07 penguinoffice kernel: [19266123.424242] ata6.00: irq_stat 0x40000008
Nov 20 13:01:07 penguinoffice kernel: [19266123.424245] ata6.00: failed command: READ FPDMA QUEUED
Nov 20 13:01:07 penguinoffice kernel: [19266123.424249] ata6.00: cmd 60/08:68:78:a1:a7/00:00:01:00:00/40 tag 13 ncq 4096 in
Nov 20 13:01:07 penguinoffice kernel: [19266123.424250]          res 41/40:08:78:a1:a7/00:00:01:00:00/00 Emask 0x409 (media error) <F>
Nov 20 13:01:07 penguinoffice kernel: [19266123.424251] ata6.00: status: { DRDY ERR }
Nov 20 13:01:07 penguinoffice kernel: [19266123.424252] ata6.00: error: { UNC }
Nov 20 13:01:07 penguinoffice kernel: [19266123.425006] ata6.00: supports DRM functions and may not be fully accessible
Nov 20 13:01:07 penguinoffice kernel: [19266123.425940] ata6.00: supports DRM functions and may not be fully accessible
Nov 20 13:01:07 penguinoffice kernel: [19266123.426124] ata6.00: configured for UDMA/133
Nov 20 13:01:07 penguinoffice kernel: [19266123.426130] ata6: EH complete
Nov 20 13:01:15 penguinoffice kernel: [19266132.009225] ata6.00: qc timeout (cmd 0x2f)
Nov 20 13:01:15 penguinoffice kernel: [19266132.009232] ata6: failed to read log page 10h (errno=-5)
Nov 20 13:01:15 penguinoffice kernel: [19266132.009236] ata6.00: exception Emask 0x1 SAct 0x7c0000 SErr 0x0 action 0x6 frozen
Nov 20 13:01:15 penguinoffice kernel: [19266132.009238] ata6.00: irq_stat 0x40000008
Nov 20 13:01:15 penguinoffice kernel: [19266132.009241] ata6.00: failed command: READ FPDMA QUEUED
Nov 20 13:01:15 penguinoffice kernel: [19266132.009245] ata6.00: cmd 60/08:90:78:a1:a7/00:00:01:00:00/40 tag 18 ncq 4096 in
Nov 20 13:01:15 penguinoffice kernel: [19266132.009245]          res 40/00:90:78:a1:a7/00:00:01:00:00/40 Emask 0x1 (device error)
Nov 20 13:01:15 penguinoffice kernel: [19266132.009247] ata6.00: status: { DRDY }
Nov 20 13:01:15 penguinoffice kernel: [19266132.009248] ata6.00: failed command: WRITE FPDMA QUEUED
Nov 20 13:01:15 penguinoffice kernel: [19266132.009251] ata6.00: cmd 61/08:98:78:f5:16/00:00:63:00:00/40 tag 19 ncq 4096 out
Nov 20 13:01:15 penguinoffice kernel: [19266132.009252]          res 40/00:90:78:a1:a7/00:00:01:00:00/40 Emask 0x1 (device error)
Nov 20 13:01:15 penguinoffice kernel: [19266132.009254] ata6.00: status: { DRDY }
Nov 20 13:01:15 penguinoffice kernel: [19266132.009255] ata6.00: failed command: WRITE FPDMA QUEUED
Nov 20 13:01:15 penguinoffice kernel: [19266132.009258] ata6.00: cmd 61/08:a0:40:45:bf/00:00:01:00:00/40 tag 20 ncq 4096 out
Nov 20 13:01:15 penguinoffice kernel: [19266132.009258]          res 40/00:90:78:a1:a7/00:00:01:00:00/40 Emask 0x1 (device error)
Nov 20 13:01:15 penguinoffice kernel: [19266132.009260] ata6.00: status: { DRDY }
Nov 20 13:01:15 penguinoffice kernel: [19266132.009261] ata6.00: failed command: WRITE FPDMA QUEUED


救出用マシンを作成

Ubuntu 20.04 を適当なマシンにインストール、障害ストレージと救出用ストレージを接続しました。
また、以下をインストールしています。

  • VirtualBox
  • ddrescue ( gddrescue )

イメージコピー

ddrescue を使用しました。Ubuntu のパッケージに入っているのは gddrescue です。


# export SOURCE=/dev/sdb
# export DIST=/dev/sdc
# ddrescue $SOURCE $DIST 20201129.map --force

操作ミス防止のために一旦環境変数に入れて操作しています。

IMG_20201130_071331491.jpg

リードエラー1628を伴ってコピーできました。

実は、これより先に同様のやりかたでコピー先をイメージファイルにして操作しましたが、 loopback マウントがうまくいかなかったので、物理デバイス同士で取り直しました。

必要なファイルの退避

リードオンリーとしてマウントして、必要なファイルをコピー


# mount /dev/sdc2 /mnt/sdc2 -o ro

コピーしたもの

  • "VirtualBox VMs" フォルダ
  • SL-65-x86_64_2014-01-17-Install-DVD.iso

VirtualBox 操作

まず、コピーした SL-65-x86_64_2014-01-17-Install-DVD.iso を使って Scientifix Linux の仮想マシンを新たに作ります。

ここで、ありあわせの機材だったのでBIOSを以下のように設定し直す必要がありました。

IMG_20201130_072642413.jpg

これを確認せずに起動しようとして以下のようにエラーが出たりしてあれれ?? と戸惑いました。

IMG_20201130_073439869.jpg

上記を修正し、無事インストールできました。

image.png

新ゲストマシンに必要なプログラムをインストール

VboxGuestAdditionとそれに必要なプログラムをインストール

- yum install gcc kernel-devel kernel-headers dkms make bzip2
- yum update kernel*
- reboot
- CD内のインストーラを起動

旧サーバのサービスに必要なプログラムをインストール


# yum install nkf httpd
# yum install postgresql 
# yum install php-pgsql php php-mbstring
# yum install postgresql-server

上記プログラムの設定は適宜しておきます。

VirtualBox 上で仮想ディスクを mount する


$ mount /dev/VolGroup2014/lv_root /mnt/lv_root

必要なファイルを救出


# cd /mnt/lv_root/var
# cp -a www/html /var/www
# cp -a lib/pgsql /var/lib 

postgresql のデータの損傷


# /etc/init.d/postgresql start

とするとエラーが起こる。


# su - postgres

として、


$ postmaster -p 5432

とするとサービスが起動した。


$ psql

としてもエラーとなるが、



$ psql -d [データベース名]

とすると接続できたのでダンプ。

データベースを退避してたオリジナルに切り替えて、ダンプを取り込むと復旧できた。
運の良いことに、データベースデータは問題がありませんでした。

1
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
1
0