date: 2023-11-30 09:26:54
categories: linux
firstPublishDate: 2021-06-27 12:21:41
The commands on this page are my notes reading
,
and
.
Read my other post for reasons to use ZFS
and
for installing Debian 11 (bullseye) with ZFS.
Another resource is
.
pool - vdevs - disks `- datasets
Options:
man zfs man zpool
zpool create poolName /dev/da0
zpool create poolName mirror /dev/ada1 /dev/ada2
zpool create poolName raidz /dev/da0 /dev/da1 /dev/da2
zfs create poolName/datasetName zfs set compression=lz4 snapdir=visible poolName/datasetName zfs set copies=2 compression=lz4 snapdir=visible poolName/datasetName
zfs create -p poolName/dataset1/dataset2/childName
zfs mount poolName/datasetName zfs unmount poolName/datasetName
(all files have to be closed)
zfs mountpoint=/path poolName/datasetName
zfs destroy poolName/datasetName delete snapshot zfs destroy poolName/datasetName@snapshotName
zpool destory poolName
zfs snapshot poolName/datasetName@snapshotName
The snapshots are available in `dataset mount point`/.zfs/snapshot/
zfs snapshot -r poolName@snapshotName
zfs rollback poolName/datasetName@snapshotName
zpool status poolName # show error details (file paths, errors in snapshots,...): zpool status poolName -v zpool status -x all pools are healthy
zpool offline storage da1 zpool replace storage da1 zpool status storage
zpool scrub poolName
zpool attach >> adds disks to a vdev zpool add >> adds vdevs to a pool
zpool replace poolName /dev/ada1p3 /dev/ada2p3
zpool history zpool history poolName
show more info, like snapshot events:
zpool history -i
long history:
zpool history -l
zpool iostat zpool iostat -v
zfs list
zfs list -t snapshot
zfs list -t all
zfs list -rt all poolName/datasetName
zfs list -rt snapshot poolName/datasetName
zfs get used,compressratio,compression,logicalused poolName/datasetName
zfs get all poolName/datasetName
zfs rename poolName/datasetName poolName/newDatasetName
zfs rename poolName/datasetName@snapshotName newSnapshotName
diff snapshot to current
zfs diff poolName/datasetName@snapshotName
diff 2 snapshots
zfs diff poolName/datasetName@snapshotName poolName/datasetName@snapshotName2
get state:
zfs get snapdir poolName/datasetName zfs set snapdir=visible poolName/datasetName zfs set snapdir=hidden poolName/datasetName
zfs clone poolName/datasetName@snapshotName poolName/newDatasetName
show original snapshot name:
zfs get origin poolName/newDatasetName
remove link with snapshot
zfs promote poolName/newDatasetName
Setup: + host: zfs allow -u user send,snapshot zroot + remote: sysctl vfs.usermount=1 echo vfs.usermount=1 >> /etc/sysctl.conf zfs create zroot/backup zfs allow -u user create,mount,receive zroot/backup # or zfs allow -u receiver compression,mountpoint,mount,create,receive rxpool chown user /zroot/backup zfs create zroot/backup/compressed zfs set compression=lz4 snapdir=visible zroot/backup/compressed + command: zfs send -vp zroot/compressed@e | ssh user@172.16.43.235 zfs recv -Fdv zroot/backup -v verbose -p send dataset properties receive: -F Force a rollback of the file system to the most recent snapshot -d Use the full sent snapshot path without the pool name to determine the name of the new snapshot -v verbose
zfs send -vi zroot/compressed@oldSnapshot zroot/compressed@newSnapshot | ssh user@172.16.43.235 zfs recv -dvu zroot/backup # zfs recv -Fdv also works - send with ssh example zfs snapshot zroot/compressed@initial + remote: + zfs create zroot/tank + zfs set compression=lz4 snapdir=visible zroot/tank + zfs allow -u user compression,mountpoint,mount,create,receive zroot/tank + chown user /zroot/tank zfs send -v zroot/compressed@initial | ssh user@172.16.43.235 zfs recv -Fd zroot/tank zfs snapshot zroot/compressed@evening zfs send -vi initial zroot/compressed@evening | ssh user@172.16.43.235 zfs recv -Fd zroot/tank
zpool create \ -o cachefile=/etc/zfs/zpool.cache \ -o ashift=12 \ -O acltype=posixacl -O snapdir=visible -O compression=lz4 \ -O dnodesize=auto -O normalization=formD -O relatime=on \ -O xattr=sa -O mountpoint=/home/data \ sandisk /dev/disk/by-id/DISK-part1
I moved a zfs disk from a computer to second one and I want mount the datasets in it. To do that use `zpool import` to list available disks with their ids and then run `zpool import $diskId` and mount the datasets with the `zfs` command.
zpool import pool: thedisk id: 15071621791720838351 state: ONLINE action: The pool can be imported using its name or numeric identifier. config: thedisk ONLINE ada0s1d ONLINE zpool import 15071621791720838351
hashtags: #zfs #linux