Как происходит работа с диском в Linux?

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

Ответ

Работа с диском в Linux — это взаимодействие ядра с блочными устройствами через драйверы файловых систем. Основные операции: чтение, запись и управление метаданными.

Ключевые команды для анализа и управления:

  • Просмотр дискового пространства и inodes:

    df -h      # Показать свободное место в человеко-читаемом формате
    df -i      # Показать использование inodes (важно для файловых систем с множеством мелких файлов)
  • Анализ использования диска каталогами:

    du -sh /var/log/*  # Показать размер содержимого каталога
    ncdu /home         # Интерактивный анализ (требует установки ncdu)
  • Мониторинг дисковых операций в реальном времени:

    iotop -o           # Показать процессы, активно выполняющие I/O
    vmstat 1           # Общая статистика, включая блоки ввода/вывода (bi/bo)

Технические детали и best practices:

  1. Производительность: Операции ввода-вывода (I/O) — узкое место. SSD обеспечивают гораздо более высокие IOPS (Input/Output Operations Per Second) и меньшую задержку, чем HDD.
  2. Кэширование: Ядро Linux активно использует свободную оперативную память для кэширования дисковых операций (буферный кэш, page cache), что значительно ускоряет повторное чтение.
  3. Планировщики ввода-вывода: Для оптимизации работы с накопителями (особенно SSD) можно выбрать планировщик (например, mq-deadline, kyber, bfq) через sysfs: /sys/block/sda/queue/scheduler.
  4. Логирование: Высокая дисковая активность может быть признаком проблемы (например, «swapping» при нехватке RAM). Мониторинг ключевых метрик (await, %util через iostat) помогает выявлять узкие места.