Главная > Программы vinum - диспетчер логических томов (Logical Volume Manager)2004 г
vinum(4)Грег Лихи (Greg Lehey)перевод В. Кравчук, OpenXS Initiative НАЗВАНИЕvinum -- диспетчер логических томов (Logical Volume Manager) СИНТАКСИСkldload vinumОПИСАНИЕvinum - диспетчер логических томов, созданный по мотивам, но не на основе диспетчера томов Veritas Volume Manager . Он обеспечивает следующие возможности:
КОНФИГУРИРОВАНИЕ ЯДРАДрайвер vinum в настоящее время поставляется как модуль KLD (загружаемый модуль ядра), и не требует конфигурирования. Как и с другими модулями KLD, абсолютно необходимо, чтобы версия KLD совпадала с версией операционной системы. В противном случае, драйвер vinum выдаст сообщение об ошибке и прекратит работу. Можно сконфигурировать vinum в ядре, но это не рекомендуется. Для этого добавьте следующую строку в файл конфигурации ядра: device vinumОпции отладкиТекущая версия vinum , как модуль ядра, так и пользовательская программа vinum(8) , включает интенсивную поддержку отладки. Ее пока удалять не рекомендуется, но если и удалять, то и из ядра, и из пользовательских компонентов. Для этого отредактируйте файлы /usr/src/sbin/vinum/Makefile и /usr/src/sys/modules/vinum/Makefile , убрав из переменной CFLAGS опцию -DVINUMDEBUG . Если вы сконфигурировали vinum в ядро, либо добавьте строку options VINUMDEBUGв файл конфигурации ядра, либо удалите опцию -DVINUMDEBUG из файла /usr/src/sbin/vinum/Makefile , как описано выше. Если переменные VINUMDEBUG не совпадают, утилита vinum(8) не сработает, выдавая сообщение, объясняющее причину проблемы и что делать, чтобы ее устранить. Другие опцииoptions VINUM_AUTOSTARTТребует от драйвера vinum автоматически просматривать все доступные диски при подключении (at attach time). Этот способ не рекомендуется использовать - он предназначен, в основном, для сред, где нежелательна зависимость от переменных среды ядра, устанавливаемых с помощью loader(8) . Драйвер vinum ранее был досупен в двух версиях: свободно доступная версия, не включающая поддержку массивов RAID-5, и полная версия, поддерживающая RAID-5, которая распространялась только компанией Cybernet Systems Inc . Текущая версия vinum включает поддержку RAID-5. ИСПОЛЬЗОВАНИЕ VINUMДрайвер vinum является частью базовой системы FreeBSD. Он не требует установки. Для его запуска выполните программу vinum(8) , которая загрузит соответствующий модуль KLD, если его еще нет. Перед использованием vinum , его необходимо сконфигурировать. Подробнее о создании конфигурации vinum см. на странице справочного руководства vinum(8) . Обычно сконфигурированная версия vinum запускается при загрузке. Установите переменной start_vinum в каталоге /etc/rc.conf значение " YES ", чтобы vinum запускался при загрузке. (Подробнее см. на странице справочного руководства rc.conf(5) .) Если драйвер vinum загружен как модуль KLD (рекомендованный способ), команда vinum stop выгрузит его (см. vinum(8) ). Это также можно сделать с помощью команды kldunload(8) . Модуль KLD можеть быть выгружен только если он не работает, другими словами, когда ни один том не смонтирован и не работают другие экземпляры программы vinum(8) . Выгрузка модуля KLD не повреждает данные, хранящиеся в томах. Конфигурирование и запуск объектовДля конфигурирования и запуска объектов vinum используйте утилиту vinum(8) . АВТОМАТИЧЕСКИЙ ЗАПУСКПодсистему vinum можно автоматически запускать при подключении. Для этого можно устанавливать две переменные среды ядра в файле loader.conf(5) . vinum.autostart Если эта переменная установлена (независимо от значения), функция attach будет пытаться просканировать все доступные диски в поисках допустимых записей конфигурации vinum . Это - предпочтительный способ обеспечения автоматического запуска, если он необходим.Пример: vinum.autostart="YES" vinum.drives В качестве альтернативы, можно задать в этой переменной список дисковых устройств, которые необходимо просматривать в поисках записей о конфигурации. Учтите, что указывать надо только имена "базовых" устройств (дисков в целом), поскольку vinum будет автоматически просматривать все возможные секции и разделы.Пример: vinum.drives="da0 da1"Если используется автоматический запуск, устанавливать переменную start_vinum в файле rc.conf(5) не обязательно. Учтите, что если vinum должен предоставить том для корневой файловой системы, необходимо запускать эту подсистему на ранней стадии. Этого можно добиться, указав vinum_load="YES"в файле loader.conf(5) . ВЫЗОВЫ IOCTLВызовы ioctl(2) предназначены для использования только программой конфигурирования vinum(8) . Они описаны в заголовочном файле /sys/dev/vinum/vinumio.h . Метки дискаОбычные дисковые устройства имеют метку диска во втором секторе устройства. Подробнее об этом см. на странице справочного руководства disklabel(5) . Эта метка диска описывает структуру разделов на устройстве. vinum не делит тома на части, поэтому у томов физической метки диска нет. Для удобства, vinum реализует вызовы ioctl DIOCGDINFO (получить метку диска), DIOCGPART (получить информацию о разделе), DIOCWDINFO (записать информацию о разделе) и DIOCSDINFO (установить информацию о разделе). Вызовы DIOCGDINFO и DIOCGPART ссылаются на внутреннее представление метки диска, которой фактически нет на томе. В результате, опция -r команды disklabel(8) , которая читает диск "непосредственно", не сработает. В общем случае, выполнять команду disklabel(8) для тома vinum бесполезно. Если выполнить ее, она покажет три раздела, ' a ', ' b ' и ' c ', отличающиеся значением fstype , например: 3 partitions: # size offset fstype [fsize bsize bps/cpg] a: 2048 0 4.2BSD 1024 8192 0 # (Cyl.0 - 0) b: 2048 0 swap # (Cyl.0 - 0) c: 2048 0 unused 0 0 # (Cyl.0 - 0) vinum игнорирует вызовы DIOCWDINFO и DIOCSDINFO , поскольку менять нечего. В результате, любая попытка изменить метку диска будет молча проигнорирована. СОЗДАНИЕ ФАЙЛОВЫХ СИСТЕМПоскольку тома vinum не содержат разделов, их имена не должны следовать стандартным правилам именования разделов диска. Для физического раздела диска последняя буква в имени устройства задает идентификатор раздела (от a до h ). Тома vinum не обязаны следовать этому соглашению, но в этом случае программа newfs(8) будет сообщать о том, что не может определить раздел. Для решения этой проблемы указывайте флаг -v при вызове newfs(8) . Например, при наличии тома concat используйте следующую команду для создания на нем файловой системы UFS: newfs -v /dev/vinum/concat
ИМЕНОВАНИЕ ОБЪЕКТОВУтилита vinum присваивает стандартные имена сплетениям и поддискам, хотя их можно изменить, задав явно. Мы не рекомендуем изменять стандартные имена. Опыт использования диспетчера томов Veritas™, позволяющего именовать объекты произвольным образом, показал, что такая гибкость не дает существенных преимуществ и может сбивать с толку. Имена могут содержать любые непробельные символы, но рекомендуется ограничится буквами, цифрами и символами подчеркивания. Имена томов, сплетений и поддисков могут быть длиной до 64 символов, а имена дисков - до 32 символов. При выборе имен томов и сплетений помните, что автоматически генерируемые имена сплетений и поддисков длинее имен, на основании которых они построены.
ПримерПусть созданы объекты, описанные в разделе ФАЙЛ КОНФИГУРАЦИИ страницы справочного руководства vinum(8) . Каталог /dev/vinum будет иметь вид: # ls -lR /dev/vinum total 5 brwxr-xr-- 1 root wheel 25, 2 Mar 30 16:08 concat brwx------ 1 root wheel 25, 0x40000000 Mar 30 16:08 control brwx------ 1 root wheel 25, 0x40000001 Mar 30 16:08 controld drwxrwxrwx 2 root wheel 512 Mar 30 16:08 drive drwxrwxrwx 2 root wheel 512 Mar 30 16:08 plex drwxrwxrwx 2 root wheel 512 Mar 30 16:08 rvol drwxrwxrwx 2 root wheel 512 Mar 30 16:08 sd brwxr-xr-- 1 root wheel 25, 3 Mar 30 16:08 strcon brwxr-xr-- 1 root wheel 25, 1 Mar 30 16:08 stripe brwxr-xr-- 1 root wheel 25, 0 Mar 30 16:08 tinyvol drwxrwxrwx 7 root wheel 512 Mar 30 16:08 vol brwxr-xr-- 1 root wheel 25, 4 Mar 30 16:08 vol5 /dev/vinum/drive: total 0 brw-r----- 1 root operator 4, 15 Oct 21 16:51 drive2 brw-r----- 1 root operator 4, 31 Oct 21 16:51 drive4 /dev/vinum/plex: total 0 brwxr-xr-- 1 root wheel 25, 0x10000002 Mar 30 16:08 concat.p0 brwxr-xr-- 1 root wheel 25, 0x10010002 Mar 30 16:08 concat.p1 brwxr-xr-- 1 root wheel 25, 0x10000003 Mar 30 16:08 strcon.p0 brwxr-xr-- 1 root wheel 25, 0x10010003 Mar 30 16:08 strcon.p1 brwxr-xr-- 1 root wheel 25, 0x10000001 Mar 30 16:08 stripe.p0 brwxr-xr-- 1 root wheel 25, 0x10000000 Mar 30 16:08 tinyvol.p0 brwxr-xr-- 1 root wheel 25, 0x10000004 Mar 30 16:08 vol5.p0 brwxr-xr-- 1 root wheel 25, 0x10010004 Mar 30 16:08 vol5.p1 /dev/vinum/sd: total 0 brwxr-xr-- 1 root wheel 25, 0x20000002 Mar 30 16:08 concat.p0.s0 brwxr-xr-- 1 root wheel 25, 0x20100002 Mar 30 16:08 concat.p0.s1 brwxr-xr-- 1 root wheel 25, 0x20010002 Mar 30 16:08 concat.p1.s0 brwxr-xr-- 1 root wheel 25, 0x20000003 Mar 30 16:08 strcon.p0.s0 brwxr-xr-- 1 root wheel 25, 0x20100003 Mar 30 16:08 strcon.p0.s1 brwxr-xr-- 1 root wheel 25, 0x20010003 Mar 30 16:08 strcon.p1.s0 brwxr-xr-- 1 root wheel 25, 0x20110003 Mar 30 16:08 strcon.p1.s1 brwxr-xr-- 1 root wheel 25, 0x20000001 Mar 30 16:08 stripe.p0.s0 brwxr-xr-- 1 root wheel 25, 0x20100001 Mar 30 16:08 stripe.p0.s1 brwxr-xr-- 1 root wheel 25, 0x20000000 Mar 30 16:08 tinyvol.p0.s0 brwxr-xr-- 1 root wheel 25, 0x20100000 Mar 30 16:08 tinyvol.p0.s1 brwxr-xr-- 1 root wheel 25, 0x20000004 Mar 30 16:08 vol5.p0.s0 brwxr-xr-- 1 root wheel 25, 0x20100004 Mar 30 16:08 vol5.p0.s1 brwxr-xr-- 1 root wheel 25, 0x20010004 Mar 30 16:08 vol5.p1.s0 brwxr-xr-- 1 root wheel 25, 0x20110004 Mar 30 16:08 vol5.p1.s1 /dev/vinum/vol: total 5 brwxr-xr-- 1 root wheel 25, 2 Mar 30 16:08 concat drwxr-xr-x 4 root wheel 512 Mar 30 16:08 concat.plex brwxr-xr-- 1 root wheel 25, 3 Mar 30 16:08 strcon drwxr-xr-x 4 root wheel 512 Mar 30 16:08 strcon.plex brwxr-xr-- 1 root wheel 25, 1 Mar 30 16:08 stripe drwxr-xr-x 3 root wheel 512 Mar 30 16:08 stripe.plex brwxr-xr-- 1 root wheel 25, 0 Mar 30 16:08 tinyvol drwxr-xr-x 3 root wheel 512 Mar 30 16:08 tinyvol.plex brwxr-xr-- 1 root wheel 25, 4 Mar 30 16:08 vol5 drwxr-xr-x 4 root wheel 512 Mar 30 16:08 vol5.plex /dev/vinum/vol/concat.plex: total 2 brwxr-xr-- 1 root wheel 25, 0x10000002 Mar 30 16:08 concat.p0 drwxr-xr-x 2 root wheel 512 Mar 30 16:08 concat.p0.sd brwxr-xr-- 1 root wheel 25, 0x10010002 Mar 30 16:08 concat.p1 drwxr-xr-x 2 root wheel 512 Mar 30 16:08 concat.p1.sd /dev/vinum/vol/concat.plex/concat.p0.sd: total 0 brwxr-xr-- 1 root wheel 25, 0x20000002 Mar 30 16:08 concat.p0.s0 brwxr-xr-- 1 root wheel 25, 0x20100002 Mar 30 16:08 concat.p0.s1 /dev/vinum/vol/concat.plex/concat.p1.sd: total 0 brwxr-xr-- 1 root wheel 25, 0x20010002 Mar 30 16:08 concat.p1.s0 /dev/vinum/vol/strcon.plex: total 2 brwxr-xr-- 1 root wheel 25, 0x10000003 Mar 30 16:08 strcon.p0 drwxr-xr-x 2 root wheel 512 Mar 30 16:08 strcon.p0.sd brwxr-xr-- 1 root wheel 25, 0x10010003 Mar 30 16:08 strcon.p1 drwxr-xr-x 2 root wheel 512 Mar 30 16:08 strcon.p1.sd /dev/vinum/vol/strcon.plex/strcon.p0.sd: total 0 brwxr-xr-- 1 root wheel 25, 0x20000003 Mar 30 16:08 strcon.p0.s0 brwxr-xr-- 1 root wheel 25, 0x20100003 Mar 30 16:08 strcon.p0.s1 /dev/vinum/vol/strcon.plex/strcon.p1.sd: total 0 brwxr-xr-- 1 root wheel 25, 0x20010003 Mar 30 16:08 strcon.p1.s0 brwxr-xr-- 1 root wheel 25, 0x20110003 Mar 30 16:08 strcon.p1.s1 /dev/vinum/vol/stripe.plex: total 1 brwxr-xr-- 1 root wheel 25, 0x10000001 Mar 30 16:08 stripe.p0 drwxr-xr-x 2 root wheel 512 Mar 30 16:08 stripe.p0.sd /dev/vinum/vol/stripe.plex/stripe.p0.sd: total 0 brwxr-xr-- 1 root wheel 25, 0x20000001 Mar 30 16:08 stripe.p0.s0 brwxr-xr-- 1 root wheel 25, 0x20100001 Mar 30 16:08 stripe.p0.s1 /dev/vinum/vol/tinyvol.plex: total 1 brwxr-xr-- 1 root wheel 25, 0x10000000 Mar 30 16:08 tinyvol.p0 drwxr-xr-x 2 root wheel 512 Mar 30 16:08 tinyvol.p0.sd /dev/vinum/vol/tinyvol.plex/tinyvol.p0.sd: total 0 brwxr-xr-- 1 root wheel 25, 0x20000000 Mar 30 16:08 tinyvol.p0.s0 brwxr-xr-- 1 root wheel 25, 0x20100000 Mar 30 16:08 tinyvol.p0.s1 /dev/vinum/vol/vol5.plex: total 2 brwxr-xr-- 1 root wheel 25, 0x10000004 Mar 30 16:08 vol5.p0 drwxr-xr-x 2 root wheel 512 Mar 30 16:08 vol5.p0.sd brwxr-xr-- 1 root wheel 25, 0x10010004 Mar 30 16:08 vol5.p1 drwxr-xr-x 2 root wheel 512 Mar 30 16:08 vol5.p1.sd /dev/vinum/vol/vol5.plex/vol5.p0.sd: total 0 brwxr-xr-- 1 root wheel 25, 0x20000004 Mar 30 16:08 vol5.p0.s0 brwxr-xr-- 1 root wheel 25, 0x20100004 Mar 30 16:08 vol5.p0.s1 /dev/vinum/vol/vol5.plex/vol5.p1.sd: total 0 brwxr-xr-- 1 root wheel 25, 0x20010004 Mar 30 16:08 vol5.p1.s0 brwxr-xr-- 1 root wheel 25, 0x20110004 Mar 30 16:08 vol5.p1.s1 В случае неподключенных сплетений и поддисков, именование выполняется наоборт. Имена поддисков строятся на основе имен дисков, на которых они находятся, а сплетения именуются на базе соответствующего поддиска. Это соответствие еще надо определеить. Состояния объектаКаждый объект vinum находится в определенном состоянии. vinum использует это состояние для определения того, что можно делать с объектом. Состояния томаТома могут находиться в следующих состояниях: down Том полностью недоступен.up Том запущен и хотя бы частично работоспособен. Могут быть доступны не все сплетения. Состояния сплетенияСплетения могут быть в следующих состояниях: referenced Сплетение, на которое ссылаются как на часть тома, но которое сейчас не известно.faulty Сплетение, полностью отключенное из-за ошибок ввода/вывода. down Сплетение, отключенное администратором. initializing Сплетение в процессен инициализации. Остальные состояния представляют сплетения, которые хотя бы частично работают. corrupt Сплетение, как минимум, частично работает. Не все поддиски доступны и произошло рассогласование. Если не осталось ни одного неповрежденного сплетения, том больше не является согласованным.degraded Достпуное сплетение типа RAID-5, но один из его поддисков не работает, что требует восстановления многих запросов ввода/вывода. flaky Работающее фактически сплетение, один из поддисков которого находится в состоянии reborn и не заслуживает полного доверия, и с которого, по возможности. не хотелось бы читать данные. up Полностью работающее сплетение. Все поддиски находятся в состоянии up . Состояния поддискаПоддиски могут находиться в следующих состояниях: empty Полностью созданный поддиск. Все поля корректны и диск был обновлен, но ... ( but the on the disk is not valid - что бы это значило? Прим. В.К. ).referenced Поддиск, на который ссылаются как на часть сплетения, но который сейчас не известен. initializing Поддиск, который был полностью создан и находится в процессе инициализации. Следующие состояния представляют некорректные данные. obsolete Поддиск был полностью создан. Все поля корректны, конфигурация на диске была обновлена и данные были корректными, но после этого диск был отключен, и, в результате, обновления были утеряны.stale Поддиск был полностью создан. Все поля корректны, диск был обновлен и данные были корректными, но после этого произошел сбой диска и обновления были утеряны. Следуюшие состояния представляют корректные, но недоступные данные. crashed Поддиск был полностью создан. Все поля корректны, диск был обновлен и данные были корректными, но после этого диск перестал работать. Никаких попыток записи на поддиск после сбоя не было, поэтому данные на нем корректны.down Поддиск работал, содержал корректные данные и был отключен администратором. Данные на нем корректны. reviving Поддиск находится в процессе восстановления ("оживления"). На него можно записывать, но нельзя читать. Следующие состояния представляют доступные поддиски с корректными данными. reborn Поддиск был полностью создан. Все поля корректны, диск был обновлен и данные корректны, но, после этого диск останавливался и снова запускался. Обновления не были потеряны, но возможно, что поддиск был поврежден. Мы не будем, по возможности, читать с этого поддиска. Если это единственный поддиск, покрывающий соответствующих фрагмент адресного пространства сплетения, при таких обстоятельствах ему устанавливается состояние up , поэтому данное состояние предполагает, что для выполнения запроса доступен другой поддиск.up Поддиск был полностью создан. Все поля корректны, диск был обновлен и данные корректны. Состояния дискаДиски могут находиться в следующих состояниях: referenced Как минимум, один поддиск ссылается на диск, но он сейчас недоступен для системы. Имя устройства неизвестно.down Диск недоступен. up Диск доступен и работает. ОШИБКИvinum - новый продукт. Ошибки в нем вполне ожидаемы. Механизм конфигурирования еще работает не полнстью. Если вы столкнетесь с трудностями, обратитесь к разделу РЕШЕНИЕ ПРОБЛЕМ С VINUM прежде чем сообщать об ошибках. Ядра с устройством vinum , похоже, работают, но не поддерживаются. Если в такой конфигурации возникают проблемы, сначала, пожалуйста, замените ядро не не содержащее vinum и протестируйте работу с модулем KLD. Выявление отличий между версией ядра и версией модуля KLD пока не реализовано. Поддержка RAID-5 появилась в версии FreeBSD 3.3. Сообщали о некоторых проблемах при использовании vinum в сочетании с soft updates, но они воспроизводятся не на всех системах. Если вы предполагаете использовать vinum в производственной среде, пожалуйста, тщательно протестируйте систему. РЕШЕНИЕ ПРОБЛЕМ С VINUMРешение проблем с драйвером vinum может оказаться делом сложным. В этом разделе предлагаются некоторые подходы. Проблемы конфигурацииПроблемы конфигурации vinum возникают достаточно легко (слишком легко). Если вы столкнетесь с такой проблемой, прежде всего, прекратите изменения конфигурации: vinum setdaemon 4Эта команда остановит изменения и дальнейшие повреждения конфигурации на диске. Далее, получите конфигурацию с диска, с помощью следующих команд в командном интерпретаторе Bourne-style: rm -f log for i in /dev/da0s1h /dev/da1s1h /dev/da2s1h /dev/da3s1h; do (dd if=$i skip=8 count=6|tr -d '\000-\011\200-\377'; echo) >> log done Имена устройств - это имена всех секций vinum . Файл log должен, в результате, содержать что-то вроде следующего: IN VINOpanic.lemis.comdrive1}6E7~^K6T^Yfoovolume obj state up volume src state up volume raid state down volume r state down volume foo state up plex name obj.p0 state corrupt org concat vol obj plex name obj.p1 state corrupt org striped 128b vol obj plex name src.p0 state corrupt org striped 128b vol src plex name src.p1 state up org concat vol src plex name raid.p0 state faulty org disorg vol raid plex name r.p0 state faulty org disorg vol r plex name foo.p0 state up org concat vol foo plex name foo.p1 state faulty org concat vol foo sd name obj.p0.s0 drive drive2 plex obj.p0 state reborn len 409600b driveoffset 265b plexoffset 0b sd name obj.p0.s1 drive drive4 plex obj.p0 state up len 409600b driveoffset 265b plexoffset 409600b sd name obj.p1.s0 drive drive1 plex obj.p1 state up len 204800b driveoffset 265b plexoffset 0b sd name obj.p1.s1 drive drive2 plex obj.p1 state reborn len 204800b driveoffset 409865b plexoffset 128b sd name obj.p1.s2 drive drive3 plex obj.p1 state up len 204800b driveoffset 265b plexoffset 256b sd name obj.p1.s3 drive drive4 plex obj.p1 state up len 204800b driveoffset 409865b plexoffset 384b Первая строка содержит метку vinum и должна начинаться с текста " IN VINO ". Она также содержит имя системы. Точное определение содержится в заголовчном файле /usr/src/sys/dev/vinum/vinumvar.h . Сохраненная конфигурация начинается в середине строки, с текста " volume obj state up ", а на диске - с 9 сектора. Отсаток результатов показывает то, что осталось от конфигурации на диске. Чтобы увидеть всю конфигурацию, может понадобиться увеличить аргумент count команды dd(1) . Конфгурация на всех дисках должна быть одинаковой. Если это не так, пожалуйста, сообщите о проблеме, представив точное содержимое файла log . Мало что реально можно сделать для восстановления конфигурации на диске, но если есть копия файлов, которые использовались для создания объектов, вы всегда сможете их пересоздать. Команда create не изменяет данные на поддиске, так что она не может привести к повреждению данных. Если вы столкнетесь с такого рода проблемой, может потребоваться использование команды resetconfig . Остановка системыЧтобы проанализировать причины остановки, которые, как вы думаете, связаны с vinum , надо построить отладочное ядро (debug kernel). Подробнее о том, как это сделать, написано в руководстве разработчика /usr/share/doc/en/books/developers-handbook/kerneldebug.html (если оно установлено) или http://www.FreeBSD.org/ doc/ en_US.ISO8859-1/ books/ developers-handbook/ kerneldebug.html . Для анализа проблем vinum выполните следующие шаги:
Для начального ислледования наиболее важная информация - результат представленной выше команды bt ( backtrace ). Информирование о проблемах с VinumЕсли вы обнаружите любые ошибки в vinum , пожалуйста, сообщайте о них Грегу Лихи (Greg Lehey) <grog@lemis.com>. Предоставьте следующую информацию:
АВТОРЫГрег Лихи (Greg Lehey) <grog@lemis.com>ИСТОРИЯУтилита vinum впервые появилась в ОС FreeBSD 3.0. Компонент RAID-5 системы vinum был разработан для корпорации Cybernet Inc. ( http://www.cybernet.com ), для ее продукта NetMAX. SEE ALSOdisklabel(5) , loader.conf(5) , disklabel(8) , loader(8) , newfs(8) , vinum(8)FreeBSD 4.9, 16 мая 2003 года Главная > Программы |