Samsung SSD 840 120GBを使い潰す(中編)
前編
現状と結果
延々と回して気付きましたが Wear_Leveling_Count
は 1
が最小値となっている模様
[comicsong@comicsong ~]$ sudo smartctl -A /dev/sda | grep ^177 177 Wear_Leveling_Count 0x0013 001 001 000 Pre-fail Always - 1240
既に 2
から 1
になる書き込み量の倍以上を行っていますが 0
になる気配は無し
まだ書き込みはできているようですが一旦これでテストを回すのは終了とします
記録について
SMART、ddコマンドによるIO、fioによる結果をログファイルに書き出していたのでそこから開始時・終了時の比較を行います
SMART値の比較
開始前
=== START OF READ SMART DATA SECTION === SMART Attributes Data Structure revision number: 1 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 9 Power_On_Hours 0x0032 096 096 000 Old_age Always - 18975 12 Power_Cycle_Count 0x0032 099 099 000 Old_age Always - 36 177 Wear_Leveling_Count 0x0013 083 083 000 Pre-fail Always - 200 190 Airflow_Temperature_Cel 0x0032 054 048 000 Old_age Always - 46 235 POR_Recovery_Count 0x0012 099 099 000 Old_age Always - 17 241 Total_LBAs_Written 0x0032 099 099 000 Old_age Always - 44047993640
終了時
=== START OF READ SMART DATA SECTION === SMART Attributes Data Structure revision number: 1 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 9 Power_On_Hours 0x0032 096 096 000 Old_age Always - 19372 12 Power_Cycle_Count 0x0032 099 099 000 Old_age Always - 36 177 Wear_Leveling_Count 0x0013 001 001 000 Pre-fail Always - 1240 190 Airflow_Temperature_Cel 0x0032 051 042 000 Old_age Always - 49 235 POR_Recovery_Count 0x0012 099 099 000 Old_age Always - 17 241 Total_LBAs_Written 0x0032 099 099 000 Old_age Always - 317487645326
Wear_Leveling_Count
以外の値に大きな変化は無し。
開始時と終了時でのIO劣化
上からシーケンシャルのread,write/ランダムのread,write/シーケンシャルのIOミックス
開始時
[comicsong@comicsong ~]$ grep -A1 -E "noop_" SMART_LOG | grep iops | head -n5 read : io=22896MB, bw=390753KB/s, iops=97688, runt= 60001msec write: io=7870.7MB, bw=134323KB/s, iops=33580, runt= 60001msec read : io=19965MB, bw=340738KB/s, iops=85184, runt= 60001msec write: io=6270.5MB, bw=107013KB/s, iops=26753, runt= 60001msec read : io=1336.2MB, bw=22803KB/s, iops=5700, runt= 60003msec
終了時
[comicsong@comicsong ~]$ grep -A1 -E "noop_" SMART_LOG | grep iops | tail -n5 read : io=9134.7MB, bw=155874KB/s, iops=38968, runt= 60009msec write: io=7615.3MB, bw=129965KB/s, iops=32491, runt= 60001msec read : io=15733MB, bw=268504KB/s, iops=67126, runt= 60002msec write: io=6068.6MB, bw=103561KB/s, iops=25890, runt= 60005msec read : io=1305.4MB, bw=22276KB/s, iops=5568, runt= 60004msec
IOスケジューラはnoopでの比較
予想ではwrite系は劣化が大きくread系の劣化は大きくないと予想していました
実際は反して特にシーケンシャルのreadが劣化しwrite系はそこまで大きくありませんでした
Read劣化のポイント
ログを確認すると徐々に落ちているのではなく625周目を境に急激に落ちていることが分かりました
count: 623 read : io=22869MB, bw=390292KB/s, iops=97573, runt= 60001msec count: 624 read : io=22908MB, bw=390953KB/s, iops=97738, runt= 60001msec count: 625 read : io=13124MB, bw=223959KB/s, iops=55989, runt= 60004msec count: 626 read : io=12345MB, bw=210672KB/s, iops=52668, runt= 60002msec count: 627 read : io=11170MB, bw=190624KB/s, iops=47655, runt= 60004msec count: 628 read : io=11141MB, bw=190115KB/s, iops=47528, runt= 60005msec
wearlevelingcountはこの前後は3
で減少無し
その他もreadの劣化は以外は大きな変動はありませんでした
詳細は次回のグラフに譲るとしてこのwearlevelingcount3がこのSSDの寿命という判断でよさそうです
簡易の整合テスト
ではまだ実際に利用できるのかの確認を
手持ちでサイズの大きい6.7GBのファイルをコピーし正常に書き込めるかを確認しました
[root@comicsong benchmark]# cp /var/www/html/epgrec/video/hoge /mnt/benchmark/ [root@comicsong benchmark]# md5sum /var/www/html/epgrec/video/hoge /mnt/benchmark/hoge 37e025122a3755563279ca68dbb5e659 /var/www/html/epgrec/video/hoge 37e025122a3755563279ca68dbb5e659 /mnt/benchmark/hoge [root@comicsong benchmark]# sha512sum /var/www/html/epgrec/video/hoge /mnt/benchmark/hoge 5e7bae62f9b028be8e26aaa3fd337dc168a065417a1f684f212d261b4f6690984bd19d048b5c059238976c101e45945b876c72a2512f69ea254eb1aae824d5e5 /var/www/html/epgrec/video/hoge 5e7bae62f9b028be8e26aaa3fd337dc168a065417a1f684f212d261b4f6690984bd19d048b5c059238976c101e45945b876c72a2512f69ea254eb1aae824d5e5 /mnt/benchmark/hoge
意外にも問題なくコピー完了。不整合も無し
寿命切れのSSDを継続使用することは無いとは思いますが即全データ死亡ともならないようです
次回は後編として、ログ内容をスプレッドシートでグラフにしようかと思います
Samsung SSD 840 120GBを使い潰す(前編)
概要と目的
以前windowsマシンのシステムディスクとして利用していたSSDが余りました
他の用途は無いが捨て置くのも勿体ないので SSDの書き込み上限を迎えたときの挙動を検証します
前編ではまず準備としてSSDの寿命まで書き込みを行います
現在の状態
- SMART
[comicsong@comicsong ~]$ sudo smartctl -iA /dev/sda smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.10.0-514.6.2.el7.x86_64] (local build) Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org === START OF INFORMATION SECTION === Model Family: Samsung based SSDs Device Model: Samsung SSD 840 Series Serial Number: S14CNEAD312546J LU WWN Device Id: 5 002538 5502533cd Firmware Version: DXT07B0Q User Capacity: 120,034,123,776 bytes [120 GB] Sector Size: 512 bytes logical/physical Rotation Rate: Solid State Device Device is: In smartctl database [for details use: -P show] ATA Version is: ACS-2, ATA8-ACS T13/1699-D revision 4c SATA Version is: SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s) Local Time is: Wed Mar 1 22:25:17 2017 JST SMART support is: Available - device has SMART capability. SMART support is: Enabled === START OF READ SMART DATA SECTION === SMART Attributes Data Structure revision number: 1 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 5 Reallocated_Sector_Ct 0x0033 100 100 010 Pre-fail Always - 0 9 Power_On_Hours 0x0032 096 096 000 Old_age Always - 18927 12 Power_Cycle_Count 0x0032 099 099 000 Old_age Always - 36 177 Wear_Leveling_Count 0x0013 094 094 000 Pre-fail Always - 64 179 Used_Rsvd_Blk_Cnt_Tot 0x0013 100 100 010 Pre-fail Always - 0 181 Program_Fail_Cnt_Total 0x0032 100 100 010 Old_age Always - 0 182 Erase_Fail_Count_Total 0x0032 100 100 010 Old_age Always - 0 183 Runtime_Bad_Block 0x0013 100 100 010 Pre-fail Always - 0 187 Uncorrectable_Error_Cnt 0x0032 100 100 000 Old_age Always - 0 190 Airflow_Temperature_Cel 0x0032 072 059 000 Old_age Always - 28 195 ECC_Error_Rate 0x001a 200 200 000 Old_age Always - 0 199 CRC_Error_Count 0x003e 100 100 000 Old_age Always - 0 235 POR_Recovery_Count 0x0012 099 099 000 Old_age Always - 17 241 Total_LBAs_Written 0x0032 099 099 000 Old_age Always - 8578427501
- マウント状態
[comicsong@comicsong ~]$ mount | grep sda /dev/sda1 on /mnt/benchmark type xfs (rw,relatime,attr2,discard,inode64,noquota) [comicsong@comicsong ~]$ sudo parted /dev/sda -s unit s p モデル: ATA Samsung SSD 840 (scsi) ディスク /dev/sda: 234441648s セクタサイズ (論理/物理): 512B/512B パーティションテーブル: gpt ディスクフラグ: 番号 開始 終了 サイズ ファイルシステム 名前 フラグ 1 2048s 234440703s 234438656s xfs benchmark
事前ベンチマーク
書き込み上限到達後のスコアと比較するため、現時点でのスコアを見ます
テストの設定は以前 M4-CT256M4SSD2
をテストした時と同一です
その時点でのスケジューラによる挙動差も見たいのでスケジューラ毎に確認
Description : [cfq_read] read : io=5274.2MB, bw=539696KB/s, iops=134923, runt= 10007msec Description : [cfq_write] write: io=2545.7MB, bw=259042KB/s, iops=64760, runt= 10063msec Description : [cfq_randread] read : io=1367.3MB, bw=138808KB/s, iops=34701, runt= 10086msec Description : [cfq_randwrite] write: io=2046.4MB, bw=208856KB/s, iops=52213, runt= 10033msec Description : [cfq_rw] read : io=1063.8MB, bw=108405KB/s, iops=27101, runt= 10048msec noop deadline [cfq] --------------- Description : [deadline_read] read : io=1937.9MB, bw=198074KB/s, iops=49518, runt= 10018msec Description : [deadline_write] write: io=1833.6MB, bw=187324KB/s, iops=46831, runt= 10023msec Description : [deadline_randread] read : io=1213.7MB, bw=123122KB/s, iops=30780, runt= 10089msec Description : [deadline_randwrite] write: io=2253.2MB, bw=230099KB/s, iops=57524, runt= 10027msec Description : [deadline_rw] read : io=903884KB, bw=90262KB/s, iops=22565, runt= 10014msec noop [deadline] cfq --------------- Description : [noop_read] read : io=2610.6MB, bw=267161KB/s, iops=66790, runt= 10006msec Description : [noop_write] write: io=1762.8MB, bw=179907KB/s, iops=44976, runt= 10033msec Description : [noop_randread] read : io=1187.8MB, bw=112432KB/s, iops=28107, runt= 10818msec Description : [noop_randwrite] write: io=2324.2MB, bw=237164KB/s, iops=59290, runt= 10035msec Description : [noop_rw] read : io=720968KB, bw=71824KB/s, iops=17955, runt= 10038msec [noop] deadline cfq ---------------
M4に比べてランダムアクセスが速いですね
消耗させる
消耗は dd
コマンドで行います
まずは利用可能なブロックサイズの確認。物理・論理共に512バイトなので512指定で df
[comicsong@comicsong benchmark]$ df --block-size=512 /dev/sda1 ファイルシス 512B-ブロック 使用 使用可 使用% マウント位置 /dev/sda1 234324184 65888 234258296 1% /mnt/benchmark
234258296
ブロック利用可能なようです。直接指定して while
ループさせた dd
コマンドを実施
[comicsong@comicsong benchmark]$ while (i=0);do sudo dd if=/dev/zero of=/mnt/benchmark/FILE bs=512 count=234258296 ;done
SMARTの書き込み数を確認すると、無事にモリモリと書き込まれているようなのでこのまま放置
[comicsong@comicsong /]$ sudo smartctl -A /dev/sda | grep ^241 241 Total_LBAs_Written 0x0032 099 099 000 Old_age Always - 8638597904 [comicsong@comicsong /]$ sudo smartctl -A /dev/sda | grep ^241 241 Total_LBAs_Written 0x0032 099 099 000 Old_age Always - 8639640384 [comicsong@comicsong /]$ sudo smartctl -A /dev/sda | grep ^241 241 Total_LBAs_Written 0x0032 099 099 000 Old_age Always - 8640746256
次回更新は書き込み上限達成後の予定です。それでは
電源パネル修理に失敗したはなし
以前入れ替えた自宅PC、順調稼働はするもののずっと気になっていたことがあった
フロントパネルの電源スイッチが断線しているのではという疑惑
確認のためホットボンド剥がしてみると予想通り断線してる。これなら謎の電源断やらも説明つくしよっしゃ直そうと半田付け
根元が断線してた
とりあえず半田付け
ここまでは悪くなかったものの、このあとホットボンドがないからと接点保護をセメダインで代用したのがケチのつき始め
今回使ったタイプのセメダインは温度が高いほうが硬化が早いため温めてたら目を離した隙に熱でパネルが歪んでた
全体のゆがみ幅は小さいものの、肝心の電源スイッチが歪みで押せない状態になり全てが水泡に帰す悲しみ
しょうがないので諦めて検証用のショートスイッチで代用しました。トホホ…