I'm maintaining a diskless thinclient server hosted on Ubuntu. At the moment we're using an nbd/aufs solution for booting thinclients into linux but I have a new requirement to support Windows 7 clients and from some web research this seems to require an iscsi boot. From what I can see this would work but I would need a different Windows 7 image for each client. I know products like Wyse and Citrix can use a shared image and each device gets it's own 'write cache' to support client writes. Is there a linux iscsi target that supports something similar to this? I've looked at tgt, IET and LIO but I don't know enough about iscsi to know if they support this or not (I did find a windows solution (sanfly) that calls this a shared-persistent mode but that doesn't seem to be a standard term for iscsi))

Alternatively should I be looking to a clustered filesystem like ocfs or gfs?


Neither tgt not IET will give you the functionality of a "shared image", because it is simply not their job. All they do for you is providing access to a block device through the iSCSI protocol. Nothing like that is within the scope of iSCSI at all.

However, you might construct what you are looking for by using LVM snapshots: http://tldp.org/HOWTO/LVM-HOWTO/snapshotintro.html

where you would use some prepopulated disk as the starting image and create several snapshots with reasonably sized CoW-areas for your thin clients to write on. Exporting the snapshots via iSCSI would give you the desired result.

However, bear in mind that this kind of operation comes with some manageability problems - after you've created the snapshots, changes to the original disk are not propagated to the snapshots, so there is no easy way for central configuration changes or image updates.

Another possible option would be the use of ZFS (either with Solaris or using the zfs-fuse implementation for Linux) and either snapshots or block-based deduplication features. Deduplication is pretty expensive in terms of RAM, but might save more space in some scenarios.

A ZFS setup will give you some more flexibility - with LVM snapshots you have to devise a definite amount of storage to your snapshot CoW area at creation time and need to take care of possible overflow situations afterwards (snapshot overflows do render the snapshots unusable and need to be prevented - e.g. by extending the CoW size), with ZFS' flexible allocation, there is no need for that.



I'm wanting the same thing.

It looks like the only option out there so far is a paid solution called ccboot. It seems to be able to take vmdk machine images and use COW for writes.

The only downside is it only runs on windows.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.