LINUX.ORG.RU

smartctl как его понимать?

 ,


0

3

Приветствую коллеги!

Хотелось бы понимать сколько данных уже было записано на SSD Disk, но понимание не приходит.

Есть Device Model: Netac SSD 128GB, Serial Number: AA20220921128G455025.

smartctl -a /dev/sda | grep 'Sector Size'
Sector Size:      512 bytes logical/physical

smartctl -A /dev/sda
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.10.82-std-def-alt1] (ALT Sisyphus 7.2-alt1)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x0032   100   100   050    Old_age   Always       -       0
  5 Reallocated_Sector_Ct   0x0032   100   100   050    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   100   100   050    Old_age   Always       -       1923
 12 Power_Cycle_Count       0x0032   100   100   050    Old_age   Always       -       15
160 Unknown_Attribute       0x0032   100   100   050    Old_age   Always       -       0
161 Unknown_Attribute       0x0033   100   100   050    Pre-fail  Always       -       100
163 Unknown_Attribute       0x0032   100   100   050    Old_age   Always       -       13
164 Unknown_Attribute       0x0032   100   100   050    Old_age   Always       -       844471
165 Unknown_Attribute       0x0032   100   100   050    Old_age   Always       -       1991
166 Unknown_Attribute       0x0032   100   100   050    Old_age   Always       -       1890
167 Unknown_Attribute       0x0032   100   100   050    Old_age   Always       -       1923
168 Unknown_Attribute       0x0032   100   100   050    Old_age   Always       -       5050
169 Unknown_Attribute       0x0032   100   100   050    Old_age   Always       -       62
175 Program_Fail_Count_Chip 0x0032   100   100   050    Old_age   Always       -       0
176 Erase_Fail_Count_Chip   0x0032   100   100   050    Old_age   Always       -       0
177 Wear_Leveling_Count     0x0032   100   100   050    Old_age   Always       -       0
178 Used_Rsvd_Blk_Cnt_Chip  0x0032   100   100   050    Old_age   Always       -       0
181 Program_Fail_Cnt_Total  0x0032   100   100   050    Old_age   Always       -       0
182 Erase_Fail_Count_Total  0x0032   100   100   050    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   100   100   050    Old_age   Always       -       13
194 Temperature_Celsius     0x0022   100   100   050    Old_age   Always       -       54
195 Hardware_ECC_Recovered  0x0032   100   100   050    Old_age   Always       -       0
196 Reallocated_Event_Count 0x0032   100   100   050    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   100   100   050    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0032   100   100   050    Old_age   Always       -       0
199 UDMA_CRC_Error_Count    0x0032   100   100   050    Old_age   Always       -       0
232 Available_Reservd_Space 0x0032   100   100   050    Old_age   Always       -       100
241 Total_LBAs_Written      0x0030   100   100   050    Old_age   Offline      -       5228137
242 Total_LBAs_Read         0x0030   100   100   050    Old_age   Offline      -       561
245 Unknown_Attribute       0x0032   100   100   050    Old_age   Always       -       7002196

Залез на https://www.virten.net/2016/12/ssd-total-bytes-written-calculator/ ресурс, который, якобы переводит LBA в удобоваримые значения и что я там вижу? А вижу я, что на диск было всего записано 2Gb!

Не плохо, правда?

Свежо питание, да серится с трудом. Дело в том, что этот несчастный Netac жестко убивался в течении более чем 2х месяцев постоянной перезаписью

while true; do
dd if=/dev/random of=/root/fordel.bak bs=4M
rm -fr /root/fordel.bak
done

Примерное число записанных блоков (1 блок около 100Gb) около 8000. Т.е. ну ни как не 2Gb.

Тогда полез эксперементировать и подбирать размер записи, что бы Total_LBAs_Written изменился на 1. И примерно такой размер удалось вычислить!

dd if=/dev/zero of=/fordel.bak bs=32M count=1

Т.е. после записи блока 32Mb Total_LBAs_Written возрастает на 1. Вот это уже более похоже на правду.

