Для проведения этого теста, я использовал самую обычную инсталляцию FreeBSD 10, с разбивкой по умолчанию. В моей системе использовалось 6 дисков, объединённых в RAID-Z.
Установщик по-умолчанию, сделал мне следующий вариант разметки:
Выключаем машину, вынимаем сбойный диск и заменяем его на новый.
Если BIOS настроен на загрузку с этого диска, то меняем приоритет загрузки в BIOS.
И запускаем систему
Теперь, если посмотреть список дисков и разделов, то чётко видно, что da0 чист:
Заменяем диск в ZFS командой zpool replace:
Установщик по-умолчанию, сделал мне следующий вариант разметки:
[root@zdata ~]# zfs listВ этой статье я попробую с эмитировать выход из строя самого первого диска, с которого обычно по умолчанию BIOS читает загрузочный сектор и начинает загрузку, т.е. получится, что вставив новый диск в замен вышедшего из строя, система без дополнительных манипуляций у нас грузится не будет.
NAME USED AVAIL REFER MOUNTPOINT
zroot 5,93G 31,0G 153K /zroot
zroot/ROOT 915M 31,0G 153K none
zroot/ROOT/default 915M 31,0G 915M /
zroot/tmp 179K 31,0G 179K /tmp
zroot/usr 5,03G 31,0G 153K /usr
zroot/usr/home 2,17G 31,0G 248M /usr/home
zroot/usr/ports 2,85G 31,0G 2,85G /usr/ports
zroot/usr/src 153K 31,0G 153K /usr/src
zroot/var 1,30M 31,0G 153K /var
zroot/var/audit 153K 31,0G 153K /var/audit
zroot/var/crash 153K 31,0G 153K /var/crash
zroot/var/log 524K 31,0G 524K /var/log
zroot/var/mail 192K 31,0G 192K /var/mail
zroot/var/tmp 153K 31,0G 153K /var/tmp
В нормальном состоянии
Список дисков и разделов:[root@zdata ~]# ls /dev/ | grep daСтатус пула ZFS:
da0
da0p1
da0p2
da0p3
da1
da1p1
da1p2
da1p3
da2
da2p1
da2p2
da2p3
da3
da3p1
da3p2
da3p3
da4
da4p1
da4p2
da4p3
da5
da5p1
da5p2
da5p3
[root@zdata ~]# zpool status
pool: zroot
state: ONLINE
scan: resilvered 1,24G in 0h2m with 0 errors on Sat Oct 24 15:52:02 2015
config:
NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
gpt/zfs0 ONLINE 0 0 0
gpt/zfs1 ONLINE 0 0 0
gpt/zfs2 ONLINE 0 0 0
gpt/zfs3 ONLINE 0 0 0
gpt/zfs4 ONLINE 0 0 0
gpt/zfs5 ONLINE 0 0 0
errors: No known data errors
После сбоя
После выхода из строя первого диска da0, массив переходит в состояние DEGRADED и система перестаёт загружаться.Выключаем машину, вынимаем сбойный диск и заменяем его на новый.
Если BIOS настроен на загрузку с этого диска, то меняем приоритет загрузки в BIOS.
И запускаем систему
Теперь, если посмотреть список дисков и разделов, то чётко видно, что da0 чист:
[root@zdata ~]# ls /dev/ | grep daПроверяем статус пулов:
da0
da1
da1p1
da1p2
da1p3
da2
da2p1
da2p2
da2p3
da3
da3p1
da3p2
da3p3
da4
da4p1
da4p2
da4p3
da5
da5p1
da5p2
da5p3
[root@zdata ~]# zpool status -vВидим, что диск в состоянии UNAVAIL, массив raidz1-0 DEGRADED и пул zroot так же DEGRADED.
pool: zroot
state: DEGRADED
status: One or more devices could not be opened. Sufficient replicas exist for
the pool to continue functioning in a degraded state.
action: Attach the missing device and online it using 'zpool online'.
see: http://illumos.org/msg/ZFS-8000-2Q
scan: resilvered 1,24G in 0h2m with 0 errors on Sat Oct 24 15:52:02 2015
config:
NAME STATE READ WRITE CKSUM
zroot DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
9164267241595705440 UNAVAIL 0 0 0 was /dev/gpt/zfs0
gpt/zfs1 ONLINE 0 0 0
gpt/zfs2 ONLINE 0 0 0
gpt/zfs3 ONLINE 0 0 0
gpt/zfs4 ONLINE 0 0 0
gpt/zfs5 ONLINE 0 0 0
errors: No known data errors
Подготовка нового диска
Теперь необходимо скопировать разметку с любого из рабочих дисков с помощью gpart, например с диска da1:[root@zdata ~]# gpart backup da1Копируем:
GPT 128
1 freebsd-boot 40 1024 gptboot1
2 freebsd-swap 2048 4194304 swap1
3 freebsd-zfs 4196352 16773120 zfs1
[root@zdata ~]# gpart backup da1 | gpart restore -F da0И проверяем результат:
[root@zdata ~]# ls /dev/ | grep daИзменяем метку загрузочного тома:
da0
da0p1
da0p2
da0p3
da1
da1p1
da1p2
da1p3
da2
da2p1
da2p2
da2p3
da3
da3p1
da3p2
da3p3
da4
da4p1
da4p2
da4p3
da5
da5p1
da5p2
da5p3
[root@zdata ~]# gpart modify -i 1 -l gptboot0 da0Изменяем метку основного тома:
[root@zdata ~]# gpart modify -i 3 -l zfs0 da0Смотрим информацию по дискам:
[root@zdata ~]# gpart list | grep labelТеперь необходимые нам разделы на da0 присутствуют, но к сожалению в /dev/gpt/ метки дисков отсутствуют, т.к. они появляются только при создании дисков или в процессе загрузки системы.
label: gptboot1
label: swap1
label: zfs1
label: gptboot2
label: swap2
label: zfs2
label: gptboot3
label: swap3
label: zfs3
label: gptboot4
label: swap4
label: zfs4
label: gptboot5
label: swap5
label: zfs5
label: gptboot0
label: swap0
label: zfs0
[root@zdata ~]# ls /dev/gpt/Заставляем систему перечитать диск:
gptboot1 gptboot4 zfs2 zfs5
gptboot2 gptboot5 zfs3
gptboot3 zfs1 zfs4
[root@zdata ~]# true > /dev/da0Смотрим, что у нас появились gptboot0 и zfs0:
[root@zdata ~]# ls /dev/gpt/
gptboot0 gptboot3 zfs0 zfs3
gptboot1 gptboot4 zfs1 zfs4
gptboot2 gptboot5 zfs2 zfs5
Замена диска в пуле
Смотрим идентификатор выпавшего диска в пуле:[root@zdata ~]# zpool statusОн у нас 10165075366045259399.
pool: zroot
state: DEGRADED
status: One or more devices could not be opened. Sufficient replicas exist for
the pool to continue functioning in a degraded state.
action: Attach the missing device and online it using 'zpool online'.
see: http://illumos.org/msg/ZFS-8000-2Q
scan: resilvered 1,24G in 0h2m with 0 errors on Sun Nov 8 21:03:23 2015
config:
NAME STATE READ WRITE CKSUM
zroot DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
10165075366045259399 UNAVAIL 0 0 0 was /dev/gpt/zfs0
gpt/zfs1 ONLINE 0 0 0
gpt/zfs2 ONLINE 0 0 0
gpt/zfs3 ONLINE 0 0 0
gpt/zfs4 ONLINE 0 0 0
gpt/zfs5 ONLINE 0 0 0
errors: No known data errors
Заменяем диск в ZFS командой zpool replace:
[root@zdata ~]# zpool replace -f zroot 10165075366045259399 gpt/zfs0Выполняем рекомендованную нам команду по установке загрузчика на диск:
Make sure to wait until resilver is done before rebooting.
If you boot from pool 'zroot', you may need to update
boot code on newly attached disk 'gpt/zfs0'.
Assuming you use GPT partitioning and 'da0' is your new boot disk
you may use the following command:
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0
[root@zdata ~]# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0Далее командой zpool status смотрим процесс пересборки массива:
bootcode written to da0
[root@zdata ~]# zpool statusПо окночанию пересборки эта же команда zpool status, покажет что всё хорошо, все диски и дисковые пулы ONLINE:
pool: zroot
state: DEGRADED
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scan: resilver in progress since Sun Nov 8 21:50:01 2015
4,11G scanned out of 7,42G at 50,0M/s, 0h1m to go
701M resilvered, 55,33% done
config:
NAME STATE READ WRITE CKSUM
zroot DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
replacing-0 UNAVAIL 0 0 0
10165075366045259399 UNAVAIL 0 0 0 was /dev/gpt/zfs0/old
gpt/zfs0 ONLINE 0 0 0 (resilvering)
gpt/zfs1 ONLINE 0 0 0
gpt/zfs2 ONLINE 0 0 0
gpt/zfs3 ONLINE 0 0 0
gpt/zfs4 ONLINE 0 0 0
gpt/zfs5 ONLINE 0 0 0
errors: No known data errors
[root@zdata ~]# zpool statusПерезагружаемся. Возвращаемся в BIOS и выставляем параметры загрузки обратно.
pool: zroot
state: ONLINE
scan: resilvered 1,24G in 0h2m with 0 errors on Sun Nov 8 21:52:36 2015
config:
NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
gpt/zfs0 ONLINE 0 0 0
gpt/zfs1 ONLINE 0 0 0
gpt/zfs2 ONLINE 0 0 0
gpt/zfs3 ONLINE 0 0 0
gpt/zfs4 ONLINE 0 0 0
gpt/zfs5 ONLINE 0 0 0
errors: No known data errors
Night Блог: Замена Zfs Диска Во Bsd 10 На Массиве Raid-Z >>>>> Download Now
ОтветитьУдалить>>>>> Download Full
Night Блог: Замена Zfs Диска Во Bsd 10 На Массиве Raid-Z >>>>> Download LINK
>>>>> Download Now
Night Блог: Замена Zfs Диска Во Bsd 10 На Массиве Raid-Z >>>>> Download Full
>>>>> Download LINK lu