Fettes Problem: pool nach stromverlusst nicht mehr verfügbar

Status
Not open for further replies.

Patrik

Dabbler
Joined
Jan 18, 2014
Messages
10
Hallo zusammen,

ich hoffe hier kann einer helfen. Nach einem Stromausfall, wärend ich das Backup umstellte, kam mein Freenas 9.1.1 nicht mehr sauber hoch. Der Datenpool data war nicht mehr verfügbar. Bislang habe ich heraus gefunden ds die Paltten ada0 ada1 ada2 und ada 3 verwendet wurden. diese wurden mit Raidz verbunden.
Frage A: Kann ich auf den Platten oder im System irgendwo die tatsächliche Konfiguration des Pool nachschauen?
Frage B:Kann ich die Verwendung dann gemäß dieser Informationen "forcen"?
Danke im voraus
Patrik
 

Patrik

Dabbler
Joined
Jan 18, 2014
Messages
10
gpart status
Name Status Components
ada0p1 CORRUPT ada0
ada0p2 CORRUPT ada0
ada1p1 CORRUPT ada1
ada1p2 CORRUPT ada1
ada2p1 CORRUPT ada2
ada2p2 CORRUPT ada2
ada4p1 OK ada4
ada4p2 OK ada4
da0p1 OK da0
da0p2 OK da0
da1s1 OK da1
da1s2 OK da1
da1s3 OK da1
da1s4 OK da1
da1s1a OK da1s1
da1s2a OK da1s2
[root@nas02] ~# zpool import -fV
pool: data
id: 8070147856297862010
state: UNAVAIL
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:

data UNAVAIL insufficient replicas
13740066716791306146 UNAVAIL cannot open
8707793149854576358 UNAVAIL cannot open
15802201165049795780 UNAVAIL cannot open
ada3 ONLINE
 

warri

Guru
Joined
Jun 6, 2011
Messages
1,193
Kannst du die Augaben von glabel status und gpart show hier einstellen? Bitte in [code]-Tags, sonst ist es unleserlich.

Es sieht so aus als ob ada0,1,2 korrupte GPT Tabellen haben. Wenn nur die Tabellen beschädigt sind, kannst du diese von der noch heilen ada4 wiederherstellen - aber erstmal sehen was sonst noch passiert ist.

Dein Pool scheint außerdem kein RAID-Z Pool zu sein, sondern ein Stripe (d.h. ohne jegliche Redundanz!). Desweiteren wurde er wohl nicht mit einer aktuellen FreeNAS Version erstellt, da keine GTPIDs verwendet wurden. Wir brauchen alle diese Infos, um dir zu helfen - bitte auch deine Hardware.
 

Patrik

Dabbler
Joined
Jan 18, 2014
Messages
10
Richtig der Pool wurde nicht mit Freenas erstellt da dort verschiedene Fesplattengrößen verwendet wurden. Das es sich dabei um einen Stripe handelt habe ich auch schon befürchtet.
Ansonsten zur Hardware, hier wird ein HP Microserver N40L verwendet.

Code:
gpart status
  Name  Status  Components
ada0p1      OK  ada0
ada0p2      OK  ada0
ada1p1      OK  ada1
ada1p2      OK  ada1
ada2p1      OK  ada2
ada2p2      OK  ada2
ada4p1      OK  ada4
ada4p2      OK  ada4
da0p1      OK  da0
da0p2      OK  da0
da1s1      OK  da1
da1s2      OK  da1
da1s3      OK  da1
da1s4      OK  da1
da1s1a      OK  da1s1
da1s2a      OK  da1s2


Code:
gpart show
=>        34  1953525101  ada0  GPT  (931G)
          34          94        - free -  (47k)
        128    4194304    1  freebsd-swap  (2.0G)
    4194432  1949330703    2  freebsd-zfs  (929G)
 
=>        34  1953525101  ada1  GPT  (931G)
          34          94        - free -  (47k)
        128    4194304    1  freebsd-swap  (2.0G)
    4194432  1949330703    2  freebsd-zfs  (929G)
 
