• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

zfs replace device

pom

Well-Known Member
Themenstarter #1
Hallo,

ich hatte ein ZFS system mit 2 Platten im Mirror. Ich konnte den Rechner nicht booten sodass ich Verschiedenes versucht habe. Jetzt fehlt mir eine Platte im Mirror.


Bash:
zpool status 
...
 pool: zroot
 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: resilvered 4.39G in 0 days 00:05:01 with 0 errors on Sat Oct 19 08:57:25 2019
config:

    NAME                     STATE     READ WRITE CKSUM
    zroot                    DEGRADED     0     0     0
      mirror-0               DEGRADED     0     0     0
        ada1p3               ONLINE       0     0     0

Ich habe versucht ada0 wieder als weiteren Mirror hinzuzufügen. Das hat nicht geklappt.
Dann habe ich ada0 versucht platt zu machen:

Bash:
gpart destroy -F /dev/ada0
zpool labelclear /dev/ada0
gpart backup ada1 | gpart restore -F ada0
Will ich dann ada0 wieder hinzuzufügen bekomme ich:

Bash:
 zpool attach -f zroot ada1p3 /dev/ada0p3
invalid vdev specification
the following errors must be manually repaired:
/dev/ada0p3 is part of active pool 'zroot'
Wie kann ich das lösen um wieder einen funktionierenden Mirror zu bekommen?


Gruß,
Peter
 

medV2

Well-Known Member
#2
zpool labelclear /dev/ada0p3
zpool attach zroot mirror-0 /dev/ada0p3

Sollte funktionieren - anschließend läuft das resilver und dann sollte der Pool wieder in Ordnung sein.
 

pom

Well-Known Member
Themenstarter #3
zpool labelclear /dev/ada0p3
zpool attach zroot mirror-0 /dev/ada0p3

Sollte funktionieren - anschließend läuft das resilver und dann sollte der Pool wieder in Ordnung sein.
Ich bekomme folgende Meldung:
Code:
zpool labelclear /dev/ada0p3
/dev/ada0p3 is a member (ACTIVE) of pool "zroot"
 

medV2

Well-Known Member
#4
Dann muss möglicherweiße ein -f dazu, also pool labelclear -f /dev/ada0p3

Wenn das auch nicht hilft, den beginn von ada0p3 mal mit /dev/zero überschreiben (dd if=/dev/zero bs=1m of=/dev/ada0p3 count=100).

Bei all diese dingen immer unbedingt acht geben, dass du die richtige Platte/partition hast!
 

medV2

Well-Known Member
#8
vielleicht musst du dann ein zpool replace oder zuerst ein zpool remove machen - aber ich hab jetzt leider gerade grad kein bsd mehr zur hand für die genaue syntax
 

pom

Well-Known Member
Themenstarter #10
Hi, ja ich habe ein Backup.

Das Problem ist ja, dass er die Platte die vorher im Pool war und jetzt mit allen möglichlichen Tricks gelöscht wurde nicht wieder als neue Platte im Mirror akzeptieren will. Das muss doch gehen ...

Über Nacht ist der dd Befehlt gelaufen.

Jetzt kommt:
Code:
gpart show ada0
gpart: No such geom: ada0.
und

Code:
gpart show ada1
=>        40  3907029088  ada1  GPT  (1.8T)
          40         216     1  freebsd-boot  (108K)
         256    16777216     2  freebsd-swap  (8.0G)
    16777472  3890251656     3  freebsd-zfs  (1.8T)
 

pom

Well-Known Member
Themenstarter #11
Der Trick war wohl das komplette Löschen mit dd über Nacht.

Das attach hat jetzt geklappt. Der Pool resilvered gerade.

Puhh

Danke an alle für die Tips
 

mr44er

moderater Moderator
Mitarbeiter
#12
Code:
gpart show ada1
=>       40  976773088  ada1  GPT  (466G)
         40       1024     1  freebsd-boot  (512K)
       1064        984        - free -  (492K)
       2048   16777216     2  freebsd-swap  (8.0G)
   16779264  959993856     3  freebsd-zfs  (458G)
  976773120          8        - free -  (4.0K)
Woher kommen die 108K boot-Partition? Ich kenne es so, dass das setup immer schon 512k nimmt. Weiß nun aber auch nicht, ob der bootcode bei dir überhaupt draufpasst.
 

pom

Well-Known Member
Themenstarter #13
Das ist eine sehr alte Installation, die ich vor Urzeiten per Hand angelegt habe und dann immer wieder aktualisiert habe.
 

mr44er

moderater Moderator
Mitarbeiter
#14
Ah so. ;) Wenn der resilver durch ist, würde ich auf jeden Fall zum Test und fürs Gewissen von beiden Platten einmal durchbooten und gucken, ob alles passt.
 

pom

Well-Known Member
Themenstarter #15
Frage: wie ist genau der Ablauf, um nicht wieder in eine Situation wie oben zu kommen.
Platte offline nehmen.
Runterfahren
Platte rausziehen
Von der verbleibenden booten
Wieder runterfahren
Platte reinstecken
Booten
Platte wieder online nehmen

Und dann mit der anderen?
 

mr44er

moderater Moderator
Mitarbeiter
#16
Nein, das mache ich nie. ZFS lässt dann einen Eintrag drin (random-nummer), die 'replace' ich dann mit der neue Platte.

Ach halt, moment. Du meinst einfach nur den boottest? Im BIOS nur eine Platte (alles andere ausklammern, deaktivieren) zum Booten einstellen, das ist auch nur relevant für den bootloader.
ZFS findet sich und die restlichen Platten dann sowieso.

Wenn du es sicher bestätigt haben willst:
Runterfahren, Platte zupfen, booten.

Wenn du mit beiden angeschlossen wieder bootest, merkt ZFS die Inkonsistenz und scrubbt automatisch die kleine Inkonsistenz weg.