This is an old revision of the document!
Table of Contents
ZFS - Pools - Create a ZFS Pool
Choose Drives to Pool
Check installed drives by running:
sudo fdisk -l
returns:
Disk /dev/sdb: 14.57 TiB, 16000900661248 bytes, 31251759104 sectors Disk model: ST16000NM001G-2K Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk /dev/sdc: 14.57 TiB, 16000900661248 bytes, 31251759104 sectors Disk model: ST16000NM001G-2K Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes
NOTE: Note down the device names of drives you want to pool.
Another method to check the disks:
lsblk -S
returns:
NAME HCTL TYPE VENDOR MODEL REV TRAN sdb 5:0:0:0 disk ATA ST16000NM001G-2KK103 SN02 sata sdc 8:0:0:0 disk ATA ST16000NM001G-2KK103 SN02 sata
WARNING: Ensure that the disk with the Ubuntu operating system is not used.
- Also exclude any other disks that may contain data not to be destroyed.
Delete Existing Partitions if required
Delete all partitions and reset it:
sudo sgdisk - -zap-all /dev/sdb
Create a partition with 1GB of trailing free space:
sudo sgdisk -n1:0:-1G -t1:BF00 /dev/sdb
NOTE: Adjust these values as required.
NOTE: This will result in a /dev/sdb1 partition being created.
Creating a Pool
Different types of storage pools can be created:
- A striped pool, also called RAID-0, in which the data is stored in “stripes” across all drives.
- Striped pools are not fault tolerant!
- Striped pools have twice the storage capacity of mirrored pools and have better performance than mirrored pools.
- A mirrored pool, also called RAID-1, in which a complete copy of all data is stored separately on each drive.
- Mirrored pools can survive the failure of one drive.
To create a striped pool:
sudo zpool create testpool /dev/sdb /dev/sdc
To create a mirrored pool:
sudo zpool create testpool mirror /dev/sdb /dev/sdc
NOTE: Here, entire disks are being used for the pool.
- ZFS also supports creating pools from disk partitions, such as /dev/sdb1.
NOTE: The newly mounted pool will appear as any other part of the filesystem.
- testpool is the name of the pool.
- The newly created pool will be mounted at /testpool.
- You can select a different mount point using the -m option:
sudo zpool create -m /mnt/testpool testpool mirror /dev/sdb /dev/sdc
NOTE: If any error appears, the command can be rerun with the -f option after the zpool create command which forces the command to be executed:
sudo zpool create -f testpool /dev/sdb /dev/sdd
NOTE: Advanced options can also be used when creating a pool.
sudo zpool create -f -o ashift=12 -O compression=lz4 my_pool /dev/sdb1
- ashift: corresponds to 4k sector size.
- compression: Enables LZ4 compression.
- my_pool: The name of my new zpool.
- /dev/sdb1: The disk partition to use for the pool.
List Mounts
Check the Mount is showing:
df -h
Set Permissions of the Mount
By default only root can write to the mounted directory.
Change this so that any ordinary user can make changes to the directory:
sudo chown -Rfv peter:peter /testpool
Check Pool Status
sudo zpool status