Этот конспект не сохранится

Закроешь вкладку — потеряешь. Зарегистрируйся — и он будет в библиотеке навсегда.

Telegram

Ваш конспект

YouTubeТехнологии программирования (продвинутый поток) 1. Linux filesystem

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

Ключевые тезисы:

  • Файловая система (ФС) — это компонент ОС, организующий хранение данных на носителях в виде иерархического дерева.
  • Основные задачи ФС: унифицированный доступ к разным носителям, стабильность, управление метаданными.
  • В Linux используется единое корневое дерево (/), к которому монтируются (подключаются) другие носители.
  • Данные между ОЗУ и устройствами хранения (особенно GPU) перемещаются дорого, важно эффективно использовать кэши.

🎯 Ключевые концепции

Монтирование (Mounting)

  • Монтирование — процесс подключения файловой системы физического носителя (диск, флешка, виртуальный файл) к определённому каталогу в дереве Linux.
  • Демонтирование (Unmounting) — отключение файловой системы от дерева.
  • Команда mount (без аргументов) показывает все текущие монтирования.
  • Команда mount <устройство> <путь> выполняет монтирование.
  • Команда umount <путь> выполняет демонтирование.

Пример создания и монтирования виртуальной ФС:

  1. Создать файл-носитель: dd if=/dev/zero of=mounted.xt4 bs=1M count=16
  2. Отформатировать файл в ФС (например, ext4): mkfs.ext4 mounted.xt4
  3. Создать точку монтирования: mkdir /mnt/example
  4. Смонтировать файл: 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 ссылается на данные:

  1. Прямые ссылки (12 штук) на блоки данных.
  2. Одноуровневая косвенная ссылка: inode → блок со ссылками → блоки данных.
  3. Двухуровневая косвенная ссылка: inode → блок-1 → блок-2 → блоки данных.
  4. Трёхуровневая косвенная ссылка.

Проверка целостности ФС:

  • Утилита 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:

  1. - — Обычный (регулярный) файл (regular file).
  2. d — Каталог (directory). Создание: mkdir.
  3. l — Символическая (мягкая) ссылка (symbolic link, symlink). Создание: ln -s <цель> <имя_ссылки>.
  4. p — Именованный канал (named pipe, FIFO). Создание: mkfifo.
  5. s — Сокет (socket).
  6. c — Символьное устройство (character device). Работает с потоками байтов (например, /dev/null, /dev/zero).
  7. 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. Очистка зависит от настроек дистрибутива.

🎯 Выводы

  1. Файловая система в Linux — это единое дерево, формируемое монтированием различных носителей.
  2. Структура ФС (на примере ext) основана на inode, связывающих метаданные файла с физическими блоками данных.
  3. Понимание типов файлов (особенно ссылок и специальных файлов устройств) критически важно для администрирования.
  4. Эффективная работа с ФС требует учёта стоимости операций ввода-вывода и правильного управления правами доступа.
🗂️ Файловые системы Linux: монтирование, inode и типы файлов — конспект на EchoNote