bisher dachte ich ZFS würde die Checksummen beim Lesen der jeweiligen Datei überprüfen. Um das zu testen habe ich auf einer kleinen Partition einen Pool erstellt und eine Datei mit ca 90% Größe des verfügbaren Platzes erstellt. Dann mit "shasum" einen Hash davon ermittelt. Nun simuliere ich mittels schreibens genau eines Bytes in /dev/sd*? einen Fehler. "shasum" gibt mir jetzt einen abweichenden Hash während "zpool status" keine Probleme meldet. Erst wenn ich jetzt "zpool scrub" durchführe wird der Fehler bemerkt.
Kann ich ZFS irgendwie dazu bringen, die Checksummen bei jedem Lesevorgang zu überprüfen?
Hier die Vorgehensweise:
Hier das Programm zur Bytemanipulation: 41255root@debiantest:~# zpool create -f -m /zfs-single zfs-single 1ddfc8d1-10ed-a643-a88d-c11f74b17483
root@debiantest:~# dd if=/dev/zero of=/zfs-single/testdatei bs=1M count=800
800+0 Datensätze ein
800+0 Datensätze aus
838860800 Bytes (839 MB, 800 MiB) kopiert, 9,86647 s, 85,0 MB/s
root@debiantest:~# shasum /zfs-single/testdatei
837b0910bd47c4dfb20d36b759beb4a73edc4a93 /zfs-single/testdatei
root@debiantest:~# ./disktest /dev/sda2 34 1000000003
vorher 00
root@debiantest:~# sync; echo 3 > /proc/sys/vm/drop_caches
root@debiantest:~# shasum /zfs-single/testdatei
2518c22cf9bd0785e752a7c0d1e534e790d29fdf /zfs-single/testdatei
root@debiantest:~# zpool status
pool: zfs-single
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
zfs-single ONLINE 0 0 0
1ddfc8d1-10ed-a643-a88d-c11f74b17483 ONLINE 0 0 0
errors: No known data errors
root@debiantest:~# zpool scrub zfs-single
root@debiantest:~# zpool status
pool: zfs-single
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:00:03 with 1 errors on Fri Feb 5 18:12:20 2021
config:
NAME STATE READ WRITE CKSUM
zfs-single ONLINE 0 0 0
1ddfc8d1-10ed-a643-a88d-c11f74b17483 ONLINE 0 0 1
errors: 1 data errors, use '-v' for a list