Merge "Removal of passive voice from chap 4, arch guide"

This commit is contained in:
Jenkins 2015-02-27 07:33:25 +00:00 committed by Gerrit Code Review
commit ca9eab16ec

View File

@ -8,24 +8,39 @@
<title>Prescriptive examples</title> <title>Prescriptive examples</title>
<para>Storage-focused architectures are highly dependent on the <para>Storage-focused architectures are highly dependent on the
specific use case. Three specific example use cases are specific use case. Three specific example use cases are
discussed in this section: an object store with a RESTful discussed in this section:</para>
interface, compute analytics with parallel file systems, and a <itemizedlist>
high performance database.</para> <listitem>
<para>This example describes a REST interface without a high <para>
performance requirement, so the presented REST interface does An object store with a RESTful interface
not require a high performance caching tier, and is presented </para>
as a traditional Object store running on traditional </listitem>
spindles.</para> <listitem>
<para>
Compute analytics with parallel file systems
</para>
</listitem>
<listitem>
<para>
High performance database
</para>
</listitem>
</itemizedlist>
<para>The example below shows a REST interface without a high
performance requirement.</para>
<para>Swift is a highly scalable object store that is part of the <para>Swift is a highly scalable object store that is part of the
OpenStack project. This is a diagram to explain the example OpenStack project. This diagram explains the example
architecture: architecture:
<mediaobject> <mediaobject>
<imageobject> <imageobject>
<imagedata contentwidth="4in" <imagedata contentwidth="4in"
fileref="../figures/Storage_Object.png" fileref="../figures/Storage_Object.png"/>
/>
</imageobject> </imageobject>
</mediaobject></para> </mediaobject>
</para>
<para>The presented REST interface does not require a high performance
caching tier, and is presented as a traditional Object store running
on traditional spindles.</para>
<para>This example uses the following components:</para> <para>This example uses the following components:</para>
<para>Network:</para> <para>Network:</para>
<itemizedlist> <itemizedlist>
@ -37,8 +52,8 @@
<para>Storage hardware:</para> <para>Storage hardware:</para>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para>10 storage servers each with 12x4 TB disks which <para>10 storage servers each with 12x4 TB disks equalling
equals 480 TB total space with approximately 160 Tb of 480 TB total space with approximately 160 Tb of
usable space after replicas.</para> usable space after replicas.</para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
@ -58,77 +73,80 @@
back end storage cluster</para> back end storage cluster</para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
<note><para>For some applications, it may be necessary to <note>
implement a 3rd-party caching layer to achieve suitable <para>It may be necessary to implement a 3rd-party caching layer
performance.</para></note> for some applications to achieve suitable performance.</para>
</note>
<section xml:id="compute-analytics-with-sahara"> <section xml:id="compute-analytics-with-sahara">
<title>Compute analytics with Data processing service for <title>Compute analytics with Data processing service</title>
OpenStack</title> <para>Analytics of large data sets are highly dependent on the performance
<para>Analytics of large data sets can be highly dependent on the of the storage system. Clouds using storage systems such as
performance of the storage system. Some clouds using storage Hadoop Distributed File System (HDFS) have inefficiencies which can
systems such as HDFS have inefficiencies which can cause cause performance issues.
performance issues. A potential solution to this is to </para>
implement a storage system designed with performance in mind. <para>One potential solution to this problem is the implentation of storage
Traditionally, parallel file systems have filled this need in systems designed for performance. Parallel file systems have previously
the HPC space and could be a consideration, when applicable, filled this need in the HPC space and as a result could be considered
for large scale performance-oriented systems.</para> for large scale performance-orientated systems.</para>
<para>This example discusses an OpenStack Object Store with a high <para>OpenStack has integration with Hadoop to manage the Hadoop cluster
performance requirement. OpenStack has integration with Hadoop within the cloud. This diagram shows an OpenStack store with a high
through the Data processing project (Sahara), which is leveraged performance requirement:
to manage the Hadoop cluster within the cloud.
<mediaobject> <mediaobject>
<imageobject> <imageobject>
<imagedata contentwidth="4in" <imagedata contentwidth="4in"
fileref="../figures/Storage_Hadoop3.png" fileref="../figures/Storage_Hadoop3.png"/>
/>
</imageobject> </imageobject>
</mediaobject></para> </mediaobject>
<para>The actual hardware requirements and configuration are </para>
<para>The hardware requirements and configuration are
similar to those of the High Performance Database example similar to those of the High Performance Database example
below. In this case, the architecture uses Ceph's below. In this case, the architecture uses Ceph's
Swift-compatible REST interface, features that allow for Swift-compatible REST interface, features that allow for
connecting a caching pool to allow for acceleration of the connecting a caching pool to allow for acceleration of the
presented pool.</para></section> presented pool.
</para>
</section>
<section xml:id="high-performance-database-with-trove"> <section xml:id="high-performance-database-with-trove">
<title>High performance database with Database service for OpenStack</title> <title>High performance database with Database service</title>
<para>Databases are a common workload that can greatly benefit <para>Databases are a common workload that benefit from high performance
from a high performance storage back end. Although enterprise storage back ends. Although enterprise storage is not a requirement,
storage is not a requirement, many environments have existing many environments have existing storage that can be used as back ends for
storage that can be used as back ends for an OpenStack cloud. OpenStack cloud. A storage pool can be created to provide block devices
As shown in the following diagram, a storage pool can be with OpenStack Block Storage for instances as well as object interfaces.
carved up to provide block devices with OpenStack Block In this example, the database I-O requirements were high and demanded
Storage to instances as well as an object interface. In this
example the database I-O requirements were high and demanded
storage presented from a fast SSD pool.</para> storage presented from a fast SSD pool.</para>
<para>A storage system is used to present a LUN that is backed by <para>A storage system is used to present a LUN that is backed by
a set of SSDs using a traditional storage array with OpenStack a set of SSDs using a traditional storage array with OpenStack
Block Storage integration or a storage platform such as Ceph Block Storage integration or a storage platform such as Ceph
or Gluster.</para> or Gluster.</para>
<para>This kind of system can also provide additional performance <para>This system can provide additional performance. For example,
in other situations. For example, in the database example in the database example below, a portion of the SSD pool can act
below, a portion of the SSD pool can act as a block device to as a block device to the Database server. In the high performance analytics
the Database server. In the high performance analytics
example, the REST interface would be accelerated by the inline example, the REST interface would be accelerated by the inline
SSD cache layer.</para> SSD cache layer.</para>
<mediaobject> <mediaobject>
<imageobject> <imageobject>
<imagedata contentwidth="4in" <imagedata contentwidth="4in"
fileref="../figures/Storage_Database_+_Object5.png" fileref="../figures/Storage_Database_+_Object5.png"/>
/>
</imageobject> </imageobject>
</mediaobject> </mediaobject>
<para>Ceph was selected to present a Swift-compatible REST <para>Ceph was selected to present a Swift-compatible REST
interface, as well as a block level storage from a distributed interface, as well as a block level storage from a distributed
storage cluster. It is highly flexible and has features that storage cluster. It is highly flexible and has features that
allow to reduce cost of operations such as self healing and allow to reduce cost of operations such as self healing and
auto balancing. Erasure coded pools are used to maximize the auto balancing. Using erasure coded pools are a suitable way of
amount of usable space. Note that there are special maximizing the amount of usable space.</para>
considerations around erasure coded pools, for example, higher <note>
computational requirements and limitations on the operations <para>There are special considerations around erasure coded pools.
allowed on an object. For example, partial writes are not For example, higher computational requirements and limitations on
supported in an erasure coded pool.</para> the operations allowed on an object; partial writes are not
<para>A potential architecture for Ceph, as it relates to the supported in an erasure coded pool.
examples above, would entail the following:</para> </para>
</note>
<para>Using Ceph as an applicable example, a potential architecture
would have the following requirements:</para>
<para>Network:</para> <para>Network:</para>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
@ -164,8 +182,9 @@
back end storage cluster</para> back end storage cluster</para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
<para>The SSD cache layer is used to present block devices <para>Using an SSD cache layer, you can present block devices
directly to Hypervisors or instances. The SSD cache systems directly to Hypervisors or instances. The SSD cache systems
can also be used as an inline cache for the REST interface. can also be used as an inline cache for the REST interface.
</para></section> </para>
</section>
</section> </section>