Method, apparatus, and computer program product for managing a storage system

By using synchronous messages in the storage system to load and update the dirty data list without stopping normal services, the system interruption problem caused by the failure and restart of the control node is solved, and fast response and data consistency are achieved.

CN114721583BActive Publication Date: 2025-09-19EMC IP HLDG CO LLC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202110012115.2
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2021-01-06
Publication Date
2025-09-19
Estimated Expiration
2041-01-06

AI Technical Summary

Technical Problem

In a storage system, when a control node fails and restarts, the existing technology needs to stop the service of the normal control node to load dirty data, resulting in a long interruption of the storage system and an inability to efficiently process user requests.

Method used

During the restart of the failed control node, the dirty data list is loaded and updated to the second control node by using synchronization messages without stopping the service of the normal control node, thereby ensuring data consistency and achieving fast startup.

Benefits of technology

It reduces the interruption time of the storage system, improves the response speed to user requests, and ensures data consistency and system continuity.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114721583B_ABST
    Figure CN114721583B_ABST
Patent Text Reader

Abstract

The present disclosure relates to methods, devices and computer program products for managing a storage system. The storage system includes a first control node, a second control node and a persistent storage device, the first control node is in an activated state, and the second control node is in a state of transitioning from an inactivated state to an activated state. In one method, a first list of page descriptors of the storage system is loaded into the second control node to generate a second list of page descriptors at the second control node, the first list including parts of a plurality of page descriptors of the storage system that have been modified but have not yet been flushed to the persistent storage device. A synchronization message is received from the first control node, the synchronization message indicating that the first list is modified by the first control node. The second list at the second control node is updated based on the synchronization message. Further, corresponding devices and program products are provided. By using the exemplary implementation of the present disclosure, the startup performance of the control node in the storage system can be improved.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Implementations of the present disclosure relate to storage management, and more particularly, to methods, devices, and computer program products for managing startup of a control node of a storage system. Background Art

[0002] With the development of data storage technology, various data storage devices have been able to provide users with increasingly higher data storage capabilities, and data access speeds have also been greatly improved. While improving data storage capabilities, users have also placed increasingly higher demands on data reliability and storage system response times. Currently, a variety of data storage systems based on Redundant Array of Independent Disks (RAID) have been developed to improve data reliability. In order to improve the parallel access capability of a storage system, a technical solution has been proposed to set up multiple control nodes (for example, a first control node and a second control node) in the storage system. Multiple control nodes can serve read and write requests for the storage system in parallel. In order to improve the performance of the storage system, when modifying data in the storage system, the modified data is not written directly to the persistent storage device in the storage system, but is written to the cache device, and then the data in the cache is flushed to the persistent storage device in the background.

[0003] During the operation of a storage system, if a control node in the storage system fails and needs to be restarted, dirty data in the storage system that has not yet been flushed to the persistent storage device needs to be read. In this case, how to speed up the restart of the control node becomes a technical problem. Summary of the Invention

[0004] Therefore, it is desirable to develop and implement a technical solution for managing the control nodes of a storage system in a more efficient manner. It is desirable that the technical solution be compatible with existing storage systems and improve the startup speed of the control nodes in a more efficient manner by modifying various configurations of the existing storage systems.

[0005] According to a first aspect of the present disclosure, a method for managing a storage system is provided. Here, the storage system includes a first control node, a second control node and a persistent storage device, the first control node is in an activated state, and the second control node is in a state of transitioning from an inactivated state to an activated state. In one method, a first list of page descriptors of the storage system is loaded into the second control node to generate a second list of page descriptors at the second control node, the first list including a portion of a plurality of page descriptors of the storage system that has been modified but has not yet been flushed to the persistent storage device. A synchronization message is received from the first control node, the synchronization message indicating that the first list has been modified by the first control node. The second list at the second control node is updated based on the synchronization message.

[0006] According to a second aspect of the present disclosure, an electronic device is provided, comprising: at least one processor; and a memory coupled to the at least one processor, the memory having instructions stored therein, which, when executed by the at least one processor, cause the device to execute a method according to the first aspect of the present disclosure.

[0007] According to a third aspect of the present disclosure, there is provided a computer program product tangibly stored on a non-transitory computer-readable medium and comprising machine-executable instructions for executing the method according to the first aspect of the present disclosure. BRIEF DESCRIPTION OF THE DRAWINGS

[0008] The features, advantages and other aspects of the various implementations of the present disclosure will become more apparent with reference to the following detailed description in conjunction with the accompanying drawings, which illustrate several implementations of the present disclosure in an illustrative and non-limiting manner. In the accompanying drawings:

[0009] Figure 1 schematically illustrates a block diagram of a storage system in which implementations of the present disclosure may be implemented;

