FreeNAS 9.3: Platte wechseln

Status
Not open for further replies.

Marc S

Dabbler
Joined
Dec 22, 2014
Messages
23
Gegeben: N54L, 4*2TB in den 4 HDD Trays plus 2*3TB (ODD, eSATA), FreeNAS 9.3, raidz2 über alle 6 Disks, derzeit also 7.x TB netto.

Plan: der Reihe nach jeweils eine 2TB raus und dafür eine 3TB reinstecken, resilvern. Nachdem alle 4 kleinen 2TB Platten durch 3TB ersetzt worden sind, sollte der zpool automatisch von 7.x auf 11.x TB netto wachsen.

Laut Doku (*) soll man beim Ersetzen intakter Disks genauso vorgehen wie beim Ausfall einer Disk, nämlich erst die Disk abmelden, wechseln, dann die neue Disk eintragen woraufhin das Resilvern automatisch starten soll.

8.1.10. Replacing a Failed Drive
Before physically removing the failed device, go to Storage > Volumes > View Volumes > Volume Status and locate the failed disk.

(Entfällt weil ja gar nicht kaputt)

If the disk is formatted with ZFS, click the disk's entry then its "Offline" button in order to change that disk's status to OFFLINE.

(Und genau hier ist mein Problem - es gibt keinen "Offline"-Button)

This step is needed to properly remove the device from the ZFS pool and to prevent swap issues.

(Swap sind 2GB je Disk reserviert, aber komplett unused lt. Reporting > Swap utilization - die Kiste hat 8GB ECC RAM, das reicht anscheinend)

If your hardware supports hot-pluggable disks, click the disk's "Offline" button, pull the disk, then skip to step 3. If there is no "Offline" button but only a "Replace" button, then the disk is already offlined and you can safely skip this step.


Ich sehe weder "Replace" noch "Offline" Button - kann ich einfach runterfahren, eine 2TB Disk entnehmen und eine 3TB Disk reinstecken?

(*) 8. Storage - Replacing Drives to Grow a ZFS Pool

- - - Updated - - -

Ich habe ewig gesucht, aber im GUI nirgends eine Möglichkeit gefunden, den Pool mitsamt der fehlenden Disk aufzulisten. Unter Storage > View Disks wurden nur die physikalisch vorhandenen Disks aufgelistet, ohne irgendwelche Verbindungen zu vdev oder zpool. Unter Storage > View Volumes wurden nur die logisch existierenden zpools und die darin angelegten shares aufgelistet, ohne jegliche Verbindung zu Hardware (Disks).

Ich vermisse einen kompletten Menüpunkt, nämlich sowas wie "vdevs". Und im Pool die Möglichkeit, vdevs hinzuzufügen. Geht alles nicht im GUI...


Letztlich habe ich mit einer Shell erst die rausgenommene Disk von "unavailable" auf "offline" gesetzt, dann mit
# zpool replace zpool6 /dev/gptid/devUUID /dev/ada3
den Pool angewiesen, das was da gerade in Tray3 steckt (die neue 3TB) als Replacement für die offline gesetzte devUUID zu nehmen und das Resilvern zu starten.

Code:
# zpool status zpool6                  
  pool: zpool6                                
 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.            
  scan: resilver in progress since Tue Jan  6 01:53:04 2015
        298G scanned out of 4.08T at 407M/s, 2h42m to go
        49.6G resilvered, 7.13% done



Also reine Mausschubser wären da aufgeschmissen...

- - - Updated - - -

Und jetzt sieht es so aus:

Code:
# zpool status zpool6                  
  pool: zpool6                                  
 state: ONLINE                                        
  scan: resilvered 696G in 2h55m with 0 errors on Tue Jan 6 04:48:26 2015
config:                                                      
        NAME                                  STATE
        zpool6                                ONLINE
          raidz2-0                            ONLINE
            gptid/71357b2a-9448-...           ONLINE
            gptid/77095e6c-9448-...           ONLINE
            gptid/77e2a22e-9448-...           ONLINE
            gptid/789b5a2a-9448-...           ONLINE
            gptid/7953d67d-9448-...           ONLINE
            ada3                              ONLINE
errors: No known data errors



Mist. Die Ersteinrichtung wurde ja per GUI gemacht, da hat FreeNAS die Device-UUID eingetragen. Ich dachte dass er die beim Ersetzen automatisch nimmt, wenn ich die Hardwareslot-ID von Tray 3 eintrage - das war wohl nix. Wie ändere ich jetzt ada3 in eine UUID?
 

Ericloewe

Server Wrangler
Moderator
Joined
Feb 15, 2014
Messages
20,194
ALLES muss mit der GUI durchgeführt werden.

Die Anleitungen, die im Manual sind, müssen ganz exakt gefolgt werden - es gibt nähmlich zwei sehr ähnliche Menus. Einer davon ist relativ versteckt. Nicht ideal, leider ist es so.

