Solución 1:
Otra posibilidad es mirar /proc/diskstats. No es persistente entre reinicios, pero tiene datos para cada dispositivo de bloque. Probablemente lo más interesante para usted es el campo 10, que contiene el número total de sectores escritos. En un sistema con discos scsi con un tamaño de sector de 512 bytes, podría ejecutar
awk '/sd/ {print $3"\t"$10 / 2 / 1024}' /proc/diskstats
para ver cuántos megabytes se escribieron en cada dispositivo. La salida se verá como
sda 728.759
sda1 79.0908
sda2 649.668
Solución 2:
Estaba luchando con el mismo problema en mi computadora portátil, pero como la reinicio casi a diario, la respuesta aceptada no fue útil. Tengo un SSD Samsung mSATA, que tiene el atributo SMART #241 Total_LBAs_Written. Según la documentación oficial,
Para calcular el tamaño total (en bytes), multiplique el valor bruto de este atributo por 512B.
Entonces, el siguiente comando me da el total de TB escritos en mi disco SSD (sdb)
sudo smartctl -A /dev/sdb | awk '/^241/ { print "TBW: "($10 * 512) * 1.0e-12, "TB" } '
Como también funciona en mi disco duro, supongo que debería funcionar en casi todos los discos duros modernos.
Solución 3:
Puede ver cuántos datos se han escrito en un sistema de archivos ext4 mirando en /sys/fs/ext4/$DEVICE/lifetime_write_kbytes.
Solución 4:
Puedes probar iostat
. Le brinda estadísticas relacionadas con el uso de IO y CPU. Echa un vistazo al manual man iostat
.
Solución 5:
Para mi KINGSTON SEDC400S37480G, bajo Ubuntu Server 14.04, utilizo el siguiente script para monitorear TBW. Lo ejecuto desde cron una vez al día. El script genera un archivo de registro.
Necesita calc para que funcione. Instale calc usando:
apt-get install apcalc
Contenido del guión:
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
Dará salida:
*** Thu, 20 Jul 2017 03:02:51 +0300 ***
TB written to sda1:
3.062138442