[0010] Figure 2 A block diagram schematically illustrates a process for managing a storage system according to an implementation of the present disclosure;

[0011] Figure 3 A block diagram schematically illustrates a method for managing a storage system according to an implementation of the present disclosure;

[0012] Figure 4A A block diagram schematically illustrates a process for handling a situation where a page descriptor in a storage system is modified according to an implementation of the present disclosure;

[0013] Figure 4B A block diagram schematically illustrates a process for handling a situation where a modified page descriptor is flushed to a persistent storage device according to one implementation of the present disclosure;

[0014] Figure 5A and 5B Schematically illustrating a block diagram of a ring list for storing page descriptors according to an implementation of the present disclosure;

[0015] Figure 6 A block diagram schematically illustrates a process for managing a storage system according to an implementation of the present disclosure; and

[0016] Figure 7 A block diagram schematically illustrates a device for managing a storage system according to an exemplary implementation of the present disclosure. DETAILED DESCRIPTION

[0017] The following describes preferred implementations of the present disclosure in more detail with reference to the accompanying drawings. Although preferred implementations of the present disclosure are shown in the accompanying drawings, it should be understood that the present disclosure can be implemented in various forms and should not be limited by the implementations described herein. Rather, these implementations are provided to make the present disclosure more thorough and complete, and to fully convey the scope of the present disclosure to those skilled in the art.

[0018] As used herein, the term "including" and its variations represent open inclusion, i.e., "including but not limited to." Unless otherwise stated, the term "or" means "and / or." The term "based on" means "based at least in part on." The terms "an example implementation" and "an implementation" mean "at least one example implementation." The term "another implementation" means "at least one additional implementation." The terms "first," "second," etc. may refer to different or the same objects. Other explicit and implicit definitions may also be included below.

[0019] In the context of this disclosure, the exemplary implementation of the present disclosure will be described using a RAID storage system as an example of a storage system. It will be understood that the storage system may also be a storage system based on other technologies. Figure 1 An application environment according to an exemplary implementation of the present disclosure is described. Figure 1 Schematically illustrates a block diagram of a storage system 100 in which implementations of the present disclosure may be implemented. Figure 1 As shown, the storage system 100 may include a first control node 110, a second control node 120, and a persistent storage device 140. The functions of the first control node 110 and the second control node 120 are similar. In the following, only the first control node 110 will be used as an example to describe its functions.

[0020] The first control node 110 may receive read and write requests 114 from users of the storage system 100. When receiving a read request from a user device, the first control node 110 may retrieve the target data to be read from the persistent storage device 140 (or other cache device) and return the retrieved target data to the user device. When receiving a write request, in order to improve the response speed of the storage system, the first control node 110 first writes the data to be written into the cache device (e.g., Figure 1 ), and returns a “successful write” response to the user device.

[0021] At this point, the data in the shared storage device 130 is "dirty data," meaning that the data has been modified but has not yet been flushed to the persistent storage device 140. Within the storage system 100, the dirty data in the shared storage device 130 can be managed in the background. As the storage system 100 runs, the dirty data in the shared storage device 130 may continue to increase. The dirty data can be flushed to the persistent storage device 140 at predetermined time intervals (or according to other triggering conditions). To speed up data access, the first control node 110 can maintain a first list 112 of dirty data in the shared storage device 130 (e.g., in the memory of the first control node 110).

[0022] The second control node 120 operates similarly. It can service read and write requests 124 from user devices, store dirty data generated by these requests in a shared storage device 130, and maintain a second list 122 in its own memory. The first control node 110 and the second control node 120 can independently process user requests and may each write dirty data to the shared storage device 130. Each control node can synchronize its generated dirty data with the other control node via the communication channel 150 to ensure data consistency between the two control nodes.

[0023] During the operation of the storage system, if a control node in the storage system fails and is restarted, it is necessary to read the dirty data in the storage system that has not yet been flushed to the persistent storage device. A technical solution for managing the startup of control nodes has been proposed. In one technical solution, in order to avoid the potential risk of data inconsistency, during the startup of the faulty control node, it is necessary to stop the operation of the normal control node in the activated state (that is, prohibit the control node from processing read and write requests). At this time, the faulty control node can load the dirty data from the normal control node. After the loading has been completed, the operation of the normal control node is restored (that is, the control node is allowed to process read and write requests). However, depending on the amount of data in the list, the loading process may take a long time. This will cause the storage system to be unable to process read and write requests from user devices for a long time.

[0024] In order to solve the above-mentioned defects of the existing technical solutions, according to an exemplary implementation of the present disclosure, a method for managing a storage system is proposed. With this method, it is not necessary to stop the normal service of the control node in the active state. Instead, the faulty control node can be started while the control node in the active state is processing read and write requests normally. Figure 2 An overview of an exemplary implementation according to the present disclosure is described.

