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

ZFS + Hotspare

Добавлено: 2009-11-26 19:17:03
Alex_hha
У кого нибудь работает автоматическая замена hotspare при вылете одного из винтов в пуле?

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

# zpool status
  pool: storage
 state: DEGRADED
status: One or more devices has experienced an unrecoverable error.  An
        attempt was made to correct the error.  Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
        using 'zpool clear' or replace the device with 'zpool replace'.
   see: http://www.sun.com/msg/ZFS-8000-9P
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        storage     DEGRADED     0     0     0
          raidz1    DEGRADED     0     0     0
            da0     OFFLINE      0   188     0
            da1     ONLINE       0     0     0
            da2     ONLINE       0     0     0
        spares
          da3       AVAIL

errors: No known data errors
из описания hotspare, da3 автоматом должен заменить da0 и должен начаться ребилд массива, но этого не происходит.

Re: ZFS + Hotspare

Добавлено: 2009-11-26 19:32:40
angelas_
А что говорит эта команда?

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

zpool get autoreplace storage
Кстати, по умолчанию этот параметр установлен в off.
Вот тут есть немного инфы:
http://docs.sun.com/app/docs/doc/817-2271/gfifk?a=view

:smile:

Re: ZFS + Hotspare

Добавлено: 2009-11-26 19:51:52
Alex_hha
Про этот параметр знаю, он включен.

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

# zpool get autoreplace storage
NAME     PROPERTY     VALUE    SOURCE
storage  autoreplace  on       local

Re: ZFS + Hotspare

Добавлено: 2009-11-26 20:46:00
angelas_
Тогда действительно странно. Надо будет и мне поиграться на работе завтра с этим.

Re: ZFS + Hotspare

Добавлено: 2009-11-27 0:47:26
Alex_hha
Делал на виртуалке, FreeBSD 8.0-RELEASE. Отпишись о результатах

Re: ZFS + Hotspare

Добавлено: 2009-11-30 12:38:38
Alex_hha
Может это связанно с тем, что диск в hotspare никак не размечен? Например на линухе, если использовать mdadm и такую же связку, raid 5 (3 диска) + 1 hotspare, то автоматическое добавление диска в массив и его ребилд начинается, после команд

# sfdisk -d /dev/da1 | sfdisk /dev/da3

Кстати, а есть ли аналог этой команды под фряху?

Re: ZFS + Hotspare

Добавлено: 2009-11-30 20:52:19
angelas_
Alex_hha писал(а):Может это связанно с тем, что диск в hotspare никак не размечен? Например на линухе, если использовать mdadm и такую же связку, raid 5 (3 диска) + 1 hotspare, то автоматическое добавление диска в массив и его ребилд начинается, после команд

# sfdisk -d /dev/da1 | sfdisk /dev/da3

Кстати, а есть ли аналог этой команды под фряху?
Под фряху есть тот же самый fdisk, на семёрке ещё есть gpt, gpart, на восьмёрке gpart (gpt убрали).
Под фряху официально на GEOM классах реализация 5 рейда есть только в gvinum. A graid5 только неофициальные есть (2 или 3 реализации). Я правда ни gvinum, ни graid5 не использовал, так что немогу сказать. Посмотрел graid3, там нету такой возможности как hot-spare.

У меня тут есть 3 проприетарных сервачка. База - линукс, конечно переделанный. Там это всё дело реализованно на LSI GPT контроллере с кучей подключённых внешных стораджей на 12 хардов каждый. Так там стоит LVM поверх mdadm. Ну так там сколько бывало что диск вылетал - автоматом подцеплялся hot-spare диск.

Re: ZFS + Hotspare

Добавлено: 2009-11-30 21:06:43
angelas_
Alex_hha писал(а):Делал на виртуалке, FreeBSD 8.0-RELEASE. Отпишись о результатах
Ну вот, попробовал. Только я думаю это немного не то. Вот что получилось:

Контроллер HP P400 SATA/SAS, полностью хардверный рейд, т.е. ОС не может видеть напрямую диск. Первые 2 диска SATA по 250 гигов каждый в хардверном рейде в зеркале (da0). Остальные 10 дисков по 2TB, сконфигурированные каждый отдельно под свой рейд 0 уровня. В итоге имеем 10 дисков по 2TB (da1-da10):

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

