[gPXE-devel] COW Overlay in WinVBlock -- willing to implement
Kenton Varda
temporal at gmail.com
Wed May 4 14:33:27 EDT 2011
[bcc gpxe-devel]
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. :/
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.
To answer your questions:
- The client OS is Windows 7.
- 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.
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?
Thoughts?
-Kenton
On Wed, May 4, 2011 at 10:49 AM, Miller, Shao
<shao.miller at yrdsb.edu.on.ca>wrote:
> Pre-kernel: Perhaps you could do gPXE -> read-only iSCSI SAN -> MBR ->
> NTFS Partition -> NTLDR -> specially-crafted NTBOOTDD.SYS (for VHDs) ->
> “Master” VHD
>
>
> 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.
>
>
>
> 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?
>
>
>
> 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. J
>
>
>
> Thanks again for your interest!
>
>
>
> - Shao Miller
> ------------------------------
>
> *From:* Kenton Varda [mailto:temporal at gmail.com]
> *Sent:* Wednesday, May 04, 2011 11:21
> *To:* Miller, Shao
> *Cc:* gpxe-devel at etherboot.org
> *Subject:* Re: COW Overlay in WinVBlock -- willing to implement
>
>
>
> 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.
>
>
>
> 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.)
>
>
>
> 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. :)
>
>
>
> -Kenton
>
>
>
> On Wed, May 4, 2011 at 5:27 AM, Miller, Shao <shao.miller at yrdsb.edu.on.ca>
> wrote:
>
> Good day, Kenton.
>
>
>
> 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.
>
>
>
> For example, I’d like to be able to boot from a master VHD pre-kernel, then
> have WinVBlock continue with a delta.
>
>
>
> 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?:
>
>
>
> http://etherboot.org/wiki/appnotes/cow
>
>
>
> CoW-capable SAN target software seems to be a popular wish. A fellow
> recently shared a fun video of Ardence:
>
>
>
> http://www.youtube.com/watch?v=moIuHqIc-PQ&feature=player_embedded
>
>
>
> 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?
>
>
>
> 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.
>
>
>
> Thanks!
>
>
>
> - Shao Miller
> ------------------------------
>
> *From:* Kenton Varda [mailto:temporal at gmail.com]
> *Sent:* Wednesday, May 04, 2011 01:35
> *To:* Miller, Shao; gpxe-devel at etherboot.org
> *Subject:* COW Overlay in WinVBlock -- willing to implement
>
>
>
> Hi Shao and gpxe-devel,
>
>
>
> In a post on this page you mentioned that you are planning to add COW
> overlay support to WinVBlock:
>
> http://reboot.pro/8168/page__st__300
>
>
>
> 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?
>
>
>
> 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. :/
>
>
>
> Thanks,
>
> -Kenton
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://etherboot.org/pipermail/gpxe-devel/attachments/20110504/ba1e142b/attachment-0001.html>
More information about the gPXE-devel
mailing list