[Beowulf] Should I go for diskless or not?

Joe Landman landman at scalableinformatics.com
Fri May 15 07:00:14 PDT 2009


Douglas Eadline wrote:
> You will note that I used sufficient wiggle words "usually" and
> "generally" because in my experience it always depends.
> And of course my comments are from my personal
> experience. I have found that diskless allows for
> the entire cluster to be "re provisioned" without
> have into re-image disks. Reboots are quicker
> (for the hardware I use) and since I use ram
> disk approach (Warewulf/Perceus) I find that things
> are a bit faster, also the diskless image has
> minimal services running vs a disk-full distribution image.
> (I fully understand the good admin can trim a
> disk-full distribution)
> 
> There are plenty of arguments either way.  Back in 2006
> I did a mini-poll on node disk space usage:
> 
> http://www.clustermonkey.net//component/option,com_poll/task,results/id,18/
> 
> So "in general, it varies". YMMV

Let me weigh in (late of course) with some thoughts.

With the advent of buzz words^H^H^H^H^H^H^H^H^H^H^Htechnologies like the 
cloud(TM)(c)(SM)*, I have a sense that stateful (disk based) installs 
are a thing of the past.  Some folks will want them for their local 
cluster, but when you are provisioning N nodes, you aren't going to want 
to deal with the vagaries of doing a stateful install to "random" hardware.

For non-virtualized hosts, what you want is to either boot diskless in a 
trivial to configure manner, or, and we are seeing and working on this 
more and more, boot from iSCSI targets with the node OS implemented. 
The latter is a very nice way to do non-virtualized OS boots.  You don't 
need to be able to PXE boot from iSCSI, though this is an option.

The advantage of diskless is you don't need to containerize the OS in an 
"image" (which is little more than a 'dd if=/dev/zero of=disk.image 
bs=1M count=8k ; losetup disk.image ; mkfs... /dev/loop0 ; mount 
/dev/loop0 /mnt/disk ; #copy tree to disk' )

The disadvantage of diskless is some complexity in the boot/shutdown 
process.  This has been (mostly) managed well by a number of 
distributions, so it is generally (these days) fairly easy to deploy 
diskless systems.  Swap is an issue.  A somewhat hard to solve issue ... 
we'd recommend actually turning off swap (and swappiness in the kernel) 
for diskless.  Or put a USB drive in each machine and swap on that, 
though, honestly, that is as reliable as swapping over the network. 
E.g. don't do it.

The Perceus hybrid approach works well, using a small local ramdisk, and 
an NFS mount for the important stuff.  No installation needed, just boot 
it, and up you go.  Same issues on swap.

Another way to look at local drives is a small swap space.  So if you 
can get drives in a $40/unit increments, these are cheap and fairly 
reliable swap targets.  Better than USB.  But you shouldn't swap in a 
cluster.

The advantage of iSCSI is, it is a block device that you attach, over 
the network, and it works pretty well.  You can (easily) 
programmatically adjust it, clone it, modify it, etc.  Pull it down to a 
different system (offline), make changes, upload the different image, 
and try it on a few nodes.   Basically iSCSI is sort of like diskless in 
a way, though it allows greater ranges of changes without creating whole 
new diskless trees, and without jumping through the host issues with 
some diskless schemes.  Its not a VM, but as with diskless, VMs can boot 
from it.  Making development fast/efficient.  It allows you a VM-able, 
and easily transportable container for your stuff.

Of course, it goes without saying that for either diskless or iSCSI, you 
need a really good and fast storage infrastructure ... :)

More to the point, the stateful installations have their place, but it 
doesn't appear to be in "cloud" scenarios.  Stateful is fine for local 
clusters, or automagically assembled larger clusters.  I would be 
mindful of the latter though, as we have had a number of customers with 
problems directly attributable to unresolved issues in some cluster 
distribution's installer code.  If your installer has bugs, or does 
something wrong, somewhere (like, I dunno, disabling the IPMI?), you can 
wind up with N unbootable nodes.  As N gets north of 8, this gets less 
funny.

Other issues we have run into with stateful clusters have included the 
cluster distribution getting in the way of what you want to do.  Most 
cluster distributions come with an overarching philosophy, and the "one 
true way" to do things.  Invariably you will find a need to do something 
"an other way", and can run head-first into the philosophy (and 
occasionally ... um ... animated [yeah, thats the ticket] ... 
discussions with the disciples of that philosophy) as you try to figure 
out what you need to do.  Some of these philosophies are benign, some 
are aggressive.

The stateful case with specific distributions (RHEL and alike) doesn't 
do so well with new hardware.  We have had customers call us up to 
complain that their shiny new nodes seem to crash regularly with the 
(ancient) kernels in RHEL.  Sure enough, the new-thingamabob on the 
motherboard is not well supported in RHEL, so you either have to a) toss 
your cluster and only buy from the HAL, or b) get a newer kernel.  It 
gets more ... exciting ... and not in a good way, when that 
new-thingamabob impedes installation.  We've seen this happen ... too 
many times to count.

The solution is to slip in a new kernel and initrd to fix the problem. 
Slip-streaming a new kernel into a RHEL distribution is an ... um ... 
challenge ... to say the least.

In diskless, this is trivial.  In iSCSI, it is the same as diskless (in 
both cases, the boot kernel and boot initrd are outside of the trees).

What we do for stateful installs, for customers who don't care about 
which cluster distribution is used, and let us use our Tiburon system, 
we pxe boot from our kernel (2.6.28.7 based) and associated initrd. 
Finishing scripts fix up any new kernel bits later on.  Its harder to do 
this with some other cluster systems.  Easy with Perceus/Warewulf.

Basically, where I am getting to is, if you really want to go stateful, 
make sure your kernel works with your hardware before you make a 
decision about distro, etc.  Less important with diskless/iSCSI.  If you 
go stateless, solve the swap problem with small cheap local drives.



*  we are drinking the koolaid, and starting work with a partner on this 
stuff.  I do see some merit in it (virtualized or direct), though it 
isn't for everyone in HPC.  The folks for whom it will work well have a 
specific usage profile.
-- 
Joseph Landman, Ph.D
Founder and CEO
Scalable Informatics LLC,
email: landman at scalableinformatics.com
web  : http://www.scalableinformatics.com
        http://jackrabbit.scalableinformatics.com
phone: +1 734 786 8423 x121
fax  : +1 866 888 3112
cell : +1 734 612 4615



More information about the Beowulf mailing list