mercury:~# camcontrol devlist
<COMPAQ RAID 1  VOLUME OK>         at scbus0 target 0 lun 0 (pass0,da0)
<COMPAQ RAID 0  VOLUME OK>         at scbus0 target 1 lun 0 (pass1,da1)
<COMPAQ RAID 0  VOLUME OK>         at scbus0 target 2 lun 0 (pass2,da2)
<COMPAQ RAID 0  VOLUME OK>         at scbus0 target 3 lun 0 (pass3,da3)
<COMPAQ RAID 0  VOLUME OK>         at scbus0 target 4 lun 0 (pass4,da4)
<COMPAQ RAID 0  VOLUME OK>         at scbus0 target 5 lun 0 (pass5,da5)
<COMPAQ RAID 0  VOLUME OK>         at scbus0 target 6 lun 0 (pass6,da6)
<COMPAQ RAID 0  VOLUME OK>         at scbus0 target 7 lun 0 (pass7,da7)
<COMPAQ RAID 0  VOLUME OK>         at scbus0 target 8 lun 0 (pass8,da8)
<COMPAQ RAID 0  VOLUME OK>         at scbus0 target 9 lun 0 (pass9,da9)
<COMPAQ RAID 0  VOLUME OK>         at scbus0 target 10 lun 0 (pass10,da10)
mercury:~# 
Вытаскиваем диск. Контроллер грязно выругался:

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

Nov 30 18:25:11 mercury kernel: ciss0: *** Hot-plug drive removed, Port=1I Box=1 Bay=10
Nov 30 18:25:11 mercury kernel: ciss0: *** Physical drive failure, Port=1I Box=1 Bay=10
Nov 30 18:25:11 mercury kernel: ciss0: *** State change, logical drive 8
Nov 30 18:25:11 mercury kernel: ciss0: logical drive 8 (da8) changed status OK->failed, spare status 0x0
Nov 30 18:25:11 mercury kernel: (da8:ciss0:0:8:0): lost device
Nov 30 18:25:11 mercury kernel: (da8:ciss0:0:8:0): removing device entry
Ну и конечно пул:

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

angelas@mercury:~> zpool status
  pool: storage
 state: DEGRADED
status: One or more devices has experienced an unrecoverable error.  An
        attempt was made to correct the error.  Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
        using 'zpool clear' or replace the device with 'zpool replace'.
   see: http://www.sun.com/msg/ZFS-8000-9P
 scrub: none requested
config:

        NAME              STATE     READ WRITE CKSUM
        storage           DEGRADED     0     0     0
          raidz1          ONLINE       0     0     0
            label/disk03  ONLINE       0     0     0
            label/disk04  ONLINE       0     0     0
            label/disk05  ONLINE       0     0     0
            label/disk06  ONLINE       0     0     0
            label/disk07  ONLINE       0     0     0
          raidz1          DEGRADED     0     0     0
            label/disk08  ONLINE       0     0     0
            label/disk09  ONLINE       0     0     0
            label/disk10  REMOVED      0    30     0
            label/disk11  ONLINE       0     0     0
            label/disk12  ONLINE       0     0     0

errors: No known data errors
angelas@mercury:~> 
Вставляем диск обратно. Сканируем:

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

mercury:~# camcontrol rescan all
Re-scan of bus 0 was successful
Re-scan of bus 1 was successful
mercury:~#
Контроллер подтвердил, что увидел:

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

Nov 30 18:28:57 mercury kernel: ciss0: *** Hot-plug drive inserted, Port=1I Box=1 Bay=10
Nov 30 18:28:57 mercury kernel: ciss0: *** Media exchanged detected, logical drive 8
Nov 30 18:28:57 mercury kernel: ciss0: logical drive 8 () media exchanged, ready to go online
Nov 30 18:28:57 mercury kernel: ciss0: *** State change, logical drive 8
Nov 30 18:28:57 mercury kernel: ciss0: logical drive 8 (probe8) changed status failed->OK, spare status 0x0
Nov 30 18:28:57 mercury kernel: da8 at ciss0 bus 0 scbus0 target 8 lun 0
Nov 30 18:28:57 mercury kernel: da8: <COMPAQ RAID 0  VOLUME OK> Fixed Direct Access SCSI-5 device 
Nov 30 18:28:57 mercury kernel: da8: 135.168MB/s transfers
Nov 30 18:28:57 mercury kernel: da8: Command Queueing enabled
Nov 30 18:28:57 mercury kernel: da8: 1907697MB (3906963632 512 byte sectors: 255H 32S/T 65535C)
Ну и смотрим пул:

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