Was sagt jetzt die GUI?
 

Marc S

Dabbler
Joined
Dec 22, 2014
Messages
23
OK, hab's gefunden. Das war wirklich versteckt...
Habe die "ada3"-Platte auf Offline gesetzt, dann Replaced. Jetzt läuft Resilver nochmal, und in der Shell sehe ich dass die Disk jetzt wirklich mit UUID eingebunden ist:

Code:
pool: zpool6
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.
scan: resilver in progress since Tue Jan 6 13:05:33 2015
27.7G scanned out of 4.08T at 354M/s, 3h20m to go
4.60G resilvered, 0.66% done
config:

NAME STATE READ WRITE CKSUM
zpool6 DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
gptid/71357b2a-9448...    ONLINE 0 0 0
gptid/77095e6c-9448...    ONLINE 0 0 0
gptid/77e2a22e-9448...    ONLINE 0 0 0
gptid/789b5a2a-9448...    ONLINE 0 0 0
gptid/7953d67d-9448...    ONLINE 0 0 0
replacing-5 OFFLINE 0 0 0
533653888937334089 OFFLINE 0 0 0 was /dev/ada3
gptid/50299b1d-959c... ONLINE 0 0 0 (resilvering)

errors: No known data errors


Die UUID aller vorheriger Platten endete immer auf 9448... - bei der neuen Platte ist es jetzt 959c... - wahrscheinlich ein TimeCode, oder?

Danke für den Anstupser.
 

Ericloewe

Server Wrangler
Moderator
Joined
Feb 15, 2014
Messages
20,194
Die UUID aller vorheriger Platten endete immer auf 9448... - bei der neuen Platte ist es jetzt 959c... - wahrscheinlich ein TimeCode, oder?

Wahrscheinlich.
 

Marc S

Dabbler
Joined
Dec 22, 2014
Messages
23
Die UUID gehört natürlich zur Daten-Partition (99.9% der Disk) - davor legt FreeNAS ja eine Swap-Partition mit 2GB (0.1% von 2TB) an - und nicht zur "rohen" Platte.

Und wieder was neues über FreeNAS gelernt... sigh... Das ist mir beim letzten Mal nicht aufgefallen, weil ich die Kiste ausgeschaltet hatte, dann die Disk gewechselt, dann wieder hochgefahren. Da hat er dann angezeigt, dass ada3 (die ganz rechte im 4-Tray-Käfig) neu ist (Käfig=0..3, eSATA=4, ODD=5) und "someDiskID" unavailable (die Platte in Tray 3 hatte ich ja nicht abgemeldet vor dem Ausschalten, also quasi einen Ausfall simuliert). Alles fein, die 5 noch im Pool verbliebenen Disks waren alle noch da wo sie vorher waren, ada3 war neu.

Diesesmal habe ich ada2p2 abgemeldet vor dem Ausschalten (offline), ausgeschaltet, dann Disk 2 (die dritte von links im Käfig) ausgebaut, und die neue 3TB-Platte noch nicht in Tray 2 eingesteckt, sondern den N54L mit nur 5 Disks wieder eingeschaltet.

Was würde ein Mac-User jetzt wohl erwarten?
Degraded - rechts oben blinkt es rot, logischerweise.
Also ich hatte mir vorgestellt, dass mir jetzt angezeigt wird, dass in /dev/ada2 keine Disk steckt. Oder zumindest, dass die einfach nur fehlt in der Aufzählung, und folgende Disks (/dev/ada3, /dev/ada4, /dev/ada5) alle ihren Namen bzw. die aufsteigende Numerierung basierend auf dem SATA-Port behalten. Nein, FreeNAS numeriert die einfach um, so dass keine Lücke entsteht. D.h. was vorher /dev/ada3 war (die ganz rechte im 4er-Käfig) ist jetzt /dev/ada2 wenn Tray 2 (dritter von links) leer ist.
Und die eSATA-Disk ist nicht mehr /dev/ada4, sondern /dev/ada3. Erkennt man gut weil die ja 'nen Haufen uncorrectable Sectors (*) hat und das nach dem Booten am VGA-Monitor des N54L angezeigt wird (im GUI sieht man nix davon).
Im GUI unter "Storage > View Disks" sieht man hingegen gar nicht, dass eine Platte fehlt. Es sind halt nur noch 5 statt 6, aufsteigend von ada0..ada4.

So ein Mist.

