Increase pool size by adding new vdev to pool?

Hi,

We have a pool that’s reaching it’s storage capacity and I’m looking to increase the size on it. From what I’ve read online (such as here Add drive to RAIDZ2 pool in TrueNAS SCALE | TrueNAS Community) it appears increasing pool size is not possible.

But, the documentation states (from Managing Pools | TrueNAS Documentation Hub),

“ZFS supports adding VDEVs to an existing ZFS pool to increase the capacity or performance of the pool”

Now, reading this, it looks like the above forum link actually talks about increasing pool vdev size, not the size of pool itself and we can certainly increase pool size just by introducing a new vdev. Can you folks please confirm if I’m understanding this correctly or am I missing something here?

Thanks,

Indeed you can.

2 Likes

Yeah, the title of the post the OP refers to says “Adding drive to RAIDZ2 pool”, you will not add a single drive to it. I guess that’s why you are confused perhaps? That is different than adding a vdev which will be more than one.

1 Like

Thanks @dan and @sfatula for clarifying this.

Just to clarify further, there is (as I understand it) no such thing as a RAIDZ2 POOL but rather a RAIDZ2 vDev.

AFAIK you cannot (as yet) add an extra disk to a RAIDZ2 vDev, but if you create another vDev you can add it to an existing pool.

That said, if your existing vDev is a RAIDZ2, the most appropriate choice for a 2nd vDev would also be RAIDZ2. Other vDev types would probably work, but the performance characteristics might be a little odd.

2 Likes

Mixing different types of vdevs works, but performance and resiliency are limited by the worst vdev in the mix (e.g.: add a single drive vdev to a pool; if that drive goes down the whole pool is dead). So consistency is recommended…

Thanks for the valuable suggestions @Protopia and @etorix. current vdev is raidz2. I’m thinking of having raidz3 for the new vdev to have 3 drive redundancy. I understand that raidz2 would still be the weak link in the pool so I’m thinking of rebuilding it with raidz3 before introducing the second vdev.

If that’s your plan I would recommend:

  1. Create a new RAIDZ3 vDev and allocate it to a new pool.
  2. Migrate your data from the existing pool to the new pool.
  3. Destroy the old pool and add it to the new pool as a 2nd RAIDZ3 vDev.
1 Like

thanks @Protopia this surely is a better plan than what I had in mind. I was going to destroy pool, create new one with raidz3 vdevs and then copy data from pool in a backup NAS to the new pool. This one’s way quicker and less desruptive.

  1. Rename new pool to match old pool.
1 Like

Actually, I am not sure that the pool needs to be renamed - but I think I did miss a step at the end…

  1. Remount the new pool at the same mount point as the original pool.

There probably also need to be some additional steps to stop all apps from running and then restart them. Others have suggested elsewhere that you do this by deallocating the pool for apps. But I don’t have enough expertise to know whether this is correct or not.

1 Like