WO2017109822A1 - 重複排除機能を有するストレージシステム - Google Patents
重複排除機能を有するストレージシステム Download PDFInfo
- Publication number
- WO2017109822A1 WO2017109822A1 PCT/JP2015/085614 JP2015085614W WO2017109822A1 WO 2017109822 A1 WO2017109822 A1 WO 2017109822A1 JP 2015085614 W JP2015085614 W JP 2015085614W WO 2017109822 A1 WO2017109822 A1 WO 2017109822A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- logical address
- logical
- destination
- read
- mppk
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
Definitions
- the present invention generally relates to data I / O (Input / Output) performed by a storage system having a deduplication function.
- Patent Document 1 discloses a technique for determining a node to perform deduplication processing based on characteristics (characteristics) of a node to perform deduplication.
- Patent Document 2 discloses a technique for selecting data stored in a storage device having a plurality of storage nodes in the back end and storing data by selecting data having a data duplication degree that exceeds a certain threshold.
- a storage system having a plurality of processor packages can be adopted as a storage system having a deduplication function.
- a technique for assigning ownership of different VOLs (logical volumes) to different processor packages According to this technology, each VOL can be accessed only by a processor package having ownership of the VOL.
- the “processor package” is a package of one or more processors (specifically, for example, a circuit board on which one or more processors are mounted).
- duplication source When data that overlaps with data in one of the VOLs is written to or exists in another VOL, one data is made the duplication source and the other data is made the duplication destination by the deduplication function.
- the data designated as the duplication destination is deleted, and the duplication destination address (data address designated as the duplication destination) refers to the duplication source address (data address designated as the duplication source).
- VOL ownership with many duplicate source addresses may be biased to a specific processor package.
- the specific processor package is heavily loaded, and as a result, the performance of the entire storage system may be degraded. This is because when a plurality of different duplication destination addresses are specified in a plurality of read requests, a specific processor package reads data from one or more duplication source addresses corresponding to the plurality of duplication destination addresses. is there.
- the first processor package having the ownership to which the first logical volume belongs and its duplication Communication occurs between the second processor packages having the ownership to which the second logical volume having the second logical address as the duplication source logical address corresponding to the destination logical address belongs.
- the storage controller including these processor packages executes a read frequency determination that is a determination as to whether or not the read frequency of the first logical address is higher than the read frequency of the second logical address. If the result of the read frequency determination is affirmative, the storage controller changes the first logical address from the duplication destination logical address to the duplication source logical address, and changes the second logical address from the duplication source logical address to the duplication destination logical address.
- FIG. 1 shows a configuration of an entire system according to an embodiment.
- 2 shows at least part of a logical device configuration of a storage system.
- An example of the situation before de-duplication is shown.
- An example of the situation after de-duplication is shown.
- An example of the situation before a reference direction change is shown.
- An example of the situation after a reference direction change is shown.
- the structure of management information is shown.
- the structure of an HDEV table is shown.
- the structure of an MPPK table is shown.
- the structure of a pool table is shown.
- the structure of a pool VOL table is shown.
- the structure of a HDEV logic product table is shown.
- the structure of a reduction area table is shown.
- the structure of a HDEV physical theory table is shown.
- the structure of a page mapping table is shown.
- the structure of a hash table is shown.
- the flow of the entire lead process is shown. It is a flow of a reference change determination process.
- the flow of a reference change process is shown.
- the flow of the entire write process is shown.
- the flow of duplication determination processing is shown.
- the flow of a compression process is shown.
- summary of embodiment is shown.
- information may be described by an expression such as “xxx table”, but the information may be expressed in any data structure. That is, in order to show that the information does not depend on the data structure, the “xxx table” can be referred to as “xxx information”.
- the configuration of each table is an example, and one table may be divided into two or more tables, or all or part of the two or more tables may be a single table. Good.
- a reference code (or a common part in the reference sign) is used, and when explaining the same kind of element separately, the element ID (or Element reference signs) may be used.
- the element ID or Element reference signs
- MPPK2100 is described when MPPK is not particularly distinguished, and “MPPK2100a” and “MPPK2100b” are sometimes described when each MPPK is distinguished.
- PDEV means a physical storage device, and typically a non-volatile storage device (for example, an auxiliary storage device).
- the PDEV may be, for example, an HDD (Hard Disk Drive) or an SSD (Solid State Drive). Different types of PDEVs may be mixed in the storage system.
- RAID is an abbreviation for Redundant “Array” of “Independent” (or “Inexpensive)” Disks.
- the RAID group is composed of a plurality of PDEVs (typically the same kind of PDEVs), and stores data according to the RAID level associated with the RAID group.
- the RAID group may be referred to as a parity group.
- the parity group may be, for example, a RAID group that stores parity.
- VOL is an abbreviation for logical volume and may be a logical storage device.
- the VOL may be a substantial VOL (RVOL (VDEV)) or a virtual VOL (VVOL).
- the “RVOL” may be a VOL based on a physical storage resource (for example, one or more RAID groups) possessed by the storage system having the RVOL.
- VVOL may be any one of an external connection VOL (EVOL), a capacity expansion VOL (TPVOL), and a snapshot VOL.
- the EVOL is based on a storage space (for example, VOL) of an external storage system, and may be a VOL according to a storage virtualization technology.
- the TPVOL is composed of a plurality of virtual areas (virtual storage areas), and may be a VOL according to capacity virtualization technology (typically ThinThProvisioning).
- the snapshot VOL may be a VOL provided as a snapshot of the original VOL.
- the snapshot VOL may be an RVOL.
- a “pool” is a logical storage area (for example, a set of a plurality of pool VOLs), and may be prepared for each use. For example, there may be at least one of a TP pool and a snapshot pool as a pool.
- the TP pool may be a storage area composed of a plurality of pages (substantial storage areas).
- the storage controller When a page is not allocated to the virtual area (TPVOL virtual area) to which the address specified by the write request received from the host system (hereinafter referred to as the host) belongs, the storage controller is set to TP in that virtual area (write destination virtual area). A page is allocated from the pool (even if a page has already been allocated to the write destination virtual area, a page may be newly allocated to the write destination virtual area). The storage controller may write the write target data accompanying the write request to the allocated page.
- the snapshot pool may be a storage area in which data saved from the original VOL is stored. One pool may be used as both a TP pool and a snapshot pool.
- the “pool VOL” may be a VOL that is a component of the pool.
- the pool VOL may be an RVOL or an EVOL.
- VOL VOL provided to the host
- HDEV HDEV
- TPVOL or RVOL
- the pool is a TP pool.
- the present invention can also be applied to storage systems that do not employ capacity expansion technology (Thin Provisioning).
- MPPK Microprocessor Package
- owner MPPK is an example of a processor package.
- the storage system has a plurality of MPPKs, it is assumed that the storage system has two MPPKs for the sake of easy understanding.
- an inline method is adopted as a deduplication method.
- another type of deduplication method for example, a post process method, or a combination of an inline method and a post process method is used. It may be adopted.
- the “inline method” is a method in which deduplication is performed on data before the data is written to a storage device (for example, HDEV or PDEV).
- the “post-process method” is a method for performing deduplication on data asynchronously after data is written to a storage device.
- data is deduplicated in units of data chunks.
- the data chunk may be simply referred to as “chunk”.
- the chunk may be variable or fixed length.
- FIG. 22 shows an outline of the embodiment.
- the storage system 2000 has a pool 5120, a plurality of HDEVs 5100, and two MPPKs 2100A and 2100B. Each of MPPK 2100A and 2100B has a deduplication function.
- MPPK2100A is the owner MPPK of HDEV5100A
- MPPK2100B is the owner MPPK of HDEV5100B.
- the HDEV 5100A is a VOL provided to the host 1003A
- the HDEV 5100B is a VOL provided to the host 1003B.
- Each MPPK 2100 determines whether each of two or more chunks having the same content is to be a duplication source or a duplication destination by the deduplication function. In this embodiment, this determination is made based on the writing order of the two or more chunks. Specifically, a chunk with a relatively early writing order is set as a duplication source, and a chunk with a relatively slow writing order is set as a duplication destination. In the present embodiment, only one chunk (only the first written chunk) of two or more overlapping chunks is used as the duplication source.
- chunk A chunk with content “A”
- chunk B chunk with content “B”
- the virtual address (logical address) av1 of the chunk A exists in the HDEV 5100A
- the virtual address bv2 of the chunk B exists in the HDEV 5100B
- a page including the real address br1 is allocated to the virtual area including the virtual address bv2.
- the chunk size for example, 8 KB
- the page size for example, 42 MB
- the MPPK 2100A receives a write request from the host 1003A specifying the virtual address bv1 of the HDEV 5100A and writing the chunk B as a write target.
- the MPPK 2100A sets the chunk B at the virtual address bv2 as the duplication source and the chunk B to the virtual address bv1 as the duplication destination. Therefore, a reference R11 from the duplication destination address bv1 to the duplication source address bv2 is generated (more precisely, as described later, the duplication destination address bv1 refers to an address referenced by the duplication source address bv2).
- the MPPK 2100A receives a read request specifying the virtual address bv1 from the host 1003A.
- the owner of HDEV 5100A is MPPK2100A
- MPPK2100A tries to read chunk B from virtual address bv1.
- the virtual address bv1 refers to the virtual address bv2. Therefore, the MPPK 2100A requests the owner MPPK 2100B of the HDEV 5100B to which the virtual address bv2 belongs to read from the virtual address bv2.
- MPPK 2100B reads chunk B from reference destination real address br1 of virtual address bv2 (P11).
- the MPPK 2100B expands the compressed chunk B (P12).
- the MPPK 2100 transfers the expanded chunk B to the MPPK 2100A (for example, copies it to the memory of the MPPK 2100A) (P13).
- the MPPK 2100A transmits the decompressed chunk B to the read request source host 1003A (P14).
- the owner MPPK 2100B of the HDEV 5100B to which the duplication source address bv2 belongs becomes highly loaded.
- the terms “own MPPK” and “other MPPK” may be used.
- the definitions of “own MPPK” and “other MPPK” are as follows. Own MPPK: MPPK having ownership of HDEV 5100 to which the address specified in the read request belongs, Or MPPK having ownership of both the HDEV 5100 to which the address specified in the read request belongs and the HDEV 5100 to which the reference address of the address belongs.
- Other MPPK An MPPK that receives a read request that specifies a reference destination address of an address specified in a read request from its own MPPK.
- each MPPK 2100 for each virtual address of the HDEV 5100 for which the MPPK 2100 is the owner, has its own read frequency (frequency with which the chunk has been read by its own MPPK) and other read frequency (the chunk has been read by the other MPPK). Frequency).
- the MPPK 2100B detects that the own read frequency is higher than the other read frequency for the virtual address bv1. In this case, the MPPK 2100B reverses the reference direction. Therefore, a reference R21 from the virtual address bv2 to the virtual address bv1 is generated instead of the reference R11. Further, instead of the reference R12, a reference R22 from the virtual address bv1 to the real address br1 is generated.
- the MPPK2100B becomes a high load can be reduced.
- the compressed chunk B is read from the reference destination real address br1 of the virtual address bv1 (P21), the compressed chunk B is decompressed (P22), and decompressed.
- the chunk B is transmitted to the host 1003A (P23). According to the flow from P21 to P23, communication between MPPKs 2100A and 2100B (read request transmission and chunk B transfer) does not occur.
- the MPPK 2100B is referred to when the MPPK 2100B is another MPPK, the chunk read by the MPPK 2100B is the compression chunk B, and the load of the MPPK 2100B (other MPPK) is higher than the load of the own MPPK 2100A.
- the compressed chunk B is transferred to its own MPPK 2100A without being expanded (P32). That is, when the MPPK 2100B that has read the compressed chunk B from the duplication source address bv2 has a high load, the MPPK 2100 that decompresses the compressed chunk B can be set as the own MPPK 2100A, so that a part of the load of the other MPPK 2100B can be distributed to the own MPPK 2100A.
- FIG. 1 shows the configuration of the entire system according to the embodiment.
- One or more hosts 1003 are connected to the storage system 2000 via a network.
- a management server 1004 is connected to the storage system 2000.
- the host 1003 is an abbreviation for a host system and is one or more host computers.
- the host 1003 has an HI / F (host interface device) 2004, and sends an access request (write request or read request) to the storage system 2000 via the HI / F 2004, A response (for example, a write response including a write completion or a read response including a read target chunk) is received.
- the HI / F 2004 is, for example, a HBA (Host Bus Adapter) or a NIC (Network Interface Card).
- the management server 1004 is an example of a management system, and manages the configuration and state of the storage system 2000.
- the management server 1004 has a MI / F (management interface device) 2003, and transmits a command to the storage system 2000 and receives a response to the command via the MI / F 2003.
- the MI / F 2003 is, for example, a NIC.
- the storage system 2000 includes a plurality of PDEV 2009 and a storage controller 630 connected to the plurality of PDEV 2009.
- One or more RAID groups including a plurality of PDEV 2009s may be configured.
- the storage controller 630 includes an FI / F (front end interface device) 214, a BI / F (back end interface device) 2006, a CM (cache memory) 2014, an NVRAM (Non-Volatile RAM) 2013, MPPKs 2100A and 2100B, and a repeater 2007 that relays communication between these elements.
- the repeater 2007 is, for example, a bus or a switch.
- FI-F 214 is an I / F that communicates with the host 1003 or the management server.
- the BI / F 2006 is an I / F that communicates with the PDEV 2009.
- the BI / F 2006 may include an E / D circuit (a hardware circuit for encryption and decryption).
- the BI / F 2006 may include a SAS (Serial Attached SCSI) controller, and the SAS controller may include an E / D circuit.
- CM complementary metal-oxide-semiconductor
- NVRAM Dynamic Random Access Memory
- a cluster is composed of MPPK2100A and 2100B.
- the MPPK 2100A (2100B) includes a memory (DRAM 2002A (2002B) and LM (local memory) 2005A (2005B)) and a CPU 2001A (2001B) connected thereto.
- the DRAM 2002A (2002B) stores a control program 3000A (3000B) executed by the CPU 2001A (2001B) and management information 4000A (4000B) referenced or updated by the CPU 2001A (2001) B.
- the control program 3000A (3000B) on the CPU 2001A (2001B), at least a part of the processing described with reference to FIGS. 16 to 21 (for example, deduplication and exchange of relationships between virtual addresses) Is executed.
- At least one of the control program 3000A (3000B) and the management information 4000A (4000B) may be stored in a storage area (for example, CM 2014) shared by the plurality of MPPKs 2100A and 2100B. Chunks are stored in LM2005A (2005B). Specifically, for example, the LM2005A (2005B) includes a chunk written to the PDEV 2009 by the MPPK2100A (2100B), a chunk read from the PDEV 2009 by the MPPK2100A (2100B), a chunk transferred to the MPPK2100A (2100B), and MPPK2100B ( 2100A) and at least one of the chunks expanded by MPPK 2100A (2100B) are stored.
- LM2005A includes a chunk written to the PDEV 2009 by the MPPK2100A (2100B), a chunk read from the PDEV 2009 by the MPPK2100A (2100B), a chunk transferred to the MPPK2100A (2100B), and MPPK2100B ( 2100A) and
- FIG. 2 shows at least a part of the logical device configuration of the storage system 2000.
- HDEV 5100A to 5100D are provided to the hosts 1003A to 1003D, respectively. Pages from the pool 5120 are allocated to the HDEV 5100.
- the pool 5120 is a set of a plurality of pool VOLs 5201. Each pool VOL 5201 is a VOL based on one or more PDEV2009s.
- an arrow 5101 represents a pool capacity (a defined capacity of the pool 5120)
- an arrow 5102 represents a pool allocated capacity (a total capacity of one or more pool VOLs 5201 constituting the pool 5120).
- a plurality of pools 5120 may exist in the storage system 2000.
- Reference numeral 5401 represents the ownership of the HDEV 5100. Specifically, reference numeral 5401A represents the ownership (the ownership of HDEV 5100A and 5100B) that MPPK 2100A has. Reference numeral 5401B represents ownership of the MPPK 2100B (HDEV 5100C and 5100D ownership).
- Deduplication is to reduce the amount of data by detecting a chunk that overlaps with an existing chunk and replacing the reference to the virtual address (logical address) of the duplicated chunk with a reference to the virtual address of the existing chunk.
- FIG. 3A shows an example of the situation before deduplication.
- a reduction area 531 is provided between the logical area provided to the host 1003 (in this embodiment, the HDEV 5100) and the logical area in which data stored in the logical area is actually stored (in this embodiment, the pool VOL 5201 in the pool 5120) Further, a reduction area 531 is provided.
- the “reduction area” is a logical area (logical address space) provided for data reduction (in this embodiment, chunk reduction), and a chunk (A) for a virtual address (1, 2, 3,...) Of the HDEV 5100. , B, C,... Chunks allocated to the reduction area 531 are stored in the pool 5120.
- the reduction area 531 is a logical address space associated with the HDEV 5100.
- the reduction area 531 associated with the HDEV 5100 belongs to the ownership of the HDEV 5100.
- the reduction area 531 is a CM address space.
- the size of the CM address space may be the same as the size of the HDEV 5100 with which the CM address space is associated. Chunks existing in the CM address space may exist in the CM 2014 (cache hit) or may not exist in the CM 2014 (cache miss). In the latter case, the chunk is read from the pool 5120 to the CM 2014 (staging).
- one reduction area 531 is associated with one HDEV 5100, but two or more reduction areas 531 may be associated with one HDEV 5100.
- a plurality of different hash value ranges are assigned to the plurality of MPPK 2100s, and a hash value range to which the hash value of the chunk belongs is assigned to write or read a chunk.
- the reduction area 531 may be a hash value range instead of or in addition to the CM address space.
- the target corresponding to the reduction area 531 may differ depending on the technology adopted for the load distribution of the MPPK 2100.
- a virtual address (logical address) belonging to the HDEV 5100 is referred to as “virtual LBA”
- a logical address belonging to the reduction area 531 is referred to as “reduction LBA”
- a logical address belonging to the pool 5120 is “ Pool LBA ".
- LBA is an abbreviation of Logical Block Address.
- the three pool LBAs 91 to 93 each having the three chunks D are referred to by the three reduced LBAs 81 to 83, respectively.
- the three reduced LBAs 81 to 83 are respectively referred to by the three virtual LBAs 1 to 3 (the virtual LBA 1 of the HDEV 5100B, the virtual LBA 2 of the HDEV 5100C, and the virtual LBA 3 of the HDEV 5100D).
- FIG. 3B shows an example of the situation after deduplication.
- the virtual LBA 1 is the duplication source LBA
- the virtual LBAs 2 and 3 are the duplication destination LBAs, respectively.
- FIG. 4 shows an example of the situation before the reference direction is changed.
- the chunk D written earlier in chronological order becomes the duplication source (share source), and the chunk D written later becomes the duplication destination. That is, the chunk D written later is deleted, and the duplication destination LBAs (virtual LBAs) 2 and 3 refer to the reduced LBA 81 referenced by the duplication source LBA1. That is, the reduced LBA 81 is shared (hereinafter, the shared reduced LBA such as the reduced LBA 81 is referred to as “shared LBA”.
- the MPPK 2100 when the MPPK 2100 reads the chunk D from any one of the HDEVs 5100, the owner of the reduction area 531B with the chunk D is the MPPK 2100A, so the MPPK 2100A needs to read the chunk D from the pool 5120. For this reason, the load of MPPK2100A may also be generated by chunk reading of MPPK2100B. Therefore, if many shared LBAs (in other words, many overlapping source LBAs (virtual LBAs)) are arranged in the range of one ownership, the MPPK 2100A having the ownership becomes a high load, and as a result, the storage system 2000 The overall performance may be reduced.
- many shared LBAs in other words, many overlapping source LBAs (virtual LBAs)
- FIG. 5 shows an example of the situation after the reference direction is changed.
- each MPPK 2100 for each virtual LBA of the HDEV 5100 for which the MPPK 2100 is the owner, has its own read frequency (frequency with which chunks have been read by its own MPPK) and other read frequency (the chunk has been read by other MPPKs). Frequency).
- the MPPK 2100A detects that the own read frequency is higher than the other read frequency for the virtual LBA1, the MPPK 2100A changes the reference direction. For this reason, the following processing is performed. (*) MPPK 2100A moves chunk D between owners (between MPPK 2100A and 2100B).
- the MPPK 2100A moves the chunk D from the reduced LBA 81 to the reduced LBA 82 in the reduced area 531C associated with the HDEV 5100C to which the virtual LBA 2 belongs.
- the MPPK 2100A changes the reference destination of the virtual LBA 1 from the reduced LBA 81 to the reduced LBA 82.
- the MPPK 2100A deletes the reference 61 (see FIG. 3B) to the pool LBA 91 of the reduced LBA 81.
- the MPPK 2100B changes the reference destination of each of the virtual LBA2 and the virtual LBA3 from the reduced LBA 81 to the reduced LBA 82.
- the MPPK 2100B adds a reference 62 from the reduced LBA 82 to the pool LBA 91.
- chunk D is taken as an example of two or more chunks having the same content, but chunks B and C exist in addition to the chunk D.
- the same processing as that for chunk D is performed for each of chunks B and C. However, since each of chunks B and C does not straddle ownership, chunk movement is not performed.
- management information 4000 that is referred to or updated in order to realize the above-described processing will be described.
- the management information 4000A is taken as an example.
- the end of the reference number of the element in the management information 4000A is “A”.
- Elements in the management information 4000B can be expressed by replacing “A” at the end of the reference symbol with “B”.
- the elements in the management information 4000A and 4000B may include elements shared by the MPPKs 2100A and 2100B (for example, the pool table 4300), but the end of the reference numerals of the elements is also to avoid confusion with the description. , “A” or “B”.
- the pool tables 4300A and 4300B may actually be one pool table 4300.
- FIG. 6 shows the configuration of management information 4000A.
- Management information includes multiple management tables.
- the management table for example, there are an HDEV table 4100A that holds information about the HDEV 5100, an MPPK table 4200A that holds information about the MPPK 2100, and a pool table 4300A that holds information about the pool 5120.
- a pool VOL table 4400A that holds information about the pool VOL 5201
- an HDEV theory table 4500A for logical-physical conversion of the HDEV 5100
- a reduction area table 4600A that holds information about the reduction area 531
- a physical theory conversion of the HDEV 5100 There is an HDEV materialism table 4700A for.
- a management table there are a page mapping table 4800A for mapping between a virtual area and a page, and a hash table 4900A for holding a hash value of a chunk. At least part of the information may be synchronized between the management information 4000A and 4000B, or may be shared by the MPPKs 2100A and 2100B as described above and may be the same information as the entity.
- FIG. 7 shows the configuration of the HDEV table 4100A.
- the HDEV table 4100A has an entry (record) for each HDEV 5100.
- Information stored in each entry is an HDEV number 4101A, an HDEV capacity 4102A, a reduction area number 4103A, an owner MPPK number 4104A, a VOL type 4105A, a reduction mode 4106A, an encryption 4107A, and a pool number 4108A.
- the HDEV number 4101A represents the identification number of the HDEV 5100.
- the HDEV capacity 4102A represents the capacity of the HDEV 5100.
- the reduction area number 4103A represents the number of the reduction area 531 associated with the HDEV 5100.
- the owner MPPK number 4104A represents the identification number of the owner MPPK of the HDEV 5100.
- the VOL type 4105A represents the type of the HDEV 5100 (for example, “RVOL” or “TPVOL”). When the HDEV 5100 type is “RVOL”, the chunk is directly stored in the HDEV (RVOL) 5100.
- the reduction mode 4106A represents a reduction type of data stored in the HDEV 5100.
- the reduction mode 4106A includes “compression”, “deduplication”, “compression + deduplication” (both compression and deduplication), and “invalid” (no compression or deduplication is performed).
- the encryption 4107A is a flag indicating whether or not the data stored in the HDEV 5100 is encrypted (“valid”) or not (“invalid”).
- the pool number 4108A represents the identification number of the pool 5120 with which the HDEV 5100 is associated. A page is assigned to the HDEV 5100 from the pool 5120 with which the HDEV 5100 is associated.
- FIG. 8 shows the configuration of the MPPK table 4200A.
- the MPPK table 4200A has an entry for each MPPK 2100. Information stored in each entry is an MPPK number 4201A, an MPPK load 4202A, and an HDEV number 4203A.
- MPPK number 4201A represents the identification number of MPPK2100.
- the MPPK load 4202A represents the load of the MPPK 2100, specifically, the load of the CPU 2001A in the MPPK 2100 (for example, the CPU usage rate).
- the HDEV number 4203A represents the identification number of the HDEV 5100 for which the MPPK 2100 has ownership.
- FIG. 9 shows the configuration of the pool table 4300A.
- the pool table 4300A has an entry for each pool 5120. Information stored in each entry is a pool number 4301A, a pool capacity 4302A, a pool allocated capacity 4303A, and a pool use capacity 4304A.
- the pool number 4301A represents the identification number of the pool 5120.
- the pool capacity 4302 represents the defined capacity of the pool 5120, specifically, the defined capacity of the pool 5120 (the capacity indicated by the arrow 5101 in FIG. 2).
- the pool allocated capacity 4303A represents the total capacity (capacity indicated by the arrow 5102 in FIG. 2) of one or more pool VOLs 5201 constituting the pool 5120.
- the pool usage capacity 4304A represents the total amount of data stored in the pool 5120 (for example, the capacity of the entire page group allocated to one or more HDEVs 5100). When data reduction (at least one of compression and deduplication) is performed on data, the pool usage capacity 4304A may be calculated by the MPPK 2100A based on the data amount after data reduction.
- the MPPK 2100A may calculate the pool usage capacity 4304A based on the data amount before compression, or receive a notification of the data amount after compression from the PDEV 2009, and the data amount after compression
- the pool usage capacity 4304A may be calculated based on the above.
- FIG. 10 shows the configuration of the pool VOL table 4400A.
- the pool VOL table 4400A has a list 4430A of pool VOL number 4401A and a pool VOL subtable 4410A for each pool VOL number 4401A.
- the pool VOL subtable 4410A has an entry for each pool VOL 5201 in the pool 5120.
- Information stored in each entry includes a pool VOL number 4401A, a PDEV type 4403A, a compression function 4404A, an encryption function 4405A, and a pool VOL capacity 4406A.
- the pool VOL number 4401A represents the identification number of the pool VOL5201.
- the PDEV type 4403A represents the type of the PDEV 2009 that is the basis of the pool VOL 5201.
- the compression function 4404A is a flag indicating whether or not the PDEV 2009 on which the pool VOL 5201 is based has a compression function.
- the encryption function 4405A is a flag indicating whether or not the PDEV 2009 that is the basis of the pool VOL 5201 has an encryption function.
- the pool VOL capacity 4406A represents the capacity of the pool VOL 5201.
- FIG. 11 shows the configuration of the HDEV theory table 4500.
- the HDEV logical product table 4500 is a table that is referred to in order to perform address conversion from the virtual LBA to the reduced LBA.
- the HDEV logical product table 4500 includes a list 4530A of HDEV numbers 4501A and an HDEV logical product sub-table 4510A for each HDEV number 4501A.
- the HDEV logical-sub-table 4510A has an entry for each virtual LBA. Information stored in each entry is a virtual LBA 4502A and a reference destination 4503A.
- the reference destination 4503A includes a reduction area number 4504A and a reduction LBA 4505A.
- the HDEV number 4501A represents the identification number of the HDEV 5100.
- a virtual LBA 4502A represents a virtual LBA of the HDEV 5100.
- the reduction area number 4504A represents the identification number of the reduction area 531 to which the reduced LBA after conversion of the virtual LBA 4502A belongs.
- the reduced LBA 4505A represents the reduced LBA after conversion of the virtual LBA 4502A.
- FIG. 12 shows the configuration of the reduction area table 4600A.
- the reduction area table 4600A has a list 4630A of reduction area numbers 4601A and a reduction area sub-table 4650A for each reduction area number 4601A.
- the reduction area subtable 4650A has an entry for each reduction LBA.
- Information stored in each entry includes a reduced LBA 4602A, a reference number 4603A, a reference count 4604A, another access 4605A, a review 4606A, a page number 4607A, an offset 4608A, and a chunk size 4609A.
- Reference count 4604A includes own RT 4611A and other RT 4612A.
- the other access 4605A includes an HDEV number 4621A and a virtual LBA 4622A.
- the reduction area number 4601A represents the identification number of the reduction area 531.
- the reduction LBA 4602A represents the reduction LBA of the reduction area 531.
- the reference number 4603A represents the number of virtual LBAs that refer to the reduced LBA 4602A (specifically, the number of sets of an HDEV number 4704A and virtual LBA 4705A described later corresponding to the reduced LBA 4602A).
- the value represented by the reference number 4603A is an integer of 2 or more, the same reduced LBA is referenced from two or more virtual LBAs 4502A by deduplication.
- the own RT 4611A represents the number of times the chunk of the reduced LBA has been read by the own MPPK 2100A.
- the other RT 4612A represents the number of times the chunk of the reduced LBA has been read by the other MPPK 2100A.
- the own RT 4611A corresponds to the above-described own read frequency
- the other RT 4612A corresponds to the above-described other read frequency.
- the own RT 4611A and the other RT 4612A may be periodically returned to their initial values (for example, “0”).
- the HDEV number 4621A represents the identification number of the HDEV 5100 to which the duplication source LBA (virtual LBA) referring to the reduced LBA belongs.
- the virtual LBA 4622A represents a duplication source LBA (virtual LBA) referring to the reduced LBA.
- the review 4606A is a flag indicating whether or not the reduced LBA 4602A is a reference review target (“Y”) (“N”).
- the page number 4607A represents the identification number of the page to which the pool LBA referenced by the reduced LBA 4602A belongs.
- the offset 4608A represents the position (offset from the top of the page) of the pool LBA referred to by the reduced LBA 4602A.
- the page number 4607A and the offset 4608A mean the pool LBA that the reduced LBA 4602A refers to.
- the chunk size 4609A represents the size of the chunk in the reduced LBA represented by the reduced LBA 4602A. When the chunk is a compressed chunk, the chunk size 4609A represents the size of the compressed chunk.
- FIG. 13 shows the configuration of the HDEV physical theory table 4700A.
- the HDEV physical theory table 4700A is a table referred to for address conversion from the reduced LBA to the virtual LBA.
- the HDEV physical theory table 4700A includes a list 4730A of reduced area numbers 4701A and an HDEV physical theory subtable 4750A for each reduced area number 4701A.
- the HDEV physical sub-table 4750A has an entry for each reduced LBA in the reduced area 531.
- the information stored in each entry is a reduced LBA 4702A and a hash value 4703A.
- the entry has a list 4740A of the storage destination virtual LBA 4705A of the chunk having the hash value 4703A stored in the entry.
- the list 4740A is a list of pairs of the virtual LBA 4705A and the HDEV number 4704A (identification number of the HDEV 5100 having the virtual LBA represented by the virtual LBA 4705A).
- FIG. 14 shows the configuration of the page mapping table 4800A.
- the page mapping table 4800A has a list of pool numbers 4801A and a mapping subtable 4810A for each pool number 4801A.
- Mapping subtable 4810A has an entry for each page in pool 5120. Information stored in each entry includes a page number 4802A, a page type 4803A, a head LBA 4804A, an allocation 4805A, a pool VOL number 4806A, and a head LBA 4807A in the pool VOL.
- the pool number 4801A represents the identification number of the pool 5120.
- the page number 4802A represents a page identification number.
- a page type 4803 represents the type of data stored in the page.
- the head LBA 4804A represents the head pool LBA of the page (LBA when the head of the pool 5120 is used as a reference).
- the allocation 4805A is a flag indicating whether a page is allocated to the HDEV 5100 (“1”) or not (“0”).
- the pool VOL number 4806A represents the identification number of the pool VOL 5201 including the page.
- the first LBA 4806A in the pool VOL represents the LBA in the pool VOL 5201 of the LBA represented by the first LBA 4804A (LBA when the head of the pool VOL 5201 is used as a reference).
- FIG. 15 shows the configuration of the hash table 4900A.
- the hash table 4900A has an entry for each hash value. Information stored in each entry is a hash value 4901A, a reduction area number 4902A, and a reduction LBA 4903A.
- Hash value 4901A represents the hash value of the chunk.
- the reduction area number 4902A represents the identification number of the reduction area 531 to which the reduction LBA storing the chunk (duplication source) serving as the hash value belongs.
- the reduced LBA 4903A represents a reduced LBA that stores a chunk serving as the hash value.
- FIG. 16 shows the flow of the entire lead process.
- the MPPK 2100A receives a read request from the host 1003A (S1001).
- the MPPK 2100A refers to the HDEV table 4100A and specifies the owner MPPK number 4104A corresponding to the HDEV number 4101A of the HDEV 5100 specified by the read request.
- the MPPK 2100 with the identified owner MPPK number 4104A starts a read process (the processes of S1003 to S1020) (S1002).
- the MPPK 2100 that starts the read process is referred to as MPPK 2100A.
- MPPK2100A is its own MPPK.
- the virtual LBA specified in the read request may be referred to as “read source virtual LBA”
- the HDEV to which the read source virtual LBA belongs may be referred to as “read source HDEV”.
- the MPPK 2100A specifies the reduction area number (4504A) and the reduction LBA (4505A) corresponding to the read source virtual LBA from the HDEV logical object table 4500, and specifies the owner MPPK number 4104A corresponding to the reduction area number from the HDEV table 4100A. (S1003).
- the MPPK 2100A determines whether or not the MPPK 2100 represented by the identified owner MPPK number 4104A is its own MPPK 2100A (S1004).
- the own MPPK 2100A increments the value represented by the own RT 4611A corresponding to the reduced LBA specified in S1003 by one.
- the own MPPK 2100A performs a reference change determination process (see FIG. 17) (S1006). If the own MPPK 2100A does not have the reduced LBA chunk identified in S1003 in the CM 2014, the own MPPK 2100A identifies the reference pool LBA of the reduced LBA from the reduced area table 4600A (S1007), and reads the chunk from the identified pool LBA to the CM 2014 ( Staging) (S1008). If the chunk is a compressed chunk (S1009: YES), the own MPPK 2100A expands the compressed chunk (S1010). The own MPPK 2100A returns the chunk to the host 1003A.
- the own MPPK 2100A transmits a read request to the other MPPK 2100.
- the read request may include the reduced LBA specified in S1003, and the HDEV number (read source HDEV identification number) and virtual LBA (read source virtual LBA) specified in the read request.
- Other MPPK 2100B receives the read request, and increments the value represented by other RT 4612B corresponding to the reduced LBA specified in S1003 by one.
- the other MPPK 2100B registers the identification number of the read source HDEV 5100 and the read source virtual LBA in the reduction area table 4600B as other access 4605B (HDEV number 4621B and virtual LBA 4612B) corresponding to the reduced LBA specified in S1003 ( S1012).
- the other MPPK 2100B performs a reference change determination process (see FIG. 17) (S1013). If the other MPPK 2100B does not have the chunk of the reduced LBA identified in S1003 in the CM 2014, the reference pool LBA of the reduced LBA is identified from the reduced area table 4600B (S1014), and the chunk is read from the identified pool LBA to the CM 2014 ( Staging) (S1015).
- the other MPPK 2100B transfers the chunk to the own MPPK 2100A, and the own MPPK 2100A returns the chunk to the host 1003A (S1021).
- the other MPPK 2100B refers to the MPPK table 4200B and determines whether the MPPK load of the other MPPK 2100B is higher than the MPPK load of its own MPPK 2100A (S1018).
- the other MPPK 2100B expands the compressed chunk (S1020), and transfers the expanded chunk to its own MPPK 2100A.
- the own MPPK 2100A receives the chunk and returns the received chunk to the host 1003A (S1021).
- the own MPPK 2100A expands the compressed chunk instead of the other MPPK 2100B. That is, the other MPPK 2100B transfers the compressed chunk to its own MPPK 2100A.
- the own MPPK 2100A receives the compressed chunk, decompresses the received compressed chunk (S1019), and returns the decompressed chunk to the host 1003A (S1021).
- the read processing (S1003 to S1020) is performed for each virtual LBA.
- Data including a plurality of chunks respectively corresponding to the plurality of virtual LBAs may be returned to the host 1003 in S1021.
- the reference change determination process (S1006, S1013) is performed in synchronization with the read request (although it is performed after the read request is received until the response is returned), the read is performed. It may be done asynchronously with the request.
- the following can be expected by performing the reference change determination process in synchronization with the read request.
- the chunks that are subject to reference change determination can be limited only to the range in which the read request is made, and the number of chunks to be determined is limited as compared with the case of performing asynchronously. As a result, the load of determination processing is reduced. I can expect that.
- FIG. 17 is a flowchart of the reference change determination process.
- the other MPPK 2100B refers to the reduction area table 4600B (S1101), and compares the own RT 4611B and the other RT 4612B corresponding to the reduction area number and the reduction LBA specified in S1003 (S1102).
- the other MPPK 2100B reviews 4606B corresponding to the reduction area number and the reduction LBA specified in S1003. Is set to “Y” (S1105).
- the other MPPK 2100B determines the reduction area number and the reduction LBA specified in S1003.
- the review 4606B corresponding to is set to “N” (S1106).
- FIG. 18 shows the flow of the reference change process. This flow is started regularly (or irregularly).
- the MPPK 2100B refers to the reduction area table 4600B (S1201), and determines whether there is a review 4606B “Y” (S1202). When the determination result in S1202 is positive (S1202: YES), S1203 to S1212 are performed for the found review 4606B “Y”.
- the entry including the found review 4606B “Y” is referred to as “target entry” in the description of FIG.
- the MPPK 2100B compares the own RT 4611B and the other RT 4612B in the target entry (S1203). If the difference between the own RT 4611B and the other RT 4612B is equal to or greater than the threshold (S1204: YES), the reference is changed.
- the MPPK 2100B identifies the other access 4605B (HDEV number 4621B and virtual LBA 4622B) in the target entry (S1205). That is, the duplication destination LBA is specified.
- the MPPK 2100B specifies the reduction area number 4103B and the owner MPPK number 4104B corresponding to the specified HDEV number (4621B) from the HDEV table 4100B (S1206). That is, the reference destination reduction area of the duplication destination LBA and the owner MPPK of the HDEV to which the duplication destination LBA belongs are specified.
- the MPPK 2100B copies the target entry to the reduction area sub-table 4650A associated with the reduction area number specified in S1206 among the reduction area table 4600A in the specified owner MPPK 2100A (S1207). That is, the reduction LBA that is the duplication source moves from the reduction area belonging to the ownership of MPPK 2100B to the reduction area belonging to the ownership of MPPK 2100B.
- the target entry in the MPPK 2100B is referred to as a “copy source target entry”
- the target entry copied to the owner MPPK 2100A is referred to as a “copy destination target entry”.
- the owner MPPK 2100A sets other access 4605A (HDEV number 4621A and virtual LBA 4622A) in the copy destination target entry as the HDEV number 4704A and virtual LBA 4705A corresponding to the reduction area number and reduction LBA of the copy destination target entry in the HDEV physical theory table 4700A. Is added (S1208). Also, the owner MPPK 2100A changes the reduced area number 4504A and the reduced LBA 4505A corresponding to the added HDEV number and virtual LBA in the HDEV logical product table 4500A to the reduced area number and reduced LBA of the copy destination target entry (1209). ). Through S1208 and 1209, the virtual LBA that was the duplication destination is changed to the duplication source LBA, and the duplication source LBA refers to the reduced LBA of the copy destination target entry.
- the MPPK 2100B changes the reduction area number (4504B) and the reduction LBA (4505B) of the copy source target entry in the HDEV logical product table 4500B to the reduction area number and reduction LBA of the copy destination target entry (S1210). That is, the virtual LBA that was the duplication source becomes the duplication destination LBA, and the duplication destination LBA refers to the reduction LBA of the copy destination target entry.
- Each of the MPPKs 2100A and 2100B changes the reduction area number 4903 and the reduction LBA 4904 corresponding to the hash value corresponding to the target entry in the hash table 4900 of the MPPK 2100 to the reduction area number and reduction LBA of the copy destination target entry (S1211). ). That is, the duplication source (shared LBA) is the copy destination target entry reduction LBA.
- the MPPK 2100B deletes the copy source target entry from the reduction area table 4600B (1212).
- FIG. 19 shows a flow of the entire write process.
- the MPPK 2100A receives a write request from the host 1003A (S1301).
- the MPPK 2100A refers to the HDEV table 4100A, identifies the owner MPPK number 4104A corresponding to the HDEV number specified by the write request, and the identified owner MPPK 2100 starts the write process (the processes of S1303 to S1310) (S1302). ).
- the MPPK 2100 that starts the write process is referred to as MPPK 2100A.
- MPPK2100A is its own MPPK.
- the virtual LBA specified by the write request may be referred to as “write destination virtual LBA”
- the HDEV to which the write destination virtual LBA belongs may be referred to as “write destination HDEV”.
- the MPPK 2100A specifies the reduction mode 4106A corresponding to the write destination HDEV 5100 from the HDEV table 4100A (S1303).
- the MPPK 2100A performs a compression process (see FIG. 21) (S1311).
- the MPPK 2100A When the specified reduction mode 4106A includes deduplication (S1304: YES), the MPPK 2100A performs duplication determination processing (see FIG. 20) (S1305). As a result of the duplication determination processing, when there is no duplication for the write target chunk (S1306: NO), the MPPK 2100A performs compression processing (S1311).
- the MPPK 2100A determines that the HDEV logical product table 4500A, the reduction area table 4600A, and the reduction area table 4600A
- the HDEV physical theory table 4700A is updated (S1307, S1308, and S1309).
- the MPPK 2100A assigns the write target chunk that has not been deduplicated to the write destination HDEV 5100 (eg, PDEV 2009 that is the basis of a page assigned to the write destination virtual LBA (eg, a page as a storage area secured by compression processing)). Write (S1310).
- write processing (S1303 to S1309) is performed for each virtual LBA.
- a plurality of chunks corresponding to the plurality of virtual LBAs may be written in S1310.
- the duplication determination process in S1305 may be performed after the write target data is written in the PDEV (asynchronously with the entire write process).
- FIG. 20 shows a flow of duplication determination processing.
- the MPPK 2100A calculates a hash value of the write target chunk (S1401).
- the MPPK 2100A refers to the hash table 4900A and searches for the same hash value as the hash value calculated in S1401 (S1402).
- the MPPK 2100A specifies the reduced area number 4902A and the reduced LBA 4903A corresponding to the hash value (S1404).
- FIG. 21 shows the flow of compression processing.
- the compression processing includes processing for determining whether to compress the chunk (write target chunk) by the storage controller 630 or PDEV2009.
- the outline is as follows.
- the write destination HDEV 5100 is compression effective (the reduction mode 4106A includes “compression”) and the write destination pool VOL 5201 is compression effective (compression capability 4404A “present”)
- the write destination PDEV 2009 compresses the chunk (storage controller) 630 does not compress the chunk).
- the “write destination pool VOL5201” is a pool VOL5201 including a page (write destination page) allocated to the virtual area to which the write destination virtual LBA belongs.
- the write destination PDEV 2009 is the PDEV 2009 that is the basis of the write destination page.
- the write destination PDEV 2009 encrypts the chunk ( The storage controller 630 does not encrypt the chunk).
- the storage controller 630 compresses the chunk and then encrypts the compressed chunk. Even if the write destination PDEV 2009 compresses the chunk after encrypting the chunk with the storage controller 630, the chunk is encrypted, so the compression effect (ratio of data amount before and after compression) is considered to be low. Because it is.
- the MPPK 2100A determines whether or not the compression of the write destination HDEV 5100 is valid (S1501).
- the MPPK 2100A secures a storage area (a free page if no page is allocated to the virtual area to which the write destination virtual LBA 4502A belongs) (S1503).
- the MPPK 2100A determines whether or not the write destination HDEV 5100 is valid for encryption (S1504).
- the compression process ends. That is, since neither compression nor encryption of the write destination HDEV 5100 is effective, the compression process is completed only by securing the storage area.
- the MPPK 2100A determines whether the write destination pool VOL5201 is encryption effective (S1505). When the write destination pool VOL5201 is enabled for encryption (S1505: YES), the MPPK 2100A does not encrypt the chunk (without instructing the BI / F 2006 to specify the chunk encryption). To the write destination PDEV2009. As a result, the chunk is transmitted to the write destination PDEV 2009 via the BI / F 2006 without being encrypted, and the write destination PDEV 2009 receives the chunk and encrypts and stores the received chunk (S1506).
- the MPPK 2100A instructs the BI / F 2006 to perform chunk encryption and transmits the chunk to the write destination PDEV 2009.
- the chunk is encrypted by the BI / F 2006 and transmitted to the write destination PDEV 2009 (S1507), and the write destination PDEV 2009 receives the encrypted chunk and stores the received chunk.
- the MPPK 2100A When the write destination HDEV 5100 is compression effective (S1501: YES), the MPPK 2100A performs the same process as S1503, that is, secures a storage area (S1502). The MPPK 2100A determines whether or not the write destination HDEV 5100 is encrypted (S1508).
- the MPPK 2100A determines whether the write destination pool VOL 5201 is compression effective (S1510). If the write destination pool VOL5201 is not compression effective (S1510: NO), the MPPK 2100A compresses the chunk and transmits it to the write destination PDEV 2009 (S1512). As a result, the write destination PDEV 2009 receives the compressed chunk and stores the received compressed chunk. On the other hand, when the write destination pool VOL5201 is compression enabled (S1510: YES), the MPPK 2100A transmits the chunk to the write destination PDEV 2009 without compressing the chunk. As a result, the write destination PDEV 2009 receives the chunk, and compresses and stores the received chunk (S1511).
- the MPPK 2100A determines whether the write destination pool VOL5201 is valid for encryption (S1509). If the write destination pool VOL5201 is not encrypted (S1509: NO), the MPPK 2100A compresses the chunk (S1514), instructs the BI / F 2006 to encrypt the compressed chunk, and writes the compressed chunk to the write destination pool. Transmit to PDEV2009. As a result, the compressed chunk is encrypted by the BI / F 2006 and transmitted to the write destination PDEV 2009 (S1515), and the write destination PDEV 2009 receives the encrypted compressed chunk and stores the received chunk.
- the MPPK 2100A determines whether the write destination pool VOL5201 is valid. (S1513). If the write destination pool VOL5201 is not compression-effective (S1513: NO), the MPPK 2100A compresses the chunk and transmits it to the write destination PDEV 2009 without encrypting the compressed chunk (S1517). As a result, the write destination PDEV 2009 receives the compressed chunk and encrypts and stores the received compressed chunk (S1518).
- the MPPK 2100A transmits the chunk to the write destination PDEV 2009 without compressing or encrypting the chunk.
- the write destination PDEV 2009 receives the chunk, compresses the received chunk, and encrypts and stores the compressed chunk (S1516).
- the compression processing if the write destination PDEV 2009 is compression-enabled, compression is performed by the write destination PDEV 2009 instead of the storage controller 630, and if the write destination PDEV 2009 is encryption-enabled, the write destination is replaced by the storage controller 630. Encryption is performed by PDEV2009. For this reason, the load of the storage controller 630 can be reduced.
- the storage controller 630 compresses the chunk. After that, the compressed chunk is encrypted. Even if the write destination PDEV 2009 compresses the chunk after encrypting the chunk with the storage controller 630, the chunk is encrypted, so the compression effect (ratio of data amount before and after compression) is considered to be low. Because it is.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
第1論理ボリューム及び第1論理アドレスが指定されたリード要求の処理において、第1論理アドレスが重複先論理アドレスであれば、第1論理ボリュームが属するオーナ権を有する第1プロセッサパッケージと、その重複先論理アドレスに対応した重複元論理アドレスとしての第2論理アドレスを有する第2論理ボリュームが属するオーナ権を有する第2プロセッサパッケージ間で通信が生じる。それらのプロセッサパッケージを含むストレージコントローラが、第1論理アドレスのリード頻度が第2論理アドレスのリード頻度よりも高いか否かの判定であるリード頻度判定を実行する。リード頻度判定の結果が肯定の場合、ストレージコントローラが、第1論理アドレスを重複先論理アドレスから重複元論理アドレスに変更し第2論理アドレスを重複元論理アドレスから重複先論理アドレスに変更する。
Description
本発明は、概して、重複排除機能を有するストレージシステムにより行われるデータI/O(Input/Output)に関する。
重複排除に関して、例えば、特許文献1及び2の技術が知られている。特許文献1は、重複排除を行うノードの特性(characteristics)を基に、重複排除処理を行うノードを決定する技術を開示している。特許文献2は、複数のストレージノードをバックエンドに持つストレージ装置により、データの重複度合いが或る閾値以上に重複するデータを持つストレージノードを選択し、データを格納する技術を開示している。
重複排除機能を有するストレージシステムとして、複数のプロセッサパッケージを有するストレージシステムを採用できる。そして、その複数のプロセッサパッケージの負荷分散のために、異なるプロセッサパッケージに異なるVOL(論理ボリューム)のオーナ権を割り当てる技術を採用できる。この技術によれば、各VOLには、そのVOLのオーナ権を持つプロセッサパッケージのみがアクセスできる。なお、「プロセッサパッケージ」とは、1以上のプロセッサのパッケージ(具体的には、例えば、1以上のプロセッサが搭載された回路基板)である。
いずれかのVOL内のデータと重複するデータが別のVOLに書き込まれる又は存在する場合、重複排除機能により、一方のデータが重複元とされ他方のデータが重複先とされる。重複先とされたデータは削除され、重複先アドレス(重複先とされたデータのアドレス)が重複元アドレス(重複元とされたデータのアドレス)を参照する。
重複元アドレスが多いVOLのオーナ権が特定のプロセッサパッケージに偏ってしまうことがあり得る。この場合、その特定のプロセッサパッケージが高負荷となり、結果として、ストレージシステム全体の性能が低下してしまうことがあり得る。なぜなら、複数のリード要求で異なる複数の重複先アドレスが指定されている場合、特定のプロセッサパッケージが、それら複数の重複先アドレスに対応した1以上の重複元アドレスからデータを読み出すことになるからである。
第1論理ボリューム及び第1論理アドレスが指定されたリード要求の処理において、第1論理アドレスが重複先論理アドレスであれば、第1論理ボリュームが属するオーナ権を有する第1プロセッサパッケージと、その重複先論理アドレスに対応した重複元論理アドレスとしての第2論理アドレスを有する第2論理ボリュームが属するオーナ権を有する第2プロセッサパッケージ間で通信が生じる。それらのプロセッサパッケージを含むストレージコントローラが、第1論理アドレスのリード頻度が第2論理アドレスのリード頻度よりも高いか否かの判定であるリード頻度判定を実行する。リード頻度判定の結果が肯定の場合、ストレージコントローラが、第1論理アドレスを重複先論理アドレスから重複元論理アドレスに変更し第2論理アドレスを重複元論理アドレスから重複先論理アドレスに変更する。
ストレージシステムの性能が低下する可能性を低減することができる。
以下、一実施形態を説明する。
なお、以下の説明では、以下の説明では、「xxxテーブル」といった表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号(又は参照符号における共通部分)を使用し、同種の要素を区別して説明する場合は、要素のID(又は要素の参照符号)を使用することがある。例えば、MPPKを特に区別しないで説明する場合には、「MPPK2100」と記載し、個々のMPPKを区別して説明する場合には、「MPPK2100a」、「MPPK2100b」のように記載することがある。
また、以下の説明では、「PDEV」は、物理的な記憶デバイスを意味し、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよい。PDEVは、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)でよい。ストレージシステムに異なる種類のPDEVが混在していてもよい。
また、以下の説明では、「RAID」は、Redundant Array of Independent (or Inexpensive) Disksの略である。RAIDグループは、複数のPDEV(典型的には同種のPDEV)で構成され、そのRAIDグループに関連付けられたRAIDレベルに従いデータを記憶する。RAIDグループは、パリティグループと呼ばれてもよい。パリティグループは、例えば、パリティを格納するRAIDグループのことでよい。
また、以下の説明では、「VOL」は、論理ボリュームの略であり、論理的な記憶デバイスでよい。VOLは、実体的なVOL(RVOL(VDEV))であってもよいし、仮想的なVOL(VVOL)であってもよい。「RVOL」は、そのRVOLを有するストレージシステムが有する物理的な記憶資源(例えば、1以上のRAIDグループ)に基づくVOLでよい。「VVOL」は、外部接続VOL(EVOL)と、容量拡張VOL(TPVOL)と、スナップショットVOLとのうちのいずれでもよい。EVOLは、外部のストレージシステムの記憶空間(例えばVOL)に基づいておりストレージ仮想化技術に従うVOLでよい。TPVOLは、複数の仮想領域(仮想的な記憶領域)で構成されており容量仮想化技術(典型的にはThin Provisioning)に従うVOLでよい。スナップショットVOLは、オリジナルのVOLのスナップショットとして提供されるVOLでよい。スナップショットVOLは、RVOLであってもよい。「プール」は、論理的な記憶領域(例えば複数のプールVOLの集合)であり、用途ごとに用意されてよい。例えば、プールとして、TPプールと、スナップショットプールとのうちの少なくとも1種類があってよい。TPプールは、複数のページ(実体的な記憶領域)で構成された記憶領域でよい。ストレージコントローラが、ホストシステム(以下、ホスト)から受信したライト要求が指定するアドレスが属する仮想領域(TPVOLの仮想領域)にページが割り当てられていない場合、その仮想領域(ライト先仮想領域)にTPプールからページを割り当てる(ライト先仮想領域にページが割り当て済であってもページが新たにライト先仮想領域に割り当てられてもよい)。ストレージコントローラは、割り当てられたページに、そのライト要求に付随するライト対象データを書き込んでよい。スナップショットプールは、オリジナルのVOLから退避されたデータが格納される記憶領域でよい。1つのプールが、TPプールとしてもスナップショットプールとしても使用されてもよい。「プールVOL」は、プールの構成要素となるVOLでよい。プールVOLは、RVOLであってもよいしEVOLであってもよい。
以下の説明では、ホストから見えるVOL(ホストに提供されるVOL)を「HDEV」と言う。以下の説明では、HDEVは、TPVOL(又はRVOL)であり、プールは、TPプールである。しかし、本発明は、容量拡張技術(Thin Provisioning)が採用されていないストレージシステムにも適用できる。
また、以下の説明では、各HDEVについて、そのHDEVのオーナ権を持つMPPK(Microprocessor Package)を、「オーナMPPK」と言うことがある。なお、MPPKは、プロセッサパッケージの一例である。ストレージシステムは、複数のMPPKを有するが、以下、説明を分かり易くするために、ストレージシステムは2つのMPPKを有するとする。
また、以下の説明では、重複排除の方式として、インライン方式が採用されるが、本発明では、他種の重複排除方式、例えば、ポストプロセス方式、又は、インライン方式とポストプロセス方式との併用が採用されてもよい。なお、「インライン方式」とは、データを記憶デバイス(例えばHDEV又はPDEV)に書き込む前にそのデータについて重複排除を行う方式である。「ポストプロセス方式」とは、データを記憶デバイスに書き込んだ後に非同期でそのデータについて重複排除を行う方式である。
また、以下の説明では、データチャンク単位でデータが重複排除される。以下、データチャンクを単に「チャンク」と言うことがある。実施形態では、チャンクは可変長でも固定長でもよい。
図22は、実施形態の概要を示す。
ストレージシステム2000が、プール5120と、複数のHDEV5100と、2つのMPPK2100A及び2100Bとを有する。MPPK2100A及び2100Bの各々が、重複排除機能を有する。MPPK2100Aは、HDEV5100AのオーナMPPKであり、MPPK2100Bは、HDEV5100BのオーナMPPKである。HDEV5100Aは、ホスト1003Aに提供されたVOLであり、HDEV5100Bは、ホスト1003Bに提供されたVOLである。
各MPPK2100は、重複排除機能により、同一内容の2以上のチャンクの各々について、重複元とするか重複先とするかを決定する。この決定は、本実施形態では、その2以上のチャンクの書込み順に基づいて行われる。具体的には、書込み順番が比較的早いチャンクが重複元とされ、書込み順番が比較的遅いチャンクが重複先とされる。本実施形態では、重複する2以上のチャンクのうち1つのチャンクのみ(最初に書き込まれたチャンクのみ)が重複元とされる。
プール5120に、チャンクA(内容「A」のチャンク)及びチャンクB(内容「B」のチャンク)が格納されているとする。チャンクAの仮想アドレス(論理アドレス)av1がHDEV5100Aに存在し、チャンクBの仮想アドレスbv2が、HDEV5100Bに存在しているとする。仮想アドレスbv2から実アドレスbr1(チャンクBが存在するページ内の領域のアドレス)への参照(例えばポインタ)R12がある。正確には、仮想アドレスbv2を含んだ仮想領域に、実アドレスbr1を含んだページが割り当てられているとする。重複排除効果の観点から、チャンクサイズ(例えば8KB)はページサイズ(例えば42MB)よりも小さいとする。
参照符号2200に示すように、MPPK2100Aが、HDEV5100Aの仮想アドレスbv1を指定しチャンクBをライト対象としたライト要求をホスト1003Aから受信したとする。この場合、仮想アドレスbv2にチャンクBが既に存在するので、MPPK2100Aは、仮想アドレスbv2にあるチャンクBを重複元とし仮想アドレスbv1へのチャンクBを重複先とする。このため、重複先アドレスbv1から重複元アドレスbv2への参照R11が生成される(正確には、後述するように、重複先アドレスbv1は、重複元アドレスbv2により参照されるアドレスを参照する)。
MPPK2100Aが、仮想アドレスbv1を指定したリード要求をホスト1003Aから受信したとする。この場合、HDEV5100AのオーナはMPPK2100Aなので、MPPK2100Aが仮想アドレスbv1からチャンクBを読み出すことを試みる。しかし、仮想アドレスbv1は仮想アドレスbv2を参照している。このため、MPPK2100Aは、仮想アドレスbv2が属するHDEV5100BのオーナMPPK2100Bに、仮想アドレスbv2からのリードを依頼する。その依頼に応答して、MPPK2100Bが、仮想アドレスbv2の参照先実アドレスbr1からチャンクBを読み出す(P11)。チャンクBは圧縮チャンク(圧縮済のチャンク)なので、MPPK2100Bは、圧縮チャンクBを伸張する(P12)。MPPK2100は、伸張されたチャンクBをMPPK2100Aに転送する(例えばMPPK2100Aのメモリにコピーする)(P13)。MPPK2100Aは、伸張されたチャンクBを、リード要求元のホスト1003Aに送信する(P14)。
P11~P14の流れによれば、重複元アドレスbv2が属するHDEV5100BのオーナMPPK2100Bが高負荷となる可能性がある。なお、以下の説明では、「自MPPK」及び「他MPPK」という用語を使用することがある。「自MPPK」及び「他MPPK」の定義は下記の通りである。
自MPPK:
・リード要求で指定されているアドレスが属するHDEV5100のオーナ権を有するMPPK、
又は、
・リード要求で指定されているアドレスが属するHDEV5100と、そのアドレスの参照先アドレスが属するHDEV5100との両方のオーナ権を有するMPPK。
他MPPK:
・リード要求で指定されているアドレスの参照先アドレスを指定したリード依頼を自MPPKから受けるMPPK。
自MPPK:
・リード要求で指定されているアドレスが属するHDEV5100のオーナ権を有するMPPK、
又は、
・リード要求で指定されているアドレスが属するHDEV5100と、そのアドレスの参照先アドレスが属するHDEV5100との両方のオーナ権を有するMPPK。
他MPPK:
・リード要求で指定されているアドレスの参照先アドレスを指定したリード依頼を自MPPKから受けるMPPK。
本実施形態では、各MPPK2100は、そのMPPK2100がオーナであるHDEV5100の仮想アドレスの各々について、自リード頻度(自MPPKによりチャンクが読み出された頻度)と、他リード頻度(他MPPKによりチャンクが読み出された頻度)とを監視する。参照符号2210により示されるように、仮想アドレスbv1について、自リード頻度が他リード頻度より高いことがMPPK2100Bにより検出されたとする。この場合、MPPK2100Bは、参照方向を逆にする。このため、参照R11に代えて、仮想アドレスbv2から仮想アドレスbv1への参照R21が生成される。また、参照R12に代えて、仮想アドレスbv1から実アドレスbr1への参照R22が生成される。これにより、MPPK2100Bが高負荷となる可能性を低減できる。例えば次の通りである。MPPK2100Aが、仮想アドレスbv1を指定したリード要求をホスト1003Aから受信した場合、仮想アドレスbv1の参照先実アドレスbr1から圧縮チャンクBを読み出し(P21)、圧縮チャンクBを伸張し(P22)、伸張されたチャンクBをホスト1003Aに送信する(P23)。P21~P23の流れによれば、MPPK2100A及び2100B間の通信(リード依頼の送信及びチャンクBの転送)が発生しない。
また、本実施形態では、MPPK2100Bは、MPPK2100Bが他MPPKであり、MPPK2100Bにより読み出されたチャンクが圧縮チャンクBであり、且つ、MPPK2100B(他MPPK)の負荷が自MPPK2100Aの負荷より高い場合、参照符号2220により示されるように、圧縮チャンクBを伸張すること無く自MPPK2100Aへ転送する(P32)。つまり、重複元アドレスbv2から圧縮チャンクBを読み出したMPPK2100Bの負荷が高い場合、圧縮チャンクBの伸張を行うMPPK2100を自MPPK2100Aとすることで、他MPPK2100Bの負荷の一部を自MPPK2100Aに分散できる。
以下、本実施形態を詳細に説明する。
<システム全体構成>
図1は、実施形態に係るシステム全体の構成を示す。
ストレージシステム2000に、ネットワークを介して1以上のホスト1003が接続されている。また、ストレージシステム2000に、管理サーバ1004が接続されている。
ホスト1003は、ホストシステムの略であり、1以上のホスト計算機である。ホスト1003は、H-I/F(ホストインターフェースデバイス)2004を有しており、H-I/F2004経由で、アクセス要求(ライト要求又はリード要求)をストレージシステム2000に送信したり、アクセス要求の応答(例えば、ライト完了を含んだライト応答、又は、リード対象チャンクを含んだリード応答)を受信したりする。H-I/F2004は、例えば、HBA(Host Bus Adapter)又はNIC(Network Interface Card)である。
管理サーバ1004は、管理システムの一例であり、ストレージシステム2000の構成及び状態を管理する。管理サーバ1004は、M-I/F(管理インターフェースデバイス)2003を有しており、M-I/F2003経由で、ストレージシステム2000に命令を送信したりその命令の応答を受信したりする。M-I/F2003は、例えばNICである。
ストレージシステム2000は、複数のPDEV2009と、複数のPDEV2009に接続されたストレージコントローラ630とを有する。複数のPDEV2009を含んだ1以上のRAIDグループが構成されていてよい。
ストレージコントローラ630は、F-I/F(フロントエンドインターフェースデバイス)214とB-I/F(バックエンドインターフェースデバイス)2006と、CM(キャッシュメモリ)2014と、NVRAM(Non-Volatile RAM)2013と、MPPK2100A及び2100Bと、それらの要素間の通信を中継する中継器2007とを有する。中継器2007は、例えばバス又はスイッチである。
F-I/F214は、ホスト1003又は管理サーバと通信するI/Fである。B-I/F2006は、PDEV2009と通信するI/Fである。B-I/F2006は、E/D回路(暗号化及び復号化のためのハードウェア回路)を含んでいてよい。具体的には、例えば、B-I/F2006は、SAS(Serial Attached SCSI)コントローラを含んでいてよく、SASコントローラが、E/D回路を含んでいてよい。
CM(例えばDRAM(Dynamic Random Access Memory))2014には、PDEV2009に書き込まれるデータ又はPDEV2009から読み出されたデータがMPPK2100により一時格納される。NVRAM2013には、電断時にバッテリ(図示せず)から電力を受けたMPPK2100によりCM2014内のデータ(例えばダーティデータ(PDEV2009に書き込まれていないデータ))が退避される。
MPPK2100A及び2100Bによりクラスタが構成されている。MPPK2100A(2100B)は、メモリ(DRAM2002A(2002B)及びLM(ローカルメモリ)2005A(2005B))と、それらに接続されたCPU2001A(2001B)とを有する。DRAM2002A(2002B)には、CPU2001A(2001B)に実行される制御プログラム3000A(3000B)と、CPU2001A(2001)Bにより参照又は更新される管理情報4000A(4000B)とが格納される。CPU2001A(2001B)に制御プログラム3000A(3000B)が実行されることにより、図16~図21を参照して説明する処理の少なくとも一部(例えば、重複排除、及び、仮想アドレス間の関係の交換)が実行される。制御プログラム3000A(3000B)及び管理情報4000A(4000B)のうちの少なくとも一方が、複数のMPPK2100A及び2100Bに共有の記憶領域(例えばCM2014)に格納されてもよい。LM2005A(2005B)には、チャンクが格納される。具体的には、例えば、LM2005A(2005B)には、MPPK2100A(2100B)によりPDEV2009に書き込まれるチャンク、MPPK2100A(2100B)によりPDEV2009から読み出されたチャンク、MPPK2100A(2100B)に転送されるチャンク、MPPK2100B(2100A)から受信したチャンク、及び、MPPK2100A(2100B)により伸張されたチャンクのうちの少なくとも1つが格納される。
<ストレージシステム2000の論理デバイス構成>
図2は、ストレージシステム2000の論理デバイス構成の少なくとも一部を示す。
HDEV5100A~5100Dがホスト1003A~1003Dにそれぞれ提供されている。HDEV5100にプール5120からページが割り当てられる。プール5120は、複数のプールVOL5201の集合である。各プールVOL5201は、1以上のPDEV2009に基づくVOLである。プール5120に関し、矢印5101は、プール容量(プール5120の定義された容量)を表し、矢印5102は、プール割当て容量(プール5120を構成する1以上のプールVOL5201の合計容量)を表す。ストレージシステム2000に複数のプール5120が存在してもよい。
参照符号5401は、HDEV5100のオーナ権を表す。具体的には、参照符号5401Aは、MPPK2100Aが有するオーナ権(HDEV5100A及び5100Bのオーナ権)を表す。参照符号5401Bは、MPPK2100Bが有するオーナ権(HDEV5100C及び5100Dのオーナ権)を表す。
<重複排除>
重複排除とは、既存チャンクと重複するチャンクを検出し、その重複するチャンクの仮想アドレス(論理アドレス)の参照を既存チャンクの仮想アドレスへの参照に置き換えることでデータ量を削減することである。
図3Aは、重複排除前の状況の一例を示す。
ホスト1003に提供される論理領域(本実施形態では、HDEV5100)と、その論理領域に格納されるデータが実際に格納される論理領域(本実施形態では、プール5120内のプールVOL5201)との間に、削減領域531が設けられる。「削減領域」とは、データ削減(本実施形態ではチャンク削減)のために設けられた論理領域(論理アドレス空間)であり、HDEV5100の仮想アドレス(1、2、3、…)に対するチャンク(A、B、C、…)の割り振り先の領域である。削減領域531に割り振られたチャンクがプール5120に格納される。
本実施形態では、削減領域531は、HDEV5100に関連付けられる論理アドレス空間である。HDEV5100に関連付けられている削減領域531は、そのHDEV5100のオーナ権に属する。本実施形態では、削減領域531は、CMアドレス空間である。CMアドレス空間のサイズは、そのCMアドレス空間が関連付けられているHDEV5100のサイズと同じでよい。CMアドレス空間に存在するチャンクは、CM2014にあることもあれば(キャッシュヒット)、CM2014に無いこともある(キャッシュミス)。後者の場合、そのチャンクはプール5120からCM2014に読み出される(ステージング)。
なお、図3Aによれば、1つのHDEV5100に1つの削減領域531が関連付けられているが、1つのHDEV5100に2以上の削減領域531が関連付けられてもよい。MPPK2100にHDEV5100オーナ権を割り当てることに代えて、複数のMPPK2100に異なる複数のハッシュ値範囲をそれぞれ割り当てておき、チャンクの書込み又は読出しを、そのチャンクのハッシュ値が属するハッシュ値範囲が割り当てられているMPPK2100が行うことを採用することができる。この場合、削減領域531は、CMアドレス空間に代えて又は加えてハッシュ値範囲でよい。つまり、削減領域531に該当する対象は、MPPK2100の負荷分散について採用される技術によって異なり得る。
以下、混同を避けるために、HDEV5100に属する仮想アドレス(論理アドレス)を、「仮想LBA」と言い、削減領域531に属する論理アドレスを、「削減LBA」と言い、プール5120に属する論理アドレスを「プールLBA」と言う。「LBA」は、Logical Block Addressの略である。
いずれのチャンクも重複排除されていない状況は、図3Aに例示する通りである。
すなわち、3つのチャンクDがプール5120に存在し、それら3つのチャンクDは、異なるオーナ権を跨いでいるチャンクである(オーナMPPKが異なる3つのHDEV5100B~5100Dに格納されたチャンクである)。故に、3つのチャンクDがそれぞれ存在する3つのプールLBA91~93が、3つの削減LBA81~83からそれぞれ参照される。3つの削減LBA81~83は、3つの仮想LBA1~3(HDEV5100Bの仮想LBA1、HDEV5100Cの仮想LBA2、及び、HDEV5100Dの仮想LBA3)からそれぞれ参照される。
図3Bは、重複排除後の状況の一例を示す。
3つのチャンクDのうちの2つが削除される。このため、2つの削減LBA82及び83(図3A参照)の各々についての参照が削除される。そして、2つの削減LBA82及び83をそれぞれ参照していた2つの仮想LBA2及び3は、いずれも、残ったチャンクDのプールLBA91を参照する削減LBA81を参照する。
このようにして、プール5120から2つの重複チャンクDを削除することができ、結果として、プール5120使用容量が削減される。
図3Bの例によれば、仮想LBA1が重複元LBAであり、仮想LBA2及び3が、それぞれ、重複先LBAである。
図4は、参照方向変更前の状況の一例を示す。
重複排除によれば、時系列順で先に書かれたチャンクDが重複元(共有元)となり後から書かれたチャンクDが重複先となる。つまり、後から書かれたチャンクDは削除され、重複先LBA(仮想LBA)2及び3が、重複元LBA1により参照される削減LBA81を参照する。つまり、削減LBA81が共有される(以下、削減LBA81のような共有される削減LBAを「共有LBA」と言う。
この状況では、MPPK2100がHDEV5100のいずれかからチャンクDを読み出す場合、チャンクDがある削減領域531BのオーナはMPPK2100Aであるため、MPPK2100Aがプール5120からチャンクDを読み出す必要がある。このため、MPPK2100Aの負荷が、MPPK2100Bのチャンク読み出しによっても生じることがある。従って、1つのオーナ権の範囲に多くの共有LBA(言い換えれば、多くの重複元LBA(仮想LBA))が配置されていると、そのオーナ権を持つMPPK2100Aが高負荷となり、結果としてストレージシステム2000全体の性能が低下するおそれがある。
図5は、参照方向変更後の状況の一例を示す。
本実施形態では、各MPPK2100は、そのMPPK2100がオーナであるHDEV5100の仮想LBAの各々について、自リード頻度(自MPPKによりチャンクが読み出された頻度)と、他リード頻度(他MPPKによりチャンクが読み出された頻度)とを監視する。MPPK2100Aは、仮想LBA1について、自リード頻度が他リード頻度より高いことを検出した場合、参照方向を変更する。このため、以下の処理が行われる。
(*)MPPK2100Aは、チャンクDをオーナ間(MPPK2100A及び2100B間)で移動する。具体的には、MPPK2100Aは、チャンクDを、削減LBA81から、仮想LBA2が属するHDEV5100Cに関連付いた削減領域531Cの削減LBA82に移動する。
(*)MPPK2100Aが、仮想LBA1の参照先を、削減LBA81から削減LBA82に変更する。
(*)MPPK2100Aが、削減LBA81のプールLBA91への参照61(図3B参照)を削除する。
(*)MPPK2100Bが、仮想LBA2及び仮想LBA3の各々の参照先を、削減LBA81から削減LBA82に変更する。
(*)MPPK2100Bが、削減LBA82からプールLBA91への参照62を追加する。
(*)MPPK2100Aは、チャンクDをオーナ間(MPPK2100A及び2100B間)で移動する。具体的には、MPPK2100Aは、チャンクDを、削減LBA81から、仮想LBA2が属するHDEV5100Cに関連付いた削減領域531Cの削減LBA82に移動する。
(*)MPPK2100Aが、仮想LBA1の参照先を、削減LBA81から削減LBA82に変更する。
(*)MPPK2100Aが、削減LBA81のプールLBA91への参照61(図3B参照)を削除する。
(*)MPPK2100Bが、仮想LBA2及び仮想LBA3の各々の参照先を、削減LBA81から削減LBA82に変更する。
(*)MPPK2100Bが、削減LBA82からプールLBA91への参照62を追加する。
これにより、MPPK2100Aが高負荷となる可能性を低減できる。また、参照(ポインタ)の変更で済み、実際のデータ移動は不要である。
なお、図3A~図5の説明では、2以上の同一内容チャンクとして、チャンクDを例に取ったが、チャンクDの他にチャンクB及びCも存在している。チャンクB及びCの各々についても、チャンクDと同様の処理が行われるが、チャンクB及びCの各々はオーナ権を跨いでいないので、チャンク移動は行われない。
以下、上述した処理を実現するために参照又は更新される管理情報4000を説明する。その際、管理情報4000Aを例に取る。管理情報4000A中の要素の参照符号の末尾は「A」である。管理情報4000B中の要素については、参照符号の末尾「A」を「B」と読み替えることで表現できる。なお、管理情報4000A及び4000B中の要素には、MPPK2100A及び2100Bに共有される要素(例えばプールテーブル4300)があってもよいが、その要素の参照符号の末尾も、説明の混同を避けるために、「A」又は「B」を付している。例えば、プールテーブル4300A及び4300Bは、実体としては1つのプールテーブル4300であってもよい。
<管理情報>
図6は、管理情報4000Aの構成を示す。
管理情報は、複数の管理テーブルを含む。管理テーブルとして、例えば、HDEV5100に関する情報を保持するHDEVテーブル4100A、MPPK2100に関する情報を保持するMPPKテーブル4200A、及び、プール5120に関する情報を保持するプールテーブル4300Aがある。また、管理テーブルとして、プールVOL5201に関する情報を保持するプールVOLテーブル4400A、HDEV5100の論物変換のためのHDEV論物テーブル4500A、削減領域531に関する情報を保持する削減領域テーブル4600A、HDEV5100の物論変換のためのHDEV物論テーブル4700Aがある。更に、管理テーブルとして、仮想領域とページ間のマッピングのためのページマッピングテーブル4800A、及び、チャンクのハッシュ値を保持するハッシュテーブル4900Aがある。管理情報4000A及び4000B間で、少なくとも一部の情報が同期してもよいし、上述したようにMPPK2100A及び2100Bに共有されていて実体として同じ情報であってもよい。
図7は、HDEVテーブル4100Aの構成を示す。
HDEVテーブル4100Aは、HDEV5100毎にエントリ(レコード)を有する。各エントリが格納する情報は、HDEV番号4101A、HDEV容量4102A、削減領域番号4103A、オーナMPPK番号4104A、VOL種別4105A、削減モード4106A、暗号化4107A及びプール番号4108Aである。
HDEV番号4101Aは、HDEV5100の識別番号を表す。HDEV容量4102Aは、HDEV5100の容量を表す。削減領域番号4103Aは、HDEV5100に関連付けられている削減領域531の番号を表す。オーナMPPK番号4104Aは、HDEV5100のオーナMPPKの識別番号を表す。VOL種別4105Aは、HDEV5100の種別(例えば「RVOL」又は「TPVOL」)を表す。HDEV5100種別が「RVOL」の場合、チャンクは、HDEV(RVOL)5100に直接格納される。削減モード4106Aは、HDEV5100に格納されるデータの削減種別を表す。削減モード4106Aとして、「圧縮」、「重複排除」、「圧縮+重複排除」(圧縮と重複排除の両方)、「無効」(圧縮も重複排除も行われない)がある。暗号化4107Aは、HDEV5100に格納されるデータを暗号化する(「有効」)か否か(「無効」)を表すフラグである。プール番号4108Aは、HDEV5100が関連付けられているプール5120の識別番号を表す。HDEV5100には、そのHDEV5100が関連付けられているプール5120からページが割り当てられる。
図8は、MPPKテーブル4200Aの構成を示す。
MPPKテーブル4200Aは、MPPK2100毎にエントリを有する。各エントリが格納する情報は、MPPK番号4201A、MPPK負荷4202A及びHDEV番号4203Aである。
MPPK番号4201Aは、MPPK2100の識別番号を表す。MPPK負荷4202Aは、MPPK2100の負荷、具体的には、MPPK2100におけるCPU2001Aの負荷(例えばCPU使用率)を表す。HDEV番号4203Aは、MPPK2100がオーナ権を有するHDEV5100の識別番号を表す。
図9は、プールテーブル4300Aの構成を示す。
プールテーブル4300Aは、プール5120毎にエントリを有する。各エントリが格納する情報は、プール番号4301A、プール容量4302A、プール割当て容量4303A及びプール使用容量4304Aである。
プール番号4301Aは、プール5120の識別番号を表す。プール容量4302は、プール5120の定義された容量、具体的には、プール5120の定義された容量(図2の矢印5101が表す容量)を表す。プール割当て容量4303Aは、プール5120を構成する1以上のプールVOL5201の合計容量(図2の矢印5102が表す容量)を表す。プール使用容量4304Aは、プール5120に格納されているデータの総量(例えば、1以上のHDEV5100に割り当てられているページ群全体の容量)を表す。データについてデータ削減(圧縮及び重複排除のうちの少なくとも1つ)が行われた場合、データ削減後のデータ量を基にプール使用容量4304AがMPPK2100Aにより算出されてよい。なお、データ圧縮をPDEV2009が行う場合、MPPK2100Aは、圧縮前のデータ量を基にプール使用容量4304Aを算出してもよいし、圧縮後のデータ量の通知をPDEV2009から受けてその圧縮後データ量を基にプール使用容量4304Aを算出してもよい。
図10は、プールVOLテーブル4400Aの構成を示す。
プールVOLテーブル4400Aは、プールVOL番号4401Aのリスト4430Aと、プールVOL番号4401A毎のプールVOLサブテーブル4410Aとを有する。プールVOLサブテーブル4410Aは、プール5120内のプールVOL5201毎にエントリを有する。各エントリが格納する情報は、プールVOL番号4401A、PDEV種別4403A、圧縮機能4404A、暗号化機能4405A、プールVOL容量4406Aである。
プールVOL番号4401Aは、プールVOL5201の識別番号を表す。PDEV種別4403Aは、プールVOL5201の基になっているPDEV2009の種別を表す。圧縮機能4404Aは、プールVOL5201の基になっているPDEV2009が圧縮機能を有するか否かを表すフラグである。暗号化機能4405Aは、プールVOL5201の基になっているPDEV2009が暗号化機能を有するか否かを表すフラグである。プールVOL容量4406Aは、プールVOL5201の容量を表す。
図11は、HDEV論物テーブル4500の構成を示す。
HDEV論物テーブル4500は、仮想LBAから削減LBAへのアドレス変換を行うために参照されるテーブルである。HDEV論物テーブル4500は、HDEV番号4501Aのリスト4530Aと、HDEV番号4501A毎のHDEV論物サブテーブル4510Aとを有する。HDEV論物サブテーブル4510Aは、仮想LBA毎にエントリを有する。各エントリが格納する情報は、仮想LBA4502A及び参照先4503Aである。参照先4503Aは、削減領域番号4504A及び削減LBA4505Aを含む。
HDEV番号4501Aは、HDEV5100の識別番号を表す。仮想LBA4502Aは、HDEV5100の仮想LBAを表す。削減領域番号4504Aは、仮想LBA4502Aの変換後の削減LBAが属する削減領域531の識別番号を表す。削減LBA4505Aは、仮想LBA4502Aの変換後の削減LBAを表す。
図12は、削減領域テーブル4600Aの構成を示す。
削減領域テーブル4600Aは、削減領域番号4601Aのリスト4630Aと、削減領域番号4601A毎の削減領域サブテーブル4650Aとを有する。削減領域サブテーブル4650Aは、削減LBA毎にエントリを有する。各エントリが格納する情報は、削減LBA4602A、参照数4603A、参照回数4604A、他アクセス4605A、見直し4606A、ページ番号4607A、オフセット4608A及びチャンクサイズ4609Aである。参照回数4604Aは、自RT4611A及び他RT4612Aを含む。他アクセス4605Aは、HDEV番号4621A及び仮想LBA4622Aを含む。
削減領域番号4601Aは、削減領域531の識別番号を表す。削減LBA4602Aは、削減領域531の削減LBAを表す。参照数4603Aは、削減LBA4602Aを参照する仮想LBAの数(具体的には、削減LBA4602Aに対応した後述のHDEV番号4704A及び仮想LBA4705Aの組の数)を表す。参照数4603Aが表す値が2以上の整数の場合、重複排除によって2以上の仮想LBA4502Aから同一の削減LBAが参照されている。自RT4611Aは、削減LBAのチャンクが自MPPK2100Aにより読み出された回数を表す。他RT4612Aは、削減LBAのチャンクが他MPPK2100Aにより読み出された回数を表す。自RT4611Aが、上述の自リード頻度に相当し、他RT4612Aが、上述の他リード頻度に相当する。自RT4611A及び他RT4612Aは、定期的に初期値(例えば「0」)に戻されてよい。HDEV番号4621Aは、削減LBAを参照する重複元LBA(仮想LBA)が属するHDEV5100の識別番号を表す。仮想LBA4622Aは、削減LBAを参照する重複元LBA(仮想LBA)を表す。HDEV番号4621A及び仮想LBA4622Aとして登録される値は、自MPPKからのリード依頼に含まれていてよい。見直し4606Aは、削減LBA4602Aが参照見直し対象(「Y」)か否か(「N」)を示すフラグである。ページ番号4607Aは、削減LBA4602Aが参照するプールLBAが属するページの識別番号を表す。オフセット4608Aは、削減LBA4602Aが参照するプールLBAの位置(ページ先頭からのオフセット)を表す。ページ番号4607A及びオフセット4608Aが、削減LBA4602Aが参照するプールLBAを意味する。チャンクサイズ4609Aは、削減LBA4602Aが表す削減LBAにあるチャンクのサイズを表す。チャンクが圧縮チャンクの場合、チャンクサイズ4609Aは、圧縮チャンクのサイズを表す。
図13は、HDEV物論テーブル4700Aの構成を示す。
HDEV物論テーブル4700Aは、削減LBAから仮想LBAへのアドレス変換を行うために参照されるテーブルである。HDEV物論テーブル4700Aは、削減領域番号4701Aのリスト4730Aと、削減領域番号4701A毎のHDEV物論サブテーブル4750Aとを有する。HDEV物論サブテーブル4750Aは、削減領域531内の削減LBA毎にエントリを有する。各エントリが格納する情報は、削減LBA4702A及びハッシュ値4703Aである。エントリには、そのエントリが格納するハッシュ値4703Aのチャンクの格納先仮想LBA4705Aのリスト4740Aを有する。具体的には、例えば、リスト4740Aは、仮想LBA4705AとHDEV番号4704A(仮想LBA4705Aが表す仮想LBAを有するHDEV5100の識別番号)との組のリストである。
図14は、ページマッピングテーブル4800Aの構成を示す。
ページマッピングテーブル4800Aは、プール番号4801Aのリストと、プール番号4801A毎のマッピングサブテーブル4810Aとを有する。マッピングサブテーブル4810Aは、プール5120内のページ毎にエントリを有する。各エントリが格納する情報は、ページ番号4802A、ページ種別4803A、先頭LBA4804A、割当て4805A、プールVOL番号4806A、及び、プールVOL内先頭LBA4807Aである。
プール番号4801Aは、プール5120の識別番号を表す。ページ番号4802Aは、ページの識別番号を表す。ページ種別4803は、ページに格納されるデータの種別を表す。先頭LBA4804Aは、ページの先頭プールLBA(プール5120の先頭を基準とした場合のLBA)を表す。割当て4805Aは、ページがHDEV5100に割り当てられている(「1」)か否か(「0」)を表すフラグである。プールVOL番号4806Aは、ページを含むプールVOL5201の識別番号を表す。プールVOL内先頭LBA4806Aは、先頭LBA4804Aが表すLBAの、プールVOL5201でのLBA(プールVOL5201の先頭を基準とした場合のLBA)、を表す。
図15は、ハッシュテーブル4900Aの構成を示す。
ハッシュテーブル4900Aは、ハッシュ値毎にエントリを有する。各エントリが格納する情報は、ハッシュ値4901A、削減領域番号4902A及び削減LBA4903Aである。
ハッシュ値4901Aは、チャンクのハッシュ値を表す。削減領域番号4902Aは、そのハッシュ値となるチャンク(重複元)を格納した削減LBAが属する削減領域531の識別番号を表す。削減LBA4903Aは、そのハッシュ値となるチャンクを格納した削減LBAを表す。
以下、本実施形態で行われる処理を説明する。なお、本実施形態では、同種の要素(例えばMPPK2100)が同様の機能を有するため、以下の説明では、混同を避けるため、任意の要素を例に取り説明する。
<実施形態で行われる処理>
図16は、リード全体処理のフローを示す。
MPPK2100Aが、ホスト1003Aからリード要求を受信する(S1001)。MPPK2100Aが、HDEVテーブル4100Aを参照し、そのリード要求が指定するHDEV5100のHDEV番号4101Aに対応したオーナMPPK番号4104Aを特定する。特定されたオーナMPPK番号4104AのMPPK2100が、リード処理(S1003~S1020の処理)を開始する(S1002)。以下、リード処理を開始するMPPK2100を、MPPK2100Aとする。MPPK2100Aが自MPPKである。また、リード要求で指定された仮想LBAを、「リード元仮想LBA」と言い、リード元仮想LBAが属するHDEVを「リード元HDEV」と言うことがある。
MPPK2100Aが、リード元仮想LBAに対応した削減領域番号(4504A)及び削減LBA(4505A)をHDEV論物テーブル4500から特定し、その削減領域番号に対応したオーナMPPK番号4104AをHDEVテーブル4100Aから特定する(S1003)。
MPPK2100Aは、特定されたオーナMPPK番号4104Aが表すMPPK2100が自MPPK2100Aか否かを判定する(S1004)。
S1004の判定結果が肯定の場合(S1004:YES)、自MPPK2100Aは、S1003で特定された削減LBAに対応する自RT4611Aが表す値を1インクリメントする。自MPPK2100Aは、参照変更判定処理(図17参照)を行う(S1006)。自MPPK2100Aは、S1003で特定された削減LBAのチャンクがCM2014に無ければ、削減LBAの参照先プールLBAを削減領域テーブル4600Aから特定し(S1007)、特定されたプールLBAからチャンクをCM2014に読み出す(ステージング)(S1008)。自MPPK2100Aは、チャンクが圧縮チャンクであれば(S1009:YES)、その圧縮チャンクを伸張する(S1010)。自MPPK2100Aは、チャンクをホスト1003Aに返す。
S1004の判定結果が否定の場合(S1004:NO)、自MPPK2100Aは、リード依頼を他MPPK2100に送信する。そのリード依頼は、S1003で特定された削減LBAと、リード要求で指定されたHDEV番号(リード元HDEVの識別番号)及び仮想LBA(リード元仮想LBA)とを含んでよい。他MPPK2100Bは、そのリード依頼を受信し、S1003で特定された削減LBAに対応する他RT4612Bが表す値を1インクリメントする。他MPPK2100Bは、リード元HDEV5100の識別番号と、リード元仮想LBAとを、S1003で特定された削減LBAに対応する他アクセス4605B(HDEV番号4621B及び仮想LBA4612B)として、削減領域テーブル4600Bに登録する(S1012)。他MPPK2100Bは、参照変更判定処理(図17参照)を行う(S1013)。他MPPK2100Bが、S1003で特定された削減LBAのチャンクがCM2014に無ければ、削減LBAの参照先プールLBAを削減領域テーブル4600Bから特定し(S1014)、特定されたプールLBAからチャンクをCM2014に読み出す(ステージング)(S1015)。他MPPK2100Bは、チャンクが圧縮チャンクでなければ(S1016:NO)、自MPPK2100Aにチャンクを転送し、自MPPK2100Aが、そのチャンクをホスト1003Aに返す(S1021)。一方、他MPPK2100Bは、チャンクが圧縮チャンクであれば(S1016:YES)、MPPKテーブル4200Bを参照し、他MPPK2100BのMPPK負荷が自MPPK2100AのMPPK負荷より高いか否かを判定する(S1018)。
S1018の判定結果が否定の場合(S1019:NO)、他MPPK2100Bが、圧縮チャンクを伸張し(S1020)、伸張されたチャンクを自MPPK2100Aに転送する。自MPPK2100Aが、チャンクを受信し、受信したチャンクをホスト1003Aに返す(S1021)。
一方、S1018の判定結果が肯定の場合(S1019:YES)、他MPPK2100Bに代えて自MPPK2100Aが圧縮チャンクを伸張する。すなわち、他MPPK2100Bが、自MPPK2100Aに圧縮チャンクを転送する。自MPPK2100Aが、圧縮チャンクを受信し、受信した圧縮チャンクを伸張し(S1019)、伸張されたチャンクをホスト1003Aに返す(S1021)。
以上が、リード全体処理のフローである。リード要求で複数の仮想LBAが指定されている場合(例えば、仮想LBA及びデータ長から特定される範囲に複数の仮想LBAが属している場合)、仮想LBA毎にリード処理(S1003~S1020)が行われ、複数の仮想LBAにそれぞれ対応した複数のチャンクを含んだデータが、S1021でホスト1003に返されてよい。
また、参照変更判定処理(S1006、S1013)は、図16に示したように、リード要求に同期して行われるが(リード要求を受信してから応答が返されるまでに行われるが)、リード要求とは非同期に行われてもよい。しかし、図16に示したように、リード要求に同期して参照変更判定処理が行われることで、次のようなことが期待される。例えば、参照変更判定の対象とするチャンクを、リード要求のあった範囲のみに限定でき、非同期で行う場合よりも、判定するべきチャンク数が限定され、結果として、判定処理の負荷が軽減されることが期待できる。
図17は、参照変更判定処理のフローである。
他MPPK2100Bは、削減領域テーブル4600Bを参照し(S1101)、S1003で特定された削減領域番号及び削減LBAに対応した自RT4611B及び他RT4612Bを比較する(S1102)。
自RT4611Bと他RT4612Bの差が閾値以上(S1103:YES)且つ他RT4612Bが自RT4611Bより大きければ(S1104:YES)、他MPPK2100Bは、S1003で特定された削減領域番号及び削減LBAに対応した見直し4606Bを「Y」とする(S1105)。
一方、自RT4611Bと他RT4612Bの差が閾値未満(S1103:NO)、又は、他RT4612Bが自RT4611B以下であれば(S1104:NO)、他MPPK2100Bは、S1003で特定された削減領域番号及び削減LBAに対応した見直し4606Bを「N」とする(S1106)。
図18は、参照変更処理のフローを示す。このフローは定期的に(又は不定期的に)開始される。
MPPK2100Bは、削減領域テーブル4600Bを参照し(S1201)、見直し4606B「Y」があるか否かを判定する(S1202)。S1202の判定結果が肯定の場合(S1202:YES)、見つかった見直し4606B「Y」について、S1203~S1212が行われる。見つかった見直し4606B「Y」を含んだエントリを、図18の説明において「対象エントリ」と言う。
MPPK2100Bは、対象エントリ内の自RT4611B及び他RT4612Bを比較する(S1203)。自RT4611Bと他RT4612Bの差が閾値以上であれば(S1204:YES)、参照変更が行われる。
すなわち、MPPK2100Bは、対象エントリ内の他アクセス4605B(HDEV番号4621B及び仮想LBA4622B)を特定する(S1205)。つまり、重複先LBAが特定される。
MPPK2100Bは、特定したHDEV番号(4621B)に対応した削減領域番号4103B及びオーナMPPK番号4104BをHDEVテーブル4100Bから特定する(S1206)。つまり、重複先LBAの参照先削減領域と、重複先LBAが属するHDEVのオーナMPPKが特定される。
MPPK2100Bは、特定されたオーナMPPK2100Aにある削減領域テーブル4600Aのうち、S1206で特定した削減領域番号に関連付いている削減領域サブテーブル4650Aに、対象エントリをコピーする(S1207)。つまり、重複元となる削減LBAが、MPPK2100Bのオーナ権に属する削減領域からMPPK2100Bのオーナ権に属する削減領域に移動する。図18の説明において、MPPK2100Bにおける対象エントリを、「コピー元対象エントリ」と言い、オーナMPPK2100Aにコピーされた対象エントリを、「コピー先対象エントリ」と言う。
オーナMPPK2100Aは、HDEV物論テーブル4700Aに、コピー先対象エントリの削減領域番号及び削減LBAに対応するHDEV番号4704A及び仮想LBA4705Aとして、コピー先対象エントリ内の他アクセス4605A(HDEV番号4621A及び仮想LBA4622A)を追加する(S1208)。また、オーナMPPK2100Aは、HDEV論物テーブル4500Aにおける、その追加されたHDEV番号及び仮想LBAに対応する削減領域番号4504A及び削減LBA4505Aを、コピー先対象エントリの削減領域番号及び削減LBAに変更する(1209)。S1208及び1209により、重複先だった仮想LBAが重複元LBAに変わり、その重複元LBAが、コピー先対象エントリの削減LBAを参照する。
MPPK2100Bは、HDEV論物テーブル4500Bにおける、コピー元対象エントリの削減領域番号(4504B)及び削減LBA(4505B)を、コピー先対象エントリの削減領域番号及び削減LBAに変更する(S1210)。つまり、重複元だった仮想LBAが重複先LBAになり、その重複先LBAが、コピー先対象エントリの削減LBAを参照する。
MPPK2100A及び2100Bの各々は、そのMPPK2100のハッシュテーブル4900における、対象エントリに対応したハッシュ値に対応する削減領域番号4903及び削減LBA4904を、コピー先対象エントリの削減領域番号及び削減LBAに変更する(S1211)。つまり、重複元(共有LBA)がコピー先対象エントリの削減LBAになる。
MPPK2100Bは、削減領域テーブル4600Bからコピー元対象エントリを削除する(1212)。
図19は、ライト全体処理のフローを示す。
MPPK2100Aが、ホスト1003Aからライト要求を受信する(S1301)。MPPK2100Aが、HDEVテーブル4100Aを参照し、そのライト要求が指定するHDEV番号に対応したオーナMPPK番号4104Aを特定し、特定されたオーナMPPK2100が、ライト処理(S1303~S1310の処理)を開始する(S1302)。以下、ライト処理を開始するMPPK2100を、MPPK2100Aとする。MPPK2100Aが自MPPKである。また、ライト要求で指定された仮想LBAを、「ライト先仮想LBA」と言い、ライト先仮想LBAが属するHDEV(ライト要求で指定されたHDEV)を「ライト先HDEV」と言うことがある。
MPPK2100Aが、ライト先HDEV5100に対応した削減モード4106AをHDEVテーブル4100Aから特定する(S1303)。
特定された削減モード4106Aが重複排除を含まない場合(S1304:NO)、MPPK2100Aは、圧縮処理(図21参照)を行う(S1311)。
特定された削減モード4106Aが重複排除を含む場合(S1304:YES)、MPPK2100Aは、重複判定処理(図20参照)を行う(S1305)。重複判定処理の結果、ライト対象チャンクについて重複無しの場合(S1306:NO)、MPPK2100Aは、圧縮処理を行う(S1311)。
ライト対象チャンクの重複がある場合(S1306:YES)、又は、圧縮処理の後、MPPK2100Aは、重複排除及び圧縮処理のうちの少なくとも1つの結果に基づき、HDEV論物テーブル4500A、削減領域テーブル4600A及びHDEV物論テーブル4700Aを更新する(S1307、S1308及びS1309)。
MPPK2100Aは、重複排除されていないライト対象チャンクをライト先HDEV5100(例えば、ライト先仮想LBAに割り当てられたページ(例えば圧縮処理で確保された格納領域としてのページ)の基になっているPDEV2009)に書き込む(S1310)。
以上が、ライト全体処理のフローである。ライト要求で複数の仮想LBAが指定されている場合(例えば、仮想LBA及びデータ長から特定される範囲に複数の仮想LBAが属している場合)、仮想LBA毎にライト処理(S1303~S1309)が行われ、複数の仮想LBAにそれぞれ対応した複数のチャンクが、S1310で書き込まれてよい。また、S1305の重複判定処理は、ライト対象のデータがPDEVに書かれた後に(ライト全体処理とは非同期で)行われてもよい。
図20は、重複判定処理のフローを示す。
MPPK2100Aは、ライト対象チャンクのハッシュ値を算出する(S1401)。MPPK2100Aは、ハッシュテーブル4900Aを参照し、S1401で算出したハッシュ値と同じハッシュ値を検索する(S1402)。
同じハッシュ値があれば(S1403:YES)、MPPK2100Aは、そのハッシュ値に対応した削減領域番号4902A及び削減LBA4903Aを特定する(S1404)。
一方、同じハッシュ値が無ければ(S1403:NO)、MPPK2100は、重複無しを認識する(S1405)。
図21は、圧縮処理のフローを示す。
圧縮処理は、チャンク(ライト対象のチャンク)の圧縮をストレージコントローラ630で行うかPDEV2009で行うかを判定する処理を含む。概要は、下記の通りである。
・ライト先HDEV5100が圧縮有効で(削減モード4106Aが「圧縮」を含み)、ライト先プールVOL5201が圧縮有効(圧縮能能4404A「あり」)の場合、ライト先PDEV2009がチャンクを圧縮する(ストレージコントローラ630はチャンクを圧縮しない)。「ライト先プールVOL5201」は、ライト先仮想LBAが属する仮想領域に割り当てられるページ(ライト先ページ)を含んだプールVOL5201である。ライト先PDEV2009は、ライト先ページの基になっているPDEV2009である。
・ライト先HDEV5100が暗号化有効で(暗号化4107Aが「有効」で)、ライト先プールVOL5201が暗号化有効(暗号化機能4405A「あり」)の場合、ライト先PDEV2009がチャンクを暗号化する(ストレージコントローラ630はチャンクを暗号化しない)。
・ライト先HDEV5100の圧縮及び暗号化のいずれも有効でライト先プールVOL5201が圧縮有効であるが暗号化有効でない場合、ストレージコントローラ630がチャンクを圧縮しその後に圧縮チャンクを暗号化する。ストレージコントローラ630でチャンクを暗号化した後にライト先PDEV2009がそのチャンクを圧縮しても、チャンクは暗号化されているために、圧縮効果(圧縮前と圧縮後のデータ量の比率)は低いと考えられるからである。
・ライト先HDEV5100が圧縮有効で(削減モード4106Aが「圧縮」を含み)、ライト先プールVOL5201が圧縮有効(圧縮能能4404A「あり」)の場合、ライト先PDEV2009がチャンクを圧縮する(ストレージコントローラ630はチャンクを圧縮しない)。「ライト先プールVOL5201」は、ライト先仮想LBAが属する仮想領域に割り当てられるページ(ライト先ページ)を含んだプールVOL5201である。ライト先PDEV2009は、ライト先ページの基になっているPDEV2009である。
・ライト先HDEV5100が暗号化有効で(暗号化4107Aが「有効」で)、ライト先プールVOL5201が暗号化有効(暗号化機能4405A「あり」)の場合、ライト先PDEV2009がチャンクを暗号化する(ストレージコントローラ630はチャンクを暗号化しない)。
・ライト先HDEV5100の圧縮及び暗号化のいずれも有効でライト先プールVOL5201が圧縮有効であるが暗号化有効でない場合、ストレージコントローラ630がチャンクを圧縮しその後に圧縮チャンクを暗号化する。ストレージコントローラ630でチャンクを暗号化した後にライト先PDEV2009がそのチャンクを圧縮しても、チャンクは暗号化されているために、圧縮効果(圧縮前と圧縮後のデータ量の比率)は低いと考えられるからである。
圧縮処理の詳細は以下の通りである。
MPPK2100Aが、ライト先HDEV5100の圧縮が有効か否かを判定する(S1501)。
ライト先HDEV5100が圧縮有効でない場合(S1501:NO)、MPPK2100Aは、格納領域(ライト先仮想LBA4502Aが属する仮想領域にページが未割当てであれば空きページ)を確保する(S1503)。MPPK2100Aが、ライト先HDEV5100が暗号化有効か否か判定する(S1504)。
ライト先HDEV5100が圧縮も暗号化も有効でないケースでは(S1504:NO)、圧縮処理が終了する。すなわち、ライト先HDEV5100の圧縮も暗号化も有効ではないため、格納領域の確保だけで圧縮処理が終了する。
ライト先HDEV5100が圧縮有効でなく暗号化有効のケースでは(S1504:YES)、MPPK2100Aが、ライト先プールVOL5201が暗号化有効か否か判定する(S1505)。ライト先プールVOL5201が暗号化有効の場合(S1505:YES)、MPPK2100Aは、チャンクを暗号化すること無しに(B-I/F2006に対してチャンク暗号化の指示をすること無しに)、チャンクを、ライト先PDEV2009に送信する。結果として、B-I/F2006を介してチャンクが暗号化されることなくライト先PDEV2009に送信され、ライト先PDEV2009が、チャンクを受信し、受信したチャンクを暗号化して格納する(S1506)。一方、ライト先プールVOL5201が暗号化有効でない場合(S1505:NO)、MPPK2100Aは、B-I/F2006に対してチャンク暗号化の指示をしてチャンクをライト先PDEV2009に送信する。結果として、B-I/F2006によりチャンクが暗号化されてライト先PDEV2009に送信され(S1507)、ライト先PDEV2009が、暗号化されたチャンクを受信し、受信したチャンクを格納する。
ライト先HDEV5100が圧縮有効の場合(S1501:YES)、MPPK2100Aは、S1503と同じ処理、すなわち、格納領域の確保を行う(S1502)。MPPK2100Aは、ライト先HDEV5100が暗号化有効か否か判定する(S1508)。
ライト先HDEV5100が圧縮有効であり暗号化有効でないケースでは(S1508:NO)、MPPK2100Aは、ライト先プールVOL5201が圧縮有効か否か判定する(S1510)。ライト先プールVOL5201が圧縮有効ではない場合(S1510:NO)、MPPK2100Aは、チャンクを圧縮してライト先PDEV2009に送信する(S1512)。結果として、ライト先PDEV2009が、圧縮チャンクを受信し、受信した圧縮チャンクを格納する。一方、ライト先プールVOL5201が圧縮有効の場合(S1510:YES)、MPPK2100Aは、チャンクを圧縮せずにライト先PDEV2009に送信する。結果として、ライト先PDEV2009が、チャンクを受信し、受信したチャンクを圧縮して格納する(S1511)。
ライト先HDEV5100が圧縮も暗号化も有効の場合(S1508:YES)、MPPK2100Aは、ライト先プールVOL5201が暗号化有効か否かを判定する(S1509)。ライト先プールVOL5201が暗号化有効でない場合(S1509:NO)、MPPK2100Aは、チャンクを圧縮し(S1514)、B-I/F2006に対して圧縮チャンクの暗号化の指示をして圧縮チャンクをライト先PDEV2009に送信する。結果として、B-I/F2006により圧縮チャンクが暗号化されてライト先PDEV2009に送信され(S1515)、ライト先PDEV2009が、暗号化された圧縮チャンクを受信し、受信したチャンクを格納する。
ライト先HDEV5100が圧縮も暗号化も有効であり、且つ、ライト先プールVOL5201が暗号化有効の場合(S1508:YES、S1509:YES)、MPPK2100Aは、ライト先プールVOL5201が圧縮有効か否かを判定する(S1513)。ライト先プールVOL5201が圧縮有効ではない場合(S1513:NO)、MPPK2100Aは、チャンクを圧縮し圧縮チャンクを暗号化することなくライト先PDEV2009に送信する(S1517)。結果として、ライト先PDEV2009が、圧縮チャンクを受信し、受信した圧縮チャンクを暗号化して格納する(S1518)。一方、ライト先プールVOL5201が圧縮有効の場合(S1513:YES)、MPPK2100Aは、チャンクを圧縮も暗号化もすることなくライト先PDEV2009に送信する。結果として、ライト先PDEV2009が、チャンクを受信し、受信したチャンクを圧縮し圧縮チャンクを暗号化して格納する(S1516)。
圧縮処理によれば、ライト先PDEV2009が圧縮有効であれば、ストレージコントローラ630に代えてライト先PDEV2009により圧縮が行われ、ライト先PDEV2009が暗号化有効であれば、ストレージコントローラ630に代えてライト先PDEV2009により暗号化が行われる。このため、ストレージコントローラ630の負荷を低減できる。
なお、1つの例外として、ライト先HDEV5100の圧縮及び暗号化のいずれも有効でライト先プールVOL5201が圧縮有効であっても、ライト先プールVOL5201が暗号化有効でない場合、ストレージコントローラ630がチャンクを圧縮しその後に圧縮チャンクを暗号化する。ストレージコントローラ630でチャンクを暗号化した後にライト先PDEV2009がそのチャンクを圧縮しても、チャンクは暗号化されているために、圧縮効果(圧縮前と圧縮後のデータ量の比率)は低いと考えられるからである。
以上、一実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。
2000:ストレージシステム
Claims (9)
- ライト要求又はリード要求であるアクセス要求をそれぞれが送信する1以上のホストに複数の論理ボリュームを提供するストレージシステムであって、
それぞれ1以上のプロセッサを含んだ複数のプロセッサパッケージを有するストレージコントローラと、
前記複数の論理ボリュームに格納されたデータが格納される複数の記憶デバイスと
を有し、
前記複数のプロセッサパッケージがそれぞれ異なる複数のオーナ権を有し、前記複数のオーナ権の各々に、前記複数の論理ボリュームのうちの一部の論理ボリュームが属し、前記複数のプロセッサパッケージの各々が、そのプロセッサパッケージが有するオーナ権に属する論理ボリュームを指定したアクセス要求を処理するようになっており、
前記複数のプロセッサパッケージの各々が、1以上の論理ボリュームに格納される2つのデータのうちの1つのデータを重複元として残し残りのデータを重複先として重複排除するようになっており、
第1論理ボリューム及び第1論理アドレスが指定されたリード要求の処理において、前記第1論理アドレスが重複先論理アドレスであれば、前記第1論理ボリュームが属するオーナ権を有する第1プロセッサパッケージが、その重複先論理アドレスに対応した重複元論理アドレスとしての第2論理アドレスを有する第2論理ボリュームが属するオーナ権を有する第2プロセッサパッケージに、リードを依頼し、前記第2プロセッサパッケージが、その依頼に応答して、前記第2論理アドレスにあるデータを読み出し、読み出したデータを前記第1プロセッサパッケージに転送し、
前記重複元論理アドレスが、前記リード要求に従うリード対象データの論理アドレスであり、
前記重複先論理アドレスが、前記リード対象データの重複排除された重複データの論理アドレスであり、
前記ストレージコントローラが、
前記第1論理アドレスのリード頻度が前記第2論理アドレスのリード頻度よりも高いか否かの判定であるリード頻度判定を実行し、
前記リード頻度判定の結果が肯定の場合、前記第1論理アドレスを前記重複先論理アドレスから前記重複元論理アドレスに変更する第1変更と前記第2論理アドレスを前記重複元論理アドレスから前記重複先論理アドレスに変更する第2変更とを含んだ参照変更処理を実行する、
ストレージシステム。 - 前記複数の論理ボリュームに複数の削減領域が1:1又は1:N(Nは2以上の整数)で関連付けられており、
前記複数の削減領域の各々は、データ削減のために設けられた論理領域であり、
前記複数のプロセッサパッケージの各々は、論理ボリュームに対するデータアクセスを、その論理ボリュームに関連付けられているいずれかの削減領域を参照して行うようになっており、
前記参照変更処理の前において、
前記第2論理アドレスの参照先が、前記第2論理ボリュームに関連付いた第2削減領域における位置である第2削減位置であり、
前記第1論理アドレスの参照先が、前記第2削減位置であり、
前記参照変更処理において、
前記第1変更が、前記第1論理ボリュームに関連付いた第1削減領域における位置である第1削減位置に前記第1論理アドレスの参照先を前記第2削減位置から変更することを含み、
前記第2変更が、前記第2論理アドレスの参照先を前記第2削減位置から前記第1削減位置に変更することを含む、
請求項1記載のストレージシステム。 - 前記ストレージコントローラが、前記リード要求の処理において、前記リード頻度判定を実行し、
前記リード要求の処理とは非同期の処理として、前記ストレージコントローラが、前記参照変更処理を実行する、
請求項2記載のストレージシステム。 - 前記ストレージコントローラが、前記複数の記憶デバイスのうちの少なくとも1つに基づく複数のページで構成されたプールを管理しており、
前記第1論理ボリューム及び前記第2論理ボリュームの各々が、シンプロビジョニングに従う仮想的な論理ボリュームであり、
前記第2論理アドレスに属する領域に第1ページが割り当てられており、
前記参照変更処理の実行前と実行後の両方において、前記第2削減位置の参照先と、前記第1削減位置の参照先が、いずれも、前記第1ページにおける位置を参照している、
請求項2記載のストレージシステム。 - 重複排除されるデータのサイズの方がページのサイズよりも小さい、
請求項4記載のストレージシステム。 - 前記リード要求の処理において、前記リード対象データが圧縮データの場合、前記ストレージコントローラが、
前記第2プロセッサパッケージの負荷が前記第1プロセッサパッケージの負荷より高いか否かの負荷判定を実行し、
前記負荷判定の結果が肯定の場合、前記第2プロセッサパッケージに代えて前記第1プロセッサパッケージが前記圧縮データを伸張する、
請求項1記載のストレージシステム。 - 第3論理ボリューム及び第3論理アドレスが指定されたライト要求の処理において、
前記第3論理ボリュームの圧縮が有効でライト先記憶デバイスが圧縮機能を有していれば、前記ストレージコントローラが、前記ライト要求に従うライト対象データを圧縮することなく前記ライト対象データを前記ライト先記憶デバイスに送信し、
前記第3論理ボリュームの暗号化が有効で前記ライト先記憶デバイスが暗号化機能を有していれば、前記ストレージコントローラが、前記ライト対象データを暗号化することなく前記ライト対象データを前記ライト先記憶デバイスに送信し、
前記第3論理ボリュームの圧縮及び暗号化のいずれも有効で前記ライト先記憶デバイスが圧縮機能を有していても、前記ライト先記憶デバイスが暗号化機能を有していなければ、前記ストレージコントローラが、前記ライト要求に従うデータを圧縮しその後に圧縮されたデータを暗号化する、
請求項1記載のストレージシステム。 - 前記ストレージコントローラは、前記複数の記憶デバイスに入出力されるデータが一時的に格納されるキャッシュメモリを有しており、
前記複数の削除領域の各々は、キャッシュメモリアドレス空間である、
請求項2記載のストレージシステム。 - ライト要求又はリード要求であるアクセス要求をそれぞれが送信する1以上のホストに複数の論理ボリュームを提供するストレージシステムの制御方法であって、
前記ストレージシステムが、それぞれ1以上のプロセッサを含んだ複数のプロセッサパッケージを有するストレージコントローラと、前記複数の論理ボリュームに格納されたデータが格納される複数の記憶デバイスとを有しており、
前記複数のプロセッサパッケージがそれぞれ異なる複数のオーナ権を有し、前記複数のオーナ権の各々に、前記複数の論理ボリュームのうちの一部の論理ボリュームが属し、前記複数のプロセッサパッケージの各々が、そのプロセッサパッケージが有するオーナ権に属する論理ボリュームを指定したアクセス要求を処理するようになっており、
前記複数のプロセッサパッケージの各々が、1以上の論理ボリュームに格納される2つのデータのうちの1つのデータを重複元として残し残りのデータを重複先として重複排除するようになっており、
前記制御方法は、
第1論理ボリューム及び第1論理アドレスが指定されたリード要求の処理において、
前記第1論理アドレスが重複先論理アドレスであれば、前記第1論理ボリュームが属するオーナ権を有する第1プロセッサパッケージにより、その重複先論理アドレスに対応した重複元論理アドレスとしての第2論理アドレスを有する第2論理ボリュームが属するオーナ権を有する第2プロセッサパッケージに、リードを依頼し、
前記第2プロセッサパッケージにより、その依頼に応答して、前記第2論理アドレスにあるデータを読み出し、読み出したデータを前記第1プロセッサパッケージに転送し、
前記重複元論理アドレスが、前記リード要求に従うリード対象データの論理アドレスであり、
前記重複先論理アドレスが、前記リード対象データの重複排除された重複データの論理アドレスであり、
前記ストレージコントローラにより、
前記第1論理アドレスのリード頻度が前記第2論理アドレスのリード頻度よりも高いか否かの判定であるリード頻度判定を実行し、
前記リード頻度判定の結果が肯定の場合、前記第1論理アドレスを前記重複先論理アドレスから前記重複元論理アドレスに変更する第1変更と前記第2論理アドレスを前記重複元論理アドレスから前記重複先論理アドレスに変更する第2変更とを含んだ参照変更処理を実行する、
制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2015/085614 WO2017109822A1 (ja) | 2015-12-21 | 2015-12-21 | 重複排除機能を有するストレージシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2015/085614 WO2017109822A1 (ja) | 2015-12-21 | 2015-12-21 | 重複排除機能を有するストレージシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2017109822A1 true WO2017109822A1 (ja) | 2017-06-29 |
Family
ID=59089724
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2015/085614 WO2017109822A1 (ja) | 2015-12-21 | 2015-12-21 | 重複排除機能を有するストレージシステム |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2017109822A1 (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111190534A (zh) * | 2018-11-14 | 2020-05-22 | 株式会社日立制作所 | 卷管理装置、卷管理方法和存储介质 |
CN113360082A (zh) * | 2020-03-04 | 2021-09-07 | 株式会社日立制作所 | 存储系统及其控制方法 |
US11226769B2 (en) | 2018-11-15 | 2022-01-18 | Hitachi, Ltd. | Large-scale storage system and data placement method in large-scale storage system |
CN114115705A (zh) * | 2020-08-25 | 2022-03-01 | 株式会社日立制作所 | 存储系统和数据管理方法 |
JP2023011448A (ja) * | 2021-07-12 | 2023-01-24 | 株式会社日立製作所 | バックアップシステム及び方法 |
JP7548609B1 (ja) | 2023-02-27 | 2024-09-10 | Necプラットフォームズ株式会社 | 情報処理装置、情報処理方法およびプログラム |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009251725A (ja) * | 2008-04-02 | 2009-10-29 | Hitachi Ltd | 記憶制御装置及び記憶制御装置を用いた重複データ検出方法。 |
JP2012190099A (ja) * | 2011-03-09 | 2012-10-04 | Nec Corp | ストレージシステム |
JP2013047933A (ja) * | 2011-08-29 | 2013-03-07 | Hitachi Ltd | 階層ストレージシステムの重複排除効率の向上 |
JP2014160311A (ja) * | 2013-02-19 | 2014-09-04 | Hitachi Ltd | 自律分散重複排除ファイルシステム、記憶装置ユニット及びデータアクセス方法 |
JP2015511037A (ja) * | 2012-03-07 | 2015-04-13 | ネットアップ,インコーポレイテッド | ハイブリッドストレージ集合体の複製 |
JP2015170345A (ja) * | 2014-03-11 | 2015-09-28 | 日本電気株式会社 | ストレージシステム |
-
2015
- 2015-12-21 WO PCT/JP2015/085614 patent/WO2017109822A1/ja active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009251725A (ja) * | 2008-04-02 | 2009-10-29 | Hitachi Ltd | 記憶制御装置及び記憶制御装置を用いた重複データ検出方法。 |
JP2012190099A (ja) * | 2011-03-09 | 2012-10-04 | Nec Corp | ストレージシステム |
JP2013047933A (ja) * | 2011-08-29 | 2013-03-07 | Hitachi Ltd | 階層ストレージシステムの重複排除効率の向上 |
JP2015511037A (ja) * | 2012-03-07 | 2015-04-13 | ネットアップ,インコーポレイテッド | ハイブリッドストレージ集合体の複製 |
JP2014160311A (ja) * | 2013-02-19 | 2014-09-04 | Hitachi Ltd | 自律分散重複排除ファイルシステム、記憶装置ユニット及びデータアクセス方法 |
JP2015170345A (ja) * | 2014-03-11 | 2015-09-28 | 日本電気株式会社 | ストレージシステム |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111190534A (zh) * | 2018-11-14 | 2020-05-22 | 株式会社日立制作所 | 卷管理装置、卷管理方法和存储介质 |
CN111190534B (zh) * | 2018-11-14 | 2023-06-02 | 株式会社日立制作所 | 卷管理装置、卷管理方法和存储介质 |
US11226769B2 (en) | 2018-11-15 | 2022-01-18 | Hitachi, Ltd. | Large-scale storage system and data placement method in large-scale storage system |
CN113360082A (zh) * | 2020-03-04 | 2021-09-07 | 株式会社日立制作所 | 存储系统及其控制方法 |
CN113360082B (zh) * | 2020-03-04 | 2024-06-04 | 株式会社日立制作所 | 存储系统及其控制方法 |
CN114115705A (zh) * | 2020-08-25 | 2022-03-01 | 株式会社日立制作所 | 存储系统和数据管理方法 |
JP2023011448A (ja) * | 2021-07-12 | 2023-01-24 | 株式会社日立製作所 | バックアップシステム及び方法 |
US11762574B2 (en) | 2021-07-12 | 2023-09-19 | Hitachi, Ltd. | Backup system and method |
JP7387679B2 (ja) | 2021-07-12 | 2023-11-28 | 株式会社日立製作所 | バックアップシステム及び方法 |
JP7548609B1 (ja) | 2023-02-27 | 2024-09-10 | Necプラットフォームズ株式会社 | 情報処理装置、情報処理方法およびプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2017109822A1 (ja) | 重複排除機能を有するストレージシステム | |
US20180349030A1 (en) | Storage control device, storage control program, and storage system | |
US10031703B1 (en) | Extent-based tiering for virtual storage using full LUNs | |
US8984221B2 (en) | Method for assigning storage area and computer system using the same | |
EP1837751B1 (en) | Storage system, storage extent release method and storage apparatus | |
US20190129971A1 (en) | Storage system and method of controlling storage system | |
CN107209714B (zh) | 分布式存储系统及分布式存储系统的控制方法 | |
US9122415B2 (en) | Storage system using real data storage area dynamic allocation method | |
WO2014068617A1 (en) | Storage apparatus and method for controlling storage apparatus | |
WO2015162681A1 (ja) | ストレージシステムおよび記憶デバイスの制御方法 | |
US20130311429A1 (en) | Method for controlling backup and restoration, and storage system using the same | |
CN113485636B (zh) | 一种数据访问方法、装置和系统 | |
WO2015061594A1 (en) | Data management in distributed file systems | |
US10877701B2 (en) | Scale-out type storage system | |
WO2015097757A1 (ja) | ストレージシステム及び重複排除制御方法 | |
JP5826949B2 (ja) | ストレージ装置及びデータ管理方法 | |
US20180267713A1 (en) | Method and apparatus for defining storage infrastructure | |
WO2015068233A1 (ja) | ストレージシステム | |
US11100008B2 (en) | Efficient memory usage for snapshots | |
WO2014139463A1 (en) | Data compression using compression blocks and partitions | |
US11416157B2 (en) | Storage device and data migration method | |
WO2016013075A1 (ja) | ストレージ、計算機およびその制御方法 | |
US11347641B2 (en) | Efficient memory usage for snapshots based on past memory usage | |
JP6072255B2 (ja) | ストレージシステム、ストレージシステムの制御方法及び管理システム | |
US10691550B2 (en) | Storage control apparatus and storage control method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 15911260 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 15911260 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: JP |