Intel SSD 8MB bug に遭遇して困る

2018-07-21 の 鹿児島Linux勉強会 2018.07 で発表したものに少し加筆修正したものです．

鹿児島Linux勉強会 2018.07

鹿児島Linux勉強会 2018.07 (Twitter moments)

一昨日 Intel SSD 8MBバグに遭遇><

多分cpufreqの設定が甘くて離席時にCPUの熱でpoweroff

起動しなくなった

BIOSからはSSD見える

別メディアで起動するとfdisk -l で総容量 8MB

8MB bug

一部のIntel SSDにあるバグ(今回はINTEL SSDSA2CW600G3)

強制電源断時などに発症?

8MBの容量しか見えない&使えない

データは救えない

secure eraseでとりあえず復活(データは消える)

2011年の話なので最近該当デバイス使っている人は少ないと思う

8MBのdiskとして使ってみる……

普通に8MBのdiskとして利用できる．

$ sudo fdisk /dev/sdc

$ sudo fdisk -l /dev/sdc

ディスク /dev/sdc: 8 MiB, 8388608 バイト, 16384 セクタ

単位: セクタ (1 * 512 = 512 バイト)

セクタサイズ (論理 / 物理): 512 バイト / 512 バイト

I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト

ディスクラベルのタイプ: dos

ディスク識別子: 0xa3850bcb

デバイス 起動 開始位置 最後から セクタ サイズ Id タイプ

/dev/sdc1 16 16383 16368 8M 83 Linux

$ sudo /sbin/mkfs.ext4 /dev/sdc1

$ sudo cp /boot/config-`uname -r` /media/mk/4a42767f-18bc-4250-9266-e61d41a47260/

$ ls -la /media/mk/4a42767f-18bc-4250-9266-e61d41a47260/

合計 229

drwxr-xr-x 3 root root 1024 8月 23 20:13 .

drwxr-x---+ 3 root root 4096 8月 23 20:11 ..

-rw-r--r-- 1 root root 216860 8月 23 20:13 config-4.15.0-32-generic

drwx------ 2 root root 12288 8月 23 20:11 lost+found

$ df /media/mk/4a42767f-18bc-4250-9266-e61d41a47260/

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/sdc1 6899 289 6038 5% /media/mk/4a42767f-18bc-4250-9266-e61d41a47260

$ dd if=/dev/zero bs=4M | pv | sudo dd of=/media/mk/4a42767f-18bc-4250-9266-e61d41a47260/all

dd: '/media/mk/4a42767f-18bc-4250-9266-e61d41a47260/all' に書き込み中です: デバイスに空き領域がありません

12895+0 レコード入力

12894+0 レコード出力

6601728 bytes (6.6 MB, 6.3 MiB) copied, 0.0772058 s, 85.5 MB/s

6.36MiB 0:00:00 [73.4MiB/s] [ <=> ]

$ ls -la /media/mk/4a42767f-18bc-4250-9266-e61d41a47260/

合計 6676

drwxr-xr-x 3 root root 1024 8月 23 20:14 .

drwxr-x---+ 3 root root 4096 8月 23 20:11 ..

-rw-r--r-- 1 root root 6601728 8月 23 20:14 all

-rw-r--r-- 1 root root 216860 8月 23 20:13 config-4.15.0-32-generic

drwx------ 2 root root 12288 8月 23 20:11 lost+found

$ df /media/mk/4a42767f-18bc-4250-9266-e61d41a47260/

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/sdc1 6899 6736 0 100% /media/mk/4a42767f-18bc-4250-9266-e61d41a47260

8MB bug 対処

secure erase により元の容量に復旧

もちろんデータは救えない……

secure erase の用意

hdparm コマンドの使える適当なLinuxシステム
今回はDebian Liveimage で起動(自分の好みのもので)
Debian — Live インストールイメージ

必要なパッケージを導入( hdparm )

$ sudo apt update

$ sudo apt install hdparm

状態確認

$ sudo fdisk -l /dev/sdb

Disk /dev/sdb: 8 MiB, 8388608 bytes, 16384 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

8MB><

$ sudo hdparm -I /dev/sdb

/dev/sdb:

ATA device, with non-removable media

Model Number:       INTEL SSDSA2CW600G3

Serial Number:      BAD_CTX     0000013F

Firmware Revision:  4PC10362

Transport:          Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6

Standards:

