Какие типы жестких дисков являются самыми быстрыми и как это проверить в Linux?

«Какие типы жестких дисков являются самыми быстрыми и как это проверить в Linux?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

С точки зрения производительности ввода-вывода (IOPS и пропускной способности), типы дисков можно расположить в следующем порядке (от быстрых к медленным):

  1. NVMe SSD (PCIe 4.0/5.0) — Самые быстрые. Подключаются напрямую через шину PCIe, имеют наименьшую задержку (латентность).
  2. NVMe SSD (PCIe 3.0) — Чуть медленнее, но все равно значительно быстрее SATA.
  3. SATA SSD — Ограничены пропускной способностью интерфейса SATA (~550 МБ/с).
  4. HDD (жесткие диски, SAS/SATA) — Самые медленные из-за механических движущихся частей.

Как проверить скорость диска в Linux:

1. Использование fio (Flexible I/O Tester) — наиболее точный и гибкий инструмент. Установка: sudo apt install fio (Debian/Ubuntu) или sudo yum install fio (RHEL/CentOS).

  • Тест последовательного чтения/записи (пропускная способность):

    # Тест последовательного чтения (1 MiB blocks)
    fio --name=seq_read --filename=/dev/nvme0n1 --rw=read --bs=1M --size=1G --direct=1 --ioengine=libaio --iodepth=64 --runtime=30 --time_based --group_reporting
    # Тест последовательной записи
    fio --name=seq_write --filename=/dev/nvme0n1 --rw=write --bs=1M --size=1G --direct=1 --ioengine=libaio --iodepth=64 --runtime=30 --time_based --group_reporting
  • Тест случайного чтения/записи (IOPS, важный для баз данных):

    # Тест случайного чтения (4 KiB blocks)
    fio --name=rand_read --filename=/dev/nvme0n1 --rw=randread --bs=4k --size=1G --direct=1 --ioengine=libaio --iodepth=64 --runtime=30 --time_based --group_reporting

2. Использование hdparm (быстрый тест для SATA устройств):

# Тест кэшированного чтения (из буфера ОЗУ)
sudo hdparm -T /dev/sda
# Тест непосредственного чтения с диска
sudo hdparm -t /dev/sda

3. Использование dd (простой, но не всегда точный тест последовательной записи):

# Запись 1 ГБ файла (осторожно, перезапишет данные!)
sync; dd if=/dev/zero of=./testfile bs=1G count=1 oflag=direct; sync
# Чтение 1 ГБ файла
dd if=./testfile of=/dev/null bs=1G count=1
# Удалить тестовый файл
rm testfile

Практический вывод для DevOps: При проектировании высоконагруженных систем (базы данных, кэши) выбор NVMe дисков критически важен для достижения высоких IOPS. Мониторинг дискового ввода-вывода (например, через iostat -x 1) помогает выявлять узкие места.