[0025] Figure 2 The block diagram of a process 200 for managing a storage system according to an implementation of the present disclosure is schematically shown. Assume that the first control node 110 is in a normal activation state, and the second control node 120 fails and is restarted. At this time, the second control node 120 needs to obtain dirty data in the storage system. Figure 2 As shown, the second control node 120 may load dirty data (eg, from the first control node 110 or from the shared storage device 130 ) to generate a second list 122 at the second control node 120 .

[0026] According to an exemplary implementation of the present disclosure, the operation of the first control node 110 does not need to be stopped. Instead, the first control node 110 can continue to process data read and write requests from user devices. If a write request requires changing data in the storage system, the first list 112 at the first control node 110 will change. In this case, the first control node 110 can send 220 a synchronization message to the second control node 120 to inform the second control node 120 of the change. The second control node 120 can receive the synchronization message and update 230 the second list 122 based on the synchronization message.

[0027] Using the exemplary implementations of the present disclosure, the second control node 120 can be started without interrupting the storage services of the first control node 110. Using the exemplary implementations of the present disclosure, the first control node 110 can continue to provide normal storage services before the second control node 120 successfully starts. After the second control node 120 successfully starts, both the first control node 110 and the second control node 120 can provide normal data services. In this way, the interruption time of the storage system 100 can be reduced, thereby improving the response speed to read and write requests from user devices.

[0028] In the following, see Figure 3 More details of an exemplary implementation according to the present disclosure are described. Figure 3 A block diagram of a method 300 for managing a storage system according to an implementation of the present disclosure is schematically shown. The storage system 100 includes a first control node 110, a second control node 120, and a persistent storage device 140. Here, the first control node 110 is in an activated state, and the second control node 120 is in a state of transitioning from an inactivated state to an activated state. According to an exemplary implementation of the present disclosure, dirty data may relate to a page descriptor in the storage system. Here, a page descriptor may represent an index related to data (e.g., metadata and user data) in the storage system. Specifically, the page descriptor may include at least any one of a metadata page descriptor and a user data page descriptor of the storage system.

[0029] like Figure 3 As shown, at block 310, the first list 112 of page descriptors of the storage system 100 is loaded into the second control node 120 to generate a second list 122 of page descriptors at the second control node 120. Here, the first list 112 includes a portion of the plurality of page descriptors of the storage system 100 that have been modified but not yet flushed to the persistent storage device (i.e., "dirty" page descriptors). According to an exemplary implementation of the present disclosure, the first list 112 can be loaded from multiple locations in the storage system. For example, the first list 112 can be loaded from the first control node 110 or the shared storage device 130 of the storage system.

[0030] According to an exemplary implementation of the present disclosure, the available bandwidth between the first control node 110 and the second control node 120 may be first determined. If the available bandwidth between the first control node 110 and the second control node 120 is greater than a predetermined threshold, the first list 112 may be loaded from the first control node 110 to generate the second list 122. The predetermined threshold may be determined based on the maximum time it takes to load the first list 112 from the first control node 110. For example, the predetermined threshold may be set to 0.1 seconds (or another time interval). The second control node 120 may read the first list 112 from the first control node 110 via the communication channel 150. After the first list 112 is read by the second control node 120, the second list 122 may be generated in a memory of the second control node 120.

[0031] According to an exemplary implementation of the present disclosure, each page descriptor in the first list 112 can be stored in the order in which it is added to the list. Specifically, the first list 112 may include two ends (e.g., a head and a tail). When a dirty page descriptor is generated in the read / write request storage system processed by the first control node 110, the generated dirty page descriptor can be added to the first end (e.g., the head) of the two ends. Each time a dirty page descriptor is generated, the dirty page descriptor can be added to the head of the first list 112. At this time, the head of the first list 112 will move forward one unit.

[0032] According to an exemplary implementation of the present disclosure, data may be flushed from the second end (e.g., tail) of the first list 112 in the order in which the page descriptors are added to the first list 112. Specifically, the page descriptors at the tail may be flushed to the persistent storage device 140 of the storage system 100 one at a time. At this point, the tail of the first list 112 will be moved forward by one unit, and the dirty page descriptors that have been flushed will no longer be included in the first list 112.

[0033] According to an exemplary implementation of the present disclosure, when loading the first list 112 from the first control node 110, the two ends of the first list may be determined first. It will be understood that the page descriptors between the two ends are dirty page descriptors that have not been flushed, and thus each page descriptor between the two ends may be loaded from the first control node 110 to the second control node 120.

[0034] According to an exemplary implementation of the present disclosure, if the available bandwidth between the first control node 110 and the second control node 120 is lower than a predetermined threshold, loading the first list 112 from the first control node 110 will cause an excessively high time delay. Therefore, dirty page descriptors that have not yet been flushed can be loaded from a cache device (e.g., a shared storage device 130) of the storage system 100 to generate the second list 122 in the second control node 120.

