Приветствую всех. Сегодня я расскажу как создать RAID1 из системного и резервного винтов. Плюсы такого подхода налицо: вдруг чего случится с системным жестким диском, не охото заново все устанавливать, а так взял, да заменил сбойный винт и зеркало снова в строю, да и к тому же повысится скорость чтения (ведь данные будут идентичны на двух винтах, следовательно можно читать с обоих одновременно разные куски одного элемента ФС), хотя для меня это не самое важное, важнее надежность, да и хватает производительности существующей конфигурации, но все же это плюс. Ну такс начнем. Имеется: два винта и ОС FreeBSD 7.4.
Винты у меня определились так:
# ls /dev | grep ad
ad0
ad1На винт ad0 установлена операционка. Сначала создадим зеркало:
# gmirror label -v -b round-robin gm0 /dev/ad0
gmirror: Can`t store metadata on /dev/ad0: Operation not permitted.Что-то не пошло, лечится это просто:
# sysctl kern.geom.debugflags=16
kern.geom.debugflags: 0 -> 16Снова пробуем создать зеркало
# gmirror label -v -b round-robin gm0 /dev/ad0
Metadata value stored on ad0.
Done.В этот раз получилось. Вот некоторые ключи, которые принимает команда gmirror label:
- -b - алгоритм балансировки (доступные смотрите в мане).
- -F - отключить синхронизацию после сбоев питания.
- -n - отключить автосинхронизацию.
- -v - выводить дополнительную информацию.
Чтобы изменить параметры зеркала (алгоритм балансировки, автосинхронизация и т.п.), используйте команду gmirror configure. Теперь правим /etc/fstab. До изменения он у меня выглядел так:
# Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1b none swap sw 0 0
/dev/ad0s1a / ufs rw 1 1
/dev/ad0s1e /tmp ufs rw 2 2
/dev/ad0s1f /usr ufs rw 2 2
/dev/ad0s1d /var ufs rw 2 2После изменений стал таким:
# Device Mountpoint FStype Options Dump Pass#
/dev/mirror/gm0s1b none swap sw 0 0
/dev/mirror/gm0s1a / ufs rw 1 1
/dev/mirror/gm0s1e /tmp ufs rw 2 2
/dev/mirror/gm0s1f /usr ufs rw 2 2
/dev/mirror/gm0s1d /var ufs rw 2 2Чтобы при загрузке ядро смогло обнаружить зеркало, нужно загрузить соответствующий модуль на этапе загрузки ядра, для этого добавляем в /boot/loader.conf следующую запись:
echo 'geom_mirror_load="YES"' >> /boot/loader.confПерезагружаемся. Если загрузка не удалась, то подгружаем корневой раздел ручками и доводим fstab до правильного состояния. Загрузившись, можно глянуть состояние зеркала и информацию о носителях:
# gmirror status gm0
Name Status Components
mirror/gm0 COMPLETE ad0# gmirror list gm0
Geom name: gm0
State: COMPLETE
Components: 1
Balance: round-robin
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 1
ID: 2730824176
Providers:
1. Name: mirror/gm0
Mediasize: 21474835968 (20G)
Sectorsize: 512
Mode: r5w5e6
Consumers:
1. Name: ad0
Mediasize: 21474836480 (20G)
Sectorsize: 512
Mode: r1w1e1
State: ACTIVE
Priority: 0
Flags: NONE
GenID: 0
SyncID: 1
ID: 135984322Теперь можно добавить второй винт в зеркало. Делается это так:
# gmirror insert -v gm0 /dev/ad1
GEOM_MIRROR: Device gm0: rebuildingprovider ad1.
Done.После этого зеркало будет синхронизироваться, состояние смотреть командой gmirror status gm0:
# gmirror status gm0
Name Status Components
mirror/gm0 DEGRADED ad0
ad1 (10%)Теперь ждем, когда закончится синхронизация зеркала, а после окончания синхронизации система на первую консоль выкинет сообщение "GEOM_MIRROR: Device gm0: rebuilding provider ad1 finished." и получится что-то подобное:
# gmirror status gm0
Name Status Components
mirror/gm0 COMPLETE ad0
ad1# gmirror list gm0
Geom name: gm0
State: COMPLETE
Components: 2
Balance: round-robin
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 1
ID: 2730824176
Providers:
1. Name: mirror/gm0
Mediasize: 21474835968 (20G)
Sectorsize: 512
Mode: r5w5e6
Consumers:
1. Name: ad0
Mediasize: 21474836480 (20G)
Sectorsize: 512
Mode: r1w1e1
State: ACTIVE
Priority: 0
Flags: NONE
GenID: 0
SyncID: 1
ID: 135984322
2. Name: ad1
Mediasize: 21474836480 (20G)
Sectorsize: 512
Mode: r1w1e1
State: ACTIVE
Priority: 0
Flags: NONE
GenID: 0
SyncID: 1
ID: 2544032587На этом настройка закончена, теперь можно не беспокоиться за системный винт - даже если что-то с ним случится, то подстрахует второй в зеркале. Если винт вышел из строя, то заменяете винт, говорите зеркалу "забыть" о сбойном винте (команда gmirror forget) и обычным способом добавляете новый винт в зеркало.
P.S. Общий совет при создании рэйдов: лучше сначала разметить винт - сделать один большой раздел, но чуть меньше объема жесткого диска на 1-2Мб. А потом уже размечать так, как вам нужно массив. Это полезно тем, что винты из разных серий одного производителя или винты разных производителей одинакового объема могут немного различаться в количестве секторов, хорошо когда на втором винте их больше, а если их меньше, то такой винт в зеркало добавить не получится, поэтому намеренное уменьшение объема под рэйд массив избавит от подобных проблем.
пн, 25/07/2011 - 09:42
Хорошая статья!
У меня сложилась ситуация когда надо сделать откат от gm0 в ad4.
было бы хорошо найти описание каким образом это делается.
пн, 25/07/2011 - 11:17
Ничего сложного, просто порядок действий будет обратный:
Только сначала лучше потренироваться на тестовой машине.
вт, 09/06/2026 - 16:56
Very useful write-up! I appreciated reading this.
As a sports betting fan based in Nigeria, I usually search for The Validated BET9ja Promotion Code this 2026 is Yohaig best deals before joining.
For anyone curious, just so you know, the Certified Bet Naija Promo Code
for 2026 is yohaig, which gets you a great offer when you sign up.
Thanks again!
вт, 09/06/2026 - 20:04
Really helpful write-up! I really enjoyed reading this.
As a sports betting fan here in Nigeria, I always search for The Valid
Bet Naija Promotion Code 2026 is yohaig - https://landing.bet9ja.com/aviator-bet9ja?btag=yohaig&promocode=yohaig
best offers before joining. For anyone interested, here's a tip, the Validated BetNaija Promotion Code 2026 is Yohaig, and it gives you a great bonus when you register.
Thanks again!
ср, 10/06/2026 - 04:04
Great post! I really enjoyed sharing this. As a sports betting fan here in Nigeria, I usually seek The Verified Bet9ja Promo Code for 2026 is Yohaig best deals before registering.
If you're interested, here's a tip, the Legally Validated
Betnaija promo code 2026 is YOHAIG, and it unlocks a great offer when creating an account.
Bookmarking this for later!