Return-Path: X-Original-To: apmail-cloudstack-commits-archive@www.apache.org Delivered-To: apmail-cloudstack-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 31ECEF067 for ; Sat, 17 Aug 2013 04:54:55 +0000 (UTC) Received: (qmail 71123 invoked by uid 500); 17 Aug 2013 04:54:54 -0000 Delivered-To: apmail-cloudstack-commits-archive@cloudstack.apache.org Received: (qmail 71097 invoked by uid 500); 17 Aug 2013 04:54:53 -0000 Mailing-List: contact commits-help@cloudstack.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cloudstack.apache.org Delivered-To: mailing list commits@cloudstack.apache.org Received: (qmail 71089 invoked by uid 99); 17 Aug 2013 04:54:50 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 17 Aug 2013 04:54:50 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 503728AEACE; Sat, 17 Aug 2013 04:54:50 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: mtutkowski@apache.org To: commits@cloudstack.apache.org Message-Id: <8f4a4268796040dc86d41b8700036afb@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: git commit: updated refs/heads/master to 9f4889a Date: Sat, 17 Aug 2013 04:54:50 +0000 (UTC) Updated Branches: refs/heads/master 9de9dec6e -> 9f4889a86 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/9f4889a8 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/9f4889a8 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/9f4889a8 Branch: refs/heads/master Commit: 9f4889a868d8d5e0813a5fa9077fc0a4656363bc Parents: 9de9dec Author: Mike Tutkowski Authored: Fri Aug 16 22:54:23 2013 -0600 Committer: Mike Tutkowski Committed: Fri Aug 16 22:54:23 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/9f4889a8/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 @@
About Primary Storage - 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. + 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. + 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). + 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. &PRODUCT; is designed to work with all standards-compliant iSCSI and NFS servers that are supported by the underlying hypervisor, including, for example: + SolidFire for iSCSI Dell EqualLogic™ for iSCSI Network Appliances filers for NFS and iSCSI Scale Computing for NFS http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f4889a8/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 @@ A zone consists of: One or more pods. Each pod contains one or more clusters of hosts and one or more primary storage servers. + A zone may contain one or more primary storage servers, which are shared by all the pods in the zone. Secondary storage, which is shared by all the pods in the zone. @@ -45,10 +46,11 @@ 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. For each zone, the administrator must decide the following. - How many pods to place in a zone. + How many pods to place in each zone. How many clusters to place in each pod. How many hosts to place in each cluster. - How many primary storage servers to place in each cluster and total capacity for the storage servers. + (Optional) How many primary storage servers to place in each zone and total capacity for these storage servers. + How many primary storage servers to place in each cluster and total capacity for these storage servers. How much secondary storage to deploy in a zone. 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/9f4889a8/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 @@
Best Practices for Primary Storage - The speed of primary storage will impact guest performance. If possible, choose smaller, higher RPM drives for primary storage. - Ensure that nothing is stored on the server. Adding the server to &PRODUCT; will destroy any existing data + The speed of primary storage will impact guest performance. If possible, choose smaller, higher RPM drives or SSDs for primary storage. + There are two ways CloudStack can leverage primary storage: + 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. + 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).
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f4889a8/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 @@
Creating a New Disk Offering - To create a system service offering: + To create a new disk offering: Log in with admin privileges to the &PRODUCT; UI. In the left navigation bar, click Service Offerings. @@ -32,11 +32,15 @@ Click Add Disk Offering. In the dialog, make the following choices: - Name. Any desired name for the system offering. + Name. Any desired name for the disk offering. Description. A short description of the offering that can be displayed to users 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. Disk Size. Appears only if Custom Disk Size is not selected. Define the volume size in GB. - (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.. + 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. + 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). + 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. + 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). + (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.. 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. Click Add. http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f4889a8/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 @@
- Adding Primary Stroage + Adding Primary Storage 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. - Be sure there is nothing stored on the server. Adding the server to &PRODUCT; will destroy any existing data. + 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. + 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).Once primary storage has been added at the zone level, it can be managed through the &PRODUCT; UI. Log in to the &PRODUCT; UI (see ). In the left navigation, choose Infrastructure. In Zones, click View More, then click the zone in which you want to add the primary storage. @@ -69,6 +70,93 @@ Click OK. - +
+
+ Configuring a Storage Plug-in + + 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). + + + 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). + + + The SolidFire storage plug-in for &PRODUCT; is part of the standard &PRODUCT; install. There is no additional work required to add this component. + + Adding primary storage that is based on the SolidFire plug-in enables &PRODUCT; to provide hard quality-of-service (QoS) guarantees. + 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. + 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: + + + command=createStoragePool + + + scope=zone + + + zoneId=[your zone id] + + + name=[name for primary storage] + + + hypervisor=Any + + + provider=SolidFire + + + capacityIops=[whole number of IOPS from the SAN to give to &PRODUCT;] + + + capacityBytes=[whole number of bytes from the SAN to give to &PRODUCT;] + + + The url parameter is somewhat unique in that its value can contain additional key/value pairs. + + url=[key/value pairs detailed below (values are URL encoded; for example, '=' is represented as '%3D')] + + MVIP%3D[Management Virtual IP Address] (can be suffixed with :[port number]) + + + SVIP%3D[Storage Virtual IP Address] (can be suffixed with :[port number]) + + + clusterAdminUsername%3D[cluster admin's username] + + + clusterAdminPassword%3D[cluster admin's password] + + + clusterDefaultMinIops%3D[Min IOPS (whole number) to set for a volume; used if Min IOPS is not specified by administrator or user] + + + clusterDefaultMaxIops%3D[Max IOPS (whole number) to set for a volume; used if Max IOPS is not specified by administrator or user] + + + clusterDefaultBurstIopsPercentOfMaxIops%3D[Burst IOPS is determined by (Min IOPS * clusterDefaultBurstIopsPercentOfMaxIops parameter) (can be a decimal value)] + + + + 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 '&' and '%3D' equals '='): + + http://127.0.0.1:8080/client/api?command=createStoragePool + &scope=zone + &zoneId=cf4e6ddf-8ae7-4194-8270-d46733a52b55 + &name=SolidFire_121258566 + &url=MVIP%3D192.168.138.180%3A443 + %3BSVIP%3D192.168.56.7 + %3BclusterAdminUsername%3Dadmin + %3BclusterAdminPassword%3Dpassword + %3BclusterDefaultMinIops%3D200 + %3BclusterDefaultMaxIops%3D300 + %3BclusterDefaultBurstIopsPercentOfMaxIop%3D2.5 + &provider=SolidFire + &tags=SolidFire_SAN_1 + &capacityIops=4000000 + &capacityBytes=2251799813685248 + &hypervisor=Any + &response=json + &apiKey=VrrkiZQWFFgSdA6k3DYtoKLcrgQJjZXoSWzicHXt8rYd9Bl47p8L39p0p8vfDpiljtlcMLn_jatMSqCWv5Cs-Q&signature=wqf8KzcPpY2JmT1Sxk%2F%2BWbgX3l8%3D +
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f4889a8/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 @@
Runtime Behavior of Primary Storage 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. Data volumes are not deleted when VMs are destroyed. - Administrators should monitor the capacity of primary storage devices and add additional primary storage as needed. See the Advanced Installation Guide. - Administrators add primary storage to the system by creating a &PRODUCT; storage pool. Each storage pool is associated with a cluster. + Administrators should monitor the capacity of primary storage devices and add additional primary storage as needed. See the Advanced Installation Guide. + Administrators add primary storage to the system by creating a &PRODUCT; storage pool. Each storage pool is associated with a cluster or a zone. + 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).
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f4889a8/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 @@ User Services Overview - In addition to the physical and logical infrastructure of your cloud, + 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. Disk Offerings, defined by the &PRODUCT; administrator, - provide a choice of disk size for primary data storage. See Creating a - New Disk Offering. + provide a choice of disk size and IOPS (Quality of Service) for primary + data storage. See Creating a New Disk Offering. Network Offerings, defined by the &PRODUCT; administrator, describe the feature set that is available to end users from the virtual