Файловые системы в Linux
Ключевые тезисы:
- Файловая система (ФС) — это компонент ОС, организующий хранение данных на носителях в виде иерархического дерева.
- Основные задачи ФС: унифицированный доступ к разным носителям, стабильность, управление метаданными.
- В Linux используется единое корневое дерево (
/), к которому монтируются (подключаются) другие носители. - Данные между ОЗУ и устройствами хранения (особенно GPU) перемещаются дорого, важно эффективно использовать кэши.
Ключевые концепции
Монтирование (Mounting)
- Монтирование — процесс подключения файловой системы физического носителя (диск, флешка, виртуальный файл) к определённому каталогу в дереве Linux.
- Демонтирование (Unmounting) — отключение файловой системы от дерева.
- Команда
mount(без аргументов) показывает все текущие монтирования. - Команда
mount <устройство> <путь>выполняет монтирование. - Команда
umount <путь>выполняет демонтирование.
Пример создания и монтирования виртуальной ФС:
- Создать файл-носитель:
dd if=/dev/zero of=mounted.xt4 bs=1M count=16 - Отформатировать файл в ФС (например, ext4):
mkfs.ext4 mounted.xt4 - Создать точку монтирования:
mkdir /mnt/example - Смонтировать файл:
mount -o loop mounted.xt4 /mnt/exampleТеперь все операции в
/mnt/exampleбудут записываться в файлmounted.xt4.
Структура файловой системы
Иерархия в Linux vs Windows
- Windows: Множество корней (диски
C:,D:и т.д.). - Linux: Единый корень
/. Все носители монтируются в подкаталоги этого дерева.
Псевдофайловые системы (Pseudo Filesystems)
procfs(/proc): Представляет информацию о запущенных процессах и состоянии ядра в виде файлов.sysfs(/sys): Представляет информацию об оборудовании и драйверах.tmpfs: Располагается в оперативной памяти (RAM) или в swap-файле. Данные теряются после перезагрузки.
Swap-файл
- Swap-файл — это область на жёстком диске, используемая как расширение оперативной памяти.
- Используется, когда физической RAM не хватает.
Устройство файловой системы ext (ext2/3/4)
Основные понятия:
- Суперблок (Superblock): Хранит метаинформацию о всей файловой системе (размер, количество inode и т.д.).
- Группа блоков (Block Group): Диск разбивается на группы для ускорения доступа и уменьшения фрагментации.
- Inode (Index Node):
Ключевая структура! Хранит метаданные файла (права, владелец, размер, временные метки) и указатели на блоки данных с содержимым файла. - Блок данных (Data Block): Элементарная единица хранения информации (обычно 4 КБ).
Как inode ссылается на данные:
- Прямые ссылки (12 штук) на блоки данных.
- Одноуровневая косвенная ссылка: inode → блок со ссылками → блоки данных.
- Двухуровневая косвенная ссылка: inode → блок-1 → блок-2 → блоки данных.
- Трёхуровневая косвенная ссылка.
Проверка целостности ФС:
- Утилита
fsck(File System Consistency Check).
Полезные команды для работы с ФС
df(disk free): Показывает свободное место на смонтированных файловых системах.df -h— вывод в удобочитаемом формате (ГБ, МБ).
du(disk usage): Оценивает использование дискового пространства файлами и каталогами.du -sh <путь>— суммарный размер указанного каталога.
stat: Показывает детальную информацию о файле (inode, размер, права и т.д.).ls -i: Показывает номер inode для каждого файла в каталоге.
Типы файлов в Linux
В Linux существует 7 типов файлов, определяемых первым символом в выводе ls -l:
-— Обычный (регулярный) файл (regular file).d— Каталог (directory). Создание:mkdir.l— Символическая (мягкая) ссылка (symbolic link, symlink). Создание:ln -s <цель> <имя_ссылки>.p— Именованный канал (named pipe, FIFO). Создание:mkfifo.s— Сокет (socket).c— Символьное устройство (character device). Работает с потоками байтов (например,/dev/null,/dev/zero).b— Блочное устройство (block device). Работает с блоками данных (например, жёсткие диски/dev/nvme*,/dev/sd*).
Ссылки: Hardlink vs Symlink
| Характеристика | Жёсткая ссылка (Hardlink) | Символическая ссылка (Symlink) |
|---|---|---|
| Создание | ln <цель> <имя_ссылки> |
ln -s <цель> <имя_ссылки> |
| Inode | Совпадает с исходным файлом. | Имеет собственный inode. |
| После удаления цели | Данные остаются доступны по ссылке (счётчик ссылок в inode уменьшается). | Ссылка становится "битой" (broken). |
| Межфайловая система | Невозможно создать между разными ФС. |
Можно создать на любой путь. |
| Сущность | Дополнительное имя для тех же данных на диске. | Файл, содержащий путь к цели. |
Важные особенности и примечания
- Стики-бит (Sticky bit,
t):- Устанавливается на каталог (например,
/tmp). - Разрешает удаление/переименование файла в каталоге только его владельцу, владельцу каталога или root.
- Устанавливается на каталог (например,
- Отложенная запись (Delayed allocation):
- Механизм для уменьшения износа SSD. Изменения сначала накапливаются в RAM, а затем записываются на диск пачками.
Важно: Для корректного завершения работы используйте shutdownилиreboot, а не принудительное выключение.
- Временные файлы:
- Для создания временных файлов и каталогов используйте
mktempиmktemp -d. Очистка зависит от настроек дистрибутива.
- Для создания временных файлов и каталогов используйте
Выводы
- Файловая система в Linux — это единое дерево, формируемое монтированием различных носителей.
- Структура ФС (на примере ext) основана на inode, связывающих метаданные файла с физическими блоками данных.
- Понимание типов файлов (особенно ссылок и специальных файлов устройств) критически важно для администрирования.
- Эффективная работа с ФС требует учёта стоимости операций ввода-вывода и правильного управления правами доступа.
Невозможно создать между разными ФС.
Можно создать на любой путь.