Làm cách nào để theo dõi TBW trên ổ SSD Samsung của tôi?


13

Theo kiến ​​thức phổ biến, SSD có số chu kỳ PE (Chương trình xóa) giới hạn trước khi các tế bào NAND chết.

Do đó, rất hữu ích khi biết có bao nhiêu dữ liệu đã được ghi vào ổ SSD của bạn, để xác định thời gian tồn tại bao lâu trước khi NAND chết.

Tôi có ổ SSD Samsung 850 Pro 512GB và tôi đang chạy Ubuntu 14.04.

Làm cách nào tôi có thể nhận TBW (Total-Byte-Write) cho ổ đĩa của mình?

Câu trả lời:


16

TIẾT LỘ ĐẦY ĐỦ: Các scipt / lệnh có trong câu trả lời này không phải của riêng tôi, mà là công việc của JDG Leaver. Họ đã có nguồn gốc từ một bài viết trên blog của mình .


Lưu ý:

  • Điều này sẽ chỉ báo cáo số chính xác cho SSD Samsung
  • Bạn cần phải smartctlcài đặt

Cách 1:

Đây là một tập lệnh nhỏ tiện dụng sẽ cho phép bạn theo dõi TBW của SSD, cùng với một số thông tin khác:

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

Đây là một mẫu của đầu ra:

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

Dữ liệu này là chính xác, vì tôi chỉ mới cài đặt 850 Pro mới.


Cách 2:

Ngoài ra, đây là một lớp lót để chỉ nhận 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')"

Điều này không hoạt động đối với SSD SAMSUNG MZ7LN512HMJP-000L7 của tôi. báo cáo smartctl Total_LBAs_Writtenlà 2268 và điều này tạo ra 1.1 MB viết - rõ ràng không chính xác cho một ổ đĩa đó là hơn một năm cũ và là ổ đĩa hệ thống chính của tôi :(
Icydog

@Icydog :( bạn đang chạy phiên bản Ubuntu nào?
AreAGitForNotUsingGit 22/07/18

Tôi đang ở trên Fedora 27. Tôi nghĩ rằng SSD của tôi có lẽ không báo cáo chính xác các con số.
Icydog

Nghiên cứu của tôi cho thấy rằng mỗi ổ SSD dường như có hệ số nhân riêng cho ý nghĩa của từng đơn vị "LBA được viết". Tôi không có số cho Samsung 850, nhưng nó hoàn toàn KHÔNG chỉ là một khu vực ...
ljwobker 26/03/19

3

SSD quan trọng trọn đời

Đối với SSD quan trọng (do Micron sản xuất), câu hỏi về thời gian tồn tại còn lại được thực hiện dễ dàng hơn một chút.

https://www.micron.com/~/media/document/products/technical-note/solid-state-st Storage / tnfd22_client_ssd_smart_attribut.pdf

Tài liệu này xác định 202 là Phần trăm còn lại trọn đời. Như một ví dụ trên Ubuntu 16.04 ( sudo smartctl /dev/sda1 -a) báo cáo 202 là không xác định, nhưng giá trị 90 (trong trường hợp của tôi) khớp với mô tả trong pdf và cho biết 90% còn lại. Điều này có thể được thu nhỏ một cách thích hợp bởi TBW được đưa ra trong tài liệu quan trọng.com trên ổ đĩa mà bạn có. Trên thực tế, cuộc sống còn lại là khá hữu ích.


1

Câu trả lời được chấp nhận có đầu ra cồng kềnh, quá nhiều thuật sĩ kịch bản vô dụng và ẩn tên tham số ban đầu smartctl. Đây là một phiên bản tốt hơn;

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

đầu ra mẫu:

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

và một lớp lót

$ sudo /usr/sbin/smartctl -A /dev/sda | 
     awk '$0~/LBAs/{ printf "TBW %.1f\n", $10 * 512 / 1024^4 }'
TBW 17.1
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.