Patent ID: 9645920
Date: 2017-05-09
CPC Classifications: G06F

Claim:
1. A system comprising: a partitioning module configured to partition each of a plurality of solid-state disks into a plurality of blocks, wherein each of the plurality of blocks has a predetermined size; a writing module configured to write data to one or more of the plurality of solid-state disks in a sequence starting from a first block of a first solid-state disk of the plurality of solid-state disks to a first block of a last solid-state disk of the plurality of solid-state disks, and subsequently starting from a second block of the first solid-state disk to a second block of the last solid-state disk, wherein in each of the plurality of solid-state disks, the second block is subsequent to the first block, and wherein prior to storing the data in a memory external to the plurality of solid-state disks, the writing module is configured to write the data and a copy of the data in two consecutive blocks in the sequence; a selection module configured to (i) evict clean data used at less than a predetermined frequency from the plurality of solid-state disks, and (ii) move (a) clean data used at greater than the predetermined frequency and (b) dirty data to first available free blocks within the plurality of solid-state disks using a reverse metadata lookup table by writing the moved data in the first available free blocks sequentially within each of the plurality of solid-state disks and striped across the plurality of solid-state disks, wherein the reverse metadata lookup table maps blocks to metadata entries stored in a cache metadata lookup table indicating state of data in the blocks, and wherein clean data is data of which a copy is stored in the plurality of solid-state disks and in the memory external to the plurality of solid-state disks, and wherein dirty data is data of which a copy is stored in the plurality of solid-state disks but not in the memory external to the plurality of solid-state disks; and an erasing module configured to erase blocks freed up by the moved data and release the erased blocks for reuse.