{'fraction_non_alphanumeric': 0.015360983102918587, 'fraction_numerical': 0.0, 'mean_word_length': 4.406639004149378, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Codes for RAID solutions based upon SSDs

One of the prominent properties of flash memories is their asymmetry between writing and erasing. When pages, which are the smallest write unit, are updated, they are written in a new copy rather than in place. As a result, every page can have more than one copy in the memory, its current version as well as some of its old invalid copies. Each invalid copy can be cleaned only when the block in which it resides is erased (blocks are the smallest erase unit and are typically in the order of hundreds of pages). This write property introduces redundancy in the memory, given by the invalid copies of the pages, and as a result can also affect the memory lifetime. In this paper we show how this inherent redundancy of invalid pages can be taken advantage of for the purpose of improving RAID solutions which are based upon Solid State Drives (SSDs). Our main contribution in the paper is a construction which shows how to improve the repair bandwidth of codes which are implemented on SSDs. We first show that with a single parity it is possible to transmit on the average roughly half of the data for rebuilding a single drive failure. We then show how these ideas can be extended for Zigzag codes with two parities and again improve their repair bandwidth.