ZFS Trouble..

holm

Well-Known Member
Moin,

mich hat es schon wieder mal erwischt mit Ärger, diesmal ist es aber mein
Eigener..

Ich habe hier ein FreeBSD 9.3-Stable, 3 Stück 70GB SCSI Platten (Cheeta) an einem 39160
mit gpt und raidz1-0 ZFS und eine SATA 1TB PLadde als Müllhalde.

Eine der 3 SCSI Platten bekam Fehler und irgendwann kamen gestern kamen dann die ersten write errors.
Ich habe die Platte abgeklemmt, eine andere dieser Bauart ran, diese meldete sich als IBMAS400..irgendwas.
Habe die Platte auf 512 Byte Sektoren umformatiert und wollte die ins ZFS wieder einhängen, ging nicht da diese Platte nur eine Kapazität von 65 statt 68 GB meldete.. Mist.

Darauf hin habe ich aus mehreren noch vorhandenen Platten eine gebastelt (Elektronik defekt + eine mit wachsender Grown Defect list) die hätte funktionieren müssen. Habe gebootet und die Platte zu formatieren begonnen. Dabei spuckte mich irgendwann der Adaptec mit einem Register Dump an und die Kiste panikte.

Booten war dann nicht mehr, es gab eine Fehlermeldung: ZFS: i/o error - all block copies unavailable, der Kern bootete zwar, aber ZFS war unbekannt.
Ein booten zum Loader prompt und ein händsches Laden des zfs.ko mit nachfolgendem Booten behob das, das Filesystem wurde gemountet, aber die Kiste kam hoch als Amnesiac. Die /boot/loader.conf war nicht lesbar (error 2)
und so geht es auch einigen anderen Systemdateien unter /etc. Wesentliche Teile der Daten fehlen (/usr/home ist leer),

Ich habe mit clean und scrub operiert nachdem ich eine halbwegs brauchbare Platte wieder dran hatte, das ändert daran aber Nichts, resilvering lief mehrmals..
Ich habe jetzt einen komischen Status den ich hier mal von Bildschirm zu Schlepptop abhebele, nicht kanz komplett..
Code:
#zpool status -v
   pool: zroot 
  state: DEGRADED
status: One or more devices has experienced an error resulting in datas
           corruption. Applications may be affected.
action: Restore the file in question if possible. Otherwise restore the
           entire pool from backup.
    see: http://illumos.org/msg/ZFS-8000-8A
   scan: resilvered 42.2G in 1h25m with 2 errors on Sat...
config:

          NAME                                           STATE           READ         WRITE      CSUM
          zroot                                            DEGRADED          0                0            71
            raidz1-0                                      DEGRADED          0                0          284
              gpt/disk0                                  ONLINE                 0                0             0
              gpt/disk1                                  ONLINE                 0                0             0
              replacing-2                                DEGRADED          0                0             0
              6329serialno496                        OFFLINE               0                0             0             was /dev/gpt/disk2/old
              gpt/disk2                                  ONLINE                 0                0             0

errors: Permanent errors have been detected in the following files:

                zroot:<0x0>
                zroot/var/db:<0x0>

#

Ich werde weder den Eintrag mit 6329xxxxxxx los den ich eigentlich mit einem replace durch die neue disk2 aus der Welt schaffen wollte, noch bekomme ich die errors behoben. /boot/loader.conf ist weder lösch- noch ersetzbar, und /usr/home ist leer.

Hat Jemand evtl. eine Idee wie diesen Kuddelmuddel repariert bekomme? Scrub bzw. resilvering scheinen nicht zu helfen, den i63irgendwas Diskeintrag werde ich weder mit delete noch mit remove los.

Ich habe zwar einen Tar Abzug von meinem Home auf einem LTO Band, aber das ist eine Woche alt und in der Zwischenzeit habe ich mit KiCad 2 Leiterplatten entwickelt, wäre schön wenn ich wieder an meine Daten käme.

Jemand ne Idee?


Gruß,


Holm
 
