Řešení 1:
Další možností je podívat se na /proc/diskstats. Není trvalý po restartování, ale má data pro každé blokové zařízení. Asi nejzajímavější je pro vás pole 10, které obsahuje celkový počet zapsaných sektorů. Na systému s disky scsi s velikostí sektoru 512 bajtů můžete spustit
awk '/sd/ {print $3"\t"$10 / 2 / 1024}' /proc/diskstats
abyste viděli, kolik megabajtů bylo zapsáno do každého zařízení. Výstup bude vypadat takto
sda 728,759
sda1 79,0908
sda2 649 668
Řešení 2:
Potýkal jsem se se stejným problémem na svém notebooku, ale jak jsem jej téměř denně restartoval, přijatá odpověď mi nepomohla. Mám Samsung mSATA SSD, který má náhodou atribut SMART #241 Total_LBAs_Written. Podle oficiální dokumentace
Chcete-li vypočítat celkovou velikost (v bajtech), vynásobte hrubou hodnotu tohoto atributu 512B.
Následující příkaz mi tedy udává celkové TB zapsané na mém SSD disku (sdb)
sudo smartctl -A /dev/sdb | awk '/^241/ { print "TBW: "($10 * 512) * 1.0e-12, "TB" } '
Protože to funguje také na mém HDD, předpokládám, že by to mělo fungovat na téměř každém moderním pevném disku.
Řešení 3:
Kolik dat bylo zapsáno do souborového systému ext4, můžete vidět v /sys/fs/ext4/$DEVICE/lifetime_write_kbytes.
Řešení 4:
Můžete zkusit iostat
. Poskytuje vám statistiky týkající se využití IO a CPU. Podívejte se do manuálu man iostat
.
Řešení 5:
Pro svůj KINGSTON SEDC400S37480G pod Ubuntu Server 14.04 používám ke sledování TBW následující skript. Spouštím to z cronu jednou za den. Výstup skriptu do souboru protokolu.
Aby to fungovalo, potřebujete calc. Nainstalujte calc pomocí:
apt-get install apcalc
Obsah skriptu:
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
Výstup:
*** Thu, 20 Jul 2017 03:02:51 +0300 ***
TB written to sda1:
3.062138442