Ich arbeite für einen Hersteller medizinischer Geräte. Wir haben auf einer einzigen Maschine einige Partitionen, die SquashFS sind (für Betriebssystemdateien, zwei Betriebssystempartitionen, schreibgeschütztes SquashFS), einige Bootpartitionen (3x FAT32) und eine DATA-Partition (120 GB, rw, ext4).
Die Sache ist, dass es sich um ein Gerät handelt, das in Krankenhäusern verwendet wird. Manchmal wird das Gerät ausgesteckt und manchmal treten zufällige Probleme auf, die mit einer Datenbeschädigung auf der DATA-Partition zusammenhängen. Die medizinische Software protokolliert eine Menge, daher nehme ich an, dass manchmal ein Schreibvorgang stattfindet und die Maschine möglicherweise hart heruntergefahren wird, was dazu führt, dass benachbarte Dateien irgendwie beschädigt werden.
Wie auch immer, ich dachte, vielleicht könnte es helfen, ext4 auf der Datenpartition in ein Copy-on-Write-FS wie ZFS zu ändern. Eine Frage ist jedoch: Erfordert ZFS, dass die gesamte Festplatte ZFS ist (das Zpool-Ding), oder können wir eine ZFS-Partition auf derselben Festplatte mit anderen Partitionen mit einem anderen FS koexistieren lassen?
Danke!
Antwort1
Sie müssen nicht eine ganze Festplatte als ZFS formatieren. Ein Zpool kann aus jeder beliebigen Kombination ganzer Festplatten und Partitionen erstellt werden.
Wenn Sie ein ZFS-Mitglied mit anderen Partitionen auf derselben Festplatte gemeinsam nutzen, sollten Sie bedenken, dass auch die Eingabe-/Ausgabeleistung (I/O) geteilt wird.
In der einfachsten Konfiguration können Sie einen Zpool haben, der aus einem Vdev besteht, das nur eine Partition oder ein Gerät ist. Ich habe einen Computer, der wie folgt formatiert ist:
root@craptop [~]# zpool status -P
pool: rpool
state: ONLINE
scan: scrub repaired 0B in 00:00:30 with 0 errors on Sun Nov 14 00:24:31 2021
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
/dev/disk/by-id/ata-LITEONIT_LSS-24L6G_S45N8470Z1ZNDW089292-part4 ONLINE 0 0 0
errors: No known data errors
Das ZFS-Mitglied ist eine Partition unter /dev/sda
:
root@craptop [~]# blkid /dev/sda4
/dev/sda4: LABEL="rpool" UUID="3735190874680832032" UUID_SUB="15024274719792138025" TYPE="zfs_member" PARTUUID="a9a5ae01-90cd-4945-a9dd-fbccbfbfc075"
root@craptop [~]# lsblk -p
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
/dev/sda 8:0 0 22.4G 0 disk
├─/dev/sda1 8:1 0 1000K 0 part
├─/dev/sda2 8:2 0 512M 0 part /boot/efi
├─/dev/sda3 8:3 0 1G 0 part /boot
└─/dev/sda4 8:4 0 20.9G 0 part
/dev/sdb 8:16 0 931.5G 0 disk
├─/dev/sdb1 8:17 0 1000M 0 part
├─/dev/sdb2 8:18 0 260M 0 part
├─/dev/sdb3 8:19 0 1000M 0 part
├─/dev/sdb4 8:20 0 128M 0 part
├─/dev/sdb5 8:21 0 884G 0 part
├─/dev/sdb6 8:22 0 25.2G 0 part
└─/dev/sdb7 8:23 0 20G 0 part
/dev/sdc 8:32 1 58.6G 0 disk
└─/dev/sdc1 8:33 1 58G 0 part
Ohne ein redundantes oder Paritäts-vdev (Mirror, Raidz, Raidz2, Draid usw.) kann ZFS stille Datenbeschädigungen erkennen, aber nicht korrigieren, da die einzige Kopie der Daten fehlerhaft ist.
Sie sollten die Erstellung eines Zpools mit einem oder mehreren redundanten vdevs in Erwägung ziehen.
Hier ist ein weiterer meiner Computer mitRAID 1Äquivalente vdevs, sogenannte Mirrors:
root@box1 [~]# zpool status -P
pool: fastpool
state: ONLINE
scan: scrub repaired 0B in 00:04:39 with 0 errors on Sun Nov 14 00:28:40 2021
config:
NAME STATE READ WRITE CKSUM
fastpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
/dev/nvme0n1p3 ONLINE 0 0 0
/dev/nvme1n1p3 ONLINE 0 0 0
errors: No known data errors
pool: slowpool
state: ONLINE
scan: scrub repaired 0B in 05:45:50 with 0 errors on Sun Nov 14 06:09:52 2021
config:
NAME STATE READ WRITE CKSUM
slowpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
/dev/sda1 ONLINE 0 0 0
/dev/sdb1 ONLINE 0 0 0
logs
/dev/nvme0n1p5 ONLINE 0 0 0
/dev/nvme1n1p5 ONLINE 0 0 0
cache
/dev/nvme0n1p4 ONLINE 0 0 0
/dev/nvme1n1p4 ONLINE 0 0 0
errors: No known data errors
Erste Schritte
- Einrichten eines ZFS-Speicherpoolsvon Aden Padilla
man 7 zpoolconcepts
Weitere Informationen
- ZFS 101 – Grundlagen zu ZFS-Speicher und -Leistungvon Jim Salter
- ZFS: Sie sollten gespiegelte vdevs verwenden, nicht RAIDZ.von Jim Salter