Jump to content
Восточное Дегунино

Нарушения логической структуры данных


Denis

1,565 views

Допустим, мы знаем, что на диске должны быть определенные файлы, и открываем его через Проводник Windows. Из таблицы разделов система выясняет расположение разделов диска. ОС обращается к блокам, в которых должна располагаться файловая система, берет оттуда сведения о местонахождении блоков с содержимым файлов, отображает список файлов и папок, а далее может открыть и содержимое файлов.

Если ОС не смогла обнаружить разделы, файловые системы на них, в файловой системе отсутствуют или искажены записи о файлах, либо эти записи ссылаются на несуществующие блоки — мы думаем о потере информации. Понятно, что сама информация с диска никуда не делась, просто утрачены или некорректны ссылки на нее. Проблема на любом из уровней логической иерархии делает данные недоступными через обычные средства ОС, и не более того!

Причины и механизмы повреждения логической структуры

Любую многоуровневую систему испортить очень легко — достаточно «выбить из нее любой кирпич». Механизмы повреждения логической структуры могут быть различными:

- физический дефект секторов, хранивших записи таблицы разделов или составляющих файловой системы; 

- аппаратные сбои в процессе записи данных: 

  1. одна из типичных причин — броски и «провалы» питания, которые влияют на работу и дисков, и контроллеров ATA; 
  2. извлечение USB-дисков, когда на них проводится запись, — еще одна типичная ситуация; 
  3. прожиг лазерных дисков никак не контролируется в реальном времени, и ошибки при их записи/перезаписи — обычное дело; 
  4. сбои оперативной памяти — запись на диск кешируется, и ошибки в кеше закономерно приводят к ошибкам на диске; 

- системные ошибки при выполнении операций с диском: 

  1. особенно уязвимы логические структуры в процессе дефрагментации дисков, когда перенос блоков данных чередуется с обновлением записей ФС; 
  2. автоматическое исправление ошибок на дисках при их проверке порой усугубляет появившиеся проблемы; 
  3. принудительное завершение процессов, ведущих запись на диск; 

- «жесткое» выключение или перезагрузка компьютера в процессе записи; 

- опрометчивые действия пользователей. Дисковые утилиты на рабочем компьютере «чайника» — примерно то же, что заряженный пистолет в руках ребенка. Не меньший риск представляют и попытки установить несколько систем, различные менеджеры загрузки, всевозможные «оптимизаторы дисков», словом, все, что так или иначе может затронуть MBR или файловые системы;

- действия вредоносных программ (вирусов), искажающих или уничтожающих записи файловой системы. Хотя на первое место сегодня вышли программы-шпионы и прочая «нечисть», ориентированная на Интернет, традиционные файловые вирусы никуда не исчезли! Забавный пример недавнего времени — Trojan:Win32/Bumat!rts (Win32.HLLW.Lime), который присваивает папкам на диске атрибут «скрытый» и создает исполняемые файлы точно с теми же именами. 

Обо всех возможных вариантах повреждения логической структуры данных легко догадаться, четко представляя уровни этой структуры. Кое-что возможно лишь чисто теоретически, другие нарушения на практике встречаются довольно часто.

При обычной загрузке операционная система не проводит проверку целостности дисков и томов на них. Скажем так — она безоговорочно верит записям таблиц разделов и файловых систем! К сожалению, при искажении логических структур такое доверие вполне может «выйти боком».

Есть лишь один механизм самопроверки, который срабатывает далеко не всегда. При загрузке ОС для каждого смонтированного тома устанавливается так называемый «грязный бит» (VolumeDirty, или Dirty Bit). При корректном завершении работы системы этот флаг снимается. Если работа была завершена аварийно, например, отключением питания, «грязный бит» остается на томе.

При каждой загрузке ОС ядро вызывает программу %WinDir%\System32 \autochk.exe, которая проверяет, заданы ли «грязные биты» томов. Если «грязный бит» присутствует, программа autochk немедленно запускает команду chkdsk /f для этого тома. Команда chkdsk /f проверяет целостность файловой системы и пытается устранить все возможные неисправности тома.

Чтобы проверить наличие «грязного бита» на томе, необходимо ввести команду fsutil dirty query C:, где C: — буква диска. Для установки «грязного бита» вручную введите команду fsutil dirty set C:, где C: — буква диска. При следующей загрузке системы диск будет проверен автоматически. Снять «грязный бит» вручную нельзя, остается только перезагрузить систему и дождаться завершения автоматической проверки.

Уничтожение или повреждение главной загрузочной записи приводит к тому, что ОС считает диск непроинициализированным и, естественно, сразу же предлагает его инициализировать. При инициализации MBR или GPT переписываются заново, существовавшие разделы в любом случае исчезают.

Таблица разделов может повреждаться по-разному. Искажением таблицы разделов порой «грешат» программы для «неразрушающего переразбиения дисков» наподобие Partition Magic.

Некорректное изменение ссылки на первый сектор раздела заставляет ОС искать загрузчик и начало таблицы размещения файлов там, где их нет — диск становится якобы неотформатированным. Если отформатировать такой раздел, как предлагает ОС, будет создана новая ФС, начиная с начального сектора раздела согласно таблице разделов. Пока еще абсолютно целы, хотя и недоступны, и записи старой ФС, и все блоки данных. Когда на томе начинает производиться запись, возникают реальные проблемы:

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

- по мере заполнения диска будут последовательно затерты кластеры со старыми данными — восстановить их станет невозможно. 

Известная категория ошибок — перекрестные ссылки. Они могут появляться на любом уровне логической структуры. Обычно такие ошибки являются следствием несогласованной записи на диск, а иногда происходят по вине программ для манипуляций с разделами и ФС.

Например, в одной из записей таблицы разделов неправильно указан размер раздела. Получается, что конец предыдущего раздела «наползает» на начало следующего.

Очередной файл вполне может быть помещен в тот кластер, в котором располагались записи файловой системы следующего раздела. В результате запись на один диск в какой-то момент приведет к исчезновению следующего логического диска!

Чаще перекрестные ошибки возникают внутри файловой системы одного раздела. Две записи ФС ссылаются на один и тот же кластер. Скорее всего, валидным окажется тот файл, который был записан последним. Файл, на который ссылается более ранняя запись, в таком случае будет обрезан и безнадежно испорчен.

Файловые системы FAT подвержены возникновению перекрестных записей и «битых» файлов в большей мере, чем NTFS. В NTFS работает механизм контроля транзакций, и он чаще всего предупреждает появление неоднозначных ссылок.

0 Comments


Recommended Comments

There are no comments to display.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...