diff --git a/ru_RU.KOI8-R/articles/hubs/article.sgml b/ru_RU.KOI8-R/articles/hubs/article.sgml
index 41fd208771..1b3c4364f7 100644
--- a/ru_RU.KOI8-R/articles/hubs/article.sgml
+++ b/ru_RU.KOI8-R/articles/hubs/article.sgml
@@ -1,1164 +1,1160 @@
%man;
%authors;
%teams;
%mailing-lists;
%trademarks;
%freebsd;
]>
Поддержка зеркал FreeBSD$FreeBSD$JunKuriyamakuriyama@FreeBSD.orgValentinoVaschettologo@FreeBSD.orgDanielLangdl@leo.orgKenSmithkensmith@FreeBSD.org
&tm-attrib.freebsd;
&tm-attrib.cvsup;
&tm-attrib.general;
Рабочий вариант статьи, описывающей процесс создания и поддержки
зеркала FreeBSD и адресованной администраторам зеркал.Контактная информацияКоординаторы системы зеркал доступны по электронной почте по адресу
mirror-admin@FreeBSD.org. Помимо этого, существует
&a.hubs;.Требования к зеркалам FreeBSDДисковое пространство
Одним из наиболее важных требований является дисковое пространство.
В зависимости от набора релизов, архитектур и степени полноты зеркала
вам может потребоваться огромный объем диска. Не лишним будет
помнить, что официальное зеркало, скорее всего,
должно быть полным. Репозиторий CVS и веб-страницы всегда должны
зеркалироваться полностью. Кроме того, учтите, что приводимые оценки
объема относятся к состоянию на момент последнего редактирования
данной статьи (&rel2.current;-RELEASE/&rel.current;-RELEASE). Дальнейший процесс
разработки и последующие релизы только увеличат требуемый объем.
Кроме того, разумно будет зарезервировать некоторое (10-20%)
дополнительное пространство спокойствия ради.
Вот некоторые оценки объема:
Полное зеркало FTP: 126 GBРепозиторий CVS: 2.7 GBКомплект изменений CTM: 1.8 GBВеб-страницы: 300 MBТребования к сетевой связности и пропускной способности
Разумеется, у вас должно быть подключение к интернет.
Требуемая пропускная способность ваших каналов зависит от
предполагаемого профиля использования вашего зеркала.
Если вы собираетесь копировать некоторые части FreeBSD для
локального использования на вашей машине или в интранете,
требования могут быть много мягче, чем для публичного зеркала.
Для официального зеркала необходимая пропускная способность
увеличивается еще больше. Мы можем дать лишь очень грубые оценки:
Зеркало для локального доступа: фактически минимум не
определен, но канал шириной менее 2 Mbps может сделать процесс
обновления мучительно медленным.Неофициальное публичное зеркало: 34 Mbps выглядит
неплохо для начала.Официальное зеркало: рекомендуется канал шириной более
100 Mbps; кроме того, ваша машина должна стоять как можно ближе к
граничным маршрутизаторам вашей сети.Системные требования, процессор и память
Эти требования в первую очередь определяются максимальным ожидаемым
количеством клиентов (устанавливается администратором сервера).
Также, на требуемые ресурсы влияет список сервисов, которые вы будете
предоставлять. Зеркало FTP и/или HTTP не требуют особенно много
ресурсов; значительно больше памяти и вычислительной производительности
потребляют CVSup, rsync или AnonCVS. Особенно "прожорливым" по памяти
является rsync; CVSup требует достаточной производительности
процессора. Для предоставления доступа по AnonCVS хорошей идеей будет
создание виртуальной файловой системы в памяти (MFS) по крайней мере
300 MB размером, так что учтите это при планировании. Вот некоторые
советы по конфигурации аппаратной части сервера:
Для умеренно посещаемого сайта, предоставляющего
rsync, можно использовать процессор
с частотой 800MHz - 1 GHz и по крайней мере 512MB памяти.
Скорее всего, данная конфигурация может считаться минимальной для
официального зеркала.
Для регулярно посещаемого сайта вам потребуется больше памяти
(хорошим стартом будет 2GB) и больше процессорной мощности, что может
означать требование многопроцессорной (SMP) платформы.
Кроме того, вам потребуется быстрая дисковая подсистема, в первую
очередь, для работы с репозиторием CVS (крайне рекомендуем RAID).
Контроллер SCSI, оборудованный собственной памятью, также может
ощутимо ускорить процесс, поскольку большая часть сервисов связана
с большим количеством дисковых запросов небольшого размера.
Предоставляемые сервисы
Всякое зеркало должно предоставлять набор основных сервисов.
Помимо требуемого минимального набора, существуют дополнительные
сервисы, которые администратор сервера может пожелать предоставлять.
Этот раздел описывает, какие сервисы вы можете предоставлять, и какие
действия для этого потребуются от вас.
FTP (требуется для FTP зеркала)
Это один из наиболее базовых сервисов; его предоставление требуется
для каждого зеркала, распространяющего файлы FreeBSD по FTP.
Доступ по FTP должен быть анонимным, и не должны применяться
какие-либо ограничения по соотношению объема передано/принято
(что вообще является, на наш взгляд, странным подходом).
Закачка (upload) файлов на сервер не требуется (и
должна быть запрещена в разделе FreeBSD).
Кроме того, архив файлов FreeBSD должен быть доступен с путем
/pub/FreeBSD.
Для предоставления анонимного FTP доступа может быть использован
целый ряд программ (перечислены в алфавитном порядке):
/usr/libexec/ftpd: базовый
FTP-даемон FreeBSD. Не забудьте прочитать &man.ftpd.8;.ftp/ncftpd:
коммерческий пакет, свободен для использования в учебных целях.
ftp/oftpd: FTP-даемон,
написанный в основном с точки зрения защищенности.ftp/proftpd: Модульный
и очень гибкий FTP-даемон.ftp/pure-ftpd:
Еще один FTP-даемон, разработанный с позиций защищенности.
ftp/twoftpd:
См. предыдущий пункт.ftp/vsftpd:
очень защищенный (very secure)
ftpd.ftp/wu-ftpd:
ftpd от Вашингтонского Университета (Washington
University). Несколько потерял популярность из-за большого
количества найденных в прошлом ошибок защиты. Если вы решите
использовать его, помните о необходимости отслеживания
обновлений.
Наиболее популярными являются встроенный во FreeBSD
ftpd, proftpd,
wu-ftpd и, возможно,
ncftpd.
Прочие распространены среди существующих зеркал в существенно
меньшей степени. Дополнительным поводом для рассмотрения может
являться возможность гибко ограничивать количество одновременных
соединений, что поможет вам удержать в нужных рамках потребление
пропускной способности ваших каналов и машинные ресурсы.
RSYNC (необязательный сервис для FTP зеркала)rsync часто используется для
предоставления доступа к FTP-области FreeBSD, чтобы другие зеркала
могли синхронизироваться по вашему. Протокол rsync во многом
отличается от FTP, в частности, он гораздо гуманнее с точки зрения
пропускной способности каналов, поскольку не требует передачи
измененного файла целиком (передаются лишь различия). Взамен
rsync требует значительных объемов
памяти. Размер каждого процесса зависит от размера синхронизируемого
модуля (в основном от количества директорий и файлов).
rsync может использовать в качестве
транспортного протокола rsh или
ssh (по умолчанию); также, может использоваться
внутренний протокол rsync (этот метод
предпочтителен для публичных rsync-серверов).
Поддерживается авторизация клиентов и различные ограничения.
Для протокола rsync существует единственный пакет:
net/rsyncHTTP (требуется для веб-страниц, дополнителен для FTP зеркал)
Если вы хотите поддерживать зеркало веб-страниц FreeBSD, вам потребуется
веб-сервер, или httpd.
Дополнительно, вы можете предоставлять HTTP доступ к FTP-набору
файлов FreeBSD. Выбор веб-сервера остается на усмотрение
администратора зеркала. Некоторые из наиболее популярных
веб-серверов перечислены ниже.
www/apache13:
Apache — один из самых популярных веб-серверов, активно
используемый проектом FreeBSD. Вы можете также использовать
Apache нового поколения, доступный в коллекции портов как
www/apache2.www/thttpd:
Для обслуживания большого количества запросов к статическим
документам сервер tHttpd может оказаться более эффективным, чем
Apache. tHttpd отлично оптимизирован по производительности
при работе под FreeBSD.www/boa:
Boa — еще одна альтернатива tHttpd и Apache. Этот сервер
должен быть ощутимо более высокопроизводительным, чем Apache,
для полностью статических страниц. На время написания данного
документа, впрочем, он не так хорошо оптимизирован под
FreeBSD, как tHttpd.CVSup (желателен для зеркал репозитория CVS)CVSup предоставляет очень эффективный
механизм распространения файлов. Он работает подобно
rsync и был разработан специально для
использования с репозиториями CVS. Если вы планируете предоставлять
доступ к репозиторию CVS FreeBSD, стоит делать это посредством
CVSup. Помимо этого, можно использовать
AnonCVS, FTP, Rsync
или HTTP, но использование CVSup
наиболее разумно.
Автором CVSup является &a.jdp;.
CVSup непросто установить на платформе,
отличной от FreeBSD, поскольку он написан на языке Modula-3 и
требует соответствующего окружения. Джон Полстра создал усеченную
версию M3, достаточную для работы CVSup,
которую намного проще установить. Подробности можно прочитать здесь:
Ezm3.
Относящиеся к теме пакеты:
net/cvsup:
Порт CVSup (клиент и сервер), требующий для сборки пакет
lang/ezm3.net/cvsup-mirror:
Набор для CVSup-зеркала, требующий
net/cvsup,
и конфигурирующий его в процессе установки. Возможно,
некоторым администраторам потребуется другой набор установок.
Может также оказаться полезным пакет
net/cvsup-without-gui.
Если вы предпочитаете пакет, собранный статически, загляните по
этой
ссылке. Эта страница все еще описывает ошибку S1G. Возможно,
в будущем Джон создаст универсальный сайт для загрузки статически
собранных вариантов CVSup для различных платформ.
При помощи CVSup можно распространять
любые коллекции файлов (не только репозитории CVS), однако его
конфигурация может быть непростой. Известно, что
CVSup потребляет ощутимое количество
процессорного времени как на сервере, так и на клиенте, поскольку
сравнивает большое количество файлов.
AnonCVS (дополнителен для зеркал репозитория CVS)
Если вы копируете репозиторий CVS, можно дополнительно предоставить
к нему анонимный доступ. Для начала, предупреждение: спрос на этот
сервис не так уж велик, подготовка его требует некоторого опыта, и,
наконец, вы должны знать, что делаете.
Существует два основных способа удаленного доступа к репозиторию
CVS: через pserver и через
ssh (доступ через rsh мы
рассматривать не будем). Для анонимного доступа наиболее подходит
pserver; впрочем, некоторые сайты дают доступ
и посредством ssh. Для последнего будет полезной
специальная
программа,
предназначенная для использования в качестве шелла для учетной
записи анонимного ssh-доступа. Она использует вызов chroot,
поэтому репозиторий CVS должен располагаться внутри домашнего
каталога анонимного пользователя, что приемлемо не для всех
сайтов. Данное ограничение не распространяется на доступ через
pserver, однако последний вариант может быть
связан с дополнительным риском с точки зрения безопасности.
Никаких дополнительных программ для обеспечения анонимного
CVS-доступа не потребуется, поскольку &man.cvs.1; входит в базовую
поставку FreeBSD. Вам нужно будет разрешить запуск
cvs из inetd, для чего
необходимо добавить в файл /etc/inetd.conf
строку вида
cvspserver stream tcp nowait root /usr/bin/cvs cvs -f -l -R -T /anoncvstmp --allow-root=/home/ncvs pserver
Обратитесь к странице справочника &man.cvs.1; за дополнительной
информацией по опциям. Кроме того, страницы
info по CVS описывают, как удостовериться в том,
что вы предоставляете доступ только для чтения. Рекомендуется
создать непривилегированную учетную запись, желательно с именем
anoncvs. Потребуется также создать файл
passwd в каталоге
/home/ncvs/CVSROOT и установить пароль (пустой
или anoncvs) для пользователя
anoncvs. Создание файловой системы
/anoncvstmp в памяти не необходимо, но
рекомендуется для ускорения работы: в ней &man.cvs.1; будет создавать
временную структуру каталогов, которая не используется по завершении
операции, но сильно замедляет работу, если требуются операции записи
на реальный диск. Пример описания такой файловой системы в файле
/etc/fstab:
/dev/da0s1b /anoncvstmp mfs rw,-s=786432,-b=4096,-f=512,-i=560,-c=3,-m=0,nosuid,nodev 0 0
Эти установки (разумеется, тщательно подобранные) предложил
&a.jdp;.
Как вести зеркало FreeBSD
Теперь вам известно, какая потребуется машина и как предоставлять
сервисы, но не как получить их самому. :-)
В этом разделе описывается процесс ведения зеркала и поддержания
его в актуальном состоянии, в том числе какие инструменты
использовать и какие сайты выбирать в качестве источников для
синхронизации.
FTP
Файлы, доступные по FTP, составляют большую часть зеркала.
Они включают дистрибутивные наборы, необходимые
для установки по сети, ветви (branches),
в которых отражено текущее состояние исходных текстов,
образы ISO для записи компакт-дисков с
дистрибутивами для установки, образами живых файловых
систем и пакетами, дерево портов, исходные дистрибутивы для сборки
портов и кучу готовых пакетов. И, разумеется, все
вышеописанное — для разных версий FreeBSD и различных
архитектур.
При помощи программ для FTP-зеркалирования
Для выкачивания файлов вы можете использовать программу
FTP-зеркалирования.
Существует довольно много таких, например:
ftp/mirrorftp/ftpmirrorftp/emirrorftp/speglaftp/omiи даже ftp/wget
Ранее наиболее популярным вариантом был
ftp/mirror, хотя из-за того, что
эта программа написана на &man.perl.1;, существуют различные
ограничения, в особенности при зеркалировании больших файловых
структур, таких как FreeBSD. Утверждается, впрочем, что в текущей
версии последняя проблема исправлена за счет дополнительного
алгоритма сравнения структуры каталогов.
Вообще говоря, протокол FTP не лучшим образом подходит для поддержки
зеркала. Измененный файл передается целиком; кроме того, невозможно
создание единого потока данных, который мог бы повысить
эффективность передачи за счет большого TCP-окна.
При помощи RSYNC
Более эффективным будет синхронизация FTP-области при помощи
rsync. Для этого следует установить
пакет net/rsync, который был
описан в разделе .
Поскольку доступ по протоколу rsync не
является обязательным, выбранный вами сайт может его не
поддерживать. Возможно, вам придется немного поискать в сетевой
окрестности зеркало, поддерживающее
rsync.
Поскольку от количества клиентов rsync
ощутимо зависит загрузка сервера, большинство администраторов
вводят ограничения доступа. Для поддержания зеркала вам следует
связаться с администратором сайта, с которым вы будете
синхронизироваться, для уточнения локальных правил и, возможно,
для внесения в них исключения для вас (поскольку вы также
поддерживаете зеркало).
Строка для синхронизации FreeBSD по rsync выглядит примерно так:
&prompt.user; rsync -vaz --delete ftp4.de.FreeBSD.org::FreeBSD/ /pub/FreeBSD/
Загляните в документацию по rsync,
также доступную по адресу
http://rsync.samba.org/
за дополнительной информацией по различным опциям rsync.
Обратите внимание, что в случае синхронизации модуля целиком (а не
отдельного каталога) необходимо явно указать результирующий каталог,
потому что каталог с именем модуля (в данном случае "FreeBSD")
не создается. Для поддержания актуальности вам потребуется
создать скрипт для запуска подобной команды из &man.cron.8;.
При помощи CVSup
Немногие сайты, в первую очередь центральный
ftp-master.FreeBSD.org предоставляют
для синхронизации FTP-области доступ по протоколу
CVSup. Вам потребуется клиент
cvsup, предпочтительно из пакета
net/cvsup (см. также
).
Пример конфигурационного файла (supfile) для
синхронизации с ftp-master.FreeBSD.org:
#
# FreeBSD archive supfile from master server
#
*default host=ftp-master.FreeBSD.org
*default base=/usr
*default prefix=/pub
#*default release=all
*default delete use-rel-suffix
*default umask=002
# If your network link is a T1 or faster, comment out the following line.
#*default compress
FreeBSD-archive release=all preserve
Судя по всему, синхронизация при помощи
CVSup — лучший по эффективности
способ поддержки зеркала, однако он доступен лишь с небольшого числа
сайтов.
Прочтите документацию по CVSup,
например, &man.cvsup.1;, и обратите внимание на опцию
: она может существенно уменьшить объем
работы при синхронизации.
Синхронизация репозитория CVS
Как и в других случаях, репозиторий можно синхронизировать различными
способами; однако, рекомендуемым является
CVSup.
Использование CVSup
Программа CVSup уже была описана ранее
( и
).
Здесь мы лишь приведем пример конфигурационного файла
(supfile):
#
# FreeBSD CVS supfile from master server
#
*default host=cvsup-master.FreeBSD.org
*default base=/usr
*default prefix=/pub/FreeBSD/development/FreeBSD-CVS
*default release=cvs
*default delete use-rel-suffix
*default umask=002
# If your network link is a T1 or faster, comment out the following line.
#*default compress
cvs-all
Кроме того, можете использовать в качестве шаблона
/usr/share/examples/cvsup.
Не забудьте почитать полезную подсказку
здесь.
Другие методы
Использование методов, отличных от
CVSup, не рекомендуется. Тем не менее,
мы кратко упомянем их. Поскольку большая часть зеркал дает доступ к
репозиторию CVS в числе прочих файлов, доступных по FTP, по пути
/pub/FreeBSD/development/FreeBSD-CVS,
могут быть использованы:
FTPRSYNCи даже HTTP
Если вы найдете сайт, поддерживающий обновления по
net/sup, можете использовать его.
Впрочем, учитывая, что именно недостатки sup в свое время
заставили Джона Полстру написать CVSup,
данный метод никак не может быть рекомендован.
Для синхронизации репозитория CVS не может
быть использован AnonCVS, поскольку CVS не
дает доступа к репозиторию напрямую, а лишь позволяет
извлекать отдельные версии модулей.
Зеркалирование страниц WWW
Лучшим способом будет извлечение (check out) из репозитория CVS модуля
www. При условии наличия у вас копии
репозитория, все, что для этого потребуется — выполнить
один раз команду
&prompt.user; cvs -d /home/ncvs co www
и сформировать задание для cron, которое будет
регулярно выполнять операцию cvs up -d -P,
например, каждый раз после обновления копии репозитория.
Разумеется, файлы должны находиться в иерархии, доступной для
публичного веб-доступа. Мы сознательно не будем обсуждать здесь
процесс установки и конфигурации веб-сервера для этих целей.
Для того, чтобы страницы сайта стали доступны для просмотра,
необходимо выполнить команду &man.make.1; в основном каталоге модуля
www. В результате будет создан комплект
стандартных файлов *.html, подготовленных для
просмотра веб-броузером. Обращаем ваше внимание, что для этого
потребуется предварительно установить пакет
textproc/docproj.
Если у вас нет локальной копии репозитория, можно использовать
CVSup для синхронизации копии веб-страниц.
Пример конфигурации можно найти в файле
/usr/share/examples/cvsup/www-supfile.
Приведем его здесь:
#
# WWW module supfile for FreeBSD
#
*default host=cvsup3.de.FreeBSD.org
*default base=/usr
*default prefix=/usr/local
*default release=cvs tag=.
*default delete use-rel-suffix
# If your network link is a T1 or faster, comment out the following line.
*default compress
# This collection retrieves the www/ tree of the FreeBSD repository
www
Использование пакета ftp/wget или
иных инструментов для создания веб-зеркал не рекомендуется.
Зеркала документации FreeBSD
Поскольку многие веб-страницы ссылаются на документацию, хорошей идеей
является поддержка зеркала документации FreeBSD совместно с прочими
зеркалами. Надо отметить, что этот процесс не столь тривиален, как
поддержка зеркала веб-страниц самих по себе.
Для начала вы должны создать копию исходных текстов документации
(как и во многих других случаях, для этого предпочтителен
CVSup). Вот пример файла конфигурации:
#
# FreeBSD documentation supfile
#
*default host=cvsup3.de.FreeBSD.org
*default base=/usr
*default prefix=/usr/share
*default release=cvs tag=.
*default delete use-rel-suffix
# If your network link is a T1 or faster, comment out the following line.
#*default compress
# This will retrieve the entire doc branch of the FreeBSD repository.
# This includes the handbook, FAQ, and translations thereof.
doc-all
Затем, вам потребуется несколько пакетов. К счастью,
специально для этого существует мета-порт
textproc/docproj.
Также, необходимо установить некоторые переменные окружения,
например SGML_CATALOG_FILES, и переменные
в файле /etc/make.conf, главным образом
переменную DOC_LANG (используйте файл
/etc/defaults/make.conf как шаблон).
После этого можно выдать команду make
в главном каталоге документации (по умолчанию это
/usr/share/doc). Как и прежде, эти каталоги
должны быть доступны для вашего веб-сервера (проверьте, что ссылки
ведут в нужные места).
Процесс подготовки и построения документации, а также многие
сопутствующие вопросы, подробно описан в документе
fdp-primer.
Прочтите этот документ, в особенности если у вас возникли
проблемы со сборкой стандартного комплекта документации
FreeBSD.
XXX MAYBE THIS CAN BE LINKED FROM WITHIN - NOT USING AN ABSOLUTE URL XXX
Как часто синхронизироваться?
Каждое зеркало должно регулярно обновляться. Вам потребуется какой-то
набор скриптов, выполняемых посредством &man.cron.8;. Поскольку каждый
администратор, как правило, пишет такие скрипты сам и на свой лад, мы
не можем выдать конкретных указаний. Общие же советы выглядят так:
Создайте скрипт с командой, которая запустит нужное приложение для
обновления зеркала. Рекомендуем использовать скрипт на языке
обычного /bin/sh.
Добавьте команд перенаправления вывода, чтобы записать диагностику
работы в файл.
Попробуйте, как ваш скрипт работает. По завершении проверьте логи.
При помощи утилиты &man.crontab.1; добавьте ваш скрипт в таблицу
регулярных заданий &man.crontab.5; соответствующего пользователя.
Это должен быть пользователь, отличный от пользователя FTP-даемона,
чтобы файлы в FTP-области без атрибута "чтение для всех" не были
доступны анонимным FTP-пользователям. Данное свойство используется
для тестирования перед выходом новых релизов, для того чтобы
удостовериться, что все официальные зеркала содержат все
необходимые файлы к моменту официального объявления релиза.
Некоторые рекомендуемые установки частоты обновления:
FTP-набор: раз в суткирепозиторий CVS: от раза в сутки до раза в часWWW-страницы: раз в суткиС какого сервера синхронизироваться
Это важный вопрос, так что мы попытаемся пояснить, откуда берутся
ответы. Для начала повторим еще несколько раз: никогда
не синхронизируйтесь с ftp.FreeBSD.org.
Организация системы зеркал
Зеркала организуются по странам. Имена хостов всех официальных зеркал
построены по принципу ftpN.CC.FreeBSD.org,
где CC (country code) — домен верхнего
уровня страны, где расположено зеркало,
N — номер зеркала в данной стране.
Этот же принцип применим к именам хостов
cvsupN.CC.FreeBSD.org,
wwwN.CC.FreeBSD.org и т.п.
Кроме того, есть зеркала без доменной части, обозначающей страну.
Все они имеют очень хорошие внешние каналы и обслуживают большое число
одновременных соединений.
Имя ftp.FreeBSD.org на самом деле
указывает на две машины, одна из которых в настоящее время находится
в Дании, а другая в США.
Ни одна из этих машин НЕ является основным
сайтом, и потому не должна использоваться для синхронизации.
Масса документации для живых пользователей указывает на
ftp.FreeBSD.org, так что автоматическим
системам ведения зеркал следует выбирать другие источники
синхронизации.
Кроме того, существует иерархия зеркал в терминах их удаленности от
центра, или слоях. Основные сайты могут быть
описаны как Зеркала нулевого слоя. Зеркала,
синхронизирующиеся по ним, считаются слоем 1,
следующие — слоем 2 и т.д. Официальные
сайты приглашаются на низкие слои, однако следует помнить, что чем
меньше номер слоя, тем выше требования к зеркалу, как было описано в
. Помимо того, доступ к
зеркалам 1 слоя может быть ограничен; безусловно ограничен доступ к
основным сайтам. Иерархия слоев не отражается в
DNS и, вообще говоря, нигде (кроме мастер-сайтов) не документирована.
Тем не менее, официальные зеркала с малыми (1-4, как правило) номерами
обычно представляют первый слой. (Это грубая оценка, и ни в коем
случае не правило).
Так откуда же мне синхронизироваться?
Главное — НЕ с ftp.FreeBSD.org.
Короткий ответ: с зеркала, которое расположено недалеко от вас
в терминах Интернет, и/или доступ к которому наилучший.
Я хочу получить копию зеркала хоть откуда-нибудь!
Если у вас нет каких-либо специальных предпочтений или требований,
см. . Это означает:
Посмотрите на список доступных зеркал в вашей стране.
Вам может помочь
База
данных зеркал FreeBSD.
Выберите те из них, с которыми вам работать быстрее всего
(меньшее число промежуточных узлов и время отклика), и которые предоставляют
нужные вам сервисы (такие как rsync
или CVSup).
Свяжитесь с администраторами выбранного сервера, опишите ваши
запросы и уточните их правила.
Сконфигурируйте ваше зеркало, как описывалось выше.
Я поддерживаю официальное зеркало, какой сайт мне выбрать?
В основном, правила, описанные в
, применимы.
Дополнительно можно убедиться, что выбранный сайт принадлежит
низкому слою.
Другие соображения относительно официальных
зеркал описаны в .
Мне нужен доступ к основным сайтам!
При наличии достаточных причин вы можете получить доступ к одному из
основных сайтов. Доступ к ним ограничен; существуют специальные
правила их использования. Наличие у вас статуса
официального зеркала, безусловно, является
хорошим подспорьем. В противном случае убедитесь, что ваша
страна действительно нуждается еще в одном зеркале.
Если их уже три или более, сначала свяжитесь с администратором
соответствующей зоны DNS (hostmaster@CC.FreeBSD.org)
или напишите в &a.hubs;.
Доступ к одному из мастер-сайтов или подходящему зеркалу 1 уровня
вам помогут обеспечить те же, кто помогал вам получить статус
официального зеркала. В случае неудачи
свяжитесь с mirror-admin@FreeBSD.org и попросите
помощи у них.
Существует три основных сайта для синхронизации набора файлов FTP
и один для репозитория CVS. Веб-страницы и документация хранятся
в CVS, поэтому не имеют отдельных основных сайтов.
ftp-master.FreeBSD.org
Это основной сервер для синхронизации FTP набора.
ftp-master.FreeBSD.org поддерживает доступ по
rsync и
CVSup. Использование этих протоколов
описано в разделах и
.
Приветствуется предоставление зеркалами
1 уровня доступа к FTP-области по протоколу
rsync.
cvsup-master.FreeBSD.org
Это основной сервер для синхронизации репозитория CVS.
cvsup-master.FreeBSD.org обеспечивает доступ
только по протоколу CVSup.
Детали см. в .
Для получения доступа к этому серверу вам нужно связаться с
&a.cvsup-master;. Не забудьте сначала прочитать
Правила
доступа к центральному CVSup серверу FreeBSD!
Подготовьте параметры авторизации, как описано
здесь.
Не забудьте, что в качестве имени сервера команде
cvpasswdнужно указать
freefall.FreeBSD.org, несмотря на что, что
устанавливать соединение вы будете с
cvsup-master.FreeBSD.org.
Официальные зеркала
Официальные зеркала обладают следующим свойствами:
a) имеют запись в домене FreeBSD.org
(обычно типа CNAME).
b) присутствуют в списке официальных зеркал в Руководстве
по FreeBSD и другой документации.
На настоящий момент это все, что отличает их от прочих зеркал.
Официальные зеркала не обязательно принадлежат к
Первому уровню, однако, вряд ли можно найти
зеркало уровня 1, не являющееся официальным.
Отдельные требования к официальным зеркалам 1 уровня
Описать требования для всех официальных зеркал не так просто,
поскольку проект FreeBSD достаточно мягок в этом отношении.
Несколько проще указать, что требуется от официальных
зеркал уровня 1. Прочие официальные зеркала должны
рассматривать этот список как настойчивые
пожелания.
Следующее относится в основном к набору файлов FTP, поскольку
репозиторий CVS всегда должен зеркалироваться полностью,
а веб-страницы представляют собой несколько особый случай.
Зеркала 1 уровня должны:
поддерживать полный список файловпредоставлять доступ для других зеркалобеспечивать доступ по протоколам
FTP и
RSYNC.
Кроме того, администратор такого зеркала должен быть подписан на &a.hubs;.
См. здесь
для дополнительной информации о подписке.
Администраторы зеркал, в особенности 1 уровня, должны
очень внимательно следить за
графиком релизов.
Это поможет подготовиться к крупным всплескам нагрузки на зеркало,
которые всегда происходят после очередного релиза.
Кроме того, важно поддерживать актуальность зеркал (в особенности
зеркал уровня 1). Если Зеркало1 не синхронизировалось в течение
длительного времени, то зеркала следующего уровня будут
синхронизироваться по устаревшей информации и т.д.
Поддерживайте актуальность ваших зеркал!
Как стать официальным зеркалом?
Небезынтересный вопрос, в особенности если учитывать последствия
становления официальным зеркалом, например, увеличившиеся счета
за интернет от вашего провайдера (ведь нагрузка на ваш сервер
неизбежно увеличится). Статус официального зеркала может быть
ключевым требованием для доступа к основному сайту.
Прежде чем отправлять заявку, убедитесь в необходимости
дополнительного официального зеркала в вашем регионе. Справьтесь у
администратора вашей зоны (hostmaster@CC.FreeBSD.org)
или, в случае, если вам не отвечают, здесь: &a.hubs;.
Собственно процедура такова:
Обеспечьте работоспособность и актуальность зеркала (скорее всего,
синхронизируясь не по основному сайту).
Подпишитесь
здесь
на &a.hubs;.
После успешного завершения предыдущих пунктов, напишите
администратору DNS вашего региона (страны) и попросите его создать
запись в зоне для вашего сайта. Почтовый адрес администратора
hostmaster@CC.FreeBSD.org, где
CC — код вашей страны (и суффикс
домена верхнего уровня). Формат вашей записи в DNS описан в
.
Если для вашей страны пока не создано поддомена, свяжитесь с
mirror-admin@FreeBSD.org или сначала напишите
в &a.hubs;.
Персона, помогавшая вам получить статус официального зеркала,
должна послать письмо mirror-admin@FreeBSD.org,
чтобы ваш сайт был включен в список официальных зеркал в
Руководстве
FreeBSD.
Статистика некоторых зеркал
Вот несколько ссылок на статистику использования зеркал
Статистика FTP сайтовftp2.FreeBSD.org - grisha@ispol.com -
(загрузка канала)ftp.is.FreeBSD.org - hostmaster@is.FreeBSD.org -
(загрузка канала)(FTP
процессы)(HTTP процессы)
ftp.cz.FreeBSD.org - cejkar@fit.vutbr.cz -
(загрузка канала)(FTP процессы)(Rsync процессы)ftp4.de.FreeBSD.org - dl@leo.org -
(пользователи FTP)(пользователи RSYNC)Статистика CVSup сайтов
-
- cvsup5.FreeBSD.org - staff@blackened.com - (CVSup процессы)
- cvsup[23456].jp.FreeBSD.org - kuriyama@FreeBSD.org - (CVSup процессы)cvsup.cz.FreeBSD.org - cejkar@fit.vutbr.cz -
(CVSup процессы)[cvsup3|anoncvs].de.FreeBSD.org - dl@leo.org -
(CVSup процессы)
diff --git a/ru_RU.KOI8-R/books/handbook/vinum/chapter.sgml b/ru_RU.KOI8-R/books/handbook/vinum/chapter.sgml
index 20d1c4d5c1..cc09476780 100644
--- a/ru_RU.KOI8-R/books/handbook/vinum/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/vinum/chapter.sgml
@@ -1,1394 +1,1394 @@
Менеджер дискового пространства VinumКраткая аннотацияКакие бы диски у вас ни были, они всегда будут подвержены
ограничениям:Слишком маленькиеСлишком медленныеНедостаточно надежныеGregLeheyИзначально написано Диски слишком малыVinumRAIDSoftwareVinum (произносится Винум,
с ударением на первом слоге) — так называемый
Менеджер дисковых томов — представляет
собой виртуальный дисковый драйвер, призванный решить три вышеописанные
проблемы. Взглянем на них более подробно. Предлагаются
(и реализованы) следующие пути:Объемы дисков растут, тем не менее, растут и требования к объемам
систем хранения данных. Вы запросто можете оказаться в ситуации, когда
требуемый объем файловой системы превышает размеры доступных
дисков. Надо признать, что в настоящее время данная проблема стоит не
так остро, как 10 лет назад, но тем не менее она существует. Некоторые
системы выходят из этого тупика посредством создания мета-устройств,
распределяющих хранящиеся данные по нескольким дискам.Ограниченная пропускная способностьСовременным системам часто необходим одновременный доступ ко многим
данным. В частности, крупный FTP или HTTP-сервер может обслуживать
тысячи одновременных соединений, поступающих по нескольким
100 Mbit/s каналам во внешний мир, что ощутимо превышает скорость
передачи данных большинства дисков.Современные диски могут передавать данные со скоростями до
70 MB/s; однако, эти цифры труднодостижимы в случае, когда к диску
обращается большое число независимых процессов, каждый из которых
может получить лишь часть этого значения. Интересным будет
взглянуть на проблему с точки зрения дисковой подсистемы: важным
параметром в нашем случае будет загрузка подсистемы фактом передачи
фрагмента данных, а именно время, в течение которого диски, участвующие в
передаче, будут заняты.При любом запросе диск сначала должен спозиционировать головки,
дождаться подхода к головкам первого сектора из необходимых, и лишь затем
выполнить обращение. Данная операция может рассматриваться как
атомарная: нет никакого смысла ее прерывать.
Рассмотрим типичный запрос на передачу 10 kB информации. Современные
высокопроизводительные диски подводят головки в нужную позицию в среднем
за 3.5 миллисекунды. Самые быстрые диски вращаются со скоростью
15000 об/мин, так что среднее время на подход первого сектора к
головке (rotational latency, половина времени одного оборота) составит
еще 2 миллисекунды. При линейной скорости передачи данных в
70 MB/s собственно чтение/запись займет около
150 микросекунд — исчезающе мало по сравнению с временем
позиционирования. В нашем случае, эффективная скорость передачи данных
падает почти до 1 MB/s и, очевидно, сильно зависит от размера
передаваемого блока.Традиционным и очевидным решением этой проблемы является принцип
больше шпинделей: вместо использования одного большого
диска можно применить несколько дисков меньшего размера. Диски
позиционируют головки и передают данные независимо, так что эффективная
пропускная способность возрастает примерно во столько раз, сколько дисков
мы применяем.Точная цифра, разумеется, будет несколько ниже: диски могут передавать
данные параллельно, но у нас нет средства обеспечить строго равномерное
распределение нагрузки по всем дискам. Нагрузка на один диск неизбежно
будет больше чем на другой.disk concatenationVinumсцепленные диски (concatenation)Равномерность распределения нагрузки на диски серьезно зависит от
способа распределения по ним данных. В терминах дальнейшего обсуждения,
будет удобно представить пространство хранения набором большого
количества секторов с данными, которые адресуются по номеру, подобно
страницам в книге. Наиболее очевидным методом будет поделить виртуальный
диск на группы расположенных последовательно секторов размером с
физический диск (которые будут подобны разделам книги). Этот метод
называется конкатенацией или сцеплением
(concatenation); его преимуществом является то, что он не
налагает никаких ограничений на размеры применяемых дисков. Конкатенация
эффективна, если нагрузка на дисковое пространство распределена
равномерно. В случае концентрации нагрузки в малой области диска
увеличение производительности не будет заметно. Организация секторов на
сцепленных единицах хранения показана на .Организация сцепленных дисковdisk stripingVinumstriping (перемежение)Альтернативным подходом будет разделение адресного пространства на
компоненты одного, сравнительно небольшого размера, и расположение их
последовательно на разных устройствах. Например, первая группа из 256
секторов будет расположены на первом физическом диске,
вторая — на следующем и т.д. n+1-я группа попадает на первый
диск вслед за первой. Такое расположение называется
перемежающимся (striping) или
RAID-0.
RAIDRAID — сокращение от термина
Redundant Array of Inexpensive Disks (массив недорогих дисков с
резервированием); различные виды RAID
предоставляют разные формы защиты от сбоев. RAID-0,
вообще говоря, не является RAID, поскольку не
обеспечивает резервирования..
Перемежение требует дополнительных усилий для нахождения нужного блока
данных и может приводить к дополнительным нагрузкам на подсистемы
ввода-вывода, если передаваемый блок пересекает границу stripe (тем самым
попадая на разные диски), зато обеспечивает более равномерное
распределение нагрузки по физическим дискам. Распределение блоков по
физическим дискам в случае striping иллюстрируется
.Организация с перемежениемЦелостность данныхНаконец, слабым местом современных дисков является их ограниченная
надежность. Несмотря на то, что за последние несколько лет она ощутимо
выросла, из всех компонентов сервера отказ дисков наиболее вероятен.
Отказ может привести к катастрофическим
результатам: замена отказавшего диска и восстановление данных может
занять несколько дней.disk mirroringVinumзеркалирование (mirroring)RAID-1Традиционным путем решения проблемы надежности является
зеркалирование (mirroring), обеспечивающее
хранение всей информации в двух копиях на различных физических
носителях. С момента изобретения аббревиатуры RAID
эту технику также называют RAID уровня 1 или просто
RAID-1. Любой запрос на запись в таком томе
приводит к записи в оба подтома, чтение может производиться из любой
половины, так что данные остаются доступны в случае отказа одного из
дисков.Зеркалирование имеет два слабых места:Цена: требуется вдвое больше дисков.Проблемы с производительностью: запись производится на оба
диска, требуя вдвое большей пропускной способности шины.
Производительность чтения не уменьшается, более того, часто
увеличивается.RAID-5Альтернативным решением является хранение контрольных сумм
(четности), реализованное в RAID уровней
2, 3, 4 и 5. Наиболее интересен RAID-5. В
реализации Vinum, это вариант организации тома с перемежением, при
котором один из блоков в страйпе выделяется для хранения четности
остальных n-1 блоков. Как требует спецификация
RAID-5, положение блока четности меняется от страйпа
к страйпу.Организация RAID-5По сравнению с зеркалированием преимуществом RAID-5
является гораздо меньшее требование к объему дисков. Скорость чтения
сравнима с чтением в случае томов с перемежением, а вот запись
происходит ощутимо медленнее (примерно вчетверо медленнее чтения). При
отказе одного из дисков массив продолжает работать в "деградировавшем"
режиме: запросы на чтение с оставшихся дисков производятся обычным
образом, а блоки с отказавшего диска перевычисляются из данных
остальных блоков страйпа.
Объекты VinumДля обеспечения необходимой функциональности Vinum использует
четырехуровневую иерархию объектов:"Видимая снаружи" сущность — виртуальный диск,
называемый томом (volume). Тома в основном
аналогичны дискам &unix;, хотя имеются и мелкие различия. На тома
нет ограничений по размеру.Тома образуются из наборов (plex), каждый
из которых представляет полное адресное пространство тома. Данный
уровень иерархии, таким образом, реализует избыточность. Наборы
являются аналогами отдельных дисков в зеркалированном массиве;
содержимое наборов идентично.Поскольку Vinum работает в среде подсистемы хранения данных
&unix;, многодисковые наборы можно было бы реализовать на базе
дисковых разделов &unix;. На практике, подобная реализация
недостаточно гибка (диски &unix; могут иметь весьма ограниченное
число разделов). Вместо этого Vinum вводит еще один
уровень абстракции: единый дисковый раздел &unix;
(drive в терминах Vinum) делится на
непрерывные области, называемые поддисками
(subdisk), которые и будут "строительным материалом" для
наборов.Поддиски, как уже упоминалось, располагаются внутри
приводов (drive) Vinum, существующих
дисковых разделов &unix;. Привод может содержать неограниченное
количество поддисков. Небольшая область в начале привода
зарезервирована под хранение информации о конфигурации и состоянии
Vinum; все остальное пространство пригодно для хранения
данных.Сейчас мы опишем, как эта иерархия обеспечивает необходимую
функциональность для Vinum.Размер томаНаборы могут состоять из большого количества поддисков,
распределенных по разным приводам Vinum. Стало быть, размеры отдельных
дисков не ограничивают размер набора, а следовательно, и тома.ИзбыточностьVinum реализует избыточность посредством связывания с томом
нескольких наборов. Содержимое каждого набора является полной копией
содержимого тома. Количество наборов в томе может быть от одного до
восьми.Хотя набор представляет данные тома целиком, отдельные части
содержимого тома могут быть представлены не всеми наборами.
Во-первых, для некоторых частей набора поддиски могут быть не
определены; во-вторых, часть набора может быть потеряна из-за отказа
диска. До тех пор, пока хотя бы один набор может обеспечить данные для
полного адресного пространства тома, том полностью функционален.ПроизводительностьVinum поддерживает как конкатенацию, так и перемежение на уровне
наборов:Сцепленный набор использует пространство
поддисков последовательно, склеивая их "встык".Набор с перемежением разбивает данные по
поддискам в соответствии с размером страйпа. Поддисков должно быть
по меньшей мере два (чтобы отличить набор от сцепленного), и все
они должны быть одинакового размера.Организация наборов: что выбрать?Vinum, распространяемый с FreeBSD версии &rel.current; поддерживает
два вида организации наборов:Сцепленные наборы наиболее гибки в использовании: они могут
содержать любое количество поддисков произвольного размера. Такой
набор может быть расширен "на лету" путем добавления дополнительных
поддисков. Поддержка сцепленных наборов требует меньших затрат
процессорного времени, чем поддержка наборов с перемежением (хотя
различие вряд ли поддается измерению).
С другой стороны, они наиболее чувствительны к концентрации
нагрузки в одной области тома, при которой один из дисков принимает
на себя всю нагрузку, а остальные бездействуют.Основным преимуществом наборов с перемежением
(RAID-0) является распределение "горячих точек"
нагрузки; вы можете даже полностью уравнять ее, выбрав оптимальный
размер страйпа (около 256 kB). Недостатки такой
организации — более сложный код и ограничения на поддиски:
все они должны быть строго одного размера. Кроме того, процесс
добавления поддиска в набор с перемежением "на ходу" является
настолько нетривиальной задачей, что в настоящее время Vinum не
поддерживает эту операцию. Дополнительное (тривиальное)
ограничение состоит в том, что набор с перемежением должен
содержать как минимум два поддиска, иначе он будет неотличим от
сцепленного.Преимущества и недостатки различных методов организации наборов
описаны в .
-
+
Методы организации наборов VinumТип набораПоддисков, мин.Расширяется "на лету"Поддиски строго одного размераПрименениесцепленный (concatenated)1данетКрупные системы хранения, требующие максимальной
гибкости и умеренной производительностис перемежением (striped)2нетдаВысокая производительность, в том числе в случае
параллельного доступа к данным
Несколько примеровVinum ведет базу данных конфигурации, в которой
описаны все объекты Vinum в отдельной системе. Начальная конфигурация
создается пользователем при помощи системной утилиты &man.vinum.8; из
одного или нескольких конфигурационных файлов. Копия конфигурации
хранится в начале каждого дискового раздела (привода) Vinum. Все копии
обновляются при изменении состояния томов, поэтому после перезапуска
состояние объектов Vinum восстанавливается.Конфигурационный файлКонфигурационный файл описывает объекты Vinum. Описание простого
тома может быть таким:
drive a device /dev/da3h
volume myvol
plex org concat
sd length 512m drive aЗдесь описываются четыре объекта Vinum:Строка drive объявляет дисковый раздел
(привод) и его местоположение на физическом
диске. Приводу дано символьное имя a.
Разделение символьных имен и имен устройств дает возможность
перемещать физические диски (например, по разным контроллерам, или
менять их местами) без изменения конфигурации.Строка volume описывает том.
Единственным требуемым параметром является имя тома
myvol.Строка plex определяет набор.
Единственный обязательный параметр — метод организации
набора, в нашем случае concat (сцепленный).
Давать набору имя в явном виде не обязательно: Vinum автоматически
сгенерирует имя набора из имени тома и суффикса
.px, где
x — номер набора в томе. В нашем
случае набор будет называться myvol.p0.Наконец, строка sd описывает поддиск.
Минимальными требованиями к его описанию являются имя
привода, на котором он будет располагаться, и
его размер. Как и в случае набора, имя указывать не обязательно:
имя поддиска будет построено добавлением
.sx к имени набора, где
x будет номером поддиска в наборе. Наш
поддиск получит имя myvol.p0.s0.В результате обработки такого конфигурационного файла &man.vinum.8;
выдаст нам следующее:
&prompt.root; vinum -> create config1
Configuration summary
Drives: 1 (4 configured)
Volumes: 1 (4 configured)
Plexes: 1 (8 configured)
Subdisks: 1 (16 configured)
D a State: up Device /dev/da3h Avail: 2061/2573 MB (80%)
V myvol State: up Plexes: 1 Size: 512 MB
P myvol.p0 C State: up Subdisks: 1 Size: 512 MB
S myvol.p0.s0 State: up PO: 0 B Size: 512 MBНа этом кратком листинге показан формат вывода &man.vinum.8;.
Графически созданный нами том представлен на
.Простой том VinumЭтот и последующие рисунки изображают том, содержащий один или
несколько наборов, каждый из которых, в свою очередь, состоит из одного
или нескольких поддисков. В первом тривиальном примере том состоит из
одного набора, представленного одним поддиском.Построенный нами только что том не имеет никаких преимуществ перед
обычным дисковым разделом. Он содержит единственный набор, так что не
обеспечивает избыточность; набор состоит из одного поддиска, поэтому
методика распределения дисковых блоков ничем не отличается от дискового
раздела. В последующих параграфах мы рассмотрим более интересные
конфигурации.Повышаем надежность: зеркалированиеНадежность тома может быть повышена при помощи зеркалирования.
Планируя зеркалированный том, важно не забыть о том, чтобы поддиски
каждого набора располагались на разных физических дисках, чтобы отказ
одного из них не привел к выходу из строя более чем одного набора. Вот
конфигурация, определяющая зеркалированный том:
drive b device /dev/da4h
volume mirror
plex org concat
sd length 512m drive a
plex org concat
sd length 512m drive bКак мы видим, нет необходимости вновь описывать привод
a, поскольку Vinum сохраняет состояние уже
сконфигурированных объектов. После обработки этих определений
конфигурация будет выглядеть так:
Drives: 2 (4 configured)
Volumes: 2 (4 configured)
Plexes: 3 (8 configured)
Subdisks: 3 (16 configured)
D a State: up Device /dev/da3h Avail: 1549/2573 MB (60%)
D b State: up Device /dev/da4h Avail: 2061/2573 MB (80%)
V myvol State: up Plexes: 1 Size: 512 MB
V mirror State: up Plexes: 2 Size: 512 MB
P myvol.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB
S myvol.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB иллюстрирует структуру
полученного тома.Зеркалированный том VinumВ данном примере каждый набор содержит все 512 MB адресного
пространства тома. Как и в предыдущем случае, каждый набор состоит
из одного поддиска.Оптимизируем производительностьЗеркалированный том из предыдущего примера гораздо более
отказоустойчив, чем обычный том, но его производительность ниже:
каждый запрос на запись выливается в две операции физической записи,
что вдвое увеличивает необходимую пропускную способность шины дисковой
подсистемы. Увеличение производительности требует иного подхода:
вместо зеркалирования данные распределяются (перемежением) по
максимальному количеству физических дисков. Следующий пример
конфигурации создает том с перемежением на четырех дисках:
drive c device /dev/da5h
drive d device /dev/da6h
volume stripe
plex org striped 512k
sd length 128m drive a
sd length 128m drive b
sd length 128m drive c
sd length 128m drive dКак и ранее, нет необходимости переопределять уже
сконфигурированные приводы. Общий вид базы конфигурации Vinum после
создания нового тома будет таким:
Drives: 4 (4 configured)
Volumes: 3 (4 configured)
Plexes: 4 (8 configured)
Subdisks: 7 (16 configured)
D a State: up Device /dev/da3h Avail: 1421/2573 MB (55%)
D b State: up Device /dev/da4h Avail: 1933/2573 MB (75%)
D c State: up Device /dev/da5h Avail: 2445/2573 MB (95%)
D d State: up Device /dev/da6h Avail: 2445/2573 MB (95%)
V myvol State: up Plexes: 1 Size: 512 MB
V mirror State: up Plexes: 2 Size: 512 MB
V striped State: up Plexes: 1 Size: 512 MB
P myvol.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB
P striped.p1 State: up Subdisks: 1 Size: 512 MB
S myvol.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB
S striped.p0.s0 State: up PO: 0 B Size: 128 MB
S striped.p0.s1 State: up PO: 512 kB Size: 128 MB
S striped.p0.s2 State: up PO: 1024 kB Size: 128 MB
S striped.p0.s3 State: up PO: 1536 kB Size: 128 MBТом с перемежениемНовосозданный том представлен на
. Плотность заштрихованных участков
показывает расположение страйпов в адресном пространстве набора (от
светлых к темным).Отказоустойчивость и производительность одновременно
При наличии достаточного количества дисков можно создать том,
сочетающий повышенную отказоустойчивость и высокую производительность
по сравнению со стандартными дисковыми разделами &unix;. Типичная
конфигурация может быть такой:
volume raid10
plex org striped 512k
sd length 102480k drive a
sd length 102480k drive b
sd length 102480k drive c
sd length 102480k drive d
sd length 102480k drive e
plex org striped 512k
sd length 102480k drive c
sd length 102480k drive d
sd length 102480k drive e
sd length 102480k drive a
sd length 102480k drive bКак вы можете заметить, поддиски второго набора смещены на два
привода относительно поддисков первого. В результате даже при запросе
на запись, пересекающем границы страйпа, не возникнет двух обращений к
одному физическому диску. отражает структуру нового
тома.Зеркалированный том с перемежениемПравила именования объектовКак уже было описано, Vinum автоматически именует создаваемые
наборы и поддиски, хотя эти имена и могут быть переопределены. На самом
деле, мы не рекомендовали бы переопределять стандартные имена: опыт с
дисковым менеджером VERITAS показал, что гибкость в именовании объектов
не дает ощутимого преимущества, а запутать пользователя может.Имена объектов могут состоять из любых непробельных символов.
Впрочем, рекомендуем ограничиться буквами, цифрами и подчеркиваниями.
Имена томов, наборов и поддисков могут быть до 64 символов длиной;
максимальная длина имени привода — 32 символа.Для объектов Vinum в иерархии /dev/vinum
создаются файлы устройств. Приведенный выше пример конфигурации создаст
следующий набор устройств:Управляющие устройства
/dev/vinum/control и
/dev/vinum/controld, используемые системной
утилитой &man.vinum.8; и даемоном Vinum соответственно.Блоковые и символьные устройства для каждого из томов.
Основные устройства, используемые Vinum'ом. Блоковые устройства
именуются в соответствии с именами томов; символьные, в соответствии
с традицией именования устройств BSD, имеют префикс
r. Таким образом, вышеописанная конфигурация
будет включать блоковые устройства
/dev/vinum/myvol,
/dev/vinum/mirror,
/dev/vinum/striped,
/dev/vinum/raid5 и
/dev/vinum/raid10,
и символьные устройства
/dev/vinum/rmyvol,
/dev/vinum/rmirror,
/dev/vinum/rstriped,
/dev/vinum/rraid5 и
/dev/vinum/rraid10.Каталог /dev/vinum/drive
с записями для каждого привода. В реальности, каждая запись является
символьной ссылкой на соответствующий файл дискового
устройства.Каталог /dev/vinum/volume
с записями для томов. В нем содержатся поддиректории для каждого
набора, внутри которых, в свою очередь, имеются поддиректории для
каждого из поддисков.Каталоги
/dev/vinum/plex,
/dev/vinum/sd и
/dev/vinum/rsd,
содержащие блочные устройства для наборов, блочные и символьные
устройства для каждого из поддисков.Например, для конфигурации, описываемой как
drive drive1 device /dev/sd1h
drive drive2 device /dev/sd2h
drive drive3 device /dev/sd3h
drive drive4 device /dev/sd4h
volume s64 setupstate
plex org striped 64k
sd length 100m drive drive1
sd length 100m drive drive2
sd length 100m drive drive3
sd length 100m drive drive4после обработки &man.vinum.8;, созданный набор устройств в каталоге
/dev/vinum будет таким:
brwx------ 1 root wheel 25, 0x40000001 Apr 13 16:46 Control
brwx------ 1 root wheel 25, 0x40000002 Apr 13 16:46 control
brwx------ 1 root wheel 25, 0x40000000 Apr 13 16:46 controld
drwxr-xr-x 2 root wheel 512 Apr 13 16:46 drive
drwxr-xr-x 2 root wheel 512 Apr 13 16:46 plex
crwxr-xr-- 1 root wheel 91, 2 Apr 13 16:46 rs64
drwxr-xr-x 2 root wheel 512 Apr 13 16:46 rsd
drwxr-xr-x 2 root wheel 512 Apr 13 16:46 rvol
brwxr-xr-- 1 root wheel 25, 2 Apr 13 16:46 s64
drwxr-xr-x 2 root wheel 512 Apr 13 16:46 sd
drwxr-xr-x 3 root wheel 512 Apr 13 16:46 vol
/dev/vinum/drive:
total 0
lrwxr-xr-x 1 root wheel 9 Apr 13 16:46 drive1 -> /dev/sd1h
lrwxr-xr-x 1 root wheel 9 Apr 13 16:46 drive2 -> /dev/sd2h
lrwxr-xr-x 1 root wheel 9 Apr 13 16:46 drive3 -> /dev/sd3h
lrwxr-xr-x 1 root wheel 9 Apr 13 16:46 drive4 -> /dev/sd4h
/dev/vinum/plex:
total 0
brwxr-xr-- 1 root wheel 25, 0x10000002 Apr 13 16:46 s64.p0
/dev/vinum/rsd:
total 0
crwxr-xr-- 1 root wheel 91, 0x20000002 Apr 13 16:46 s64.p0.s0
crwxr-xr-- 1 root wheel 91, 0x20100002 Apr 13 16:46 s64.p0.s1
crwxr-xr-- 1 root wheel 91, 0x20200002 Apr 13 16:46 s64.p0.s2
crwxr-xr-- 1 root wheel 91, 0x20300002 Apr 13 16:46 s64.p0.s3
/dev/vinum/rvol:
total 0
crwxr-xr-- 1 root wheel 91, 2 Apr 13 16:46 s64
/dev/vinum/sd:
total 0
brwxr-xr-- 1 root wheel 25, 0x20000002 Apr 13 16:46 s64.p0.s0
brwxr-xr-- 1 root wheel 25, 0x20100002 Apr 13 16:46 s64.p0.s1
brwxr-xr-- 1 root wheel 25, 0x20200002 Apr 13 16:46 s64.p0.s2
brwxr-xr-- 1 root wheel 25, 0x20300002 Apr 13 16:46 s64.p0.s3
/dev/vinum/vol:
total 1
brwxr-xr-- 1 root wheel 25, 2 Apr 13 16:46 s64
drwxr-xr-x 3 root wheel 512 Apr 13 16:46 s64.plex
/dev/vinum/vol/s64.plex:
total 1
brwxr-xr-- 1 root wheel 25, 0x10000002 Apr 13 16:46 s64.p0
drwxr-xr-x 2 root wheel 512 Apr 13 16:46 s64.p0.sd
/dev/vinum/vol/s64.plex/s64.p0.sd:
total 0
brwxr-xr-- 1 root wheel 25, 0x20000002 Apr 13 16:46 s64.p0.s0
brwxr-xr-- 1 root wheel 25, 0x20100002 Apr 13 16:46 s64.p0.s1
brwxr-xr-- 1 root wheel 25, 0x20200002 Apr 13 16:46 s64.p0.s2
brwxr-xr-- 1 root wheel 25, 0x20300002 Apr 13 16:46 s64.p0.s3Заметим, что, несмотря на то что наборы и поддиски не рекомендуется
называть каким-либо специальным образом, приводы Vinum должны быть
поименованы. Именование позволяет отвязать приводы от физических
устройств, и при этом обеспечить их автоматическое распознавание. Имена
приводов могут достигать длины в 32 символа.Создание файловых системТома с точки зрения системы аналогичны дискам, за одним малым
исключением: в отличие от дисков &unix;, тома Vinum не содержат таблиц
разделов. В результате
потребовалось модифицировать некоторые утилиты работы с дисками, в
первую очередь &man.newfs.8;, которая ранее использовала последний
символ имени тома для определения идентификатора раздела. Например,
дисковое устройство может именоваться
/dev/ad0a — первый раздел
(a) первого (0) IDE-диска
(ad) — или
/dev/da2h — восьмой раздел
(h) третьего (2) диска SCSI
(da). Том Vinum может называться, например,
/dev/vinum/concat — как легко
видеть, имя тома никак не связано с именем раздела.Обычно &man.newfs.8; пытается интерпретировать имя раздела и
сообщает об ошибке при невозможности такой интерпретации:&prompt.root; newfs /dev/vinum/concat
newfs: /dev/vinum/concat: can't figure out file system partitionДальнейшее относится к версиям FreeBSD до 5.0:Для создания файловых систем на томе Vinum следует использовать
опцию &man.newfs.8; :&prompt.root; newfs -v /dev/vinum/concatСоздание конфигурации VinumСтандартное (GENERIC) ядро FreeBSD не включает
Vinum. Хотя и можно собрать специальное ядро с включенной поддержкой
Vinum, этот вариант не рекомендуется. Обычный способ активизации
Vinum — загрузка модуля для ядра (kld). При
этом, явно использовать команду &man.kldload.8; нет необходимости: при
старте утилита &man.vinum.8; проверит наличие поддержки Vinum в ядре и
при необходимости загрузит модуль автоматически.АктивацияVinum хранит конфигурационную информацию на дисковых разделах
в той же форме, что используется в файлах конфигурации при создании
объектов. Впрочем, в них применяются некоторые ключевые слова, не
разрешенные в файлах конфигурации. Например, хранимая на диске база
может выглядеть так:volume myvol state up
volume bigraid state down
plex name myvol.p0 state up org concat vol myvol
plex name myvol.p1 state up org concat vol myvol
plex name myvol.p2 state init org striped 512b vol myvol
plex name bigraid.p0 state initializing org raid5 512b vol bigraid
sd name myvol.p0.s0 drive a plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 0b
sd name myvol.p0.s1 drive b plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 1048576b
sd name myvol.p1.s0 drive c plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 0b
sd name myvol.p1.s1 drive d plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 1048576b
sd name myvol.p2.s0 drive a plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 0b
sd name myvol.p2.s1 drive b plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 524288b
sd name myvol.p2.s2 drive c plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1048576b
sd name myvol.p2.s3 drive d plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1572864b
sd name bigraid.p0.s0 drive a plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 0b
sd name bigraid.p0.s1 drive b plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 4194304b
sd name bigraid.p0.s2 drive c plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 8388608b
sd name bigraid.p0.s3 drive d plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 12582912b
sd name bigraid.p0.s4 drive e plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 16777216bВидно, что каждый объект имеет явно описанное имя, а поддиски
еще и явное положение на приводе (и то и другое может, хотя это и не
рекомендуется, устанавливаться пользователем). Помимо этого, для
каждого объекта хранится его состояние (и установка состояния
напрямую пользователю недоступна). Vinum не хранит в
конфигурационных базах информацию о приводах: она создается при
сканировании дисковых разделов, помеченных как Vinum. Это дает
возможность Vinum правильно идентифицировать диски при смене имени
устройства.Автоматическая активацияДля автоматического старта Vinum при загрузке системы добавьте
следующую строку в файл конфигурации системы
/etc/rc.conf:start_vinum="YES" # set to YES to start vinumЕсли в вашей системе нет файла
/etc/rc.conf, создайте его с таким содержимым.
Данная строка вызовет активацию kld модуля Vinum
при загрузке, а также старт всех объектов, упомянутых в конфигурации
Vinum. Активация Vinum происходит до монтирования файловых систем,
так что возможны автоматическая проверка (&man.fsck.8;) и
монтирование файловых систем на томах Vinum.При старте с помощью команды vinum start,
Vinum читает базы конфигурации с одного из приводов. В нормальной
ситуации все приводы содержат идентичную информацию о конфигурации,
так что не имеет значения, какой именно диск будет читаться. В
случае краха Vinum определяет, какая копия является наиболее свежей,
в дальнейшем использует ее, а также обновляет ее на оставшихся
приводах.Vinum для корневой файловой системыСервер, все информационные файловые системы которого дублированы,
хотелось бы оснастить и зеркалированной корневой файловой системой.
Создание такой конфигурации не вполне тривиально по сравнению с
зеркалированием прочих файловых систем:Корневая файловая система должна быть доступна для чтения
в самом начале процесса загрузки, так что инфраструктура Vinum
должна к этому моменту уже работать.Том с корневой файловой системой содержит, помимо прочего,
системный загрузчик и ядро, которые должны читаться "родными"
(native) утилитами компьютера (BIOS для машин архитектуры PC);
обеспечить поддержку ими тонкостей Vinum зачастую невозможно.
В данном разделе термин корневой том означает
том Vinum, содержащий корневую файловую систему. Неплохой идеей является
назвать такой том "root", хотя это, разумеется, и
необязательно. Все наши примеры, впрочем, будут использовать именно это
имя. Активизация Vinum на ранней стадии процесса загрузкиДля обеспечения этого необходимо следующее:Vinum должен быть доступен ядру еще на этапе загрузки.
Метод, описанный в разделе ,
неприменим; на самом деле, параметр start_vinumне должен быть установлен. Одним из вариантов
является сборка ядра с поддержкой Vinum, что возможно, но, как
правило, нежелательно. Более удобный вариант — загрузка
модуля ядра Vinum при помощи /boot/loader
(), для чего в файл
/boot/loader.conf следует добавить
строкуvinum_load="YES"Vinum должен быть активирован достаточно рано, поскольку
требуется предоставить том для корневой файловой системы. По
умолчанию Vinum в ядре не начинает поиск приводов, содержащих
информацию о томах Vinum, до команды администратора (или одного из
стартовых скриптов) vinum start.Данный раздел описывает необходимые действия для FreeBSD
версии 5.x и старше. Шаги, необходимые в случае FreeBSD версии 4.x,
описаны ниже: .Строкаvinum.autostart="YES"в файле /boot/loader.conf, указывает
Vinum автоматически просканировать все диски
для сбора информации о томах в процессе загрузки ядра.Обращаем ваше внимание, что нет необходимости как-либо
специально сообщать ядру, где находится корневая файловая система.
Загрузчик (/boot/loader) найдет необходимое
имя устройства в
/etc/fstab и передаст его ядру. В момент
монтирования корневой файловой системы ядро передаст имя устройства
соответствующему драйверу для декодирования (трансляции в пару
идентификаторов устройств — major/minor device
number).Загрузчик должен прочесть корневой том VinumВ настоящее время начальный загрузчик FreeBSD ограничен размером
всего в 7.5 KB, и этот размер фактически исчерпан (загрузчик должен
уметь прочесть файл /boot/loader с файловой
системы формата UFS и передать ему управление). Невозможно разместить
в загрузчике внутренние структуры Vinum, чтобы он мог считать настройку
Vinum и самостоятельно определить элементы загрузочного тома.
Поэтому, для создания у
загрузчика иллюзии, что загрузка происходит со стандартного раздела
"a" требуются некоторые дополнительные
ухищрения.Для того, чтобы такая загрузка вообще была возможной, корневой том
должен отвечать следующим требованиям:быть только зеркалированным (ни перемежение, ни RAID5
невозможны);содержать ровно один поддиск на каждом из наборов.Заметим, что возможно (и является, вообще говоря, основной целью),
чтобы корневой том содержал несколько наборов, каждый с копией корневой
файловой системы. В процессе загрузки, впрочем, используется только
одна из копий (на этапе поиска начального загрузчика и его
конфигурационных файлов, ядра, модулей и т.п. до момента монтирования
корневой файловой системы). Для обеспечения возможности загрузки
поддиск каждого из наборов должен быть отображен в псевдо-раздел
"a". Вообще говоря, эти псевдо-разделы не обязаны
находиться на одних и тех же местах дисков; тем не менее, во избежание
излишней путаницы, рекомендуется создавать тома с одинаково устроенными
дисками для зеркалирования.Для создания псевдо-разделов "a" необходимо
для каждого из дисков, содержащих копию корневого тома, проделать
следующее:Определить положение (смещение от начала устройства) и размер
поддиска, являющегося частью корневого тома:vinum l -rv rootОтметим, что все размеры и смещения в терминах Vinum указаны
в байтах. Для получения номеров блоков, используемых в утилите
disklabel, все числа надо поделить
на 512.Выполнить командуdisklabel -e
devnameдля каждого из дисков, на котором будет расположен корневой
том. devname будет или именем диска
(например, da0) для дисков без таблицы
слайсов, или именем слайса (ad0s1).Если на устройстве уже есть раздел "a"
(скорее всего, это предыдущая инкарнация корневой файловой
системы), он должен быть переименован (чтобы быть доступным в
будущем, на всякий случай; при этом стартовый загрузчик больше не
должен выбирать его по умолчанию). Не забудьте, что активный
(например, смонтированный) раздел не может быть переименован, так
что переименование нужно производить или загрузившись с диска
Fixit, или в два шага (для конфигурации с
зеркалированием сначала переименовать раздел на втором диске,
затем, после перезагрузки, на первом).Затем, адрес начала нового раздела "a"
вычисляется как сумма начального смещения раздела Vinum и
подсчитанного выше адреса поддиска внутри привода. Совместно с
вычисленным размером эти значения вносятся в поля
"offset" и "size" строки
"a" &man.disklabel.8;; Поле
"fstype" должно быть 4.2BSD.
Значения полей "fsize",
"bsize" и "cpg" желательно
заполнить в соответствии с имеющейся файловой системой, хотя
в обсуждаемом контексте это и не строго обязательно.Как можно заметить, новосозданный раздел
"a" располагается внутри раздела Vinum. Утилита
disklabel разрешает разделам пересекаться только
в случае, если один из них корректно описан как имеющий тип
"vinum".Готово! Сконструированный псевдо-раздел
"a" создан на каждом из устройств, содержащих
реплики корневого тома. Крайне важно проверить результат
еще раз, выполнив командуfsck -n
/dev/devnameaСледует помнить, что все файлы, содержащие загрузочную
конфигурацию, должны быть построены в соответствии с новой корневой
файловой системой; скорее всего, эта информация не будет соответствовать текущему
положению вещей. В особенности, следует обратить внимание на
содержимое файлов /etc/fstab и
/boot/loader.conf.После перезагрузки начальный загрузчик должен определить данные
новой корневой файловой системы на основе Vinum и действовать в
соответствии с ними. В завершение процесса инициализации ядра, после
упоминания всех определившихся устройств, должно появиться сообщение
вида:Mounting root from ufs:/dev/vinum/rootПример конфигурации корневой файловой системы на базе VinumПосле создания корневого тома, вывод команды
vinum l -rv root будет примерно таким:
...
Subdisk root.p0.s0:
Size: 125829120 bytes (120 MB)
State: up
Plex root.p0 at offset 0 (0 B)
Drive disk0 (/dev/da0h) at offset 135680 (132 kB)
Subdisk root.p1.s0:
Size: 125829120 bytes (120 MB)
State: up
Plex root.p1 at offset 0 (0 B)
Drive disk1 (/dev/da1h) at offset 135680 (132 kB)
Из этой информации нас более всего интересует смещение в
135680 байт относительно раздела
/dev/da0h. После деления на 512 получим 265
дисковых блоков для утилиты disklabel. Аналогичным
образом, размер тома составит 245760 512-байтных блоков. Так же
устроена реплика тома на диске
/dev/da1h.Разметка разделов (disklabel) будет выглядеть примерно так:
...
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
a: 245760 281 4.2BSD 2048 16384 0 # (Cyl. 0*- 15*)
c: 71771688 0 unused 0 0 # (Cyl. 0 - 4467*)
h: 71771672 16 vinum # (Cyl. 0*- 4467*)
Как уже отмечалось, размер ("size")
псевдо-раздела "a" соответствует значению,
вычисленному ранее; смещение ("offset") равно сумме
смещения поддиска внутри раздела Vinum ("h") и
смещения самого этого раздела относительно начала диска (слайса). Так
мы избегаем проблем, описанных ниже (). Заметим также, что раздел
"a" целиком размещен внутри раздела
"h", описывающего все данные Vinum на этом
диске.Заметим, что в описанном примере все дисковое пространство отдано
Vinum. Корневого раздела, существовавшего до настройки Vinum, нет,
поскольку это вновь установленный диск, предназначенный для
использования исключительно в Vinum.Проблемы и их устранениеЕсли что-то пошло не так, должен быть путь для восстановления
доступа к информации. Далее описаны некоторые известные проблемные
ситуации и способы их устранения.Загрузчик работает, но система не грузитсяЕсли по каким-то причинам система не может завершить загрузку,
загрузчик может быть прерван нажатием пробела в течение первых 10 (по
умолчанию) секунд. Вы можете посмотреть переменные загрузчика (такие
как vinum.autostart) при помощи команды
show и изменить их содержимое командами
set и unset.Если единственной проблемой было отсутствие загруженного
модуля ядра Vinum, поможет просто команда
load vinum.Процесс загрузки должен быть продолжен командой
boot -as. Параметры заставят
ядро спросить о корневой файловой системе (параметр
) и остановить процесс загрузки в
однопользовательском (параметр ) режиме. При этом
корневая файловая система будет смонтирована в режиме "только для
чтения" (read-only). В результате, даже если будет смонтирован лишь
один набор из многонаборного тома, риска рассинхронизации наборов
нет.Ответом на приглашение ввести адрес корневой файловой системы
может быть имя любого устройства, указывающего на файловую систему,
пригодную для загрузки. При корректно построенной карте файловых
систем (/etc/fstab) значением по умолчанию
должно быть что-то вроде ufs:/dev/vinum/root.
Распространенной альтернативой будет, например,
ufs:da0d (раздел, содержащий корневую файловую
систему в эпоху "до Vinum"). Будьте осторожны, монтируя в качестве
корневой файловой системы раздел "a", ссылающийся
внутрь привода Vinum. В зеркалированном томе смонтируется только
часть файловой системы. Если вам потребуется изменить ее
содержимое, необходимо будет также удалить и создать заново остальные
наборы тома в конфигурации Vinum, иначе они будут содержать
несинхронизированные данные.Работает только основной загрузчикЕсли /boot/loader не загружается,
а основной загрузчик все еще пригоден к работе (в
начале процесса загрузки появляется одиночный минус в первой колонке экрана),
можно попытаться прервать основной загрузчик нажатием пробела в этот
момент. При этом загрузка будет остановлена на второй стадии
(см. ). Можно
попробовать загрузиться с другого раздела, например, содержащего
предыдущую копию корневой файловой системы (бывший раздел
"a", см. выше).Ничего не грузится, загрузчик падаетЭто происходит, когда загрузчик на диске затерт Vinum'ом.
К сожалению, Vinum оставляет лишь 4 KB в начале своего раздела
до записи своих управляющих блоков. Две стадии первоначального
загрузчика в совокупности с меткой диска BSD (disklabel) требуют
8 KB. Так что попытка создать раздел Vinum по смещению 0 диска
или слайса, который должен быть загруженным, затрет загрузчик.Что хуже, попытка разрешить описанную ситуацию посредством
загрузки с диска Fixit и перезаписи начального
загрузчика при помощи команды disklabel -B (как
описано в ) приведет к тому, что
загрузчик затрет управляющий заголовок Vinum, и тот не сможет найти
свой диск. Хотя собственно конфигурация Vinum при этом не
потеряется, и все данные могут быть восстановлены посредством
создания объектов на их предыдущих местах, очень сложно окончательно
исправить ситуацию. Весь раздел Vinum должен быть смещен по
крайней мере на 4 KB, так чтобы загрузчики и заголовок Vinum
более не пересекались.Отличия для FreeBSD версий 4.xВ системах под управлением FreeBSD 4.x отсутствуют некоторые
функции ядра, необходимые для автоматического сканирования дисков
Vinum'ом; кроме того, код, определяющий номера устройств корневой
файловой системы, недостаточно продвинут для того, чтобы понимать
конструкции вида /dev/vinum/root. Требуется
приложение дополнительных усилий.Во-первых, в файле /boot/loader.conf должен
быть явно указан список дисков, которые Vinum будет сканировать:vinum.drives="/dev/da0
/dev/da1"Важно, чтобы были описаны все приводы, на которых могут встретиться
данные Vinum. Не произойдет ничего плохого, если будет описано
больше дисков, чем необходимо. Также, нет нужды
описывать все слайсы и/или разделы (Vinum сканирует их
автоматически).Поскольку подпрограммы разбора имени корневой файловой системы
и определения номеров устройств воспринимают только
классические имена, такие как
/dev/ad0s1a, для них не подходят имена типа
/dev/vinum/root. Имя корневого тома должно
быть сообщено Vinum отдельно. Для этого служит переменная загрузчика
vinum.root. Соответствующая строка в файле
/boot/loader.conf будет выглядеть так:vinum.root="root"Процедура инициализации ядра выглядит так: перед определением
корневого устройства для загрузки проверяется, не установил ли
какой-либо модуль соответствующий параметр ядра. В случае
положительного ответа и при совпадении основного
(major) номера устройства драйвера и установленной файловой системы
автоопределение прекращается, что дает возможность передать продолжение
процесса загрузки и монтирование корневого тома Vinum.Следует отметить, впрочем, что обработчик ответа на запрос имени
корневой файловой системы (boot -a) не может
разобрать имя тома Vinum. Можно ввести имя устройства, отличное от
устройства Vinum (в этом случае произойдет стандартная процедура
разбора, так что можно указать, например,
ufs:da0d). Имена же, подобные
ufs:vinum/root не могут быть распознаны.
Единственным выходом из этой ситуации будет перезагрузка и введение
имени устройства заново (префикс /dev/ в
ответе на запрос askroot всегда можно опустить).