Making sure apps are using my ssd


I noticed some of my apps still use their dataset for storing app data.
I would like them to use the ssd.

I have tried unsetting and setting the pool for apps:

I’m worried that certain apps will run slower, such as Nextcloud, because their app data is on the slower spinning rust pool.

Nextcloud for example is setup to only store user data to another pool.
The rest is default ixVolume, which I expected to be stored on the ssd pool, or am I mistaken?

When you tell your app to use SSD for the “app data” it stores the app’s configuration, logs and internal databases to the SSD. Your “external” folders for downloads, media and nextcloud (user data, as opposed to app data) are separate to that.

If you want your user data directories to be on the SSD, you should stop the app, move those datasets to the your SSD pool, reconfigure the app to use the new host paths and restart the app.

To move the datasets you can either create new datasets on the SSD pool and copy files across, or use the zfs rename command


But for example this for Nextcloud:

It’s specifically setup so that appdata (html, themes…) will be stored in an ixVolume and user data (the files I upload in Nextcloud) to my zfs pool.
Yet, when I browse that pool using SMB, I see that appdata is stored in zfs pool, not the ssd.

But thinking about it, it’s probably more a question about how Nextcloud uses the mounted volumes, and not an issue with Truenas.

An addendum to this is to not put your “downloads”, “media” and “nextcloud” datasets inside the ix-applications dataset. Put them in their own non-related dataset(s).

1 Like

I’m confused, did I do that then?

Alternatively, add up a sVDEV with a couple of mirrored enterprise-grade SSDs and then make the entire apps, iocage, and like datasets reside 100% on the SSD portion of the pool. That way you get the benefit of fast metadata, fast small file writes and all that in one large pool.