И сразу озаботился сохранностью данных.
Все работы производились в виртуальной машине Oracle Virtual Box с двумя виртуальными HDD одинаковой величины.
Базовая система установлена. Приступим к созданию программного зеркала.
gmirror -v -b round-robin gm0 /dev/ad0
Can't store metadata on /dev/ad0: Operation not permitted.
Не даёт писать на диск который используется. Правиться при помощи sysctl:
sysctl.geom.debugflags=16
gmirror -v -b round-robin gm0 /dev/ad0
Metadata value stored on /dev/ad0. Done.
в /etc/fstab меняем все устройтва начинающиеся с /dev/ad4XXX на /dev/mirror/gm0XXX, будьте крайне внимательны, не повторяйте самой распространенной ошибки, которая меня тоже не обошла стороной, я забыл после /dev/ указать mirror!
Далее набираем reboot и смотрим на поведение загрузки. Если все нормально прошло переходим к следующему этапу. Включаем в зеркало второй жесткий диск равного объема, /dev/ad1.
Однако, если после правки /etc/fstab загрузка будет остановлена, ожидая ввода. Например можно забыть ввести
mirror,
когда вы редактируете /etc/fstab, набирая /dev/gm0s1a
вместо /dev/mirror/gm0s1a
после чего FreeBSD не может найти корневую систему:Mounting root from ufs:/dev/gm0s1a setrootbyname failed ffs_mountroot: can't find rootvp Root mount failed: 6 Manual root filesystem specification: : Mount using filesystem e.g. ufs:da0s1a ? List valid disk boot devices Abort manual input mountroot>
Fortunately, that's not as scary as it looks. Start by listing your valid disk boot devices:
mountroot> ? List of GEOM managed disk devices: mirror/gm0s1f mirror/gm0s1e mirror/gm0s1d mirror/gm0s1c mirror/gm0s1b mirror/gm0s1a mirror/gm0s1 ad2s1 mirror/gm0 ad0s1 ad2 acd0 ad0 fd0
If you type in the correct location of the / filesystem, the system will continue to reboot:
mountroot> ufs:/dev/mirror/gm0s1a Mounting root from /dev/mirror/gm0s1a
После входа в систему необходимо отредактировать неверные строки в /etc/fstab и перезагрузиться снова. Когда получится загрузиться и войти в систему успешно - проверьте каждый раздел, смонтированный в зеркало.:
% df -h Filesystem Size Used Avail Capacity Mounted on /dev/mirror/gm0s1a 248M 35M 193M 15% / devfs 1.0K 1.0K 0B 100% /dev /dev/mirror/gm0s1e 248M 12K 228M 0% /tmp /dev/mirror/gm0s1f 7.3G 99M 6.7G 1% /usr /dev/mirror/gm0s1d 248M 196K 228M 0% /var
df
не выводит swap раздел, его можно проверить с помощью:
% swapinfo Device 1K-blocks Used Avail Capacity /dev/mirror/gm0s1b 629544 0 629544 0%
Так же, с правами root набираем команду:
gmirror insert gm0 /dev/ad1
Тут есть ряд замечаний, во первых, этот диск не должен быть разделен на слайсы, во вторых, его размер должен точно соответствовать главному диску, допустимо чтобы он был немного больше, но не меньше! В противном случае команда включения этого диска не отработает и выдаст сообщение о тот что диск слишком мал по отношению к основному диску. В случае если второй диск, подключаемый к зеркалу будет немного или на много больше, диск являющийся основным и имеющий меньший размер будет приоритетным. Т.е. на втором диске будет занят под зеркало размер равный объему первого диска, все остальное пространство будет бессмысленно пустовать. Именно по этому рационально все же ставить диски одинакового размера.
Предположим что с объемами дисков у вас все в порядке и команда gmirror insert отработала нормально, для наблюдением за процессом синхронизации томов периодически набирайте команду:
gmirror status или gmirror list
После того как синхранизация томов успешна завершена, можете проверить работоспособность вашего RAID1. Для этого выключаете машину, отключаете один из дисков, затем пробуете не меняя при этом никаких настроек в BIOS загрузиться, если все прошло нормально, снова выключаете машину, возвращаете отключенный диск на место и отключаете второй, в случае успешной загрузки считаем настройку аппаратного RAID1 оконченной.
И напоследок. В случае выхода одного из дисков в зеркале, например ad1 извлекаем его (при выключенной машине) заменяем на новый, соответствующего размера или больший и выполняем следующие команды:
gmirror forget gm0
gmirror insert gm0 /dev/ad1
разработка скрипта для мониторинга статуса зеркала
ключевая команда tail -f /var/log/messages | grep DEGRADED | /user/bin/mail -s "MIRROR" mail@mail.ru
gmirror status | grep -o DEGRADED
http://www.lissyara.su/articles/freebsd/tuning/software_raid1/
http://www.lissyara.su/articles/freebsd/file_system/gmirror/
http://onlamp.com/pub/a/bsd/2005/11/10/FreeBSD_Basics.html?page=2
Комментариев нет:
Отправить комментарий