Целостность файловой системы
Целостность файловой системы
Значительная часть файловой системы находится в оперативной памяти. А именно, в оперативной памяти расположены суперблок примонтированной системы, метаданные активных файлов (в виде системно-зависимых inode и соответствующих им vnode) даже отдельные блоки хранения данных файлов, временно находящиеся в буферном кэше.
Для операционной системы рассогласование между буферным кэшем и блоками хранения данных отдельных файлов, не приведет к катастрофическим последствиям даже в случае внезапного останова системы, хотя с точки зрения пользователя все может выглядеть иначе. Содержимое отдельных файлов не вносит существенных нарушений в целостность файловой системы.
Другое дело, когда подобные несоответствия затрагивают метаданные файла или другую управляющую информацию файловой системы, например, суперблок. Многие файловые операции затрагивают сразу несколько объектов файловой системы, и если на диске будут сохранены изменения только для части этих объектов, целостность файловой системы может быть существенно нарушена.
Рассмотрим пример создания жесткой связи для файла. Для этого файловой подсистеме необходимо выполнить следующие операции:
1. Создать новую запись в необходимом каталоге, указывающую на inode файла.
2. Увеличить счетчик связей в inode.
Предположим, что аварийный останов системы произошел между первой и второй операциями. В этом случае после запуска в файловой системе будут существовать два имени файла (две записи каталогов), адресующие inode со счетчиком связей di_nlinks, равным 1. Эта ситуация показана на рис. 4.15 (а). Если теперь будет удалено одно из имен, это приведет к удалению файла как такового, т.е. к освобождению блоков хранения данных и inode, поскольку счетчик связей di_nlinks станет равным 0. Оставшаяся запись каталога будет указывать на неразмещенный индексный дескриптор, или inode, адресующий уже другой файл (рис. 4.15, б).
Порядок операций с метаданными может иметь существенное влияние на целостность файловой системы. Рассмотрим, например, предыдущий пример. Допустим, порядок операций был изменен и, как и прежде, останов произошел между первой и второй операциями. После запуска системы файл будет иметь лишнюю жесткую связь, но существующая запись каталога останется правильной. Тем не менее при удалении имени файла фактически файл удален не будет, поскольку число связей останется равным 1 (рис. 4.15, в). Хотя это также является ошибкой, результатом которой является засорение дискового пространства, ее последствия все же менее катастрофичны, чем в первом случае.
Рис. 4.15. Нарушение целостности файловой системы
Ядро выбирает порядок совершения операций с метаданными таким образом, чтобы вред от ошибок в случае аварии был минимальным. Однако проблема нарушения этого порядка все же остается, т.к. драйвер может изменять очередность выполнения запросов для оптимизации ввода/вывода. Единственной возможностью сохранить выбранный порядок является синхронизация операций со стороны файловой подсистемы.
В нашем примере файловая подсистема будет ожидать, пока на диск не будет записано содержимое индексного дескриптора, и только после этого произведет изменения каталога.
Отсутствие синхронизации между образом файловой системы в памяти и ее данными на диске в случае аварийного останова может привести к появлению следующих ошибок:
1. Один блок адресуется несколькими mode (принадлежит нескольким файлам).
2. Блок помечен как свободный, но в то же время занят (на него ссылается onode).
3. Блок помечен как занятый, но в то же время свободен (ни один inode на него не ссылается).
4. Неправильное число ссылок в inode (недостаток или избыток ссылающихся записей в каталогах).
5. Несовпадение между размером файла и суммарным размером адресуемых inode блоков.
6. Недопустимые адресуемые блоки (например, расположенные за пределами файловой системы).
7. "Потерянные" файлы (правильные inode, на которые не ссылаются записи каталогов).
8. Недопустимые или неразмещенные номера inode в записях каталогов. Эти ошибки схематически показаны на рис. 4.16.
Рис. 4.16. Возможные ошибки файловой системы
Если нарушение все же произошло, на помощь может прийти утилита fsck(1M), производящая исправление файловой системы. Запуск этой утилиты может производиться автоматически каждый раз при запуске системы, или администратором, с помощью команды:
fsck [options] filesystem
где filesystem — специальный файл устройства, на котором находится файловая система.
Проверка и исправление должны производиться только на размонтированной файловой системе. Это связано с необходимостью исключения синхронизации таблиц в памяти (ошибочных) с их дисковыми эквивалентами (исправленными). Исключение составляет корневая файловая система, которая не может быть размонтирована. Для ее исправления необходимо использовать опцию обеспечивающую немедленный перезапуск системы после проведения проверки.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Уровень обобщенной файловой системы
Уровень обобщенной файловой системы Общий интерфейс для всех типов файловых систем возможен только благодаря тому, что в ядре реализован обобщающий уровень, который скрывает низкоуровневый интерфейс файловых систем. Данный обобщающий уровень позволяет операционной
10.2.3. Идентификатор uid файловой системы
10.2.3. Идентификатор uid файловой системы В очень специальных случаях программе может понадобиться сохранять свои права root для всего, кроме доступа к файловой системе, при котором она использует пользовательский uid. Изначально использовавшийся в Linux NFS-сервер пространства
Монтирование файловой системы
Монтирование файловой системы Прежде чем может состояться работа с файлами, соответствующая файловая система должна быть встроена в существующее иерархическое дерево.Только после этого ядро сможет выполнять файловые операции, такие как создание, открытие, чтение или
Целостность файловой системы
Целостность файловой системы Значительная часть файловой системы находится в оперативной памяти. А именно, в оперативной памяти расположены суперблок примонтированной системы, метаданные активных файлов (в виде системно-зависимых inode и соответствующих им vnode) даже
5.14.2 Демонтирование файловой системы
5.14.2 Демонтирование файловой системы Синтаксис вызова системной функции umount:umount(special filename);где special filename указывает демонтируемую файловую систему. При демонтировании файловой системы (Рисунок 5.27) ядро обращается к индексу демонтируемого устройства, восстанавливает
5.18 СОПРОВОЖДЕНИЕ ФАЙЛОВОЙ СИСТЕМЫ
5.18 СОПРОВОЖДЕНИЕ ФАЙЛОВОЙ СИСТЕМЫ Ядро поддерживает целостность системы в своей обычной работе. Тем не менее, такие чрезвычайные обстоятельства, как отказ питания, могут привести к фатальному сбою системы, в результате которого содержимое системы утрачивает свою
4.13. Обслуживание файловой системы
4.13. Обслуживание файловой системы Обслуживание файловой системы в ОС Linux сводится к двум операциям:1. Проверка.2. Дефрагментация.Проверка и восстановление файловой системы Linux выполняется программой fsck. Перед проверкой файловая система должна быть смонтирована в режиме
2.1. Видимая сторона файловой системы
2.1. Видимая сторона файловой системы С точки зрения пользователя, файловая система — это логическая структура каталогов и файлов. В отличие от Windows, где каждый логический диск хранит отдельное дерево каталогов, во всех UNIX-подобных системах эта древовидная структура
2.2. Изнанка файловой системы
2.2. Изнанка файловой системы С точки зрения операционной системы, под файловой системой понимается внутренняя управляющая структура, заведующая хранением данных на физическом носителе, их поиском, извлечением и записью по запросам программ. Такие управляющие структуры
20.4.1. Параметры корневой файловой системы
20.4.1. Параметры корневой файловой системы ? root=устройство: указывает устройство, на котором находится корневая файловая система. В качестве устройства допустимо указывать:/dev/hdaN … /dev/hddN — для IDE-дисков:/dev/sdaN … /dev/sdeN — для SCSI-дисков;/dev/xdaN … /dev/xdbN — для XT-совместимых
4.2.4. Проверка файловой системы
4.2.4. Проверка файловой системы Для проверки файловой системы используется программа fsck (сокращение от file system check). С помощью данной программы вы можете проверить не только файловые системы Linux, но и Windows-разделы (только vfat). Единственное требование - перед началом проверки
Ускорение файловой системы
Ускорение файловой системы Можно ускорить действие файловой системы, (если позволяет оперативная память) увеличив параметр типа DWORD °IoPageLockLimit° от заданных по умолчанию 512 КБ до 4 МБ и более в разделе HKLMSYSTEMCurrentControlSetControlSession ManagerMemory ManagementЭтот параметр представляет
Выбор файловой системы
Выбор файловой системы Файловая система необходима для систематизации файлов и управления ими. Термин FAT образовался от начальных букв словосочетания File Allocation Table (таблица размещения файлов). Файловая система создается при форматировании жесткого диска, который может
6.6.1. Назначение и функционирование файловой системы
6.6.1. Назначение и функционирование файловой системы В операционных системах файловая система относится к основным понятиям и определяется как общая система, которая устанавливает правила присвоения имен файлам, хранение, организацию и обработку файлов на носителях
Дефрагментация файловой системы
Дефрагментация файловой системы При интенсивной работе на компьютере пользователю часто приходится создавать, копировать, перемещать, удалять большое количество файлов, кроме того, сама операционная система создает и удаляет много временных файлов. Вскоре это может