Крис Касперски - Восстановление данных. Практическое руководство
- Название:Восстановление данных. Практическое руководство
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2006
- Город:Санкт-Петербург
- ISBN:5-94157-455-X
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Крис Касперски - Восстановление данных. Практическое руководство краткое содержание
Книга представляет собой пошаговое руководство по восстановлению поврежденных данных на жестких и оптических дисках. Подробно рассмотрена структура популярных файловых систем: NTFS, ext2/ext3, UFS/FFS и др. Описаны автоматические методы восстановления данных для операционных систем Windows и Linux. Приведены способы ручного восстановления, используемые в случае, когда автоматическое восстановление невозможно. Материал сопровождается большим количеством полезных советов и исчерпывающим справочным материалом. На компакт-диске помешены полезные утилиты и исходные коды, приведенные в книге.
Для пользователей ПК
Восстановление данных. Практическое руководство - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Восстановление удаленных файлов под ext2fs
Файловая система ext2fs все еще остается базовой файловой системой для многих клонов Linux, поэтому рассмотрим ее первой. Концепции, которые она исповедует, во многом схожи с NTFS, так что культурного шока при переходе с NTFS на ext2fs вы не испытаете. Подробное описание структуры хранения данных ищите в документе "Design and Implementation of the Second Extended Filesystem" (см. список рекомендованной литературы и ресурсов Интернета в данном разделе), а также книге Эндрю Таненбаума "Operating Systems: Design and Implementation", электронную версию которой можно раздобыть в e-Mule. Исходные тексты дисковых утилит (драйвер файловой системы, lde, debugfs) также не помешают.
В начале диска расположен загрузочный сектор, который на незагрузочных разделах может быть пустым. За ним по смещению 1024 байта от начала первого сектора лежит суперблок (super-block), содержащий ключевую информацию о структуре файловой системы. В FAT и NTFS эта информация хранится непосредственно в загрузочном секторе. В первую очередь нас будет интересовать 32-разрядное поле s_log_block_size
, расположенное по смещению 18h
байт от начала суперблока. Здесь хранится размер одного блока (block) или, в терминологии MS-DOS/Windows, кластера, выраженный в виде указателя позиции, на которую нужно сдвинуть число 200h
. В естественных единицах это будет звучать так: block_size == 200h << s_log_block_size
(байт). То есть если s_log_block_size
равен нулю, размер одного блока составляет 400h
байт или два стандартных сектора. Структура дискового тома, отформатированного под ext2fs, показана в листинге 8.4.
Листинг 8.4. Структура дискового тома, размеченного под ext2fs
смещение размер описание
-------- ------ --------
0 1 boot record ; Загрузочный сектор
-- block group 0 -- ; Группа блоков 0
(1024 bytes) 1 superblock ; Суперблок
2 1 group descriptors ; Дескриптор группы
3 1 block bitmap ; Карта свободных блоков
4 1 inode bitmap ; Карта свободных inode
5 214 inode table ; Массив inode
; (сведения о файлах)
219 7974 data blocks ; Блоки данных
; (файлы, каталоги)
-- block group 1 -- ; Группа блоков 1
8193 1 superblock backup ; Копия суперблока
8194 1 group descriptors backup ; Копия дескриптора группы
8195 1 block bitmap ; Карта свободных блоков
8196 1 inode bitmap ; Карта свободных inode
8197 214 inode table ; Массив inode
; (сведения о файлах)
8408 7974 data blocks ; Блоки данных
; (файлы, каталоги)
-- block group 2 -- ; Группа блоков 2
16385 1 block bitmap ; Карта свободных блоков
16386 1 inode bitmap ; Карта свободных inode
16387 214 inode table ; Массив inode
; (сведения о файлах)
16601 3879 data blocks ; Блоки данных
; (файлы, каталоги)
Вслед за суперблоком идут дескрипторы групп (group descriptors) и карты свободного пространства (block bitmap/inode bitmaps которые не имеют большого практического значения для наших целей. Что же касается таблицы inode, расположенной за ними, то она заслуживает более подробного рассмотрения. В ext2fs (как и многих других файловых системах из мира UNIX), так называемый индексный дескриптор (inode) играет ту же самую роль, что и файловая запись в NTFS. Здесь сосредоточена вся информация о файле: тип файла (обычный файл, каталог, символьная ссылка и т.д.), его логический и физический размер, схема размещения на диске, время создания, модификации, последнего доступа или удаления, права доступа, а также ссылки на файл. Формат представления inode описан в листинге 8.5.
Листинг 8.5. Формат представления inode
смещение размер описание
-------- ------ --------
0 2 i_mode ; Формат представления
2 2 i_uid ; Uid пользователя
4 4 i_size ; Размер файла в байтах
8 4 i_atime ; Время последнего доступа к файлу
12 4 i_ctime ; Время создания файла
16 4 i_mtime ; Время модификации файла
20 4 i_dtime ; Время удаления файла
24 2 i_gid ; Gid группы
26 2 i_links_count ; Количество ссылок на файл (0 — файл удален)
28 4 i_blocks ; Количество блоков, принадлежащих файлу
32 4 i_flags ; Различные флаги
36 4 i_osdl ; Значение, зависящее от ОС
40 12 x 4 i_block ; Ссылки на первые 12 блоков файла
88 4 i_iblock ; 1х INDIRECT BLOCK
92 4 i_2iblock ; 2x INDIRECT BLOCK
96 4 i_3iblock ; 3x INDIRECT BLOCK
100 4 i_generation ; Поколение файла (используется NFS)
104 4 i_file_acl ; Внешние атрибуты
108 4 i_dir_acl ; higher size
112 4 i_faddr ; Положение последнего фрагмента
116 12 i_osd2 ; Структура, зависящая от ОС
Первые 12 блоков, занимаемых файлом, называются непосредственными блоками (для наглядности они выделены полужирным шрифтом). Они хранятся в массиве DIRECT BLOCKS
непосредственно в теле inode. Каждый элемент массива представляет собой 32-битный номер блока. При среднем значении BLOCK_SIZE
, равном 4 Кбайт, непосредственные блоки могут адресовать до 4×12 == 48
Кбайт данных. Если файл превышает этот размер, создаются один или несколько блоков косвенной адресации ( INDIRECT BLOCK
). Первый блок косвенной адресации ( 1x INDIRECT BLOCK
или просто INDIRECT BLOCK
) хранит ссылки на другие непосредственные блоки. Адрес этого блока хранится в поле i_indirect_block
в inode. Как легко вычислить, он адресует порядка BLOCK_SIZE/sizeof(DWORD) * BLOCK_SIZE == 4096/4 *4
Мбайт данных. Если этого окажется недостаточно, создается косвенный блок двойной косвенной адресации ( 2х INDIRECT BLOCK
или DOUBLE INDIRECT BLOCK
), хранящий указатели на косвенные блоки, что позволяет адресовать ( BLOCK_SIZE/sizeof(DWORD))**2* BLOCK_SIZE =4096/4 ** 4096 == 4
Гбайт данных. Если же и этого все равно недостаточно, создается блок тройной косвенной адресации ( 3х INDIRECT BLOCK
или TRIPLE INDIRECT BLOCK
), содержащий ссылки на блоки двойной косвенной адресации. Иерархия непосредственных блоков и блоков косвенной адресации показана на рис. 8.6 (блок тройной косвенной адресации не показан).

Рис. 8.6. Порядок размещения файла на диске — иерархия непосредственных и косвенных блоков (блок косвенной адресации третьего порядка не показан)
По сравнению с NTFS такая схема хранения информации о размещении устроена намного проще. Вместе с тем, она и гораздо "прожорливее". С другой стороны, ее несомненное достоинство по сравнению с NTFS состоит в том, что поскольку все ссылки хранятся в неупакованном виде, для каждого блока файла можно быстро найти соответствующий ему косвенный блок, даже если inode полностью разрушен!
Читать дальшеИнтервал:
Закладка: