WO2014201048A1 - Migration of encrypted data for data storage systems - Google Patents
Migration of encrypted data for data storage systems Download PDFInfo
- Publication number
- WO2014201048A1 WO2014201048A1 PCT/US2014/041786 US2014041786W WO2014201048A1 WO 2014201048 A1 WO2014201048 A1 WO 2014201048A1 US 2014041786 W US2014041786 W US 2014041786W WO 2014201048 A1 WO2014201048 A1 WO 2014201048A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- units
- memory
- unit
- compressed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
Definitions
- This disclosure relates to data storage systems for computer systems. More particularly, the disclosure relates to migration of encrypted data for storage systems.
- Fig. 1 illustrates a combination of a host system and a data storage system according to some embodiments of the invention.
- FIG. 2 illustrates compression and formatting utilized by a data storage system according to some embodiments of the invention.
- FIG. 3 illustrates compression and formatting data flow utilized by a data storage system according to some embodiments of the invention.
- FIG. 4 illustrates migration of compressed and encrypted data according to some embodiments of the invention.
- FIG. 5 is a flow diagram illustrating a process 500 of migrating encrypted data according to some embodiments of the invention.
- Data storage systems can utilize compression techniques in order to meet the demand for increased capacity, reliability, and performance.
- Compressing host system data before storing it in a data storage system typically causes compressed data to have smaller size than the original, non-compressed data provided by a host system. Accordingly, fixed sized host data units provided by the host system become variable sized data units after compression.
- Numerous challenges exist with storing, moving, and retrieving such variable sized data For example, storing variable sized data in a data storage system media may necessitate making considerable changes to the way the data storage system stores data and keeps track of the stored data.
- the host system usually expects fixed size data to be returned during data retrieval, considerable changes to data retrieval mechanisms may also be necessitated.
- a data storage system can encrypt and compress fixed sized data before storing it on a media and format obtained variable sized compressed data for storing on the media that typically has fixed size storage granularity, such as sectors for magnetic media and pages for non-volatile solid-state memory.
- One or more modules can compress incoming host data and create an output stream of fixed size "virtual" storage units (or storage units) containing one or more compressed host data units, error correction and detection code (EDC) information, and metadata for decoding the logical contents of the storage units.
- Virtual storage units serve as fixed sized containers for compressed host data.
- uncompressed, fixed sized host data units are grouped by adjacent logical addresses, stripped of EDC data, and encrypted and compressed into one or more variable sized compressed data units.
- uncompressed data of a compressed data unit is used to determine new EDC that is appended to the compressed data unit.
- the compression logic also creates compressed data unit metadata that may include host logical addresses and length of compressed data.
- Compressed payload can include the metadata, determined EDC, and compressed host data.
- the metadata may be uncompressed and unencrypted for subsequent repacking and migration.
- One or more compressed payloads can be appended to create a fixed size virtual storage unit.
- the virtual storage unit can also include metadata, which may be uncompressed and unencrypted, for decoding the logical contents of the virtual storage unit.
- the virtual storage unit metadata can include an offset of the first compressed mapping unit, a virtual data unit block address field, and a sequence number. Additional EDC data can be appended to the virtual storage unit.
- the virtual storage unit can be moved from a volatile memory buffer to the non-volatile media.
- one or more virtual storage units can be moved or migrated between different types of media in a data storage system.
- Migration of stored data can involve utilizing metadata to repack and/or reformat compressed (and optionally encrypted) data unit(s) for storage on a different media type.
- the metadata can be uncompressed and unencrypted so that migration is advantageously performed without decrypting or decompressing the data.
- Fig. 1 illustrates a combination 100 of a host system and a data storage system according to some embodiments of the invention.
- the data storage system 120 e.g., a hybrid hard drive
- Media 140 includes a non-volatile solid-state memory array 150.
- the solid-state memory array 150 may comprise flash integrated circuits, Chalcogenide RAM (C-RAM), Phase Change Memory (PC-RAM or PRAM), Programmable Metallization Cell RAM (PMC-RAM or PMCm), Ovonic Unified Memory (OUM), Resistance RAM (RRAM), NAND memory (e.g., single-level cell (SLC) memory, multi-level cell (MLC) memory, or any combination thereof), NOR memory, EEPROM, Ferroelectric Memory (FeRAM), Magnetoresistive RAM (MRAM), other discrete NVM (non-volatile memory) chips, or any combination thereof.
- Media 140 also includes magnetic storage 160, which comprises magnetic recording media 164. In one embodiment, magnetic storage 1 60 utilizes shingled magnetic recording. Storage media 140 can further comprise other types of storage. In some embodiments, the storage media 140 can comprise only one of solid-state memory array 1 50 or the magnetic storage 1 60.
- the controller 130 can be configured to receive data and/or storage access commands from a storage interface module 1 12 (e.g., a device driver) of a host system 1 1 0.
- Storage access commands communicated by the storage interface module 1 12 can include write data and read data commands issued by the host system 1 10.
- Read and write commands can specify a logical address (e.g., logical block addresses or LBAs) used to access the data storage system 120.
- the controller 130 can execute the received commands in the media 140.
- Data storage system 120 can store data communicated by the host system 1 10.
- the data storage system 120 can act as memory storage for the host system 1 10.
- the controller 130 can implement a logical interface.
- the logical interface can present to the host system 1 10 data storage system's memory as a set of logical addresses (e.g., contiguous address) where user data can be stored.
- the controller 130 can map logical addresses to various physical locations or addresses in the media 140.
- the controller 1 30 includes a buffer 132, which can comprise volatile memory, such as random access memory (RAM) (e.g., DRAM, SRAM, SDRAM, DDR, etc.).
- RAM random access memory
- the buffer 132 is external to the controller 130.
- the controller 1 30 also includes a compression, formatting, and data migration module 134 configured to compress, optionally encrypt, and format host data for storing in the media 140, repack and migrate compressed and encrypted data, and decompress, decrypt, and format stored data for providing to the host system 1 10.
- the compression, formatting, and data migration module 134 can utilize the buffer 132 for storing and retrieving data while performing compression, optional encryption, migration, repacking, and/or formatting tasks.
- the compression, formatting, and data migration module 134 is implemented in hardware, such as a system on-chip (SoC) hardware module. Hardware implementation can be realized using an application specific integrated circuit (ASIC), field-programmable gate array (FPGA), or a combination thereof.
- SoC system on-chip
- the compression, formatting, and data migration module 134 can be implemented in firmware or as a combination of hardware and firmware.
- the host system 1 10 stores in the data storage system 120 and the data storage system returns to the host system data formatted as one or more logical host data units.
- Logical host data units can span ranges of logical addresses, with each logical address corresponding to a physical location in the media 140.
- Host data units can be fixed sized data units of any suitable size, such as 512 bytes, 1024 bytes (1 KB), 2048 bytes (2 KB), 4096 bytes (4 KB), and the like. In one embodiment, 512 byte data units or sectors are utilized by the host system 1 1 0.
- the media 140 is divided into fixed sized physical media storage units (or physical storage units or memory data units or memory data unit containers) of a suitable size, such as 512 bytes, 1 024 bytes (1 KB), 2048 bytes (2 KB), 4096 bytes (4 KB), and the like.
- Physical media storage units can correspond to the smallest programmable and readable portion of memory and can span physical addresses of individual memory locations.
- different media types include media storage units of different sizes.
- the solid-state memory array 1 50 can be divided into dies, blocks, and pages, such as 2 KB pages, and the magnetic recording media 164 can be divided into tracks, clusters, and sectors, such as 512 byte sectors.
- a particular media type utilizes one or more media storage units of different sizes.
- the solid-state memory array 150 can utilize media storage units of various sizes due to a variable size of error detection and correction data (e.g., ECC).
- ECC error detection and correction data
- a physical page have fixed 2 KB size, but because ECC data varies in size depending on the desired error detection and correction strength, storage space for storing host data in a page is also variable (e.g., 2 KB - ECC data size).
- Fig. 2 illustrates compression and formatting 200 utilized by the data storage system 1 20 according to some embodiments of the invention.
- the host system 1 10 provides host data (or user data) for storing in the data storage system 120.
- the host system 1 10 can provide host data in form of fixed sized host data units, such as 512 byte logical sectors.
- the host system 1 10 can provide host data as part of one or more write data commands.
- the compression, formatting, and data migration module 134 compresses and formats host data units for storage in the media 140.
- host data units are processed by a mapping unit module 21 0.
- a mapping unit can be selected as an integer multiple of the host data unit size, such as NxSi or Si/N, where Si is the host data unit size (e.g., 512 bytes) and N is an integer.
- the size of the mapping unit can be selected so as to achieve an optimal or substantially optimal balance between reduction of storage space gained from compression and latency associated with accessing compressed and formatted data stored in the media.
- a mapping unit constructor 212 assembles one or more host data units into one or more mapping units. In some embodiments, the mapping unit constructor 212 assembles consecutive or sequential host data units into one or more mapping units.
- consecutive or sequential host data units are associated with sequential logical addresses.
- aligned host data units of the size equal to the integer multiple size of the host data unit size can be stored into a mapping unit. For example, suppose that the host system 1 10 sends write data commands with host data units corresponding to 512-byte logical sectors 0-7, 8-15, and 16-23.
- the mapping unit constructor 212 is configured to assemble aligned 4 KB of host data (or eight aligned 512-byte logical sectors) into a mapping unit, where "aligned" refers to alignments of the starting (and ending) logical addresses as well as the size.
- the mapping unit constructor 212 generates three mapping units containing host data units for logical sectors 0-7, 8- 15, and 1 6-23.
- the mapping unit constructor 212 generates two separate partial mapping units as discussed below: the first corresponding to logical sectors 1 -7 and the second corresponding to logical sector 8.
- the mapping unit constructor 212 assembles non-aligned host data units into mapping units.
- the mapping unit constructor 212 assembles non-consecutive or consecutive and non- consecutive host data units into mapping units.
- the mapping unit constructor 212 generates partial mapping units (or PMUs) that comprise less host data than the selected or target mapping unit size. For example, suppose that the host system sends write data commands with host data units corresponding to 512-byte logical sectors 0-10, and that the mapping unit constructor 212 is configured to assemble aligned 4 KB of host data (or eight aligned 51 2-byte logical sectors) into a mapping unit.
- the mapping unit constructor 21 2 generates a first full or complete mapping unit corresponding to host data units for logical sectors 0-7 and a second partial mapping unit corresponding to host data units for logical sectors 8-10. Partial mapping unit corresponding to data associated with logical sector 8-10 can be later integrated into a full mapping unit when the host system 1 10 writes data into logical sectors 1 1 -1 5.
- mapping units constructed by the mapping unit module 210 are compressed, and optionally encrypted, by the compression and encryption module 220.
- a data compression module 222 first compresses and then, optionally, encrypts the compressed data. Encryption is performed after compression as encrypted data is randomized and thus may not compress well. Encryption does not change the size of the data.
- lossless compression is used, such as Lempel- Ziv-Welch (LZW) compression.
- Compressed mapping unit(s) generated by the data compression module 222 can be referred to as compressed payload.
- partial mapping units are not compressed in order to make later integration into full mapping units more efficient.
- full mapping units are not compressed. For example, one uncompressed mapping unit can be stored as a virtual storage unit, as explained below.
- compressed (and optionally encrypted) mapping unit data has a size that is smaller (or equal) than that of an uncompressed mapping unit.
- compressed mapping units can have variable size.
- the media 140 can have fixed size storage granularity, such as fixed sized media storage units (or physical storage units or memory data units).
- the solid-state memory array 150 can comprise memory pages, with a page being the smallest programmable and/or retrievable memory unit.
- the magnetic recording media 164 can comprise sectors, with a sector being the smallest programmable and/or retrievable memory unit.
- Compressed mapping units are provided to the virtual storage unit module 230 that assembles one or more compressed mapping units (or, in some embodiments, uncompressed mapping units) into fixed sized storage units for storing in the media.
- a virtual storage unit constructor 232 is configured to assemble compressed mapping units into virtual storage units having a size that is aligned with the size of the media storage unit.
- the size of the virtual storage unit can be an integer multiple of the media storage unit, such as Nxs 2 or s 2 IN, where s 2 is the media storage unit size and N is an integer.
- the size of the virtual storage unit is the same as the size of the media storage unit, such as 4 KB.
- the size of the virtual storage unit is selected such that one or more compressed mapping units are assembled into a virtual storage unit.
- different sizes of media storage units can be utilized for different types of media or different sizes of media storage units can be utilized for a media type.
- the data storage system 120 includes solid-state memory 150 and magnetic storage 160, which can have different sizes of media storage units.
- solid-state memory 150 can include memory pages that are 8 KB in size, while the magnetic recording media 164 can include 4 KB sectors.
- the virtual storage unit constructor 232 can assemble two types of virtual storage units: 8 KB storage unit for being programmed in the solid- state memory 150 and 4 KB storage unit for being written in the magnetic recording media 164.
- solid-state memory 150 can include memory pages that are 8 KB in size, but variable size error detection and correction information can be generated and stored in the page. Thereby, variable size virtual storage units can be utilized for storing data in the solid-state memory 150.
- a virtual storage unit that includes one or more compressed (or uncompressed) data units is padded with filler data so that the size of the virtual storage unit is aligned with the size of a corresponding media storage unit (e.g., corresponding to the media where the virtual storage unit will be stored).
- a compressed mapping unit e.g., 3.5 KB and 4 KB virtual storage units are used.
- the virtual storage unit constructor 232 can assemble 3.5 KB compressed mapping unit along with 0.5 KB (or 51 2 bytes) of filler data into a virtual storage unit.
- the combined size of two compressed mapping units is 3.7 KB and 4 KB virtual storage units are used.
- the virtual storage unit constructor 232 can assemble the two compressed mapping units having combined size of 3.7 KB along with 0.3 KB of filler data into a virtual storage unit.
- Filler data can comprise one or more suitable values, such as all zero values.
- compressed data units are formatted for storage in the magnetic storage 160, and the magnetic storage provides support for only limited mapping between logical and physical addresses. For instance, suppose that the host system 1 10 "understands" or utilizes 1 GB of logical host data units, such as logical sectors, and the mapping supports indirection for each logical host data unit but no additional data units.
- mapping may be utilized by a traditional hard disk drive where, unlike shingled magnetic disk recording, there is a one-to-one correspondence between logical addresses and physical addresses where host data is stored.
- address indirection is not supported, only one compressed mapping unit is stored in a virtual storage unit or in a media storage unit.
- the compressed mapping unit is padded to fill the entire storage unit (e.g., storage unit 440 in Fig. 4).
- compressed mapping units can be split across multiple virtual storage units.
- Compressed mapping units can include compressed payload or uncompressed payload (e.g., partial mapping unit payload may not be compressed). For example, suppose that a first compressed mapping unit is sized 1 KB, a second compressed mapping unit is sized 3.5 KB, a third compressed mapping unit is sized 3 KB, and 4 KB virtual storage units are used.
- the virtual storage unit constructor 232 can assemble the first compressed mapping unit (sized 1 KB) and 3 KB of the second compressed mapping unit (or split compressed mapping unit) into a first virtual storage unit.
- the virtual storage unit constructor 232 can assemble the remaining 0.5 KB of the second compressed mapping unit (or remainder compressed mapping unit), third compressed mapping unit (sized 3 KB), and 0.5 KB of filler data into a second virtual storage unit.
- compressed mapping units are split across sequential virtual storage units. In other embodiments, compressed mapping units are split across nonsequential virtual storage units.
- multiple compressed mapping units assembled into a virtual storage unit include only sequential host data units. For example, a first compressed mapping unit that includes host data units corresponding to logical 512-byte sectors 0-7 and a second compressed mapping unit that includes host data units corresponding to logical sectors 8-15 are combined into a virtual storage unit.
- virtual storage units can include non-sequential host data units. For example, a first compressed mapping unit that includes host data units corresponding to logical sectors 0-7 and a second compressed mapping unit that includes host data units corresponding to logical sectors 32-39 are combined into a virtual storage unit.
- mapping unit module 210 the mapping unit module 210, compression and encryption module 220, and virtual storage unit module 230 operate on data stored in the buffer 132. That is, mapping units, compressed mapping units, and virtual storage units are created and manipulated in the buffer 132. Assembled virtual storage units can be stored in the non-volatile media 140.
- reading data comprises performing the inverse of the operations associated with writing data.
- the virtual storage unit deconstructor 234 identifies or locates in the media 140 (and/or in the buffer 132) one or more virtual storage units with the host data to be retrieved.
- the virtual storage unit deconstructor 234 can use mapping data for performing the identification.
- the virtual storage unit deconstructor 234 identifies one or more compressed mapping units from the retrieved one or more virtual storage units, the one or more compressed mapping units containing host data to be retrieved.
- Data decrypter and decompressor 224 decrypts (if the data is encrypted) and decompresses (if the data is compressed) the payloads of the one or more compressed mapping units to obtain one or more mapping units containing host data to be retrieved.
- Mapping unit deconstructor 214 unpacks host data to be retrieved from the one or more mapping units. Host data to be retrieved is returned to the host system 1 10.
- mapping unit module 210 compression and encryption module 220, and virtual storage unit module 230 are implemented in hardware, such as in in one or more a system on-chip (SoC) hardware modules.
- Hardware implementation can be realized using an application specific integrated circuit (ASIC), field-programmable gate array (FPGA), or a combination thereof.
- ASIC application specific integrated circuit
- FPGA field-programmable gate array
- modules 210, 220, and 230 can be implemented in firmware or as a combination of hardware and firmware.
- Fig. 3 illustrates compression and formatting data flow 300 utilized by a data storage system according to some embodiments of the invention.
- the data flow 300 can be implemented by the controller 130 and/or the compression, formatting, and data migration module 134.
- Host data 310 is received from the host system 1 10 as a set of host data units 312.
- a host data unit 312 is a logical sector, such as a 51 2-byte logical sector.
- a host data unit 312 includes host (or user) data and error correction and detection (EDC) data that enables error detection and/or reconstruction of the host data.
- EDC data can be parity data checksum, cyclic redundancy check (CRC) data, or a suitable error correction code.
- a 51 2-byte logical sector of host data includes 4 bytes of EDC data.
- host data 310 is assembled into one or more mapping units 320 as discussed above. This can be performed by the mapping unit module 210. As explained above, a mapping unit 320 can be selected as an integer multiple of the host data unit size. In some embodiments, a mapping unit 320 includes one or more host data units 324 (which collectively make up a mapping unit payload), mapping unit metadata 322 which identifies the host data units, and mapping unit EDC 326. Mapping unit metadata 322 can include the following information: payload type (e.g., compressed or uncompressed), count (or number) of host data units in the payload, logical addresses of one or more host data units in the payload, and payload length.
- payload type e.g., compressed or uncompressed
- count or number
- metadata 322 can include additional or alternative fields.
- the mapping unit module 210 assembles sequential host data units into a mapping unit, the logical address of the first host data unit in the payload and the host data unit size are sufficient to identify and locate all host data units in the payload. For example, if host data units corresponding to 512-byte logical sectors 0-7 are assembled into a 4 KB mapping unit, starting logical address associated with logical sector 0 and logical sector size (512 bytes) are sufficient to describe all logical sectors. The count of the host units in the payload in this case is set to 8. As another example, if host data units corresponding to 512-byte logical sectors 0-4 are assembled into a partial mapping unit, the count of the host units in the payload is set to 5.
- mapping unit EDC 326 is calculated for the entire payload of the mapping unit.
- the size of the mapping unit EDC 326 is smaller than the aggregate size of EDC data associated with the host data units 324 in the payload. For example, suppose that 512-byte logical sector of host data includes 4 bytes of EDC data and 8 logical sectors (or 4 KB) are assembled into a mapping unit 320.
- a 4-byte mapping unit EDC 326 can be generated, which results in a 28 byte savings as compared to the aggregate size of EDC data (32 bytes) for the host data units in the payload. In some embodiments, this saving of space allows for including metadata 322 into the mapping unit 320 without taking up any additional space.
- mapping unit EDC 326 is seeded by the starting logical address of the payload.
- mapping units 320 are compressed, and optionally encrypted, to produce one or more compressed mapping units 330 as discussed above. This can be performed by the compression and encryption module 220.
- a compressed mapping unit such as mapping units 331 , 337, or 338, includes compressed payload 334 (corresponding to the compressed mapping unit), compressed mapping unit metadata 332 which identifies host data that has been compressed, and mapping unit EDC 336, which can be the same as EDC 326.
- Mapping unit metadata 332 can include the following information: payload type (e.g., compressed or uncompressed), count (or number) of host data units in the compressed payload, logical addresses of one or more host data units in the compressed payload, and compressed payload length.
- metadata 332 can include additional or alternative fields. Because compression produces variable sized data, compressed payload length field can be different for two or more different compressed mapping units, such as compressed mapping units 331 , 337, and 338. In some embodiments, when sequential host data units are assembled into a mapping unit and into the compressed payload, the logical address of the first host data unit in the compressed payload and the host data unit size are sufficient to describe all host data in the compressed payload. In some embodiments, metadata 322 is reprocessed in order to generate metadata 332. For example, metadata 332 includes metadata 322 along with a field indicating length of the compressed data in the compressed mapping unit.
- the compressed payload 334 and the mapping unit EDC 336 are encrypted.
- the metadata 332 is not encrypted or compressed.
- the metadata 332 can describe the contents of compressed payload, including describing logical addresses associated with host data in the compressed payload. Because in some embodiments, the host system 1 10 provides the decryption and/or encryption key(s) to the data storage system 120, not encrypting the metadata 332 allows the data storage system to manipulate compressed (or uncompressed) encrypted payload for various operations, such as background or housekeeping tasks, without having to perform decryption (or decompression) first.
- the encryption key may be more efficient to manipulate encrypted payload without first decrypting (or decompressing) it.
- data may need to be moved between different media types, such as the non-volatile solid- state memory array 150 and the magnetic media 164.
- different media types can utilize media storage units of different sizes.
- the solid-state memory array 150 can be divided into dies, blocks, and pages, such as 2 KB pages, and the magnetic recording media 164 can be divided into tracks, clusters, and sectors, such as 51 2 byte sectors.
- data may need to be reformatted and/or repacked to be stored in media storage units of a different type (or types).
- the data storage system 120 can perform garbage collection without having to obtain the decryption key(s) from the host system 1 1 0 or decrypting stored data.
- Garbage collection can include omitting or removing from a virtual storage unit one or more mapping units having invalid data. For example, suppose that a virtual storage unit includes mapping units for host data units corresponding to 51 2-byte logical sectors 0-7. Suppose further that as a result of host system activity, host data stored in logical sector 3 is updated, thereby making data in the virtual storage unit corresponding to logical sector 3 invalid. Garbage collection operation can create a new virtual storage unit that includes mapping units corresponding to logical sectors 0-2 and 4-7.
- the data storage system 120 can repack compressed payload without the decryption key(s).
- Repacking can include defragmentation of compressed payload, such as assembling partial mapping units into full mapping units, format conversion, such as storing virtual storage unit payload in a virtual storage unit of a different size for storage on different type of media (or on same media), and the like.
- Defragmentation can include reordering the mapping units for host data units in a virtual storage unit. For example, suppose that a virtual storage unit includes mapping units for host data units corresponding to 512-byte logical sectors 0, 1 , 3, 2, and 4-7.
- Defragmentation operation can reorder the mappings units in the virtual sector so that the mapping units are arranged in the order corresponding to host data units for logical sectors 0-7.
- defragmentation can be performed in conjunction with garbage collection. For example, suppose that a virtual storage unit includes mapping units for host data units corresponding to 512- byte logical sectors 0, 1 , 2, 4, 3, and 5-7. Suppose further that as a result of host system activity, host data stored in logical sector 2 is updated, thereby making data in the virtual storage unit corresponding to logical sector 2 invalid. Performing garbage collection in conjunction with defragmentation can create a new virtual storage unit that includes mapping units corresponding to logical sectors 0, 1 , 3, 4, 5, 6, and 7 in that order.
- the metadata 332 is encrypted and/or compressed.
- the data storage system 120 may perform other housekeeping operations without decrypting the data, including wear leveling, data refresh, etc.
- partial, full, and/or multiple compressed/uncompressed mapping units are assembled into a virtual storage unit 340. This can be performed by the virtual storage unit module 230.
- virtual storage units can include one or more of the following: uncompressed mapping unit(s) (full and/or partial), parts (split/remainder parts) of one or more compressed mapping units split across several virtual storage units, compressed mapping unit(s), filler data, and so on.
- the virtual storage unit 340 comprises one or more full or partial compressed mapping units 344 (collectively making up compressed payload), optional filler data 346 so that the size of the virtual storage unit is aligned with the size of a corresponding media storage unit, virtual storage unit metadata 342, and virtual storage unit EDC 348 determined for the contents of the virtual storage unit.
- Virtual storage unit metadata 342 can include the following information: virtual storage unit logical address for identifying the physical location of the virtual storage unit in the media 140, offset within the virtual storage unit of metadata field of the first compressed mapping unit in the compressed payload, and a sequence number of the virtual storage unit (or another form of a timestamp).
- metadata 342 can include additional or alternative fields.
- Compressed mapping units 344 can include compressed and, optionally, encrypted data along with uncompressed and unencrypted metadata.
- returning stored data to the host system 1 10 comprises performing the inverse of the operations associated with writing data.
- the virtual storage unit module 230 identifies or locates in the media 140 (and/or in the buffer 132) one or more virtual storage units 340 with the host data to be retrieved.
- the virtual unit storage unit module 230 utilizes a mapping table (or another suitable data structure) that reflects associations between the logical addresses used by the host system 1 10 for addressing data stored in the data storage system 120 and virtual storage units storing data associated with the logical addresses.
- the virtual storage unit module 230 can also use virtual storage unit metadata 342 to identify and retrieve from the media (and/or from the buffer) virtual storage units with the host data to be retrieved.
- the virtual storage unit module 230 identifies one or more compressed mapping units from the retrieved one or more virtual storage units, the one or more compressed mapping units containing host data to be retrieved.
- a retrieved virtual storage unit can include one or more compressed mapping units that contain host data to be retrieved as well as one or more compressed mapping units that do not contain sought after host data. This classification can be performed using the metadata fields of the compressed mapping units. In such cases, one or more mapping units that do not contain host data to be retrieved are skipped, thereby improving efficiency of the data transfer operation. For example, suppose that the host system 1 10 requested host data corresponding to logical sector 3, but a retrieved mapping unit contains host data corresponding to logical sectors 0-7.
- the data storage system can return host data corresponding only to logical sector 3.
- a first retrieved mapping unit contains host data corresponding to logical sectors 0-7.
- a second mapping unit contains a "fresh" (or latest) copy of host data corresponding to logical sector 3.
- the data storage system can return host data contained in the first mapping unit for logical sectors 0-2 and 4-7 (thereby skipping host data for logical sector 3 contained in the first mapping unit) and return host data contained in the second mapping unit for logical sector 3.
- Data compression and encryption module 220 decrypts (if the data is encrypted) and decompresses (if the data is compressed) one or more compressed mapping units that contain host data to be retrieved.
- Mapping unit module 210 unpacks host data to be retrieved from the obtained one or more mapping units. Host data to be retrieved is returned to the host system 1 10.
- mapping unit metadata 322 is used to ensure that correct data is returned to the host system 1 10.
- a controller employing the packing schemes can service the mixed media storage components and handle migration of data from one media component to another or between different types of media storage unit of a particular media storage component, while fulfilling the requirements of a compression and encryption-based system.
- the virtual storage unit size (and format) can be adjusted depending on a particular media storage unit where the virtual storage unit will be stored.
- migration can be performed seamlessly, with repacking, if any, being handled automatically inline.
- the packing/unpacking processing is automated in hardware, further enhancing the performance of the overall system.
- Fig. 4 illustrates migration 400 of compressed and encrypted data according to some embodiments of the invention.
- the illustrated migration can be performed by the controller 130 and/or the compression, formatting, and data migration module 134.
- Block 410 depicts user data units received from the host system 1 10, which may be organized as logical host data units (e.g., addressed by LBAs).
- User data 41 0 is compressed and stored in a compressed mapping unit 420 which includes compressed user data and metadata that identifies user data that has been compressed. Metadata can include one or more of the following fields: length after compression, starting LBA, physical location information, sequence number, etc.
- compressed data is smaller in size than incoming user data.
- Compressed data is encrypted, and a CMU 430 with compressed and encrypted data is generated.
- the metadata is not compressed or encrypted.
- the CMU 430 can be stored in a virtual storage unit (not shown), and written to the media.
- user data may only be encrypted and not compressed.
- the encrypted CMU 430 (which may be stored in a virtual storage unit) is stored in magnetic media (such as magnetic media 1 64) which does not support mapping that allows for storage of multiple CMUs in media storage units (or physical storage units).
- magnetic media may, as a traditional hard disk drive, support one-to-one correspondence between logical addresses and physical addresses where user data is stored.
- CMU 430 with compressed and encrypted data is padded with filler data before being stored in a magnetic media physical storage unit 440 on the magnetic media.
- CMU 430 stored in the physical storage unit 440 is migrated (along with other stored CMUs) from the magnetic storage to solid-state memory array 150.
- such migration may be done to improve performance associated with accessing user data (e.g., data stored in the solid-state memory array may be accessed faster than data stored in the magnetic storage).
- This can be achieved without decrypting (and decompressing) user data by using CMU metadata, which is not encrypted (or compressed). Because the metadata identifies the bounds of a CMU (e.g., start and end) and the user data stored in the CMU, encrypted (and compressed) data can be repacked into physical storage units utilized by solid-state memory 150 without decryption (or decompression).
- solid-state memory 150 supports storage of virtual storage units that comprise multiple CMUs (such as VSU 340 illustrated in Fig. 3). Multiple CMUs stored in separate physical storage units in the magnetic media may be repacked into a single solid-state memory array physical storage unit, such as storage unit 460. In one embodiment, because a physical storage unit of the solid-state memory array may be larger in size than a physical storage unit of the magnetic storage, migration of data from the magnetic storage to the solid-state memory array involves formatting the data to a be stored in a physical storage unit of a different size. [0043] In one embodiment, physical storage unit 460 includes multiple CMUs 466 (CMUs 1 , 2, . . . , N) which contain compressed, and optionally, encrypted data.
- CMUs 466 CMUs 1 , 2, . . . , N
- Storage unit 460 may include a partial CMU 464 which is part of CMU that is split among two (or two or more) physical storage units. As is illustrated, physical storage unit 450 includes the other part of the partial CMU 464. In one embodiment, split CMUs are stored in sequential physical storage units, such as in storage units numbered M-1 and M. Storage unit 460 may also include field 462, which is an offset to the first full CMU (e.g., CMU 1 ) and allows the partial CMU 464 to be skipped.
- field 462 is an offset to the first full CMU (e.g., CMU 1 ) and allows the partial CMU 464 to be skipped.
- the storage unit 460 may not include any partial CMUs, and the offset field 462 may be set to a zero value or may be omitted altogether.
- Storage unit 460 may include a partial CMU 468 (CMU N+1 ) as the last CMU.
- Fig. 4 migration of compressed and encrypted data from magnetic media to solid-state media is illustrated in Fig. 4, migration of data from solid-state media to magnetic media is the reverse of the illustrated sequence. Compressed and encrypted data can be migrated to magnetic media without decryption or decompression. Depending on whether magnetic media where data is migrated supports only one or multiple CMUs per physical storage unit, encrypted (and compressed) CMUs are repacked and stored into physical storage units utilized by the magnetic media. Further, the migration sequence illustrated in Fig. 4 is applicable to migration of encrypted (and compressed) data between different types of physical storage units on a single media, such as solid-state memory that stores variable types and sizes of error correction data. Repacking and migration of encrypted (and compressed) data can thus be performed without needing or utilizing the encryption key (or encryption keys).
- Fig. 5 is a flow diagram illustrating a process 500 of migrating encrypted data according to some embodiments of the invention.
- the illustrated process can be executed by the controller 130 and/or the compression, formatting, and data migration module 134.
- the process 500 uses unencrypted metadata to determine format of encrypted data (which may also be compressed).
- the process 500 can use metadata to determine the boundaries (e.g., start and end) of various encrypted data units, such as mapping units and/or compressed mapping units.
- the process 500 repacks the encrypted data without decrypting it.
- the process 500 can perform this step because the format of the data has been determined in block 504. For example, the process 500 can repack encrypted data into different type of virtual storage units.
- the process 500 stores repacked encrypted data in the storage media.
- Disclosed approaches for compression, formatting, and migration of data for data storage systems can increase available capacity for storing user data, reliability, and performance of a data storage system.
- Disclosed approaches for repacking data can be applied in any situation where embedded metadata needs to be accessed, such as during data migration, and where the underlying data is encrypted.
- performance is increased because encrypted data is repacked without first performing decryption.
- data may also be compressed and repacking can be performed without performing decompression.
- mapping units can be used to perform compression, formatting, and data migration.
- Mapping units, compressed mapping units, and/or virtual storage units can include additional or alternative fields.
- the actual steps taken in the disclosed processes, such as the processes illustrated in Figs. 4 and 5, may differ from those shown in the figures. Additional system components can be utilized, and disclosed system components can be combined or omitted. Depending on the embodiment, certain of the steps described above may be removed, others may be added.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
Systems and methods for compression, formatting, and migration of data for data storage systems are disclosed. In some embodiments, data repacking can be used in any situation where embedded metadata needs to be accessed, such as during data migration, and where the underlying data is encrypted. In some embodiments, performance is increased because encrypted data is repacked without first performing decryption. In addition, data may also be compressed and repacking can be performed without performing decompression. Advantageously, there is no need to retrieve or wait for the availability of encryption key (or keys) or expand resources in decrypting (and decompressing) data before repacking it and encrypting repacked data. Available capacity for storing user data, reliability, and performance of the data storage system can be increased.
Description
MIGRATION OF ENCRYPTED DATA FOR DATA STORAGE SYSTEMS
BACKGROUND
Technical Field
[0001] This disclosure relates to data storage systems for computer systems. More particularly, the disclosure relates to migration of encrypted data for storage systems.
Description of the Related Art
[0002] Modern computer systems continually require increases in data storage system capacity, reliability, and performance. In 1981 , a typical hard disk drive used in a personal computer had capacity of about 10 megabytes (MB). Today, capacities of hard disk drives are measured in terabytes (TB). Shingled magnetic recording is utilized in order to increase capacity of magnetic storage. In addition, modern disk drives often include solid state memory to increase performance. It is desirable to provide mechanisms and architectures for increasing capacity, reliability, and performance of data storage systems.
BRIEF DESCRIPTION OF THE DRAWINGS
[0003] Systems and methods that embody the various features of the invention will now be described with reference to the following drawings, in which:
[0004] Fig. 1 illustrates a combination of a host system and a data storage system according to some embodiments of the invention.
[0005] Fig. 2 illustrates compression and formatting utilized by a data storage system according to some embodiments of the invention.
[0006] Fig. 3 illustrates compression and formatting data flow utilized by a data storage system according to some embodiments of the invention.
[0007] Fig. 4 illustrates migration of compressed and encrypted data according to some embodiments of the invention.
[0008] Fig. 5 is a flow diagram illustrating a process 500 of migrating encrypted data according to some embodiments of the invention.
DETAILED DESCRIPTION
[0009] While certain embodiments are described, these embodiments are presented by way of example only, and are not intended to limit the scope of protection. Indeed, the novel methods and systems described herein may be embodied in a variety of other forms. Furthermore, various omissions, substitutions, and changes in the form of the methods and systems described herein may be made without departing from the scope of protection.
Overview
[0010] Data storage systems can utilize compression techniques in order to meet the demand for increased capacity, reliability, and performance. Compressing host system data before storing it in a data storage system typically causes compressed data to have smaller size than the original, non-compressed data provided by a host system. Accordingly, fixed sized host data units provided by the host system become variable sized data units after compression. Numerous challenges exist with storing, moving, and retrieving such variable sized data. For example, storing variable sized data in a data storage system media may necessitate making considerable changes to the way the data storage system stores data and keeps track of the stored data. As another example, because the host system usually expects fixed size data to be returned during data retrieval, considerable changes to data retrieval mechanisms may also be necessitated.
[0011] In some embodiments, mechanisms for compression, formatting, and migration of host data (or user data) for storing in data storage systems are provided. A data storage system can encrypt and compress fixed sized data before storing it on a media and format obtained variable sized compressed data for storing on the media that typically has fixed size storage granularity, such as sectors for magnetic media and pages for non-volatile solid-state memory. One or more modules can compress incoming host data and create an output stream of fixed size "virtual" storage units (or storage units) containing one or more compressed host data units, error correction and detection code (EDC) information, and metadata for
decoding the logical contents of the storage units. Virtual storage units serve as fixed sized containers for compressed host data.
[0012] In some embodiments, during writing of data to a data storage system, uncompressed, fixed sized host data units are grouped by adjacent logical addresses, stripped of EDC data, and encrypted and compressed into one or more variable sized compressed data units. In order to maintain data protection and error detection and recovery, uncompressed data of a compressed data unit is used to determine new EDC that is appended to the compressed data unit. The compression logic also creates compressed data unit metadata that may include host logical addresses and length of compressed data. Compressed payload can include the metadata, determined EDC, and compressed host data. The metadata may be uncompressed and unencrypted for subsequent repacking and migration. One or more compressed payloads, which can include one or more full or partial payloads, can be appended to create a fixed size virtual storage unit. The virtual storage unit can also include metadata, which may be uncompressed and unencrypted, for decoding the logical contents of the virtual storage unit. For example, the virtual storage unit metadata can include an offset of the first compressed mapping unit, a virtual data unit block address field, and a sequence number. Additional EDC data can be appended to the virtual storage unit. The virtual storage unit can be moved from a volatile memory buffer to the non-volatile media.
[0013] In some embodiments, one or more virtual storage units can be moved or migrated between different types of media in a data storage system. Migration of stored data can involve utilizing metadata to repack and/or reformat compressed (and optionally encrypted) data unit(s) for storage on a different media type. The metadata can be uncompressed and unencrypted so that migration is advantageously performed without decrypting or decompressing the data.
System Overview
[0014] Fig. 1 illustrates a combination 100 of a host system and a data storage system according to some embodiments of the invention. As is shown, the data storage system 120 (e.g., a hybrid hard drive) includes a controller 130 and
storage media 140. Media 140 includes a non-volatile solid-state memory array 150. The solid-state memory array 150 may comprise flash integrated circuits, Chalcogenide RAM (C-RAM), Phase Change Memory (PC-RAM or PRAM), Programmable Metallization Cell RAM (PMC-RAM or PMCm), Ovonic Unified Memory (OUM), Resistance RAM (RRAM), NAND memory (e.g., single-level cell (SLC) memory, multi-level cell (MLC) memory, or any combination thereof), NOR memory, EEPROM, Ferroelectric Memory (FeRAM), Magnetoresistive RAM (MRAM), other discrete NVM (non-volatile memory) chips, or any combination thereof. Media 140 also includes magnetic storage 160, which comprises magnetic recording media 164. In one embodiment, magnetic storage 1 60 utilizes shingled magnetic recording. Storage media 140 can further comprise other types of storage. In some embodiments, the storage media 140 can comprise only one of solid-state memory array 1 50 or the magnetic storage 1 60.
[0015] The controller 130 can be configured to receive data and/or storage access commands from a storage interface module 1 12 (e.g., a device driver) of a host system 1 1 0. Storage access commands communicated by the storage interface module 1 12 can include write data and read data commands issued by the host system 1 10. Read and write commands can specify a logical address (e.g., logical block addresses or LBAs) used to access the data storage system 120. The controller 130 can execute the received commands in the media 140.
[0016] Data storage system 120 can store data communicated by the host system 1 10. In other words, the data storage system 120 can act as memory storage for the host system 1 10. To facilitate this function, the controller 130 can implement a logical interface. The logical interface can present to the host system 1 10 data storage system's memory as a set of logical addresses (e.g., contiguous address) where user data can be stored. Internally, the controller 130 can map logical addresses to various physical locations or addresses in the media 140. The controller 1 30 includes a buffer 132, which can comprise volatile memory, such as random access memory (RAM) (e.g., DRAM, SRAM, SDRAM, DDR, etc.). In one embodiment, the buffer 132 is external to the controller 130. The controller 1 30 also includes a compression, formatting, and data migration module 134 configured to compress, optionally encrypt, and format host data for storing in the media 140,
repack and migrate compressed and encrypted data, and decompress, decrypt, and format stored data for providing to the host system 1 10. The compression, formatting, and data migration module 134 can utilize the buffer 132 for storing and retrieving data while performing compression, optional encryption, migration, repacking, and/or formatting tasks. In one embodiment, the compression, formatting, and data migration module 134 is implemented in hardware, such as a system on-chip (SoC) hardware module. Hardware implementation can be realized using an application specific integrated circuit (ASIC), field-programmable gate array (FPGA), or a combination thereof. In another embodiment, the compression, formatting, and data migration module 134 can be implemented in firmware or as a combination of hardware and firmware.
[0017] In some embodiments, the host system 1 10 stores in the data storage system 120 and the data storage system returns to the host system data formatted as one or more logical host data units. Logical host data units can span ranges of logical addresses, with each logical address corresponding to a physical location in the media 140. Host data units can be fixed sized data units of any suitable size, such as 512 bytes, 1024 bytes (1 KB), 2048 bytes (2 KB), 4096 bytes (4 KB), and the like. In one embodiment, 512 byte data units or sectors are utilized by the host system 1 1 0. In some embodiments, the media 140 is divided into fixed sized physical media storage units (or physical storage units or memory data units or memory data unit containers) of a suitable size, such as 512 bytes, 1 024 bytes (1 KB), 2048 bytes (2 KB), 4096 bytes (4 KB), and the like. Physical media storage units can correspond to the smallest programmable and readable portion of memory and can span physical addresses of individual memory locations. In some embodiments, different media types include media storage units of different sizes. For example, the solid-state memory array 1 50 can be divided into dies, blocks, and pages, such as 2 KB pages, and the magnetic recording media 164 can be divided into tracks, clusters, and sectors, such as 512 byte sectors. In certain embodiments, a particular media type utilizes one or more media storage units of different sizes. For instance, the solid-state memory array 150 can utilize media storage units of various sizes due to a variable size of error detection and correction data (e.g., ECC). For example, a physical page have fixed 2 KB size, but because ECC data
varies in size depending on the desired error detection and correction strength, storage space for storing host data in a page is also variable (e.g., 2 KB - ECC data size).
Compression and Formatting
[0018] Fig. 2 illustrates compression and formatting 200 utilized by the data storage system 1 20 according to some embodiments of the invention. The host system 1 10 provides host data (or user data) for storing in the data storage system 120. The host system 1 10 can provide host data in form of fixed sized host data units, such as 512 byte logical sectors. The host system 1 10 can provide host data as part of one or more write data commands. On the data storage system 1 20 side, the compression, formatting, and data migration module 134 compresses and formats host data units for storage in the media 140.
[0019] In some embodiments, host data units are processed by a mapping unit module 21 0. A mapping unit can be selected as an integer multiple of the host data unit size, such as NxSi or Si/N, where Si is the host data unit size (e.g., 512 bytes) and N is an integer. The size of the mapping unit can be selected so as to achieve an optimal or substantially optimal balance between reduction of storage space gained from compression and latency associated with accessing compressed and formatted data stored in the media. In some embodiments, a mapping unit constructor 212 assembles one or more host data units into one or more mapping units. In some embodiments, the mapping unit constructor 212 assembles consecutive or sequential host data units into one or more mapping units. In one embodiment, consecutive or sequential host data units are associated with sequential logical addresses. In addition, aligned host data units of the size equal to the integer multiple size of the host data unit size can be stored into a mapping unit. For example, suppose that the host system 1 10 sends write data commands with host data units corresponding to 512-byte logical sectors 0-7, 8-15, and 16-23. Suppose that the mapping unit constructor 212 is configured to assemble aligned 4 KB of host data (or eight aligned 512-byte logical sectors) into a mapping unit, where "aligned" refers to alignments of the starting (and ending) logical addresses as well as the size. For the above example, the mapping unit constructor 212
generates three mapping units containing host data units for logical sectors 0-7, 8- 15, and 1 6-23. Continuing the previous example, suppose that the host system 1 1 0 sends write data commands with host data units corresponding to logical sectors 1 - 8. These host data units are associated with eight logical sectors and have 4 KB aggregate size. However, these host data units are not aligned with chunks of eight logical sectors (e.g., a media storage unit boundary line is crossed). That is, the starting logical sector of these host data units is 1 , not 0. Accordingly, the mapping unit constructor 212 generates two separate partial mapping units as discussed below: the first corresponding to logical sectors 1 -7 and the second corresponding to logical sector 8. In some embodiments, the mapping unit constructor 212 assembles non-aligned host data units into mapping units. In some embodiments, the mapping unit constructor 212 assembles non-consecutive or consecutive and non- consecutive host data units into mapping units.
[0020] In some embodiments, the mapping unit constructor 212 generates partial mapping units (or PMUs) that comprise less host data than the selected or target mapping unit size. For example, suppose that the host system sends write data commands with host data units corresponding to 512-byte logical sectors 0-10, and that the mapping unit constructor 212 is configured to assemble aligned 4 KB of host data (or eight aligned 51 2-byte logical sectors) into a mapping unit. The mapping unit constructor 21 2 generates a first full or complete mapping unit corresponding to host data units for logical sectors 0-7 and a second partial mapping unit corresponding to host data units for logical sectors 8-10. Partial mapping unit corresponding to data associated with logical sector 8-10 can be later integrated into a full mapping unit when the host system 1 10 writes data into logical sectors 1 1 -1 5.
[0021] In some embodiments, mapping units (full or partial) constructed by the mapping unit module 210 are compressed, and optionally encrypted, by the compression and encryption module 220. In some embodiments, a data compression module 222 first compresses and then, optionally, encrypts the compressed data. Encryption is performed after compression as encrypted data is randomized and thus may not compress well. Encryption does not change the size of the data. In some embodiments, lossless compression is used, such as Lempel- Ziv-Welch (LZW) compression. Compressed mapping unit(s) generated by the data
compression module 222 can be referred to as compressed payload. In some embodiments, partial mapping units are not compressed in order to make later integration into full mapping units more efficient. In some embodiments, full mapping units are not compressed. For example, one uncompressed mapping unit can be stored as a virtual storage unit, as explained below.
[0022] In some embodiments, compressed (and optionally encrypted) mapping unit data has a size that is smaller (or equal) than that of an uncompressed mapping unit. Accordingly, compressed mapping units can have variable size. However, as explained above, the media 140 can have fixed size storage granularity, such as fixed sized media storage units (or physical storage units or memory data units). For example, the solid-state memory array 150 can comprise memory pages, with a page being the smallest programmable and/or retrievable memory unit. As another example, the magnetic recording media 164 can comprise sectors, with a sector being the smallest programmable and/or retrievable memory unit. Compressed mapping units are provided to the virtual storage unit module 230 that assembles one or more compressed mapping units (or, in some embodiments, uncompressed mapping units) into fixed sized storage units for storing in the media.
[0023] In some embodiments, a virtual storage unit constructor 232 is configured to assemble compressed mapping units into virtual storage units having a size that is aligned with the size of the media storage unit. For example, the size of the virtual storage unit can be an integer multiple of the media storage unit, such as Nxs2 or s2IN, where s2 is the media storage unit size and N is an integer. In one embodiment, the size of the virtual storage unit is the same as the size of the media storage unit, such as 4 KB. In another embodiment, the size of the virtual storage unit is selected such that one or more compressed mapping units are assembled into a virtual storage unit. In some embodiments, different sizes of media storage units can be utilized for different types of media or different sizes of media storage units can be utilized for a media type. As is illustrated in Fig. 1 , the data storage system 120 includes solid-state memory 150 and magnetic storage 160, which can have different sizes of media storage units. For example, solid-state memory 150 can include memory pages that are 8 KB in size, while the magnetic recording media 164 can include 4 KB sectors. The virtual storage unit constructor 232 can assemble two
types of virtual storage units: 8 KB storage unit for being programmed in the solid- state memory 150 and 4 KB storage unit for being written in the magnetic recording media 164. As another example, solid-state memory 150 can include memory pages that are 8 KB in size, but variable size error detection and correction information can be generated and stored in the page. Thereby, variable size virtual storage units can be utilized for storing data in the solid-state memory 150.
[0024] In some embodiments, a virtual storage unit that includes one or more compressed (or uncompressed) data units is padded with filler data so that the size of the virtual storage unit is aligned with the size of a corresponding media storage unit (e.g., corresponding to the media where the virtual storage unit will be stored). For example, suppose that the size of a compressed mapping unit is 3.5 KB and 4 KB virtual storage units are used. The virtual storage unit constructor 232 can assemble 3.5 KB compressed mapping unit along with 0.5 KB (or 51 2 bytes) of filler data into a virtual storage unit. As another example, suppose that the combined size of two compressed mapping units is 3.7 KB and 4 KB virtual storage units are used. The virtual storage unit constructor 232 can assemble the two compressed mapping units having combined size of 3.7 KB along with 0.3 KB of filler data into a virtual storage unit. Filler data can comprise one or more suitable values, such as all zero values. As yet another example, suppose that compressed data units are formatted for storage in the magnetic storage 160, and the magnetic storage provides support for only limited mapping between logical and physical addresses. For instance, suppose that the host system 1 10 "understands" or utilizes 1 GB of logical host data units, such as logical sectors, and the mapping supports indirection for each logical host data unit but no additional data units. Such mapping may be utilized by a traditional hard disk drive where, unlike shingled magnetic disk recording, there is a one-to-one correspondence between logical addresses and physical addresses where host data is stored. In such data storage system, because address indirection is not supported, only one compressed mapping unit is stored in a virtual storage unit or in a media storage unit. The compressed mapping unit is padded to fill the entire storage unit (e.g., storage unit 440 in Fig. 4).
[0025] In some embodiments, compressed mapping units can be split across multiple virtual storage units. Compressed mapping units can include
compressed payload or uncompressed payload (e.g., partial mapping unit payload may not be compressed). For example, suppose that a first compressed mapping unit is sized 1 KB, a second compressed mapping unit is sized 3.5 KB, a third compressed mapping unit is sized 3 KB, and 4 KB virtual storage units are used. The virtual storage unit constructor 232 can assemble the first compressed mapping unit (sized 1 KB) and 3 KB of the second compressed mapping unit (or split compressed mapping unit) into a first virtual storage unit. Further, the virtual storage unit constructor 232 can assemble the remaining 0.5 KB of the second compressed mapping unit (or remainder compressed mapping unit), third compressed mapping unit (sized 3 KB), and 0.5 KB of filler data into a second virtual storage unit. In some embodiments, compressed mapping units are split across sequential virtual storage units. In other embodiments, compressed mapping units are split across nonsequential virtual storage units.
[0026] In some embodiments, multiple compressed mapping units assembled into a virtual storage unit include only sequential host data units. For example, a first compressed mapping unit that includes host data units corresponding to logical 512-byte sectors 0-7 and a second compressed mapping unit that includes host data units corresponding to logical sectors 8-15 are combined into a virtual storage unit. In some embodiments, virtual storage units can include non-sequential host data units. For example, a first compressed mapping unit that includes host data units corresponding to logical sectors 0-7 and a second compressed mapping unit that includes host data units corresponding to logical sectors 32-39 are combined into a virtual storage unit.
[0027] In some embodiments, the mapping unit module 210, compression and encryption module 220, and virtual storage unit module 230 operate on data stored in the buffer 132. That is, mapping units, compressed mapping units, and virtual storage units are created and manipulated in the buffer 132. Assembled virtual storage units can be stored in the non-volatile media 140.
[0028] In some embodiments, reading data comprises performing the inverse of the operations associated with writing data. In response to a read data command received from the host system, the command including logical addresses for host data to be retrieved, the virtual storage unit deconstructor 234 identifies or
locates in the media 140 (and/or in the buffer 132) one or more virtual storage units with the host data to be retrieved. The virtual storage unit deconstructor 234 can use mapping data for performing the identification. The virtual storage unit deconstructor 234 identifies one or more compressed mapping units from the retrieved one or more virtual storage units, the one or more compressed mapping units containing host data to be retrieved. Data decrypter and decompressor 224 decrypts (if the data is encrypted) and decompresses (if the data is compressed) the payloads of the one or more compressed mapping units to obtain one or more mapping units containing host data to be retrieved. Mapping unit deconstructor 214 unpacks host data to be retrieved from the one or more mapping units. Host data to be retrieved is returned to the host system 1 10.
[0029] In some embodiments, one or more of the mapping unit module 210, compression and encryption module 220, and virtual storage unit module 230 are implemented in hardware, such as in in one or more a system on-chip (SoC) hardware modules. Hardware implementation can be realized using an application specific integrated circuit (ASIC), field-programmable gate array (FPGA), or a combination thereof. In another embodiment, modules 210, 220, and 230 can be implemented in firmware or as a combination of hardware and firmware.
[0030] Fig. 3 illustrates compression and formatting data flow 300 utilized by a data storage system according to some embodiments of the invention. The data flow 300 can be implemented by the controller 130 and/or the compression, formatting, and data migration module 134. Host data 310 is received from the host system 1 10 as a set of host data units 312. In one embodiment, a host data unit 312 is a logical sector, such as a 51 2-byte logical sector. A host data unit 312 includes host (or user) data and error correction and detection (EDC) data that enables error detection and/or reconstruction of the host data. In one embodiment, EDC data can be parity data checksum, cyclic redundancy check (CRC) data, or a suitable error correction code. In one embodiment, a 51 2-byte logical sector of host data includes 4 bytes of EDC data.
[0031] In some embodiments, host data 310 is assembled into one or more mapping units 320 as discussed above. This can be performed by the mapping unit module 210. As explained above, a mapping unit 320 can be selected
as an integer multiple of the host data unit size. In some embodiments, a mapping unit 320 includes one or more host data units 324 (which collectively make up a mapping unit payload), mapping unit metadata 322 which identifies the host data units, and mapping unit EDC 326. Mapping unit metadata 322 can include the following information: payload type (e.g., compressed or uncompressed), count (or number) of host data units in the payload, logical addresses of one or more host data units in the payload, and payload length. In other embodiments, metadata 322 can include additional or alternative fields. In some embodiments, when the mapping unit module 210 assembles sequential host data units into a mapping unit, the logical address of the first host data unit in the payload and the host data unit size are sufficient to identify and locate all host data units in the payload. For example, if host data units corresponding to 512-byte logical sectors 0-7 are assembled into a 4 KB mapping unit, starting logical address associated with logical sector 0 and logical sector size (512 bytes) are sufficient to describe all logical sectors. The count of the host units in the payload in this case is set to 8. As another example, if host data units corresponding to 512-byte logical sectors 0-4 are assembled into a partial mapping unit, the count of the host units in the payload is set to 5.
[0032] In some embodiments, mapping unit EDC 326 is calculated for the entire payload of the mapping unit. The size of the mapping unit EDC 326 is smaller than the aggregate size of EDC data associated with the host data units 324 in the payload. For example, suppose that 512-byte logical sector of host data includes 4 bytes of EDC data and 8 logical sectors (or 4 KB) are assembled into a mapping unit 320. A 4-byte mapping unit EDC 326 can be generated, which results in a 28 byte savings as compared to the aggregate size of EDC data (32 bytes) for the host data units in the payload. In some embodiments, this saving of space allows for including metadata 322 into the mapping unit 320 without taking up any additional space. In some embodiments, mapping unit EDC 326 is seeded by the starting logical address of the payload.
[0033] In some embodiments, mapping units 320 are compressed, and optionally encrypted, to produce one or more compressed mapping units 330 as discussed above. This can be performed by the compression and encryption module 220. A compressed mapping unit, such as mapping units 331 , 337, or 338,
includes compressed payload 334 (corresponding to the compressed mapping unit), compressed mapping unit metadata 332 which identifies host data that has been compressed, and mapping unit EDC 336, which can be the same as EDC 326. Mapping unit metadata 332 can include the following information: payload type (e.g., compressed or uncompressed), count (or number) of host data units in the compressed payload, logical addresses of one or more host data units in the compressed payload, and compressed payload length. In other embodiments, metadata 332 can include additional or alternative fields. Because compression produces variable sized data, compressed payload length field can be different for two or more different compressed mapping units, such as compressed mapping units 331 , 337, and 338. In some embodiments, when sequential host data units are assembled into a mapping unit and into the compressed payload, the logical address of the first host data unit in the compressed payload and the host data unit size are sufficient to describe all host data in the compressed payload. In some embodiments, metadata 322 is reprocessed in order to generate metadata 332. For example, metadata 332 includes metadata 322 along with a field indicating length of the compressed data in the compressed mapping unit.
[0034] In some embodiments, when encryption is performed after compression, the compressed payload 334 and the mapping unit EDC 336 are encrypted. In certain embodiments, the metadata 332 is not encrypted or compressed. The metadata 332 can describe the contents of compressed payload, including describing logical addresses associated with host data in the compressed payload. Because in some embodiments, the host system 1 10 provides the decryption and/or encryption key(s) to the data storage system 120, not encrypting the metadata 332 allows the data storage system to manipulate compressed (or uncompressed) encrypted payload for various operations, such as background or housekeeping tasks, without having to perform decryption (or decompression) first. Even if the encryption key is available, it may be more efficient to manipulate encrypted payload without first decrypting (or decompressing) it. For example, data may need to be moved between different media types, such as the non-volatile solid- state memory array 150 and the magnetic media 164. As explained above, different media types can utilize media storage units of different sizes. For instance, the
solid-state memory array 150 can be divided into dies, blocks, and pages, such as 2 KB pages, and the magnetic recording media 164 can be divided into tracks, clusters, and sectors, such as 51 2 byte sectors. When compressed and encrypted data is moved between different media types, data may need to be reformatted and/or repacked to be stored in media storage units of a different type (or types).
[0035] As another example, the data storage system 120 can perform garbage collection without having to obtain the decryption key(s) from the host system 1 1 0 or decrypting stored data. Garbage collection can include omitting or removing from a virtual storage unit one or more mapping units having invalid data. For example, suppose that a virtual storage unit includes mapping units for host data units corresponding to 51 2-byte logical sectors 0-7. Suppose further that as a result of host system activity, host data stored in logical sector 3 is updated, thereby making data in the virtual storage unit corresponding to logical sector 3 invalid. Garbage collection operation can create a new virtual storage unit that includes mapping units corresponding to logical sectors 0-2 and 4-7. As another example, the data storage system 120 can repack compressed payload without the decryption key(s). Repacking can include defragmentation of compressed payload, such as assembling partial mapping units into full mapping units, format conversion, such as storing virtual storage unit payload in a virtual storage unit of a different size for storage on different type of media (or on same media), and the like. Defragmentation can include reordering the mapping units for host data units in a virtual storage unit. For example, suppose that a virtual storage unit includes mapping units for host data units corresponding to 512-byte logical sectors 0, 1 , 3, 2, and 4-7. Defragmentation operation can reorder the mappings units in the virtual sector so that the mapping units are arranged in the order corresponding to host data units for logical sectors 0-7. In some embodiments, defragmentation can be performed in conjunction with garbage collection. For example, suppose that a virtual storage unit includes mapping units for host data units corresponding to 512- byte logical sectors 0, 1 , 2, 4, 3, and 5-7. Suppose further that as a result of host system activity, host data stored in logical sector 2 is updated, thereby making data in the virtual storage unit corresponding to logical sector 2 invalid. Performing garbage collection in conjunction with defragmentation can create a new virtual
storage unit that includes mapping units corresponding to logical sectors 0, 1 , 3, 4, 5, 6, and 7 in that order. In some embodiments, the metadata 332 is encrypted and/or compressed. In addition to garbage collection, the data storage system 120 may perform other housekeeping operations without decrypting the data, including wear leveling, data refresh, etc.
[0036] In some embodiments, partial, full, and/or multiple compressed/uncompressed mapping units are assembled into a virtual storage unit 340. This can be performed by the virtual storage unit module 230. In some embodiments, virtual storage units can include one or more of the following: uncompressed mapping unit(s) (full and/or partial), parts (split/remainder parts) of one or more compressed mapping units split across several virtual storage units, compressed mapping unit(s), filler data, and so on. In the illustrated example, the virtual storage unit 340 comprises one or more full or partial compressed mapping units 344 (collectively making up compressed payload), optional filler data 346 so that the size of the virtual storage unit is aligned with the size of a corresponding media storage unit, virtual storage unit metadata 342, and virtual storage unit EDC 348 determined for the contents of the virtual storage unit. Virtual storage unit metadata 342 can include the following information: virtual storage unit logical address for identifying the physical location of the virtual storage unit in the media 140, offset within the virtual storage unit of metadata field of the first compressed mapping unit in the compressed payload, and a sequence number of the virtual storage unit (or another form of a timestamp). In other embodiments, metadata 342 can include additional or alternative fields. Compressed mapping units 344 can include compressed and, optionally, encrypted data along with uncompressed and unencrypted metadata.
[0037] In some embodiments, returning stored data to the host system 1 10 comprises performing the inverse of the operations associated with writing data. In response to a read data command received from the host system, the command including logical addresses for the host data to be retrieved, the virtual storage unit module 230 identifies or locates in the media 140 (and/or in the buffer 132) one or more virtual storage units 340 with the host data to be retrieved. In some embodiments, the virtual unit storage unit module 230 utilizes a mapping table (or
another suitable data structure) that reflects associations between the logical addresses used by the host system 1 10 for addressing data stored in the data storage system 120 and virtual storage units storing data associated with the logical addresses. The virtual storage unit module 230 can also use virtual storage unit metadata 342 to identify and retrieve from the media (and/or from the buffer) virtual storage units with the host data to be retrieved.
[0038] Using the metadata 332, the virtual storage unit module 230 identifies one or more compressed mapping units from the retrieved one or more virtual storage units, the one or more compressed mapping units containing host data to be retrieved. In some embodiments, a retrieved virtual storage unit can include one or more compressed mapping units that contain host data to be retrieved as well as one or more compressed mapping units that do not contain sought after host data. This classification can be performed using the metadata fields of the compressed mapping units. In such cases, one or more mapping units that do not contain host data to be retrieved are skipped, thereby improving efficiency of the data transfer operation. For example, suppose that the host system 1 10 requested host data corresponding to logical sector 3, but a retrieved mapping unit contains host data corresponding to logical sectors 0-7. The data storage system can return host data corresponding only to logical sector 3. As another example, suppose that the host system 1 1 0 requested host data corresponding to logical sectors 0-7, and a first retrieved mapping unit contains host data corresponding to logical sectors 0-7. Suppose further that a second mapping unit contains a "fresh" (or latest) copy of host data corresponding to logical sector 3. The data storage system can return host data contained in the first mapping unit for logical sectors 0-2 and 4-7 (thereby skipping host data for logical sector 3 contained in the first mapping unit) and return host data contained in the second mapping unit for logical sector 3. Data compression and encryption module 220 decrypts (if the data is encrypted) and decompresses (if the data is compressed) one or more compressed mapping units that contain host data to be retrieved. Mapping unit module 210 unpacks host data to be retrieved from the obtained one or more mapping units. Host data to be retrieved is returned to the host system 1 10. In some embodiments, mapping unit metadata 322 is used to ensure that correct data is returned to the host system 1 10.
[0039] The above described packing schemes used in one or more embodiments are useful in a mixed media environment where several types of media are present in the data storage system (e.g., a hybrid hard disk with solid state memory). As the media types have various physical sector/memory unit sizes, the packing schemes enable packing characteristics to be easily adjusted across the media sizes. Further, even in data storage systems having single media type, such as a solid-state memory array, the above described packing schemes are useful when the various types of media storage units (or physical storage units or memory data units) are utilized. Thus, a controller employing the packing schemes can service the mixed media storage components and handle migration of data from one media component to another or between different types of media storage unit of a particular media storage component, while fulfilling the requirements of a compression and encryption-based system. For example, the virtual storage unit size (and format) can be adjusted depending on a particular media storage unit where the virtual storage unit will be stored. In one embodiment, migration can be performed seamlessly, with repacking, if any, being handled automatically inline. Also, in one embodiment the packing/unpacking processing (including the necessary metadata handling, data mapping, compression, decompression, encryption, decryption) is automated in hardware, further enhancing the performance of the overall system.
Examples of Repacking and Migration
[0040] Fig. 4 illustrates migration 400 of compressed and encrypted data according to some embodiments of the invention. The illustrated migration can be performed by the controller 130 and/or the compression, formatting, and data migration module 134. Block 410 depicts user data units received from the host system 1 10, which may be organized as logical host data units (e.g., addressed by LBAs). User data 41 0 is compressed and stored in a compressed mapping unit 420 which includes compressed user data and metadata that identifies user data that has been compressed. Metadata can include one or more of the following fields: length after compression, starting LBA, physical location information, sequence number, etc. As is illustrated, compressed data is smaller in size than incoming user data.
Compressed data is encrypted, and a CMU 430 with compressed and encrypted data is generated. The metadata is not compressed or encrypted. The CMU 430 can be stored in a virtual storage unit (not shown), and written to the media. In some embodiments, user data may only be encrypted and not compressed.
[0041] In one embodiment, the encrypted CMU 430 (which may be stored in a virtual storage unit) is stored in magnetic media (such as magnetic media 1 64) which does not support mapping that allows for storage of multiple CMUs in media storage units (or physical storage units). As explained above, such magnetic media may, as a traditional hard disk drive, support one-to-one correspondence between logical addresses and physical addresses where user data is stored. As is illustrated, CMU 430 with compressed and encrypted data is padded with filler data before being stored in a magnetic media physical storage unit 440 on the magnetic media.
[0042] Suppose that CMU 430 stored in the physical storage unit 440 is migrated (along with other stored CMUs) from the magnetic storage to solid-state memory array 150. In one embodiment, such migration may be done to improve performance associated with accessing user data (e.g., data stored in the solid-state memory array may be accessed faster than data stored in the magnetic storage). This can be achieved without decrypting (and decompressing) user data by using CMU metadata, which is not encrypted (or compressed). Because the metadata identifies the bounds of a CMU (e.g., start and end) and the user data stored in the CMU, encrypted (and compressed) data can be repacked into physical storage units utilized by solid-state memory 150 without decryption (or decompression). In one embodiment, solid-state memory 150 supports storage of virtual storage units that comprise multiple CMUs (such as VSU 340 illustrated in Fig. 3). Multiple CMUs stored in separate physical storage units in the magnetic media may be repacked into a single solid-state memory array physical storage unit, such as storage unit 460. In one embodiment, because a physical storage unit of the solid-state memory array may be larger in size than a physical storage unit of the magnetic storage, migration of data from the magnetic storage to the solid-state memory array involves formatting the data to a be stored in a physical storage unit of a different size.
[0043] In one embodiment, physical storage unit 460 includes multiple CMUs 466 (CMUs 1 , 2, . . . , N) which contain compressed, and optionally, encrypted data. These CMUs are complete or full CMUs in the sense that they are not split up among different physical storage units. Storage unit 460 may include a partial CMU 464 which is part of CMU that is split among two (or two or more) physical storage units. As is illustrated, physical storage unit 450 includes the other part of the partial CMU 464. In one embodiment, split CMUs are stored in sequential physical storage units, such as in storage units numbered M-1 and M. Storage unit 460 may also include field 462, which is an offset to the first full CMU (e.g., CMU 1 ) and allows the partial CMU 464 to be skipped. In some embodiments, the storage unit 460 may not include any partial CMUs, and the offset field 462 may be set to a zero value or may be omitted altogether. Storage unit 460 may include a partial CMU 468 (CMU N+1 ) as the last CMU.
[0044] Although migration of compressed and encrypted data from magnetic media to solid-state media is illustrated in Fig. 4, migration of data from solid-state media to magnetic media is the reverse of the illustrated sequence. Compressed and encrypted data can be migrated to magnetic media without decryption or decompression. Depending on whether magnetic media where data is migrated supports only one or multiple CMUs per physical storage unit, encrypted (and compressed) CMUs are repacked and stored into physical storage units utilized by the magnetic media. Further, the migration sequence illustrated in Fig. 4 is applicable to migration of encrypted (and compressed) data between different types of physical storage units on a single media, such as solid-state memory that stores variable types and sizes of error correction data. Repacking and migration of encrypted (and compressed) data can thus be performed without needing or utilizing the encryption key (or encryption keys).
[0045] Fig. 5 is a flow diagram illustrating a process 500 of migrating encrypted data according to some embodiments of the invention. The illustrated process can be executed by the controller 130 and/or the compression, formatting, and data migration module 134. In block 502, the process 500 uses unencrypted metadata to determine format of encrypted data (which may also be compressed). The process 500 can use metadata to determine the boundaries (e.g., start and end)
of various encrypted data units, such as mapping units and/or compressed mapping units. In block 504, the process 500 repacks the encrypted data without decrypting it. The process 500 can perform this step because the format of the data has been determined in block 504. For example, the process 500 can repack encrypted data into different type of virtual storage units. In block 506, the process 500 stores repacked encrypted data in the storage media.
Conclusion
[0046] Disclosed approaches for compression, formatting, and migration of data for data storage systems can increase available capacity for storing user data, reliability, and performance of a data storage system. Disclosed approaches for repacking data can be applied in any situation where embedded metadata needs to be accessed, such as during data migration, and where the underlying data is encrypted. In some embodiments, performance is increased because encrypted data is repacked without first performing decryption. In addition, data may also be compressed and repacking can be performed without performing decompression. Advantageously, there is no need to retrieve or wait for the availability of encryption key (or keys) or expand resources in decrypting (and decompressing) data before repacking it and encrypting repacked data.
Other Variations
[0047] Those skilled in the art will appreciate that in some embodiments, additional or alternative modules can be used to perform compression, formatting, and data migration. Mapping units, compressed mapping units, and/or virtual storage units can include additional or alternative fields. The actual steps taken in the disclosed processes, such as the processes illustrated in Figs. 4 and 5, may differ from those shown in the figures. Additional system components can be utilized, and disclosed system components can be combined or omitted. Depending on the embodiment, certain of the steps described above may be removed, others may be added.
[0048] While certain embodiments have been described, these embodiments have been presented by way of example only, and are not intended to
limit the scope of the protection. Indeed, the novel methods and systems described herein may be embodied in a variety of other forms. Furthermore, various omissions, substitutions and changes in the form of the methods and systems described herein may be made without departing from the spirit of the protection. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the protection. For example, the systems and methods disclosed herein can be applied to hard disk drives, hybrid hard drives, and the like. In addition, other forms of storage (e.g., DRAM or SRAM, battery backed-up volatile DRAM or SRAM devices, EPROM, EEPROM memory, etc.) may additionally or alternatively be used. As another example, the various components illustrated in the figures may be implemented as software and/or firmware on a processor, ASIC/FPGA, or dedicated hardware. Also, the features and attributes of the specific embodiments disclosed above may be combined in different ways to form additional embodiments, all of which fall within the scope of the present disclosure. Although the present disclosure provides certain preferred embodiments and applications, other embodiments that are apparent to those of ordinary skill in the art, including embodiments which do not provide all of the features and advantages set forth herein, are also within the scope of this disclosure. Accordingly, the scope of the present disclosure is intended to be defined only by reference to the appended claims.
Claims
1 . A data storage system comprising:
non-volatile memory (NVM) configured to store data in a plurality of memory data units, a memory data unit corresponding to a unit of storage in the NVM, wherein at least some memory data units have a different format; and
a controller configured to:
retrieve from the NVM data stored in a first memory data unit, the first memory data unit further storing metadata associated with the data, wherein the data is encrypted and the metadata is not encrypted, and
using the metadata and without decrypting the data, store the data in a second memory data unit, the format of the second memory data unit being different than the format of the first memory data unit.
2. The data storage system of claim 1 , wherein the NVM comprises a non-volatile solid-state memory array that utilizes memory data units of a first format type and a magnetic storage that utilizes memory data units of a second format type different from the first format type.
3. The data storage system of claim 2, wherein a memory data unit of the first format type is configured to store a different maximum size of user data than a memory data unit of the second format type, and wherein user data comprises data received from a host system.
4. The data storage system of claim 1 , wherein the NVM comprises a non-volatile solid-state memory array that utilizes memory data units of a first format type and memory data units of a second format type different from the first format type.
5. The data storage system of claim 4, wherein a memory data unit of the first format type is configured to store a different maximum size of user data than a memory data unit of the second format type, and wherein user data comprises data received from a host system.
6. The data storage system of claim 1 , wherein the data stored in the first memory data unit comprises compressed and encrypted data, and wherein the
controller is further configured to store the compressed and encrypted data in the second memory data unit without decompressing the data.
7. The data storage system of claim 6, wherein the metadata is not compressed.
8. The data storage system of claim 1 , wherein the metadata indicates a plurality of logical addresses associated with the data stored in the first memory data unit.
9. The data storage system of claim 1 , wherein the controller is configured to store the data in the second memory data unit in response to performing one or more of garbage collection, wear leveling, and data refresh operations.
10. A method of migrating data in a data storage system comprising a nonvolatile memory (NVM) configured to store data in a plurality of memory data units, a memory data unit corresponding to a unit of storage in the NVM, wherein at least some memory data units have a different format, the method comprising:
retrieving from the NVM data stored in a first memory data unit, the first memory data unit further storing metadata associated with the data, wherein the data is encrypted and the metadata is not encrypted; and
using the metadata and without decrypting the data, storing the data in a second memory data unit, the format of the second memory data unit being different than the format of the first memory data unit,
wherein the method is performed under control of a controller.
1 1 . The method of claim 10, wherein the NVM comprises a non-volatile solid-state memory array that utilizes memory data units of a first format type and a magnetic storage that utilizes memory data units of a second format type different from the first format type.
12. The method of claim 1 1 , wherein a memory data unit of the first format type is configured to store a different maximum size of user data than a memory data unit of the second format type, and wherein user data comprises data received from a host system.
13. The method of claim 10, wherein the NVM comprises a non-volatile solid-state memory array that utilizes memory data units of a first format type and memory data units of a second format type different from the first format type.
14. The method of claim 13, wherein a memory data unit of the first format type is configured to store a different maximum size of user data than a memory data unit of the second format type, and wherein user data comprises data received from a host system.
15. The method of claim 10, further comprising storing compressed and encrypted data stored in the first memory data unit in the second memory data unit without decompressing the data.
16. The method of claim 15, wherein the metadata is not compressed.
17. The method of claim 10, wherein the metadata indicates a plurality of logical addresses associated with the data stored in the first memory data unit.
18. The method of claim 10, wherein storing the data in the second memory data unit is performed in response to executing one or more of garbage collection, wear leveling, and data refresh operations.
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201480032714.9A CN105308581A (en) | 2013-06-10 | 2014-06-10 | Migration of encrypted data for data storage systems |
| HK16108547.3A HK1220529A1 (en) | 2013-06-10 | 2014-06-10 | Migration of encrypted data for data storage systems |
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201361833381P | 2013-06-10 | 2013-06-10 | |
| US61/833,381 | 2013-06-10 | ||
| US14/010,350 US9274978B2 (en) | 2013-06-10 | 2013-08-26 | Migration of encrypted data for data storage systems |
| US14/010,350 | 2013-08-26 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2014201048A1 true WO2014201048A1 (en) | 2014-12-18 |
Family
ID=52006518
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/US2014/041786 Ceased WO2014201048A1 (en) | 2013-06-10 | 2014-06-10 | Migration of encrypted data for data storage systems |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US9274978B2 (en) |
| CN (1) | CN105308581A (en) |
| HK (1) | HK1220529A1 (en) |
| WO (1) | WO2014201048A1 (en) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2017127103A1 (en) * | 2016-01-22 | 2017-07-27 | Hewlett Packard Enterprise Development Lp | Managing data in a storage array |
Families Citing this family (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9448738B2 (en) | 2013-03-15 | 2016-09-20 | Western Digital Technologies, Inc. | Compression and formatting of data for data storage systems |
| US20160246715A1 (en) * | 2015-02-23 | 2016-08-25 | Advanced Micro Devices, Inc. | Memory module with volatile and non-volatile storage arrays |
| US10073647B2 (en) * | 2015-07-21 | 2018-09-11 | Seagate Technology Llc | Thinly provisioned disk drives with zone provisioning and compression in relation to zone granularity |
| KR102466412B1 (en) * | 2016-01-14 | 2022-11-15 | 삼성전자주식회사 | Storage device and operating method of storage device |
| US10516764B1 (en) * | 2016-12-16 | 2019-12-24 | Amazon Technologies, Inc. | Efficient modification of compressed data |
| WO2019013775A1 (en) | 2017-07-12 | 2019-01-17 | Hewlett-Packard Development Company, L.P. | Migration of memory devices |
| US11126362B2 (en) | 2018-03-14 | 2021-09-21 | International Business Machines Corporation | Migrating storage data |
| TWI730428B (en) * | 2019-09-27 | 2021-06-11 | 瑞昱半導體股份有限公司 | Payload mapper and payload mapping method |
| CN110929302B (en) * | 2019-10-31 | 2022-08-26 | 东南大学 | Data security encryption storage method and storage device |
| US11681635B2 (en) * | 2020-09-07 | 2023-06-20 | Mellanox Technologies, Ltd. | Secure flash controller |
| US12260007B2 (en) * | 2020-09-07 | 2025-03-25 | Mellanox Technologies, Ltd | Secure flash controller |
| US12309258B2 (en) * | 2021-06-21 | 2025-05-20 | VMware LLC | Encryption in a distributed storage system utilizing cluster-wide encryption keys |
| US12436680B2 (en) | 2022-09-22 | 2025-10-07 | SanDisk Technologies, Inc. | NVMe copy command acceleration |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20070061511A1 (en) * | 2005-09-15 | 2007-03-15 | Faber Robert W | Distributed and packed metadata structure for disk cache |
| EP1906311A2 (en) * | 2006-09-27 | 2008-04-02 | Samsung Electronics Co., Ltd. | Mapping apparatus and method for non-volatile memory supporting different cell types |
| US20090327759A1 (en) * | 2008-06-30 | 2009-12-31 | Robert Royer | Encrypting data on a non-volatile memory |
| US20100246246A1 (en) * | 2009-03-26 | 2010-09-30 | Ho-Jung Kim | Memory device, memory system having the same, and programming method of a memory cell |
| US20110016091A1 (en) * | 2008-06-24 | 2011-01-20 | Commvault Systems, Inc. | De-duplication systems and methods for application-specific data |
Family Cites Families (150)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5465186A (en) | 1994-01-26 | 1995-11-07 | International Business Machines Corporation | Shorted magnetoresistive head leads for electrical overstress and electrostatic discharge protection during manufacture of a magnetic storage system |
| US5892900A (en) * | 1996-08-30 | 1999-04-06 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
| US5861661A (en) | 1995-12-27 | 1999-01-19 | Industrial Technology Research Institute | Composite bump tape automated bonded structure |
| JP3883641B2 (en) | 1997-03-27 | 2007-02-21 | 株式会社半導体エネルギー研究所 | Contact structure and active matrix display device |
| JP3057037B2 (en) | 1997-09-26 | 2000-06-26 | インターナショナル・ビジネス・マシーンズ・コーポレイション | Method for performing ultrasonic bonding, method for deforming, maintaining and releasing suspension assembly |
| US6295185B1 (en) | 1998-04-07 | 2001-09-25 | Seagate Technology Llc | Disc drive suspension having a moving coil or moving magnet microactuator |
| TW366548B (en) | 1998-04-18 | 1999-08-11 | United Microelectronics Corp | Trench bump block and the application of the same |
| US6604158B1 (en) | 1999-03-11 | 2003-08-05 | Realtime Data, Llc | System and methods for accelerated data storage and retrieval |
| US6351352B1 (en) | 1999-06-01 | 2002-02-26 | Magnecomp Corp. | Separably bondable shunt for wireless suspensions |
| US6381099B1 (en) | 1999-06-11 | 2002-04-30 | Magnecomp Corporation | Wireless suspension with interrupted load beam |
| US20010047473A1 (en) | 2000-02-03 | 2001-11-29 | Realtime Data, Llc | Systems and methods for computer initialization |
| JP3872945B2 (en) | 2000-08-10 | 2007-01-24 | 株式会社日立グローバルストレージテクノロジーズ | Head support mechanism, head assembly, and information recording apparatus |
| US6703566B1 (en) | 2000-10-25 | 2004-03-09 | Sae Magnetics (H.K.), Ltd. | Bonding structure for a hard disk drive suspension using anisotropic conductive film |
| US6639757B2 (en) | 2001-01-10 | 2003-10-28 | Hutchinson Technology Inc. | Heat dissipation structures for integrated lead disk drive head suspensions |
| US7386046B2 (en) | 2001-02-13 | 2008-06-10 | Realtime Data Llc | Bandwidth sensitive data compression and decompression |
| US6757137B1 (en) | 2001-09-30 | 2004-06-29 | Magnecomp Corporation | Stiffness controlled disk drive suspension with limiter feature |
| US6928721B2 (en) | 2001-10-05 | 2005-08-16 | Headway Technologies, Inc. | Method of manufacturing a magnetic read/write head and slider assembly |
| US6656772B2 (en) | 2001-11-23 | 2003-12-02 | Industrial Technology Research Institute | Method for bonding inner leads to bond pads without bumps and structures formed |
| CN1290082C (en) | 2001-12-26 | 2006-12-13 | 新科实业有限公司 | System and method for three-part design of magnetic head assembly |
| US7218481B1 (en) | 2002-10-07 | 2007-05-15 | Hutchinson Technology Incorporated | Apparatus for insulating and electrically connecting piezoelectric motor in dual stage actuator suspension |
| CN100359567C (en) | 2002-11-19 | 2008-01-02 | 新科实业有限公司 | Method and apparatus for connecting a micro-actuator to a driver arm suspension |
| US7375874B1 (en) | 2003-03-22 | 2008-05-20 | Active Optical Mems Inc. | Light modulator with integrated drive and control circuitry |
| US7015885B2 (en) | 2003-03-22 | 2006-03-21 | Active Optical Networks, Inc. | MEMS devices monolithically integrated with drive and control circuitry |
| US6856556B1 (en) | 2003-04-03 | 2005-02-15 | Siliconsystems, Inc. | Storage subsystem with embedded circuit for protecting against anomalies in power signal from host |
| WO2005006331A1 (en) | 2003-07-14 | 2005-01-20 | Sae Magnetics (H.K.) Ltd. | System and method for improving the electrical connection of a hard drive relay flexible circuit assembly to an hga flexure cable |
| JP4031401B2 (en) | 2003-08-05 | 2008-01-09 | 日本発条株式会社 | Disk drive suspension |
| US6992862B2 (en) | 2003-08-28 | 2006-01-31 | Hitachi Global Storage Technologies Netherlands B.V. | Disk drive with controlled pitch static attitude of sliders on integrated lead suspensions by improved plastic deformation processing |
| US20060157869A1 (en) | 2003-11-19 | 2006-07-20 | Industrial Technology Research Institute | Semiconductor substrate with conductive bumps having a stress relief buffer layer formed of an electrically insulating organic material |
| CN100476954C (en) | 2003-11-27 | 2009-04-08 | 新科实业有限公司 | Thin film piezoelectric microactuator for head gimbal assembly |
| US20050195528A1 (en) | 2004-03-05 | 2005-09-08 | Bennin Jeffry S. | Coined ground features for integrated lead suspensions |
| US7322094B2 (en) | 2004-04-27 | 2008-01-29 | Sae Magnetics (Hk) | Method for manufacturing a head stack assembly |
| US20050243472A1 (en) | 2004-04-28 | 2005-11-03 | Sae Magnetics (H.K.) Ltd. | Head stack assembly and manufacturing thereof |
| JP2007537562A (en) | 2004-05-14 | 2007-12-20 | ハッチンソン テクノロジー インコーポレーティッド | Method for producing noble metal conductive lead for suspension assembly |
| JP2006049751A (en) | 2004-08-09 | 2006-02-16 | Hitachi Global Storage Technologies Netherlands Bv | Magnetic disk drive, wiring connection structure and terminal structure thereof |
| JP2006073053A (en) | 2004-08-31 | 2006-03-16 | Tdk Corp | Optical recording medium |
| US7298593B2 (en) | 2004-10-01 | 2007-11-20 | Sae Magnetics (H.K.) Ltd. | Micro-actuator including a leading beam pivot part, head gimbal assembly and disk drive unit with the same |
| US7515240B2 (en) | 2004-10-05 | 2009-04-07 | Au Optronics Corporation | Flat display panel and assembly process or driver components in flat display panel |
| US7657756B2 (en) * | 2004-10-08 | 2010-02-02 | International Business Machines Corporaiton | Secure memory caching structures for data, integrity and version values |
| US7277988B2 (en) | 2004-10-29 | 2007-10-02 | International Business Machines Corporation | System, method and storage medium for providing data caching and data compression in a memory subsystem |
| US20060098347A1 (en) | 2004-11-10 | 2006-05-11 | Sae Magnetics (H.K.) Ltd. | Micro-actuator, head gimbal assembly and disk drive unit with the same |
| US7502256B2 (en) | 2004-11-30 | 2009-03-10 | Siliconsystems, Inc. | Systems and methods for reducing unauthorized data recovery from solid-state storage devices |
| US20060146262A1 (en) | 2005-01-03 | 2006-07-06 | Chunghwa Picture Tubes., Ltd | Method and the plasma display panel with an improvement of overflow effect of anisotropic conductive adhesive film |
| KR100789545B1 (en) | 2005-03-07 | 2007-12-28 | 삼성전기주식회사 | Optical Modulator Module Package Using Flip Chip Mount Technology |
| JP4335886B2 (en) | 2006-04-20 | 2009-09-30 | 日本発條株式会社 | Disk drive suspension |
| US7653778B2 (en) | 2006-05-08 | 2010-01-26 | Siliconsystems, Inc. | Systems and methods for measuring the useful life of solid-state storage devices |
| US8108692B1 (en) | 2006-06-27 | 2012-01-31 | Siliconsystems, Inc. | Solid-state storage subsystem security solution |
| US7765373B1 (en) | 2006-06-27 | 2010-07-27 | Siliconsystems, Inc. | System for controlling use of a solid-state storage subsystem |
| US7447807B1 (en) | 2006-06-30 | 2008-11-04 | Siliconsystems, Inc. | Systems and methods for storing data in segments of a storage subsystem |
| US7509441B1 (en) | 2006-06-30 | 2009-03-24 | Siliconsystems, Inc. | Systems and methods for segmenting and protecting a storage subsystem |
| TWI346826B (en) | 2006-10-26 | 2011-08-11 | Taiwan Tft Lcd Ass | Bonding structure and method of fabricating the same |
| US8161227B1 (en) | 2006-10-30 | 2012-04-17 | Siliconsystems, Inc. | Storage subsystem capable of programming field-programmable devices of a target computer system |
| US8549236B2 (en) | 2006-12-15 | 2013-10-01 | Siliconsystems, Inc. | Storage subsystem with multiple non-volatile memory arrays to protect against data losses |
| US7596643B2 (en) | 2007-02-07 | 2009-09-29 | Siliconsystems, Inc. | Storage subsystem with configurable buffer |
| US7443321B1 (en) | 2007-02-13 | 2008-10-28 | Packeteer, Inc. | Compression of stream data using a hierarchically-indexed database |
| JP4308862B2 (en) | 2007-03-05 | 2009-08-05 | 日東電工株式会社 | Wiring circuit board and manufacturing method thereof |
| JP2008226385A (en) | 2007-03-14 | 2008-09-25 | Fujitsu Ltd | Long tail suspension, head stack assembly, storage device and flexible printed circuit board assembly |
| US7685338B2 (en) | 2007-05-24 | 2010-03-23 | Siliconsystems, Inc. | Solid state storage subsystem for embedded applications |
| US7685337B2 (en) | 2007-05-24 | 2010-03-23 | Siliconsystems, Inc. | Solid state storage subsystem for embedded applications |
| US7685374B2 (en) | 2007-07-26 | 2010-03-23 | Siliconsystems, Inc. | Multi-interface and multi-bus structured solid-state storage subsystem |
| US8095851B2 (en) | 2007-09-06 | 2012-01-10 | Siliconsystems, Inc. | Storage subsystem capable of adjusting ECC settings based on monitored conditions |
| US8015692B1 (en) | 2007-11-07 | 2011-09-13 | Western Digital (Fremont), Llc | Method for providing a perpendicular magnetic recording (PMR) head |
| JP2009129490A (en) | 2007-11-21 | 2009-06-11 | Nitto Denko Corp | Printed circuit board |
| US8300823B2 (en) | 2008-01-28 | 2012-10-30 | Netapp, Inc. | Encryption and compression of data for storage |
| US8078918B2 (en) | 2008-02-07 | 2011-12-13 | Siliconsystems, Inc. | Solid state storage subsystem that maintains and provides access to data reflective of a failure risk |
| US7962792B2 (en) | 2008-02-11 | 2011-06-14 | Siliconsystems, Inc. | Interface for enabling a host computer to retrieve device monitor data from a solid state storage subsystem |
| US8263872B2 (en) | 2008-02-21 | 2012-09-11 | Apple Inc. | Method and apparatus for attaching a flex circuit to a printed circuit board |
| CN101556560B (en) * | 2008-04-09 | 2011-05-04 | 群联电子股份有限公司 | Storage device, controller and data access method thereof |
| US7733712B1 (en) | 2008-05-20 | 2010-06-08 | Siliconsystems, Inc. | Storage subsystem with embedded circuit for protecting against anomalies in power signal from host |
| EP2242052A4 (en) | 2008-07-31 | 2012-07-25 | Panasonic Corp | OPTICAL INFORMATION RECORDING MEDIUM AND RECORDING / READING DEVICE |
| US8583835B1 (en) | 2008-08-06 | 2013-11-12 | Siliconsystems, Inc. | Command portal for executing non-standard storage subsystem commands |
| US8375151B1 (en) | 2009-02-12 | 2013-02-12 | Siliconsystems, Inc. | Command portal for securely communicating and executing non-standard storage subsystem commands |
| US8072709B2 (en) | 2008-11-07 | 2011-12-06 | Hitachi Global Storage Technologies, Netherlands B.V. | Flex cable for a hard disk drive having an interrogation trace |
| US9176859B2 (en) | 2009-01-07 | 2015-11-03 | Siliconsystems, Inc. | Systems and methods for improving the performance of non-volatile memory operations |
| JP2010164344A (en) | 2009-01-13 | 2010-07-29 | Nitto Denko Corp | Substance detecting sensor |
| US20100188778A1 (en) | 2009-01-29 | 2010-07-29 | Castagna Joseph T | Disk Drive Assembly Having Flexible Support for Flexible Printed Circuit Board |
| US8090899B1 (en) | 2009-03-04 | 2012-01-03 | Western Digital Technologies, Inc. | Solid state drive power safe wear-leveling |
| US10079048B2 (en) | 2009-03-24 | 2018-09-18 | Western Digital Technologies, Inc. | Adjusting access of non-volatile semiconductor memory based on access time |
| JP5396145B2 (en) | 2009-05-15 | 2014-01-22 | 日本発條株式会社 | Flexure for disk unit |
| US8370544B2 (en) | 2009-07-23 | 2013-02-05 | Stec, Inc. | Data storage system with compression/decompression |
| US8254172B1 (en) | 2009-09-30 | 2012-08-28 | Western Digital Technologies, Inc. | Wear leveling non-volatile semiconductor memory based on erase times and program times |
| US8243525B1 (en) | 2009-09-30 | 2012-08-14 | Western Digital Technologies, Inc. | Refreshing non-volatile semiconductor memory by reading without rewriting |
| US9753847B2 (en) | 2009-10-27 | 2017-09-05 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping |
| US8261012B2 (en) | 2009-10-30 | 2012-09-04 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory comprising power fail circuitry for flushing write data in response to a power fail signal |
| US8135903B1 (en) | 2009-10-30 | 2012-03-13 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory compressing data to improve performance |
| US8397107B1 (en) | 2009-12-11 | 2013-03-12 | Western Digital Technologies, Inc. | Data storage device employing data path protection using both LBA and PBA |
| US8277649B2 (en) | 2009-12-14 | 2012-10-02 | General Electric Company | Membranes and associated methods for purification of antibodies |
| US8443167B1 (en) | 2009-12-16 | 2013-05-14 | Western Digital Technologies, Inc. | Data storage device employing a run-length mapping table and a single address mapping table |
| US8316176B1 (en) | 2010-02-17 | 2012-11-20 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification |
| US8407449B1 (en) | 2010-02-26 | 2013-03-26 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table |
| US8725931B1 (en) | 2010-03-26 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for managing the execution of memory commands in a solid-state memory |
| US8713066B1 (en) | 2010-03-29 | 2014-04-29 | Western Digital Technologies, Inc. | Managing wear leveling and garbage collection operations in a solid-state memory using linked lists |
| KR101643273B1 (en) | 2010-04-09 | 2016-08-01 | 삼성전자주식회사 | Method of storing data in storage media, data storage device using the same, and system including the same |
| WO2011129818A1 (en) | 2010-04-13 | 2011-10-20 | Empire Technology Development Llc | Adaptive compression |
| US8782327B1 (en) | 2010-05-11 | 2014-07-15 | Western Digital Technologies, Inc. | System and method for managing execution of internal commands and host commands in a solid-state memory |
| US9026716B2 (en) | 2010-05-12 | 2015-05-05 | Western Digital Technologies, Inc. | System and method for managing garbage collection in solid-state memory |
| US8341339B1 (en) | 2010-06-14 | 2012-12-25 | Western Digital Technologies, Inc. | Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk |
| US8612669B1 (en) | 2010-06-28 | 2013-12-17 | Western Digital Technologies, Inc. | System and method for performing data retention in solid-state memory using copy commands and validity and usage data |
| US8339748B2 (en) | 2010-06-29 | 2012-12-25 | Western Digital Technologies, Inc. | Suspension assembly having a microactuator bonded to a flexure |
| US8447920B1 (en) | 2010-06-29 | 2013-05-21 | Western Digital Technologies, Inc. | System and method for managing data access in non-volatile memory |
| US8521972B1 (en) | 2010-06-30 | 2013-08-27 | Western Digital Technologies, Inc. | System and method for optimizing garbage collection in data storage |
| US20120005557A1 (en) | 2010-06-30 | 2012-01-05 | Eitan Mardiks | Virtual copy and virtual write of data in a storage device |
| US8639872B1 (en) | 2010-08-13 | 2014-01-28 | Western Digital Technologies, Inc. | Hybrid drive comprising write cache spanning non-volatile semiconductor memory and disk |
| US8775720B1 (en) | 2010-08-31 | 2014-07-08 | Western Digital Technologies, Inc. | Hybrid drive balancing execution times for non-volatile semiconductor memory and disk |
| US8638602B1 (en) | 2010-09-10 | 2014-01-28 | Western Digital Technologies, Inc. | Background selection of voltage reference values for performing memory read operations |
| US8769190B1 (en) | 2010-09-15 | 2014-07-01 | Western Digital Technologies, Inc. | System and method for reducing contentions in solid-state memory access |
| US8788779B1 (en) | 2010-09-17 | 2014-07-22 | Western Digital Technologies, Inc. | Non-volatile storage subsystem with energy-based performance throttling |
| JP2012063645A (en) | 2010-09-17 | 2012-03-29 | Nitto Denko Corp | Photosensitive resin composition and circuit board with metal support using the composition |
| US8612804B1 (en) | 2010-09-30 | 2013-12-17 | Western Digital Technologies, Inc. | System and method for improving wear-leveling performance in solid-state memory |
| US8320084B1 (en) | 2010-10-29 | 2012-11-27 | Western Digital Technologies, Inc. | Disk drive head gimbal assembly having a flexure tail with features to facilitate bonding |
| US8477459B1 (en) | 2010-10-29 | 2013-07-02 | Western Digital Technologies, Inc. | Disk drive head gimbal assembly having a flexure tail with dual conductive layers and features to facilitate bonding |
| US8295013B1 (en) | 2010-10-29 | 2012-10-23 | Western Digital Technologies, Inc. | Disk drive head stack assembly having a flexible printed circuit with heat transfer limiting features |
| US8467153B1 (en) | 2010-10-29 | 2013-06-18 | Western Digital Technologies, Inc. | Disk drive head gimbal assembly having a flexure tail with folded bond pads |
| US8295014B1 (en) | 2010-10-29 | 2012-10-23 | Western Digital Technologies, Inc. | Disk drive head gimbal assembly having a flexure tail with transverse flying leads |
| US8325446B1 (en) | 2010-10-29 | 2012-12-04 | Western Digital Technologies, Inc. | Disk drive head gimbal assembly having a flexure tail with features to facilitate bonding |
| US8601313B1 (en) | 2010-12-13 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for a data reliability scheme in a solid state memory |
| US8601311B2 (en) | 2010-12-14 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory |
| US8615681B2 (en) | 2010-12-14 | 2013-12-24 | Western Digital Technologies, Inc. | System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss |
| US8458435B1 (en) | 2010-12-20 | 2013-06-04 | Western Digital Technologies, Inc. | Sequential write thread detection |
| US8392635B2 (en) | 2010-12-22 | 2013-03-05 | Western Digital Technologies, Inc. | Selectively enabling a host transfer interrupt |
| US8683113B2 (en) | 2011-02-04 | 2014-03-25 | Western Digital Technologies, Inc. | Concurrently searching multiple devices of a non-volatile semiconductor memory |
| US8700950B1 (en) | 2011-02-11 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for data error recovery in a solid state subsystem |
| US8700951B1 (en) | 2011-03-09 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata |
| US8769232B2 (en) | 2011-04-06 | 2014-07-01 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory module enabling out of order host command chunk media access |
| US8862804B2 (en) | 2011-04-29 | 2014-10-14 | Western Digital Technologies, Inc. | System and method for improved parity determination within a data redundancy scheme in a solid state memory |
| US8751728B1 (en) | 2011-04-29 | 2014-06-10 | Western Digital Technologies, Inc. | Storage system bus transfer optimization |
| US9021178B2 (en) | 2011-05-02 | 2015-04-28 | Western Digital Technologies, Inc. | High performance path for command processing |
| US8503237B1 (en) | 2011-05-18 | 2013-08-06 | Western Digital Technologies, Inc. | System and method for data recovery in a solid state storage device |
| US8793429B1 (en) | 2011-06-03 | 2014-07-29 | Western Digital Technologies, Inc. | Solid-state drive with reduced power up time |
| US8719531B2 (en) | 2011-06-14 | 2014-05-06 | Western Digital Technologies, Inc. | System and method for performing data retention that incorporates environmental conditions |
| US8423722B1 (en) * | 2011-08-26 | 2013-04-16 | Western Digital Technologies, Inc. | System and method for high performance command processing in solid state drives |
| US8700834B2 (en) | 2011-09-06 | 2014-04-15 | Western Digital Technologies, Inc. | Systems and methods for an enhanced controller architecture in data storage systems |
| US8713357B1 (en) | 2011-09-06 | 2014-04-29 | Western Digital Technologies, Inc. | Systems and methods for detailed error reporting in data storage systems |
| US8707104B1 (en) | 2011-09-06 | 2014-04-22 | Western Digital Technologies, Inc. | Systems and methods for error injection in data storage systems |
| US8977803B2 (en) | 2011-11-21 | 2015-03-10 | Western Digital Technologies, Inc. | Disk drive data caching using a multi-tiered memory |
| US8724422B1 (en) | 2012-02-29 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for charging back-up charge storage element for data storage device using spindle phase switching elements |
| US9003224B2 (en) | 2012-04-25 | 2015-04-07 | Western Digital Technologies, Inc. | Managing unreliable memory in data storage systems |
| US8788778B1 (en) | 2012-06-04 | 2014-07-22 | Western Digital Technologies, Inc. | Garbage collection based on the inactivity level of stored data |
| US8966343B2 (en) | 2012-08-21 | 2015-02-24 | Western Digital Technologies, Inc. | Solid-state drive retention monitor using reference blocks |
| US8788880B1 (en) | 2012-08-22 | 2014-07-22 | Western Digital Technologies, Inc. | Efficient retry mechanism for solid-state memory failures |
| US9268682B2 (en) | 2012-10-05 | 2016-02-23 | Skyera, Llc | Methods, devices and systems for physical-to-logical mapping in solid state drives |
| US8972826B2 (en) | 2012-10-24 | 2015-03-03 | Western Digital Technologies, Inc. | Adaptive error correction codes for data storage systems |
| US9177638B2 (en) | 2012-11-13 | 2015-11-03 | Western Digital Technologies, Inc. | Methods and devices for avoiding lower page corruption in data storage devices |
| US8954694B2 (en) | 2012-11-15 | 2015-02-10 | Western Digital Technologies, Inc. | Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive |
| US9021339B2 (en) | 2012-11-29 | 2015-04-28 | Western Digital Technologies, Inc. | Data reliability schemes for data storage systems |
| US9059736B2 (en) | 2012-12-03 | 2015-06-16 | Western Digital Technologies, Inc. | Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme |
| US20140223255A1 (en) | 2012-12-18 | 2014-08-07 | Western Digital Technologies, Inc. | Decoder having early decoding termination detection |
| US9430376B2 (en) | 2012-12-26 | 2016-08-30 | Western Digital Technologies, Inc. | Priority-based garbage collection for data storage systems |
| US9720627B2 (en) * | 2013-01-17 | 2017-08-01 | Western Digital Technologies, Inc. | Data management for a data storage device |
| US9335950B2 (en) | 2013-03-15 | 2016-05-10 | Western Digital Technologies, Inc. | Multiple stream compression and formatting of data for data storage systems |
| US9448738B2 (en) | 2013-03-15 | 2016-09-20 | Western Digital Technologies, Inc. | Compression and formatting of data for data storage systems |
-
2013
- 2013-08-26 US US14/010,350 patent/US9274978B2/en not_active Expired - Fee Related
-
2014
- 2014-06-10 WO PCT/US2014/041786 patent/WO2014201048A1/en not_active Ceased
- 2014-06-10 CN CN201480032714.9A patent/CN105308581A/en active Pending
- 2014-06-10 HK HK16108547.3A patent/HK1220529A1/en unknown
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20070061511A1 (en) * | 2005-09-15 | 2007-03-15 | Faber Robert W | Distributed and packed metadata structure for disk cache |
| EP1906311A2 (en) * | 2006-09-27 | 2008-04-02 | Samsung Electronics Co., Ltd. | Mapping apparatus and method for non-volatile memory supporting different cell types |
| US20110016091A1 (en) * | 2008-06-24 | 2011-01-20 | Commvault Systems, Inc. | De-duplication systems and methods for application-specific data |
| US20090327759A1 (en) * | 2008-06-30 | 2009-12-31 | Robert Royer | Encrypting data on a non-volatile memory |
| US20100246246A1 (en) * | 2009-03-26 | 2010-09-30 | Ho-Jung Kim | Memory device, memory system having the same, and programming method of a memory cell |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2017127103A1 (en) * | 2016-01-22 | 2017-07-27 | Hewlett Packard Enterprise Development Lp | Managing data in a storage array |
Also Published As
| Publication number | Publication date |
|---|---|
| CN105308581A (en) | 2016-02-03 |
| US20140365785A1 (en) | 2014-12-11 |
| US9274978B2 (en) | 2016-03-01 |
| HK1220529A1 (en) | 2017-05-05 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10055171B2 (en) | Compression and formatting of data for data storage systems | |
| US9274978B2 (en) | Migration of encrypted data for data storage systems | |
| US9335950B2 (en) | Multiple stream compression and formatting of data for data storage systems | |
| US9696910B2 (en) | Data compression and management | |
| US10248362B2 (en) | Data management for a data storage device | |
| US9875180B2 (en) | Systems and methods for managing storage compression operations | |
| US9176808B2 (en) | Storage device and nonvolatile memory device and operating method thereof | |
| JP6443794B2 (en) | Translation layer partitioned between host and controller | |
| CN108205499B (en) | Method and apparatus for transferring data processing to a hybrid storage device | |
| US8910017B2 (en) | Flash memory with random partition | |
| US10127166B2 (en) | Data storage controller with multiple pipelines | |
| US11030156B2 (en) | Key-value store with partial data access | |
| US10956071B2 (en) | Container key value store for data storage devices | |
| CN115718564B (en) | Maintaining application data order in memory devices | |
| CN105009094A (en) | Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive | |
| EP3953824B1 (en) | Large data read techniques | |
| US10095433B1 (en) | Out-of-order data transfer mechanisms for data storage systems | |
| US20140281842A1 (en) | Non-Volatile Cells Having a Non-Power-of-Two Number of States |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| WWE | Wipo information: entry into national phase |
Ref document number: 201480032714.9 Country of ref document: CN |
|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 14811323 Country of ref document: EP Kind code of ref document: A1 |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 14811323 Country of ref document: EP Kind code of ref document: A1 |