gmirror на отдельных слайсах
Добавлено: 2010-04-09 0:48:29
Привет всем! Хотел бы поделиться рецептом приготовления для gmirror'инга отдельных слайсов (а не всего диска). Хотел бы узнать о возможных подводных камнях в этом способе...
Итак, есть два диска ad0 и ad1. Предполагается, что они пустые. Я хочу создать на каждом из них по два слайса, один слайс будет загрузочным и для swap, а второй слайс - для пула zfs, на котором можно хранить /var и /usr к примеру. Загрузочные слайсы хочу поместить в gmirror. ОС FreeBSD 7.3, использую DVD образ для своей архитектуры.
1. Загружаюсь с загрузочного DVD в режим FixIT.
Очищаю ad0 и ad1:
2. Создаю слайс и партицию на ad0. Будет иметь пока один слайс: с него будет загрузка.
Размечаем первый слайс как хотим:
3. Устанавливаем ОС на ad0s1. Загружаемся в нее.
4. Создаю слайсы на ad1. Первый слайс - для загрузки и swap, второй слайс - для пула zfs.
5. Создаем "зеркало" пока из одного диска:
6. Размечаем первую партицию на зеркале:
7. Монтируем:
8. Перекидываем данные на зеркало:
9. Подготовления для загрузки с зеркала:
10. Загружаемся с зеркала. Теперь поменялись буквы дисков: зеркало на ad0, тот диск, который был раньше ad0, сейчас ad1.
11. Первый диск мне не нужен, т.к. все нужные данные скопированы.
12. Создаем слайс:
13. Создаем 2 слайса на ad1:
14. Самое главное:
15. Имеем:
16. На вторых слайсах создаю пул zfs и делаю zfs зеркало:
Все
.
Итак, есть два диска ad0 и ad1. Предполагается, что они пустые. Я хочу создать на каждом из них по два слайса, один слайс будет загрузочным и для swap, а второй слайс - для пула zfs, на котором можно хранить /var и /usr к примеру. Загрузочные слайсы хочу поместить в gmirror. ОС FreeBSD 7.3, использую DVD образ для своей архитектуры.
1. Загружаюсь с загрузочного DVD в режим FixIT.
Очищаю ad0 и ad1:
Код: Выделить всё
dd if=/dev/zero of=/dev/ad1 bs=1m count=1
dd if=/dev/zero of=/dev/ad0 bs=1m count=1Код: Выделить всё
# fdisk -v -B -I /dev/ad0
# fdisk -i -v -f /tmp/conf /dev/ad0
# cat /tmp/conf
p 1 165 63 размер_слайса
a 1
# bsdlabel -B -w /dev/ad0s1Код: Выделить всё
# bsdlabel -e ad0s1
a: 10485760 16 4.2BSD 0 0 0
b: 2097025 10485776 swap
c: 12582801 0 unused 0 0 4. Создаю слайсы на ad1. Первый слайс - для загрузки и swap, второй слайс - для пула zfs.
Код: Выделить всё
# fdisk -v -B -I /dev/ad1
# fdisk -i -v -f /tmp/conf /dev/ad1
# cat /tmp/conf:
p 1 165 63 размер_первого_слайса
a 1
p 2 165 * *
Код: Выделить всё
gmirror label -v -n -b round-robin gm0 /dev/ad1s1
gmirror loadКод: Выделить всё
# bsdlabel -B -w /dev/mirror/gm0
# bsdlabel -e /dev/mirror/gm0
# newfs -U /dev/mirror/gm0aКод: Выделить всё
# mount /dev/mirror/gm0a /mntКод: Выделить всё
# dump -L -0 -f- / | ( cd /mnt/ && restore -r -v -f- ) ;Код: Выделить всё
# cp -p /mnt/etc/fstab /mnt/etc/fstab.orig
# ee /mnt/etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/mirror/gm0b none swap sw 0
/dev/mirror/gm0a / ufs rw 1
/dev/acd0 /cdrom cd9660 ro,noauto 0 0
# echo 'geom_mirror_load="YES"' >>/mnt/boot/loader.conf11. Первый диск мне не нужен, т.к. все нужные данные скопированы.
Код: Выделить всё
# dd if=/dev/zero of=/dev/ad1 bs=1m count=1Код: Выделить всё
fdisk -v -B -I /dev/ad1Код: Выделить всё
# fdisk -i -v -f /tmp/conf /dev/ad0
# cat /tmp/conf:
p 1 165 63 размер_слайса_равен_размеру_ad0s1
a 1
p 2 165 * *Код: Выделить всё
# gmirror configure -a gm0
# gmirror insert -p 1 gm0 /dev/ad0s1Код: Выделить всё
# gmirror status
Name Status Components
mirror/gm0 COMPLETE ad0s1
ad1s1Код: Выделить всё
# zpool status
...
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
mirror ONLINE 0 0 0
ad0s2 ONLINE 0 0 0
ad1s2 ONLINE 0 0 0