CLOUDSTACK-3291: Document changes in CloudStack primary storage and document SolidFire plug-in

This commit is contained in:
Mike Tutkowski 2013-08-16 22:42:06 -06:00
parent af71fb2ab3
commit ef4becfadc
7 changed files with 116 additions and 16 deletions

View File

@ -24,9 +24,12 @@
<section id="about-primary-storage">
<title>About Primary Storage</title>
<para>Primary storage is associated with a cluster, and it stores the disk volumes for all the VMs running on hosts in that cluster. You can add multiple primary storage servers to a cluster. At least one is required. It is typically located close to the hosts for increased performance.</para>
<para>Primary storage is associated with a cluster and/or a zone. It stores the disk volumes for all of the VMs running on hosts in that cluster. You can add multiple primary storage servers to a cluster or a zone (at least one is required at the cluster level). Primary storage is typically located close to the hosts for increased performance.</para>
<para>Primary storage uses the concept of a storage tag. A storage tag is a label that is used to identify the primary storage. Each primary storage can be associated with zero, one, or more storage tags. When a VM is spun up or a data disk attached to a VM for the first time, these tags, if supplied, are used to determine which primary storage can support the VM or data disk (ex. say you need to guarantee a certain number of IOPS to a particular volume).</para>
<para>Primary storage can be either static or dynamic. Static primary storage is what CloudStack has traditionally supported. In this model, the administrator must present CloudStack with a certain amount of preallocated storage (ex. a volume from a SAN) and CloudStack can place many of its volumes on this storage. In the newer, dynamic model, the administrator can present CloudStack with a storage system itself (ex. a SAN). CloudStack, working in concert with a plug-in developed for that storage system, can dynamically create volumes on the storage system. A valuable use for this ability is Quality of Service (QoS). If a volume created in CloudStack can be backed by a dedicated volume on a SAN (i.e. a one-to-one mapping between a SAN volume and a CloudStack volume) and the SAN provides QoS, then CloudStack can provide QoS.</para>
<para>&PRODUCT; is designed to work with all standards-compliant iSCSI and NFS servers that are supported by the underlying hypervisor, including, for example:</para>
<itemizedlist>
<listitem><para>SolidFire for iSCSI</para></listitem>
<listitem><para>Dell EqualLogic™ for iSCSI</para></listitem>
<listitem><para>Network Appliances filers for NFS and iSCSI</para></listitem>
<listitem><para>Scale Computing for NFS</para></listitem>

View File

@ -32,6 +32,7 @@
<para>A zone consists of:</para>
<itemizedlist>
<listitem><para>One or more pods. Each pod contains one or more clusters of hosts and one or more primary storage servers.</para></listitem>
<listitem><para>A zone may contain one or more primary storage servers, which are shared by all the pods in the zone.</para></listitem>
<listitem><para>Secondary storage, which is shared by all the pods in the zone.</para></listitem>
</itemizedlist>
<mediaobject>
@ -45,10 +46,11 @@
<para>Hosts in the same zone are directly accessible to each other without having to go through a firewall. Hosts in different zones can access each other through statically configured VPN tunnels.</para>
<para>For each zone, the administrator must decide the following.</para>
<itemizedlist>
<listitem><para>How many pods to place in a zone.</para></listitem>
<listitem><para>How many pods to place in each zone.</para></listitem>
<listitem><para>How many clusters to place in each pod.</para></listitem>
<listitem><para>How many hosts to place in each cluster.</para></listitem>
<listitem><para>How many primary storage servers to place in each cluster and total capacity for the storage servers.</para></listitem>
<listitem><para>(Optional) How many primary storage servers to place in each zone and total capacity for these storage servers.</para></listitem>
<listitem><para>How many primary storage servers to place in each cluster and total capacity for these storage servers.</para></listitem>
<listitem><para>How much secondary storage to deploy in a zone.</para></listitem>
</itemizedlist>
<para>When you add a new zone using the &PRODUCT; UI, you will be prompted to configure the zones physical network

View File