=>        34  1953525101  ada2  GPT  (931G)
          34          94        - free -  (47k)
        128    4194304    1  freebsd-swap  (2.0G)
    4194432  1949330696    2  freebsd-zfs  (929G)
  1953525128          7        - free -  (3.5k)
 
=>        34  3907029101  ada4  GPT  (1.8T)
          34          94        - free -  (47k)
        128    4194304    1  freebsd-swap  (2.0G)
    4194432  3902834696    2  freebsd-zfs  (1.8T)
  3907029128          7        - free -  (3.5k)
 
=>        34  3907024829  da0  GPT  (1.8T)
          34          94      - free -  (47k)
        128    4194304    1  freebsd-swap  (2.0G)
    4194432  3902830431    2  freebsd-zfs  (1.8T)
 
=>    63  3915713  da1  MBR  (1.9G)
      63  1930257    1  freebsd  [active]  (942M)
  1930320      63      - free -  (31k)
  1930383  1930257    2  freebsd  (942M)
  3860640    3024    3  freebsd  (1.5M)
  3863664    41328    4  freebsd  (20M)
  3904992    10784      - free -  (5.3M)
 
=>      0  1930257  da1s1  BSD  (942M)
        0      16        - free -  (8.0k)
      16  1930241      1  !0  (942M)
 
=>      0  1930257  da1s2  BSD  (942M)
        0      16        - free -  (8.0k)
      16  1930241      1  !0  (942M)


Code:
/data# zdb -l /dev/ada0
--------------------------------------------
LABEL 0
--------------------------------------------
failed to unpack label 0
--------------------------------------------
LABEL 1
--------------------------------------------
    version: 5000
    name: 'data'
    state: 0
    txg: 1631412
    pool_guid: 8070147856297862010
    hostid: 3774868925
    hostname: 'nas02.gross.local'
    top_guid: 13740066716791306146
    guid: 13740066716791306146
    vdev_children: 4
    vdev_tree:
        type: 'disk'
        id: 0
        guid: 13740066716791306146
        path: '/dev/ada0'
        phys_path: '/dev/ada0'
        whole_disk: 1
        metaslab_array: 38
        metaslab_shift: 33
        ashift: 12
        asize: 1000199946240
        is_log: 0
        DTL: 5111
        create_txg: 4
    features_for_read:
--------------------------------------------
LABEL 2
--------------------------------------------
    version: 5000
    name: 'data'
    state: 0
    txg: 1631412
    pool_guid: 8070147856297862010
    hostid: 3774868925
    hostname: 'nas02.gross.local'
    top_guid: 13740066716791306146
    guid: 13740066716791306146
    vdev_children: 4
    vdev_tree:
        type: 'disk'
        id: 0
        guid: 13740066716791306146
        path: '/dev/ada0'
        phys_path: '/dev/ada0'
        whole_disk: 1
        metaslab_array: 38
        metaslab_shift: 33
        ashift: 12
        asize: 1000199946240
        is_log: 0
        DTL: 5111
        create_txg: 4
    features_for_read:
--------------------------------------------
LABEL 3
--------------------------------------------
    version: 5000
    name: 'data'
    state: 0
    txg: 1631412
    pool_guid: 8070147856297862010
    hostid: 3774868925
    hostname: 'nas02.gross.local'
    top_guid: 13740066716791306146
    guid: 13740066716791306146
    vdev_children: 4
    vdev_tree:
        type: 'disk'
        id: 0
        guid: 13740066716791306146
        path: '/dev/ada0'
        phys_path: '/dev/ada0'
        whole_disk: 1
        metaslab_array: 38
        metaslab_shift: 33
        ashift: 12
        asize: 1000199946240
        is_log: 0
        DTL: 5111
        create_txg: 4
    features_for_read:
[root@nas02] /data# zdb -l /dev/ada1
--------------------------------------------
LABEL 0
--------------------------------------------
failed to unpack label 0
--------------------------------------------
LABEL 1
--------------------------------------------
    version: 5000
    name: 'data'
    state: 0
    txg: 1631412
    pool_guid: 8070147856297862010
    hostid: 3774868925
    hostname: 'nas02.gross.local'
    top_guid: 8707793149854576358
    guid: 8707793149854576358
    vdev_children: 4
    vdev_tree:
        type: 'disk'
        id: 1
        guid: 8707793149854576358
        path: '/dev/ada1'
        phys_path: '/dev/ada1'
        whole_disk: 1
        metaslab_array: 36
        metaslab_shift: 33
        ashift: 12
        asize: 1000199946240
        is_log: 0
        DTL: 5114
        create_txg: 4
    features_for_read:
