<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Official Rackspace Blog &#187; John Dickinson</title>
	<atom:link href="http://www.rackspace.com/blog/author/john-dickinson/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rackspace.com/blog</link>
	<description>The Official Rackspace Blog</description>
	<lastBuildDate>Fri, 17 May 2013 15:00:37 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Storage Systems Overview</title>
		<link>http://www.rackspace.com/blog/storage-systems-overview/</link>
		<comments>http://www.rackspace.com/blog/storage-systems-overview/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 19:01:38 +0000</pubDate>
		<dc:creator>John Dickinson</dc:creator>
				<category><![CDATA[OpenStack]]></category>
		<category><![CDATA[Product Discussion]]></category>
		<category><![CDATA[Tips for Devs and Sys Admins]]></category>
		<category><![CDATA[OpenStack Object Storage]]></category>
		<category><![CDATA[Swift]]></category>

		<guid isPermaLink="false">http://www.rackspace.com/blog/?p=14881</guid>
		<description><![CDATA[Storage requirements are getting huge. Data is incredibly sticky: it doesn&#8217;t move or ever get smaller. These two realities make your choice of a storage system vitally important. However, there is no storage system that provides a single solution for all use cases. You must pair the right use case with the right system. When [...]]]></description>
				<content:encoded><![CDATA[<p>Storage requirements are getting huge. Data is incredibly sticky: it doesn&#8217;t move or ever get smaller. These two realities make your choice of a storage system vitally important. However, there is no storage system that provides a single solution for all use cases. You must pair the right use case with the right system.</p>
<p>When the word &#8220;storage&#8221; is mentioned, some people think of different types of hardware like hard drives (both spinning media and solid state) and tape drives. Some think of databases. Some think of deployment patterns like <a title="NAS | Wikipedia" href="http://en.wikipedia.org/wiki/Network-attached_storage" target="_blank">NAS</a>, <a title="DAS | Wikipedia" href="http://en.wikipedia.org/wiki/Direct-attached_storage" target="_blank">DAS</a>, or <a title="SAN | Wikipedia" href="http://en.wikipedia.org/wiki/Storage_area_network" target="_blank">SAN</a>. Others may think of specific vendors. <a title="NetApp | Oficial Website" href="http://www.netapp.com/" target="_blank">NetApp</a>, <a title="Isilon | Official Website" href="http://www.isilon.com/" target="_blank">Isilon</a>, and <a title="EMC | Official Website" href="http://www.emc.com/storage/index.htm" target="_blank">EMC</a> all offer storage products.</p>
<h2>Types of Storage</h2>
<p>However, there are only three types of storage: block, file, and object. Each type offers their own advantages and has their own use cases.</p>
<h2>Block Storage</h2>
<p><a href="http://www.rackspace.com/cloud/block-storage/">Block storage</a> gives you access to the &#8220;bare metal&#8221;. There is no concept of &#8220;files&#8221; at this level. There are just evenly sized blocks of data. Generally, using block storage offers the best performance, but it is quite low-level. Database servers often times can take advantage of block storage systems. An example of a common block storage system is a SAN.</p>
<h2>File Storage</h2>
<p>File storage provides access to a file system. This is the most familiar kind of storage&#8211;it&#8217;s what we interact with most on a daily basis. Users of file storage have access to files and can read and write to either the whole file or a part of it. File systems are what operating systems provide on all of our personal computers. In a shared environment, file storage is often seen as a network drive.</p>
<h2>Object Storage</h2>
<p>Object storage is probably the least familiar type of storage to most people. Object storage doesn&#8217;t provide access to raw blocks of data. It doesn&#8217;t offer file-based access. Object storage provides access to whole objects, or blobs of data and generally does so with an API specific to that system. Unlike file storage, object storage generally does not allow the ability to write to one part of a file. Objects must be updated as a whole unit. Three of the most common commercial object storage systems are <a title="S3 | Amazon" href="http://aws.amazon.com/s3/" target="_blank">Amazon&#8217;s S3</a>, <a title="Atmos | EMC" href="http://www.emc.com/storage/atmos/atmos.htm" target="_blank">EMC&#8217;s Atmos</a>, and <a title="Cloud Files | Rackspace" href="http://www.rackspace.com/cloud/cloud_hosting_products/files/" target="_blank">Rackspace&#8217;s Cloud Files</a>. Object storage excels at storing content that can grow without bound. Perfect use cases include backups, archiving, and static web content like images and scripts. One of the main advantages of object storage systems is their ability to reliably store a large amount of data at relatively low cost.</p>
<p>Each type of storage has advantages and disadvantages. Trade-offs come when you try to grow your storage or layer the storage abstractions. What happens when you try to grow your storage system beyond a few dozen terabytes? What about beyond a petabyte or beyond fifty petabytes? Systems at this scale must make trade-offs in some areas.</p>
<h2>CAP Theorem</h2>
<p>In computing, the <a title="CAP Theorem | Wikipedia" href="http://en.wikipedia.org/wiki/CAP_theorem" target="_blank">CAP theorem</a> states that distributed systems must choose two out of consistency, availability, and tolerating network failure. For example, a system can be consistent (ie all reads get the most current data) and handle network failures, but it must sacrifice availability to do so. Or a system can choose to handle network failures and have perfect availability, but it must sacrifice consistency to do so. Distributed systems must always handle network failures, so they must choose to sacrifice either availability or consistency.</p>
<p>Storage systems become distributed as they grow. <a title="Swift | OpenStack" href="http://www.openstack.org/projects/storage/" target="_blank">OpenStack Swift</a> (the basis for Rackspace&#8217;s Cloud Files product) chooses to sacrifice consistency for availability and network failure tolerance. This choice allows the system to scale to enormous levels and provide massive uptime, but it also means that in certain scenarios, some data may not be updated throughout the entire system. For example, a container listing may not be up-to-date immediately after writing an object. Swift will queue the container listing update and allow the object write to succeed. This sort of consistency model is called &#8220;eventual consistency&#8221;.</p>
<h2>Object Storage Use Cases</h2>
<p>Since object storage is the least familiar to people, I&#8217;d like to review some use cases for these type of systems. The most common use cases are backups, archiving, and web content. These use cases are fairly straightforward and easy to understand.</p>
<p>One of the most exciting use cases for object storage is as the back end for a storage appliance. Since the storage appliance presents the object storage system as local or network storage, the distinction between on-site and off-premise storage goes away. Those using a storage appliance backed by an object storage system can start to think about &#8220;data to be stored&#8221; and not have to worry about where the data is stored or managing separate backups.</p>
<p>Document storage is another interesting use case for an object storage systems. At first glance, this seems to be the same use case as archiving, but document management systems will go beyond simple archiving and also add in policies for each document describing permissions and retention.</p>
<p>Similarly, an object storage system can be used for disaster recovery. Since a system like Swift can store large amounts of data cheaply and reliably, it makes sense for a business to store a copy of their data in a remote Swift cluster. Generally an object storage system works well for this use case since the DR data will be large and needs to be updated and restored using high concurrency.</p>
<p>Object storage is also good for storing large data sets. Scientific research gathers enormous amounts of data as humanity looks at the biggest and smallest things in our universe. This data is oftentimes impossible to replace and becomes the basis for further research for decades to come. Object storage systems can reliably store this information in a cost-effective manner.</p>
<p>Object storage systems can also be used as the basis for other storage systems. For example, an object storage system could be used as the basis for a block storage system. Each &#8220;block&#8221; in the block storage system would be represented as an object in the object storage system. Layering abstractions like this will allow your block system to grow to a very large scale, but it will have certain performance penalties. A block system build on top of an object system will have much higher latency than a traditional block storage system.</p>
<h2>Choose the Right System</h2>
<p>Block storage, file storage, and object storage each excel in different areas. Understanding the storage landscape and the advantages and costs of each type of storage allows savvy users to choose the right system for their use case.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rackspace.com/blog/storage-systems-overview/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Nested Folders in Rackspace Cloud Files</title>
		<link>http://www.rackspace.com/blog/nested-folders-in-rackspace-cloud-files/</link>
		<comments>http://www.rackspace.com/blog/nested-folders-in-rackspace-cloud-files/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 21:32:46 +0000</pubDate>
		<dc:creator>John Dickinson</dc:creator>
				<category><![CDATA[Product Discussion]]></category>

		<guid isPermaLink="false">http://www.rackspacecloud.com/blog/?p=4052</guid>
		<description><![CDATA[Rackspace Cloud Files is a cloud storage system that is great for storing large amounts of information. A common misconception is that this storage system behaves like a traditional file system, complete with byte-level manipulation and nested folders. It is the second of these that I want to talk about: how to simulate a nested [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.rackspacecloud.com/cloud_hosting_products/files" target="_blank">Rackspace Cloud Files</a> is a cloud storage system that is great for storing large amounts of information. A common misconception is that this storage system behaves like a traditional file system, complete with byte-level manipulation and nested folders. It is the second of these that I want to talk about: how to simulate a nested directory (or folder) structure in Rackspace Cloud Files.</p>
<p>Cloud Files is better understood as a storage system, not a file system with three basic parts: accounts, containers, and objects. These three parts can be easily seen in the URL referencing an object. The URL one uses for the ReST API is of the form . Containers are large-scale groupings of objects, operating at a higher level, conceptually, than folders. If objects were books, containers may be genres. Containers cannot be nested. That is, one cannot put a container inside of another container.</p>
<p>However, it is fairly easy to simulate a directory structure with objects. These “virtual directories” are not directories, per se, but object name prefixes over which one can iterate. An example should make this concept easy to understand. Suppose I wanted to store books in Cloud Files. From my analogy above, I can use the genre of the book as my container name. The object name will be of the form “author/title.” This way, I can list all books by a particular author (within a genre).</p>
<p>Let’s load the following books into Cloud Files:</p>
<p>•    The Pit and the Pendulum, Poe, Horror<br />
•    The Masque of the Red Death, Poe, Horror<br />
•    Pride and Prejudice and Zombies, Grahame-Smith, Horror<br />
•    The Far Side Gallery, Larson, Comics<br />
•    Something Under the Bed Is Drooling, Watterson, Comics<br />
•    It’s A Magical World, Watterson, Comics</p>
<p>First, I will create two containers, horror and comics. Next I will name my files according to the pattern I laid out above. I will have the files “poe/the_pit_and_the_pendulum”, “poe/the_masque_of_the_red_death”, “larson/the_far_side_gallery”, etc. Then I will upload these files to their appropriate container. As a final step, I need to upload “directory marker” files. These are empty (zero-sized) files with a content-type of “application/directory.&#8221;</p>
<p>[<strong>NOTE</strong>: The following gets technical. For those wishing to use this feature of Cloud Files and not wanting to program, I recommend using a third-party tool like <a href="http://cyberduck.ch/" target="_blank">Cyberduck</a> (if you are using a Mac). Cyberduck handles virtual nested directories completely transparently.]</p>
<p>Now to take advantage of these “virtual directories”, I can do container listings and give an appropriate path value. In the Python language bindings, this would look similar to the following:</p>
<h4>1             container = cf_connection.get_container(&#8216;horror&#8217;)</h4>
<h4>2             books_by_poe = container.get_objects(path=’poe’)</h4>
<p>The path parameter on the get_objects call returns all objects in the given value. In this case, it returns the two books in the virtual “poe” directory. Similarly, if I had given the value “grahame-smith,&#8221; I would have found his adaptation of the classic love story.</p>
<p>In my example, I’ve used two genre containers and virtual directories only one level deep. I could just as easily put everything into one container and nested the authors under a genre virtual directory. An object name would then be like “comics/larson/the_far_side_gallery.&#8221; The only limitation to using this feature in Cloud Files is keeping the length of the object name (including all virtual directories) under the maximum allowed (1024 characters).</p>
<p>For more detailed information on how to implement virtual directories, see the <a href="http://docs.rackspace.com/files/api/v1/cf-devguide/content/Pseudo-Hierarchical_Folders_Directories-d1e1580.html" target="_blank">Cloud Files developer guide</a>. The relevant information is found in the “Pseudo hierarchical folders/directories” section.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rackspace.com/blog/nested-folders-in-rackspace-cloud-files/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Content Delivery Network via Rackspace Cloud Files: c3414940.r40.cf0.rackcdn.com

 Served from: www.rackspace.com @ 2013-05-19 10:30:40 by W3 Total Cache -->