Data storage layout

By adopting a composite layout in the file system, dynamically map the segments of data objects between the key-value storage system and the traditional storage system, the problem of low storage efficiency of small files is solved and efficient and reliable data storage and access is achieved.

CN113655951BActive Publication Date: 2024-12-10SEAGATE TECH LLC
View PDF 6 Cites 0 Cited by

Patent Information

Application Number
CN202110511174.4
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-11-23
Filing Date
2021-05-11
Publication Date
2024-12-10
Estimated Expiration
2041-05-11

AI Technical Summary

Technical Problem

Existing file systems are inefficient when storing small files, especially in machine learning and artificial intelligence applications. Traditional storage methods can lead to waste of space and data redundancy, making it difficult to efficiently process small data objects.

Method used

Using composite layout, the segments of data objects are dynamically mapped and stored between the key-value storage system and the traditional storage system. The key-value storage system is used to optimize the storage of small files. The traditional storage system is used for redundancy and reliability, and is sub-layouted. Hierarchy enables efficient data mapping and redundancy.

Benefits of technology

It significantly reduces the space required to store small files, improves the storage efficiency and reliability of data objects, can efficiently process and store large numbers of small files, and improves data access speed and fault tolerance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113655951B_ABST
    Figure CN113655951B_ABST
Patent Text Reader

Abstract

The present application discloses a data storage layout. A composite layout for storing one or more segments of a data object in a first storage system and storing one or more segments of the data object in a second, different storage system. The first storage system can be configured to efficiently store small data chunks, such as, for example, data chunks that are smaller than the addressable block size of a storage device used by the storage system.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application claims the benefit of priority under 35 U.S.C. §119(a) to Russian Application No. 2020115644, filed on May 12, 2020, the disclosure of which is incorporated herein by reference in its entirety.

[0002] The disclosure herein relates to a data storage layout that is configured to store one or more extents of a data object in a first storage system (e.g., a key-value storage system) and to store one or more extents of the data object in a second storage system that is different from the first storage system, for example, to process small data files or small data objects. Summary of the invention

[0003] An illustrative system may include: one or more data storage devices for storing one or more data objects; and a computing device including one or more processors and operably coupled to the one or more data storage devices. The computing device may be configured to use the one or more data storage devices to maintain a key-value storage system and another storage system different from the key-value storage system, and to provide a composite layout for each data object stored on the one or more data storage devices. The composite layout may include mapping information linking one or more segments of each data object to one or more locations on the one or more data storage devices, where the one or more segments of the data object are stored. At least one segment of the one or more segments of each data object may be stored in the key-value storage system, and at least another segment of the one or more segments of each data object may be stored in the another storage system.

[0004] An illustrative method may include maintaining a key-value storage system and another storage system different from the key-value storage system using the one or more data storage devices to store one or more data objects. The illustrative method may further include providing a composite layout for each data object stored on the one or more data storage devices. The composite layout may include mapping information linking one or more segments of each data object to one or more locations on the one or more data storage devices, where the one or more segments of the data object are stored. At least one segment of the one or more segments of each data object may be stored in the key-value storage system, and at least another segment of the one or more segments of each data object may be stored in the another storage system.

[0005] An illustrative composite layout corresponding to a data object describing one or more segments of the data object at one or more locations on one or more storage devices may include a plurality of sub-layouts ranked from lowest priority to highest priority, and each sub-layout may include mapping information linking the one or more segments of the data object to the one or more locations on the storage device where the one or more segments of the data object are stored. At least one of the one or more segments of each data object may be stored in a key-value storage system, and at least another of the one or more segments of each data object may be stored in another storage system different from the key-value storage system.

[0006] The above summary of the invention is not intended to describe every embodiment or every implementation of the present disclosure. A more complete understanding will become apparent and understandable by reference to the following detailed description obtained in conjunction with the accompanying drawings and the claims. In other words, these and various other features and advantages will become apparent by reading the detailed description below. BRIEF DESCRIPTION OF THE DRAWINGS

[0007] A more complete understanding of the present disclosure may be obtained by considering the following detailed description of various embodiments of the present disclosure in conjunction with the following drawings.

[0008] Figure 1 is a block diagram of an exemplary system including a file system for storing data objects.

[0009] Figure 2 is used with, for example, Figure 1 An illustration of a "simple" layout corresponding to a data object for use with the exemplary system depicted.

[0010] Figure 3 is used with, for example, Figure 1 An illustration of an exemplary layout corresponding to data objects for use with the exemplary systems depicted.

[0011] Figure 4 is used with, for example, Figure 1 An illustration of an exemplary composite layout corresponding to a data object for use with the exemplary system depicted.

[0012] Figure 5 is used Figure 3-Figure 4 A flowchart of an illustrative writing method of an illustrative composite layout.

[0013] Figure 6 is used Figure 3-Figure 4 A flowchart of an illustrative reading method of an illustrative composite layout. DETAILED DESCRIPTION

[0014] The present disclosure relates to systems, methods and processes for utilizing file system data location lookup in a dynamic environment. As further described herein, exemplary systems, methods and processes can reduce the computational complexity of describing file data locations in a dynamic environment, and use a common description format and minimized code paths to implement a series of layout-related file system features. Typically, systems, methods and processes can utilize or include exemplary composite layouts having a set of useful properties and / or mechanisms associated therewith. For example, the illustrative composite layouts described herein can be configured to provide specific functionality for processing small files or small data objects in a space-efficient manner. As will be further described, one or more segments of each data object can be stored in a first storage system (such as a key-value storage system), and any remaining segments can be stored in a second storage system (such as a more traditional storage system).

[0015] In at least one embodiment, the first or initial segment of each data object can be stored in a first storage system (such as a key-value storage system), while any remaining segments can be stored in a second storage system (such as a more traditional storage system). Any writes or reads from the first segment will be directed to the first storage system (e.g., the key-value storage system).

[0016] Furthermore, for example, an illustrative composite layout may include or consist of a set of sub-layouts. The sub-layouts may occupy a particular ordered rank in the composite layout or structure. New writes may be directed to the highest ranked sub-layout, while reads may be directed to the highest ranked simple layout that has a mapped extent for the requested file range. In at least one embodiment, one of the sub-layouts may correspond only to extents stored in a first storage system (e.g., a key-value storage system).

[0017] Figure 11 and 2. An exemplary system 10 for storing data objects is depicted in FIG. The system 10 includes a host device 12 (such as, for example, a personal computer, a server, etc.) and a data storage system 20. The host device 12 may be operably coupled to the data storage system 20 to read data objects or files from the data storage system 20 and write data objects or files to the data storage system 20. Although a single host device is depicted, it should be understood that the system 10 may include multiple host devices 12 operably coupled to the data storage system 20. Additionally, the data storage system 20 itself may include one or more computing devices to provide the functionality provided by the data storage system 20. More specifically, the one or more computing devices of the data storage system 20 may include one or more processors, processing circuit systems, memories, etc., which are configured to provide for reading and writing of one or more data objects (e.g., including files) from the data storage system 20 and one or more mechanisms and processes associated with the exemplary composite layout described herein. For example, the host device 12 may request data from a data object from the data storage system 20, and the data storage system 20 may return the requested data for the data object. Furthermore, for example, host device 12 may attempt to write data to a data object of data storage system 20, and data storage system 20 may facilitate writing the data to the data object.

[0018] As shown, the data storage system 20 includes a plurality of data storage devices 22 for storing data objects. The data storage device 22 may include any device and / or device configured to store data (e.g., binary data, etc.). The data storage device 22 may include, but is not necessarily limited to: solid-state memory, hard disk, magnetic tape, optical disk, integrated circuit, volatile memory, non-volatile memory, and any combination thereof. In addition, each data storage device 22 may be an array of storage devices, such as, for example, a RAID (Redundant Array of Inexpensive Disks) storage arrangement. Each data storage device 22 may be a server or a virtual server. It should be understood that the present disclosure is not limited to Figure 1 1, rather, the system 10 is only an illustrative configuration. For example, the data storage system 20 may include one or more of a local file system, a storage area network (SAN) file system, a distributed file system, a parallel file system, a virtual file system, and / or a combination thereof.

[0019] The data storage system 20 can be further described as a system designed to provide computer applications on the host 12 with access to data stored on the data storage device 22 in a logical, consistent manner. In addition, the data storage system 20 can be described as hiding the details of how data is stored on the data storage device 22 from the host 12 and the applications running on the host 12. For example, the data storage device 22 can generally be block addressable, because data is addressed with the smallest granularity of a block, and multiple consecutive data portions or chunks can define or form a segment. A segment can be defined as a portion of data within a data object or file. In other words, a segment can be described as a byte range within a data object or file. The size of a particular segment (e.g., 512 bytes long, 1024 kilobytes long, 4096 kilobytes long, etc.) can depend on the type and size of the data storage device 22. An application on the host 12 can request data from the data storage system 20, and the data storage system 20 can be responsible for seamlessly mapping between the application logical segments within the data object and the physical space on the data storage device 22.

[0020] Existing file systems have used various methods to provide such mappings. For example, the file system can use mapping information or metadata based on the layout to provide the location of data on the data storage device 22 via lookup (e.g., a list of segments in an i-node in the case of a local file system (such as an EXT4 file system), or a set of object / server pairs in a distributed system (such as a LUSTRE file system)) or in a formulaic manner (e.g., parameters of a SWIFT ring). These existing file systems may be affected by the assumption that the layout remains static for the most part. For example, modifying some or all of the data layout may typically completely rewrite the lookup information or move the data itself to accommodate the new parameters.

[0021] A layout may be defined as a description of where a particular set of data (e.g., a file or data object) is located in a file system. As described herein, a segment may be defined as a portion of data within a data object or file. The term "FID" as used throughout this disclosure means "file identifier," which may be used as a handle or descriptor to reference the layout of a particular file. For certain types of layouts, the FID may point to some metadata describing a layout formula and the parameters of that formula for a series of segments in the file. In addition, other types of layout mapping functions (such as block bitmaps or segment lists) may also be used.

[0022] Figure 2, a diagram of a simple layout 110, referenced as an FID, corresponding to a data object or file 100 for use with an exemplary system is depicted in FIG. The data object or file 100 is graphically represented as a string of hexadecimal bytes. The layout 110 may correspond to the data object 100 such that the layout 110 extends from a left end representing a range of bytes within the data object 100 to a right end, where the left end represents the beginning of the data object 100 and the right end represents the end of the data object 100. The layout 110 may include a Figure 2 100 to one or more locations 114 on one or more storage devices 22. The shading of the mapping information within the layout 110 corresponds to the size and location of the segments within the data object 100. In other words, the layout 110 may correspond to the data object 100 because the layout 110 describes where the segments 112 of the data object 100 are stored or located on the one or more storage devices 22.

[0023] use Figure 2 The sections 112 are graphically depicted by shading within the layout FID 110 of the data object 100 to indicate which sections or ranges of the data object 100 include data, and therefore which sections have corresponding mapping information in the layout 110. For example, a shaded section 112 or area of ​​the layout 110 indicates that mapping information exists to link the section 112 to the location 114.

[0024] When data is to be written to or read from the data object 100 (e.g., by the host 12), the exemplary system may utilize the layout function to determine mapping information for writing data to or reading data from the data object 100 based on the layout 110. If new data is to be written to a portion or segment of the data object 100, the layout function may determine the segments 112 within the file system 22 (e.g., on which storage device 22, at which location within the storage device 22, etc.) where these portions or segments of the data object 100 reside based on the mapping information within the layout 110, and such segments 112 or portions thereof of the data storage device 22 may then be overwritten with the new data. If new data is to be read from a portion or segment of the data object 100, the layout function may determine the segments 112 on one or more storage devices 22 where these portions or segments of the data object 100 reside based on the mapping information within the layout 110, and such segments 112 or portions thereof of the data storage device 22 may then be read.

[0025] Relative to Figure 2The illustrated layout 110 may be described as a "simple" layout because a "simple" layout may not include mapping information linking any extents to alternative storage systems (such as a key-value storage system). In contrast, the layout 110 may only include mapping information linking each extent 112 to a respective location of the data storage device 22 without providing any flexibility for multiple storage systems or schemes therebetween, which may lead to storage issues for very small files.

[0026] It is desirable to store very small files more efficiently, which may be common in machine learning and artificial intelligence applications. For example, in many file systems, it is often very inefficient to store small files separately in 4K (4096 kilobyte) disk blocks, because no matter how small the file is, the file will occupy the entire 4k disk block for storage. In other words, although a small file may be 100 kilobytes, in many file systems, it may occupy the entire 4096 kilobytes of a 4k disk block. Additionally, if the file system creates an i-node for each 100 kilobyte file, the i-node (which may be 1024 kilobytes long) will also occupy another 4K disk block. In one example, if 50% of the files stored in a 4K block storage system are 100 bytes, the system may lose up to 40 times the available capacity. Therefore, for example, if a small portion of the data is stored in an empty file object according to layout 110, even if the portion of the data is small, the entire first segment (such as a 4K block) will be consumed, and the first segment is mapped to each location on the data storage device 22.

[0027] To address these issues, the illustrative systems and methods may use a composite layout to store the first segment of each file (such as, for example, the first 4K block) in a first storage system (such as, for example, a key-value storage system) that is optimized for storage of small files, as will be described herein with reference to Figure 3-Figure 4 As further described. While, for example, previous systems and methods may utilize 80 terabytes to store a 100-byte file of 1 terabyte, the illustrative systems and methods may utilize only 11 terabytes of space, which is significantly less than the 80 terabytes of space of the previous systems and methods.

[0028] Additionally, one or more segments of a data object may be frequently used, and therefore, it may be beneficial to locate such segments on a storage system that is faster than other available storage systems. Furthermore, one or more segments of a data object may be determined to be more critical than other segments, and therefore, it may be beneficial to locate such segments on a storage system that is more reliable, more fault-tolerant, and / or includes better redundancy and error correction than other available storage systems. To address these issues, the illustrative systems and methods may use a composite layout to store commonly used and / or critical segments of a data object in a first storage system (such as, for example, a key-value storage system) to increase the speed of storing, modifying and retrieving such segments, and to increase the reliability, fault-tolerance, redundancy, and error correction of such segments, as will be described herein with reference to the illustrative systems and methods. Figure 3-Figure 4 as further described.

[0029] The illustrative systems and methods described herein may include a composite layout configured or adapted to handle small file and / or object compression. In addition, the illustrative systems and methods may be described as using a combination of multiple types of storage systems (such as key-value storage) and composite layouts to ensure efficient packaging of small file data, for example, efficiently packaging into as few disk blocks as possible. Therefore, the illustrative systems and methods described herein may be able to efficiently store a large number of small files into a disk.

[0030] It can be described that the illustrative composite layout can easily allow the "header" of a file to be stored in a first storage system (such as, for example, a key-value storage system or volume), which can automatically use a log-structured merge tree streaming b-tree mechanism to efficiently package small data. In addition, it can be described that the illustrative system and method can provide an integrated storage system that supports objects, files, and key-value pairs. In one or more embodiments, the key-value store can be implemented as a streaming B-tree so that small key-value pairs can be automatically merged into 4K blocks. Further, it can be described that the illustrative system and method utilize the key-value store and the composite layout so that small files and their i-nodes are transparently and efficiently stored in the key-value store.

[0031] In addition, relative to Figure 2 The illustrated layout 110 may be described as a "simple" layout because it cannot represent more than one location on the storage device for any overlapping segment ranges. Figure 2Segments 112a and 112b in the intersection cannot overlap because the location of any part of the data object 100 in the intersection cannot be uniquely resolved. Other storage systems can map segments to multiple locations internally for data redundancy purposes. For example, a segment can be mapped to a pair of locations in a RAID1 configuration, where data is written to two physical devices and can be read from either physical device in the event of a failure. More complex but fully resolvable schemes, such as RAID6 or erasure coding schemes, can also be used. However, these simple layouts used alone or in combination with RAID configuration layouts remain statically fixed over time. Typically, repairing RAID data by incorporating new devices or changing the desired file location involves moving all mapped segments of the file as a whole to a new static layout. In such cases, these systems may temporarily retain two layouts for the file, the original layout and the new layout, while performing such data migration (copying the data to the new location).

[0032] In order to solve these problems, this paper refers to Figure 3-Figure 4 The described systems, methods, and processes utilize an exemplary composite layout or a series of sub-layouts, each of which describes an arbitrary set of data objects with mapped segments or unmapped segments, and the sub-layouts are ordered into a "sieve". Unmapped segments can be thought of as "holes" in the "sieve". Any segment that is not mapped by an upper sub-layout goes into the next sub-layout in the sieve. More specifically, the exemplary composite layout can be composed of a set of sub-layouts that occupy a specific ordered ranking in the composite layout structure. New writes can be directed to the highest ranked sub-layout, while reads can be directed to the highest ranked sub-layout that has mapped segments for the requested file range. In addition, by inserting new sub-layout layers at different ranks and providing the ability to directly read and write sub-layouts, many useful behaviors can be instantiated.

[0033] The systems, methods, and processes described herein may be used Figure 3-Figure 4 The exemplary composite layout 220 shown in FIG. Figure 2 100 is more useful because, for example, the mapping information of the illustrative composite layout 220 can allow different sections (e.g., portions, chunks, ranges, etc.) of a data object to be efficiently and effectively mapped, and can allow those sections to be easily and dynamically remapped. In particular, the illustrative composite layout 220 can include mapping information that links one or more sections of the data object 100 to an alternative storage system (such as, for example, a key-value storage system). Figure 3-Figure 4In the particular example depicted in , the illustrative composite layout 220 may include mapping information linking the first sections 202x, 222x of the data object 100 to an alternative storage system, such as, for example, a key-value storage system. Figure 3-Figure 4 The illustrative composite layout 220 includes mapping information that links only the first segment 202x, 222x of the data object 100 to the alternative storage system, and it should be understood that the illustrative composite layout 220 may include mapping information that links any segment of the data object 100 to the alternative storage system (e.g., based on the criticality of the segment, the access frequency of the segment, etc.). In addition, it can be generally described that the illustrative composite layout 220 of systems, methods, and processes can enable a series of desired capabilities that can be simply and efficiently implemented, thereby presenting a more capable, more efficient, and more stable file system.

[0034] and Figure 2 The layout 110 shown is similar to Figure 3 The exemplary composite layout 220a in FIG. 2 may correspond to a data object 100 stored on one or more storage devices 22 and may include mapping information linking the data object 100 to one or more locations 114 on the one or more storage devices 22. Figure 2 Unlike the layout 110 of FIG. 1 , the illustrative composite layout 220a may include mapping information for linking the first segment 202x of the data object 100 to one or more locations on one or more storage devices 22 in a first storage system 30 (such as, for example, a key-value storage system).

[0035] Figure 3-Figure 4 The data storage system 20 may include two or more different storage systems or solutions. As shown, the data storage system 20 includes two different storage systems or solutions, namely a first storage system 30 and a second or another storage system 32. The second storage system 32 may be any other type of storage system different from the first storage system 30. In other words, the second storage system 32 is different from the first storage system 30. In at least one embodiment, the second storage system 32 is any type of storage system different from the key-value storage system (which may be the first storage system 30). In at least one embodiment, the second storage system 32 may be described as a traditional storage system, such as an object storage system. For example, the second storage system 32 may be an EXT4 file system. In addition, for example, the second storage system 32 may be a traditional distributed data storage system optimized for storing large data objects, such as a traditional file storage system like a LUSTRE file system or a traditional object storage system like a SWIFT ring.

[0036] Additionally, the first storage system 30 and the second storage system 32 may utilize different types or kinds of storage devices 22 that may vary in size, speed, reliability, etc. The first storage system 30 may include storage devices 22 that are faster (e.g., faster to read and / or write) than the second storage system 32. For example, the first storage system 30 may include or utilize solid-state drives that are faster than the rotating disk drives of the second storage system 32. Furthermore, the first storage system 30 may include storage devices 22 that are more reliable (e.g., including higher redundancy, better error correction, etc.) than the second storage system 32.

[0037] As described herein, the first storage system 30 may be a key-value storage system. The illustrative key-value storage system may automatically use a log-structured merge tree and / or streaming b-tree mechanism for efficiently packing small data. In one or more embodiments, the key-value storage system may be configured to store key-value pairs, wherein the key of each pair provides mapping or location information to find a value corresponding to the key within the key-value storage system.

[0038] The key-value store may include a single index of keys or multiple indexes of keys (or a set of indexes of keys). Each key may identify the location of the corresponding value within the key-value store system. Therefore, the key may be used to find a segment within the key-value store system. In the illustrative system and method described herein, according to its composite layout 220a, the "value" corresponding to the "key" in the key-value store system will be the first segment 202x of the file object 100.

[0039] In at least one embodiment, the "key" for each segment may be stored in a key-value store as follows:

[0040] {FID|offset|length}.

[0041] The FID of the key is the object or file identifier, the offset is the distance from the starting position or address, and the length is the length of the value. The "value" of the key-value pair is the data for the segment, which can be identified using the key.

[0042] In the single index example for a key, the input to find a segment in the key-value store would be the concatenation of the FID and the offset. In the multiple index example for a key, the input to find a segment in the key-value store would be the FID identifying an index in the multiple indexes and the offset within that index.

[0043] In at least one embodiment, all keys for all small files or headers can be stored in a single "index", which is a logical set of key-value pairs. Prefix matching and iteration may be able to pull out all key-value pairs that contain data in the first segment or file header. In addition, during b-tree merges, overlapping key-value pairs may be garbage collected, and snapshots should not block them.

[0044] The size of the first section 202x of the data object 100 may vary depending on the block size of the storage system 20. In at least one embodiment, the first section 202x is 4096 bytes (in other words, a 4K block). The first section 202x may be smaller than 4096 bytes, such as, for example, 512 bytes.

[0045] As described herein, the initial or first mapping information links the first segment 202x of the data object 100 to one or more locations on one or more storage devices 22 in a first storage system 30 (such as, for example, a key-value storage system). The remaining mapping information links the other segments 202a, 202b, 202c of the data object 100 to one or more locations on one or more storage devices 22 in a second storage system 32 where the segments 202a, 202b, 202c of the data object 100 are stored. Again, as described herein, although Figure 3 The mapping information of the composite layout 220a only links the first segment 202x of the data object 100 to one or more locations on one or more storage devices 22 in the first storage system 30, but it should be understood that the composite layout 220a may include mapping information that links more segments than the first segment 202x (such as one or more of segments 202a, 202b, 202c) to one or more locations on one or more storage devices 22 in the first storage system 30.

