ฉันจะตรวจสอบ TBW บน Samsung SSD ของฉันได้อย่างไร


13

ตามความรู้ทั่วไป SSD มีวงจร PE (Program-Erase) จำนวน จำกัด ก่อนที่เซลล์ NAND จะตาย

ดังนั้นจึงเป็นประโยชน์อย่างมากที่จะทราบว่าข้อมูลถูกเขียนลง SSD ของคุณมากน้อยเพียงใดเพื่อกำหนดว่าจะใช้งานได้นานเท่าใดก่อนที่ NAND จะตาย

ฉันมี Samsung 850 Pro 512GB SSD และฉันใช้ Ubuntu 14.04

ฉันจะรับ TBW (Total-Bytes-Written) สำหรับไดรฟ์ของฉันได้อย่างไร

คำตอบ:


16

การเปิดเผยข้อมูลเต็มรูปแบบ: คำสั่ง scipt / ที่ปรากฏในคำตอบนี้ไม่ใช่ของฉัน แต่เป็นงานของ JDG Leaver พวกเขาได้รับมาจากบล็อกโพสต์บนเว็บไซต์ของเขา


หมายเหตุ:

  • สิ่งนี้จะรายงานตัวเลขที่ถูกต้องสำหรับ Samsung SSD เท่านั้น
  • คุณต้องsmartctlติดตั้ง

วิธีที่ 1:

นี่เป็นสคริปต์ตัวเล็กที่มีประโยชน์ที่จะช่วยให้คุณสามารถตรวจสอบ TBW ของ SSD ของคุณพร้อมกับข้อมูลอื่น ๆ :

#!/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 Pro ของฉัน


วิธีที่ 2:

หรือนี่คือหนึ่งซับเพื่อรับ TBW เท่านั้น:

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

สิ่งนี้ใช้ไม่ได้กับ SAMSUNG MZ7LN512HMJP-000L7 ของฉัน smartctl รายงานTotal_LBAs_Writtenเป็น 2268 และสิ่งนี้สร้าง 1.1 MB เขียน - ไม่ถูกต้องชัดเจนสำหรับไดรฟ์ที่อายุเกินหนึ่งปีและเป็นไดรฟ์ระบบหลักของฉัน :(
Icydog

@Icydog :( สิ่งที่รุ่นของอูบุนตูที่คุณทำงานอยู่หรือไม่
You'reAGitForNotUsingGit

ฉันใช้ Fedora 27 ฉันคิดว่า SSD ของฉันอาจไม่รายงานตัวเลขที่ถูกต้อง
Icydog

การวิจัยของฉันแสดงให้เห็นว่า SSD แต่ละตัวมีตัวคูณเป็นของตัวเองสำหรับความหมายของ "LBAs ที่เขียน" แต่ละหน่วย ฉันไม่มีตัวเลขสำหรับ Samsung 850 แต่มันไม่ใช่แค่ภาค ...
ljwobker

3

ช่วงเวลาสำคัญของ SSD ที่เหลืออยู่

สำหรับ Crucial SSD (ผลิตโดยไมครอน) คำถามเกี่ยวกับอายุการใช้งานที่เหลือนั้นทำได้ง่ายขึ้นเล็กน้อย

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

เอกสารนี้ระบุว่า 202 เป็นเปอร์เซ็นต์อายุการใช้งานที่เหลืออยู่ เป็นตัวอย่างใน Ubuntu 16.04 ( sudo smartctl /dev/sda1 -a) รายงาน 202 ว่าไม่เป็นที่รู้จัก แต่ค่า 90 (ในกรณีของฉัน) ตรงกับคำอธิบายใน pdf และบ่งบอกถึงอายุ 90% ที่เหลืออยู่ สิ่งนี้สามารถปรับขนาดได้อย่างเหมาะสมโดย TBW ที่ให้ไว้ในวรรณกรรมที่สำคัญในไดรฟ์ที่คุณมี ที่จริงแล้วอายุการใช้งานที่เหลืออยู่ค่อนข้างมีประโยชน์มากกว่า


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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.