Linuxでの「書き込まれた合計バイト数」の測定


36

サーバー環境でSSDドライブを使用する可能性を調査することに非常に興味があります。ただし、確立する必要があることの1つは、ドライブの寿命の延長です。この記事によるとメーカーは「書き込まれた合計バイト」(TBW)の観点からドライブの耐久性を報告しています。たとえば、その記事から、Crucial C400 SSDの定格は72TB TBWです。Linuxエコシステムの下に、TBWの測定に役立つスクリプト/ツールがありますか?(そして、SSDドライブを使用することの実現可能性に関してより教育された決定を下します)

回答:


28

別の可能性は、/ proc / diskstatsを調べることです。再起動後も永続的ではありませんが、すべてのブロックデバイスのデータがあります。おそらく最も興味深いのは、書き込まれたセクターの総数を含むフィールド10です。512バイトのセクターサイズのscsiディスクを搭載したシステムでは、次を実行できます。

awk '/sd/ {print $3"\t"$10 / 2 / 1024}' /proc/diskstats

各デバイスに書き込まれたメガバイト数を確認します。出力は次のようになります

sda 728.759
sda1 79.0908
sda2 649.668


4
セクターサイズは、コマンド#cat / sys / block / sda / queue / hw_sector_sizeを実行して見つけることができます。
アントニオ

@アントニオありがとう!それがいつ追加されたかはわかりません。3.2にはあるようですが、2.6.18にはないようです。
sciurus

@sciurus計算の背後にある数学を説明してください。あなたは、セクタ= 512の大きさの話をしているが、あなたの計算は1024分の2での読み取り値分裂している
ジャイル

@gyreフィールド10には、書き込まれた0.5キロバイトセクターの数が含まれます。これを2で除算して、書き込まれたキロバイト数を取得します。それを1024で割ってメガバイトに変換します。
-sciurus

@antonio 基礎となるハードウェアで使用されているセクターサイズ表示されますが、カーネルソース、iostatソース、および経験的なテストから、/ proc / diskstatsの「セクター」番号は、たとえ異なる場合でも常に 512バイトを参照しますhw_sector_size(少なくとも2.4シリーズ以降)。block/cfq-iosched.c特に参照してくださいcfqg_stats_update_dispatch()
ポール14

23

私は自分のノートブックで同じ問題に苦労していましたが、毎日ほとんどリブートしたので、受け入れられた答えは役に立ちませんでした。Samsung mSATA SSDがあり、たまたまSMART属性#241 Total_LBAs_Writtenがあります。公式文書によると、

合計サイズ(バイト単位)を計算するには、この属性の生の値に512Bを掛けます。

したがって、次のコマンドは、SSDディスク(sdb)に書き込まれた合計TBを提供します

sudo smartctl -A /dev/sdb | awk '/^241/ { print "TBW: "($10 * 512) * 1.0e-12, "TB" } '

私のHDDでも動作するので、ほとんどすべての最新のハードディスクで動作するはずです。


3
いいえ、これは特定のモデルのSSDドライブにのみ存在します。それは普遍的ではありません。
マイケルハンプトン

3
私はあなたの方程式が実際にオフの数値を生成することを指摘したかったのですsudo smartctl -A /dev/sda1 | awk '/^241/ { print "TBW: "($10 * 512) * 1.0e-12, "TB" }'
ジョーダンベッドウェル

私のIntel SSDは同じ属性を持っていますが、と呼ばれていHost_Writes_32MiBます。また、属性249がありNAND_Writes_1GiBます。したがって、各SSDでこれは異なるように見えることに注意してください(たとえば、私のmSATA Intel SSDにはこれらの属性がありません)
reox

Intel SSD Pro 5400s(SATA)Total_LBAs_Writtenでは、GBで指定されています!低い4714スマートが示していたことを理解できませんでした。しかし、WindowsのIntel SSD Toolboxを見ると、GB単位であることがわかりました。
MrCalvin

15

/ sys / fs / ext4 / $ DEVICE / lifetime_write_kbytesを調べると、ext4ファイルシステムに書き込まれたデータの量を確認できます。


それは私が知らなかったクールな機能です!
残念なことに

ext3(およびそれより少し少ない範囲)ext4は、フラッシュへの書き込み用に設計されていません。障害は、場所が書き込まれる回数に応じて発生します。従来のファイルシステムでは、ホットスポットは非常に急速に発生します。製造業者によって引用された数字は、書き込みが均等に広がっていると想定しているため、非常に誤解を招きます。JFFS2など、SSDの寿命を延ばすために特別に設計されたファイルシステムがあります。
symcbean

2
@symcbean-現在のフラッシュデバイスでは、これはほとんど問題ではありません。それらはすべて、オンボードコントローラーに組み込まれたウェアレベリングルーチンを持っています。
EEAA

1
@symcbean-2種類のフラッシュデバイスがあります。メモリテクノロジデバイス(またはMTD)は、フラッシュメモリへの直接のインターフェイスを提供します。これらは通常、組み込みデバイスにあり、JFFS2のようなファイルシステムが設計されているものです。他の種類のフラッシュデバイスは、通常のブロックデバイスのように見えるように、フラッシュメモリをFlash Translation Later(FTL)の背後に隠します。これが、SSD、USBスティック、メモリカードなどのコンシューマテクノロジーの実装方法です。JFFS2のようなファイルシステムは、これらには適していません。代わりに、ブロックデバイス用に設計されたext4などのファイルシステムを使用する必要があります。
sciurus

1
注意:ext4 lifetime_write_kbytesとsession_write_kbytesは、SSDメモリセルの書き込みを表していません。SSD自体がSMART属性241を介して1TBのみを報告している一方で、ext4 lifetime_write_kbytesについて15TBを報告するシステムを見てきました。SSDが実行されても、ext4はコントローラーは、最後の消去以降に触れていない場合、利用可能なすべてのブロックを繰り返し消去することはありません。tune2fs -lの出力も同様に誤解を招くようです。
ʇsәɹoɈ

2

試すことができiostatます。IOおよびCPU使用率に関連する統計を提供します。マニュアルをご覧くださいman iostat


私はそれはうまくいくと思いますが、累積バイト合計を提供できる高レベルの何かが利用できることを望んでいました:)
badnews

2

KINGSTON SEDC400S37480GのUbuntu Server 14.04では、次のスクリプトを使用してTBWを監視しています。cronから毎日1回実行します。スクリプトはログファイルに出力します。

動作するにはcalcが必要です。次を使用してcalcをインストールします。

apt-get install apcalc

スクリプトの内容:

echo "*** $(date -R) ***" >> /scripts/tbw/log.txt
tbw=$(cat /sys/fs/ext4/sda1/lifetime_write_kbytes)
TB=1000000000
echo TB written to sda1: >> /scripts/tbw/log.txt | calc $tbw / $TB >> /scripts/tbw/log.txt

出力されます:

*** Thu, 20 Jul 2017 03:02:51 +0300 ***
TB written to sda1:
    3.062138442

calcの代わりに、GNU bcを
Elton Carvalho
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.