インフラエンジニアに永遠につきまとう、月曜出社直後の障害報告と調査依頼。
今回はioDrive搭載サーバのMySQLが急に落ちましたということで、調査してみました。
これまで、ioDriveは不滅です。的なことばかり書いていましたが、まぁいつかは何か起きますよね・・・ってことで、ホクホクしながらioDriveのネガキャン、ではなく、こんな障害例がありましたよ、こんな感じで調べましたよという紹介をします。
月曜朝のスタート地点
依頼主からもらった情報。今回は無償で受けてあげました。
それでは調査開始!
ドライバなどのバージョン確認
2.2.3 を利用していることを確認。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
$ dpkg -l | grep fio ii fio 1.38-1 Flexible I/O Tester ii fio-common 2.2.3.66-1.0 Common files for fio products. ii fio-firmware 101583.6-1.0 Fio driver firmware rc fio-remote-util 1.1.2.22-1.0 pyWBEM scripts for remote managing the Fusion-io devices using the CIM interface. These scripts should be used in conjunction with the fio-smis providers. ii fio-snmp-agentx 1.1.1.5-1.0 SNMP daemon for monitoring fio devices ii fio-snmp-mib 1.1.1.5-1.0 MIB for fio devices ii fio-sysvinit 2.2.3.66-1.0 SysV init script for controlling iomemory-vsl devices ii fio-util 2.2.3.66-1.0 Utilities for Fusion-io fio ii libfio 2.2.3.66-1.0 Libraries for supporting the Fusion-io iomemory-vsl ii libfio-dev 1.1.1.5-1.0 Development headers for libfio ii libfio-doc 1.1.1.5-1.0 Developer documentation and examples for libfio ii libfusionjni 1.1.1.5-1.0 Java library for supporting the fio management interface $ dpkg -l | grep vsl ii fio-sysvinit 2.2.3.66-1.0 SysV init script for controlling iomemory-vsl devices ii iomemory-vsl-2.6.32-5-amd64 2.3.1.123-1.0 Driver for FIO devices ii iomemory-vsl-2.6.32-5-amd64-drecom 2.2.3.66-drecom1.0 Driver for FIO devices ii iomemory-vsl-source 2.2.3.66-1.0 Source to build driver for FIO devices ii libfio 2.2.3.66-1.0 Libraries for supporting the Fusion-io iomemory-vsl |
マウント先の確認
全くアクセス出来ないことを確認。
1 2 3 4 5 6 7 |
$ df -Th Filesystem Type Size Used Avail Use% Mounted on ~snip~ /dev/md0 xfs 187G 52G 135G 28% /fio $ ls -l /fio ls: cannot access /fio |
この時点で、MySQLが原因である可能性がほぼゼロと判断し、ioDriveのVSLか、ioDriveかマザボが物理的に逝ったか、と予想し始める。
記念uptime
ioDriveが起因での障害とすればとても珍しいので記念にuptimeとかメモっちゃう。
1 2 |
$ uptime 10:17:21 up 110 days, 18:49, 2 users, load average: 0.05, 0.02, 0.00 |
snmpdのグラフを見たら、使い始めてから250日超えてたくらい。
/dev/md0 XFSの確認
xfs_repairで直ることなんてザラだから一応チェックするもダメ。
1 2 3 4 5 |
$ xfs_check /dev/md0 xfs_check: read failed: Input/output error xfs_check: data size check failed xfs_check: read failed: Input/output error Segmentation fault |
認識デバイスの確認
fdiskで見るとどうなってるかな~、で死亡確認。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ fdisk -l ~snip~ Disk /dev/fioa: 100.0 GB, 99999547392 bytes 255 heads, 63 sectors/track, 1519 cylinders Units = cylinders of 16065 * 4096 = 65802240 bytes Sector size (logical/physical): 4096 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 32768 bytes Disk identifier: 0x00000000 Disk /dev/fioa doesn't contain a valid partition table Note: sector size is 4096 (not 512) Unable to read /dev/fiob |
fio-status の確認
信頼と実績のfio-statusはどうなってるかな~、で死亡確認。めったに見られない表示ですね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
$ fio-status Found 2 ioDrives in this system with 1 ioDrive Duo Fusion-io driver version: 2.2.3 build 66 Adapter: ioDrive Duo IBM 320GB High IOPS SD Class PCIe Adapter, Product Number:46M0885 SN:104309 External Power: NOT connected PCIE Power limit threshold: 24.75W Sufficient power available: Unknown Connected ioDimm modules: fct0: IBM 320GB High IOPS SD Class PCIe Adapter, Product Number:46M0885 SN:103915 fct1: IBM 320GB High IOPS SD Class PCIe Adapter, Product Number:46M0885 SN:103979 fct0 Attached as 'fioa' (block device) IBM 320GB High IOPS SD Class PCIe Adapter, Product Number:46M0885 SN:103915 Alt PN:46M0887 Located in slot 0 Upper of ioDrive Duo SN:104309 PCI:1d:00.0 Firmware v5.0.6, rev 101583 100.00 GBytes block device size, 198 GBytes physical device size Sufficient power available: Unknown Internal temperature: avg 55.6 degC, max 64.0 degC Media status: Healthy; Reserves: 100.00%, warn at 10.00% fct1 FAILED as 'fiob' (block device) IBM 320GB High IOPS SD Class PCIe Adapter, Product Number:46M0885 SN:103979 Alt PN:46M0887 Located in slot 1 Lower of ioDrive Duo SN:104309 WARNING: DEVICE IS OFFLINE. ALL READS AND WRITES WILL FAIL! A hardware problem forced the drive offline. PCI:1e:00.0 Firmware v5.0.6, rev 101583 0 MBytes block device size, 198 GBytes physical device size Sufficient power available: Unknown Internal temperature: avg 56.1 degC, max 62.0 degC Media status: Read-only; Reserves: 100.00%, warn at 10.00% |
いじくる調査の前にfio-bugreport取得
1 2 3 4 |
$ fio-bugreport # ローカルに保存しておく $ ls /tmp/fio-bugreport-20121001.*.tar.bz2 |
fioデタッチ処理
色々と無理だと悟って、再起動無しに直せるか試す方向へ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# アンマウント $ umount /fio # ソフトウェアRAID停止 $ /etc/init.d/mdadm stop $ /etc/init.d/mdadm-raid stop # fct0の切り離しは成功 $ fio-detach /dev/fct0 Detaching: [====================] (100%) - # fct1は失敗 $ fio-detach /dev/fct1 Block device /dev/fct1 already detached. # /dev/fiobだけ無残に残った $ ls -l /dev/f* crw------- 1 root root 10, 58 Jun 12 15:28 /dev/fct0 crw------- 1 root root 10, 57 Jun 12 15:28 /dev/fct1 brw-rw---- 1 root disk 253, 16 Jun 12 15:28 /dev/fiob |
detachできていないけどフォーマットしてみる
当然無理で、ドライバreloadしてみなさいと言われたので次。
1 2 |
$ fio-format -b 4k -y -s 100G /dev/fct1 Error: Could not get static format info. Try reloading driver. |
iomemory-vsl ドライバを無効 -> 有効にしてみる
1 2 3 4 5 6 7 8 9 10 11 |
# 無効 # /dev/ から綺麗になくなった $ modprobe -f -r iomemory-vsl $ ls -l /dev/f* # 有効 # /dev/fct1 だけ認識できない $ modprobe iomemory-vsl $ ls -l /dev/f* crw------- 1 root root 10, 58 Oct 1 11:13 /dev/fct0 brw-rw---- 1 root disk 253, 0 Oct 1 11:13 /dev/fioa |
ここで俺たちの夏が終わったので再起動ソリューションと化す。
OS再起動から確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# 再起動 # の前に /etc/fstab の該当行をコメントアウトしておく vim /etc/fstab reboot # 起動後に確認 # まさかの fct0, fct1 ともに認識 $ ls -l /dev/f* crw------- 1 root root 10, 58 Oct 1 11:22 /dev/fct0 crw------- 1 root root 10, 57 Oct 1 11:22 /dev/fct1 brw-rw---- 1 root disk 253, 0 Oct 1 11:22 /dev/fioa brw-rw---- 1 root disk 253, 16 Oct 1 11:22 /dev/fiob # mdadmも動いている $ ls -l /dev/md0 brw-rw---- 1 root disk 9, 0 Oct 1 11:22 /dev/md0 # 手動でマウントして $ mount /dev/md0 /fio/ # 中身を確認 $ df -Th Filesystem Type Size Used Avail Use% Mounted on ~snip~ /dev/md0 xfs 187G 52G 135G 28% /fio $ ls -1 /fio/ backup mysql tmp |
そしてfio-statusの確認で元気なのを確認。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
$ fio-status Found 2 ioDrives in this system with 1 ioDrive Duo Fusion-io driver version: 2.2.3 build 66 Adapter: ioDrive Duo IBM 320GB High IOPS SD Class PCIe Adapter, Product Number:46M0885 SN:104309 External Power: NOT connected PCIE Power limit threshold: 24.75W Sufficient power available: Unknown Connected ioDimm modules: fct0: IBM 320GB High IOPS SD Class PCIe Adapter, Product Number:46M0885 SN:103915 fct1: IBM 320GB High IOPS SD Class PCIe Adapter, Product Number:46M0885 SN:103979 fct0 Attached as 'fioa' (block device) IBM 320GB High IOPS SD Class PCIe Adapter, Product Number:46M0885 SN:103915 Alt PN:46M0887 Located in slot 0 Upper of ioDrive Duo SN:104309 PCI:1d:00.0 Firmware v5.0.6, rev 101583 100.00 GBytes block device size, 198 GBytes physical device size Sufficient power available: Unknown Internal temperature: avg 56.6 degC, max 56.6 degC Media status: Healthy; Reserves: 100.00%, warn at 10.00% fct1 Attached as 'fiob' (block device) IBM 320GB High IOPS SD Class PCIe Adapter, Product Number:46M0885 SN:103979 Alt PN:46M0887 Located in slot 1 Lower of ioDrive Duo SN:104309 PCI:1e:00.0 Firmware v5.0.6, rev 101583 100.00 GBytes block device size, 198 GBytes physical device size Sufficient power available: Unknown Internal temperature: avg 56.6 degC, max 58.1 degC Media status: Healthy; Reserves: 100.00%, warn at 10.00% |
再度 fio-bugreport を取得
1 2 3 4 |
$ fio-bugreport # ローカルに保存しておく $ ls /tmp/fio-bugreport-20121001.*.tar.bz2 |
調査のまとめ
ここまでの詳細と簡単なまとめをしつつ、あとはしかるべきところへ報告。
報告先も調べてくれた上で、たいていは迅速な筐体交換、そして必要があればバックグラウンドでFusion-IO社へも報告されます。
fio-bugreport について
Fusion-IO社の調査では fio-bugreport の結果を必要とするため、あらかじめ取得しておくと早いです。ただ私は過去に、fio-util:2.2.3 と、ある筐体において、fio-bugreport 実行時にOSが強制ダウンする例も何回か経験しており、/usr/bin/fio-bugreport を覗いて検証すると、/dev/ 以下からの cat 読み取りをトリガーとして落ちることがわかっています。
この件はだいぶ前に報告済みで、
なので危ないため、ひと通り他の調査を済ませてから実行するのが無難です。
ioDriveは運用を始めてから、ほんとに全然問題が起きなく、珍しいので記録しておきましたが、今回紹介した調査内容はどちらかというとこれから導入する人が色々触ってみる時に役立つかもしれません。