Wenn im laufenden Betrieb eine Platte ausfällt, wird hoffentlich nicht sofort renumeriert werden, sondern nur beim Booten. D.h. man sieht dann wenigstens anhand der verbleibenden Nummern welche Disk man ersetzen muss.
Aber wie soll man denn z.B. nach einem Stromausfall erkennen, welche Platte ausgefallen ist wenn die sich gar nicht mehr am SATA-Controller meldet, somit beim Booten renumeriert wird und dann laut GUI die letzte Platte (bei mir mit 6 Disks folglich "ada5") fehlt?
Man muss sich also manuell aufschreiben, welche Platten-Seriennummer (die wird in Storage > Volumes > View Disks angezeigt) zu welchem SATA-Port gehört bzw. gehören sollte. Und dann eben schauen, welche Seriennummer fehlt, damit man weiß aus welchem Tray man die Platte rausziehen kann.
So ein Schwachfug. Wieso kann mir der Computer (also das FreeNAS-GUI) nicht anzeigen in welchem Hardware-Tray eine Platte fehlt / ausgefallen ist? Stattdessen soll ich das selber rausfinden?

Die Bezeichnungen ada0..ada5 sind also nicht eindeutig festgelegt, sondern werden bei jedem Booten neu vergeben. Sind somit komplett sinnbefreit, weil man sich nicht darauf verlassen kann.


(*) Die Anzahl der uncorrectable Sectors der eSATA-Disk ist von 120 auf 96 gesunken. Ich hatte einen "Long SMART Self-Test" eingetragen, auszuführen jeden Abend 21 Uhr, für Disk "ada4" (bei Vollbestückung die eSATA-Disk). Und ada2 (dritte von links im Käfig) rausgezogen hatte ich erst um Mitternacht, der Test ist also gestern abend auf der eSATA-Disk durchgelaufen - wahrscheinlich hat die Platte dabei ein paar Sektoren wiederbelebt.
Nun ist aber heute die eSATA-Disk nicht mehr ada4, sondern ada3 - womit der SMART-Test heute abend die falsche Disk testen wird, nämlich die im ODD die gestern noch ada5 war.
Die Renumerierung macht also wirklich keinen Sinn.

Oder liegt das am HP N54L BIOS, und FreeNAS kann gar nix dafür?
 

Ericloewe

Server Wrangler
Moderator
Joined
Feb 15, 2014
Messages
20,194
Wieso kann mir der Computer (also das FreeNAS-GUI) nicht anzeigen in welchem Hardware-Tray eine Platte fehlt / ausgefallen ist? Stattdessen soll ich das selber rausfinden?

Wie soll er das wissen, ohne sehr spezifische Hardware? Für solche Features muss man eben für einen kompletten Server bezahlen, wo alles dann garantiert funktioniert.

Die billige Lösung ist ein Dokument zu erstellen, wo die Positionen der Platten und ihre Seriennummern beschrieben sind. Kein Betriebssystem garantiert, dass "ada3" immer "ada3" sein wird.

Die Bezeichnungen ada0..ada5 sind also nicht eindeutig festgelegt, sondern werden bei jedem Booten neu vergeben. Sind somit komplett sinnbefreit, weil man sich nicht darauf verlassen kann.

Wenn sich nichts ändert, dann ändern sich diese Namen auch nicht. Natürlich sind sie eine Abstraktion, die, wenn nötig, eben dereferenziert werden muss.

(*) Die Anzahl der uncorrectable Sectors der eSATA-Disk ist von 120 auf 96 gesunken. Ich hatte einen "Long SMART Self-Test" eingetragen, auszuführen jeden Abend 21 Uhr, für Disk "ada4" (bei Vollbestückung die eSATA-Disk). Und ada2 (dritte von links im Käfig) rausgezogen hatte ich erst um Mitternacht, der Test ist also gestern abend auf der eSATA-Disk durchgelaufen - wahrscheinlich hat die Platte dabei ein paar Sektoren wiederbelebt.
Nun ist aber heute die eSATA-Disk nicht mehr ada4, sondern ada3 - womit der SMART-Test heute abend die falsche Disk testen wird, nämlich die im ODD die gestern noch ada5 war.
Die Renumerierung macht also wirklich keinen Sinn.

Oder liegt das am HP N54L BIOS, und FreeNAS kann gar nix dafür?

SMART Tests müssen sowieso auf allen Platten laufen (wenn sie Sinn machen sollen). Es macht viel mehr Sinn, alle auf einmal zu testen. Ehrlich gesagt, müsste ich nachschauen, welche Platte in diesen Fall getestet wird.

Die Platten werden einfach so nummeriert, wie sie vorkommen:

"AHCI Kontroller, hier ist FreeNAS. Was befindet sich in Port 0?"
"SATA Festplatte mit folgende Seriennummer: XXXXXXX"
"ada0 is jetzt die Platte mit Seriennummer XXXXXXX."

"AHCI Kontroller, hier ist FreeNAS. Was befindet sich in Port 1?"
"SATA Festplatte mit folgende Seriennummer: YYYYYYYYY"
"ada1 is jetzt die Platte mit Seriennummer YYYYYYYYY."

