Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
QNX 4 Руководство пользователя.doc
Скачиваний:
248
Добавлен:
02.05.2014
Размер:
1.02 Mб
Скачать

Глава 14. Восстановление дисков и файлов

В этой главе...

Обзор структуры диска QNX 4

Утилиты работы с файлами

Процедуры восстановления диска

Что делать, если Ваша система больше не загружается

Восстановление потерянных файлов и каталогов

ВНИМАНИЕ. Мы рекомендуем Вам прочитать эту главу полностью на

случай, если Вам когда-либо придется выполнять процедуры

восстановления диска.

14.1. Введение

Файловая система QNX имеет высокую производительность и надеж-

ность. Хотя файловая система разрабатывалась в соответствии с прин-

ципом обеспечения максимальной живучести, тем не менее, на практике

всегда могут возникнуть ситуации отказа диска.

Например, могут выйти из строя аппаратные средства, произойти

сбой по питанию или пользователи могут перезагрузить компьютер в

самый неподходящий момент.

Файловая система QNX спроектирована так, что может устоять при

возникновении подобных ситуаций. Она базируется на принципе обеспе-

чения целостности и непротиворечивости файловой системы в целом в

любой момент времени, т.е. любой единичный отказ в худшем случае

может испортить содержимое только тех файлов, которые открыты для

записи на момент возникновения отказа.

Это означает, что наиболее распространенные типы отказов: сбои

по питанию, перезагрузка, отказ ЦП,- не разрушают файловую систему

QNX.

Если возникает нарушение, мы используем утилиты восстановле-

ния, которые позволяют проверить файловую систему, чтобы опреде-

лить, имеются ли повреждения файлов, которые были открыты на запись

в момент возникновения нарушения. Эти же утилиты могут исправить

такие повреждения и во многих случаях полностью восстановить файло-

вую систему.

Иногда повреждения могут быть более серьезными. Например, на

жестком диске может появиться плохой блок в середине файла или еще

хуже - в середине каталога или некоторого другого критического бло-

ка. Утилиты помогают определить степень такого повреждения. Может

потребоваться вновь создать файловую систему, чтобы избежать появ-

ления поврежденных областей. В этом случае некоторые данные будут

- 157 -

потеряны, но большая часть активных данных может быть восстановле-

на.

14.2. Обзор структуры диска QNX 4

В этом разделе рассматривается организация данных на диске в

файловой системе QNX. Это поможет Вам определять и, возможно, кор-

ректировать повреждения файловой системы при ее восстановлении. Ес-

ли у Вас есть пакет разработки Cи, то в заголовочном файле

<sys/fsys.h> содержатся определения всех терминов, использованных в

этом разделе. Полное описание файловой системы QNX содержится в

"Архитектуре системы" в главе 5 "Администратор файловой системы".

14.2.1. Структура раздела

Файловая система QNX может занимать целый диск (в случае флоп-

пидискет) или один из разделов жесткого диска. В пределах дискового

раздела, файловая система QNX содержит следующие компоненты:

+-----------------------------------------------------+

| |

| +------------------------+ |

| | Программа-загрузчик | |

| |------------------------| |

| | Корневой блок |-----+ |

| |------------------------| | |

| |- -| | |

| | Битовая карта | | |

| |- -| | |

| |------------------------| | |

| |- -| | |

| | Корневой каталог |<----+ |

| |- -| |

| |------------------------| |

| ~ ~ |

| | Другие данные | |

| ~ ~ |

| +------------------------+ |

+-----------------------------------------------------+

Рис. 25

В дисковом разделе QNX 4 cледующие блоки всегда находятся в

следующем порядке:

- 158 -

1) блок программы-загрузчика;

2) корневой блок;

3) блоки битовой карты;

4) корневой каталог.

Блок программы-загрузчика

Первый блок раздела QNX - блок программы-загрузчика - содержит

начальный загрузчик, который загружает ОС QNX в память.

Корневой блок

Второй блок раздела QNX - корневой блок - содержит вход для

корневого каталога (/), inode-входы для файла inode и поле метки.

Блоки битовой карты

За корневым блоком следует несколько блоков битовой карты. Они

