Hello All
Core 13.0-U5, 32GB Memory, Xeon E3-1200 4-core, 128K SSD boot, 1-vdev of 12-8TB spinners RAIDZ2
Here is what I did.
I had a "Video" dataset that contained a "Movies" folder and other folders that I won't mention for brevity.
I renamed the "Movies" folder to "Movies1".
I created a new "Movies" dataset inside the "video" dataset.
I copied all of the files from the "Movies1" folder to the newly created "Movies" dataset.
Used Space went up.
I created a new "Movies@snapshot".
I removed the "Movies1" folder from the "videos" dataset.
I deleted all old "videos@snapshots"
Used Space returned to normal.
The issue is:
No files can be seen in the "Movies" dataset from any mount point.
The files that reside inside the "Movies" dataset, that resides inside the "video" dataset, can not be seen through a mount point.
Why permit datasets within datasets if mount points can't see any of the files in child datasets?
Here is some evidence of my research:
In all of the following directory listings, .... means that everything except "Movies" has been removed for brevity.
DIRECT = View from the Root filesystem DIRECT to the "video" dataset:
MOUNT POINT = View from the Root filesystem through a Jail's MOUNT POINT to the "video" dataset:
DIRECT:
Jail UP - MOUNT POINT:
Both viewpoints above have similar results.
"video" is a dataset.
DIRECT:
"Movies" is is also a dataset.
Jail UP - MOUNT POINT:
The "Movies" item above is that same dataset but now, things have changed.
Please notice that the time stamps differ between the two views.
Via DIRECT, the "Movies" dataset contains 28 items, . and .. as well as 26 folders.
Via MOUNT POINT, the "Movies" dataset contains only 2 items, . and ..
Via MOUNT POINT, the "Movies" dataset appears to be empty.
I don't understand how this can happen.
I removed the "videoj" mount point and rebooted TrueNAS.
I recreated the "videoj" mount point and nothing appears to have changed.
Then I stripped all of the "video" dataset's ACL's from the "Storage/Pools" dialog, Recursive and Traverse.
Now it gets really weird.
DIRECT:
Please notice above that there are no longer any ACL's as expected.
Jail UP - MOUNT POINT:
Yet, when viewed through the mount point, the ACL's are back.
If I edit ACL's from the "Mount Points of videoj" dialog, I have ACL's
If I edit ACL's from the "Storage/Pools" dialog, I have no ACL's.
How can that happen?
DIRECT:
Jail UP - MOUNT POINT:
How can a mount point to the "/mnt/pool/eds/video" dataset show different results from the actual "/mnt/pool/eds/video"?
At this point I realize the reason.
The mount point to .../video/Movies does not see the "Movies" dataset.
It sees the empty "Movies" folder that underlies the "Movies" dataset.
I don't know if this a quirk of TrueNAS or it's the work of ZFS.
But, every ZFS dataset on TrueNAS has an underlying empty folder of the same name.
Try it for yourself.
If you unmount a ZFS dataset from the CLI and do an "ls -l", you will see an empty folder with the same name as the dataset that was just unmounted.
Any dataset, all datasets.
Reboot TrueNAS and your dataset(s) are back.
But know full well that that empty folder that underlies a dataset is still there.
What I need to know is how to fix it so mount points correctly address nested datasets not an underlying empty folder?
If you nest a third dataset like ".../video/Movies/test", the "test" dataset is not at all reachable through a mount point to ".../video".
The trail stops at the empty ".../video/Movies" folder when viewed through a mount point to ".../video".
This would mean that jailed applications cannot work with nested datasets.
I hope that that can't possibly be correct.
Please, does anyone know how to fix this?
Thank You
Core 13.0-U5, 32GB Memory, Xeon E3-1200 4-core, 128K SSD boot, 1-vdev of 12-8TB spinners RAIDZ2
Here is what I did.
I had a "Video" dataset that contained a "Movies" folder and other folders that I won't mention for brevity.
I renamed the "Movies" folder to "Movies1".
I created a new "Movies" dataset inside the "video" dataset.
I copied all of the files from the "Movies1" folder to the newly created "Movies" dataset.
Used Space went up.
I created a new "Movies@snapshot".
I removed the "Movies1" folder from the "videos" dataset.
I deleted all old "videos@snapshots"
Used Space returned to normal.
The issue is:
No files can be seen in the "Movies" dataset from any mount point.
The files that reside inside the "Movies" dataset, that resides inside the "video" dataset, can not be seen through a mount point.
Why permit datasets within datasets if mount points can't see any of the files in child datasets?
Here is some evidence of my research:
In all of the following directory listings, .... means that everything except "Movies" has been removed for brevity.
DIRECT = View from the Root filesystem DIRECT to the "video" dataset:
MOUNT POINT = View from the Root filesystem through a Jail's MOUNT POINT to the "video" dataset:
DIRECT:
Code:
root@plum[/mnt/pool/eds]# ls -l total 339 .... drwxrwxrwx+ 10 root wheel 10 Jun 28 06:51 video
Jail UP - MOUNT POINT:
Code:
root@plum[/mnt/pool/iocage/jails/videoj/root/mnt]# ls -l total 56 .... drwxrwxrwx+ 10 root wheel 10 Jun 28 06:51 video
Both viewpoints above have similar results.
"video" is a dataset.
DIRECT:
Code:
root@plum[/mnt/pool/eds]# cd video root@plum[/mnt/pool/eds/video]# ls -l total 225 .... drwxrwxrwx+ 28 root wheel 28 Jun 25 03:07 Movies
"Movies" is is also a dataset.
Jail UP - MOUNT POINT:
Code:
root@plum[/mnt/pool/iocage/jails/videoj/root/mnt]# cd video root@plum[...ol/iocage/jails/videoj/root/mnt/video]# ls -l total 152 .... drwxrwxrwx+ 2 root wheel 2 Jun 24 18:58 Movies
The "Movies" item above is that same dataset but now, things have changed.
Please notice that the time stamps differ between the two views.
Code:
drwxrwxrwx+ 28 root wheel 28 Jun 25 03:07 Movies <- DIRECT = Jun 25 03:07 drwxrwxrwx+ 2 root wheel 2 Jun 24 18:58 Movies <- MOUNT POINT = Jun 24 18:58
Via DIRECT, the "Movies" dataset contains 28 items, . and .. as well as 26 folders.
Via MOUNT POINT, the "Movies" dataset contains only 2 items, . and ..
Via MOUNT POINT, the "Movies" dataset appears to be empty.
Code:
root@plum[...ol/iocage/jails/videoj/root/mnt/video]# cd Movies root@plum[...ge/jails/videoj/root/mnt/video/Movies]# ls -l total 0
I don't understand how this can happen.
I removed the "videoj" mount point and rebooted TrueNAS.
I recreated the "videoj" mount point and nothing appears to have changed.
Then I stripped all of the "video" dataset's ACL's from the "Storage/Pools" dialog, Recursive and Traverse.
Now it gets really weird.
DIRECT:
Code:
root@plum[/mnt/pool/eds/video]# ls -l total 225 .... drwxrwxrwx 28 root wheel 28 Jun 25 03:07 Movies
Please notice above that there are no longer any ACL's as expected.
Jail UP - MOUNT POINT:
Code:
root@plum[...ol/iocage/jails/videoj/root/mnt/video]# ls -l total 152 .... drwxrwxrwx+ 2 root wheel 2 Jun 24 18:58 Movies
Yet, when viewed through the mount point, the ACL's are back.
If I edit ACL's from the "Mount Points of videoj" dialog, I have ACL's
If I edit ACL's from the "Storage/Pools" dialog, I have no ACL's.
How can that happen?
DIRECT:
Code:
root@plum[/mnt/pool/eds/video]# zfs list -t all -r /mnt/pool/eds/video NAME USED AVAIL REFER MOUNTPOINT pool/eds/video 28.8T 22.5T 6.41M /mnt/pool/eds/video .... pool/eds/video/Movies 5.98T 22.5T 5.98T /mnt/pool/eds/video/Movies pool/eds/video/Movies@auto-2023-06-25_06-50 0B - 5.97T - pool/eds/video/Movies@auto-2023-06-25_09-10 0B - 5.97T - pool/eds/video/Movies@auto-2023-06-26_09-10 0B - 5.97T - pool/eds/video/Movies@auto-2023-06-27_09-10 0B - 5.97T - pool/eds/video/Movies@auto-2023-06-28_09-10 622K - 5.98T -
Jail UP - MOUNT POINT:
Code:
root@plum[/mnt/pool/eds/video]# zfs list -t all -r /mnt/pool/iocage/jails/videoj/root/mnt/video '/mnt/pool/iocage/jails/videoj/root/mnt/video': not a ZFS filesystem
How can a mount point to the "/mnt/pool/eds/video" dataset show different results from the actual "/mnt/pool/eds/video"?
At this point I realize the reason.
The mount point to .../video/Movies does not see the "Movies" dataset.
It sees the empty "Movies" folder that underlies the "Movies" dataset.
I don't know if this a quirk of TrueNAS or it's the work of ZFS.
But, every ZFS dataset on TrueNAS has an underlying empty folder of the same name.
Try it for yourself.
If you unmount a ZFS dataset from the CLI and do an "ls -l", you will see an empty folder with the same name as the dataset that was just unmounted.
Any dataset, all datasets.
Reboot TrueNAS and your dataset(s) are back.
But know full well that that empty folder that underlies a dataset is still there.
What I need to know is how to fix it so mount points correctly address nested datasets not an underlying empty folder?
If you nest a third dataset like ".../video/Movies/test", the "test" dataset is not at all reachable through a mount point to ".../video".
The trail stops at the empty ".../video/Movies" folder when viewed through a mount point to ".../video".
This would mean that jailed applications cannot work with nested datasets.
I hope that that can't possibly be correct.
Please, does anyone know how to fix this?
Thank You