知人より、とあるストレージの SAS-HDD 閉塞問題について情報が回ってきた。
[重要なお知らせ]日立ストレージ製品 SAS-HDD閉塞問題について:日立
https://www.hitachi.co.jp/products/it/storage-solutions/techsupport/productinfo/article.html?id=I36010-0
要するに、特定ディスクにおいて「66000時間 (2750日 = 約7.5年) 経過すると、不具合が発生」する様子。
日立型番では何のディスクか不明だったため一旦様子見していたが、ひょんなことからディスクの型番特定と更新ファームウェア入手まで至ったため、ファームウェア更新方法をメモしておく。
■対象ディスクと不具合情報
NetApp さんのディスクファームウェア更新情報に CONTAP-272368 の情報があった。
ここに「HCBFE Drive」とあったので、また HGST の Cobra シリーズかよ・・・と思いながらも探した結果
無事(?)該当物理ディスクが手元にあったため、HGST Ultrastar C10K1800 (Cobra-F) シリーズと特定できた。
HGST Cobra シリーズって不具合多いですよね。。。見た目と音は好きなんですが
不具合情報としては、約7.5年経過すると「ログオーバーフロー」が発生し、30分ごとに定期的なドライブのリセットが発生するらしい。
表記的に「7.5 years of Power on Hours.」と書いてあるし、おそらく S.M.A.R.T. のログ情報な気がする。
日立の情報でも「ログ記録処理を停止させる」ことが対策とあるため、おそらくそうなんであろう。
なお、DKR5C-K600SS で画像検索かけると、別モデルも見える気がする。
HGST Ultrastar C15K600 (King Cobra-F) シリーズも該当・・・かな?
どちらにせよ、Cobra-F (10000rpm) と King Cobra-F (15000rpm) てことで、同時期のモデルかな。
■ファームウェア更新方法の概要
Enterprise 向けな SAS Disk ということで、標準的なファームウェア更新方法を利用することができた。
該当モデルのドキュメントを読む限り、SCSI コマンドによるファームウェアの更新が利用可能っぽい。
[HGST Ultrastar C10K1800 (Cobra-F) Product Manual]
https://documents.westerndigital.com/content/dam/doc-library/en_us/assets/public/western-digital/product/data-center-drives/ultrastar-ssd-sas-series/product-manual-ultrastar-c10k1800.pdf
[HGST Ultrastar C15K600 (King Cobra-F) Product Manual]
https://documents.westerndigital.com/content/dam/doc-library/en_us/assets/public/western-digital/product/data-center-drives/ultrastar-sas-series/product-manual-ultrastar-c15k600.pdf
ということで、RAID Controller 配下の場合は、それぞれのコントローラのユーティリティ経由で、
HBA 配下の場合は、Linux 上にて sg3_utils 経由で更新することができそう。
RAID Controller 配下の場合については、各製品のドキュメントを読んでもらうとして
この記事では HBA 配下の場合に使える汎用的な手順をメモしておく。
なお、今回使用した Linux は Red Hat Enterprise Linux 8 であるため、RHEL 互換 Linux でも同等手順にて対応可能と考えている。
■sg3_utils のインストール
# dnf install sg3_utils
■ディスクの検索
# lsscsi -sig [0:0:6:0] disk NETAPP X425_HCBFE1T2A10 NA06 /dev/sdb 0123456789abcdef0 /dev/sg2 1.20TB [1:0:0:0] disk ATA INTEL SSDSA2BZ10 0362 /dev/sda 0123456789abcdef0 /dev/sg1 100GB [7:0:0:0] storage HP P212 3.66 - - /dev/sg0 -
対象は /dev/sg2 であることを特定。
■該当ディスクのファームウェアバージョンの確認
lsscsi コマンドでも出力されているが、念のため別コマンドでも調査する
# smartctl -i /dev/sg2 smartctl 7.1 2019-12-30 r5022 [x86_64-linux-4.18.0-553.33.1.el8_10.x86_64] (local build) Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org === START OF INFORMATION SECTION === Vendor: NETAPP Product: X425_HCBFE1T2A10 Revision: NA06 Compliance: SPC-4 User Capacity: 1,200,243,695,616 bytes [1.20 TB] Logical block size: 512 bytes Physical block size: 4096 bytes LU is fully provisioned Rotation Rate: 10520 rpm Form Factor: 2.5 inches Logical Unit id: 0x0000000000000000 Serial number: 00000000 Device type: disk Transport protocol: SAS (SPL-3) Local Time is: Mon Dec 30 04:56:27 2024 JST SMART support is: Available - device has SMART capability. SMART support is: Enabled Temperature Warning: Enabled
NA06 であることを確認。
■ファームウェアの更新コマンドについて
sg_write_buffer コマンドで実施可能とのこと。
sg_write_buffer コマンドについて調べてみると、引数がいろいろ必要な様子。
sg_write_buffer -v -m 5 -in FIRMWARE.lod /dev/sgX
-m :モードの指定
基本的には、5か7を指定するらしい。
5: dmc_save [5, 0x5]
Download microcode, save, and activate (was called “Download microcode and save” in SPC-3).
7: dmc_offs_save [7, 0x7]
Download microcode with offsets, save, and activate (was called “Download microcode with offsets and save” in SPC-3).
offsets とは何ぞや?と調べた限りでは、ファームウェアのサイズが3バイトで表現できない場合(約 16MByte 以上) に必要となるらしい。
-in:ファームウェアの指定
■ファームウェアの更新
# sg_write_buffer -vvvvv -m 5 --in /export/X425_HCBFE1T2A10.NA08.LOD /dev/sg2
found sg_bsg_major=247
open /dev/sg2 with flags=0x802
tried to read 8388608 bytes from /export/X425_HCBFE1T2A10.NA08.LOD, got 1966080 bytes
will write 1966080 bytes
sending single write buffer, mode=0x5, mpsec=0, id=0, offset=0, len=1966080
Write buffer cdb: 3b 05 00 00 00 00 1e 00 00 00
Write buffer parameter list (first 256 bytes):
1e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 f0 ff ff ff
48 47 53 54 2c 20 61 20 57 65 73 74 65 72 6e 20
44 69 67 69 74 61 6c 20 43 6f 6d 70 61 6e 79 20
49 43 33 35 4c 78 78 78 55 78 44 33 32 31 30 2d
30 20 4d 69 63 72 6f 63 6f 64 65 20 28 43 29 20
43 6f 70 79 72 69 67 68 74 20 57 65 73 74 65 72
6e 20 44 69 67 69 74 61 6c 20 43 6f 72 70 2e 20
32 30 31 32 2c 20 32 30 31 32 2d 32 30 31 33 2e
20 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65
72 76 65 64 2e 20 20 55 53 20 47 6f 76 65 72 6e
6d 65 6e 74 20 55 73 65 72 73 20 52 65 73 74 72
69 63 74 65 64 20 52 69 67 68 74 73 20 2d 20 55
73 65 20 64 75 70 6c 69 63 61 74 69 6f 6e 20 66
6f 72 20 64 69 73 63 6c 6f 73 75 72 65 20 72 65
73 74 72 69 63 74 65 64 20 62 79 20 47 43 41 20
check_file_type: file descriptor is sg device
duration=2420 ms
■ファームウェアバージョンの確認
# smartctl -i /dev/sg2 smartctl 7.1 2019-12-30 r5022 [x86_64-linux-4.18.0-553.33.1.el8_10.x86_64] (local build) Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org === START OF INFORMATION SECTION === Vendor: NETAPP Product: X425_HCBFE1T2A10 Revision: NA08 Compliance: SPC-4 User Capacity: 1,200,243,695,616 bytes [1.20 TB] Logical block size: 512 bytes Physical block size: 4096 bytes LU is fully provisioned Rotation Rate: 10520 rpm Form Factor: 2.5 inches Logical Unit id: 0x0000000000000000 Serial number: 00000000 Device type: disk Transport protocol: SAS (SPL-3) Local Time is: Mon Dec 30 04:58:17 2024 JST SMART support is: Available - device has SMART capability. SMART support is: Enabled Temperature Warning: Enabled
NA08 であることを確認。
なお、調べた範囲では、ディスクの電源再投入 or 再認識するまで新しいファームウェアは有効にならないと多く見受けられるが
sg_write_buffer コマンドの Mode の説明で「Download microcode, save, and activate」とあるため、おそらく新しいファームウェアで動いている気はしている。
実際、ストレージ上でファームウェア更新した場合、そのまま使えているし・・・。
■SATA ディスクの場合
hdparm コマンドで実施するらしい。
HPE さんがマニュアル書いてた。
今回、SATA ディスクでのファームウェア更新は実施してないため、とりあえずメモのみ残しておく。
How to Flash a JBOD drive’s firmware.
https://support.hpe.com/hpsc/doc/public/display?docId=emr_na-sg2077en_us&docLocale=en_US