WO2017212515A1 - ストレージシステム、計算機、およびストレージ制御方法 - Google Patents

ストレージシステム、計算機、およびストレージ制御方法 Download PDF

Info

Publication number
WO2017212515A1
WO2017212515A1 PCT/JP2016/066716 JP2016066716W WO2017212515A1 WO 2017212515 A1 WO2017212515 A1 WO 2017212515A1 JP 2016066716 W JP2016066716 W JP 2016066716W WO 2017212515 A1 WO2017212515 A1 WO 2017212515A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
defragmentation
processor
storage
address
Prior art date
Application number
PCT/JP2016/066716
Other languages
English (en)
French (fr)
Inventor
光雄 早坂
武尊 千葉
晋太郎 伊藤
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2016/066716 priority Critical patent/WO2017212515A1/ja
Publication of WO2017212515A1 publication Critical patent/WO2017212515A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers

Definitions

  • the present invention relates to defragmentation in a storage system.
  • Patent Document 1 As background art in this technical field.
  • the storage apparatus disclosed in Patent Document 1 receives a request to refer to data (host reference request) from a host, it performs normal reference processing in response thereto.
  • the storage device acquires continuous data within the object including the requested data.
  • the continuous data in this object will be called logically continuous data.
  • the storage device acquires logically continuous data, if the physical positions of the data are not continuous, the storage device writes the data to a physically continuous area when writing the data to the next disk.
  • Patent Document 1 when the storage apparatus receives a request to update data (host update request) from the host, it reads not only the write data but also logically continuous data around the offset of the write data. The operation of writing to the disc together with the write data is disclosed.
  • data protection is applied in units of data blocks called stripes in storage devices. Parity for data protection is also added to each stripe.
  • the storage device confirms that the read data is normal using parity, updates the data, recalculates the parity, and writes the data and parity. .
  • Patent Document 1 The storage device disclosed in Patent Document 1 is not conscious of this stripe in processing executed when a host reference request or host update request is received. Therefore, when data around the offset of the data requested to be referenced or updated by the host is read and the peripheral data is written to a new area together with the requested data, a part of the stripe is randomly written to apply data protection. Will be updated.
  • the partial update of the stripe requires a process of reading the stripe data and parity, updating the parity, and writing the data and parity to a new area in order to update the parity for data protection. This is less efficient than the update (full stripe write) in which the entire stripe is collectively performed, and lowers the performance of the storage apparatus.
  • An object of the present invention is to increase the speed of defragmentation while suppressing a decrease in processing performance of a host reference request or a host update request (host I / O request).
  • a storage system includes a device that stores data, and a computer that manages storage of data by the device, the computer including a processor and a memory, and the memory is a unit of data protection.
  • Storage configuration / data protection application information for managing in which area of which device the data of the stripe to be used and the redundant code that enables error detection of the data are stored are stored, and the processor performs data update
  • the data included in the stripe including the data to be updated is arranged in a continuous area, and the free area after executing the data update is a unit of stripe In this way, online defragmentation is performed so that an empty area where data can be continuously arranged is obtained.
  • high-speed defragmentation processing is provided while suppressing a decrease in processing performance of host I / O requests.
  • FIG. 1 is a block diagram illustrating a configuration example of a storage apparatus 10 according to an embodiment.
  • 3 is a block diagram of a flash package of Example 1.
  • FIG. It is a figure for demonstrating the PG management information 70 which comprises the storage structure / data protection information T300. It is a figure for demonstrating the logical VOL management information 72 which comprises the storage structure / data protection information T300. It is a figure for demonstrating the object management table T200.
  • XX table various types of information may be described using the expression “XX table”, but the various types of information may be expressed using a data structure other than a table. In order to show that it does not depend on the data structure, the “XX table” can be called “XX information”.
  • the process may be described using the program as the subject, but it is determined by executing the program by the hardware itself or a processor (for example, MP (Micro Processor)) included in the hardware. Therefore, the subject of the processing may be hardware because the processing is appropriately performed using a storage resource (for example, a memory) and / or a communication interface device (for example, a port).
  • the program source may be a program distribution server or a storage medium, for example.
  • the storage system includes one or more storage devices.
  • a storage area provided by one or more storage devices is referred to as a media area.
  • the present invention is not limited to a storage system, and may be an application such as DB (DataBase).
  • the input / output performance of the media area in the storage system is limited to random and sequential access patterns to stored data.
  • Access to the media area uses an address defined in the media area.
  • the address defined in the media area is, for example, a logical block address (LBA).
  • random write performance is lower than sequential write performance.
  • Random write is a partial data update of a stripe that applies data protection. Partial data update of stripe requires reading / updating / writing of old data / old parity to update old data / old parity of stripe already applied data protection to protect new data Because it becomes.
  • the sequential write the parity is calculated from the new data constituting the stripe and written as it is. Therefore, the sequential write performance is high. Therefore, it is effective to improve the input / output performance of the storage system to arrange the data so that the sequential access request is not random access as much as possible.
  • the storage system manages data for each object that is logically organized data.
  • an object there is a file in which normal files are aggregated such as an archive file, a backup file, a volume, and a virtual machine volume file in addition to a normal file.
  • An object can also be part of a file.
  • Data update requests (overwrite / add / delete) will be striped write and performance will be improved if there is enough free space in the process of appending update data and changing to sequential write.
  • the old data position is changed to an empty block. Accordingly, when the free area is reused, the free area becomes random, and the input / output performance deteriorates due to random writing.
  • Measures include defragmentation.
  • defragmentation requires reading an object from a media area (random access) and writing the data to a random empty block (random write), which places a heavy load and reduces system performance.
  • Online defragmentation is defragmentation in the processing of an update request (host update request) from the host.
  • the storage system reads the data requested to be updated and the data constituting the stripe in succession to the data requested to be updated in the object, and writes them to the new continuous area to update all the stripes. . Since the old data position is reused as an empty block, a continuous empty area for the stripe can always be secured.
  • the data position in the object is indicated by the host address.
  • a data position in an object may be referred to as a logical position.
  • data with consecutive host addresses in an object may be referred to as logically continuous data.
  • data stored in continuous addresses managed by the data protection program and shown to the upper level may be referred to as physically continuous data.
  • the address that the data protection program shows to the upper level is indicated by, for example, a virtual LBA (logical block address).
  • the data storage unit area that the data protection program in the media area shows up is simply called a block.
  • the storage system performs online defragmentation at the time of a host update request only for objects designated in advance.
  • the storage system performs offline defragmentation along with online defragmentation.
  • Offline defragmentation is defragmentation asynchronous to the host request. Since online defragmentation reduces the random data placement of objects, the processing load of off-line defragmentation is reduced, and a decrease in system input / output performance can be suppressed.
  • FIG. 1 is a diagram schematically showing an outline of online defragmentation processing in the computer system of this embodiment.
  • the overall computer system includes a storage system 100, a plurality of host computers 14, and a management computer 15. These are connected by a network 2.
  • the host computer 14 is a computer that accesses the resources of the storage system 100 and performs business.
  • the network 2 is a network for communication of user data between the host computer 14 and the storage system 100 and management data between the management computer 15 and other devices, and in one example, is an IP network.
  • the storage system 100 holds an object and accepts access to the object from the host computer 14.
  • the memory area 103 of the storage system 100 stores an additional writing program P200, a defragmentation control program P300, a data protection program P400, and an empty block management program P310.
  • the defragmentation control program P300 includes an online defragmentation process P301 and an offline defragmentation process P302.
  • the write-once program P200 writes the updated data into a new free area in response to a data update request (data update request or update request). At that time, a new write destination is determined in cooperation with the online defragmentation process P301 and the empty block management program P310.
  • the additional writing program P200 tracks updates of both the user data and management information (metadata) of the object, and records the update data in a log.
  • the update point that is logged is called a checkpoint. Therefore, the write-once program P200 selects a part or all of the checkpoints from the past checkpoints, and saves the update data of the selected checkpoints as snapshots so that the snapshot of the storage system is automatically and automatically stored. It can be produced continuously.
  • the update data is written to another block on the media area 104 without overwriting the update data on the block data on the media area 104 corresponding to the update location of the object. . Thereby, the data of the arbitrary checkpoint can be restored.
  • the block data corresponding to the update location of the file is overwritten with the update data.
  • the online defragmentation process 301 When receiving an update request from the host computer 14, the online defragmentation process 301 refers to the object management table T 200 of the reference object of the update request, and updates the requested data (in addition to update request data or update data, Then, the data (logically continuous data) that is continuous with the update request data and forms a stripe is read from the media area 104.
  • the free block management P310 refers to the storage configuration / data protection application information T300, and allocates a free block so that the new data write destination address is the same device as the device where the old data was stored.
  • the data protection program P400 newly calculates parity from the data constituting the stripe, and writes the data and parity to the media area 104.
  • the stripes constituting D1 are D0, D1, and PD01.
  • the storage system 100 When receiving an update request for updating D1 to update request data D1 * from the host, the storage system 100 refers to the object management table T200 and detects that the configuration of the stripe including D1 is D0 and D1. . The storage system 100 reads D0, newly calculates a parity PD01 * from D0 and D1 *, and writes D0, D1, and PD01 to each new area.
  • the storage system 100 allocates an empty block as a data write destination so that the empty block management module P310 has the same storage destination of old and new data. Then, the storage system 100 actually writes the update data D1 * into a new data area. On the other hand, for data that is not updated (unupdated data) D0, the storage system 100 issues a data copy command that instructs to copy the data to the new address G0.
  • the flash package # 0 When the flash package # 0 receives the data copy command, it updates the logical-physical address conversion table so that the virtual address G0 points to the real address where D0 is stored, and the real address that the virtual address G0 previously pointed to The data G0 is released.
  • the flash package # 0 applies a process for eliminating duplication in the flash package, and the virtual address in the flash package has two addresses.
  • the two virtual addresses may be associated with the same real address to indicate the same real data. Thereby, it is possible to roll back to the original state when the writing process fails.
  • FIG. 2 is a diagram schematically showing an outline of offline defragmentation processing in the computer system of this embodiment.
  • Offline defragmentation process P302 is performed when the load due to a request from the host is low.
  • the offline defragmentation process P302 refers to the object management table T200 and moves data so that more continuous free areas can be created in cooperation with the free block management program P310. Since online defragmentation arranges data in units of stripes and vacant areas are created in units of stripes, offline defragmentation can be performed by stripe reading and stripe writing.
  • the offline defragmentation process P302 issues a command for instructing data movement including data and parity.
  • the flash package that has received the command can complete the offline defragmentation only by updating the logical-physical address conversion table.
  • data is continuously arranged in units of stripes by online defragmentation processing, and an empty area in units of stripes can be secured, so that data write processing with a large IO size is always performed by full stripe write. And write performance can be improved.
  • FIG. 3 is a block diagram illustrating a configuration example of the storage apparatus 10 according to the present embodiment.
  • the storage apparatus 10 is a processing unit of the storage system 100, and FIG. 3 shows a schematic hardware configuration thereof.
  • the storage apparatus 10 is connected to the management computer 15 and a plurality of host computers 14 via the network 2.
  • the network 2 may be, for example, a WAN (Wide Area Network), a LAN (Local Area Network), a SAN (Storage Area Network), the Internet, a public line, or a dedicated line.
  • the storage apparatus 10 includes a processor 102, a memory 107, a storage device 106, an FE (Front End) I / F 105, and a BE (Back End) I / F 106. These units of the storage apparatus 10 are connected via an internal bus 82.
  • the BE I / F 74 is connected to the flash package 80 via a switch (SW).
  • a collection of a plurality of flash packages 80 is defined as a flash package group 76, and there may be a plurality of flash package groups 76. Redundant data may be created between the flash package groups 76.
  • the processor 102 operates as various functional units of the storage apparatus 10 by operating using information stored in the memory area 103 in accordance with a program stored in the memory 107.
  • the processor 102 operates as a defragmentation control unit that executes defragmentation control and an empty block management unit that executes management of empty blocks.
  • the memory 107 stores a program group 350 and management information T250.
  • the program group 350 includes a defragmentation control program 300, an empty block management program 310, an additional write program P200, and a data protection program P400.
  • the management information T250 includes information used by the program group 350.
  • the management information T250 includes an object management table T200 and storage configuration / data protection management information T300.
  • the memory 107 is used as a cache memory for temporarily storing user data of the host computer 14 in addition to storing information for operating the storage apparatus 10 as described above. Sometimes used as memory.
  • the memory 107 provides the memory area 103 in FIG.
  • the memory 107 uses a volatile semiconductor memory such as a DRAM or a non-volatile semiconductor memory such as a storage class memory, and can access data faster than the flash package 80.
  • the program group 350 and management information 250 are shown in the memory area 103 as an example.
  • the program group 350 and management information 250 are stored in the memory area 103 of the memory 107 from the storage device 80. To be loaded.
  • the flash package 80 as a storage device stores programs, management information, and metadata necessary for realizing a desired function, and stores user data of the host computer 14 in this embodiment.
  • the flash package 80 provides a media area 104.
  • the flash package 80 is a storage device including a non-volatile non-transitory storage medium in the present embodiment, and may be connected via the network 2.
  • the defragmentation control program 300 executes an online defragmentation processing module 301 that executes defragmentation (online defragmentation) when an I / O request is received from the host, and defragmentation (offline offline) with respect to the I / O request from the host.
  • An off-line defrag processing module 302 that executes (defrag).
  • the free block management program 310 manages use / unuse of blocks, which are data storage units of the media area 104 (storage device 106) for storing user data.
  • the empty block management program 310 holds empty block management information indicating the address in the media area of the empty block, and updates the management information according to the data update in the media area 104.
  • the defragmentation control program 300 determines a physically continuous free area as a write destination of data read from the media area in cooperation with the free block management program 310. After the defragmentation is applied, the free block management program 310 manages a block in which data written in a new area is stored as a free block.
  • the storage apparatus 10 includes the processor 102 and the memory 107, and the memory 107 has a stripe data as a unit of data protection and a redundant code that enables error detection of the data in which area of which device.
  • the storage configuration / data protection application information T300 that is stored or managed is stored.
  • the processor 102 refers to the storage configuration / data protection application information T300 and is included in the stripe including the data to be updated. Online defragmentation is performed such that the free data after the data update is arranged in a continuous area and the free area after the data update is executed becomes a free area where data can be continuously arranged in units of stripes.
  • FIG. 4 is a block diagram of the flash package of the first embodiment.
  • the write data stored in the cache memory of the storage device 10 is temporarily stored in the package buffer 96 from the FE I / F 90 of the flash package 80 via the data transfer unit control unit 94. After that, the data is written into the FM chip 180 which is a flash memory chip via the BE I / F 98.
  • the processing in the flash package 80 at that time is executed by the package processor 92 under the flash package control program 104 in the package memory 99.
  • the package processor 92 as necessary, package information 106, FM chip information 108, real block information 110 for managing the physical space, virtual block information 112 for managing the logical space, and a theory for managing the correspondence between the physical space and the logical space.
  • the management information of the object conversion map (logical / physical conversion table) 114 is accessed.
  • a part other than the FM chip 180 is defined as the flash package controller 116.
  • FIG. 5 is a diagram for explaining the PG management information 70 constituting the storage configuration / data protection information T300.
  • FIG. 6A is a diagram for explaining the logical VOL management information 72 constituting the storage configuration / data protection information T300.
  • FIG. 6B is a diagram for explaining the object management table T200.
  • FIG. 5 shows the inside of the PG # 0 management information 120 as an example, but the storage system 100 has a plurality of PGs (Parity Groups), each of which has the same management information as the PG # 0 management information 120.
  • PGs Parent Groups
  • PG # 0 management information 120 includes used drive information 122 and stripe group management 132.
  • the used drive information 122 includes the logical volume (VOL) # 124 created by the PG, the RAID configuration 126 indicating the corresponding RAID level, the configured physical drive # 128, and the physical start address 130 of each physical drive # 128.
  • VOL logical volume
  • a stripe group is a management unit in which a certain unit is collected and grouped from each storage medium in the PG.
  • the stripe group management 132 manages the drive # in which redundant data is stored for each stripe group # 136 in the logical VOL 124 of the PG.
  • the drive management information may be changed depending on the number of redundant data.
  • RAID5 For example, in the case of RAID5, one of the P parity storage drives # 138 is managed, but in the case of RAID6, a Q parity storage drive is additionally required.
  • RAID 5 (3D + 1P) is described as an example, but in the present invention, other RAID levels such as RAID 4 and RAID 6 may be used.
  • RAID 5 will be described as an example.
  • the logical VOL management information 72 manages the logical start address 142 and PG # (number) 144 corresponding to each logical VOL # with respect to all logical VOL # 140 defined in the storage system 100.
  • the object management table T200 has a format of either T202 or T204.
  • a CheckPoint number C10 and a virtual address C12 are included.
  • the virtual address stored in the entry counted from the head to a certain host address is a virtual address in which data corresponding to the host address is stored. For example, when the host address is configured in units of 4 KB, the fourth entry from the top represents the host address 16 KB. Also, the checkpoint number when the host address data is updated is stored in C10, and the virtual address is stored in C12.
  • the length C14 is included. This indicates that the area from the virtual address C12 to the length C14 is a continuous area. If the data can be stored continuously, the number of entries in the metadata can be reduced, the ratio of the metadata to the data is further reduced, and the hit rate when the metadata is cached is improved.
  • free blocks are managed by bitmaps. For example, 1 bit represents the state of each block, and if the bit is 0, it is Free, if it is 1, it is Used.
  • bitmaps For example, 1 bit represents the state of each block, and if the bit is 0, it is Free, if it is 1, it is Used.
  • FIG. 7 is a diagram showing information held by the flash package 80 in the present embodiment.
  • Information held by the flash package 80 includes real block information 110, virtual block information 112, and a logical-physical conversion map 114.
  • the real block information 110 is information for managing a real block that is a space obtained by dividing a physical area in the flash package 80 into a uniform size. Each real block is assigned an ID.
  • the real block ID 152 stores a list of IDs of each real block and a real address corresponding to each ID. Some real blocks have free space.
  • the free space value of each real block is stored in association with the ID of each real block.
  • the free real block queue 156 includes information indicating which real block has free capacity.
  • IDs of real blocks (free real blocks) having free capacity are managed by the queue.
  • the virtual block information 112 is information for managing a virtual block that is a space obtained by dividing the logical area in the flash package 80 into a uniform size.
  • Each virtual block is assigned an ID.
  • As the virtual block ID 166 a list of IDs of each virtual block and a virtual address of the virtual block of each ID are stored in association with each other.
  • the size of the virtual block and the size of the real block are the same, but the number of virtual block IDs is equal to or greater than the number of real block IDs.
  • the virtual block data storage amount 168 indicates the amount of data that can be stored as a logical area and the current usage amount.
  • the logical-physical conversion map 170 is information for managing the correspondence between the virtual address 172 representing the virtual block and the real address 174 representing the real block.
  • FIG. 8A is a diagram illustrating an example of a defragmentation command issued by the defragmentation control program P300.
  • FIG. 8B is a diagram illustrating an example of a defragmentation command issued by the data protection program P400.
  • the defragmentation command is a special command issued by the storage to the device when the logical / physical address conversion table of the device can be controlled from the outside.
  • the defragmentation command 272 in FIG. 8A is created by the defragmentation control program P300 and sent to the data protection program P400.
  • the defragmentation command 272 includes a defragmentation ID 273, a type 274, a migration source virtual address 275, and a migration destination virtual address 276.
  • the defragmentation command 282 is sent by the data protection program P400 to the device (flash package 80).
  • the defragmentation command 282 is obtained by converting the migration source virtual address 275 and the migration destination virtual address 276 of the defragmentation command 272 created by the defragmentation control program P300 into physical addresses.
  • the defragmentation command 282 includes a defragmentation ID 283, a type 284, a migration source physical address 285, and a migration destination physical address 286.
  • the defragmentation command may be a single command with a single record with the movement source and the movement destination as a set, or a single command with a plurality of records as a list.
  • the physical address in the defrag command 282 is a virtual address in the device. In the device, data is stored at a real address corresponding to the virtual address.
  • the defragmentation ID 283 is an ID for identifying defragmentation.
  • the type 284 indicates the type of defragmentation. Defragmentation types include copy, move, and ZERO write. When the type is copy defragmentation, in the logical-physical address conversion table in the device, the data of the real address corresponding to the movement-source physical address 285 (virtual address in the device) is changed to the real of the movement-destination physical address 286 (virtual address in the device). Copy to address.
  • the type is defragmentation of migration
  • the actual data indicated by the migration source physical address 285 and the migration destination physical address 286 is exchanged in the logical-physical address conversion table in the device.
  • processing is performed in which the migration destination physical address 286 is ZERO in the logical-physical address conversion table in the device.
  • a bit indicating ZERO may be set in the movement destination physical address 286 (virtual address in the device), or data in the real address of the movement destination physical address 286 may be set to ZERO.
  • the device when the ZERO write processing is performed on the physical address to be read from which a read request has been sent to the device, the device returns ZERO padding data in response to the read request. Thereby, the processing of the in-device logical physical address conversion table is completed.
  • FIG. 9 is a flowchart showing an outline of online defragmentation processing.
  • the additional writing program P200 receives an update request from the host or an update request generated inside the system (step S12).
  • the update write program P200 once caches the update data in the memory (step S14). If the memory is a battery-backed DRAM or a non-volatile memory, the write-once program P200 sends a response to the update request to the host after copying the update data to another node. In that case, the processing after step S16 is performed asynchronously with the update request from the host.
  • the online processing P302 of the defragmentation control program P300 confirms the data protection level with reference to the storage configuration / data protection application information T300 (step S16), and can the data be updated based on the data protection level by full stripe write? It is determined whether or not (step S18).
  • the defragmentation control program P200 proceeds to step S22 when full stripe write is performed, and proceeds to step S19 when full stripe write is not performed.
  • the online processing P302 refers to the object management table T200 based on the address designated as update data in the update request from the host, and has not yet configured the stripe including the update data.
  • the virtual address of the updated data is confirmed (step S19), and the unupdated data is read from the medium using the virtual address (step S20).
  • step S19 all data constituting the stripe is prepared, and the online process P302 proceeds to step S22.
  • step S22 the additional writing program P200 requests the free block management program P310 to assign a free block to the data.
  • the free block management program P310 refers to the storage configuration / data protection application information T300, searches the bitmap for a free virtual address where the data placement destination before writing and after writing is the same device, and finds the virtual address in the bitmap. Change during use and assign to each data.
  • the additional writing program P200 takes over the assigned virtual address information and data to the data protection program P400.
  • the data protection program P400 generates a parity, converts the virtual address into a physical address, and assigns the physical address to the parity (step S24).
  • the write-once program P200 determines whether or not the update request process is a full-triple write (step S26). The write-once program P200 proceeds to step S36 if the update request is a full stripe write, and proceeds to step S28 if the update request is not a full stripe write.
  • step S28 the data protection program P400 determines whether the device can control the logical-physical address conversion table from the outside. Whether the logical-physical address conversion table can be controlled from the outside may be set by the administrator in the management computer 15 or may be automatically detected by the storage apparatus 10.
  • the data protection program P400 When the logical-physical address conversion table cannot be controlled from the outside, the data protection program P400 writes the update data including the parity and the surrounding unupdated data (step S30). On the other hand, if the logical-physical address conversion table can be controlled from the outside, the data protection program P400 first writes the update data including the parity (step S32), and further, for the unupdated data portion, the device defragmentation copy command Is issued and its command is issued (step S34). If the data constituting the stripe is insufficient and ZERO data is substituted, a defragmentation ZERO command is created and the command is issued. Furthermore, on the device side, a logical physical address conversion table update process described later is performed (step S100).
  • the write-once program P200 When the write-once program P200 confirms that the data has been successfully written, it updates the assigned address in the object management table T200 (step S36). Further, the additional write program P200 registers the old virtual address of the update data in the release block list (step S38).
  • the release block list (not shown) shows the block address of the media area 104 that can be released due to an increase in defragmentation or checkpoints.
  • the released block collection processing module may associate an address in the released block list with the checkpoint and store the update data in the media area 104 indicated by the address. In the configuration, the release block list is created for each checkpoint.
  • step S36 and step S38 update processing of update data for the update request inside the system accepted in step S12 is performed.
  • the processor 102 arranges data to be updated in a free area of the same device as the device in which the data was arranged before the data update. Thereby, the time required for data update can be shortened by updating the data in online defragmentation in the same device.
  • the processor 102 writes the updated data in a new area with a redundant code calculation for the data to be updated, and performs a redundant code calculation for data that is not updated. No data copy. As a result, only the data to be updated is newly written, and the data that is not updated is processed by the data copy that does not involve the operation of the redundant code, so that the data update that involves online defragmentation can be realized in a short time.
  • the device holds logical / physical address conversion information (logical / physical conversion map 114) that associates a virtual address with a real address in a rewritable manner. It is executed by updating the address translation information. As a result, data copying is realized by updating the logical-physical address conversion table, so that data updating with online defragmentation can be executed in a short time.
  • FIG. 10 is a flowchart showing offline defragmentation processing. Offline defragmentation is executed when the load due to a request from the host is low.
  • the offline defragmentation process P302 acquires the status of the empty block from the empty block management program P310 (step S52). Next, the offline defragmentation process P302 generates a list of objects stored in the media area 104 based on the object management table T200 (step S54). Further, the offline defragmentation process P302 selects an object from the list (step S56).
  • the offline defragmentation process P302 refers to the object management table T200 of the selected object (step S58), and a larger free block is created by moving the data at the virtual address registered in the object management table T200. It is confirmed whether there is a virtual address (step S60).
  • the fact that a larger empty block is created by data movement means that a virtual address around the empty block is found from the virtual addresses registered in the object management table T200.
  • virtual addresses that are separated by a stripe column are determined as close addresses. If there is no virtual address that allows a larger empty block, the offline defragmentation process P302 proceeds to step S74. If there is a virtual address that allows a larger empty block, the offline defragmentation process P302 proceeds to step S62.
  • step S62 the offline process P302 determines whether or not the logical / physical address conversion table of the device can be controlled from the outside. If possible, the offline process P302 proceeds to step S64, otherwise proceeds to step S66.
  • step S64 the offline process P302 creates a defragmentation command 272 whose type is migration, and passes the defragmentation command 272 to the data protection program P400.
  • the data protection program P400 converts the defragmentation command 272 into a defragmentation command 282 including parity, and issues the defragmentation command 282.
  • the device side Upon receiving the defragmentation command 282, the device side performs processing for updating a logical-physical address conversion table in the device, which will be described later (step S100).
  • step S66 the off-line process P302 instructs the data protection program P400 to read the virtual address of the data constituting the stripe including the data to be defragmented.
  • the data protection program P400 converts the virtual address into a physical address and performs a read process.
  • the offline process P302 performs a full stripe write process on the read data to the virtual address of the empty block.
  • the data protection program P400 performs parity calculation, converts the virtual address to a physical address, and performs a writing process (step S68).
  • the offline process P302 updates the object management table T200 as the data moves (step S70). Further, the offline process P302 instructs the free block management program P310 to change the state of the virtual address before the data movement to a free block while using the state of the virtual address of the data movement destination.
  • the empty block management program P310 updates the bitmap according to the instruction. Further, the offline process P302 updates the state of the empty block obtained in step S52 in accordance with the data movement (step S72).
  • step S74 determines whether or not sufficient continuous free blocks have been secured. When sufficient continuous free blocks can be secured, the offline process P302 completes the process. Otherwise, the offline process P302 proceeds to step S76. In step S73, the offline process P302 determines whether or not the next object remains in the list. If the next object exists, the offline process P302 returns to step S56 and repeats the subsequent processes. If the next object does not exist, the offline process P302 completes the process.
  • FIG. 11 is a flowchart showing processing on the device side that has received the defragmentation command.
  • the flash package control program 104 When the flash package control program 104 receives the defragmentation command, it analyzes it (step S102). Thereafter, the flash package control program 104 determines the command type of the defragmentation command (step S104).
  • the flash package control program 104 deletes the data of the real address indicated by the virtual address in the device described in the destination address described in the command (step S106). Thereafter, the flash package control program 104 updates the real address of the migration destination virtual address with the real address indicated by the migration source virtual address in the device (step S108).
  • deduplication processing may be performed in which the virtual addresses of both the movement source and the movement destination indicate the same data. In that case, a link is set from a plurality of virtual addresses to the same real address, and an overlapping state in which the same data exists in the plurality of real addresses is eliminated.
  • the number of links decreases each time a request is made to delete data with links set from multiple real addresses, and when the number of links reaches zero, the actual data Deletion is performed.
  • step S104 If it is determined in step S104 that the type of the defragmentation command is zero (ZERO writing), the flash package control program 104 performs processing for setting the data to zero for the migration destination virtual address in the device (step S110). For example, a bit indicating ZERO may be set in the destination virtual address, or the data in the real address may be actually set to ZERO.
  • processing indicating that the data at the virtual address is ZERO is performed, the device returns data filled with ZERO when a read request specifying the virtual address is received. Thereby, the processing of the in-device logical physical address conversion table is completed.
  • the flash package control program 104 swaps the real address of the migration source virtual address and the migration destination virtual address in the device (step S112). .
  • the flash package control program 104 repeats the processing from step S104 onward so as to sequentially process the individual commands of the respective records (step S114). If there is no next defragmentation command, the flash package control program 104 ends the process.
  • the processor 102 updates the logical-physical address translation information so as to eliminate duplication of the same data by associating the data of the same real address with a plurality of virtual addresses.
  • the data copy is realized.
  • the processor 102 moves the data in the logical-physical address conversion information by exchanging the real address associated with the migration source virtual address and the real address associated with the migration destination virtual address. Realize.
  • FIG. 12 is a flowchart showing the processing of the released block collection processing module.
  • the storage system 100 holds checkpoint management information (not shown) that associates checkpoints with block addresses.
  • the released block collection processing module searches for and selects the oldest checkpoint in the checkpoint management information (step S501), and the selected oldest checkpoint is (latest checkpoint-maintained checkpoint). Number N) It is determined whether or not the check point is before (step S502).
  • the maintenance checkpoint number is information indicating how far the checkpoint is maintained from the latest checkpoint currently being processed. The process of step S502 determines whether or not the selected oldest checkpoint is a checkpoint to be maintained.
  • checkpoint data is selected and saved as a snapshot.
  • a checkpoint selected as a snapshot can be designated from the management computer 15.
  • the release block collection processing module reads the release block list 510 for each checkpoint and performs release processing.
  • the release processing includes trim processing and the like.
  • the release processing is performed up to (the latest checkpoint ⁇ the number N of maintenance checkpoints).
  • step S502 If the determination result of step S502 is negative (S502: NO), the released block collection processing module ends the process. If the determination result of step S502 is affirmative (S502: YES), the released block collection processing module reads the released block list 510 of the selected checkpoint (step S503). Subsequently, the released block collection processing module performs a released block release process (trim process) (step S504). However, if the device does not support trim processing or if the trim processing is not set, step S504 is skipped. Subsequently, the free block management program P310 changes the release block address of the release block list 510 to a free block (step S505), and returns to step S501. Through the above processing, unused blocks can be released and efficient use of the storage area can be realized.
  • the processing of the above embodiment can be organized as follows.
  • the memory 107 in FIG. 3 stores storage configuration / data protection application information T300 for managing in which area of which device data of a stripe serving as a unit of data protection and a redundant code that enables error detection of the data are stored.
  • the processor 102 executes the data update. Online defragmentation with the update of logical-physical address translation information is performed so that the subsequent free area becomes a free area where data can be continuously arranged in units of stripes.
  • the processor 102 moves data by updating the logical physical address translation information.
  • the processes required for online defragmentation or offline defragmentation include a process of copying data, a process of moving data, and a process of zeroing data.
  • the processor 102 updates the real address corresponding to the migration destination virtual address with the data of the real address corresponding to the migration source virtual address.
  • the processor 102 exchanges the data of the real address corresponding to the virtual address of the movement source and the data of the real address corresponding to the virtual address of the movement destination.
  • the processor 102 sets the data of the destination virtual address to zero.
  • FIG. 13 is a block diagram showing a configuration example of the storage system.
  • the storage system 100 includes a server 500, a block storage 600, and a plurality of storage device management units 700, 701, and 702.
  • the server 500 and the block storage 600 are connected via the network 4.
  • the network 4 is a SAN (Storage Area Network).
  • the server 500 is a file server and includes a processor 512, a memory 503, a network interface 515, and a storage interface 519, and is connected to the network 4 via the storage interface 519.
  • the block storage 600 includes a processor 612, a memory 603, a storage interface 619, a network interface 615, and a storage device module interface 629, and is connected to the network 4 via the storage interface 619.
  • the server (file server) 500 and the block storage 600 mutually transmit and receive commands and user data via the network 4 for updating and referencing user data.
  • the data protection program P400 stored in the memory area 103 of FIG. 1 is arranged in the block storage 600 as a program group P350b, and other program groups and table groups are arranged in the server 500 as the program group P350a and management information T250a.
  • the program group 350a arranged in the server 500 includes an additional writing program P200, a defragmentation control program P300, and an empty block management program P310.
  • the table group T250a stored in the server 500 includes an object management table T200 and storage configuration / data protection application information T300.
  • the processor 512 executes the program group P350a while using the management information T250a.
  • the processor 612 executes the program group P350b while using the management information T250b.
  • FIG. 13 shows an example of file storage, the same can be said even if the processing performed by the file storage is replaced with an application.
  • FIG. 14 is a block diagram showing another configuration example of the storage system.
  • the storage system 100 includes a server 500 and storage device management units 700, 701, and 702.
  • the server 500 includes a processor 512, a memory 503, a network interface 515, and a storage interface 519, similarly to the configuration example shown in FIG.
  • the processor 512 uses the management information T250 on the memory 503 to execute the program group P350.
  • the data protection program P300 shown in FIG. 1 and other program groups are composed of application programs.
  • An application corresponding to a program group other than the data protection program P300 is, for example, a database.
  • the data protection program P300 may be incorporated in the application, or may be configured as another application.
  • the present invention for speeding up the defragmentation process while maintaining the I / O performance from the host device has been described according to the embodiment.
  • the present invention is not limited to the above-described embodiment, and various Various modifications are included.
  • the above-described embodiments have been described in detail for easy understanding of the present invention, and are not necessarily limited to those having all the configurations described.
  • a part of the configuration of one embodiment can be replaced with the configuration of another embodiment, and the configuration of another embodiment can be added to the configuration of one embodiment.
  • each of the above-described configurations, functions, processing units, and the like may be realized by hardware by designing a part or all of them with, for example, an integrated circuit.
  • Each of the above-described configurations, functions, and the like may be realized by software by interpreting and executing a program that realizes each function by the processor.
  • Information such as programs, tables, and files for realizing each function can be stored in a memory, a hard disk, a recording device such as an SSD (Solid State Drive), or a recording medium such as an IC card or an SD card.

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

