ГЛАВА 5 УПРАВЛЕНИЕ ФАЙЛОВОЙ СИСТЕМОЙ КАК ПРОВЕРИТЬ КОРРЕКТНОСТЬ ФАЙЛОВОЙ СИСТЕМЫ При запуске операционной системы UNIX ВСЕГДА проверяйте коррек- тность файловых систем. На большинстве машин, работающих в сис- теме UNIX, эта проверка выполняется автоматически, как часть процесса перехода в многопользовательский режим. Если Вы рабо- таете в однопользовательском режиме, то ВСЕГДА проверяйте фай- ловые системы после процедуры загрузки; Вы ОБЯЗАНЫ выполнить проверку файловой системы, если в процессе запуска получено со- общение "File system corrupted" ("Файловая система испорчена")! Можно воспользоваться командой fsstat(1), которая для каждой файловой системы на жестком диске выдает код, показывающий, нужно ли запустить программу fsck(1M) для проверки корректности и исправления. Эту же команду, или sysadm checkfsys следует использовать и для проверки тех файловых систем, которые не монтируются автомати- чески в процессе включения системы. Если обнаружены некоррект- ности, то до монтирования файловой системы можно предпринять действия по ее исправлению. В оставшейся части этого раздела мы познакомим Вас с возможными опциями в командной строке утилиты fsck, с типами проверок, которые она производит на каждой фазе, и с действиями по исправлению, которые она может Вам предло- жить. Следует с самого начала сказать, что повреждения файловых сис- тем, хотя они и связаны с серьезными неприятностями, случаются не так уж часто. В большинстве случаев в результате проверки будет выдано сообщение о том, что все в порядке. Мы уделили здесь столько внимания необходимости проверок файловых систем, потому что необнаруженная вовремя ошибка может в конце концов привести к значительным потерям данных. Утилита fsck Утилита проверки файловых систем (fsck) - это интерактивная программа для проверки и исправления файловых систем. В проце- дуре 5.3 показан способ выполнения fsck при помощи команды sysadm checkfsys. Для проверки корректности программа fsck ис- пользует информацию, содержащуюся в самой файловой системе. Ес ли обнаружена некорректность, то выдается сообщение о характере неисправности. По Вашему выбору утилита fsck может исправить ее или не исправлять. Вы можете при выполнении fsck проигнориро- вать неисправность, если, например, сочтете, что проблема слиш- ком серьезна, и Вы либо позже внесете исправления самостоятель- но, при помощи утилиты fsdb(1M), либо решите вернуться к преды дущей версии файловой системы. Ни к чему хорошему не приведет игнорирование ошибок, если Вы сами после этого ничего не сдела- ете для их исправления. Некорректности файловых систем не исп равляются сами собой. Они лишь усугубляются, если их игнориро- вать. Команда fsck Команда fsck служит для проверки файловых систем и исправления обнаруженных некорректностей. Проверяемая файловая система, ес- ли она не корневая, должна быть размонтирована. Корневую файло- вую систему можно проверять, только когда на машине установлен уровень выполнения S, и в это время не выполняются никакие дру- гие работы. Общий формат команды fsck: |fsck [-y][-n][-b][-sX][-SX][-tфайл][-q][-D][-f][сфустройство] Опции команды fsck: -y Означает ответ "да" ("y") на все вопросы утилиты. Это стандартный выбор, если команда находится в shell-процедуре. Эта опция обычно заставляет fsck исправлять все ошибки. -n Означает ответ "нет" ("n") на все вопросы. Утилита fsck не будет производить запись в файловую систему. -b Перезагрузить систему, если проверяется корневая файловая система (/) и утилита fsck произвела в ней какие-либо исправления. Если обнаружены лишь незна- чительные, поправимые ошибки, то файловая система перемонтируется. -sX Означает безусловное переконструирование списка свободных блоков. После переконструирования списка свободных блоков система должна быть перезагружена, для того чтобы копия суперблока в оперативной памя- ти также была изменена (см. опцию -b). Аргумент Х задает число блоков на цилиндре и число пропускае- мых блоков (промежуток между записями). По умолча- нию берутся значения, специфицированные при созда- нии файловой системы. -SX Означает условное переконструирование списка сво- бодных блоков только в случае, если в файловой сис- теме обнаружены неисправности. Формат аргумента Х такой же, как описано выше для опции -s. -tфайл Эта опция задает временный файл на случай, если для проверки файловой системы потребуется дополнитель- ная память. Если опция не задана, то процесс запра- шивает имя файла, когда ему требуется дополнитель- ная память. -q Означает "молчаливый" способ выполнения проверки. Выходные сообщения процесса подавляются. -D Проверка каталогов на наличие плохих блоков. Эт опция используется для проверки файловых систем после аварийного отказа. -f Быстрый вариант проверки файловой системы. При этом выполняется только фаза 1 (проверка блоков и разм ров) и фаза 5 (проверка списка свободных блоков). Фаза 6 (переконструирование списка свободных бло ков) выполняется только в случае необходимости. сфустройство Имя специального файла устройства, связанного с файловой системой. Если имя не указано, то fsck проверяет все файловые системы, перечисленные в /etc/checklist. Пример использования команды В приведенной ниже командной строке показано применение fsck для проверки корневой файловой системы. Опции не заданы. Выдачи системы означают, что ошибок не обнаружено. Команда выполняется по фазам; некоторые фазы выполняются, только если они необходи- мы или в командной строке задана соответствующая опция. По окончании каждой фазы выдается сообщение. В конце каждой фазы выдается сводная информация о числе описателей файлов, блоков и свободных блоков в файловой системе |# fsck /dev/dsk/hd0s0 | | /dev/dsk/hd0s0 | File System: root Volume: root | | ** Phase 1 - Check Blocks and Sizes | ** Phase 2 - Check Pathnames | ** Phase 3 - Check Connectivity | ** Phase 4 - Check Reference Counts | ** Phase 5 - Check Free List | 289 files 6522 blocks 3220 free |# Компоненты файловой системы, проверяемые утилитой fsck Прежде чем приступить к обсуждению отдельных фаз утилиты fsck сообщений, которые могут быть выданы на каждой фазе, необходимо дать общее представление о компонентах файловой системы и типах проверок, применяемых к этим компонентам. СУПЕРБЛОК Суперблок - наиболее уязвимое место файловой системы, поскольку всякое изменение какого-либо блока отражается в суперблоке. Ес- ли в момент остановки ЦП последняя команда, связанная с записью в файловую систему, была не sync, то суперблок почти наверняка будет испорчен. При проверке суперблока анализируется размер файловой системы размер списка описателей файлов список свободных блоков счетчик свободных блоков счетчик свободных описателей файлов | РАЗМЕР ФАЙЛОВОЙ СИСТЕМЫ И РАЗМЕР СПИСКА ОПИСАТЕЛЕЙ ФАЙЛОВ Общий размер файловой системы должен быть больше, чем числ блоков, отведенных под суперблок, плюс число блоков, заняты списком описателей файлов. Число описателей файлов должно быть меньше, чем 65000. Невозможно проверить, верны ли эти размеры, тем не менее, fsck может проверить, находятся ли они в приемле- мых пределах. Все остальные проверки файловой системы зависят от разумности этих значений. | СПИСОК СВОБОДНЫХ БЛОКОВ Список свободных блоков начинается в суперблоке и продолжается через свободные блоки файловой системы. Для каждого свободного блока можно выполнить проверки: счетчик списка вне диапазона номера блоков вне диапазона занятый блок в списке свободных блоков Проверяется также, все ли блоки файловой системы найдены. Ссылка на первый блок списка свободных блоков находится в су- перблоке. Программа fsck проверяет, что значение счетчика неот- рицательно и не более 50. Проверяется также, принадлежит ли но- мер каждого блока диапазону значений между номерами первого и последнего блоков файловой системы. Каждый номер сравнивается с номерами блоков из списка занятых блоков. Если указатель следу- ющего блока в списке свободных блоков не равен 0, то прочитыва ется следующий блок и процесс повторяется. После того, как все блоки учтены, проверяется, совпадает ли число блоков в списке свободных блоков плюс число блоков, на которые есть указатели из описателей файлов, с общим числом блоков файловой системы. Если обнаружено несовпадение, то fsck может построить заново список свободных блоков, включив в не все незанятые блоки. | СЧЕТЧИК СВОБОДНЫХ БЛОКОВ В суперблоке имеется счетчик свободных блоков файловой системы. Программа fsck сравнивает значение счетчика с числом фактически обнаруженных свободных блоков. Если величины не совпадают, то fsck может заменить значение счетчика в суперблоке фактическим числом свободных блоков. | СЧЕТЧИК СВОБОДНЫХ ОПИСАТЕЛЕЙ ФАЙЛОВ Суперблок содержит счетчик свободных описателей файлов в файл вой системе. Программа fsck сравнивает его с числом фактическ обнаруженных в файловой системе свободных описателей файлов. Если значения не совпадают, то fsck может заменить значение счетчика в суперблоке фактическим числом свободных описателей файлов. ОПИСАТЕЛИ ФАЙЛОВ Список описателей файлов проверяется последовательно, начиная с файла номер 1 (описателя файла с номером 0 не существует). Ана- лиз корректности описателя файла включает следующие проверки: формат и тип счетчик ссылок дважды занятые блоки некорректные номера блоков поле размера в описателе файла | ФОРМАТ И ТИП Каждый описатель файла содержит слово режима. Это слово содер- жит описание типа и состояния описателя. Описатель файла может иметь один из типов: обычный каталог блочный специальный символьный специальный fifo (именованный канал) Если описатель файла не принадлежит ни к одному из этих типов, то он считается ошибочным. Описатель может находиться в одном из трех состояний: свободен, занят, частично занят. Третье сос- тояние означает, что описатель имеет неверный формат. Описатель может оказаться в таком состоянии, например, если при записи в него имел место аппаратный сбой. Единственное действие по исп- равлению, которое может предпринять fsck в этом случае - очист- ка некорректного описателя файла. | СЧЕТЧИК ССЫЛОК Каждый описатель файла содержит счетчик числа элементов катало- га, ссылающихся на него. Программа fsck проверяет счетчик ссы- лок каждого описателя файла путем исследования всей структуры каталогов, начиная с корневого каталога, и подсчитывает факти- ческое число ссылок для каждого описателя файла. Если счетчик ссылок, хранящийся в описателе файла, не совпадает с фактическим числом ссылок, обнаруженных fsck, то причины это- го могут быть следующие: Значение счетчика в описателе не 0, а фактическое число ссы- лок равно 0. Ни один из элементов каталогов не ссылается на этот файл. Программа fsck может занести "потерянный" файл в каталог lost+found. Значение счетчика в описателе не 0, фактическое число ссылок также не 0, но значения не совпадают. Возможно, элемент каталога был удален, а соответствующее из- менение в описатель файла не было внесено. Программа fsck может записать в счетчик в описателе файла фактическое число обнаруженных ссылок. | ДВАЖДЫ ЗАНЯТЫЕ БЛОКИ Описатель файла содержит список блоков, занимаемых данным фай лом. Программа fsck сравнивает номер каждого блока с номерами блоков в списке занятых блоков. Если номер блока, на который указывает описатель файла, обнаружен в списке занятых блоков, то он заносится в список дважды занятых блоков. Если номер бл ка не найден в списке занятых блоков, то он туда включается. Если список дважды занятых блоков не пуст, то fsck повторно просматривает список описателей файлов, чтобы выявить все опи сатели файлов, которые указывают на каждый дважды занятый блок. Однако, это не дает достаточно информации, чтобы определить, какой из описателей ошибочен; чаще всего бывает верен описатель файла, последнее изменение которого было произведено позднее. Такая ситуация могла возникнуть при использовании файловых сис- тем, содержащих блоки, на которые ссылается и список свободных блоков, и другие части файловой системы. Если число дважды занятых блоков велико, то это может быть выз- вано тем, что блок косвенной адресации оказался незаписанным в файловую систему. Программа fsck предлагает пользователю очис- тить оба описателя файлов. | НЕКОРРЕКТНЫЕ НОМЕРА БЛОКОВ Программа fsck проверяет, принадлежит ли номер каждого из бло- ков, на которые указывает описатель файла, диапазону значений между номерами первого и последнего блоков файловой системы. Если номер блока вне этого диапазона, то он считается некор- ректным. Если в описателе файла обнаружено много некорректных номеров блоков, то это могло быть вызвано тем, что блок косвенной адре- сации оказался незаписанным в файловую систему. Программа fsck предлагает пользователю очистить данный описатель файла. Примечание Не следует путать два понятия: некорректный номер блока не то же самое, что дефектный (т. е. нечитаемый) блок диска. | ПОЛЕ РАЗМЕРА В ОПИСАТЕЛЕ ФАЙЛА Описатель файла содержит поле размера длиною в 32 бита (4 бай- та). Размер - это число байт данных в файле, ассоциированном с описателем. Описатель файла-каталога отличается особой комбина- цией битов в слове режима. Размер файла-каталога должен быть кратен 16, поскольку элемент каталога занимает 16 байт (2 байта - номер описателя файла, 14 байт - имя файла или подкаталога). Если размер каталога не кратен 16, то fsck выдает предупрежде- ние об этом. Невозможно получить достаточно информации для исп- равления размера, поэтому в данном случае кроме выдачи предуп реждения ничего не делается. Для обычных файлов можно дать грубую оценку корректности поля размера, если вычислить, сколько блоков должно быть отведено для хранения файла такого размера, и сравнить полученное значе- ние с фактическим числом блоков, на которые указывает описатель файла. | АЛГОРИТМ Программа fsck вычисляет количество блоков, которое должен за- нимать файл, путем деления размера файла на 512 (число байт в блоке) с последующим округлением, затем добавляется по единице на каждый блок косвенной адресации, связанный с описателем. Если фактическое число блоков не совпало с вычисленным, то fsck выдает предупреждение о возможной ошибке в размере файла. Это всего лишь предупреждение, поскольку логические блоки могут создаваться в произвольном порядке, и система не обязательно заполняет их все. Для того чтобы проверить, действительно ли файл некорректен, требуется анализ его содержимого (см. выше в этой главе раздел "Дыры в файлах"). БЛОКИ КОСВЕННОЙ АДРЕСАЦИИ Блоки косвенной адресации принадлежат описателю файла. Поэтому ошибка в блоке косвенной адресации непосредственно затрагивает описатель, к которому блок относится. Могут быть выявлены сле- дующие некорректности: Блок уже занят другим описателем. Номера блоков вне диапазона файловой системы. Проверки, описанные выше в разделах "Дважды занятые блоки" и "Некорректные номера блоков", проводятся для блоков косвенной адресации так же, как и для блоков данных, на которые непос- редственно указывает описатель файла. БЛОКИ ДАННЫХ КАТАЛОГОВ Каталоги отличаются от обычных файлов значением слова режима в описателе файла. Блоки данных, относящиеся к каталогу, содержат элементы каталога. Для блоков данных каталогов могут проводится следующие проверки: номер описателя файла относится к свободному описателю файла номер описателя файла больше, чем общее число описателей в файловой системе неверные номера описателей файлов для каталогов "." и ".." каталог не связан с файловой системой | ЭЛЕМЕНТ КАТАЛОГА УКАЗЫВАЕТ НА СВОБОДНЫЙ ОПИСАТЕЛЬ ФАЙЛА Если номер описателя в элементе каталога относится к свободному описателю файла, то fsck может удалить этот элемент каталога. Такая ситуация может возникнуть, если блоки данных, содержащие элементы каталога, были модифицированы и записаны на диск, а описатель файла еще не был записан. | НЕКОРРЕКТНЫЙ НОМЕР ОПИСАТЕЛЯ Если номер описателя в элементе каталога находится за пределами списка, то fsck может удалить этот элемент каталога. Подобна ситуация возникает, если в блок данных каталога была записана ошибочная информация. | НЕВЕРНЫЕ ЭЛЕМЕНТЫ "." И ".." Номер описателя каталога "." должен быть первым элементом в блоке данных каталога. Его значение должно равняться номеру описателя проверяемого файла-каталога. Номер описателя файла для ".." должен быть вторым элеменом в блоке данных каталога. Его значение должно равняться номеру описателя надкаталога данного каталога (или номеру описателя самого каталога, если это корневой каталог). Если номера описа- телей для "." и ".." неверны, то fsck может заменить их пра- вильными номерами. | ОТСОЕДИНИВШИЕСЯ КАТАЛОГИ Программа fsck проверяет связность файловой системы. Если обна- ружены отсоединившиеся каталоги, то fsck вновь подключает их к файловой системе, помещая в каталог lost+found. Подобная ситуа- ция может возникнуть, если описатели файлов были записаны в файловую систему, а соответсвующие блоки данных - нет. Есл файл подключается к каталогу lost+found, то владельцу файла должно быть об этом сообщено. БЛОКИ ДАННЫХ ОБЫЧНЫХ ФАЙЛОВ В блоках данных, относящихся к обычным файлам, хранится содер- жимое этих файлов. Программа fsck не пытается анализировать корректность содержимого этих блоков. Выполнение fsck Программа fsck выполняется пофазно. Каждая фаза сообщает о най- денных ею ошибках. Если ошибка поправима, то программа спраши вает, следует ли внести исправления. В этом разделе описаны со общения, порождаемые на каждой фазе. В сообщениях программы fsck используются следующие сокращения: BLK номер блока DUP дважды занятый блок BAD некорректный номер блока DIR имя каталога MTIME время последней модификации файла UNREF нет ссылки (на блок или описатель файла) В приведенных ниже сообщениях используются также однобуквенные сокращения, которые в реальных сообщениях программы fsck заме- няются конкретными значениями: B номер блока F имя файла I номер описателя файла M режим файла O идентификатор владельца S размер (длина) файла T время последнего изменения X счетчик ссылок или число некорректных номеров, дважды занятых или от- сутствующих блоков или число файлов (в зависимости от контекста) Y исправленное значение счетчика ссылок или число блоков в файловой системе (в зависимости от контекста) ФАЗА ИНИЦИАЛИЗАЦИИ Проверяется синтаксис командной строки. Прежде чем приступить к проверке файловой системы, fsck инициализирует некоторые табли- цы и открывает некоторые файлы. При обнаружении ошибок инициа- лизации fsck заканчивает работу. | ОБЩИЕ ОШИБКИ В этой фазе могут быть выданы три сообщения об ошибках. Нес- мотря на то, что программа, казалось бы, предлагает альтернати- ву продолжения, вообще говоря, правильнее рассматривать эти ошибки как фатальные, выйти из программы и попытаться выяснить возможные причины осложнений. |CAN NOT SEEK:BLK B(CONTINUE?) Попытка перейти к блоку номер В в файловой системе закон- чилась неудачно. Данная ошибка указывает на наличие серь- езных осложнений (возможно, неисправность аппаратуры), которые могут потребовать вмешательства инженерного пер- сонала. |CAN NOT READ:BLK B(CONTINUE?) Попытка прочитать блок номер В в файловой системе закон чилась неудачно. Данная ошибка указывает на наличие серь езных осложнений (возможно, неисправность аппаратуры), которые могут потребовать вмешательства инженерного пер- сонала. |CAN NOT WRITE:BLK B(CONTINUE?) Попытка записать блок номер В в файловой системе закончи- лась неудачно. Возможно, на диске установлена защита от записи. | ЗНАЧЕНИЕ ОТВЕТОВ "ДА" И "НЕТ" Ответ n (нет) на приглашение CONTINUE? (ПРОДОЛЖАТЬ?) означает: Закончить работу программы. (Это рекомендуемый вариант от- вета) Ответ y (да) на приглашение CONTINUE? (ПРОДОЛЖАТЬ?) означает: Попытаться продолжить проверку файловой системы. Скорее всего, однако, ошибка будет повторяться. Из-за наличия ошибок полная проверка файловой системы невозможна. Для перепроверки этой файловой системы необходим повторный за пуск fsck. ФАЗА 1: ПРОВЕРКА БЛОКОВ И РАЗМЕРОВ На этой фазе проверяется список описателей файлов. Возможны со- общения об ошибках в результате: проверки типов описателей файлов формирования таблицы описателей файлов, на которые нет ссылок обнаружения в описателях файлов некорректных номеров или дважды занятых блоков проверки поля размера в описателе файла проверки форматов описателей файлов | ТИПЫ СООБЩЕНИЙ ОБ ОШИБКАХ - ФАЗА 1 В фазе 1 выдаются сообщения об ошибках трех типов: 1) информационные сообщения 2) сообщения с приглашением CONTINUE? (ПРОДОЛЖАТЬ?) 3) сообщения с приглашением CLEAR? (ОЧИСТИТЬ?) Имеется определенная связь между информационными сообщениями и сообщениями с приглашением CONTINUE? (ПРОДОЛЖАТЬ?). Этот вопрос обычно задается тогда, когда достигнут определенный предел воз- можностей fsck по обработке ошибок, так что дальнейшая провер- ка, возможно, не имеет смысла. | ЗНАЧЕНИЕ ОТВЕТОВ "ДА" И "НЕТ" - ФАЗА 1 Ответ n (нет) на приглашение CONTINUE? (ПРОДОЛЖАТЬ?) в фазе 1 означает: Закончить работу программы. Ответ y (да) на приглашение CONTINUE? (ПРОДОЛЖАТЬ?) в фазе 1 означает: Продолжить работу программы. Обнаруженные ошибки не позволяют провести полную проверку файловой системы. Для перепроверки этой файловой системы необходим повторный запуск fsck. Ответ n (нет) на приглашение CLEAR? (ОЧИСТИТЬ?) в фазе 1 озна- чает: Игнорировать ошибку. Такой ответ оправдан лишь в том случае, если пользователь намеревается исправить ошибку другими средствами. Ответ y (да) на приглашение CLEAR? (ОЧИСТИТЬ?) в фазе 1 означа- ет: Освободить описатель файла, обнулив его содержимое. Это может привести к ошибке ANALLOCATED (СЦВОБОДНЫЙ ОПИСА- ТЕЛЬ) в фазе 2 для тех каталогов, которые ссылаются на этот описатель. | СООБЩЕНИЯ ОБ ОШИБКАХ В ФАЗЕ 1 UNKNOWN FILE TYPE I=I(CLEAR?) Тип файла в слове режима описателя файла I не совпадает ни с одним из типов: канал, специальный символьный, обычный, ка- талог, специальный блочный. LINK COUNT TABLE OVERFLOW (CONTINUE?) Во внутренней таблице программы fsck больше нет места для хранения занятых описателей с нулевыми значениями счетчиков ссылок. B BAD I=I Описатель файла номер I содержит номер блока В, который либо меньше номера первого, либо больше номера последнего блока файловой системы. Эта ошибка может в дальнейшем привести к выдаче сообщения EXCESSIVE BAD BLOCKS в фазе 1, если в опи сателе номер I слишком много номеров блоков вне диапазона номеров данной файловой системы. Эта ошибка приводит также к выдаче сообщения BAD/DUP в фазах 2 и 4. EXCESSIVE BAD BLOCKS I=I (CONTINUE?) Число номеров блоков, меньших номера первого или больших но- мера последнего блока файловой системы, в описателе файла I больше некоторого предельного значения (обычно 10). B DUP I=I Описатель файла I содержит номер блока В, на который уже ссылается другой описатель файла. Эта ошибка может в даль нейшем привести к выдаче сообщения EXCESSIVE DUP BLOCKS в фазе 1, если в описателе номер I слишком много номеров дваж- ды занятых блоков. Эта ошибка вызывает выполнение фазы 1В, а также приводит к выдаче сообщения BAD/DUP в фазах 2 и 4. EXCESSIVE DUP BLOCKS I=I (CONTINUE?) В описателе номер I число блоков, уже встречавшихся в других описателях файлов, больше некоторого предельного значения (обычно 10). DUP TABLE OVERFLOW (CONTINUE?) Во внутренней таблице программы fsck, в которой хранятся но мера дважды занятых блоков, больше нет места. POSSIBLE SIZE ERROR I=I Размер файла в описателе номер I не соответствует числу бло- ков, указанных в описателе. Это всего лишь предупреждение. Если в команде задана опция -q, то сообщения такого типа не выдаются. DIRECTORY MISALIGNED I=I Размер каталога не кратен 16. Это всего лишь предупреждение. Если в команде задана опция -q, то сообщения такого типа н выдаются. PARTIALLY ALLOCATED INODE I=I (CLEAR?) Описатель файла номер I не занят и не свободен. ФАЗА 1В: Повторный просмотр для поиска описателей, ссылающихся на дважды заняты Если обнаружены дважды занятые блоки, то fsck повторно просмат- ривает файловую систему для поиска описателей, ссылающихся на дважды занятые блоки. При обнаружении дважды занятого блока пе- чатается сообщение: B DUP I=I Описатель файла номер I содержит номер блока В, на который указывает также другой описатель. Эта ошибка приводит также к выдаче сообщения BAD/DUP в фазе 2. Номера всех описателей, ссы лающихся на одни и те же блоки, можно выявить, проанализировав все сообщения данного типа, а также аналогичные сообщения в фазе 1. ФАЗА 2: ПРОВЕРКА МАРШРУТНЫХ ИМЕН На этой фазе удаляются элементы каталогов, которые ссылаются на некорректные описатели файлов, обнаруженные в фазах 1 и 1В. Вы- даются сообщения об ошибках типа: неверный режим или состояние корневого описателя номера описателей в каталоге вне допустимого диапазона номера описателей в каталоге соответствуют некорректным опи сателям файлов В фазе 2 выдаются сообщения об ошибках 4 типов: 1) информационные сообщения 2) сообщения с приглашением FIX? (ИСПРАВИТЬ?) 3) сообщения с приглашением CONTINUE? (ПРОДОЛЖАТЬ?) 4) сообщения с приглашением REMOVE? (УДАЛИТЬ?) | ЗНАЧЕНИЕ ОТВЕТОВ "ДА" И "НЕТ" - ФАЗА 2 Ответ n (нет) на приглашение FIX? (ИСПРАВИТЬ?) в фазе 2 означа- ет: Выйти из программы, т. к. fsck не сможет продолжить рабо- ту. Ответ y (да) на приглашение FIX? (ИСПРАВИТЬ?) в фазе 2 означа- ет: Изменить тип корневого описателя на тип "каталог". Если блоки данных, на которые указывает корневой описа- тель, не содержат в действительности описание каталога, то будет выдано очень много сообщений об ошибках. Ответ n (нет) на приглашение CONTINUE? (ПРОДОЛЖАТЬ?) в фазе 2 означает: Завершить работу программы. Ответ y (да) на приглашение CONTINUE? (ПРОДОЛЖАТЬ?) в фазе 2 означает: Игнорировать наличие в корневом описателе дважды занятых и некорректных номеров блоков и продолжить проверку файловой системы. Если описатель файла неверный, то это может привести к вы- даче большого числа сообщений об ошибках. Ответ n (нет) на приглашение REMOVE? (УДАЛИТЬ?) в фазе 2 озна- чает: Игнорировать наличие ошибки. Такой ответ оправдан, только если пользователь намеревает- ся устранить ошибку другими средствами. Ответ y (да) на приглашение REMOVE? (УДАЛИТЬ?) в фазе 2 означа- ет: Удалить ссылки на дважды занятые и свободные блоки. | СООБЩЕНИЯ ОБ ОШИБКАХ В ФАЗЕ 2 ROOT INODE UNALLOCATED. TERMINATING Биты состояния в корневом описателе (обычно в описателе но- мер 2) не соответствуют состоянию "занят". Эта ошибка свиде- тельствует о наличии серьезного повреждения. Программа за- вершает работу. ROOT INODE NOT DIRECTORY (FIX?) Тип корневого описателя (обычно описателя номер 2) - не "ка талог". DUPS/BAD IN ROOT INODE (CONTINUE?) В фазах 1 или 1В обнаружены дважды занятые или некорректные номера блоков в корневом описателе (обычно в описателе номер 2) файловой системы. I OUT OF RANGE I=I NAME=F (REMOVE?) Номер описателя файла в элементе каталога с именем F больше, чем максимальный номер в списке описателей. UNALLOCATED I=I OWNER=O MODE=M SIZE=S MTIME=T NAME=F (REMOVE?) Описатель файла номер I в элементе каталога с именем F имеет состояние, отличное от "занят". Распечатывается имя владель- ца O, режим М, размер S, время последнего изменения T, имя файла F. Если файловая система не смонтирована, не задана опция -n, и описатель указывает на символьный файл длины 0, то такие элементы каталога автоматически удаляются. DUP/BAD I=I OWNER=O MODE=M SIZE=S MTIME=T DIR=F (REMOVE?) В фазе 1 или 1В обнаружены дважды занятые или некорректные номера блоков в описателе номер I, на который ссылается ка- талог с именем F. Распечатывается имя владельца O, режим М, размер S, время последнего изменения T, имя каталога F. DUP/BAD I=I OWNER=O MODE=M SIZE=S MTIME=T FILE=F (REMOVE?) В фазе 1 или 1В обнаружены дважды занятые или некорректные номера блоков в описателе номер I, на который ссылается файл с именем F. Распечатывается имя владельца O, режим М, раз S, время последнего изменения T, имя файла F. BAD BLK B IN DIR I=I OWNER=O MODE=M SIZE=S MTIME=T Это сообщение выдается, только если задана опция -D. Обнару- жен дефектный блок в описателе файла-каталога номер I. В блоках данных каталогов могут быть обнаружены такие ошибки, как ненулевые элементы, дополнительные элементы "." и "..", символы "/" в именах. Сообщение об ошибках подобного рода обычно означает, что пользователь в дальнейшем должен либо исключить описатель файла-каталога, если весь блок плохой, либо изменить (удалить) отдельные некорректные элементы это- го каталога. ФАЗА 3: ПРОВЕРКА СВЯЗНОСТИ В этой фазе исследуется связность каталогов, просмотренных в фазе 2. Выдаются сообщения об ошибках: обнаружен каталог, на который нет ссылок отсутствуют или переполнены каталоги lost+fоund | ТИПЫ СООБЩЕНИЙ ОБ ОШИБКАХ - ФАЗА 3 В фазе 3 выдаются сообщения двух типов: 1) информационные сообщения 2) сообщения с приглашением RECONNECT? (ПОДКЛЮЧИТЬ?) | ЗНАЧЕНИЕ ОТВЕТОВ "ДА" И "НЕТ" В ФАЗЕ 3 Ответ n (нет) на приглашение RECONNECT? (ПОДКЛЮЧИТЬ?) в фазе 3 означает: Игнорировать ошибку. Это приводит к выдаче сообщения UNREF в фазе 4. Такой ответ оправдан лишь в том случае, если пользователь намеревается исправить ошибку другими средствами. Ответ y (да) на приглашение RECONNECT? (ПОДКЛЮЧИТЬ?) в фазе 3 означает: Подключить описатель файла-каталога к файловой системе, поместив его в каталог для "потерянных" файлов lost+found. Если при подключении к каталогу lost+found возникли зат- руднения, то будут выданы соответствующие сообщения. Если подключение прошло успешно, то выдается информационное со- общение CONNECTED (ПОДКЛЮЧЕН). | СООБЩЕНИЯ ОБ ОШИБКАХ - ФАЗА 3 UNREF DIR I=I OWNER=O MODE=M SIZE=S MTIME=T (RECONNECT?) При просмотре файловой системы обнаружено, что описатель файла-каталога номер I не включен ни в какой каталог. Распе- чатывается имя владельца O, режим М, размер S, время послед- него изменения T описателя номер I. SORRY. NO lost+found DIRECTORY. В корневом каталоге файловой системы отсутствует каталог lost+found. Подключение к каталогу lost+found не выполнено. В результате, в фазе 4 будет выявлена ошибка UNREF. Возмож- но, затруднение связано с режимом доступа к каталогу lost+- found. SORRY. NO SPACE IN lost+found DIRECTORY. Нет места для включения еще одного элемента в каталог lost+- found; подключение к каталогу lost+found не выполнено. В ре- зультате, в фазе 4 будет выявлена ошибка UNREF. Удалите из lost+found ненужные элементы или увеличьте lost+found (см. процедуру 5.2). DIR I=I1 CONNECTED. PARENT WAS I=I2 Это дополнительное сообщение, показывающее, что описатель каталога номер I1 успешно включен в lost+found. Номер надка- талога I2 в описателе подключаемого каталога заменен на но- мер описателя каталога lost+found. ФАЗА 4: ПРОВЕРКА СЧЕТЧИКОВ ССЫЛОК В этой фазе проверяется собранная в фазах 2 и 3 информация о счетчиках ссылок. Выдаются сообщения об ошибках: нет ссылок на файлы отсутствует или переполнен каталог lost+found неверные счетчики ссылок для файлов, каталогов и специальных файлов нет ссылок на файлы или каталоги некорректные номера блоков или дважды занятые блоки в файлах и каталогах неверный счетчик общего числа свободных описателей файлов | ТИПЫ СООБЩЕНИЙ ОБ ОШИБКАХ - ФАЗА 4 В фазе 4 выдаются сообщения об ошибках 5 типов: 1) информационные сообщения 2) сообщения с приглашением RECONNECT? (ПОДКЛЮЧИТЬ?) 3) сообщения с приглашением CLEAR? (ОЧИСТИТЬ?) 4) сообщения с приглашением ADJUST? (ЗАМЕНИТЬ?) 5) сообщения с приглашением FIX? (ИСПРАВИТЬ?) | ЗНАЧЕНИЕ ОТВЕТОВ "ДА" И "НЕТ" - ФАЗА 4 Ответ n (нет) на приглашение RECONNECT? (ПОДКЛЮЧИТЬ?) в фазе 4 означает: Игнорировать ошибку. Это приведет далее в фазе 4 к выдаче сообщения CLEAR. Ответ y (да) на приглашение RECONNECT? (ПОДКЛЮЧИТЬ?) в фазе 4 означает: Подключить описатель файла-каталога к файловой системе, поместив его в каталог для "потерянных" файлов (обычно ка- талог lost+found). Если при подключении каталога в lost+found возникли зат- руднения, то будут выданы соответствующие сообщения. Ответ n (нет) на приглашение CLEAR? (ОЧИСТИТЬ?) в фазе 4 озна- чает: Игнорировать ошибку. Такой ответ оправдан лишь в том случае, если пользователь намеревается исправить ошибку другими средствами. Ответ y (да) на приглашение CLEAR? (ОЧИСТИТЬ?) в фазе 4 означа- ет: Освободить описатель файла, обнулив его содержимое. Ответ n (нет) на приглашение ADJUST? (ЗАМЕНИТЬ?) в фазе 4 озна- чает: Игнорировать ошибку. Такой ответ оправдан лишь в том случае, если пользователь намеревается исправить ошибку другими средствами. Ответ y (да) на приглашение ADJUST? (ЗАМЕНИТЬ?) в фазе 4 озна- чает: Заменить счетчик ссылок в описателе файла номер I на Y. Ответ n (нет) на приглашение FIX? (ИСПРАВИТЬ?) в фазе 4 означ ет: y (да) на приглашение FIX? (ИСПРАВИТЬ?) в фазе 4 Заменить значение счетчика в суперблоке фактическим значе- нием счетчика. | СООБЩЕНИЯ ОБ ОШИБКАХ В ФАЗЕ 4 UNREF FILE I=I OWNER=O MODE=M SIZE=S MTIME=T (RECONNECT?) При просмотре файловой системы обнаружено, что на опис файла номер I нет ссылки ни из одного каталога. Распечатыва- ется имя владельца O, режим М, размер S, время последнего изменения T. Если не задана опция -n, и файловая система не смонтирована, то пустые файлы автоматически удаляются. Не- пустые файлы не удаляются. SORRY. NO lost+found DIRECTORY. В корневом каталоге файловой системы отсутствует каталог lost+found. Подключение каталога к lost+found не выполнено. Это приводит к выдаче сообщения CLEAR далее в фазе 4. Воз- можно, затруднение связано с режимом доступа к каталогу lost+found. SORRY. NO SPACE IN lost+found DIRECTORY. Нет места для включения еще одного элемента в каталог lost+ found; подключение каталога к lost+found не выполнено. Это приводит к выдаче сообщения CLEAR далее в фазе 4. Проверьте размер и содержимое каталога lost+found. (CLEAR) Описатель файла, упомянутый в предыдущем сообщении UNREF, не может быть подключен. LINK COUNT FILE I=I OWNER=O MODE=M SIZE=S MTIME=T COUNT=X SHOULD BE Y (ADJUST?) Счетчик ссылок в описателе обычного файла номер I равен X, а должен равняться Y. Распечатывается имя владельца O, режим М, размер S, время последнего изменения T. LINK COUNT DIR I=I OWNER=O MODE=M SIZE=S MTIME=T COUNT=X SHOULD BE Y (ADJUST?) Счетчик ссылок в описателе файла-каталога номер I равен X, а должен равняться Y. Распечатывается имя владельца O, режим М, размер S, время последнего изменения T описателя, номер I файла-каталога. LINK COUNT FI=I OWNER=O MODE=M SIZE=S MTIME=T COUNT=X SHOULD BE Y (ADJUST?) Счетчик ссылок в описателе номер I обычного файла с именем F равен X, а должен равняться Y. Распечатывается имя файла F, имя владельца O, режим М, размер S, время последнего измене- ния T. UNREF FILE I=I OWNER=O MODE=M SIZE=S MTIME=T (CLEAR?) При просмотре файловой системы обнаружено, что описатель обычного файла номер I не включен ни в один каталог. Распе- чатывается имя владельца O, режим М, размер S, время послед- него изменения T описателя I. Если не задана опция -n, и файловая система не смонтирована, то пустые файлы автомати- чески удаляются. Непустые файлы не удаляются. UNREF DIR I=I OWNER=O MODE=M SIZE=S MTIME=T (CLEAR?) При просмотре файловой системы обнаружено, что описатель файла-каталога номер I не включен ни в один каталог. Распе- чатывается имя владельца O, режим М, размер S, время послед- него изменения T описателя I. Если не задана опция -n, и файловая система не смонтирована, то пустые каталоги автома- тически удаляются. Непустые каталоги не удаляются. BAD/DUP FILE I=I OWNER=O MODE=M SIZE=S MTIME=T (CLEAR?) В фазе 1 или 1В обнаружено, что описатель файла номер I со- держит дважды занятые или некорректные номера блоков. Распе- чатывается имя владельца O, режим М, размер S, время послед- него изменения T описателя I. BAD/DUP DIR I=I OWNER=O MODE=M SIZE=S MTIME=T (CLEAR?) В фазе 1 или 1В обнаружено, что описатель файла-каталога но- мер I содержит дважды занятые или некорректные номера бло- ков. Распечатывается имя владельца O, режим М, размер S, время последнего изменения T описателя I. FREE INODE COUNT WRONG IN SUPERBLK (FIX?) Фактическое число свободных описателей файлов не совпадает со значением счетчика в суперблоке файловой системы. Если задана опция -q, то значение счетчика в суперблоке будет исправлено автоматически. ФАЗА 5: ПРОВЕРКА СПИСКА СВОБОДНЫХ БЛОКОВ В этой фазе проверяется список свободных блоков. Выдаются сооб- щения об ошибках: некорректные номера блоков в списке свободных блоков неверное значение счетчика свободных блоков дважды занятые блоки в списке свободных блоков незанятые блоки файловой системы не в списке свободных блоков неверное значение счетчика общего числа свободных блоков | ТИПЫ СООБЩЕНИЙ ОБ ОШИБКАХ - ФАЗА 5 В фазе 5 выдаются сообщения об ошибках 4 типов: 1) информационные сообщения 2) сообщения с приглашением CONTINUE? (ПРОДОЛЖАТЬ?) 3) сообщения с приглашением FIX? (ИСПРАВИТЬ?) 4) сообщения с приглашением SALVAGE? (ПЕРЕКОНСТРУИРОВАТЬ?) | ЗНАЧЕНИЯ ОТВЕТОВ "ДА" И "НЕТ" - ФАЗА 5 Ответ n (нет) на приглашение CONTINUE? (ПРОДОЛЖАТЬ?) в фазе 5 означает: Завершить работу программы. Ответ y (да) на приглашение CONTINUE? (ПРОДОЛЖАТЬ?) в фазе 5 означает: Игнорировать оставшуюся часть списка свободных блоков и продолжить выполнение fsck. Ошибка этого типа обязательно приводит к выдаче сообщения BAD BLKS IN FREE LIST далее в фазе 5. Ответ n (нет) на приглашение FIX? (ИСПРАВИТЬ?) в фазе 5 означа- ет: Игнорировать ошибку. Такой ответ оправдан лишь в том случае, если пользователь намеревается исправить ошибку другими средствами. Ответ y (да) на приглашение FIX? (ИСПРАВИТЬ?) в фазе 5 означа- ет: Заменить значение счетчика в суперблоке на фактическое число свободных блоков. Ответ n (нет) на приглашение SALVAGE? (ПЕРЕКОНСТРУИРОВАТЬ?) в фазе 5 означает: Игнорировать ошибку. Такой ответ оправдан лишь в том случае, если пользователь намеревается исправить ошибку другими средствами. Ответ y (да) на приглашение SALVAGE? (ПЕРЕКОНСТРУИРОВАТЬ?) в фазе 5 означает: Заменить имеющийся список свободных блоков новым списком свободных блоков. Новый список свободных блоков будет упо рядочен в соответствии со значением промежутка и специфи- кациями цилиндров в опциях -s или -S, для того чтобы мини- мизировать время вращения диска, необходимое для попадания в нужную позицию. | СООБЩЕНИЯ ОБ ОШИБКАХ - ФАЗА 5 EXCESSIVE BAD BLKS IN FREE LIST (CONTINUE?) Число блоков с номерами, меньшими чем номер первого или большими чем номер последнего блока файловой системы в спис- ке свободных блоков, превысило некоторое предельное значение (обычно 10). EXCESSIVE DUP BLKS IN FREE LIST (CONTINUE?) Число блоков, которые уже упоминались в описателях файлов или ранее - в списке свободных блоков, превысило некоторое предельное значение (обычно 10). BAD FREEBLK COUNT Счетчик свободных блоков в списке свободных блоков меньше 0 или больше 50. Эта ошибка обязательно приводит к выдаче со- общения BAD FREE LIST далее в фазе 5. X BAD BLKS IN FREE LIST В списке свободных блоков обнаружено X блоков с номерами, меньшими чем номер первого или большими чем номер последнего блока файловой системы. Эта ошибка обязательно приводит к выдаче сообщения BAD FREE LIST далее - в фазе 5. X DUP BLKS IN FREE LIST В списке свободных блоков обнаружено X блоков с номерами, уже упоминавшимися в описателях файлов или ранее - в списке свободных блоков. Эта ошибка обязательно приводит к выдаче сообщения BAD FREE LIST далее - в фазе 5. X BLK(S) MISSING В списке свободных блоков не найдено X блоков, не занятых файловой системой. Эта ошибка обязательно приводит к выдаче сообщения BAD FREE LIST далее - в фазе 5. FREEBLK COUNT WRONG IN SUPERBLOCK (FIX?) Фактическое число свободных блоков не совпадает со значением счетчика в суперблоке. BAD FREE LIST (SALVAGE?) Этому сообщению обязательно предшествует одно или более ин- формационных сообщений фазы 5. Если задана опция -q, то пе- реконструирование списка свободных блоков выполняется авто- матически. ФАЗА 6: ПЕРЕКОНСТРУИРОВАНИЕ СПИСКА СВОБОДНЫХ БЛОКОВ В этой фазе выполняется переконструирование списка свободных блоков. Может быть выдано только одно сообщение об ошибке, если задано неверное число_блоков_на_цилиндре или величина промежут- ка. | СООБЩЕНИЕ ОБ ОШИБКЕ - ФАЗА 6 DEFAULT FREE-BLOCK LIST SPACING ASSUMED. Это предупреждающее сообщение. Оно означает, что заданный промежуток между записями больше чем число_блоков_на_цилинд- ре, или промежуток меньше 1, или число_блоков_на_цилиндре меньше 1, или число_блоков_на_цилиндре больше 500. Исполь- зуются значения: промежуток между записями - 7 блоков, чис- ло_блоков_на_цилиндре - 400. Поскольку эти значения неверны для машины 3В2, то следует поза- ботиться о задании правильных значений в опции -S в командной строке. См. подробнее об этом fsck(1M) и mkfs(1M). ФАЗА ОЧИСТКИ После проверки файловой системы выполняется несколько функций очистки. В фазе очистки выдаются сведения о файловой системе и ее состоянии. | СООБЩЕНИЯ В ФАЗЕ ОЧИСТКИ X files Y blocks Z free Это информационное сообщение, в нем указывается, что в фай- ловой системе имеется X файлов, Y блоков, Z свободных блоков. ***** BOOT UNIX (NO SYNC!) ***** Это сообщение указывает, что смонтированная файловая система или корневая файловая система была изменена программой fsck. Если не произвести немедленную перезагрузку системы UNIX, н выполняя команду sync, то результат работы, проделанной fsck, может пропасть, т. к. в оперативной памяти остались копии таблиц, поддерживаемых операционной системой UNIX. Ес- ли в команде fsck задана опция -b и проверялась корневая файловая система, то перезагрузка выполняется автоматически. ***** FILE SYSTEM WAS MODIFIED ***** Информационное сообщение, которое говорит о том, что в фай- ловую систему были внесены изменения программой fsck.@