--------------------------------------------
LABEL 2
--------------------------------------------
    version: 5000
    name: 'data'
    state: 0
    txg: 1631412
    pool_guid: 8070147856297862010
    hostid: 3774868925
    hostname: 'nas02.gross.local'
    top_guid: 8707793149854576358
    guid: 8707793149854576358
    vdev_children: 4
    vdev_tree:
        type: 'disk'
        id: 1
        guid: 8707793149854576358
        path: '/dev/ada1'
        phys_path: '/dev/ada1'
        whole_disk: 1
        metaslab_array: 36
        metaslab_shift: 33
        ashift: 12
        asize: 1000199946240
        is_log: 0
        DTL: 5114
        create_txg: 4
    features_for_read:
--------------------------------------------
LABEL 3
--------------------------------------------
    version: 5000
    name: 'data'
    state: 0
    txg: 1631412
    pool_guid: 8070147856297862010
    hostid: 3774868925
    hostname: 'nas02.gross.local'
    top_guid: 8707793149854576358
    guid: 8707793149854576358
    vdev_children: 4
    vdev_tree:
        type: 'disk'
        id: 1
        guid: 8707793149854576358
        path: '/dev/ada1'
        phys_path: '/dev/ada1'
        whole_disk: 1
        metaslab_array: 36
        metaslab_shift: 33
        ashift: 12
        asize: 1000199946240
        is_log: 0
        DTL: 5114
        create_txg: 4
    features_for_read:
[root@nas02] /data# zdb -l /dev/ada2
--------------------------------------------
LABEL 0
--------------------------------------------
failed to unpack label 0
--------------------------------------------
LABEL 1
--------------------------------------------
    version: 5000
    name: 'data'
    state: 0
    txg: 1631412
    pool_guid: 8070147856297862010
    hostid: 3774868925
    hostname: 'nas02.gross.local'
    top_guid: 15802201165049795780
    guid: 15802201165049795780
    vdev_children: 4
    vdev_tree:
        type: 'disk'
        id: 2
        guid: 15802201165049795780
        path: '/dev/ada2'
        phys_path: '/dev/ada2'
        whole_disk: 1
        metaslab_array: 35
        metaslab_shift: 33
        ashift: 12
        asize: 1000199946240
        is_log: 0
        DTL: 5113
        create_txg: 4
    features_for_read:
--------------------------------------------
LABEL 2
--------------------------------------------
    version: 5000
    name: 'data'
    state: 0
    txg: 1631412
    pool_guid: 8070147856297862010
    hostid: 3774868925
    hostname: 'nas02.gross.local'
    top_guid: 15802201165049795780
    guid: 15802201165049795780
    vdev_children: 4
    vdev_tree:
        type: 'disk'
        id: 2
        guid: 15802201165049795780
        path: '/dev/ada2'
        phys_path: '/dev/ada2'
        whole_disk: 1
        metaslab_array: 35
        metaslab_shift: 33
        ashift: 12
        asize: 1000199946240
        is_log: 0
        DTL: 5113
        create_txg: 4
    features_for_read:
--------------------------------------------
LABEL 3
--------------------------------------------
    version: 5000
    name: 'data'
    state: 0
    txg: 1631412
    pool_guid: 8070147856297862010
    hostid: 3774868925
    hostname: 'nas02.gross.local'
    top_guid: 15802201165049795780
    guid: 15802201165049795780
    vdev_children: 4
    vdev_tree:
        type: 'disk'
        id: 2
        guid: 15802201165049795780
        path: '/dev/ada2'
        phys_path: '/dev/ada2'
        whole_disk: 1
        metaslab_array: 35
        metaslab_shift: 33
        ashift: 12
        asize: 1000199946240
        is_log: 0
        DTL: 5113
        create_txg: 4
    features_for_read:
