I am currently running samba on my Linux server to serve to a few desktops and laptops, running a mix of Linux and Windows, on my LAN. All is fine, very responsive and throughput is okay (~80% of FTP), but we will be away from our house for a few months (to the other side of the Pacific Ocean), and wish to access the files over the Internet.
The obvious solution (to me at least), is to continue using samba over VPN. I actually tried it last year (PPTP using dd-wrt firmware on my router), and it worked, but was painfully slow (entering a directory takes ~10 seconds, throughput is not that great either), so I am looking for an alternative solution now.
It appears that the main problem with samba/cifs is that it is very chatty, has a large overhead (small chunks of data at a time), and is "serial". All of which make it unsuitable over a higher-latency network such as the Internet.
I have looked into a few solutions. NFS has poor Windows support (in particular, it doesn't support Unicode filenames), and is very firewall-unfriendly (probably need to use VPN). WebDAV looks promising, since it's very firewall-friendly, and I already have Apache running, but it would be unconventional to use it as a general purpose NFS? Not sure about FTP (it seems crude). SSHFS sounds very nice - very convenient to set up (UNIX logins, doesn't need anything other than SSH, which I already have), seems to be efficient (and SSH supports compression), content caching, large blocks, and multithreading (from the website). Except there is no Windows client... Both Linux and Mac clients are on top of FUSE.
If I really want to use SSHFS, I guess I can run Linux in VMware to provide a "proxy" over samba, but that sounds ugly. Or perhaps I can write a simple SSHFS->SMB wrapper for Windows (pretending to be a SMB server). Writing a filesystem driver for Windows is way beyond me, but that would be the best solution I guess.
What are your suggestions?
It's going to host a bunch of small (documents) files mostly, so responsiveness is more important than raw throughput.
Network is probably going to be ~50kbytes/s both ways, ~150ms ping.
Clients will be Windows and Linux.
Unicode support is needed (my parents have many files with Chinese filenames).
Load will be insignificant (4 users, probably at most 1 or 2 at a time).
The server is running Debian Linux (stable) on a P3 600mhz (or so). The files that need to be served are on a Linux software RAID-1 array (ext3 or reiserfs, don't remember).