Операционные системы
Теория: Типы файловых систем
Файловая система — это сердце любого накопителя. Она определяет, как операционная система хранит и находит данные, как проверяет их целостность и как ведёт себя при сбое. Разные файловые системы развивались под разные задачи: одни — под надёжность и резервирование, другие — под скорость, третьи — под удобство пользователей.
ext4 — стандартная файловая система Linux. Это зрелое и проверенное решение: быстрый доступ к данным, поддержка больших файлов, встроенный журнал и высокая совместимость. Её ставят почти во всех дистрибутивах — надёжный вариант для рабочих станций и серверов.
XFS — разработка Silicon Graphics, ориентированная на большие объёмы данных. Оптимизирована под последовательную запись и чтение, поэтому используется на серверах хранения, видеоплатформах и в корпоративных решениях. Справляется с большими файлами и потоками данных без потери производительности.
btrfs — современная Linux-файловая система с поддержкой copy-on-write. Она умеет делать снапшоты, хранить контрольные суммы для проверки целостности, использовать подтомы (subvolumes), выполнять сжатие и даже зеркалирование. Её часто выбирают для /home или контейнерных хранилищ, где важны гибкость и защита данных.
ZFS — легендарная система, созданная в Sun Microsystems. Она совмещает функции файловой системы и менеджера томов. Проверяет контрольные суммы каждого блока, восстанавливает повреждённые данные из зеркала, создаёт снапшоты и поддерживает сжатие «на лету». ZFS идеально подходит для серверов, NAS и баз данных, где сбой недопустим.
NTFS — файловая система Windows. Поддерживает журнал, расширенные права доступа (ACL), шифрование и сжатие. Она надёжна, но сильно завязана на экосистему Microsoft. Linux умеет работать с ней, но через драйвер совместимости.
APFS — система Apple, пришедшая на смену HFS+. Она оптимизирована для SSD и мобильных устройств. Поддерживает copy-on-write, снапшоты, клонирование файлов и шифрование. APFS делает резервное копирование через Time Machine почти мгновенным и обеспечивает стабильную работу macOS и iOS даже при внезапных сбоях.
Корневая система / и загрузочный раздел /boot содержат ядро, драйверы и основные файлы системы. Здесь важна стабильность и простота. Поэтому обычно выбирают ext4 или XFS. Например:
После этого система загрузится с диска и будет использовать ext4 для чтения и записи.
Каталог /home — это личные данные пользователей: документы, настройки, кэш браузеров. Его часто размещают на btrfs, потому что она умеет делать снапшоты. Снимок фиксирует состояние папки в определённый момент. Например, можно создать снимок перед обновлением:
Если после обновления что-то сломается, каталог можно вернуть в прежнее состояние:
Файлы восстановятся мгновенно, без копирования.
Каталог /var/log хранит журналы работы системы — всё, что пишет ядро, службы и программы. Логи постоянно растут, поэтому их изолируют в отдельный раздел, чтобы они не заполнили весь диск.
Теперь если логи разрастутся, это не повлияет на работу / — система останется живой.
Каталог /tmp нужен для временных файлов — туда программы складывают кэш и промежуточные данные. Его создают в tmpfs, то есть прямо в оперативной памяти.
Такой раздел работает в десятки раз быстрее диска и автоматически очищается при перезагрузке. Если открыть папку /tmp и создать файл:
Он исчезнет после рестарта, освобождая память.
Такое распределение делает систему устойчивой. Системные файлы на ext4 или XFS — надёжные и стабильные. Домашний каталог на btrfs легко откатить, если что-то пошло не так. Логи на отдельном XFS не заполнят диск. А /tmp в tmpfs ускоряет работу программ и сам очищается. Результат — Linux, который не ломается от одной ошибки и работает предсказуемо даже под нагрузкой.
Когда мы говорим «файловая система», чаще всего представляем себе диск — место, где лежат файлы и каталоги. Но в Linux не всё так просто. Некоторые файловые системы не хранят данные физически, а создаются ядром прямо в памяти. Они нужны, чтобы ядро могло общаться с пользователем, программами и устройствами. Такие системы называются виртуальными файловыми системами (VFS).
Посмотреть, какие файловые системы сейчас подключены, можно командой:
В выводе вы увидите как обычные разделы вроде /dev/sda1 on /, так и виртуальные: /proc, /sys, /run, /dev, /tmp. Давайте разберём, что делает каждая из них.
/proc — взгляд внутрь ядра
Каталог /proc — это интерфейс, через который ядро показывает состояние системы. Файлы внутри него не занимают место на диске: всё содержимое создаётся динамически, когда вы его читаете.
Попробуйте ввести несколько команд:
Каждый файл отражает конкретный аспект системы. Например, /proc/[PID] — это каталог с данными о процессе с указанным ID. Там можно посмотреть его аргументы, окружение, дескрипторы файлов, даже карту памяти.
Так Linux позволяет наблюдать за собой в реальном времени, без перезагрузки и без специальных утилит.
/sys — устройства и драйверы
Если /proc рассказывает о процессах и параметрах ядра, то /sys показывает мир устройств. Через него ядро предоставляет информацию о дисках, сетевых интерфейсах, контроллерах питания, USB и всём, что подключено к системе.
Примеры:
Эти файлы тоже не настоящие. Ядро создаёт их на лету, а изменение значений внутри некоторых из них может повлиять на работу устройства — например, включить или выключить подсветку клавиатуры.
/sys часто используют программы вроде udev и NetworkManager, чтобы управлять оборудованием без прямого доступа к драйверам.
tmpfs — временные файлы в оперативной памяти
tmpfs — это файловая система, которая живёт в оперативке. Она используется для временных данных, кэшей и служебных файлов. После перезагрузки всё, что в ней было, исчезает.
Посмотреть, где она используется, можно так:
Обычно tmpfs монтируется в /tmp, /run и /dev/shm. А создать свой временный раздел можно вручную:
Теперь всё, что вы запишете в /mnt/test, будет храниться в памяти, а не на диске. Если выключить компьютер — каталог очистится автоматически.
Другие виртуальные файловые системы
Помимо системных /proc, /sys и tmpfs, в Linux есть и другие виртуальные файловые системы, которые нужны для управления контейнерами, ресурсами и пользовательскими пространствами.
overlayfs: Объединяет несколько слоёв данных в один. Нижний слой доступен только для чтения, верхний — для записи. Так работает Docker: базовый образ (read-only) остаётся неизменным, а все изменения контейнера попадают в отдельный слой (read-write). Благодаря этому можно быстро создавать и удалять контейнеры, не копируя всю систему заново.
cgroupfs: Файловая система, через которую ядро управляет ресурсами процессов. Она позволяет задать лимиты — сколько CPU, памяти или сети может использовать конкретная группа процессов. Так работают Docker, Kubernetes и systemd: каждое приложение получает свой «контейнер» ресурсов.
fuse: Технология, которая позволяет создавать собственные файловые системы из пользовательских программ — без доступа к ядру. Например:
Эта команда монтирует удалённую папку по SSH как обычный каталог.
Можно открывать, копировать и редактировать файлы, как если бы они были на локальном диске.
Права, ACL и атрибуты
Каждый inode содержит три бита rwx для пользователя, группы и остальных. Для более тонкого контроля есть ACL (Access Control Lists):
Атрибуты (chattr, lsattr) расширяют возможности:
i— файл нельзя изменить или удалить;a— разрешена только дозапись;e— extent-based allocation;c— прозрачное сжатие.
Эти флаги часто используют в системах безопасности и для защиты логов (chattr +a /var/log/syslog).
Диагностика и восстановление
Понимание структуры помогает разруливать реальные инциденты.
- “Диск забит, но файлов нет” → ищем открытые удалённые файлы:
lsof | grep deleted - “Файловая система не монтируется” → проверяем суперблок:
fsck -n /dev/sda1 - “Файлы пропали после сбоя” → восстанавливаем журнал:
xfs_repair /dev/sda1 - “Медленная запись” → смотрим фрагментацию:
filefrag -v largefile - “Что реально занимает место” → проверяем:
du -sh * | sort -h

