linux:filesystem:zfs
This is an old revision of the document!
Table of Contents
ZFS
zpool list zpool list <poolname> zpool status zpool status -x zpool status -v <poolname> zpool iostat zpool iostat -v zpool history
Adaptive Replacement Cache (ARC)
Rule of thumb:
2 GB + 1GB Cache per 1 TB Storage
Set Cache Min/Max
cat << 'EOF' > /etc/modprobe.d/zfs.conf options zfs zfs_arc_min=3221225472 options zfs zfs_arc_max=4294967296 EOF
update-initramfs -u && reboot
Setups
4x NVMe as VM datastore (Hypervisor installed on nvme0n1 and nvme1n1)
zpool create -o ashift=12 -O compression=lz4 -O atime=off -O xattr=sa -O local-datastore-nvme01 mirror /dev/nvme2n1 /dev/nvme3n1 mirror /dev/nvme4n1 /dev/nvme5n1
Parameters
ashift=12 # Aligns to 4K sectors (SSD optimal) autotrim=on # Enables TRIM for SSDs (optional - alternatively create cronjob running during off-peak hours) compression=lz4 # Transparent compression, fast atime=off # Disables access time writes xattr=sa # Stores xattrs in inode — good for VMs
Delete ZFS Pool
zpool destroy <poolname> wipefs -a /dev/nvme2n1 /dev/nvme3n1 mirror /dev/nvme4n1 /dev/nvme2n1 wipefs -a /dev/nvme2n1 /dev/nvme3n1 mirror /dev/nvme4n1 /dev/nvme3n1 wipefs -a /dev/nvme2n1 /dev/nvme3n1 mirror /dev/nvme4n1 /dev/nvme4n1 wipefs -a /dev/nvme2n1 /dev/nvme3n1 mirror /dev/nvme4n1 /dev/nvme5n1
NVMe
Format NVMe with bigger sector size
apt update && apt install nvme-cli
Check column “Fmt”. “+” marks the current format. “Rel_Perf” indicates the higher performance low level formats. The lower the better. 0 being the best.
root@pve01:smartctl -a /dev/nvme4n1 {...} Supported LBA Sizes (NSID 0x1) Id Fmt Data Metadt Rel_Perf 0 + 512 0 0 1 - 4096 0 0 {...}
Format the device with bigger sector size. Column “Id” above.
nvme format /dev/nvme4n1 -l 1 --force
Verify the change.
root@pve01:smartctl -a /dev/nvme4n1 {...} Supported LBA Sizes (NSID 0x1) Id Fmt Data Metadt Rel_Perf 0 - 512 0 0 1 + 4096 0 0 {...}
lsblk -d -o NAME,PHY-SeC,LOG-SEC nvme id-ns -H /dev/nvme4n1 | grep 'LBA'
Misc
Remove orphaned pool
Debian fails to start import service of an orphaned pool. <code> zpool set cachefile=/etc/zfs/zpool.cache poolname # set cache file for running pools update-initramfs -k all -u reboot <code>
linux/filesystem/zfs.1759883754.txt.gz · Last modified: by gsys