Samsung SSD'mdeki TBW'yi nasıl izleyebilirim?


13

Genel bilgi olarak SSD'lerin NAND hücreleri ölmeden önce sınırlı sayıda PE (Program-Silme) döngüsü vardır.

Bu nedenle, NAND ölmeden önce ne kadar süre dayanacağını belirlemek için SSD'nize ne kadar veri yazıldığını bilmek çok yararlıdır.

Samsung 850 Pro 512GB SSD'm var ve Ubuntu 14.04 kullanıyorum.

Sürücüm için TBW'yi (Toplam Bayt-Yazılı) nasıl alabilirim?

Yanıtlar:


16

TAM AÇIKLAMA: Bu cevapta bulunan komut dosyası / komutlar benim değil, JDG Leaver'ın çalışmasıdır. Onlar beslendiğini açıkça kendi web sitesinde bir blog yazısı .


NB:

  • Bu yalnızca Samsung SSD'ler için doğru sayıları bildirir
  • Sen olması gerekir smartctlyüklü

Yöntem 1:

SSD'nizin TBW'sini ve diğer bazı bilgileri izlemenizi sağlayacak kullanışlı küçük bir komut dosyası:

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

İşte çıktı örneği:

------------------------------
 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 %
------------------------------

Bu veriler doğrudur, çünkü yeni 850 Pro'umu yeni kurdum.


Yöntem 2:

Alternatif olarak, sadece TBW'yi almak için tek bir astar:

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')"

Bu, SAMSUNG MZ7LN512HMJP-000L7 SSD için çalışmıyor. smartctl Total_LBAs_Written2268 olduğunu bildiriyor ve bu 1,1 MB yazıyor - bir yıldan eski bir sürücü için açıkça yanlış ve birincil sistem sürücüm :(
Icydog

@Icydog :( Ubuntu'nun hangi sürümünü kullanıyorsunuz?
22:18

Fedora 27'deyim. Sanırım SSD'm muhtemelen sayıları doğru bir şekilde raporlamıyor.
Icydog

Araştırmalarım, her SSD'nin, her bir "yazılı LBA" biriminin aslında ne anlama geldiği için kendi çarpanı olduğunu gösteriyor. Samsung 850 için
numaram yok

3

Önemli SSD Ömür boyu kaldı

Crucial SSD için (Micron tarafından yapılmıştır) kalan kullanım ömrü sorunu biraz daha kolaydır.

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

Bu belge 202'yi Kalan Ömür Boyu olarak tanımlar. Ubuntu 16.04 ( sudo smartctl /dev/sda1 -a) 'de örnek olarak 202 bilinmeyen olarak rapor edilir, ancak 90 (benim durumumda) değeri pdf'deki açıklama ile eşleşir ve kalan% 90 ömrünü gösterir. Bu, sahip olduğunuz sürücüdeki crucial.com literatüründe verilen TBW tarafından uygun şekilde ölçeklendirilebilir. Aslında, kalan ömür daha yararlıdır.


1

Kabul edilen yanıt çıktıyı şişirdi, çok fazla işe yaramaz script-wizardry ve başlangıçtaki parametre adlarını gizler smartctl. İşte daha iyi bir sürüm;

#!/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 -ts@

örnek çıktı:

$ 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)

ve tek astarlı

$ sudo /usr/sbin/smartctl -A /dev/sda | 
     awk '$0~/LBAs/{ printf "TBW %.1f\n", $10 * 512 / 1024^4 }'
TBW 17.1
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.