@ -25,7 +25,9 @@
<section id="best-practices-primary-storage">
<title>Best Practices for Primary Storage</title>
<itemizedlist>
<listitem><para>The speed of primary storage will impact guest performance. If possible, choose smaller, higher RPM drives for primary storage.</para></listitem>
<listitem><para>Ensure that nothing is stored on the server. Adding the server to &PRODUCT; will destroy any existing data</para></listitem>
<listitem><para>The speed of primary storage will impact guest performance. If possible, choose smaller, higher RPM drives or SSDs for primary storage.</para></listitem>
<listitem><para>There are two ways CloudStack can leverage primary storage:</para>
<para>Static: This is CloudStack's traditional way of handling storage. In this model, a preallocated amount of storage (ex. a volume from a SAN) is given to CloudStack. CloudStack then permits many of its volumes to be created on this storage (can be root and/or data disks). If using this technique, ensure that nothing is stored on the storage. Adding the storage to &PRODUCT; will destroy any existing data.</para>
<para>Dynamic: This is a newer way for CloudStack to manage storage. In this model, a storage system (rather than a preallocated amount of storage) is given to CloudStack. CloudStack, working in concert with a storage plug-in, dynamically creates volumes on the storage system and each volume on the storage system maps to a single CloudStack volume. This is highly useful for features such as storage Quality of Service. Currently this feature is supported for data disks (Disk Offerings).</para></listitem>
</itemizedlist>
</section>

View File

@ -24,7 +24,7 @@
<section id="creating-disk-offerings">
<title>Creating a New Disk Offering</title>
<para>To create a system service offering:</para>
<para>To create a new disk offering:</para>
<orderedlist>
<listitem><para>Log in with admin privileges to the &PRODUCT; UI.</para></listitem>
<listitem><para>In the left navigation bar, click Service Offerings.</para></listitem>
@ -32,11 +32,15 @@
<listitem><para>Click Add Disk Offering.</para></listitem>
<listitem><para>In the dialog, make the following choices:</para>
<itemizedlist>
<listitem><para>Name. Any desired name for the system offering.</para></listitem>
<listitem><para>Name. Any desired name for the disk offering.</para></listitem>
<listitem><para>Description. A short description of the offering that can be displayed to users</para></listitem>
<listitem><para>Custom Disk Size. If checked, the user can set their own disk size. If not checked, the root administrator must define a value in Disk Size.</para></listitem>
<listitem><para>Disk Size. Appears only if Custom Disk Size is not selected. Define the volume size in GB.</para></listitem>
<listitem><para>(Optional)Storage Tags. The tags that should be associated with the primary storage for this disk. Tags are a comma separated list of attributes of the storage. For example "ssd,blue". Tags are also added on Primary Storage. &PRODUCT; matches tags on a disk offering to tags on the storage. If a tag is present on a disk offering that tag (or tags) must also be present on Primary Storage for the volume to be provisioned. If no such primary storage exists, allocation from the disk offering will fail..</para></listitem>
<listitem><para>QoS Type. Three options: Empty (no Quality of Service), hypervisor (rate limiting enforced on the hypervisor side), and storage (guaranteed minimum and maximum IOPS enforced on the storage side). If leveraging QoS, make sure that the hypervisor or storage system supports this feature.</para></listitem>
<listitem><para>Custom IOPS. If checked, the user can set their own IOPS. If not checked, the root administrator can define values. If the root admin does not set values when using storage QoS, default values are used (the defauls can be overridden if the proper parameters are passed into &PRODUCT; when creating the primary storage in question).</para></listitem>
<listitem><para>Min IOPS. Appears only if storage QoS is to be used. Set a guaranteed minimum number of IOPS to be enforced on the storage side.</para></listitem>
<listitem><para>Max IOPS. Appears only if storage QoS is to be used. Set a maximum number of IOPS to be enforced on the storage side (the system may go above this limit in certain circumstances for short intervals).</para></listitem>
<listitem><para>(Optional)Storage Tags. The tags that should be associated with the primary storage for this disk. Tags are a comma separated list of attributes of the storage. For example "ssd,blue". Tags are also added on Primary Storage. &PRODUCT; matches tags on a disk offering to tags on the storage. If a tag is present on a disk offering that tag (or tags) must also be present on Primary Storage for the volume to be provisioned. If no such primary storage exists, allocation from the disk offering will fail..</para></listitem>
<listitem><para>Public. Indicate whether the service offering should be available all domains or only some domains. Choose Yes to make it available to all domains. Choose No to limit the scope to a subdomain; &PRODUCT; will then prompt for the subdomain's name.</para></listitem>
</itemizedlist></listitem>
<listitem><para>Click Add.</para></listitem>