ストレージシステムは、データを保存するデバイスと、前記デバイスによるデータの保存を管理する計算機とを有し、前記計算機がプロセッサとメモリを有し、前記メモリは、データ保護の単位となるストライプのデータおよび該データの誤り検出を可能にする冗長コードがどのデバイスのどの領域に格納されているか管理するストレージ構成/データ保護適用情報を記憶し、前記プロセッサは、データ更新を実行するとき、前記ストレージ構成/データ保護適用情報を参照し、更新するデータを含むストライプに含まれているデータを連続した領域に配置し、かつ、前記データ更新を実行した後の空き領域がストライプの単位でデータを連続して配置できる空き領域となるように、オンラインデフラグを行う。

Description

ストレージシステム、計算機、およびストレージ制御方法
 本発明は、ストレージシステムにおけるデフラグに関する。
 本技術分野の背景技術として、特許文献1がある。特許文献1に開示されているストレージ装置は、ホストからデータを参照する要求(ホスト参照要求)を受けると、それに応答して通常の参照処理を行う。
 参照処理において、ストレージ装置は、要求されたデータを含むオブジェクト内で連続したデータを取得する。このオブジェクト内で連続したデータを、論理的に連続したデータと呼ぶことにする。ストレージ装置は、論理的に連続したデータを取得したとき、それらのデータの物理的な位置が連続していなければ、それらのデータを次のディスクに書き出すとき物理的に連続した領域に書き出す。
 特許文献1には、更に、ストレージ装置が、ホストからデータを更新する要求(ホスト更新要求)を受けると、ライトデータだけでなく、そのライトデータのオフセット周辺の論理的に連続したデータを読み出して、ライトデータと共にディスクに書き込むという動作が開示されている。
