Export/Import of ZFS Pools
Upgraded your server, but you need your old ZFS pools. How to import your olde files. Sometimes it's better to reinstall the Proxmox rather than trying to fix a broken system.
How to move a pool from one machine to another.
I mowed a stack of disks from my old server to new server. It's the Proxmox Backup Server Datastore called bpool.
Another use case is when you experience a boot disk failure. As I use scripts to set up my systems it's really easy to throw in a new SSD, run a script and import the data pools. And in a few minutes I'm back.
Export
To export a ZFS pool is easy,
zpool import bpool -fImport
To import an old pool to your Server
zpool import bpool -fCheck for success, zpool list
PBS - add it to your Datastore
nano /etc/proxmox-backup/datastore.cfgAdd the following
datastore: bpool
gc-schedule daily
notification-mode notification-system
path /mnt/datastore/bpoolZFS Cheat Sheet
Take an inventory of the drives available.
lsblk -o NAME,SIZE,MODEL,FSTYPE,LOG-SEC,PHY-SEC,SERIAL,MOUNTPOINTNAME SIZE MODEL FSTYPE LOG-SEC PHY-SEC
sdc 14.6T ST16000NM000J-2TW123 512 4096
sdd 14.6T ST16000NM000J-2TW456 512 4096
sde 14.6T ST16000NM000J-2TW789 512 4096
sdf 14.6T ST16000NM000J-2TW110 512 4096
sdg 14.6T ST16000NM000J-2TW113 512 4096Create a basic ZFS file system
sudo zfs create tank/mydataCreate a file system with specific properties
sudo zfs create -o compression=lz4 -o recordsize=1M tank/databaseExpected output:
# Filesystem created successfully (no output on success)
# Verify creation:
zfs list
NAME USED AVAIL REFER MOUNTPOINT
tank 156K 9.63G 24K /tank
tank/database 24K 9.63G 24K /tank/database
tank/mydata 24K 9.63G 24K /tank/mydataListing ZFS Datasets
Display all ZFS datasets
zfs listShow detailed information with specific properties
zfs list -o name,used,available,referenced,mountpoint,compressionSample output:
NAME USED AVAIL REFER MOUNTPOINT COMPRESS
tank 312K 9.63G 24K /tank on
tank/database 24K 9.63G 24K /tank/database lz4
tank/mydata 24K 9.63G 24K /tank/mydata onMounting and Unmounting
Mount a ZFS file system
sudo zfs mount tank/mydataUnmount a file system
sudo zfs unmount tank/mydataSet custom mount point
sudo zfs set mountpoint=/custom/path tank/mydataCloning Datasets
Create a clone from a snapshot
sudo zfs clone tank/mydata@backup-202606208 tank/mydata-cloneRenaming Datasets
sudo zfs rename tank/mydata tank/production-dataMonitoring and Troubleshooting
Checking Dataset Usage
zfs list -o spaceSample output:
NAME AVAIL USED USEDSNAP USEDDS USEDREFRESERV USEDCHILD
tank 9.63G 468K 0B 24K 0B 444K
tank/mydata 9.63G 24K 0B 24K 0B 0BNAME AVAIL USED USEDSNAP USEDDS USEDREFRESERV USEDCHILD
rpool 175G 38.1G 0B 104K 0B 38.1G
rpool/ROOT 175G 13.5G 0B 96K 0B 13.5G
rpool/ROOT/pve-1 175G 13.5G 0B 13.5G 0B 0B
rpool/data 175G 23.6G 0B 96K 0B 23.6G
rpool/data/vm-100-disk-0 175G 1.29G 0B 1.29G 0B 0B
rpool/data/vm-1000-disk-0 175G 2.05G 0B 2.05G 0B 0B
rpool/data/vm-1000-disk-1 175G 76.4M 0B 76.4M 0B 0B
rpool/data/vm-102-disk-0 175G 1.42G 0B 1.42G 0B 0B
rpool/data/vm-1100-disk-0 175G 176M 0B 176M 0B 0B
rpool/data/vm-1100-disk-1 175G 135M 0B 135M 0B 0B
rpool/data/vm-1200-disk-0 175G 56K 0B 56K 0B 0B
rpool/data/vm-1300-disk-0 175G 100K 0B 100K 0B 0B
rpool/data/vm-1300-disk-1 175G 7.54G 0B 7.54G 0B 0B
rpool/data/vm-200-disk-0 175G 76K 0B 76K 0B 0B
rpool/data/vm-200-disk-1 175G 8.44G 0B 8.44G 0B 0B
rpool/data/vm-80000-cloudinit 175G 76K 0B 76K 0B 0B
rpool/data/vm-80000-disk-0 175G 2.49G 0B 2.49G 0B 0B
rpool/var-lib-vz 175G 1005M 0B 1005M 0B 0BProperty History
View property change history:
zfs get -H -o property,value,source all tank/mydataDataset Statistics
zfs get compressratio,used,referenced tank/mydataNaming Conventions
- Use descriptive, hierarchical names:
tank/application/database - Include environment indicators:
tank/web/production - Use consistent snapshot naming:
@backup-YYYYMMDD-HHMM
Space Issues
Investigate space usage
Check snapshot space usage
zfs list -t snapshot -o name,used,referencedCheck compression effectiveness
zfs get compressratio tank/mydataPermission Problems
Reset permissions to defaults
sudo zfs unallow -r username tank/mydataReferences
OpenZFS Admin Commands [1]