Abstract:
In an embodiment, a method provides first and second storage pools having a plurality of corresponding storage blocks to a storage solution. The method monitors each storage block of the first plurality for an indication of failure by either (a) simultaneously writing a same data to a storage block of the first plurality and a corresponding storage block of the second plurality and, if writing the same data to the corresponding storage block of the second plurality completes before writing the same data to the storage block of the first plurality, indicating the first plurality of storage to be failed or (b) employing an internal procedure of the storage solution. The method, upon determining the indication, replaces the storage block with an unused storage block from a plurality of backup storage blocks or declaring the entire storage solution at a lower performance level.

Description:
BACKGROUND 
       [0001]    Processing Big Data can use a divide and conquer approach. A system can processor can gather Big Data from various sources (e.g., the Internet) and store the data in local memory, local drives, or a local direct access storage device. A system can divide Big Data and multiple processor or devices work on a portion of the Big Data. If using a divide and conquer approach, it is ideal for the data to be closest so the processor. 
       SUMMARY 
       [0002]    In an embodiment, a method of storing data includes providing a first pool of storage having a plurality of storage blocks to a storage solution and providing a second pool of storage having a plurality of storage blocks to the storage solution. Each of the second plurality of storage blocks can correspond to one or more of the first plurality of storage blocks. Each storage block can be a device or a field replaceable unit (FRU). The method can further include monitoring each of the first plurality of storage blocks for an indication of failure by either (a) simultaneously writing a same data to a particular storage block of the first plurality and a corresponding particular storage block of the second plurality and, if writing the same data to the corresponding particular storage block of the second plurality completes before writing the same data to the particular storage block of the first plurality, indicating the first pool of storage to be failed or (b) employing an internal procedure of the storage solution. The method can further include, upon determining an indication of failure of a particular storage block, replacing the particular storage block with an unused storage block from a plurality of backup storage blocks or declaring the entire storage solution at a lower performance level. 
         [0003]    In another embodiment, the first plurality of storage blocks includes storage devices with a faster potential top speed relative to the second plurality of storage devices with a slower potential top speed. In another embodiment, the first plurality of storage block includes storage devices with a smaller capacity than the second plurality of storage devices with a larger capacity. The devices can be a circuit board or a solid state drive (SSD) or hard disk drive (HDD) having rotating media. Silicon chips can be placed on a circuit board, which is called a field replaceable unit (FRU) or a storage device. Hybrid drives have a flash storage pool including multiple circuit boards (FRUs or devices) and spinning media storage pool having multiple magnetic media platters (FRUs or devices). In another embodiment, the first plurality of storage blocks includes solid state drives and the second plurality of storage blocks include magnetic hard disk drives. 
         [0004]    In another embodiment, the method includes cancelling a write command of the same data to the particular storage block upon completion of writing the same data to either the particular storage block of the first plurality or the particular storage block of the second plurality. 
         [0005]    In another embodiment, the internal process compares a recorded write time for a particular write to an expected average or minimum write time. 
         [0006]    In another embodiment, data stored on the first plurality of storage blocks is a snapshot backup copy. Data stored on the first plurality of storage blocks can also represent a stream of big data gathered from a plurality of sources. 
         [0007]    In another embodiment, the method can include, upon writing the data to the particular storage block of the first plurality or the corresponding particular storage device of the second plurality, copying the data to at least one additional storage area network (SAN). 
         [0008]    In another embodiment, a system for storing data in a storage solution having multiple storage pools can include a first pool of storage having a plurality of storage blocks and a second pool of storage having a plurality of storage blocks to the storage solution. Each of the second plurality of storage blocks can correspond to one or more of the first plurality of storage blocks. Each storage block can be a device or a field replaceable unit (FRU). The system can further include a failure notification module configured to monitor each of the first plurality of storage blocks for an indication of failure by either (a) simultaneously writing a same data to a particular storage block of the first plurality and a corresponding particular storage block of the second plurality and, if writing the same data to the corresponding particular storage block of the second plurality completes before writing the same data to the particular storage block of the first plurality, indicating the first pool of storage to be failed or (b) employing an internal procedure of the storage solution. The system can further include a device replacement module configured to, upon determining an indication of failure of a particular storage block, replace the particular storage block with an unused storage block from a plurality of backup storage blocks or declaring the entire storage solution at a lower performance level. 
         [0009]    In another embodiment, a non-transitory computer-readable medium can be configured to store instructions for storing data in a storage solution comprising of multiple storage pools. The instructions, when loaded and executed by a processor, can cause the processor to provide a first pool of storage having a plurality of storage blocks to a storage solution and provide a second pool of storage having a plurality of storage blocks to the storage solution. Each of the second plurality of storage blocks can correspond to one or more of the first plurality of storage blocks. Each storage block can be a device or a field replaceable unit (FRU). The instructions can further cause the processor to monitor each of the first plurality of storage blocks for an indication of failure by at least one of (a) simultaneously writing a same data to a particular storage block of the first plurality and a corresponding particular storage block of the second plurality and, if writing the same data to the corresponding particular storage block of the second plurality completes before writing the same data to the particular storage block of the first plurality, indicating the first pool of storage to be failed or (b) employing an internal procedure of the storage solution. The instructions can further cause the processor to, upon determining an indication of failure of a particular storage block, replace the particular storage block with an unused storage block from a plurality of backup storage blocks or declaring the entire storage solution at a lower performance level. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0010]    The foregoing will be apparent from the following more particular description of example embodiments of the invention, as illustrated in the accompanying drawings in which like reference characters refer to the same parts throughout the different views. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating embodiments of the present invention. 
           [0011]      FIG. 1  is a block diagram illustrating an example embodiment of the present invention. 
           [0012]      FIG. 2  is a block diagram illustrating an example embodiment of the present invention receiving a write request. 
           [0013]      FIG. 3  is a block diagram illustrating an example embodiment of the present invention receiving a next write request. 
           [0014]      FIG. 4  is a flow diagram illustrating an example embodiment of a process employing the present invention. 
           [0015]      FIG. 5  illustrates a computer network or similar digital processing environment in which embodiments of the present invention may be implemented. 
           [0016]      FIG. 6  is a diagram of an example internal structure of a computer (e.g., client processor/device or server computers) in the computer system of  FIG. 5 . 
       
    
    
     DETAILED DESCRIPTION 
       [0017]    A description of example embodiments of the invention follows. 
         [0018]    Systems need to process Big Data, Fast Data, and Little Data. Fast Data is data about conditions that are changing rapidly (e.g., a high data velocity). An example of Fast Data is data collected from cars on the road in the moments before a car crash. Little Data is data that does not necessarily change fast, but is applied to a portion of the Big Data and Fast Data. An example of Little Data can be the rules of road in a location where/near a car crash occurred. 
         [0019]    When processing Big Data, there typically does not use a Storage Area Network (SAN). In addition to retrieving data from one source, the system can gather data from multiple sources and federate the data. The system federates the data by correlating the data to a common variable. For example, in a Big Data application that is analyzing data for insider trading, the system may gather data from stock markets (Big Data and Fast Data), social media (Big Data and Fast Data), and individual trades (Little Data). 
         [0020]    After collecting the data, the data needs to be saved and protected, for example, to analyze later during a litigation or other analysis. To do so, the system takes a snapshot and transfers the snapshot to the SAN. Then, the system moves the snapshot to a remote SAN for disaster recovery for further redundancy. Each device can create a snapshot for its own computer memory. The device then creates new snapshots capturing state changes to its local SSD. Then, the device copies the changes to the SAN, in effect creating an incremental backup on the SAN. 
         [0021]    To collect data in this context, fast storage media, such as solid state drives (SSDs) improve performance due to their increased speeds over hard disk drives (HDDs) that use rotating media. Writing to a SSD is different from writing to a rotating HDD. Writing to a SSD first erases blocks as the SSD and then writes new data to free blocks. Each write is written to a pool of freed blocks. Before writing, the SSD therefore locates a free pool of blocks. The speed of the SSD finding a free pool is proportional to the speed of the SSD executing the write request. 
         [0022]    An SSD drive typically includes extra cells greater than its total capacity to allow finding a free pool quicker. For example, a SSD drive may have a capacity of 1 GB, but has 2 GB worth of cells. Other capacities and members of cells can be employed, however the SSD is simply configured to allow only 1 GB of the cells to be active at any time. The excess/GB of cells having a total of 2 GB of cells allows for the SSD to find free pools easier, however. In addition, as the SSD gets older, cells of the SSD wear and become unusable. As the cells are retired, an SSD drive with a greater buffer of cells can continue to operate, however starts to slow as it becomes harder to find free pools of cells. 
         [0023]    SSD drives come in three grades: (1) multi-level cell (MLC), (2) eMulti-level cell (eMLC), and (3) single-level cell (SLC). MLCs are generally the cheapest and least reliable, SLCs are the most expensive and most reliable, and eMLCs are in between MLCs and SLCs in reliability and price. SLCs have more total cells than MLCs, leading to higher prices, but also higher reliability. MLCs, however, provide higher data density by providing storage of multiple bits per cell. MLCs are cheaper because they require fewer total cells, but are less reliable because the cells have a higher rate of failure. 
         [0024]    For mass storage solutions, such as storing snapshots of Big Data, an array of MLCs can be employed. Even though the MLCs are less reliable than eMLCs and SLCs, an embodiment of the present invention can be employed to replace MLCs approaching the end of their life. This is performed by monitoring the SSD write performance, and if it drops below the performance of a traditional HDD, replacing the SSD, while temporarily storing the snapshot on the HDD. 
         [0025]      FIG. 1  is a block diagram  100  illustrating an example embodiment of the present invention. Devices  106   a - c  store data to be backed up in a snapshot. Each device  106   a - c  includes one or more solid state drives (SSDs)  108   a - c , respectively, and a respective memory  110   a - c . Each device  106   a - c  is coupled to a server internal memory bus/network  104  and a storage area network (SAN)  102 , which can be either iSCSI or Fibre Channel. Each device  106   a - c  is configured to save a snapshot of its respective SSDs  108   a - c  to a respective local snapshot SSD  112   a - c  or local snapshot HDD  114   a - f  coupled to the device  106   a - c.    
         [0026]    Upon saving a snapshot locally at either the local snapshot SSD  112   a - c  or the local snapshot HDD  114   a - f , the device  106   a - c  copies the locally stored snapshot to a backup system  116  over the SAN  102 . Copying the snapshot to the backup system  116  allows the device  106   a - c  to store a second snapshot in its local drives  112   a - c  and  114   a - f . The backup system  116  includes a plurality of SSD flash drives  118  and a rotating disk farm  120 . Each device  106   a - c  writes its snapshot to one of the SSD flash drives  118 . 
         [0027]    However, an SSD flash drive begins to slow down as it approaches the end of its life. Therefore, if an SSD flash drive takes a long time to write a snapshot, it should be replaced with a newer flash drive. Therefore, the backup system  116  includes the rotating disk farm  120  to provide a HDD to receive snapshot writes in parallel with the SSD flash drive. If the HDD finishes its write before the SSD flash drive, this is an indication of SSD flash drive failure. The system allocates a new (or different) SSD flash drive, and copies the snapshot from the HDD to the new SSD. The failed flash drive is flagged for removal and subsequent write requests are not directed to it. If the SSD flash drive finishes its write before the HDD, then the backup system  116  can stop the write to the HDD, as it is unnecessary and can free the HDD for another write. 
         [0028]      FIG. 2  is a block diagram  200  illustrating an example embodiment of the present invention receiving a write request  202 . The write request  202  is directed simultaneously to a HDD  204  and SDD 1    206 . The system determines whether the HDD write completed first ( 210 ). If so, the system allocates writes to SSD 2    208  ( 212 ) and can optionally copy the contents of the HDD  204  to the SDD 2    208 . If not, the system waits to receive the next write ( 214 ). 
         [0029]      FIG. 3  is a block diagram  300  illustrating an example embodiment of the present invention receiving a next write request  302 . The write request  302  is directed towards HDD  304  and SDD 2    308 , as SDD 1    306  is determined to be failed or at its end of life. Therefore, no write is directed to the SDD 1    306 . The system determines whether the HDD write completed first ( 310 ). If so, the system allocates writes to SSD N  ( 312 ) and can optionally copy the contents of the HDD  304  to the SDD N . If not, the system waits to receive the next write ( 314 ). 
         [0030]      FIG. 4  is a flow diagram  400  illustrating an example embodiment of a process employing the present invention. The process begins by writing simultaneously to a HDD and a SSD ( 402 ). The process then determines which write finishes first, the write to the HDD or the write to the SSD ( 404 ). If the write to the SSD finishes first ( 404 ), the process optionally stops the write to the HDD ( 406 ), freeing up the HDD for another write. The process then ends ( 408 ). 
         [0031]    If the write to the HDD finishes first ( 404 ), then the process removes the SSD from service ( 410 ), either virtually by flagging the SSD or physically by removing or marking for removal the drive from the pool of SSD flash drives. The process then allocates a new SSD to store a snapshot ( 412 ). The process then copies the snapshot from the HDD to the newly allocated SSD ( 414 ), and then frees the HDD to the HDD pool. The process then ends ( 416 ). 
         [0032]      FIG. 5  illustrates a computer network or similar digital processing environment in which embodiments of the present invention may be implemented. 
         [0033]    Client computer(s)/devices  50  and server computer(s)  60  provide processing, storage, and input/output devices executing application programs and the like. The client computer(s)/devices  50  can also be linked through communications network  70  to other computing devices, including other client devices/processes  50  and server computer(s)  60 . The communications network  70  can be part of a remote access network, a global network (e.g., the Internet), a worldwide collection of computers, local area or wide area networks, and gateways that currently use respective protocols (TCP/IP, Bluetooth®, etc.) to communicate with one another. Other electronic device/computer network architectures are suitable. 
         [0034]      FIG. 6  is a diagram of an example internal structure of a computer (e.g., client processor/device  50  or server computers  60 ) in the computer system of  FIG. 5  Each computer  50 ,  60  contains a system bus  79 , where a bus is a set of hardware lines used for data transfer among the components of a computer or processing system. The system bus  79  is essentially a shared conduit that connects different elements of a computer system (e.g., processor, disk storage, memory, input/output ports, network ports, etc.) that enables the transfer of information between the elements. Attached to the system bus  79  is an I/O device interface  82  for connecting various input and output devices (e.g., keyboard, mouse, displays, printers, speakers, etc.) to the computer  50 ,  60 . A network interface  86  allows the computer to connect to various other devices attached to a network (e.g., network  70  of  FIG. 5 ). Memory  90  provides volatile storage for computer software instructions  92  and data  94  used to implement an embodiment of the present invention (e.g., selection module, presentation module and labeling module code detailed above). Disk storage  95  provides non-volatile storage for computer software instructions  92  and data  94  used to implement an embodiment of the present invention. A central processor unit  84  is also attached to the system bus  79  and provides for the execution of computer instructions. The disk storage  95  or memory  90  can provide storage for a database. Embodiments of a database can include a SQL database, text file, or other organized collection of data. 
         [0035]    In one embodiment, the processor routines  92  and data  94  are a computer program product (generally referenced  92 ), including a non-transitory computer-readable medium (e.g., a removable storage medium such as one or more DVD-ROM&#39;s, CD-ROM&#39;s, diskettes, tapes, etc.) that provides at least a portion of the software instructions for the invention system. The computer program product  92  can be installed by any suitable software installation procedure, as is well known in the art. In another embodiment, at least a portion of the software instructions may also be downloaded over a cable communication and/or wireless connection. 
         [0036]    While this invention has been particularly shown and described with references to example embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the scope of the invention encompassed by the appended claims.