У меня есть zpool с 4 USB-дисками по 2 ТБ в конфигурации raidz:
[root@chef /mnt/Chef]# zpool status farcryz1
pool: farcryz1
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
farcryz1 ONLINE 0 0 0
raidz1 ONLINE 0 0 0
da1 ONLINE 0 0 0
da2 ONLINE 0 0 0
da3 ONLINE 0 0 0
da4 ONLINE 0 0 0
Чтобы протестировать пул, я смоделировал сбой диска, вытащив USB-кабель от одного из дисководов, не отключая его:
[root@chef /mnt/Chef]# zpool status farcryz1
pool: farcryz1
state: ONLINE
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
farcryz1 ONLINE 0 0 0
raidz1 ONLINE 0 0 0
da4 ONLINE 22 4 0
da3 ONLINE 0 0 0
da1 ONLINE 0 0 0
da2 ONLINE 0 0 0
errors: No known data errors
Данные все еще есть, пул все еще в сети. Большой! Теперь попробуем восстановить пул. Я снова подключил диск и выдал zpool replace
команда, как мне было сказано выше:
[root@chef /mnt/Chef]# zpool replace farcryz1 da4
invalid vdev specification
use '-f' to override the following errors:
/dev/da4 is part of active pool 'farcryz1'
Гм .... Это бесполезно ... Я попробовал zpool clear farcryz1
, но это совершенно не помогло. Я все еще не мог заменить da4
. Итак, я попробовал комбинацию online
ing, offline
ing, clear
ing, replace
ing, и scrub
ing. Теперь я застрял здесь:
[root@chef /mnt/Chef]# zpool status -v farcryz1
pool: farcryz1
state: DEGRADED
status: One or more devices could not be used because the label is missing or
invalid. Sufficient replicas exist for the pool to continue
functioning in a degraded state.
action: Replace the device using 'zpool replace'.
see: http://www.sun.com/msg/ZFS-8000-4J
scrub: scrub completed after 0h2m with 0 errors on Fri Sep 9 13:43:34 2011
config:
NAME STATE READ WRITE CKSUM
farcryz1 DEGRADED 0 0 0
raidz1 DEGRADED 0 0 0
da4 UNAVAIL 9 0 0 experienced I/O failures
da3 ONLINE 0 0 0
da1 ONLINE 0 0 0
da2 ONLINE 0 0 0
errors: No known data errors
[root@chef /mnt/Chef]# zpool replace farcryz1 da4
cannot replace da4 with da4: da4 is busy
Как я могу выйти из этой ситуации, когда одно устройство в моем zpool было неожиданно отключено (но не неисправное) и теперь снова вернулось, готовое к повторному восстановлению?
РЕДАКТИРОВАТЬ: По запросу tail
из dmesg
:
(ses3:umass-sim4:4:0:1): removing device entry
(da4:umass-sim4:4:0:0): removing device entry
ugen3.2: <Western Digital> at usbus3
umass4: <Western Digital My Book 1140, class 0/0, rev 3.00/10.03, addr 1> on usbus3
da4 at umass-sim4 bus 4 scbus6 target 0 lun 0
da4: <WD My Book 1140 1003> Fixed Direct Access SCSI-6 device
da4: 400.000MB/s transfers
da4: 1907697MB (3906963456 512 byte sectors: 255H 63S/T 243197C)
ses3 at umass-sim4 bus 4 scbus6 target 0 lun 1
ses3: <WD SES Device 1003> Fixed Enclosure Services SCSI-6 device
ses3: 400.000MB/s transfers
ses3: SCSI-3 SES Device
GEOM: da4: partition 1 does not start on a track boundary.
GEOM: da4: partition 1 does not end on a track boundary.
GEOM: da4: partition 1 does not start on a track boundary.
GEOM: da4: partition 1 does not end on a track boundary.
ugen3.2: <Western Digital> at usbus3 (disconnected)
umass4: at uhub3, port 1, addr 1 (disconnected)
(da4:umass-sim4:4:0:0): lost device
(da4:umass-sim4:4:0:0): removing device entry
(ses3:umass-sim4:4:0:1): lost device
(ses3:umass-sim4:4:0:1): removing device entry
ugen3.2: <Western Digital> at usbus3
umass4: <Western Digital My Book 1140, class 0/0, rev 3.00/10.03, addr 1> on usbus3
da4 at umass-sim4 bus 4 scbus6 target 0 lun 0
da4: <WD My Book 1140 1003> Fixed Direct Access SCSI-6 device
da4: 400.000MB/s transfers
da4: 1907697MB (3906963456 512 byte sectors: 255H 63S/T 243197C)
ses3 at umass-sim4 bus 4 scbus6 target 0 lun 1
ses3: <WD SES Device 1003> Fixed Enclosure Services SCSI-6 device
ses3: 400.000MB/s transfers
ses3: SCSI-3 SES Device
Определите, нужно ли заменить устройство, и удалите ошибки с помощью zpool clear или замените устройство с помощью zpool replace.
Похоже, что после первоначального временного сбоя вам, возможно, нужно было только сделать zpool clear
чтобы очистить ошибки.
Если вы хотите сделать вид, что это замена диска, вам, вероятно, нужно сначала удалить данные с диска, прежде чем пытаться повторно добавить его в пул.
Если zpool clear
не исправляет, вы можете заставить zfs забыть диск, используя zpool labelclear <partition>
(доступно в http://zfsonlinux.org поскольку zfs-v0.6.2).
Имейте в виду, что даже если вы создали zpool с использованием всего устройства, например /dev/sda
вы должны указать раздел, созданный zfs, например /dev/sda1
.
(Кредиты принадлежат DeHackEd, https://github.com/zfsonlinux/zfs/issues/2076)
zpool labelclear [-f] device
Removes ZFS label information from the specified device. The device
must not be part of an active pool configuration.
-f Treat exported or foreign devices as inactive.
Каковы были результаты различных команд, которые вы пробовали? Вы пробовали -f
включить любой из них?
Вы бежали zpool clear poolname device-name
?
В твоем случае, zpool clear farcryz1 da4
- Это должно было запустить процесс переноса.