[bcc gpxe-devel]<div><br></div><div>Sorry, I was under the impression that WinVBlock was considered part of the broader Etherboot project, for which gpxe-devel seemed to be the mailing list of record. Sometimes people get annoyed when I fail to CC their project's mailing list. :/</div>
<div><br></div><div><div>I was not aware of VHD. I spent a couple hours Googling for Windows COW overlays the other day but did not find it. This certainly seems to fill in a lot of the missing pieces; thanks for the tip.</div>
</div><div><br></div><div>To answer your questions:</div><div>- The client OS is Windows 7.</div><div>- I would like a solution that can persist across reboots, but that's not absolutely critical. A solution which does persist will need to have a way to easily wipe all local data and start fresh from the master image -- ideally this would be a boot menu option.</div>
<div><br></div><div>Given that Win 7 apparently can boot from VHD, I'm now not sure if I need to write any code to set this up. I can put a differencing VHD on the local drive, seeded from a "linked to hard disk" VHD which refers to the iSCSI or AoE drive. The biggest problem I see with this is that the local drive will contain a filesystem which contains only two files, one of which contains another filesystem... kind of sad, but probably not a big problem in practice since it's an SSD. Or is there a way to use a block device as a differencing VHD directly?</div>
<div><br></div><div>Thoughts?</div><div><br></div><div>-Kenton</div><div><br></div><div>On Wed, May 4, 2011 at 10:49 AM, Miller, Shao <span dir="ltr"><<a href="mailto:shao.miller@yrdsb.edu.on.ca">shao.miller@yrdsb.edu.on.ca</a>></span> wrote:<br>
<div class="gmail_quote"><blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;" class="gmail_quote">
<div vlink="blue" link="blue" lang="EN-US">
<div>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt">Pre-kernel:
Perhaps you could do gPXE -> read-only iSCSI SAN -> MBR -> NTFS Partition
-> NTLDR -> specially-crafted NTBOOTDD.SYS (for VHDs) -> “Master”
VHD</span></font></p></div></div></blockquote><blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;" class="gmail_quote"><div vlink="blue" link="blue" lang="EN-US"><div>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt"> </span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt">Post-kernel:
MS iSCSI Initiator and Michael Brown’s ‘sanbootconf’ driver
re-establish the SAN. WinVBlock creates a new “child” VHD on
a partition on the local HDD, with the “parent” VHD still the same
one on the same iSCSI SAN.</span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt"> </span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt">Does
this seem like it’d satisfy your goals? Do you need anything to
persist beyond a reboot? What is the OS you are hoping to boot on the
clients?</span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt"> </span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt">If
gPXE development isn’t really involved, perhaps I could request private
correspondence for any WinVBlock-related matters, if you please? If
tweaks need to be made to gPXE, then by all means, I would agree that this
forum would be appropriate. </span></font><font face="Wingdings" size="2"><span style="font-size:11.0pt;font-family:Wingdings">J</span></font><font size="2"><span style="font-size:11.0pt"></span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt"> </span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt">Thanks
again for your interest!</span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt"> </span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt">-
Shao Miller</span></font></p>
<div>
<div style="text-align:center" align="center" class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:10.0pt">
<hr align="center" width="100%" size="2">
</span></font></div>
<p class="MsoNormal"><b><font face="Tahoma" size="2"><span style="font-size:10.0pt;font-family:Tahoma;font-weight:bold">From:</span></font></b><font face="Tahoma"><span style="font-family:Tahoma"> Kenton Varda [mailto:<a target="_blank" href="mailto:temporal@gmail.com">temporal@gmail.com</a>] <br>
<b><span style="font-weight:bold">Sent:</span></b> Wednesday, May 04, 2011
11:21<br>
<b><span style="font-weight:bold">To:</span></b> Miller, Shao<br>
<b><span style="font-weight:bold">Cc:</span></b> <a target="_blank" href="mailto:gpxe-devel@etherboot.org">gpxe-devel@etherboot.org</a><br>
<b><span style="font-weight:bold">Subject:</span></b> Re: COW Overlay in
WinVBlock -- willing to implement</span></font></p>
</div><div><div></div><div class="h5">
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:10.0pt"> </span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:10.0pt">I'm
aware that I can set up COW on the server side, but I'd really rather that
writes didn't cross the network at all. It's not uncommon for guests to
want to install additional games which can be as much as 10GB each, and my
machines have 60GB local SSDs which I'd like to utilize.</span></font></p>
<div>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:10.0pt"> </span></font></p>
</div>
<div>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:10.0pt">In
fact, longer-term it would be nice to use those SSDs as read caches in addition
to write caches, maybe even sniffing blocks being sent to other machines on the
network and precaching them. Typically, everyone loads the same game at
the same time, and games need to load a lot of data, so it would be neat to
avoid transferring that data over the network 12 times. That said, this
doesn't appear to be a significant performance problem in my existing setup, so
it is not a priority. (Actually, I have already written code that
implements this idea as a userspace daemon on top of NBD, though it seems to
have some bugs still.)</span></font></p>
</div>
<div>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:10.0pt"> </span></font></p>
</div>
<div>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:10.0pt">I'm
also aware that commercial solutions exist, but I'd rather use an open source
solution that I can customize, e.g. with the features I mentioned above.
Also, the commercial solutions I've found require running a Windows
server, which I'd like to avoid. And anyway, implementing this would be
fun. :)</span></font></p>
</div>
<div>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:10.0pt"> </span></font></p>
</div>
<div>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:10.0pt">-Kenton</span></font></p>
<div>
<div>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:10.0pt"> </span></font></p>
<div>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:10.0pt">On
Wed, May 4, 2011 at 5:27 AM, Miller, Shao <<a target="_blank" href="mailto:shao.miller@yrdsb.edu.on.ca">shao.miller@yrdsb.edu.on.ca</a>>
wrote:</span></font></p>
<div vlink="blue" link="blue">
<div>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt">Good day, Kenton.</span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt"> </span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt">I’m currently
working on some serialization/deserialization code in order to simplify
developing support for Microsoft’s [acquired] VHD disk image
format. Once implemented, the “differencing” feature of VHD
image files will provide copy-on-write functionality.</span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt"> </span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt">For example, I’d
like to be able to boot from a master VHD pre-kernel, then have WinVBlock
continue with a delta.</span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt"> </span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt">However! Since
you’ve e-mailed the gPXE developers’ list, I suspect that you are
more interested in SAN CoW of some sort. This is currently possible using
Linux’ device-mapper, and serving the CoW devices. Did you see this
article?:</span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt"> </span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt"> <a target="_blank" href="http://etherboot.org/wiki/appnotes/cow">http://etherboot.org/wiki/appnotes/cow</a></span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt"> </span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt">CoW-capable SAN target
software seems to be a popular wish. A fellow recently shared a fun video
of Ardence:</span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt"> </span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt"> <a target="_blank" title="http://www.youtube.com/watch?v=moIuHqIc-PQ&feature=player_embedded" href="http://www.youtube.com/watch?v=moIuHqIc-PQ&feature=player_embedded">http://www.youtube.com/watch?v=moIuHqIc-PQ&feature=player_embedded</a></span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt"> </span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt">I’m not 100%
sure how you might be thinking of using gPXE + WinVBlock, or if you would even
need WinVBlock. Would you care to share a few more details about the
scenario you have envisioned?</span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt"> </span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt">Thank you for your
offer to help with development. When WinVBlock was originally derived
from V.’s WinAoE work, it was quite a learning curve, having dwelled in
user-land, myself. But before suggesting anything to jump into, perhaps a
little more discussion regarding your scenario would be better.</span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt"> </span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt">Thanks!</span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt"> </span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt">- Shao Miller</span></font></p>
<div>
<div style="text-align:center" align="center" class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:10.0pt">
<hr align="center" width="100%" size="2">
</span></font></div>
<p class="MsoNormal"><b><font face="Tahoma" size="2"><span style="font-size:10.0pt;font-family:Tahoma;font-weight:bold">From:</span></font></b><font face="Tahoma"><span style="font-family:Tahoma">
Kenton Varda [mailto:<a target="_blank" href="mailto:temporal@gmail.com">temporal@gmail.com</a>]
<br>
<b><span style="font-weight:bold">Sent:</span></b> Wednesday, May 04, 2011
01:35<br>
<b><span style="font-weight:bold">To:</span></b> Miller, Shao; <a target="_blank" href="mailto:gpxe-devel@etherboot.org">gpxe-devel@etherboot.org</a><br>
<b><span style="font-weight:bold">Subject:</span></b> COW Overlay in WinVBlock
-- willing to implement</span></font></p>
</div>
<div>
<div>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:10.0pt"> </span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:10.0pt">Hi Shao and
gpxe-devel,</span></font></p>
<div>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:10.0pt"> </span></font></p>
</div>
<div>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:10.0pt">In a post on this page
you mentioned that you are planning to add COW overlay support to WinVBlock:</span></font></p>
</div>
<div>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:10.0pt"> <a target="_blank" href="http://reboot.pro/8168/page__st__300">http://reboot.pro/8168/page__st__300</a></span></font></p>
</div>
<div>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:10.0pt"> </span></font></p>
</div>
<div>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:10.0pt">I have a need for this
(in order to netboot multiple machines off a common base image), and have not
been able to find any existing non-proprietary solution. Can I help you
implement it? If so, can you give me pointers on where to start and what
to do?</span></font></p>
</div>
<div>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:10.0pt"> </span></font></p>
</div>
<div>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:10.0pt">I am fluent in
userland C (including low-level Win32 and POSIX), but have never ventured into
kernel drivers before. FWIW I'm a Google employee, but this is for a
personal project. Namely, my house, which is optimized for LAN parties.
I currently have 12 machines netbooting Ubuntu over nbd and running games
under WINE, but sadly there are a few too many games that don't work. :/</span></font></p>
</div>
<div>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:10.0pt"> </span></font></p>
</div>
<div>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:10.0pt">Thanks,</span></font></p>
</div>
<div>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:10.0pt">-Kenton</span></font></p>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:10.0pt"> </span></font></p>
</div>
</div>
</div>
</div></div></div>
</div>
</blockquote></div><br></div>