मैं अपने सैमसंग एसएसडी पर टीबीडब्ल्यू की निगरानी कैसे कर सकता हूं?


13

जैसा कि सामान्य ज्ञान है, NAND कोशिकाओं के मरने से पहले SSD के पास सीमित संख्या में PE (प्रोग्राम-इरेज़) चक्र होते हैं।

इसलिए, यह जानना बहुत मददगार है कि आपके एसएसडी को कितना डेटा लिखा गया है, ताकि यह निर्धारित किया जा सके कि नंद के मरने से पहले यह कितना लंबा होगा।

मेरे पास एक सैमसंग 850 प्रो 512 जीबी एसएसडी है, और मैं उबंटू 14.04 चला रहा हूं।

मैं अपने ड्राइव के लिए टीबीडब्ल्यू (कुल-बाइट्स-लिखित) कैसे प्राप्त कर सकता हूं?

जवाबों:


16

पूर्ण अस्वीकरण: इस उत्तर में मौजूद स्कैप्ट / कमांड मेरे अपने नहीं हैं, बल्कि जेडीजी लीवर के काम के हैं। वे अपनी वेबसाइट पर एक ब्लॉग पोस्ट से खट्टे थे ।


ध्यान दें:

  • यह केवल सैमसंग एसएसडी के लिए सटीक संख्या की रिपोर्ट करेगा
  • आपको smartctlस्थापित करने की आवश्यकता है

विधि 1:

यहां एक आसान सा स्क्रिप्ट है जो आपको कुछ अन्य जानकारी के साथ, आपके SSD के TBW पर नजर रखने की अनुमति देगा:

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

यहाँ आउटपुट का एक नमूना है:

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

यह डेटा सटीक है, क्योंकि मैंने केवल अपना नया 850 प्रो स्थापित किया है।


विधि 2:

वैकल्पिक रूप से, यहां केवल टीबीडब्ल्यू प्राप्त करने के लिए एक-लाइनर है:

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

यह मेरे सैमसंग MZ7LN512HMJP-000L7 SSD के लिए काम नहीं करता है। smartctl Total_LBAs_Written2268 होने की रिपोर्ट करता है और यह 1.1 MB
लिखता है

@ आईकॉग :( उबंटू का कौन सा संस्करण चला रहे हैं?
YouAGitForNotUsingGit

मैं फेडोरा 27 पर हूं। मुझे लगता है कि मेरा एसएसडी शायद संख्याओं को सही ढंग से रिपोर्ट नहीं कर रहा है।
इकाडॉग

मेरे शोध से पता चलता है कि प्रत्येक SSD को लगता है कि यह "LBAs लिखा" की प्रत्येक इकाई के लिए वास्तव में इसका मतलब है कि यह गुणक है। मेरे पास सैमसंग के लिए संख्या 850 नहीं है, लेकिन यह सिर्फ एक सेक्टर नहीं है ...
ljwobker

3

महत्वपूर्ण एसएसडी लाइफटाइम शेष

क्रूसिअल एसएसडी (माइक्रोन द्वारा बनाई गई) के लिए शेष जीवनकाल के सवाल को थोड़ा आसान बनाया गया है।

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

यह डॉक 202 की पहचान परसेंट लाइफटाइम रिमेनिंग के रूप में है। उबंटू 16.04 ( sudo smartctl /dev/sda1 -a) पर एक उदाहरण के रूप में 202 अज्ञात के रूप में रिपोर्ट करता है, लेकिन 90 (मेरे मामले में) का मूल्य पीडीएफ में विवरण से मेल खाता है, और 90% जीवन शेष होने का संकेत देता है। यह उचित रूप से आपके द्वारा चलाए जा रहे ड्राइव पर निर्णायक.कॉम साहित्य में दिए गए टीबीडब्ल्यू द्वारा उचित रूप से बढ़ाया जा सकता है। वास्तव में, शेष जीवनकाल अधिक उपयोगी है।


1

स्वीकृत उत्तर में फूला हुआ आउटपुट है, बहुत अधिक बेकार स्क्रिप्ट-विजार्ड्री और प्रारंभिक पैरामीटर नाम छिपाता है smartctl। यहाँ एक बेहतर संस्करण है;

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

नमूना उत्पादन:

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

और वन-लाइनर

$ sudo /usr/sbin/smartctl -A /dev/sda | 
     awk '$0~/LBAs/{ printf "TBW %.1f\n", $10 * 512 / 1024^4 }'
TBW 17.1
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.