zfs disk replace - elakadtam [SOLVED]

Fórumok

Ma reggel ezt találtam:


NAME STATE READ WRITE CKSUM
data DEGRADED 1.38K 0 0
  raidz1-0 DEGRADED 1.38K 0 0
    ad10 ONLINE 1.38K 0 0
    ad12 ONLINE 0 0 0
    ad14 ONLINE 0 0 0
    ad16 REMOVED 0 0 0 

Gyorsan leszedtem az ad16-on levő vinyót, tettem rá egy másikat. Ezután - szerencsétlen módon - kiadtam a következő parancsot:

zpool add data ad16

Ennek az lett a következménye, hogy az ad16 megjelent a pool-ban, a következő módon:


	NAME        STATE     READ WRITE CKSUM
	data        DEGRADED     0     0     0
	  raidz1-0  DEGRADED     0     0     0
	    ad10    ONLINE       0     0     0
	    ad12    ONLINE       0     0     0
	    ad14    ONLINE       0     0     0
	    ad16    FAULTED      0     0     0  corrupted data
	  ad16      ONLINE       0     0     0

Az ad16 egyrészt egy "nem felhasznált online eszköz", ami nem része egyik volume-nek sem. Másrészt egy FAULTED eszköz ami része a raidz1-0 volume-nek. Azonos a nevük! Sajnos ezek után az ad16 replace nem működik:


gw# zpool replace -f data ad16 ad16
invalid vdev specification
the following errors must be manually repaired:
/dev/ad16 is part of active pool 'data'

Úgy gondolom, hogy a hozzáadott ONLINE ad16-ot el kellene távolítanom a data-ból mielőtt replace-elni tudnám a FAULTED ad16-ot. Viszont ez nem megy, mert se offline-ba nem tudom tenni, se eltávolítani nem tudom:


gw# zpool offline data ad16
gw# zpool status
  pool: data
 state: DEGRADED
status: One or more devices has been taken offline by the administrator.
	Sufficient replicas exist for the pool to continue functioning in a
	degraded state.
action: Online the device using 'zpool online' or replace the device with
	'zpool replace'.
 scan: scrub in progress since Thu Apr 18 03:23:06 2013
    26.1G scanned out of 3.13T at 50.7M/s, 17h52m to go
    0 repaired, 0.81% done
config:

	NAME        STATE     READ WRITE CKSUM
	data        DEGRADED     0     0     0
	  raidz1-0  DEGRADED     0     0     0
	    ad10    ONLINE       0     0     0
	    ad12    ONLINE       0     0     0
	    ad14    ONLINE       0     0     0
	    ad16    OFFLINE      0     0     0
	  ad16      ONLINE       0     0     0

errors: No known data errors
gw# zpool remove data ad16
cannot remove ad16: only inactive hot spares, cache, top-level, or log devices can be removed

Feltételezem az a baj, hogy az "offline ad16" parancs arra az ad16 device-re vonatkozik ami FAULTED. Én a másikat szeretném offline-ba tenni és eltávolítani, de ezt nem tudom megtenni, mert azonos a nevük.

Vagy az is lehet hogy valamit nagyon összekevertem? Szerencsére nem túl gyakran megy tönkre ez a rendszer, nagyon stabil. De amikor tönkremegy akkor mindig ott tartok, hogy egy éve nem használtam ezeket a parancsokat, és nem tudom hogy javítsam meg. :-( Köszönöm!

Hozzászólások

Ha leveszed a jó winyót most ad16ról és megint faulted lesz az a device akkor nem engedi offline-olni? faramuci megoldás tudom de hirtelen ez ugrott be.

Na ez még érdekesebb. Ha leveszem a vinyót és single user módban elindítom, akkor mindkét ad16 device UNAVAIL státuszú lesz, és az egész zpool elérhetetlenné válik. Ami elég fura, hiszen még van 3 eszköz benne amiből bőven képes lenne működni. Az UNAVAIL eszközökkel semmit nem tudok csinálni.

Egyébként az is fura, hogy az "offline ad16" parancs miért azt az eszközt akarja offline-olni, amúgy már egyébként is offline? Vagy ha erre valaki azt mondja, hogy "azért mert az első eszközt keresi meg azzal a névvel", akkor erre jön a válasz hogy jó, de akkor a detach/remove parancsok meg miért nem így működnek?

Azt tanácsolnám hogy az egész data -t távolítsd el, majd kreáld újra a raidz-t.
-
Debian Squeeze

Tényleg nem lehet. Megtaláltam a problémát: a fejemben volt. Azt hittem hogy egy új "normál" eszközt adok hozzá, de nem mert ebből egy vdev lett. Tehát most az adat stripe-olva van a raidz1-0 és az új ad16 lemez között. Mivel az új ad16 használatban van, ezért azt már sehogy nem lehet eltávolítani, mert attól az egész pool használhatatlanná válik. A régi ad16 eltávolítása innentől kezdve nem is igazán probléma, mivel a fő probléma az adatok redundáns tárolásával van, és ezt már ebben a konfigurációban nem lehet elérni. Egy ötödik lemez rádugásával lehetne, de egyrészt nekem nincs ötödik lemezem, másrészt nincs másik SATA port amire rádughatnám. Úgyhogy tényleg nincs más megoldás, az egészet át kell másolni valahová, utána destroy-olni és újra létrehozni. Kár. :-(

Lehet h hulyeseg, de ha esetleg glabellel atnevezned oket, aztan egy zpool export/import -d /dev/label ?
hatha
(szerk)
ja, latom a problemat, targytalan

de a fenti tomb az rohadtul nem striped, hanem egy raidz1 tomb....
ha force modon kihuzod a lemezt, akkor annyi rizikod lesz, hogy addig nem lesz redundancia a tombodben.
amugy ha fizikailag kihuzod a lemezt, akkor a zpool status oda fogja neked irni az uid-ot, utana meg hogy was ad16.
removolod azt az uid-ot, normalisan hozzaadod az uj lemezt, s zpool replace.

egyebkent az uj ad16 az a data pool tagja lett.
szerintem ha kiadod azt a parancsot, hogy zpool replace ad16 akkor a regi ad16-ot ki fogja cserelni az uj ad16-ra, s lescrubulja magat aztan kesz.
a man zpool olvasgatasat is ajanlom rendesen.

ez kulonosen hasznos lehet:
"autoreplace=on | off
Controls automatic device replacement. If set to "off", device
replacement must be initiated by the administrator by using the
"zpool replace" command. If set to "on", any new device, found in the
same physical location as a device that previously belonged to the
pool, is automatically formatted and replaced. The default behavior
is "off". This property can also be referred to by its shortened
column name, "replace".
"

amugy a zpool replace is ugy mukodik, hogy az ugan azon a fizikai helyen levo lemezt csereli ki, kvazi felismeri hogy uj lemezt loktel be a rossz helyett.
lehet, hogy nem is veletlen lett az uj lemez is ad16...

szerintem ha kiadod azt a parancsot, hogy zpool replace ad16 akkor a regi ad16-ot ki fogja cserelni az uj ad16-ra

Nem fogja.

Amúgy annyival pontosítanám a problémaleírást (saját tesztjeim alapján) hogy nem sima add parancs volt kiadva hanem -f kapcsolóval.

root@bsd:/root # zpool status
pool: data
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: none requested
config:

NAME STATE READ WRITE CKSUM
data DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
ada1 ONLINE 0 0 0
ada2 ONLINE 0 0 0
ada3 ONLINE 0 0 0
2030503297804115952 UNAVAIL 0 0 0 was /dev/ada4

errors: No known data errors

így kellett volna:

root@bsd:/root # zpool replace -f data ada4 ada4
root@bsd:/root # zpool status
pool: data
state: ONLINE
scan: resilvered 36K in 0h0m with 0 errors on Sat Apr 20 20:40:03 2013
config:

NAME STATE READ WRITE CKSUM
data ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
ada1 ONLINE 0 0 0
ada2 ONLINE 0 0 0
ada3 ONLINE 0 0 0
ada4 ONLINE 0 0 0

errors: No known data errors

nemhinném hogy ez történt..

root@bsd:/usr/home/rt711 # zpool add data ada4
invalid vdev specification
use '-f' to override the following errors:
mismatched replication level: pool uses raidz and new vdev is disk

szóval a ZFS szól, hogy: big no-no!

root@bsd:/usr/home/rt711 # zpool add -f data ada4
root@bsd:/usr/home/rt711 # zpool status
pool: data
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 36K in 0h0m with 0 errors on Sat Apr 20 20:40:03 2013
config:

NAME STATE READ WRITE CKSUM
data DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
ada1 ONLINE 0 0 0
ada2 ONLINE 0 0 0
ada3 ONLINE 0 0 0
7311589875658636595 UNAVAIL 0 0 0 was /dev/ada4
ada4 ONLINE 0 0 0

errors: No known data errors

így kell hát elrontani.
Mivel data alatt van strippelve raidz1+0 + 1 disk, ezért felejtős a disk eltávolítása.

-
Debian Squeeze

Van valami megoldás a fenti problémára mivel hasonló cipőben járok most én is.
pool ban van pár raidz2. Egyikben a c5t2d0 disk fault -ként van, viszont a poolban van még 1 c5t2d0 disk ami online így se replace se offline semmi. a raidz2 meg DEGRADED

Fedora 20, Thinkpad x220