echo "$((5228137 * 32 /1024/1024))"
159

Примерно 159Tb. Ресурс превзойден всего в 2 раза. Диск стал ощутимо тормозить.

Но, собственно, вопрос в следующем: где подчерпнуть нужные данные для понимания сколько всего данных было записано на диск?


241 Total_LBAs_Written 0x0030 100 100 050 Old_age Offline - 5228137

5 228 137 * 32 мебибайта = 175.427167 десятичных терабайта

Я ток прочитал тему дальше первых 2-х предложений. Он всегда и был 32 MiB. Я просто много-много лет назад на каком-то сайте это прочитал. Там еще калькулятор был LBA в TB

uwuwuu
()
Последнее исправление: uwuwuu (всего исправлений: 1)
Ответ на: комментарий от uwuwuu

Я ток прочитал тему дальше первых 2-х предложений. Он всегда и был 32 MiB. Я просто много-много лет назад на каком-то сайте это прочитал. Там еще калькулятор был LBA в TB

Не-а!

smartctl -A /dev/sda | grep Total_LBAs_Written
241 Total_LBAs_Written      0x0032   099   099   000    Old_age   Always       -       7844380330

dd if=/dev/zero of=/fordel.bak bs=32M count=1

smartctl -A /dev/sda | grep Total_LBAs_Written
241 Total_LBAs_Written      0x0032   099   099   000    Old_age   Always       -       7844389026

Model Family: Samsung based SSDs Device Model: Samsung SSD 860 EVO M.2 250GB

HighMan
() автор топика
Ответ на: комментарий от HighMan

так ты может sync не сделал между вызовами команд. dd не сразу данные записывает.

У меня у SATA SDD такая строка:

241 Host_Writes_32MiB       0x0003   100   100   000    Pre-fail  Always       -       248827

Тут обрати внимание на 241 - это код какой-то атрибута, а что там видишь надпись - это вывод программы. Те у тебя в «ячейке» 241 какие-то значения лежат, но у меня они кратны 32 мегабайтам. Названия атрибутов они мож и вообще не хранятся нигде.

LBA может быть 32 мегабайта и 512 байт (размер сектора), а кто-то может и по гигабатйам считать.

uwuwuu
()
Последнее исправление: uwuwuu (всего исправлений: 1)
Ответ на: комментарий от uwuwuu

Обнови smartctl может гигабайты покажет

smartctl -V
smartctl 7.3 2022-02-28 r5338 [x86_64-linux-6.2.15-200.fc37.x86_64] (local build)
Copyright (C) 2002-22, Bruce Allen, Christian Franke, www.smartmontools.org

smartctl comes with ABSOLUTELY NO WARRANTY. This is free
software, and you are welcome to redistribute it under
the terms of the GNU General Public License; either
version 2, or (at your option) any later version.
See https://www.gnu.org for further details.

smartmontools release 7.3 dated 2022-02-28 at 16:33:40 UTC
smartmontools SVN rev 5338 dated 2022-02-28 at 16:34:26
smartmontools build host: x86_64-redhat-linux-gnu
smartmontools build with: C++17, GCC 12.1.1 20220628 (Red Hat 12.1.1-3)
smartmontools configure arguments: [hidden in reproducible builds]
reproducible build SOURCE_DATE_EPOCH: 1658534400 (2022-07-23 03:00:00)

Fedora 37 полностью обновленная

smartctl -A /dev/sda | grep Total_LBAs_Written
241 Total_LBAs_Written      0x0032   099   099   000    Old_age   Always       -       7845002276

Это Device Model: Samsung SSD 860 EVO M.2 250GB с моего компа и его размер блока я пока не вычислил, но он точно не 512 байт и не 32 Мб

sync тут, так же, роли не играет. На моем Gnusmas после записи 32Мб без sync Total_LBAs_Written вырастает много больше чем на 1

echo "$((7844389026 - 7844380330))"
8696

Это после записи 32 мб

HighMan
() автор топика
Последнее исправление: HighMan (всего исправлений: 6)
Ответ на: комментарий от uwuwuu