mercury:~# zpool status
  pool: storage
 state: DEGRADED
status: One or more devices has experienced an unrecoverable error.  An
        attempt was made to correct the error.  Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
        using 'zpool clear' or replace the device with 'zpool replace'.
   see: http://www.sun.com/msg/ZFS-8000-9P
 scrub: none requested
config:

        NAME              STATE     READ WRITE CKSUM
        storage           DEGRADED     0     0     0
          raidz1          ONLINE       0     0     0
            label/disk03  ONLINE       0     0     0
            label/disk04  ONLINE       0     0     0
            label/disk05  ONLINE       0     0     0
            label/disk06  ONLINE       0     0     0
            label/disk07  ONLINE       0     0     0
          raidz1          DEGRADED     0     0     0
            label/disk08  ONLINE       0     0     0
            label/disk09  ONLINE       0     0     0
            label/disk10  REMOVED      0    93     0
            label/disk11  ONLINE       0     0     0
            label/disk12  ONLINE       0     0     0

errors: No known data errors
mercury:~#
Ну и после чистки пула он сделал ресильвер:

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

mercury:~# zpool clear storage
mercury:~# zpool status
  pool: storage
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Mon Nov 30 18:32:49 2009
config:

        NAME              STATE     READ WRITE CKSUM
        storage           ONLINE       0     0     0
          raidz1          ONLINE       0     0     0
            label/disk03  ONLINE       0     0     0
            label/disk04  ONLINE       0     0     0
            label/disk05  ONLINE       0     0     0
            label/disk06  ONLINE       0     0     0
            label/disk07  ONLINE       0     0     0
          raidz1          ONLINE       0     0     0
            label/disk08  ONLINE       0     0     0  7.50K resilvered
            label/disk09  ONLINE       0     0     0  8.50K resilvered
            label/disk10  ONLINE       0     0     0  8.50K resilvered
            label/disk11  ONLINE       0     0     0  7.50K resilvered
            label/disk12  ONLINE       0     0     0  7K resilvered

errors: No known data errors
mercury:~# 
Только как я уже говорил, это не совсем то. Надо попробовать с md дисками поиграться. :smile:

Re: ZFS + Hotspare

Добавлено: 2009-11-30 21:55:44
angelas_
Поигрался я с файлами. Как только делаешь

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

zpool offline test /mnt/disk4
сразу выпадает в осадок... Пробуем по другому :smile:

Re: ZFS + Hotspare

Добавлено: 2009-11-30 22:37:53
angelas_
Ну вот, ещё один эксперимент.
Имеем 7 фаилов по 100МБ каждый:

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

mercury:/dsk# ls -la
total 717364
drwxr-xr-x   2 root  wheel        512 Nov 30 19:58 .
drwxr-xr-x  20 root  wheel        512 Nov 30 19:58 ..
-rw-r--r--   1 root  wheel  104857600 Nov 30 19:52 disk0
-rw-r--r--   1 root  wheel  104857600 Nov 30 19:52 disk1
-rw-r--r--   1 root  wheel  104857600 Nov 30 19:52 disk2
-rw-r--r--   1 root  wheel  104857600 Nov 30 19:52 disk3
-rw-r--r--   1 root  wheel  104857600 Nov 30 19:52 disk4
-rw-r--r--   1 root  wheel  104857600 Nov 30 19:52 disk5
-rw-r--r--   1 root  wheel  104857600 Nov 30 20:52 disk6
mercury:/dsk# 
На этот раз делаю с md девайсами, так как напрямую с файлами выпадает в осадок. Хотя в интернете нашёл примеры, вроде должно работать.

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

mercury:/dsk# mdconfig -a -f /dsk/disk0 -u 0     
mercury:/dsk# mdconfig -a -f /dsk/disk1 -u 1 
mercury:/dsk# mdconfig -a -f /dsk/disk2 -u 2  
mercury:/dsk# mdconfig -a -f /dsk/disk3 -u 3 
mercury:/dsk# mdconfig -a -f /dsk/disk4 -u 4 
mercury:/dsk# mdconfig -a -f /dsk/disk5 -u 5 
mercury:/dsk# mdconfig -a -f /dsk/disk6 -u 6 
mercury:/dsk# mdconfig -l
md0 md1 md2 md3 md4 md5 md6 
mercury:/dsk# ls -la /dev/md*
crw-r-----  1 root  operator    0, 145 Nov 30 19:59 /dev/md0
crw-r-----  1 root  operator    0, 146 Nov 30 19:59 /dev/md1
crw-r-----  1 root  operator    0, 147 Nov 30 19:59 /dev/md2
crw-r-----  1 root  operator    0, 149 Nov 30 20:00 /dev/md3
crw-r-----  1 root  operator    0, 150 Nov 30 20:00 /dev/md4
crw-r-----  1 root  operator    0, 151 Nov 30 20:00 /dev/md5
crw-r-----  1 root  operator    0, 152 Nov 30 20:00 /dev/md6
crw-------  1 root  wheel       0,  78 Nov 30 19:52 /dev/mdctl
mercury:/dsk# 
Ну и соответственно пул:

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

