Файловые системы

1. Немного о дисках

Жёсткий диск состоит из пластин, разделённых на дорожки и секторы (обычно по 512 байт или 4 КБ). Файловая система располагается внутри раздела диска, который описывается в таблице разделов (MBR или GPT).

2. Задачи файловой системы

ФС решает несколько ключевых задач:

  • Индексация и поиск данных (через структуры вроде inode).
  • Управление свободным пространством.
  • Контроль доступа (права, ACL).
  • Оптимизация производительности (кеширование, дефрагментация*).
  • Надёжность (журналирование).

*Дефрагментация менее критична для современных ФС (ext4, XFS, btrfs) и SSD.

3. Виды файловых систем

Доступ к разным ФС в Linux обеспечивается единым интерфейсом — VFS (Virtual File System).

FAT (File Allocation Table)

  • Плюсы: Простая, поддерживается всеми ОС.
  • Минусы: Нет журналирования, ограничения на размер файла и раздела (FAT32: файл до 4 ГБ, раздел до 32 ГБ).
  • Расчёт размера: FAT12: 2^12 * размер_блока.

ext4 (Fourth Extended Filesystem)

  • Стандарт для Ubuntu, Debian и многих других дистрибутивов.
  • Журналируемая — повышает надёжность, записывая метаданные операций в специальный журнал перед их выполнением.
  • Использует экстенты (extents) для более эффективного хранения больших файлов (вместо прямых/косвенных блоков).
  • Иноды (inodes) хранят метаданные о файле (права, владелец, указатели на данные). Их количество ограничено и задаётся при создании ФС.

XFS

  • Высокопроизводительная ФС, хорошо подходит для работы с большими файлами.
  • Использует B+-tree для индексации.
  • Отложенная аллокация — улучшает производительность.
  • Динамическое создание inodes.
  • Стандарт для Red Hat Enterprise Linux.

btrfs (B-Tree File System)

  • Современная ФС с продвинутыми функциями.
  • Copy-on-Write (CoW): При изменении файла данные записываются в новое место, а не перезаписываются старые. Это позволяет эффективно создавать снапшоты (snapshots).
  • Встроенная поддержка RAID и LVM-подобных функций.
  • Субаллокация — эффективная работа с маленькими файлами.
  • Поддержка TRIM для SSD.
  • Стандарт для openSUSE.

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

  • Кеширование: Ядро использует Page Cache (для данных) и Dirty Cache (для изменённых, но не записанных данных) для ускорения работы.
  • I/O планировщики: Определяют порядок обработки запросов к диску. Доступны через /sys/block/<device>/queue/scheduler.
    • cfq / bfq — «честное» распределение.
    • deadline — учитывает сроки выполнения запросов.
    • noop — простой FIFO (часто лучше для SSD).

Утилиты для работы с ФС:

  • mkfs, mke2fs — создание ФС.
  • tune2fs — изменение параметров ФС ext*.
  • debugfs — отладка ФС ext*.
  • fsck — проверка и восстановление ФС.

5. Монтирование

Процесс подключения раздела диска к определённой точке в дереве каталогов (/mnt, /home и т.д.).

  • Команды: mount, umount.
  • /etc/fstab — файл статической информации о файловых системах для автоматического монтирования при загрузке.
    # Пример строки в /etc/fstab
    UUID=ed465c6e-949a-41c6-8e8b-c8da348a3577 / ext4 defaults 0 1
    
  • Параметры монтирования: rw/ro (чтение/запись), noatime (не обновлять время доступа для производительности), acl (поддержка списков контроля доступа) и др.
  • systemd.mount — альтернатива fstab через юниты systemd.

6. RAID (Redundant Array of Independent Disks)

Технология объединения нескольких дисков в массив для повышения надёжности и/или производительности.

УровеньПринципНадёжностьПроизводительностьЁмкость
RAID 0Striping (чередование)НизкаяВысокая (чт/зап)N
RAID 1Mirroring (зеркалирование)ВысокаяВысокая (чт)N/2
RAID 5ЧетностьСредняяВысокая (чт)N-1
RAID 6Двойная четностьВысокаяВысокая (чт)N-2
RAID 10Зеркалирование + чередованиеВысокаяВысокая (чт/зап)N/2

Создание программного RAID в Linux: Используется утилита mdadm.

# Пример создания RAID 1
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc
mkfs.ext4 /dev/md0
mount /dev/md0 /mnt/raid
# Сохранение конфигурации
mdadm --detail --scan >> /etc/mdadm/mdadm.conf

7. LVM (Logical Volume Manager)

Система управления дисковым пространством, которая абстрагируется от физических дисков.

Преимущества LVM:

  • Гибкое управление размерами: Легко увеличивать, уменьшать логические тома.
  • Снапшоты: Возможность создания моментальных снимков томов.
  • Объединение дисков: Создание томов, размер которых превышает один физический диск.

Основные понятия:

  • Physical Volume (PV): Физический диск или раздел.
  • Volume Group (VG): Группа физических томов.
  • Logical Volume (LV): Логический том, создаваемый из пространства VG.

Основные команды:

  • pvcreate /dev/sdX — создать физический том.
  • vgcreate my_vg /dev/sdX1 /dev/sdY1 — создать группу томов.
  • lvcreate -n my_vol -L 10G my_vg — создать логический том размером 10 ГБ.
  • mkfs.ext4 /dev/my_vg/my_vol — создать ФС на томе.

Заключение

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