ÃÂÕáÛãçÃÂÙÃÂÞ CUDA ØÔÕÃÂœ? phpMyAdmin - Xakep Online
ÃÂÕáÛãçÃÂÙÃÂÞ CUDA ØÔÕÃÂœ? phpMyAdmin - Xakep Online
ÃÂÕáÛãçÃÂÙÃÂÞ CUDA ØÔÕÃÂœ? phpMyAdmin - Xakep Online
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
unixoid<br />
БЛОКИ С ПРЯМОЙ<br />
АДРЕСАЦИЕЙ<br />
БЛОКИ<br />
С КОСВЕННОЙ<br />
АДРЕСАЦИЕЙ<br />
INODE<br />
...<br />
БЛОКИ<br />
С ДВОЙНОЙ<br />
КОСВЕННОЙ<br />
АДРЕСАЦИЕЙ<br />
МАКСИМ «HATCHET» ПОЛЕВОЙ<br />
/ MAKS.HATCHET@YANDEX.RU/<br />
ОПЕРАЦИЯ<br />
«РЕИНКАРНАЦИЯ»<br />
Ручное восстановление данных в Linux<br />
Восстановить удаленные файлы с помощью специальных программ<br />
может даже учитель информатики, а вот проделать ту же<br />
операцию путем ручного редактирования управляющих структур<br />
файловой системы способен далеко не каждый. В экстремальной<br />
ситуации нужного софта может не оказаться под рукой.<br />
Придется полагаться только на себя и собственные знания.<br />
>> unixoid<br />
Сегодня мы поговорим о ручном восстановлении<br />
файлов с файловых систем ext2 и ext3. Сразу<br />
хочу тебя предупредить, что ничего сложного<br />
в этом нет. Дизайн официальных файловых систем<br />
Linux очень прост и понятен даже новичку.<br />
Все, что от тебя потребуется — внимательность<br />
и голова на плечах.<br />
Следующие два раздела посвящены тому, как<br />
организовано хранение файлов в ext2/3, и что<br />
происходит, когда пользователь выполняет<br />
команду rm. Последующие разделы описывают<br />
технику восстановления, основанную на информации<br />
первых двух.<br />
АНАТОМИЯ ФАЙЛОВОЙ<br />
СИСТЕМЫ EXT2/EXT3<br />
В начале раздела расположен boot-сектор длиной<br />
1024 байта. Он используется некоторыми<br />
загрузчиками для хранения своей второй части<br />
(например, Grub записывает туда код Stage 1.5).<br />
Далее следует супер-блок, в котором хранится<br />
ключевая информация о структуре файловой<br />
системы (своего рода главный конфиг). Чтобы<br />
прочитать информацию супер-блока, запусти<br />
следующую команду:<br />
# tune2fs -l /dev/hda1<br />
Ты увидишь массу информации, отражающей<br />
текущее состояние файловой системы, а также<br />
значения, заданные при ее создании и неизменяемые<br />
со временем. Одно из таких значений<br />
— «Block size», которое, скорее всего, будет<br />
равно 4096, то есть 4 Кб. Это размер одного<br />
блока файловой системы, базовой неделимой<br />
единицы хранимой информации. Все, что<br />
находится в ФС, разбито на огромное количество<br />
таких блоков, и даже если размер файла<br />
меньше размера блока, для его хранения будет<br />
использован целый блок, а большие файлы<br />
могут занимать сотни тысяч блоков. Общее количество<br />
блоков файловой системы прописано<br />
в поле «Block count», а количество свободных<br />
— во «Free blocks».<br />
Сразу за супер-блоком следуют дескрипторы<br />
групп и карты свободного пространства (битмапы),<br />
на которых мы не будем останавливаться.<br />
А вот расположенная сразу за ними inodeтаблица<br />
вызывает особый интерес, потому<br />
как именно она является централизованным<br />
хранилищем всей информации о каждом файле.<br />
Таблица представляет собой массив структур<br />
типа ext2_inode, размер которого задается<br />
во время создания файловой системы и не<br />
изменяется со временем (смотри поле «Inode<br />
Count» супер-блока). Каждый элемент этого<br />
массива описывает один файл и хранит такую<br />
информацию, как тип (обычный, каталог, ссылка<br />
и т.д.), схема размещения на диске, логический/<br />
физический размер, дата/время создания/<br />
модификации/последнего доступа/удаления,<br />
количество ссылок на файл и права доступа.<br />
Структура ext2_inode, выступающая в роли<br />
элемента массива, определена в файле source/<br />
include/linux/ext2_fs.h и выглядит так:<br />
Структура inode<br />
struct ext2_inode {<br />
/* Ðåæèì äîñòóïà ê ôàéëó */<br />
__u16 i_mode;<br />
/* UID âëàäåëüöà ôàéëà */<br />
__u16 i_uid;<br />
/* Ðàçìåð ôàéëà â áàéòàõ */<br />
__u32 i_size;<br />
/* Âðåìÿ ïîñëåäíåãî äîñòóïà */<br />
__u32 i_atime;<br />
082<br />
XÀÊÅÐ 07 /127/ 09