FastNetMon

Показаны сообщения с ярлыком FreeBSD Soft-Raid. Показать все сообщения
Показаны сообщения с ярлыком FreeBSD Soft-Raid. Показать все сообщения

воскресенье, 29 августа 2010 г.

RAID-5 write hole

Если система отказывает в тот момент, когда имеются активные операции записи на диск, то данные четности и непосредственно данные могут стать несовместимыми (неконсистентными) друг с другом. Если эта проблема не будет исправлена до отказа одного из жестких дисков массива или блока жесткого диска, то данные могут быть потеряны в следствие использования некорректных данных четности для восстановления потерянных блоков в массиве. Эта проблема часто называется "Write hole". Для избежания этой проблемы используется кэш-память с резервным питанием (батареей), которая минимизирует вероятность подобного развития событий. Аналогичной проблеме подвержены RAID-6 массивы.

Оригинал:
In the event of a system failure while there are active writes, the parity of a stripe may become inconsistent with the data. If this is not detected and repaired before a disk or block fails, data loss may ensue as incorrect parity will be used to reconstruct the missing block in that stripe. This potential vulnerability is sometimes known as the write hole. Battery-backed cache and similar techniques are commonly used to reduce the window of opportunity for this to occur. The same issue occurs for RAID-6.

Источник: http://en.wikipedia.org/wiki/Standard_RAID_levels

четверг, 1 апреля 2010 г.

FreeBSD: Not all disks connected

После отказа ad4:

gmirror status
Name Status Components
mirror/gm0 DEGRADED ad6



Заменили его и попытался запустить сборку массива:
gmirror insert gm0 /dev/ad4
gmirror: Not all disks connected.


Чтобы избавиться от проблемы, надо порекомендовать массиву "забыть" о потерянном бойце:
gmirror forget gm0


И после этого добавление диска сработает на ура:
gmirror insert gm0 /dev/ad4


Все, теперь ждем ребилд:
gmirror status
Name Status Components
mirror/gm0 DEGRADED ad6
ad4 (0%)

вторник, 30 марта 2010 г.

FreeBSD 8 - как разобрать RAID?

Имеем GEOM RAID:

gmirror status
Name Status Components
mirror/gm0 COMPLETE ad6
ad4


Задача - разобрать его и удалить метаданные с дисков:

Используем команду remove (Remove the given component(s) from the mirror and clear meta-data on it):
gmirror remove gm0 ad6
gmirror remove gm0 ad4


Вуаля:
gmirror status
Name Status Components
mirror/gm0 N/A N/A


Источник: http://www.freebsd.org/cgi/man.cgi?query=gmirror&sektion=8

суббота, 27 февраля 2010 г.

gmirror: Command 'load' not available.

Команда gmirror load отказывается работать и не запускает /dev/mirror.

ls /dev/mirror/
ls: /dev/mirror/: No such file or directory

Смотрим список доступных модулей:
kldstat
Id Refs Address Size Name
1 2 0xffffffff80100000 bd23e0 kernel
2 1 0xffffffff80e22000 cb52 geom_mirror.ko

Выгружа
ем модуль:
kldunload geom_mirror.ko


Убеждаемся, что он выгрузился:
kldstat
Id Refs Address Size Name
1 1 0xffffffff80100000 bd23e0 kernel


Повторно пробуем запустить RAID:
gmirror load


Теперь все окей:
# ls -la /dev/mirror/
total 1
dr-xr-xr-x 2 root wheel 512 Feb 27 15:14 .
dr-xr-xr-x 6 root wheel 512 Feb 27 15:04 ..
crw-r----- 1 root operator 0, 91 Feb 27 15:04 gm0
crw-r----- 1 root operator 0, 92 Feb 27 15:04 gm0s1
crw-r----- 1 root operator 0, 93 Feb 27 15:04 gm0s1a
crw-r----- 1 root operator 0, 94 Feb 27 15:04 gm0s1b
crw-r----- 1 root operator 0, 95 Feb 27 15:04 gm0s1c


Кстати, в процессе восстановления пробовал команды gmirror clear ad4 / ad6, возможно, помоги они.

понедельник, 7 декабря 2009 г.

Создание RAID 1 на FreeBSD 7.2 / 8.0

Теперь встала необходимость уже установленную FreeBSD перенести на RAID-1 массив путем добавления еще одного диска в систему.

Ну что же, в путь!

Включаем вывод отладочных сообщений от GEOM:

sysctl kern.geom.debugflags=17


Теперь смотрим, на каком диске у нас стоит система (в нашем случае это /dev/ad4):

df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/ad4s1a 673G 1.3G 618G 0% /
devfs 1.0K 1.0K 0B 100% /dev


Теперь создаем устройство gm0, в которое добавляем диск /dev/ad4. Фактически, это получается DEGRADED RAID массив, т.е. массив без одного диска.

gmirror label -vb round-robin gm0 /dev/ad4


В ответ система должна ответить следующее:

Metadata value stored on /dev/ad4.
Done.


Загружаем модуль ядра gmirror:
gmirror load


В случае успешного выполнения предыдущая команда создаст папку /dev/mirror со следующим содержимым:

ls /dev/mirror/
gm0 gm0s1 gm0s1a gm0s1b gm0s1c


Добавляем модуль gmirror в автозагрузку при запуске системы:

echo 'geom_mirror_load="YES"' >> /boot/loader.conf


Теперь необходимо отредактировать:

vi /etc/fstab


Который в данный момент содержит следующее:

/dev/ad4s1b none swap sw 0 0
/dev/ad4s1a / ufs rw 1 1


Более простой способ скорректировать /etc/fstab (используйте этот способ ТОЛЬКО, если четко знаете, что делаете! ):

sed -i "" 's/ad4/mirror\/gm0/' /etc/fstab


Теперь нам необходимо заменить (не пропустите /mirror/ !!! ):

/dev/ad4s1b на /dev/mirror/gm0s1b


и


/dev/ad4s1a на /dev/mirror/gm0s1a


Как видите, логика замены простая: /dev/ad4 заменяется на /dev/mirror/gm0

Перезагружаемся

shutdown -r now


После перезагрузки наблюдаем прелестную картину, которая повествует о том, что мы загрузились с RAID массива:

df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/mirror/gm0s1a 673G 1.3G 618G 0% /
devfs 1.0K 1.0K 0B 100% /dev


Теперь дело за малым - добавить второй диск (его у нас зовут /dev/ad8) в массив:

gmirror insert gm0 /dev/ad8


Теперь ждем окончания синхронизации дисков:

gmirror status


В моем случае вывод такой:

Name Status Components
mirror/gm0 DEGRADED ad4
ad8 (0%)



Теперь дожидаемся, когда DEGRADED сменится на COMPLETE и начинаем пользоваться системой :)

Через полтора часа у меня RAID массив выглядел так (полностью синхронизированный и работоспособный RAID):

gmirror status
Name Status Components
mirror/gm0 COMPLETE ad4
ad8






Основано на отличном мануале: http://www.freebsd.org/doc/en/books/handbook/geom-mirror.html