[0035] The process of generating the second list 122 has been described above. Figure 3 Describe more processing procedures related to the synchronization message from the first control node 110. At box 320, a synchronization message is received from the first control node 110, which indicates that the first list is modified by the first control node. It will be understood that the first control node 110 is always in an active state, so the first control node 110 can receive read and write requests from the user device. When receiving a read request, the first control node 110 can return the target data desired to be read to the user device. When a request to write data to the storage system 100 is received, the first control node 110 can update the corresponding page descriptor based on the write request. Further, within the storage system 100, the dirty page descriptor can be flushed to the persistent storage system 140 in the background. Specifically, the first control node 110 can modify the head or tail of the first list 112 in the manner described above.

[0036] At block 330, the second list 122 at the second control node 120 is updated based on the synchronization message. According to an exemplary implementation of the present disclosure, the synchronization message may include two types: 1) adding a new page descriptor to the first list 112; and 2) removing an existing page descriptor from the first list 112. Therefore, the second list 122 may be updated based on the two types of synchronization messages.

[0037] In the following, we will refer to Figure 4A More details about the first type of modification are described. Specifically, Figure 4A Schematically shows a block diagram of a process 400A for handling a situation where a page descriptor in a storage system is modified according to an implementation of the present disclosure. Figure 4A As shown, before the insertion process, the first list 112 includes a portion between a head 410 and a tail 412 , and the second list 122 includes a portion between a head 420 and a tail 422 .

[0038] During the process of processing a write request by the first control node 110, the write request may modify a target page descriptor. In this case, the first control node 110 may add the target page descriptor to the header 410 of the first list 112. At this time, the position of the header will move forward by one unit and reach the position of the new header 414. The first control node 110 may send a synchronization message to the second control node 120 to indicate the addition process. At the second control node 120, if it is determined that the update message indicates that the target page descriptor among the multiple page descriptors of the storage system has been added to the first list 112, the target page descriptor may be added to the second list 122.

[0039] It will be understood that the structure of the second list 122 herein can be similar to that of the first list 112. In other words, the most recently modified dirty page descriptor can be inserted into the head of the second list 122. At this time, when the second control node 120 receives a synchronization message indicating the addition process, the target page descriptor can be added to the head of the second list 122. Specifically, as shown by arrow 430, the head of the second control node 120 can be updated from head 420 to new head 424. Using the exemplary implementation of the present disclosure, the content of the updated second list 122 will be the same as the content of the first list 112 at the first control node 110. That is, the two lists are synchronized, thereby avoiding data inconsistencies caused by accessing the storage system from the two control nodes.

[0040] According to an exemplary implementation of the present disclosure, during the operation of the first control node 110, the storage system 100 manages dirty page descriptors in the background. For example, some or all dirty page descriptors in the first list 112 may be flushed to the persistent storage device 140 at predetermined time intervals and / or when the number of dirty page descriptors in the first list 112 reaches a predetermined threshold. Figure 4B A block diagram schematically illustrates a process 400B for handling a situation where modified page descriptors are flushed to persistent storage according to one implementation of the present disclosure. Before the flush process, the first list 112 includes a portion between a header 410 and a tail 412, and the second list 122 includes a portion between a header 420 and a tail 422.

[0041] Assuming that the page descriptors at the tail 412 of the first list 112 have been flushed to the persistent storage device 140, the tail 412 of the first list 112 will be moved forward by one unit to reach the new tail 416. At this time, the data at the old tail 412 is no longer valid, and the first control node 110 may send synchronization data indicating the flushing process to the second control node 120.

[0042] After receiving the synchronization data indicating the flushing process, the second control node 120 may remove the target page descriptor indicated by the synchronization request from the second list 122. Specifically, the target page descriptor may be removed from the end of the second list 122. It will be understood that the target page descriptor herein refers to data that has been flushed to the persistent storage system, and thus, at the second control node 120, it is only necessary to move the end of the second list 122 forward by one unit. Specifically, Figure 4B As shown by arrow 432 in FIG, the tail of second list 122 can be moved from old tail 422 to new tail 426. At this point, the data at old tail 422 is no longer valid. Using the exemplary implementation of the present disclosure, data consistency between first list 112 and second list 122 can be ensured, thereby ensuring data consistency of storage system 100.

[0043] Already seen Figure 4A and Figure 4B The structures of the first list 112 and the second list 122 are described. According to an exemplary implementation of the present disclosure, the first list 112 and the second list 122 can be implemented based on a ring list. Figure 5A and Figure 5B Describes more details about ring lists. Figure 5A Schematically shows a block diagram of a ring list 500A for storing page descriptors according to an implementation of the present disclosure. Figure 5A As shown, a continuous storage space 530 can be used to store the circular list. The storage space 530 can include a predetermined number (eg, 1024 or other number) of storage units, each of which can be represented by a unique index.