米国特許8359430号
 通常、ストレージ装置ではストライプというデータの塊を単位としてデータ保護が適用される。データ保護のためのパリティもストライプ単位に付加される。ストレージ装置は、ランダムな領域へのデータの書き込み(ランダムライト)を行う場合、読み出したデータが正常であることをパリティにより確認し、データを更新してパリティを計算し直し、データおよびパリティを書き込む。
 特許文献1のストレージ装置は、ホスト参照要求あるいはホスト更新要求を受けたときに実行する処理において、このストライプを意識しない。そのため、ホストから参照あるいは更新を要求されたデータのオフセット周辺のデータを読み出し、要求されたデータと共に周辺のデータを新たな領域に書き出すとき、データ保護を適用するためにランダムライトによってストライプの一部を更新することになる。
 ストライプの一部更新は、データ保護のためのパリティを更新するためにストライプのデータおよびパリティを読み出し、パリティを更新し、新たな領域にデータおよびパリティを書き出すという処理が必要となる。これは、ストライプ全体をまとめて行なう更新(フルストライプライト)の場合に比べて効率が悪く、ストレージ装置の性能を低下させる。
 また、デフラグにより連続した空き領域を作るためにデータを移動させるときも同様にランダムライトにより性能が低下する。特に近年、I/Oにおいて参照あるいは更新されるデータには様々なサイズが混在している。そのため、特にサイズが大きいデータをフルストライプライトすることが性能の向上につながる。
 本発明の目的は、ホスト参照要求あるいはホスト更新要求(ホストI/O要求)の処理性能が低下するのを抑制しつつ、デフラグを高速化することである。
 本発明の一態様によるストレージシステムは、データを保存するデバイスと、前記デバイスによるデータの保存を管理する計算機とを有し、前記計算機がプロセッサとメモリを有し、前記メモリは、データ保護の単位となるストライプのデータおよび該データの誤り検出を可能にする冗長コードがどのデバイスのどの領域に格納されているか管理するストレージ構成/データ保護適用情報を記憶し、前記プロセッサは、データ更新を実行するとき、前記ストレージ構成/データ保護適用情報を参照し、更新するデータを含むストライプに含まれているデータを連続した領域に配置し、かつ、前記データ更新を実行した後の空き領域がストライプの単位でデータを連続して配置できる空き領域となるように、オンラインデフラグを行う。
 これによれば、データがストライプ単位で連続した領域に書き込まれ、かつ、ストライプのデータが連続して配置できる空き領域が確保されるので、その後のデフラグにおいて、データの読み出しおよび書き込みを、ストライプ単位で、連続した領域で行うことができ、I/O要求の処理性能が低下するのを抑制しつつ、デフラグを高速化することである。 