образуют битовую карту для раздела QNX. Для каждого блока раздела

существует один бит, таким образом один блок битовой карты будет

использоваться для 4096 дисковых блоков (что соответствует 2 Mб

дискового пространства). Если значение бита нулевое, то соответс-

твующий ему блок не используется. Неиспользуемые биты в конце пос-

леднего блока битовой карты (для которых нет соответствия дисковым

блокам) имеют единичное значение. Присвоение битов начинается с

младшего бита байта 0 первого блока битовой карты, который соот-

ветствует в QNX блоку 1.

Корневой каталог

Корневой каталог следует за блоками битовой карты. Корневой

каталог является "нормальным" каталогом (смотрите "Каталоги" ниже)

и изначально создается утилитой dinit с объемом, достаточным для 32

элементов каталога (4 блока). Как показано на следующей иллюстра-

ции, корневой каталог (/) содержит элементы каталогов для различных

специальных файлов, которые всегда существуют в файловой системе

QNX. Утилита dinit создает эти файлы, когда файловая система иници-

ализируется первый раз.

.

- 159 -

+------------------------------------------------------------------+

| / |

| +-------+ |

| | | +---------------------------------+ |

| | ----+-------------->| . | |

| | | +---------------------------------+ |

| |-------| |

| | | +---------------------------------+ |

| | ----+-------------->| .. | |

| | | +---------------------------------+ |

| |-------| |

| | | +---------------------------------+ |

| | ----+-------------->| .bitmap | |

| | | +---------------------------------+ |

| |-------| |

| | | +---------------------------------+ |

| | ----+-------------->| .inodes | |

| | | +---------------------------------+ |

| |-------| |

| | | +---------------------------------+ |

| | ----+-------------->| .boot | |

| | | +---------------------------------+ |

| |-------| |

| | | +---------------------------------+ |

| | ----+-------------->| .altboot | |

| | | +---------------------------------+ |

| |-------| |

| | | |

| | | |

| . . . |

+------------------------------------------------------------------+

Рис. 26

На рис. 26 приняты следующие обозначения:

/. Ссылка на каталог: /

/.. Также ссылка на каталог: /

/.bitmap Файл, открываемый только на чтение, состоящий из

блоков битовой карты.

/.inodes Нормальный файл, занимающий по крайней мере один блок

на флоппи/RAM дискете и 16 блоков на других дисках,

- 160 -

/.inodes - это набор inodeэлементов. Первый элемент

резервируется и используется в качестве области сиг-

натуры/инфо. Первые байты .inode-файла - "IamT-

HE.inodeFILE".

/.boot Файл образа ОС, который будет загружаться в память

при стандартной загрузке. Этот файл имеет нулевую

длину, если файла загрузки не существует.

/.altboot Файл образа ОС, который будет загружаться в память

при альтернативной загрузке. Этот файл имеет нуле-

вую длину, если файла альтернативной загрузки не

существует.

14.2.2. Каталоги

Каталог - это просто файл, который имеет специальное значение

в файловой системе. Этот файл содержит набор строк, структура кото-

рых показана на следующем рисунке:

+------------------------------------------------------------------+

| |

| Смещение |

| +---- +------------------+ |

| | 0 | di_fname[16] | |

| | 16 | d_size[4] | |

| | 20 | di_first_xtnt[8] | |

| | 28 | di_xblk[4] | |

| один физический | 32 | di_ftime[4] | |

| блок каталога | 36 | di_mtime[4] | |

| | 40 | di_atime[4] | |

| +-------------+ | 44 | di_ctime[4] | |

| | 0 |-------------| 48 | di_num_xtnts[2] | |

| |-------------| | 50 | di_mode[2] | |

| | 1 | | 52 | di_uid[2] | |

| |-------------| | 54 | di_gid[2] | |

| | 2 | | 56 | di_nlink[2] | |

| |-------------| | 58 | di_zero[4] | |

| | 3 | | 62 | di_type[1] | |

| |-------------| | 63 | d_status[1] | |

| | 4 | +--- +------------------+ |

| |-------------| |

| | 5 | |

| |-------------| |

- 161 -

| | 6 | |

| |-------------| |

| | 7 | |

| |-------------| |

| | | |

| |

+------------------------------------------------------------------+

Рис. 27

Тип cтроки каталога определяется битами в области d_status

следующим образом:

-------------------------------------------------------------------

Bit 3 (FILE_LINK) Bit 0 (FILE_USED) Комментарий

-------------------------------------------------------------------

0 0 неиспользованная строка

каталога

0 1 нормальная, используемая

строка каталога

1 X ссылка на строку в /.inodes

(которая может использовать-

ся или не использоваться)

-------------------------------------------------------------------

Первая строка каталога всегда принадлежит файлу "." и включает

сигнатуру каталога ("IQNX"). Эта строка ссылается на собственный

каталог, указывая на строку в родительском каталоге, которая описы-

вает этот каталог.

Второй элемент - всегда принадлежит файлу "..". Эта строка

ссылается на родительский каталог, указывая на его первый блок.

Каждая строка каталога или определяет файл, или ссылается на строку

файла /.inodes. Inode-строки используются, когда имя файла превыша-

ет 16 символов или когда один файл имеет два или более имени.

Первый экстент файла (если их несколько) описывается в строке

каталога или /inode-файла. Дополнительные экстенты файла требуют

цепной список блоков экстентов, начало которого также находится в

строке каталога или /inode-файле. Каждый блок экстентов в цепи оп-

ределяет от 1 до 60 экстентов.

14.2.3. Связи

- 162 -

Файлы с именами, имеющими более 16 символов, и связи с другими

файлами реализованы специальной формой строки каталога. Эти строки

определяются битом _FILE_LINK (0x08) поля d_status.

Для этих файлов часть строки каталога перемещается в файл

/.inodes.

+------------------------------------------------------------------+

| |

| |

| Строка каталога Строка файла /.inodes |

| +------------+ |

| 0 |di_fname[48]| +--------------+ |

| 48 |di_inode_blk|-----------------> 0 |i_reserved[16]| |

| 52 |di_inode_ndx|--+ 16 |i_size | |

| 53 |di_spare[10]| 20 |i_first_xtnt | |

| 63 |d_status | 28 |i_xblk | |

| +------------+ 32 |i_ftime | |

| 36 |i_mtime | |

| 40 |i_atime | |

| 44 |i_ctime | |

| 48 |i_num_xtnts | |

| 50 |i_mode | |

| 52 |i_uid | |

| 54 |i_gid | |

| 56 |i_nlink | |

| 58 |i_zero | |

| 62 |i_type | |

| 63 |i_status | |

| +--------------+ |

| |

| |

+------------------------------------------------------------------+

Рис. 28

14.2.4. Блоки экстентов

Блоки эстентов используются для любого файла, который имеет

более одного экстента. Строка каталога di_xblk указывает на первый

блок экстентов, который в свою очередь определяет, где находятся

второй и последующие экстенты.

Блок экстентов соответствует одному дисковому блоку в 512 байт

и имеет следующий формат:

- 163 -

+------------------------------------------------------------------+

| |

| +--------------------------------------------+ |

| 0 | xblk_next_xblk[4] | |

| |--------------------------------------------| |

| 4 | xblk_prev_xblk[4] | |

| |--------------------------------------------| |

| 8 | xblk_num_xtnts[4] | |

| |--------------------------------------------| |

| 9 | xblk_spare[3] | |

| |--------------------------------------------| |

| 12 | xblk_num_blocks[4] | |

| +--------------------------------------------+ |

| |

| +--------------------------------------------+ |

| 16 | xblk_xtnts[0] | |

| |--------------------------------------------| |

| 24 | xblk_xtnts[1] | |

| |--------------------------------------------| |

| . . . |

| |--------------------------------------------| |

| 488 | xblk_xtnts[59] | |

| +--------------------------------------------+ |

| |

| +--------------------------------------------+ |

| 496 | xblk_signature[8] | "IamXblk"|

| |--------------------------------------------| (только |

| 504 | xblk_first_xtnt[8] | 1-й блок |

| +--------------------------------------------+ экстента)|

| |

+------------------------------------------------------------------+

Рис. 29

Каждый блок экстентов содержит:

- прямые/обратные указатели;

