US2014195496A1PendingUtilityA1

Use of predefined block pointers to reduce duplicate storage of certain data in a storage subsystem of a storage server

Assignee: NETAPP INCPriority: Feb 26, 2009Filed: Jan 22, 2014Published: Jul 10, 2014
Est. expiryFeb 26, 2029(~2.6 yrs left)· nominal 20-yr term from priority
G06F 3/0679G06F 12/0871G06F 2212/222G06F 11/1453G06F 3/0641G06F 3/0619G06F 2206/1014G06F 16/1824G06F 16/1748G06F 16/24G06F 3/067G06F 3/0608G06F 17/30156G06F 17/30386
56
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

A method and system for eliminating the redundant allocation and deallocation of special data on disk, wherein the redundant allocation and deallocation of special data on disk is eliminated by providing an innovate technique for specially allocating special data of a storage system. Specially allocated data is data that is pre-allocated on disk and stored in memory of the storage system. “Special data” may include any pre-decided data, one or more portions of data that exceed a pre-defined sharing threshold, and/or one or more portions of data that have been identified by a user as special. For example, in some embodiments, a zero-filled data block is specially allocated by a storage system. As another example, in some embodiments, a data block whose contents correspond to a particular type document header is specially allocated.

Claims

exact text as granted — not AI-modified
1 - 17 . (canceled) 
     
     
         18 . A method in a computing system for specially allocating data within the computing system, the method comprising:
 receiving, by an allocation component executing on a processor of the computing system, a request from a client to write a set of data blocks in a non-volatile mass storage facility of the computing system, the set of data blocks including a data block that includes data previously designated as special data, wherein the special data is pre-allocated in the non-volatile mass storage facility;   for each data block in the set of data blocks, comparing, by the allocation component executing on the processor of the computing system, the data block to the special data,   when the data block is determined to match the special data, assigning a special block pointer to the data block, the special block pointer pointing to a block address in the non-volatile mass storage facility, the special block pointer indicating that the corresponding data block was pre-allocated in both the non-volatile mass storage facility and a volatile memory of the computing system; and   preventing the data block from being written to the non-volatile mass storage facility as a result of the received request.   
     
     
         19 . The method of  claim 18 , further comprising:
 in response to a request to read a data block having a block pointer from the non-volatile mass storage facility, determining whether the block pointer matches the special block pointer; and   when the block pointer matches the special block pointer, reading the contents of the pre-allocated data block from the volatile memory of the storage system without issuing a request to read the contents of the pre-allocated data block from the non-volatile mass storage facility.   
     
     
         20 . The method of  claim 18 , further comprising:
 when the data is determined not to match the special data, storing the data block in the non-volatile mass storage facility of the computing system.   
     
     
         21 . The method of  claim 18 , wherein the special data is a header file. 
     
     
         22 . The method of  claim 18 , wherein the special data is a zero-filled block of data. 
     
     
         23 . The method of  claim 22 , wherein the received request is associated with the client creating a virtual disk image file of a virtual machine. 
     
     
         24 . The method of  claim 18 , wherein comparing the data to the special data includes computing a hash of the data and comparing the hash to a hash of the special data. 
     
     
         25 . The method of  claim 18 , wherein preventing the data block from being written to the non-volatile mass storage facility includes removing the data block from a buffer cache of the computing system, wherein the buffer cache is used by the computing system to store data blocks that are to be written to the non-volatile mass storage facility during a consistency point. 
     
     
         26 . The method of  claim 25 , wherein the method is performed prior to the consistency point. 
     
     
         27 . The method of  claim 25 , wherein the method is performed during the consistency point and prior to completion of the consistency point. 
     
     
         28 . The method of  claim 18 , wherein the special data has been designated as special by virtue of having satisfied a special block sharing criterion. 
     
     
         29 . A storage system comprising:
 a processor;   a network communication interface to provide the storage system with data communication with at least one client over a network;   a storage interface to provide the storage system with data communication with one or more mass storage devices, wherein the one or more mass storage devices includes a pre-allocated data block of special data; and   a memory including contents of the pre-allocated data block and special allocation code that, when executed by the processor, causes the storage system to execute a special allocation process in response to a request received from the at least one client to read a portion of data from the one or more mass storage devices, the portion of data having a block pointer identifying a location of the one or more mass storage devices on which the portion of data is stored;
 comparing the block pointer to the special block pointer to determine whether the portion of data matches the contents of the pre-allocated data block; and 
 when the block pointer matches the special block pointer, reading the contents of the pre-allocated data block from the memory of the storage system without issuing a request to read the contents of the pre-allocated data block from the one or more mass storage devices. 
   
     
     
         30 . The storage system of  claim 29 , wherein the special allocations process further includes:
 in response to a request received from the at least one client to write data to the one or more mass storage devices, the data including at least one portion of data that matches the contents of the pre-allocated data block, for each portion of data, comparing the portion of data to the contents of the pre-allocated data block;   when the portion of data is determined to match the contents of the pre-allocated data block, assigning a special block pointer to the portion of data, the special block pointer pointing to a block address in a non-volatile mass storage device; and   when the portion of data is determined not to match the contents of the pre-allocated data block, issuing a request to allocate storage in the one or more mass storage devices to which the portion of data is to be written.   
     
     
         31 . The storage system of  claim 30 , wherein the storage system further includes a buffer cache to store data that is to be written to the one or more mass storage devices during a consistency point event, and wherein, when the portion of data is determined to match the contents of the pre-allocated data block, the portion of data is removed from the buffer cache prior to being written to the one or more mass storage devices. 
     
     
         32 . The storage system of  claim 31 , wherein the process is performed prior to the consistency point event. 
     
     
         33 . The storage system of  claim 31 , wherein the process is performed during the consistency point event and prior to completion of the consistency point. 
     
     
         34 . The storage system of  claim 30 , wherein the storage system further comprises a deduplication component, and wherein the process substantially reduces redundant allocation and deallocation of the pre-allocated data block in the one or more mass storage device of the storage system. 
     
     
         35 . A non-transitory computer-readable storage medium for specially allocating data within a computing system, the storage medium comprising:
 instructions for receiving a request from a client to write a set of data blocks in a non-volatile mass storage facility of the computing system, the set of data blocks including a data block that includes data previously designated as special data, wherein the special data is pre-allocated in the non-volatile mass storage facility;   instruction for comparing the data block to the special data for each data block in the set of data blocks;   instruction for, when the data block is determined to match the special data, assigning a special block pointer to the data block, the special block pointer pointing to a block address in the non-volatile mass storage facility, the special block pointer indicating that the corresponding data block was pre-allocated in both the non-volatile mass storage facility and a volatile memory of the computing system;   instruction for preventing the data block from being written to the non-volatile mass storage facility as a result of the received request.   
     
     
         36 . The storage medium of  claim 35 , further comprising:
 instructions for, in response to a request to read a data block having a block pointer from the non-volatile mass storage facility, determining whether the block pointer matches the special block pointer; and   instructions for, when the block pointer matches the special block pointer, reading the contents of the pre-allocated data block from the volatile memory of the storage system without issuing a request to read the contents of the pre-allocated data block from the non-volatile mass storage facility.   
     
     
         37 . The storage medium of  claim 35 , further comprising:
 instructions for, when the data is determined not to match the special data, storing the data block in the non-volatile mass storage facility of the computing system.

Join the waitlist — get patent alerts

Track US2014195496A1 — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.