Hast Du Dir mal die Oracle Dokus hier angesehen?
Reparing a corrupted File or directory
http://docs.oracle.com/cd/E19253-01/819-5461/gbctx/index.html
Repairing ZFS Storage Pool-Wide Damage
http://docs.oracle.com/cd/E19253-01/819-5461/gbctt/index.html
Wäre zumindest ein Versuch wert.

Naja, ich haber allerhand Blödsinn ausporbiert, das Ergebnis war im Wesentlichen immer das Selbe.
Jetzt habe ich aber mal einen Memstick mit 9.3.img gebooted und ein zpool import -f zroot gemacht,
es kam eine Beschwerde das /var/db nicht gemounted werden könne und es wird wieder mal ein resilvering gemacht.
Neu ist allerdings das diesmal /usr/home nicht leer ist und meine Daten sind vorhanden und intakt.
Ich warte jetzt bis das resilvering fertig ist, dann ziehe ich den Kram auf 2 LTO Bänder ab.
Das Nächste ist dann wohl eine Neuinstallation mit 10-stable..

....Platte kaputt? Der Händler kichert: "Hoffentlich auf Band gesichert!"

Ich halte Euch auf dem Laufenden...

Gruß,

Holm
 
Ok..ich habe hier wieder einen laufenden Rechner, habe die Gelegenheit genutzt 10.1 Release zu installieren.
Um Updates auf Stable kümmere ich mich später. Habe diesmal auch entgegen meiner sonstigen Gewohnheiten
pkg install benutzt und nicht Alles selber compiliert...

Ich habe die Platte mitbenutzt die vorher nicht funktionieren wollte weil sie ein paar Gigabyte kleiner erscheint als die Anderen,
was bei einem neu Anlegen des Pools natürlich nicht problematisch ist.
Die Installation mit zfs-root war mit dem neuen Installer von 10.1 "straight forward", keine Probleme soweit.
Nachdem ich das System soweit laufen hatte hatte ich meine Tarabzüge meines Homes und versehentlich /usr/local wieder eingespielt,
das führte dazu dass ich alle Packages und /usr/local wieder gelöscht und von vorne angefangen habe, ich hatte ja in /usr/local den ganzen alten Scheiß wieder mit drin...
mate-session ärgerte mich noch eine Weile wegen irgend welchem Kram in i~/.config/mate den es aber selber kaputt angelegt hatte, das führte zum regelmäßigen Xserver crash.., ich habe dann da weggemoved bis es funktionierte.
Apropos Xserver..
Code:
 ...
