5

A company with 50 graphic designers are working on the same file server. They are using mainly Indesign. A typical project is a 60 pages indesign document with 1.5GB of linked files (something like 100 PSD, JPG, .ai). They continuously edit linked files. This causes a lot of stress to the server. All worksations have onboard SSD (700MB/s) that are used only for system and apps.

I wonder if there are any way to use the local drive as a cache for remote folder. Let's say we assign 200GB for caching files. Each time a file is accessed it would check on the server the last change date and retrive the file only if cached data is obsolete. If a file change on the server it notify workstations. It would be thinked as a dropbox or google drive but with local server.

If anyone knows solutions of this kind, please, point me to it.

If there are not, I really wonder why. It is a need I see in every companies of this kind.

Adobe recomends to copy file locally, work, then re-upload. This is really painfull and impossible when 3 graphists are working on different chapters of the same book that share a lot of assets.

(Note this issue is soved but I let it for constiency with comments :) Using SMB it uses huge amount of CPU on the server, I think Indesign is watching after changes on the linked files and constantly request for changes. If a linked file is updated indesign immediately show a sign next to it. (Solution : when using afp to connect remote folders CPU usage on server is normal, there definetly an issue with SMB implementation on OSX.)

Anyway, I'm still looking for a way to mount remote folders... having local cache.