- количество экстентов;

- количество всех блоков во всех экстентах, определяемых этим

блоком экстента;

- указатели и количество блоков для каждого экстента;

- сигнатура ("IamXblk").

Первый блок экстентов также содержит резервный указатель на

первый экстент файла (который описан еще и в строке каталога или

- 164 -

/inodeфайла). Это позволит Вам восстановить все данные в файле,

располагая только этим блоком.

14.2.5. Файлы

Файлы или файловые экстенты - это группы блоков, описываемые

строками каталогов и /inode-файлов; у них нет жесткой структуры в

файловой системе QNX.

Большинство файлов в QNX 4 имеет следующую общую структуру:

+------------------------------------------------------------------+

| Корень |

| +-----+ |

| +-----+ |

| +-------+ |

| +---------------- ------------ |

| / | . | . . | | dir | |

| +----------------- ------------ |

| +-------------------+ |

| +---------------- ------------ |

| dir | . | . . | | file | |

| +----------------- ------------ |

| +---------------------------------+ | |

| | +----------------------+ |

| | +---+ +----+ +----+ |

| | | ---+----->| --+-...->| 0 | |

| | |----| |----| |----| |

| | | 0 |<-----+-- |<-...-+-- | Блоки |

| | |----| |----| |----| экстентов |

| | +-| #2 | |#62 | | | |

| | | |----| |----| |----| |

| | | | #3 |--+ |#63 | | | |

| | | |----| | |----| |----| |

| | | | |

| | | |----| | |----| |----| |

| | | |#61 | | | | +| #n | |

| | | |----| | |----| ||----| |

| |<---------+-| | | | 0 | || 0 | |

| | | +----+ | +----+ |+----+ |

| | | +-+ | |

| | | | +--+ |

| | | | | |

| +--- ---+ +---- ---+ +---- ---+ ... +---- ---+ |

| +---- ---+ +----- ---+ +----- ---+ +----- ---+ |

| экстент 1 экстент 2 экстент 3 экстент n |

+------------------------------------------------------------------+

- 165 -

Сигнатуры:

IQNX - "точка" входа каждого каталога,

IamXblk - заголовок каждого блока экстентов.

Рис. 30

14.3. Утилиты работы с файлами

Следующие утилиты позволяют Вам создавать и поддерживать дис-

ковую/файловую структуру:

- fdisk

- dinit

- chkfsys

- zap

- spatch

14.3.1. Утилита fdisk

Утилита fdisk создает и поддерживает блок раздела на жестком

диске. Этот блок совместим с другими операционными системами и мо-

жет быть поддержан версиями fdisk других ОС (хотя наш имеет преиму-

щество при распознавании QNX-специфической информации). Если заг-

рузчик раздела отсутствует или поврежден, fdisk может создать его.

ВНИМАНИЕ. Мы рекомендуем Вам сохранять распечатку таблицы

распределения раздела для каждого диска Вашей сети.

14.3.2. Утилита dinit

Утилита dinit создает (но Fsys поддерживает) следующее:

- блок загрузки;

- корневой блок;

- блоки битовой карты;

- корневой каталог;

- inode-файл (/.inodes)

14.3.3. Утилита chkfsys

Утилита chkfsys - основное средство сопровождения файловой

системы. Эта утилита:

- проверяет структуру каталога всего раздела диска, сообщает о

любой несовместимости и фиксирует ее, если возможно;

- проверяет все блочное распределение диска;

- 166 -

- записывает новый файл /.bitmap при Вашем согласии.

Утилита chkfsys работает при условии, что корневой блок не на-

рушен.

Если корневой блок нарушен, то утилита chkfsys сообщит Вам об

этом, чтобы Вы попытались восстановить его утилитой dinit.

14.3.4. Утилита zap

Утилита zap удаляет файлы или каталоги из файловой системы, не

возвращая используемые блоки в свободный список. Вам это может по-

надобиться по различным причинам:

- повреждение строки каталога;

- два файла занимают одно и то же пространство на диске (оши-

бочно).

Для того, чтобы удалить затертые файловые данные и восстано-

вить используемые дисковые блоки, используйте утилиту chkfsys.

14.3.5. Утилита spatch

