Какие ключевые опции монтирования файловых систем в Linux вы знаете?

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

Ответ

При монтировании файловых систем в Linux (команда mount) я использую различные опции для контроля безопасности, производительности и поведения. Вот ключевые из них, которые часто применяю на практике:

1. Опции безопасности (Security Options): Эти опции критически важны для монтирования внешних или недоверенных разделов.

  • noexec — Запрещает выполнение бинарных файлов с этой файловой системы. Пример: Монтирую раздел с данными для веб-приложения, чтобы предотвратить запуск скриптов из загруженных файлов.
  • nosuid — Игнорирует биты setuid/setgid. Это предотвращает повышение привилегий через исполняемые файлы на этом разделе.
  • nodev — Игнорирует специальные файлы устройств. На смонтированном разделе нельзя будет создать, например, /dev/sda.

2. Опции доступа (Access Modes):

  • ro / rw — Только для чтения (read-only) или чтение-запись (read-write). ro полезно для резервных копий или неизменяемых данных.
  • noatime / relatime — Управление записью времени последнего доступа к файлу (atime). noatime полностью отключает её, что снижает нагрузку на диск (особенно для часто читаемых файлов, как в кэше приложения). relatime (по умолчанию в современных ядрах) обновляет atime только если предыдущее значение старше времени модификации (mtime).

3. Специальные типы монтирования:

  • bind — Позволяет смонтировать часть существующего дерева каталогов в другую точку. Пример использования в Docker или для изоляции:
    # Монтирую /var/log в /opt/backup/logs для централизованного сбора логов
    mount --bind /var/log /opt/backup/logs
  • remount — Позволяет изменить опции уже смонтированной ФС без её отключения. Часто используется для переключения rw в ro в live-системе.

4. Опции ввода-вывода (I/O Options):

  • sync / async — Синхронная или асинхронная запись. sync гарантирует запись данных сразу, но сильно замедляет работу. Используется для флешек или в особых требованиях к целостности данных.
  • discard — Включает поддержку TRIM для SSD, что помогает поддерживать их производительность.

Практический пример команды монтирования:

# Монтирую внешний SSD для хранения данных приложения с оптимизациями для SSD и ограничениями безопасности
mount -t ext4 -o rw,noexec,nosuid,nodev,noatime,discard /dev/sdb1 /mnt/app_data

Эти опции я настраиваю как вручную, так и в файле /etc/fstab для автоматического монтирования при загрузке.