ZFS und CMR/SMR

paccoderpster

Lieutenant
Registriert
Dez. 2013
Beiträge
948
tl;dr: Kann im einem ZFS-Pool CMR und SMR vermischt werden?

Hallo,

nachdem ich meinen Datenserver/Wohnzimmer-PC und Gameserver unter Windows 10 mit Hyper-V fusioniert habe, musste ich von Ubuntu Server auf CentOS wechseln, da Ubuntu Server nur unter Windows 10 1803 in Hyper-V läuft. Für CentOS habe ich mich entschieden, weil ich damit einfach Erfahrungen sammeln wollte.

Windows muss ich verwenden, da Netflix nur im Edge mit 1080p läuft. Hyper-V war die Option, weil ich die Festplatte als physische Datenträger an die virtuelle Maschine übergeben will. Mit Virtual Box habe ich das nicht hingekriegt.

Leider musste ich durch den Umstieg von Ubuntu Server auf CentOS (und damit ein Wechsel von apt auf yum) auf mhddfs verzichten. Mit mhddfs konnte ich meine Datenträger zu einem logischen Datenträger fusionieren, ohne dass die Dateien (wie z.B. bei LVM) willkürlich gesplittet werden sondern auf den jeweiligen Festplatten stets ganze Dateien vorhanden sind. Jetzt verwende ich ein ZFS-Pool ohne Redundanz, in der Hoffnung dass der Ausfall einer Festplatte nicht gleich alle Dateien unbrauchbar macht. Eventuell liege ich damit aber auch komplett daneben. Das wäre aber auch nicht wirklich schlimm.

Als Backup verwende ich momentan eine Seagate BarraCuda Compute 4TB mit SMR, daher kann ich auf eine Redundanz im ZFS-Pool verzichten. Die drei Datenfestplatten (1+1+2 TB) im ZFS-Pool verwenden CMR. Mein Plan war es, die 4TB mit SMR zu gegebener Zeit in den Verbund aufzunehmen und für die Backups eine 8TB HDD zu verwenden. Allerdings wird ja davon abgeraten, SMR und CMR Festplatten in einem RAID zu vermischen und daher nach viel zu langer Rede meine Frage: Kann in einem ZFS-Pool (ob ohne oder mit Redundanz) CMR und SMR problemlos vermischt werden?

Generell bringe ich mir im Linuxbereich viel selber bei, daher kann mein Lösungsweg grundsätzlich quatsch sein und jemand von euch hat eine bessere Idee.

LG
Pacco
 
paccoderpster schrieb:
Jetzt verwende ich ein ZFS-Pool ohne Redundanz, in der Hoffnung dass der Ausfall einer Festplatte nicht gleich alle Dateien unbrauchbar macht
Wenn dir eine platte Stirbt, ist alles weg.
paccoderpster schrieb:
Allerdings wird ja davon abgeraten, SMR und CMR Festplatten in einem RAID zu vermischen und daher nach viel zu langer Rede meine Frage: Kann in einem ZFS-Pool (ob ohne oder mit Redundanz) CMR und SMR problemlos vermischt werden?
SMR hat weder in HW Raid noch SW Raid was zu suchen, im besten Fall bricht dir die Performance komplett ein, im schlimmsten Crasht dir das RAID nach kurzer Zeit
 
  • Gefällt mir
Reaktionen: DiedMatrix und paccoderpster
  • Gefällt mir
Reaktionen: paccoderpster
@Ebrithil Ich werde mir das MergerFS anschauen. Wenn das ähnlich wie mhddfs funktioniert und ich bestehende Dateisysteme fusioniere, welche wären denn sinnvoll? Ich habe bisher btrfs verwendet, das unter CentOS 8 nicht verfügbar ist. Wäre ein klassisches ext4 oder ein xfs zukunftssicherer bzw. universeller?
 
Zu den offensichtlichen "Fehlern" bei deinem ZFS Setup wurde schon das meiste gesagt und nein du kannst nicht beliebig Laufwerke zu einem ZFS Pool hinzufügen oder entfernen. Hinzufügen jederzeit, entfernen nein (naja streng genommen schon aber das ist ziemliche Frickelei und Aufwand und keine Ahnung ob das aktuell auch mit ZFSonLinux überhaupt geht).
mhddfs, mergerfs, etc sind alles "union filesystems", weitere Alternativen wären aufs2, overlayfs. Netter Artikel darüber z.B. hier

SMR und sich ändernde Daten sind selten eine gute Idee, völlig unabhängig vom Dateisystem. Du könntest aber regelmäßig Snapshots mit ZFS anlegen und die Snapshots auf die SMR Disk verschieben mittels zfs send|receive.
Beim nächsten Update in ner Woche oder wann auch immer mountest die SMR, löscht zuerst alle alten/vorhandenen Snapshots und schreibst dann wieder die Snapshots drauf. Quasi jedes Mal ein Vollbackup was lange dauert. SMRs sind halt Archiv-HDDs oder auch WORM ( Write Once, Read Many).
 
Noch ein Nachtrag zum Sichern von ZFS-Snapshots: das geht auch inkrementell. Ich verwende eine Kombination aus 'zfsnap' (automatisches erstellen und entfernen von Snapshots nach x Tagen/Wochen/Monaten) und 'zxfer' (ein wrapper um zfs send/receive, der u.a. inkrementell und auf wunsch auch via ssh kopieren und auf der Quelle verschwundene Snapshots auch am Ziel löschen kann).

für lokale Backups würde ein einfacher Cronjob reichen:
zfSnap -d -a 1w -r pool && zxfer -dF -R pool pool-backup

(löscht abgelaufene Snapshots von "pool", legt einen neuen rekursiven Snapshot mit 1 Woche Vorhaltezeit an, kopiert inkrementell nach "pool-backup" und löscht dort ebenfalls alle überzähligen Snapshots)

Das schöne an 'zfsnap' ist, dass es die Snapshots einfach anhand des Namens verwaltet (benennt sie einfach "<timestamp>--<ttl>"), sodass man problemlos auch eigene Snapshots anlegen kann, ohne Angst dass die einem automatisch weggelöscht werden (solang man sie eben nicht genau nach diesem Schema benennt).

'zxfer' kümmert sich auch automatisch darum ob das send/receive inkrementell funktioniert oder ob ein full-backup nötig ist. Kommt zwar eigentlich ein BSD-Ecke, ist aber ein stinknormales 'sh'-Skript, dass auf den meisten Linux-Ditros problemlos oder mit minimalen Anpassungen laufen sollte.
 
Zuletzt bearbeitet:
Zurück
Oben