mercury:/dsk# zpool create test2 raidz /dev/md0 /dev/md1 /dev/md2 /dev/md3 /dev/md4 spare /dev/md5
mercury:/dsk# zpool status test2
  pool: test2
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        test2       ONLINE       0     0     0
          raidz1    ONLINE       0     0     0
            md0     ONLINE       0     0     0
            md1     ONLINE       0     0     0
            md2     ONLINE       0     0     0
            md3     ONLINE       0     0     0
            md4     ONLINE       0     0     0
        spares
          md5       AVAIL   

errors: No known data errors
mercury:/dsk# 
Проверяем autoreplace:

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

mercury:/dsk# zpool get autoreplace test2
NAME   PROPERTY     VALUE    SOURCE
test2  autoreplace  on       local
mercury:/dsk# 
Выключаем один диск:

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

mercury:/dsk# zpool offline test2 md4
mercury:/dsk# zpool status test2
  pool: test2
 state: DEGRADED
status: One or more devices has experienced an unrecoverable error.  An
        attempt was made to correct the error.  Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
        using 'zpool clear' or replace the device with 'zpool replace'.
   see: http://www.sun.com/msg/ZFS-8000-9P
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        test2       DEGRADED     0     0     0
          raidz1    DEGRADED     0     0     0
            md0     ONLINE       0     0     0
            md1     ONLINE       0     0     0
            md2     ONLINE       0     0     0
            md3     ONLINE       0     0     0
            md4     OFFLINE      0    35     0
        spares
          md5       AVAIL   

errors: No known data errors
mercury:/dsk# 
Запускаем:

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

mercury:/dsk# zpool replace test2 md4 md5
Ну и вот что имеем:

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

mercury:/dsk# zpool status test2
  pool: test2
 state: DEGRADED
status: One or more devices has experienced an unrecoverable error.  An
        attempt was made to correct the error.  Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
        using 'zpool clear' or replace the device with 'zpool replace'.
   see: http://www.sun.com/msg/ZFS-8000-9P
 scrub: resilver completed after 0h0m with 0 errors on Mon Nov 30 20:32:05 2009
config:

        NAME        STATE     READ WRITE CKSUM
        test2       DEGRADED     0     0     0
          raidz1    DEGRADED     0     0     0
            md0     ONLINE       0     0     0  15.5K resilvered
            md1     ONLINE       0     0     0  15.5K resilvered
            md2     ONLINE       0     0     0  14.5K resilvered
            md3     ONLINE       0     0     0  16K resilvered
            spare   DEGRADED     0     0     0
              md4   OFFLINE      0   168     0
              md5   ONLINE       0     0     0  25.5K resilvered
        spares
          md5       INUSE     currently in use

errors: No known data errors
mercury:/dsk# 
Заменяем 4 диск на 6:

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

mercury:/dsk# zpool replace test2 md4 md6
mercury:/dsk# 
Ну и имеем:

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

mercury:/dsk# zpool status test2
  pool: test2
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Mon Nov 30 20:34:03 2009
config:

        NAME        STATE     READ WRITE CKSUM
        test2       ONLINE       0     0     0
          raidz1    ONLINE       0     0     0
            md0     ONLINE       0     0     0  19K resilvered
            md1     ONLINE       0     0     0  17.5K resilvered
            md2     ONLINE       0     0     0  17K resilvered
            md3     ONLINE       0     0     0  18K resilvered
            md6     ONLINE       0     0     0  29K resilvered
        spares
          md5       AVAIL   

errors: No known data errors
mercury:/dsk# 
Диск заменен, всё работает. Но, после того, как диск вылетает, нужно запустить:

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

zpool replace test2 md4 md5
Вроде даже в солярке так же, по крайней мере вот здесь так написанно:
http://blogs.sun.com/eschrock/entry/zfs_hot_spares