Used: unknown (minor revision code 0x0029)

Supported: 8 7 6 5

Likely used: 8

Configuration:

Logical         max     current

cylinders       16383   256

heads           16      1

sectors/track   63      63

--

CHS current addressable sectors:       16128

LBA    user addressable sectors:       16384

LBA48  user addressable sectors:       16384

Logical  Sector size:                   512 bytes

Physical Sector size:                   512 bytes

device size with M = 1024*1024:           8 MBytes

device size with M = 1000*1000:           8 MBytes

cache/buffer size  = unknown

Nominal Media Rotation Rate: Solid State Device

Capabilities:

LBA, IORDY(can be disabled)

Standby timer values: spec'd by Standard, no device specific minimum

R/W multiple sector transfer: Max = 16  Current = 16

DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6

Cycle time: min=120ns recommended=120ns

PIO: pio0 pio1 pio2 pio3 pio4

Cycle time: no flow control=120ns  IORDY flow control=120ns

Commands/features:

Enabled Supported:

Security Mode feature set

*    Power Management feature set

*    Write cache

*    Look-ahead

*    Host Protected Area feature set

*    WRITE_BUFFER command

*    READ_BUFFER command

*    NOP cmd

*    DOWNLOAD_MICROCODE

SET_MAX security extension

*    48-bit Address feature set

*    Device Configuration Overlay feature set

*    Mandatory FLUSH_CACHE

*    FLUSH_CACHE_EXT

*    General Purpose Logging feature set

*    WRITE_{DMA|MULTIPLE}_FUA_EXT

*    64-bit World wide name

*    IDLE_IMMEDIATE with UNLOAD

*    WRITE_UNCORRECTABLE_EXT command

*    {READ,WRITE}_DMA_EXT_GPL commands

*    Segmented DOWNLOAD_MICROCODE

*    Gen1 signaling speed (1.5Gb/s)

*    Gen2 signaling speed (3.0Gb/s)

*    Phy event counters

*    Software settings preservation

*    SMART Command Transport (SCT) feature set

*    SCT Write Same (AC2)

*    SCT Error Recovery Control (AC3)

*    SCT Features Control (AC4)

*    SCT Data Tables (AC5)

*    Data Set Management TRIM supported (limit 8 blocks)

*    Deterministic read ZEROs after TRIM

Security:

Master password revision code = 65534

supported

not     enabled

not     locked

frozen

not     expired: security count

supported: enhanced erase

2min for SECURITY ERASE UNIT. 2min for ENHANCED SECURITY ERASE UNIT.

Logical Unit WWN Device Identifier: 500151795957940c

NAA             : 5

IEEE OUI        : 001517

Unique ID       : 95957940c

Checksum: correct

症状

Serial Number: BAT_CTX
8MBバグ中

Serial Number:      BAD_CTX     0000013F

Security: frozen
frozen状態ではこれ以上操作できないので解除の必要がある

frozen

frozen 状態を解除

起動した状態のまま SSD のデータケーブルを物理的に切断，接続
LENOVO ThinkPad X201i / T430s(NotePC)ではデータケーブルだけの切断は出来ず，電源も同時に切断，接続したがOKだった．

or

サスペンド，レジュームを行う
LENOVO ThinkPad X201i / T430s(NotePC)で問題なかった．
$ sudo sh -c "echo mem > /sys/power/state"

hdparm コマンドで not frozen になるっているのを確認

$ sudo hdparm -I /dev/sdb

:

Security:

Master password revision code = 65534

supported

not     enabled

not     locked

not     frozen

not     expired: security count

supported: enhanced erase

:

SSDにパスワードを設定

一時的なパスワード(secure eraseで消去される)だが次の手順で必要なのでメモしておく
ここでは SOMEPASS

$ sudo hdparm --user-master u --security-set-pass SOMEPASS /dev/sdb

パスワードを解除する場合は以下のように一旦アンロックしてから解除する

$ sudo hdparm --user-master u --security-unlock SOMEPASS /dev/sdb

$ sudo hdparm --user-master u --security-disable SOMEPASS /dev/sdb

パスワードがわからなくなった場合メーカ規定値のマスターパスワードで解除できる場合がある．
その場合 --user-master m とマスターパスワードを指定する

List of hard disk ata master passwords | I see 0xDEAD disks

Hard Drive Passwords – ForensicsWiki

再度ドライブの状態を確認

