мета-данные страницы
  •  

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
notes:howlinuxworks:vol4 [2026/05/13 17:04] radi0devnotes:howlinuxworks:vol4 [2026/05/13 17:30] (текущий) radi0dev
Строка 555: Строка 555:
  
 ^ ФС ^ Точка монтирования ^ Назначение ^ ^ ФС ^ Точка монтирования ^ Назначение ^
-| **proc** | /proc | Информация о процессах и ядре. Нумерованные каталоги соответствуют PID, /proc/self — текущему процессу. Содержит /proc/cpuinfo и прочие данные оборудования (передаются в /sys) |+| **proc** | /proc | Информация о процессах и ядре. Нумерованные каталоги соответствуют PID, /proc/self текущему процессу. Содержит /proc/cpuinfo и прочие данные оборудования (передаются в /sys) |
 | **sysfs** | /sys | Системная информация устройств (см. глава 3) | | **sysfs** | /sys | Системная информация устройств (см. глава 3) |
 | **tmpfs** | /run и др. | Временное хранилище в памяти и swap. Параметры: size, nr_blocks. Осторожно: переполнение памяти вызовет сбои | | **tmpfs** | /run и др. | Временное хранилище в памяти и swap. Параметры: size, nr_blocks. Осторожно: переполнение памяти вызовет сбои |
Строка 577: Строка 577:
  
 ^ Шаг ^ Команда ^ Описание ^ ^ Шаг ^ Команда ^ Описание ^
-| 1 | — | Убедиться, что раздел пуст |+| 1 | | Убедиться, что раздел пуст |
 | 2 | mkswap /dev/xxx | Поместить сигнатуру swap на раздел | | 2 | mkswap /dev/xxx | Поместить сигнатуру swap на раздел |
 | 3 | swapon /dev/xxx | Активировать область в ядре | | 3 | swapon /dev/xxx | Активировать область в ядре |
Строка 609: Строка 609:
 Классическое правило: swap = 2 × RAM. Однако это зависит от использования: Классическое правило: swap = 2 × RAM. Однако это зависит от использования:
  
-  * **Многопользовательские системы**: swap = 2 × RAM — перемещение памяти неактивных пользователей+  * **Многопользовательские системы**: swap = 2 × RAM перемещение памяти неактивных пользователей
   * **Однопользовательские системы**: зависит от количества одновременно активных процессов   * **Однопользовательские системы**: зависит от количества одновременно активных процессов
   * **Серверы с высокой нагрузкой**: swap минимален или отсутствует (избежать дисковых операций)   * **Серверы с высокой нагрузкой**: swap минимален или отсутствует (избежать дисковых операций)
Строка 617: Строка 617:
 **На компьютере общего назначения** swap необходима. Без неё при исчерпании памяти ядро запускает [[glossary:gnu_linux:oom_killer|OOM Killer]], убивая процессы. На серверах с мониторингом и балансировкой нагрузки это предотвращается архитектурно. **На компьютере общего назначения** swap необходима. Без неё при исчерпании памяти ядро запускает [[glossary:gnu_linux:oom_killer|OOM Killer]], убивая процессы. На серверах с мониторингом и балансировкой нагрузки это предотвращается архитектурно.
  
