Руководство Freebsd icon

Руководство Freebsd


Смотрите также:
Руководство Freebsd...
Ермаков В. И. ред...
Avira AntiVir PersonalEdition...
Киев, пр-т Освободителей 25, кв. 15...
Техническое задание на разработку сайта...
Frenzy 0 информация о релизе...
Руководство по парашютной подготовке авиации досааф россии (рпп-2010) (далее Руководство)...
Методологическое руководство по мониторингу и оценке...
Методологическое руководство по мониторингу и оценке вич/спид, туберкулез и малярия июнь 2004 г...
Руководство пользователя Сетевой цифровой видеорекордер...
Руководство проведением конкурса Общее руководство, организацию подготовки...
Методическое руководство по дипломному проектированию...



страницы: 1   ...   6   7   8   9   10   11   12   13   ...   27
вернуться в начало



^

19.6. Несколько примеров


Vinum ведет базу данных конфигурации, в которой описаны все объекты Vinum в отдельной системе. Начальная конфигурация создается пользователем при помощи системной утилиты gvinum(8) из одного или нескольких конфигурационных файлов. Копия конфигурации хранится в начале каждого дискового раздела (привода) Vinum. Все копии обновляются при изменении состояния томов, поэтому после перезапуска состояние объектов Vinum восстанавливается.
^

19.6.1. Конфигурационный файл


Конфигурационный файл описывает объекты 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.

В результате обработки такого конфигурационного файла gvinum(8) выдаст нам следующее:

# gvinum -> 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

На этом кратком листинге показан формат вывода gvinum(8). Графически созданный нами том представлен на Рис. 19-4.

Рисунок 19-4. Простой том Vinum



Этот и последующие рисунки изображают том, содержащий один или несколько наборов, каждый из которых, в свою очередь, состоит из одного или нескольких поддисков. В первом тривиальном примере том состоит из одного набора, представленного одним поддиском.

Построенный нами только что том не имеет никаких преимуществ перед обычным дисковым разделом. Он содержит единственный набор, так что не обеспечивает избыточность; набор состоит из одного поддиска, поэтому методика распределения дисковых блоков ничем не отличается от дискового раздела. В последующих параграфах мы рассмотрим более интересные конфигурации.
^

19.6.2. Повышаем надежность: зеркалирование


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

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

Рис. 19-5 иллюстрирует структуру полученного тома.

Рисунок 19-5. Зеркалированный том Vinum



В данном примере каждый набор содержит все 512 MB адресного пространства тома. Как и в предыдущем случае, каждый набор состоит из одного поддиска.
^

19.6.3. Оптимизируем производительность


Зеркалированный том из предыдущего примера гораздо более отказоустойчив, чем обычный том, но его производительность ниже: каждый запрос на запись выливается в две операции физической записи, что вдвое увеличивает необходимую пропускную способность шины дисковой подсистемы. Увеличение производительности требует иного подхода: вместо зеркалирования данные распределяются (перемежением) по максимальному количеству физических дисков. Следующий пример конфигурации создает том с перемежением на четырех дисках:

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

Рисунок 19-6. Том с перемежением



Новосозданный том представлен на Рис. 19-6. Плотность заштрихованных участков показывает расположение страйпов в адресном пространстве набора (от светлых к темным).
^

19.6.4. Отказоустойчивость и производительность одновременно


При наличии достаточного количества дисков можно создать том, сочетающий повышенную отказоустойчивость и высокую производительность по сравнению со стандартными дисковыми разделами 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

Как вы можете заметить, поддиски второго набора смещены на два привода относительно поддисков первого. В результате даже при запросе на запись, пересекающем границы страйпа, не возникнет двух обращений к одному физическому диску.

Рис. 19-7 отражает структуру нового тома.

Рисунок 19-7. Зеркалированный том с перемежением


^

19.7. Правила именования объектов


Как уже было описано, Vinum автоматически именует создаваемые наборы и поддиски, хотя эти имена и могут быть переопределены. На самом деле, мы не рекомендовали бы переопределять стандартные имена: опыт с дисковым менеджером VERITAS показал, что гибкость в именовании объектов не дает ощутимого преимущества, а запутать пользователя может.

