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!

2009-10-05

FreeBSD, ipfw, nat, pptp

Вот. Подсказали на форуме.

Долго мучался с pptp через nat на один сервак (Точнее не мучался, проблема была, но остро не стояла Так...вспоминал периодически). То есть когда два клиента из локальной сети ломятся через nat на один внешний сервак. На фряхе ipfw nat в этом случае не знал что делать - gre пакеты номеров портов не имеют, и nat не знал что делать. Пришли gre пакеты с внешнего сервака, кому их слать? Nat делал просто - слал последнему подключившемуся. То есть если я подключался по pptp к серваку и делал свои темные дела, а потом подключался начальнег - у меня vpn обрубался. Оказалось все продумано, и ipfw nat умеет подглядывать в различные прикладные протоколы. Реализуется модулями ядра, они есть в /boot/kernel/alias_*. По крайней мере в моей 7.2.

Достаточно прописать:

kldload alias_pptp.ko

и вуаля, все работает!

Так же почитал что можно подгрузить для ftp - и тогда активный ftp заработает за натом. Прям как на цисках! Клёво! FreeBSD как обычно рулит..и педалит