Утилита spatch просматривает диск с искаженной информацией и

устраняет некоторые проблемы. С помощью этой утилиты можно считать

и перезаписать ошибочные блоки.

14.4. Процедуры восстановления диска

14.4.1. Использование утилиты chkfsys

Утилита chkfsys - это главное средство для проверки и восста-

новления поврежденной файловой системы. С ее помощью можно опреде-

лить и исправить некоторые нарушения, а также проверить целостность

дисковой системы в целом.

Обычно для утилиты chkfsys требуется, чтобы файловая система

была не задействована и чтобы не было файлов, открытых на данном

устройстве.

Вы должны завершить все процессы, которые открыли файлы или

могут их открыть, пока выполняется chkfsys.

Чтобы выполнить chkfsys для файловой системы /dev/hd0t77, сле-

дует ввести команду:

chkfsys /dev/hd0t77

Утилита просматривает весь дисковый раздел от корня вниз, соз-

давая внутреннюю копию битовой карты и проверяя согласованность

всех файлов и каталогов, которые она обнаруживает. После завершения

- 167 -

обработки всех файлов chkfsys сравнит внутреннюю битовую карту с

битовой картой на диске. Если они совпадают, то chkfsys завершает-

ся.

При обнаружении несоответствия, утилита chkfsys перепишет (с

Вашего согласия) битовую карту с данными о файлах, которые она об-

наружила и проверила на противоречивость.

Кроме того, проверяя блочное распределение (битовую карту),

chkfsys пытается фиксировать любые проблемы, обнаруженные при ска-

нировании.

Например, chkfsys может:

- установить признак "unbusy" файлам, которые записывались при

возникновении сбоя;

- установить размер файла в строке каталога, который соответс-

твует реальным данным.

Когда выполнять утилиту chkfsys

Утилиту chkfsys рекомендуется выполнять, как часть регулярных

плановых процедур сопровождения - это позволит Вам проверять це-

лостность данных на диске.

Особенно важно выполнить chkfsys после системного отказа, что-

бы определить поврежденные файлы.

Если Вы затрете некоторые файлы (zap) по некоторой причине Вам

необходимо выполнить chkfsys для восстановления потерянных блоков

на диске.

Использование утилиты chkfsys в работающей системе

Если Вы выполняете приложение, которое не может прерваться, Вы

не можете прекратить работу системы, чтобы выполнить chkfsys. Для

того, чтобы обеспечить проверку диска chkfsys, обычно требуется мо-

нопольное использование файловой системы. Но Вы можете определить

возможные проблемы в работающей системе, используя специальный ре-

жим chkfsys - "только-чтение":

chkfsys -f /dev/hd0t77

В режиме "-f" нельзя корректировать данные, но он дает Вам ин-

формацию о состоянии файловой системы. Если обнаруживаются серьез-

ные проблемы, то это немедленно фиксируется, при этом Вы можете ис-

пользовать другой специальный режим - "Rambo":

chkfsys -R /dev/hd0t77

- 168 -

_3Запомните:_0 Вы можете использовать режим "Rambo" только при ус-

ловии, что:

- активные файлы сейчас не открыты;

- активные файлы не будут открываться в течение процесса пере-

записи;

- любые открытые в данное время файлы не увеличатся в течение

этого процесса.

Использование режима "Rambo" фиксирует большинство ошибок, но,

т.к. Вы проверяете диск с работающей файловой системой и с открыты-

ми файлами, утилита chkfsys не будет:

- пытаться восстанавливать блоки битовой карты;

- проверять ошибки распределения блоков;

- пытаться вновь создавать файл /.inodes.

ВНИМАНИЕ. Риск запуска chkfsys в работающей системе заключает-

ся в том, что chkfsys и файловая система читают и

возможно записывают на диск одни и те же блоки. Кро-

ме этого, файловая система имеет внутренние кеш-дан-

ные о файлах и каталогах, которые не могут быть

скорректированы, при работе chkfsys. Статические из-

менения в файлах или каталогах, которые в данный мо-

мент не открыты, вероятно не вызовут проблем.

14.4.2. Восстановление удаленных файлов

Если файл случайно удален, то иногда его можно восстановить,

