Diskless Windows 10 workstation booted from NAS - possible? iSCSI? SMB?

TheBloke

Active Member
Feb 23, 2017
200
40
28
41
Brighton, UK
Hi all

I'm in the process of a major upgrade to my home NAS. The server runs Solaris 11.3, with hardware of: 2 x 2.93GHz hex-core LGA1366 CPUs, 72GB RAM (considering upgrading to 120GB) and 32 ports of LSI 6GB SAS/SATA (2 x 2008, 2 x 2308).

I currently have 27 x 2TB 7.2k SATA drives installed, from which which I plan to run a 3 x 9-drive RAIDZ3 ZFS pool - subject to further benchmark comparisons. I briefly considered and tested a 26-drive mirrored config, but as nearly all my drives were bought used, and many are old (some with as many as 40k hours logged), I feel it's too risky.

I hope to have at least one, maybe two SSDs for SLOG and cache. And I'm in the process of adding 10G ethernet.

The upshot of all this is that for the first time ever I have a pretty powerful home server, with tons of storage and very high disk bandwidth - at least sequentially. So now I want to use it as much as possible!

My main workstation is dual-boot Windows 10 and OSX 10.11, and at the moment is mostly being used for Windows.

I will of course have many SMB file shares - most likely from Samba 4 rather than Solaris' built-in SMB, as that doesn't work great when one has loads of nested ZFS filesystems. And I will probably try some NFS shares to see how they compare vs SMB on OSX.

But I was wondering - could I go further? For example, could I actually boot my workstation from the NAS? Here I'm thinking Windows 10 rather than OSX. Could I have my Windows C: drive be an iSCSI volume? Or even an SMB share? (Googling suggests probably not the latter, see below.)

Why do I want this? Well, I admit part of the reason is that it sounds cool and is another use for the NAS! But I can also see practical advantages:
  • it would free up the 500GB SSD I currently use for Windows boot, giving me an (extra) SSD to use for SLOG and/or cache in my server - at no additional cost
  • the sequential read/write speeds I get from the NAS are far higher than even a local SSD - up to 1.5GB/s and 2GB/s respectively in my latest iozone tests, which is 3-4x faster than my SSD.
    • I won't get all that bandwidth over the network unless I can team 2 x 10G links, which almost certainly requires a 10G switch which I won't have (I may have a 1G/10G switch, but with only 2 SFP+ ports)
    • but even 1.2GB/s would be over double the speed my SSD can provide
  • I'll never have to worry about running out of space on the workstation
  • I can use compression to reduce the amount of space used, and the IO/network bandwidth involved
  • I can use ZFS snapshots on workstation files/volume(s), providing point-in-time recovery and easier backups - without the hassle of setting up a workstation-to-server backup procedure
  • If it were possible with SMB mount rather than iSCSI, I could read and manipulate Windows files from a UNIX environment (one that's better than Cygwin) - ie search the contents of all files on my workstation with: grep -r bar /foo/export/windows10/C

Now, a key disadvantage will be random IO. Even with an SSD for cache and another for SLOG, I'm very likely to fall down heavily on random read/writes compared to a local SSD. I don't know how much of an issue that will be for my workloads. I am hoping not too much, as I tend to work with large files like MP4 videos in Adobe Audition, which I believe/hope tend to be read and written fully, ie. sequentially.

I don't run any databases on my workstation, and while I have a couple of local VMWare VMs, I plan to migrate these to run on the server in VirtualBox.

My initial Googling is suggesting that maybe diskless booting doesn't work any more for normal SMB fileshares, as I am pretty sure it used to in early Windows - at the least, I can't find any references to netbooting other than for installation, and via iSCSI.

But I do see many articles about netbooting Windows 10 via iSCSI (eg here, and here) so I know that should work. The examples I've briefly read so far were using Windows Server as the iSCSI target, but I am hopeful a Solaris target could also work. (Or, worst case, I could run a Linux, or even Windows Server VM and pass a ZFS volume through to it as a raw disk to then make an iSCSI target out of! What that would do to performance I don't know..)

