Creating and Booting a Xen Guest domainU using an NFS Mounted Root Filesystem
In this chapter of Xen Virtualization Essentials we will be looking at creating a root filesystem for a Xen domainU system on an NFS mounted filesystem. In many ways this is little different from other techniques covered in preceding chapters in that similar techniques can be used to populate the root filesystem. The difference comes at the point that the domainU system is booted. Instead of running on a local filesystem, the root filesystem for our domainU system is instead located on a remote server. This is particularly useful when performing live migrations of running Xen based systems from one machine to another.
Kernel Requirements for NFS based Root Filesystems
There is one key requirement for booting a Xen domU with an NFS mounted root filesystem. By default, most Linux kernels are not configured to support NFS mounted root filesystems. It is essential, therefore, that a custom kernel with CONFIG_ROOT_NFS support enabled be built and referenced in the kernel= field of the Xen config file for the guest domain.
Populating the Root Filesystem
Once a custom Xen kernel with NFS root filesystem is available the next step is to populate a suitable disk partition with a root filesystem. In this tutorial we will assume that this partition is mounted at /xen. A number of options for creating the root fielsystem are available and have been covered in preceding chapters. Recommended chapters to read for this are as follows:
Exporting and Mounting the Xen Guest Root Filesystem
Before exporting the filesystem and mounting it on the remote system it is essential that NFS services be running on both systems. The specific steps to achieve this differ between Linux distributions but an internet search will provide a vast number of How To tips on how to achieve this for your distribution.
With the root filesystem populated on the NFS server and NFS services running, the next step is to export it so that it can be mounted on the remote system where we plan to boot our Xen guest domain. This is achieved by adding an entry to the /etc/exports file on the server. For example, to export the /xen filesystem such that it can be mounted over NFS by a system with an IP address of 192.168.2.11 we would add the following line to /etc/exports on the system acting as the NFS server:
The rw indicates that the system with the specified IP address is able to read and write to the NFS mounted filesystem when it mounted. The no_root_squash directive is used to allow the root user of the Xen domU to write to the NFS mounted root filesystem, (if this is not set they the root user will not have access to the guest system).
Once the /etc/exports file has been updated the exportfs command can be run to update the table of exported NFS filesystems. This command needs to be run as root using the -a flag:
su - exportfs -a
In order to verify the filesystem is correctly exported simply run exportfs without the -v command-line option:
exportfs -v /xen 192.168.2.11(rw,async,wdelay,no_root_squash,no_subtree_check)
Creating the Xen Configuration File for the NFS Root Filesystem
Now that we have a populated root filesystem for our Xen domainU system and have the filesystem exported on the NFS server it is now time to move to the remote system and set up the environment for the Xen guest system.