[0044] For example, according to Figure 5A As shown in the index direction 540, the rightmost storage unit of the storage space 530 can be represented as index 0, and the leftmost storage unit can be represented as index 1023. Each storage unit can store a page descriptor. The shaded portion in FIG5 represents the ring list portion. In other words, the dirty page descriptors in the ring list are located between the head 510 and the tail 512.

[0045] According to an exemplary implementation of the present disclosure, dirty page descriptors may be continuously added to the head 510 of the ring list, and data at the tail 520 of the ring list may be continuously flushed to the persistent storage device 140. At this time, the position of the ring list will change, and the index of the tail may be smaller than the index of the head. Figure 5B Schematically shows a block diagram of a circular list 500B for storing page descriptors according to an implementation of the present disclosure. Figure 5BIn the figure, the shaded area shows the range of the ring list, and the index of the tail 522 is smaller than the index of the head 520. At this time, the range of the ring list can be re-determined based on the "modulo" operation. Figure 5B As shown, the circular list includes storage cells between head 520 and index 1023 , and includes storage cells between index 0 and tail 522 .

[0046] According to an exemplary implementation of the present disclosure, during the operation of the storage system 100, the second list 122 may be updated according to the method described above. If it is determined that the second list has been updated, it means that the first list 112 and the second list 122 have been synchronized. At this time, the second control node 122 may be set to an active state. The main steps of the method 300 performed during the startup of the second control node 120 have been described above. Figure 6 Describes optional steps such as locking, unlocking, etc. Figure 6 Schematically shows a block diagram of a process 600 for managing a storage system according to one implementation of the present disclosure. Figure 6 As shown, when the second control node 120 starts up, the second control node 120 may enter a locked state 610. In the locked state, the second control node 120 is still in the startup process and cannot serve read and write requests from external user devices.

[0047] The second control node 120 may generate 210 a second list 122, for example, by loading page descriptors from the first control node 110 and / or the shared storage device 130 to generate the second list 122. At this point, the first control node 110 may operate normally and service read and write requests from external user devices. If the read and write requests modify page descriptors in the storage system, the modified page descriptors will be submitted 620 to the first list 112. At this point, the first control node 110 may send 622 a synchronization message to the second control node 120. After receiving the synchronization message, the second control node 120 may update the head of the second list 122 according to the synchronization message (i.e., insert the modified page descriptors into the head position).

[0048] Within the storage system, the first list 112 can be managed in the background. If a predetermined condition is met, a certain page descriptor in the first list 112 can be flushed 630 to the persistent storage device 140 of the storage system 100. At this time, the first control node 110 can send 632 a synchronization message to the second control node 120. After receiving the synchronization message, the second control node 120 can update the end of the second list 122. After the second list 122 in the second control node 120 has been successfully updated, the second control node 120 can be unlocked 640. It will be understood that during the above process, the first control node 110 does not stop working, but can continue to serve external user devices. In this way, even though the second control node 120 is in the process of starting up within the storage system 100 and cannot provide services to user devices, the storage system 100 as a whole does not interrupt its operation. In this way, the storage system 100 can continuously serve external user devices.

[0049] According to an exemplary implementation of the present disclosure, after successfully executing the following Figure 6 Following the illustrated process, an index can be created for each page descriptor in the second list 122 to speed up the response of the second control node 120. To prevent data inconsistencies in the storage system 100, the second list 122 can be locked, and each page descriptor between the head and tail of the list can be traversed to create an index. After the index is successfully created, the lock can be released and the first control node 110 can be notified that the second control node 120 has been successfully started and entered the active state. At this point, both control nodes are in normal operation and can concurrently service read and write requests from user devices.

[0050] See above for Figures 2 to 6An example of the method according to the present disclosure is described in detail, and the implementation of the corresponding device will be described below. According to the exemplary implementation of the present disclosure, a device for managing a storage system is provided. The storage system includes a first control node, a second control node and a persistent storage device, the first control node is in an activated state, and the second control node is in a state of transitioning from an inactivated state to an activated state. The device includes: a generation module, configured to load a first list of page descriptors of the storage system to the second control node to generate a second list of page descriptors at the second control node, the first list including parts of multiple page descriptors of the storage system that have been modified but not yet flushed to the persistent storage device; a receiving module, configured to receive a synchronization message from the first control node, the synchronization message indicating that the first list is modified by the first control node; and an update module, configured to update the second list at the second control node based on the synchronization message. According to the exemplary implementation of the present disclosure, the device further includes a module for executing other steps of the method 300 described above.

