mirror of
https://git.ludikovsky.name/git/presentation-zfs-intro.git
synced 2024-09-28 10:15:26 +02:00
185 lines
4 KiB
Markdown
185 lines
4 KiB
Markdown
ZFS Einführung
|
|
==============
|
|
|
|
Inhalt
|
|
------
|
|
|
|
::: {.container}
|
|
::: {.col}
|
|
1. Geschichte
|
|
2. Pools
|
|
3. Datasets
|
|
- Volumes
|
|
4. Snapshots
|
|
:::
|
|
|
|
::: {.col}
|
|
6. Caches
|
|
7. Besondere Features
|
|
- Deduplikation
|
|
- Kompression
|
|
:::
|
|
:::
|
|
|
|
*Nicht* behandelt
|
|
-----------------
|
|
|
|
- Austausch von Platten
|
|
- Eingebautes Sharing via NFS/CIFS/iSCSI
|
|
- Root auf ZFS
|
|
- Verschlüsselung
|
|
|
|
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
|
|
|
|
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`
|
|
|
|
</aside>
|
|
|
|
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
|
|
|
|
Volumes
|
|
-------
|
|
|
|
- Spezielle Datasets
|
|
- Verhalten sich wie Blockdevices
|
|
- Gerne genutzt für VM Images, Swap Space, ...
|
|
|
|
Snapshots
|
|
---------
|
|
|
|
- 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
|
|
|
|
<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>
|
|
|
|
Besondere Features
|
|
==================
|
|
|
|
Deduplikation
|
|
-------------
|
|
|
|
- Prüfsumme über Blöcke, wenn gleich wird nur 1 Kopie gespeichert
|
|
- Keine rückwirkende Änderung
|
|
- Braucht **viel** RAM (👍·π: 5GB pro 1TB Daten)
|
|
- Sinnvoll für Archive
|
|
|
|
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, ...)
|
|
|
|
Links
|
|
=====
|
|
|
|
Links
|
|
-----
|
|
|
|
ZFS Demo VM
|
|
: https://cloud.usrspace.at/s/eB4ifqQBNtLz322
|
|
|
|
Wikipedia zu ZFS
|
|
: https://en.wikipedia.org/wiki/ZFS
|
|
|
|
ZFS Administration (Aaron Toponce)
|
|
: https://pthree.org/2012/12/04/zfs-administration-part-i-vdevs/
|
|
|
|
Präsentation ist [CC-BY-SA
|
|
4.0](https://creativecommons.org/licenses/by-sa/4.0/legalcode.de)
|
|
|
|
Fragen?
|
|
=======
|