Перейти к содержанию

02. Структура файловой системы Linux

Введение

Файловая система — это способ организации и хранения данных на носителе.

Linux поддерживает множество типов файловых систем, а также имеет свою уникальную иерархию каталогов.


Поддерживаемые файловые системы Linux

Linux отличается гибкостью и способен работать с различными файловыми системами. Их можно разделить на несколько групп.

Классические файловые системы Linux

  • ext2 — вторая расширенная файловая система (Extended File System). Старая, без журналирования. Использовалась до начала 2000-х, сейчас практически не применяется.
  • ext3 — развитие ext2 с добавлением журналирования (журнал фиксирует изменения перед их применением, что повышает надёжность при сбое питания).
  • ext4 — современная версия, поддерживает файловые системы до 1 Эбайта, отдельные файлы до 16 Тбайт, снапшоты, дефрагментацию и быстрый доступ. Является наиболее распространённой в Linux.

Современные Linux-файловые системы

  • XFS — высокопроизводительная файловая система от SGI, хорошо подходит для работы с большими файлами и высокими нагрузками. Используется в Red Hat/CentOS.
  • Btrfs — новая файловая система с поддержкой снапшотов, контрольных сумм, встроенного RAID, тонкого выделения места. Считается конкурентом ZFS.
  • ReiserFS — была популярна в 2000-х за счёт эффективной работы с мелкими файлами, но сейчас практически не используется.
  • F2FS (Flash-Friendly File System) — оптимизирована для флеш-накопителей и SSD, активно развивается.

Универсальные и кроссплатформенные файловые системы

  • FAT16/FAT32 — старые файловые системы, применяются для флешек, карт памяти. FAT32 имеет ограничения: файл не может быть больше 4 Гбайт.
  • exFAT — современная файловая система для флеш-накопителей и карт памяти, поддерживается Windows, Linux, macOS. Нет ограничений по размеру файлов.
  • NTFS — основная файловая система Windows, Linux имеет драйверы для чтения и записи (ntfs-3g).

Файловые системы корпоративного уровня

  • ZFS — мощная, отказоустойчивая файловая система с поддержкой снапшотов, дедупликации, встроенного RAID, контроля целостности. Используется в серверах и хранилищах.
  • OCFS2 (Oracle Cluster File System 2) — кластерная файловая система для одновременного доступа нескольких узлов.
  • GFS2 (Global File System 2) — кластерная файловая система от Red Hat.

Виртуальные файловые системы Linux

Эти файловые системы не хранят данные на диске, а отображают состояние ядра и процессов.

  • procfs (/proc) — информация о процессах и ядре.
  • sysfs (/sys) — информация об устройствах и драйверах.
  • tmpfs — файловая система в оперативной памяти.
  • devtmpfs (/dev) — устройства, доступные в системе.

Структура файловой системы Linux

Linux использует иерархическую структуру файловой системы, где всё начинается с корневого каталога /. Это дерево каталогов унифицировано благодаря стандарту FHS (Filesystem Hierarchy Standard).

1. Основные каталоги

  • / — корневой каталог, содержит все остальные каталоги.
  • /bin — базовые команды для всех пользователей (ls, cp, mv, cat).
  • /sbin — системные утилиты для администрирования (ifconfig, reboot, fdisk).
  • /boot — файлы, необходимые для загрузки ОС (ядро Linux, initrd, загрузчик GRUB).
  • /dev — файлы устройств (жёсткие диски, флешки, терминалы). Пример: /dev/sda.
  • /etc — системные конфигурационные файлы (настройки сети, служб, пользователей).
  • /home — домашние каталоги пользователей. Пример: /home/student.
  • /lib, /lib64 — системные библиотеки, используемые программами.
  • /media — точки монтирования внешних устройств (флешек, CD/DVD).
  • /mnt — временная точка монтирования файловых систем.
  • /opt — сторонние приложения и пакеты.
  • /proc — виртуальная файловая система с информацией о процессах.
  • /root — домашний каталог суперпользователя root.
  • /run — данные о текущей сессии (например, PID процессов).
  • /srv — данные предоставляемых сервисов (например, веб-серверов).
  • /sys — информация о ядре и оборудовании.
  • /tmp — временные файлы, очищаются после перезагрузки.
  • /usr — дополнительные программы и данные.
    • /usr/bin — пользовательские приложения.
    • /usr/sbin — системные утилиты.
    • /usr/share — документация, иконки, локализации.
  • /var — изменяемые данные: логи, кэш, очереди почты.
    • /var/log — журналы работы системы и сервисов.
    • /var/tmp — временные файлы, сохраняемые между перезагрузками.

2. Виртуальные каталоги

  • /proc и /sys не содержат файлов на диске — они отображают данные ядра.
  • /dev динамически создаётся системой udev и содержит устройства.

3. Пример структуры

/
├── bin
├── boot
├── dev
├── etc
├── home
│   └── user
├── lib
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin
├── srv
├── sys
├── tmp
├── usr
│   ├── bin
│   ├── sbin
│   └── share
└── var

4. Особенности организации

  • Все устройства монтируются в дерево каталогов, а не имеют собственных букв (как в Windows: C:, D:).
  • Конфигурация всегда хранится в /etc.
  • Домашние каталоги пользователей в /home упрощают администрирование.
  • Логи в /var/log дают администратору возможность анализировать состояние системы.

Значение для администратора

1. Управление конфигурацией

  • Все конфигурационные файлы хранятся в /etc. Администратор может настроить:
    • сеть (/etc/network/interfaces, /etc/netplan/),
    • службы (Apache, Nginx, SSH),
    • пользователей и группы (/etc/passwd, /etc/group, /etc/shadow).

2. Мониторинг и диагностика

  • Логи в /var/log позволяют отслеживать состояние системы и служб.
  • В /proc и /sys содержится информация о процессах, ядре и оборудовании.
  • Команды dmesg, cat /proc/cpuinfo, cat /proc/meminfo помогают диагностировать проблемы.

3. Управление пользователями

  • Домашние каталоги пользователей находятся в /home.
  • Администратор может ограничивать права доступа и следить за использованием дискового пространства.
  • Каталог /root используется суперпользователем.

4. Управление устройствами и файловыми системами

  • Все устройства отображаются в /dev.
  • Временные точки монтирования находятся в /mnt и /media.
  • Мониторинг и подключение дисков выполняется через команды mount, umount, lsblk.

5. Безопасность

  • Своевременная проверка и настройка прав доступа к каталогам.
  • Контроль логов безопасности (/var/log/auth.log).
  • Ограничение использования /tmp и /var/tmp для предотвращения атак.

6. Автоматизация и резервное копирование

  • Использование cron и bash-скриптов для резервного копирования файлов из ключевых каталогов.
  • Применение rsync для синхронизации /etc, /home, /var.
  • Создание снапшотов файловых систем (Btrfs, ZFS).

Заключение

Знание поддерживаемых файловых систем и структуры каталогов Linux — важный навык сетевого администратора. Это позволяет эффективно управлять данными, конфигурацией и безопасностью системы.