LBA это всегда либо 512 байт, либо 4096 байт.

На вашем SSD опция называется Host_Writes_32MiB, про LBA ни слова. А у ОПа, видимо, диск неправильно SMART сообщает (опция должна называться Host_Writes_32MiB тоже).

ValdikSS ★★★★★
()
Последнее исправление: ValdikSS (всего исправлений: 2)
Ответ на: комментарий от ValdikSS

На вашем SSD опция называется Host_Writes_32MiB, про LBA ни слова. А у ОПа, видимо, диск неправильно SMART сообщает (опция должна называться Host_Writes_32MiB тоже).

Не-а!

но код один, поэтому я предположил, что там может быть что угодно, а название атрибутов сама прога подставляет

Я, так понимаю, что «название раздела» читается из самого устройства по коду 241 и там может быть любая шляпа.

У меня на другой машине

Device Model:     KINGSTON SUV500MS120G
....
241 Host_Writes_GiB         0x0032   100   100   000    Old_age   Always       -       615

Т.е. Название кода 241 и прочих smartctl считывает из устройства и там название может быть каким угодно. А значение хоть LBA, хоть Gb. Хоть число мух на сковородке. На что хватит фантазии производителю диска.

HighMan
() автор топика
Последнее исправление: HighMan (всего исправлений: 1)
Ответ на: комментарий от SerW

HighMan, добрый день! Откройте gsmartcontrol, и посмотрите, есть ли у вам бордовые вкладки в окне накопителя. Если нет – все ок.

Добрый день.

А как быть с системами без GUI? :)

HighMan
() автор топика
Ответ на: комментарий от HighMan

Я, так понимаю, что «название раздела» читается из самого устройства

Нет, из устройства читается 8 вроде байт на каждую строку: код параметра, мелкие числа в левых колонках и одно большое число «RAW_VALUE» (оно почти половину места из этих 8 байт занимает). Название параметра smartctl берёт из своей базы. Он определяет что это за модель диска, и в своих таблицах находит описание её параметров. Если диск smartctl-у неизвестный - то подставляет какие-то дефолтные названия, авось угадает (иногда совсем не угадывает, например путает температуру с оставшимися процентами ssd в коде 231). Если у известного диска неизвестный базе smartctl-а параметр - аналогично.

по коду 241 и там может быть любая шляпа.

В целом да, но обычно стараются поддерживать некоторое единообразие. В данном случае там видимо у всех счётчик записей, но в каких единицах - по-разному.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от HighMan

Никаких «названий разделов» в Смарте устройства нет и быть не может, только код и значения. Описания кодов лежат в drivedb от smartmontools, и откуда они взялись — знают только те, кто их туда добавил. Обычно вендоры их не документируют.

alegz ★★★★
()
Ответ на: комментарий от alegz

Никаких «названий разделов» в Смарте устройства нет и быть не может, только код и значения. Описания кодов лежат в drivedb от smartmontools, и откуда они взялись — знают только те, кто их туда добавил. Обычно вендоры их не документируют.

Не совсем так. В driverdb лежат ИЗВЕСТНЫЕ модели. Наш netac в driverdb отсутствует, о чем smartctl и сообщает:

smartctl -a /dev/sda | grep 'Device is'
Device is:        Not in smartctl database [for details use: -P showall]

Т.е. если нет в БД, то он читает из устройства

HighMan
() автор топика
Ответ на: комментарий от HighMan

Не может он ничего «читать из устройства», за несуществованием там этих имён. Кури спецификацию ATAPI про SMART. smartctl подставляет какие-то свои дефолты от балды, вот и всё.

alegz ★★★★
()
Ответ на: комментарий от SerW

Можно загрузиться с Live-образа.

Можно сделать что угодно. Можно хоть по PXE загружать Live образ специально собраный и заточеный под конкретные нужды. (Привет, Hetzner)

Просто, часто специфика бывает такова: настраиваешь сервера, кучу Desktop и передаешь все это на некий крайне удаленный объект, где работают юзвери, которые на клавиатуре ищут магическую клавищу «Press any key».

