ZFS on Linux (Proxmox Docs)

How CoW, Snapshots, etc. worfk in ZFS article.

ZFS datasets are hierarchical.
I.e. you can stack them and have different settings for each level, per default settings are inherited from parent datasets.

ashift

ashift gibt die Sektor-Größe in Byte als  an . [^wiki1]

Figure out physical sector size:
sudo lsblk -o NAME,MOUNTPOINT,PHY-SEC

For sector size of 4096 just leave it on the default 12 (logical size doesn’t matter).

How I set up on backup PC

Create a ZFS pool with two disks in mirror mode (raid 1), parent dataset with lz4 compression, atime off (access time; not rlly needed, overhead), child dataset (to tank; common name) mounted to /home/max/data with proper ownership:

sudo zpool create -o ashift=12 -f tank mirror /dev/sda /dev/sdb
sudo zpool status
sudo zfs set compression=lz4 tank
sudo zfs set atime=off tank
sudo zfs create tank/max
sudo zfs set mountpoint=/home/max/data tank/max
sudo mkdir -p /home/max/data
sudo chown -R max:max /home/max/data
findmnt /home/max/data
df -h | grep tank

The status one should show sth like this:

 pool: tank
state: ONLINE
config:
 
  	NAME		STATE	 READ WRITE CKSUM
  	tank		ONLINE	   0	 0	 0
  	  mirror-0  ONLINE	   0	 0	 0
  		sda	 ONLINE	   0	 0	 0
  		sdb	 ONLINE	   0	 0	 0
  	
  	```
  	
  	Create datasets for different purposes:
  	```bash
  	sudo zfs create tank/max/yt
  	sudo zfs create tank/max/restic
  	sudo zfs create \
  	  -o encryption=on \
  	  -o keyformat=passphrase \
  	  -o keylocation=prompt \
  	  tank/max/phone
  	sudo zfs create \
  	  -o encryption=on \
  	  -o keyformat=passphrase \
  	  -o keylocation=prompt \
  	  tank/max/general
  	sudo zfs create \
  	  -o encryption=on \
  	  -o keyformat=passphrase \
  	  -o keylocation=prompt \
  	  tank/max/encrypted
  	```
  	Link to home and own it
  	```bash
  	sudo chown -R max:max /home/max/data
  	```
  	Example changing compression option for dataset afterwards (not necessarily good configs… I left mine inherited from the parent dataset only):
  	``` bash
  	sudo zfs set compression=off tank/max/yt
  	sudo zfs set compression=zstd-3 tank/max/restic
  	```

https://chatgpt.com/c/6916f129-71e4-8326-99d5-890065a76779