Резервное копирование и восстановление данных
Статья включает:
Даже если у вас имеется надежное оборудование и источник электропитания, даже если вы уверены в том, что никогда случайно не сотрете свои рабочие файлы, все равно имеет смысл выполнять резервное копирование файлов. Стратегии резервного копирования различаются в зависимости от простоты их использования, скорости работы, устойчивости к внешним воздействиям и стоимости.
Далее будут отдельно рассматриваться разные типы архивов, тем не менее, в таблице ниже мы приведем краткие сведения по расширениям файлов архивов и утилитам, которые могут использоваться для работы с ними.
Расширение файла | Утилита |
---|---|
.tar | pax или tar |
.cpio | pax или cpio |
.gz | gzip или gunzip |
.bz2 | bzip2 или bunzip2 |
.xz | xz |
.tar.gz или .tgz | tar -z |
.tar.bz2 | tar -j |
.tar.xz | tar -J |
Не важно, насколько устойчивой к внешним воздействиям является файловая система, в реальной жизни всегда возникают ситуации, когда искажаются данные на диске. Время от времени отказывает оборудование, возникают перебои в работе источника питания и т.д.
Файловая система QNX4 была построена с учетом возможности возникновения таких катастрофических событий. Основным принципом, положенным в основу структуры файловой системы, является то, что при любых обстоятельствах должна сохраняться целостность файловой системы. В то время как большая часть данных проходит через буферную кэш-память и записывается с небольшой задержкой, запись критических данных файловой системы происходит немедленно. Обновления блоков каталога, блоков индексных дескрипторов (inode blocks), блоков экстентов (extent blocks) и блоков битовой карты (bitmap) сразу же записываются на диск, чтобы гарантировать сохранность структуры файловой системы (т.е. данные на диске никогда не должны быть внутренне противоречивыми).
![]() | Файловая система Power-Safe сконструирована таким образом, что ее невозможно испортить; у пользователя всегда есть доступ к текущей версии данных. Некоторые сведения о восстановлении данных действительны только для файловых систем QNX4. |
При возникновении аварийной ситуации можно использовать различные утилиты: fdisk, dinit, chkfsys и spatch. Они помогут обнаружить и восстановить поврежденные файлы, которые были открыты на запись в момент возникновения аварии. Во многих случаях удается полностью восстановить файловую систему.
Иногда характер повреждений может быть более серьезным. Например, вполне возможно, что поврежденный сектор (bad block) окажется в середине файла, записанного на жесткий диск, либо (что еще хуже) в середине каталога или какого-нибудь критического блока данных.
Опять же, поставляемые утилиты помогут определить степень повреждения. Часто можно перестроить файловую систему таким образом, чтобы избежать использования поврежденных областей диска. В таком случае некоторые данные будут потеряны, но путем некоторых усилий можно будет восстановить большую часть поврежденных данных.
Стратегия резервного копирования состоит в проведении одной или нескольких операций копирования данных. Резервное копирование можно проводить периодически или по отдельной команде запуска процедуры. Для каждой включенной в вашу стратегию процедуры резервного копирования необходимо выбрать:
Очень часто комплексная стратегия резервного копирования включает в себя проведения нескольких сеансов копирования на локальной стороне (т.е. с управлением и размещением архивов на той же машине, где расположены сами данные), а для ряда сеансов копируемые данные сохраняются на удаленной машине. Например, можно ежедневно автоматически копировать данные разработчика на другой раздел жесткого диска, а один раз в неделю автоматически сохранять резервную копию тех же данных на централизованный удаленный сервер.
На начальном этапе определения стратегии резервного копирования нужно, прежде всего, выбрать место сохранения копируемых данных и носитель, где эти данные будут сохраняться. Эти факторы, в первую очередь, влияют на стоимость оборудования и среды сохранения, связанные с вашей системой.
Для выбора наилучшего варианта определитесь с тем, что нужно копировать и как часто. Эти параметры помогут определить емкость носителя для хранения копируемых данных, скорость передачи по каналу данных и то, как несколько пользователей смогут совместно использовать этот ресурс.
Выбор необходимого носителя для хранения данных зависит от того, создаются ли резервные копии данных на локальной машине или же данные передаются по сети на удаленную машину:
В таблице ниже приведен перечень некоторых сред для хранения резервных данных, а также их доступность при локальной или удаленной операции копирования.
Среда | Локально/Нейтрино | Удаленно |
---|---|---|
Гибкий диск (флоппи) | Да | Да |
Устройство LS-120 | Да | Да |
Магнитная лента | Нет | Да |
CD-диски | Да | Да |
DVD-диски | Нет | Да |
Жесткий диск | Да | Да |
Флэш-память | Да | Да |
Память большой емкости с интерфейсом USB | Да | Да |
При резервном копировании данных нужно решить, будет ли отдельно копироваться каждый файл и каталог или будет создаваться архив с набором файлов. Также нужно решить, будет ли проводиться операция компрессии данных для уменьшения требований к объему хранилища для резервных копий.
Потеря времени на выполнение компрессии и декомпрессии данных может компенсироваться уменьшением времени при чтении/записи сжатых данных на среду хранения или на передачу по сети. Для уменьшения издержек в процессе выполнения компрессии данных можно задачу компрессии резервной копии запустить в фоновом режиме. Возможно, эта процедура компрессии будет запускаться через несколько дней или недель для компрессии более поздних резервных копий (это уменьшит занимаемое ими место), в то время как последние резервные копии останутся максимально доступными.
Операцию резервного копирования нужно производить настолько часто, чтобы восстанавливаемые данные были бы достаточно актуальными или чтобы актуальности можно было бы достичь путем затраты минимальных усилий. Для группы разработчиков программного обеспечения периодичность копирования может составлять от одного дня до недели. Каждый день задержки в копировании, приводящий к необходимости использования устарелой копии, будет стоить лишнего дня на восстановление данных. Если необходимо резервное копирование финансовых данных или данных по продажам, то эта операция обычно выполняется ежедневно или дважды в день. Хорошей практикой является использование хранилища данных на стороне.
Резервные копии можно создавать отдельно для каждого файла, а можно сохранять резервные копии нескольких файлов в архиве. Файлы, помещенные в архив, проще идентифицировать по принадлежности к определенному времени создания или компьютеру (например, можно присваивать архиву соответствующее имя). Архив проще передавать целиком в другие системы (передается единственный файл архива), а иногда архив оказывается быстрее сжать по сравнению с компрессией разрозненных файлов.
В ЗОСРВ «Нейтрино» для архива можно использовать несколько форматов, включая pax и tar. В ЗОСРВ «Нейтрино» поддерживается также формат cpio (*.cpio), но мы рекомендуем его выбирать лишь в том случае, когда архив предназначен для других систем, использующих именно формат cpio.
Самым простым способом создания резервной копии в системе является индивидуальное дублирование файлов с помощью команд cp или pax. Например, дублирование единственного файла может быть сделано так:
cp -t мой_файл каталог_для_копии
или
echo мой_файл | pax -rw каталог_для_копии
Для резервного копирования целого каталога нужно ввести:
cp -Rt мой_каталог каталог_для_копии
или
find мой_каталог -print | pax -rw каталог_для_копии
Для копирования только определенных файлов, соответствующих некоторому критерию, нужно использовать утилиту find или другое средство для идентификации копируемых файлов и перенаправить вывод утилите pax -rw, например, так:
find мой_каталог -name '*.[ch]' | pax -rw каталог_для_копии
Для объединения отдельных файлов в единый архив можно использовать программы tar или pax. Эти утилиты берут все передаваемые им файлы и помещают их в один большой непрерывный файл. Эти же утилиты могут использоваться для извлечения отдельных файлов из архива.
![]() | В файловой системе не поддерживаются архивы (или отдельные файлы) размером больше 2 Гбайт. |
Когда в качестве архиватора используется утилита pax (режим -w), то создаваемые ей архивы имеют формат TAR. Какую из команд использовать, определяется тем синтаксисом командной строки, который вам больше нравится, поскольку создаваемые архивы будут идентичны. Утилита pax была создана как часть стандарта POSIX для обеспечения совместимого механизма для обмена архивами (pax расшифровывается как Portable Archive eXchange — обмен переносимыми архивами). Это позволило избежать конфликтов, возникающих при работе с различными вариантами программы tar, при которых наблюдалось их разное поведение.
Далее приведены возможные варианты структуры архива:
pax -wf my_archive.tar code.с
В этой команде берется файл code.с
, и из него создается архив (который иногда называется "tarball") с именем my_archive.tar
. Ключ -wf требует от команды pax записи файла.
pax -wf my_archive.tar code.с header.h readme.txt
Программа pax создает из всех них один архив с именем my_archive.tar
.
pax -wf my_archive.tar workspace
По этой команде создается архив с именем my_archive.tar
, куда включается все содержимое каталога workspace
.
partitions
). Необходимо указать имя каталога раздела в командной строке:
pax -wf my_archive.tar /fs/hd0-t79
По команде все содержимое раздела t79 архивируется в один очень большой архив с именем my_archive.tar
.
Архив можно хранить на своей локальной системе, но мы рекомендуем обязательно делать копию на удаленной системе. Если вдруг произойдет физическое разрушение локальной системы или окажется поврежденным жесткий диск, то локальный архив будет потерян.
Для извлечения файлов из архива можно использовать утилиту pax с ключом -r:
pax -rf my_archive.tar
Или можно использовать команду tar с ключами -x (от англ. extract — извлечь), -v (от англ. verbose — вывод информации о ходе работы программы) и -f (от англ. filename — имя файла):
tar -xvf my_archive.tar
![]() | Чтобы просмотреть содержимое архива без извлечения из него файлов, можно в программе tar вместо ключа -x использовать ключ -t. |
Архив может иметь достаточно большой размер, особенно если архивируется целый раздел диска. Для уменьшения занимаемого архивом места можно сжать архив, хотя для компрессии при сохранении и для декомпрессии при извлечении файлов требуется некоторое время. В ЗОСРВ «Нейтрино» имеются следующие программы компрессии/декомпрессии:
Обычно лучше всего использовать программу gzip, потому что ее поддержка осуществляется во многих операционных системах, тогда как программа xz используется, главным образом, для обеспечения максимальной степени компрессии. Существует также много других программ для компрессии от сторонних производителей.
Например, для сжатия архива my_archive.tar
с получением результата в файле my_archive.tar.gz
нужно ввести:
gzip my_archive.tar
Размер сжатого файла будет несколько меньше исходного, поэтому его легче хранить. Для некоторых утилит, включая gzip, имеется множество ключей, которые позволяют управлять процессом и качеством компрессии. Обычно, чем лучше сжимается файл, тем больше времени требуется на эту процедуру.
![]() | По умолчанию сжатый файл получает расширение .tar.gz , но может встретиться и расширение .tgz . Для задания этого суффикса нужно при вызове программы gzip использовать ключ -S. |
Программа xz обеспечивает гораздо большую степень сжатия файлов, но и требует существенно большее число ресурсов. В том числе и временных.
Например, для сжатия архива my_archive.tar
с получением результата в файле my_archive.tar.xz
нужно ввести:
xz my_archive.tar
Для декомпрессии архива используется соответствующая утилита. В случае файлов с расширениями .gz
или .tgz
необходимо использовать программу gunzip таким образом:
gunzip my_archive.tar.gz
или
gunzip my_archive.tgz
В обоих случаях происходит декомпрессия файла в результирующий файл my_archive.tar
. Для извлечения файла из архива без предварительной декомпрессии можно также запустить программу tar с ключом -z:
tar -xzf my_archive.tgz
Декомпрессия архива с расширением .xz
:
xz -d my_archive.tar.xz
Для извлечения файла из архива .xz
без предварительной декомпрессии через утилиту tar:
tar -xf my_archive.tar.xz
В ЗОСРВ «Нейтрино» поддерживаются устройства типа LS-120, магнитооптические дисководы, встроенные ZIP-дисководы и устройства для хранения массивов данных с интерфейсом USB. У каждого из этих устройств есть свои достоинства и недостатки. Поэтому принятие окончательного решения по использованию для резервного копирования конкретного устройства остается за вами. Инструкции по установке этого оборудования приведены в разделе Подключение оборудования.
Идентичные образы жестких дисков можно делать с помощью простых утилит, входящих в состав ЗОСРВ «Нейтрино». Эта процедура выполняет полное копирование "сырых данных" (raw copy) с диска.
Если у вас имеются идентичные жесткие диски (одинаковые производители, размеры, номер модели), то можно просто присоединить этот диск к системе. Убедитесь, что вы знаете установки для диска (например, первичный ведомый диск для интерфейса EIDE).
После присоединения диска загрузите систему ЗОСРВ «Нейтрино». После загрузки должен быть автоматически обнаружен жесткий диск, и для него будет создана запись в каталоге /dev
. Если в системе имеются всего два диска, то новая запись появится в виде /dev/hd1
. Если же имеется более двух дисков (дисководов), то, соответственно, вновь установленный диск может получить имя hd1
, hd2
и т.д. В этом случае для идентификации конкретного диска придется использовать программу fdisk. Вновь установленный диск не должен иметь никаких разделов и быть чистым.
![]() | Перед началом выполнения последующих действий вы должны быть абсолютно уверены в правильной идентификации дисков. В противном случае можно скопировать содержимое пустого диска на диск, содержащий исходные данные. Затертые таким способом данные восстановить невозможно. |
После идентификации дисков выполните команду:
ср -V /dev/hd0 /dev/hd1
где hd0
— исходный жесткий диск с данными, а hd1
— новый чистый диск, на который копируются данные.
По этой команде содержимое первого диска полностью копируется на второй диск, включая таблицы разделов, начальные загрузчики и т.д. Чтобы убедиться в идентичности дисков, нужно просто отключить исходный диск и поставить на его место диск-копию. После этого перезагрузить систему. Должна произойти загрузка ЗОСРВ «Нейтрино», и все должно выглядеть и работать, как на исходном диске. Сохраните резервную копию в безопасном месте.
Некоторые пользователи ЗОСРВ «Нейтрино» выбирают в качестве резервных копий образы типа Ghost
. Мы не рекомендуем делать это. С таких копий может неправильно восстанавливаться информация о разделах, что приведет к неправильной загрузке файловой системы. Если вы снова запустите на таком диске программу fdisk, то появится сообщение о некорректной информации, и программа fdisk запишет на диск неправильные данные.
Создание резервной копии на удаленной системе является более безопасным способом хранения данных, чем хранение в локальной системе. Это связано с тем, что удаленный сервер обычно является более надежной системой. В зависимости от ситуации, возможно, имеет смысл приобрести хорошую систему с оборудованием серверного класса, а затем купить обычные системы для ведения разработок. Не забывайте регулярно создавать резервные копии сервера.
Сохранение второй резервной копии на удаленной системе часто является простым, но эффективным способом предотвращения потери данных. Например, если базовый архив ваших программных кодов хранится в отдельном каталоге на локальной системе, и вдруг по непредвиденной причине отказывает жесткий диск, то вы потеряете и локальную, и резервную копию архива. Размещая же копию на удаленной файловой системе, вы эффективным образом снижаете шансы потери данных. Поэтому мы настоятельно рекомендуем использовать этот метод.
![]() | Если вы размещаете файл в файловой системе, не относящейся к типу «Нейтрино», то могут быть утеряны существующие права доступа к файлу. Файлы в среде ЗОСРВ (как и во всех системах типа UNIX) имеют специальные права доступа (см. раздел Файлы и каталоги), которые теряются, если отдельные файлы сохраняются в файловых системах типа Windows. Если создается архив (см. раздел "Архивация данных" ранее в этой статье), то права доступа к файлам, записанным внутри архива, сохраняются. |
Существуют другие версии систем для удаленного резервного копирования, которые доступны в ЗОСРВ «Нейтрино» как продукты сторонних производителей. Многие из них являются бесплатными. Попробуйте поискать в Интернете инструменты, которые подойдут для использования в вашей компании и ее проектах.
Если вы когда-нибудь сталкивались с проблемами при работе в файловой системе QNX4, то вам нужно представлять, как в этой файловой системе данные сохраняются на диске. Такое знание поможет распознать и, возможно, предотвратить повреждение данных, если вы захотите перестроить файловую систему. В заголовочном файле <sys/fs_qnx4.h>
содержатся определения, касающиеся структуры данных, о чем пойдет речь в данном разделе.
С полным описанием файловой системы QNX4 можно ознакомиться в разделе Работа с файловыми системами.
Файловая система QNX4 может занимать целый диск (например, в случае флоппи-дисков) или один из разделов жесткого диска. В пределах раздела жесткого диска в состав файловой системы QNX4 входят следующие компоненты (рис. 1):
Указанные структуры создаются при инициализации файловой системы утилитой dinit.
Блок загрузчика
Первый физический блок раздела диска является блоком загрузчика. В нем содержится начальный код, который загружается программой BIOS и выполняет дальнейшую загрузку ОС с данного раздела. Если на диске отсутствуют разделы (например, это флоппи-диск), то блоком загрузчика является первый физический блок диска.
Корневой блок
Корневым является второй блок раздела файловой системы QNX4. Его структура соответствует структуре стандартного каталога, и в ней содержится поле метки и информация по индексным дескрипторам (inode) для таких специальных файлов, как:
/
) /.inodes
/.boot
/.altboot
В файлах /.boot
и /.altboot
содержатся образы операционной системы, которые могут быть загружены с помощью начального загрузчика.
Обычно для ЗОСРВ «Нейтрино» загружается образ, хранящийся в файле /.boot
. Однако если имеется непустой файл /.altboot
, то можно загрузить хранящийся в этом файле образ. Подробнее об этом см. раздел Управление запуском ЗОСРВ «Нейтрино».
Блоки битовой карты
За корневым блоком последовательно располагается несколько блоков. Эти битовые блоки формируют битовую карту (матрицу) раздела файловой системы QNX4. Каждому физическому блоку раздела соответствует один бит карты. Таким образом, один блок битовой карты используется для каждых 4096 физических блоков диска (это соответствует дисковому пространству 2 Мбайт).
Если значение бита равно нулю, то соответствующий блок диска не используется. Неиспользуемые биты в конце последнего блока битовой карты (для которых нет соответствующих физических блоков на диске) установлены во включенное состояние.
Назначение битов происходит, начиная с самого младшего бита нулевого байта первого блока битовой карты – это в файловой системе QNX4 соответствует блоку с номером 1.
Корневой каталог
Корневой каталог располагается после блоков битовой карты. Корневой каталог – это обычный каталог (см. подраздел "Каталоги" далее в этой статье) с двумя исключениями:
.
) и "две точки" (..
) ссылаются на одну и ту же индексную информацию, а именно на индексный узел корневого каталога в корневом блоке;
/.bitmap
, /.inodes
, /.boot
и /.altboot
; эти записи организованы таким образом, чтобы программы, которые передают информацию файловой системы, могли бы работать с записями как с нормальными файлами. Корневой каталог изначально создается с помощью утилиты dinit размером в 4 блока, что обеспечивает достаточно места для записей на 32 каталога.
В корневом каталоге (/
) имеются записи для нескольких специальных файлов (рис. 2), которые всегда присутствуют в файловой системе QNX4. Эти файлы также создаются с помощью утилиты dinit во время первой инициализации файловой системы.
Файл | Описание |
---|---|
/. | Ссылка на корневой каталог / |
/.. | Ссылка на корневой каталог / |
/.bitmap | Файл с атрибутом "только чтение", в котором хранится битовая карта для всех блоков диска. Каждый бит указывает, используется ли соответствующий блок |
/.inodes | Обычный файл, состоящий, по крайней мере, из одного блока для флоппи- или RAM-диска и из 16 блоков для других дисков. В файле /.inodes содержится набор записей индексных дескрипторов (inode). Первая запись является зарезервированной, это сигнатурная/информационная область. Первые байты файла .inode содержат текст IamTHE.inodeFILE |
/.longfilenames | Дополнительный файл, в котором сохраняется информация о файлах, чьи имена имеют длину более 48 символов. См. подраздел Файловая система QNX4 |
/.boot | Это файл образа ОС, который будет загружен в память во время процесса стандартной загрузки. Если файл загрузки отсутствует, то этот файл будет иметь нулевую длину |
/.altboot | Это файл образа ОС, который будет загружен в память во время процесса альтернативной загрузки. Если файл загрузки отсутствует, то этот файл будет иметь нулевую длину |
Каталог представляет собой файл, имеющий в файловой системе специальное назначение. В нем содержится коллекция элементов каталога (рис. 3).
Биты в поле i_status указывают тип элемента каталога.
QNX4FS_FILE_LINK | QNX4FS_FILE_USED | Тип элемента |
---|---|---|
0 | 0 | Неиспользуемый элемент каталога |
0 | 1 | Обычный, используемый элемент каталога |
1 | 0 | Ссылка на соответствующую запись в файле /.inodes (которую следует использовать) |
1 | 1 | Некорректный тип элемента |
Первый элемент каталога всегда используется для ссылки с именем .
("точка") и включает сигнатуру каталога ("I♥KPDA"). Шестнадцатеричный эквивалент символа ♥ равен 0x03
. Этот элемент ссылается на сам каталог, указывая на элемент внутри родительского каталога, который описывает данный каталог.
Второй элемент каталога всегда имеет запись о связи с именем ..
("две точки"). Этот элемент ссылается на родительский каталог, указывая на первый блок родительского каталога.
Каждый элемент каталога либо определяет файл, либо указывает на запись внутри файла /.inodes
. Индексные записи inode используются в случае, когда имя файла оказывается длиннее 16 символов или когда одно или более имен связаны в один файл. Если включена поддержка длинных имен, то в корневом каталоге файловой системы присутствует также файл .longfilenames
, в котором сохраняется информация о файлах, чьи имена имеют длину более 48 символов.
Первый экстент файла (если он имеется) описывается в элементе каталога или в записи индексного дескриптора. Дополнительные экстенты файла требуют использования связанного списка блоков экстентов, начало которого находится также в элементе каталога в записи индексного дескриптора. В каждом блоке экстентов может содержаться информация, но не более чем 60 экстентов.
Файлы с длиной имени более 16 символов и файлы, которые являются ссылками (link) на другие файлы, имеют специальную форму записи в элементе каталога. Для этих записей в поле i_status устанавливается бит QNX4FS_FILE_LINK
(0x08).
Для таких файлов часть элемента каталога перемещается в файл /.inodes
(рис. 4).
Если имя файла оказывается длиннее 48 символов, то:
.longfilenames
.
Блоки экстентов используются для любого файла, у которого есть больше чем один экстент. Поле i_xblk в элементе каталога указывает на один из таких блоков экстентов, в котором, в свою очередь, определяется, где могут быть найдены второй и последующие экстенты.
Блок экстентов занимает в точности один сектор диска размером 512 байтов и имеет формат, представленный на рис. 5.
Каждый блок экстентов содержит:
В первом блоке экстентов содержится также избыточный указатель на первый экстент файла (он присутствует также в элементе каталога или в записи индексного дескриптора). Это позволяет восстановить все данные в файле, обнаружив только один этот блок.
Файлы или экстенты файлов представляют собой группы блоков, указанные в элементах каталога или в записях inode. Для них в файловой системе QNX4 нет какой-либо специальной структуры.
Если случаются какие-либо аварийные отказы, то для восстановления системы и файлов можно использовать следующие утилиты:
В этом разделе дается краткое описание перечисленных утилит.
С помощью утилиты fdisk можно создавать и обслуживать блок раздела на жестком диске. Этот блок совместим с другими операционными системами, и работа с ним может осуществляться с помощью программ fdisk от других ОС (однако преимуществом нашей версии программы является то, что она распознает специфическую для ЗОСРВ «Нейтрино» информацию). Если загрузчик раздела отсутствует или поврежден, то утилита fdisk может создать его.
![]() | Мы рекомендуем сохранять в виде печатной копии информацию о таблице разделов каждого из дисков в сети. |
С помощью утилиты dinit создаются следующие компоненты файловой системы QNX4:
/.inodes
; /.longfilenames
. Если первые несколько блоков вашей файловой системы оказываются поврежденными, то можно попытаться их восстановить с помощью сначала утилиты dinit с ключом -r, а затем утилиты chkfsys. Более подробно см. в описании утилиты dinit.
Утилита chkfsys является главным инструментом, необходимым для обслуживания файловой системы.
![]() | Утилита chkfsys запрашивается при повреждении файловой системы устойчивой к сбоям питания; для этого типа файловой системы необходимо использовать chkqnx6fs. |
С ее помощью можно выполнить следующее:
/.bitmap
(при подтверждении с вашей стороны). При запуске утилиты chkfsys предполагается, что корневой блок имеет нормальную рабочую структуру. Если структура корневого блока нарушена, то выдается сообщение об этом, и утилита chkfsys прекращает работу. Восстановление структуры корневого блока производится с помощью утилиты dinit.
С помощью утилиты dcheck происходит поиск на диске поврежденных секторов, предпринимающий попытку прочесть каждый сектор. Если при запуске утилиты указывается ключ -m, то поврежденный сектор изымается из использования с помощью соответствующей отметки в битовой карте (файл /.bitmap
).
Если во время работы утилиты обнаруживается файл /.bad_blks
, то происходит обновление битовой карты и воссоздание файла /.bad_blks
. Утилиту dcheck можно запускать несколько раз для увеличения надежности распознавания поврежденных секторов и их добавления в файл /.bad_blks
.
С помощью утилиты zap пользователь с учетной записью root
может удалять из файловой системы файлы или каталоги без возвращения использованных блоков в список освободившихся. Это может потребоваться, например, в случае повреждения элемента каталога или при возникновении ситуации, когда два файла ошибочно занимают на диске одно и то же место.
Восстановление ошибочно стертого файла
Если вы по ошибке стерли файл, то иногда стертый файл можно восстановить с помощью утилиты zap, если использовать ключ -u и запустить утилиту немедленно после удаления. Восстановление удаленного файла с помощью утилиты zap возможно при выполнении следующих условий:
Иногда может оказаться, что из-за повреждения диска полностью потеряны файлы или каталоги. Если выяснится, что после работы утилиты chkfsys не были восстановлены некоторые ключевые файлы и каталоги, то можно попробовать запустить утилиту spatch для восстановления некоторых или даже всех данных.
Утилита spatch дает возможность просканировать весь диск напрямую и устранить мелкие проблемы. Иногда удается устранить временно возникающие проблемы на диске путем чтения и перезаписи сбоящего блока с помощью утилиты spatch.
![]() | Перед тем как использовать утилиту spatch, убедитесь в том, что вы понимаете тонкости структуры файловой системы QNX4. Обратитесь еще раз к подразделу "Дисковая структура файловой системы QNX4" ранее в этой статье. |
Утилита chkfsys является вашим основным инструментом для проверки и восстановления потенциально поврежденной файловой системы. С ее помощью можно идентифицировать и откорректировать массу небольших проблем, а также проверить целостность всей дисковой системы.
Обычно для нормальной работы утилиты chkfsys необходимо, чтобы файловая система была в неиспользуемом состоянии и на устройстве не были открыты никакие файлы. Нужно закрыть все процессы, которые открывают или могут открыть файлы во время работы chkfsys.
Для запуска утилиты chkfsys в точке монтирования введите команду:
chkfsys точка_монтирования
Утилита выполнит сканирование всего раздела диска, начиная с корневой области и далее вниз по структуре каталогов, выполняя построение внутренней копии битовой карты и проверяя целостность всех найденных в процессе сканирования файлов и каталогов.
После окончания обработки всех файлов производится сравнение внутренней копии битовой карты с содержимым существующей битовой карты на диске. Если данные согласуются, работа программы chkfsys успешно завершается. Если найдены несоответствия, то после получения согласия со стороны пользователя произойдет перезапись битовой карты в соответствии с найденными и верифицированными файлами.
В дополнение к верификации выделения блоков (битовой карты) при работе утилиты chkfsys делается попытка исправить любые возникающие в процессе сканирования проблемы. Например, с помощью утилиты chkfsys можно:
Когда нужно запускать утилиту chkfsys
Весьма полезно запускать утилиту chkfsys при проведении регулярно выполняемых процедур технического обслуживания — это позволит убедиться в том, что данные на диске не повреждены. Например, хорошо бы запускать утилиту chkfsys на сетевых серверах при каждой их загрузке. Автоматическая проверка файловой системы в момент загрузки гарантирует, что во время сканирования будет сделана попытка устранить все обнаруженные проблемы. Для автоматизации этого процесса добавьте chkfsys в файл re.local
на сервере (см. раздел Управление запуском ЗОСРВ «Нейтрино»).
Утилиту chkfsys особенно важно запускать после системного сбоя, аварийного отключения источника питания, после неожиданного перезапуска системы. Это позволит проверить, не были ли повреждены какие-нибудь файлы. Утилита проверяет на диске состояние флага "целостности" файловой системы ("clean" flag), чтобы определить, находится ли в настоящее время система в целостном, непротиворечивом состоянии.
Флаг "целостности" хранится на диске, его установка или сброс производится системой. Сброс этого флага происходит в момент окончания монтирования файловой системы, а установка — при размонтировании файловой системы. При установленном флаге "целостности" подразумевается, что файловая система не повреждена. Если при запуске утилиты chkfsys флаг "целостности" сброшен, то делается попытка устранить проблему.
Для утилиты chkfsys можно использовать ключ -u, при котором установленный флаг "целостности" игнорируется, и утилита запускается безусловно. Такая необходимость может возникнуть, когда:
zapped
) некоторые файлы; Использование утилиты chkfsys на работающей системе
Для проведения всесторонней верификации диска с помощью утилиты chkfsys обычно требуется эксклюзивное использование файловой системы.
![]() | Запуск утилиты chkfsys на работающей системе сопряжен с определенным риском, потому что со стороны утилиты и со стороны файловой системы может производиться чтение и, возможно, даже запись одного и того же блока диска.
Если вы все же запустите утилиту chkfsys при работающей файловой системе и утилита выполнит запись чего-нибудь, то файловой системе будет отправлено сообщение о необходимости приостановки ее работы. В ответ на это сообщение файловая система перемонтирует себя и обратится к диску для повторного считывания всех данных. В этом случае все открытые файлы будут помечены как устаревшие, при попытке чтения или записи будет выдаваться ошибка типа Статические изменения в файлах и каталогах, которые в текущий момент не открыты файловой системой, вероятно, не приведут к таким проблемам. |
Если запущено приложение, для которого невозможна приостановка работы, или невозможно запустить утилиту chkfsys, потому что файлы были открыты для обновления, то попробуйте при запуске утилиты chkfsys использовать ключ -f:
chkfsys -f /dev/hd0t79
При таком варианте запуска для утилиты устанавливается специальный режим "только чтение", при котором возможна проверка всей файловой системы с открытыми файлами (без проведения каких-либо корректирующих действий). Результаты такой проверки могут дать подсказку о том, что делать дальше.
На жестких дисках со временем появляются поврежденные секторы. В большинстве случаев удается восстановить большинство данных или даже все данные файла, содержащего поврежденные секторы.
Некоторые поврежденные секторы возникают из-за отказов или сбоев питания или из-за плохой среды носителя жесткого диска. В этих случаях иногда простые операции чтения и перезаписи "восстанавливают" сектор на некоторое время. За это время можно успеть скопировать весь файл в другое место, пока сектор не откажет снова. От такой процедуры нет никакого вреда, и ее часто стоит попробовать.
Для проверки блоков внутри файла используется утилита spatch. Когда дело доходит до поврежденного сектора, утилита spatch должна выдавать сообщение об ошибке, но при этом из сектора может быть фактически считана порция "хороших" байтов. Запись назад того же самого сектора часто заканчивается успешно.
В то же самое время при перезаписи восстанавливается правильное значение CRC (Cyclic Redundancy Check, контроль при помощи циклического избыточного кода), что может снова сделать блок неповрежденным (хотя, возможно, и с ошибочными данными).
После этого можно скопировать файл в другое место и применить к ранее поврежденному файлу утилиту zap. Для завершения процедуры ненадежный блок помечается как поврежденный (путем добавления его в файл /.bad_blks
), после чего запускается утилита chkfsys для восстановления остальных неповрежденных блоков.
Если такая процедура не поможет, то можно воспользоваться утилитой spatch для копирования в другой файл как можно большего числа блоков поврежденного файла. После этого нужно применить к поврежденному файлу утилиту zap, а затем запустить утилиту chkfsys.
Если ранее работавшая система на основе ЗОСРВ «Нейтрино» неожиданно перестает работать и не загружается, то это может быть следствием следующего:
Далее приводятся шаги, которые помогут вам идентифицировать проблему. Если это возможно, предлагаются корректирующие действия.
root
. root
.
devb-aha4 ключи &
Если используется другой тип адаптера, введите его имя, например:
devb-eide ключи qnx4 ключи &
В этом случае будет создан блочно-ориентированный файл с именем /dev/hd0
, который представляет весь жесткий диск.
Запуск этой утилиты сразу же даст вам полезную информацию о состоянии жесткого диска. Утилита fdisk может выдать информацию, касающуюся одной из нескольких типов проблем.
К этому моменту было установлено, что оборудование работает (по крайней мере, это касается блока 1) и что для ЗОСРВ «Нейтрино» определено правильное разделение на разделы. Теперь нужно создать блочно-ориентированный файл для самого раздела QNX4 и смонтировать его в качестве файловой системы QNX4:
mount -e /dev/hd0 mount /dev/hd0t79 /hd
После этого будет создан том с именем /dev/hd0t79
. В зависимости от состояния раздела файловой системы QNX4 монтирование может быть успешным или неудачным. Если информация о разделе правильна, то проблем не будет. Поскольку корневой каталог (/
) уже существует (на компакт-диске или на удаленном диске сети), то мы смонтировали раздел локального жесткого диска как файловую систему с именем /hd
.
Теперь основная задача состоит в запуске на диске утилиты chkfsys для проверки файловой системы, а возможно, и устранения ее неисправностей.
![]() | Если загрузка происходила с компакт-диска, и не ожидается, что есть какие-либо неисправности в файловой системе на жестком диске (например, система не могла загрузиться из-за простой ошибки в загрузочном файле или в системном файле инициализации), то можно просмотреть символическую связь с разделом вашего жесткого диска в префиксном дереве в памяти администратора процессов:
ln -sP /hd / Если вы запустили эту команду, то остальную часть текста в этом разделе можно пропустить. |
Если не удается выполнить команду монтирования, то, скорее всего, поврежден раздел файловой системы QNX4 (поскольку драйвер откажется монтировать нечто, что рассматривается как некорректная файловая система).
В этом случае можно воспользоваться утилитой dinit, чтобы восстановить на диске достаточное количество хороших данных, с которыми сможет работать драйвер:
dinit -hr /dev/hd0t79
Использование ключа -r является указанием на перезапись следующей информации:
Теперь нужно попробовать снова ввести команду mount и попытаться создать для файловой системы QNX4 точку монтирования с именем /hd
.
После успешного монтирования необходимо перестроить битовую карту с помощью утилиты chkfsys, даже для хорошего раздела диска.
Хотя бы часть файловой системы QNX4 теперь должна быть доступной. Можно запустить утилиту chkfsys, для того чтобы проверить файловую систему и восстановить максимальный объем данных.
Если жесткий диск смонтирован как /hd
(например, загрузка производилась с компакт-диска), то введите команду:
путь_на_CD/chkfsys /hd
Если жесткий диск смонтирован как /
(например, при загрузке по сети), введите команду:
сетевой_путь/chkfsys /
В любом случае выполните следующее:
Если диск окажется совершенно не восстанавливаемым, можно попробовать использовать утилиту spatch (см. ранее в этой статье) для восстановления отдельных файлов и каталогов. В некоторых случаях можно попробовать повторно инсталлировать ЗОСРВ «Нейтрино» и восстановить диск из резервной копии.
Если значительная часть файловой системы безвозвратно потеряна или потеряны важные файлы, то восстановление из резервной копии будет наилучшим вариантом.
Если файловая система не повреждена, но компьютер по-прежнему отказывается загружаться с жесткого диска, то, вероятно, повреждения следует искать:
Для перезаписи загрузчика раздела можно воспользоваться утилитой fdisk:
fdisk /dev/hd0 loader
Для перезаписи загрузчика системы можно воспользоваться утилитой dinit:
dinit -b /dev/hd0t79
Теперь ваша система должна успешно загружаться.
Предыдущий раздел: перейти