|
www.lissyara.su
—> документация
—> FreeBSD
—> UFS2
Как устроена UFS2
Автор: dikens3.
1. Суперблок.
2. Группы цилиндров.
3. Дескрипторы групп цилиндров.
Суперблок.
В начале UFS находится суперблок, в котором хранится основная информация: строение файловой системы, размер, конфигурация.
Рассмотрим создание файловой системы UFS2:
# newfs -L NameVolume -O2 -U -n /dev/ad1
/dev/ad1: 2014.0MB (4124736 sectors) block size 16384, fragment size 2048
using 11 cylinder groups of 183.77MB, 11761 blks, 23552 inodes.
with soft updates
super-block backups (for fsck -b #) at:
160, 376512, 752864, 1129216, 1505568, 1881920, 2258272,
2634624, 3010976, 3387328, 3763680
| Объём созданного раздела составляет 2014.0 Мбайт и содержит 4124736 секторов, размер блока равен 16384 байта, а размер фрагмента 2048 байт. В созданном разделе будут использоваться 11 групп цилиндров и объём информации, хранящийся в каждой группе, не более 183.77 Мбайт. Каждая группа цилиндров (Возможно кроме последней группы) содержит 11761 блок и 23552 индексных узла.(По умолчанию размер блока равен 8 фрагментам, а значит, в 11761 блоке содержится 94088 фрагментов.)
Soft Updates включены.
Копии суперблока будут находиться в секторах 160, 376512, 752864, 1129216, 1505568, 1881920, 2258272, 2634624, 3010976, 3387328, 3763680.(В каждой группе по одной резервной копии суперблока)
Воспользуемся TSK (/usr/ports/sysutils/sleuthkit):
# fsstat -f ufs /dev/ad1 | head -n 30
FILE SYSTEM INFORMATION
--------------------------------------------
File System Type: UFS 2 - Тип файловой системы
Last Written: Thu Oct 18 23:13:23 2007 - Время последнего монтирования
Last Mount Point: /mnt/target - Куда последний раз была смонтирована
Volume Name: NameVolume - Имя тома
System UID: 0
Flags: Soft Dependencies - Включён SoftUpdate
METADATA INFORMATION
--------------------------------------------
Inode Range: 0 – 259071 - Общее количество индексных узлов. (диапазон)
Root Directory: 2 - Где находится корневой каталог
Num of Avail Inodes: 259069 - Количество свободных индексных узлов
Num of Directories: 1 - Количество директорий на данный момент
CONTENT INFORMATION
--------------------------------------------
Fragment Range: 0 - 1031183 - Общее количество фрагментов. (диапазон)
Block Size: 16384 - Размер блока (Состоит из 8 фрагментов)
Fragment Size: 2048 - Размер фрагмента (1/8 часть блока)
Num of Avail Full Blocks: 124821 - Количество свободных блоков
Num of Avail Fragments: 14 - Количество свободных фрагментов
CYLINDER GROUP INFORMATION
--------------------------------------------
Number of Cylinder Groups: 11 - Количество групп цилиндров
Inodes per group: 23552 - Количество индексных узлов в каждой группе
Fragments per group: 94088 - Количество фрагментов в каждой группе
| Исходя из названия, суперблок, можно предположить, что он занимает 1 блок. В данном примере он равен 16384 байта и состоит из 8 фрагментов или 32 секторов. В UFS2 суперблок всегда находится в секторе 128.
Группы цилиндров.
Система UFS делится на секции, называемые группами цилиндров. Каждая группа цилиндров содержит более подробную информацию о своей группе.
Вот как выглядит нулевая группа:
# fsstat -f ufs /dev/ad1 | fgrep -A 22 "Group 0:"
Group 0:
Last Written: Fri Oct 19 23:28:15 2007 - Время последней записи
Inode Range: 0 – 23551 - Диапазон/количество индексных узлов.
Fragment Range: 0 – 94087 - Диапазон/количество фрагментов
Boot Block: 0 – 3 - Загрузочный код.
Super Block: 4 – 11 - Резервная копия суперблока.
Super Block: 40 – 47 - Резервная копия суперблока.
Group Desc: 48 – 55 - Дескриптор группы. (диапазон)
Inode Table: 56 – 2999 - Таблица индексных узлов. (диапазон)
Data Fragments: 3000 – 94087 - Диапазон фрагментов для записи данных
Global Summary (from the superblock summary area): Данные от суперблока:
Num of Dirs: 1 - Количество директорий на данный момент
Num of Avail Blocks: 11384 - Количество свободных блоков
Num of Avail Inodes: 23549 - Количество свободных индексных узлов
Num of Avail Frags: 14 - Количество свободных фрагментов
Local Summary (from the group descriptor): Данные от дескриптора группы:
Num of Dirs: 1 - Количество директорий на данный момент
Num of Avail Blocks: 11384 - Количество свободных блоков
Num of Avail Inodes: 23549 - Количество свободных индексных узлов
Num of Avail Frags: 14 - Количество свободных фрагментов
Last Block Allocated: 0 - Последний выделенный блок
Last Fragment Allocated: 0 - Последний выделенный фрагмент
Last Inode Allocated: 0 - Последний выделенный индексный узел
| Дескрипторы групп цилиндров:
Каждая группа цилиндров содержит специальную структуру - дескриптор группы, в котором хранится информация об использованных и свободных фрагментах, блоках, индексных узлах и многое другое.
В дескрипторе группы находятся битовые карты индексных узлов, блоков и фрагментов группы.
К примеру, состояние выделения блоков и фрагментов определяется по битовой карте блоков или фрагментов соответственно. В битовой карте индексных узлов хранятся метаданные, описывающие файлы и каталоги.
Примеры:
1. Список файлов и директорий?
Корневой каталог всегда находится в индексном узле 2, посмотрим, что там:
# fls -f ufs -a /dev/ad1 2
d/d 2: .
d/d 2: ..
d/d 188416: dir1
r/r 3: foremost
r/r 4: file1.pdf
r/r 5: file2.pdf
r/r 6: file3.pdf
r/r 7: file4.pdf
r/r 8: file5.pdf
r/r 9: file6.pdf
d/d 164864: dir2
| 2. Список файлов и директорий в dir1?
# fls -f ufs /dev/ad1 188416
d/d 188417: 22
r/r 188418: file2.pdf
| 3. Сколько блоков/фрагментов занимает file6.pdf?
# istat -f ufs /dev/ad1 9
inode: 9
Allocated
Group: 0
uid / gid: 1001 / 1001
mode: -rw-r--r--
size: 2328268
num of links: 1
Inode Times:
Accessed: Fri Oct 19 22:22:23 2007
File Modified: Mon Sep 18 23:29:07 2006
Inode Modified: Sat Oct 20 16:11:57 2007
Direct Blocks:
23824 23825 23826 23827 23828 23829 23830 23831
23832 23833 23834 23835 23836 23837 23838 23839
23840 23841 23842 23843 23844 23845 23846 23847
…
[skip]
…
Indirect Blocks:
3144 3145 3146 3147 3148 3149 3150 3151
| Indirect Blocks - блоки косвенной адресации, т.е. содержат указатели на другие блоки. (В нашем случае задействован только один)
P.S. Данная информация несёт ознакомительный характер, поэтому не расписывал ёё подробно.
размещено: 2007-10-20,
последнее обновление: 2007-10-20,
автор: dikens3
|
|
|
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
|
|
Комментарии пользователей [1 шт.]