[root@nas02] /data# zdb -l /dev/ada3
--------------------------------------------
LABEL 0
--------------------------------------------
    version: 5000
    name: 'data'
    state: 0
    txg: 1631412
    pool_guid: 8070147856297862010
    hostid: 3774868925
    hostname: 'nas02.gross.local'
    top_guid: 16432969450738704355
    guid: 16432969450738704355
    vdev_children: 4
    vdev_tree:
        type: 'disk'
        id: 3
        guid: 16432969450738704355
        path: '/dev/ada3'
        phys_path: '/dev/ada3'
        whole_disk: 1
        metaslab_array: 33
        metaslab_shift: 33
        ashift: 12
        asize: 1500297035776
        is_log: 0
        DTL: 5112
        create_txg: 4
    features_for_read:
--------------------------------------------
LABEL 1
--------------------------------------------
    version: 5000
    name: 'data'
    state: 0
    txg: 1631412
    pool_guid: 8070147856297862010
    hostid: 3774868925
    hostname: 'nas02.gross.local'
    top_guid: 16432969450738704355
    guid: 16432969450738704355
    vdev_children: 4
    vdev_tree:
        type: 'disk'
        id: 3
        guid: 16432969450738704355
        path: '/dev/ada3'
        phys_path: '/dev/ada3'
        whole_disk: 1
        metaslab_array: 33
        metaslab_shift: 33
        ashift: 12
        asize: 1500297035776
        is_log: 0
        DTL: 5112
        create_txg: 4
    features_for_read:
--------------------------------------------
LABEL 2
--------------------------------------------
    version: 5000
    name: 'data'
    state: 0
    txg: 1631412
    pool_guid: 8070147856297862010
    hostid: 3774868925
    hostname: 'nas02.gross.local'
    top_guid: 16432969450738704355
    guid: 16432969450738704355
    vdev_children: 4
    vdev_tree:
        type: 'disk'
        id: 3
        guid: 16432969450738704355
        path: '/dev/ada3'
        phys_path: '/dev/ada3'
        whole_disk: 1
        metaslab_array: 33
        metaslab_shift: 33
        ashift: 12
        asize: 1500297035776
        is_log: 0
        DTL: 5112
        create_txg: 4
    features_for_read:
--------------------------------------------
LABEL 3
--------------------------------------------
    version: 5000
    name: 'data'
    state: 0
    txg: 1631412
    pool_guid: 8070147856297862010
    hostid: 3774868925
    hostname: 'nas02.gross.local'
    top_guid: 16432969450738704355
    guid: 16432969450738704355
    vdev_children: 4
    vdev_tree:
        type: 'disk'
        id: 3
        guid: 16432969450738704355
        path: '/dev/ada3'
        phys_path: '/dev/ada3'
        whole_disk: 1
        metaslab_array: 33
        metaslab_shift: 33
        ashift: 12
        asize: 1500297035776
        is_log: 0
        DTL: 5112
        create_txg: 4
    features_for_read:
 
 
 

warri

Guru
Joined
Jun 6, 2011
Messages
1,193
Hi, du hast glabel status vergessen ;)
Und wieso zeigt der gpart status nun OK an statt CORRUPT - hast du die Tabellen wiederhergestellt?

Ansonsten sehen die ZFS Metadaten (zdb output) gut aus, alle vier Festplatten des Pools scheinen da zu sein. Theoretisch sollte der Import klappen, trotzdem scheint zfs drei Festplatte nicht zuordnen zu können (UNAVAIL). Waren die Festplatten vorher an einem anderen Controller angeschlossen?
Leider weiß ich hier auch nicht weiter, im englischen Teil kriegst du vielleicht eher Hilfe. Poste auch dort mal die oben eingestellen Ausgaben.

Falls du den Pool wiederherstellen kannst: Leg am besten einen neuen Pool mit Redundanz an (bevorzugt RAIDZ2) und besorg die eine USV für den Server. Falls der Server weniger als 8 GB RAM hat, würde ich auch hier aufrüsten.
 

Patrik

