commit 8eaab84156c39302e271cb093ab92a07f07b46fd
Author: W. David Ashley <w.david.ashley(a)gmail.com>
Date: Sun Aug 2 17:39:55 2015 -0500
Storage chapter
- added additional overview text.
en-US/Storage_Pools.xml | 71 +++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 66 insertions(+), 5 deletions(-)
---
diff --git a/en-US/Storage_Pools.xml b/en-US/Storage_Pools.xml
index 2ad1305..1a343ff 100644
--- a/en-US/Storage_Pools.xml
+++ b/en-US/Storage_Pools.xml
@@ -6,12 +6,73 @@
<chapter
id="libvirt_application_development_guide_using_python-Storage_Pools">
<title>Storage Pools</title>
<para>
- Storage pools allow a system administrator to divide a system's storage into
logical locations
- in order to store all the guest domain disk images as defined by the
administrator. A system can
- have a single storage pool or as many as deemed necessary by the storage
administrator, all in
- diverse locations. The storage administrator is responsible for devising the
storage scheme
- to be used and how the storage pools are to be used.
+ Libvirt provides storage management on the physical host through storage pools
and volumes.
</para>
+ <para>
+ A storage pool is a quantity of storage set aside by an administrator, often a
dedicated storage
+ administrator, for use by virtual machines. Storage pools are divided into
storage volumes either by
+ the storage administrator or the system administrator, and the volumes are
assigned to VMs as block
+ devices.
+ </para>
+ <para>
+ For example, the storage administrator responsible for an NFS server creates a
share to store virtual
+ machines' data. The system administrator defines a pool on the virtualization
host with the details of
+ the share (e.g. nfs.example.com:/path/to/share should be mounted on /vm_data).
When the pool is started,
+ libvirt mounts the share on the specified directory, just as if the system
administrator logged in and
+ executed 'mount nfs.example.com:/path/to/share /vmdata'. If the pool is
configured to autostart, libvirt
+ ensures that the NFS share is mounted on the directory specified when libvirt is
started.
+ </para>
+ <para>
+ Once the pool is started, the files in the NFS share are reported as volumes, and
the storage volumes'
+ paths may be queried using the libvirt APIs. The volumes' paths can then be
copied into the section of
+ a VM's XML definition describing the source storage for the VM's block
devices. In the case of NFS,
+ an application using the libvirt methods can create and delete volumes in the
pool (files in the NFS share)
+ up to the limit of the size of the pool (the storage capacity of the share). Not
all pool types support
+ creating and deleting volumes. Stopping the pool (somewhat unfortunately referred
to by virsh and the
+ API as "pool-destroy") undoes the start operation, in this case,
unmounting the NFS share. The data on
+ the share is not modified by the destroy operation, despite the name. See man
virsh for more details.
+ </para>
+ <para>
+ A second example is an iSCSI pool. A storage administrator provisions an iSCSI
target to present a set
+ of LUNs to the host running the VMs. When libvirt is configured to manage that
iSCSI target as a pool,
+ libvirt will ensure that the host logs into the iSCSI target and libvirt can then
report the available
+ LUNs as storage volumes. The volumes' paths can be queried and used in
VM's XML definitions as in the
+ NFS example. In this case, the LUNs are defined on the iSCSI server, and libvirt
cannot create and
+ delete volumes.
+ </para>
+ <para>
+ Storage pools and volumes are not required for the proper operation of VMs. Pools
and volumes provide
+ a way for libvirt to ensure that a particular piece of storage will be available
for a VM, but some
+ administrators will prefer to manage their own storage and VMs will operate
properly without any pools
+ or volumes defined. On systems that do not use pools, system administrators must
ensure the availability
+ of the VMs' storage using whatever tools they prefer, for example, adding the
NFS share to the host's
+ fstab so that the share is mounted at boot time.
+ </para>
+ <para>
+ If at this point the value of pools and volumes over traditional system
administration tools is unclear,
+ note that one of the features of libvirt is its remote protocol, so it's
possible to manage all aspects
+ of a virtual machine's lifecycle as well as the configuration of the
resources required by the VM. These
+ operations can be performed on a remote host entirely within the libvirt API. In
other words, a
+ management application using libvirt can enable a user to perform all the
required tasks for configuring
+ the host for a VM: allocating resources, running the VM, shutting it down and
deallocating the resources, without requiring shell access or any other control channel.
+ </para>
+ <para>
+ Libvirt supports the following storage pool types:
+ </para>
+ <itemizedlist>
+ <listitem><para>Directory backend</para></listitem>
+ <listitem><para>Local filesystem
backend</para></listitem>
+ <listitem><para>Network filesystem
backend</para></listitem>
+ <listitem><para>Logical backend</para></listitem>
+ <listitem><para>Disk backend</para></listitem>
+ <listitem><para>iSCSI backend</para></listitem>
+ <listitem><para>SCSI backend</para></listitem>
+ <listitem><para>Multipath backend</para></listitem>
+ <listitem><para>RBD (RADOS Block Device)
backend</para></listitem>
+ <listitem><para>Sheepdog backend</para></listitem>
+ <listitem><para>Gluster backend</para></listitem>
+ <listitem><para>ZFS backend</para></listitem>
+ </itemizedlist>
<section
id="libvirt_application_development_guide_using_python-Storage_Pools-Overview">
<title>Overview</title>
Show replies by date