2009-10-21

FreeBSD, 2 new disks, dump/restore & gmirror

Просто так, для себя. Заметка не претендует на руководство, я просто развлекался от нечего делать.

Добавили диски в одну помойку, для хранения на них /var раздела, где будет почта складироваться. В sysinstall лезть не хотелось, хочу сделать все руками...поехали.

Для начала в handbook, почитать, что да как.

Итак, поехали. Почитав маны по fdisk, и хэндбук, решил что загрузочный сектор мне нахрен не нужен.

# Как я понял, забиваем нулями таблицу разделов
[root@mail ~]# dd if=/dev/zero of=/dev/ad14 bs=1k count=1
# Далее создаем слайс freebsd на весь диск. Буткод нам менять не надо, поэтому без -B
[root@mail ~]# fdisk -I ad14
# Размечаем созданный слайс. Делаем авто, т.к.
# тип диска фиг знает какой указывать, можно посмотреть в /etc/disktab
$ Под авто захавает весь диск на один партишн
# что значит -r - тоже хз :-)
[root@mail ~]# bsdlabel -wr /dev/ad14s1 auto
# В хэндбуке написано, что a - под корень, b - под swap, с - для служ. целей.
# У мну работало как с буковй a, так и с буквой e. Переделываем партишн на e
# Откроется дефолтный редактор, у меня vi. Заменяем a на e и записываем.
# У лиссяры вообще для фс юзается буква с, но как я понял из хэндбука - лучше ее не трогать
[root@mail ~]# bsdlabel -e /dev/ad14s1
# В итоге имеем
[root@mail ~]# ls -l /dev/ad14
ad14 ad14s1 ad14s1c ad14s1e
# Создаем фс
# -O версия ufs, -U -soft-updates
[root@mail ~]# newfs -O2 -U /dev/ad14s1e

Ну и все в принципе, диск готов к юзанию. Надо задампить на него текущий /var и сделать зеркало в gmirror, т.к. с железными рэйдами в помойках плохо.

# Dump'им /var. Т.к. машина работает и /var смонтирован, нужно юзать -L
# Сначала посмотрим где у нас /var
[root@mail ~]# mount
/dev/mirror/gm0s1a on / (ufs, local)
devfs on /dev (devfs, local)
/dev/mirror/gm0s1d on /tmp (ufs, local, soft-updates)
/dev/mirror/gm0s1e on /usr (ufs, local, soft-updates)
/dev/mirror/gm0s1f on /var (ufs, local, soft-updates)
# Ага, /var на s1f. Дампим его
[root@mail ~]# dump -0 -L -f - /dev/mirror/gm0s1f > /usr/dump_gm0s1f.img
# Смонтируем куда-нибудь будущий /var.
[root@mail ~]# mount -t ufs /dev/ad14s1e /usr/newvar/
# И ресторим дамп туда
# Будет многа букаф, получим копию /var на новом разделе.
[root@mail ~]# cd /usr/newvar/
[root@mail /usr/newvar/]#restore -vrf /usr/dump_gm0s1f.img

Ну все, осталось только зеркало сделать.

# Пропишем переменную в sysctl, чтобы можно было писать на используемые диски
[root@mail ~]# sysctl kern.geom.debugflags=16
kern.geom.debugflags: 0 -> 16
# Создаем зеркало
# gm1 - имя зеркала. gm0 у меня уже есть.
[root@mail ~]# gmirror label -v -b round-robin gm1 /dev/ad14
Metadata value stored on /dev/ad14.
Done.
# gmirror у меня вкомпилен в ведро, наверно поэтому gm1 не появился сразу.
# Пришлось ребутаться, а так наверно достаточно gmirror load сказать
# После ребута видим:
[root@mail ~]# ls -l /dev/mirror/gm1*
crw-r----- 1 root operator 0, 84 21 окт 07:48 /dev/mirror/gm1
crw-r----- 1 root operator 0, 91 21 окт 07:48 /dev/mirror/gm1s1
crw-r----- 1 root operator 0, 92 21 окт 07:48 /dev/mirror/gm1s1c
crw-r----- 1 root operator 0, 93 21 окт 07:48 /dev/mirror/gm1s1e
# Зеркало поднялось. Только надо не забыть добавить в него второй диск
[root@mail ~]# gmirror insert gm1 /dev/ad16
[root@mail ~]# gmirror status
Name Status Components
mirror/gm0 COMPLETE ad10
ad12
mirror/gm1 DEGRADED ad14
ad16 (0%)
# Ну и все собственно. Зеркало начало ребилдиться.
# Осталось перезаписать fstab, переместив /var на /dev/mirror/gm1s1e
# и будет щастье


Вот, такие дела. Только у кого не вкомпилен gmirror в ведро надо еще прописать в /boot/loader.conf загрузку модуля gmirror. Good Luck!

Комментариев нет: