aboutsummaryrefslogtreecommitdiffstats
path: root/docs/src/user/domain_filesystem.tex
diff options
context:
space:
mode:
Diffstat (limited to 'docs/src/user/domain_filesystem.tex')
-rw-r--r--docs/src/user/domain_filesystem.tex251
1 files changed, 0 insertions, 251 deletions
diff --git a/docs/src/user/domain_filesystem.tex b/docs/src/user/domain_filesystem.tex
deleted file mode 100644
index c00b47ecca..0000000000
--- a/docs/src/user/domain_filesystem.tex
+++ /dev/null
@@ -1,251 +0,0 @@
-\chapter{Storage and File System Management}
-
-Storage can be made available to virtual machines in a number of
-different ways. This chapter covers some possible configurations.
-
-The most straightforward method is to export a physical block device (a
-hard drive or partition) from dom0 directly to the guest domain as a
-virtual block device (VBD).
-
-Storage may also be exported from a filesystem image or a partitioned
-filesystem image as a \emph{file-backed VBD}.
-
-Finally, standard network storage protocols such as NBD, iSCSI, NFS,
-etc., can be used to provide storage to virtual machines.
-
-
-\section{Exporting Physical Devices as VBDs}
-\label{s:exporting-physical-devices-as-vbds}
-
-One of the simplest configurations is to directly export individual
-partitions from domain~0 to other domains. To achieve this use the
-\path{phy:} specifier in your domain configuration file. For example a
-line like
-\begin{quote}
- \verb_disk = ['phy:hda3,sda1,w']_
-\end{quote}
-specifies that the partition \path{/dev/hda3} in domain~0 should be
-exported read-write to the new domain as \path{/dev/sda1}; one could
-equally well export it as \path{/dev/hda} or \path{/dev/sdb5} should
-one wish.
-
-In addition to local disks and partitions, it is possible to export
-any device that Linux considers to be ``a disk'' in the same manner.
-For example, if you have iSCSI disks or GNBD volumes imported into
-domain~0 you can export these to other domains using the \path{phy:}
-disk syntax. E.g.:
-\begin{quote}
- \verb_disk = ['phy:vg/lvm1,sda2,w']_
-\end{quote}
-
-\begin{center}
- \framebox{\bf Warning: Block device sharing}
-\end{center}
-\begin{quote}
- Block devices should typically only be shared between domains in a
- read-only fashion otherwise the Linux kernel's file systems will get
- very confused as the file system structure may change underneath
- them (having the same ext3 partition mounted \path{rw} twice is a
- sure fire way to cause irreparable damage)! \Xend\ will attempt to
- prevent you from doing this by checking that the device is not
- mounted read-write in domain~0, and hasn't already been exported
- read-write to another domain. If you want read-write sharing,
- export the directory to other domains via NFS from domain~0 (or use
- a cluster file system such as GFS or ocfs2).
-\end{quote}
-
-
-\section{Using File-backed VBDs}
-
-It is also possible to use a file in Domain~0 as the primary storage
-for a virtual machine. As well as being convenient, this also has the
-advantage that the virtual block device will be \emph{sparse} ---
-space will only really be allocated as parts of the file are used. So
-if a virtual machine uses only half of its disk space then the file
-really takes up half of the size allocated.
-
-For example, to create a 2GB sparse file-backed virtual block device
-(actually only consumes 1KB of disk):
-\begin{quote}
- \verb_# dd if=/dev/zero of=vm1disk bs=1k seek=2048k count=1_
-\end{quote}
-
-Make a file system in the disk file:
-\begin{quote}
- \verb_# mkfs -t ext3 vm1disk_
-\end{quote}
-
-(when the tool asks for confirmation, answer `y')
-
-Populate the file system e.g.\ by copying from the current root:
-\begin{quote}
-\begin{verbatim}
-# mount -o loop vm1disk /mnt
-# cp -ax /{root,dev,var,etc,usr,bin,sbin,lib} /mnt
-# mkdir /mnt/{proc,sys,home,tmp}
-\end{verbatim}
-\end{quote}
-
-Tailor the file system by editing \path{/etc/fstab},
-\path{/etc/hostname}, etc.\ Don't forget to edit the files in the
-mounted file system, instead of your domain~0 filesystem, e.g.\ you
-would edit \path{/mnt/etc/fstab} instead of \path{/etc/fstab}. For
-this example put \path{/dev/sda1} to root in fstab.
-
-Now unmount (this is important!):
-\begin{quote}
- \verb_# umount /mnt_
-\end{quote}
-
-In the configuration file set:
-\begin{quote}
- \verb_disk = ['file:/full/path/to/vm1disk,sda1,w']_
-\end{quote}
-
-As the virtual machine writes to its `disk', the sparse file will be
-filled in and consume more space up to the original 2GB.
-
-{\bf Note that file-backed VBDs may not be appropriate for backing
- I/O-intensive domains.} File-backed VBDs are known to experience
-substantial slowdowns under heavy I/O workloads, due to the I/O
-handling by the loopback block device used to support file-backed VBDs
-in dom0. Better I/O performance can be achieved by using either
-LVM-backed VBDs (Section~\ref{s:using-lvm-backed-vbds}) or physical
-devices as VBDs (Section~\ref{s:exporting-physical-devices-as-vbds}).
-
-Linux supports a maximum of eight file-backed VBDs across all domains
-by default. This limit can be statically increased by using the
-\emph{max\_loop} module parameter if CONFIG\_BLK\_DEV\_LOOP is
-compiled as a module in the dom0 kernel, or by using the
-\emph{max\_loop=n} boot option if CONFIG\_BLK\_DEV\_LOOP is compiled
-directly into the dom0 kernel.
-
-
-\section{Using LVM-backed VBDs}
-\label{s:using-lvm-backed-vbds}
-
-A particularly appealing solution is to use LVM volumes as backing for
-domain file-systems since this allows dynamic growing/shrinking of
-volumes as well as snapshot and other features.
-
-To initialize a partition to support LVM volumes:
-\begin{quote}
-\begin{verbatim}
-# pvcreate /dev/sda10
-\end{verbatim}
-\end{quote}
-
-Create a volume group named `vg' on the physical partition:
-\begin{quote}
-\begin{verbatim}
-# vgcreate vg /dev/sda10
-\end{verbatim}
-\end{quote}
-
-Create a logical volume of size 4GB named `myvmdisk1':
-\begin{quote}
-\begin{verbatim}
-# lvcreate -L4096M -n myvmdisk1 vg
-\end{verbatim}
-\end{quote}
-
-You should now see that you have a \path{/dev/vg/myvmdisk1} Make a
-filesystem, mount it and populate it, e.g.:
-\begin{quote}
-\begin{verbatim}
-# mkfs -t ext3 /dev/vg/myvmdisk1
-# mount /dev/vg/myvmdisk1 /mnt
-# cp -ax / /mnt
-# umount /mnt
-\end{verbatim}
-\end{quote}
-
-Now configure your VM with the following disk configuration:
-\begin{quote}
-\begin{verbatim}
- disk = [ 'phy:vg/myvmdisk1,sda1,w' ]
-\end{verbatim}
-\end{quote}
-
-LVM enables you to grow the size of logical volumes, but you'll need
-to resize the corresponding file system to make use of the new space.
-Some file systems (e.g.\ ext3) now support online resize. See the LVM
-manuals for more details.
-
-You can also use LVM for creating copy-on-write (CoW) clones of LVM
-volumes (known as writable persistent snapshots in LVM terminology).
-This facility is new in Linux 2.6.8, so isn't as stable as one might
-hope. In particular, using lots of CoW LVM disks consumes a lot of
-dom0 memory, and error conditions such as running out of disk space
-are not handled well. Hopefully this will improve in future.
-
-To create two copy-on-write clone of the above file system you would
-use the following commands:
-
-\begin{quote}
-\begin{verbatim}
-# lvcreate -s -L1024M -n myclonedisk1 /dev/vg/myvmdisk1
-# lvcreate -s -L1024M -n myclonedisk2 /dev/vg/myvmdisk1
-\end{verbatim}
-\end{quote}
-
-Each of these can grow to have 1GB of differences from the master
-volume. You can grow the amount of space for storing the differences
-using the lvextend command, e.g.:
-\begin{quote}
-\begin{verbatim}
-# lvextend +100M /dev/vg/myclonedisk1
-\end{verbatim}
-\end{quote}
-
-Don't let the `differences volume' ever fill up otherwise LVM gets
-rather confused. It may be possible to automate the growing process by
-using \path{dmsetup wait} to spot the volume getting full and then
-issue an \path{lvextend}.
-
-In principle, it is possible to continue writing to the volume that
-has been cloned (the changes will not be visible to the clones), but
-we wouldn't recommend this: have the cloned volume as a `pristine'
-file system install that isn't mounted directly by any of the virtual
-machines.
-
-
-\section{Using NFS Root}
-
-First, populate a root filesystem in a directory on the server
-machine. This can be on a distinct physical machine, or simply run
-within a virtual machine on the same node.
-
-Now configure the NFS server to export this filesystem over the
-network by adding a line to \path{/etc/exports}, for instance:
-
-\begin{quote}
- \begin{small}
-\begin{verbatim}
-/export/vm1root 1.2.3.4/24 (rw,sync,no_root_squash)
-\end{verbatim}
- \end{small}
-\end{quote}
-
-Finally, configure the domain to use NFS root. In addition to the
-normal variables, you should make sure to set the following values in
-the domain's configuration file:
-
-\begin{quote}
- \begin{small}
-\begin{verbatim}
-root = '/dev/nfs'
-nfs_server = '2.3.4.5' # substitute IP address of server
-nfs_root = '/path/to/root' # path to root FS on the server
-\end{verbatim}
- \end{small}
-\end{quote}
-
-The domain will need network access at boot time, so either statically
-configure an IP address using the config variables \path{ip},
-\path{netmask}, \path{gateway}, \path{hostname}; or enable DHCP
-(\path{dhcp='dhcp'}).
-
-Note that the Linux NFS root implementation is known to have stability
-problems under high load (this is not a Xen-specific problem), so this
-configuration may not be appropriate for critical servers.