Fresh install of Pydio, using nfs backend in mounted docker host

Hi,

I installed pydio and resolved the database error in a previous topic Charset is not supported on this version of MySQL - Pydio Cells - Pydio Forums, now running into trouble again, how can I connect pydio which is running in a docker to a nfs mount that is mounted on the docker host?
I had to add the env variable below to import my storage.

  • CELLS_MINIO_ALLOW_CROSSMOUNT=true

But when adding the datastore in pydio it fails with below error:
INF | ts=2024-06-20T17:29:34+02:00 logger=pydio.grpc.data.objects.local2 msg=Error: disk does not support O_DIRECT

My /etc/fstab on the docker host which is running in an vmware vm is:

storage.mydomain.com:/mnt/storage/Homes     /mnt/homes        nfs4 auto,defaults,retrans=4,sec=sys 0 0
storage.mydomain.com:/mnt/storage/Storage   /mnt/storage      nfs4 auto,defaults,retrans=4,sec=sys 0 0
storage.mydomain.com:/mnt/storage/Friend1       /mnt/friend1          nfs4 auto,defaults,retrans=4,sec=sys 0 0
storage.mydomain.com:/mnt/storage/Friend2      /mnt/friend2         nfs4 auto,defaults,retrans=4,sec=sys 0 0

The mounted storage resides on another VM running in the same ESXi host, that vm is TrueNAS which is FreeBSD based, I imported that zfs pool from a previous FreeBSD install years ago when I ran Pydio 8 until it stopped the support for FreeBSD when it switched to Pydio Cells.

The nfs mounts are mapped in the docker-compose file to pydio.

my storage on the docker host looks like:

root@dockers [ /mnt/storage ]# ls -l
total 2259
drwxrwx---   36 donald root   36 Dec 22 00:43 3d
drwxrwx---   26 donald root   27 Dec 23 13:22 Applications
drwxrwx---    5 donald root    5 Mar 20 18:53 Backup
drwxrwx---   21 donald root   21 Dec 23 11:03 Books
drwxrwx---   52 donald root 1534 Jun 20 20:28 Downloads
drwxrwx---  195 donald root  195 May 13 18:08 Games
drwxrwx--- 3023 donald root 3024 Jun 20 01:27 Movies
drwxrwx---   40 donald root   40 Jun 13 20:25 Music
drwxrwx---  443 donald root  444 Jun 15 15:26 Tvshows
drwxrwxrwx    6 donald root    7 Jun  9 12:14 Uploads
drwxrwx---   10 donald root   11 Apr 21  2023 Video
root@dockers [ /mnt/storage ]#

How to resolve the "Error: disk does not support O_DIRECT
" error?

How to properly import an existing storage into Pydio?
I don’t need any desktop sync, and I don’t want pydio to touch the original files or hash them into binaries.

Best Regards,
Donald.

I fixed it myself by using different mount options (noatime,nodiratime,async) at the dockers host:

root@dockers [ /etc ]# cat fstab
#system mnt-pt  type    options dump    fsck
PARTUUID=9f4e182d-c07a-4439-830c-7ef3bf219d9c   /       ext4    defaults,barrier,noatime,noacl,data=ordered     1       1
PARTUUID=d49c6543-ed19-4b10-a791-6422723a095d   /boot/efi       vfat    defaults        1       2
PARTUUID=4f43f6b0-1bff-4848-805a-cdd27396cb76 none swap sw 0 0
#/dev/cdrom     /mnt/cdrom      iso9660 ro,noauto       0       0
storage.flissinger.com:/mnt/storage/Homes     /mnt/homes        nfs4 rw,noatime,nodiratime,async,sec=sys 0 0
storage.flissinger.com:/mnt/storage/Storage   /mnt/storage      nfs4 rw,noatime,nodiratime,async,sec=sys 0 0
storage.flissinger.com:/mnt/storage/Friend1       /mnt/friend1          nfs4 rw,noatime,nodiratime,async,sec=sys 0 0
storage.flissinger.com:/mnt/storage/Friend2      /mnt/friend2         nfs4 rw,noatime,nodiratime,async,sec=sys 0 0
root@dockers [ /etc ]#

I also had to add

privileged: true

to the docker-compose settings.

In a few words:

  • you want rather structured DS than flat DS
  • beware to mount the “parent folder” and create the root folder of the ds as a child

Typically in your docker mount is something like:

        volumes: 
            - /mnt/friend1:/data/friend1

you have to create the DS at /data/friend1/files, the technical folder for Cells (and the underlying minio library) must be created by Cells at /data/friend1/.minio.sys
→ Cells must be a able to write at /data/friend1

This subject is discussed quite a lot in the forum and in our doc, please have a look around to get further details.

1 Like

I changed the datastore, minio writes its files in a mounted data directory at the dockerhost, while the actual ‘friend’ files are on a mounted zfs storage by nfs.

Still having problems, hundreds of “Error: disk does not support O_DIRECT (cmd.StorageErr)”

root@dockers [ / ]# tune2fs -l /dev/sda2 | grep 'Filesystem features'
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
root@dockers [ / ]#

Thinking of giving up on Pydio, error after error, it’s hard to set it up.

Have a read here, I ran into a similar problem. Although I chose to mount the data store within Portainer and my compose stack. I used SMB, but you might be able to get some insight using NFS.

I do like this project very much, I spent weeks sometimes getting things to work together nicely - some of the implementation is not what I am accustomed to, but once you get the logic and understanding in place, it does begin to make sense :wink:

2 Likes

Thanks! I will look into it.