Friday, December 18, 2015

Let's Keep it Simple

One of the key drivers in modernizing data centers is simplicity. Storage administration is a low value proposition (it really should just work), and the real worth to most organizations is higher up the stack. With that in mind let's take a look at volume creation on Pure Storage.

We start by clicking on the "Storage" tab, and then clicking the "+" sign next to "Volumes".

The final step is to name the volume and select the desired size.

That's all there is to it. There is no need to worry about performance policies, no need to assign a block size, no need to enable encryption, and no need to tune data services like compression, caching, or deduplication. Pure Storage takes care of all of that for you with always on inline and post-process data reduction, 256-bit AES encryption that cannot be turned off, and variable block handling down to 512 bytes. We don't think managing storage should require a PhD, and in the face of rising complexity Pure Storage is setting the bar on performance and manageability.

Saturday, May 4, 2013

Driving Efficiency in Hybrid Storage Models

With hybrid storage it is critical to maximize utilization of the high speed flash storage tier. One of the ways to drive efficiency to this layer is with a smaller block size. NetApp uses a very granular 4k block size which means we only promote data in 4k chunks, but what does this do for your data?

Let's take a 100GB database as an example. Most likely not all of that 100GB database is going to be active at any one time. Typically there will be certain rows or records that will be "hot" - like a patient record for someone who just called into your customer service department, or an employee list your accounting department accesses once every 2 weeks for running payroll. When that data gets accessed, it needs to be served up quickly, at flash speeds, and since we are leveraging a hybrid model we need to promote only the data that is necessary to complete the business function.

A NetApp FAS array will accelerate that data to flash on demand, at the time of access, and only promote the 4k blocks necessary to service the request along with some other blocks that make up what we call a "readset". A readset is something NetApp uses to pre-fetch data that is also requested when the blocks we just picked up are promoted to flash. We have some interesting patents on this technology, see here, and they are much more effective than a standard read-ahead request which will simply pull surrounding blocks based on the locality of data.

By using such a granular block size we don't promote data that doesn't need to be there, and by that action, we don't force data that needs to be in cache out. If your block size is larger, say 64k, it doesn't seem that impactful since that is a small measurement of storage, but it is in fact 16 times larger than NetApp FAS, and that can lead to requiring vast quantities of flash in your performance tier.

Along with fast, intelligent, granular data promotion there is another key piece of technology NetApp employs that drives tremendous efficiency to the flash tier. This technology is primary storage deduplication. Sure, it's great for saving space on disks, but disks are abundant and cheap, and where you need to save space in a hybrid array is in flash.

Since we are dedup aware throughout the stack the deduplicated data blocks on disk remain deduplicated in flash. So maybe that customer service agent handling that important call is also running on a virtual desktop. Let's say you have a 100 seat call center, with each desktop image at 20GB, that means you would need 2TB of flash to handle a fully staffed shift at SSD levels of performance. NetApp on the other hand will dedup those down to the single unique image, and only promote the blocks that are now shared by those 100 systems. Accelerating the same workload with 99% less cache is one of the ways NetApp drives efficiency in hybrid storage systems. The video below diagrams the differing cache sizes, and how our dedup aware architecture is able to drive performance enhancements along with space savings on disk.

Sunday, February 24, 2013

Driving Efficiency in Hybrid Storage Models

There is no doubt about it, flash technology has completely changed the storage landscape over the past few years, and quite notably for the better. Although crystal balls are cloudy it looks disk based storage still will serve a purpose in the datacenter going forward. NetApp's Larry Freeman has his own thoughts on the future of disks here, but with the density and economics of flash today, and the need to drive efficiencies in cost throughout the datacenter, hybrid storage arrays make a lot of sense for the vast majority of workloads.

Although the concept of hybrid arrays are simple, the technical details are not. In the most uncomplicated terms hybrid arrays use large capacity hard drives to hold inactive data that needs to be accessible, and performance for actively accessed data is handled by high speed flash. It is important to pay attention to the term "actively accessed" since a lot of our competitors don't do real-time data promotion to flash. Even technologies they claim are real-time may require several subsequent reads of that same data in order to promote it to the fast access tier. For post-process or pre-staging data to flash there needs to be scheduled jobs that run based on data access patterns. When we start talking about staging and de-staging data from flash to HDD it is critical to do it efficiently. If you don't have the ability to take those data blocks in flash and lay them down rapidly to disk all you have done is moved when your IO bottleneck occurs. The challenge most customers have is when to defer that data movement. ETL processes, batch jobs, data backups, and report generation are tasks that run when user load can be minimized. Moving large amounts of data from flash to disk is non-trivial, and often when storage systems are the most busy is after hours making it very difficult to find a good window for extra load.

One of the ways NetApp drives efficiency to disk is by coalescing random IO operations and making them sequential on disk. We have been doing this for decades, and quite simply our algorithms for data placement, block optimization, and maintaining locality of reference for data over time is the best in the industry. 20 years of engineering gives us a lot of experience in this arena, and our competitors -- both old and new -- have been feverishly trying to duplicate our model for intelligent data handling. This quick video below shows (at a very high level) how we create "write chains" in order to achieve SSD like write speeds to disk.

These read and write chains happen on a per-disk basis, and since we pool our disks together in large groups, we can drive tremendous amounts of IO to spinning media. Imagine the process above across 50 disks. Where we are generating ~50 back-end IOPS at RAID-6 levels of data protection, the vast majority of our competitors will need around 4,500 to do the same (15 IOPS per drive * 6 for the RAID-6 write penalty). That is a massive difference, and one that will require over purchasing disks in order to meet data movement windows. Due to increased external pressures from cloud based service providers overbuying infrastructure is not something internal IT departments can afford.

Ray Lucchesi at Silverton Consulting has a great post here where he charts some SPC-1 results for hard drive based arrays. One of the interesting things the article discusses is how sophistication matters in storage arrays. The results on the very high performing workloads (greater than 250,000 IOPS) showed the need for at least 1,000 drives in order to hit those impressive numbers with traditional disk arrays. The NetApp submission that used our hybrid approach of virtual storage tiering, and a slew of other disk optimization technologies including the write coalescing goodness above, achieved a number of 250,039 IOPS with only 432 drives.

I don't have all the nice data Ray used to generate the graph, but I did eyeball the NetApp submission for our 6 node cluster and added it to the chart. It is very striking where our system appears on the list. We are the only hybrid array vendor to do over 250,000 IOPS with less than 1000 drives, and we actually did it with 62% fewer drives than our nearest competitor; that's efficiency!