Имена объектов могут состоять из любых непробельных символов. Впрочем, рекомендуем ограничиться буквами, цифрами и подчеркиваниями. Имена томов, наборов и поддисков могут быть до 64 символов длиной; максимальная длина имени привода — 32 символа.

Для объектов Vinum в иерархии /dev/gvinum создаются файлы устройств. Приведенный выше пример конфигурации создаст следующий набор устройств:



Замечание: Данный список относится только к ранней реализации Vinum.

Управляющие устройства /dev/vinum/control и /dev/vinum/controld, используемые системной утилитой gvinum(8) и даемоном Vinum соответственно.

• Устройства для каждого из томов. Основные устройства, используемые Vinum'ом. Таким образом, вышеописанная конфигурация будет включать блоковые устройства /dev/gvinum/myvol, /dev/gvinum/mirror, /dev/gvinum/striped, /dev/gvinum/raid5 и /dev/gvinum/raid10.



Замечание: Данный список относится только к ранней реализации Vinum.

Каталог /dev/vinum/drive с записями для каждого привода. В реальности, каждая запись является символьной ссылкой на соответствующий файл дискового устройства.

• Записи для томов располагаются в каталоге /dev/gvinum.

• Каталоги /dev/gvinum/plex и /dev/gvinum/sd содержащие устройства для наборов и для каждого из поддисков.

Например, для конфигурации, описываемой как

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

после обработки gvinum(8), созданный набор устройств в каталоге /dev/gvinum будет таким:

drwxr-xr-x 2 root wheel 512 Apr 13 16:46 plex

crwxr-xr-- 1 root wheel 91, 2 Apr 13 16:46 s64

drwxr-xr-x 2 root wheel 512 Apr 13 16:46 sd


/dev/vinum/plex:

total 0

crwxr-xr-- 1 root wheel 25, 0x10000002 Apr 13 16:46 s64.p0


/dev/vinum/sd:

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

Заметим, что, несмотря на то что наборы и поддиски не рекомендуется называть каким-либо специальным образом, приводы Vinum должны быть поименованы. Именование позволяет отвязать приводы от физических устройств, и при этом обеспечить их автоматическое распознавание. Имена приводов могут достигать длины в 32 символа.
^

19.7.1. Создание файловых систем


Тома с точки зрения системы аналогичны дискам, за одним малым исключением: в отличие от дисков UNIX, тома Vinum не содержат таблиц разделов. В результате потребовалось модифицировать некоторые утилиты работы с дисками, в первую очередь newfs(8), которая ранее использовала последний символ имени тома для определения идентификатора раздела. Например, дисковое устройство может именоваться /dev/ad0a — первый раздел (a) первого (0) IDE-диска (ad) — или /dev/da2h — восьмой раздел (h) третьего (2) диска SCSI (da). Том Vinum может называться, например, /dev/gvinum/concat — как легко видеть, имя тома никак не связано с именем раздела.

Обычно newfs(8) пытается интерпретировать имя раздела и сообщает об ошибке при невозможности такой интерпретации:

# newfs /dev/gvinum/concat

newfs: /dev/gvinum/concat: can't figure out file system partition

Для создания файловых систем на томе Vinum следует использовать команду newfs(8):

# newfs /dev/gvinum/concat

Замечание: Для FreeBSD версий до 5.0 необходимо использовать флаг -v и старую схему именования устройств:

# newfs -v /dev/vinum/concat
^

19.8. Создание конфигурации Vinum


Стандартное (GENERIC) ядро FreeBSD не включает Vinum. Хотя и можно собрать специальное ядро с включенной поддержкой Vinum, этот вариант не рекомендуется. Обычный способ активизации Vinum — загрузка модуля для ядра (kld). При этом, явно использовать команду kldload(8) нет необходимости: при старте утилита gvinum(8) проверит наличие поддержки Vinum в ядре и при необходимости загрузит модуль автоматически.

19.8.1. Активация


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 правильно идентифицировать диски при смене имени устройства.
^
19.8.1.1. Автоматическая активация

Замечание: Данная информация относится к исторической реализации. Gvinum обеспечивает автоматическую активацию при условии загрузки модуля ядра.

Для автоматического старта Vinum при загрузке системы добавьте следующую строку в файл конфигурации системы /etc/rc.conf:

