Занимательная 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 - предназначен для тестирования других классов и сбора статистики; |