Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #96, ДЕКАБРЬ 2006 г.

Занимательная GEOM’етрия

Евгений Зобнин ака j1m

Хакер, номер #096, стр. 096-116-1


(j1m@list.ru)

Технология GEOM изнутри и снаружи

Технология GEOM стала одним из главных нововведений FreeBSD за последние годы. Благодаря модульной архитектуре и грамотному дизайну механизм GEOM позволил в полной мере контролировать процесс обмена данными между жестким диском и файловой системой. Пользователи и администраторы получили в распоряжение мощный инструмент, открывающий широчайшие возможности по организации хранилищ данных любой сложности.

Философия GEOM

GEOM (модульный механизм преобразования запросов дискового ввода-вывода) представляет собой прослойку между файловой системой и драйвером накопителя (ATA, SATA, SCSI). В основу механизма положена идея обособленных модулей (в терминологии GEOM - классов), каждый из которых может выполнять один и только один вид преобразования. Запрос дискового ввода-вывода, проходя через модули, подвергается различной обработке и в конце пути попадает в драйвер устройства. Комбинируя модули, пользователь получает возможность работать с различными дисковыми разделами, создавать логические тома и программные RAID-массивы.

Немаловажная особенность GEOM - это простота разработки классов. Для создания нового вида преобразования достаточно оформить алгоритм в виде класса, добавить необходимые структуры данных и скомпилировать код как модуль ядра. После этого модуль можно подключить к ядру и добавить экземпляр класса к существующей топологии. Надо сказать, что простота дизайна и дружелюбность к разработчикам сыграли свою роль. В FreeBSD версии 6.1 доступно более 20 классов, и с каждым релизом их будет становиться все больше.

Классы GEOM, доступные в FreeBSD 6.1

Работа с разделами:

mbr - делит диск на слайсы;

gpt - делит диск на слайсы формата GUID (формат разделов архитектуры IA-64);

apple - делит диск на слайсы формата Apple;

sunlabel - делит диск на слайсы формата Sun OpenBoot PROM (используется в серверах Sun);

pc98 - делит диск на слайсы формата PC98;

bsd - делит слайс на разделы BSD.

RAID и логические тома:

concat - объединяет несколько дисков в один логический дисковый раздел;

stripe - создает массивы RAID-0 (чередование);

mirror - создает массивы RAID-1 (зеркалирование);

raid3 - создает массивы RAID-3 (чередование с контролем четности);

ccd - создает массивы RAID-0 и RAID-1;

vinum - менеджер логических томов vinum, как класс GEOM.

Безопасность:

gbde - осуществляет шифрование на уровне диска;

geli - другой вариант шифрования;

shsec - реализует «shared secret devices», когда для того чтобы получить доступ к одному накопителю, необходимо обеспечить наличие другого накопителя, например USB-флешки.

Системные:

dev - создает файлы устройств в каталоге /dev.

vfs - связывает GEOM и подсистему VFS.

disk - работает с драйвером накопителя.

Другое:

label - позволяет управлять дисковыми разделами с помощью специальных меток;

fox - специальный класс, автоматически перенаправляющий цепь запросов с одного накопителя на другой;

gate - позволяет создать накопитель как пользовательский процесс;

nop - предназначен для тестирования других классов и сбора статистики;

Содержание  Вперед на стр. 096-116-2