This guide provides step-by-step instructions to configure two independent Flame Family workstations, without shared storage, for collaboration. Configuration differs slightly depending on the operating system of your workstations. This demonstration uses a macOS system and a Linux system to cover both cases. In these instructions, the two systems act as both servers exporting projects and clients importing projects.
For setting up a server-only system, such as a Project Server, follow Prerequisites, Setting the Hostname, Storage Configuration, and Export via NFS.
For setting up a client-only system, such as a Burn node or a remotely connected Flare, ensure it is connected to the same network and subnet as the server(s), and follow Setting the Hostname, Import via NFS, and Configure the Default Project Paths.
To enable project sharing, ensure the following:
Both systems must be connected to the same network and be on the same subnet for automatic service discovery to work. Since both systems will act as servers to each other, each should have a network interface with a static IP address.
For this example, the two systems are configured as follows:
| Name | OS | IP Address | Subnet | Mask |
|---|---|---|---|---|
| penguin | Rocky 9 | 192.168.0.11 | 192.168.0.0/24 | 255.255.255.0 |
| joker | macOS 15 | 192.168.0.21 | 192.168.0.0/24 | 255.255.255.0 |
You must have administrative access on both systems.
Assigning easily identifiable hostnames to your systems is good practice, even if not strictly necessary.
By default, a project's metadata and media cache are stored under the project's home directory which resides on the system drive. For better performance and organization, it is recommended to store project metadata and media caches on separate storage volumes. Media Caches benefit from fast, high-capacity storage.
A key constraint is that shared project metadata and Media Caches must be
accessible using the same paths on all hosts. We will thus use
/mnt/<hostname>/projects for metadata and /mnt/<hostname>/media for media
caches. Using such paths instead of going through the default automounted
/hosts/<host>/... paths has the added benefit of bypassing NFS for local
access on macOS. Linux always bypasses NFS when the mounted path is local.
The file system on which projects are created requires hard links capabilities and subsecond timestamp accuracy. To ensure smooth project management workflows, the storage used by the application should not be mounted over CIFS/smbfs.
Create a Striped Storage Volume:
This example creates a 2TB striped logical volume over 4 500GB nvme devices. Adjust the steps for the number and size of devices you want to use.
Locate available storage devices:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:32 0 476.9G 0 disk
├─sda1 8:33 0 200M 0 part /boot/efi
├─sda2 8:34 0 1G 0 part /boot
└─sda3 8:35 0 475.7G 0 part
├─rl-root 253:0 0 144.4G 0 lvm /
├─rl-swap 253:1 0 31.3G 0 lvm [SWAP]
└─rl-home 253:3 0 300G 0 lvm /home
nvme0n1 259:0 0 500G 0 disk
nvme1n1 259:1 0 500G 0 disk
nvme2n1 259:2 0 500G 0 disk
nvme3n1 259:3 0 500G 0 disk
Initialize physical volumes with pvcreate:
$ sudo pvcreate /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1
Create a volume group named vg0 with vgcreate:
$ sudo vgcreate vg0 /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1
Retrieve the total number of physical extents with vgdisplay:
$ sudo vgdisplay vg0 | grep -i 'total pe'
Total PE 511996
Create logical volume vg0-media with
lvcreate -l <#PE> -i <#PV> -I <#KB/PV/stripe>. This command creates a
logical volume over the 4 physical volumes with stripes of 32KB per physical
volume:
$ sudo lvcreate -l 511996 -i 4 -I 32 -n media vg0
Create an XFS File System:
Format the logical volume with the XFS file system:
$ sudo mkfs.xfs /dev/vg0/media
The file system must support timestamps with subsecond accuracy to preserve metadata integrity and ensure optimal NFS performance. This is particularly critical for NFSv3 (used by macOS servers), which relies on timestamps to update its cache. NFSv4 (Linux default) is less dependent on timestamps but still benefits from subsecond accuracy.
Mount the Media Cache Storage
Create the mount point with mkdir:
$ sudo mkdir -p /mnt/penguin/media
Add the following line to /etc/fstab to make the mount point persistent:
/dev/vg0/media /mnt/penguin/media xfs rw,noatime,inode64,nofail
Reload systemd and mount the volume"
$ sudo systemctl daemon-reload
$ sudo mount /mnt/penguin/media
Set Permissions
Make the mount point accessible to all users (refer to File Security for more information on secure workflows):
$ sudo chmod 777 /mnt/penguin/media
Create the Project Metadata Folder
Create the projects folder with open permissions (refer to
File Security for more information on secure
workflows):
$ sudo mkdir -m 777 /mnt/penguin/projects
Add a Storage Volume
Connect a storage device to the macOS and use the "Disk Utility" to configure
a volume on it. Name the volume "Media HD" and format it with a case-sensitive
APFS file system (recommended). The volume will be mounted under
/Volumes/"Media HD".
The file system must support timestamps with subsecond accuracy to preserve metadata integrity and ensure optimal NFS performance. This is particularly critical for NFSv3 (used by macOS servers), which relies on timestamps to update its cache. NFSv4 (Linux default) is less dependent on timestamps but still benefits from subsecond accuracy. Consequently, HFS+ cannot be used.
Add mnt to synthetic.conf
macOS, with System Integrity Protection enabled, does not allow creating a
folder at the root of the file system. To work around this, create a mnt
directory under /System/Volumes/Data:
$ sudo mkdir /System/Volumes/Data/mnt
and add the
following line to /etc/synthetic.conf. It will create a symbolic link from
/mnt to /System/Volumes/Data/mnt.
mnt System/Volumes/Data/mnt
synthetic.conf take effect after a system reboot.Create Sub-directory and Link
Create the <hostname> sub-directory:
$ sudo mkdir /System/Volumes/Data/mnt/joker
Create a symbolic link for the media folder:
$ sudo ln -s "../../Volumes/Media HD" /System/Volumes/Data/mnt/joker/media
Create the Project Metadata Folder
Create the projects folder with open permissions (refer to
File Security for more information on secure
workflows):
$ sudo mkdir -m 777 /System/Volumes/Data/mnt/joker/projects
Reboot
Reboot the system to apply changes made to synthetic.conf:
$ sudo reboot
Verify the Mount Point
Create a dummy folder under /mnt/joker/media and confirm that it exists
on the new volume. Remove the folder when done:
$ mkdir /mnt/joker/media/dummy
$ ls -ld /Volumes/Media\ HD/dummy
drwxr-xr-x 2 andreg staff 64 7 avr 13:26 /Volumes/Media HD/dummy
$ rmdir /mnt/joker/media/dummy
Set Permissions
Set the mount point permissions to make it accessible to Flame users on the network. For simplicity, make it accessible to all users (Refer to File Security for more information on secure workflows):
$ sudo chmod 777 /mnt/joker/media
1: The
fstabdocumentation states that you must use the volume label or UUID to mount an APFS file system under a specific directory at boot. However, our tests have shown that local file system entries in/etc/fstabare often ineffective. Whilediskutilallows you to mount the file system in a specific location, the configuration is lost after a reboot. Using a symbolic link has proven to be a more reliable solution.
To enable project sharing, the Project Home and Media Cache folders must be exported to make them accessible to other hosts in your workgroup. This section provides instructions for configuring NFS exports on both Linux and macOS. Refer to the exports(5) man page for additional information that may be applicable to your environment.
NFS Version Considerations: Linux uses NFSv4 by default, while macOS NFS servers are limited to NFSv3. In mixed environments (Linux and macOS), connections to macOS servers will use NFSv3, as the server dictates the protocol version. Connections to Linux servers can use NFSv4 regardless of the client platform.
Edit /etc/exports
Configure the export paths for the Project Homes and Media Caches. Use the
async option for Media Caches to improve performance. The sync
option is required for Project Homes to ensure data integrity.
/mnt/penguin/projects 192.168.0.0/24(rw,sync)
/mnt/penguin/media 192.168.0.0/24(rw,async)
Apply the Changes
Run the following command to apply the changes:
$ sudo exportfs -vra
Enable Editing of /etc/exports
/etc/exports is often protected to prevent macOS updates from
resetting its contents.Use chflags to make the file editable:
$ sudo chflags nosimmutable /etc/exports
Edit /etc/exports
Add the following lines to export the Project Homes and Media Caches:
/System/Volumes/Data/mnt/joker/projects /mnt/joker/projects -network 192.168.0.0 -mask 255.255.255.0
/System/Volumes/Data/Volumes/Media\ HD /mnt/joker/media -network 192.168.0.0 -mask 255.255.255.0
Verify Your Changes
Run nfsd checkexports to validate the exports:
$ nfsd checkexports
exports:1: path contains non-directory or non-existent components: /mnt/joker/projects
exports:2: path contains non-directory or non-existent components: /mnt/joker/media
If you see nfsd is not running message, enable NFS:
$ sudo nfsd enable
Repeat the export verification afterwards.
Apply the Changes
Update the NFS configuration:
$ sudo nfsd update
Make /etc/exports Immutable Again
Protect the file to prevent accidental changes:
$ sudo chflags simmutable /etc/exports
To enable project sharing, each host in the workgroup must import the Project Homes and Media Caches of other workgroup hosts. This ensures that all hosts can interact with shared projects seamlessly.
NFS Version in Use: When connecting to a Linux server, NFSv4 will be used. When connecting to a macOS server, NFSv3 will be used, as macOS NFS servers are limited to NFSv3.
Configure Direct Mounts
Add the following line to /etc/auto.master with your favourite text
editor:
/- auto.direct
Then, edit /etc/auto.direct and add these lines:
/mnt/joker/projects -lookupcache=pos 192.168.0.21:/mnt/joker/projects
/mnt/joker/media 192.168.0.21:/mnt/joker/media
Project metadata mounts must include the lookupcache=pos
option to preserve metadata integrity. The NFS client cache has difficulty
staying in sync without this option whenever a file is hard-linked or a
file/directory is renamed. lookupcache=pos is preferred on Linux because
it has minimal impact on performance as opposed to using acdirmin=0 and
acdirmax=0.
192.168.0.22, you can use:
/mnt/joker/media 192.168.0.22:/mnt/joker/mediaThis ensures that media transfers are routed through the dedicated IP address, improving performance and isolating traffic.
Apply the Changes
Restart the autofs service:
$ sudo systemctl restart autofs
Validate the Mount Options
Execute the following command and verify the lookupcache=pos option is
active for the Project Home mount:
$ nfsstat -m
Work Around the macOS NFS Mount Complications
macOS NFS servers will stop responding to Linux clients if they are idle for 5 minutes or more unless specific conditions are met. For instance, having the same macOS storage mounted on a second macOS system eliminates the issue. A robust, albeit inelegant, solution to this problem is to access the mount point more than once every 5 minutes. This can be achieved with a scheduled job.
Use cron to schedule a task every 4 minutes, regardless of user login status. cron runs system-wide and does not require a user to be logged in.
Example: To run a command every 4 minutes, add a similar line to the system
crontab (/etc/crontab). Replace /mnt/joker/media and
/mnt/joker/projects with your own paths:
*/4 * * * * root /bin/stat /mnt/joker/media /mnt/joker/projects > /dev/null
crontab file:$ man 5 crontab
Enable Editing of /etc/auto_master
/etc/auto_master is often protected to prevent macOS updates
from resetting its contents.Use chflags to make the file editable:
$ sudo chflags nosimmutable /etc/auto_master
Configure Direct Mounts
On macOS 26 and later, add the following line to /etc/auto_master:
/- auto_direct -nobrowse
The resvport option is required to import from Linux on macOS.
On macOS 15 and earlier, set resvport in auto_master, not in the direct
mapping.
/- auto_direct -nobrowse,resvport
Then, edit /etc/auto_direct and add these lines (if on
macOS 15 or earlier, see this Important note
below, if on macOS 14 or earlier, see this additional
Important note below):
/mnt/penguin/projects -acdirmin=0,acdirmax=0,resvport 192.168.0.11:/mnt/penguin/projects
/mnt/penguin/media -resvport 192.168.0.11:/mnt/penguin/media
Project metadata mounts must include the acdirmin=0 and
acdirmax=0 options to preserve metadata integrity. The NFS client cache
has difficulty staying in sync without these options whenever a file is
hard-linked or a file/directory is renamed.
(macOS 15 or earlier) Set resvport in auto_master, and omit
it from auto_direct entries:
/mnt/penguin/projects -acdirmin=0,acdirmax=0 192.168.0.11:/mnt/penguin/projects
/mnt/penguin/media 192.168.0.11:/mnt/penguin/media
(macOS 14 or earlier) automount does not support synthetic
symbolic links on these OS versions. To work around this limitation and make
/mnt/penguin/projects and /mnt/penguin/media locally accessible,
specify the physical paths instead:
/System/Volumes/Data/mnt/penguin/projects -acdirmin=0,acdirmax=0 192.168.0.11:/mnt/penguin/projects
/System/Volumes/Data/mnt/penguin/media 192.168.0.11:/mnt/penguin/media
192.168.0.12, you can use:/mnt/penguin/media 192.168.0.12:/mnt/penguin/media
This ensures that media transfers are routed through the dedicated IP address, improving performance and isolating traffic.
Apply the Changes
Refresh the automount configuration:
$ sudo automount -c
Validate the Mount Options
Execute the following command and verify the acdirmin=0 and acdirmax=0
options are active for the Project Home mount:
$ nfsstat -m
Make /etc/auto_master Immutable Again
Protect the file to prevent accidental changes:
$ sudo chflags simmutable /etc/auto_master
To simplify project sharing, configure the default project paths in the
sysconfig.cfg file. This ensures consistent paths for project metadata and
media caches across all hosts in the workgroup. Refer to
Centralised Components for additional details.
Under configuration/settings/project_folders, set the following values:
...
"project_folders": {
"default_home": "/mnt/<hostname>/projects/<project name>",
"default_remote_home": "/mnt/<hostname>/projects/<project name>",
"default_setups_dir": "<project home>/setups",
"default_media_cache": "/mnt/<hostname>/media/<project name>"
}
...