diff --git a/knowledge base/zfs.md b/knowledge base/zfs.md
index ed9f42e..0a85ddf 100644
--- a/knowledge base/zfs.md
+++ b/knowledge base/zfs.md
@@ -1,17 +1,16 @@
# ZFS
-## Table of contents
-
1. [TL;DR](#tldr)
1. [Gotchas](#gotchas)
-1. [Manjaro](#manjaro)
-1. [Raspberry Pi](#raspberry-pi)
-1. [Mac OS X](#mac-os-x)
+1. [Setup](#setup)
1. [Further readings](#further-readings)
1. [Sources](#sources)
## TL;DR
+
+ Usage
+
Pool-related:
```sh
@@ -149,29 +148,43 @@ sudo chown "$USER":'users' '/vault/data'
sudo zpool export 'vault'
```
+
+
## Gotchas
- One **cannot shrink** an existing pool.
- One **cannot remove vdevs** after a pool is created.
-- More than 9 drives in one RAIDZ can cause performance regression; use 2 RAIDZ with 5 drives each instead of 1 RAIDZ with 10 drives to avoid this.
+- More than 9 drives in one RAIDZ pool can cause performance regression.
+ Split drives up into multiple, possibly balanced, pools when reaching the 10 disks mark. E.g. use 2 RAIDZ pools with
+ 5 drives each instead of a single pool with 10 drives.
- One can **add** hot spares to a RAIDZ1 or RAIDZ2 pool.
- One can replace a drive with a bigger one (but **not a smaller one**) one at a time.
- One can mix MIRROR, RAIDZ1 and RAIDZ2 in a pool.
-- Datasets needs the mountpoint to be an **empty** folder to be mounted, unless explicitly mounted with the -O option of `zfs mount`.
-- Since the ZFS kernel modules are upgraded much less than the kernel (at least on Linux), **always make sure** the kernel version and the ZFS modules are compatible and upgraded together.
+- Datasets needs the mountpoint to be an **empty** folder to be mounted, unless explicitly mounted with `zfs mount`'s -O
+ option.
+- The ZFS kernel modules are upgraded **much less frequently** than the kernel (at least on Linux).
+ **Always make sure** one's kernel version and ZFS modules are compatible and upgraded together.
-## Manjaro
+## Setup
-Manjaro has prebuilt modules for ZFS, which package is the kernel's package postfixed by `-zfs` (e.g. for `linux-515` it is `linux515-zfs`)
+
+ Manjaro
+
+Manjaro has prebuilt modules for ZFS, which package is the kernel's package postfixed by `-zfs` (e.g. `linux515-zfs` for
+for `linux-515`).
```sh
# Install the modules' packages for all installed kernels.
sudo pamac install $(mhwd-kernel --listinstalled | grep '*' | awk -F '* ' '{print $2}' | xargs -I {} echo {}-zfs)
```
-## Raspberry Pi
+
-The `zfs-dkms` package cannot handle downloading and installing the Raspberry Pi kernel headers automatically, so they have to be installed prior of the ZFS-related packages:
+
+ Raspberry Pi
+
+The `zfs-dkms` package cannot handle downloading and installing the Raspberry Pi kernel headers automatically, so they
+have to be installed prior of the ZFS-related packages:
```sh
sudo apt install --upgrade 'raspberrypi-kernel' 'raspberrypi-kernel-headers'
@@ -181,7 +194,10 @@ sudo apt install 'zfs-dkms' 'zfsutils-linux'
To be tested: If the running kernel has no updates, the packages installation might be performed together.
-## Mac OS X
+
+
+
+ Mac OS X
```sh
# On M1 devices, this requires system extensions to be enabled in the Startup
@@ -192,23 +208,23 @@ brew install --cask 'openzfs'
Pool options (`-o option`):
- `ashift=XX`
- - XX=9 for 512B sectors, XX=12 for 4KB sectors, XX=16 for 8KB sectors
- - [reference](http://open-zfs.org/wiki/Performance_tuning#Alignment_Shift_.28ashift.29)
+ - XX=9 for 512B sectors, XX=12 for 4KB sectors, XX=16 for 8KB sectors
+ - [reference](http://open-zfs.org/wiki/Performance_tuning#Alignment_Shift_.28ashift.29)
- `version=28`
- - compatibility with ZFS on Linux
+ - compatibility with ZFS on Linux
Filesystem options (`-O option`):
- `atime=off`
- `compression=on`
- - activates compression with the default algorithm
- - pool version 28 cannot use lz4
+ - activates compression with the default algorithm
+ - pool version 28 cannot use lz4
- `copies=2`
- - number of copies of data stored for the dataset
+ - number of copies of data stored for the dataset
- `dedup=on`
- - deduplication
- - halves write speed
- - [reference](http://open-zfs.org/wiki/Performance_tuning#Deduplication)
+ - deduplication
+ - halves write speed
+ - [reference](http://open-zfs.org/wiki/Performance_tuning#Deduplication)
- `xattr=sa`
```sh
@@ -267,6 +283,8 @@ sudo zpool \
'/dev/sdb'
```
+
+
## Further readings
- [OpenZFS docs]
@@ -286,16 +304,17 @@ All the references in the [further readings] section, plus the following:
- [ZFS support + kernel, best approach]
+
+[further readings]: #further-readings
+
[openzfs docs]: https://openzfs.github.io/openzfs-docs/
[oracle solaris zfs administration guide]: https://docs.oracle.com/cd/E19253-01/819-5461/index.html
-
-[further readings]: #further-readings
-
[aaron toponce's article on zfs administration]: https://pthree.org/2012/12/04/zfs-administration-part-i-vdevs/
[archlinux wiki]: https://wiki.archlinux.org/title/ZFS
diff --git a/snippets/zfs.fish b/snippets/zfs.fish
new file mode 100644
index 0000000..8bdc5c6
--- /dev/null
+++ b/snippets/zfs.fish
@@ -0,0 +1,14 @@
+#!/usr/bin/env fish
+
+###
+# File Systems
+# --------------------------------------
+# data set = file system
+###
+
+# List available datasets
+zfs list
+
+# List snapshots
+zfs list -t 'all'
+zfs list -t 'snapshot,volume,bookmark'