start_vinum="YES" # set to YES to start vinum

Если в вашей системе нет файла /etc/rc.conf, создайте его с таким содержимым. Данная строка вызовет активацию kld модуля Vinum при загрузке, а также старт всех объектов, упомянутых в конфигурации Vinum. Активация Vinum происходит до монтирования файловых систем, так что возможны автоматическая проверка (fsck(8)) и монтирование файловых систем на томах Vinum.

При старте с помощью команды vinum start, Vinum читает базы конфигурации с одного из приводов. В нормальной ситуации все приводы содержат идентичную информацию о конфигурации, так что не имеет значения, какой именно диск будет читаться. В случае краха Vinum определяет, какая копия является наиболее свежей, в дальнейшем использует ее, а также обновляет ее на оставшихся приводах.
^

19.9. Vinum для корневой файловой системы


Сервер, все информационные файловые системы которого дублированы, хотелось бы оснастить и зеркалированной корневой файловой системой. Создание такой конфигурации не вполне тривиально по сравнению с зеркалированием прочих файловых систем:

• Корневая файловая система должна быть доступна для чтения в самом начале процесса загрузки, так что инфраструктура Vinum должна к этому моменту уже работать.

• Том с корневой файловой системой содержит, помимо прочего, системный загрузчик и ядро, которые должны читаться "родными" (native) утилитами компьютера (BIOS для машин архитектуры PC); обеспечить поддержку ими тонкостей Vinum зачастую невозможно.

В данном разделе термин ''корневой том'' означает том Vinum, содержащий корневую файловую систему. Неплохой идеей является назвать такой том "root", хотя это, разумеется, и необязательно. Все наши примеры, впрочем, будут использовать именно это имя.
^

19.9.1. Активизация Vinum на ранней стадии процесса загрузки


Для обеспечения этого необходимо следующее:

• Vinum должен быть доступен ядру еще на этапе загрузки. Метод, описанный в Разд. 19.8.1.1, неприменим; на самом деле, параметр start_vinum не должен быть установлен. Одним из вариантов является сборка ядра с поддержкой Vinum, что возможно, но, как правило, нежелательно. Более удобный вариант — загрузка модуля ядра Vinum при помощи /boot/loader (Разд. 12.3.3), для чего в файл /boot/loader.conf следует добавить строку

geom_vinum_load="YES"



Замечание: В случае Gvinum, все стартовые процедуры производятся автоматически, при загрузке модуля ядра. Дальнейший текст описывает поведение исторической реализации Vinum для старых систем.

Vinum должен быть активирован достаточно рано, поскольку требуется предоставить том для корневой файловой системы. По умолчанию Vinum в ядре не начинает поиск приводов, содержащих информацию о томах Vinum, до команды администратора (или одного из стартовых скриптов) vinum start.

Замечание: Данный раздел описывает необходимые действия для FreeBSD версии 5.X и старше. Шаги, необходимые в случае FreeBSD версии 4.X, описаны ниже: Разд. 19.9.5.

Строка

vinum.autostart="YES"

в файле /boot/loader.conf, указывает Vinum автоматически просканировать все диски для сбора информации о томах в процессе загрузки ядра.

Обращаем ваше внимание, что нет необходимости как-либо специально сообщать ядру, где находится корневая файловая система. Загрузчик (/boot/loader) найдет необходимое имя устройства в /etc/fstab и передаст его ядру. В момент монтирования корневой файловой системы ядро передаст имя устройства соответствующему драйверу для декодирования (трансляции в пару идентификаторов устройств — major/minor device number).
^

19.9.2. Загрузчик должен прочесть корневой том Vinum


В настоящее время начальный загрузчик FreeBSD ограничен размером всего в 7.5 KB, и этот размер фактически исчерпан (загрузчик должен уметь прочесть файл /boot/loader с файловой системы формата UFS и передать ему управление). Невозможно разместить в загрузчике внутренние структуры Vinum, чтобы он мог считать настройку Vinum и самостоятельно определить элементы загрузочного тома. Поэтому, для создания у загрузчика иллюзии, что загрузка происходит со стандартного раздела "a" требуются некоторые дополнительные ухищрения.

Для того, чтобы такая загрузка вообще была возможной, корневой том должен отвечать следующим требованиям:

• быть только зеркалированным (ни перемежение, ни RAID5 невозможны);

• содержать ровно один поддиск на каждом из наборов.

Заметим, что возможно (и является, вообще говоря, основной целью), чтобы корневой том содержал несколько наборов, каждый с копией корневой файловой системы. В процессе загрузки, впрочем, используется только одна из копий (на этапе поиска начального загрузчика и его конфигурационных файлов, ядра, модулей и т.п. до момента монтирования корневой файловой системы). Для обеспечения возможности загрузки поддиск каждого из наборов должен быть отображен в псевдо-раздел "a". Вообще говоря, эти псевдо-разделы не обязаны находиться на одних и тех же местах дисков; тем не менее, во избежание излишней путаницы, рекомендуется создавать тома с одинаково устроенными дисками для зеркалирования.

Для создания псевдо-разделов "a" необходимо для каждого из дисков, содержащих копию корневого тома, проделать следующее:

1. Определить положение (смещение от начала устройства) и размер поддиска, являющегося частью корневого тома:

# gvinum l -rv root

Отметим, что все размеры и смещения в терминах Vinum указаны в байтах. Для получения номеров блоков, используемых в утилите disklabel, все числа надо поделить на 512.

2. Выполнить команду

# disklabel -e devname

для каждого из дисков, на котором будет расположен корневой том. devname будет или именем диска (например, da0) для дисков без таблицы слайсов, или именем слайса (ad0s1).

Если на устройстве уже есть раздел "a" (скорее всего, это предыдущая инкарнация корневой файловой системы), он должен быть переименован (чтобы быть доступным в будущем, на всякий случай; при этом стартовый загрузчик больше не должен выбирать его по умолчанию). Не забудьте, что активный (например, смонтированный) раздел не может быть переименован, так что переименование нужно производить или загрузившись с диска ''Fixit'', или в два шага (для конфигурации с зеркалированием сначала переименовать раздел на втором диске, затем, после перезагрузки, на первом).

Затем, адрес начала нового раздела "a" вычисляется как сумма начального смещения раздела Vinum и подсчитанного выше адреса поддиска внутри привода. Совместно с вычисленным размером эти значения вносятся в поля "offset" и "size" строки "a" disklabel(8); Поле "fstype" должно быть 4.2BSD. Значения полей "fsize", "bsize" и "cpg" желательно заполнить в соответствии с имеющейся файловой системой, хотя в обсуждаемом контексте это и не строго обязательно.

Как можно заметить, новосозданный раздел "a" располагается внутри раздела Vinum. Утилита disklabel разрешает разделам пересекаться только в случае, если один из них корректно описан как имеющий тип "vinum".

3. Готово! Сконструированный псевдо-раздел "a" создан на каждом из устройств, содержащих реплики корневого тома. Крайне важно проверить результат еще раз, выполнив команду

# fsck -n /dev/devnamea

Следует помнить, что все файлы, содержащие загрузочную конфигурацию, должны быть построены в соответствии с новой корневой файловой системой; скорее всего, эта информация не будет соответствовать текущему положению вещей. В особенности, следует обратить внимание на содержимое файлов /etc/fstab и /boot/loader.conf.

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

Mounting root from ufs:/dev/gvinum/root
^

19.9.3. Пример конфигурации корневой файловой системы на базе Vinum


После создания корневого тома, вывод команды gvinum 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") и смещения самого этого раздела относительно начала диска (слайса). Так мы избегаем проблем, описанных ниже (Разд. 19.9.4.3). Заметим также, что раздел "a" целиком размещен внутри раздела "h", описывающего все данные Vinum на этом диске.

Заметим, что в описанном примере все дисковое пространство отдано Vinum. Корневого раздела, существовавшего до настройки Vinum, нет, поскольку это вновь установленный диск, предназначенный для использования исключительно в Vinum.
^

19.9.4. Проблемы и их устранение


Если что-то пошло не так, должен быть путь для восстановления доступа к информации. Далее описаны некоторые известные проблемные ситуации и способы их устранения.
^
19.9.4.1. Загрузчик работает, но система не грузится