to make sure that you have the latest version.
[  4024.329] Markers: (--) probed, (**) from config file, (==) default setting,
  (++) from command line, (!!) notice, (II) informational,
  (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[  4024.330] (==) Log file: "/var/log/Xorg.0.log", Time: Sun Jul 12 21:27:51 201"
...
[  3875.714] (**) sysmouse: (accel) keeping acceleration scheme 1
[  3875.714] (**) sysmouse: (accel) acceleration profile 0
[  3875.714] (**) sysmouse: (accel) acceleration factor: 2.000
[  3875.714] (**) sysmouse: (accel) acceleration threshold: 4

...from config file ... wollen die mich verarschen? Auf dem ganzen System finde ich keine xorg.conf... :-|
Laut dem was ich im Netz gelesen habe, habe ich einfach xorg installiert (pkg install) und danach startx aufgerufen (hatte bisher gdm benutzt,
gibts den für mate?), konnte unter mate den Monitor auf die richtige Auflösung, die Tastatur auf "german no deadkeys" und die Maus einstellen
und nun funktioniert das ...irgendwie?

Wo zur Hölle speichert X die Konfiguration ab?

Mein Problem ist, das ein Knopfler Konzert auf youtube ordentlich hackt wenn noch ein portbuild im Hintergrund läuft, sollte mit 4G RAM
und 4 Kernen eigentlich funktionieren, hat es früher auch, nur hatte ich den Nvidia Blob als Xserver (ungern)benutzt. Das Ding hat andere Macken (Browser förmlich minutenlang tot wenn aus dem Netz ein großes Bild geladen wurde) aber es war auf meiner alten NVIDIA Quadro FX 4500 performanter, Vollbild geht jetzt gar nicht ...evtl. sind ja Fehler indessen verschwunden?

Meine Daten habe ich jedenfalls wieder, es fehlt Nichts.

Gruß,

Holm
 
Schau mal, ob du /usr/local/etc/X11 hast, und ob da was drin ist.

Zum Ruckeln:
Code:
renice -20 -u $deinuser"

Dann sollte das Ruckeln Geschichte sein.
 
Ich würde immer den Nvidia Blob verwenden... Läuft bei mir eigentlich immer einwandfrei.
..das Problem ist, das es den für die "kommerzielle" Quadro FX 4500 nicht in sonderlich aktuellen Versionen gibt (gab?).
Die Karte ist ja nicht mehr sonderlich aktuell, aber war zusammen mit Backplane und CPU-Karte geschenkt
(IEI PCIE-Q350 + Backplane, Core2Quad Q6600) und sollte eine annehmbare Performance haben, zumindest in 2D.

Gruß,

Holm
 
Also da sollte doch einer zu finden sein: http://www.nvidia.com/object/unix.html

Ich weiß nun nicht, welcher Treiber für deine Karte notwendig ist... Es gibt bei den Packages bzw. Ports auch mehrere Versionen des Treibers. Aber man ruhigen Gewissens die Treiber von nVidia direkt installieren, das gibt im Normalfall keine Probleme bei Updates.
 

Nein...da ist im Prinzip Keiner zu finden.
Ich hatte irgend so ein Ding runter geladen und versucht zu installieren, hat mich angespuckt das die GPU meiner Karte nur in der legacy 304.xx Version unterstützt würde, also die 304.125 für amd64.
Das Ding bröselt aber beim Übersetzen herum:

Code:
nvidia_subr.c:904:5: error: implicit declaration of function 'VM_OBJECT_LOCK' is
  invalid in C99 [-Werror,-Wimplicit-function-declaration]
  VM_OBJECT_LOCK(sc->AGP_object);
  ^
nvidia_subr.c:906:5: error: implicit declaration of function 'VM_OBJECT_UNLOCK'
  is invalid in C99 [-Werror,-Wimplicit-function-declaration]
  VM_OBJECT_UNLOCK(sc->AGP_object);
  ^
nvidia_subr.c:906:5: note: did you mean 'VM_OBJECT_LOCK'?
nvidia_subr.c:904:5: note: 'VM_OBJECT_LOCK' declared here
  VM_OBJECT_LOCK(sc->AGP_object);
  ^

Das Zeuch ist in den Sourcen nirgends definiert, im System aber auch nicht (mehr)

Es gibt also für 10.1 aufwärts keinen funktionierenden Treiber von Nvidia, und der 304.123 war der letzte den ich auf 9.x laufen hatte...mit den etwas speziellen Features..

Gruß,

Holm
 
...nein.
Ich habe patches für andere nvidia Treiber und zumindest das obige Problem behoben, es knallt ein paar Files später mit irgendwelchem C++ Scheiß durch den ich nicht durchsteige. Dieses Problem ist dann eher clang zuzuschreiben. Der Compiler ist also gewissermaßen dafür kaputt und müßte wieder passend gemacht werden.
Sorry daß ich nicht genauer werden kann, die betreffende Maschine ist gerade aus. Der Energieversorger hat wegen "Schaltarbeiten" kurze Stromausfälle angekündigt .. also schreibe ich vom Notebook.

Gruß,

Holm
 
Das liest sich so, dass sich das Xorg-Interface geändert hat. Das hat nichts mit dem Compiler zu tun sondern damit, dass der Treiber für eine Ältere Version von Xorg geschrieben ist.
 
Ich habe jetzt das Ding aus den Ports installiert, läuft erst einmal..was aber unklar bleibt ist die gesamte Doku zum Xserver inkl. seiner on-the-fly config generation.

Die Probleme mit den Server von NvidiasWebseite snd übrigens dieser Art hier:

Code:
Index: x11/nvidia-driver/Makefile

===================================================================

--- x11/nvidia-driver/Makefile (revision 371112)

+++ x11/nvidia-driver/Makefile (working copy)

@@ -176,6 +182,12 @@ post-patch: .SILENT

${REINPLACE_CMD} -e 's/virtual_address, size,/& 0,/' \

${WRKSRC}/src/nvidia_subr.c

.endif

+# FreeBSD src SVN r273377 forbids overspecifying CTLTYPE_* for sysctls

+.if ${OSVERSION} > 1100039 || (${OSVERSION} > 1001501 && ${OSVERSION} < 1100000)

+ ${REINPLACE_CMD} -E '/SYSCTL_ADD_(STRING|UINT)/,/;/ \

+ s/CTLTYPE_(STRING|UINT) \| //' \

+ ${WRKSRC}/src/nvidia_sysctl.c

+.endif

# Fix stack buffer overflow in nvidia_sysctl_bus_type()

.if ${NVVERSION} < 3192300

${REINPLACE_CMD} -E '/bus_type\[4\]/d ; \



..ein Patch für einen anderen Blob den ich gefunden habe. Ich habe allerdings keinen Plan davon was der macht...



Es bleibt noch ien Haufen zu tun, Bind10..oder was?



Gruß,

Holm
 
Na, wenn's läuft, ist doch alles gut. Die Config von Xorg musst du eigentlich auch nur anfassen, wenn irgendwas nicht geht...
 
Das Thema ist etwas komplexer, ich versuche mich aber kurz zu fassen: Das Nvidia-Kernelmodul besteht aus zwei Teilen. Einmal den Kern, in dem die eigentliche Magie liegt. Diesen Kern bekommt man nur als Binärcode, genauer gesagt als rohe Objektdatei. Eben der Blob. In den Sourcen ist es src/nv-kernel.o. Man munkelt, dass der Kern auf allen Plattformen nahezu gleich ist. Dieser Kern ist einen im Code vorliegenden Wrapper eingebunden, der die Schnittstelle zum jeweiligen Kernel bereitstellt. Das sind die Sourcedateien in src/.
Diesen Wrapper im Source anzubieten hat zwei Vorteile. Einmal kann Nvidia die GPL des Linuxkernel umgehen. Die Argumentation ist, dass der infektiöse Charakter der GPL sich nur auf den Wrapper auswirkt, da nur dieser ein abgeleitetes Werk ist. Der Wrapper ist damit implizit duallizensiert, einmal unter der proprietären Lizenz und einmal unter GPL. Da der Blob nur Schnittstellen des Wrappers nutzt und keine des Kernels, ist er kein abgeleitetes Werk des Kernels und wird damit nicht von der GPL infiziert. Hier greift die proprietäre Lizenz. Es gibt natürlich Personen, die dieser Argumentation nicht folgen.
Der andere Vorteil liegt darin, dass Nvidia auf Schnittstellen tief innerhalb des Kernel zurückgreifen muss. Dazu gehören unter anderem Funktionen des VM, die selbst bei FreeBSD weit ab jeder stabilen ABI / API sind. Die Distributoren können des Wrapper daher selbst patchen und Änderungen der Schnittstellen einarbeiten, ohne das Nvidia sofort tätig werden muss. Der Port macht nichts anderes. Wenn deine FreeBSD-Version größer als 1001501 ist, werden einige Aufrufe ins Sysctl-Subsystem verändert, damit sie auf den Kernel passen. Nvidia eigene Version scheint diese Veränderungen nicht zu haben, daher baut das Kernelmodul aus ihren Quellen nicht.
 
  • Like
Reaktionen: lme
Gut erklärt Yamagi! Hier finde ich dann den Weg, den AMD unter Linux neu mit "amdgpu" geht wiederum vorbildlich. Der offene wie auch der proprietären Treiber verwenden einen gemeinsamen Unterbau. Ich könnte mir vorstellen, dass AMD damit vielleicht auch mal FreeBSD Treiber offiziell herausgeben wird.
 
Zurück
Oben