Чтение онлайн

на главную - закладки

Жанры

Восстановление данных. Практическое руководство
Шрифт:

/* 0x28 */ int32_t cg_rotor; /* Положение посл. исп. блока */

/* 0x2C */ int32_t cg_frotor; /* Положение посл. исп. фрагмента */

/* 0x30 */ int32_t cg_irotor; /* Положение посл. исп. inode */

/* 0x34 */ int32_t cg_frsum[MAXFRAG]; /* Счетчик доступных фрагментов */

/* 0x54 */ int32_t cg_old_btotoff; /* (int32) блоков на цилиндр */

/* 0x58 */ int32_t cg_old_boff; /* (u_int16) своб. позиций блоков */

/* 0x5C */ int32_t cg_iusedoff; /* (u_int8)
карта исп. inode */

/* 0x60 */ int32_t сg_freeoff; /* (u_int8) карта своб. блоков */

/* 0x64 */ int32_t cg_nextfreeoff; /* (u_int8) след. своб. блок */

/* 0x68 */ int32_t cg_clustersumoff; /* (u_int32) счетчик своб. кластеров */

/* 0x6C */ int32_t cg_clusteroff; /* (u_int8) карта своб. кластеров */

/* 0x70 */ int32_t cg_nclusterblks; /* Кол-во кластеров в этой гц */

/* 0x74 */ int32_t cg_niblk; /* Кол-во блоков inode в этой гц */

/* 0x78 */ int32_t cg_initediblk; /* Посл. инициализированный inode */

/* 0х7С */ int32_t cg_sparecon32[3]; /* Зарезервировано */

/* 0x00 */ ufs_time_t cg_time; /* Время последней записи */

/* 0x00 */ int64_t cg_sparecon64[3]; /* Зарезервировано */

/* 0x00 */ u_int8_t cg_space[1]; /* Место для карт гц */

/* реально больше */

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

За картами следует массив inode, смещение которого содержится в поле

cg_iusedoff
(адрес первой группы inode продублирован в суперблоке). По сути, в UFS структура inode ничем не отличается от ext2fs, только расположение полей другое. К тому же, имеется только один блок косвенной адресации вместо трех, но это уже детали, не имеющие большого практического значения. Рассмотрим назначение фундаментальных полей, к числу которых принадлежат:

?

di_nlink
— количество ссылок на файл (0 означает "удален");

?

di_size
— размер файла в байтах;

?

di_atime
/
di_atimensec
— время последнего доступа к файлу;

?

di_mtime
/
di_mtimensec
— время последней модификации;

?

di_ctime
/
di_ctimensec
— время последнего изменения inode;

?

di_db
— адреса первых 12 блоков данных файла, отсчитываемые во фрагментах от начала группы цилиндров;

?

di_ib
адрес блоков косвенной адресации (фрагменты от начала группы).

Сама структура inode определена в файле /src/ufs/ufs/dinode.h. Для UFS1 эта структура выглядит, как показано в листинге 8.9 и на рис. 8.11.

Рис. 8.11. Схематичное изображение inode

Листинг 8.9. Структура inode в UFS1