[0046] Additionally, Figure 4 , which may include multiple sub-layouts 201 ranked from lowest priority to highest priority. As shown, each sub-layout 201 may include a handle or descriptor "FID" and a number in a subscript indicating the priority of the sub-layout 201. The subscript numbers may represent priority in descending order, where the highest priority sub-layout 201 has a handle of "FID0" and lower priority sub-layouts have handles with larger numerical subscripts. In this example, the lowest priority sub-layout 201 includes a handle "FID2", which indicates a lower priority than sub-layouts 201 "FID0" and "FID1". In other words, multiple sub-layouts 201 may be layered to form a cascading screen, where higher priority sub-layouts 201 are positioned in a higher layer than lower priority sub-layouts 201.

[0047] although Figure 4The illustrative composite layout 220b depicted in 200b includes three sub-layouts 201, but it should be understood that the exemplary composite layout 220b is dynamic, such that it can increase or decrease the amount or number of sub-layouts 201 to provide the functionality further described herein. More specifically, new sub-layouts 201 can be further added within the composite layout 220b with an intentional or selected priority, for example, higher or lower priority than existing sub-layouts 201. In addition, the ability of the composite layout 220b to include or have multiple sub-layouts 201 can allow for overlapping segment ranges, which may also be useful for providing the functionality described herein.

[0048] Each sub-layout 201 may include mapping information linking one or more sections 222a, 222b, 222c, 222d, 222e of a data object 100 to one or more locations 114 on one or more storage devices 22 on which the one or more sections 222a, 222b, 222c, 222d, 222e of the data object 100 are stored. Similar to the layout 110, each sub-layout 201 corresponds to a data object 100 such that the sub-layout 201 extends from a left end representing a range of bytes within the data object 100 to a right end, where the left end represents the beginning of the data object 100 and the right end represents the end of the data object 100. The sections 212 of the sub-layout 201 are graphically depicted using shading within the sub-layout 201 to indicate which sections or ranges of the data object 100 have corresponding mapping information in the sub-layout 201 to link the sections or ranges to the locations 114 on the one or more storage devices 22. In other words, the shaded sections 212 or areas of the sub-layout 201 indicate that mapping information exists to link the sections 212 to the locations 114 on the one or more storage devices 22 .

[0049] Additionally, the plurality of sub-layouts 201 include sub-layout 201FID x , sub-layout 201FID x The first section 212x of the data object 100 includes mapping information for linking the first section 212x to one or more locations on one or more storage devices 22 in the first storage system 30 (such as, for example, a key-value storage system), similar to the illustrative layout 220a. Since the sections stored in the first storage system 30 are located in a single sub-layout 201FID x In the example of FIG. 1 , the system, method, and process may be able to determine whether a segment is located in the first storage system 30 based solely on the FID. In other words, in directing the segment to a sub-layout of the first storage system 30 (such as the sub-layout 201FID), the FID of the segment is determined based solely on the FID. x There may be no mixing of sub-layout 201 between ) and sub-layouts that direct segments to the second storage system 32 (such as remaining sub-layout 201 FID0, FID1, FID2).

[0050] Furthermore, in one or more embodiments, the mapping information of the first extent 212x may be stored in the highest priority sub-layout 201. Furthermore, in one or more embodiments, the layout function may include an exception for the first extent 222x so that the layout function directs reads or writes to the first extent to the first storage system 30. Thus, the exceptional mapping information linking the first extent 222x to the first storage system 30 may be used with a composite layout 220b including multiple sub-layouts 201, as shown in FIG. Figure 4 Depicted sub-layout 201FID x By itself or as a mapping process in a layout function.

[0051] The exemplary composite layout 220b can be described as a resultant layout FID that is a result of the combination of the sub-layouts 201. r 221. Despite Figure 4 The resulting layout FID is depicted in r 221, but it should be understood that the depiction result layout FID r 221 is mainly used to describe the exemplary systems, methods and processes described herein. The resulting layout FID may be provided based on the mapping information present for a particular section in the highest priority sub-layout 201. r 221, the highest priority sub-layout 201 includes mapping information for a specific segment. In other words, when looking for mapping information for a specific segment or range, the highest priority sub-layout 201 can be checked, and if there is no mapping information for the segment or range, the next highest priority sub-layout 201 can be checked, and so on.

[0052] exist Figure 4 The result layout in FID r 221 moving from left to right (eg, from the beginning to the end of data object 100), the mapping information for the first section 222x is represented by sub-layout 201FID x The mapping information of the second segment 222a is provided by the mapping information of the segment 212a of the sub-layout 201FID0, which can be the highest priority sub-layout 201 including the mapping information of the second segment 222a. As shown in the figure, the sub-layouts 201FID1 and FID2 also include the mapping information in the segments 212b and 212c, respectively, and the mapping information in the segments 212b and 212c corresponds to the result layout FID r221. However, sub-layout 201FID0 has a higher priority than each of sub-layouts 201FID1 and FID2, and therefore, the mapping information of sub-layout 201FID0 replaces the mapping information in sub-layouts 201FID1 and FID2. In other words, the mapping information of sub-layouts 201FID0, FID1, and FID2 overlaps at section 222a, and therefore, the mapping information of the higher priority sub-layout 201 (i.e., sub-layout 201FID0) takes precedence over the lower priority sub-layout 201.

[0053] In addition, the result layout FID r The mapping information of the third section 222b of 221 is provided by a portion of the mapping information of the section 212b of the sub-layout 201FID1, which is the highest priority sub-layout 201 that includes the mapping information of the third section 222b. As shown in the figure, the sub-layout 201FID2 also includes the mapping information in the section 212c, which corresponds to the mapping information of the result layout FID r 221. However, sub-layout 201FID1 has a higher priority than sub-layout 201FID2, and therefore, the mapping information of sub-layout 201FID1 replaces the mapping information in sub-layout 201FID2. In other words, the mapping information of sub-layouts 201FID1 and FID2 overlap at section 222b, and therefore, the mapping information of the higher-priority sub-layout 201 (i.e., sub-layout 201FID1) takes precedence over the lower-priority sub-layout 201.

