Страница 1 из 1

gmirror на отдельных слайсах

Добавлено: 2010-04-09 0:48:29
dm07
Привет всем! Хотел бы поделиться рецептом приготовления для gmirror'инга отдельных слайсов (а не всего диска). Хотел бы узнать о возможных подводных камнях в этом способе...
Итак, есть два диска 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
2. Создаю слайс и партицию на ad0. Будет иметь пока один слайс: с него будет загрузка.

Код: Выделить всё

# 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 
3. Устанавливаем ОС на ad0s1. Загружаемся в нее.

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 * *
5. Создаем "зеркало" пока из одного диска:

Код: Выделить всё

gmirror label -v -n -b round-robin gm0 /dev/ad1s1
gmirror load
6. Размечаем первую партицию на зеркале:

Код: Выделить всё

# bsdlabel -B -w /dev/mirror/gm0
# bsdlabel -e /dev/mirror/gm0
# newfs -U /dev/mirror/gm0a
7. Монтируем:

Код: Выделить всё

# mount /dev/mirror/gm0a /mnt
8. Перекидываем данные на зеркало:

Код: Выделить всё

# dump -L -0 -f- / | ( cd /mnt/ && restore -r -v -f- ) ;
9. Подготовления для загрузки с зеркала:

Код: Выделить всё

# 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.conf
10. Загружаемся с зеркала. Теперь поменялись буквы дисков: зеркало на ad0, тот диск, который был раньше ad0, сейчас ad1.

11. Первый диск мне не нужен, т.к. все нужные данные скопированы.

Код: Выделить всё

# dd if=/dev/zero of=/dev/ad1 bs=1m count=1
12. Создаем слайс:

Код: Выделить всё

fdisk -v -B -I /dev/ad1
13. Создаем 2 слайса на ad1:

Код: Выделить всё

# fdisk -i -v -f /tmp/conf /dev/ad0

# cat /tmp/conf:
p 1 165 63 размер_слайса_равен_размеру_ad0s1
a 1
p 2 165 * *
14. Самое главное:

Код: Выделить всё

# gmirror configure -a gm0
# gmirror insert -p 1 gm0 /dev/ad0s1
15. Имеем:

Код: Выделить всё

# gmirror status

      Name    Status  Components
mirror/gm0  COMPLETE  ad0s1
                      ad1s1
16. На вторых слайсах создаю пул zfs и делаю zfs зеркало:

Код: Выделить всё

# 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
Все :smile: .

Re: gmirror на отдельных слайсах

Добавлено: 2010-10-03 17:36:53
Alex Keda
прикольно

Re: gmirror на отдельных слайсах

Добавлено: 2010-10-03 19:57:51
Dog
Иногда gmirror только на отдельных разделах использовать и можно. Например, если диск размечался с помощью gpart, без fdisk. Тогда при попытке замиррорить диски полностью команда gmirror label сообщит что все в порядке, зеркало создано, но после ребута его не будет - как я читал в архиве рассылок, это из-за того что gpart и gmirror пытаются писать данные в один и тот же сектор (последний на диске, по-моему).
На домашнем компе уже несколько месяцев лежит написанная процентов на 70 статья об установке FreeBSD с помощью fixit mode, разбивкой gpart и зеркалированием gmirror. При попытке оформить все это в более-менее читаемом виде все стопорится... :(

Re: gmirror на отдельных слайсах

Добавлено: 2010-10-04 7:05:42
vadim64
Пиши статью :good:

Re: gmirror на отдельных слайсах

Добавлено: 2010-10-04 10:48:12
Dog
vadim64 писал(а):Пиши статью :good:
Да я ж с удовольствием! Только пните меня кто-нибудь волшебным пинком под жопу, а?..
А еще отличным вариантом было бы сделать какой-нибудь элементарный шаблончик для написания статей, что-нибудь вроде "такие-то куски таким цветом, такие-то таким шрифтом и т.д." и в качестве примера - какую-нибудь маленькую сферическую статейку в вакууме. Потому что текст вида "1. делаем то-то, 2. делаем то-то, 3. делаем так-то, потому что то-то и то-то, З.Ы. можно вот еще так-то, но это будет хуже, потому что вот тут то-то" у меня готов, могу хоть сейчас в массы выдать, а вот сделать из этого полноценную статью... Чукча не писатель, чукча читатель :)

Re: gmirror на отдельных слайсах

Добавлено: 2012-03-11 11:34:22
Daywalker
Dog писал(а):Иногда gmirror только на отдельных разделах использовать и можно. Например, если диск размечался с помощью gpart, без fdisk. Тогда при попытке замиррорить диски полностью команда gmirror label сообщит что все в порядке, зеркало создано, но после ребута его не будет - как я читал в архиве рассылок, это из-за того что gpart и gmirror пытаются писать данные в один и тот же сектор (последний на диске, по-моему).
На домашнем компе уже несколько месяцев лежит написанная процентов на 70 статья об установке FreeBSD с помощью fixit mode, разбивкой gpart и зеркалированием gmirror. При попытке оформить все это в более-менее читаемом виде все стопорится... :(
Да с удовольствием бы прочитал.