-Подробнее о виртуальной памяти — глава 8.+Подробнее о виртуальной памяти глава 8. 
 + 
 +===== 4.4 Менеджер логических томов LVM ===== 
 + 
 +[[soft:lvm|Гайд по пользованию LVM]] 
 + 
 +Прямое управление разделами затруднено при изменении конфигурации после установки. Добавление диска требует переразбиения, переноса данных и перезагрузок. **LVM** (Logical Volume Manager) решает эту проблему добавлением слоя абстракции между физическими устройствами и файловыми системами. 
 + 
 +==== Компоненты LVM ==== 
 + 
 +^ Компонент ^ Описание ^ 
 +| **Physical Volume (PV)** | Физический блочный диск или раздел (/dev/sda1, /dev/sdb и т. д.) | 
 +| **Volume Group (VG)** | Общий пул, созданный из одного или нескольких PV | 
 +| **Logical Volume (LV)** | Виртуальный блочный диск, выделяемый из VG. На LV размещаются ФС или swap | 
 + 
 +Логические тома действуют аналогично разделам на физическом диске, но размещение управляет LVM, а не пользователь. 
 + 
 +===== 4.6 Что находится внутри традиционной файловой системы ===== 
 + 
 +Традиционная ФС Unix состоит из двух компонентов: 
 +  * **Пул блоков данных** - хранилище информации 
 +  * **Система БД на основе inode** - управление пулом данных 
 + 
 +**inode** - структура данных, описывающая файл: тип, права доступа, расположение в пуле. Идентифицируются номерами в таблице inode. 
 + 
 +**Каталоги** - тоже inode, содержащие список имен файлов и ссылки на другие inode. 
 + 
 +**Пример структуры:** 
 +<code bash> 
 +mkdir dir_1 dir_2 
 +echo a > dir_1/file_1 
 +echo b > dir_1/file_2 
 +echo c > dir_1/file_3 
 +echo d > dir_2/file_4 
 +ln dir_1/file_3 dir_2/file_5  # жесткая ссылка 
 +</code> 
 + 
 +**Разрешение пути** (например ''dir_1/file_2''): 
 + 
 +^ Шаг ^ Действие ^ 
 +| 1 | Парсинг пути: компоненты ''dir_1'' и ''file_2''
 +| 2 | Переход по корневому inode (2) к данным каталога | 
 +| 3 | Поиск ''dir_1'' в inode 2 → указывает на inode 12 | 
 +| 4 | Проверка inode 12: это каталог | 
 +| 5 | Переход по inode 12 к его данным каталога | 
 +| 6 | Поиск ''file_2'' в inode 12 → указывает на inode 14 | 
 +| 7 | Проверка inode 14: это файл, доступ разрешен | 
 + 
 +**Специальные записи каталогов:** 
 +  * ''.'' - текущий каталог (ссылка на себя) 
 +  * ''..'' - родительский каталог (кроме корневого) 
 + 
 +{{:notes:howlinuxworks:pic_4.10.png|Структура дескрипторов файловой системы}} 
 + 
 +==== 4.6.1 Сведения о дескрипторе и количество ссылок ==== 
 + 
 +Для просмотра дескриптора используйте ''ls -i'' или ''stat''
 + 
 +**Link count** - общее количество записей каталога, указывающих на дескриптор. 
 + 
 +| Операция | Действие | 
 +| Создание файла | Новая запись каталога + новый дескриптор | 
 +| Жесткая ссылка | Вручную созданная запись на существующий дескриптор (''ln'' без ''-s'') | 
 +| Удаление файла | Удаление ссылки: счетчик −1, при 0 дескриптор удаляется | 
 + 
 +При удалении ''rm file'': ядро находит запись каталога, уменьшает счетчик. Если ''rm dir_1/file_3'', счетчик inode 15 = 2→1 (т.к. ''dir_2/file_5'' еще указывает на него) - дескриптор остается. 
 + 
 +Для каталогов: счетчик включает саму папку (.), родительскую (..) и все подкаталоги. Корневой inode имеет +1 ссылку в суперблоке. 
 + 
 +==== 4.6.2 Распределение блоков ==== 
 + 
 +**Block bitmap** (битовая карта) - каждый бит = один блок: 
 +  * 0 = свободен 
 +  * 1 = используется 
 + 
 +Проблемы возникают при рассинхронизации дескрипторов и распределения блоков (некорректное выключение). Программа ''fsck'': 
 + 
 +<code bash> 
 +# Проверяет и восстанавливает 
 +fsck /dev/device 
 +</code> 
 + 
 +Процесс: сканирование таблицы дескрипторов → генерация новых счетчиков и битовой карты → сравнение с диском → исправление → «осиротевшие» файлы в ''lost+found''
 + 
 +==== 4.6.3 Работа с файловыми системами в пользовательском пространстве ==== 
 + 
 +Процессы доступ получают через системные вызовы ядра (''stat()'' возвращает inode и счетчики). 
 + 
 +Данные доступны в основном для обратной совместимости. Не все ФС имеют inode: 
 + 
 +| Файловая система | Жесткие ссылки | Примечание | 
 +| ext4 | Да | Традиционная UNIX ФС | 
 +| VFAT | Нет | ''ln'' не работает | 
 +| VFS (абстракция) | Условно | Возвращает значения, не всегда значимые | 
 + 
 +Системные вызовы Linux обеспечивают достаточную абстракцию - знать о дескрипторах не обязательно. Поддержка ФС может быть в ядре или пользовательском пространстве (FUSE).