Файловые системы
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 0 | Striping (чередование) | Низкая | Высокая (чт/зап) | N |
RAID 1 | Mirroring (зеркалирование) | Высокая | Высокая (чт) | 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. Эти знания позволяют эффективно управлять системой, настраивать её под конкретные задачи, устранять неполадки и обеспечивать надёжность хранения данных.