Using User Mode Linux


I've taught a course in large-scale distributed computing for five years now at BYU. The course requires that students, working in groups, manage their own Linux machine, including server installation and configuration. One of my goals in the lab portion of the class is to give students a feel for how much effort is required to get a server set up right and how fickle configuration can be. Along the way, they learn a little system administration and lose any fear they might have had about setting up Linux. Traditionally, the lab has consisted of a few rooms packed with old x86 boxes. That's going to change.

There are a couple of reasons for the move. First, the rooms are crowded and the students don't really like working there. The most important reason, is that the Department wants the rooms for something else. To accommodate the move, we're going to move the lab onto a rack of servers and let each group use one-third to one-fourth of the machine using User Mode Linux.

If you're not familiar with User Mode Linux, its a set of kernel patches that allow a Linux kernel to be compiled as an executable binary and then run on a Linux platform. After that, you can do just about anything on it that you can do on Linux running directly on the hardware. Our primary reason for using it is to create a virtual hosted environment for the lab where student groups can be root on a Linux installation without having to have a machine for each group.

Looking around the net a little, I found a couple of resources. First, UserModeLinux.org has a lot of information on how UML is being used, commercial hosting companies that offer UML based virtual hosts and the like. I also found an image for a Fedora Core 1 server that might be useful. With Redhat ceasing support for their free distributions, Fedora is taking up where they left off. Core 1 is the first release. There's supposedly a second release happening next month.

If you've used UML and your experience is useful in helping me understand how to best set this up for a class of 45 students (15 groups of 3 students each), I'd appreciate any pointers. I'm thinking right now that we'll use six rather beefy rack mounted servers. I'm not sure whether I should just use direct attached disks or some sort of shared file system (the latter, it seems would allow students to migrate from machine to machine easily rather than being pinned to particular machine). In any event, its a new adventure and I'm excited to play.