Что такое директория /dev в Linux?

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

Ответ

/dev — это специальная директория в корневой файловой системе Linux, содержащая файлы устройств. Эти файлы являются интерфейсом между пользовательским пространством и ядром для взаимодействия с физическими и виртуальными устройствами. Чтение из или запись в такой файл фактически означает отправку данных драйверу устройства в ядре.

Ключевые типы файлов в /dev для DevOps:

Тип Описание Примеры
Блочные устройства (b) Обеспечивают доступ к данным блоками (например, секторам диска). /dev/sda, /dev/nvme0n1 (физические диски), /dev/loop0 (loop-устройства).
Символьные устройства (c) Обеспечивают небуферизованный потоковый доступ к данным. /dev/tty1 (терминал), /dev/urandom (генератор псевдослучайных чисел), /dev/null.

Практическое использование в DevOps:

  • Монтирование дисков:
    # Монтируем диск /dev/sdb1 в директорию /mnt/data
    sudo mount /dev/sdb1 /mnt/data
  • Создание файловых образов с помощью loop-устройств:
    # Создаем пустой файл-образ
    dd if=/dev/zero of=disk.img bs=1M count=100
    # Связываем его с loop-устройством
    sudo losetup -fP disk.img
    # Форматируем и монтируем
    sudo mkfs.ext4 /dev/loop0
    sudo mount /dev/loop0 /mnt/loop
  • Перенаправление вывода:
    # Игнорировать весь вывод команды
    noisy_command > /dev/null 2>&1
    # Отправить ошибки в "никуда", а stdout — в лог
    application_start 2> /dev/null >> /var/log/app.log
  • Получение случайных данных (например, для генерации паролей или токенов):
    # /dev/urandom не блокируется и подходит для большинства задач
    head -c 32 /dev/urandom | base64

Директория /dev динамически управляется демоном udev (или systemd-udevd), который создает и удаляет файлы устройств при подключении/отключении оборудования.