используя утилиту zap.

Для восстановления файла c помощью zap должны выполняться сле-

дующие условия:

- строка каталога для этого (удаленного) файла не должна быть

занята другим файлом;

- дисковые блоки, прежде используемые файлом, не должны быть

переназначены другому файлу.

Таким образом, если Вы действуете достаточно быстро или Вам

повезет, есть шанс, что следующей командой можно восстановить файл:

zap -u directory

14.4.3. Восстановление плохого блока в середине файла

На жестких дисках со временем могут появляться плохие блоки. В

некоторых случаях Вы могли бы восстановить большую часть или даже

все данные файла, содержащего плохой блок.

- 169 -

Некоторые плохие блоки являются результатом сбоев по питанию

или низкого качества носителя жесткого диска. В этих случаях просто

чтение и затем перезапись блока восстановит блок на короткий период

времени. Это позволит Вам скопировать целый файл куда-нибудь еще,

прежде чем блок испортится снова.

Эта процедура безболезненна и часто стоит того, чтобы ее вы-

полнить.

Для того, чтобы проверить блоки файла, Вы используете утилиту

spatch. При чтении плохого блока spatch сообщает об ошибке, но в

действительности, возможно, была прочитана часть "хороших" байтов

из этого блока. Запись того же блока обратно часто достигнет цели.

В то же время, spatch перезапишет правильный CRC (Циклический

контроль), это сделает блок хорошим (но, возможно, с неправильными

данными).

Вы можете затем скопировать весь файл куда-нибудь еще и затем

стереть поврежденный файл. Для того, чтобы завершить процедуру, не-

обходимо пометить такой блок, как плохой (добавить его в файл

/.bad_blks), затем восстановить остальные хорошие блоки, используя

утилиту chkfsys.

Если эти процедуры не помогут, то Вы можете использовать ути-

литу spatch, чтобы скопировать по возможности большую часть файла в

другой файл, затем затереть плохой файл и выполнить chkfsys.

14.5. Что делать, если Ваша система больше не загружается

Если функционирующая система QNX внезапно прекратила работу и

больше не загружается, то, возможно, произошло следующее:

- отказали аппаратные средства или были повреждены данные на

жестком диске;

- кто-то изменил/переписал файл загрузки или изменил файл сис-

темной инициализации - это два наиболее типичных случая.

Следующие шаги могут помочь Вам локализовать проблему.

14.5.1. Рекомендуемые действия

Шаг 1. Попытайтесь загрузиться с флоппи-дискеты или через сеть

Если у Вас есть сеть...

Если у Вас есть сеть, попытайтесь загрузить Вашу машину через

сеть. Если машина загрузится, Вам следует войти в систему, как ro-

ot, и затем запустить локальный Администратор файловой системы:

Fsys &

- 170 -

Если у Вас нет сети...

Если Вы не имеете доступа к сети QNX, то попытайтесь загрузить

QNX с флоппи-дискеты, которая использовалась для установки системы

на жесткий диск. В этом случае файловая система будет доступна.

Имейте в виду, что Вам нужно войти в систему, как root.

Шаг 2. Запустите драйвер жесткого диска

Теперь нужно запустить подходящий драйвер жесткого диска.

Например, для того, чтобы работать с диском, подключенным к

стандартному контроллеру, совместимому с Western Digital введите:

Fsys.wd &

Эта команда должна создать блочный специальный файл /dev/hd0,

который представляет весь жесткий диск.

Шаг 3. Выполните утилиту fdisk

Утилита fdisk немедленно даст Вам полезную информацию о состо-

янии жесткого диска. Утилита fdisk может локализовать одну из сле-

дующих проблем:

Ошибка чтения первого блока

Вероятная причина. Если fdisk сообщает об ошибке при чтении блока

раздела (который является первым физическим блоком на диске), то это

говорит об отказе дискового контроллера или жесткого диска.

Действия.

Если диск исправен, то, заменив плату контроллера, можно про-

должить использовать диск. В противном случае, Вы должны заменить

жесткий диск, вновь установить QNX и восстановить Ваши файлы с ко-

пии.

Неправильные дисковые параметры

