I am running FreeBSD 9.1 with root on a ZFS mirrored pool.
At first the pool (labelled zroot
) has a total of 1TB spanning two 1TB drives.
Recently we have run into disk space issues in which the pool is 99% allocted with about 15G free. About 800G is occupied in /home
filesystem alone.
To remedy this, we have added 2x 1TB drives.
We would like to keep these drives mirrored. The question now remains, how should we add the additional 2x 1TB drives to the pool?
-
Should we add them to the existing
zroot
pool and allocate it. This seems like a bad idea since the original pool was designed to run as the root filesystem. -
Should we create a new pool with a mirrored set of drives, and then create a new
/home2
and transition high-usage users to that partition?
To us, the extent of ZFS features isn't clear. We are leaning to option (2) since it doesn't add unnecessary dependencies on the root mirror. However, we would appreciate any insight and ideas on what course of action to take.
Thanks.
Best Answer
First, zpools and zfs file systems are separate concepts (you can't actually separate them, but should when thinking about their setup). So pools are not "designed to run as the root filesystem", there is a filesystem on the zpool that is configured to run as the root filesystem.
Being that this zpool holds the root filesystem, it has to either be non-redundant single vdev, or has to be a single mirror. So you can't just add more drives.
It's be much easier to create zfs filesystems for each user, and mount it to their home drive location. This eliminates the janky/non-standard
/home2
idea, and allows you to set quotas, reservations, and more on each user's home folder.When I setup a ZFS server, I either use two/three smaller disks for the boot zpool (I've got 100-320GB disks laying around, so that's what I commonly use), or slice a chunk off the main storage drives (of about the same size, using GPT partitions). The rest of the drive get's one large partition, and that goes into a storage zpool.
Here's my home server setup for example: