sonnenblen.de - Das unabhängige Sun User Forum
Betriebssysteme => Solaris/x86 und OpenSolaris => Thema gestartet von: denyonator am 23. März 2009, 15:34:18
-
Hallo,
folgendes Szenario:
Solaris 2008.11 als Nas
4 x HDD
- 1 x 80 GB Rootplatte (worauf Solaris auch installiert ist)
- 3 x 320 GB Datenplatten (Im Raidz bzw. Raid 5 Verbund)
Bin totaler Solaris Einsteiger und gerade noch am testen der Funktionen sag ich mal.
Ich wollte einen Ausfall einer HDD aus dem Datenpool simulieren. Gesagt - getan.
Reboot, Platte ausgeschaltet, hochgefahren und siehe da, Solaris erkennt dies und stuft den Array auf Degraded.
(Screen1)
http://img513.imageshack.us/my.php?image=degraded.jpg
Soweit so gut, noch ein reboot, Ersatz-HDD eingehangen und wieder hochgefahren...
"zpool status" und dann schon das blanke Entsetzen...
Unavail ... insufficient replicas ... corrupted data ...
(Screen2)
http://img264.imageshack.us/my.php?image=fehlert.jpg
Nun denn, wollte trotzdem versuchen die HDD zu ersetzen..
laut http://docs.sun.com/app/docs/doc/820-2313/gazgd?a=view reicht ja ein
zpool replace videopool c5d1
allerdings kam dabei folgendes raus:
cannot open 'videopool': pool is unavailable
Hab schon einiges durchforstet, aber warum mir dieses Vorhaben nicht möglich ist, ist mir ein Rätsel.
Wenn ich die alte Platte wieder reintue, reboote usw. wird mir alles wie beim ersten Screenshot angezigt,
also alles in Butter keine Fehler etc.
Nur wie kann ich denn nun eine Platte ersetzen ohne wilde Fehlermeldungen zu bekommen?!
Ein ratloser Solaris Einsteiger bittet um Hilfe. :)
Mfg
-
Hallo ich habe versucht es nachzuvollziehen
root@trantor ~ $ zpool create test raidz /tmp/platte1 /tmp/platte2 /tmp/platte3 // Pool erzeugen
einige Dateien in den Pool kopieren
root@trantor ~ $ rm /tmp/platte3 // Ausfall einer Platte simulieren
root@trantor ~ $ zpool status
pool: rpool
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
c3d0s0 ONLINE 0 0 0
errors: No known data errors
pool: test
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://www.sun.com/msg/ZFS-8000-2Q
scrub: scrub completed after 0h0m with 0 errors on Mon Mar 23 18:12:08 2009
config:
NAME STATE READ WRITE CKSUM
test DEGRADED 0 0 0
raidz1 DEGRADED 0 0 0
/tmp/platte1 ONLINE 0 0 0
/tmp/platte2 ONLINE 0 0 0
/tmp/platte3 UNAVAIL 0 110 0 cannot open // zfs bemerkt die fehlende Platte
errors: No known data errors
root@trantor ~ $ mkfile 100m /tmp/platte3 // neue Platte einhängen
root@trantor ~ $ zpool scrub test // nachsehen was zfs mit der Platte macht
root@trantor ~ $ zpool status
pool: rpool
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
c3d0s0 ONLINE 0 0 0
errors: No known data errors
pool: test
state: ONLINE
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 0h0m with 0 errors on Mon Mar 23 18:06:14 2009
config:
NAME STATE READ WRITE CKSUM
test ONLINE 0 0 0
raidz1 ONLINE 0 0 0
/tmp/platte1 ONLINE 0 0 0
/tmp/platte2 ONLINE 0 0 0
/tmp/platte3 UNAVAIL 0 586 0 corrupted data // Fehler von Platte 3
errors: No known data errors
root@trantor ~ $ zpool replace /tmp/platte3 /tmp/platte3 // Platte3 mit sich selber erstetzen
cannot open '/tmp/platte3': invalid character '/' in pool name
root@trantor ~ $ zpool replace test /tmp/platte3 /tmp/platte3
root@trantor ~ $ zpool status
pool: rpool
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
c3d0s0 ONLINE 0 0 0
errors: No known data errors
pool: test
state: ONLINE
scrub: resilver completed after 0h0m with 0 errors on Mon Mar 23 18:07:06 2009
config:
NAME STATE READ WRITE CKSUM
test ONLINE 0 0 0
raidz1 ONLINE 0 0 0
/tmp/platte1 ONLINE 0 0 0
/tmp/platte2 ONLINE 0 0 0
/tmp/platte3 ONLINE 0 0 0 424K resilvered // alles wieder heile, oder zfs macht es ganz
errors: No known data errors
root@trantor ~ $
Ich habe alle online gemacht und so sollte es auch gehen wenn man neu bootet. Ich bin nur zu faul meinen Rechner zu booten und das ganze mit usb-Sticks zu machen :P
Es könnte sein, das irgendwelche Checksummen/Zeitstempel auf der Platte nicht stimmen, die Du heraus genommen hast. Du steckst ja keine neue Platte rein, sondern den Pool zu einen anderen Zeitpunkt. Für zfs ist es dann sicher unentscheidbar welche
metadaten stimmen, die auf Deine "neuen" Platte oder die Metadaten auf den anderen Platten. Für zfs ist das die selbe Platte. Du musst die Platte einfach partionieren/formatieren/mit dd beschreiben damit Du eine "neue" Platte hast, die keine Metadaten über den zpool enthält.
Gruß
-
Hi,
ich kann leider von hier aus nichts prüfen. Habe allerdings die Erfahrung gemacht das ZFS in seltenen Fällen echt mies auf Changes am Pool reagiert. Das ging bis dahin das man alles platt machen musste - obwohl eigentlich nichts besonders passierte.
Ich lege Dir mal das wiki ans Herz, vielleicht findest Du dort das richtige:
http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide
-
Hi,
ich habe noch einmal versucht alles so zu machen, wie ich dachte, dass ich den Fehler provozieren kann. ABer ich habe es nicht geschafft. Ich habe Build 109 un mein Pool ist in der Verion 14.
root@trantor ~ $ mkfile 100m /tmp/platte{1,2,3}
root@trantor ~ $ zpool create test raidz /tmp/platte{1,2,3}
root@trantor ~ $ cp -r DTraceScripts /test
root@trantor ~ $ zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
rpool 62G 30,4G 31,6G 48% ONLINE -
test 286M 8,21M 278M 2% ONLINE -
root@trantor ~ $ zpool status test
pool: test
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
test ONLINE 0 0 0
raidz1 ONLINE 0 0 0
/tmp/platte1 ONLINE 0 0 0
/tmp/platte2 ONLINE 0 0 0
/tmp/platte3 ONLINE 0 0 0
errors: No known data errors
root@trantor ~ $ mv /tmp/platte1{,.org}
root@trantor ~ $ zpool scrub test
root@trantor ~ $ cp DTraceScripts.zip /test
root@trantor ~ $ zpool status test
pool: test
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://www.sun.com/msg/ZFS-8000-2Q
scrub: scrub completed after 0h0m with 0 errors on Tue Mar 24 07:35:49 2009
config:
NAME STATE READ WRITE CKSUM
test DEGRADED 0 0 0
raidz1 DEGRADED 0 0 0
/tmp/platte1 UNAVAIL 0 173 0 cannot open
/tmp/platte2 ONLINE 0 0 0
/tmp/platte3 ONLINE 0 0 0
errors: No known data errors
root@trantor ~ $ mv /tmp/platte1{.org,}
root@trantor ~ $ zpool scrub test
root@trantor ~ $ zpool status test
pool: test
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: resilver completed after 0h0m with 0 errors on Tue Mar 24 07:37:39 2009
config:
NAME STATE READ WRITE CKSUM
test ONLINE 0 0 0
raidz1 ONLINE 0 0 0
/tmp/platte1 ONLINE 0 268 0 755K resilvered
/tmp/platte2 ONLINE 0 0 0
/tmp/platte3 ONLINE 0 0 0
errors: No known data errors
Die Erfahrung von Hexxer habe ich noch nicht gemacht. Bei mir lief immer alles glatt, auch auf echten Platten. Ich bin echt etwas ratlos. Es wär schön, wenn Du es hinbekommst, dass Du schreibst mit welcher Methode es geklappt hat. Das würde mich schon interessieren.
-
Hi,
ich kann das auch nicht "nachstellen" um einen Bug oder so zu finden. Hab nur ne V880 die ich zweimal bei Tests wasmit dem Rootpool so passiert komplett geschrottet habe obwohl nichts anderes gemacht wurde als sonst. Sprich ein bishcne installieren, rootpool, Platte ziehen, Platte stecken. Was weiß ich, von 10x ging das zweimal komplett daneben und war nicht mehr behebbar, da es nur Tests waren wurde kein Case aufgemacht. Es hat ja meistens auf funktioniert. Weiß auch nicht.
-
Hallo,
Danke schonma für das Feedback.
Werde mir die Sache heute nochmal genauer anschauen un werde hier im Forum bescheid geben wie es gelaufen ist.
Ich werde später evtl. auf einem 2ten System das ganze nochmal probieren...
kann ja nicht angehen das es nicht funzt :(
lg
-
Neue Erkenntnisse!
Hab zwar jetz noch ein frisch installiertes Solaris, aber es kam garnicht soweit, dass ich das ganze dort testen musste.
Jedenfalls geht es nun so wie geplant (jedenfalls fast).
Der wichtige Schritt war, wie linus83 sagte, die Festplatte nochmal zu formatieren bzw. partitionieren.
Also... format ... fdisk... alte Partition löschen, Änderungen übernehmen, nochmal format und fdisk, dann frug er was mit der Festplatte ist 1. Default oder 2. other.
Habe mich glaube (einziger punkt wo nicht ganz sicher) für other entschieden da default glaub ich nur Systemplatten sind.
Kann aber auch irren. Edit: Hab mich geirrt, war default, weil bei other muss man ja die Cylinder etc. angeben!
Danach, ein weiteres "zpool status" und mir fiel ein Stein vom Herzen, es hat funktioniert.
Das Array war nun wieder degraded und eine Platte UNAVAIL.
-> # zpool replace videopool c5d1
und schon war das "Resilvering" angeschmissen :))
kleiner Auszug nach knapp einer Stunde:
pool: videopool
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.
scrub: resilver in progress for 1h13m, 54,22% done, 1h2m to go
config:
NAME STATE READ WRITE CKSUM
videopool DEGRADED 0 0 0
raidz1 DEGRADED 0 0 0
c4d1 ONLINE 0 0 0 64,7M resilvered
c5d0 ONLINE 0 0 0 64,8M resilvered
replacing DEGRADED 0 0 0
c5d1s0/o FAULTED 0 22,2K 0 corrupted data
c5d1 ONLINE 0 0 0 153G resilvered
errors: No known data errors
Jedenfalls war das formatieren der Platte wohl der Grund. Nochmal Big THX an linus83 und Hexxer natürlich auch :D
PS: "scrub: resilver completed after 2h13m with 0 errors on Wed Feb 25 13:50:01 2009" =)
Das einzige Problem: kein Zugriff auf die Daten beim Resilvering. Warum auch immer, dachte wäre dennnoch möglich.
Aber wahrscheinlich lags einfach an einem Reboot, den ich nach dem formatieren NICHT gemacht habe.
Mfg
PSS: Kennt jemand eine Möglichkeit sozusagen ein Image von der Solarisplatte zu ziehen? Hab mir Zfs Snapshots schonmal halbherzig angeschaut, aber beim ersten überfliegen meine ich schon erfahren zu haben, dass Images ziehen a la Norton Ghost oder Acronis True Image nicht möglich sind.
Also Plan ist sozusagen ein "Desaster-Recovery" zu erstellen. Bedeutet, Systemplatte ist ausgestiegen, Daten noch da.
Kein Booten möglich da Systemplatte zerschossen. Jetz wäre meine Plan eine Recovery DVD einzulegen das Image vom funktionierend eingerichtetem Solaris (smb usw. lauffähig) auf eine neue Festplatte zu spielen und nur noch den alten Datenpool migrieren und fertig. So, oder ähnlich möglich? Meinetwegen einen Zfs-Snapshot auf DVD Brennen und davon sozusagen recovern oder ähnlich.. ?! Jemand Erfahrungen? Bin wieder für jeden Tipp Dankbar! :)
-
Hallo,
Du kannst ganz einen snapshot von der akltuellen Bootumgebung machen. Den musst Du Dir dann auf einen externen Datenträger speichern oder auf den anderen Platten.
Wenn Deine rpool-Platte kaputt ist, dann installierst Du opensolaris neu und in die Installation schiebst Du in eine neue Bootumgebung den snapshot der alten hinein. Das sollte für Anfänger einfacher sein, als die Installation anderweitig wiederzubeleben.
Wenn man sagt, das man nur 80GB-Platten verwendet, kann man auch ein Image der der Platte mit dd machen. Das kann man dann einfach auf die neue Platte wieder dreuf schreiben.
Bei den oberen Vorgehen ist es egal wie groß die neue Platte ist - nur der snapshot muss rein passen. Das sollte eigenlich alles so funktionieren. Wenn Du Fragen hast oder Hexxer anmerkungen, dann tut Euch keinen Zwang an *g*
gruß