В подобных ситуациях приходится делать все для совсем деревянных, еще и документацию размером с «Война и Мир» писать.

Еще один пренеприятнейший момент: в абсолютном большинстве случаев, мы можем получить доступ для решения проблем, лишь выехав на объект, т.к. доступ по интернет там отсутствует под угрозой расстрела.

Уже были случаи, когда наш специалист более суток добирался до объекта (самолетом, поездом, машиной) (Привет одноименный фильм), что бы решить проблему нажав несколько клавиш.

Как вы понимаете, специалисты, обычно не горят желанием ехать в Тютюши ради решения идиотской проблемы которую создали юзвери на объекте, а мы не предусмотрели, что некий юзверь сиволапый, или горе-админ может до подобного додуматься.

HighMan
() автор топика

Проблема в том, что 32 мегабайта эти когда пишутся, то там где-то в нутрях хранится информация только о перезаписанных ячейках (количество записанных), а отдает он какое-то человекопонятное число, которое округляется по-ходу ROUND, те 1.5 = 1, 1.6 = 2, поэтому стоит 320 попробовать записать и если увеличится на 9-11 (система тоже на диск может что-то скинуть в этот момент), то точно 32.

модель китайский ноунейм.

хотя это довольно интересно, а зачем хранятся данные, кратные 32MiB? ну ясное дело там int64, int32. мож в спецификации ограничение какое, что число может не влезть, и тогда счетчик обнулится

uwuwuu
()
Последнее исправление: uwuwuu (всего исправлений: 1)
Ответ на: комментарий от mky

Ради прикола даже покурил доки и выдал руками ATA-запрос SMART READ DATA. Покажите мне тут, блин, хоть что-то похожее на какие-то «имена»:

    cdb to send: [a1 08 0e d0 01 00 4f c2 00 b0 00 00]
SCSI Status: Good 

Received 512 bytes of data:
 00     10 00 01 0b 00 64 64 00  00 00 00 00 00 00 02 05    .....dd.........
 10     00 8c 8c 44 00 00 00 00  00 00 03 07 00 ac ac 57    ...D...........W
 20     01 45 01 05 00 00 04 12  00 64 64 a4 02 00 00 00    .E.......dd.....
 30     00 00 05 33 00 64 64 00  00 00 00 00 00 00 07 0b    ...3.dd.........
 40     00 64 64 00 00 00 00 00  00 00 08 05 00 7c 7c 21    .dd..........||!
 50     00 00 00 00 00 00 09 12  00 61 61 be 55 00 00 00    .........aa.U...
 60     00 00 0a 13 00 64 64 00  00 00 00 00 00 00 0c 32    .....dd........2
 70     00 64 64 a2 02 00 00 00  00 00 c0 32 00 63 63 00    .dd........2.cc.
 80     06 00 00 00 00 00 c1 12  00 63 63 00 06 00 00 00    .........cc.....
 90     00 00 c2 02 00 99 99 27  00 18 00 2c 00 00 c4 32    .......'...,...2
 a0     00 64 64 00 00 00 00 00  00 00 c5 22 00 64 64 00    .dd........".dd.
 b0     00 00 00 00 00 00 c6 08  00 64 64 00 00 00 00 00    .........dd.....
 c0     00 00 c7 0a 00 c8 c8 02  00 00 00 00 00 00 00 00    ................
 d0     00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
 e0     00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
 f0     00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
 100    00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
 110    00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
 120    00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
 130    00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
 140    00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
 150    00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
 160    00 00 00 00 00 00 00 00  00 00 02 00 5d 57 01 5b    ............]W.[
 170    03 00 01 00 01 ff 00 75  01 00 00 00 00 00 00 00    .......u........
 180    00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
 190    00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
 1a0    00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
 1b0    00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
 1c0    00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
 1d0    00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
 1e0    00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
 1f0    00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 01    ................
alegz ★★★★
()
Последнее исправление: alegz (всего исправлений: 1)