Dockerfiles have their seperate path. Because of that Rsync doenst work, also no Datausage in the WebUI

So… I dont know where to start actually…
Thing is… Scale now supports docker. So what i did was i installed nextcloud AIO and some other Containers.
Then i wanted to make a rsync backup so i looked up where my data actually gets stored. After a quick Google-Search : /mnt/.ix-apps/docker
Problem now is : Rsync wants that i select a path on a pool.
Meaning Docker is saving everything to my boot pool.
Is this how its meant to be? If not… how can i let docker and other apps be stored on some Diskpool?

UPDATE : We now vaildated that Truenas does save Dockerfiles on a Diskpool BUT IT DOENST TREAT IT THAT WAY.
Dockerfiles have a seprate path for some reason.
its /mnt/.ix-apps/ AND NOT /mnt/diskpool1/.ix-apps/ (what should be the case)
Because of that, rsync for example wont work


Also your Docker-Datausage isnt shown in the WebUI under Dataset.

Okay the story goes on…
As we discoverd… my files are under /mnt/.xi-apps/docker
a path on my bootpool.
The Problem here is… the Docker Folder is 200gb large…
My Bootdisk is just 100gb large…
WHERE IS MY DATA STORED?

No, it isn’t.

On whatever pool you told the system to use for your apps.

1 Like

Well.
/mnt/.xi-apps/docker/…/…
shows all my nextcloud data.
When i go into /mnt/ssdpool1/
there is nothing…

I guess your right. My Data does get stored on my ssdpool1 else it wouldnt even fit. There is no VDEV or something…
How can i solve my rsync problem like that?

[EINVAL] rsync_task_update.path: The path must reside within a pool mount point

zfs list -d 1 | grep ix-apps to confirm where your app config is stored.

root@truenas[/mnt/ssdpool1]# zfs list -d 1 | grep ix-apps
ssdpool1/ix-apps 189G 967G 186K /mnt/.ix-apps

One useful tool I found to navigate is the “mc” command, make sure you use “sudo mc” if you are trying to move container information - wouldn’t let me otherwise:

d18efcbfd9deac50a3351be19a26af20fe7f72bf_2_690x188

I’m able to replicate, seems like a bug that hadn’t been considered (both /mnt/.ix-apps and nvme/ix-apps)…
Would suggest raising a bug report on Jira.

image

Yeah… as you can see… all my pools and the… ix apps thing.
Problem is… Truenas saves my data on ssdpool1 but the path is /mnt/ix-apps/docker AND NOT /mnt/ssdpool1/ix-apps/docker/

Now that Truenas Forums let me post Images :

Truenas somewhat acts if /mnt/.ix-apps/ would be a bootpool path but its neither.
Not a “Diskpool” nor the “Bootpool”

The screenshot here is a bit misleading

There is NOTHING about my Docker-Apps.
xi-applications is predocker eara / old kubernetes and not longer in use.
and Nextcloud i created on my own for a SMB share.

Here the Proof that i have Apps installed and ive choosen ssdpool1
I have a lot more containers but the containers i installed per Portainer arent shown.

cc @kris as this is quite an important use-case, and users should absolutely be able to rsync their app config.

Seems like some oversight in src/middlewared/middlewared/validators.py as this will be raised if /mnt/<vol_name> is not matched, which doesn’t include /mnt/.ix-apps

src/middlewared/middlewared/validators.py

    vol_paths = [os.path.join("/mnt", vol_name) for vol_name in vol_names]
    if not path.startswith("/mnt/") or not any(
        os.path.commonpath([parent]) == os.path.commonpath([parent, rp]) for parent in vol_paths
    ):

src/middlewared/middlewared/async_validators.py

vol_names = [vol["vol_name"] for vol in await middleware.call("datastore.query", "storage.volume")]
root@truenas[~]# midclt call datastore.query storage.volume
[{"id": 16, "vol_name": "nvme", "vol_guid": "15804739065954665638"}, {"id": 18, "vol_name": "data", "vol_guid": "2780514320904817722"}]
root@truenas[~]#
1 Like

Ahh I mis -understood the not being able to move it, you cant set the location right on the install

Yes. Sorry for the confusion.
The main problem i try to explain here is…
Truenas treats dockerdata as somewhat of its own pool.
under the WebUI > Dataset for exmaple. There is no track of my Dockerfiles.
and under /mnt/ where only my Diskpools should be… there is also .ix-apps hidden. But its not a Pool in it self.
BUT IN THE WEBUI UNDER APPS
you set your diskpool for your apps.

If you then go into your console and go to /mnt/youdiskpool/ theres no dockerdata to be seen. They just exist in /mnt/.ix-apps/

I’ve raised NAS-133917 for this.

Thanks for submitting a NAS ticket. The hiding of ix-apps is a design decision, but there may have been an oversight in terms of rsync compatibility.

I’m wondering if you could approach this differently though by using the actual location of the hidden dataset rather than the mount point. You can run df -h /mnt/.ix-apps to see the actual path to the dataset on your pool. Then try manually typing that path into an rsync task. I don’t have a remote system ready to go at the moment, but I did a quick test of this and it at least doesn’t raise any validation error.

1 Like

Out of curiosity, do you remember what your search term in Google was and what kind of results it showed you? I’d be interested to know if our documented explanation of the ix-apps dataset doesn’t appear in search results.

This was my point in raising the ticket, it looks to be an unintentional regression from 24.04, where the design choice has hindered functionality that was originally in place with the exposed ix-applications dataset (at least to my knowledge).
Unfortunately it looks like it’s been closed without changes shortly after I raised it due to me ‘misunderstanding’.

“This is by design and is not an oversight. You’re misunderstanding the fact that /mnt/.ix-apps is a mount point. Not a filesystem. The ix-apps dataset exist on any given pool (depending on which one you’ve configured).”

(I actually have no idea what was meant by this considering I’m aware of the fact that /mnt/.ix-apps is a mountpoint…)

Are we seeing different things here?

root@truenas[~]# df -h /mnt/.ix-apps
Filesystem      Size  Used Avail Use% Mounted on
nvme/ix-apps    773G  256K  773G   1% /mnt/.ix-apps
 Error: rsync: [sender] change_dir "/mnt/nvme/ix-apps" failed: No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1338) [sender=3.2.7]
 Error: rsync: [sender] change_dir "/mnt/nvme/.ix-apps" failed: No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1338) [sender=3.2.7]

And of course trying with /mnt/.ix-apps, or anything that does not start with /mnt/ fails with:
[EINVAL] rsync_task_update.path: The path must reside within a pool mount point