====== ZFS ======
zpool list
zpool list
zpool status
zpool status -x
zpool status -v
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
by-id
zpool create -o ashift=12 -O compression=lz4 -O atime=off -O xattr=sa local-datastore-nvme01 \
mirror /dev/disk/by-id/nvme-SAMSUNG_MZQL23T8HCLS-00A07_S3R14LNUMB3R1 /dev/disk/by-id/nvme-SAMSUNG_MZQL23T8HCLS-00A07_S3R14LNUMB3R2 \
mirror /dev/disk/by-id/nvme-SAMSUNG_MZQL23T8HCLS-00A07_S3R14LNUMB3R3 /dev/disk/by-id/nvme-SAMSUNG_MZQL23T8HCLS-00A07_S3R14LNUMB3R4
===== Delete ZFS Pool =====
zpool destroy
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
{...}
https://openzfs.github.io/openzfs-docs/Performance%20and%20Tuning/Hardware.html#nvme-low-level-formatting
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.
zpool set cachefile=/etc/zfs/zpool.cache poolname # set cache file for running pools
update-initramfs -k all -u
reboot
check labels on disks
zdb -l /dev/nvme1n1p1