Wie genau dies geschieht hängt vom Betriebsssystem und von der Hardware ab.
 

Marc S

Dabbler
Joined
Dec 22, 2014
Messages
23
MarcS said:
Wieso kann mir der Computer (also das FreeNAS-GUI) nicht anzeigen in welchem Hardware-Tray eine Platte fehlt / ausgefallen ist?
Wie soll er das wissen, ohne sehr spezifische Hardware? Für solche Features muss man eben für einen kompletten Server bezahlen, wo alles dann garantiert funktioniert.
Ich *habe* einen Server gekauft, eben den HP MicroServer N54L.

Eben nochmal ausgeschaltet und beim Booten genau hingeschaut - der sagt im BIOS eindeutig dass Platten in SATA 0,1 und 3,4,5 vorhanden sind, nicht jedoch in SATA 2. Genauso wie es sein soll.
Es scheint doch so, dass FreeNAS selber und nicht das BIOS die existierenden Platten durchnumeriert.

Die billige Lösung ist ein Dokument zu erstellen, wo die Positionen der Platten und ihre Seriennummern beschrieben sind. Kein Betriebssystem garantiert, dass "ada3" immer "ada3" sein wird.
Klar ist das billig. Die Frage ist, ob es nicht besser ginge. Wenn das BIOS die Platten als SATA 0..5 erkennen kann, warum kann dann FreeNAS diese Hardware-SATA-Ports nicht fest auf ada0..ada5 mappen? Wenn ich 'ne USB-Platte anschließe wird die ja auch als "DA_n" angezeigt und nicht als "ada_n". Es wird also bereits nach Hardware-Schnittstelle unterschieden - wozu dann aufnumerieren, wenn doch eh keine weiteren SATA-Ports dazukommen können?


Wenn sich nichts ändert, dann ändern sich diese Namen auch nicht.
Und ausgerechnet im Fehlerfall - wenn eine Disk ausfällt - ist alles anders als vorher. Genau dann wenn die Panik groß ist, stiftet das OS zusätzliche Verwirrung. Es gibt einen Grund dafür dass Linux (oder BSD) auf dem Desktop nie was werden wird. Als Mac-User ist einem völlig unverständlich, warum man das so machen kann. Disknamen müssen unveränderlich bleiben, und vor allem darf nicht (nach einem Ausfall) die existierenden Namen anders auf die existierenden Disks verteilt werden.

Natürlich sind sie eine Abstraktion, die, wenn nötig, eben dereferenziert werden muss.
Im Kopf, nach Konsultation eines rechtzeitig vorher erstellten Dokumentes oder eines PostIt-Zettels. Wozu hat man eigentlich einen Computer - sollte der einem nicht solche Arbeit abnehmen?
Es mag aus OS-Sicht sinnvoll sein die Disks beim Booten durchzunumerieren und jeweils die "Namen" neu zu vergeben, aus User-Sicht ist es kontraproduktiv. Es wäre besser die komplette Spalte "Name" ganz wegzulassen, statt dessen vor den Spalten (also in Spalte 0) ohne Spaltenüberschrift einfach nur durchzunumerieren (1..6 statt ada0..ada5).


SMART Tests müssen sowieso auf allen Platten laufen (wenn sie Sinn machen sollen).
Der kurze Test läuft eh per default (ohne dass der User was einrichtet) auf allen Platten. Ich habe explizit einen weiteren langen Test eingerichtet der täglich läuft, weil die eine Platte angeschlagen ist.
Und einrichten kann man solche Tests nur auf den "Namen", der bei jedem Booten neu ausgewürfelt wird. Genial...

Die Platten werden einfach so nummeriert, wie sie vorkommen:

"AHCI Kontroller, hier ist FreeNAS. Was befindet sich in Port 0?"
"SATA Festplatte mit folgende Seriennummer: XXXXXXX"
"ada0 is jetzt die Platte mit Seriennummer XXXXXXX."

"AHCI Kontroller, hier ist FreeNAS. Was befindet sich in Port 1?"
"SATA Festplatte mit folgende Seriennummer: YYYYYYYYY"
"ada1 is jetzt die Platte mit Seriennummer YYYYYYYYY."

Wie genau dies geschieht hängt vom Betriebsssystem und von der Hardware ab.
Und das ist genau das was ich hier anprangere, dass eben - wie üblich bei open source Projekten - nicht an den User gedacht wird. Die Geeks lernen halt dass der "Name" jedesmal beim Booten neu vergeben wird, was ja auch im Normalbetrieb immer dieselbe Reihenfolge ergibt. Nur ausgerechnet im Fehlerfall ändern sich die Namen - EPIC FAIL aus Usersicht.

Solange diese Denkweise vorherrscht, wird OpenSource nie auf einen grünen Zweig kommen.
 
Status
Not open for further replies.
Top