Иногда хочется быстро прикинуть, как работает дисковая подсистема, либо сравнить 2 жестких диска. Очевидно, что измерить реальную скорость дисков практически невозможно, она зависит от слишком большого числа параметров. Но получить некое представление о скорости дисков можно.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Проверка скорости чтения диска
Проще всего измерить скорость диска с помощью программы hdparm. Установить ее очень просто:
CentOS/RHEL:
# yum -y install hdparm
Debian/Ubuntu
# apt-get -y install hdparm
Теперь нужно вывести список дисков и разделов в системе:
# fdisk -l
Выбираем нужный раздел и проверяем скорость чтения:
# hdparm -t /dev/sda2
Проверка скорости записи на диск
Для того, чтобы измерить скорость записи на диск, можно воспользоваться стандартной утилитой linux - dd. С ее помощью мы создадим на диске файл размером 1 Gb частями по 1Mb.
Измеряем скорость записи на диск:
# sync; dd if=/dev/zero of=tempfile bs=1M count=1024; sync
Я измерял скорость на виртуальной машине, диск которой был размещен на RAID5, собранным из 5-ти дисков SAS 10к. В принципе, неплохой результат. Можно изменить размер файла и блоков, из которого он записывается. Если сделать файл побольше, результат скорости диска может получиться более приближенный к реальности.
А вот скорость диска на VDS, который я арендую. Результат в разы хуже:
Скорость диска на виртуальной машине, расположенной на втором SATA диске моего рабочего ноутбука:
Результат не очень, надо разбираться в чем дело. Давно возникли подозрения, что с диском что-то не то, заметно подтормаживают виртуальные машины, хотя раньше это было не заметно. Жаль, результатов более ранних тестов не сохранилось.
Интересно было бы посмотреть на ваши результаты тестов. Если же вы хотите серьезно измерить скорость дисков, то вам сюда - Как правильно мерять производительность диска.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Для наглядности происходящего есть такая GUI утилита, системный монитор текущего состояния с отображением скорости GKrellM в ней есть возможность по накопителям отобразить общий чарт, а так же выбрать непосредственно диск и разумеется другие мониторы (CPU, LAN, RAM, SWAP, процессы, t℃, скорость вращения вентиляторов, вольтажи), очень рекомендую, использую наверное с 2007г.
Ну и разумеется CLI:
По накопителям
sudo iotop
по сетевому стеку
sudo iftop
А кто сказал что временный файл будет на жестком диске создаваться?? А если их несколько? Негодный метод измерения записи! Не вижу жесткого диска в команде!
По факту при большом размере файла скорость показывает близкую к реальной скорости дисков. Так что я бы не был так категоричен. Покажите более надежный и простой с вашей точки зрения способ. Буду им пользоваться.
на виртуалках выдает неверные результаты
Домашний сервер на
MiniITX Asus P8H77-I ОЗУ 8Gb RAID5 12Tb 4xWestern Digital Ultrastar DC HC310 4 Тб (HUS726T4TALE6L4) LSI 9265CV-8i
# sync; dd if=/dev/zero of=tempfile bs=1M count=1024; sync
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.416221 s, 2.6 GB/s
Эта запись явно в кэш контроллера улетела. Диски так быстро писать не могут. Попробуйте гигов 10-20 записать. Интересно будет на результат посмотреть.
А вот в w10 сделали удобный мониторинг текущей загруженности харда.
Есть вариант что-то подобное увидеть в linux, как думаете?
Вот скрин мониторинга https://ibb.co/kdMhR8 Жаль нельзя редактировать комменты.
Привет.
А в заббиксе есть какой-нибудь стандартный способ проверить скорость чтения-записи дисков в линуксе и в вин ?
Спасибо
Такого инструмента нет. Его в принципе не существует, так как чтобы измерить скорость работы диска, нужно учесть очень много факторов. Как минимум, нужно снять всю основную нагрузку на сервере, чтобы данные были хотя бы теоретически приближены к реальным. Но на работающем сервере это сделать невозможно. Тут только обходные пути возможно. Вообще, это очень нетривиальная задача.
Понятно, что абсолютные цифры в данном случае будут ни о чем.
Но в динамике хотя бы можно было понимать, в какой момент и насколько изменяются показатели скорости обмена с дисками.
Спасибо
Самый простой вариант, написать скрипты на команды, что я описал в своей статье про скорость диска - https://serveradmin.ru/kak-izmerit-skorost-zhestkogo-diska/ и запускать с определенным интервалом, записывая результаты. Но лично я бы так не стал делать. Такие тесты регулярная и бесполезная нагрузка на диск. Считаю, что диск надо начинать мерить, когда у сервера начинает расти load average, и причина этому не очевидна (память и проц не нагружены).
спасибо.
в приницпе согласен, что "Такие тесты регулярная и бесполезная нагрузка на диск"
Однако думал что что-то простое из коробки в zabbix есть для этого (хотя бы как perfmon /res в вин)
У меня в ядре еще планировщик - deadline, ну и tune2fs ни кто не отменял. Я примерно пару лет собирал инфу и экспериментировал с тюнингом разными fs. То одно покручу, то другое. В итоге на продакшн ВОТ ТАК. Где и что крутил я уже к сожалению не помню и какие параметры за что отвечают тоже.
На сервере виртуализации
/dev/sdb1 /var/lib/libvirt/images ext4 noatime,nodiratime,noacl,data=writeback,commit=15,barrier=0,max_batch_time=30000,min_batch_time=10000
+ отключенное журналирование
Заинтересовал параметр writeback, немного погуглил. Вот тут тесты с этим параметром и без: http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0390131ba84fd3f726f9e24fc4553828125700bb
Как оказалось, он не дает существенного прироста скорости работы с диском, но все же быстрее.
Сервер виртуализации
virtserv ~ # hdparm -t /dev/sdb1
/dev/sdb1:
Timing buffered disk reads: 834 MB in 3.00 seconds = 277.55 MB/sec
Гостевая система
[root@zbx ~]# hdparm -t /dev/vda1
/dev/vda1:
Timing buffered disk reads: 6478 MB in 3.00 seconds = 2158.63 MB/sec
Сервер виртуализации
RAID10 4xSAS 10k RPM
OS Gentoo
virtserv ~ # sync; dd if=/dev/zero of=tempfile bs=1M count=1024; sync
1024+0 записей получено
1024+0 записей отправлено
скопировано 1073741824 байта (1,1 GB), 0,580826 c, 1,8 GB/c
Гостевая система. CentOS 7
[root@zbx ~]# sync; dd if=/dev/zero of=tempfile bs=1M count=1024; sync
1024+0 записей получено
1024+0 записей отправлено
скопировано 1073741824 байта (1,1 GB), 0,726475 c, 1,5 GB/c
Ого, я таких скоростей ни разу не видел. В чем секрет в данном случае? Результат даже для RAID10 очень хороший.