bokan
  • 225
  • 3
  • 13
  • Surprisingly, most of the answers to [this question for linux](http://serverfault.com/questions/556928/distributed-file-system-with-local-disk-cache) are valid for windows as well. – Andrew Domaszek Nov 27 '14 at 00:26
  • What are the client OS' and what is the OS of the "file server"? – TheCleaner Nov 27 '14 at 02:52
  • They are running on macOS, but I'm interested in a solution compatible with the 3 majo OSes (Linux, Windows, MacOS). – bokan Nov 27 '14 at 08:46
  • Branchcache is the first thing that comes to mind when speaking about Windows. However it is not available for other OSes. – Peter Lindqvist Dec 01 '14 at 11:04
  • to me, Andrew Domaszek answered your question. NFS is more common, but AFS seems to have more tunable settings (this is just a feeling) An other way to look at the problem is to have graphists working on local disk that is rsync or rdiff-backup to server (rdiff will add the ability to have some revision backups... can be nice to be able to go back 1 hour, just before flattening that dam psd :) – Antony Gibbs Dec 01 '14 at 23:45
  • 1
    You say SMB uses huge cpu power... sounds like there is an issue there that could be tuned in. You should investigate if this is CPU or CPU io.wait (io.wait perhaps indicates something to be tuned on filesystem mount/tunefs level, pure cpu used by SMB should indicate tuning smb.conf settings) – Antony Gibbs Dec 01 '14 at 23:53
  • Have you noticed difference in behaviour weather accessing shares via OSX or Windows? transfer speed, response time? What type of hard drives do you have on server side? SSD? RAID? mount options like noatime can help (some other options that can differ writes might be more risky but are worth trying as to help identify the bottleneck) an interesting tool to run on server can be iotop – Antony Gibbs Dec 01 '14 at 23:58
  • Is there a WAN anywhere between a developer and the server? When two developers are working, do they reference the same files where one is reading file X and writing Y and the other is writing file X? If so, your opportunistic caching scenario becomes somewhat more difficult... – Andrew Domaszek Dec 02 '14 at 14:33
  • @AndrewDomaszek : I edited answer, SMB issue solved. No matter what hardware is used on server, local SSD cache at 700MB/s will always be faster. – bokan Dec 02 '14 at 14:50
  • cifs://servername instead of smb://servername on macs 10.9 forces use of smb1 [see](http://cammodude.blogspot.fr/2013/10/os-x-109-mavericks-workaround-for-smb.html) If using extensive file locking/updating from different computers over different protocols might create you some other issues – Antony Gibbs Dec 03 '14 at 00:10
  • win locks file -> smb -> fs -> afp -> mac is a longer path then win -> smb:smb -> mac – Antony Gibbs Dec 03 '14 at 00:13
  • but all my readings takes me to fall back on NFS for speed... – Antony Gibbs Dec 03 '14 at 00:24
  • A SAN full of SSD disk with a clustered file server ? – yagmoth555 Dec 03 '14 at 04:10
  • @yagmoth555: That would cost at least $120.000 for SSD SAN + 10Gbswitches + 10Gb NIC on each worksatation. Why wasting so much money where clever use of existing hardware would be enough ? My problem is not how to make the network work (it works fairly well with a small NAS), my goal is to leverage power of hardware. – bokan Dec 03 '14 at 08:24
  • @AntonyGibbs: I was using smb:// anyway that causes high CPU load (probably due to application continuously watching after files changes). No matter how efficient the protocol is, it will still be limited by gigabit link if there's no local cache. – bokan Dec 03 '14 at 08:29
  • NFSv4 has a cache implementation and will manage file transfer and locks much better then smb. I'm suspecting lock/notify mechanism is involved in that high CPU story and plays important part in what you are doing. When a file is updated, the notification has to inform any cache on the way. On your workstations ram is all ready caching (buffering). Local SSD cache would have to be updated any how and could give worse results. (constantly updating files not needed in the end) – Antony Gibbs Dec 04 '14 at 00:38
  • have you tried tuning tcp settings on the macs? https://rolande.wordpress.com/2010/12/30/performance-tuning-the-network-stack-on-mac-osx-10-6/ or http://hints.macworld.com/article.php?story=20060616112919669 you can play running `sudo sysctl -w kern.ipc.maxsockbuf=8000000` in a terminal, to the worse, any sysctl passed this way will not survive a reboot. can be worth testing. Don't edit /etc/sysctl.conf until you found what settings has desirable effects – Antony Gibbs Dec 04 '14 at 00:49
  • good idea to read what is your default setting before playing around like this for one `sysctl kern.ipc.maxsockbuf` or just keeping a note somewhere of a `sysctl -a` (sudo -s to get a root shell and not have to sudo again and again) same thing on server side. – Antony Gibbs Dec 04 '14 at 00:51
  • @AntonyGibbs : Please do not waste your time trying to improve our current setup. The graphists are quite happy with it since we switch to afp. My question is theorical, I want to know if there is any way to get local cache on remote folders. If you find a system to have it you'll get all my reputation points. :) – bokan Dec 04 '14 at 11:23
  • NFS does to... but I didn't come up with the answer first :) and doing a bit of ip tuning you could get up to 30% boost. have you tried cisf:// and noticed a better behaviour over smb:// ? – Antony Gibbs Dec 04 '14 at 11:43

2 Answers2

0

From what you're describing, you're really looking for a distributed revision control system. It keeps a central repo on a server, and clients can check in for updates.

You're using Adobe Indesign, and I wasn't really able to find out what kind of integration option are out there for various revision control systems, but that's just some research. Adobe offers something called Bridge, but from its description it seems to be more focused on media, so I'm not sure it'll do what you need.

There are lots of options out there. I've used Perforce and Git. Admittedly those were with a focus towards software development, but we did use them for managing art assets and design documents.

I'm a strong proponent of using a system like this and having the designers/engineers check and pull for updates when they want to get the latest. Sometimes there is a benefit or desire to use an older version of a document, and going to this kind of system moves you away from SMB/CIFS shares and towards a managed version control system.

  • Thank you for trying to answer. I don't want control version I don't want them to check in/out (because they wil never bother doing this). Also GIT, SVN and others are made for textfile, they are not meant to be used for 500MB PSD files. I want it to be a transparent remote folder... with local cache. – bokan Dec 01 '14 at 23:10
  • 1
    get a graphist to commit via git.... good luck ;) – Antony Gibbs Dec 01 '14 at 23:47
0

From a normal fileshare perpective it would be hard to setup.

-- With offline file but in public/group folder last writer will win the save.

  • Another solution for Windows/IOS/MAC or even adroid is you could use WorkFolder in a near futur (Microsoft told that they will release client for those platform, but we don't have a release date yet). That mean you need a 2012R2 as your fileserver. The workfolder sync when you click a file to work with it. The same problem arise if you set a WorkFolder in a public's folder, the last writer win.

So the big question is do you need public folder, and does your employees work in the same files during the day ? If yes, we fallback to the SVN/GIT's idea

yagmoth555
  • 16,300
  • 4
  • 26
  • 48