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/合計 229drwxr-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-genericdrwx------ 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/alldd: '/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/s6.36MiB 0:00:00 [73.4MiB/s] [ <=> ]$ ls -la /media/mk/4a42767f-18bc-4250-9266-e61d41a47260/合計 6676drwxr-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-genericdrwx------ 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/sdbDisk /dev/sdb: 8 MiB, 8388608 bytes, 16384 sectorsUnits: sectors of 1 * 512 = 512 bytesSector size : 512 bytes / 512 bytesI/O size : 512 bytes / 512 bytes
8MB><
$ sudo hdparm -I /dev/sdb/dev/sdb:ATA device, with non-removable mediaModel Number: INTEL SSDSA2CW600G3Serial Number: BAD_CTX 0000013FFirmware Revision: 4PC10362Transport: Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6Standards:Used: unknownSupported: 8 7 6 5Likely used: 8Configuration:Logical max currentcylinders 16383 256heads 16 1sectors/track 63 63--CHS current addressable sectors: 16128LBA user addressable sectors: 16384LBA48 user addressable sectors: 16384Logical Sector size: 512 bytesPhysical Sector size: 512 bytesdevice size with M = 1024*1024: 8 MBytesdevice size with M = 1000*1000: 8 MBytescache/buffer size = unknownNominal Media Rotation Rate: Solid State DeviceCapabilities:LBA, IORDYStandby timer values: spec'd by Standard, no device specific minimumR/W multiple sector transfer: Max = 16 Current = 16DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6Cycle time: min=120ns recommended=120nsPIO: pio0 pio1 pio2 pio3 pio4Cycle time: no flow control=120ns IORDY flow control=120nsCommands/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_MICROCODESET_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 TRIMSecurity:Master password revision code = 65534supportednot enablednot lockedfrozennot expired: security countsupported: enhanced erase2min for SECURITY ERASE UNIT. 2min for ENHANCED SECURITY ERASE UNIT.Logical Unit WWN Device Identifier: 500151795957940cNAA : 5IEEE OUI : 001517Unique ID : 95957940cChecksum: 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 = 65534supportednot enablednot lockednot frozennot expired: security countsupported: 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 = 65534supportedenablednot lockednot frozennot expired: security countsupported: 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/sdbsecurity_password: "SOMEPASS"/dev/sdb:Issuing SECURITY_ERASE command, password="SOMEPASS", user=userThe 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 mediaModel Number: INTEL SSDSA2CW600G3Serial Number: CVPR1206005W600FGNFirmware Revision: 4PC10362Transport: 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 - 0233 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ファイルが含まれていた -
mkusb で USB memory に書き込んで起動
- LENOVO T430s では起動に失敗した
- LENOVO X201i では正常起動
- 実際にアップデートできるかはもともと最新だったので未確認
最新のファームウェアバージョンは以下のページで確認できる
なお,最新にしてもこのバグは再発する可能性がある……(実際最新fwで2回このbugが発生した)
これ以上は,
- バックアップをこまめに取る
- サスペンドなどを行わない
- なるべく電源のon/offを行わない
- 安定した電源を利用する
- バックアップをこまめに取る
- バックアップをこまめに取る
- バックアップをこまめに取る
現在はデイリーバックアップだけでなく /home は Lsyncd + rsync している
根本的な対処
SSDを交換する
TLCだと大分安い
その後
1月ほどで再発したorz
2回目は利用中に急にdiskが見えなくなったX201s/X220/X200で何年も使っていて起こらず,T430sにSSDを差し替えてから立て続けに起こっているのでマシンとの相性もありそう.