ZFS Frage

pom

Well-Known Member
Hallo,

mein System besteht aus einem Pool mit 3 Mirrorplatten (a,b,c). 2 (a,b) sind intern, 1 (c) hänge ich bei Bedarf per USB dran, setzte sie online und synchronisiere den Pool. Klappt seit Jahren gut.

Aus Dummheit habe ich gestern zu viele Daten/Snapshots auf (a,b) gelöscht.

Ich habe daher die 2 internen Platten (a,b), die online waren ausgebaut und durch die eine (c) Platte ersetzt. Daten sind noch da, System bootet - soweit alles ok.

Jetzt meine Fragen:
- Kann ich (a) oder (b) jetzt einfach wieder in den Pool online nehmen? Oder gibt das dann Kraut und Rüben, da (a,b) ja zeitweise neuer waren. Jetzt aber (c) den neuesten Stand hat.
- Falls das nicht geht - wie gehe ich vor? Daten auf (a,b) löschen und dann erst wieder online nehmen?

Noch eine andere Frage: Wie kann ich a oder b temporär (also ausserhalb des Mirrors) mal importieren, um einige neuere Daten, die noch nicht auf (c) waren zu kopieren. Welchen "Namen" verwende ich da zum importieren? Zur Zeit ist (b) in ein USB Gehäuse eingebaut und als da0 (siehe unten verfügbar). Wie importiere ich den Datenpool temporär z.B. unter /temp_data?

Hoffentlich konnte ich mich einigermaßen klar ausdrücken.

Noch einige Infos zpool status:
Code:
    NAME                     STATE     READ WRITE CKSUM
    zroot                    DEGRADED     0     0     0
      mirror-0               DEGRADED     0     0     0
        8628833179998438193  UNAVAIL      0     0     0  was /dev/gpt/disk2
        gpt/disk0            ONLINE       0     0     0  block size: 512B configured, 4096B native
        9055473193719135908  UNAVAIL      0     0     0  was /dev/gpt/disk1

Und gpart show

Code:
gpart show
=>        34  3907029101  ada0  GPT  (1.8T)
          34           6        - free -  (3.0K)
          40         216     1  freebsd-boot  (108K)
         256    16777216     2  freebsd-swap  (8.0G)
    16777472  3890251656     3  freebsd-zfs  (1.8T)
  3907029128           7        - free -  (3.5K)

=>        34  3907029101  da0  GPT  (1.8T)
          34           6       - free -  (3.0K)
          40         216    1  freebsd-boot  (108K)
         256    16777216    2  freebsd-swap  (8.0G)
    16777472  3890251656    3  freebsd-zfs  (1.8T)
  3907029128           7       - free -  (3.5K)

=>        34  3907029101  diskid/DISK-000f0eef  GPT  (1.8T)
          34           6                        - free -  (3.0K)
          40         216                     1  freebsd-boot  (108K)
         256    16777216                     2  freebsd-swap  (8.0G)
    16777472  3890251656                     3  freebsd-zfs  (1.8T)
  3907029128           7                        - free -  (3.5K)

Gruß,
Peter
 
man(8) zpool
# zpool import ## zeigt die verfügbaren nicht eingehängten pools an,

# zpool imort -o altroot=/dein/mountpoint pool ## mounted deinen pool nach /dein/mountpoint

legacy datensets musst du händisch einzeln mounten
Wenn denn die pools identisch sind, wir scheinbar bei deiner Konfiguration, bin ich mir aber nicht sicher, was passiert.
hth
 
So ein Backup zu erstellen ist zwar sehr gemütlich aber vielleicht nicht unbedingt See Standard. Dein Pool ist damit ja immer degraded. Sprich du sieht ja nie wenn der Pool mal wirklich ein Problem hat.
 
man(8) zpool
# zpool import ## zeigt die verfügbaren nicht eingehängten pools an,

#
man(8) zpool
# zpool import ## zeigt die verfügbaren nicht eingehängten pools an,

# zpool imort -o altroot=/dein/mountpoint pool ## mounted deinen pool nach /dein/mountpoint

