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

Различия

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

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

Следующая версия
Предыдущая версия
notes:howlinuxworks:vol4 [2026/05/13 16:39] – создано radi0devnotes:howlinuxworks:vol4 [2026/05/13 17:30] (текущий) radi0dev
Строка 504: Строка 504:
 </code> </code>
  
-===== 4.2.11 Проверка и восстановление файловых систем =====+==== 4.2.11 Проверка и восстановление файловых систем ====
  
 Файловые системы Unix требуют периодической проверки на ошибки, возникающие из-за физических проблем оборудования и некорректного выключения системы (отключение питания). При неправильном отключении кэш ФС в памяти может не совпадать с данными на диске. Несмотря на поддержку журналирования, правильное завершение системы критично. Файловые системы Unix требуют периодической проверки на ошибки, возникающие из-за физических проблем оборудования и некорректного выключения системы (отключение питания). При неправильном отключении кэш ФС в памяти может не совпадать с данными на диске. Несмотря на поддержку журналирования, правильное завершение системы критично.
Строка 529: Строка 529:
 При подозрении на серьезные ошибки используйте **fsck -n** для проверки без изменений. Если проблема с суперблоком: **fsck -b num** - восстановление из резервной копии. Для просмотра номеров резервных суперблоков: **mkfs -n /dev/device**. При подозрении на серьезные ошибки используйте **fsck -n** для проверки без изменений. Если проблема с суперблоком: **fsck -b num** - восстановление из резервной копии. Для просмотра номеров резервных суперблоков: **mkfs -n /dev/device**.
  
-==== Проверка ext3 и ext4 ====+=== Проверка ext3 и ext4 ===
  
 Журнал обеспечивает целостность данных, поэтому ручная проверка обычно не требуется. Для сброса журнала: Журнал обеспечивает целостность данных, поэтому ручная проверка обычно не требуется. Для сброса журнала:
Строка 539: Строка 539:
 Повреждённую ФС можно смонтировать в режиме ext2. Повреждённую ФС можно смонтировать в режиме ext2.
  
-==== Наихудший случай ====+=== Наихудший случай ===
  
 При серьезных проблемах: При серьезных проблемах:
Строка 549: Строка 549:
  
 Если резервных копий нет - обратитесь к профессиональным сервисам восстановления данных. Если резервных копий нет - обратитесь к профессиональным сервисам восстановления данных.
 +
 +==== 4.2.12 Файловые системы специального назначения ====
 +
 +Не все ФС хранят данные на физических носителях. Многие служат системными интерфейсами, предоставляя информацию о процессах, ядре и оборудовании. Эта идея восходит к /dev и /proc механизмам Unix.
 +
 +^ ФС ^ Точка монтирования ^ Назначение ^
 +| **proc** | /proc | Информация о процессах и ядре. Нумерованные каталоги соответствуют PID, /proc/self - текущему процессу. Содержит /proc/cpuinfo и прочие данные оборудования (передаются в /sys) |
 +| **sysfs** | /sys | Системная информация устройств (см. глава 3) |
 +| **tmpfs** | /run и др. | Временное хранилище в памяти и swap. Параметры: size, nr_blocks. Осторожно: переполнение памяти вызовет сбои |
 +| **squashfs** | /snap и др. | Read-only ФС со сжатым содержимым, извлекаемым по требованию. Используется snap-пакетами |
 +| **overlay** | контейнеры | Объединяет каталоги в составную систему. Применяется в контейнеризации (глава 17) |
 +
 +
 +===== 4.3 Область подкачки swap =====
 +
 +Раздел диска используется не только для ФС, но и для расширения оперативной памяти. Система виртуальной памяти Linux автоматически перемещает неактивные страницы памяти на диск (подкачка). Область диска для этого называется **swap** (подкачка).
 +
 +Просмотр использования swap:
 +
 +<code bash>
 +$ free
 +total used free
 +Swap: 514072 189804 324268
 +</code>
 +
 +==== Раздел диска как область подкачки ====
 +
 +^ Шаг ^ Команда ^ Описание ^
 +| 1 | - | Убедиться, что раздел пуст |
 +| 2 | mkswap /dev/xxx | Поместить сигнатуру swap на раздел |
 +| 3 | swapon /dev/xxx | Активировать область в ядре |
 +
 +Для автоматической активации при загрузке добавьте в /etc/fstab:
 +
 +<code>
 +/dev/sda5 none swap sw 0 0
 +</code>
 +
 +Или с UUID:
 +
 +<code>
 +UUID=xxxx-xxxx none swap sw 0 0
 +</code>
 +
 +==== Файл как область подкачки ====
 +
 +При необходимости используйте обычный файл вместо раздела:
 +
 +<code bash>
 +# dd if=/dev/zero of=swap_file bs=1024k count=num_mb
 +# mkswap swap_file
 +# swapon swap_file
 +</code>
 +
 +Для деактивации используйте **swapoff** (требуется свободная память в других областях).
 +
 +==== Определение размера области подкачки ====
 +
 +Классическое правило: swap = 2 × RAM. Однако это зависит от использования:
 +
 +  * **Многопользовательские системы**: swap = 2 × RAM - перемещение памяти неактивных пользователей
 +  * **Однопользовательские системы**: зависит от количества одновременно активных процессов
 +  * **Серверы с высокой нагрузкой**: swap минимален или отсутствует (избежать дисковых операций)
 +
 +**Частое обращение к swap** вызывает критическое падение производительности (диск медленнее памяти).
 +
 +**На компьютере общего назначения** swap необходима. Без неё при исчерпании памяти ядро запускает [[glossary:gnu_linux:oom_killer|OOM Killer]], убивая процессы. На серверах с мониторингом и балансировкой нагрузки это предотвращается архитектурно.
 +
 +Подробнее о виртуальной памяти - глава 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).