Pool Creation¶
Overview¶
Create a ZFS pool from:
- Remaining ~1 TB on internal NVMe (partition)
- Entire 4 TB secondary NVMe (whole disk)
Prerequisites
If using a partition from your boot disk, see Disk Partitioning first.
Install ZFS¶
Identify Disks¶
List block devices to see partitions:
Get persistent disk and partition IDs:
Example output:
nvme-Samsung_SSD_990_PRO_2TB_XXXXX -> ../../nvme0n1
nvme-Samsung_SSD_990_PRO_2TB_XXXXX-part1 -> ../../nvme0n1p1
nvme-Samsung_SSD_990_PRO_2TB_XXXXX-part2 -> ../../nvme0n1p2
nvme-Samsung_SSD_990_PRO_2TB_XXXXX-part3 -> ../../nvme0n1p3
nvme-Samsung_SSD_990_PRO_2TB_XXXXX-part4 -> ../../nvme0n1p4
nvme-Samsung_SSD_990_PRO_4TB_YYYYY -> ../../nvme1n1
For this setup, you need:
nvme-...-part4- ZFS partition on internal NVMenvme-..._4TB_...- Entire secondary NVMe
Use disk IDs
Always use /dev/disk/by-id/ paths, not /dev/nvme0n1 which can change between boots.
Create Pool¶
Single Pool (No Redundancy)¶
For this setup, we prioritize capacity over redundancy:
sudo zpool create \
-o ashift=12 \
-O atime=off \
-O compression=lz4 \
-O xattr=sa \
-O acltype=posixacl \
tank \
/dev/disk/by-id/nvme-internal-part4 \
/dev/disk/by-id/nvme-secondary
Options Explained¶
| Option | Purpose |
|---|---|
ashift=12 | 4K sector alignment |
atime=off | Disable access time updates |
compression=lz4 | Enable compression |
xattr=sa | Store extended attributes in inodes |
acltype=posixacl | Enable POSIX ACLs |
Verify Pool¶
Check pool status:
Expected output:
pool: tank
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
nvme-Samsung_SSD_990_PRO_2TB-part4 ONLINE 0 0 0
nvme-Samsung_SSD_990_PRO_4TB ONLINE 0 0 0
errors: No known data errors
Check pool capacity:
Verify properties were applied:
Set Mount Point¶
Auto-Import on Boot¶
ZFS pools import automatically via systemd. Verify:
Pool Health¶
Check regularly:
No Redundancy
This pool has no redundancy. Data protection relies on snapshots and backups.