[0051] Figure 7 A block diagram of a device 700 for managing a storage system according to an exemplary implementation of the present disclosure is schematically shown. As shown, the device 700 includes a central processing unit (CPU) 701, which can perform various appropriate actions and processes according to computer program instructions stored in a read-only memory (ROM) 702 or loaded from a storage unit 708 into a random access memory (RAM) 703. Various programs and data required for the operation of the device 700 can also be stored in the RAM 703. The CPU 701, ROM 702, and RAM 703 are connected to each other via a bus 704. An input / output (I / O) interface 705 is also connected to the bus 704.

[0052] Various components in device 700 are connected to I / O interface 705, including an input unit 706, such as a keyboard, mouse, etc.; an output unit 707, such as various types of displays, speakers, etc.; a storage unit 708, such as a magnetic disk, optical disk, etc.; and a communication unit 709, such as a network card, modem, wireless communication transceiver, etc. The communication unit 709 allows device 700 to exchange information / data with other devices via a computer network such as the Internet and / or various telecommunication networks.

[0053] The various processes and procedures described above, such as method 300, may be performed by processing unit 701. For example, in some implementations, method 300 may be implemented as a computer software program tangibly embodied in a machine-readable medium, such as storage unit 708. In some implementations, part or all of the computer program may be loaded and / or installed onto device 700 via ROM 702 and / or communication unit 709. When the computer program is loaded into RAM 703 and executed by CPU 701, one or more steps of method 300 described above may be performed. Alternatively, in other implementations, CPU 701 may be configured in any other suitable manner to implement the aforementioned processes / methods.

[0054] According to an exemplary implementation of the present disclosure, an electronic device is provided. The electronic device includes: at least one processor; and a memory coupled to the at least one processor, the memory having instructions stored therein, which, when executed by the at least one processor, causes the device to perform an action for managing a storage system. The storage system includes a first control node, a second control node, and a persistent storage device, the first control node is in an activated state, and the second control node is in a state of transitioning from an unactivated state to an activated state. The action includes: loading a first list of page descriptors of the storage system to the second control node to generate a second list of page descriptors at the second control node, the first list including a portion of a plurality of page descriptors of the storage system that has been modified but has not yet been flushed to the persistent storage device; receiving a synchronization message from the first control node, the synchronization message indicating that the first list has been modified by the first control node; and updating the second list at the second control node based on the synchronization message.

[0055] According to an exemplary implementation of the present disclosure, updating the second list includes: in response to determining that the update message indicates that the target page descriptor among the plurality of page descriptors of the storage system is added to the first list, adding the target page descriptor to the second list.

[0056] According to an exemplary implementation of the present disclosure, the page descriptors in the second list are arranged according to time, and adding the target page descriptor to the second list includes: adding the target page descriptor to a first end of the second list.

[0057] According to an exemplary implementation of the present disclosure, updating the second list based on the synchronization message includes: in response to determining that the update message indicates that the target page descriptor in the first list is flushed to the persistent storage system, removing the target page descriptor from the second list.

[0058] According to an exemplary implementation of the present disclosure, the page descriptors in the second list are arranged according to time, and removing the target page descriptor from the second list includes: removing the target page descriptor from a second end of the second list.

[0059] According to an exemplary implementation of the present disclosure, generating the second list includes at least any one of the following: in response to determining that the available bandwidth between the first control node and the second control node is higher than a predetermined threshold, loading the first list from the first control node to generate the second list; and in response to determining that the available bandwidth between the first control node and the second control node is lower than a predetermined threshold, loading the first list from a cache device in the storage system for caching the multiple page descriptors to generate the second list.

[0060] According to an exemplary implementation of the present disclosure, loading the first list from the first control node includes: determining two ends of the first list; and loading each page descriptor between the two ends from the first control node to the second control node.

[0061] According to an exemplary implementation of the present disclosure, the action further includes: in response to determining that the second list has been updated, setting the second control node to an active state.

[0062] According to an exemplary implementation of the present disclosure, the page descriptor includes at least any one of a metadata page descriptor and a user data page descriptor of the storage system, and the action further includes: locking the second control node before loading the first list to the second control node; and unlocking the second control node in response to determining that the second list has been updated.

[0063] According to an exemplary implementation of the present disclosure, the action is performed at the second control node, and the action further includes: in response to determining that the second list has been updated, creating an index for each page descriptor in the second list.

[0064] According to an exemplary implementation of the present disclosure, a computer program product is provided, which is tangibly stored on a non-transitory computer-readable medium and includes machine-executable instructions for performing a method according to the present disclosure.

[0065] According to an exemplary implementation of the present disclosure, a computer-readable medium is provided, wherein machine-executable instructions are stored on the computer-readable medium, and when the machine-executable instructions are executed by at least one processor, the at least one processor implements the method according to the present disclosure.

[0066] The present disclosure may be a method, an apparatus, a system and / or a computer program product. The computer program product may include a computer-readable storage medium carrying computer-readable program instructions for executing various aspects of the present disclosure.

[0067] A computer-readable storage medium can be a tangible device that can hold and store instructions for use by an instruction execution device. A computer-readable storage medium can be, for example, but not limited to, an electrical storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination thereof. More specific examples (a non-exhaustive list) of computer-readable storage media include: a portable computer disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanical encoding device, such as a punch card or a raised structure in a groove on which instructions are stored, and any suitable combination thereof. As used herein, a computer-readable storage medium is not to be construed as a transient signal per se, such as a radio wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., a light pulse through a fiber optic cable), or an electrical signal transmitted through an electrical wire.

[0068] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to each computing / processing device, or downloaded to an external computer or external storage device via a network, such as the Internet, a local area network, a wide area network, and / or a wireless network. The network can include copper transmission cables, fiber optic transmission, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers. The network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions to be stored in the computer-readable storage medium in each computing / processing device.

[0069] The computer program instructions for performing the operations of the present disclosure may be assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, or source code or object code written in any combination of one or more programming languages, including object-oriented programming languages ​​such as Smalltalk, C++, and conventional procedural programming languages ​​such as "C" language or similar programming languages. The computer-readable program instructions may be executed entirely on the user's computer, partially on the user's computer, as an independent software package, partially on the user's computer, partially on a remote computer, or entirely on a remote computer or server. In the case of a remote computer, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., utilizing an Internet service provider to connect via the Internet). In some implementations, an electronic circuit, such as a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA), may be personalized by utilizing the state information of the computer-readable program instructions, which may be executed by the computer-readable program instructions to implement various aspects of the present disclosure.

[0070] Various aspects of the present disclosure are described herein with reference to flowcharts and / or block diagrams of methods, devices (systems), and computer program products implemented according to the present disclosure. It should be understood that each block of the flowcharts and / or block diagrams, and combinations of blocks in the flowcharts and / or block diagrams, can be implemented by computer-readable program instructions.

[0071] These computer-readable program instructions can be provided to a processing unit of a general-purpose computer, a special-purpose computer, or other programmable data processing device, thereby producing a machine, such that when these instructions are executed by the processing unit of the computer or other programmable data processing device, a device is generated that implements the functions / actions specified in one or more blocks in the flowchart and / or block diagram. These computer-readable program instructions can also be stored in a computer-readable storage medium, where these instructions cause the computer, programmable data processing device, and / or other device to operate in a specific manner. Thus, the computer-readable medium storing the instructions comprises an article of manufacture that includes instructions for implementing various aspects of the functions / actions specified in one or more blocks in the flowchart and / or block diagram.

[0072] Computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device, so that a series of operational steps are performed on the computer, other programmable data processing apparatus, or other device to produce a computer-implemented process, thereby causing the instructions executed on the computer, other programmable data processing apparatus, or other device to implement the functions / actions specified in one or more boxes in the flowchart and / or block diagram.

[0073] The flow charts and block diagrams in the accompanying drawings show the possible architecture, functions and operations of the systems, methods and computer program products according to multiple implementations of the present disclosure. In this regard, each box in the flow chart or block diagram can represent a part for a module, program segment or instruction, and a part for a module, program segment or instruction comprises one or more executable instructions for realizing the logical function of the specification. In some alternative implementations, the functions marked in the box can also occur in a sequence different from that marked in the accompanying drawings. For example, two continuous boxes can actually be executed substantially in parallel, and they can sometimes be executed in the opposite order, depending on the functions involved. It should also be noted that each box in the block diagram and / or flow chart, and the combination of the boxes in the block diagram and / or flow chart can be realized by a special hardware-based system that performs the function or action of the specification, or can be realized by a combination of special hardware and computer instructions.

[0074] While various implementations of the present disclosure have been described above, the foregoing description is intended to be illustrative, non-exhaustive, and not limited to the disclosed implementations. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described implementations. The terminology used herein is selected to best explain the principles of the implementations, their practical applications, or improvements to existing technologies, or to enable others skilled in the art to understand the implementations disclosed herein.

Claims

1. A method for managing a storage system, the storage system comprising a first control node, a second control node, and a persistent storage device, the first control node being in an activated state, and the second control node being in a state transitioning from an inactivated state to the activated state, the method comprising: Loading a first list of page descriptors of the storage system to the second control node to generate a second list of page descriptors at the second control node, wherein the first list includes a portion of the plurality of page descriptors of the storage system that has been modified but has not yet been flushed to the persistent storage device; receiving a synchronization message from the first control node, where the synchronization message indicates that the first list is modified by the first control node; as well as updating the second list at the second control node based on the synchronization message, Generating the second list includes at least one of the following: In response to determining that the available bandwidth between the first control node and the second control node is higher than a predetermined threshold, loading the first list from the first control node to generate the second list; as well as In response to determining that the available bandwidth between the first control node and the second control node is lower than the predetermined threshold, the first list is loaded from a cache device in the storage system for caching the plurality of page descriptors to generate the second list.

