Документация по ОС FreeBSD Понедельник, 06.05.2024, 23:32
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Мои статьи [0]
Установка и настройка [281]
X Window [25]
Man pages [30]
Ports & Packages [26]
cvs [18]
Multimedia [20]
Нововсти в мире Unix [0]
RFC [4]
RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Безопасность [52]
Работа с железом [58]
Книги по FreeBSD [17]
Сеть [505]
Программирование [40]
FireWall [58]
Темы экзамена BSDA [14]
Официальные темы экзамена BSDA, включая подробноые описания и советы по обучению.

Главная » Статьи » Работа с железом

Использование gmirror для создания программного зеркалирования дисков [2008]
Досталась мамка с кривым S-ATA контроллером - SiL3112. До того, как выяснилось что он кривой, успел заказать два S-ATA харда :). Поколупавшись день, понял, что на ней ничё не светит, и взял со склада два P-ATA. Тока вот RAID-контроллер на маме был лишь новомоднявого формата Serail ATA. Поэтому, ввиду того, что машина ответственная, решил сделать зеркало софтверное. Вначале, хотел забульбенить по-старинке, через atacontrol, но после некоторого размышления, решил что лучше мутить на gmirror. Основной причиной стало то, что за зеркалом на atacontrol надо присматривать больше, чем на gmirror. Ненамного, но больше.
   Итак, для начала добавляем строку в /boot/loader.conf
/usr/home/lissyara/>echo 'geom_mirror_load=YES' >> /boot/loader.conf
/usr/home/lissyara/>

   После чего создаём зеркало:
/usr/home/lissyara/>gmirror label -v -b round-robin gm0 /dev/ad0
Can't store metadata on /dev/ad0: Operation not permitted.
/usr/home/lissyara/>

   Не даёт писать на диск который используется. Правиться при помощи sysctl:
/usr/home/lissyara/>sysctl kern.geom.debugflags=16
kern.geom.debugflags: 0 -> 16
/usr/home/lissyara/>

   Снова пробуем:
/usr/home/lissyara/>gmirror label -v -b round-robin gm0 /dev/ad0
Metadata value stored on /dev/ad0.
Done.
/usr/home/lissyara/>

   Сделали зеркало из одного диска. Надо добавить второй, но вначале правим /etc/fstab из такого:
# Device Mountpoint FStype Options Dump Pass#
/dev/ad0s2b none swap sw 0 0
/dev/ad0s1a / ufs rw 1 1
/dev/ad0s1e /jails/eliron ufs rw 2 2
/dev/ad0s1f /jails/gptel ufs rw 2 2
/dev/ad0s1g /jails/grand-prix ufs rw 2 2
/dev/ad0s1d /tmp ufs rw 2 2
/dev/ad0s1h /usr ufs rw 2 2
/dev/ad0s1b /var ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0

# NULLFS - for ports
/usr/ports /jails/eliron/usr/ports nullfs rw 0 0
#/usr/ports /jails/gptel/usr/ports nullfs rw 0 0
#/usr/ports /jails/grand-prix/usr/ports nullfs rw 0 0

   В такой (это просто пример, что должно меняться, а что не должно, хотя и взят он с реальной машины)
/usr/home/lissyara/>df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/mirror/gm0s1a 372M 60M 282M 18% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/mirror/gm0s1e 1.9G 363M 1.4G 20% /jails/eliron
/dev/mirror/gm0s1f 1.9G 4.0K 1.8G 0% /jails/gptel
/dev/mirror/gm0s1g 1.9G 4.0K 1.8G 0% /jails/grand-prix
/dev/mirror/gm0s1d 1.9G 14K 1.8G 0% /tmp
/dev/mirror/gm0s1h 271G 6.0G 243G 2% /usr
/dev/mirror/gm0s1b 9.3G 34M 8.5G 0% /var
/usr/ports 271G 6.0G 243G 2% /jails/eliron/usr/ports
devfs 1.0K 1.0K 0B 100% /var/named/dev
devfs 1.0K 1.0K 0B 100% /jails/eliron/dev
procfs 4.0K 4.0K 0B 100% /jails/eliron/proc
/usr/home/lissyara/>

   После чего перезагружаемся. Если всё нормально, и ошибок нет, то надо втыкать второй хард в зеркало. Если ошибки, и не грузится, то монтируем корневую ФС руками, и исправляем ошибки в /etc/fstab. Итак, втыкаем второй хард в зеркало:
/usr/home/lissyara/>gmirror insert gm0 /dev/ad1
/usr/home/lissyara/>

   Смотрим логи:
/usr/home/lissyara/>tail -2 /var/log/messages
Nov 2 11:04:00 router kernel: GEOM_MIRROR: Device gm0: provider ad1 detected.
Nov 2 11:04:00 router kernel: GEOM_MIRROR: Device gm0: rebuilding provider ad1.
/usr/home/lissyara/>

  И статус массива:
/usr/home/lissyara/>gmirror status
 Name Status Components
mirror/gm0 DEGRADED ad0
 ad1 (1%)
/usr/home/lissyara/>

   Полные данные можно получить такой командой:
/usr/home/lissyara/>gmirror list
Geom name: gm0
State: DEGRADED
Components: 2
Balance: round-robin
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 1
ID: 875211574
Providers:
1. Name: mirror/gm0
 Mediasize: 320072932864 (298G)
 Sectorsize: 512
 Mode: r9w8e10
Consumers:
1. Name: ad0
 Mediasize: 320072933376 (298G)
 Sectorsize: 512
 Mode: r1w1e1
 State: ACTIVE
 Priority: 0
 Flags: DIRTY
 GenID: 0
 SyncID: 1
 ID: 4187229399
2. Name: ad1
 Mediasize: 320072933376 (298G)
 Sectorsize: 512
 Mode: r1w1e1
 State: SYNCHRONIZING
 Priority: 0
 Flags: DIRTY, SYNCHRONIZING
 GenID: 0
 SyncID: 1
 Synchronized: 1%
 ID: 2887372520

/usr/home/lissyara/>

   А в логах ядра такое:
/usr/home/lissyara/>dmesg | grep GEOM_MIRROR
GEOM_MIRROR: Device gm0 created (id=875211574).
GEOM_MIRROR: Device gm0: provider ad0 detected.
GEOM_MIRROR: Device gm0: provider ad0 activated.
GEOM_MIRROR: Device gm0: provider mirror/gm0 launched.
GEOM_MIRROR: Device gm0: provider ad1 detected.
GEOM_MIRROR: Device gm0: rebuilding provider ad1.
/usr/home/lissyara/>

   После сборки будет так:
/usr/home/lissyara/>gmirror status
 Name Status Components
mirror/gm0 COMPLETE ad0
 ad1
/usr/home/lissyara/>

   Это описание не претендует на полноту, или ещё что-то, делалось оно по горячим следам, в процессе работы. Может кому и пригодится.



Источник: http://www.lissyara.su/?id=1272
Категория: Работа с железом | Добавил: oleg (09.01.2009) | Автор: lissyara
Просмотров: 1065 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024