It'd be a shame if it wasn't possible to do via SMB, as that cuts out at least one of my advantages (easy access to my Windows workstation files on the server). But it doesn't preclude any of the others, including using ZFS snapshots for backups.

So has anyone tried a diskless Windows machine any time recently, and has any thoughts or advice? Are there any potential pitfalls that seem obvious to you?

I'll most likely give it a go even if there are big problems I've not thought about, so when I get a chance to try it I'll report back on that (in a week or two once all my HW is here and fully setup.) But in the meantime, any comments from anyone who knows more would be much appreciated!
 

cperalt1

Active Member
Feb 23, 2015
179
53
28
40
As far as using unix cli on your iscsi goes if you do boot Windows 10 you have the option in Windows 10 of installing bash for windows which gives you a light ubuntu environment in which you can grep to your hearts delight.
 

TheBloke

Active Member
Feb 23, 2017
200
40
28
41
Brighton, UK
As far as using unix cli on your iscsi goes if you do boot Windows 10 you have the option in Windows 10 of installing bash for windows which gives you a light ubuntu environment in which you can grep to your hearts delight.
Yeah, I already have Cygwin installed which provides a Bash shell + many/most common GNU/UNIX utils. So I can use *nix tools on my Windows machine already, and I do. It's just sometimes I find Cygwin's version of a tool lacking versus a version on a real *nix OS.

But the main benefit of the ability to do it on the server would be access to all files in once place, including past backups/snapshots. Being able to search/manipulate files from both the current boot and snapshots taken last week, month, etc. It would also allow me to run all commands from a single login - I log into the server and from there I can access everything, all files both on the server and on the workstation, both current and past snapshots. That wouldn't work with iSCSI as those snapshots would all be opaque volumes containing NTFS-formatted data; inaccessible except when mounted on the workstation.

It's far from the end of the world though - iSCSI would still have most of the advantages, assuming performance holds up (my main concern.) And maybe SMB would bring its own problems - for example, maybe the performance would be much worse due to all writes needing to be sync? And I won't be great for sync IO, even with an SLOG. Of course that might be true of iSCSI as well, I don't yet know.
 

cperalt1

Active Member
Feb 23, 2015
179
53
28
40
Bash on Ubuntu on Windows - About
Bash for windows is a Compatibility layer that allows you to run linux binaries unmodified instead of the limited cygwin environment. While I do not boot from iscsi I do have several volumes I mount via iscsi on Windows 10 that resided on a smart os machine (illumos based os) and that is where I store my shadow copies and a clone of my boot drive in case my workstation blows up. While not ideal I have used snaps to restore files from previous states.
 

TheBloke

Active Member
Feb 23, 2017
200
40
28
41
Brighton, UK
Bash on Ubuntu on Windows - About
Bash for windows is a Compatibility layer that allows you to run linux binaries unmodified instead of the limited cygwin environment. While I do not boot from iscsi I do have several volumes I mount via iscsi on Windows 10 that resided on a smart os machine (illumos based os) and that is where I store my shadow copies and a clone of my boot drive in case my workstation blows up. While not ideal I have used snaps to restore files from previous states.
Ah OK fair enough. I heard about that when it was first released but I never tried it. I should have, and so am in the process of installing it now. It sounds great in principle. Thanks!

EDIT: got it installed, looks really good. That's awesome that it basically allows any apt-get, or at least most. I see people are installing xfce in it and connecting to a Windows X server and stuff like that. I definitely should have investigated it a long time ago! :) Thanks again.

And that's great to hear you're running Windows iSCSI from an Illumos-based server. From what I've read so far, the netboot part is pretty straightforward once iSCSI is working.

I see that Windows 10 has the iSCSI initiator already and I've had a quick look at the set-up app. I'll definitely be trying this out as soon as my server is accessible again (I'm in the process of re-jigging the hardware.)

Have you found any issues or come across any potential pitfalls when using iSCSI between Windows and Illumos? Any performance problems or connection hitches?

Thanks
 
Last edited: