Pull to refresh

Raid1 на FreeBSD без аппаратного контроллера

Часто приходится устанавливать сервера на FreeBSD, выполняя одну и ту-же работу по созданию RAID1 на двух независимых дисках.
Как правило это виртуалки на VmWare Esxi, с добавленными хранилищами с двух независимых физических дисков.

Процесс этот описан во многих местах, поэтому тратить свое и ваше время на это не буду, опишу лишь то, как это делаю я.
Процедура занимает несколько секунд и вероятность ошибиться сведена к нулю.
Для этого у меня есть небольшой скрип, который лежит по адресу http://mov.ru/m.sh

#!/bin/sh

sysctl kern.geom.debugflags=16
cp /etc/fstab /etc/fstab.orig

# Device?
dev0=`cat /etc/fstab.orig | awk  '$2 == "/"  {print $1}'  | awk '{i=split($0, Name, "/"); print Name[3]}' |  awk '{i=split($0, Name, "s1"); print Name[1]}'`

echo $dev0

# Make mirror
gmirror label -v -b round-robin gm0 /dev/$dev0

# Make load
echo geom_mirror_load="YES" >> /boot/loader.conf

# Change fstab
sed "s/\/dev\/$dev0/\/dev\/mirror\/gm0/" < /etc/fstab.orig  > /etc/fstab

# Make cron
echo "# check mirror " >> /etc/crontab
echo "0       *       *       *       *       root    gmirror status | grep -A5 -B5 DEGRADED" >> /etc/crontab

echo "
********************************
********************************
Done!
Not forget add another mirrors!
>  gmirror insert gm0 /dev/adX
********************************
********************************"
</code>

Дальше просто:
<source lang="bash">

> fetch http://mov.ru/m.sh

> sh m.sh

> reboot 



Скрипт создает устройство gm0 с одним диском, на который уже установлена система и добавляет в cron проверку на целостность Raid1, в случае разрушения зеркала root получит письмом соответствующее уведомление.

После перезагрузки в зеркало надо добавить второй диск командой
> gmirror insert gm0 /dev/adX


Где /dev/adX — имя второго диска.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.