Узнаём количество записанных данных на SSD в Linux

Твердотельные накопители (SSD) становятся все более и более распространенными. Проблема, связанная с твердотельными накопителями, заключается в ограниченном сроке службы их ячеек. В зависимости от технологии изготовления каждая ячейка может быть перезаписана от 1000 раз в потребительских твердотельных накопителях TLC до 100 000 раз в корпоративных твердотельных накопителях на базе SLC.

Значение, на которое следует обратить внимание, — это гарантированный TBW (Total Bytes Written или Terabytes Written), которое обычно предоставляется поставщиком в характеристиках накопителя. Это значение указывает, как много данных может быть записано на устройство до истечения срока действия гарантии.

Но также нам необходимо знать, сколько данных уже было записано на накопитель. И если программы с графическим интерфейсом в Windows могут эту информацию сообщить нам сразу, то в терминале Linux нам придётся проделать некоторые действия и математические операции.

Для начала необходимо установить пакет smartmontools, если он у вас не установлен:

sudo apt install smartmontools

Теперь необходимо получить два значения из S.M.A.R.T. накопителя: количество перезаписанных секторов и размер одного сектора. Количество перезаписанных секторов получаем из поля Total_LBAs_Written:

~$ sudo smartctl /dev/sda --all | grep Total_LBAs_Written
246 Total_LBAs_Written   0x0032   100   100   000    Old_age   Always   -   138501480

«138501480» — и есть требуемое нам число.

Теперь узнаем размер сектора:

~$ sudo smartctl /dev/sda --all |grep "Sector Size"
Sector Size:      512 bytes logical/physical

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

138501480 * 512 = 70 912 757 760 байт = 66 ГБ

В некоторых SSD параметр Total_LBAs_Written также может называться Total_Sector_Writes.

Вот так в линуксе можно легко узнать, сколько ресурса накопителя уже истрачено. А ещё можно отправлять эти данные для отображения на графиках Monitorix.