6080 links
  • GuiGui's Show
  • Home
  • Login
  • RSS Feed
  • ATOM Feed
  • Tag cloud
  • Picture wall
  • Daily
Links per page: 20 50 100
 
  • Superviser le nombre d'écritures sur un SSD Samsung

    Le nombre d'écritures sur un SSD est limité, car une cellule mémoire peut être réécrite seulement un certain nombre de fois. De plus, la garantie du constructeur s'applique souvent en-deça d'un certain seuil d'écritures (et/ou en deça d'un nombre d'années d'utilisation présumée). Je voulais savoir comment surveiller ça sur un SSD de marque Samsung.

    La première étape est de chercher le seuil prévu par la garantie, car il donne une bonne idée du nombre d'écritures que le constructeur accepte de prendre en charge, c'est-à-dire le nombre d'écritures qui lui semblent relever d'une utilisation conforme de son produit à ses estimations de durée de vie. Ce seuil se nomme « TeraByte Written » (TBW). Pour un Samsung 850 Pro 512 Mo, la garantie couvre jusqu'à 300 teraoctets écris.

    Comment récupérer ce TBW sur un SSD en fonctionnement ?

    Mon premier réflexe est de chercher les outils proposés par le constructeur. Il en existe un : Samsung Magician. Malheureusement, la seule version GNU/Linux proposée ne prend pas en charge mon modèle, un 850 Pro.

    Mon deuxième réflexion est d'effectuer une recherche sur le web. Le résultat le plus satisfaisant est How can I monitor the TBW on my Samsung SSD?. Je recopie ici le script présenté :

    #!/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 "------------------------------"

    Utilisation concrète :

    $ ./monit_ecritures_ssd.sh /dev/sda
    ------------------------------
     SSD Status:   /dev/sda
    ------------------------------
     On time:      5,699 hr
    ------------------------------
     Data written:
               MB: 2,746,510.173
               GB: 2,682.138
               TB: 2.619
    ------------------------------
     Mean write rate:
            MB/hr: 481.928
    ------------------------------
     Drive health: 99 %
    ------------------------------

    Si j'effectue un dd de 1 Go à partir de /dev/zero, je constate que ce script calcule bien qu'un gigaoctet supplémentaire a été écrit.

    Néanmoins, je perçois plusieurs limites à ce script :

    • Atteindre (ou non) le TBW mentionné dans la garantie ne signifie environ rien (c'est toute la différence entre une valeur et une moyenne de valeurs), et surtout pas que le SSD est fichu. Illustration : Samsung 850 Pro SSD Reaches End of Life With 9100 TB Written. De même le comportement du contrôleur interne au SSD quand cette variable est atteinte est imprévisible ;

    • Contrairement à d'autres constructeurs, Samsung n'a pas prévu un attribut SMART pour présenter le TBW ou toute autre métrique permettant de juger de l'état de santé du SSD, donc le script présenté ci-dessus fait des déductions. Or, seul Samsung sait comment il calcule son TBW. Opacité powa ;

    • La signification de l'attribut SMART « LBA written » est soumise à précaution. D'abord parce que je ne sais pas ce qu'elle englobe. Exemple : englobe-t-elle les cycles d'effacement des cellules (qui entre en compte dans le calcul du TBW) ? De plus, cet attribut mesure au niveau logique (d'où son nom « Logical Block Addressing ») c'est-à-dire qu'il mesure ce que le système d'exploitation a voulu faire, pas ce qui a réellement été fait au niveau matériel. C'est ce qui est nommé « Write Amplification Factor (WAF) » c'est-à-dire le rapport entre le nombre d'octets réellement écrits sur le SSD et le nombre d'octets écrits vu du système. Enfin, quid du ratio de nouvellement de l'usure (Wear leveling, des cellules supplémentaires sont prévues pour palier à la défaillance de cellules) ? Tout cela influe sur le TBW (sources : lien wikipedia en début de ce shaarli + Using SMART Attributes to Estimate Enterprise SSD Lifetime) et nous ne le mesurons pas voire nous n'en avons pas connaissance quand il s'agit d'une valeur prévue par le constructeur (comme le WAF).
    January 27, 2019 at 12:34:00 PM UTC - permalink - http://shaarli.guiguishow.info/?5eaCbA
Links per page: 20 50 100
 
Mentions légales identiques à celles de mon blog | CC BY-SA 3.0

Shaarli - The personal, minimalist, super fast, database-free, bookmarking service by the Shaarli community