Вероятная причина. Если fdisk успешно считает первый блок, но

сообщит о неправильных дисковых параметрах (#heads, #cylinders,

#sectors/cylinder), то это указывает на то, что аппаратные средства

вероятно "потеряли" информацию об этом жестком диске. Наиболее ве-

роятная причина в том, что разрядилась батарея памяти CMOS.

- 171 -

Действия.

Перезапустите процедуру аппаратной установки setup (или проце-

дуру выбора программируемых опций на PS/2). Конечно, замена батареи

более надежна.

Информация о плохом разделе

Вероятная причина. Если дисковый размер правильно определен

утилитой fdisk, но информация о разделе некорректна, то это означа-

ет, что данные в первом блоке физического диска были повреждены.

Действия.

Используйте fdisk, чтобы вновь создать правильную информацию о

разделе. Рекомендуется регистрировать или распечатывать правильную

информации о разделе на случай, если Вам когда-либо придется выпол-

нять этот шаг.

Шаг 4. Смонтируйте раздел, как блочный специальный файл

Вы проверили, что аппаратные средства работают (по крайней мере

для блока 1 ) и что для QNX определен правильный раздел. Теперь Вы

должны создать блочный специальный файл непосредственно для раздела

QNX:

mount -p /dev/hd0

Эта команда должна создать том /dev/hd0t77 или его эквивалент.

Если информация о разделе правильная, то это должно получиться.

Шаг 5. Установите файловую систему QNX

Пока Вы еще не знаете состояние файловой системы в разделе

QNX. Ваша цель теперь выполнить утилиту chkfsys на диске, чтобы оп-

ределить и, возможно, исправить файловую систему. Но сначала Вам

понадобится создать точку монтирования для файловой системы QNX.

Т.к. корень (/) уже существует (на флоппи или на удаленном диске

сети), Вам следует смонтировать локальный раздел на жестком диске,

как "только читаемую" файловую систему с именем /hd:

mount /dev/hd0t77 /hd -r

Выполнение команды mount зависит от состояния раздела QNX.

- 172 -

ВНИМАНИЕ. Если Вы загрузились с флоппи-дискеты и не знаете,

есть ли повреждения файловой системы на жестком дис-

ке (например, система не в состоянии загрузиться

из-за ошибки в файле загрузки или файле системной

инициализации), Вы можете изменить корневой префикс

в разделе жесткого диска следующей командой, что во-

зобновит нормальную работу системы:

/hd/bin/prefix -R /=/hd/

Если эта команда выполнится, Вы можете пропустить остальную

часть этого параграфа.

Если команда mount не выполняется

Если команда mount не выполняется, то вероятно повреждена пер-

вая часть раздела QNX (т.к. Fsys не устанавливается, что говорит об

искажении файловой системы). В этом случае Вы можете использовать

утилиту dinit для форирования информации на диске, необходимой для

Fsys:

dinit -hr /dev/hd0t77

Опция -r сообщает dinit, что требуется перезаписать:

- корневой блок;

- битовую карту (со всеми распределенными блоками);

- постоянные части корневого каталога.

После этого Вам понадобится вновь создать битовую карту с по-

мощью chkfsys даже в хорошем разделе. Вам следует теперь повторно

выдать команду mount и снова попытаться создать точку монтирования

для файловой системы QNX с именем /hd.

Шаг 6. Выполните утилиту chkfsys

Теперь по крайней мере часть Вашей файловой системы QNX должна

быть доступна. Вы можете использовать chkfsys, чтобы проверить фай-

ловую систему и восстановить по возможности большую часть данных.

-------------------------------------------------------------------

Если Вы загрузились: введите эту команду:

-------------------------------------------------------------------

с флоппи-дискеты /hd/bin/chkfsys /dev/hd0t77

через сеть chkfsys /dev/hd0t77

- 173 -

В каждом случае Вам следует отмечать возникающие проблемы и

позволить утилите chkfsys отработать до конца. Ваши дальнейшие

действия зависят от результата выполнения chkfsys.

14.5.2. Если диск неисправен

Если по некоторой причине Ваш диск полностью неисправен, чи-

тайте следующий раздел "Восстановление потерянных файлов и катало-

гов".

В некоторых случаях Вам вероятно придется вновь установить QNX

с флоппи-дискеты и восстановить информацию с Ваших резервных копий

файлов. Если значительная часть файловой системы повреждена или по-

теряны важные файлы, то восстановление с копии может быть наилучшей

альтернативой.

14.5.3. Если файловая система цела

Если Ваша файловая система цела, но машина не загружается с

жесткого диска, то вероятно повреждена:

- программа-загрузчик раздела в физическом блоке 1;

- программа-загрузчик QNX в первом блоке раздела QNX.

Для того, чтобы перезаписать программу-загрузчик раздела, ис-

пользуйте fdisk:

fdisk /dev/hd0 loader

Для того, чтобы перезаписать программу-загрузчик QNX, исполь-

зуйте dinit:

dinit -b /dev/hd0t77

Теперь Вы сможете загрузить Вашу систему.

14.6. Восстановление потерянных файлов и каталогов

Вы обнаружили, что файлы или каталоги полностью потеряны

вследствие отказа диска. Если после выполнения chkfsys Вы узнаете,

что определенные ключевые файлы или каталоги не были восстановлены,

то Вы можете использовать spatch, чтобы восстановить некоторые или

все данные. Перед этим Вам следует сначала подробно ознакомиться с

организацией файловой системы QNX, описанной в этой главе в разделе

"Обзор структуры диска QNX 4". Следует также изучить описание ути-

литы spatch в "Utilities Reference".

- 174 -

14.6.1. Каталог lost+found

Утилита spatch может скомпоновать область дисковых блоков в

файловой системе, как реальный файл (или каталог), в

каталоге lost+found.

Каталог lost+found должен всегда существовать на жестком диске

и иметь объем по крайней мере для 126 строк.

После использования spatch для компоновки этих частей диска в

каталоге lost+found, Вам следует немедленно выполнить chkfsys, что-

бы вновь создать битовую карту и проверить целостность файловой

системы, которая теперь включает новые файлы. После того как

chkfsys проверит диск, Вы можете переместить эти файлы (или катало-

ги) в другие каталоги на диске. Рекомендуется иметь каталог

lost+found пустым, чтобы всегда была возможность восстанавливать

файлы.

14.6.2. Использование утилиты spatch

Утилита spatch имеет специальный пункт меню Mark, который поз-

воляет Вам задать область дисковых блоков в разделе. Следующая ко-

манда просматривает начальный раздел QNX:

spatch /dev/hd0t77

Помните, что Вы должны иметь соответствующие права доступа к

блочному специальныому файлу.

После выбора Mark, в первый раз утилита spatch отметит текущий

дисковый блок, как первый блок в области блоков. Затем Вы можете

перейти к последнему блоку области и выбрать Mark второй раз. Это

определит область блоков для spatch.

Появившееся специальное меню предоставит Вам следующий выбор:

- удаление всех отметок;

- компоновка выделенных блоков в lost+found как файл;

- компоновка выделенных блоков в lost+found как каталог;

- копирование выделенных блоков в файл;

- копирование с добавлением выделенных блоков в файл;

- игнорирование второй отметки, что позволяет выбрать другой

блок.

Если Вы выберете компоновку или копирование блоков в файл/ка-

талог, то spatch предложит Вам сначала выполнить сканирование всего

диска для поиска блоков экстентов xblk, которые относятся к этой

области блоков. Если Вы согласитесь, то spatch выполнит сканирова-

ние и, обнаружив блок, даст Вам возможность компоновки всех экстен-

тов, определяемых этим блоком экстентов xblk, и с некоторыми други-

- 175 -

ми, связанными с ними xblk. Сканирование xblk позволяет восстанав-

ливать потенциально большие дисковые файлы (или каталоги), как одно

целое.

Если Вы отказываетесь от сканирования для поиска xblk или ни-

каких xblk не обнаруживается, то будет создаваться файл/каталог,

который имеет единственный экстент, содержащий только эти блоки.

Если Вы копируете, то Вам следует определить файл на другом

диске (файловой системе). Не забывайте всегда выполнять chkfsys

после компоновки или копирования нескольких файлов или каталогов.

.

- 176 -