Optimizing SSHFS Performance: Reducing File Synchronization Latency Between Mac OS X Host and Ubuntu VM


3 views

When mounting a Mac OS X host directory on an Ubuntu Server VM via SSHFS, users often experience noticeable delays in file synchronization. The default configuration typically shows 5-10 seconds latency for changes made on the host to appear in the mounted directory.

Here's an optimized command with performance-enhancing options:

sshfs -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3,compression=no,cache=no,allow_other,default_permissions,auto_cache,delay_connect user@host: ~/host

compression=no: Disables compression which can actually slow down transfers on fast networks.
cache=no: Bypasses local caching to get immediate updates.
auto_cache: Enables automatic cache invalidation.
delay_connect: Improves initial connection speed.

For Ubuntu VM, consider these sysctl tweaks:

sudo sysctl -w net.core.rmem_max=4194304
sudo sysctl -w net.core.wmem_max=4194304
sudo sysctl -w net.ipv4.tcp_window_scaling=1

For critical applications requiring instant notifications:

sudo apt-get install inotify-tools
inotifywait -m -r ~/host | while read path action file; do
    # Trigger sync actions here
done

Add these to your ~/.ssh/config:

Host *
    ControlMaster auto
    ControlPath ~/.ssh/control:%h:%p:%r
    ControlPersist 1h
    TCPKeepAlive yes

Consider these if SSHFS can't meet your requirements:

  • NFS with proper export settings
  • rsync with inotify triggers
  • Vagrant synced folders (for development environments)

When using SSHFS to mount a Mac OS X host directory on an Ubuntu Server VM, changes made on the host side often take 5-10 seconds to appear in the guest mount. This latency can significantly impact development workflows, especially when working with frequently modified files.

SSHFS implements client-side caching to improve performance, but this can cause delays in reflecting host changes. The default settings prioritize stability over real-time updates.

Here are the most effective options to reduce synchronization latency:

sshfs -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3,compression=no,cache=no,dir_cache=no user@host: ~/host
  • cache=no: Disables attribute caching for immediate file stat updates
  • dir_cache=no: Turns off directory caching for faster directory listing updates
  • compression=no: Reduces CPU overhead (helpful on fast networks)
  • ServerAlive*: Maintains connection stability

For development environments with frequent file changes:

sshfs -o auto_unmount,allow_other,default_permissions,\
entry_timeout=1,attr_timeout=1,ac_attr_timeout=1,\
negative_timeout=1 user@host: ~/host

If SSHFS performance remains unsatisfactory, consider:

  1. Using NFS instead (for trusted networks)
  2. Implementing inotify-tools to trigger manual refreshes
  3. Setting up a rsync daemon for specific directories

After applying these changes, test with:

touch testfile && time ls -la testfile

Compare the execution time before and after optimization.