User Tools

Site Tools


zfs:pools:create_a_zfs_pool

This is an old revision of the document!


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.
  • Anything with a descriptor in /dev that allows random access will work.
    • Test pools made of sparse files are an incredibly convenient way to practice zpool commands.

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
zfs/pools/create_a_zfs_pool.1634081974.txt.gz · Last modified: 2021/10/12 23:39 by peter

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki