仮想環境ホストPCのHDD壊れる
HDDが壊れました。この記事はHDD故障を確認するまでの記録です。OSはUbuntu 18.04.2 LTS、SSD(OS)とHDDの構成です。
検証用の仮想環境として運用しているPCにアップデート適用後、再起動して仮想マシン再び立ち上げようとしました。
jinglan@vm-host:~$ sudo virsh start dnsserver error: Failed to start domain dnsserver error: Cannot access storage file '/dev/vg0/vm-dnsserver-disk': No such file or directory jinglan@vm-host:~$
ストレージファイルにアクセスできないため開始できなかったというエラーとなりました。/dev/vg0/を確認してみます。
jinglan@vm-host:~$ ls /dev/vg0 ls: cannot access '/dev/vg0': No such file or directory jinglan@vm-host:~$
/dev/vg0/が存在していないようです。LVMの状態を確認します。
jinglan@vm-host:~$ sudo lvscan jinglan@vm-host:~$ sudo lvdisplay jinglan@vm-host:~$ sudo vgscan --cache Reading volume groups from cache. jinglan@vm-host:~$ sudo vgdisplay --partial --verbose PARTIAL MODE. Incomplete logical volumes will be processed. No volume groups found. jinglan@vm-host:~$ sudo pvscan No matching physical volumes found jinglan@vm-host:~$ sudo pvdisplay jinglan@vm-host:~$
pvscanで"No matching physical volumes found"と言うことはLVMの物理ボリュームが存在していないことを意味します。
jinglan@vm-host:~$ sudo cat /etc/lvm/backup/vg0 # Generated by LVM2 version 2.02.176(2) (2017-11-03): Sat Mar 2 00:35:35 2019 contents = "Text Format Volume Group" version = 1 (中略)
LVMのコンフィグバックアップがあるので復元を試みます。
jinglan@vm-host:~$ sudo vgcfgrestore vg0 Couldn't find device with uuid xpV66e-4zWx-uceS-LuWQ-mqmm-E7qb-DC1gAB. Cannot restore Volume Group vg0 with 1 PVs marked as missing. Restore failed.
リストアには失敗です。やはり物理ボリューム(PV)が存在していないようです。物理ボリュームの復元を実行します。(参考)
jinglan@vm-host:~$ sudo pvcreate --uuid "xpV66e-4zWx-uceS-LuWQ-mqmm-E7qb-DC1gAB" --restorefile /etc/lvm/backup/vg0 /dev/sdb4 Couldn't find device with uuid xpV66e-4zWx-uceS-LuWQ-mqmm-E7qb-DC1gAB. Device /dev/sdb4 not found. jinglan@vm-host:~$
/dev/sdb4/が見つからないというエラー。fdiskでチェックしてみます。
jinglan@vm-host:~$ sudo fdisk -l /dev/sdb Disk /dev/sdb: 7.9 GiB, 8455200768 bytes, 16514064 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: dos Disk identifier: 0x2a45e751 Device Boot Start End Sectors Size Id Type /dev/sdb1 * 2048 206847 204800 100M 7 HPFS/NTFS/exFAT /dev/sdb2 206848 82870172 82663325 39.4G 7 HPFS/NTFS/exFAT /dev/sdb3 82870272 83881983 1011712 494M 27 Hidden NTFS WinRE /dev/sdb4 83881984 976773167 892891184 425.8G 8e Linux LVM jinglan@vm-host:~$ jinglan@vm-host:~$ jinglan@vm-host:~$ jinglan@vm-host:~$ sudo ls /dev/ | grep sdb sdb sdb1 sdb2 jinglan@vm-host:~$
fdiskでは/dev/sdb4があるように見えますが、/dev/にはsdb4が存在しません。ファイルシステムを検査します。
jinglan@vm-host:~$ sudo fsck /dev/sdb fsck from util-linux 2.31.1 e2fsck 1.44.1 (24-Mar-2018) ext2fs_open2: Bad magic number in super-block fsck.ext2: Superblock invalid, trying backup blocks... fsck.ext2: Bad magic number in super-block while trying to open /dev/sdb The superblock could not be read or does not describe a valid ext2/ext3/ext4 filesystem. If the device is valid and it really contains an ext2/ext3/ext4 filesystem (and not swap or ufs or something else), then the superblock is corrupt, and you might try running e2fsck with an alternate superblock: e2fsck -b 8193 <device> or e2fsck -b 32768 <device> Found a dos partition table in /dev/sdb jinglan@vm-host:~$
パーティションのメタデータ(スーパーブロック)が不正と返ってきました。確認してみます。
jinglan@vm-host:~$ sudo hexdump -C -s 446 -n 64 /dev/sdb 000001be 80 20 21 00 07 df 13 0c 00 08 00 00 00 20 03 00 |. !.......... ..| 000001ce 00 df 14 0c 07 fe ff ff 00 28 03 00 9d 57 ed 04 |.........(...W..| 000001de 00 fe ff ff 27 fe ff ff 00 80 f0 04 00 70 0f 00 |....'........p..| 000001ee 00 69 05 65 8e 50 7f 81 00 f0 ff 04 30 70 38 35 |.i.e.P......0p85| 000001fe jinglan@vm-host:~$
一列目がパーティションがブート可能(0x80)かどうか、4列目にパーティションのタイプとなっています。今回は上からNTFS(0x07)、Windowsリカバリ(0x27)、LVM(0x8e)となっているので正常そうです。パーティション情報を読み直します。
jinglan@vm-host:~$ sudo partprobe Error: Can't have a partition outside the disk!
パーティションがディスクよりも大きい…?そんなはずはないとfdiskを再度確認すると
jinglan@vm-host:~$ sudo fdisk -l /dev/sdb Disk /dev/sdb: 7.9 GiB, 8455200768 bytes, 16514064 sectors (中略) /dev/sdb4 83881984 976773167 892891184 425.8G 8e Linux LVM
たしかに7.9 GiBしかディスクがありません。それに対して/dev/sdb4は425.8Gで圧倒的に足りてません。S.M.A.R.Tを使ってHDD状態を見てみます。
jinglan@vm-host:~$ sudo smartctl -a /dev/sdb smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.15.0-46-generic] (local build) Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org === START OF INFORMATION SECTION === Device Model: Q#ノヒWOユa!G"・ gョq チ「scqコ9Sォs・T8sH Serial Number: 235RT08UT Firmware Version: A・37k・ Rotation Rate: 5400 rpm Form Factor: 2.5 inches Device is: Not in smartctl database [for details use: -P showall] ATA Version is: Unknown(0x55ef) (unknown minor revision code: 0x55eb) Local Time is: Sun Apr 7 20:17:30 2019 JST SMART support is: Ambiguous - ATA IDENTIFY DEVICE words 82-83 don't show if SMART supported. SMART support is: Ambiguous - ATA IDENTIFY DEVICE words 85-87 don't show if SMART is enabled. A mandatory SMART command failed: exiting. To continue, add one or more '-T permissive' options. jinglan@vm-host:~$
Device Modelは文字化けしてうまく読み取れていません。一応テストを実行してみます。
jinglan@vm-host:~$ sudo smartctl -t short /dev/sdb -T permissive smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.15.0-46-generic] (local build) Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org SMART support is: Ambiguous - ATA IDENTIFY DEVICE words 82-83 don't show if SMART supported. SMART support is: Ambiguous - ATA IDENTIFY DEVICE words 85-87 don't show if SMART is enabled. Checking to be sure by trying SMART RETURN STATUS command. === START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION === Sending command: "Execute SMART Short self-test routine immediately in off-line mode". Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful. Testing has begun. Please wait 2 minutes for test to complete. Test will complete after Sun Apr 7 20:23:07 2019 Use smartctl -X to abort test. jinglan@vm-host:~$
jinglan@vm-host:~$ sudo smartctl -t long /dev/sdb -T permissive smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.15.0-46-generic] (local build) Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org SMART support is: Ambiguous - ATA IDENTIFY DEVICE words 82-83 don't show if SMART supported. SMART support is: Ambiguous - ATA IDENTIFY DEVICE words 85-87 don't show if SMART is enabled. Checking to be sure by trying SMART RETURN STATUS command. === START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION === Sending command: "Execute SMART Extended self-test routine immediately in off-line mode". Drive command "Execute SMART Extended self-test routine immediately in off-line mode" successful. Testing has begun. Please wait 125 minutes for test to complete. Test will complete after Sun Apr 7 22:26:20 2019 Use smartctl -X to abort test. jinglan@vm-host:~$
検査に125分ほど必要と表示されていますが結果はすぐ出ました。
jinglan@vm-host:~$ sudo smartctl -l selftest /dev/sdb -T permissive smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.15.0-46-generic] (local build) Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org SMART support is: Ambiguous - ATA IDENTIFY DEVICE words 82-83 don't show if SMART supported. SMART support is: Ambiguous - ATA IDENTIFY DEVICE words 85-87 don't show if SMART is enabled. Checking to be sure by trying SMART RETURN STATUS command. === START OF READ SMART DATA SECTION === SMART Self-test log structure revision number 1 Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error # 1 Extended offline Completed: electrical failure 90% 12447 0 # 2 Short offline Completed: electrical failure 90% 12447 0
electrical failureということで電気的故障という結果でした。
今回は試験用の仮想環境で故障だったのでダメージは少ないです。やはり運用環境にはRAIDが必須ですね。