1
0
Fork 0
mirror of https://git.ludikovsky.name/git/presentation-zfs-intro.git synced 2024-05-22 21:35:25 +02:00
presentation-zfs-intro/zfs-intro.md

185 lines
4 KiB
Markdown
Raw Permalink Normal View History

2021-11-03 17:00:29 +01:00
ZFS Einführung
==============
Inhalt
------
::: {.container}
::: {.col}
1. Geschichte
2. Pools
3. Datasets
2021-11-03 17:00:29 +01:00
- Volumes
4. Snapshots
:::
::: {.col}
6. Caches
7. Besondere Features
2021-11-03 17:00:29 +01:00
- Deduplikation
- Kompression
:::
:::
*Nicht* behandelt
-----------------
- Austausch von Platten
2022-01-26 21:14:06 +01:00
- Eingebautes Sharing via NFS/CIFS/iSCSI
- Root auf ZFS
2022-01-26 21:14:06 +01:00
- Verschlüsselung
2021-11-03 17:00:29 +01:00
2021-11-05 17:19:19 +01:00
Geschichte
==========
Geschichte
----------
- 2001: Beginn der Entwicklung bei Sun für Solaris
- 2005: Erster Public Release, Code wird Open Source
- 2006-2010: Portierung auf Linux, MacOS, FreeBSD
- Ab 2010: Oracle macht ZFS zu Closed Source, offene Entwicklung
weiter als OpenZFS
Features
========
Pools
-----
- ZFS ist Dateisystem und Volume Manager gleichzeitig
- Basis: Blockdevices
- Blockdevices können zu `vdev`s zusammengefasst werden
- Blockdevices und `vdev`s bilden zusammen einen Storage Pool
- Viele Einstellungen schon hier möglich, werden runter vererbt
2021-11-05 17:19:19 +01:00
Demo
----
<aside class="notes">
- Einfachen Stripe-Pool anlegen:
`zpool create -oashift=12 -R/mnt tank /dev/sd{b,c,d,e}`
- "Raid-10" Pool:
`zpool create -oashift=12 -R/mnt tank mirror /dev/sd{b,c} mirror /dev/sd{d,e}`
- RAID-Z ("RAID-5") Pool:
`zpool create -oashift=12 -R/mnt tank raidz /dev/sd{b,c,d,e}`
- Allgemeine Einstellungen:
- `zfs get compression tank`
- `zfs get dedup tank`
- `zfs get all tank`
2021-11-05 17:19:19 +01:00
</aside>
2021-11-05 17:19:19 +01:00
Datasets
--------
- Datasets entsprechen eigentlichen Dateisystemen
- Können verschachtelt werden
- Settings eines Datasets werden vererbt
- Standardmäßig so groß wie das übergeordnete Dataset
- Quotas können gesammt, pro User oder pro Gruppe vergeben werden
2021-11-05 17:19:19 +01:00
Volumes
-------
2021-11-05 17:19:19 +01:00
- Spezielle Datasets
- Verhalten sich wie Blockdevices
- Gerne genutzt für VM Images, Swap Space, ...
2021-11-05 17:19:19 +01:00
Snapshots
2021-11-05 17:19:19 +01:00
---------
- Werden durch CoW ermöglicht
- Halten den exakten Stand fest
- Sind keine Kopie sondern der eingefrorene Zustand
- Können auf andere Rechner, Pools, Datasets übertragen werden
2021-11-05 17:19:19 +01:00
<aside class="notes">
CoW
: Copy on Write, neue Daten überschreiben nicht den vorhandenen Block
sondern werden in einen neuen Block geschrieben und Referenzen auf
den alten werden bereinigt.
</aside>
Demo
----
<aside class="notes">
- Dataset anlegen: `zfs create tank/zfsintro`
- Dataset mit Quota: `zfs create -o quota=1G tank/zfsintro/data`
- Quota ändern: `zfs set quota=5G tank/zfsintro`
- Quota für User: `zfs set userquota@backup=1G tank/zfsintro`
- Volume anlegen: `zfs create -b 4096 -V 2G tank/swap`
- Snapshot anlegen: `zfs snaphot tank/zfsintro/data@snap1`
- Snapshot in `$DATASET/.zfs/snapshot`, Readonly
</aside>
Caches: RAM
-----------
- ARC Read-Cache, Default: zwischen `max(32MB, 1/32 RAM)` und ½ RAM
- Write-Cache, schreibt zumindest alle 5-30 Sekunden auf die Platte
Caches: Disken
--------------
- Pro Pool
- Schnelle Medien (SSD, M2, ...)
- Lesen: L2ARC (Level 2 ARC), kann auch Dedup-Tabelle halten
- Schreiben: SLOG als Schreib-Cache
- Sollte gespiegelt sein, sonst Risiko des Datenverlusts
- Können im Betrieb hinzugefügt und entfernt werden
<aside class="notes">
ARC
: Adaptive Replacement Cache
</aside>
2021-11-05 17:19:19 +01:00
Besondere Features
==================
Deduplikation
-------------
- Prüfsumme über Blöcke, wenn gleich wird nur 1 Kopie gespeichert
- Keine rückwirkende Änderung
2022-01-26 21:14:06 +01:00
- Braucht **viel** RAM (👍·π: 5GB pro 1TB Daten)
- Sinnvoll für Archive
2021-11-05 17:19:19 +01:00
Kompression
-----------
- Wie Dedup auf Block-Level
- Wie Dedup keine rückwirkende Änderung
- Unterschiedliche Verfahren je nach Anforderung vorhanden
- *Sehr* sinnvoll für Datasets mit viele Text-Dateien (Logs,
Mail-Spool, ...)
2021-11-03 17:00:29 +01:00
Links
=====
2021-11-05 17:19:19 +01:00
Links
-----
ZFS Demo VM
: https://cloud.usrspace.at/s/eB4ifqQBNtLz322
Wikipedia zu ZFS
: https://en.wikipedia.org/wiki/ZFS
2021-11-05 17:19:19 +01:00
2022-01-26 21:14:06 +01:00
ZFS Administration (Aaron Toponce)
: https://pthree.org/2012/12/04/zfs-administration-part-i-vdevs/
2021-11-03 17:00:29 +01:00
Präsentation ist [CC-BY-SA
4.0](https://creativecommons.org/licenses/by-sa/4.0/legalcode.de)
Fragen?
=======