Storage system and data management method
By transferring access processing and storage area management permissions in a multi-controller storage system and distribute processing between controllers, the increase in dependencies and communication overhead caused by LU access processing transfer is solved, and performance improvement is achieved and improve resource utilization efficiency.
Patent Information
- Application Number
- CN202110191209.0
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-08-25
- Filing Date
- 2021-02-20
- Publication Date
- 2025-02-14
- Estimated Expiration
- 2041-02-20
AI Technical Summary
In a multi-controller storage system, the transfer of LU access processing results in an increase in processing dependencies between controllers and an increase in communication overhead. Especially in the presence of data mixing, the transfer of storage area management permissions becomes difficult.
By transferring access processing permissions and storage area management permissions between controllers and distribute processing in the storage system, the specific method includes transferring data from the original storage area to the storage area managed by the new controller during the LU access processing transfer, and During GC processing, data transfer and handover are performed asynchronously to reduce the dependencies and communication overhead between controllers.
It realizes the reduction of processing dependencies between controllers in a multi-controller storage system, reduces communication overhead, and improves storage system performance and controller resource utilization efficiency.
Smart Images

Figure CN114115705B_ABST
Abstract
Description
Technical Field
[0001] The present invention relates to communication between controllers. Background Art
[0002] In a storage system that requires processing performance for data access, performance improvement is achieved by distributing processing to multiple controllers. In order to prevent performance degradation caused by the concentration of load on a specific controller and to maximize the use of controller resources in the above storage system, it is necessary to average the load. In addition, in order to prevent the increase of communication overhead in access processing, the dependency between the processing of controllers is eliminated as much as possible, and the access processing needs to be terminated within each controller.
[0003] Therefore, in a storage system having multiple controllers, it is necessary to first distribute access processing to each controller in units such as logical units (LUs) in which access processing is independent of each other (hereinafter collectively referred to as LUs) so as to even out the load on each controller. LUs are recognized as devices and storage areas independent of a host that is an access source, and therefore, access processing can be performed independently for each LU. That is, by fixing the controller that performs access processing for each LU to one, it is possible to avoid overhead caused by communication between controllers.
[0004] In addition to the access processing of LU, the storage area managed by each controller (data writing and data sorting) needs to be separated. In particular, in a storage system that dynamically configures data like a log structure, when data is saved from multiple controllers to a shared storage area, communication between controllers with exclusive control occurs. Therefore, by separating the storage area written by each controller, data can be dynamically configured without exclusive control between controllers.
[0005] In this regard, Patent Document 1 discloses a method for allocating storage areas that can be shared by multiple controllers constituting a memory, with respect to the storage areas that are managed and used by each controller, so that a single controller accesses each part of the storage area, thereby avoiding sharing of storage areas from multiple controllers, thereby avoiding performance degradation caused by communication between controllers. In addition, Patent Document 1 discloses a method for allocating processing to controllers of additional memory by changing the allocation of storage areas that are managed and used by each controller and transferring access processing of LUs between controllers in a memory having multiple controllers.
[0006] Prior art literature
[0007] Patent Literature
[0008] Patent Document 1: International Publication No. 2014 / 147657 Summary of the invention
[0009] Problems to be solved by the invention
[0010] In a storage system where the access load varies, in order to maintain a state where the load between controllers is averaged, the allocation of access processing is changed according to the variation of the access load. When the access processing is allocated in units of LUs, the controller with a low load needs to hand over the access processing of the LU from the controller with a high load. At this time, after the access processing of the LU is transferred, it is also necessary to maintain a state where the dependency between the access processing of the LU and the processing between the controllers in the storage area management is eliminated as much as possible, and to minimize the communication overhead.
[0011] On the other hand, when the access processing of LU is transferred between controllers, the controller that performs the access processing of LU and the controller that performs the storage area management are separated, and a dependency relationship between the processing of the controllers is generated. In order to remove this dependency relationship, the authority of the storage area management used by LU needs to be transferred between the controllers.
[0012] However, when the data of the LUs accessed by the controller of the transfer source are mixed in the storage area, the transfer of the authority of the storage area management becomes difficult. For example, in order to prevent the performance of the SSD (Solid State Drive) used in the storage medium from being degraded and causing random writes that consume its life, in the storage area management of the log structure, the write data relative to each LU needs to be collected in the same storage area and saved continuously. In addition, in the case where the storage system has a deduplication function, in order to improve the effect of data reduction and achieve an improvement in capacity efficiency, deduplication of data between LUs is required. At this time, multiple LUs need to refer to the same storage area in order to share data. Therefore, the transfer of access processing through LUs will inevitably generate a dependency relationship between the processing of the controllers.
[0013] That is, the problem in a storage system in which multiple controllers share a storage area is that the data of multiple LUs are stored in a mixed state for each part that becomes a management and allocation unit in the shared storage area, which generates a dependency relationship between the processes of the controllers along with the transfer of the access process of the LU, and requires a large amount of communication. In the storage area management that dynamically configures data like a log structure, communication and exclusive control between controllers are generated in order to determine and change the data configuration in the access process of the LU, which causes performance degradation. In addition, the controller that manages the storage area needs to perform garbage collection and defragmentation (hereinafter collectively referred to and recorded as GC) and sort the stored data. Along with this sorting, the controller that manages the storage area generates the sorted data configuration information to notify the controller that performs the access process of the LU and exclusive control, which causes performance degradation.
[0014] In this regard, Patent Document 1 assumes that the data of each LU is stored separately in different storage areas, and does not assume the transfer of access processing related to LUs sharing a storage area. In other words, Patent Document 1 does not disclose a method for transferring access processing of LUs between controllers while performing log-structured storage area management and data deduplication in the memory.
[0015] The present invention has been developed in consideration of the above points, and proposes a storage system and the like that can eliminate the dependencies of processes between controllers as much as possible.
[0016] Technical solutions to solve problems
[0017] In order to solve the above-mentioned problems, the present invention provides a storage system, including one or more storage media and multiple controllers that provide storage functions to a host, the multiple controllers share a storage area of the storage medium, the storage area for writing data and sorting data is allocated to each controller, each controller transfers the authority to access and process the data in the logical area allocated to the controller between controllers, for a first storage area where data related to the logical areas of multiple controllers exists due to the transfer of the access processing authority from the first controller to the second controller, the first controller and the second controller write the updated data regarding the Write request to the storage area allocated to the present controller, and delete the pre-update data in the first storage area, and in the sorting process of sorting the data, while handing over the allocation of the first storage area, transfer the data in the first storage area that the present controller has the access processing authority to other storage areas allocated to the present controller.
[0018] In the above structure, while the allocation of the first storage area is handed over, the data of the first storage area to which the controller has the right to access the processing is transferred to other storage areas allocated to the controller. Therefore, in the transfer of the right to access the processing between the controllers, even if the data of the objects of each access processing are mixed in the storage area, the dependency of the processing between the controllers can be reduced. As a result, the performance improvement brought about by the addition of controllers in the storage system and the improvement of the utilization efficiency of the controller resources can be achieved.
[0019] Effects of the Invention
[0020] According to the present invention, communication between controllers can be appropriately performed. Other problems, structures, and effects than those described above will become clear from the following description of the embodiments. BRIEF DESCRIPTION OF THE DRAWINGS
[0021] Figure 1 This is a diagram showing an example of the configuration of the storage system according to the first embodiment.
[0022] Figure 2 It is a diagram showing an example of the configuration of the controller according to the first embodiment.
[0023] Figure 3 This is a diagram showing an example of stored data in the first embodiment.
[0024] Figure 4 This is a diagram showing an example of a program area according to the first embodiment.
[0025] Figure 5 This is a diagram showing an example of the metadata area according to the first embodiment.
[0026] Figure 6 This is a diagram showing an example of the configuration of a management node according to the first embodiment.
[0027] Figure 7 This is a diagram showing an example of a flowchart of the first embodiment.
[0028] Figure 8 This is a diagram showing an example of a flowchart of the first embodiment.
[0029] Fig. 9 This is a diagram showing an example of a flowchart of the first embodiment.
[0030] Fig.10 This is a diagram showing an example of a flowchart of the first embodiment.
[0031] Fig.11A This is a diagram showing an example of a flowchart of the first embodiment.
[0032] Fig. 11BThis is a diagram showing an example of a flowchart of the first embodiment.
[0033] Fig.12 This is a diagram showing an example of a flowchart of the first embodiment.
[0034] Fig.13 This is a diagram showing an example of a program area according to the second embodiment.
[0035] Fig.14 This is a diagram showing an example of the configuration of a management node according to the second embodiment.
[0036] Fig.15 This is a diagram showing an example of a flowchart of the second embodiment.
[0037] Fig.16 This is a diagram showing an example of a flowchart of the second embodiment.
[0038] Fig.17 This is a diagram showing an example of a program area according to the third embodiment.
[0039] Fig.18 This is a diagram showing an example of the metadata area according to the third embodiment.
[0040] Fig.19A This is a diagram showing an example of a flowchart of the third embodiment.
[0041] Fig.19B This is a diagram showing an example of a flowchart of the third embodiment.
[0042] Fig. 20A This is a diagram showing an example of a flowchart of the third embodiment.
[0043] Fig. 20B This is a diagram showing an example of a flowchart of the third embodiment.
[0044] Fig. 20C This is a diagram showing an example of a flowchart of the third embodiment. DETAILED DESCRIPTION
[0045] (1) First Embodiment
[0046] An embodiment of the present invention is described in detail below. In this embodiment, a method for transferring access processing of storage functions and storage area management between controllers and performing distributed processing is described. In addition, this embodiment is not limited to the scope of rights claimed in the present invention, and all elements described in the embodiment are necessary to solve the problems of the present invention.
[0047] In the storage system of this embodiment, in an environment where a plurality of controllers share a storage area, the authority for access processing and the authority for storage area management are transferred between the controllers, and distributed processing is performed.
[0048] More specifically, the present storage system pre-allocates available storage areas (storage areas of management objects) to each controller of a shared storage area. First, in the transfer of the controller that performs access processing of the LU, the mapping information indicating the address of the storage destination in the storage area and the data contained in the LU is copied and handed over to the controller of the transfer destination. In response to a read request from the host, the controller of the transfer destination of the LU directly reads the data stored in the storage area managed by the controller of the transfer source with reference to the handed over mapping information. In addition, the controller of the transfer destination of the LU determines the storage destination from the storage area managed by the controller of the transfer destination (this controller) that performs access processing for the data to which a write request is made from the host, and saves the data, and updates the mapping information of the LU. The controller of the transfer destination of the LU invalidates the data before the update that becomes unnecessary due to the storage of new data asynchronously with the processing of the write request, thereby avoiding the influence of communication overhead even when the data to be invalidated is stored in the storage area managed by the controller of the transfer source of the LU.
[0049] When each controller performs GC processing on the storage area it manages, it extracts the data contained in the LU that the controller performing GC processing is responsible for access processing from the data stored in the storage area that becomes the object of GC processing, transfers and sorts the data to the storage area managed by the controller itself, and updates the mapping information of the LU. At this time, the mapping information of the updated object exists in the same controller, so that no communication between controllers and no exclusive control will occur. In addition, the controller performing GC processing selects one from the controllers performing access processing on the LU of the data remaining in the storage area containing the object of GC processing, and hands over the GC processing together with the authority of storage area management to the selected controller. The controller that has handed over the GC processing of the storage area performs the same processing as the original controller. The above-mentioned handover between controllers is performed until the data of the object of GC processing disappears. In addition, for the controller whose available storage area is reduced due to the handover of the storage area in the middle of GC processing, the unallocated storage area is reallocated from the shared storage area, thereby avoiding the shortage of blank capacity.
[0050] Next, embodiments of the present invention will be described based on the drawings.
[0051] In addition, in the following description, the same reference numerals are used for the same elements in the drawings and the description is omitted as appropriate. In addition, when different types of elements are described, the common part of the reference mark including the branch number (the part excluding the branch number) is used, and when the same type of elements are distinguished for description, the reference mark including the branch number is sometimes used. For example, when the controller is not specifically distinguished for description, it is recorded as "controller 101", and when the controllers are distinguished for description, they are sometimes recorded as "controller 101a" and "controller 101b".
[0052] Figure 1 In the figure, 100 represents the storage system of the first embodiment as a whole.
[0053] Figure 1 It is a diagram showing an example of the configuration of the storage system 100 .
[0054] The storage system 100 includes controllers 101a and 101b (controller nodes), a storage medium node 102, a management node 103, and a network 104. The network 104 connects the controllers 101a and 101b, the storage medium node 102, and the management node 103. The controllers 101a and 101b are connected to a host 105.
[0055] The controllers 101a and 101b provide access to the storage area to the host 105. For example, the storage area is provided to the host 105 in the form of LUs mapped to the storage area. The controllers 101a and 101b may provide a plurality of LUs to the host 105. Alternatively, a single controller 101 provides access to each LU.
[0056] The storage node 102 has a storage medium 106 as a mapping destination of the storage area of the LU, and provides access to the controllers 101a and 101b. The controllers 101a and 101b share the storage medium 106 of the storage node 102, and any controller 101 can directly access the storage medium 106 without going through the other controllers 101.
[0057] The management node 103 manages the controller 101 that performs access processing for each LU provided by the storage system 100 , and the allocation status of each storage area formed by the storage medium 106 connected to the storage medium node 102 with respect to the controller 101 .
[0058] The network 104 connects the controllers 101a and 101b, the storage medium node 102, and the management node 103 to each other. The network 104 performs communication between the controllers 101a and 101b. For example, the network 104 performs transmission of access requests from the controllers 101a and 101b to the storage medium 106 of the storage medium node 102 and data corresponding to the access requests (hereinafter referred to as access request data). In addition, the access request data is read data corresponding to a read request or write data corresponding to a write request.
[0059] The host 105 makes an access request to the LU provided by the controllers 101a and 101b.
[0060] In addition to the controllers 101a and 101b, additional controllers 101 may be connected to the network 104, and each controller 101 may share the storage medium 106 of the storage medium node 102. In addition, the storage medium node 102 may also provide access to multiple storage media 106 at the same time. In addition, the network 104 is not limited to Figure 1 The structure shown may be, for example, a structure in which the host 105 is connected to the network 104 and makes an access request to the controllers 101a and 101b. Alternatively, a structure in which the management node 103 also serves as any of the controllers 101a and 101b or the storage medium node 102 may be adopted.
[0061] Figure 2 Controllers 101a and 101b have the same (same or similar) structure, and therefore, controller 101a is illustrated for description.
[0062] The controller 101 a includes one or more processors 201 , one or more memories 202 , one or more communication I / F (interface) 203 , and one or more host I / F 204 .
[0063] The processor 201 executes a program that realizes the functions of the controller 101 a using the memory 202 , and provides the host 105 with access to the LU.
[0064] The communication I / F 203 is connected to the network 104. The communication I / F 203 performs transmission of an access request from the controller 101a to the storage medium 106 of the storage medium node 102, reception of a response, and transfer of access request data accompanying processing of the access request.
[0065] The communication standard for connecting the communication I / F 203 and the network 104 is not particularly limited as long as access requests, responses, and data can be sent and received. In addition, the protocol used for access requests, responses, and data sent and received between the controller 101a and the storage medium node 102 is also not limited.
[0066] The host I / F 204 receives an access request to the LU from the host 105 , sends a response, and transfers access request data accompanying the processing of the access request with the host 105 .
[0067] The communication standard and protocol in the connection between the controller 101a and the host 105 via the host I / F 204 are not particularly limited as long as access requests and responses can be sent and received and data can be transmitted. In addition, when the host 105 is connected to the network 104, the host I / F 204 can also use the same structure as the communication I / F 203.
[0068] Figure 3 3 is a diagram showing an example of data stored in the memory 202. The memory 202 includes a program area 301, a buffer area 302, and a metadata area 303.
[0069] The program area 301 stores a program that is executed by the processor 201 and implements the function of the controller 101 of the storage system 100 .
[0070] The buffer area 302 temporarily stores read data from the storage medium 106 connected to the storage medium node 102 and write data to the storage medium 106 connected to the storage medium node 102 .
[0071] The metadata area 303 stores management information related to the processing of each LU to which the controller 101 provides access to the host 105 .
[0072] Figure 4 This is a diagram showing an example of the program area 301 .
[0073] The program area 301 stores programs executed by the processor 201. The programs include a command processing program 401, an I / O control program 402, a data configuration management program 403, a GC object selection program 404, a GC program 405, a GC migration program 406, a GC handover program 407, a LU migration program 408, a LU handover program 409, an invalid data notification program 410, and a region invalidation program 411.
[0074] The command processing program 401 receives access requests to LUs from the host 105 via the host I / F 204 and responds to the results. The command processing program 401 starts processing corresponding to the access request and transmits access request data to and from the host 105 via the host I / F 204.
[0075] The I / O control program 402 executes an access request to the storage medium 106 of the storage medium node 102 via the communication I / F 203. The protocol used by the I / O control program 402 to access the storage medium 106 is not particularly limited as long as the designated address can be accessed.
[0076] The data configuration management program 403 manages the address of the mapping destination corresponding to each storage area in the storage medium 106 connected to the storage medium node 102 for each storage area in the address space of the LU to which the controller 101 provides access to the host 105. In addition, the data configuration management program 403 manages the address of the LU corresponding to each storage area constituted by the storage medium 106 connected to the storage medium node 102 and the address of the storage area within the LU.
[0077] The GC target selection program 404 selects one of the pages allocated to the controller 101 as a target for GC processing from each storage area of a certain size (hereinafter referred to as a page) formed by the storage medium 106 connected to the storage medium node 102 .
[0078] The GC program 405 sorts the data by transferring the valid data included in the page selected by the GC object selection program 404 to other pages. The GC program 405 confirms the corresponding LU for each valid data included in the selected page, and when the access processing of the confirmed LU is assigned to the controller 101, the data is copied to other pages and the data of the original page is invalidated.
[0079] The GC migration program 406 selects a controller 101 to which the access processing of the LU corresponding to the valid data contained in the page that becomes the object of GC processing is allocated, and entrusts the handover of the GC processing related to the page. The delegation of the handover of the GC processing can be implemented asynchronously with the access processing, and can also be implemented asynchronously with the GC processing of other pages. In addition, by simultaneously entrusting the handover of GC processing related to multiple pages to the same controller 101, the number of communications can be reduced. In addition, the number of pages used by the controller 101 is inversely proportional to the page size. Therefore, by increasing the page size, the number of pages used is reduced, and the frequency of entrusting the handover of GC processing is also reduced. Therefore, by reducing the number of communications of the GC migration program 406, the delegation of the handover of GC processing is performed asynchronously with the access processing and the GC processing, respectively, and the influence of overhead can be avoided.
[0080] The GC takeover program 407 adds the pages for which the GC process is requested to be taken over from another controller 101 to the pages allocated to the own controller 101 as the targets of the GC process and selected by the GC target selection program 404 .
[0081] The LU migration program 408 delegates the handover of access processing to other controllers 101 for the LU to which the access processing is assigned to the controller 101. In addition, the LU migration program 408 reads metadata associated with the LU to which the handover is delegated from the metadata area 303, and copies it to the controller 101 to which the handover is delegated. The handover of the access processing of the LU is usually performed only when load adjustment between the controllers 101 is required, and therefore, is performed at a lower frequency than the access request from the host 105. Therefore, the overhead caused by the communication between the controllers 101 performed by the LU migration program 408 is slight.
[0082] The LU takeover program 409 starts the access processing of the LU to which the takeover of the access processing is requested from another controller 101, using the copied metadata.
[0083] The invalid data notification program 410 notifies the controller 101 that manages the page containing each data of the list of addresses of the storage destination of the data before the update, which is invalidated in response to the write request from the host 105 to the LU. The notification of invalid data to other controllers 101 can be performed asynchronously with the access processing. In addition, the notification of invalidation related to a plurality of data can be performed all at once. Therefore, the influence of communication overhead can be avoided, as with the communication of the GC migration program 406.
[0084] The area invalidation program 411 refers to the list of addresses of storage destinations of invalidated data notified from other controllers 101 , and invalidates data in the corresponding storage area in the page managed by the own controller 101 .
[0085] Figure 5 This is a diagram showing an example of the metadata area 303 .
[0086] The metadata area 303 includes a mapping table 501 , a reverse lookup table 502 , a used page table 503 , an invalid area table 504 , and a migration candidate page table 505 .
[0087] The mapping table 501 is provided for each LU to be accessed. The mapping table 501 stores the address of the mapping destination corresponding to each storage area in the address space of the LU to be accessed by the controller 101, in the storage medium 106 connected to the storage medium node 102.
[0088] Here, in the storage system 100, a plurality of storage media 106 are provided as a virtual storage device through RAID (Redundant Arrays of Inexpensive Disks), and the address of the virtual storage device is used as the storage area address of the mapping table 501. In addition, although not shown in the figure, the address of the virtual storage device corresponds to the address of each storage medium 106. In other words, in the storage system 100, RAID may not be assembled, and the storage area address of the mapping table 501 may also be the address of the storage medium 106. In this case, the mapping table 501 contains information that can identify the storage medium 106.
[0089] The reverse lookup table 502 is set in each page. The reverse lookup table 502 stores the LU and the address of the LU corresponding to the storage area composed of the storage medium 106 connected to the storage medium node 102 and allocated to the controller 101. In addition, in this embodiment, the reverse lookup table 502 is set in each page, but it is not limited to this form, and can be a single form, a form divided into units other than pages, or other forms.
[0090] The usage page table 503 stores addresses of pages allocated to the controller 101 .
[0091] The invalid area table 504 stores the address of invalidated data stored in a page managed by another controller 101 and information of the controller 101 that manages the page.
[0092] The migration candidate page table 505 stores addresses of pages that are candidates for migration to perform GC processing on other controllers 101 .
[0093] Figure 6 This is a diagram showing an example of the configuration of the management node 103 .
[0094] The management node 103 includes one or more processors 601 , one or more memories 602 , and one or more communication I / Fs 603 .
[0095] The processor 601 provides the controller 101 with the allocation status related to the access processing of the LU provided by the storage system 100 using the memory 602. In addition, the processor 601 provides the controller 101 with the allocation management function related to each storage area composed of the storage medium 106 connected to the storage medium node 102 using the memory 602.
[0096] The memory 602 stores an LU allocation program 604 and an LU allocation table 605 .
[0097] The communication I / F 603 is connected to the network 104. The communication I / F 603 performs communication with the controller 101 regarding access processing of LUs, allocation of storage areas, and release of storage areas.
[0098] The LU allocation program 604 manages the allocation status of the access processing of the LU to the controller 101 of the storage system 100. In addition, the LU allocation program 604 responds to inquiries from the controller 101 that performs the access processing of each LU.
[0099] The LU allocation table 605 stores information on the controller 101 that performs access processing for each LU provided by the storage system 100 .
[0100] Figure 7 1 is a flowchart showing a series of processes for processing a read request of an LU from the host 105 to the controller 101a. Figure 7 The actions of the flowchart are as follows.
[0101] S701: When receiving a read request for an LU from the host 105, the command processing program 401 inquires of the data configuration management program 403 about the address of the storage area of the storage medium 106 corresponding to the address of the requested LU. Next, S702 is executed.
[0102] S702: The data configuration management program 403 refers to the mapping table 501, determines the storage medium 106 corresponding to the storage area corresponding to the address of the LU where the query is made, and the address of the storage medium 106, and responds. Next, S703 is executed.
[0103] S703: The I / O control program 402 performs read access to the address of the storage medium 106 indicated via the communication I / F 203, and stores the data of the read result in the buffer area 302 of the memory 202. Next, S704 is executed.
[0104] S704: The command processing program 401 transfers the data stored in the buffer area 302 in S703 to the host 105 via the host I / F 204 as a result of the read request, and ends a series of operations.
[0105] Figure 8 1 is a flowchart showing a series of processes for processing a write request of an LU from the host 105 to the controller 101a. Figure 8 The actions of the flowchart are as follows.
[0106] S801: When receiving a write request of the LU from the host 105 via the host I / F 204, the command processing program 401 receives write data from the host 105 and stores it in the buffer area 302. Next, S802 is executed.
[0107] S802: The command processing program 401 inquires of the data configuration management program 403 about the address of the storage destination of the write data received in S801 in the storage medium 106 connected to the storage medium node 102. Next, S803 is executed.
[0108] S803: The data configuration management program 403 refers to the mapping table 501 to determine the storage medium 106 and the address of the storage medium that stores the data before the update of the storage area for which the write request is made from the host 105. In addition, the data configuration management program 403 refers to the mapping table 501 and the use page table 503 to determine whether the controller 101 that manages the page of the storage area including the address is the current controller 101. Then, S804 is executed.
[0109] S804: The data configuration management program 403 determines whether the controller 101 manages a page of the storage area containing the address determined in S803. If the controller 101 manages a page containing the data before the update, the data configuration management program 403 transfers the processing to S805. If the controller 101 does not manage a page containing the data before the update, the data configuration management program 403 transfers the processing to S806.
[0110] S805: The data configuration management program 403 updates the corresponding entry of the reverse query table 502, so that the data before the update corresponding to the address determined in S803 is invalid and becomes a state where none of them is mapped to any LU. For example, the data configuration management program 403 sets invalid information to the LU address of the entry. Then, S807 is executed.
[0111] S806: The data configuration management program 403 stores the address of the storage destination of the data before the update and the information of the controller 101 in the invalid area table 504. More specifically, the data configuration management program 403 stores the address determined in S803 as the address storing invalid data notified to the controller 101 that manages the page of the storage area including the address in the invalid area table 504. Next, S807 is executed.
[0112] S807: The data configuration management program 403 refers to the reverse lookup table 502 and the used page table 503, determines the address of the storage area to be the storage destination of the write data received in S801 from the pages managed by the controller 101, and responds to the command processing program 401. Next, S808 is executed.
[0113] S808: The command processing program 401 notifies the I / O control program 402 of the information of the storage medium 106 and the address determined in S807, and instructs write access. The I / O control program 402 performs write access to the address of the storage medium 106 instructed via the communication I / F 203, and stores the write data read from the buffer area 302. Next, S809 is executed.
[0114] S809: When the write access in the I / O control program 402 is completed, the data configuration management program 403 uses the address determined in S807 to update the mapping table 501 and the reverse lookup table 502 so that the address of the write request destination of the host 105 corresponds to the storage area of the new write data storage destination. Next, S810 is executed.
[0115] S810: The command processing program 401 notifies the host 105 of the completion of the write request via the host I / F 204, and ends a series of operations.
[0116] The series of actions from S803 to 806 may also be performed after S808. In addition, the action of S809 may also be performed before S808.
[0117] Fig. 9 1 is a flowchart showing a series of processes for transferring the access processing authority of the LU from the controller 101a (the transfer source controller) to the controller 101b (the transfer destination controller). Fig. 9 The actions of the flowchart are as follows.
[0118] S901: The LU migration program 408 of the controller 101a requests the controller 101b to take over the access processing of the LU. Then, S902 is executed.
[0119] S902: The LU migration program 408 of the controller 101a reads the mapping destination address related to the address space of the LU to which the access processing authority is transferred from the mapping table 501, and copies it to the controller 101b via the communication I / F 203. Then, S903 is executed.
[0120] S903: The LU transfer program 409 of the controller 101b receives the address information of the mapping destination related to the address space of the LU from the controller 101a, and stores it in the mapping table 501 of the metadata area 303. Then, S904 is executed.
[0121] S904: The LU migration program 408 of the controller 101a stops the access process related to the migration target LU in the controller 101a. Then, S905 is executed.
[0122] S905: The LU transfer program 409 of the controller 101b starts access processing related to the LU to be transferred in the controller 101b. Then, S906 is executed.
[0123] S906: The LU transfer program 409 of the controller 101b requests to change the allocation destination of the access process related to the LU that started the access process in S905 with respect to the management node 103 from the controller 101a to the controller 101b. Then, S907 is executed.
[0124] S907: The LU allocation program 604 of the management node 103 updates the LU allocation table 605, and changes the allocation destination of the access process for the LU to be migrated from the controller 101a to the controller 101b. Then, S908 is executed.
[0125] S908: The LU transfer program 409 of the controller 101b notifies the host 105 that the access process related to the LU to be transferred is changed to the controller 101b, and ends a series of operations.
[0126] The series of actions from S904 to S905 may be performed after S908. In addition, when the management node 103 can communicate directly with the host 105, the LU assignment program 604 of the management node 103 may replace the LU handover program 409 of the controller 101b in S908 to notify the host 105 that the access processing related to the LU is changed to the controller 101b. In addition, the LU transfer program 408 of the controller 101a may replace the LU handover program 409 of the controller 101b in S906 to request the management node 103 to change the allocation destination of the access processing.
[0127] Fig.10 1 is a flowchart showing a series of processes for notifying the controller 101a to the controller 101b of a storage area storing invalidated data. Fig.10 The actions of the flowchart are as follows.
[0128] S1001: The invalid data notification program 410 of the controller 101a starts invalid data notification processing at an arbitrary time asynchronous with the access processing. Then, S1002 is executed.
[0129] S1002: The invalid data notification program 410 of the controller 101a determines the controller 101 (controller 101b in this example) to which invalid data is to be notified. Then, S1003 is executed. When there are multiple controllers to be notified, any method can be used to determine the controller.
[0130] S1003: The invalid data notification program 410 of the controller 101a refers to the invalid area table 504 stored in the metadata area 303 of the controller 101a, and reads the address of the storage area storing invalid data contained in the page managed by the controller 101b as the invalid data notification target. Next, S1004 is executed.
[0131] S1004: The invalid data notification program 410 of the controller 101a notifies the address read out in S1003 to the controller 101b as the invalid data notification target via the communication I / F 203. Next, S1005 is executed.
[0132] S1005: The area invalidation program 411 of the controller 101b refers to the address of each storage area storing invalid data notified from the controller 101a, updates the reverse query table 502 stored in the metadata area 303, and updates the corresponding entries in a manner that the data in each storage area is invalid and is not mapped to any LU, and ends the series of actions.
[0133] exist Fig.10 In the flowchart shown, a series of processing from S1002 to S1005 is performed once, but it is also possible to notify the storage area storing invalidated data to multiple controllers 101 by repeatedly performing it. In addition, the action of S1005 may be performed discontinuously with the series of actions until S1004 and performed at any time.
[0134] Fig.11A and Fig. 11B 1 is a flowchart showing a series of processes of GC processing related to pages formed by the storage medium 106 connected to the storage medium node 102 in the controllers 101a and 101b. Fig.11A and Fig. 11B The actions of the flowchart are as follows.
[0135] S1101: The GC target selection program 404 selects a page to be processed by GC from the pages registered in the used page table 503 stored in the metadata area 303 at an arbitrary time, and instructs the GC program 405 to process the page. Next, S1102 is executed.
[0136] S1102: The GC program 405 sets the valid data previously stored in the reverse lookup table 502 of the metadata area 303 corresponding to the page selected in S1101 as the target of subsequent processing. In addition, the valid data targeted in S1102 or S1112 is recorded as the target data. Next, S1103 is executed.
[0137] S1103: The GC program 405 refers to the entry corresponding to the reverse lookup table 502 stored in the metadata area 303 for the target data, and confirms the LU corresponding to the target data. Next, S1104 is executed.
[0138] S1104: The GC program 405 determines whether access processing is assigned to the LU confirmed in S1103 to the own controller 101. If the GC program 405 is assigned to the own controller 101, the process proceeds to S1105. If the GC program 405 is not assigned to the own controller 101, the process proceeds to S1111.
[0139] S1105: The data allocation management program 403 refers to the reverse lookup table 502 and the used page table 503, and determines the address of the transfer destination of the target data from the page outside the GC process managed by the controller 101. Next, S1106 is executed.
[0140] S1106: The GC program 405 specifies the address of the target data and instructs the I / O control program 402 to read the target data stored in the storage area of the storage medium 106 indicated by the instructed address, and stores the read result data in the buffer area 302 of the memory 202. Next, S1107 is executed.
[0141] S1107: The GC program 405 specifies the address determined in S1105 to the I / O control program 402, and instructs write access to the data read in S1106. The I / O control program 402 writes to the storage area of the storage medium 106 indicated by the instructed address via the communication I / F 203, and stores the data read from the buffer area 302. Next, S1108 is executed.
[0142] S1108: The data configuration management program 403 copies the LU and address information stored in the entry corresponding to the target data in the reverse lookup table 502 stored in the metadata area 303 to the entry corresponding to the address determined as the data transfer destination in S1105. Next, S1109 is executed.
[0143] S1109: The data configuration management program 403 refers to the information of the LU and address stored in the entry corresponding to the target data in the reverse lookup table 502 stored in the metadata area 303. Then, the data configuration management program 403 updates the entry corresponding to the LU and address in the mapping table 501 stored in the metadata area 303 so as to indicate the address determined in S1105. Then, S1110 is executed.
[0144] S1110: The data configuration management program 403 updates the reverse lookup table 502 stored in the metadata area 303 so that no entry corresponding to the target data is included in any LU and is in an invalid state. Next, S1111 is executed.
[0145] S1111: The GC program 405 determines whether the next valid data of the target data exists in the same page. If the valid data exists in the same page, the GC program 405 transfers the process to S1112. If the valid data does not exist in the same page, the GC program 405 transfers the process to S1113.
[0146] S1112: The GC program 405 changes the data to be focused on in the target page of the GC process to the next valid data. Then, S1103 is executed.
[0147] S1113: The GC program 405 determines whether valid data remains in the target page for GC processing. If valid data remains in the target page for GC processing, the GC program 405 transfers the process to S1114. If no valid data remains in the target page for GC processing, the GC program 405 ends a series of operations.
[0148] S1114: The GC program 405 stores the address of the page to be processed by GC in the migration candidate page table 505, and ends the series of operations.
[0149] Fig.12 This is a flowchart showing a series of processes for migrating GC processing related to a page composed of a storage medium 106 connected to a storage medium node 102 in the controller 101a (migration source controller) to the controller 101b (migration destination controller). Fig.12 The actions of the flowchart are as follows.
[0150] S1201: The GC migration program 406 of the controller 101a selects a page to be migrated from the migration candidate page table 505 stored in the metadata area 303 of the memory 202. Then, S1202 is executed. The GC migration program 406 of the controller 101a may start processing at any time asynchronous with the GC processing of the GC program 405.
[0151] S1202: The GC migration program 406 of the controller 101a refers to the reverse lookup table 502 stored in the metadata area 303 for the page selected in S1201 to determine whether there is valid data. If there is valid data, the GC migration program 406 of the controller 101a transfers the process to S1203. If there is no valid data, the GC migration program 406 of the controller 101a transfers the process to S1212.
[0152] S1203: The GC migration program 406 of the controller 101a refers to the LU corresponding to the stored data and the address of the LU from the entry of the reverse lookup table 502 stored in the metadata area 303 for the page selected in S1201. Next, S1204 is executed.
[0153] S1204: The GC migration program 406 of the controller 101a inquires of the controller 101 to which the access process referenced in S1203 and to which the LU corresponding to the valid data is assigned, to the management node 103 via the communication I / F 203. Then, S1205 is executed.
[0154] S1205: The LU allocation program 604 of the management node 103 refers to the LU allocation table 605 for the LU queried from the controller 101a in S1204, confirms the controller 101 to which access processing is allocated, and responds via the communication I / F 603. Next, S1206 is executed.
[0155] S1206: The GC migration program 406 of the controller 101a checks the response result from the management node 103 for the controller 101 to which the LU access process is assigned and which was queried in S1204, and determines the migration destination controller 101 (controller 101b in this example) for the GC process of the page selected in S1201. Then, S1207 is executed.
[0156] S1207: The GC migration program 406 of the controller 101a notifies the controller 101b of the address of the page via the communication I / F 203, thereby requesting the controller 101b to take over the GC process. Next, S1208 is executed.
[0157] S1208: The GC takeover program 407 of the controller 101b receives the address of the page from the controller 101a via the communication I / F 203, and stores it in the used page table 503 included in the metadata area 303 of the controller 101b. Next, S1209 is executed.
[0158] S1209: The GC migration program 406 of the controller 101a reads the entry of the reverse lookup table 502 stored in the metadata area 303 for the page to be transferred and requests the GC process, and copies it to the controller 101b via the communication I / F 203. Then, S1210 is executed.
[0159] S1210: The GC takeover program 407 of the controller 101b stores the entry of the reverse lookup table 502 of the controller 101a received from the controller 101a via the communication I / F 203 in the reverse lookup table 502 of the controller 101b. Next, S1211 is executed.
[0160] S1211: The GC migration program 406 of the controller 101a deletes the entry corresponding to the page to which the GC process is requested from the reverse lookup table 502 stored in the metadata area 303. Next, S1212 is executed.
[0161] S1212: The GC migration program 406 of the controller 101a deletes the address of the page to which the GC process is requested from the migration candidate page table 505 stored in the metadata area 303, and ends the series of operations.
[0162] According to the present embodiment, in a storage system 100 in which a plurality of controllers 101 share a storage area, load distribution between the controllers 101 is achieved by transferring access processing and storage area management, and a state in which dependencies between the controllers 101 are reduced can be maintained. The storage destinations of data in the access processing of each controller 101 are separated, and each controller 101 shares the ordering of data related to the LU to which the access processing is assigned in the GC processing of the storage area, thereby eliminating dependencies between the controllers 101 as much as possible and avoiding the influence of overhead caused by communication.
[0163] (2) Second Embodiment
[0164] This embodiment describes an example of a storage system that performs page-based dynamic allocation and release of controllers 101 to a shared storage area generated by thin provisioning in addition to transfer and distribution between controllers 101 for access processing and storage area management.
[0165] In addition, this embodiment does not limit the scope of the rights claimed by the present invention, and is not limited to all the elements described in the embodiment being necessary to solve the problems of the present invention. In addition, in the description of this embodiment, the difference in the structure and action of the first embodiment is described, and the constituent elements, marks, and actions that are not described are the same as those of the first embodiment.
[0166] Fig.13 This is a diagram showing an example of the program area 301 according to this embodiment.
[0167] In the program area 301, in addition to saving: command processing program 401, I / O control program 402, data configuration management program 403, GC object selection program 404, GC program 405, GC migration program 406, GC handover program 407, LU migration program 408, LU handover program 409, invalid data notification program 410, and area invalidation program 411, page ensuring program 1312 and page releasing program 1313 are also saved.
[0168] The page reservation program 1312 requests the management node 103 to allocate an empty page not allocated to any controller 101 among pages formed by the storage medium 106 connected to the storage medium node 102 , and adds the page as a page managed by the controller 101 (used page).
[0169] The page release program 1313 notifies the management node 103 to release a page that is in an allocated state as a page managed by the own controller 101 .
[0170] Fig.14 This is a diagram showing an example of the configuration of the management node 103 according to this embodiment.
[0171] The management node 103 includes one or more processors 601 , one or more memories 602 , and one or more communication I / Fs 603 .
[0172] The memory 602 stores not only the LU allocation program 604 and the LU allocation table 605 , but also a page allocation program 1406 and a free page table 1407 .
[0173] The page allocation program 1406 allocates and releases pages formed by the storage medium 106 connected to the storage medium node 102 in response to a request from the controller 101 of the storage system 100 .
[0174] The free page table 1407 stores addresses of pages that are constituted by the storage medium 106 connected to the storage medium node 102 and are in a state of being unallocated to any controller 101 .
[0175] Fig.15 This is a flowchart showing a series of processes for the controllers 101a and 101b to reserve pages in this embodiment. Fig.15 The actions of the flowchart are as follows.
[0176] S1501: The data allocation management program 403 refers to the reverse lookup table 502 and the used page table 503 at any time to confirm the free capacity of the entire page (used storage area) managed by the controller 101. Next, S1502 is executed.
[0177] S1502: The data configuration management program 403 determines whether the free capacity of the storage area confirmed in S1501 is lower than a predetermined threshold. If the free capacity is lower than the threshold, the data configuration management program 403 transfers the process to S1503. If the free capacity exceeds the threshold, the data configuration management program 403 ends a series of operations.
[0178] S1503: The page reservation program 1312 requests the management node 103 to allocate pages to the controller 101 via the communication I / F 203. Next, S1504 is executed.
[0179] S1504: When receiving the request for page allocation in S1503 via the communication I / F 603, the page allocation program 1406 of the management node 103 selects a page to be allocated by referring to the free page table 1407. Then, S1505 is executed.
[0180] S1505: The page allocation program 1406 of the management node 103 notifies the controller 101 that has requested page allocation of the address of the page selected in S1504 via the communication I / F 603, and deletes the address of the page from the free page table 1407. Next, S1506 is executed.
[0181] S1506: The page reservation program 1312 receives the address assigned by the management node 103 via the communication I / F 203, stores the received address in the used page table 503, and terminates a series of operations.
[0182] In S1504, the page allocation program 1406 may select addresses of multiple pages and simultaneously allocate multiple pages to the controller 101. In S1501, the data configuration management program 403 may confirm the free capacity based on the used capacity of the separately managed storage area instead of referring to the reverse lookup table 502.
[0183] Fig.16 1 is a flowchart showing a series of processes for the controllers 101a and 101b to release pages according to the present embodiment. Fig.16 The actions of the flowchart are as follows.
[0184] S1601: The data allocation management program 403 refers to the reverse lookup table 502 and the used page table 503 at any time to confirm the free capacity of the entire page (used storage area) managed by the controller 101. Next, S1602 is executed.
[0185] S1602: The data configuration management program 403 determines whether the free capacity of the storage area confirmed in S1601 exceeds a predetermined threshold. If the free capacity exceeds the threshold, the data configuration management program 403 transfers the process to S1603. If the free capacity does not exceed the threshold, the data configuration management program 403 ends a series of operations.
[0186] S1603: The data configuration management program 403 refers to the reverse lookup table 502 and the used page table 503, and selects a page that does not store data as a page to be released. Then, S1604 is executed.
[0187] S1604: The page release program 1313 notifies the management node 103 of the address of the page selected in S1603 as the page to be released via the communication I / F 203. Next, S1605 is executed.
[0188] S1605: When receiving the address of the page to be released via the communication I / F 603, the page allocation program 1406 of the management node 103 stores the address in the free page table 1407. Next, S1606 is executed.
[0189] S1606: The data configuration management program 403 deletes the address of the page selected in S1603 from the used page table 503, and ends a series of operations.
[0190] In S1603, the data configuration management program 403 may also select addresses of multiple pages and release multiple pages simultaneously. In addition, in S1601, the data configuration management program 403 may also confirm the free capacity based on the used capacity of the additionally managed storage area instead of referring to the reverse query table 502.
[0191] According to the present embodiment, in a storage system 100 in which a plurality of controllers 101 share a storage area, when the authority to manage the storage area is transferred in order to hand over and share the GC processing of the storage area between the controllers 101, it is possible to resolve the shortage and deviation of the storage area managed by each controller 101. In addition, by making the GC processing unit and the allocation unit of the thinly provisioned storage area to the controller 101 consistent, the storage area for which the management authority is transferred accompanying the handover of the GC processing can also be released and reallocated in the same manner as other storage areas.
[0192] (3) Third Embodiment
[0193] In this embodiment, an example of a storage system 100 that performs deduplication of stored data in each controller 101 in addition to transfer and distribution of access processing and storage area management between controllers 101 will be described.
[0194] In addition, this embodiment does not limit the scope of the rights claimed by the present invention, and is not limited to all the elements described in the embodiment being necessary to solve the problems of the present invention. In addition, in the description of this embodiment, the difference in the structure and action of the first embodiment is described, and the constituent elements, marks, and actions that are not described are the same as those of the first embodiment.
[0195] Fig.17 This is a diagram showing an example of the program area 301 according to this embodiment.
[0196] In the program area 301, in addition to storing: command processing program 401, I / O control program 402, data configuration management program 403, GC object selection program 404, GC program 405, GC migration program 406, GC handover program 407, LU migration program 408, LU handover program 409, invalid data notification program 410, and area invalidation program 411, the duplicate judgment metadata generation program 1712 and the duplicate judgment program 1713 are also stored.
[0197] The invalid data notification program 410 notifies the controller 101 managing the page including each data of the address of the storage destination of the data before update which is invalidated in response to the write request from the host 105 to the LU and the list of combinations of the LU corresponding to the address and the address in the LU. The invalid data notification program 410 can perform the notification of invalid data to other controllers 101 asynchronously with the access processing. In addition, the invalid data notification program 410 can perform the notification of invalidation related to all the multiple data by one notification. Therefore, the influence of communication overhead can be avoided as in the communication of the GC migration program 406.
[0198] The area invalidation program 411 refers to a list of combinations of addresses of storage destinations of invalidated data, LUs, and addresses within LUs notified from other controllers 101 , and invalidates data in a corresponding storage area in a page managed by the own controller 101 .
[0199] The duplication determination metadata generation program 1712 generates metadata used to determine the consistency with data stored in a shared storage area constituted by the storage medium 106 connected to the storage medium node 102. The metadata is, for example, a hash value of the data.
[0200] The duplication judgment program 1713 uses the metadata generated by the duplication judgment metadata generation program 1712 to detect data in the storage area that matches the data to be written from the saved data.
[0201] Fig.18 This is a diagram showing an example of the metadata area 303 according to this embodiment.
[0202] The metadata area 303 has a duplicate determination metadata table 1806 in addition to the mapping table 501 , the reverse query table 502 , the used page table 503 , the invalid area table 504 , and the migration candidate page table 505 .
[0203] The reverse lookup table 502 stores LUs and LU addresses corresponding to storage areas allocated to the controllers 101a and 101b and composed of the storage media 106 connected to the storage medium node 102. When data in each storage area is repeatedly referenced, multiple LUs and LU addresses are associated.
[0204] The invalid area table 504 stores information of unreferenced storage areas in pages managed by other controllers 101 as the data of the LU is updated. Each information is composed of a combination of an unreferenced address in a storage area composed of the storage medium 106 connected to the storage medium node 102, the controller 101 managing the page, the LU corresponding to the address, and an address in the LU.
[0205] The duplicate judgment metadata table 1806 stores metadata generated by the duplicate judgment metadata generation program 1712 and used for determining duplicate data.
[0206] Fig.19A and Fig.19B 1 is a flowchart showing a series of processes for processing a write request of an LU from the host 105 to the controller 101a according to the present embodiment. Fig.19A and Fig.19B The actions of the flowchart are as follows.
[0207] S1901: When receiving a write request of an LU from the host 105 via the host I / F 204, the command processing program 401 receives write data from the host 105 and stores it in the buffer area 302. Next, S1902 is executed.
[0208] S1902: The duplicate judgment metadata generation program 1712 reads the write data received in S1901 from the buffer area 302, and generates metadata for duplicate judgment. Next, S1903 is executed.
[0209] S1903: The duplication judgment program 1713 refers to the duplication judgment metadata table 1806 to judge whether there is metadata that matches the metadata for duplication judgment generated in S1902 (whether duplication of metadata is detected). If duplication of metadata is detected, the duplication judgment program 1713 transfers the process to S1904. If duplication of metadata is not detected, the duplication judgment program 1713 transfers the process to S1905.
[0210] S1904: The duplication determination program 1713 specifies the address of the storage destination in the storage medium 106 connected to the storage medium node 102 for the data (duplicate data) detected as being identical in S1903. Next, S1908 is executed.
[0211] S1905: The command processing program 401 inquires of the data configuration management program 403 about the address of the storage destination of the write data received in S1901 in the storage medium 106 connected to the storage medium node 102. Next, S1906 is executed.
[0212] S1906: The data configuration management program 403 refers to the reverse lookup table 502 and the used page table 503, determines the address of the storage area to be the storage destination of the write data received in S1901 from the pages managed by the controller 101, and responds to the command processing program 401. Next, S1907 is executed.
[0213] S1907: The command processing program 401 notifies the I / O control program 402 of the information of the storage medium 106 and the address determined in S1906, and instructs write access. The I / O control program 402 performs write access to the address of the storage medium 106 instructed via the communication I / F 203, and stores the write data read from the buffer area 302. In addition, the command processing program 401 registers the metadata for duplication judgment generated in S1902 together with the information of the address of the storage medium 106 determined in S1906 in the duplication judgment metadata table 1806. Next, S1908 is executed.
[0214] S1908: The data configuration management program 403 adds information on the LU and the address in the LU to the entry corresponding to the stored data in the reverse lookup table 502 so that the consistent data detected in S1903 or the data stored in S1907 correspond to the LU and the address in the LU of the write request destination of the host 105. Next, S1909 is executed.
[0215] S1909: The data configuration management program 403 refers to the mapping table 501 to determine the address of the storage destination in the storage medium 106 connected to the storage medium node 102, which stores the data before the update of the storage area for which the write request was made from the host 105. In addition, the data configuration management program 403 refers to the mapping table 501 and the use page table 503 to determine whether the controller 101 that manages the page of the storage area including the address is the current controller 101. Next, S1910 is executed.
[0216] S1910: The data configuration management program 403 determines whether the controller 101 manages a page of the storage area containing the address determined in S1909. If the controller 101 manages a page containing data before the update, the data configuration management program 403 transfers the processing to S1911. If the controller 101 does not manage a page containing data before the update, the data configuration management program 403 transfers the processing to S1914.
[0217] S1911: The data configuration management program 403 deletes the LU of the write request destination of the host 105 and the address in the LU from the entry of the reverse lookup table 502 corresponding to the address specified in S1909, thereby canceling the correspondence. Next, S1912 is executed.
[0218] S1912: The data configuration management program 403 deletes all entries of the LU and the address in the LU of the write request destination deleted in S1911, and determines whether the data in the corresponding storage area is invalid. If the data in the storage area is invalid, the data configuration management program 403 transfers the processing to S1913. If the data in the storage area is not invalid, the data configuration management program 403 transfers the processing to S1915.
[0219] S1913: The data configuration management program 403 deletes the entry corresponding to the address determined in S1909 from the duplication determination metadata table 1806. Next, S1915 is executed.
[0220] S1914: The data configuration management program 403 stores the combination of the address determined in S1909, the controller 101 managing the page corresponding to the address, the LU of the write request destination of the host 105, and the address in the LU in the invalid area table 504. Next, S1915 is executed.
[0221] S1915: The data configuration management program 403 updates the entry of the mapping table 501 corresponding to the LU of the write request destination of the host 105 and the address within the LU, with the address determined in S1904 or the address decided in S1906. Next, S1916 is executed.
[0222] S1916: The command processing program 401 notifies the host 105 of the completion of the write request via the host I / F 204, and ends a series of operations.
[0223] Regarding the determination of duplicate data in S1903, it is also possible to directly compare whether the data are consistent with each other without comparing the metadata.
[0224] Fig. 20A , Fig. 20B and Fig. 20CThis is a flowchart showing a series of processes of GC processing performed by the controllers 101a and 101b in this embodiment on pages formed by the storage medium 106 connected to the storage medium node 102. Fig. 20A , Fig. 20B and Fig. 20C The actions of the flowchart are as follows.
[0225] S2001: The GC target selection program 404 selects a page to be processed by GC from the pages registered in the used page table 503 stored in the metadata area 303 at an arbitrary time, and instructs the GC program 405 to process the page. Next, S2002 is executed.
[0226] S2002: The GC program 405 sets the first data among the valid data corresponding to the address of one or more LUs stored in the reverse lookup table 502 of the metadata area 303 corresponding to the page selected in S2001 as the target of subsequent processing. In addition, the valid data targeted in S2002 or S2017 is recorded as the target data. Then, S2003 is executed.
[0227] S2003: The GC program 405 refers to the corresponding entry of the reverse lookup table 502 stored in the metadata area 303 for the target data, and confirms each LU corresponding to the target data. Next, S2004 is executed.
[0228] S2004: The GC program 405 determines whether the access process includes the LU assigned to the own controller 101 for each LU confirmed in S2003. If the access process includes the LU assigned to the own controller 101, the GC program 405 proceeds to S2005. If the access process does not include the LU assigned to the own controller 101, the GC program 405 proceeds to S2016.
[0229] S2005: The GC program 405 specifies the address of the target data and instructs the I / O control program 402 to read the target data stored in the storage area of the storage medium 106 indicated by the instructed address, and stores the read result data in the buffer area 302 of the memory 202. Next, S2006 is executed.
[0230] S2006: The duplication determination metadata generation program 1712 reads the read result data from the buffer area 302 and generates metadata for duplication determination. Next, S2007 is executed.
[0231] S2007: The duplication determination program 1713 uses the duplication determination metadata table 1806 and the metadata for duplication determination generated in S2006 to determine whether there is still data that is consistent with the data read in S2005 (whether duplication of metadata is detected). If duplication of metadata is detected, the duplication determination program 1713 transfers the process to S2008. If duplication of metadata is not detected, the duplication determination program 1713 transfers the process to S2009.
[0232] S2008: The duplication determination program 1713 specifies the address of the storage destination in the storage medium 106 connected to the storage medium node 102 for the data detected to be consistent in S2007. Next, S2012 is executed.
[0233] S2009: The data configuration management program 403 refers to the reverse lookup table 502 and the used page table 503 to determine the address in the storage area consisting of the storage medium 106 connected to the storage medium node 102 that is the transfer destination of the target data from the pages outside the GC process managed by the controller 101. Next, S2010 is executed.
[0234] S2010: The GC program 405 specifies the address determined in S2009 to the I / O control program 402, and instructs write access to the data read in S2005. The I / O control program 402 writes to the storage area of the storage medium 106 indicated by the instructed address via the communication I / F 203, and stores the data read from the buffer area 302. Next, S2011 is executed.
[0235] S2011: The data configuration management program 403 selects only the information corresponding to the LU assigned to the controller 101 for access processing from the LU and address information within the LU stored in the entry corresponding to the target data, for the reverse lookup table 502 stored in the metadata area 303. The data configuration management program 403 adds the selected information to the entry of the reverse lookup table 502 corresponding to the address determined as the transfer destination of the data in S2009. Then, S2012 is executed.
[0236] S2012: The data configuration management program 403 updates the entries corresponding to the LUs and addresses within the LUs selectively copied in S2011 in the mapping table 501 stored in the metadata area 303 so as to indicate the addresses determined as the storage destinations of the consistent data in S2008 or the addresses determined as the transfer destinations of the data in S2009. Next, S2013 is executed.
[0237] S2013: The data configuration management program 403 deletes the LU and the address in the LU selectively copied in S2011 from the entry corresponding to the target data in the reverse lookup table 502 stored in the metadata area 303. Next, S2014 is executed.
[0238] S2014: The data configuration management program 403 deletes all LUs and addresses in the LU for the entry in which the LU and the address in the LU are deleted in S2013, and determines whether the data in the corresponding storage area is in an invalid state. If the data in the storage area is in an invalid state, the data configuration management program 403 transfers the processing to S2015. If the data in the storage area is not in an invalid state, the data configuration management program 403 transfers the processing to S2016.
[0239] S2015: The data configuration management program 403 deletes the entry corresponding to the address of the storage area corresponding to the entry from which the LU and the address within the LU were deleted in S2013, from the duplication determination metadata table 1806. Next, S2016 is executed.
[0240] S2016: The GC program 405 determines whether the next valid data of the target data exists in the same page. If the valid data exists in the same page, the GC program 405 transfers the process to S2017. If the valid data does not exist in the same page, the GC program 405 transfers the process to S2018.
[0241] S2017: The GC program 405 changes the data to be focused on in the target page of the GC process to the next valid data. Then, S2003 is executed.
[0242] S2018: The GC program 405 determines whether valid data remains in the target page of the GC process. If valid data remains in the target page of the GC process, the GC program 405 transfers the process to S2019. If no valid data remains in the target page of the GC process, the GC program 405 ends a series of operations.
[0243] S2019: The GC program 405 stores the address of the page to be processed by GC in the migration candidate page table 505, and ends the series of operations.
[0244] In addition, in this embodiment, Fig.10 In the flowchart shown in , S1003, S1004, and S1005 become the following actions.
[0245] S1003: The invalid data notification program 410 of the controller 101a refers to the invalid area table 504 ( Fig.18 ), reads the address of the storage medium 106 connected to the storage medium node 102 storing the storage area storing the invalid data and the information of the corresponding LU and the address in the LU contained in the page managed by the controller 101b as the notification target of the invalid data. Then, S1004 is executed.
[0246] S1004: The invalid data notification program 410 of the controller 101a notifies the address read in S1003 and the information of the LU and the address in the LU that have been cancelled of the association to the controller 101b as the invalid data notification target via the communication I / F 203. Then, S1005 is executed.
[0247] S1005: The region invalidation program 411 of the controller 101b deletes the LU and the address in the LU notified at the same time for the entry of the reverse lookup table 502 corresponding to the address in the storage medium 106 connected to the storage medium node 102 notified from the controller 101a. In addition, the region invalidation program 411 of the controller 101b deletes all the LUs and the addresses in the LU for the entry from which the LU and the address in the LU are deleted, and when the data of the corresponding storage area is in an invalid state, the region invalidation program 411 of the controller 101b deletes the entry corresponding to the address of the storage area corresponding to the entry from the duplicate determination metadata table 1806, and ends a series of actions.
[0248] According to this embodiment, in a storage system 100 in which multiple controllers 101 share a storage area, each controller 101 is used to implement a deduplication function, and access processing and storage area management are transferred, thereby achieving load distribution between controllers 101 and maintaining a state in which the dependencies between controllers 101 are reduced.
[0249] In addition, the present invention is not limited to the above embodiments, and includes various derivative forms. For example, in the first, second, and third embodiments, the functions of the controllers 101a and 101b are set as software that operates in the processor 201, and the functions of the management node 103 are set as software that operates in the processor 601, but part or all of the functions can also be implemented in hardware. In addition, in the first, second, and third embodiments, the controllers 101a and 101b, the storage medium node 102, and the management node 103 are connected via the network 104, but they can also be connected by the same housing, the bus in the same hardware, the backplane, etc.
[0250] In addition, in the first, second, and third embodiments, the mapping table 501 of the controllers 101a and 101b is stored in the buffer area 302 of the memory 202, but a part or all of it may be stored in a storage area constituted by the storage medium 106 connected to the storage medium node 102. In this case, in the transfer of the access processing authority, the address of the storage destination of the storage area may be copied between the controllers 101 instead of the information of the mapping table 501. Similarly, in the first, second, and third embodiments, a part or all of the reverse lookup table 502 of the controllers 101a and 101b may be stored in a storage area constituted by the storage medium 106 connected to the storage medium node 102. In this case, in the transfer of the GC processing between the controllers 101, the address of the storage destination of the storage area may be copied between the controllers 101 instead of the information of the reverse lookup table 502.
[0251] (4) Notes
[0252] The above-mentioned embodiments include, for example, the following contents.
[0253] In the above-mentioned embodiment, the case where the present invention is applied to the storage system is described, but the present invention is not limited to this and can be widely applied to various other systems, devices, methods, and programs.
[0254] In the above-described embodiment, the configuration of each table is an example, and one table may be divided into two or more tables, or all or part of two or more tables may be one table.
[0255] In the above-described embodiment, various data are described using the XX table for convenience of description, but the data structure is not limited and may be expressed as XX information or the like.
[0256] In the above description, information such as programs, tables, and folders that implement various functions can be set in storage devices such as memories, hard disks, and SSDs; or recording media such as IC cards, SD cards, and DVDs.
[0257] The above-described embodiment has, for example, the following characteristic structures.
[0258] A storage system (e.g., storage system 100) includes one or more storage media (e.g., storage media 106) and multiple controllers (e.g., controller 101) that provide storage functions to a host (e.g., host 105). The multiple controllers share a storage area (e.g., a virtual storage area, a physical storage area) of the storage medium. In the storage system, the storage area (e.g., page) used for writing and sorting data is allocated to each controller (e.g., refer to page table 503). Each controller transfers the right to access the data in the logical area (e.g., LU) allocated to the controller between the controllers (e.g., refer to Fig. 9 ), for a first storage area where data related to the logic areas of multiple controllers exist due to the transfer of the access processing authority from the first controller (e.g., controller 101a) to the second controller (e.g., controller 101b), the first controller and the second controller write the updated data related to the write request to the storage area assigned to the controller (e.g., reference Figure 8 ), and delete the data before the update of the first storage area, and in the sorting process (such as GC process) of sorting the data, while handing over the allocation of the first storage area, transfer the data of the first storage area to which the controller has the access processing authority to other storage areas allocated to the controller (such as reference Fig.12 ).
[0259] In the above structure, while the allocation of the first storage area is handed over, the data of the first storage area that the controller has the right to access and process is transferred to other storage areas allocated to the controller. Therefore, in the transfer of the right to access and process between controllers, even if the data of the objects of each access and process are mixed in the storage area, the dependency of the processes between controllers can be reduced. As a result, the performance improvement brought by the addition of controllers in the storage system and the improvement of the utilization efficiency of the controller resources can be achieved.
[0260] When there is no valid data in the storage area, the first controller and the second controller release the allocation of the storage area (for example, referring to Fig.15 ).
[0261] In the above-mentioned sorting process, after the first controller to which the above-mentioned first storage area is allocated transfers the data that the controller has the right to access to the storage area allocated to the controller, the allocation of the above-mentioned first storage area is handed over to the above-mentioned second controller, and the above-mentioned second controller transfers the data that the controller has the right to access to the storage area allocated to the controller (for example, reference Fig.12 ).
[0262] The first controller and the second controller are respectively capable of reading data in a storage area that is not allocated a storage area. When the second controller receives a request to read data in the first storage area that the controller has access processing authority to before the allocation handover, the second controller reads the data from the first storage area and sends it (for example, referring to Figure 7 ).
[0263] In the above sorting process, before the access processing authority is transferred between controllers, the data is sorted in the same storage area at a predetermined timing, and after the access processing authority is transferred between controllers, the data is sorted in other storage areas.
[0264] The size of the storage area allocated to each controller is a specified size. Each controller allocates and releases the area for writing and sorting data in accordance with the specified size according to the increase or decrease of the storage capacity of the accompanying data (for example, refer to Fig.15 and Fig.16 ).
[0265] In the above structure, the storage area is allocated and released according to the increase or decrease of the storage capacity of the accompanying data, so that the shortage and deviation of the storage area allocated to each controller can be eliminated. In addition, the unit of the storage area for sorting processing is consistent with the unit of the storage area for allocation and release, so the storage area for which the authority is transferred with the handover of the sorting processing can also be released and reallocated in the same way as other storage areas.
[0266] In the above sorting process, each controller checks whether the data to be transferred from the above storage area is repeated with other data. If there is repeated data and the repeated data is invalid, the data to be transferred is not transferred, but the data to be transferred is deleted from the above storage area (for example, refer to Fig. 20A , Fig. 20B and Fig. 20C ).
[0267] In the above configuration, data duplication is eliminated by each controller, and load distribution between controllers is achieved, while maintaining a state in which the dependency of processing between controllers is reduced.
[0268] When the permission to write and sort the above-mentioned first storage area is assigned to the above-mentioned first controller, the above-mentioned second controller stores invalidation information for invalidating the pre-update data of the above-mentioned first storage area in the write request, and notifies the above-mentioned first controller of the above-mentioned invalidation information asynchronously with the above-mentioned write request (for example, refer to S1001).
[0269] In the above configuration, the invalidation information is notified to the second controller asynchronously with the access process, so that, for example, the influence of communication overhead can be avoided.
[0270] Each controller performs the handover asynchronously with the transfer of the data in the above-mentioned sorting process (for example, refer to Fig.12 ).
[0271] In the above-mentioned structure, the transfer and handover of the sorting process are performed asynchronously, so that, for example, the influence of communication overhead can be avoided.
[0272] Furthermore, the above-mentioned structures may be appropriately changed, reorganized, combined or omitted without departing from the spirit of the present invention.
[0273] It is to be understood that items contained in a list of the form "at least one of A, B, and C" can mean (A), (B), (C), (A and B), (A and C), (B and C), or (A, B and C). Likewise, items contained in a list of the form "at least one of A, B, or C" can mean (A), (B), (C), (A and B), (A and C), (B and C), or (A, B and C).
[0274] Description of Reference Numerals
[0275] 100 …… a storage system, 101 …… a controller.
Claims
1. A storage system comprising one or more storage media and a plurality of controllers providing storage functions to a host, wherein the plurality of controllers share a storage area of the storage media, wherein the storage system is characterized in that: The storage area for writing and sorting data is allocated to each controller. The plurality of controllers include a first controller and a second controller, the first controller requests that the authority to access and process data in a logical area assigned to the first controller be handed over to the second controller, and the second controller hands over the authority to access and process data in the logical area assigned to the first controller, In the first storage area where data related to the logical areas of the first controller and the second controller exist due to the handover of the access processing authority from the first controller to the second controller, The first controller and the second controller respectively write the updated data in response to the Write request into the storage areas assigned to the first controller and the second controller, respectively, and delete the pre-update data in the first storage area. In the sorting process of sorting data, the second controller transfers the data in the first storage area to which the second controller has access processing authority to other storage areas allocated to the second controller while taking over the allocation of the first storage area.
2. The storage system according to claim 1, characterized in that: When there is no valid data in the storage area, the allocation of the storage area is released.
3. The storage system according to claim 1, characterized in that: In the sorting process, the first controller assigned the first storage area transfers the data that the second controller has access processing permissions to the storage area assigned to the second controller, and then hands over the allocation of the first storage area to the second controller, and the second controller transfers the data that the second controller has access processing permissions to the storage area assigned to the second controller.
4. The storage system according to claim 3, characterized in that: The first controller and the second controller are each capable of reading data in a storage area of an unallocated storage area, When the second controller receives a request to read data in the first storage area to which the first controller or the second controller itself has access processing authority before the allocation handover, the second controller reads the data from the first storage area and transmits the data.
5. The storage system according to claim 1, characterized in that: In the sorting process, Before transferring the access processing authority between controllers, the data is sorted in the same storage area at a predetermined timing, After the access processing authority is transferred between the controllers, the data is sorted to the other storage areas.
6. The storage system according to claim 1, characterized in that: The size of the storage area allocated to each controller is the specified size. Each controller allocates and releases an area for writing and sorting data by the first controller or the second controller itself according to the predetermined size, according to the increase or decrease in the capacity of the storage of the accompanying data.
7. The storage system according to claim 1, characterized in that: During the sorting process, each controller confirms whether the data of the transfer object to be transferred from the storage area is repeated with other data. If there is repeated data and the repeated data is invalid, the data of the transfer object is not transferred and is deleted from the storage area.
8. The storage system according to claim 1, characterized in that: When the permission to write and sort the first storage area is assigned to the first controller, the second controller stores invalidation information for invalidating the pre-update data of the first storage area in the Write request, and notifies the first controller of the invalidation information asynchronously with the Write request.
9. The storage system according to claim 1, characterized in that: The first controller and the second controller perform the handover asynchronously with the transfer of the data during the sorting process.
10. A data management method for a storage system, wherein the storage system comprises one or more storage media and a plurality of controllers providing storage functions to a host, the plurality of controllers share a storage area of the storage media and comprise a first controller and a second controller, the data management method being characterized by: The storage area for writing and sorting data is allocated to each controller. The first controller requests to transfer the permission to access the data in the logical area assigned to the first controller to the second controller, and the second controller transfers the permission to access the data in the logical area assigned to the first controller. In the first storage area where data related to the logical areas of the first controller and the second controller exist due to the handover of the access processing authority from the first controller to the second controller, The first controller and the second controller respectively write the updated data in response to the Write request into the storage areas assigned to the first controller and the second controller, respectively, and delete the pre-update data in the first storage area. In the sorting process of sorting data, the second controller transfers the data in the first storage area to which the second controller has access processing authority to other storage areas allocated to the second controller while taking over the allocation of the first storage area.
Citation Information
Patent Citations
Compound storage system and storage control method
WO2014147657A1
Endoscope processor and information management method
JP2016029986A
Storage system having deduplication function
WO2017109822A1