Шрифт:
/* 0x00 */ int32_t fs_firstfield; /* Связный список файловых систем */
/* 0x04 */ int32_t fs_unused_1; /* для внутренних суперблоков */
/* 0x08 */ ufs_daddr_t fs_sblkno;
/* Адрес суперблока в файловой системе (фс) */
/* 0x0C */ ufs_daddr_t fs_cblkno; /* Смещение блока цилиндров в фс */
/* 0x10 */ ufs_daddr_t fs_iblkno; /* Смещение блоков inode в фс */
/* 0x14 */ ufs_daddr_t fs_dblkno; /* Смещение 1-го блока данных после
группы цил. */
/* 0x18 */ int32_t fs_cgoffset; /* Смещение группы цилиндров */
/* 0x1C */ int32_t fs_cgmask; /* Используется в calc mod fs_ntrak */
/* 0x20 */ time_t fs_time; /* Время последней записи */
/* 0x24 */ int32_t fs_size; /* Количество блоков в фс */
/* 0x28 */ int32_t fs_dsize; /* Количество блоков данных в фс */
/* 0х2С */ int32_t fs_nog; /* Количество групп цилиндров */
/* 0x30 */ int32_t fs_bsize; /* Размер базовых блоков в фс */
/* 0x34 */ int32_t fs_fsize; /* Размер фрагментов блоков в фс */
/* 0x38 */ int32_t fs_frag; /* Количество фрагментов в блоке в фс */
/* Параметры конфигурации */
/* 0x3C */ int32_t fs_minfree; /* Мин. процент свободных блоков */
/* 0x40 */ int32_t fs_rotdelay; /* Мин. задержка (мс) для оптимального
след. блока */
/* 0x44 */ int32_t fs_rps; /* Обороты диска в минуту */
/* Размеры, определяемое кол-вом гц и их размерами */
/* 0x98 */ ufs_daddr_t fs_csaddr; /* Адрес блока информации гц */
/* 0х9С */ int32_t fs_cssize; /* Размер блока информации гц */
/* 0xA0 */ int32_t fs_cgsize; /* Размер группы цилиндров */
/* Поля, которые могут быть вычислены на основании остальных */
/* 0хВ4 */ int32_t fs_cpg; /* Кол-во цилиндров в группе */
/* 0xB8 */ int32_t fs_ipg; /* Кол-во Inode на группу */
/* 0xBC */ int32_t fs_fpg; /* Кол-во блоков в группе * fs_frag */
/* Поля, очищаемые при монтировании */
/* 0xD0 */ int8_t fs_fmod; /* Флаг модификации суперблока */
/* 0xD1 */ int8_t fs_clean; /* Флаг "чистой" (clean) фс */
/* 0xD2 */ int8_t fs_ronly; /* Флаг защиты от записи */
/* 0xD3 */ int8_t fs_flags; /* См. поле fs_ flags */
/* 0xD4 */ u_char fs_fsmnt[MAXMNTLEN]; /* Путь монтирования фс */
};
За концом суперблока, на некотором отдалении от него, находится первая группа цилиндров. В начале каждой группы расположена служебная структура
cg
, представляющая собой описатель группы цилиндров и содержащая магическую последовательность 55h 02h 09h
, по которой все уцелевшие группы можно найти даже при полностью испорченном суперблоке. Штатным образом стартовые адреса всех последующих групп вычисляются путем умножения номера группы на ее размер, содержащийся в поле fs_cgsize
. Другие важные параметры:
?
cg_cgx
— порядковый номер группы, отсчитываемый от нуля; ?
cg_old_niblk
— количество inode в данной группе; ?
cg_ndblk
— количество блоков данных в данной группе; ?
csum
— количество свободных inode и блоков данных в данной группе; ?
cg_iusedoff
— смещение карты занятых inode, отсчитываемое от начала данной группы (в байтах); ?
cg_freeoff
— смещение карты свободного пространства (байты от начала группы).