it-swarm.com.de

Wie kann ich die TBW auf meiner Samsung SSD überwachen?

Wie allgemein bekannt ist, haben SSDs eine begrenzte Anzahl von PE-Zyklen (Program-Erase), bevor die NAND-Zellen sterben.

Aus diesem Grund ist es sehr hilfreich zu wissen, wie viele Daten auf Ihre SSD geschrieben wurden, um zu bestimmen, wie lange diese noch dauert, bevor das NAND stirbt.

Ich habe eine Samsung 850 Pro 512 GB SSD und ich verwende Ubuntu 14.04.

Wie bekomme ich die TBW (Total-Bytes-Written) für mein Laufwerk?

12
Android Dev

VOLLSTÄNDIGE OFFENLEGUNG: Die in dieser Antwort enthaltenen Anweisungen/Befehle sind nicht meine eigenen, sondern die von J. D. G. Leaver. Sie stammen von einem Blog-Eintrag auf seiner Website .


NB:

  • Dies gibt nur genaue Zahlen für Samsung-SSDs an
  • Sie müssen smartctl installiert haben

Methode 1:

Hier ist ein praktisches kleines Skript, mit dem Sie die TBW Ihrer SSD zusammen mit einigen anderen Informationen überwachen können:

#!/bin/bash

#######################################
# Variables                           #
#######################################

SSD_DEVICE="/dev/sda"

ON_TIME_TAG="Power_On_Hours"
WEAR_COUNT_TAG="Wear_Leveling_Count"
LBAS_WRITTEN_TAG="Total_LBAs_Written"
LBA_SIZE=512 # Value in bytes

BYTES_PER_MB=1048576
BYTES_PER_GB=1073741824
BYTES_PER_TB=1099511627776

#######################################
# Get total data written...           #
#######################################

# Get SMART attributes
SMART_INFO=$(Sudo /usr/sbin/smartctl -A "$SSD_DEVICE")

# Extract required attributes
ON_TIME=$(echo "$SMART_INFO" | grep "$ON_TIME_TAG" | awk '{print $10}')
WEAR_COUNT=$(echo "$SMART_INFO" | grep "$WEAR_COUNT_TAG" | awk '{print $4}' | sed 's/^0*//')
LBAS_WRITTEN=$(echo "$SMART_INFO" | grep "$LBAS_WRITTEN_TAG" | awk '{print $10}')

# Convert LBAs -> bytes
BYTES_WRITTEN=$(echo "$LBAS_WRITTEN * $LBA_SIZE" | bc)
MB_WRITTEN=$(echo "scale=3; $BYTES_WRITTEN / $BYTES_PER_MB" | bc)
GB_WRITTEN=$(echo "scale=3; $BYTES_WRITTEN / $BYTES_PER_GB" | bc)
TB_WRITTEN=$(echo "scale=3; $BYTES_WRITTEN / $BYTES_PER_TB" | bc)

# Output results...
echo "------------------------------"
echo " SSD Status:   $SSD_DEVICE"
echo "------------------------------"
echo " On time:      $(echo $ON_TIME | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta') hr"
echo "------------------------------"
echo " Data written:"
echo "           MB: $(echo $MB_WRITTEN | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta')"
echo "           GB: $(echo $GB_WRITTEN | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta')"
echo "           TB: $(echo $TB_WRITTEN | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta')"
echo "------------------------------"
echo " Mean write rate:"
echo "        MB/hr: $(echo "scale=3; $MB_WRITTEN / $ON_TIME" | bc | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta')"
echo "------------------------------"
echo " Drive health: ${WEAR_COUNT} %"
echo "------------------------------"

Hier ist ein Beispiel der Ausgabe:

------------------------------
 SSD Status:   /dev/sda
------------------------------
 On time:      2 hr
------------------------------
 Data written:
           MB: 25,098.917
           GB: 24.510
           TB: .023
------------------------------
 Mean write rate:
        MB/hr: 12,549.458
------------------------------
 Drive health: 100 %
------------------------------

Diese Daten sind korrekt, da ich gerade erst meinen neuen 850 Pro installiert habe.


Methode 2:

Alternativ ist hier ein Einzeiler, um nur die TBW zu erhalten:

echo "GB Written: $(echo "scale=3; $(Sudo /usr/sbin/smartctl -A /dev/sda | grep "Total_LBAs_Written" | awk '{print $10}') * 512 / 1073741824" | bc | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta')"
13
Android Dev

Entscheidende verbleibende SSD-Lebensdauer

Bei Crucial SSD (hergestellt von Micron) wird die Frage nach der verbleibenden Lebensdauer etwas erleichtert.

https://www.micron.com/~/media/documents/products/technical-note/solid-state-storage/tnfd22_client_ssd_smart_attributes.pdf

In diesem Dokument wird 202 als verbleibende Lebensdauer in Prozent angegeben. Als Beispiel für Ubuntu 16.04 (Sudo smartctl /dev/sda1 -a) wird 202 als unbekannt gemeldet, aber der Wert 90 (in meinem Fall) stimmt mit der Beschreibung im PDF überein und gibt an, dass noch 90% der Lebensdauer vorhanden sind. Dies kann durch die TBW angemessen skaliert werden, die in der Dokumentation zu critical.com auf dem Laufwerk angegeben ist, über das Sie verfügen. Tatsächlich ist die verbleibende Lebensdauer nützlicher.

3
Steve C

Die akzeptierte Antwort hat die Ausgabe aufgebläht, zu viele nutzlose Skript-Assistenten und verbirgt anfängliche Parameternamen vor smartctl. Hier ist eine bessere Version;

#!/bin/bash

device=${1:-/dev/sda}
Sudo smartctl -A $device |awk '
$0 ~ /Power_On_Hours/ { poh=$10; printf "%s / %d hours / %d days / %.2f years\n",  $2, $10, $10 / 24, $10 / 24 / 365.25 }
$0 ~ /Total_LBAs_Written/ {
    lbas=$10;
    bytes=$10 * 512;
    mb= bytes / 1024^2;
    gb= bytes / 1024^3;
    tb= bytes / 1024^4;
    printf "%s / %s  / %d mb / %.1f gb / %.3f tb\n", $2, $10, mb, gb, tb
    printf "mean writes per hour:  / %.2f",  mb/poh
}
$0 ~ /Airflow_Temperature_Cel/ { print $2 " / " $10}
$0 ~ /Wear_Leveling_Count/ { printf "%s / %d (%% health)\n", $2, int($4) }
' |
    sed -e 's:/:@:' |
    sed -e "s\$^\$$device @ \$" |
    column [email protected]

beispielausgabe:

$ for i in /dev/sd{a,b,c,d}; do ssd-tbw $i;done   |sort -k2,2
/dev/sda    Airflow_Temperature_Cel    49
/dev/sdb    Airflow_Temperature_Cel    49
/dev/sdc    Airflow_Temperature_Cel    45
/dev/sdd    Airflow_Temperature_Cel    47
/dev/sda    mean writes per hour:      655.80
/dev/sdb    mean writes per hour:      646.97
/dev/sdc    mean writes per hour:      874.49
/dev/sdd    mean writes per hour:      733.95
/dev/sda    Power_On_Hours             27292 hours / 1137 days / 3.11 years
/dev/sdb    Power_On_Hours             27300 hours / 1137 days / 3.11 years
/dev/sdc    Power_On_Hours             14432 hours / 601 days / 1.65 years
/dev/sdd    Power_On_Hours             23255 hours / 968 days / 2.65 years
/dev/sda    Total_LBAs_Written         36655329806  / 17898110 mb / 17478.6 gb / 17.069 tb
/dev/sdb    Total_LBAs_Written         36172538301  / 17662372 mb / 17248.4 gb / 16.844 tb
/dev/sdc    Total_LBAs_Written         25846999325  / 12620605 mb / 12324.8 gb / 12.036 tb
/dev/sdd    Total_LBAs_Written         34955224738  / 17067980 mb / 16668.0 gb / 16.277 tb
/dev/sda    Wear_Leveling_Count        93 (% health)
/dev/sdb    Wear_Leveling_Count        93 (% health)
/dev/sdc    Wear_Leveling_Count        95 (% health)
/dev/sdd    Wear_Leveling_Count        94 (% health)

und der Einzeiler

$ Sudo /usr/sbin/smartctl -A /dev/sda | 
     awk '$0~/LBAs/{ printf "TBW %.1f\n", $10 * 512 / 1024^4 }'
TBW 17.1