Autor Thema: OpenSolaris 2008.11 Raidz - Problem beim Platten ersetzen  (Gelesen 5732 mal)

denyonator

  • Gast
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






« Letzte Änderung: 23. März 2009, 15:35:50 von denyonator »

sonnenblen.de - Das unabhängige Sun User Forum


Offline linus83

  • Sobl Bachelor
  • ***
  • Beiträge: 144
Re: OpenSolaris 2008.11 Raidz - Problem beim Platten ersetzen
« Antwort #1 am: 23. März 2009, 18:23:02 »
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ß

Hexxer

  • Gast
Re: OpenSolaris 2008.11 Raidz - Problem beim Platten ersetzen
« Antwort #2 am: 24. März 2009, 07:21:49 »
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

Offline linus83

  • Sobl Bachelor
  • ***
  • Beiträge: 144
Re: OpenSolaris 2008.11 Raidz - Problem beim Platten ersetzen
« Antwort #3 am: 24. März 2009, 07:53:13 »
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.

Hexxer

  • Gast
Re: OpenSolaris 2008.11 Raidz - Problem beim Platten ersetzen
« Antwort #4 am: 24. März 2009, 09:11:00 »
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.

denyonator

  • Gast
Re: OpenSolaris 2008.11 Raidz - Problem beim Platten ersetzen
« Antwort #5 am: 25. März 2009, 09:57:17 »
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

denyonator

  • Gast
Re: OpenSolaris 2008.11 Raidz - Problem beim Platten ersetzen
« Antwort #6 am: 25. März 2009, 14:26:53 »
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! :)

« Letzte Änderung: 25. März 2009, 15:56:56 von denyonator »

Offline linus83

  • Sobl Bachelor
  • ***
  • Beiträge: 144
Re: OpenSolaris 2008.11 Raidz - Problem beim Platten ersetzen
« Antwort #7 am: 26. März 2009, 10:24:44 »
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ß