struct dinode {

/* 0x00 */ uint16_t di_mode; /* 0: IFMT, права доступа; */

/* см. ниже */

/* 0x02 */ int16_t di_nlink; /* 2: Счетчик ссылок */

/* 0x04 */ union {

uint16_t oldids[2]; /* 4: Ffs: старые ID */

/* пользователя и группы */

int32_t inumber; /* 4: Lfs: номер inode */

} di_u;

/* 0x08 */ u_int64_t di_size; /* 8: Счетчик байтов файла */

/* 0x10 */ int32_t di_atime; /* 16: Время последнего доступа */

/* 0x14 */ int32_t di_atimensec; /* 20: Время последнего доступа */

/* 0x18 */ int32_t di_mtime; /* 24: Время последней */

/* модификации */

/* 0x1C */ int32_t di_mtimensec; /* 28: Время последней */

/* модификации */

/* 0x20 */ int32_t di_ctime; /* 32: Время последнего */

/* изменения inode */

/* 0x24 */ int32_t di_ctimensec; /* 36: Время последнего */

/* изменения inode */

/* 0x28 */ ufs_daddr_t di_db[NDADDR]; /* 40: Непоср. дисковые блоки */

/* 0x58 */ ufs_daddr_t di_ib[NIADDR]; /* 88: Косв. дисковые блоки */

/* 0x64 */ u_int32_t di_flags; /* 100: Флаги статуса (chflags) */

/* 0x68 */ int32_t di_blocks; /* 104: Факт, занятые блоки */

/* 0x6C */ int32_t di_gen; /* 108: Номер генерации */

/* 0x70 */ u_int32_t di_uid; /* 112: Владелец файла */

/* 0x74 */ u_int32_t di_gid; /* 116: Группа файла */

/* 0x78 */ int32_t di_spare[2]; /* 120: Зарезервировано */

};

В UFS2 формат inode был существенно изменен — появилось множество новых полей, удвоилась ширина адресных полей (листинг 8.10). Что это обозначает для нас в практическом плане? Смещения всех полей изменились, только и всего, а общий принцип работы с индексными дескрипторами остался прежним.

Листинг 8.10. Структура inode в USF2

Поделиться:
Популярные книги

Жена проклятого некроманта

Рахманова Диана
Фантастика:
фэнтези
6.60
рейтинг книги
Жена проклятого некроманта

Сын Тишайшего

Яманов Александр
1. Царь Федя
Фантастика:
попаданцы
альтернативная история
фэнтези
5.20
рейтинг книги
Сын Тишайшего

Демон

Парсиев Дмитрий
2. История одного эволюционера
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Демон

30 сребреников

Распопов Дмитрий Викторович
1. 30 сребреников
Фантастика:
попаданцы
альтернативная история
фэнтези
фантастика: прочее
5.00
рейтинг книги
30 сребреников

Небо в огне. Штурмовик из будущего

Политов Дмитрий Валерьевич
Военно-историческая фантастика
Фантастика:
боевая фантастика
7.42
рейтинг книги
Небо в огне. Штурмовик из будущего

Осознание. Пятый пояс

Игнатов Михаил Павлович
14. Путь
Фантастика:
героическая фантастика
5.00
рейтинг книги
Осознание. Пятый пояс

Камень

Минин Станислав
1. Камень
Фантастика:
боевая фантастика
6.80
рейтинг книги
Камень

Блокада. Знаменитый роман-эпопея в одном томе

Чаковский Александр Борисович
Проза:
военная проза
7.00
рейтинг книги
Блокада. Знаменитый роман-эпопея в одном томе

Цикл "Отмороженный". Компиляция. Книги 1-14

Гарцевич Евгений Александрович
Отмороженный
Фантастика:
боевая фантастика
рпг
постапокалипсис
5.00
рейтинг книги
Цикл Отмороженный. Компиляция. Книги 1-14

Книга 4. Игра Кота

Прокофьев Роман Юрьевич
4. ОДИН ИЗ СЕМИ
Фантастика:
фэнтези
боевая фантастика
рпг
6.68
рейтинг книги
Книга 4. Игра Кота

Мастер 2

Чащин Валерий
2. Мастер
Фантастика:
фэнтези
городское фэнтези
попаданцы
технофэнтези
4.50
рейтинг книги
Мастер 2

Новый Рал 2

Северный Лис
2. Рал!
Фантастика:
фэнтези
7.62
рейтинг книги
Новый Рал 2

Низший 2

Михайлов Дем Алексеевич
2. Низший!
Фантастика:
боевая фантастика
7.07
рейтинг книги
Низший 2

Под маской, или Страшилка в академии магии

Цвик Катерина Александровна
Фантастика:
юмористическая фантастика
7.78
рейтинг книги
Под маской, или Страшилка в академии магии