Zpool Problem mit Input/output error

bsd4me

Well-Known Member
Hallo,

ich habe einen zfs pool am Rechner. Eine Patte - nun sie meldet einen Fehler:

# zpool status -v
pool: zroot
state: ONLINE
status: One or more devices has experienced an error resulting in data
corruption. Applications may be affected.
action: Restore the file in question if possible. Otherwise restore the
entire pool from backup.
see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-8A
scan: scrub repaired 0B in 00:28:33 with 0 errors on Mon Apr 20 17:52:41 2026
config:

NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
gpt/rada0 ONLINE 0 0 0

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

/path/to/eclipse/R4_32/eclipse.platform.releng.aggregator/rt.equinox.p2/bundles/org.eclipse.equinox.p2.tests/testData/localizationtests/foobundle_default/OSGI-INF

ich also zpool scrub und zpool clear gemacht - kein Fehler mehr - reboot - alles okay.

# zpool status
pool: zroot
state: ONLINE
scan: scrub repaired 0B in 00:28:33 with 0 errors on Mon Apr 20 17:52:41 2026
config:

NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
gpt/rada0 ONLINE 0 0 0

errors: No known data errors

Wenn ich aber das Verzeichnis löschen möchte, passiert folgendes:

# rm -rf eclipse.platform.releng.aggregator/
rm: eclipse.platform.releng.aggregator/rt.equinox.p2/bundles/org.eclipse.equinox.p2.tests/testData/localizationtests/foobundle_default/OSGI-INF: Input/output error
rm: eclipse.platform.releng.aggregator/rt.equinox.p2/bundles/org.eclipse.equinox.p2.tests/testData/localizationtests/foobundle_default: Directory not empty
rm: eclipse.platform.releng.aggregator/rt.equinox.p2/bundles/org.eclipse.equinox.p2.tests/testData/localizationtests: Directory not empty
rm: eclipse.platform.releng.aggregator/rt.equinox.p2/bundles/org.eclipse.equinox.p2.tests/testData: Directory not empty
rm: eclipse.platform.releng.aggregator/rt.equinox.p2/bundles/org.eclipse.equinox.p2.tests: Directory not empty
rm: eclipse.platform.releng.aggregator/rt.equinox.p2/bundles: Directory not empty
rm: eclipse.platform.releng.aggregator/rt.equinox.p2: Directory not empty
rm: eclipse.platform.releng.aggregator/: Directory not empty

und dann wieder:

# zpool status -v
pool: zroot
state: ONLINE
status: One or more devices has experienced an error resulting in data
corruption. Applications may be affected.
action: Restore the file in question if possible. Otherwise restore the
entire pool from backup.
see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-8A
scan: scrub repaired 0B in 00:28:33 with 0 errors on Mon Apr 20 17:52:41 2026
config:

NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
gpt/rada0 ONLINE 0 0 0

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

/path/to/eclipse/R4_32/eclipse.platform.releng.aggregator/rt.equinox.p2/bundles/org.eclipse.equinox.p2.tests/testData/localizationtests/foobundle_default/OSGI-INF

Woran kann das liegen??

VG Norbert
 
Du gehst in den Ordner bzw. die tiefste Stelle des Marianengrabens und dann mal umschauen, was da drin Probleme macht.
Dann da drin rm -rf und eine Ebene höher, wieder rm -rf usw. bis du was gefunden hast...oder den ganzen Pfad löschen konntest.

Dann aus dem Pfad rausgehen, snapshotten, den alten snapshot löschen und erneut scrubben. Wenn bis dahin alles tutti, sollte kein Hardwareschaden vorhanden sein.
 
du hast eine korrupte Datei und weil sie korrupt ist, kann sie nicht angesprochen, also nicht gelöscht werden und weil sie nicht gelöscht werden kann, kann auch dein Verzeichnis nicht gelöscht werden, weil es nicht leer ist.

So verstehe ich die Meldungen.
Nun hast du geschrieben, dass dein Pool nur diese eine Platte enthält und ich sehe, dass es auch der ROOT-Pool ist.
Reparaturen an Dateisystemen sind immer problematisch und bei ZFS vielleicht unmöglich, denn scrub != fsck. Den Rat nach Backups, will ich hier gar nicht erst geben, denn der käme nun doch zu spät, oder doch beinahe.

Eine weitere Möglichkeit wäre noch, den Pool in ein anderes System einzubinden und dort zu untersuchen und gegebenenfalls Daten zu löschen.
Nicht korrupte Daten lassen sich so auch gut sichern.

So ein Sichern könnte zB auch innerhalb des Pools auf ein neu erstelltes Dataset erfolgen (wenn ausreichend Platz etc). Anschließendes Löschen des alten Datasets könnte vielleicht gelingen, wenn rm versagt, weil das auf einer ganz anderen Ebene statt findet.

Ebenso dd. Mit dd kannst eine Datei überschreiben und wenn wenn du die korrupte Datei nicht löschen kannst, gelingt es vielleicht, eine neue Datei mit einer Anzahl Nullen und gleichem Namen zu erzeugen. Die ist dann nicht korrupt und das Problem damit womöglich schon gelöst.

Insgesamt benutze ich vier externe Platten für meine regelmäßigen Sicherungen. Eine davon macht gelegentlich solche Sachen, wie von dir beschrieben. In meinem Fall ist das nicht schlimm. Ich möchte damit nur sagen, dass ich das Verhalten genau auf eine HW beschränken kann.
Wenn du dein Problem auch lösen kannst, ist aus meiner Sicht doch dringend ein review der HW a la mode @gadean zu empfehlen.
 
Zurück
Oben