[0054] Next, the resulting layout FID is provided by a portion of the mapping information of the section 212d of the sub-layout 201FID2 (the sub-layout of the lowest priority). r 221, because the composite layout 220b has no higher priority sub-layout 201 including the mapping information for the result layout FID r Finally, according to the priority functions and logic described herein, the mapping information of the segment 212e of the sub-layout 201FID2 and the mapping information of the segment 212f of the sub-layout 201FID1 are used to provide the result layout FID r Mapping information of the fifth segment 222d and the sixth segment 222e of 221.

[0055] Additional features enabled by the composite layout 220 of the illustrative systems, methods, and processes may include tiering / information lifecycle management (ILM), data locality, fault recovery, and data rebalancing, such as described in U.S. Patent Application Publication No. 2018 / 0232282A1, entitled “Data Storage Composite Layouts for Data Objects,” published on August 16, 2018, the entirety of which is incorporated herein by reference in its entirety.

[0056] Figure 5 Describes the use Figure 3-Figure 4 . The method 50 may include receiving write data to be written to an existing data object stored in the data storage system 20 (52), and determining whether the write data is located in a first storage system (54). If the write data is located in the first storage system, the method 50 may store the write data in the first storage system (such as, for example, a key-value storage system) (56). Conversely, if the write data is not located in the first storage system, the method 50 may store the write data in a second storage system (58).

[0057] Figure 6 Describes the use Figure 3-Figure 4 6. The method 60 may include receiving a read request for read data of an existing data object stored in the data storage system 20 (62), and determining whether the read data is located in a first storage system (64). If the read data is located in the first storage system, the method 60 may retrieve the read data from the first storage system (such as, for example, a key-value storage system) (66). Conversely, if the read data is not located in the first storage system, the method 60 may retrieve the read data from the second storage system (68).

[0058] It will be apparent to those skilled in the art that elements or processes from one embodiment may be used in combination with elements or processes of other embodiments, and that possible embodiments of such systems, devices, apparatuses, and methods using the combinations of features set forth herein are not limited to the specific embodiments shown in the drawings and / or described herein. In addition, it will be appreciated that the timing of the processes herein and the sizes and shapes of the various elements may be modified and still fall within the scope of the present disclosure, although certain timings, one or more shapes and / or sizes of elements, or types may be advantageous relative to other timings, shapes and / or sizes of elements, or types.

[0059] The methods and / or techniques described in the present disclosure, including those attributable to computing devices or various components of a host and / or file system, may be implemented at least in part in hardware, software, firmware, or any combination thereof. For example, aspects of these techniques may be implemented within one or more processors, including one or more microprocessors, DSPs, ASICs, FPGAs, or any other equivalent integrated or discrete logic circuit systems, and any combination of such components embodied in a program. The terms "controller," "module," "processor," or "processing circuit system" may generally refer to any of the foregoing logic circuit systems, either independently or in combination with other logic circuit systems, or any other equivalent circuit systems.

[0060] Such hardware, software and / or firmware can be implemented in the same device or in separate devices to support the various operations and functions described in the present disclosure. In addition, any of the described units, modules or components can be implemented together, or can be implemented separately as discrete but interoperable logical devices. Depicting different features as modules or units is intended to emphasize different functional aspects, and does not necessarily imply that such modules or units must be implemented by separate hardware or software components. Instead, the functions associated with one or more modules or units can be performed by separate hardware or software components, or can be integrated in common or separate hardware or software components.

