2018-07-21 の 鹿児島Linux勉強会 2018.07 で発表したものに少し加筆修正したものです.
一昨日 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 の用意
$ 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
とマスターパスワードを指定する
再度ドライブの状態を確認
- 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 へ減少していく。
再発防止(完全ではない)
最新のファームウェアバージョンは以下のページで確認できる
なお,最新にしてもこのバグは再発する可能性がある……(実際最新fwで2回このbugが発生した)
これ以上は,
- バックアップをこまめに取る
- サスペンドなどを行わない
- なるべく電源のon/offを行わない
- 安定した電源を利用する
- バックアップをこまめに取る
- バックアップをこまめに取る
- バックアップをこまめに取る
現在はデイリーバックアップだけでなく /home は Lsyncd + rsync している
根本的な対処
SSDを交換する
TLCだと大分安い
その後
1月ほどで再発したorz
2回目は利用中に急にdiskが見えなくなったX201s/X220/X200で何年も使っていて起こらず,T430sにSSDを差し替えてから立て続けに起こっているのでマシンとの相性もありそう.
参考URL