Вход

Организация и утилиты управления файловой системы "reiser fs"

Рекомендуемая категория для самостоятельной подготовки:
Реферат*
Код 156447
Дата создания 2008
Страниц 21
Источников 4
Мы сможем обработать ваш заказ (!) 10 июня в 12:00 [мск]
Файлы будут доступны для скачивания только после обработки заказа.
1 220руб.
КУПИТЬ

Содержание

Содержание
Введение
Блоки
Суперблок
Bitmapблоки
Дерево файловой системы
Заголовки блоков
Ключи
Внутренние узлы
Листья
Заголовки итемов
Итемы
Statdata items
Directory items
Direct items
Indirect items
Журнал
Заголовок журнала
Транзакции
Дескриптор транзакции
Завершающий блок
Утилиты для работы с reiserfs
Заключение
Литература

Фрагмент работы для ознакомления

Поле sd_rdev применяется для специальных файлов. Оно хранит номер устройства (или сокета). sd_generation примеятся во всех других случаях и означает поколение inode для файла/каталога/ссылки. Поле sd_first_direct_byte, как и хотел Hans Reiser, в версии 3.6 файловой системы более не используется.
Directory items
Итем каталога описывает директорию. Если каталог имеет слишком много элементов и не умещается в одном итеме, он разбивается на несколько directoryитемов с общим ObjectID. Directory item состоит из двух массивов: заголовков элементов каталога и имен файлов; оба массива растут к середине.
Array of dentry headers [0,n] Free space Array of names [n,0] /* */ Заголовок элемента каталога
struct reiserfs_de_head {
__le32 deh_offset; /* – Третий компонент ключа элемента каталога
* */ значение хэша и номер поколения
__le32 deh_dir_id; /* Object ID */ родительского каталога
__le32 deh_objectid; /* Object ID */ данного элемента
__le16 deh_location; /* */ Смещение имени файла в данном итеме
__le16 deh_state; /* 1 , Бит указывает что этот элемент содержит
* stat-data ( ), 2 – не используется бит элемент
* (set) (clear) */ доступен или скрыт
};
Имя файла – простая ASCII строка, заканчивающаяся нулем. Поле offset просто неверно названо – оно содержит значение хэша для имени файла. Биты [730] – это хэш, [06] – поколение для файлов с одинаковым хэшем, бит 31 не используется. Хэш используется в reiserfs для поиска имен файлов и каталогов, отсортированных по полю offset. В настоящий момент доступны 3 хэшфункции: keyed tea хэш, rupasov-хэш и r5-хэш. Задача хэшфункции – генерировать разные значения для разных строк с как можно меньшим количеством коллизий. В Linux реализации reiserfs по умолчанию используется r5хэш.
Direct items
Directитемы (также называемые tail-итемами) содержат либо весь маленький файл, либо “хвост” большого файла. Для маленьких файлов вся другая информация может быть найдена в statdata для данного файла.
Indirect items
Косвенные итемы содержат указатели на неформатированные блоки, принадлежащие файлу. Каждый указатель – 4байтное число, содержащее номер блока. Косвенный итем, занимающий весь лист дерева, может содержать (blocksize48)/4 указателей (48 байт идут на заголовки блока и итема). Большие файлы могут потребовать нескольких косвенных итемов (различаемых по полю offset в ключе) плюс “хвост”.
Журнал
Журнал в reiserfs имеет фиксированный размер: для реализации в Linux2.4. x – это 8192 блоков + 1 блок для заголовка журнала. Журнал состоит из транзакций переменной длины и заголовка журнала. Он начинается списком транзакций, а заканчивается заголовком. Транзакция охватывает по крайней мере 3 дисковых блока и заголовок журнала, занимающий в точности один блок. Журнал реализован в виде кольцевого буфера. Принято считать, что reiserfs журналирует только метаданные. Это не совсем верно. Не смотря на то, что целью журналирования является сохранение целостности метаданных, reiserfs журналирует некоторые дисковые блоки, т.к. они должны появиться в файловой системе лишь после успешной модификации метаданных, и записывать их прямо на диск до завершения транзакции нельзя. Таким образом каталоги, statdata и маленькие файлы, хранящиеся прямо в листьях дерева, также могут попасть в журнал и будут использованы для реконструкции файловой системы.
Заголовок журнала
Заголовок журнала – целый блок, описывающий, где в журнале находится первая несброшенная (unflushed) транзакция. Он занимает последний блок в журнале и содержит только 12 байт данных – остальная часть блока не определена.
struct reiserfs_journal_header {
__le32 j_last_flush_trans_id; /* ID последней удачно завершенной
* транзакции */
__le32 j_first_unflushed_offset; /* Смещение (в блоках) следующей
* транзакции в журнале (с нее будет
* начато восстановление ФС в случае
* сбоя) */
__le32 j_mount_id; /* MountID последней завершенной
* транзакции */
struct journal_params jh_journal;
};
Структура jh_journal, очевидно, хранит копию параметров журнала из суперблока. Транзакция, на которую указывает поле offset, должна иметь больший trans ID или mount ID, чем завершенная транзакция, что бы быть обработанной как несброшенная. В противном случае все транзакции объявляютсязавершенными, а блок, адресуемый по offset, используется для начала записи новой транзакции.
Транзакции
Транзакции описывают изменения в файловой системе. Вместо того, что бы напрямую записывать измененные блоки в дерево файловой системы, reiserfs сначала вносит их в журнал, отображая при этом на реальное местоположение в файловой системе. Транзакция состоит из дескриптора, массива блоков и завершающего блока в конце. Все эти блоки смежны в пределах журнала.
Дескриптор транзакции
struct reiserfs_journal_desc {
__le32 j_trans_id; /* ID транзакции */
__le32 j_len; /* Длина транзакции в блоках. len+1 –
* завершающий блок */
__le32 j_mount_id; /* MountID транзакции */
__le32 j_realblock[1]; /* Отображение на реальные координаты для
* каждого блока */
};
В конце дескриптора также записывается magicстрока – "ReIsErLB". Отображение блоков означает следующее: поле j_realblock представляет собой массив, содержащий для каждого блока транзакции номер соответствующего блока файловой системы. Если места в дескрипторе транзакции не хватает для отображения всех ее блоков, дополнительно используется завершающий блок. Таким образом, максимальный размер транзакции ограничен 2*(blocksize21)/4 блоками, однако в действительности этот предел установлен в суперблоке.
Завершающий блок
Завершающий транзакцию блок содержит копию ID транзакции и ее длину.
struct reiserfs_journal_commit {
__le32 j_trans_id; /* Transaction ID */
__le32 j_len; /* Длина транзакции */
__le32 j_realblock[1];
};
Утилиты для работы с reiserfs
Из-за не совместимости reiserfs c ext2fs/ext3fs в плане программного обеспечения для работы с данной фс разработаны следующие базовые утилиты, которые должны быть установлены в системе при работе с reiserfs:
debugreiserfs
fsck.reiserfs
mkfs.reiserfs
mkreiserfs
reiserfsck
resize_reiserfs
unpack
Утилиты собраны в один пакет reiserfs-utils, поставляется с практически каждым дистрибутивом. Опции работы с каждой из утилит, а так же функциональное применение можно узнать из соответствующей страницы документации man.
Литература
Интернет ресурсы:
1) www.filesystems.nm.ru
2) http://linux.s390.org/download/rpm2html/64-7.1.s390x/reiserfs-utils-3.x.0f-1.s390x.html
3) http://ru.wikipedia.org/wiki/ReiserFS
4) http://www.opennet.ru/docs/RUS/reiserfs_ondisk_layout/
См. include/linux/reiserfs_fs.h
См. include/linux/reiserfs_fs.h
См. include/linux/reiserfs_fs.h
См. include/linux/reiserfs_fs.h
См. include/linux/reiserfs_fs.h
См. include/linux/reiserfs_fs.h
См. include/linux/reiserfs_fs.h
См. include/linux/reiserfs_fs.h
См. include/linux/reiserfs_fs.h
См. include/linux/reiserfs_fs.h
См. man mkfs.reiserfs
1

Список литературы [ всего 4]

Литература
Интернет ресурсы:
1) www.filesystems.nm.ru
2) http://linux.s390.org/download/rpm2html/64-7.1.s390x/reiserfs-utils-3.x.0f-1.s390x.html
3) http://ru.wikipedia.org/wiki/ReiserFS
4) http://www.opennet.ru/docs/RUS/reiserfs_ondisk_layout/
Очень похожие работы
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.00475
© Рефератбанк, 2002 - 2024