Is there any method to modify the layout of the existing pool?

I’m pretty new to TrueNAS, so let me apologize for my ill knowledge. And I’d really appreciate it if you could help me with my problem.

I’ve been using TrueNAS with a single 12TB HDD with a stripe layout pool for a while, and love the experience. So I’ve purchased 2 more 12TB HDDs trying to expand it.

I’ve been reading the manual and realized the stripe layout might not be safe. So I’d like to change the pool layout to something more reliable. It seems RaidZ1 is good enough for me.

Maybe because I’m too ill-knowledged that after some googling I still don’t know how to change the layout of the existing pool without loosing any data, or even if it is possible?

Thanks again if you could finish reading all above!

It is not possible[1]. You could add a second disk as a mirror of the first, and then add further mirrored pairs to the pool, but there’s no way–now or in the foreseeable future–to convert a single-disk pool into RAIDZ. You’d need to back up the data, destroy the pool, create a RAIDZ pool, and then restore.


  1. Yes, the degraded pool Protopia mentions below is possible. It’s also somewhat tricky, with a not-insignificant risk of destroying your data. As the top of the resource says, if you have to be told how to do it, you probably shouldn’t be doing it. ↩︎

3 Likes

I suspect that it is possible to convert this to a RAIDZ1 without having disk space elsewhere but it is not going to be straight-forward. And I am NOT a ZFS expert and this is based only on my limited knowledge and what I have read elsewhere.

First off you would need to create a redundant 3-way RAIDZ1 using the two new drives and faking the third one. Then you take away the fake third drive leaving a 3-way RAIDZ1 in degraded mode using just the two new drives. I recall reading something about this on the old Community forum a few days ago.

Just in case the new drives are actually slightly bigger than the existing one, I would create the new RAIDZ1 pool using (say) 11TB on each disk (with a view to expanding use to the maximum size once redundancy is restored later).

Then you copy all the data off the existing 12TB drive and onto the new RAIDZ pool. Then you would need to adjust all your shares etc. to use the new disk locations.

Once this is done you export/destroy the pool on the old drive, reinitialise the old disk and add it to the RAIDZ1 pool to restore redundancy. And once it has been resilvered, you can tell ZFS to maximise the user of available space.

You would need to research how to do this - almost certainly requiring you to issue commands from a shell rather than use the GUI - come up with a step by step plan and see if you can get a ZFS expert here to review it and check it is OK.

The good news is that despite the technical complexity (i.e. typed commands rather than a GUI) it will not put the data at risk - you won’t destroy the existing copy until you have a working copy on the new disks. Although it won’t have redundancy until you add the old disk into the new array, you don’t currently have redundancy anyway, so you will not be increasing the risk of losing data due to disk failure during the transfer.

BUT as I say I am NOT a ZFS expert, so I only offer this up as a potential rather than actual solution, and I am absolutely ready to be corrected (which has happened before and will happen again).

2 Likes

As said, you could do it by replicating your existing pool to a degraded RaidZ1. Then once completed, replacing the degraded drive with the original drive.

Then rename pool back to original name.

This is fairly advanced, has some risks.

  1. your original pool is non-redundant
  2. the replacement pool is also non-redundant, until you finish.

Before attempting it, you should backup any data you don’t want to risk losing.

And you have some learning to do.

Alternatively, backup the data, then recreate the pool, and restore the data. This will be slower but far simpler.

2 Likes