Операционные системы

Теория: Типы файловых систем

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

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. Например:

sudo mkfs.ext4 /dev/sda1
sudo mount /dev/sda1 /
sudo mkfs.ext4 /dev/sda2
sudo mount /dev/sda2 /boot

После этого система загрузится с диска и будет использовать ext4 для чтения и записи.

Каталог /home — это личные данные пользователей: документы, настройки, кэш браузеров. Его часто размещают на btrfs, потому что она умеет делать снапшоты. Снимок фиксирует состояние папки в определённый момент. Например, можно создать снимок перед обновлением:

sudo btrfs subvolume snapshot /home /home_snapshot_before_update

Если после обновления что-то сломается, каталог можно вернуть в прежнее состояние:

sudo btrfs subvolume delete /home
sudo btrfs subvolume snapshot /home_snapshot_before_update /home

Файлы восстановятся мгновенно, без копирования.

Каталог /var/log хранит журналы работы системы — всё, что пишет ядро, службы и программы. Логи постоянно растут, поэтому их изолируют в отдельный раздел, чтобы они не заполнили весь диск.

sudo mkfs.xfs /dev/sdb1
sudo mount /dev/sdb1 /var/log

Теперь если логи разрастутся, это не повлияет на работу / — система останется живой.

Каталог /tmp нужен для временных файлов — туда программы складывают кэш и промежуточные данные. Его создают в tmpfs, то есть прямо в оперативной памяти.

sudo mount -t tmpfs -o size=1G tmpfs /tmp

Такой раздел работает в десятки раз быстрее диска и автоматически очищается при перезагрузке. Если открыть папку /tmp и создать файл:

echo "hello" > /tmp/test.txt

Он исчезнет после рестарта, освобождая память.

Такое распределение делает систему устойчивой. Системные файлы на ext4 или XFS — надёжные и стабильные. Домашний каталог на btrfs легко откатить, если что-то пошло не так. Логи на отдельном XFS не заполнят диск. А /tmp в tmpfs ускоряет работу программ и сам очищается. Результат — Linux, который не ломается от одной ошибки и работает предсказуемо даже под нагрузкой.

Когда мы говорим «файловая система», чаще всего представляем себе диск — место, где лежат файлы и каталоги. Но в Linux не всё так просто. Некоторые файловые системы не хранят данные физически, а создаются ядром прямо в памяти. Они нужны, чтобы ядро могло общаться с пользователем, программами и устройствами. Такие системы называются виртуальными файловыми системами (VFS).

Посмотреть, какие файловые системы сейчас подключены, можно командой:

mount | column -t

В выводе вы увидите как обычные разделы вроде /dev/sda1 on /, так и виртуальные: /proc, /sys, /run, /dev, /tmp. Давайте разберём, что делает каждая из них.

/proc — взгляд внутрь ядра

Каталог /proc — это интерфейс, через который ядро показывает состояние системы. Файлы внутри него не занимают место на диске: всё содержимое создаётся динамически, когда вы его читаете.

Попробуйте ввести несколько команд:

cat /proc/cpuinfo     # информация о процессоре
cat /proc/meminfo     # использование памяти
cat /proc/uptime      # время непрерывной работы системы

Каждый файл отражает конкретный аспект системы. Например, /proc/[PID] — это каталог с данными о процессе с указанным ID. Там можно посмотреть его аргументы, окружение, дескрипторы файлов, даже карту памяти.

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

/sys — устройства и драйверы

Если /proc рассказывает о процессах и параметрах ядра, то /sys показывает мир устройств. Через него ядро предоставляет информацию о дисках, сетевых интерфейсах, контроллерах питания, USB и всём, что подключено к системе.

Примеры:

ls /sys/class/net/            # список сетевых интерфейсов
cat /sys/class/net/eth0/speed # скорость сетевой карты

Эти файлы тоже не настоящие. Ядро создаёт их на лету, а изменение значений внутри некоторых из них может повлиять на работу устройства — например, включить или выключить подсветку клавиатуры.

/sys часто используют программы вроде udev и NetworkManager, чтобы управлять оборудованием без прямого доступа к драйверам.

tmpfs — временные файлы в оперативной памяти

tmpfs — это файловая система, которая живёт в оперативке. Она используется для временных данных, кэшей и служебных файлов. После перезагрузки всё, что в ней было, исчезает.

Посмотреть, где она используется, можно так:

mount | grep tmpfs

Обычно tmpfs монтируется в /tmp, /run и /dev/shm. А создать свой временный раздел можно вручную:

sudo mount -t tmpfs -o size=512M tmpfs /mnt/test

Теперь всё, что вы запишете в /mnt/test, будет храниться в памяти, а не на диске. Если выключить компьютер — каталог очистится автоматически.

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

Помимо системных /proc, /sys и tmpfs, в Linux есть и другие виртуальные файловые системы, которые нужны для управления контейнерами, ресурсами и пользовательскими пространствами.

overlayfs: Объединяет несколько слоёв данных в один. Нижний слой доступен только для чтения, верхний — для записи. Так работает Docker: базовый образ (read-only) остаётся неизменным, а все изменения контейнера попадают в отдельный слой (read-write). Благодаря этому можно быстро создавать и удалять контейнеры, не копируя всю систему заново.

cgroupfs: Файловая система, через которую ядро управляет ресурсами процессов. Она позволяет задать лимиты — сколько CPU, памяти или сети может использовать конкретная группа процессов. Так работают Docker, Kubernetes и systemd: каждое приложение получает свой «контейнер» ресурсов.

fuse: Технология, которая позволяет создавать собственные файловые системы из пользовательских программ — без доступа к ядру. Например:

sshfs user@server:/home/user /mnt/remote

Эта команда монтирует удалённую папку по SSH как обычный каталог.
Можно открывать, копировать и редактировать файлы, как если бы они были на локальном диске.

Права, ACL и атрибуты

Каждый inode содержит три бита rwx для пользователя, группы и остальных. Для более тонкого контроля есть ACL (Access Control Lists):

setfacl -m u:alex:rwx project.txt
getfacl project.txt

Атрибуты (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

Рекомендуемые программы

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845