=====Linux VM Server install===== This project will have you setting up a Linux VM Server with required tasks to accomplish. ====Prerequisites==== This is a base project, there are no prerequisites. ====Ingredients==== To accomplish this project you will need: ^ Item ^ Description ^ Qty ^ | computer | VM Server Computer | 1 | | student shelf KVM setup | The location for this installation is largely established and fixed | 1 | ====Background==== As you may have realized from your own computing usage, outside of specific instances of high-resource demand, available computing resources generally sit idle or under-utilized. Fueled by ambitions to conserve wasted energy and resources, along with increasing the general capacity and capabilities of available resources, the notion of virtualization has evolved. Virtualization is the concept of having a system host several guest systems, each of which is provided adequate resources and can function from the perspective of a standalone system. That is, the guest systems see the normal resources they'd expect to utilize--- hard drives or disk partitions, memory, virtual memory, devices, even network accessibility, but may in actuality may not be physically real. Although they share a lot of commonality, there are some key distinctions between virtualization and emulation. In modern virtualization environments, the devices virtual machines are given access to may in fact be real, or based on a real approximation of existing hardware. In emulation, machines are provided with some stock representation of hardware that may not actually physically exist anywhere on the host system. Virtualization introduces two terms to describe the nature of its guest device manifestation: * para-virtualization * full virtualization In the para-virtualization scenario, the guest machine's operating system is aware of its virtualized state. As such, it can communicate more effectively with the host's provided resources, and improve performance because the need for outright device emulation is obsoleted. In full virtualization, the guest machine's OS has no capability of recognizing a virtualized state. Devices provided to it appear in the same fashion as it would expect if it were running on real hardware, and in the end the intention is to maintain this "illusion" yet possess a useful virtualized resource. Pretty much every operating system can be utilized in this mode of functionality- from Windows to Linux to Plan 9. This method requires no modification to the operating system. In both modes, depending on the capabilities of the virtual machine monitor (commonly referred to as a hypervisor, especially if it runs somewhat outside the host OS), real actual hardware may be passed to the virtual machine and be utilized. As you might ascertain, the Open Source nature of Linux would seem to make it a perfect candidate for para-virtualization capabilities. And you would be correct in deriving such conclusions. Many comparable virtualization products exist, and the virtualization marketplace is a growingly competitive one. Just some examples would include: * [[http://www.xen.org/|Xen]] * [[http://www.virtualbox.org/|VirtualBox]] * [[http://www.linux-kvm.org/|KVM]] * [[http://www.vmware.com/|VMware]] * [[http://www.parallels.com/|Parallels]] * [[http://www.microsoft.com/windows/virtual-pc/|VirtualPC]] * ... There are likely many more implementations of virtualization products out there. You can check out [[http://virt.kernelnewbies.org/]] for some additional information. There are certain strengths and advantages to certain products over others, depending upon the environment of usage. The particular virtualization implementation we will be using in this class will be the Open Source Xen virtualization. ====Requirements==== To successfully complete this project, you will need to: * Install Debian GNU/Linux 5.0 (aka "Lenny") onto one of the four student VM servers in the student.lab shelving area * Configure said machine to use the LAIR's package repository instead of distribution defaults * Update the machine's copy of the package database, and perform any upgrades * Install the necessary Xen packages (xen-linux-system-2.6.26-2-xen-686 and xen-tools) * Perform necessary configuration of machine so it can be a VM server * loop module support in /etc/modules * network-script network-bridge setting in xend-config.sxp * ensure vif-script is vif-bridge, same file * configure the grub boot entry accordingly (allow for the host to have 256MB) * remove unnecessary entries * configure Xen-tools (/etc/xen-tools/xen-tools.conf) with some useful defaults: dir = /xen install-method = debootstrap size = 2Gb # Disk image size. memory = 128Mb # Memory size swap = 128Mb # Swap size fs = ext3 # use the EXT3 filesystem for the disk image. dist = lenny # Default distribution to install. image = full # Specify sparse vs. full disk images. dhcp = 1 passwd = 1 kernel = /boot/vmlinuz-`uname -r` initrd = /boot/initrd.img-`uname -r` mirror = http://mirror/debian/ ext3_options = noatime,nodiratime,errors=remount-ro ext2_options = noatime,nodiratime,errors=remount-ro xfs_options = defaults reiser_options = defaults serial_device = hvc0 #default disk_device = xvda #default output = /xen/conf extension = .cfg * Create the following directories: /xen, /xen/images, /xen/boot, /xen/conf, /xen/save * Document this into an easy-to-follow tutorial, including all necessary information to get you back up and running should you wipe clean and start from scratch * Once you have believed good documentation, wipe your machine clean and build it again, using your instructions. * Make any necessary corrections. * When all groups have finished building the VM servers, collaborate in the creation of a master tutorial, combining the works from all the groups together.