PENGUNGKAPAN LENGKAP: Skipt / perintah yang ada dalam jawaban ini bukan milik saya, melainkan karya JDG Leaver. Mereka bersumber dari posting blog di situs webnya .
NB:
- Ini hanya akan melaporkan angka akurat untuk SSD Samsung
- Anda perlu telah
smartctl
diinstal
Metode 1:
Berikut ini adalah skrip kecil praktis yang akan memungkinkan Anda untuk memonitor TBW SSD Anda, bersama dengan beberapa informasi lain:
#!/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 "------------------------------"
Berikut adalah contoh dari output:
------------------------------
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 %
------------------------------
Data ini akurat, karena saya baru saja menginstal 850 Pro baru saya.
Metode 2:
Atau, berikut adalah satu-liner untuk mendapatkan TBW saja:
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')"
Total_LBAs_Written
menjadi 2.268 dan ini menghasilkan 1,1 MB tertulis - jelas salah untuk drive yang berusia lebih dari satu tahun dan merupakan drive sistem utama saya :(Sisa seumur hidup SSD krusial
Untuk SSD Penting (dibuat oleh Micron) pertanyaan tentang sisa masa pakai menjadi sedikit lebih mudah.
https://www.micron.com/~/media/documents/products/technical-note/solid-state-storage/tnfd22_client_ssd_smart_attributes.pdf
Dokumen ini mengidentifikasi 202 sebagai Persen Seumur Hidup yang Tersisa. Sebagai contoh di Ubuntu 16.04 (
sudo smartctl /dev/sda1 -a
) melaporkan 202 sebagai tidak diketahui, tetapi nilai 90 (dalam kasus saya) cocok dengan deskripsi di pdf, dan menunjukkan 90% sisa hidup. Ini dapat diskalakan dengan tepat oleh TBW yang diberikan dalam literatur penting.com pada drive yang Anda miliki. Sebenarnya, sisa seumur hidup lebih berguna.sumber
Jawaban yang diterima memiliki output yang membengkak, terlalu banyak skrip-sihir yang tidak berguna dan menyembunyikan nama parameter awal
smartctl
. Ini adalah versi yang lebih baik;output sampel:
dan satu-liner
sumber