[0061] When implemented in software, the functionality attributed to the systems, devices, and techniques described in this disclosure may be embodied as instructions on a computer-readable medium (such as RAM, ROM, NVRAM, EEPROM, flash memory, STRAM, RRAM, magnetic data storage media, optical data storage media, etc., and any combination thereof. The instructions may be executed by one or more processors to support one or more aspects of the functionality described in this disclosure.

[0062] In the foregoing description, reference is made to a collection of drawings forming a part of this document, in which several specific embodiments are illustrated by way of diagrams. It should be understood that other embodiments are contemplated and may be made without departing from the scope or spirit of the present disclosure (e.g., still falling within the scope or spirit of the present disclosure). Therefore, the foregoing specific embodiments should not be taken in a restrictive sense. The definitions provided herein are intended to facilitate understanding of certain terms frequently used herein and are not intended to limit the scope of the present disclosure.

[0063] Unless otherwise indicated, all numbers expressing feature sizes, amounts, and physical properties used in the specification and claims are to be understood as being modified in all instances by the term “about.” Accordingly, unless indicated to the contrary, the numerical parameters set forth in the foregoing specification and attached claims are approximations that may vary depending upon the desired properties sought by those skilled in the art utilizing the teachings disclosed herein.

[0064] Further examples:

[0065] Example 1: A system comprises: one or more data storage devices, the one or more data storage devices being used to store one or more data objects; and a computing device, the computing device comprising one or more processors and being operably coupled to the one or more data storage devices, the computing device being configured to: use the one or more data storage devices to maintain a key-value storage system and another storage system different from the key-value storage system; and provide a composite layout for each data object stored on the one or more data storage devices, the composite layout comprising mapping information linking one or more segments of each data object to one or more locations on the one or more data storage devices, the one or more segments of the data object being stored in the one or more locations on the one or more data storage devices, wherein at least one segment of the one or more segments of each data object is stored in the key-value storage system, and at least another segment of the one or more segments of each data object is stored in the other storage system.

[0066] Example 2: The system of Example 1, wherein the at least one segment stored in the key-value storage system includes a first segment of each data object.

[0067] Example 3: The system as described in Example 1 is characterized in that the at least one segment stored in the key-value storage system is less than or equal to 4096 bytes.

[0068] Example 4: The system as described in Example 1 is characterized in that the key-value storage system uses a b-tree to store key-value pairs.

[0069] Example 5: The system as described in Example 1 is characterized in that the key-value storage system includes multiple indexes of key-value pairs, wherein each of the indexes of key-value pairs includes at least one key that can be used to find the at least one segment in the key-value storage system.

[0070] Example 6: The system as described in Example 1 is characterized in that the computing device is further configured to: receive a write data object to be stored on the one or more data storage devices; and store at least one segment of the write data object in the key-value storage system according to the composite layout.

[0071] Example 7: The system as described in Example 1 is characterized in that the computing device is further configured to: receive write data to be written to an existing data object among the one or more data objects; determine whether the write data is to be written to a segment of the existing data object stored in the key-value storage system; and if it is determined that the write data is to be written to the segment of the existing data object stored in the key-value storage system, store the write data in the key-value storage system.

[0072] Example 8: The system as described in Example 1 is characterized in that the computing device is further configured to: receive a read request for read data of an existing data object among the one or more data objects; determine whether the read data is to be read from a segment of the existing data object stored in the key-value storage system; and if it is determined that the read data is located in the segment of the existing data object stored in the key-value storage system, read the read data from the key-value storage system.

[0073] Example 9: A system as described in Example 1, characterized in that the composite layout includes multiple sub-layouts from lowest priority to highest priority, each sub-layout includes mapping information linking one or more segments of the data object to one or more locations on the storage device, the segments of the data object are stored in the one or more locations on the storage device, and the mapping information of at least one sub-layout of the multiple sub-layouts indicates whether one or more segments are stored in the key-value storage system.

[0074] Example 10: The system of Example 1, wherein the one or more data storage devices include one or more solid-state drives, wherein the key-value storage system uses the one or more solid-state drives.

[0075] Example 11: A method, comprising: using the one or more data storage devices to store one or more data objects to maintain a key-value storage system and another storage system different from the key-value storage system; and providing a composite layout for each data object stored on the one or more data storage devices, the composite layout including mapping information linking one or more segments of each data object to one or more locations on the one or more data storage devices, the one or more segments of the data object being stored in the one or more locations on the one or more data storage devices, wherein at least one segment of the one or more segments of each data object is stored in the key-value storage system, and at least another segment of the one or more segments of each data object is stored in the other storage system.

[0076] Example 12: The method of Example 11, wherein the at least one segment stored in the key-value storage system includes a first segment of each data object.

[0077] Example 13: The method as described in Example 11 is characterized in that the at least one segment stored in the key-value storage system is less than or equal to 4096 bytes.

[0078] Example 14: The method as described in Example 11 is characterized in that the key-value storage system uses a b-tree to store key-value pairs.

[0079] Example 15: The method as described in Example 11 is characterized in that the key-value storage system includes multiple indexes of key-value pairs, wherein each of the indexes of key-value pairs includes at least one key that can be used to find the at least one segment in the key-value storage system.

[0080] Example 16: The method of Example 11, further comprising: receiving a write data object to be stored on the one or more data storage devices; and storing at least one segment of the write data object in the key-value storage system according to the composite layout.

[0081] Example 17: The method as described in Example 11 further includes: receiving write data to be written to an existing data object among the one or more data objects; determining whether the write data is to be written to a segment of the existing data object stored in the key-value storage system; and if it is determined that the write data is to be written to the segment of the existing data object stored in the key-value storage system, storing the write data in the key-value storage system.

[0082] Example 18: The method as described in Example 11, further comprising: receiving a read request for read data of an existing data object among the one or more data objects; determining whether the read data is to be read from a segment of the existing data object stored in the key-value storage system; and if it is determined that the read data is located in the segment of the existing data object stored in the key-value storage system, reading the read data from the key-value storage system.

[0083] Example 19: A method as described in Example 11, characterized in that the composite layout includes multiple sub-layouts from lowest priority to highest priority, each sub-layout includes mapping information linking one or more segments of the data object to one or more locations on the storage device, and the segments of the data object are stored in the one or more locations on the storage device, wherein the mapping information of at least one sub-layout among the multiple sub-layouts indicates whether one or more segments of the data object are stored in the key-value storage system.

[0084] Example 20: The method of Example 11, wherein the one or more data storage devices include one or more solid-state drives, wherein the key-value storage system uses the one or more solid-state drives.

[0085] Example 21: A composite layout corresponding to a data object and describing one or more segments of the data object at one or more locations on one or more storage devices, comprising: multiple sub-layouts ranked from lowest priority to highest priority, each sub-layout including mapping information linking one or more segments of the data object to one or more locations on the storage device, the one or more segments of the data object being stored in the one or more locations on the storage device, wherein at least one segment of the one or more segments of each data object is stored in a key-value storage system, and at least another segment of the one or more segments of each data object is stored in another storage system different from the key-value storage system.

[0086] Example 22: The composite layout of Example 21, wherein the mapping information of at least one sub-layout of the plurality of sub-layouts indicates whether one or more sections of the data object are stored in the key-value storage system.

Claims

1. A system for data storage, comprising: one or more data storage devices, the one or more data storage devices being used to store one or more data objects; as well as A computing device comprising one or more processors and operably coupled to the one or more data storage devices, the computing device being configured to: maintaining a key-value storage system and another storage system different from the key-value storage system using the one or more data storage devices; and A composite layout is provided for each data object stored on the one or more data storage devices, the composite layout including mapping information linking one or more segments of each data object to one or more locations on the one or more data storage devices, the one or more segments of the data object being stored in the one or more locations on the one or more data storage devices, wherein at least one of the one or more segments of each data object is stored in the key-value storage system, a value corresponding to a key in the key-value storage system is the at least one segment of the data object, and at least another one of the one or more segments of each data object is stored in the another storage system.

2. The system according to claim 1, characterized in that The at least one segment stored in the key-value storage system includes a first segment of each data object.

3. The system according to claim 1, characterized in that The at least one segment stored in the key-value storage system is less than or equal to 4096 bytes.

4. The system according to claim 1, characterized in that The key-value storage system uses a b-tree to store key-value pairs.

5. The system according to claim 1, wherein: The key-value storage system includes a plurality of indexes of key-value pairs, wherein each of the indexes of key-value pairs includes at least one key that can be used to locate the at least one segment within the key-value storage system.

6. The system according to claim 1, wherein: The computing device is further configured to: receiving a write data object to be stored on the one or more data storage devices; and At least one segment of the write data object is stored in the key-value storage system according to the composite layout.

7. The system according to claim 1, characterized in that The computing device is further configured to: receiving write data to be written to an existing data object among the one or more data objects; determining whether the write data is to be written into a segment of the existing data object stored in the key-value storage system; and If it is determined that the write data is to be written into the segment of the existing data object stored in the key-value storage system, the write data is stored in the key-value storage system.

8. The system of claim 1, wherein: The computing device is further configured to: receiving a read request to read data of an existing data object among the one or more data objects; Determining whether the read data is to be read from a segment of the existing data object stored in the key-value storage system; and If it is determined that the read data is located in the segment of the existing data object stored in the key-value storage system, the read data is read from the key-value storage system.

9. The system of claim 1, wherein: The composite layout includes a plurality of sub-layouts from lowest priority to highest priority, each sub-layout including mapping information linking one or more segments of the data object to one or more locations on the storage device, the segments of the data object being stored in the one or more locations on the storage device, wherein the mapping information of at least one sub-layout of the plurality of sub-layouts indicates whether one or more segments are stored in the key-value storage system.

10. The system according to claim 1, wherein: The one or more data storage devices include one or more solid-state drives, wherein the key-value storage system utilizes the one or more solid-state drives.

11. A method for data storage, comprising: Maintaining a key-value storage system and another storage system different from the key-value storage system using one or more data storage devices to store one or more data objects; and A composite layout is provided for each data object stored on the one or more data storage devices, the composite layout including mapping information linking one or more segments of each data object to one or more locations on the one or more data storage devices, the one or more segments of the data object being stored in the one or more locations on the one or more data storage devices, wherein at least one of the one or more segments of each data object is stored in the key-value storage system, a value corresponding to a key in the key-value storage system is the at least one segment of the data object, and at least another one of the one or more segments of each data object is stored in the another storage system.

12. The method according to claim 11, characterized in that The at least one segment stored in the key-value storage system includes a first segment of each data object.

13. The method according to claim 11, characterized in that The at least one segment stored in the key-value storage system is less than or equal to 4096 bytes.

14. The method according to claim 11, characterized in that The key-value storage system uses a b-tree to store key-value pairs.

15. The method according to claim 11, characterized in that The key-value storage system includes a plurality of indexes of key-value pairs, wherein each of the indexes of key-value pairs includes at least one key that can be used to locate the at least one segment within the key-value storage system.

16. The method of claim 11, further comprising: receiving a write data object to be stored on the one or more data storage devices; and At least one segment of the write data object is stored in the key-value storage system according to the composite layout.

17. The method of claim 11, further comprising: receiving write data to be written to an existing data object among the one or more data objects; determining whether the write data is to be written into a segment of the existing data object stored in the key-value storage system; and If it is determined that the write data is to be written into the segment of the existing data object stored in the key-value storage system, the write data is stored in the key-value storage system.

18. The method of claim 11, further comprising: receiving a read request to read data of an existing data object among the one or more data objects; Determining whether the read data is to be read from a segment of the existing data object stored in the key-value storage system; and If it is determined that the read data is located in the segment of the existing data object stored in the key-value storage system, the read data is read from the key-value storage system.

19. The method according to claim 11, characterized in that The composite layout includes a plurality of sub-layouts from lowest priority to highest priority, each sub-layout including mapping information linking one or more segments of the data object to one or more locations on the storage device, the segments of the data object being stored in the one or more locations on the storage device, wherein the mapping information of at least one sub-layout of the plurality of sub-layouts indicates whether the one or more segments of the data object are stored in the key-value storage system.

20. The method of claim 11, wherein: The one or more data storage devices include one or more solid-state drives, wherein the key-value storage system utilizes the one or more solid-state drives.

21. A method for data storage, comprising: Maintaining a key-value storage system and another storage system different from the key-value storage system using one or more storage devices to store one or more data objects; and A composite layout corresponding to the data object and describing one or more locations of one or more sections of the data object on the one or more storage devices is provided for each data object stored on the one or more storage devices, the composite layout comprising: A plurality of sub-layouts ranked from lowest priority to highest priority, each sub-layout comprising mapping information linking one or more segments of the data object to one or more locations on the storage device, the one or more segments of the data object being stored in the one or more locations on the storage device, wherein at least one of the one or more segments of each data object is stored in a key-value storage system, a value corresponding to a key in the key-value storage system is the at least one segment of the data object, and at least another one of the one or more segments of each data object is stored in another storage system different from the key-value storage system.

22. The method according to claim 21, characterized in that The mapping information of at least one sub-layout of the plurality of sub-layouts indicates whether one or more sections of the data object are stored in the key-value storage system.

Citation Information

Patent Citations

  • Data storage composite layouts for data objects

    US20180232282A1

  • Upgrading of heavy oil for steam cracking process

    US20200115644A1

  • Distributed storage method based on KEY-VALUE pair

    CN104657500A

  • Apparatus, system, and method for key-value pool identifier encoding

    US20130275656A1

  • Hybrid key-value store

    US20190012336A1