Dabbler
Joined
Jan 18, 2014
Messages
10
sorry, hatte ich falsch gelesen und nein die Platten waren nicht an einem anderen Controller, das System läuft so seit ungefähr eineinhalb Jahren.
Und im englischen Forum gabs nichts brauchbares.

Code:
glabel status
                                      Name  Status  Components
gptid/84e57666-2e6a-11e3-ac50-009c02a7fad0    N/A  ada0p2
gptid/8587429e-2e6a-11e3-ac50-009c02a7fad0    N/A  ada1p2
gptid/866cbdb1-2e6a-11e3-ac50-009c02a7fad0    N/A  ada2p2
gptid/1db04818-2b46-11e3-af1d-009c02a7fad0    N/A  ada4p2
gptid/023ade71-3de6-11e1-a068-002354d05c35    N/A  da0p2
                            ufs/FreeNASs3    N/A  da1s3
                            ufs/FreeNASs4    N/A  da1s4
                            ufs/FreeNASs1a    N/A  da1s1a
                    ufsid/5165e77974bdc41f    N/A  da1s2a
                            ufs/FreeNASs2a    N/A  da1s2a
 

warri

Guru
Joined
Jun 6, 2011
Messages
1,193
Ich sehe gerade, dass der Pool /dev/ada3 als Member erwartet. Diese Festplatte taucht in deiner Liste nicht auf, was ist mit ihr passiert?

EDIT: Ok, sie ist da - hab sie nur übersehen. Hat aber gar keine GPT Tabelle.. Beim Erstellen ist da irgendwo was schief gegangen, alles relativ inkonsistent. Kannst du mal genau beschreiben, wie der Pool erstellt wurde? Und du hast auch meine Frage nicht beantwortet, wieso die GPT Tabellen nun OK sind. Falls du was am System geändert hast, bitte angeben - sonst ist aller Rat unnütz ;)
 

warri

Guru
Joined
Jun 6, 2011
Messages
1,193
Habe gerade mal versucht die Situation in einer VM zu rekonstruieren. Dabei sind mir ein paar weitere Unstimmigkeiten aufgefallen:

  • zdb sollte auch Label 0 auspacken können. Es existieren jedoch 4 redundante Labels, d.h. am Anfang des vdevs ist was verlorengegangen - war zu erwarten, da auch die GPT Labels am Anfang beschädigt sind - also sollte nicht weiter schlimm sein.
  • zdb sollte auf ada0,1,2 nichts finden können, sondern nur auf ada0p2, etc. Wieso es eine Ausgabe gibt, weiß ich nicht. Eigentlich sollten die zfs Informationen nur auf Partition 2 zu finden sein (der zfs Partition). Welche FreeNAS Version nutzt du um die Kommandos einzugeben?
Jedenfalls scheinen deine Disks ja noch da zu sein. Du könntest nun versuchen, die fehlenden Festplatten manuell online zu setzen. Vorher solltest die SMART-Information der Festplatten durchgehen, um zu sehen ob eine evtl. den Geist aufgibt:

Code:
smartctl -a /dev/ada0
smartctl -a /dev/ada1
smartctl -a /dev/ada2
smartctl -a /dev/ada3


Wenn alles OK aussieht:

Code:
zpool data online gptid/84e57666-2e6a-11e3-ac50-009c02a7fad0
zpool data online gptid/8587429e-2e6a-11e3-ac50-009c02a7fad0
zpool data online gptid/866cbdb1-2e6a-11e3-ac50-009c02a7fad0


Falls alle ZFS Informationen noch da sind, sollte das klappen.
 

Patrik

Dabbler
Joined
Jan 18, 2014
Messages
10
Mit smartcontrol war alles ok, aber ...

Code:
[root@nas02] ~# zpool online data gptid/84e57666-2e6a-11e3-ac50-009c02a7fad0
cannot open 'data': no such pool
[root@nas02] ~# zpool online data gptid/8587429e-2e6a-11e3-ac50-009c02a7fad0
cannot open 'data': no such pool
[root@nas02] ~# zpool online data gptid/866cbdb1-2e6a-11e3-ac50-009c02a7fad0
cannot open 'data': no such pool
[root@nas02] ~#
 

