Файловые операции и диски
Файловые системы, inode, монтирование, ссылки, RAID-массивы, LVM, разметка дисков и этапы загрузки Linux.
- Как данные хранятся на дисках и что такое файловая система
- Что такое inode и почему имя файла — это не файл
- Как мониторить место и нагрузку на диск
- Как подключать (монтировать) устройства
- Чем отличаются жёсткие и символические ссылки
- Что такое RAID, LVM, MBR и GPT
- Как происходит загрузка Linux от нажатия кнопки до рабочего стола
💾 Что такое файловая система?
Файловая система — это способ организации и хранения данных на устройствах: жёстких дисках, SSD, флешках. Она определяет, как данные записываются, где хранятся и как к ним получить доступ.
Организация данных
Создание структуры каталогов и файлов — то самое дерево папок, которое ты видишь в системе.
Управление доступом
Кто может читать, записывать и выполнять файлы — права rwx из предыдущей темы.
Метаданные
Размер файла, дата создания, владелец, права — всё это хранится в специальных структурах (inode).
Эффективность
Минимизация фрагментации и быстрый доступ к данным — ключевая задача любой ФС.
📊 Популярные файловые системы
| Файловая система | ОС | Особенности |
|---|---|---|
ext4 | Linux | Стандарт в большинстве дистрибутивов. Стабильная, журналируемая, до 1 ЭБ |
ext3 | Linux | Предшественник ext4. Журналирование, но медленнее и меньше лимиты |
XFS | Linux | Высокая производительность на больших файлах. Используется в RHEL/CentOS |
Btrfs | Linux | Современная ФС: снимки (snapshots), сжатие, самовосстановление |
NTFS | Windows | Шифрование, сжатие, восстановление данных. Linux может читать/писать через ntfs-3g |
FAT32 | Кросс-платформа | Совместима с любой ОС. Лимит файла — 4 ГБ. Для флешек |
exFAT | Кросс-платформа | Эволюция FAT32 без лимита 4 ГБ. Для SD-карт, внешних дисков |
ext4 (надёжность) или XFS (большие файлы). Для флешки — exFAT. Для экспериментов — Btrfs (snapshots!).🧩 Inode (индексный дескриптор)
Inode — это структура данных, которая хранит всю информацию о файле, кроме его имени и содержимого. Каждый файл и каталог имеет свой уникальный номер inode.
Сколько байт занимает файл на диске
Создание, изменение, последний доступ
rwx, UID, GID — кто и что может делать
Где физически лежат данные на диске
📊 Просмотр места на диске
Переполнение диска может вызвать сбой служб, невозможность записи логов и даже крах системы. Поэтому мониторинг — обязательная привычка любого администратора.
⚡ Нагрузка на диск
Если система тормозит, а CPU не загружен — часто виноват именно диск. Эти утилиты помогут найти проблему.
iotop
Показывает процессы, которые больше всего нагружают диск. Аналог top, но для I/O.
iostat
Статистика ввода-вывода. Ключевые метрики: %util (загрузка), await (время ожидания).
vmstat
Общая информация о ресурсах: CPU, память, I/O. Колонки bi/bo — дисковые операции.
%util в iostat близок к 100% — диск перегружен. Посмотри через iotop, какой процесс создаёт нагрузку, и реши: оптимизировать, перенести на другой диск или заменить на SSD.🔌 Монтирование
Монтирование — это подключение файловой системы (диска, флешки, сетевого ресурса) к определённому каталогу в дереве Linux. Без монтирования система «не видит» устройство.
/mnt или /media). После монтирования через него доступно содержимое устройства.🔗 Hardlink и Softlink
Ссылки позволяют создавать альтернативные пути к одному и тому же файлу без его дублирования.
Указывает на тот же inode, что и исходный файл. Фактически — ещё одно имя для одного набора данных.
Если удалить оригинал — данные сохранятся, пока существует хотя бы одна жёсткая ссылка.
❌ Нельзя: на каталоги / на другой раздел диска
Специальный файл со своим inode, который хранит путь к целевому файлу. Работает как ярлык в Windows.
Если удалить оригинал — ссылка станет «битой» (broken symlink).
✅ Можно: на каталоги, на другие разделы, на сетевые файлы
🗄️ RAID
RAID (Redundant Array of Independent Disks) — технология объединения нескольких дисков в массив для повышения производительности или надёжности.
| Уровень | Принцип | Скорость | Отказоустойчивость | Применение |
|---|---|---|---|---|
| RAID 0 Striping |
Данные делятся на блоки и пишутся на все диски параллельно | ⚡ Максимум | ❌ Нет (сбой 1 диска = потеря всего) | Кеш, временные данные |
| RAID 1 Mirroring |
Данные зеркалируются: записываются одновременно на все диски | 👍 Обычная | ✅ Высокая (работает пока есть хоть 1 диск) | Критичные данные, БД |
| RAID 5 Striping + Parity |
Данные + блоки чётности распределены по всем дискам | 👍 Хорошая | ✅ Выдержит 1 сбой | Серверы, NAS-хранилища |
| RAID 10 1+0 |
Сначала зеркалирование (RAID 1), потом распределение (RAID 0) | ⚡ Высокая | ✅ Очень высокая | Высоконагруженные БД |
📦 LVM — Logical Volume Manager
LVM — система управления дисковыми разделами, которая делает их гибкими. Можно изменять размеры, объединять диски и добавлять новые — без остановки системы.
Физический диск или раздел: /dev/sda1, /dev/sdb
Группа PV — общий «пул» памяти
Логический раздел внутри VG — виден системе как обычный диск
💿 MBR и GPT
Прежде чем создать файловую систему, диск нужно разметить. Существуют два стандарта разметки: старый MBR и современный GPT.
Первый сектор диска (512 байт): загрузчик + таблица разделов.
⚠️ Ограничения:
- Максимум 4 основных раздела
- Максимальный размер раздела — 2 ТБ
- Таблица хранится в одном месте — риск повреждения
Часть стандарта UEFI. Современная замена MBR.
✅ Преимущества:
- До 128 разделов
- Диски свыше 9 зеттабайт
- Несколько копий таблицы разделов
- Контрольные суммы CRC32
🚀 Этапы загрузки Linux
Что происходит от нажатия кнопки питания до появления командной строки — 4 ключевых этапа.
BIOS: проверяет оборудование (POST), ищет загрузочный диск по MBR, передаёт управление загрузчику.
UEFI: современная замена BIOS. Поддерживает GPT, графический интерфейс, Secure Boot, быстрый старт. Ищет файл EFI/BOOT/BOOTX64.EFI.
GRUB (GNU GRand Unified Bootloader) — самый популярный загрузчик для Linux.
Показывает меню выбора ОС, загружает ядро в память и передаёт ему управление.
⚠️ Повреждённый GRUB = система не запустится. Восстанавливается через Live USB.
Ядро загружается в память, инициализирует оборудование (драйверы, прерывания), монтирует корневую файловую систему /.
Если ядро не способно найти / — ты увидишь «kernel panic».
systemd — современный менеджер запуска (PID 1). Монтирует остальные разделы (/home, /var), запускает все фоновые службы параллельно.
После завершения — появляется экран входа или командная строка.
Старый аналог: SysVinit (поочерёдный запуск служб — медленнее).
🏋️ Практические упражнения
Задания для закрепления материала. Выполняй на виртуальной машине (VM) или VPS.
Разметка дисков и файловые системы
Требования:
- Создайте 3 виртуальных диска (файла), объёмом по 1ГБ каждый.
- Разметьте созданные диски:
- Разметьте
disk1.imgв формате MBR, создайте один раздел и отформатируйте его в ext4. - Разметьте
disk2.imgв формате GPT, создайте два раздела: xfs и btrfs. - Используйте
partedдля гибкой разметки третьего диска (disk3.img).
- Разметьте
- Настройка файловой системы:
- (По возможности) на btrfs или ext4 измените настройки inodes или другие параменты, если ФС это позволяет.
- Выполните команды для проверки состояния файловой системы.
Показать решение
Ручное и автоматическое монтирование
Требования:
- Смонтируйте созданные разделы (из задания 1) в директории
/mnt/disk1,/mnt/disk2,/mnt/disk3. - Проверьте доступность дисков через
lsblkиdf -h. - Добавьте записи для каждого диска в файл
/etc/fstab. - Перезагрузите систему (или перемонтируйте всё) и проверьте, что диски автоматически монтируются.
Показать решение
Мониторинг места, поиск файлов и SMART
Требования:
- Выполните
df -hдля анализа свободного и занятого пространства. - Создайте несколько крупных файлов (например, 500 МБ, 700 МБ) и найдите их с помощью
du. - Установите и используйте
ncduдля интерактивного анализа использования пространства. - Проверьте состояние ваших реальных физических дисков (не loop-устройств) с помощью
smartctl.
Показать решение
Опции монтирования и квоты
Требования:
- Измените опции монтирования в
/etc/fstab. Настройте:- Только для чтения (
ro) - Без кеширования (
sync) - Ограничение выполнения скриптов/файлов (
noexec)
- Только для чтения (
- Включите поддержку квот на одном из дисков (опция
usrquota,grpquota). - Создайте тестового пользователя и назначьте ему квоту (например, 100МБ) через
edquota.
Показать решение
Скорость и отказоустойчивость
Требования:
- С помощью
ddвыполните тест скорости записи на каждую файловую систему. - Аналогично выполните тест скорости чтения.
- Создайте файлы на дисках и имитируйте аварийную загрузку: сбросьте кэш (
sync), выполните reboot (либо используйте SysRq комбинациюecho b > /proc/sysrq-trigger, однако это крашнет вашу машину - лучше проверьте обычным образом). Проверьте целостность дисковой ФС (fsck). - Используйте
iostatдля анализа метрик I/O при записи.