Как общеизвестен, SSD имеют ограниченное количество PE (Стирание Программы) циклы, прежде чем ячейки NAND умрут.
Поэтому очень полезно знать, сколько данных было записано в Ваш SSD для определения, насколько дольше это продлится, прежде чем NAND перестает работать.
У меня есть Samsung 850 Pro SSD на 512 ГБ, и я запускаю Ubuntu 14.04.
Как я мог (записать из общего количества из-байтов) TBW для моего диска?
smartctl
, установил Вот удобный небольшой сценарий, который позволит Вам контролировать 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.
<час>, С другой стороны, вот острота для получения 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')"
Решающее остающееся Время жизни SSD
Для Решающего SSD (сделанный Микроном) вопрос остающегося времени жизни сделан немного легче.
Этот документ идентифицирует 202 как Остающееся Время жизни Процента. Как пример на Ubuntu 16.04 (sudo smartctl /dev/sda1 -a
) отчеты 202 как неизвестные, но значение 90 (в моем случае) соответствуют описанию в PDF и указывают на 90%-ю остающуюся жизнь. Это может соответственно масштабироваться TBW, который дан в литературе crucial.com по диску, который Вы имеете. На самом деле время жизни оставаясь скорее более полезно.
Принятый ответ чрезмерно увеличил размер вывода, слишком большого бесполезного колдовства сценария и скрывает начальные названия параметра от 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
Мы можем использовать smartctl
, чтобы найти значение TBW.
Установите smartctl
с помощью $ sudo apt install smartmontools
Получите размер сектора и LBA, написанный с помощью $ sudo smartctl -Ai /dev/sda
в данном случае для устройства /dev/sda
Немного математики: [размер сектора] * [записано LBA] / 1024^3 = X ГиБ
записано на данный момент
$ sudo smartctl -Ai /dev/sda | grep -E 'Sector Size|Total_LBAs_Written'
Sector Size: 512 bytes logical/physical
241 Total_LBAs_Written 0x0032 099 099 000 Old_age Always - 1214641768
$ calc 1214641768*512/1024^3
579.186328887939453125
В этом случае размер сектора составляет 512 байт, что является обычным, а общее количество записанных LBA составляет 1214641768. В результате на данный момент записано 579 ГиБ. Это имеет смысл, так как этот диск относительно новый.
Команду calc
можно установить с помощью $ sudo apt install calc
или использовать что-то еще.
Команда $ sudo smartctl -A /dev/sda
предоставляет информацию об «атрибутах SMART, специфичных для производителя», что означает, что то, что показывает ваш диск, может не совпадать с этим. В примере я использовал твердотельный накопитель Samsung, на котором есть необходимая информация.
С учетом того, что @JuliSmz сказал в своем комментарии, и этого PDF, я подозреваю, что Total_LBAs_Written
, возвращенный (по крайней мере, некоторыми) Kingston SSD, уже находится в ГБ.
Найдите идентификатор 241 на последней странице PDF-файла. В нем говорится:
Описание: Указывает количество байтов (в разрешении 1 ГБ) записанные на диск хост-системой в течение срока службы диска.
Обоснование: Этот атрибут возвращает количество байтов в гигабайтах при разрешении обновления 1 ГБ.Счетчик представляет количество записанных байтов. Атрибут читается как
0
до тех пор, пока количество записанных байтов не достигнет 1 ГБ; при дополнительных ГБ атрибут увеличивается до значения1
(десятичное число).Примечание. Прошивка клиента старше 520ABBF0 и прошивка Enterprise старше 510ABBF0 не обновляли разрешение до тех пор, пока на диск не было записано 64 ГБ данных.