Ну вроде как получается не совсем 100% hot-spare. Вот даже открыт PR по этому поводу:
http://www.freebsd.org/cgi/query-pr.cgi ... 1&cat=kern

Вот, такие пороги, с катятами...
:smile:

Re: ZFS + Hotspare

Добавлено: 2009-12-01 12:03:08
Alex_hha
И эта хваленная ZFS, мда уж :)

Re: ZFS + Hotspare

Добавлено: 2009-12-01 12:22:27
Alex_hha
Под фряху официально на GEOM классах реализация 5 рейда есть только в gvinum
а raid6 где то есть?

Re: ZFS + Hotspare

Добавлено: 2009-12-01 14:06:42
angelas_
Alex_hha писал(а):а raid6 где то есть?
По-моему только ZFS.
В версии 18 появился ещё raidz3, это для совсем параноиков и мазохистов. Но, мож кому и прогодится
:smile:

Re: ZFS + Hotspare

Добавлено: 2009-12-01 14:08:03
angelas_
Alex_hha писал(а):И эта хваленная ZFS, мда уж :)
Ну, ничего не поделаешь. Нету идеальных вещей на этом свете. Мож когда и поправят :smile:

Re: ZFS + Hotspare

Добавлено: 2009-12-01 14:09:11
angelas_
Надо будет как нибудь залезть на блог создателей ZFS и спросить. :smile:

Re: ZFS + Hotspare

Добавлено: 2009-12-01 16:06:51
Alex Keda
если я правильно понимаю логику, то несложно написать скрипт, который будет выполнять эти действия и положить его в /usr/local/etc/periodic/daily

Re: ZFS + Hotspare

Добавлено: 2009-12-01 16:11:44
Alex_hha
Надо будет как нибудь залезть на блог создателей ZFS и спросить.
Лис уже спросил, правда на сайте freebsd
если я правильно понимаю логику, то несложно написать скрипт, который будет выполнять эти действия и положить его в /usr/local/etc/periodic/daily
Да это все понятно, просто удивляет, что такая важная фича и не работает. Ведь на то он и hotspare, чтобы подключаться автоматом, когда диск умер, например ночью.

Re: ZFS + Hotspare

Добавлено: 2009-12-01 17:02:55
Alex Keda
ну, видать разрабы занимаются
как доделают - будет.
=======
нету у меня таких конфигураций - иначе мона было бы костыль этот в периодик написать и попросить чтоб закоммитили.

Re: ZFS + Hotspare

Добавлено: 2009-12-01 17:44:21
angelas_
Alex_hha писал(а):Лис уже спросил, правда на сайте freebsd
А можно ткнуть пальцем? Не видел этого вроде.... :unknown:

Re: ZFS + Hotspare

Добавлено: 2009-12-01 17:46:02
angelas_
Аа.. Ступил.. :fool:
Сорри.. Нашёл..
http://docs.freebsd.org/cgi/getmsg.cgi? ... freebsd-fs
:smile:

ZFS + Hotspare

Добавлено: 2016-07-11 9:13:45
dekloper
Alex Keda писал(а): ну, видать разрабы занимаются
как доделают - будет.
100 лет уж прошло, а нихрена похоже не будет - колеса по-прежнему гнутые и телега не едет..
==
но, судя по соляровым докам - оно работает..
ключевой момент - это фма-агент - потому и колеса гнутые во фряхе..
Automatic replacement – When a fault is detected, an FMA agent examines the pool to determine if it has any available hot spares. If so, it replaces the faulted device with an available spare.

ZFS + Hotspare

Добавлено: 2016-07-11 9:35:50
Neus
странное решение с внешней службой.
как будто менеджер пула сам бы не смог это мониторить и реплейсить.

ZFS + Hotspare

Добавлено: 2016-07-11 9:35:50
Neus
странное решение с внешней службой.
как будто менеджер пула сам бы не смог это мониторить и реплейсить.

ZFS + Hotspare

Добавлено: 2016-07-11 9:41:11
dekloper
Neus писал(а): странное решение с внешней службой.
таки придется чето ее заменяющее накарябать..
Alex Keda писал(а): если я правильно понимаю логику, то несложно написать скрипт, который будет выполнять эти действия и положить его в /usr/local/etc/periodic/daily

ZFS + Hotspare

Добавлено: 2016-07-11 10:47:43
Neus
можно smartd заюзать

Отправлено спустя 3 минуты 27 секунд:
мля.. какого хрена сообщения дублируются?