cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mtutkow...@apache.org
Subject git commit: updated refs/heads/4.2 to ef4becf
Date Sat, 17 Aug 2013 04:44:26 GMT
Updated Branches:
  refs/heads/4.2 af71fb2ab -> ef4becfad


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


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/ef4becfa
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/ef4becfa
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/ef4becfa

Branch: refs/heads/4.2
Commit: ef4becfadcd98ac6abaac29067964f7ce89f74eb
Parents: af71fb2
Author: Mike Tutkowski <mike.tutkowski@solidfire.com>
Authored: Fri Aug 16 22:42:06 2013 -0600
Committer: Mike Tutkowski <mike.tutkowski@solidfire.com>
Committed: Fri Aug 16 22:43:38 2013 -0600

----------------------------------------------------------------------
 docs/en-US/about-primary-storage.xml            |  5 +-
 docs/en-US/about-zones.xml                      |  6 +-
 docs/en-US/best-practices-primary-storage.xml   |  6 +-
 docs/en-US/creating-disk-offerings.xml          | 10 ++-
 docs/en-US/primary-storage-add.xml              | 94 +++++++++++++++++++-
 .../runtime-behavior-of-primary-storage.xml     |  5 +-
 docs/en-US/user-services-overview.xml           |  6 +-
 7 files changed, 116 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ef4becfa/docs/en-US/about-primary-storage.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/about-primary-storage.xml b/docs/en-US/about-primary-storage.xml
index a9cf054..ebc61e8 100644
--- a/docs/en-US/about-primary-storage.xml
+++ b/docs/en-US/about-primary-storage.xml
@@ -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>

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ef4becfa/docs/en-US/about-zones.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/about-zones.xml b/docs/en-US/about-zones.xml
index 8f6cd06..44f9b4d 100644
--- a/docs/en-US/about-zones.xml
+++ b/docs/en-US/about-zones.xml
@@ -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 zone’s physical network

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ef4becfa/docs/en-US/best-practices-primary-storage.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/best-practices-primary-storage.xml b/docs/en-US/best-practices-primary-storage.xml
index 0c9a22f..279b95c 100644
--- a/docs/en-US/best-practices-primary-storage.xml
+++ b/docs/en-US/best-practices-primary-storage.xml
@@ -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>

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ef4becfa/docs/en-US/creating-disk-offerings.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/creating-disk-offerings.xml b/docs/en-US/creating-disk-offerings.xml
index 12bb2ac..627311e 100644
--- a/docs/en-US/creating-disk-offerings.xml
+++ b/docs/en-US/creating-disk-offerings.xml
@@ -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>        

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ef4becfa/docs/en-US/primary-storage-add.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/primary-storage-add.xml b/docs/en-US/primary-storage-add.xml
index 067cf71..52048ed 100644
--- a/docs/en-US/primary-storage-add.xml
+++ b/docs/en-US/primary-storage-add.xml
@@ -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>

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ef4becfa/docs/en-US/runtime-behavior-of-primary-storage.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/runtime-behavior-of-primary-storage.xml b/docs/en-US/runtime-behavior-of-primary-storage.xml
index 479ebce..5e17a4f 100644
--- a/docs/en-US/runtime-behavior-of-primary-storage.xml
+++ b/docs/en-US/runtime-behavior-of-primary-storage.xml
@@ -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>

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ef4becfa/docs/en-US/user-services-overview.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/user-services-overview.xml b/docs/en-US/user-services-overview.xml
index 12504e6..ad27375 100644
--- a/docs/en-US/user-services-overview.xml
+++ b/docs/en-US/user-services-overview.xml
@@ -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


Mime
View raw message