| <?xml version='1.0' encoding='utf-8' ?> |
| <!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ |
| <!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent"> |
| %BOOK_ENTITIES; |
| ]> |
| |
| <!-- Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| --> |
| <section id="primary-storage-add"> |
| <title>Add Primary Storage</title> |
| <section id="sys-require-primary-storage"> |
| <title>System Requirements for Primary Storage</title> |
| <para>Hardware requirements:</para> |
| <itemizedlist> |
| <listitem> |
| <para>Any standards-compliant iSCSI, SMB, or NFS server that is supported by the underlying |
| hypervisor.</para> |
| </listitem> |
| <listitem> |
| <para>The storage server should be a machine with a large number of disks. The disks should |
| ideally be managed by a hardware RAID controller.</para> |
| </listitem> |
| <listitem> |
| <para>Minimum required capacity depends on your needs.</para> |
| </listitem> |
| </itemizedlist> |
| <para>When setting up primary storage, follow these restrictions:</para> |
| <itemizedlist> |
| <listitem> |
| <para>Primary storage cannot be added until a host has been added to the cluster.</para> |
| </listitem> |
| <listitem> |
| <para>If you do not provision shared primary storage, you must set the global configuration |
| parameter system.vm.local.storage.required to true, or else you will not be able to start |
| VMs.</para> |
| </listitem> |
| </itemizedlist> |
| </section> |
| <section id="adding-primary-storage"> |
| <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>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> |
| <para></para> |
| <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> |
| <para></para> |
| <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> |
| <listitem> |
| <para>Click the Compute tab.</para> |
| </listitem> |
| <listitem> |
| <para>In the Primary Storage node of the diagram, click View All.</para> |
| </listitem> |
| <listitem> |
| <para>Click Add Primary Storage.</para> |
| </listitem> |
| <listitem> |
| <para>Provide the following information in the dialog. The information required varies |
| depending on your choice in Protocol.</para> |
| <itemizedlist> |
| <listitem> |
| <para><emphasis role="bold">Scope.</emphasis> Indicate whether the storage is available |
| to all hosts in the zone or only to hosts in a single cluster.</para> |
| </listitem> |
| <listitem> |
| <para><emphasis role="bold">Pod.</emphasis> (Visible only if you choose Cluster in the |
| Scope field.) The pod for the storage device.</para> |
| </listitem> |
| <listitem> |
| <para><emphasis role="bold">Cluster.</emphasis> (Visible only if you choose Cluster in |
| the Scope field.) The cluster for the storage device.</para> |
| </listitem> |
| <listitem> |
| <para><emphasis role="bold">Name.</emphasis> The name of the storage device.</para> |
| </listitem> |
| <listitem> |
| <para><emphasis role="bold">Protocol.</emphasis> For XenServer, choose either NFS, |
| iSCSI, or PreSetup. For KVM, choose NFS or SharedMountPoint. For vSphere choose either |
| VMFS (iSCSI or FiberChannel) or NFS. For Hyper-V, choose SMB.</para> |
| </listitem> |
| <listitem> |
| <para><emphasis role="bold">Server (for NFS, iSCSI, or PreSetup).</emphasis> The IP |
| address or DNS name of the storage device.</para> |
| </listitem> |
| <listitem> |
| <para><emphasis role="bold">Server (for VMFS).</emphasis> The IP address or DNS name of |
| the vCenter server.</para> |
| </listitem> |
| <listitem> |
| <para><emphasis role="bold">Path (for NFS).</emphasis> In NFS this is the exported path |
| from the server.</para> |
| </listitem> |
| <listitem> |
| <para><emphasis role="bold">Path (for VMFS).</emphasis> In vSphere this is a combination |
| of the datacenter name and the datastore name. The format is "/" datacenter name "/" |
| datastore name. For example, "/cloud.dc.VM/cluster1datastore".</para> |
| </listitem> |
| <listitem> |
| <para><emphasis role="bold">Path (for SharedMountPoint).</emphasis> With KVM this is the |
| path on each host that is where this primary storage is mounted. For example, |
| "/mnt/primary".</para> |
| </listitem> |
| <listitem> |
| <para><emphasis role="bold">SMB Username</emphasis> (for SMB/CIFS): Applicable only if you |
| select SMB/CIFS provider. The username of the account which has the necessary |
| permissions to the SMB shares. The user must be part of the Hyper-V administrator |
| group.</para> |
| </listitem> |
| <listitem> |
| <para><emphasis role="bold">SMB Password</emphasis> (for SMB/CIFS): Applicable only if you |
| select SMB/CIFS provider. The password associated with the account.</para> |
| </listitem> |
| <listitem> |
| <para><emphasis role="bold">SMB Domain</emphasis>(for SMB/CIFS): Applicable only if you |
| select SMB/CIFS provider. The Active Directory domain that the SMB share is a part |
| of.</para> |
| </listitem> |
| <listitem> |
| <para><emphasis role="bold">SR Name-Label (for PreSetup).</emphasis> Enter the |
| name-label of the SR that has been set up outside &PRODUCT;.</para> |
| </listitem> |
| <listitem> |
| <para><emphasis role="bold">Target IQN (for iSCSI).</emphasis> In iSCSI this is the IQN |
| of the target. For example, iqn.1986-03.com.sun:02:01ec9bb549-1271378984.</para> |
| </listitem> |
| <listitem> |
| <para><emphasis role="bold">Lun # (for iSCSI).</emphasis> In iSCSI this is the LUN |
| number. For example, 3.</para> |
| </listitem> |
| <listitem> |
| <para><emphasis role="bold">Tags (optional).</emphasis> The comma-separated list of tags |
| for this storage device. It should be an equivalent set or superset of the tags on |
| your disk offerings..</para> |
| </listitem> |
| </itemizedlist> |
| <para>The tag sets on primary storage across clusters in a Zone must be identical. For |
| example, if cluster A provides primary storage that has tags T1 and T2, all other clusters |
| in the Zone must also provide primary storage that has tags T1 and T2.</para> |
| </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 ';' (';' |
| is a key/value pair delimiter for the url field) and '%3D' equals '='):</para> |
| <para>http://127.0.0.1:8080/client/api?</para> |
| <para>command=createStoragePool</para> |
| <para>&scope=zone</para> |
| <para>&zoneId=cf4e6ddf-8ae7-4194-8270-d46733a52b55</para> |
| <para>&name=SolidFire_121258566</para> |
| <para>&url=</para> |
| <para>MVIP%3D192.168.138.180%3A443</para> |
| <para>%3BSVIP%3D192.168.56.7</para> |
| <para>%3BclusterAdminUsername%3Dadmin</para> |
| <para>%3BclusterAdminPassword%3Dpassword</para> |
| <para>%3BclusterDefaultMinIops%3D200</para> |
| <para>%3BclusterDefaultMaxIops%3D300</para> |
| <para>%3BclusterDefaultBurstIopsPercentOfMaxIops%3D2.5</para> |
| <para>&provider=SolidFire</para> |
| <para>&tags=SolidFire_SAN_1</para> |
| <para>&capacityIops=4000000</para> |
| <para>&capacityBytes=2251799813685248</para> |
| <para>&hypervisor=Any</para> |
| <para>&response=json</para> |
| <para>&apiKey=VrrkiZQWFFgSdA6k3DYtoKLcrgQJjZXoSWzicHXt8rYd9Bl47p8L39p0p8vfDpiljtlcMLn_jatMSqCWv5Cs-Q</para> |
| <para>&signature=wqf8KzcPpY2JmT1Sxk%2F%2BWbgX3l8%3D</para> |
| </section> |
| </section> |