legacy datensets musst du händisch einzeln mounten
Wenn denn die pools identisch sind, wir scheinbar bei deiner Konfiguration, bin ich mir aber nicht sicher, was passiert.
hth

## mounted deinen pool nach /dein/mountpoint

legacy datensets musst du händisch einzeln mounten
Wenn denn die pools identisch sind, wir scheinbar bei deiner Konfiguration, bin ich mir aber nicht sicher, was passiert.
hth

Hallo metro,

ok, das ist soweit klar. Allerdings weiß ich nicht was ich als "pool" angeben muss.

Ich bekomme folgende Meldung:

Code:
zpool import -o altroot=/temporary  /dev/da0p3
cannot import '/dev/da0p3': no such pool available

Anstatt /dev/da0p3 habe ich auch schon /dev/gpt/disk2 versucht. Beides ist in /dev vorhanden.

Was mache ich da falsch?

Gruß,
Peter
 
... weiß ich nicht was ich als "pool" angeben muss.

Den Namen des pools.

'zpool import' sollte den poolnamen benennen.

Ich weiss aber wie gesagt nicht was passiert, wenn Dank der etwas aussergewöhnlichen Backup-Strategie, ein pool mit gleichem Namen importiert wird.
Evtl pool-id.

hth
 
'zpool' import ergibt:

Code:
zpool import
   pool: daten
     id: 4874741829319793569
  state: FAULTED
status: One or more devices are missing from the system.
action: The pool cannot be imported. Attach the missing
    devices and try again.
   see: http://illumos.org/msg/ZFS-8000-3C
config:

    daten                     FAULTED  corrupted data
      mirror-0                DEGRADED
        diskid/DISK-000f0eef  ONLINE
        16321600904096964301  UNAVAIL  cannot open


D.h. der Poolname ist "daten".

Die 2. Platte ist als USB Festplatte verfügbar.

zpool import -o altroot=/temporary daten ergibt:

Code:
zpool import -o altroot=/temporary  daten    
cannot import 'daten': I/O error
    Destroy and re-create the pool from
    a backup source.

Ich habe testweise mal alle Platten ausgebaut und wieder (a) eingebaut -> die, die jetzt im USB LW war.
Dann kommt der Pool im "alten" Stand wieder hoch. Auf der Platte sind die Daten also noch.

Dann habe ich wieder die Backupplatte Platte (c) eingebaut. Damit kam der Pool auch auch - im Datenbestand wie ich ihn brauche.

Dann habe ich mal testweise c und a eingebaut. Dann nimmt der Rechner das zroot von (a). Wieso weiß ich nicht.


Wie schaffe ich es (a) wieder dem Mirror hinzuzufügen, sodass die Daten von (c) diejenigen sind, die als aktuell gelten und gespiegelt werden?

Etwas verzweifelt ...

Peter
 
Das mache ich gerade. Ich verstehe immer noch nicht was ich anders hätte machen müssen / können ...
 
Ich weiss aber wie gesagt nicht was passiert, wenn Dank der etwas aussergewöhnlichen Backup-Strategie, ein pool mit gleichem Namen importiert wird.
Man muss einen neuen Namen angeben. Angenommen man hat einen importierten Pool "tank" und will einen Pool "tank" importieren:
Code:
zpool import tank neuer_tank

Wenn man zwei nicht importierte Pools mit gleichem Namen hat, ist das erste Argument die Pool-ID statt des Namens.
 
Das mache ich gerade. Ich verstehe immer noch nicht was ich anders hätte machen müssen / können ...
Ursächlich wohl 'grundschulmäßige' Backups machen, d.h. Snapshots erstellen, und die dann per 'zfs send / recv' auf z.B. eine vorhandene externe USB-HDD zu spielen.
Damit existieren externe und interne Backups und mit so schicken Sachen wie 'zfs rollback' kann ein Datenbestand intern unmittelbar wiederhergestellt werden Ist der Datensatz / Pool komplett nirvanisiert, existieren die extern gesicherten Snapshots aka das Backup.

hth
 
Zurück
Oben