View File

@ -39,9 +39,10 @@
</itemizedlist>
</section>
<section id="adding-primary-storage">
<title>Adding Primary Stroage</title>
<title>Adding Primary Storage</title>
<para>When you create a new zone, the first primary storage is added as part of that procedure. You can add primary storage servers at any time, such as when adding a new cluster or adding more servers to an existing cluster.</para>
<warning><para>Be sure there is nothing stored on the server. Adding the server to &PRODUCT; will destroy any existing data.</para></warning>
<warning><para>When using preallocated storage for primary storage, be sure there is nothing on the storage (ex. you have an empty SAN volume or an empty NFS share). Adding the storage to &PRODUCT; will destroy any existing data.</para></warning>
<note><para>Primary storage can also be added at the zone level through the &PRODUCT; API (adding zone-level primary storage is not yet supported through the &PRODUCT; UI).</para><para>Once primary storage has been added at the zone level, it can be managed through the &PRODUCT; UI.</para></note>
<orderedlist>
<listitem><para>Log in to the &PRODUCT; UI (see <xref linkend="log-in" />).</para></listitem>
<listitem><para>In the left navigation, choose Infrastructure. In Zones, click View More, then click the zone in which you want to add the primary storage.</para></listitem>
@ -69,6 +70,93 @@
</listitem>
<listitem><para>Click OK.</para></listitem>
</orderedlist>
</section>
<section>
<title>Configuring a Storage Plug-in</title>
<note>
<para>Primary storage that is based on a custom plug-in (ex. SolidFire) must be added through the &PRODUCT; API (described later in this section). There is no support at this time through the &PRODUCT; UI to add this type of primary storage (although most of its features are available through the &PRODUCT; UI).</para>
</note>
<note>
<para>At this time, a custom storage plug-in, such as the SolidFire storage plug-in, can only be leveraged for data disks (through Disk Offerings).</para>
</note>
<note>
<para>The SolidFire storage plug-in for &PRODUCT; is part of the standard &PRODUCT; install. There is no additional work required to add this component.</para>
</note>
<para>Adding primary storage that is based on the SolidFire plug-in enables &PRODUCT; to provide hard quality-of-service (QoS) guarantees.</para>
<para>When used with Disk Offerings, an administrator is able to build an environment in which a data disk that a user creates leads to the dynamic creation of a SolidFire volume, which has guaranteed performance. Such a SolidFire volume is associated with one (and only ever one) &PRODUCT; volume, so performance of the &PRODUCT; volume does not vary depending on how heavily other tenants are using the system.</para>
<para>The createStoragePool API has been augmented to support plugable storage providers. The following is a list of parameters to use when adding storage to &PRODUCT; that is based on the SolidFire plug-in:</para>
<itemizedlist>
<listitem>
<para>command=createStoragePool</para>
</listitem>
<listitem>
<para>scope=zone</para>
</listitem>
<listitem>
<para>zoneId=[your zone id]</para>
</listitem>
<listitem>
<para>name=[name for primary storage]</para>
</listitem>
<listitem>
<para>hypervisor=Any</para>
</listitem>
<listitem>
<para>provider=SolidFire</para>
</listitem>
<listitem>
<para>capacityIops=[whole number of IOPS from the SAN to give to &PRODUCT;]</para>
</listitem>
<listitem>
<para>capacityBytes=[whole number of bytes from the SAN to give to &PRODUCT;]</para>
</listitem>
</itemizedlist>
<para>The url parameter is somewhat unique in that its value can contain additional key/value pairs.</para>
<itemizedlist>
<para>url=[key/value pairs detailed below (values are URL encoded; for example, '=' is represented as '%3D')]</para>
<listitem>
<para>MVIP%3D[Management Virtual IP Address] (can be suffixed with :[port number])</para>
</listitem>
<listitem>
<para>SVIP%3D[Storage Virtual IP Address] (can be suffixed with :[port number])</para>
</listitem>
<listitem>
<para>clusterAdminUsername%3D[cluster admin's username]</para>
</listitem>
<listitem>
<para>clusterAdminPassword%3D[cluster admin's password]</para>
</listitem>
<listitem>
<para>clusterDefaultMinIops%3D[Min IOPS (whole number) to set for a volume; used if Min IOPS is not specified by administrator or user]</para>
</listitem>
<listitem>
<para>clusterDefaultMaxIops%3D[Max IOPS (whole number) to set for a volume; used if Max IOPS is not specified by administrator or user]</para>
</listitem>
<listitem>
<para>clusterDefaultBurstIopsPercentOfMaxIops%3D[Burst IOPS is determined by (Min IOPS * clusterDefaultBurstIopsPercentOfMaxIops parameter) (can be a decimal value)]
</para>
</listitem>
</itemizedlist>
<para>Example URL to add primary storage to &PRODUCT; based on the SolidFire plug-in (note that URL encoding is used with the value of the url key, so '%3A' equals ':','%3B' equals '&amp;' and '%3D' equals '='):</para>
<para>
http://127.0.0.1:8080/client/api?command=createStoragePool
&amp;scope=zone
&amp;zoneId=cf4e6ddf-8ae7-4194-8270-d46733a52b55
&amp;name=SolidFire_121258566
&amp;url=MVIP%3D192.168.138.180%3A443
%3BSVIP%3D192.168.56.7
%3BclusterAdminUsername%3Dadmin
%3BclusterAdminPassword%3Dpassword
%3BclusterDefaultMinIops%3D200
%3BclusterDefaultMaxIops%3D300
%3BclusterDefaultBurstIopsPercentOfMaxIop%3D2.5
&amp;provider=SolidFire
&amp;tags=SolidFire_SAN_1
&amp;capacityIops=4000000
&amp;capacityBytes=2251799813685248
&amp;hypervisor=Any
&amp;response=json
&amp;apiKey=VrrkiZQWFFgSdA6k3DYtoKLcrgQJjZXoSWzicHXt8rYd9Bl47p8L39p0p8vfDpiljtlcMLn_jatMSqCWv5Cs-Q&amp;signature=wqf8KzcPpY2JmT1Sxk%2F%2BWbgX3l8%3D
</para>
</section>
</section>

View File

@ -25,6 +25,7 @@
<section id="runtime-behavior-of-primary-storage">
<title>Runtime Behavior of Primary Storage</title>
<para>Root volumes are created automatically when a virtual machine is created. Root volumes are deleted when the VM is destroyed. Data volumes can be created and dynamically attached to VMs. <!-- (although, when the Oracle VM hypervisor is used, the VM must be stopped before an additional volume can be attached)--> Data volumes are not deleted when VMs are destroyed.</para>
<para>Administrators should monitor the capacity of primary storage devices and add additional primary storage as needed. See the Advanced Installation Guide.</para>
<para>Administrators add primary storage to the system by creating a &PRODUCT; storage pool. Each storage pool is associated with a cluster.</para>
<para>Administrators should monitor the capacity of primary storage devices and add additional primary storage as needed. See the Advanced Installation Guide.</para>
<para>Administrators add primary storage to the system by creating a &PRODUCT; storage pool. Each storage pool is associated with a cluster or a zone.</para>
<para>With regards to data disks, when a user executes a Disk Offering to create a data disk, the information is initially written to the CloudStack database only. Upon the first request that the data disk be attached to a VM, CloudStack determines what storage to place the volume on and space is taken from that storage (either from preallocated storage or from a storage system (ex. a SAN), depending on how the primary storage was added to CloudStack).</para>
</section>

View File

@ -24,7 +24,7 @@
<chapter id="user-services-overview">
<title>User Services Overview</title>
<para>In addition to the physical and logical infrastructure of your cloud,
<para>In addition to the physical and logical infrastructure of your cloud
and the &PRODUCT; software and servers, you also need a layer of user
services so that people can actually make use of the cloud. This means
not just a user UI, but a set of options and resources that users can
@ -48,8 +48,8 @@
root disk, and other choices. See Creating a New Compute Offering.</para>
</listitem>
<listitem><para>Disk Offerings, defined by the &PRODUCT; administrator,
provide a choice of disk size for primary data storage. See Creating a
New Disk Offering.</para>
provide a choice of disk size and IOPS (Quality of Service) for primary
data storage. See Creating a New Disk Offering.</para>
</listitem>
<listitem><para>Network Offerings, defined by the &PRODUCT; administrator,
describe the feature set that is available to end users from the virtual