Версия для печати
Архив документации на OpenNet.ru /
Раздел "Руководства по FreeBSD на русском"
(Многостраничная версия)
FreeBSD с корнем на CDROM и разделами на программном RAID-1.
Copyleft Polina Soloviova
Содержание:
Copyleft Polina Soloviova
FreeBSD с корнем на CDROM и разделами на программном RAID-1.
Copyleft Polina Soloviova
Корень на CDROM - подготовка.
Для того, чтобы ваша будущая система могла существовать на CDROM, необходимо
"научить" этому ядро. Подробно о конфигурации и установке нового ядра читайте
раздел документации Конфигурация Ядра во FreeBSD. Опции в конфигурационном файле ядра, отвечающие за загрузку с CDROM и действия по конфигурированию и установке нового ядра в каталог, содержащий корень будущей системы (/usr/local/cdsystem/), приведены ниже.
- перейдите в каталог, содержащий конфигурационные файлы ядра:
# cd /usr/src/sys/i386/conf/
или
# cd /sys/i386/conf/
- отредактируйте нужный файл конфигурации ядра, используя любой, удобный для вас текстовый редактор:
# vi YOUR_KERNEL_CONFIG
добавьте в конфигурационный файл строки:
# включаем поддержку файловой системы ISO 9660
options CD9660
# это поддержка корня на CDROM
options CD9660_ROOT
# где искать корень файловой системы, здесь это CDROM==/dev/acd0a
options ROOTDEVNAME=\"cd9660:/dev/acd0a\"
- сконфигурируйте и установите новое ядро в директорию, содержащую корень будущей системы
# /usr/sbin/config YOUR_KERNEL_CONFIG
# cd ../../compile/YOUR_KERNEL_CONFIG
# make depend
# make
# make DESTDIR=/usr/local/cdsystem install
Все файлы устройств обычно находятся в каталоге /dev/.
Для работы системы при каждой загрузке с CDROM необходимо создание некоторых специальных файлов устройств. Без этого многие команды и утилиты не будут работать вообще или будут работать некорректно. В число таких критичных файлов устройств входит, например, /dev/null, в случае проблем с которым не работают такие необходимые команды, как ps(1), w(1) и многие другие. Для решения этой проблемы можно воспользоваться тем фактом, что при каждой загрузке системы в многопользовательский режим (multi-user mode) процесс-"прародитель" всех процессов init(8) выполняет скрипт rc(8), находящийся в директории /etc в корне системы. Отредактируйте этот файл таким образом, чтобы при каждой загрузке системы с CDROM создавались необходимые файлы устройств. Следуйте инструкциям, приведенным ниже:
- отредактируйте файл /usr/local/cdsystem/etc/rc в любом, удобном для вас текстовом редакторе
vi /usr/local/cdsystem/etc/rc
добавьте после строки, содержащей
export HOME PATH (в районе 53 строки),
следующее:
/sbin/mount_mfs -s 12000 -o union,noatime,rw swap /dev
cd /dev && sh MAKEDEV vty12 pty0 std
данная команда, каждый раз при загрузке с CDROM будет создавать в оперативной
памяти файловую систему размером около 6Мб, монтировать туда каталог /dev таким образом, чтобы содержимое уже имеющегося каталога /dev оставалось видимым (опция union), и после этого создавать в /dev/ необходимые устройства.
Для того, чтобы не редактировать файл rc вручную, вы можете воспользоваться патчем, который внесет в этот файл необходимые изменения. В этом случае вместо вышеописанных действий выполните следующее:
- скопируйте расположенный ниже текст в файл /usr/local/rc-dev.patch, или скачайте файл rc-dev.patch в указанную выше директорию. В нем отражены необходимые изменения.
--- rc Sun Nov 10 13:00:30 2002
+++ rc.dev Sun Nov 10 13:01:47 2002
@@ -52,6 +52,9 @@
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
export HOME PATH
+/sbin/mount_mfs -s 12000 -o union,noatime,rw swap /dev
+cd /dev && sh MAKEDEV vty12 pty0 std
+
# BOOTP diskless boot. We have to run the rc file early in order to
# retarget various config files.
# See /usr/share/examples/diskless/clone_root for details on how
- перейдите в /etc директорию будущей системы и измените файл rc, используя команду patch(1)
# cd /usr/local/cdsystem/etc
# patch < /usr/local/rc-dev.patch
Подробнее см. mount_mfs(8), MAKEDEV(8), mknod(8), patch(1), diff(1).
- перейдите в директорию /dev будущей системы и удалите файлы устройств которые будут создаваться каждый раз при загрузке системы с CDROM:
# cd /usr/local/cdsystem/dev
# rm -f ttyv* ptyp* ttyp* vga io stderr stdin stdout null zero \
kmem mem random urandom tty klog
Большая часть системных конфигурационных файлов находится в директории /etc. Если вы планируете использовать создаваемый ISO-образ системы только для одного сервера, и вы уверены, что в процессе его работы изменения конфигурации системы не понадобятся (такие, например, как IP-адрес машины, список DNS-серверов, и т.д.), вы можете оставить всю директорию /etc на CD-диске практически без изменений. Единственное изменение в таком случае коснется файла fstab
Если же вам в процессе работы нужно некоторые параметры изменять, или вы хотите использовать ISO-образ будущей системы более, чем для одного сервера (например, как шаблон для быстрой установки и конфигурирования новых серверов), некоторые из конфигурационных файлов нужно иметь возможность изменять. В числе таких файлов - конфигурационные файлы rc.conf, rc.conf.local для системных скриптов rc*, отвечающие за такие параметры, как запуск тех или иных сервисов во время загрузки системы, сетевые настройки, настройки терминалов и многое другое. Содержимое этих файлов для каждой машины будет своим. Сюда же можно отнести файл resolv.conf, нужный для resolver(5), вполне возможно, что список доменов для поиска и DNS-серверов для запросов у разных машин также будет разным.
В зависимости от ваших потребностей, у вас может быть другой список файлов, которые нужно иметь возможность редактировать, однако, во многих случаях такими файлами будут /etc/rc.conf, /etc/rc.firewall и resolv.conf. Перенесите их в /usr/local/etc , и создайте соответствующие символические ссылки в директории /etc новой системы, выполнив следующее:
- скопируйте выбранные файлы в /usr/local/etc
# cp /etc/resolv.conf /etc/rc.firewall /usr/local/etc/
# cp /etc/rc.conf /usr/local/etc/rc.conf.local
- удалите эти файлы (кроме rc.conf) из директории /etc/ будущей системы:
# cd /usr/local/cdsystem/etc
# rm -f rc.firewall resolv.conf
- создайте символические ссылки на нужные файлы
# ln -s /usr/local/etc/rc.firewall rc.firewall
# ln -s /usr/local/etc/rc.conf.local rc.conf.local
# ln -s /usr/local/etc/resolv.conf resolv.conf
- отредактируйте файл /usr/local/cdsystem/etc/rc
перед строчкой
adjkerntz -i (в районе 219 строки)
добавьте:
if [ -f /etc/rc.conf.local ]; then
. /etc/rc.conf.local
fi
это нужно для того, чтобы после удачного монтирования файловых систем из /etc/fstab был прочитан файл /etc/rc.conf.local, в котором вы будете указывать все необходимые параметры, различные для разных машин.
# vi /usr/local/cdsystem/etc/rc
Для того, чтобы не редактировать вручную файл rc, вы можете воспользоваться патчем. Cкопируйте текст, приведенный ниже, в файл /usr/local/rc-local.patch
--- rc Sun Nov 10 15:38:51 2002
+++ rc.local Sun Nov 10 15:41:20 2002
@@ -213,6 +213,9 @@
;;
esac
+if [ -r /etc/rc.conf.local ]; then
+ . /etc/rc.conf.local
+fi
adjkerntz -i
выполните команды:
# cd /usr/local/cdsystem/etc
# patch < /usr/local/rc-local.patch
- отредактируйте файл /etc/fstab новой системы. Строка, содержащая сведения о старом корне системы (ad0s1a) для новой системы не нужна.
# cd /usr/local/cdsystem/etc
# vi fstab
удалите строку
/dev/ad0s1a / ufs rw 1 1
Для того, чтобы иметь возможность в любой момент примонтировать бывший корень системы (ad0s1a) и его аналог на втором жестком диске (ad2s1a) в директорию /mnt, создайте в этой директории соответствующие каталоги:
# mkdir /usr/local/cdsystem/mnt/ad0s1a
# mkdir /usr/local/cdsystem/mnt/ad2s1a
Теперь ваша система готова к загрузке с CDROM, и вы можете перейти к
конфигурированию RAID.
Copyleft Polina Soloviova
FreeBSD с корнем на CDROM и разделами на программном RAID-1.
Copyleft Polina Soloviova
Благодарности
Большое спасибо Лаврентьеву Андрею за консультации и моральную поддержку.
Copyleft Polina Soloviova
FreeBSD с корнем на CDROM и разделами на программном RAID-1.
Copyleft Polina Soloviova
Добавим немного гибкости.
Теперь вам не страшны неисправности жестких дисков. А что делать, если
неисправен CDROM? Для того, чтобы в такой ситуации можно было с минимальными
потерями времени вернуть сервер в рабочее состояние, нужно добавить возможность
загрузки с жестких дисков. Для этого скопируйте содержимое CDROM в те разделы,
где в этом случае будет корень системы, выполнив следующие команды:
- примонтируйте партиции ad0s1a и ad2s1a, то есть те, где при загрузке с жесткого диска будет корень системы.
# fsck /dev/ad0s1a
# fsck /dev/ad2s1a
# mount -t ufs /dev/ad0s1a /mnt/ad0s1a
# mount -t ufs /dev/ad2s1a /mnt/ad2s1a
- скопируйте содержимое CDROM в /mnt/ad0s1a и /mnt/ad2s1a
# tar --one-file-system -vpscf - -C / . | tar xpf - -C /mnt/ad0s1a
# tar --one-file-system -vpscf - -C / . | tar xpf - -C /mnt/ad2s1a
заметьте, директории /mnt/ad0s1a/dev/ и /mnt/ad2s1a/dev пусты. Опция --one-file-system команды tar(1) - запрещает этой команде выходить за пределы той файловой системы, в которой она находится. Другой вариант выполнения тех же действий вам уже знаком - это использование опции -X filename команды tar(1), что использовалось в разделе Создание стартовой директории данного руководства.
- создайте специальные файлы устройств в директориях /mnt/ad0s1a/dev и /mnt/ad2s1a/dev
# cp /dev/MAKEDEV /mnt/ad0s1a/dev
# cp /dev/MAKEDEV /mnt/ad2s1a/dev
# cd /mnt/ad0s1a/dev && sh MAKEDEV all
# cd /mnt/ad2s1a/dev && sh MAKEDEV all
эти команды создадут в указанных директориях все нужные для нормальной работы системы файлы устройств, за исключением устройств vinum(8) и ccd(4). В случае реализации с использованием vinum(8), скопируйте нужные устройства из корня текущей системы:
# mkdir /mnt/ad0s1a/dev/vinum
# cp -Rp /dev/vinum/* /mnt/ad0s1a/dev/vinum
# mkdir /mnt/ad2s1a/dev/vinum
# cp -Rp /dev/vinum/* /mnt/ad2s1a/dev/vinum
В случае реализации с использованием ccd(4), создайте необходимые файлы устройств с помощью скрипта MAKEDEV(8):
# cd /mnt/ad0s1a/dev && sh MAKEDEV ccd0 ccd1 ccd2
# cd /mnt/ad2s1a/dev && sh MAKEDEV ccd0 ccd1 ccd2
- отредактируете файлы /mnt/ad0s1a/etc/fstab и /mnt/ad2s1a/etc/fstab: в случае загрузки с жесткого диска необходимо указать системе, с какой партиции монтировать корень
# vi /mnt/ad0s1a/etc/fstab
добавьте в начало строку
/dev/ad0s1a / ufw rw 1 1
# vi /mnt/ad2s1a/etc/fstab
здесь добавьте в начало строку
/dev/ad2s1a / ufw rw 1 1
таким образом, файл /mnt/ad0s1a/etc/fstab теперь должен содержать строки:
- в случае реализации с использованием vinum(8):
| /dev/ad0s1a |
/ |
ufs |
rw |
1 |
1 |
| /dev/ad0s1b |
none |
swap |
sw |
0 |
0 |
| /dev/ad2s1b |
none |
swap |
sw |
0 |
0 |
| /dev/vinum/var |
/var |
ufs |
rw |
2 |
2 |
| /dev/vinum/tmp |
/tmp |
ufs |
rw |
2 |
2 |
| /dev/vinum/local |
/usr/local |
ufs |
rw |
2 |
2 |
| proc |
/proc |
procfs |
rw |
0 |
0 |
- в случае реализации с использованием ccd(4):
| /dev/ad0s1a |
/ |
ufs |
rw |
1 |
1 |
| /dev/ad0s1b |
none |
swap |
sw |
0 |
0 |
| /dev/ad2s1b |
none |
swap |
sw |
0 |
0 |
| /dev/ccd0c |
/var |
ufs |
rw |
2 |
2 |
| /dev/ccd1c |
/tmp |
ufs |
rw |
2 |
2 |
| /dev/ccd2c |
/usr/local |
ufs |
rw |
2 |
2 |
| proc |
/proc |
procfs |
rw |
0 |
0 |
файл /mnt/ad2s1a/etc/fstab будет содержать аналогичные строки, единственное отличие - /dev/ad2s1a вместо /dev/ad0s1a
- отредактируйте файл rc в обеих смонтированных директориях
# vi /mnt/ad0s1a/etc/rc
здесь не нужны исправления, внесенные для загрузки с CDROM.
удалите строки:
sbin/mount_mfs -s 12000 -o union,noatime,rw swap /dev
cd /dev && sh MAKEDEV vty12 pty0 std
Теперь в случае необходимости у вас есть возможность загрузить систему с любого из жестких дисков.
| Предыдущая |
Содержание |
Следующая |
| Запуск RAID-1
под управлением ccd |
|
Другой вариант настройки ccd:
применение утилиты disklabel к ccd - устройствам. |
Copyleft Polina Soloviova
FreeBSD с корнем на CDROM и разделами на программном RAID-1.
Copyleft Polina Soloviova
Содержание:
Copyleft Polina Soloviova
FreeBSD с корнем на CDROM и разделами на программном RAID-1.
Copyleft Polina Soloviova
Введение.
Если вы решили повысить надежность и отказоустойчивость вашего сервера
под управлением OS FreeBSD, но при этом не имеете возможности приобрести
аппаратную RAID-систему, данное руководство поможет вам в настройке программной
реализации RAID.
Здесь описано, как перенести корень рабочей системы на CDROM, как настроить
и запустить программный RAID-1. Если вы не хотите иметь корневую файловую
систему на CDROM, или, наоборот, хотите только корневую фаловую систему на
CDROM без RAID, пропустите соответствующие главы.
Какой инструмент вы будете использовать для реализации программного RAID-1,
зависит от ваших требований к конечному результату. У вас есть на выбор два
варианта: сделать это с помощью vinum(8) или же с помощью ccd(4). У каждого из них есть свои достоинства и недостатки. Например, если использовать ccd(4),
при неисправности одного из жестких дисков система будет перезагружена в
однопользовательский режим, и вам будет предложено исправить ситуацию. С
vinum(8)
такого не произойдет - система останется живой и работоспособной до тех пор,
пока хоть один из дисков цел. С другой стороны, возможно, вам покажется несколько
проще и понятнее процесс настройки ccd(4), чем vinum(8). В данном руководстве будут описаны оба варианта, что позволит вам взвесить все "за" и "против" и самостоятельно сделать выбор.
К сожалению, ни одна из перечисленных выше реализаций не поддерживает корень системы на программном RAID. Именно поэтому корень в данном руководстве будет перенесен на CDROM, а для повышения надежности такого решения, будет добавлена возможность загрузки с любого из жестких дисков.
Ниже перечислены достоинства системы с корнем на CDROM и партициями на программном RAID-1:
- При отказе CD-диска вам будет достаточно перезагрузить систему, вставив новый, подготовленный заранее, диск.
- При отказе привода CDROM, вы можете его заменить или загрузиться с любого из жестких дисков.
- При отказе одного из жестких дисков, сама система, и вся информация, записанная на диск, не пострадает. Вы сможете с минимальными потерями времени вернуть сервер в рабочее состояние.
- При отказе одного из контроллеров IDE, вам также будет практически не о чем беспокоиться - в зависимости от того, какой контроллер остался цел, вы сможете загрузиться с жесткого диска или с CDROM на этом контроллере (правда, лучше не доверять системе, у которой отказал IDE-контроллер). При отказе IDE или SCSI контроллеров их просто необходимо заменить.
- Системные конфигурационные файлы, записанные на CDROM, невозможно изменить, что уменьшает возможность успеха несанкционированных и нежелательных действий со стороны локального злоумышленника или стороннего человека, случайно получившего доступ к серверу.
- Такую систему можно использовать в качестве шаблона для установки новых серверов "с нуля" - достаточно загрузить новую машину с подготовленного диска, разметить дисковое пространство и скопировать нужное содержимое на соответствующие партиции, и вы получите сервер с уже установленными на нем необходимыми сервисами (например, такими как apache, squid, qmail).
- Такой подход очень удобно использовать как страховочный вариант поднятия сервера в случае краха одного из дисков и любой из root-fs или usr-fs.
Все примеры в данном руководстве созданы на основе следующей конфигурации:
Система: FreeBSD 4.5
Партиции (в порядке их расположения на диске):
| Точка монтирования |
Устройство |
Размер |
| / |
/dev/ad0s1a |
512M |
| swap |
/dev/ad0s1b |
1024M |
| /var |
/dev/ad0s1e |
512M |
| /tmp |
/dev/ad0s1f |
256M |
| /usr/local |
/dev/ad0s1g |
20480M |
Для зеркалирования вам понадобится второй жесткий диск размером, равным
или большим, чем тот, на котором у вас установлена рабочая система.
До реализации программного зеркалирования типа RAID-1, файловая система сервера выглядела следующим образом:
# df -H
| Filesystem |
Size |
Used |
Avail |
Capacity |
Mounted on |
| /dev/ad0s1a |
528M |
391M |
119M |
23% |
/ |
| /dev/ad0s1e |
528M |
14M |
472M |
3% |
/var |
| /dev/ad0s1f |
264M |
2.0K |
243M |
0% |
/tmp |
| /dev/ad0s1g |
21G |
160M |
19G |
1% |
/usr/local |
| procfs |
4.1K |
4.1K |
0B |
100% |
/proc |
после реализации RAID-1, файловая система будет выглядеть:
# df -H
| Filesystem |
Size |
Used |
Avail |
Capacity |
Mounted on |
| /dev/acd0a |
339M |
339M |
0B |
100% |
/ |
| mfs:10 |
5.9M |
16K |
5.4M |
0% |
/dev |
| /dev/vinum/var |
528M |
14M |
472M |
3% |
/var |
| /dev/vinum/tmp |
264M |
2.0K |
243M |
0% |
/tmp |
| /dev/vinum/local |
21G |
160M |
19G |
1% |
/usr/local |
| procfs |
4.1K |
4.1K |
0B |
100% |
/proc |
или:
# df -H
| Filesystem |
Size |
Used |
Avail |
Capacity |
Mounted on |
| /dev/acd0a |
339M |
339M |
0B |
100% |
/ |
| mfs:10 |
5.9M |
16K |
5.4M |
0% |
/dev |
| /dev/ccd0c |
528M/ |
14M |
472M |
3% |
/var |
| /dev/ccd1c |
264M |
2.0K |
243M |
0% |
/tmp |
| /dev/ccd2c |
21G |
160M |
19G |
1% |
/usr/local |
| procfs |
4.1K |
4.1K |
0B |
100% |
/proc |
в зависимости от выбранного метода реализации.
Copyleft Polina Soloviova
FreeBSD с корнем на CDROM и разделами на программном RAID-1.
Copyleft Polina Soloviova
Ссылки
Руководство основано на следующих документах:
Ссылки на man - страницы утилит и конфигурационных файлов, использованных в руководстве:
Copyleft Polina Soloviova
FreeBSD с корнем на CDROM и разделами на программном RAID-1.
Copyleft Polina Soloviova
Другой вариант настройки ccd(4): применение утилиты disklabel(8) к ccd - устройствам
ccd(4) позволяет логически разметить свои устройства на партиции утилитой disklabel(8) также, как этой утилитой размечаются слайсы (slice) FreeBSD.
В разделе RAID-1 с использованием ccd(4) описан вариант, когда для каждой зеркалируемой партиции отводилось отдельное ccd - устройство, размером, равным размеру соответствующей партиции. Вы можете обойтись всего одним ccd - устройством, размер которого составит сумму размеров всех партиций, для которых вы планируете зеркалирование. В этом случае это устройство необходимо разметить на партиции утилитой disklabel(8). При этом, к действиям, описанным в разделах RAID-1 с использованием ccd(4) и Запуск RAID-1 под управлением ccd(4), добавится еще ряд операций, коротко описанных ниже.
- Конфигурационный файл ccd
В случае использования одного-единственного устройства ccd0, размеченного на партиции утилитой disklabel(8), эту ситуацию необходимо отразить в конфигурационном файле ccd.conf. Он будет отличаться от описанного в разделе Конфигурационный файл ccd(4) тем, что в нем будет содержаться всего одна строка:
| ccd0 |
128 |
CCDF_MIRROR |
/dev/ad0s1e |
/dev/ad2s1e |
Изменения затронут и файл fstab(5): устройства, на которых разместятся зеркалируемые партиции, в данном случае будут называться ccd0e, ccd0f и ccd0g. В отличие от приведенного в разделе Изменения в /etc/fstab примера файла fstab, здесь он будет содержать следующее:
| /dev/ad0s1b |
none |
swap |
sw |
0 |
0 |
| /dev/ad2s1b |
none |
swap |
sw |
0 |
0 |
| /dev/ccd0e |
/var |
ufs |
rw |
2 |
2 |
| /dev/ccd0f |
/tmp |
ufs |
rw |
2 |
2 |
| /dev/ccd0g |
/usr/local |
ufs |
rw |
2 |
2 |
| proc |
/proc |
procfs |
rw |
0 |
0 |
Для того, чтобы иметь возможность создать RAID-1 систему с использованием одного ccd-устройства, необходимо изменить таблицы партиций жестких дисков, а после конфигурирования ccd-диска - разметить его на партиции. Список необходимых действий приведен ниже:
- во-первых, необходимо изменить таблицу партиций жестких дисков таким образом, чтобы партиции, которые впоследствии станут ccd-диском, имели размер, равный сумме всех партиций, для которых вы планируете зеркалирование. В данном примере партиция, размер которой необходимо увеличить - это партиция e. В то же время все остальные партиции необходимо будет удалить. Не редактируйте таблицу партиций на самом жестком диске, а используйте для этого файл, созданный командой
# disklabel ad0s1 > /usr/local/cdsystem/root/ccd/ad0s1
Запишите подготовленную таблицу на физический диск после создания резервных копий разделов перед конфигурированием ccd - диска (см. раздел Запуск RAID-1 под управлением ccd(4)).
если таблица партиций первого жесткого диска до внесения изменений выглядела так:
# /dev/ad0s1c:
type: ESDI
disk: ad0s1
label:
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 16065
cylinders: 4864
sectors/unit: 78156162
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0 # milliseconds
track-to-track seek: 0 # milliseconds
drivedata: 0
8 partitions:
| # |
size |
offset |
fstype |
[fsize bsize bps/cpg] |
| a: |
1048576 |
0 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 0 - 65*) |
| b: |
2097152 |
1048576 |
swap |
|
# (Cyl. 65*- 195*) |
| c: |
78156162 |
0 |
unused |
0 |
0 |
|
# (Cyl. 0 - 4864*) |
| e: |
1048576 |
3145728 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 195*- 261*) |
| f: |
524288 |
4194304 |
4.2BSD |
2048 |
16384 |
94 |
# (Cyl. 261*- 293*) |
| g: |
41943040 |
4718592 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 293*- 2904*) |
то после внесенных изменений она приобретет следующий вид:
# /dev/ad0s1c:
type: ESDI
disk: ad0s1
label:
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 16065
cylinders: 4864
sectors/unit: 78156162
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0 # milliseconds
track-to-track seek: 0 # milliseconds
drivedata: 0
8 partitions:
| # |
size |
offset |
fstype |
[fsize bsize bps/cpg] |
| a: |
1048576 |
0 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 0 - 65*) |
| b: |
2097152 |
1048576 |
swap |
|
# (Cyl. 65*- 195*) |
| c: |
78156162 |
0 |
unused |
0 |
0 |
|
# (Cyl. 0 - 4864*) |
| e: |
43515904 |
3145728 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 195*- 261*) |
аналогично отредактируйте таблицу партиций второго жесткого диска, скопировав получившийся файл в /usr/local/cdsystem/root/ccd/ad2s1 и сделав поправку в самом файле на имя устройства (/dev/ad2s1).
- во-вторых, после перезагрузки в однопользовательский режим, но перед непосредственным конфигурированием ccd-устройства (это описано в разделе Запуск RAID-1 под управлением ccd(4)), необходимо записать новые таблицы партиций на жесткие диски используя команду disklabel(8):
# cd /root/ccd
# disklabel -R ad0s1 ad0s1
# disklabel -R ad2s1 ad2s1
- далее, после конфигурирования ccd-диска и первой инициализации таблицы партиций на нем командами:
# ccdconfig -C
# disklabel -r -w ccd0c auto,
небходимо отредактировать таблицу партиций уже нового ccd-диска опять же с помощью утилиты disklabel(8):
# disklabel -r -e ccd0c
вы должны создать партиции на ccd-диске аналогично партициям на физических IDE или SCSI дисках. В данном примере вышеприведенная команда загрузит текстовый редактор (скорее всего, vi), в котором предложит для редактирования файл следующего вида:
# /dev/ccd0c:
type: CCD
disk: ccd0c
label:
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 2048
cylinders: 21248
sectors/unit: 43515904
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0 # milliseconds
track-to-track seek: 0 # milliseconds
drivedata: 0
| # |
size |
offset |
fstype |
[fsize bsize bps/cpg] |
| c: |
43515904 |
0 |
unused |
0 |
0 |
|
# (Cyl. 0 - 4864*) |
в данном примере, после создания необходимых партиций, таблица (которую и представляет собой редактируемый файл) станет такой:
# /dev/ccd0c:
type: CCD
disk: ccd0c
label:
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 2048
cylinders: 21248
sectors/unit: 43515904
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0 # milliseconds
track-to-track seek: 0 # milliseconds
drivedata: 0
| # |
size |
offset |
fstype |
[fsize bsize bps/cpg] |
| c: |
43515904 |
0 |
unused |
0 |
0 |
|
# (Cyl. 0 - 4864*) |
| e: |
1048576 |
0 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 195 - 261*) |
| f: |
524288 |
1048576 |
4.2BSD |
2048 |
16384 |
94 |
# (Cyl. 261 - 293*) |
| g: |
41943040 |
1572864 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 293 - 4864*) |
Все остальные действия аналогичны описанным в разделах RAID-1 с использованием ccd(4) и Запуск RAID-1 под управлением ccd(4) данного руководства.
Copyleft Polina Soloviova
FreeBSD с корнем на CDROM и разделами на программном RAID-1.
Copyleft Polina Soloviova
RAID-1 с использованием ccd(4)
Если у вас FreeBSD 3.0 и выше, вам ничего не надо делать с ядром - можно
использовать загружаемый модуль. Такие модули находятся в директории /modules, и существуют утилиты для работы с ними. Просмотреть список уже загруженных модулей можно командой kldstat(8), вот пример ее вывода:
# kldstat
Id Refs Address Size Name
1 11 0xc0100000 394090 kernel
2 1 0xc1022000 c3000 vinum.ko
3 1 0xc1113000 7000 linprocfs.ko
4 1 0xc11d7000 2000 rtc.ko
5 2 0xc11d9000 14000 linux.ko
6 1 0xc121a000 9000 vmmon_up.ko
7 1 0xc1225000 4000 if_tap.ko
8 4 0xc122b000 9000 netgraph.ko
9 1 0xc1238000 3000 ng_ether.ko
10 1 0xc123c000 4000 ng_bridge.ko
11 1 0xc1242000 3000 ng_socket.ko
Выше приведен достаточно большой список загруженных в оперативную память модулей. Его состав может сильно варьироваться в зависмости от многих факторов, в частности, от того, в какой конфигурации было собрано загруженное ядро. После реализации RAID-1 с использованием ccd(4), в этом списке добавится еще одна строка, содержащая модуль ccd.ko, который также находится в директории /modules.
Существуют утилиты, позволяющие вручную загружать модули в память и выгружать их в случае необходимости. Это пара утилит kldload и kldunload соответственно.
Подробнее см. kldstat(8), kldload(8), kldunload(8).
Если у вас более ранняя версия системы,
то вам придется добавить следующее в конфигурационный файл ядра:
pseudo-device ccd 4
и настроить конфигурацию ядра, как это описано в разделе Конфигурирование ядра
В отличие от vinum(8), ccd(4)
имеет конфигурационный файл. Его необходимо создать, описав в нем, какие
партиции и на каких физических дисках зеркалировать.
- перейдите в каталог /etc/ новой системы и создайте там конфигурационный файл для ccd(4)
# cd /usr/local/cdsystem/etc
# touch ccd.conf
- отредактируйте этот файл
# vi ccd.conf
в данном примере он будет содержать следующее:
| ccd0 |
128 |
CCDF_MIRROR |
/dev/ad0s1e |
/dev/ad2s1e |
| ccd1 |
128 |
CCDF_MIRROR |
/dev/ad0s1f |
/dev/ad2s1f |
| ccd2 |
128 |
CCDF_MIRROR |
/dev/ad0s1g |
/dev/ad2s1g |
Здесь первый столбец представляет собой имена устройств для ccd(4), число 128 - это так называемый interleave factor, величина "полосы", в блоках по 512 байт, для операций чтения/записи. С каждого из задействованных дисков информация считывается блоками по 128*512 байт. Такими же блоками происходит и запись, что в итоге может увеличить пиковую скорость чтения/записи в 2 раза. CCDF_MIRROR говорит о том, что диски
необходимо зеркалировать, а последние два параметра в каждой строке - какие партиции задействовать в зеркалировании.
Подробнее об этом см. ccd(4),сcdconfig(8)
Прежде, чем создавать ccd устройства, необходимо создать резервную копию
всей информации, содержащейся на некорневых партициях диска. Вы можете записать эти
архивы на CDROM с новой системой, но в этом случае нужно уложиться в ограничения в
650-700Мб, учитывая, что корень системы уже занимает около 200Мб. Вы можете также сохранить архивы в другом месте, при условии, что у
вас есть, например, дополнительные партиции, на которых вы не планируете зеркалирование. В данном примере архивы будут записаны на тот же CDROM-диск, на котором будет существовать будущая система.
- создайте файл /usr/local/tar.exclude, в котором перечислите все, что вы не хотите сохранить в архиве.
# touch /usr/local/exclude.tar
# vi /usr/local/exclude.tar
обычно директории /var и /tmp занимают не очень много места, особенно в сжатом виде. Например, текстовые файлы (а их большая часть в этих каталогах) хорошо сжимаются утилитой gzip(1). Поэтому в данном руководстве содержимое каталогов /var и /tmp будет заархивировано полностью. С другой стороны, в директории /usr/local находится много обширных каталогов, содержимое которых даже в сжатом виде займет много места. В зависимости от конфигурации и установленных программ, список таких директорий может быть разным. Например, если установлен squid, то директории /usr/local/squid/cache и /usr/local/squid/logs могут иметь весьма значительный объем. В этом случае, возможно придется удалить содержимое этих директорий, не забыв после реализации RAID-1 восстановить структуру cache-директории командой # squid -z.
Другой пример - домашние директории пользователей, которые в разделе Создание стартовой директории были перенесены в каталог /usr/local/home. Часто за счет удаления ненужных файлов в этих директориях можно добиться значительного увеличения свободного места на диске.
Кроме всего прочего, по тем же соображениям, нужно включить в данный список директорию /usr/local/cdsystem
для данного примера содержимое файла /usr/local/tar.exclude приведено ниже
cdsystem
squid/cache/*
squid/logs/*
Заметьте, директория cdsystem перечислена в этом файле без завершающего слэша (/). Это заставит команду tar(1) не только проигнорировать содержимое данной директории, но и не принимать в расчет саму директорию, т.е. в архиве директории cdsystem не будет. В то же время, те директории, которые вы перечислите с завершающим слэшем, скопируются в архив, но их содержимое скопировано не будет.
- создайте новую директорию где-нибудь в корне будущей системы. Здесь вы сохраните необходимые архивы.
# mkdir /usr/local/cdsystem/root/archives
- создайте резервные копии необходимых файлов
# tar -X /usr/local/tar.exclude -vpscf \
/usr/local/cdsystem/root/archives/var.tar.gz -C /var .
# tar -X /usr/local/tar.exclude -vpscf \
/usr/local/cdsystem/root/archives/tmp.tar.gz -C /tmp .
# tar -X /usr/local/tar.exclude -vpscf \
/usr/local/cdsystem/root/archives/local.tar.gz -C /usr/local .
По умолчанию в каталоге /dev нет нужных для ccd(4) файлов устройств. В этом можно убедиться, используя команду ls(1), вывод которой приведен ниже:
# ls -la /usr/local/cdsystem/dev/ccd*
ls: No match.
эти файлы устройств нужно создать. Для этого выполните следующие команды:
# cd /usr/local/cdsystem/dev
# sh MAKEDEV ccd0 ccd1 ccd2
теперь предыдущая команда ls(1) даст такой результат:
# ls -la /usr/local/cdsystem/dev/ccd*
crw-r----- 2 root operator 74, 0 Nov 11 13:03 /dev/ccd0a
crw-r----- 2 root operator 74, 1 Nov 11 13:03 /dev/ccd0b
crw-r----- 2 root operator 74, 2 Nov 11 13:03 /dev/ccd0c
crw-r----- 2 root operator 74, 3 Nov 11 13:03 /dev/ccd0d
crw-r----- 2 root operator 74, 4 Nov 11 13:03 /dev/ccd0e
crw-r----- 2 root operator 74, 5 Nov 11 13:03 /dev/ccd0f
crw-r----- 2 root operator 74, 6 Nov 11 13:03 /dev/ccd0g
crw-r----- 2 root operator 74, 7 Nov 11 13:03 /dev/ccd0h
crw-r----- 2 root operator 74, 8 Nov 11 13:03 /dev/ccd1a
crw-r----- 2 root operator 74, 9 Nov 11 13:03 /dev/ccd1b
crw-r----- 2 root operator 74, 10 Nov 11 13:03 /dev/ccd1c
crw-r----- 2 root operator 74, 11 Nov 11 13:03 /dev/ccd1d
crw-r----- 2 root operator 74, 12 Nov 11 13:03 /dev/ccd1e
crw-r----- 2 root operator 74, 13 Nov 11 13:03 /dev/ccd1f
crw-r----- 2 root operator 74, 14 Nov 11 13:03 /dev/ccd1g
crw-r----- 2 root operator 74, 15 Nov 11 13:03 /dev/ccd1h
crw-r----- 2 root operator 74, 16 Nov 11 13:03 /dev/ccd2a
crw-r----- 2 root operator 74, 17 Nov 11 13:03 /dev/ccd2b
crw-r----- 2 root operator 74, 18 Nov 11 13:03 /dev/ccd2c
crw-r----- 2 root operator 74, 19 Nov 11 13:03 /dev/ccd2d
crw-r----- 2 root operator 74, 20 Nov 11 13:03 /dev/ccd2e
crw-r----- 2 root operator 74, 21 Nov 11 13:03 /dev/ccd2f
crw-r----- 2 root operator 74, 22 Nov 11 13:03 /dev/ccd2g
crw-r----- 2 root operator 74, 23 Nov 11 13:03 /dev/ccd2h
Отредактируйте файл /usr/local/cdsystem/etc/fstab новой системы в соответствии с /usr/local/cdsystem/etc/ccd.conf. В данном примере, его содержимое перед редактированием, приведено ниже:
| /dev/ad0s1a |
/ |
ufs |
rw |
1 |
1 |
| /dev/ad0s1b |
none |
swap |
sw |
0 |
0 |
| /dev/ad0s1e |
/var |
ufs |
rw |
2 |
2 |
| /dev/ad0s1f |
/tmp |
ufs |
rw |
2 |
2 |
| /dev/ad0s1g |
/usr/local |
ufs |
rw |
2 |
2 |
| proc |
/proc |
procfs |
rw |
0 |
0 |
измените его:
- удалите упоминание о корне (ad0s1a), если оно у вас есть. Корень будет подмонтирован с CDROM.
- добавьте swap со второго диска
| /dev/ad0s1b |
none |
swap |
sw |
0 |
0 |
| /dev/ad2s1b |
none |
swap |
sw |
0 |
0 |
- измените названия устройств для партиций на "ccdXc"
| /dev/ccd0c |
/var |
ufs |
rw |
2 |
2 |
| /dev/ccd1c |
/tmp |
ufs |
rw |
2 |
2 |
| /dev/ccd2c |
/usr/local |
ufs |
rw |
2 |
2 |
теперь, в результате внесенных изменений, файл /usr/local/cdsystem/etc/fstab имеет следующее содержание:
| /dev/ad0s1b |
none |
swap |
sw |
0 |
0 |
| /dev/ad2s1b |
none |
swap |
sw |
0 |
0 |
| /dev/ccd0c |
/var |
ufs |
rw |
2 |
2 |
| /dev/ccd1c |
/tmp |
ufs |
rw |
2 |
2 |
| /dev/ccd2c |
/usr/local |
ufs |
rw |
2 |
2 |
| proc |
/proc |
procfs |
rw |
0 |
0 |
Теперь необходимо создать на втором жестком диске партиции, аналогичные партициям на первом жестком диске. Для этого выполните следующие действия:
- создайте на втором жестком диске слайс (slice) FreeBSD
# fdisk -BI ad2
- создайте новую директорию в корне будущей системы
# mkdir /usr/local/cdsystem/root/ccd
- в новой директории создайте файл, содержащий текущую таблицу партиций первого жесткого диска и отредактируйте его, чтобы иметь возможность применить эту таблицу ко второму жесткому диску:
# cd /usr/local/cdsystem/root/ccd
# disklabel ad0s1 > ad2s1.ccd
# vi ad2s1.ccd
замените в первой строке
# /dev/ad0s1c:
на
# /dev/ad2s1c:
замените в третьей строке
disk: ad0s1
на
disk: ad2s1
- если диски физически не идентичны, вам необходимо еще немного отредактировать файл ad2s1.ccd, чтобы он соответствовал реальному количеству секторов и цилиндров второго диска. Для этого выполните следующее:
- вывод команды disklabel(8) покажет количество секторов и цилиндров жесткого диска, а также другую важную информацию:
# disklabel ad2
# /dev/ad2c:
type: ESDI
disk: ad2s1
label:
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 16065
cylinders: 5004
sectors/unit: 80405262
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0 # milliseconds
track-to-track seek: 0 # milliseconds
drivedata: 0
8 partitions:
| # |
size |
offset |
fstype |
[fsize bsize bps/cpg] |
| c: |
80405262 |
0 |
unused |
0 |
0 |
|
# (Cyl. 0 - 4864*) |
- отредактируйте файл ad2s1.ccd
измените количество цилиндров на значение из вывода предыдущей команды
cylinders: 5004
измените количество секторов в соответствии с выводом предыдущей команды
sectors/unit: 80405262
измените размер партиции c в соответствии с выводом disklabel(8)
| c: |
80405262 |
0 |
unused |
0 |
0 |
|
# (Cyl. 0 - 4864*) |
- проинициализируйте таблицу партиций второго жесткого диска и создайте новую файловую систему ufs на вновь созданных партициях
# cd /usr/local/cdsystem/root/ccd
# disklabel -R ad2s1 ad2s1.ccd
# newfs /dev/ad2s1a
# newfs /dev/ad2s1e
# newfs /dev/ad2s1f
# newfs /dev/ad2s1g
Существует и другой вариант реализации RAID-1 под управлением ccd(4). Вы можете применить утилиту disklabel(8) к ccd - диску и разметить на партиции одно-единственное ccd - устройство. О том, что для этого нужно сделать, можно прочитать в разделе Другой вариант настройки ccd(4): применение утилиты disklabel(8) к ccd - устройствам.
Это все действия, необходимые для подготовки системы к запуску ccd(4). Теперь необходимо записать корень новой системы на диск, как описано в разделе Запись новой системы на диск.
Copyleft Polina Soloviova
FreeBSD с корнем на CDROM и разделами на программном RAID-1.
Copyleft Polina Soloviova
Подготовка к реализации RAID-1.
Прежде, чем приступить к реализации RAID-1 системы под управлением ОС FreeBSD, необходимо выбрать, какому из двух описанных в данном руководстве методу вы отдадите предпочтение - vinum(8) или ccd(4). В большинстве случаев вы не сможете использовать обе эти реализации одновременно, и в данном руководстве такая возможность рассматриваться не будет. Если вам трудно принять решение на этом этапе, прочитайте и оцените действия, необходимые для запуска программной RAID-1 системы с использованием обеих утилит, и тогда вы сможете определиться с выбором.
Теперь вы можете перейти к процессу подготовки к запуску программного RAID-1. В зависимости от принятого вами решения, обратитесь к соответствующим разделам - RAID-1 с использованием vinum(8) или RAID-1 с использованием ccd(4).
Copyleft Polina Soloviova
FreeBSD с корнем на CDROM и разделами на программном RAID-1.
Copyleft Polina Soloviova
RAID-1 с использованием vinum(8)
В FreeBSD партицией (partition) называется то, к чему во многих других системах обращаются как к разделу. Партиции в FreeBSD создаются и изменяются утилитой disklabel(8) и именуется ad0s1a, ad0s1e и так далее. В то же время слайс (slice) FreeBSD по сути напоминает расширенный DOS раздел, на котором можно создавать логические диски (партиции FreeBSD). Обычно при стандартной установке системы FreeBSD создается один слайс FreeBSD, который средствами утилиты disklabel(8) логически размечается на партиции.
vinum(8) при первой инициализации займет 265 блоков по 512 байт (132,5 Кбайт) на каждой партиции, которую вы ему укажете при создании программного RAID-1. При этом информация, записанная в этих блоках, будет утрачена. Для того, чтобы сохранить данные, необходимо изменить логическую разметку диска таким образом, чтобы 265 блоков, необходимых vinum(8) пришлись на область диска, в которой заведомо нет полезных вам данных. Такой областью является swap-партиция. Кроме того, необходимо объединить все остальные партиции в одну, а логическую разметку поручить vinum(8). Это позволит вам сэкономить на каждую следующую партицию по 132,5 Кбайт свободного места на диске, и, что наиболее важно, сохранить информацию.
- создайте новый каталог vinum где-нибудь в корневой директории новой системы.
# mkdir /usr/local/cdsystem/root/vinum
здесь вы будете хранить все файлы, необходимые для запуска vinum(8).
- перейдите в только что созданный каталог и сделайте резервную копию таблицы партиций первого жесткого диска. Это позволит в случае неудачи с vinum(8) быстро вернуть разметку диска на партиции в первоначальное состояние, с большой степенью вероятности, что информация, находящаяся на этих партициях, не пострадает. Кроме того, созданный таким образом файл послужит шаблоном для создания новой, измененной для использования vinum(8) таблицы партиций.
# cd /usr/local/cdsystem/root/vinum
# disklabel ad0s1 > ad0s1
- продублируйте только что созданный файл - его необходимо отредактировать.
# cp ad0s1 ad0s1.vinum
- откройте новый файл в любом, удобном вам, текстовом редакторе и отредактируйте, следуя дальнейшим инструкциям
# vi ad0s1.vinum
с
этого момента необходимо действовать очень внимательно и осторожно. От этого
зависит судьба всей информации, записанной на диск.
В данном примере файл ad0s1.vinum выглядит так:
# /dev/ad0s1c:
type: ESDI
disk: ad0s1
label:
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 16065
cylinders: 4864
sectors/unit: 78156162
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0 # milliseconds
track-to-track seek: 0 # milliseconds
drivedata: 0
8 partitions:
| # |
size |
offset |
fstype |
[fsize bsize bps/cpg] |
| a: |
1048576 |
0 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 0 - 65*) |
| b: |
2097152 |
1048576 |
swap |
|
# (Cyl. 65*- 195*) |
| c: |
78156162 |
0 |
unused |
0 |
0 |
|
# (Cyl. 0 - 4864*) |
| e: |
1048576 |
3145728 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 195*- 261*) |
| f: |
524288 |
4194304 |
4.2BSD |
2048 |
16384 |
94 |
# (Cyl. 261*- 293*) |
| g: |
41943040 |
4718592 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 293*- 2904*) |
Таблица, расположенная в самом низу - это и есть таблица партиций. Вы будете работать с первыми тремя столбцами - size (размер, в блоках), offset (смещение) и fstype (тип файловой системы). Отредактируйте эту таблицу следующим образом:
- измените размер swap партиции (b), уменьшив его на 265. Эти 265 блоков vinum(8) будет использовать для своих служебных нужд
| # |
size |
offset |
fstype |
[fsize bsize bps/cpg] |
| a: |
1048576 |
0 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 0 - 65*) |
| b: |
2096887 |
1048576 |
swap |
|
# (Cyl. 65*- 195*) |
| c: |
78156162 |
0 |
unused |
0 |
0 |
|
# (Cyl. 0 - 4864*) |
| e: |
1048576 |
3145728 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 195*- 261*) |
| f: |
524288 |
4194304 |
4.2BSD |
2048 |
16384 |
94 |
# (Cyl. 261*- 293*) |
| g: |
41943040 |
4718592 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 293*- 2904*) |
- измените смещение партиции e, уменьшив его на 265
| # |
size |
offset |
fstype |
[fsize bsize bps/cpg] |
| a: |
1048576 |
0 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 0 - 65*) |
| b: |
2096887 |
1048576 |
swap |
|
# (Cyl. 65*- 195*) |
| c: |
78156162 |
0 |
unused |
0 |
0 |
|
# (Cyl. 0 - 4864*) |
| e: |
1048576 |
3145463 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 195*- 261*) |
| f: |
524288 |
4194304 |
4.2BSD |
2048 |
16384 |
94 |
# (Cyl. 261*- 293*) |
| g: |
41943040 |
4718592 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 293*- 2904*) |
- измените размер партиции e. Чуть позже вы удалите партиции f и g и создадите вместо них одну партицию e, размером, равным сумме размеров всех трех партиций e,f и g + 265. То есть новый размер партиции е = старый размер е + размер f + размер g + 265.
| # |
size |
offset |
fstype |
[fsize bsize bps/cpg] |
| a: |
1048576 |
0 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 0 - 65*) |
| b: |
2096887 |
1048576 |
swap |
|
# (Cyl. 65*- 195*) |
| c: |
78156162 |
0 |
unused |
0 |
0 |
|
# (Cyl. 0 - 4864*) |
| e: |
43516169 |
3145463 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 195*- 261*) |
| f: |
524288 |
4194304 |
4.2BSD |
2048 |
16384 |
94 |
# (Cyl. 261*- 293*) |
| g: |
41943040 |
4718592 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 293*- 2904*) |
- измените тип файловой системы партиции е на "vinum"
| # |
size |
offset |
fstype |
[fsize bsize bps/cpg] |
| a: |
1048576 |
0 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 0 - 65*) |
| b: |
2096887 |
1048576 |
swap |
|
# (Cyl. 65*- 195*) |
| c: |
78156162 |
0 |
unused |
0 |
0 |
|
# (Cyl. 0 - 4864*) |
| e: |
43516169 |
3145463 |
vinum |
2048 |
16384 |
89 |
# (Cyl. 195*- 261*) |
| f: |
524288 |
4194304 |
4.2BSD |
2048 |
16384 |
94 |
# (Cyl. 261*- 293*) |
| g: |
41943040 |
4718592 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 293*- 2904*) |
- удалите партиции f и g
| # |
size |
offset |
fstype |
[fsize bsize bps/cpg] |
| a: |
1048576 |
0 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 0 - 65*) |
| b: |
2096887 |
1048576 |
swap |
|
# (Cyl. 65*- 195*) |
| c: |
78156162 |
0 |
unused |
0 |
0 |
|
# (Cyl. 0 - 4864*) |
| e: |
43516169 |
3145463 |
vinum |
2048 |
16384 |
89 |
# (Cyl. 195*- 261*) |
Таблица партиций для первого жесткого диска готова. Даже если ваш второй жесткий диск физически не идентичен первому, то нет необходимости повторять все предыдущие действия по изменению таблицы партиций во второй раз.
- теперь настало время для изменения таблицы партиций второго жесткого диска. Для этого выполните следующие действия:
- продублируйте файлы ad0s1 и ad0s1.vinum. С небольшими изменениями, описанными ниже, их можно использовать для второго жесткого диска
# cp ad0s1 ad2s1
# cp ad0s1.vinum ad2s1.vinum
отредактируйте файлы ad2s1 и ad2s1.vinum в любом, удобном для вас текстовом редакторе. Таблицы партиций будут практически идентичными, изменится только название устройства
# vi ad2s1
замените в первой строке
# /dev/ad0s1c:
на
# /dev/ad2s1c:
замените в третьей строке
disk: ad0s1
на
disk: ad2s1
проделайте то же самое с файлом ad2s1.vinum
- если диски разные, у них будет разным количество цилиндров и секторов. В этом случае, для того, чтобы получить эту информацию для второго жесткого диска, выполните следующие действия:
- посмотрите на вывод команды:
# disklabel ad2
# /dev/ad2c:
type: ESDI
disk: ad2s1
label:
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 16065
cylinders: 5004
sectors/unit: 80405262
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0 # milliseconds
track-to-track seek: 0 # milliseconds
drivedata: 0
8 partitions:
| # |
size |
offset |
fstype |
[fsize bsize bps/cpg] |
| c: |
80405262 |
0 |
unused |
0 |
0 |
|
# (Cyl. 0 - 4864*) |
Эта команда выводит данные о количестве секторов и цилиндров вашего диска. Ее вывод в вашем случае может сильно отличаться от приведенного выше, однако структура вывода сохранится такой же в любом случае.
- отредактируйте файлы ad2s1 и ad2s1.vinum
измените количество цилиндров на значение из вывода предыдущей команды
cylinders: 5004
измените количество секторов в соответствии с выводом предыдущей команды
sectors/unit: 80405262
измените размер партиции c в соответствии с выводом disklabel(8)
| c: |
80405262 |
0 |
unused |
0 |
0 |
|
# (Cyl. 0 - 4864*) |
На данном этапе вы готовы к изменению таблиц партиций дисков для реализации программного RAID-1 с помощью vinum(8).
- создайте на втором жестком диске slice FreeBSD
# /stand/sysinstall -> configure -> fdisk -> ad2 -> create (C)
Другой способ сделать то же самое с использованием команды fdisk(8), приведен ниже:
# fdisk -BI ad2
- разметьте второй жесткий диск на партиции, аналогичные по размерам партициям на первом жестком диске и создайте на них файловую систему ufs
# cd /usr/local/cdsystem/root/vinum
# disklabel -R ad2s1 ad2s1
# newfs /dev/ad2s1a
# newfs /dev/ad2s1e
# newfs /dev/ad2s1f
# newfs /dev/ad2s1g
теперь логическая конфигурация второго диска полностью аналогична конфигурации первого.
vinum(8) не имеет конфигурационных файлов. Для создания нового тома необходимо воспользоваться командой vinum create <аргументы>,
где аргументы - что именно надо создать (например, volume), и параметры того,
что надо создать. Нет необходимости общаться с vinum(8) из командной строки. Вместо
этого можно создать файл, в котором будет указана вся конфигурация программного RAID. Этот файл будет использован только один раз - при первой инициализации vinum(8). В дальнейшем он вам не понадобится.
Итак, выполните следующие действия:
- создайте "конфигурационный" файл для vinum(8).
# cd /usr/local/cdsystem/root/vinum
# touch raid.create
- отредактируйте raid.create. В данном примере он должен содержать следующее:
drive first device /dev/ad0s1e
drive second device /dev/ad2s1e
volume var
plex name var.p0 org concat volume var
sd name var.p0.s0 drive first plex var.p0 len var_len driveoffset var_offset
plex name var.p1 org concat volume var
sd name var.p1.s0 drive second plex var.p1 len var_len driveoffset var_offset
volume tmp
plex name tmp.p0 org concat volume tmp
sd name tmp.p0.s0 drive first plex tmp.p0 len tmp_len driveoffset tmp_offset
plex name tmp.p1 org concat volume tmp
sd name tmp.p1.s0 drive second plex tmp.p1 len tmp_len driveoffset tmp_offset
volume local
plex name local.p0 org concat volume local
sd name local.p0.s0 drive first plex local.p0 len local_len driveoffset local_offset
plex name local.p1 org concat volume local
sd name local.p1.s0 drive second plex local.p1 len local_len driveoffset local_offset
Здесь:
var_len - размер партиции var, взятый из файла ad0s1
| e: |
1048576 |
3145728 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 195*- 261*) |
var_offset - смещение партиции var, равное смещению партиции e из файла ad0s1, минус размер swap партиции, минус смещение swap партиции плюс 265 блоков.
| # |
size |
offset |
fstype |
[fsize bsize bps/cpg] |
| a: |
1048576 |
0 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 0 - 65*) |
| b: |
2097152 |
1048576 |
swap |
|
# (Cyl. 65*- 195*) |
| c: |
78156162 |
0 |
unused |
0 |
0 |
|
# (Cyl. 0 - 4864*) |
| e: |
1048576 |
3145728 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 195*- 261*) |
то есть: var_offset = 3145728 - 2097152 - 1048576 + 265 = 265
Проще посчитать это так: первая партиция после swap-партиции будет иметь смещение
в 265 блоков. Все остальные партиции будут иметь смещение, равное их смещению
в файле ad0s1 минус смещение первой после swap партиции плюс 265 блоков.
на примере остальных двух партиций:
| e: |
1048576 |
3145728 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 195*- 261*) |
| f: |
524288 |
4194304 |
4.2BSD |
2048 |
16384 |
94 |
# (Cyl. 261*- 293*) |
| g: |
41943040 |
4718592 |
4.2BSD |
2048 |
16384 |
89 |
# (Cyl. 293*- 2904*) |
tmp_offset = 4194304 - 3145728 + 265 = 1048841
local_offset = 4718592 - 3145728 + 265 = 1573129
В данном примере в результате получится файл следующего содержания :
drive first device /dev/ad0s1e
drive second device /dev/ad2s1e
volume var
plex name var.p0 org concat volume var
sd name var.p0.s0 drive first plex var.p0 len 1048576b driveoffset 265b
plex name var.p1 org concat volume var
sd name var.p1.s0 drive second plex var.p1 len 1048576b driveoffset 265b
volume tmp
plex name tmp.p0 org concat volume tmp
sd name tmp.p0.s0 drive first plex tmp.p0 len 524288b driveoffset 1048841b
plex name tmp.p1 org concat volume tmp
sd name tmp.p1.s0 drive second plex tmp.p1 len 524288b driveoffset 1048841b
volume local
plex name local.p0 org concat volume local
sd name local.p0.s0 drive first plex local.p0 len 41943040b driveoffset 1573129b
plex name local.p1 org concat volume local
sd name local.p1.s0 drive second plex local.p1 len 41943040b driveoffset 1573129b
vinum(8) оперирует четырьмя типами объектов:
- drive: физические устройства, партиции;
- subdisk: vinum(8) позволяет каждый диск (drive) логически разметить на поддиски (subdisk), аналогично тому, как утилита disklabel(8) логически размечает slice FreeBSD.
- plex: несколько поддисков (subdisk) можно объединить в один логический элемент - плекс (plex) и обращаться к нему как к одному устройству, независимо от того, на одном ли поддиске (subdisk) и на одном ли физическом диске находятся данные одного такого объединенного элемента. vinum(8) поддерживает concatenated plexes - режим, при котором один и более поддисков (subdisk) объединяются в единый логический объект, доступ к которому происходит последовательно (т.е. только при заполнении первого поддиска (subdisk) происходит запись на второй и т.д., что не дает выигрыша в скорости ни записи, ни чтения) и striped plexes - режим, похожий на предыдущий, но доступ к нему происходит "полосами", или "блоками" определенной величины (при достижении границы "полосы" на одном физическом диске, обращение идет на второй физический диск, что может повысить пиковую скорость чтения/записи в 2 раза). Такой режим также имеет название RAID-0.
- volume: виртуальный объект, представляющий собой совокупность одного или нескольких плексов (plex), обращение к которым происходит как к единому целому. Если задействовано 2 и более плексов (plex), между ними происходит зеркалирование.
таким образом, в только что созданном файле находятся команды vinum(8), при выполнении которых будет создано 3 тома (volume), каждый из которых состоит из двух плексов (plex), между которыми и будет происходить зеркалирование. Каждый плекс (plex) представляет собой объединение одного-единственного поддиска (subdisk). Всего поддисков (subdisk) 6 - по три на каждом из двух дисков (drive), представляющих собой в конечном счете партиции.
Подробнее см. vinum(8), disklabel(8), fdisk(8).
Для того, чтобы система знала, что некоторые ее разделы зеркалируются,
ей необходимо об этом сообщить в конфигурационных файлах. Перейдите в каталог
/etc/ будущей системы и отредактируйте несколько конфигурационных файлов.
- отредактируйте файл /usr/local/cdsystem/etc/fstab
# cd /usr/local/cdsystem/etc/
# vi fstab
в данном примере изначально он выглядит так:
| /dev/ad0s1a |
/ |
ufs |
rw |
1 |
1 |
| /dev/ad0s1b |
none |
swap |
sw |
0 |
0 |
| /dev/ad0s1e |
/var |
ufs |
rw |
2 |
2 |
| /dev/ad0s1f |
/tmp |
ufs |
rw |
2 |
2 |
| /dev/ad0s1g |
/usr/local |
ufs |
rw |
2 |
2 |
| proc |
/proc |
procfs |
rw |
0 |
0 |
измените его таким образом:
- удалите упоминание о корне (ad0s1a), если оно у вас есть. Корень будет монтироваться с CDROM, причем информация о том, с какого именно устройства, уже содержится в самом ядре.
- добавьте swap со второго винчестера. Этот шаг не обязателен, однако, без него, место отведенное под swap-партицию на втором жестком диске, не будет использоваться.
| /dev/ad0s1b |
none |
swap |
sw |
0 |
0 |
| /dev/ad2s1b |
none |
swap |
sw |
0 |
0 |
- измените устройства для партиций на "vinum"
| /dev/vinum/var |
/var |
ufs |
rw |
2 |
2 |
| /dev/vinum/tmp |
/tmp |
ufs |
rw |
2 |
2 |
| /dev/vinum/local |
/usr/local |
ufs |
rw |
2 |
2 |
В результате внесенных поправок, файл fstab будет содержать:
| /dev/ad0s1b |
none |
swap |
sw |
0 |
0 |
| /dev/ad2s1b |
none |
swap |
sw |
0 |
0 |
| /dev/vinum/var |
/var |
ufs |
rw |
2 |
2 |
| /dev/vinum/tmp |
/tmp |
ufs |
rw |
2 |
2 |
| /dev/vinum/local |
/usr/local |
ufs |
rw |
2 |
2 |
| proc |
/proc |
procfs |
rw |
0 |
0 |
- отредактируйте файл /usr/local/cdsystem/etc/rc.conf
# vi rc.conf
добавьте туда строку:
start_vinum="YES"
с этой строкой при каждой загрузке системы в память будет загружаться модуль vinum.ko, в обязанности которого и входит поддержка программного RAID.
Самый трудный этап позади, и теперь вы готовы к запуску vinum(8) . Проверьте
еще раз, все ли правильно вы сделали, от этого будет зависеть успех дальнейших
ваших действий. Убедившись, что все в порядке, перейдите к разделу Запись новой системы на диск.
Copyleft Polina Soloviova
FreeBSD с корнем на CDROM и разделами на программном RAID-1.
Copyleft Polina Soloviova
Запись новой системы на CDROM диск.
- Если у вас не установлен mkisofs, самое время это сделать
# cd /usr/ports/sysutils/mkisofs
# make install clean
- перейдите в каталог /usr/local и создайте iso-образ директории cdsystem
# cd /usr/local
# mkisofs -l -R -L -o cdsystem.iso -b boot/cdboot \
--no-emul-boot
-c boot/boot.catalog cdsystem/
- Если вы хотите записать диск в системе FreeBSD, выполните следующие действия
# cd /usr/local
# burncd -f /dev/acd0c data cdsystem.iso fixate
Подробнее см. mkisofs(8), burncd(8).
На данном этапе все необходимые приготовления завершены, и остается только запустить новую RAID-1 систему. Если вы выбрали реализацию, основанную на vinum(8), для запуска ее обратитесь к разделу Запуск RAID-1 под управлением vinum(8). В случае, если ваш выбор пал на ccd(4), необходимые для запуска такой системы действия описаны в разделе Запуск RAID-1 под управлением ccd(4).
Copyleft Polina Soloviova
FreeBSD с корнем на CDROM и разделами на программном RAID-1.
Copyleft Polina Soloviova
Запуск RAID-1 под управлением ccd(4)
Как и в случае с vinum(8), необходимо перегрузить систему в однопользовательский режим. Однако с ccd(4) процесс окончательной его настройки займет больше времени.
- Перегрузите систему в однопользовательский режим
# reboot
поменяйте настройки BIOS - поставьте первым загрузочным устройством CDROM. Когда вы увидите надпись
Hit [Enter] to boot immediately, or any other key for command prompt
Booting [kernel] in 9 seconds...
Type '?' for a list of commands, 'help' for more detailed help
нажмите любую клавишу и в появившейся командной строке наберите
ok boot -s
- сконфигурируйте ccd(4) - устройства
# ccdconfig -U
ccd0-3: Concatenated disk drivers
ccdconfig: ioctl (CCDIOCCLR): /dev/ccd0c: Device not configured
ccdconfig: ioctl (CCDIOCCLR): /dev/ccd1c: Device not configured
ccdconfig: ioctl (CCDIOCCLR): /dev/ccd2c: Device not configured
Эта команда опциональна и имеет скорее страховочный смысл. Она заставляет ccd(4) сбросить текущую конфигурацию ccd-устройств.
# ccdconfig ccd0 128 CCDF_MIRROR /dev/ad0s1e /dev/ad2s1e
ccd0: mirror/parity forces uniform flag
# ccdconfig ccd1 128 CCDF_MIRROR /dev/ad0s1f /dev/ad2s1f
ccd1: mirror/parity forces uniform flag
# ccdconfig ccd2 128 CCDF_MIRROR /dev/ad0s1g /dev/ad2s1g
ccd2: mirror/parity forces uniform flag
точно также, как и в конфигурационном файле ccd(4), эти команды подготавливают почву для создания RAID-1 - в них сообщается ccd(4), какие партиции участвуют в зеркалировании.
другой вариант выполнения тех же действий приведен ниже:
# ccdconfig -C
опция -C команды ccdconfig заставит эту команду сконфигурировать устройства в соответствии с конфигурационным файлом ccd.conf.
- разметьте только что сконфигурированные устройства на партиции с помощью утилиты disklabel(8):
# disklabel -r -w ccd0c auto
# disklabel -r -w ccd1c auto
# disklabel -r -w ccd2c auto
- создайте файловую систему ufs на новых устройствах
# newfs /dev/ccd0c
# newfs /dev/ccd1c
# newfs /dev/ccd2c
- смонтируйте /var, /tmp и /usr/local
# fsck -p
# mount -a
- скопируйте файлы из архивов в соответствующие директории
# cd /root/archives
# tar vxpf var.tar.gz -C /var
# tar vxpf tmp.tar.gz -C /tmp
# tar vxpf local.tar.gz -C /usr/local
- перезагрузите систему в многопользовательский режим
# reboot
Теперь вы можете посмотреть список загруженных в память модулей командой kldstat(8), и убедиться, что модуль ccd.ko загружен:
# kldstat
Id Refs Address Size Name
1 2 0xc0100000 1be2f4 kernel
2 1 0xcd1f6000 5000 ccd.ko
Корень вашей системы теперь находится на CD, а остальные зеркалируются с помощью ccd(4), что легко можно проверить, выполнив команду:
# df -H
| Filesystem |
Size |
Used |
Avail |
Capacity |
Mounted on |
| /dev/acd0a |
339M |
339M |
0B |
100% |
/ |
| mfs:10 |
5.9M |
16K |
5.4M |
0% |
/dev |
| /dev/ccd0c |
528M/ |
14M |
472M |
3% |
/var |
| /dev/ccd1c |
264M |
2.0K |
243M |
0% |
/tmp |
| /dev/ccd2c |
21G |
160M |
19G |
1% |
/usr/local |
| procfs |
4.1K |
4.1K |
0B |
100% |
/proc |
В разделе Добавим немного гибкости. описано, как добавить к возможностям системы способность загружаться с любого из жестких дисков. Это может быть необходимым, например, в случае неисправности CDROM - привода.
Copyleft Polina Soloviova
FreeBSD с корнем на CDROM и разделами на программном RAID-1.
Copyleft Polina Soloviova
Создание стартовой директории.
Для начала создайте директорию, которая впоследствии станет
корнем будущей системы. Вам понадобится минимум 200Мб свободного дискового
пространства - столько будет занимать корень новой системы. Заодно перенесите
/usr/home в /usr/local/home, так как в этот каталог желательно иметь возможность записи.
- создайте новую директорию
# mkdir /usr/local/cdsystem
- создайте файл /usr/local/tar.exclude примерно следующего содержания:
usr/local/*
usr/home/*
usr/src/*
usr/obj/*
tmp/*
var/*
mnt/*
cdrom/*
usr/ports/*
sys/*
это список директорий, содержимое которых вы не будете переносить на CDROM. Это необходимо по нескольким причинам: во-первых, директории /usr/local, /var и /tmp, а также /mnt и /cdrom физически находятся на различных партициях диска или вовсе на других устройствах, и будут монтироваться, как и обычно, при каждой загрузке системы, либо по команде mount(8) в процессе работы; во-вторых, содержимое таких директорий, как /usr/obj, /usr/src, /usr/ports слишком громоздко, чтобы поместиться на CD-диск. В-третьих, как уже говорилось выше, в директорию /usr/home желательно иметь возможность записи. Если вы хотите сохранить содержимое директорий /usr/src и /usr/ports, вы можете поступить с ними также, как и с /usr/home - перенести их в /usr/local/, что для /usr/home директории описано ниже.
# vi /usr/local/tar.exclude
- скопируйте корень вашей текущей системы (за исключением описанных в файле tar.exclude директорий) в новый, только что созданный каталог
# tar -X /usr/local/tar.exclude -vpscf - -C / . | \
tar -vxf - -C /usr/local/cdsystem/
- скопируйте /home текущей системы в /usr/local/home
# cp -Rp /usr/home/ /usr/local/home/
- удалите /usr/local/cdsystem/home и /usr/local/cdsystem/usr/home. Никаких данных вы при этом не потеряете, т.к. /usr/local/cdsystem/home представляет собой символическую ссылку на директорию /usr/home, и при ее удалении будет удалена сама ссылка, а не то, на что она указывает; директория /usr/local/cdsystem/usr/home пуста - она была перечислена в файле исключений для tar(1)
# rm -rf /usr/local/cdsystem/home
# rm -rf /usr/local/cdsystem/usr/home
- создайте символические ссылки в корне новой системы (т.е. в директории /usr/local/cdsystem/) на /usr/local/home
# ln -s /usr/local/home /usr/local/cdsystem/home
# ln -s /usr/local/home /usr/local/cdsystem/usr/home
Теперь в директории /usr/local/cdsystem находится скелетон для создания ISO-образа новой системы и записи его на диск. В пределах этой директории, следуя данному руководству, вы постепенно внесете все необходимые изменения, которые позволят в конечном итоге получить систему с корнем на CDROM и разделами на программном RAID-1.
Примечание: Можно создать отдельной файловой системой /home.
Copyleft Polina Soloviova
FreeBSD с корнем на CDROM и разделами на программном RAID-1.
Copyleft Polina Soloviova
Запуск программной RAID-1 системы
В зависимости от выбранной вами реализации, обратитесь к одному из разделов:
Copyleft Polina Soloviova
FreeBSD с корнем на CDROM и разделами на программном RAID-1.
Copyleft Polina Soloviova
Запуск RAID-1 под управлением vinum(8)
- перегрузите систему с CDROM в однопользовательский режим
# reboot
поменяйте настройки BIOS - поставьте первым загрузочным устройством CDROM. Когда вы увидите надпись
Hit [Enter] to boot immediately, or any other key for command prompt
Booting [kernel] in 9 seconds...
Type '?' for a list of commands, 'help' for more detailed help
нажмите любую клавишу и в появившейся командной строке наберите
ok boot -s
- перейдите в каталог /root/vinum и запишите новые таблицы партиций, созданные в процессе подготовки, на соответствующие диски
# cd /root/vinum
# disklabel -R ad0s1 ad0s1.vinum
# disklabel -R ad2s1 ad2s1.vinum
- смонтируйте /dev. При старте vinum(8) создаст там новые собственные файлы устройств
# mount_mfs -s 12000 -o union,noatime,rw swap /dev
- создайте тома vinum(8)
# vinum create raid.create
вы увидите примерно следующее:
2 drives:
| D first |
State: up |
Device |
/dev/ad0s1e |
Avail: 0/21248 MB (0%) |
| D second |
State: up |
Device |
/dev/ad2s1e |
Avail: 0/21248 MB (0%) |
3 volumes:
| V var |
State: up |
Plexes: |
2 Size: |
512 MB |
| V tmp |
State: up |
Plexes: |
2 Size: |
256 MB |
| V local |
State: up |
Plexes: |
2 Size: |
20 GB |
6 plexes:
| P var.p0 |
C State: up |
Subdisks: |
1 Size: |
512 MB |
| P var.p1 |
C State: faulty |
Subdisks: |
1 Size: |
512 MB |
| P tmp.p0 |
C State: up |
Subdisks: |
1 Size: |
256 MB |
| P tmp.p1 |
C State: faulty |
Subdisks: |
1 Size: |
256 MB |
| P local.p0 |
C State: up |
Subdisks: |
1 Size: |
20 GB |
| P local.p1 |
C State: faulty |
Subdisks: |
1 Size: |
20 GB |
6 subdisks:
| S var.p0.s0 |
State: up |
PO: |
0 B Size: |
512 MB |
| S var.p1.s0 |
State: empty |
PO: |
0 B Size: |
512 MB |
| S tmp.p0.s0 |
State: up |
PO: |
0 B Size: |
256 MB |
| S tmp.p1.s0 |
State: empty |
PO: |
0 B Size: |
256 MB |
| S local.p0.s0 |
State: up |
PO: |
0 B Size: |
20 GB |
| S local.p1.s0 |
State: empty |
PO: |
0 B Size: |
20 GB |
- запустите vinum(8)
# vinum start var.p1.s0
в результате выполнения этой команды vinum(8) продублирует данные тома var с первого жесткого
диска на второй.
вы увидите сообщение:
reviving var.p1.s0
через некоторое время появится другое сообщение
var.p1.s0 is up by force
var.p1 is up
var.p1.s0 is up
- проверить состояние ваших томов можно следующей командой:
# vinum list
2 drives:
| D first |
State: up |
Device |
/dev/ad0s1e |
Avail: 0/21248 MB (0%) |
| D second |
State: up |
Device |
/dev/ad2s1e |
Avail: 0/21248 MB (0%) |
3 volumes:
| V var |
State: up |
Plexes: |
2 Size: |
512 MB |
| V tmp |
State: up |
Plexes: |
2 Size: |
256 MB |
| V local |
State: up |
Plexes: |
2 Size: |
20 GB |
6 plexes:
| P var.p0 |
C State: up |
Subdisks: |
1 Size: |
512 MB |
| P var.p1 |
C State: up |
Subdisks: |
1 Size: |
512 MB |
| P tmp.p0 |
C State: up |
Subdisks: |
1 Size: |
256 MB |
| P tmp.p1 |
C State: faulty |
Subdisks: |
1 Size: |
256 MB |
| P local.p0 |
C State: up |
Subdisks: |
1 Size: |
20 GB |
| P local.p1 |
C State: faulty |
Subdisks: |
1 Size: |
20 GB |
6 subdisks:
| S var.p0.s0 |
State: up |
PO: |
0 B Size: |
512 MB |
| S var.p1.s0 |
State: up |
PO: |
0 B Size: |
512 MB |
| S tmp.p0.s0 |
State: up |
PO: |
0 B Size: |
256 MB |
| S tmp.p1.s0 |
State: empty |
PO: |
0 B Size: |
256 MB |
| S local.p0.s0 |
State: up |
PO: |
0 B Size: |
20 GB |
| S local.p1.s0 |
State: empty |
PO: |
0 B Size: |
20 GB |
- теперь можно перегрузить систему в многопользовательский режим и продублировать остальные тома.
# reboot
войдите пользователем root и выполните следующие команды:
# vinum start tmp.p1.s0
после сообщения о том, что tmp.p1.s0 is up,
# vinum start local.p1.s0
- состояние всех томов должно выглядеть так
2 drives:
| D first |
State: up |
Device |
/dev/ad0s1e |
Avail: 0/21248 MB (0%) |
| D second |
State: up |
Device |
/dev/ad2s1e |
Avail: 0/21248 MB (0%) |
3 volumes:
| V var |
State: up |
Plexes: |
2 Size: |
512 MB |
| V tmp |
State: up |
Plexes: |
2 Size: |
256 MB |
| V local |
State: up |
Plexes: |
2 Size: |
20 GB |
6 plexes:
| P var.p0 |
C State: up |
Subdisks: |
1 Size: |
512 MB |
| P var.p1 |
C State: up |
Subdisks: |
1 Size: |
512 MB |
| P tmp.p0 |
C State: up |
Subdisks: |
1 Size: |
256 MB |
| P tmp.p1 |
C State: up |
Subdisks: |
1 Size: |
256 MB |
| P local.p0 |
C State: up |
Subdisks: |
1 Size: |
20 GB |
| P local.p1 |
C State: up |
Subdisks: |
1 Size: |
20 GB |
6 subdisks:
| S var.p0.s0 |
State: up |
PO: |
0 B Size: |
512 MB |
| S var.p1.s0 |
State: up |
PO: |
0 B Size: |
512 MB |
| S tmp.p0.s0 |
State: up |
PO: |
0 B Size: |
256 MB |
| S local.p0.s0 |
State: up |
PO: |
0 B Size: |
20 GB |
| S tmp.p1.s0 |
State: up |
PO: |
0 B Size: |
256 MB |
| S local.p0.s0 |
State: up |
PO: |
0 B Size: |
20 GB |
| S local.p1.s0 |
State: up |
PO: |
0 B Size: |
20 GB |
- теперь вывод команды df(1) покажет состояние файловой системы:
# df -H
| Filesystem |
Size |
Used |
Avail |
Capacity |
Mounted on |
| /dev/acd0a |
339M |
339M |
0B |
100% |
/ |
| mfs:10 |
5.9M |
16K |
5.4M |
0% |
/dev |
| /dev/vinum/var |
528M |
14M |
472M |
3% |
/var |
| /dev/vinum/tmp |
264M |
2.0K |
243M |
0% |
/tmp |
| /dev/vinum/local |
21G |
160M |
19G |
1% |
/usr/local |
| procfs |
4.1K |
4.1K |
0B |
100% |
/proc |
а команда kldstat(8) перечислит загруженные в память модули, обычно располагающиеся в директории /modules. Среди них вы увидите и модуль vinum.ko, ответственный за поддержку программного RAID:
# kldstat
Id Refs Address Size Name
1 11 0xc0100000 394090 kernel
2 1 0xc1022000 c3000 vinum.ko
В выводе этой команды в случае вашей системы могут быть и другие модули, в зависимости от конфигурации ядра или системы вашей машины. Однако перечисленные выше должны быть всегда.
Для повышения надежности и отказоустойчивости вашего сервера, вы можете добавить возможность загрузки его с жестких дисков. Как это сделать, описано в разделе Добавим немного гибкости.
Copyleft Polina Soloviova