Занимательная GEOM’етрия Евгений Зобнин ака j1m Хакер, номер #096, стр. 096-116-2 uzip - позволяет читать сжатые образы дисков; zero - класс реализует виртуальный накопитель, содержащий нули (по аналогии с /dev/zero). Все классы, за исключением системных, которые должны присутствовать в любой топологии GEOM, могут быть подключены как модули ядра. Классы, работающие с разделами, по умолчанию включены в ядро, причем без крови их оттуда не извлечешь - через конфигурационный файл ядра это осуществить не удастся. Так сделано для того, чтобы ядро путем перебора классов (существуют правила, благодаря которым GEOM способен производить автоконфигурирование), смогло создать стандартную топологию и не выпасть во время инициализации в kernel panic. Классы ccd и vinum достались FreeBSD в наследство от четвертой ветки, в которой они были реализованы как отдельные механизмы ядра и являлись чуть ли не единственным средством создания RAID и логических томов. По сути, это реликты, пережитки прошлого, импортированные в GEOM по просьбам ветеранов FreeBSD и от нежелания выбрасывать отлаженный код. Даже vinum, при всей своей мощи и универсальности, в большинстве случаев может быть заменен комбинацией других классов, гораздо более удобных в настройке. Долой невнятные названия дисков Наверняка тебе приходила в голову мысль, что было бы гораздо удобнее монтировать файловые системы, указывая в аргументах команды mount и в файле /etc/fstab легко читаемые и прозрачные имена дисков, вроде /dev/home или /dev/usr. Если так, хочу тебя обрадовать, класс label позволяет сделать именно это. Принцип его работы основан на понятии метки тома, которая является непременным атрибутом большинства файловых систем. Приведу пример. Имеется раздел /dev/ad0s1e, на котором создана файловая система ufs2, содержащая каталог /home. Попробуем смонтировать ее: mount /dev/ad0s1e /home. Одна команда и две проблемы: во-первых, имя файла никак не говорит о том, что находится на этом разделе, а во-вторых, в случае перемещения диска имя файла изменится, и придется править /etc/fstab. А теперь сделаем то же самое с использование класса label: # kldload geom_label # umount /home # tunefs -L home /dev/ad0s1e # mount /dev/ufs/home /home Стало намного приятнее для глаз. Даже если переключить диск на второй IDE-канал, метка будет распознана и файл /dev/ufs/home останется ассоциированным с прежним разделом. Также класс label умеет распознавать метки файловых систем FAT (/dev/msdosfs/), ISO9660 (/dev/iso9660/), EXT2 (/dev/ext2fs/), ReiserFS (/dev/reiserfs/) и NTFS (/dev/ntfs/). Кроме того, допустимо использование меток, не связанных с файловыми системами (команда «glabel create имя-метки устройство»). Gzip как класс GEOM На сегодняшний день не существует класса, выполняющего прозрачное сжатие и распаковку данных в реальном времени. Но доступен класс, умеющий читать сжатые образы дисков, который наверняка пригодится владельцам flash-дисков и создателям LiveCD. Ниже приведен пример того, как можно создать и подключить такой образ. Пример использования класса geom_uzip Создаем и монтируем образ диска: # dd if=/dev/zero of=disk.ufs bs=1k count=100k |