chkfsys
Проверка целостности всей
файловой системы QNX 4 (QNX)
Примечание. Эту утилиту может выполнить
только пользователь root.
Синтаксис:
При выполнении на QNX 4:
chkfsys
[-fpPqrsuvV] [-z файл_удаления] диск
При запуске на QNX Neutrino:
chkfsys
[-fpPqrsuvVx] [-z файл_удаления] точка_монтирования
или:
chkfsys
[-fpPqrsuvVx] [-z файл_удаления] -m диск
Поддерживаемые
платформы:
Neutrino
Опции:
-f
Ничего не исправлять.
-m
(Только QNX Neutrino.) Точка
монтирования отсутствует; указанный путь является непосредственно
устройством/разделом.
-p
Отобразить приглашение перед
запуском.
-P
Подавлять приглашения (т.е.
исправлять без вопросов).
-q
Режим вывода краткой
информации.
-r
Выполнить повторное
построение битовой карты без приглашений и сообщений.
-s
Подавлять отображение
статистики.
-u
Проверить файловую систему
вне зависимости от записанного на диске статуса.
-v
Вывести расширенную информацию. (По мере проверки
отображаются не только каталог, но и файлы. Значительно
замедляет выполнение утилиты chkfsys.)
-V
Вывести максимально
расширенную информацию.
-x
(Только QNX Neutrino.)
Завершить с подробными кодами ошибки; см. ниже.
-z файл_удаления
Записать
пути к файлам, которые требуется удалить, в указанный файл. Файл
файл_удаления должен находиться в файловой системе,
отличной от проверяемой.
диск
Подлежащий
проверке диск (например /dev/fd0, /dev/hd0t77).
точка_монтирования
(Только QNX
Neutrino.) Точка монтирования файловой системы диска (например /).
Описание:
Утилита chkfsys выполняет
проверку целостности файловой системы QNX 4 на указанном
диске. Утилита chkfsys не работает на
разделах диска, содержащих отличные от QNX файловые системы
(например разделы DOS, разделы QNX 2). Помимо этого утилита chkfsys должна иметь доступ к специальному
блочному файлу, в котором содержится файловая система. Поэтому
возможность использования утилиты chkfsys на смонтированных под NFS файловых
системах QNX отсутствует.
Примечание. Утилита chkfsys считает файловую систему
"Power-Safe" (fs- qnx6.so) поврежденной;
вместо нее следует использовать утилиту chkqnx6fs.
Для файловых
систем QNX, утилита chkfsys рекурсивно
проходит по файловой системе, проверяя каждый файл на диске.
Во время прохода выполняются проверки записи каталога для
каждого файла и составляющих файл экстентов. В памяти
создается битовая карта, отражающая выделение блоков для всех
файлов и каталогов на жестком диске. Затем эта битовая карта
сравнивается с существующей на диске. Если они отличаются, то
пользователю предоставляется выбор по замене существующего
растрового изображения на диске тем, которое создано в памяти.
По умолчанию
утилита chkfsys проверяет флаг
на диске, управление которым осуществляется файловой системой,
и который указывает утилите chkfsys на
необходимость выполнения проверки. Если флаг установлен,
утилита chkfsys выводит отчет
об отсутствии неполадок и немедленно завершает работу. При
надлежащем завершении работы системы, этот флаг всегда
устанавливается (кроме случаев возникновения ошибки в
процессе). При завершении работы системы с использованием
отключения питания, флаг может не быть установлен, в
зависимости от состояния файловой системы в этот момент. Опцию
-u можно
использовать для принудительного запуска утилиты chkfsys, даже если флаг установлен.
Внимание! Использование
утилиты chkfsys допускается
только в стабильной файловой системе. Во время работы утилиты
chkfsys не должно
остаться открытых для записи файлов. При выполнении каких-либо
операций восстановления необходимо повторно смонтировать
файловую систему; для этого драйвер диска следует
принудительно остановить и перезапустить.
Если
восстановление не выполняется (при использовании опции -f), допускается проведение
проверки файловой системы с открытыми файлами; однако в этом
случае отчеты могут быть противоречивыми.
Утилита chkfsys обычно используется для
восстановления блоков, потерянных в результате использования
утилиты zap. Если
применялась утилита zap, утилита chkfsys выводит отчет о наличии блоков,
присутствующих в битовой карте, но которые фактически не используются
каким-либо файлом. Эти блоки можно восстановить путем записи
восстановленного растрового изображения обратно на диск.
Утилита chkfsys предпринимает
попытки чтения каждого из этих блоков, но не отмечает
поврежденные блоки в качестве доступных. Каждый обнаруженный
таким образом блок добавляется в файл /.bad_blks в корневом каталоге
проверяемой файловой системы.
Утилита chkfsys выводит отчет об использовании
файлами поврежденных блоков.
Сообщение
утилиты chkfsys об
использовании блока несколькими файлами может указывать на
одну из двух следующих проблем:
-
Если поврежденные блоки существуют, то
это сообщение означает, что файлом используется поврежденный
блок, который в битовой карте отмечен как используемый.
-
Если известных поврежденных блоков не
существует, значит выполнено многократное выделение одного
из блоков.
В любом случае файл необходимо сохранить на другой диск (если
возможно), а исходный файл – удалить с помощью утилиты zap. Затем для обновления битовой карты
следует повторно запустить утилиту chkfsys, после чего сохраненный файл можно
восстановить на этот диск.
Как правило,
при каждой замене битовой карты необходимо повторно запускать
утилиту chkfsys для обеспечения
действительной непротиворечивости файловой системы. Для этого
необходимо указать опцию -u.
Опция -f (без исправления) не
позволяет утилите chkfsys предпринимать
попытки выполнения восстановления файловой системы. Жесткий
диск открывается только для чтения, но не для записи. Эта
опция позволяет пользователю проверить файловую систему без
необходимости прекращения использования диска или файловой
системы другими пользователями. Однако следует обратить
внимание на то, что опция -f может сообщать
о фактически несуществующих ошибках (если во время работы
утилиты chkfsys другие
пользователи открывают, закрывают или увеличивают размер
файлов). Даже в этом случае, использование этой опции может
быть целесообразным на объектах, которые работают
круглосуточно, если оператор системы тщательно анализирует
результаты. При отображении ошибок, которые могли возникнуть в
результате текущей активности, запустите утилиту chkfsys повторно с опцией -f для проверки ошибок. Если
обнаружены требующие исправления ошибки, то необходимо
перевести систему в неактивный режим и запустить утилиту chkfsys без опции -f.
Опция -p (пауза) используется прежде
всего с гибкими дисками. Утилиту chkfsys можно запустить с гибкого диска,
дождаться паузы в работе chkfsys, извлечь
текущий диск (который содержит утилиту chkfsys), а затем вставить другой диск,
который необходимо проверить.
Опция -q (вывод краткой информации)
подавляет отображение каждого имени файла во время проверки
файла. Использование этой опции значительно ускоряет проверку,
без потери информации, поскольку утилита chkfsys выводит все имена файлов, в
которых есть ошибки.
Опция -r (повторное построение)
подавляет предупреждающее сообщение, которое обычно появляется
в конце выполнения утилиты chkfsys, если
существующая битовая карта отличается от вновь созданной
битовой карты в памяти. Если указана опция -r, утилита chkfsys автоматически выполняет повторное
построение битовой карты. Следует отметить, что эта опция не
действует вместе с опцией -f (без
исправления).
Опция -s (без статистики) отключает
отображение статистики, которая обычно выводится в конце
выполнения утилиты chkfsys.
Опция -v (режим вывода расширенной
информации) используется для отображения информации о
проверке.
Опция -P (без приглашения) приводит к
автоматическому исправлению возникших проблем утилитой chkfsys без запросов подтверждения
пользователя перед каждым исправлением. Однако возможны
серьезные ошибки (ошибка ввода- вывода диска или повреждение
каталога высокого уровня), для которых исправлением может
служить удаление каталога (и всех его иерархии/содержимого).
Подобные действия не предпринимаются без подтверждения
пользователя. В такой ситуации опция - P выведет сообщение об ошибке
и завершит работу утилиты. При необходимости автоматического
продолжения работы утилиты chkfsys при любых
обстоятельствах можно указать опцию "-PP".
Опция -z файл_удаления используется
для записи в указанном файле имен файлов, которые необходимо
удалить по завершении работы утилиты chkfsys. Файл файл_удаления должен
находиться в файловой системе, отличной от проверяемой. Если
файл использует дисковое пространство, выделенное для другого
файла или отмеченное в битовой карте как поврежденное, такой
файл необходимо удалить и повторно запустить утилиту chkfsys.
Сбой
питания
Утилиту chkfsys также можно запустить после
полного отказа системы или сбоя питания, в результате чего
некоторые файлы могли остаться занятыми. Утилита "освобождает"
файлы, а также проверяет наличие повреждений файловой системы.
Система QNX спроектирована таким образом, чтобы быть
устойчивой к этому виду повреждения.
В случае
потери файловой системы вследствие повреждения корневого
каталога и битовой карты (несколько начальных блоков на диске)
для получения информации о методах инициализации именно этих
частей диска см. руководство по системной архитектуре QNX
Neutrino и документацию по утилите dinit. Если повреждены только корневой
блок и битовая карта, то в большинстве случаев с помощью
утилиты chkfsys эти файлы можно
восстановить. Если поврежден корневой каталог и файл
индексного дескриптора (следующие области диска), то
восстановление возможно с помощью утилит dinit, spatch и chkfsys. Следует отметить, что такое
восстановление требует глубокого знания структуры файловой
системы. В этом случае большинству пользователей рекомендуется
просто восстановить потерянные файлы из резервной копии.
Вероятность столкновения с такими проблемами очень мала;
подобные события возникают крайне редко, но авторы настоящего
документа постарались их предусмотреть.
Примеры:
Проверка файловой системы в
разделе QNX жесткого диска:
chkfsys /hd
Проверка файловой системы QNX, смонтированной в
качестве корневого каталога (/) и
автоматически выполнить повторное построение битовой карты:
chkfsys -rs /
Статус завершения:
Статус
завершения зависит от того, указана ли опция -x.
-
Если опция -x не указана, то статус
завершения имеет следующий вид:
0
Проверка файловой системы
(файловых систем) выполнена.
Внимание! Нулевой статус завершения
не указывает на отсутствие
проблем в файловой системе (файловых системах). Он
указывает только на отсутствие внутренних неисправимых
ошибок утилиты chkfsys.
>0
Невозможно
выполнить проверку файловой системы (файловых систем).
Работа chkfsys могла быть
прервана по требованию пользователя или вследствие
возникновения внутренней ошибки (например недостатка
памяти).
-
Если указана опция -x, то младший бит кода
ошибки указывает на то, были ли выполнены исправления, в
то время как четыре старших бита (если они отличны от
нуля) определяют причину сбоя:
0x00
Файловая система не содержит ошибок;
действия не требовались.
0x01
Данные жесткого диска были исправлены.
0x10
Недостаток памяти.
0x20
Общий отказ программы.
0x30
Ошибка запроса файловой системы.
0x40
Ошибка чтения с устройства.
0x50
Ошибка записи на устройство.
0x60
Обнаружено, но не исправлено повреждение
файловой системы.