Securityセクションが以下のようにnot enabled から enabled になっていること

$ sudo hdparm -I /dev/sdb

:

Security:

Master password revision code = 65534

supported

enabled

not     locked

not     frozen

not     expired: security count

supported: enhanced erase

:

Secure Erase

データの消去を行う

$ sudo hdparm -–user-master u –-security-erase-enhanced SOMEPASS /dev/sdb

うまく行かない場合( hdparmでsupported: enhanced eraseが無い場合 )以下のコマンドを試す

$ sudo hdparm --user-master u --security-erase SOMEPASS /dev/sdb

※–-security-erase-enhanced は代替処理された不良セクタも消去される．対応している場合こちらを使ったほうが確実にデータ消去が行える．

エラー

USB変換アダプタ経由の場合以下のようなエラーとなった．

$ sudo hdparm --user-master u --security-erase SOMEPASS /dev/sdb

security_password: "SOMEPASS"

/dev/sdb:

Issuing SECURITY_ERASE command, password="SOMEPASS", user=user

The running kernel lacks CONFIG_IDE_TASK_IOCTL support for this device.

SECURITY_ERASE: Invalid argument

恐らくUSB変換部分で全ての機能がサポートされていないせい．
この状態でSATA接続すると起動時にHDD PASSWORDを尋ねられる．しかし，--security-set-passで設定したパスワードでは通らない．一旦USB変換アダプタに戻し，--security-disable でパスワードを消去した後SATA接続で再度やり直したらうまく行った．

hdparmコマンドで確認

Serial Number が正しくなっている :)

もちろん600GB全領域利用できる

$ sudo hdparm -I /dev/sdb

/dev/sdb:

ATA device, with non-removable media

Model Number:       INTEL SSDSA2CW600G3

Serial Number:      CVPR1206005W600FGN

Firmware Revision:  4PC10362

Transport:          Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6

:

これでとりあえず復活

SSD の寿命確認

フラッシュメモリー自体はまだ健康に見える

$ sudo smartctl --all /dev/sda |grep -E '232|233'

232 Available_Reservd_Space 0x0033   100   100   010    Pre-fail  Always       -       0

233 Media_Wearout_Indicator 0x0032   100   100   000    Old_age   Always       -       0

E8 Available Reserved Space Normalized 10 予約領域の残っている数を表す。正規化した (Normalized) 値は、100 パーセントを表す 100 から始 まる。正常の範囲は 10 パーセントまで。

E9 Media Wearout Indicator Normalized 記録メディアであるフラッシュメモリーの使い込んだ程度 を表す。平均消去回数が増えるにつれ、正規化した (Normalized) 値が 100 から 1 へ減少していく。

https://www.intel.com/content/dam/www/public/ijkk/jp/ja/documents/diy/ssd-optimizer.pdf

Intel a viops07-20120720

再発防止(完全ではない)

firmwareを最新にする

以下のページから入手する
FirmwareUpdateTool_v3_0_1.zip と issdfut_64_3.0.1.iso が入手可能
前者の中にはドキュメントと後者のisoファイルが含まれていた

Download Intel® SSD Firmware Update Tool

mkusb で USB memory に書き込んで起動

LENOVO T430s では起動に失敗した

LENOVO X201i では正常起動

実際にアップデートできるかはもともと最新だったので未確認

最新のファームウェアバージョンは以下のページで確認できる

インテル®ソリッド・ステート・ドライブおよびインテル® Optane メモリーのファームウェア・バージョン

なお，最新にしてもこのバグは再発する可能性がある……(実際最新fwで2回このbugが発生した)

Intel 320 Series SSD (300Gb) with latest firmwa… |Intel Communities

これ以上は，

バックアップをこまめに取る

サスペンドなどを行わない

なるべく電源のon/offを行わない

安定した電源を利用する

バックアップをこまめに取る

バックアップをこまめに取る

バックアップをこまめに取る

現在はデイリーバックアップだけでなく /home は Lsyncd + rsync している

根本的な対処

SSDを交換する
TLCだと大分安い

その後

1月ほどで再発したorz
2回目は利用中に急にdiskが見えなくなったX201s/X220/X200で何年も使っていて起こらず，T430sにSSDを差し替えてから立て続けに起こっているのでマシンとの相性もありそう．

参考URL

How to: Fix an unbootable Intel SSD suffering from the 8MB bug