Memory system, method of a memory system, and electronic device
Patent Information
- Application Number
- CN202311162626.8
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2022-12-08
- Filing Date
- 2023-09-08
- Publication Date
- 2026-09-25
- Estimated Expiration
- 2043-09-08
AI Technical Summary
然而,当在短时间段内发生多个存储故障时,活动集中的全部存储目标可都变得不可用,这可导致数据丢失
Smart Images

Figure CN117687567B_ABST
Abstract
Description
Technical Field
[0001] This disclosure generally relates to memory object storage systems. Background Technology
[0002] In object storage systems, a group of objects called a placement group (PG) is a set of storage targets that can be assigned to a storage target. The set of storage targets assigned to a PG is called the "acting set" of the PG.
[0003] The active set of a PG's storage target can be determined using a consistent hashing algorithm. For example, controlled replication under scalable hashing (CRUSH) can be used to assign a PG to an active set.
[0004] A pool is a collection of PGs that have the same data protection policy (e.g., each PG in the pool may have 3 data targets) and different sets of activities with storage targets (e.g., some objects in each PG may be assigned to different data targets). Pools can be used to distribute data across many different sets of activities.
[0005] When a storage failure occurs, a PG with offline data storage (e.g., data storage location) in its active set can be reassigned to a new active set with online data storage. However, when multiple storage failures occur within a short period, all storage targets in the active set may become unavailable, potentially leading to data loss. Summary of the Invention
[0006] This disclosure has been made to at least address the aforementioned disadvantages and to provide at least the advantages described below.
[0007] According to one aspect of this disclosure, a method includes: generating a new storage target allocation for a PG as a last start set, the PG including a last start set and a last clean set, wherein the last start set includes the current set of storage targets allocated to the PG, and the last clean set includes the set of storage targets allocated to the PG when all data stores in the active set of the PG's storage targets were last online and were latest; performing processing for rebalancing or adding new data stores in the last start set; storing one or more of the new data stores in a supplementary clean list; and performing one or more update operations on the last start set based on the supplementary clean list.
[0008] According to another aspect of this disclosure, a system includes a memory and a controller, the controller being configured to: generate new storage target allocations for a PG as a last start set, the PG including a last start set and a last clean set, wherein the last start set includes the current set of storage targets allocated to the PG, and the last clean set includes the set of storage targets allocated to the PG when all data storage in the active set of the PG's storage targets was last online and was up-to-date; perform processing for rebalancing or adding new data storage in the last start set; store one or more of the new data storage in a supplementary clean list; and perform one or more update operations on the last start set based on the supplementary clean list.
[0009] According to another aspect of the invention, an electronic device includes: a memory configured to store instructions; and a processor configured to execute the instructions. When executed, the instructions cause the electronic device to: generate a new storage target allocation for a storage target group (PG) as a last start set, the PG including a last start set and a last clean set, wherein the last start set includes the current set of storage targets allocated to the PG, and the last clean set includes the set of storage targets allocated to the PG when all data storage in the active set of the PG's storage targets was last online and was latest; perform processing for rebalancing or adding new data storage in the last start set; store one or more of the new data storage in a supplementary clean list; and perform one or more update operations on the last start set based on the supplementary clean list. Attached Figure Description
[0010] The above and other aspects, features, and advantages of specific embodiments of the present disclosure will become more apparent from the following detailed description taken in conjunction with the accompanying drawings, in which:
[0011] Figure 1 This illustrates a concept in an object storage system according to an embodiment;
[0012] Figures 2A to 2B This illustrates a scenario where the "last start" set has worse data protection than the "last clean" set, according to an embodiment.
[0013] Figure 3 This diagram illustrates a flowchart of an embodiment for allocating storage targets using a supplementary clean list;
[0014] Figure 4 This illustrates a scenario where a specific storage target in a new allocation, according to an embodiment, is designated as clean.
[0015] Figure 5A This illustrates a scenario where a storage target X is removed from the active set according to an embodiment;
[0016] Figure 5BThis illustrates a scenario where PG1 becomes completely clean according to an embodiment;
[0017] Figure 6 This illustrates a memory system according to embodiments for executing structural components of the embodiments described in this application; and
[0018] Figure 7 An electronic device in a network environment according to an embodiment is shown. Detailed Implementation
[0019] In the following description, embodiments of the present disclosure are described in detail with reference to the accompanying drawings. It should be noted that although the same elements are shown in different drawings, the same elements will be designated by the same reference numerals. In the following description, specific details (such as detailed configurations and components) are provided only to aid in a general understanding of the embodiments of the present disclosure. Therefore, it will be apparent to those skilled in the art that various changes and modifications can be made to the embodiments described herein without departing from the scope of the present disclosure.
[0020] Furthermore, for clarity and brevity, descriptions of well-known functions and constructions have been omitted. The terminology described below is defined with reference to the functions in this disclosure and may vary depending on the user, the user's intent, or habit. Therefore, the definitions of the terms should be determined based on the content throughout this specification.
[0021] This disclosure can have various modifications and embodiments, which are described in detail below with reference to the accompanying drawings. However, it should be understood that this disclosure is not limited to these embodiments, but includes all modifications, equivalents, and substitutions within the scope of this disclosure.
[0022] Although terms including ordinal numbers (such as first, second, etc.) are used to describe various elements, structural elements are not limited by these terms. These terms are used to distinguish one element from another. For example, a first structural element may be referred to as a second structural element without departing from the scope of this disclosure. Similarly, a second structural element may also be referred to as a first structural element. As used herein, the term "and / or" includes any and all combinations of one or more related items.
[0023] The terminology used herein is for the purpose of describing various embodiments of this disclosure only and is not intended to limit the disclosure. Unless the context clearly indicates otherwise, the singular forms are intended to include the plural forms. In this disclosure, it should be understood that the terms “comprising” or “having” indicate the presence of features, quantities, steps, operations, structural elements, components, or combinations thereof, and do not exclude the presence or possible addition of one or more other features, quantities, steps, operations, structural elements, components, or combinations thereof.
[0024] Unless otherwise defined, all terms used herein shall have the same meaning as understood by one of skill in the art to which this disclosure pertains. Unless clearly defined in this disclosure, terms (such as those defined in a general dictionary) shall be interpreted as having the same meaning as in the context of the relevant technical field and shall not be interpreted as having an idealized or overly formal meaning.
[0025] The electronic device according to one embodiment can be one of various types of electronic devices utilizing a storage device. For example, the electronic device may include a portable communication device (e.g., a smartphone), a computer, a portable multimedia device, a portable medical device, a camera, a wearable device, or a home appliance. According to one disclosed embodiment, the electronic device is not limited to the electronic devices described above.
[0026] The terminology used in this disclosure is not intended to limit the disclosure, but is intended to include various changes, equivalents, or substitutions of corresponding embodiments. Regarding the description of the drawings, similar reference numerals may be used to denote similar or related elements. Unless the relevant context clearly indicates otherwise, the singular form of a noun corresponding to an item may include one or more things. As used herein, each of phrases such as “A or B,” “at least one of A and B,” “at least one of A or B,” “A, B, or C,” “at least one of A, B, and C,” and “at least one of A, B, or C” may include all possible combinations of items enumerated together with their corresponding phrases. As used herein, terms such as “first,” “second,” “first,” and “second” may be used to distinguish a corresponding component from another component, and are not intended to limit the component in other respects (e.g., importance or order). The intention is that if an element (e.g., a first element) is referred to as being “combined” with, “combined to”, “connected to”, or “attached to” another element (e.g., a second element) with or without the terms “operably” or “communically”, it indicates that the element can be combined with the other element directly (e.g., wired), wirelessly, or via a third element.
[0027] As used herein, the term "module" may include a unit implemented in hardware, software, firmware, or a combination thereof, and may be used interchangeably with other terms (e.g., "logic," "logic block," "component," or "circuit"). A module may be a single integrated component adapted to perform one or more functions, or its smallest unit or component. For example, according to one embodiment, a module may be implemented in the form of an application-specific integrated circuit (ASIC).
[0028] A PG can have two storage target allocations. The "last clean" set can be the set of storage targets allocated to the PG when all data stores in the PG's active set were last online and the latest versions (e.g., most recently written) of all objects belonging to that PG were stored on that data store. The "last started" set can be the current set of storage targets allocated to the PG. When the PG is "clean" (e.g., when there are no faulty data stores in the PG), the "last clean" set can be the same as the "last started" set. The expression "up-to-date" can be used to describe a data store where the latest versions of all objects belonging to a given PG are stored on that data store.
[0029] When multiple storage failures occur within a short period of time, the allocation of the "last start" set may provide worse data protection than the allocation of the "last clean" set (fewer online storage targets are allocated to a given PG).
[0030] Figure 1 This illustrates a concept in an object storage system according to an embodiment.
[0031] Reference Figure 1 PG 101 has an active set [A, B, C] of storage targets. For example, the storage targets may be memory devices (such as solid-state drives (SSDs)). To increase data durability, each object 102 in PG 101 may have data written to each storage target in the active set of PG 101.
[0032] For example, each object 102 in PG 101 can be replicated (e.g., in different fault domains) to a predetermined number (e.g., 3) different data stores. The data stores can be located in different physical locations. Therefore, even if two data stores are lost, data loss is prevented.
[0033] Figures 2A to 2B This illustrates a situation where the "last start" set has worse data protection than the "last clean" set according to an embodiment.
[0034] Reference Figures 2A to 2B PG1 has an existing allocation [A, B, C] for the storage target. PG1 then acquires a new allocation for the storage target (e.g., [A, X, Y]). At some point (e.g., when copying data from a known data store to a new data store (this may also be referred to as "rebalancing")), one of the added data stores (e.g., Y) becomes offline. In this case, when the rebalancing is complete, PG1 will accept the new allocation with a lower data protection level for two data stores instead of the desired data protection level for three data stores.
[0035] However, instead of accepting a new allocation and thus lowering the level of data protection (by assigning the "last start" set to the "last clean" set), a supplemental clean list can be used to record one or more storage targets in the new allocation as "clean" (e.g., up-to-date).
[0036] Figure 3 A flowchart is shown according to an embodiment for allocating storage targets using a supplementary clean list.
[0037] Reference Figure 3 In step 301, a new storage target allocation for the PG is generated as the last start set. The PG may include a last start set and a last clean set. The last start set may include the current set of storage targets allocated to the PG, and the last clean set may include the set of storage targets allocated to the PG when all data storage in the active set of the PG's storage targets was last online and was the most recent.
[0038] In step 302, a process for rebalancing or adding new data storage to the final starting set is performed.
[0039] In step 303, one or more of the new data stores are stored in the supplementary clean list.
[0040] In step 304, one or more update operations are performed on the last starting set based on the supplemented clean list.
[0041] In one embodiment, it can be determined that the last starting set has been fully updated, and in response to determining that the last starting set has been fully updated, the classification of the last starting set can be updated to the last clean set. In one embodiment, the last clean set can be retained until the last starting set has been fully updated. In one embodiment, it can be determined that the last starting set has not been fully updated, and in response to determining that the last starting set has not been fully updated, the last starting set, the last clean set, and the supplementary clean list can be maintained. In one embodiment, a rebalancing can be performed to ensure that new data storage in the last starting set is up-to-date. In one embodiment, when the rebalancing is complete, any new online data storage in the last starting set can be placed in the supplementary clean list. In one embodiment, if the PG is fully clean, the last starting set can be assigned to the last clean set, and the supplementary clean list can be cleared. In one embodiment, if the PG is not fully clean, the last starting set can be maintained to remain different from the last clean set, and the supplementary clean list can be retained. In one embodiment, the PG can be fully clean when the rebalancing operation completes successfully.
[0042] Figure 4This illustrates a scenario where a specific storage target in a new allocation, according to an embodiment, is designated as clean.
[0043] Reference Figure 4 PG1 includes newly allocated storage targets [A, X, Y]. However, the newly allocated storage target Y can be offline. In this case, X can be represented as a "clean" data store and placed in PG1's supplementary clean list. A "clean" data store can be a data store containing the latest version of all objects in PG1. After placing the data store in the supplementary clean list, PG1 can maintain dual allocation. Therefore, PG1 can maintain the desired data protection level (e.g., 3). Furthermore, see the following reference... Figures 5A to 5B As stated, X can remain in the clean list until one of the two things happens.
[0044] Figure 5A This illustrates a scenario where a storage target X is removed from the active set according to an embodiment. Figure 5B This illustrates a scenario where PG1 becomes completely clean according to an embodiment.
[0045] Reference Figure 5A This illustrates the first scenario where X is removed from the supplementary clean list. (Example:) Figure 5A As shown, the last starting set of PG1 is [A,B,Z]. In this case, if X has not yet been used to "plug a leak" in the "last clean" set ("plug a leak" can mean that a data store in the supplementary clean list is used to replace a data store in the "last clean" set), then X can be removed from the active set the next time PG1 is assigned to a set of data stores that do not include X.
[0046] Reference Figure 5B This illustrates a second scenario where X is removed from the supplementary clean list. (Example:) Figure 5B As shown, the "last start" set is equivalent to the "last clean" set (which is [A,X,C]). In this case, since PG1 is completely clean, X can be removed from the supplementary clean list.
[0047] Therefore, using a supplemental clean list provides a greater level of data protection and thus reduces the likelihood of data loss. This, in turn, reduces the amount of rebalancing that may occur, as consistent hashing algorithms (e.g., CRUSH) allow data storage to potentially be reused in future PG allocations.
[0048] For example, refer to Figures 5A to 5BA clean data store [B,C,X] can be included in the next allocation of PG1. Any data stores tracked in the supplementary clean list will not need to be up-to-date via rebalancing, and therefore will require minimal rebalancing work to bring PG1 up-to-date after the next allocation. Furthermore, the supplementary clean list advantageously avoids the use of more complex solutions (e.g., state machines) to track the history of "which data stores are up-to-date in which intervals".
[0049] Figure 6 This is a memory system illustrating, according to an embodiment, a structural component for executing the embodiments described in this application.
[0050] Figures 1 to 5B The operations described herein can be executed by a controller, a processor, or computer-implemented instructions stored in memory. For example, instructions executed by a controller can be implemented using an FPGA, an ASIC, a general-purpose computer, or via a remote processing system (e.g., a cloud computing system).
[0051] Reference Figure 6 A memory system 600 capable of performing the embodiments described in this application is shown. The memory system 600 includes a host 601, an IC 602 (e.g., a memory buffer chip), and DRAM (e.g., non-volatile memory) 603. Although the DRAM is shown separate from the IC 602, the DRAM may be included on the IC 602.
[0052] IC 602 includes a host interface 604, SRAM (e.g., volatile memory) 605, storage medium (e.g., flash memory) 606, and a controller 607. The host interface 604 can transfer information from host 601 to IC 602 or from IC 602 to host 601. The SRAM 605 can be relatively smaller in size compared to DRAM 603. However, the SRAM 605 can have faster read / write speeds than DRAM 603. Furthermore, the storage medium 606 can store data to be sent to host 601 and / or DRAM 603 or from host 601 and / or DRAM 603.
[0053] The embodiments described in this application provide specific configurations to improve access to stored information (in particular, access to stored information in a decomposed object storage system). Figure 6 The storage system shown provides a structure for implementing embodiments of this application. However, it should be noted that embodiments of this application are not limited to... Figure 6 The structure is such that, as those skilled in the art will recognize, other memory storage systems can be applied to implement embodiments of this application.
[0054] Figure 7An electronic device in a network environment according to an embodiment is shown.
[0055] Reference Figure 7 In network environment 700, electronic device 701 (e.g., a mobile terminal including GPS functionality) can communicate with electronic device 702 via a first network 798 (e.g., a short-range wireless communication network), or with electronic device 704 or server 708 via a second network 799 (e.g., a long-range wireless communication network). Electronic device 701 can communicate with electronic device 704 via server 708. Electronic device 701 may include processor 720, memory 730, input device 750, sound output device 755, display device 760, audio module 770, sensor module 776, interface 777, connection terminal 778, haptic module 779, camera module 780, power management module 788, battery 789, communication module 790, subscriber identification module (SIM) 796, or antenna module 797 including a GNSS antenna. In one embodiment, at least one of the components (e.g., display device 760 or camera module 780) may be omitted from electronic device 701, or one or more other components may be added to electronic device 701. In one embodiment, some of the components may be implemented as a single IC. For example, sensor module 776 (e.g., fingerprint sensor, iris sensor, or illuminance sensor) may be embedded in display device 760 (e.g., display).
[0056] Processor 720 can execute, for example, software (e.g., program 740) to control at least one other component (e.g., hardware or software component) of electronic device 701 in conjunction with processor 720, and can perform various data processing or calculations. As at least part of data processing or calculation, processor 720 can load commands or data received from other components (e.g., sensor module 776 or communication module 790) into volatile memory 732, process the commands or data stored in volatile memory 732, and store the resulting data in non-volatile memory 734. Processor 720 may include a main processor 721 (e.g., central processing unit (CPU) or application processor) and an auxiliary processor 723 (e.g., graphics processing unit (GPU), image signal processor (ISP), sensor hub processor, or communication processor (CP)), which may operate independently of or in conjunction with main processor 721. Additionally or optionally, auxiliary processor 723 may be adapted to consume less power than main processor 721 or to perform specific functions. The auxiliary processor 723 may be implemented separately from the main processor 721 or as part of the main processor 721.
[0057] The auxiliary processor 723 may replace the main processor 721 when the main processor 721 is inactive (e.g., in a sleep state), or, when the main processor 721 is active (e.g., executing an application), control, together with the main processor 721, at least some of the functions or states associated with at least one component of the electronic device 701 (e.g., display device 760, sensor module 776, or communication module 790). According to one embodiment, the auxiliary processor 723 (e.g., an image signal processor or a communication processor) may be implemented as part of another component (e.g., a camera module 780 or communication module 790) functionally associated with the auxiliary processor 723.
[0058] The memory 730 may store various data used by at least one component of the electronic device 701 (e.g., processor 720 or sensor module 776). The various data may include, for example, software (e.g., program 740) and input or output data for software-related commands. The memory 730 may include volatile memory 732 or non-volatile memory 734.
[0059] The program 740 may be stored as software in the memory 730 and may include, for example, an operating system (OS) 742, middleware 744, or application 746.
[0060] Input device 750 can receive commands or data from outside electronic device 701 (e.g., a user) to be used by other components of electronic device 701 (e.g., processor 720). Input device 750 may include, for example, a microphone, mouse, or keyboard.
[0061] The sound output device 755 can output sound signals to the outside of the electronic device 701. The sound output device 755 may include, for example, a speaker or a receiver. The speaker can be used for general purposes (such as playing multimedia or recording), and the receiver can be used to receive incoming calls. According to one embodiment, the receiver may be implemented separately from the speaker or as part of the speaker.
[0062] Display device 760 can visually provide information to the outside of electronic device 701 (e.g., to a user). Display device 760 may include, for example, a display, a holographic device, or a projector, and a control circuitry system for controlling a respective one of the display, holographic device, and projector. According to one embodiment, display device 760 may include a touch circuitry system adapted to detect touch or a sensor circuitry system (e.g., a pressure sensor) adapted to measure the intensity of the force caused by touch.
[0063] The audio module 770 can convert sound into electrical signals and vice versa. According to one embodiment, the audio module 770 can acquire sound via an input device 750, or output sound via a sound output device 755 or an earphone of an external electronic device 702 that is directly (e.g., wired) or wirelessly combined with the electronic device 701.
[0064] Sensor module 776 can detect the operating state of electronic device 701 (e.g., power or temperature) or the environmental state outside electronic device 701 (e.g., user state), and then generate an electrical signal or data value corresponding to the detected state. Sensor module 776 may include, for example, an attitude sensor, a gyroscope sensor, an atmospheric pressure sensor, a magnetic sensor, an accelerometer, a grip sensor, a proximity sensor, a color sensor, an infrared (IR) sensor, a biosensor, a temperature sensor, a humidity sensor, or an illuminance sensor.
[0065] Interface 777 may support one or more specific protocols for electronic device 701 to be directly (e.g., wired) or wirelessly coupled to external electronic device 702. According to one embodiment, interface 777 may include, for example, a High Definition Multimedia Interface (HDMI), a Universal Serial Bus (USB) interface, a Secure Digital Card (SD) interface, or an audio interface.
[0066] The connection terminal 778 may include a connector, via which the electronic device 701 can be physically connected to an external electronic device 702. According to one embodiment, the connection terminal 778 may include, for example, an HDMI connector, a USB connector, an SD card connector, or an audio connector (e.g., a headphone connector).
[0067] The haptic module 779 can convert electrical signals into mechanical stimuli (e.g., vibration or movement) or electrical stimuli that can be recognized by a user via touch or kinesthesia. According to one embodiment, the haptic module 779 may include, for example, a motor, a piezoelectric element, or an electrical stimulator.
[0068] The camera module 780 can capture still or moving images. According to one embodiment, the camera module 780 may include one or more lenses, an image sensor, an image signal processor, or a flash.
[0069] The power management module 788 manages the power supplied to the electronic device 701. The power management module 788 may be implemented as at least part of, for example, a power management integrated circuit (PMIC).
[0070] Battery 789 can supply power to at least one component of electronic device 701. According to one embodiment, battery 789 may include, for example, a non-rechargeable primary battery, a rechargeable secondary battery, or a fuel cell.
[0071] Communication module 790 can support the establishment of a direct (e.g., wired) or wireless communication channel between electronic device 701 and external electronic devices (e.g., electronic device 702, electronic device 704, or server 708), and perform communication via the established communication channel. Communication module 790 may include one or more communication processors that can operate independently of processor 720 (e.g., application processor) and support direct (e.g., wired) or wireless communication. According to one embodiment, communication module 790 may include wireless communication module 792 (e.g., cellular communication module, short-range wireless communication module, or Global Navigation Satellite System (GNSS) communication module) or wired communication module 794 (e.g., local area network (LAN) communication module or power line communication (PLC) module). A corresponding one of these communication modules can communicate via a first network 798 (e.g., a short-range communication network such as Bluetooth). TM The communication module 792 communicates with external electronic devices via a network 799 (e.g., a Wi-Fi Direct or Infrared Data Association (IrDA) standard) or a second network 799 (e.g., a long-range communication network, such as a cellular network, the Internet, or a computer network, such as a LAN or a wide area network (WAN)). These various types of communication modules can be implemented as a single component (e.g., a single IC) or as multiple components separate from each other (e.g., multiple ICs). The wireless communication module 792 can use user information (e.g., International Mobile Subscriber Identity (IMSI)) stored in the user identification module 796 to identify and authenticate electronic devices 701 in the communication network (e.g., a first network 798 or a second network 799).
[0072] Antenna module 797 can transmit signals or power to or from the outside of electronic device 701 (e.g., external electronic device). According to one embodiment, antenna module 797 may include one or more antennas, and thus, at least one antenna suitable for a communication scheme used in a communication network (such as a first network 798 or a second network 799) can be selected, for example, by communication module 790 (e.g., wireless communication module 792). Signals or power can then be transmitted or received between communication module 790 and external electronic device via the selected at least one antenna.
[0073] At least some of the above components can be combined with each other and transmit signals (e.g., commands or data) therebetween via inter-peripheral communication schemes (e.g., bus, general purpose input and output (GPIO), serial peripheral interface (SPI) or mobile industrial processor interface (MIPI)).
[0074] According to one embodiment, commands or data can be sent or received between electronic device 701 and external electronic device 704 via server 708 connected to a second network 799. Each of electronic devices 702 and 704 can be of the same or different type as electronic device 701. All or some of the operations to be performed at electronic device 701 can be performed at one or more of the external electronic devices 702, 704, and 708. For example, if electronic device 701 is required to perform a function or service automatically or in response to a request from a user or another device, electronic device 701 may request one or more external electronic devices to perform at least a portion of the function or service, rather than performing the function or service, or in addition to performing the function or service, electronic device 701 may request one or more external electronic devices to perform at least a portion of the function or service. Upon receiving the request, one or more external electronic devices may perform at least a portion of the requested function or service or additional functions or services associated with the request, and transmit the result of the execution to electronic device 701. As at least part of a response to the request, electronic device 701 may provide the result with or without further processing. For this purpose, cloud computing, distributed computing, or client-server computing technologies may be used, for example.
[0075] One embodiment may be implemented as software (e.g., program 740) including one or more instructions stored in a storage medium (e.g., internal memory 736 or external memory 738) readable by a machine (e.g., electronic device 701). For example, a processor of electronic device 701 may invoke at least one of the one or more instructions stored in the storage medium and execute the at least one instruction under the control of the processor, with or without the use of one or more other components. Thus, the machine may be operable to perform at least one function according to the invoked at least one instruction. The one or more instructions may include code generated by a compiler or code executable by an interpreter. The machine-readable storage medium may be provided in the form of a non-transitory storage medium. The term "non-transitory" indicates that the storage medium is a tangible means and does not include signals (e.g., electromagnetic waves), but this term does not distinguish between data being semi-permanently stored in the storage medium and data being temporarily stored in the storage medium.
[0076] According to one embodiment, the methods of this disclosure may be included and provided in a computer program product. The computer program product may be traded as a product between a seller and a buyer. The computer program product may be distributed in the form of a machine-readable storage medium (e.g., an optical disc read-only memory (CD-ROM)) or via an app store (e.g., the Play Store). TMThe computer program product may be distributed online (e.g., downloaded or uploaded) or directly between two user devices (e.g., smartphones). If distributed online, at least a portion of the computer program product may be temporarily generated or at least temporarily stored in a machine-readable storage medium (such as the memory of a manufacturer's server, an app store's server, or a relay server).
[0077] According to one embodiment, each of the above components (e.g., a module or program) may include a single entity or multiple entities. One or more of the above components may be omitted, or one or more other components may be added. Optionally or additionally, multiple components (e.g., modules or programs) may be integrated into a single component. In this case, the integrated component may still perform one or more functions of each of the multiple components in the same or similar manner as they were performed by the corresponding one of the multiple components prior to integration. Operations performed by a module, program, instruction, or other component may be performed sequentially, in parallel, repeatedly, or heuristically, or one or more of the operations may be performed in a different order or omitted, or one or more other operations may be added.
[0078] Although specific embodiments of this disclosure have been described in detail, this disclosure can be modified in various forms without departing from its scope. Therefore, the scope of this disclosure should not be determined solely based on the described embodiments, but rather on the appended claims and their equivalents.
Claims
1. A method comprising: A new storage target allocation for a placement group (PG) is generated as the last start set. The PG includes the last start set and the last clean set. The last start set includes the current set of storage targets allocated to the PG, and the last clean set includes the set of storage targets allocated to the PG when all data storage in the active set of the PG's storage targets was online and was up-to-date. Perform the processing used to rebalance or add new data storage in the final starting set; Store one or more of the new data stores in the supplementary clean list; and Perform one or more update operations on the last starting set based on the supplemented clean list. The method further includes: if the PG is not completely clean, maintaining the last starting set to remain different from the last clean set, and retaining a supplementary clean list.
2. The method according to claim 1, further comprising: Confirm that the last set has been completely updated; as well as In response to the determination that the last starting set has been completely updated, the classification of the last starting set is updated to the last clean set.
3. The method according to claim 2, wherein, The final clean set is preserved until the final starting set is completely updated.
4. The method according to claim 1, further comprising: It was determined that the last set was not fully updated. as well as In response to the determination that the last start set has not been fully updated, maintain the last start set, the last clean set, and the supplementary clean list.
5. The method according to claim 1, further comprising: Perform a rebalancing to ensure that the new data storage in the last set is up-to-date.
6. The method according to claim 5, further comprising: When the rebalancing is complete, any new online data storage that was last centralized will be placed into the supplementary clean list.
7. The method according to claim 1, further comprising: If PG is completely clean, then the last start set is assigned to the last clean set, and the supplementary clean list is cleared.
8. The method according to claim 1, further comprising: When generating the next storage target allocation for a PG, remove any data stores from the supplement clean list if any data stores in the supplement clean list no longer appear in the last starting set or if the PG is completely clean.
9. The method according to claim 8, wherein, When the rebalancing operation is successfully completed, the PG is completely clean.
10. A system comprising: Memory; as well as The controller is configured as follows: A new storage target allocation is generated for the placement group PG as the last start set. PG includes the last start set and the last clean set. The last start set includes the current set of storage targets allocated to PG, and the last clean set includes the set of storage targets allocated to PG when all data storage in the active set of storage targets in PG was online and most recent. Perform the processing used to rebalance or add new data storage in the final starting set. Store one or more of the new data stores in the supplementary clean list, and Perform one or more update operations on the last starting set based on the supplemented clean list. The controller is also configured to maintain the last starting set to be different from the last clean set if the PG is not completely clean, and to retain the supplementary clean list.
11. The system according to claim 10, wherein, The controller is also configured as follows: It is confirmed that the last set has been completely updated; and In response to the determination that the last starting set has been completely updated, the classification of the last starting set is updated to the last clean set.
12. The system according to claim 11, wherein, The final clean set is preserved until the final starting set is completely updated.
13. The system according to claim 10, wherein, The controller is also configured as follows: It was determined that the last set was not fully updated; and In response to the determination that the last start set has not been fully updated, maintain the last start set, the last clean set, and the supplementary clean list.
14. The system according to claim 10, wherein, The controller is also configured to perform a rebalancing to ensure that the new data storage in the last set is up-to-date.
15. The system according to claim 14, wherein, The controller is also configured to place any new online data storage that was last centralized into a supplementary clean list when the rebalancing is complete.
16. The system according to claim 10, wherein, The controller is also configured to assign the last start set to the last clean set and clear the supplementary clean list if the PG is completely clean.
17. The system according to claim 10, wherein, The controller is also configured to remove any data stores from the supplement clean list when generating the next storage target allocation for the PG, either when any data stores in the supplement clean list no longer appear in the last starting set or when the PG is completely clean.
18. An electronic device comprising: The memory is configured to store instructions; as well as The processor is configured to execute the instructions, causing the electronic device to: A new storage target allocation is generated for the placement group PG as the last start set. PG includes the last start set and the last clean set. The last start set includes the current set of storage targets allocated to PG, and the last clean set includes the set of storage targets allocated to PG when all data storage in the active set of storage targets in PG was online and most recent. Perform the processing used to rebalance or add new data storage in the final starting set. Store one or more of the new data stores in the supplementary clean list, and Perform one or more update operations on the last starting set based on the supplemented clean list. The processor is also configured to execute the instructions such that the electronic device: if the PG is not completely clean, maintains the last starting set to remain different from the last clean set, and retains a supplementary clean list.
Citation Information
Patent Citations
Data recovery method, server and computer readable medium
CN108958970A
Distributed storage system homing group member selection method and device and medium
CN111124289A