Best way to mount a remote ZFS share in Windows and make it appear local, or close to local

2

1

I primarily use Linux and Mac, where sharing folders and block devices is easy and just works. I have a 38TB ZFS-backed Ubuntu fileserver that pretty much stores all of my data for all of my devices.

One of those devices is a Windows 7 box, which I use for gaming and making music. It's very fast, but storage-wise, I've removed its 2TB ICH10R-backed RAID5 array, leaving it with just a medium-sized SSD, hoping to be able to use an NFS share on my gigabit-tethered ZFS box as the primary place to install games and applications. In practice, the NFS share is as fast, or faster, than the Intel RAID-5 array that I've taken down. Although it does use more CPU cycles, being ethernet-based. That's a trade-off I'm willing to accept, as having a ZFS-backed snapshottable installation target on this box is absolutely awesome.

Thing is, it's often pretty difficult to install apps and games to anything that's not a proper local drive on Windows. In my experience, if I map a physical external drive (like USB or Firewire) to the drive letter that's usually an NFS or Samba share and install an app there, then move it to the network share and remount that at the same drive letter after installation, said app or game will run just fine. It'll just refuse to install there when the drive letter contains a network share.

This work-around gets pretty tedious over time, especially when you're dealing with a game such as The Sims, where you want to install an expansion pack over a game folder that's already near-30GB in size. For this to work, I have to unmount my NFS share, move all these folders to a physical drive, mount that using the old drive letter, install, move files back, remount, and then it's time for bed, because the whole thing took five hours.

I'd really like to avoid that issue, in any way that's clever and just works. I'm thinking something like:

  1. Some app/hack exists that'll make a mounted network drive appear to installers as if it were a local drive.

  2. Somehow I can mount a network share to a folder, and not a drive, so that I can have a local mix-and-match of folders, such as:

    [local]  c:\Games\The Sims 3
    [remote] c:\Games\The Sims 3\The Sims 3 Fast Lane Stuff
    

    and then any new expansion pack would install locally (without errors as the containing folder would reside on a physically attached drive), and afterwards I'd move it to the ZFS NFS share and mount it under c:\Games\The Sims 3\\[foldername].

  3. I could use a ZVOL to create a VHD in Windows and use that as a target.

Do you have any input on the possibilities of options 1 and 2? And with regards to 3, is this even possible, or would I have to use a physical file on an NFS share, and if so, what are the performance penalties, and what about mounting, seeing as how NFS automount doesn't seem to work in Windows 7, so automount of a .vhd file in a non-automounted NFS share obviously wouldn't mount either?

DanielSmedegaardBuus

Posted 2013-01-12T21:08:06.643

Reputation: 645

Please add some detail on the problems you already solved, like a) do you have an NFS client for Windows. b) Did you test it? – Henk Langeveld – 2013-01-13T20:49:05.973

The NFS client is built into Windows 7. I went to "Add and remove programs" > "Turn Windows features on and off" > "Services for NFS" > "Client for NFS". After that I can mount NFS shares using either "mount" from the command line, or using the same method as adding a Samba/CIFS share (\<host or ip><exported share>). On the Linux side, my share was set up like "/titanic/Gamer 192.168.3.0/255.255.255.0(async,rw,no_subtree_check,crossmnt,mountpoint=/titanic,all_squash,anonuid=1004,anongid=1004,fsid=1)". all_squash was needed as I couldn't use auth, 1004:1004 is my gamer:gamer UID/GID. – DanielSmedegaardBuus – 2013-01-14T23:16:41.987

The Windows NFS client is only available with W7 Ultimate or Enterprise (just trying to clarify for others with similar question). – Henk Langeveld – 2013-01-15T07:22:00.363

Thanks, @HenkLangeveld, good to know :) Btw, ZVOL + iSCSI + Windows is running great, and the drive mounts just perfectly at startup! – DanielSmedegaardBuus – 2013-01-15T14:58:54.123

Answers

4

ZFS will share filesystems over NFS or CIFS, and ZVOLS over iSCSI.

If you really want close to local, you'd have to export a ZVOL over iSCSI. Your second choice would be CIFS.

Considering that you're talking so casually about NFS on Windows, are you by any chance running Ultimate or Enterprise? I'm not aware of any other popular NFS client for Windows these days.

Henk Langeveld

Posted 2013-01-12T21:08:06.643

Reputation: 379

Holy crap, Henk! Hadn't considered iSCSI and ZVOLs at all, as I've never used iSCSI before. I looked it over, and I've set it up on my Ubuntu server using the iscsitarget package, and on the Windows side it was also super easy to connect! Started out with a 50GB block device, which I've formatted and I'm copying to ATM. Bursts are really fast, though some congestion seems to appear every now and then. Will have to test more tomorrow. Definitely solved my issue, and it definitely is a very "local" mount :) Thanks! :D – DanielSmedegaardBuus – 2013-01-14T22:36:47.870

Make sure you make backups of that volume. – Henk Langeveld – 2013-01-15T07:23:36.223