Data on ZFS dataset mysteriously gone

westrangers

New Member
Jan 2, 2025
21
1
3
Hi! I am running an unprivileged LXC for Paperless-ngx, which uses ZFS storage on Proxmox (tank/paperless dataset). Everything was working well for over a year, and yesterday I decided to change Bind mount config into lxc.mount.entry since that allows to make snapshots.

So effectively I changed the LXC config from:
Bash:
mp0: VM-Drives:subvol-117-disk-1,mp=/data,backup=1,size=50G
mp1: /tank/paperless,mp=/mnt/paperless
mp2: /tank/paperless-db,mp=/mnt/paperless-db
To:
Bash:
mp0: VM-Drives:subvol-117-disk-1,mp=/data,backup=1,size=50G
lxc.mount.entry: /tank/paperless mnt/paperless none bind,create=dir 0 0
lxc.mount.entry: /tank/paperless-db mnt/paperless-db none bind,create=dir 0 0

Furthermore, today I moved Paperless LXC to another VLAN, and noticed that it cannot access the documents anymore. To my surprise there is only 50mb worth of files present in those datasets. I don't know whether the bind mount or VLAN changes had anything to do with this, but it worked just 2 day ago.
Bash:
[mylab] /tank/paperless/data# zfs get -o name,property,value encryption,encryptionroot,keystatus,mounted,mountpoint,used,referenced,available tank/paperless tank/paperless-db
NAME               PROPERTY        VALUE
tank/paperless     encryption      aes-256-gcm
tank/paperless     encryptionroot  tank/paperless
tank/paperless     keystatus       available
tank/paperless     mounted         yes
tank/paperless     mountpoint      /tank/paperless
tank/paperless     used            54.4M
tank/paperless     referenced      54.4M
tank/paperless     available       541G
tank/paperless-db  encryption      aes-256-gcm
tank/paperless-db  encryptionroot  tank/paperless-db
tank/paperless-db  keystatus       available
tank/paperless-db  mounted         yes
tank/paperless-db  mountpoint      /tank/paperless-db
tank/paperless-db  used            25.6M
tank/paperless-db  referenced      25.6M
tank/paperless-db  available       541G

Detailed history (the only thing I did is loaded encryption key and mounted it after Proxmox VE reboot):
Bash:
[mylab] ~# zpool history tank -i -l | grep -i paperless
...
2026-03-21.06:32:13 zfs create -o encryption=aes-256-gcm -o keyformat=passphrase -o keylocation=prompt tank/paperless-db [user 0 (root) on mylab:linux]
2026-11-07.16:49:49 zfs load-key tank/paperless-db [user 0 (root) on mylab:linux]
2026-11-07.16:50:50 zfs load-key tank/paperless [user 0 (root) on mylab:linux]

I now restored the config into previous mp1/mp2 but nothing changed:
Bash:
[mylab] ~# pct config 117 | grep -E '^(mp|lxc.mount)'
mp0: VM-Drives:subvol-117-disk-1,mp=/data,backup=1,size=50G
mp1: /tank/paperless,mp=/mnt/paperless
mp2: /tank/paperless-db,mp=/mnt/paperless-db
[mylab] ~# pct exec 117 -- du -sh /mnt/paperless /mnt/paperless-db
55M/mnt/paperless
25M/mnt/paperless-db

This is Paperless-ngx docker-compose file, which I haven't modified in the last months:
Bash:
paperless:
volumes:
- /mnt/paperless/data:/usr/src/paperless/data
- /mnt/paperless/media:/usr/src/paperless/media
- /mnt/paperless/export:/usr/src/paperless/export
- /mnt/paperless/consume:/usr/src/paperless/consume

paperless-postgres:
volumes:
- /var/lib/postgresql/data/var/lib/postgresql/data

[mylab] ~# pct exec 117 -- docker exec paperless sh -c 'du -sh /usr/src/paperless/media /usr/src/paperless/data; find /usr/src/paperless/media/documents -type f | head -20'
34K/usr/src/paperless/media
55M/usr/src/paperless/data

So in short, the only thing I touched on paperless side was the bind mount config. I also destroyed some temporary ZFS datasets day before this happened, but those have nothing to do with /tank/paperless{,-db}, which are used by Paperless-ngx:
Bash:
zpool history tank| grep -i destroy
...
2026-11-07.16:36:32 zfs destroy tank/permission-test/test2@migration
2026-11-07.16:37:37 zfs destroy -rv tank/permission-test
2026-11-07.16:38:06 zfs destroy -rv tank/test-incremental
2026-11-07.16:38:42 zfs destroy -rv tank/test

Any idea what could have happened, and if there is still any way to recover my files? It was 100% my fault for overlooking to snapshot and backup this dataset (I have a separate NAS to which I backup VMs/LXCs/ZFS snapshots), but I am just baffled how this could have happened. Has something like that happened before or is that certainly a user error?

Finally before I re-create this setup, is there anything I am doing wrong here (apart from lack of snapshots/backups)? I thought LXC with bind mounts to ZFS dataset would be a good approach.

Any advice much appreciated and happy to share any other logs.
 
You have not shown us what actually exists in the datasets:

Code:
find /tank/paperless-db /tank/paperless

There has to be something in there, because it uses storage according to your file