Если по каким-то причинам система не может завершить загрузку, загрузчик может быть прерван нажатием пробела в течение первых 10 (по умолчанию) секунд. Вы можете посмотреть переменные загрузчика (такие как vinum.autostart) при помощи команды show и изменить их содержимое командами set и unset.

Если единственной проблемой было отсутствие загруженного модуля ядра Vinum, поможет просто команда load geom_vinum.

Процесс загрузки должен быть продолжен командой boot -as. Параметры -as заставят ядро спросить о корневой файловой системе (параметр -a) и остановить процесс загрузки в однопользовательском (параметр -s) режиме. При этом корневая файловая система будет смонтирована в режиме "только для чтения" (read-only). В результате, даже если будет смонтирован лишь один набор из многонаборного тома, риска рассинхронизации наборов нет.

Ответом на приглашение ввести адрес корневой файловой системы может быть имя любого устройства, указывающего на файловую систему, пригодную для загрузки. При корректно построенной карте файловых систем (/etc/fstab) значением по умолчанию должно быть что-то вроде ufs:/dev/gvinum/root. Распространенной альтернативой будет, например, ufs:da0d (раздел, содержащий корневую файловую систему в эпоху "до Vinum"). Будьте осторожны, монтируя в качестве корневой файловой системы раздел "a", ссылающийся внутрь привода Vinum. В зеркалированном томе смонтируется только часть файловой системы. Если вам потребуется изменить ее содержимое, необходимо будет также удалить и создать заново остальные наборы тома в конфигурации Vinum, иначе они будут содержать несинхронизированные данные.
^
19.9.4.2. Работает только основной загрузчик

Если /boot/loader не загружается, а основной загрузчик все еще пригоден к работе (в начале процесса загрузки появляется одиночный минус в первой колонке экрана), можно попытаться прервать основной загрузчик нажатием пробела в этот момент. При этом загрузка будет остановлена на второй стадии (см. Разд. 12.3.2). Можно попробовать загрузиться с другого раздела, например, содержащего предыдущую копию корневой файловой системы (бывший раздел "a", см. выше).
^
19.9.4.3. Ничего не грузится, загрузчик падает

Это происходит, когда загрузчик на диске затерт Vinum'ом. К сожалению, Vinum оставляет лишь 4 KB в начале своего раздела до записи своих управляющих блоков. Две стадии первоначального загрузчика в совокупности с меткой диска BSD (disklabel) требуют 8 KB. Так что попытка создать раздел Vinum по смещению 0 диска или слайса, который должен быть загруженным, затрет загрузчик.

Что хуже, попытка разрешить описанную ситуацию посредством загрузки с диска ''Fixit'' и перезаписи начального загрузчика при помощи команды disklabel -B (как описано в Разд. 12.3.2) приведет к тому, что загрузчик затрет управляющий заголовок Vinum, и тот не сможет найти свой диск. Хотя собственно конфигурация Vinum при этом не потеряется, и все данные могут быть восстановлены посредством создания объектов на их предыдущих местах, очень сложно окончательно исправить ситуацию. Весь раздел Vinum должен быть смещен по крайней мере на 4 KB, так чтобы загрузчики и заголовок Vinum более не пересекались.
^

19.9.5. Отличия для 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'' всегда можно опустить).

Примечания

1. RAID — сокращение от термина Redundant Array of Inexpensive Disks (массив недорогих дисков с резервированием); различные виды RAID предоставляют разные формы защиты от сбоев. RAID-0, вообще говоря, не является RAID, поскольку не обеспечивает резервирования.




Скачать 14.45 Mb.
оставить комментарий
страница10/27
Дата18.10.2011
Размер14.45 Mb.
ТипРуководство, Образовательные материалы
Добавить документ в свой блог или на сайт

страницы: 1   ...   6   7   8   9   10   11   12   13   ...   27
отлично
  1
Ваша оценка:
Разместите кнопку на своём сайте или блоге:
rudocs.exdat.com

База данных защищена авторским правом ©exdat 2000-2017
При копировании материала укажите ссылку
обратиться к администрации
Анализ
Справочники
Сценарии
Рефераты
Курсовые работы
Авторефераты
Программы
Методички
Документы
Понятия

опубликовать
Документы

Рейтинг@Mail.ru
наверх