Diskless servers in the home network
The advent of SAN in the home network opens the way to diskless servers
Traditional Linux is good at running diskless. With the advent of SAN in the home network, diskless systems have become an even more interesting.
It is very easy to modify Debian systems to run diskless. The diskless system boots a kernel and an initramfs from a tftp server, after this it mounts the root filesystem over NFS from a NFS-server.
Also FreeBSD systems can run diskless. It is not hard to modify an existing server to run diskless. One point had to be kept in mind. When FreeBSD boots diskless it automaticly mounts it root filesystem read only. In order to get a working system, a small ramdisk is mounted for e.g. the /etc partition. This small ramdisk is used to manage system specfic settings.
Both the tftp server and the NFS-server can be build with Debian. This can also be done with other Linux systems, or with FreeBSD, NetBSD or one of the other BSD-flavours.
Method for diskless operation
There are several ways to create diskless systems. This is how I choose to do it:
The SAN is a Squeeze Debian GNU Linux system with two 2 Tb discs. The discs are split into several partitions.
The partitions are mirrorred in RAID-1 devices.
One RAID-1 device is exported over NFS.
Several RAID-1 devices are turned into iSCSI discs, providing faster storage.
The SAN also works as the PXE server, running tftpd-hpa.
All my diskless systems boot from this PXE server. Also I use this system for installation of Debian i386 and amd64 systems.
Server root filesystem on NFS
The filesystem of the servers are mounted over NFS.
The SAN contains the root filesystem of the Debian LXC Linux Container sever, the FreeBSD jailserver and the Debian KVM virtual machines server. For each filesystem is a separate directory on the NFS partition.
LXC Containers on iSCSI
The LXC Container server mounts one of the RAID-1 devices of the SAN over iSCSI, providing fast storage. See disklesslxc.
FreeBSD jails on iSCSI
Besides the diskless Debian Squeeze Linux Container server there is also a diskless FreeBSD Jailserver. This works in the same way, the root filesystem of the FreeBSD server is mounted over NFS and the FreeBSD jails are on a iSCSI drive.
The FreeBSD server has a directory /jails, this is mounted on one of the iSCSI partions of the SAN. Because this is the only read-writed mounted hard disk real estate, /usr/local/etc/ezjail is symlinked to /jails/etc/ezjail. This makes it possible for ezjail to administer the creating, archiving and restoring jails.
Diskless KVM server
A diskless Debian Squeeze KVM system for running virtual machines follows the same formula, root filesystem on NFS and virtual machine images on iSCSI.
The SAN is an Atom miniITX system with two "green" harddisks.
The diskless Squeeze Debian GNU LXC Linux Container server is an Atom miniITX system with 2 Gb RAM.
The diskless FreeBSD Jailserver is a VIA EPIA ME6000 LVDS Mini-ITX with 1 Gb RAM.
The KVM server is a Core(TM)2 Duo E8200 system. This system is not running 24x7 but only runs when I do actually have some virtual machines to run.
In the past I used to run a KVM server 24x7, however after I started working with LXC Linux containers the need for this vanished. This was also a motiv to dive deeper into FreeBSD jails. That is why i build the diskless FreeBSD Jailserver.
No FreeBSD ZFS SAN
My original idea was to run the SAN as an FreeBSD ZFS system. During the investigation on how to do this I learned from several postings on the internet that ZFS requires a lot of RAM and CPU power. Because my SAN was to be build around a Atom miniITX system this might lack both RAM as well as CPU power.
I had allready great experiences with iSCSI on this board, so I stick with Debian and RAID-1 devices.