The merged door was /mnt/media, which read like a third volume and split the host state across two trees. It is now /var/lib/media-meta/view, so the array layer, the SSD upper layer, the kernel workdir, the reap trash and the merged tree are one directory — and the mount table gains no new /mnt entry beside the array. systemd names a mount unit after its ESCAPED path, so the repo copy keeps the readable name media-meta-view.mount while `install` writes the host file as var-lib-media\x2dmeta-view.mount; `plan` prints both and the page records them, so nobody hunts for a unit that "does not exist". install also creates the mount point itself, because systemd will not. The seam now additionally pins that the unit's Where= is exactly the path both containers bind — guard and bind cannot drift apart. The Quadlet Lifecycle phantom-path example is corrected too: it named an invented /mnt/media/*, while the real phantom is the legacy /opt/jellyfin/* that dankserver/compose.yaml still carries for a service whose roots moved to /home/dank/Containers/jellyfin.
31 lines
1.3 KiB
SYSTEMD
31 lines
1.3 KiB
SYSTEMD
# /etc/systemd/system/var-lib-media\x2dmeta-view.mount
|
|
# (repo copy: dankserver/host/systemd/media-meta-view.mount — systemd names a
|
|
# mount unit after its ESCAPED path, so the host file carries the \x2d spelling)
|
|
#
|
|
# Installed by `scripts/media-view.sh install` — the repo copy is the source of
|
|
# truth (fleet law: never edit host state by hand).
|
|
#
|
|
# An OverlayFS merge that shows the media library as one tree while splitting
|
|
# where its bytes live: lowerdir is the RAID6 array (the source of truth, never
|
|
# written), upperdir is a directory on the NVMe that receives every write. The
|
|
# two media servers bind the result at /var/lib/media-meta/view, so Jellyfin's
|
|
# sidecars and artwork are SSD bytes — which is what makes them fast to browse
|
|
# and what keeps Plex's NFO agent off the spinners — while the media itself stays
|
|
# on the array untouched.
|
|
#
|
|
# RequiresMountsFor is load-bearing: without the array mounted, lowerdir is an
|
|
# empty directory and the view would present an empty library as truth.
|
|
|
|
[Unit]
|
|
Description=SSD-backed overlay view of the media library (array + NVMe metadata layer)
|
|
RequiresMountsFor=/mnt/entropy
|
|
|
|
[Mount]
|
|
What=overlay
|
|
Where=/var/lib/media-meta/view
|
|
Type=overlay
|
|
Options=lowerdir=/mnt/entropy,upperdir=/var/lib/media-meta/upper,workdir=/var/lib/media-meta/work
|
|
|
|
[Install]
|
|
WantedBy=local-fs.target
|