本発明の一態様によれば、ホストI/O要求の処理性能の低下を抑制しつつ高速なデフラグ処理を提供する。
本実施例の計算機システムにおけるオンラインデフラグ処理の概要を模式的に示す図である。 本実施例の計算機システムにおけるオフラインデフラグ処理の概要を模式的に示す図である。 本実施例にかかるストレージ装置10の構成例を示すブロック図である。 実施例1のフラッシュパッケージのブロック図である。 ストレージ構成/データ保護情報T300を構成するPG管理情報70を説明するための図である。 ストレージ構成/データ保護情報T300を構成する論理VOL管理情報72を説明するための図である。 オブジェクト管理テーブルT200を説明するための図である。 本実施例におけるフラッシュパッケージ80が保持する情報を示す図である。 デフラグ制御プログラムP300が発行するデフラグコマンドの一例を示す図である。 データ保護プログラムP400が発行するデフラグコマンドの一例を示す図である。 オンラインデフラグ処理の概要を示すフローチャートである。 オフラインデフラグ処理を示すフローチャートである。 デフラグコマンドを受け付けたデバイス側の処理を示すフローチャートである。 解放ブロック回収処理モジュールの処理を示すフローチャートである。 ストレージシステムの構成例を示すブロック図である。 ストレージシステムの他の構成例を示すブロック図である。
 本発明の実施例を図面を参照して説明する。なお、以下に説明する実施例は特許請求の範囲にかかる発明を限定するものではなく、また実施例で説明されている諸要素及びその組み合わせの全てが発明に必須であるとは限らない。
 なお、以下の説明では、「XXテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていても良い。データ構造に依存しないことを示すために「XXテーブル」を「XX情報」と呼ぶことができる。
 また、以下の説明では、プログラムを主語として処理を説明する場合があるが、プログラムをハードウェアの自体、またはハードウェアが有するプロセッサ(例えば、MP(Micro Processor))によって実行することで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インターフェースデバイス(例えばポート)を用いながら行うため、処理の主語がハードウェアとされても良い。また、プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであっても良い。
 以下において、ストレージシステムにおけるデフラグ技術が開示される。ストレージシステムは、1以上の記憶デバイスを含む。以下において、1以上の記憶デバイスが与える記憶領域をメディア領域と呼ぶ。また、本発明は、ストレージシステムに限らず、DB(DataBase)などのアプリでもよい。
 ストレージシステムにおけるメディア領域の入出力性能は、格納されるデータへのランダム及びシーケンシャルアクセスのパターンに制限される。メディア領域へのアクセスは、メディア領域において定義されるアドレスを使用する。メディア領域で定義されるアドレスは、例えば、論理ブロックアドレス(LBA)である。
 例えば、ランダムライトの性能は、シーケンシャルライトの性能と比較して低い。それは、ランダムライトは、データ保護を適用するストライプの一部データ更新である。ストライプの一部データ更新は、既にデータ保護を適用しているストライプの旧データ・旧パリティを、新データを保護するために更新するために、旧データ・旧パリティの読み出し・更新・書き出しが必要になるからである。対して、シーケンシャルライトは、ストライプを構成する新データからパリティを計算し、そのまま書き出せばよい。そのため、シーケンシャルライト性能が高い。従って、シーケンシャルアクセス要求は、なるべくランダムアクセスとならないようにデータを配置することが、ストレージシステムの入出力性能の向上に有効である。
 ストレージシステムは、データを、論理的にまとまったデータであるオブジェクトごとに管理する。オブジェクトとしては、通常のファイルの他、アーカイブファイル、バックアップファイル、ボリューム、仮想計算機のボリュームファイルのような、通常のファイルを集約したファイルがある。オブジェクトは、ファイルの一部でもあり得る。
 データの更新要求(上書・追加・削除)は、更新データを追記書きしシーケンシャルライトに変更する処理などにおいて、空き領域が十分にあれば、ストライプライトとなり性能が向上する。しかし、データ更新時は、旧データ位置が空きブロックに変更となる。したがって、空き領域を再利用する場合に、空き領域がランダムとなり、ランダムライトにより、入出力性能が劣化する。
 対策としてデフラグの適用がある。しかし、デフラグは、オブジェクトをメディア領域から読み出し(ランダムアクセス)し、そのデータをランダムとなった空きブロックへ書き込む(ランダムライト)必要があり、負荷が重く、システムの性能を低下させる。
 以下に説明するストレージシステムは、オンラインデフラグを実行する。オンラインデフラグは、ホストからの更新要求(ホスト更新要求)の処理におけるデフラグである。
 一例において、ストレージシステムは、ホスト更新要求時に、更新要求されたデータと、オブジェクト内で更新要求されたデータに連続しストライプを構成するデータを読み出し、それらを新規連続領域へ、ストライプ全更新ライトする。旧データ位置は、空きブロックとして再利用されるため、必ずストライプ分の連続空き領域を確保することができる。
 ここで、オブジェクト内のデータ位置は、ホストアドレスにより示される。本開示において、オブジェクト内でのデータ位置を論理的な位置と呼ぶことがある。同様に、オブジェクト内でホストアドレスが連続するデータを、論理的に連続したデータと呼ぶことがある。これに対して、データ保護プログラムが管理し、上位に見せる連続アドレスに格納されているデータを、物理的に連続するデータと呼ぶことがある。上述のように、データ保護プログラムが上位に見せるアドレスは、例えば、仮想LBA(論理ブロックアドレス)で示される。
 以下では、メディア領域におけるデータ保護プログラムが上位に見せるデータ格納単位領域を単にブロックと呼ぶ。
 一例において、ストレージシステムは、予め指定されているオブジェクトに対してのみ、ホスト更新要求時のオンラインデフラグを実行する。
 一例において、ストレージシステムは、オンラインデフラグと共に、オフラインデフラグを実行する。オフラインデフラグは、ホスト要求と非同期のデフラグである。オンラインデフラグがオブジェクトのランダムなデータ配置を減少させるため、オフラインデフラグの処理負荷が軽減し、システム入出力性能の低下が抑制できる。
 以下、実施例について説明する。
 図1は本実施例の計算機システムにおけるオンラインデフラグ処理の概要を模式的に示す図である。全体の計算機システムは、ストレージシステム100と、複数のホスト計算機14と、管理計算機15とを含む。これらはネットワーク2により接続されている。
 ホスト計算機14は、ストレージシステム100のリソースにアクセスし、業務を行う計算機である。ネットワーク2は、ホスト計算機14とストレージシステム100との間のユーザデータ及び管理計算機15と他の装置との間の管理データの通信用のネットワークであって、一例において、IPネットワークである。
 図1において、ストレージシステム100はオブジェクトを保持し、ホスト計算機14からそのオブジェクトへのアクセスを受け付ける。
 ストレージシステム100のメモリ領域103は、追記書きプログラムP200、デフラグ制御プログラムP300、データ保護プログラムP400、および空きブロック管理プログラムP310を格納している。デフラグ制御プログラムP300は、オンラインデフラグ処理P301とオフラインデフラグ処理P302とを含む。
 追記書きプログラムP200は、データを更新する要求(データ更新要求あるいは更新要求)により、更新されたデータを新規空き領域へ書き込む。その際、オンラインデフラグ処理P301および空きブロック管理プログラムP310と連携して、新規書き込み先を決定する。追記書きプログラムP200は、オブジェクトのユーザデータ及び管理情報(メタデータ)の双方の更新をトラッキングし、更新データをログに記録する。ログされる更新時点をチェックポイントと呼ぶ。そのため、追記書きプログラムP200は、過去のチェックポイントから一部又は全部のチェックポイントを選択し、その選択したチェックポイントの更新データを、スナップショットとして保存することで、ストレージシステムのスナップショットを自動かつ連続的に生成することができる。
 追記書きプログラムP200は、オブジェクトを更新するとき、オブジェクトの更新箇所に対応するメディア領域104上のブロックのデータに、更新データを上書きせずに、更新データをメディア領域104上の別のブロックに書き込む。これにより、任意チェックポイントのデータを復元することができる。なお、メモリ領域103上では、ファイルの更新箇所に対応するブロックのデータは、更新データで上書きされる。
 オンラインデフラグ処理301は、ホスト計算機14から更新要求を受信すると、当該更新要求の参照先オブジェクトのオブジェクト管理テーブルT200を参照し、更新を要求されたデータ(更新要求データあるいは更新データに加え、オブジェクト内で更新要求データに連続しストライプを構成するデータ(論理的に連続したデータ)をメディア領域104から読み出す。
 空きブロック管理P310は、ストレージ構成/データ保護適用情報T300を参照し、データの新規書き込み先のアドレスとして、旧データが格納れていたデバイスと同じデバイスになるように、空きブロックを割り当てる。
 データ保護プログラムP400は、ストライプを構成するデータから新規にパリティを算出し、データとパリティをメディア領域104へ書き込む。
 図1の例において、D1を構成するストライプは、D0、D1、PD01であるとする。そこに、ホストからD1を更新要求データD1*に更新する更新要求を受けると、ストレージシステム100は、オブジェクト管理テーブルT200を参照し、D1を含むストライプの構成がD0,D1であることを検知する。ストレージシステム100は、D0を読み込み、D0とD1*からパリティPD01*を新たに計算し、D0、D1、PD01をそれぞれ新規領域へ書き込む。
 ただし、デバイス(フラッシュパッケージ80)における仮想アドレスと実アドレスを対応づけた論理物理アドレス変換表を外部から制御できる場合には以下のように処理してもよい。ストレージシステム100は、空きブロック管理モジュールP310が新旧データの格納先が同じデバイスになるように、データの書き込み先として空きブロックを割り当てる。そして、ストレージシステム100は、更新データD1*については新たなデータ領域へ実際に書き込む。一方、更新されないデータ(未更新データ)D0については、ストレージシステム100は新アドレスG0へそのデータをコピーすることを指示するデータコピーコマンドを発行する。
 フラッシュパッケージ#0は、そのデータコピーコマンドを受領すると、仮想アドレスG0がD0が格納されている実アドレスを指すように論理物理アドレス変換表を更新し、それまで仮想アドレスG0が指していた実アドレスのデータG0を解放する。ここでは、フラッシュパッケージ#0は、D0のデータコピーを実行するとき、フラッシュパッケージ内での重複を排除する処理を適用し、フラッシュパッケージ内の仮想アドレスは2つのアドレスを持つ。このときその2つの仮想アドレスを同一の実アドレスに対応づけ、同一の実データを指すようにしてもよい。これにより、書き込みの処理が失敗したときに元の状態に戻すロールバックが可能になる。
 図2は本実施例の計算機システムにおけるオフラインデフラグ処理の概要を模式的に示す図である。
 オフラインデフラグ処理P302は、ホストからの要求による負荷が低いときに実施される。
 オフラインデフラグ処理P302は、オブジェクト管理テーブルT200を参照し、空きブロック管理プログラムP310と連携して、より連続した空き領域ができるように、データの移動を行う。オンラインデフラグにより、ストライプ単位でデータが並び、かつ、ストライプ単位で空き領域ができているため、オフラインデフラグは、ストライプ読み出し、およびストライプ書き出しにより実施することが可能である。
 さらに、デバイスの論理物理アドレス変換表を外部から制御できる場合には、オフラインデフラグ処理P302は、データとパリティを含めたデータ移動を指示するコマンドを発行する。コマンドを受領したフラッシュパッケージは、論理物理アドレス変換表の更新を行うだけで、オフラインデフラグを完了することができる。
 図2の例において、空き領域C0,C1,PC01へ、データD0,D1*とパリティPD01*を移動する場合には、フラッシュパッケージ内の仮想アドレスを入れ替えるだけで完了させる。このとき、実際にデータを移動したり、コピーしたりする必要がないので、高速なデフラグが可能である。
 本実施例によれば、オンラインデフラグ処理により、ストライプ単位でデータが連続に配置され、さらにストライプ単位の空き領域が確保できるため、IOサイズの大きいデータの書き込み処理を常にフルストライプライトにより実施することができ、ライト性能を向上することができる。
 更に、本実施例によれば、オンラインデフラグで物理的なデータ配置が連続となったデータが増えるので、オフラインデフラグ処理の負荷が軽減する。
 図3は、本実施例にかかるストレージ装置10の構成例を示すブロック図である。ストレージ装置10はストレージシステム100の処理部であり、図3にはその概略のハードウェア構成が示されている。ストレージ装置10は、管理計算機15、複数のホスト計算機14に、ネットワーク2を介して接続されている。ネットワーク2は、例えばWAN(Wide Area Network)、LAN(Local Area Network)、SAN(Storage Area Network)、インターネット、公衆回線または専用回線などであってよい。
 ストレージ装置10は、プロセッサ102、メモリ107、記憶デバイス106及びFE(FrontEnd)I/F105、およびBE(BackEnd)I/F106を含む。これらはストレージ装置10の各部は内部バス82を介して接続されている。BE I/F74は、スイッチ(SW)を介してフラッシュパッケージ80と接続されている。フラッシュパッケージ80を複数個集めたものをフラッシュパッケージグループ76と定義し、フラッシュパッケージグループ76が複数個あっても構わない。フラッシュパッケージグループ76間で冗長データを作成しても良い。
 プロセッサ102は、メモリ107に格納されているプログラムに従って、メモリ領域103に格納されている情報を使用して動作することで、ストレージ装置10の様々な機能部として動作する。例えば、プロセッサ102は、デフラグ制御を実行するデフラグ制御部、及び空きブロックの管理を実行する空きブロック管理部として動作する。
 メモリ107は、プログラム群350及び管理情報T250を格納している。プログラム群350は、デフラグ制御プログラム300、空きブロック管理プログラム310、追記書きプログラムP200、およびデータ保護プログラムP400を含む。管理情報T250は、プログラム群350が使用する情報を含む。管理情報T250は、オブジェクト管理テーブルT200、およびストレージ構成/データ保護管理情報T300を含む。
 さらに、メモリ107は、上記のようなストレージ装置10が動作するための情報を格納する他に、ホスト計算機14のユーザデータを一時的に格納するキャッシュメモリとしても用いられ、さらに、プロセッサ102のワークメモリとして用いることもある。メモリ107は、図1におけるメモリ領域103を提供する。メモリ107には、DRAM等の揮発性半導体メモリまたはStorage Class Memory等の不揮発性半導体メモリが使用され、フラッシュパッケージ80よりも高速なデータアクセスが可能である。
 説明の便宜上、一例として、プログラム群350及び管理情報250はメモリ領域103内に示されているが、典型的には、プログラム群350及び管理情報250は、記憶デバイス80からメモリ107のメモリ領域103にロードされる。
 記憶デバイスであるフラッシュパッケージ80は、所望の機能を実現するために必要なプログラム、管理情報、およびメタデータを格納する他、本実施例において、ホスト計算機14のユーザデータを格納する。フラッシュパッケージ80は、メディア領域104を提供する。例えば、フラッシュパッケージ80は、本実施例では不揮発性の非一時的記憶媒体を備える記憶デバイスであり、ネットワーク2を介して接続されてもよい。
 デフラグ制御プログラム300は、上述のように、ホストからI/O要求を受領したときにデフラグ(オンラインデフラグ)を実行するオンラインデフラグ処理モジュール301と、ホストからのI/O要求と非同期にデフラグ(オフラインデフラグ)を実行するオフラインデフラグ処理モジュール302を含む。
 空きブロック管理プログラム310は、ユーザデータを格納するメディア領域104(記憶デバイス106)のデータ格納単位であるブロックの使用/未使用を管理する。空きブロック管理プログラム310は、空きブロックのメディア領域内アドレスを示す空きブロック管理情報を保持し、メディア領域104におけるデータ更新に応じて当該管理情報を更新する。
 デフラグ制御プログラム300は、空きブロック管理プログラム310と連携して、メディア領域から読み出したデータの書き出し先として、物理的に連続した空き領域を決定する。空きブロック管理プログラム310は、デフラグが適用された後は、新たな領域に書き出されたデータが格納されていたブロックを空きブロックとして管理する。
 このように、ストレージ装置10ば、プロセッサ102とメモリ107を有し、メモリ107は、データ保護の単位となるストライプのデータおよびそのデータの誤り検出を可能にする冗長コードがどのデバイスのどの領域に格納されているか管理するストレージ構成/データ保護適用情報T300を記憶し、プロセッサ102は、データ更新を実行するとき、ストレージ構成/データ保護適用情報T300を参照し、更新するデータを含むストライプに含まれているデータを連続した領域に配置し、かつ、データ更新を実行した後の空き領域がストライプの単位でデータを連続して配置できる空き領域となるように、オンラインデフラグを行う。これによれば、データがストライプ単位で連続した領域に書き込まれ、かつ、ストライプのデータが連続して配置できる空き領域が確保されるので、その後のデフラグにおいて、データの読み出しおよび書き込みを、ストライプ単位で、連続した領域で行うことができ、I/O要求の処理性能が低下するのを抑制しつつ、デフラグを高速化することである。
 図4は、実施例1のフラッシュパッケージのブロック図である。例えば、ストレージ装置10のキャッシュメモリに格納されたライトデータは、フラッシュパッケージ80のFE I/F90からデータ転送部制御部94を介し、パッケージバッファ96へ一旦格納される。その後、BE I/F98を介し、フラッシュメモリのチップであるFMチップ180へ書き込まれる。その際のフラッシュパッケージ80内の処理は、パッケージプロセッサ92がパッケージメモリ99内のフラッシュパッケージ制御プログラム104の下で実施する。パッケージプロセッサ92は必要に応じて、パッケージ情報106、FMチップ情報108、物理空間を管理する実ブロック情報110、論理空間を管理する仮想ブロック情報112、および物理空間と論理空間の対応を管理する論物変換マップ(論物変換表)114の管理情報にアクセスする。FMチップ180以外をフラッシュパッケージコントローラ116と定義する。
 図5は、ストレージ構成/データ保護情報T300を構成するPG管理情報70を説明するための図である。図6Aは、ストレージ構成/データ保護情報T300を構成する論理VOL管理情報72を説明するための図である。図6Bは、オブジェクト管理テーブルT200を説明するための図である。
 図5においては、例としてPG#0管理情報120の内部を示すが、ストレージシステム100には複数のPG(Parity Group)があり、それぞれにPG#0管理情報120と同様の管理情報がある。
 PG#0管理情報120には、使用ドライブ情報122とストライプグループ管理132が含まれている。使用ドライブ情報122は、当該PGで作成された論理Volume(VOL)#124と、対応するRAIDレベルを示すRAID構成126、構成する物理ドライブ#128、及び各物理ドライブ#128の物理開始アドレス130を管理している。ストライプグループとは、PG内の各記憶媒体から、ある一定単位ずつ集めてグループ化した管理単位である。ストライプグループ管理132は、当該PGの論理VOL124内の各ストライプグループ#136に関して、冗長データが格納されているドライブ#を管理する。冗長データの数によってドライブの管理情報を変更しても構わない。例えば、RAID5の場合は、P Parity格納ドライブ#138の1つを管理するが、RAID6の場合は、加えてQ Parity格納ドライブが必要である。図5では、一例としてRAID5(3D+1P)の場合を記載しているが、本発明ではRAID4やRAID6など他のRAIDレベルでも構わない。以降、一例としてRAID5のケースで説明する。
 次に図6Aを参照して論理VOL管理情報72について説明する。論理VOL管理情報72は、ストレージシステム100内で定義された全ての論理VOL#140に関し、各論理VOL#に対応する論理開始アドレス142とPG#(番号)144を管理している。
 次に図6Bを参照して、オブジェクト管理テーブルT200について説明する。例えば、オブジェクト管理テーブルT200は、T202またはT204のどちらかの形式をとっている。
 オブジェクト管理テーブルT200がT202の形式であれば、CheckPoint番号C10と仮想アドレスC12が含まれている。先頭からあるホストアドレスまでの個数分数えたエントリに格納された仮想アドレスは、そのホストアドレスに対応するデータが格納されている仮想アドレスとなる。例えば、ホストアドレスが4KB単位で構成されているとき、先頭から4個目のエントリは、ホストアドレス16KBを表す。また、そのホストアドレスのデータが更新されたときのチェックポイント番号をC10に、その仮想アドレスをC12に格納する。
 オブジェクト管理テーブルT200がT204の形式であれば、チェックポイント番号C10と仮想アドレスC12に加えて、長さC14を含む。これは仮想アドレスC12から長さC14までが連続した領域であることを示す。データを連続して格納できれば、メタデータ内のエントリ数を削減でき、更にデータに対するメタデータの割合が減少し、メタデータをキャッシュしたときのヒット率が向上する。
 本実施例では、空きブロックは、ビットマップで管理する。例えば、1bitが各ブロックの状態を表し、そのビットが0であればFreeであり、1であればUsedである等である。ここでは今はブロックごとに2つの状態しかないが、もし各ブロックの状態を増やす場合には、ブロックごとに複数のBit(2Bit等)を空きブロックの状態を示すのに使用してもよい。
 図7は、本実施例におけるフラッシュパッケージ80が保持する情報を示す図である。フラッシュパッケージ80が保持する情報として、実ブロック情報110、仮想ブロック情報112、及び、論物変換マップ114が含まれている。
 実ブロック情報110は、フラッシュパッケージ80内の物理領域を均一なサイズに区切った空間である実ブロックを管理するための情報である。各実ブロックにはIDが付与されている。実ブロックID152には、各実ブロックのIDの一覧と、各IDに対応する実アドレスが格納されている。また、各実ブロックにはそれぞれに空き容量があるものがある。実ブロック内空き容量154は、各実ブロックのIDに対応づけて各実ブロックの空き容量の値が格納されている。また、空き実ブロックキュー156は、どの実ブロックが空き容量を有するかという情報を含む。空き実ブロックキュー156では、空き容量を有する実ブロック(空き実ブロック)のIDをキューにより管理している。図7には、一例として、空き実ブロックキュー156は、空き実ブロックポインタ158につづき、空き実ブロックID160(ID=0)と、空き実ブロックID162(ID=1)がエンキューされている。
 仮想ブロック情報112は、フラッシュパッケージ80内の論理領域を均一なサイズに区切った空間である仮想ブロックを管理するための情報である。各仮想ブロックにはIDが付与されている。仮想ブロックID166として、各仮想ブロックのIDの一覧と、各IDの仮想ブロックの仮想アドレスとが対応づけて格納されている。仮想ブロックのサイズと実ブロックのサイズは同じであるが、仮想ブロックIDの個数は実ブロックIDの個数以上である。仮想ブロックデータ格納量168は、論理領域として格納可能なデータ量及び現状の使用量を示す。
 論物変換マップ170は、仮想ブロックを表す仮想アドレス172と、実ブロックを表す実アドレス174と対応関係を管理するための情報である。
 図8Aは、デフラグ制御プログラムP300が発行するデフラグコマンドの一例を示す図である。図8Bは、データ保護プログラムP400が発行するデフラグコマンドの一例を示す図である。
 デフラグコマンドは、デバイスの論理物理アドレス変換表を外部から制御できる場合にストレージがデバイスに対して発行する特殊コマンドである。図8Aのデフラグコマンド272は、デフラグ制御プログラムP300が作成し、データ保護プログラムP400に送る。このデフラグコマンド272は、デフラグID273、種別274、移動元仮想アドレス275、および移動先仮想アドレス276を含んでいる。
 デフラグコマンド282は、データ保護プログラムP400がデバイス(フラッシュパッケージ80)に送る。デフラグコマンド282は、デフラグ制御プログラムP300が作成したデフラグコマンド272の移動元仮想アドレス275および移動先仮想アドレス276を、データ保護プログラムP400が物理アドレスに変換したものである。デフラグコマンド282は、デフラグID283、種別284、移動元物理アドレス285、および移動先物理アドレス286を含んでいる。
 デフラグコマンドは、移動元と移動先を1組として単一のレコードでひとつのコマンドとしてもよいし、複数のレコードをリストにして1つのコマンドとしてもよい。デフラグコマンド282における物理アドレスはデバイス内においては仮想アドレスとなる。デバイス内では、その仮想アドレスに対応する実アドレスにデータが格納される。
 デフラグコマンド272とデフラグコマンド282には共通点が多いため、図8Bに示されたデフラグコマンド282の方を用いて説明する。デフラグID283は、デフラグを識別すためのIDである。種別284は、デフラグの種別を示す。デフラグの種別には、コピー、移動、およびZERO書き込みがある。種別がコピーのデフラグの場合、デバイス内の論理物理アドレス変換表において、移動元物理アドレス285(デバイス内仮想アドレス)に対応した実アドレスのデータを移動先物理アドレス286(デバイス内仮想アドレス)の実アドレスへコピーする。種別が移動のデフラグの場合、デバイス内の論理物理アドレス変換表において、移動元物理アドレス285と移動先物理アドレス286が指す実データを入れ替える。種別がZERO書き込みのデフラグの場合、デバイス内の論理物理アドレス変換表において、移動先物理アドレス286がZEROであるという処理を行う。例えば、移動先物理アドレス286(デバイス内仮想アドレス)にZEROであることを示すビットを立ててもよいし、その移動先物理アドレス286の実アドレス内のデータをZEROにしてもよい。そのため、デバイスへ読み出し要求が来た読み出し対象の物理アドレスに、このZERO書き込みの処理がされている場合、デバイスは読み出し要求に対してZERO埋めデータを返す。これにより、デバイス内論理物理アドレス変換表の処理を完了する。
 図9は、オンラインデフラグ処理の概要を示すフローチャートである。
 追記書きプログラムP200は、ホストからの更新要求もしくはシステム内部で発生する更新要求を受け付ける(ステップS12)。追記書きプログラムP200は、ホストからの更新要求を受け付けた場合、一度、更新データをメモリ上にキャッシュする(ステップS14)。なお、メモリがバッテリバックアップされたDRAM、もしくは不揮発性メモリである場合は、追記書きプログラムP200は、更新データを他ノードへ複製した後にホストに対して更新要求への応答を送る。その場合、ステップS16以降の処理はホストからの更新要求とは非同期に実施される。
 デフラグ制御プログラムP300のオンライン処理P302は、ストレージ構成/データ保護適用情報T300を参照してデータ保護レベルを確認し(ステップS16)、そのデータ保護レベルに基づいてデータの更新をフルストライプライトにより行えるか否か判定する(ステップS18)。デフラグ制御プログラムP200は、フルストライプライトとなる場合にはステップS22へ進み、フルストラインプライトとならない場合はステップS19へ進む。
 フルストライプライトとならない場合は、オンライン処理P302は、ホストからの更新要求にて更新データとして指定されたアドレスを基に、オブジェクト管理テーブルT200を参照して、その更新データを含むストライプを構成する未更新データの仮想アドレスを確認し(ステップS19)、その仮想アドレスを用いて未更新データをメディアから読み出す(ステップS20)。これにより、ストライプを構成する全てのデータ揃うので、オンライン処理P302はステップS22へ進む。
 ステップS22において、追記書きプログラムP200は、空きブロック管理プログラムP310に、データへの空きブロックの割り当てを依頼する。空きブロック管理プログラムP310は、ストレージ構成/データ保護適用情報T300を参照し、書き出し前と書き出し後のデータの配置先が同じデバイスとなる空き仮想アドレスをビットマップから探し、ビットマップにおけるその仮想アドレスを使用中に変更し、それぞれのデータに割り当てる。
 追記書きプログラムP200は、割り当てられた仮想アドレス情報とデータを、データ保護プログラムP400へ引き継ぐ。このときデータ保護プラグラムP400は、パリティの生成を行い、仮想アドレスを物理アドレスへ変換し、パリティにも物理アドレスを割り当てる(ステップS24)。
 更に、追記書きプログラムP200は更新要求の処理がフルトライプライトとなるか否か判定する(ステップS26)。追記書きプログラムP200は、更新要求がフルストライプライトの場合はステップS36へ進み、更新要求がフルストライプライトライトでない場合はステップS28へ進む。
 ステップS28において、データ保護プログラムP400は、デバイスが外部からの論理物理アドレス変換表の制御が可能かを判定する。論理物理アドレス変換表を外部から制御することが可能か否かは管理者が管理計算機15に設定してもいいし、ストレージ装置10が自動で検知してもよい。
 論理物理アドレス変換表を外部から制御不可の場合、データ保護プログラムP400は、パリティを含む更新データとその周辺の未更新データの書き込みを行う(ステップS30)。一方、論理物理アドレス変換表を外部から制御可の場合は、データ保護プログラムP400は、まずパリティを含む更新データを書き込み(ステップS32)、更に、未更新データの部分については、デバイスのデフラグコピーコマンドを作成し、そのコマンドを発行する(ステップS34)。もし、ストライプを構成するデータが足りずZEROデータを代用している場合は、デフラグZEROコマンドを作成して、コマンドを発行する。更に、デバイス側では、後述する論理物理アドレス変換表の更新処理を行う(ステップS100)。
 追記書きプログラムP200は、データの書き込みが成功したことを確認すると、オブジェクト管理テーブルT200に対して、割り当てられたアドレスについての更新を行う(ステップS36)。また、追記書きプログラムP200は、更新データの旧仮想アドレスを解放ブロックリストへ登録する(ステップS38)。解放ブロックリスト(不図示)には、デフラグやチェックポイントの増加によって解放可となったメディア領域104のブロックアドレスが示されている。あるチェックポイントが作成されるとき、解放ブロック回収処理モジュール(不図示)は、その解放ブロックリストにあるアドレスをチェックポイントと結び付け、そのアドレスが示すメディア領域104に更新データを格納してもよい。その構成において、解放ブロックリストは、チェックポイント毎に作成される。
 また、ステップS36およびステップS38では、ステップS12で受け付けたシステム内部の更新要求の更新データの書き出し処理が行われる。
 上記ステップS22のように、プロセッサ102は、オンラインデフラグにおいて、更新するデータをそのデータがデータ更新前に配置されていたデバイスと同じデバイスの空き領域に配置する。これにより、オンラインデフラグにおけるデータの更新を同一デバイス内にすることでデータ更新に要する時間を短縮することができる。
 上記ステップS32~S100のように、プロセッサ102は、更新されるデータについては、冗長コードの演算を伴って更新後のデータを新たな領域に書き込み、更新されないデータについては、冗長コードの演算を伴わないデータコピーを行う。これにより、更新されるデータのみを新たに書き込み、更新されないデータは、冗長コードの演算を伴わないデータコピーにより処理するので、オンラインデブラグを伴うデータ更新を短時間で実現することができる。
 上記ステップS100のように、デバイスには、仮想アドレスと実アドレスを対応づける論理物理アドレス変換情報(論物変換マップ114)が書き換え可能に保持されており、プロセッサ102は、データコピーを、論理物理アドレス変換情報を更新することにより実行する。これにより、データコピーを論理物理アドレス変換表の更新により実現するので、オンラインデフラグを伴うデータ更新を短時間で実行することができる。
 図10は、オフラインデフラグ処理を示すフローチャートである。オフラインデフラグは、ホストからの要求による負荷が低いときに実行される。
 オフラインデフラグ処理P302は、空きブロック管理プログラムP310から空きブロックの状態を取得する(ステップS52)。次に、オフラインデフラグ処理P302は、オブジェクト管理テーブルT200に基づいて、メディア領域104に格納されているオブジェクトのリストを生成する(ステップS54)。さらに、オフラインデフラグ処理P302は、そのリストの中からオブジェクトを選択する(ステップS56)。
 そして、オフラインデフラグ処理P302は、その選択したオブジェクトのオブジェクト管理テーブルT200を参照し(ステップS58)、そのオブジェクト管理テーブルT200に登録されている仮想アドレスで、データの移動により、より大きな空きブロックができる仮想アドレスがあるか否かを確認する(ステップS60)。データの移動により、より大きな空きブロックができるとは、空きブロックの周辺にある仮想アドレスが、オブジェクト管理テーブルT200に登録されている仮想アドレスの中から見つかることを指す。オンラインデフラグが適用されている場合は、ストライプ列分だけ離れた仮想アドレスは、近接したアドレスと判断する。より大きな空きブロックができる仮想アドレスが存在しない場合、オフラインデフラグ処理P302はステップS74に進む。より大きな空きブロックができる仮想アドレスが存在した場合、オフラインデフラグ処理P302はステップS62へ進む。
 ステップS62において、オフライン処理P302は、デバイスの論理物理アドレス変換表が外部から制御可能であるか否か判断し、可能な場合はステップS64へ進み、不可の場合はステップS66へ進む。
 ステップS64において、オフライン処理P302は、種別が移動のデフラグコマンド272を作成し、データ保護プログラムP400へ、そのデフラグコマンド272を渡す。データ保護プログラムP400は、そのデフラグコマンド272を、パリティも含めたデフラグコマンド282に変換し、そのデフラグコマンド282を発行する。デバイス側は、そのデフラグコマンド282を受領すると、後述するデバイス内の論理物理アドレス変換表を更新する処理を行う(ステップS100)。
 ステップS66において、オフライン処理P302は、デフラグの対象となっているデータを含むストライプを構成するデータの仮想アドレスをリードするようにデータ保護プログラムP400に指示する。データ保護プログラムP400は、その仮想アドレスを物理アドレスへ変換して、読み出し処理を行う。オフライン処理P302は、読み出したデータを、空きブロックの仮想アドレスへ、フルストライプ書き出し処理を行う。このとき、データ保護プログラムP400は、パリティ計算を行い、仮想アドレスを物理アドレスへ変換して、書き出し処理を行う(ステップS68)。
 オフライン処理P302は、データの移動に伴い、オブジェクト管理テーブルT200を更新する(ステップS70)。更に、オフライン処理P302は、空きブロック管理プログラムP310に、データ移動先の仮想アドレスの状態を使用中に、データ移動前の仮想アドレスの状態を空きブロックに変更するように指示する。空きブロック管理プログラムP310は、指示に従ってビットマップを更新する。更に、オフライン処理P302は、ステップS52で得た空きブロックの状態をデータの移動に合わせて更新する(ステップS72)。
 更に、オフライン処理P302は、連続した空きブロックを十分に確保することができたか否かを判断する(ステップS74)。連続した空きブロックを十分に確保できた場合、オフライン処理P302は処理を完了する。そうでない場合は、オフライン処理P302はステップS76へ進む。ステップS73においては、オフライン処理P302は、リストに次のオブジェクトが残っているか否か判定する。次のオブジェクトが存在する場合、オフライン処理P302はステップS56に戻り、それ以降の処理を繰り返す。次のオブジェクトが存在しない場合、オフライン処理P302は処理を完了する。
 上記ステップS64~S100のように、データの移動が要求され、プロセッサ102は、オフラインデフラグにおいて、データの移動を論理物理アドレス変換情報を更新することにより実行する。これにより、データ移動におけるオフラインデフラグを論理物理アドレス変換情報の更新により実現するので、オフラインデフラグを短時間で実行することができる。
 また、上記ステップS66~S68のように、プロセッサ102は、オフラインデフラグを、ストライプ単位で読み出すストライプリードと、ストライプ単位で書き込むストライプライトにより実行する。ストライプリードとストライプライトにより効率よくオフラインデフラグを実行するので、オフラインデフラグを短時間で実行することができる。
 図11は、デフラグコマンドを受け付けたデバイス側の処理を示すフローチャートである。
 フラッシュパッケージ制御プログラム104は、デフラグコマンドを受信すると、その解析を行う(ステップS102)。その後、フラッシュパッケージ制御プログラム104は、デフラグコマンドのコマンド種別を判定する(ステップS104)。
 デフラグコマンドの種別がコピーであれば、フラッシュパッケージ制御プログラム104は、コマンドに記された移動先アドレスに記されるデバイス内の仮想アドレスが指す実アドレスのデータを削除する(ステップS106)。その後、フラッシュパッケージ制御プログラム104は、デバイス内の移動元仮想アドレスが指す実アドレスで、移動先仮想アドレスの実アドレスを更新する(ステップS108)。デバイス内では、移動元および移動先の双方の仮想アドレスが同じデータを指す重複排除処理を行うことにしてもよい。その場合、同一の実アドレスに対して複数の仮想アドレスからリンクが設定され、同一のデータが複数の実アドレスに存在する重複状態が排除される。重複排除状態の管理においては、複数の実アドレスからリンクが設定されたデータの削除が要求されるとその度にリンク数が減少していき、リンク数がゼロになったときに実際にデータの削除が行われる。
 ステップS104の判定でデフラグコマンドの種別がゼロ(ZERO書き込み)であった場合、フラッシュパッケージ制御プログラム104は、デバイス内の移動先仮想アドレスに対してデータをゼロにする処理を行う(ステップS110)。例えば、その移動先仮想アドレスにZEROであることを示すビットを立ててもよいし、実アドレス内のデータを実際にZEROにしてもよい。この仮想アドレスのデータがZEROであることを示す処理がされている場合、デバイスはその仮想アドレスを指定した読み出し要求が来た場合、ZEROで埋められたデータを返すこととなる。これによりデバイス内論理物理アドレス変換表の処理が完了する。
 ステップS104の判定でデフラグコマンドの種別が移動であった場合、フラッシュパッケージ制御プログラム104は、デバイス内の移動元の仮想アドレスの実アドレスと移動先の仮想アドレスの実アドレスとを入れ替える(ステップS112)。
 なお、デフラグコマンドに複数のレコードが含まれている場合、フラッシュパッケージ制御プログラム104は、それぞれのレコードの個々のコマンドを順次処理するように、ステップS104以降の処理を繰り返す(ステップS114)。次のデフラグコマンドが存在しなければ、フラッシュパッケージ制御フプログラム104は処理を終了する。
 上記ステップS106-S108のように、プロセッサ102は、論理物理アドレス変換情報を、同一の実アドレスのデータを複数の仮想アドレスに対応させることにより同一のデータの重複を排除するように、更新することにより前記データコピーを実現する。これにより、論理物理アドレス変換表において、複数の仮想アドレスを1つの物理アドレスに対応させることにより、メモリ領域を効率よく利用して空き領域を増やすことができる。
 上記ステップS112のように、プロセッサ102は、論理物理アドレス変換情報において、移動元の仮想アドレスに対応づける実アドレスと、移動先の仮想アドレスに対応づける実アドレスとを入れ替えることにより、データの移動を実現する。これにより、データ移動を論理物理アドレス変換情報の実アドレスの入れ替えにより実現するので、オフラインデフラグを短時間で実行することができる。
 また、プロセッサ102は、オフラインデフラグにおいて、データの冗長コードの移動を論理物理アドレス変換情報を更新することにより実行する。これにより、オフラインデフラグの冗長コードの移動を論理物理アドレス変換情報の更新により実現するので、オフラインデフラグを短時間で実行することができる。
 図12は、解放ブロック回収処理モジュールの処理を示すフローチャートである。ストレージシステム100は、チェックポイントとブロックアドレスとを関連づける、不図示のチェックポイント管理情報を保持している。
 解放ブロック回収処理モジュール(不図示)は、チェックポイント管理情報において、一番古いチェックポイントを探索し、選択する(ステップS501)、選択した一番古いチェックポイントが、(最新チェックポイント-維持チェックポイント数N)以前のチェックポイントであるか否か判定する(ステップS502)。維持チェックポイント数は、現在処理している最新のチェックポイントからどれだけ過去に遡ってチェックポイントを維持するかを示す情報である。ステップS502の処理は、選択した一番古いチェックポイントが維持すべきチェックポイントであるか否かを判定していることとなる。
 なお、維持チェックポイント数にはスナップショットを含まない。一部のチェックポイントのデータは、スナップショットとして選択され、保存される。スナップショットとして選択されるチェックポイントは管理計算機15から指定され得る。
 最新のチェックポイントから、スナップショットを除いた維持チェックポイント数までのデータが維持される。より過去のチェックポイントのデータを格納するブロックは後述するように解放される。
 解放ブロック回収処理モジュールは、チェックポイント毎に解放ブロックリスト510を読み出し、解放処理を行う。解放処理にはトリム処理などが含まれる。解放処理は、(最新チェックポイント―維持チェックポイント数N)のチェックポイントまで行われる。
 ステップS502の判定結果が否定的の場合(S502:NO)、解放ブロック回収処理モジュールは、処理を終了する。ステップS502の判定結果が肯定的の場合(S502:YES)、解放ブロック回収処理モジュールは、選択チェックポイントの解放ブロックリスト510を読み出す(ステップS503)。続いて、解放ブロック回収処理モジュールは、解放ブロックの解放処理(トリム処理)を行う(ステップS504)。ただし、デバイスがトリム処理に対応していない場合、またはトリム処理を行う設定がされていない場合ステップS504をスキップする。続いて、空きブロック管理プログラムP310は、解放ブロックリスト510の解放ブロックアドレスを、空きブロックへ変更し(ステップS505)、ステップS501に戻る。以上の処理により、使用されていないブロックを解放し、記憶領域の効率的な利用を実現できる。
 以上の実施例の処理を以下のように整理することもできる。図3のメモリ107は、データ保護の単位となるストライプのデータおよび該データの誤り検出を可能にする冗長コードがどのデバイスのどの領域に格納されているか管理するストレージ構成/データ保護適用情報T300を記憶する。プロセッサ102は、データ更新を実行するとき、ストレージ構成/データ保護適用情報T300を参照し、更新するデータを含むストライプに含まれているデータを連続した領域に配置し、かつ、データ更新を実行した後の空き領域がストライプの単位でデータを連続して配置できる空き領域となるように、論理物理アドレス変換情報の更新を伴うオンラインデフラグを行う。また、プロセッサ102は、オフラインデフラグを実行するとき、論理物理アドレス変換情報を更新することによりデータを移動する。オンラインデフラグまたはオフラインデフラグにおいて要求される処理には、データをコピーする処理と、データを移動する処理と、データをゼロにする処理とがある。そして、データをコピーする処理において、プロセッサ102は、移動先の仮想アドレスに対応する実アドレスを、移動元の仮想アドレスに対応する実アドレスのデータにより更新する。データを移動する処理において、プロセッサ102は、移動元の仮想アドレスに対応する実アドレスと移動先の仮想アドレスに対応する実アドレスのデータを入れ替える。データをゼロにする処理において、プロセッサ102は、移動先の仮想アドレスのデータをゼロにする。
 以下、上述した実施例のより具体的な構成例について説明する。
 図13は、ストレージシステムの構成例を示すブロック図である。
 本構成例では、ストレージシステム100がサーバ500とブロックストレージ600と複数の記憶デバイス管理部700、701、702を有している。サーバ500とブロックストレージ600の間はネットワーク4で接続されている。ネットワーク4は一例としてSAN(Storage Area Network)である。サーバ500は、ファイルサーバであり、プロセッサ512、メモリ503、ネットワークインタフェース515、およびストレージインタフェース519を有し、ストレージインタフェース519を介してネットワーク4に接続する。ブロックストレージ600は、プロセッサ612、メモリ603、ストレージインタフェース619、ネットワークインタフェース615、および記憶デバイスモジュールインタフェース629を有し、ストレージインタフェース619を介してネットワーク4に接続する。サーバ(ファイルサーバ)500とブロックストレージ600は、ユーザデータの更新及び参照のため、ネットワーク4を介してコマンド及びユーザデータを相互に送受信する。
 図1のメモリ領域103に格納されているデータ保護プログラムP400はプログラム群P350bとしてブロックストレージ600に配置され、それ以外のプログラム群およびテーブル群がプログラム群P350aおよび管理情報T250aとしてサーバ500に配置されている。サーバ500に配置されるプログラム群350aには、追記書きプログラムP200、デフラグ制御プログラムP300、空きブロック管理プログラムP310が含まれる。また、サーバ500に格納されるテーブル群T250aには、オブジェクト管理テーブルT200およびストレージ構成/データ保護適用情報T300が含まれる。サーバ500は、プロセッサ512が管理情報T250aを利用しながらプログラム群P350aを実行する。ブロックストレージ600は、プロセッサ612が管理情報T250bを利用しながらプログラム群P350bを実行する。
 なお、図13にはファイルストレージの例を示したが、ファイルストレージの行う処理をアプリケーションに置き換えても同様である。
 図14は、ストレージシステムの他の構成例を示すブロック図である。ストレージシステム100がサーバ500および記憶デバイス管理部700、701,702を有している。サーバ500は、図13に示した構成例と同様、プロセッサ512、メモリ503、ネットワークインタフェース515、およびストレージインタフェース519を有している。プロセッサ512がメモリ503上の管理情報T250を利用してプログラム群P350を実行する。
 図1に示したデータ保護プログラムP300と、それ以外のプログラム群とがアプリケーションプログラムにより構成されている。データ保護プログラムP300以外のプログラム群に相当するアプリケーションは例えばデータベースである。データ保護プログラムP300はそのアプリケーションに組み込まれていてもよいし、別のアプリケーションとして構成されていてもよい。
 以上、ホスト装置からのI/O性能を維持したままデフラグ処理を高速化する本発明について、実施例に即して説明したが、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
 また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード等の記録媒体に置くことができる。
10…ストレージ装置、100…ストレージシステム、102…プロセッサ、103…メモリ領域、104…フラッシュパッケージ制御プログラム、106…記憶デバイス、107…メモリ、116…フラッシュパッケージコントローラ、14…ホスト計算機、15…管理計算機、180…FMチップ、2…ネットワーク、4…ネットワーク、500…サーバ、503…メモリ、512…プロセッサ、515…ネットワークインタフェース、519…ストレージインタフェース、600…ブロックストレージ、603…メモリ、612…プロセッサ、615…ネットワークインタフェース、619…ストレージインタフェース、629…記憶デバイスモジュールインタフェース、700…記憶デバイス管理部、76…フラッシュパッケージグループ、80…フラッシュパッケージ、82…内部バス、92…パッケージプロセッサ、94…データ転送部制御部、96…パッケージバッファ

Claims (13)

  1.  データを保存するデバイスと、
     前記デバイスによるデータの保存を管理する計算機とを有し、
     前記計算機がプロセッサとメモリを有し、
     前記メモリは、データ保護の単位となるストライプのデータおよび該データの誤り検出を可能にする冗長コードがどのデバイスのどの領域に格納されているか管理するストレージ構成/データ保護適用情報を記憶し、
     前記プロセッサは、データ更新を実行するとき、前記ストレージ構成/データ保護適用情報を参照し、更新するデータを含むストライプに含まれているデータを連続した領域に配置し、かつ、前記データ更新を実行した後の空き領域がストライプの単位でデータを連続して配置できる空き領域となるように、オンラインデフラグを行う、
    ストレージシステム。
  2.  前記プロセッサは、前記オンラインデフラグにおいて、前記更新するデータを該データが前記データ更新前に配置されていたデバイスと同じデバイスの空き領域に配置する、
    請求項1に記載のストレージシステム。
  3.  前記プロセッサは、前記更新されるデータについては、冗長コードの演算を伴って更新後のデータを新たな領域に書き込み、更新されないデータについては、冗長コードの演算を伴わないデータコピーを行う、請求項2に記載のストレージシステム。
  4.  前記デバイスは、仮想アドレスと実アドレスを対応づける論理物理アドレス変換情報を書き換え可能に保持し、
     前記プロセッサは、前記データコピーを、前記論理物理アドレス変換情報を更新することにより実行する、
    請求項3に記載のストレージシステム。
  5.  前記プロセッサは、前記論理物理アドレス変換情報を、同一の実アドレスのデータを複数の仮想アドレスに対応させることにより前記同一のデータの重複を排除するように、更新することにより前記データコピーを実現する、
    請求項4に記載のストレージシステム。
  6.  前記デバイスは、仮想アドレスと実アドレスを対応付ける論理物理アドレス変換情報を書き換え可能に保持し、
     前記プロセッサは、オフラインデフラグにおいて、前記データの移動を前記論理物理アドレス変換情報を更新することにより実行する、
    請求項3に記載のストレージシステム。
  7.  前記プロセッサは、前記論理物理アドレス変換情報において、移動元の仮想アドレスに対応づける実アドレスと、移動先の仮想アドレスに対応づける実アドレスとを入れ替えることにより、前記データの移動を実現する、
    請求項6に記載のストレージシステム。
  8.  前記プロセッサは、オフラインデフラグにおいて、前記データの冗長コードの移動を前記論理物理アドレス変換情報を更新することにより実行する、
    請求項6に記載のストレージシステム。
  9.  前記プロセッサは、オフラインデフラグを、ストライプ単位で読み出すストライプリードと、ストライプ単位で書き込むストライプライトにより実行する、請求項3に記載のストレージシステム。
  10.  仮想アドレスと実アドレスを対応付ける論理物理アドレス変換情報を書き換え可能に保持するデバイスへのデータの保存を管理する計算機であって、
     プロセッサとメモリを有し、
     前記メモリは、データ保護の単位となるストライプのデータおよび該データの誤り検出を可能にする冗長コードがどのデバイスのどの領域に格納されているか管理するストレージ構成/データ保護適用情報を記憶し、
     前記プロセッサは、データ更新を実行するとき、前記ストレージ構成/データ保護適用情報を参照し、更新するデータを含むストライプに含まれているデータを連続した領域に配置し、かつ、前記データ更新を実行した後の空き領域がストライプの単位でデータを連続して配置できる空き領域となるように、前記論理物理アドレス変換情報の更新を伴うオンラインデフラグを行い、オフラインデフラグを実行するとき、前記論理物理アドレス変換情報を更新することによりデータを移動し、
     前記オンラインデフラグまたは前記オフラインデフラグにおいて要求される処理には、データをコピーする処理と、データを移動する処理と、データをゼロにする処理とがあり、
     前記データをコピーする処理において、前記プロセッサは、移動先の仮想アドレスに対応する実アドレスを、移動元の仮想アドレスに対応する実アドレスのデータにより更新し、
     前記データを移動する処理において、前記プロセッサは、移動元の仮想アドレスに対応する実アドレスと移動先の仮想アドレスに対応する実アドレスのデータを入れ替え、
     前記データをゼロにする処理において、前記プロセッサは、移動先の仮想アドレスのデータをゼロにする、
    計算機。
  11.  プロセッサとメモリを有する計算機によるストレージ制御方法であって、
     前記メモリが、データ保護の単位となるストライプのデータおよび該データの誤り検出を可能にする冗長コードがどのデバイスのどの領域に格納されているか管理するストレージ構成/データ保護適用情報を記憶し、
     前記プロセッサが、
     データ更新を実行するとき、前記ストレージ構成/データ保護適用情報を参照し、
     更新するデータを含むストライプに含まれているデータを連続した領域に配置し、かつ、前記データ更新を実行した後の空き領域がストライプの単位でデータを連続して配置できる空き領域となるように、オンラインデフラグを行う、
    ストレージ制御方法。
  12.  前記プロセッサは、前記オンラインデフラグにおいて、前記更新するデータを該データが前記データ更新前に配置されていたデバイスと同じデバイスの空き領域に配置する、
    請求項11に記載のストレージ制御方法。
  13.  前記プロセッサは、前記更新されるデータについては、冗長コードの演算を伴って更新後のデータを新たな領域に書き込み、更新されないデータについては、冗長コードの演算を伴わないデータコピーを行う、請求項12に記載のストレージ制御方法。
PCT/JP2016/066716 2016-06-06 2016-06-06 ストレージシステム、計算機、およびストレージ制御方法 WO2017212515A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/066716 WO2017212515A1 (ja) 2016-06-06 2016-06-06 ストレージシステム、計算機、およびストレージ制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/066716 WO2017212515A1 (ja) 2016-06-06 2016-06-06 ストレージシステム、計算機、およびストレージ制御方法

Publications (1)

Publication Number Publication Date
WO2017212515A1 true WO2017212515A1 (ja) 2017-12-14

Family

ID=60578497

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2016/066716 WO2017212515A1 (ja) 2016-06-06 2016-06-06 ストレージシステム、計算機、およびストレージ制御方法

Country Status (1)

Country Link
WO (1) WO2017212515A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022232969A1 (en) * 2021-05-05 2022-11-10 Micron Technology, Inc. Data organization for logical to physical table compression

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005202942A (ja) * 2003-12-16 2005-07-28 Matsushita Electric Ind Co Ltd 情報記録媒体、データ処理装置及びデータ処理方法
JP2005284632A (ja) * 2004-03-29 2005-10-13 Toshiba Solutions Corp ストレージシステム、ブロック再配置制御方法及びプログラム
JP2013125360A (ja) * 2011-12-13 2013-06-24 Fujitsu Ltd ディスクアレイ装置、制御装置、およびプログラム
JP2014203405A (ja) * 2013-04-09 2014-10-27 富士通株式会社 情報処理装置、メモリ制御装置、データ転送制御方法及びデータ転送制御プログラム
WO2015145667A1 (ja) * 2014-03-27 2015-10-01 株式会社日立製作所 ストレージシステム
WO2016113831A1 (ja) * 2015-01-13 2016-07-21 株式会社日立製作所 ストレージシステム、及び、記憶制御方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005202942A (ja) * 2003-12-16 2005-07-28 Matsushita Electric Ind Co Ltd 情報記録媒体、データ処理装置及びデータ処理方法
JP2005284632A (ja) * 2004-03-29 2005-10-13 Toshiba Solutions Corp ストレージシステム、ブロック再配置制御方法及びプログラム
JP2013125360A (ja) * 2011-12-13 2013-06-24 Fujitsu Ltd ディスクアレイ装置、制御装置、およびプログラム
JP2014203405A (ja) * 2013-04-09 2014-10-27 富士通株式会社 情報処理装置、メモリ制御装置、データ転送制御方法及びデータ転送制御プログラム
WO2015145667A1 (ja) * 2014-03-27 2015-10-01 株式会社日立製作所 ストレージシステム
WO2016113831A1 (ja) * 2015-01-13 2016-07-21 株式会社日立製作所 ストレージシステム、及び、記憶制御方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022232969A1 (en) * 2021-05-05 2022-11-10 Micron Technology, Inc. Data organization for logical to physical table compression

Similar Documents

Publication Publication Date Title
US10853274B2 (en) Primary data storage system with data tiering
US10977124B2 (en) Distributed storage system, data storage method, and software program
JP6240071B2 (ja) ストレージシステムにおけるマッピングテーブルを効果的に管理するコンピューターシステムおよびその方法
US20180173632A1 (en) Storage device and method for controlling storage device
US20200073586A1 (en) Information processor and control method
US7441096B2 (en) Hierarchical storage management system
JP6200886B2 (ja) フラッシュストレージアレイにおける論理セクタマッピング
JP6328335B2 (ja) ストレージ装置及びその制御方法
CA2890596C (en) Primary data storage system with deduplication
JP5816303B2 (ja) フラッシュメモリを含むストレージシステム、及び記憶制御方法
US20170337212A1 (en) Computer program product, method, apparatus and data storage system for managing defragmentation in file systems
JP7315130B2 (ja) システムガベージコレクションの方法およびソリッドステートディスクにおけるガベージコレクションの方法
US20110246731A1 (en) Backup system and backup method
JPWO2017068904A1 (ja) ストレージシステム
JP6653370B2 (ja) ストレージシステム
JP2018181202A (ja) ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
JP2014041471A (ja) ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
US10089125B2 (en) Virtual machines accessing file data, object data, and block data
US11868248B2 (en) Optimization for garbage collection in a storage system
WO2017212515A1 (ja) ストレージシステム、計算機、およびストレージ制御方法
JP2014059760A (ja) ストレージ装置、ストレージ装置の制御方法、及びストレージ装置の制御プログラム
US11544005B2 (en) Storage system and processing method
JP5691234B2 (ja) ディスクアレイ装置、及び、ミラーリング制御方法
JP6605762B2 (ja) 記憶ドライブの故障により消失したデータを復元する装置

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: 16904551

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: 16904551

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP