Измерение общего количества записанных байт в Linux
Мы весьма заинтересованы в изучении возможности использования SSD-дисков в серверной среде. Тем не менее, одна вещь, которую мы должны установить, это ожидаемая долговечность. В соответствии с этой статьей производители сообщают о выносливости диска в терминах "общее количество записанных байт" (TBW). Например, из этой статьи твердотельный накопитель Crucial C400 оценивается в 72 ТБ TBW. Существуют ли какие-либо сценарии / инструменты в экосистеме Linux, чтобы помочь нам измерить TBW? (а затем принять более взвешенное решение о целесообразности использования SSD-накопителей)
5 ответов
Другая возможность - посмотреть / proc / diskstats. Он не сохраняется при перезагрузках, но содержит данные для каждого блочного устройства. Вероятно, наиболее интересным для вас является поле 10, в котором содержится общее количество записанных секторов. В системе с дисками SCSI с размером сектора 512 байт вы можете запустить
awk '/sd/ {print $3"\t"$10 / 2 / 1024}' /proc/diskstats
чтобы увидеть, сколько мегабайт было записано на каждое устройство. Вывод будет выглядеть как
сда 728,759
sda1 79.0908
sda2 649,668
Я боролся с той же проблемой на своем ноутбуке, но когда я перезагружал его почти каждый день, принятый ответ не помог. У меня есть Samsung mSATA SSD, который имеет атрибут SMART #241 Total_LBAs_Written. Согласно официальной документации,
Чтобы рассчитать общий размер (в байтах), умножьте необработанное значение этого атрибута на 512B.
Таким образом, следующая команда дает мне общий ТБ, записанный на моем диске SSD (SDB)
sudo smartctl -A /dev/sdb | awk '/^241/ { print "TBW: "($10 * 512) * 1.0e-12, "TB" } '
Поскольку он также работает на моем жестком диске, я предполагаю, что он должен работать практически на каждом современном жестком диске.
Вы можете увидеть, сколько данных было записано в файловую систему ext4, посмотрев в /sys/fs/ext4/$DEVICE/life_write_kbytes.
Для моего KINGSTON SEDC400S37480G под Ubuntu Server 14.04 я использую следующий скрипт для мониторинга TBW. Я запускаю его из cron один раз каждый день. Скрипт выводит в файл журнала.
Вам нужно Calc, чтобы он работал. Установите calc с помощью:
apt-get install apcalc
Содержание скрипта:
echo "*** $(date -R) ***" >> /scripts/tbw/log.txt
tbw=$(cat /sys/fs/ext4/sda1/lifetime_write_kbytes)
TB=1000000000
echo TB written to sda1: >> /scripts/tbw/log.txt | calc $tbw / $TB >> /scripts/tbw/log.txt
Будет выводить:
*** Thu, 20 Jul 2017 03:02:51 +0300 ***
TB written to sda1:
3.062138442
Ты можешь попробовать iostat
, Это дает вам статистику, связанную с IO и загрузкой процессора. Посмотрите на руководство man iostat
,