Image courtesy of iX Systems
Long time viewers know that I’m TrueNAS fan and that our local TrueNAS server Sherman has gone a bit wobbly. I’ve repaired Sherman and ordered him a partner, Peabody as in Peabody and Sherman. As you know, Mr. Peabody invented the WayBack machine. Peabody will serve music and Sherman will be Peabody’s replication target giving us an on-site backup. As always, some assembly is required. In this case, I’ve decided to rework the new server’s file system to make it a bit more graceful to use.
Revisions
- 2022-02-01 Original draft.
References
Conceptual Design
Here at Dismal Manor, we use a TrueNAS Core system to serve a number of applications. The primary jobs are
- Time Machine spool volume
- Local storage of purchased music
- Local storage of video clips
- Local storage of edited video
Apple User File System Organization
Reference [1] describes the organization of the MacOS file system. User data resides in the /Users branch of the file system which has a directory tree for each user account. Each account directory has the following standard directories.
- Applications
- Desktop
- Documents
- Downloads
- Library
- Movies
- Music
- Pictures
- Public
- Sites
To this, I’ve added Videos to hold video clips with assets living in Photos inside Pictures.
MacOS has a strong bias for all of a user’s files residing on the system volume inside the MacOS host. iTunes and Photos allow you to specify asset directories outside the lifelines. Apple tends not to mount SMB directories very gracefully so I’ve had things hang waiting for a share to become ready. So I currently have my photos library on the system disk.
I use Roon as my musical assets manager and XLD to transfer CD recordings to disk. So i’m less dependent on iTunes or Music for these tasks. Apple continues to use its crippled single-process music architecture.
Since iTunes was developed, most music is now streamed with only hard core music folks are managing music locally.
Time Machine
Not much is written on Time Machine. With the coming of APFS, Apple has redesigned Time Machine to function without hard links and to function correctly using CIFS shares. How they have done this is largely undocumented. I’m guessing that they have found an effective way to serialize snapshots onto a target disk volume. Time Machine protects against both disk hardware failures and unfortunate user actions.
Time Machine maintains a separate store for each machine that contains all the system and user data from that machine. The Time Machine includes all of the metadata including owner ship and access controls. When run by the admin user, all Time Machine content from the host is accessible. When run by a non-admin user, only that user’s data is available.
Time Machine behaves differently in different contexts. When run from within startup, Time Machine lets you restore system stuff. Once the machine is running multi-user, you can restore the stuff you own. You can retrieve the current version of a file or any ancestor.
Objective Share Structure
After some experience with MacOS, TrueNAS, and Time Machine, the following Share organization suggests itself.
- /Clients
- /Clients/Host
- /Clients/Host/TimeMachine
- /Clients/Host/Users
- /Clients/Host/Users/User-1
- /Clients/Host/Users/User-2
And so forth.
Supports Multiple Macs Gracefully
This organization is intended to make it easy for hosts to come and go. Clients is the pool name. Each host has a branch within the clients pool. Each host’s Time machine has its own branch. Each host’s users has its own branch and each user has a branch off of …/Users/