warri

Guru
Joined
Jun 6, 2011
Messages
1,193
Stimmt, das geht nur wenn der Pool schon importiert ist.

Kannst du mal genau beschreiben, wie der Pool erstellt wurde? Und du hast auch meine Frage nicht beantwortet, wieso die GPT Tabellen nun OK sind. Falls du was am System geändert hast, bitte angeben - sonst ist aller Rat unnütz ;)
 

Patrik

Dabbler
Joined
Jan 18, 2014
Messages
10
ich weiss es nicht genau, aber ich bin mir ziemlich sicher das es einfach "zpool create data ada0 ada1 ada2 ada3" war.
 

warri

Guru
Joined
Jun 6, 2011
Messages
1,193
Ok, dann lässt sich da nichts ändern. Sieht meiner Meinung nach so aus, dass für 3 Platten die entsprechenden GTPIDs genutzt wurden (evtl. via eine FreeNAS GUI o.ä.), und dann evtl. eine Festplatte hinzugefügt wurde ohne die Partitionierungen zu beachten?

So in der Art:
Code:
zpool create data gptid/84e57666-2e6a-11e3-ac50-009c02a7fad0 gptid/8587429e-2e6a-11e3-ac50-009c02a7fad0 gptid/866cbdb1-2e6a-11e3-ac50-009c02a7fad0
zpool add data ada3


Aber tut alles nichts zur Sache, sollte theoretisch trotzdem funktionieren. Kann dir leider nicht weiterhelfen, bin mit meinem ZFS Wissen am Ende. Versuch es vlt. mal im IRC (freenode, #freenas) - da wird aber englisch gesprochen. Dort evtl. auf den englischen und diesen Thread verweisen.
 

Dusan

Guru
Joined
Jan 29, 2013
Messages
1,165
I hope English is OK -- while I understand German and can follow the German threads without problem I didn't speak the language in years (and I even work for a German company -- but English is our corporate language)...
I have some explanations, but unfortunately no solution :(.
The zdb output shows that the labels contain the entire devices physical paths (/dev/ada0, /dev/ada1, ...). This seems to confirm Patrik's information that the pool was created via "zpool create data ada0 ada1 ada2 ada3". Then something/someone stomped on ada0, ada1 and ada2 and created the partitions. This explains why zdb finds labels directly on devices (ada0) but not on the zfs partitions (ada0p2) and also explains why label 0 is missing -- it was damaged by the partition table.
Patrik, did you maybe try to use the ZFS Volume Manager after the power loss?
I'm not sure, but zpool import may not consider the entire device when there are partitions present (but I did have time to test it in a VM). You could destroy the partitioning by gpart destroy (don't try that before testing it in a VM) to make ZFS "see" the drives again, but this being a stripe without any redundancy the chance of the pool importing is slim.
If you can wait a day I may be able to do some VM experiments tomorrow evening.
 

warri

Guru
Joined
Jun 6, 2011
Messages
1,193
Dusan to the rescue!

The zdb output shows that the labels contain the entire devices physical paths (/dev/ada0, /dev/ada1, ...). This seems to confirm Patrik's information that the pool was created via "zpool create data ada0 ada1 ada2 ada3". Then something/someone stomped on ada0, ada1 and ada2 and created the partitions. This explains why zdb finds labels directly on devices (ada0) but not on the zfs partitions (ada0p2) and also explains why label 0 is missing -- it was damaged by the partition table..


Thanks for this explanation, it makes a lot of sense. As you have read I wasn't able to figure out what actually happened there :)
 

Dusan

Guru
Joined
Jan 29, 2013
Messages
1,165
OK, I did some experiments in a VM. What is quite interesting is that when you create a striped pool via "zpool create tank /dev/ada1 /dev/ada2 /dev/ada3", export it and then create partition tables even on all disks (gpart create) zdb -l will not be able read label 0 (same as in your case) but zpool import won't show any errors and the pool will import cleanly -- the corrupted labels will be silently fixed as confirmed by zdb.
However, it seems in your case the damage is more extensive and I don't think there's a chance to import the pool. Sorry.
 
Status
Not open for further replies.
Top