The Scourge of the Zero – Why ‘nothing’ may be ruining the efficiency of your storage array
Posted by
Lee Johns on Thu, May 24, 2012 @ 09:10 AM
You heard it right. Nothing may be ruining the efficiency of your storage array. So what is the problem?
I am of course referring to the fact that many applications write zeros that might consume space on your array. This is not a new problem. Thinly provisioned storage arrays have been struggling with this for years and a variety of solutions have emerged. What is interesting is the evolution of the ability to solve the problem.
Before we talk more specifics lets paint an analogy. If there is a disease running rampant amongst the human population there are essentially four ways to deal with it.
- Quarantine (The ultimate in avoidance)
- Treat the Symptoms
- Cure the disease
- Immunize against the disease
Of course generally all four courses of action will come into play until the disease can be ultimately eradicated.
So what does this have to do with writing zeros and reclaiming space? Well if zeros are a disease we certainly have a variety of approaches to deal with them and most fall into the category of treating the symptom.
Many arrays today will provide capabilities to look for zeros written to disk and then remove them. Hitachi has zero page reclaim, EMC VMAX can spawn a backend disk director (DA) task to remove Zeros (in sizes as small as 768K) and 3PAR uses a proprietary ASIC to offload the processor to search and destroy zeros. Each of these platforms claims to be able to do this without placing significant overhead on the array but many arrays ask that this task be performed when the system is less active because of the performance penalty.
Some arrays even use this methodology to reclaim space on deletion. Some applications write blocks of zeros over deleted space and then the array can seek out and remove the zeros. Clearly this results in a write penalty though.
The Starboard AC72 enables space reclamation on deletion for any initiator that sends data discard commands like SCSI “unmap”. No need to write unnecessary zeros. This certainly helps with efficiency on deletion but what about dealing with zeros being written to the system by applications. What other options do we have?
Quarantining Zeros would not work. You cannot shut down your storage arrays because applications are writing zeros. A cure would be hard since there are so many places that the zeros are originating and all of those would have to be solved. That leaves us with immunization. Is there anything we can do to stop the zeros being written to the disks?
Yes there is. The Starboard Storage AC72 features a technology called Zero Mapping. In effect we never write multiple zeros to disk so we do not have to spend time and effort trying to delete them. It effectively immunizes the system against the “zero disease”.
How do we do it? We leverage the Starboard Storage MAST architecture and in particular our SSD mirrored write back cache. The writes coming into the system are first written to the write back cache. They wait here until the system can do a lazy write to disk and are then removed from the write back cache and a simple pointer is created rather than write then to disk. Because we have a staging area for writes that is always present we can strip out zeros before they reach the disk. When returning information back to the application we can still return the zeros because we maintain knowledge of where they were. Simple. But them the best ideas usually are.