<?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="about-primary-storage">
    <title>About Primary Storage</title>
    <para>Primary storage is associated with a cluster or (in KVM and VMware) a zone, and it stores
        the disk volumes for all the VMs running on hosts.</para>
    <para>You can add multiple primary storage servers to a cluster or zone. At least one is
        required. It is typically located close to the hosts for increased performance.
        &PRODUCT; manages the allocation of guest virtual disks to particular primary storage devices.</para>
    <para>It is useful to set up zone-wide primary storage when you want to avoid extra data copy
    operations. With cluster-based primary storage, data in the primary storage is directly
    available only to VMs within that cluster. If a VM in a different cluster needs some of the
    data, it must be copied from one cluster to another, using the zone's secondary storage as an
    intermediate step. This operation can be unnecessarily time-consuming.</para>
  <para>For Hyper-V, SMB/CIFS storage is supported. Note that Zone-wide Primary Storage is not
    supported in Hyper-V.</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>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>
    </itemizedlist>
    <para>If you intend to use only local disk for your installation, you can skip adding separate
        primary storage.</para>
</section>
