Какие типы жестких дисков вы знаете и как их определить в Linux?

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

Ответ

В инфраструктуре выбор типа диска напрямую влияет на производительность и стоимость. Я работал со следующими типами:

HDD (Hard Disk Drive)

  • Принцип работы: магнитные пластины и механические считывающие головки.
  • Характеристики: Высокая емкость, низкая стоимость за гигабайт, но медленная скорость (обычно 100-200 МБ/с, задержки в миллисекундах).
  • Применение в DevOps: Холодное хранение логов, архивные бэкапы, данные, не требующие высокой IOPS.

SSD (Solid State Drive, SATA)

  • Принцип работы: флеш-память (NAND) без движущихся частей.
  • Характеристики: Значительно выше скорость (до ~550 МБ/с) и IOPS, ниже задержки, устойчивы к вибрации.
  • Применение: Операционные системы, базы данных с умеренной нагрузкой, кэши.

NVMe SSD (PCIe)

  • Принцип работы: Подключается напрямую к шине PCIe, используя протокол NVMe.
  • Характеристики: Максимальная производительность (скорость чтения/записи до нескольких ГБ/с, десятки/сотни тысяч IOPS), минимальные задержки (микросекунды).
  • Применение: Высоконагруженные СУБД (PostgreSQL, MySQL), виртуализация, кэширование в памяти (например, Redis persistence на быстрых дисках).

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

# 1. Команда lsblk показывает вращается ли диск (rota). 1 = HDD, 0 = SSD/NVMe.
lsblk -d -o name,rota,size,model
# Пример вывода:
# NAME ROTA SIZE MODEL
# sda     1 1.8T ST2000DM008 (HDD)
# nvme0n1  0 476G Samsung SSD 970 (NVMe SSD)

# 2. Проверить, является ли устройством NVMe (появится в /dev/nvme*)
ls /dev/nvme* 2>/dev/null

# 3. Утилита smartctl из пакета smartmontools дает детальную информацию
sudo smartctl -i /dev/sda

При проектировании инфраструктуры мы выбираем тип диска на основе требований приложения к IOPS, throughput и latency, а также бюджета.