2. The method of claim 1 , wherein updating the second list comprises: In response to determining that an update message indicates that a target page descriptor among the plurality of page descriptors of the storage system is added to the first list, the target page descriptor is added to the second list.

3. The method according to claim 2, wherein the page descriptors in the second list are arranged in time, and adding the target page descriptor to the second list comprises: The target page descriptor is added to a first end of the second list.

4. The method of claim 1 , wherein updating the second list based on the synchronization message comprises: In response to determining that the update message indicates that the target page descriptor in the first list is flushed to the persistent storage device, the target page descriptor is removed from the second list.

5. The method according to claim 4 , wherein the page descriptors in the second list are arranged in time, and removing the target page descriptor from the second list comprises: The target page descriptor is removed from a second end of the second list.

6. The method of claim 1 , wherein loading the first list from the first control node comprises: determining two ends of the first list; as well as Each page descriptor between the two ends is loaded from the first control node to the second control node.

7. The method according to claim 1 , wherein the page descriptor comprises at least any one of a metadata page descriptor and a user data page descriptor of the storage system, and the method further comprises: Before loading the first list into the second control node, locking the second control node; as well as In response to determining that the second list has been updated, the second control node is unlocked.

8. The method according to claim 1, further comprising: In response to determining that the second list has been updated, the second control node is set to an active state.

9. The method according to claim 1, wherein the method is performed at the second control node, and the method further comprises: In response to determining that the second list has been updated, indexes are created for the respective page descriptors in the second list.

10. An electronic device comprising: at least one processor; as well as a memory coupled to the at least one processor, the memory having instructions stored therein, the instructions, when executed by the at least one processor, causing the device to perform actions for managing a storage system, the storage system comprising a first control node, a second control node, and a persistent storage device, the first control node being in an activated state, and the second control node being in a state transitioning from an inactivated state to the activated state, the actions comprising: Loading a first list of page descriptors of the storage system to the second control node to generate a second list of page descriptors at the second control node, wherein the first list includes a portion of the plurality of page descriptors of the storage system that has been modified but has not yet been flushed to the persistent storage device; receiving a synchronization message from the first control node, the synchronization message indicating that the first list is modified by the first control node; and updating the second list at the second control node based on the synchronization message, Generating the second list includes at least one of the following: In response to determining that the available bandwidth between the first control node and the second control node is higher than a predetermined threshold, loading the first list from the first control node to generate the second list; and In response to determining that the available bandwidth between the first control node and the second control node is lower than the predetermined threshold, the first list is loaded from a cache device in the storage system for caching the plurality of page descriptors to generate the second list.

11. The apparatus of claim 10, wherein updating the second list comprises: In response to determining that an update message indicates that a target page descriptor among the plurality of page descriptors of the storage system is added to the first list, the target page descriptor is added to the second list.

12. The apparatus according to claim 11, wherein the page descriptors in the second list are arranged in time, and adding the target page descriptor to the second list comprises: The target page descriptor is added to a first end of the second list.

13. The apparatus of claim 10, wherein updating the second list based on the synchronization message comprises: In response to determining that the update message indicates that the target page descriptor in the first list is flushed to the persistent storage device, the target page descriptor is removed from the second list.

14. The apparatus of claim 13 , wherein the page descriptors in the second list are arranged in time, and removing the target page descriptor from the second list comprises: The target page descriptor is removed from a second end of the second list.

15. The apparatus of claim 10, wherein loading the first list from the first control node comprises: determining two ends of the first list; as well as Each page descriptor between the two ends is loaded from the first control node to the second control node.

16. The apparatus according to claim 10, wherein the page descriptor comprises at least any one of a metadata page descriptor and a user data page descriptor of the storage system, and the actions further comprise: Before loading the first list into the second control node, locking the second control node; as well as In response to determining that the second list has been updated, the second control node is unlocked.

17. The apparatus of claim 10, wherein the actions are performed at the second control node, and the actions further comprise at least any one of the following: In response to determining that the second list has been updated, setting the second control node to an active state; and In response to determining that the second list has been updated, indexes are created for the respective page descriptors in the second list.

18. A computer program product tangibly stored on a non-transitory computer-readable medium and comprising machine-executable instructions for performing the method according to any one of claims 1-9.

Citation Information

Patent Citations

  • Method and apparatus for cache synchronization in a clustered environment

    US20020194429A1

  • Fast path for performing data operations

    US20070016754A1