[go: up one dir, main page]

WO2014188479A1 - ストレージ装置及びストレージ装置の制御方法 - Google Patents

ストレージ装置及びストレージ装置の制御方法 Download PDF

Info

Publication number
WO2014188479A1
WO2014188479A1 PCT/JP2013/063889 JP2013063889W WO2014188479A1 WO 2014188479 A1 WO2014188479 A1 WO 2014188479A1 JP 2013063889 W JP2013063889 W JP 2013063889W WO 2014188479 A1 WO2014188479 A1 WO 2014188479A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
guarantee code
address
logical
physical address
Prior art date
Application number
PCT/JP2013/063889
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 US14/767,019 priority Critical patent/US9760296B2/en
Priority to PCT/JP2013/063889 priority patent/WO2014188479A1/ja
Publication of WO2014188479A1 publication Critical patent/WO2014188479A1/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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/224Disk storage

Definitions

  • This relates to storage devices that store data in drive devices.
  • a plurality of installed disk devices form a RAID (Redundant Array Independent (Inexpensive) Disks) and host the storage area as one or more virtual disk devices.
  • RAID Redundant Array Independent (Inexpensive) Disks
  • the host device designates the logical address of the provided virtual disk device and transmits / receives data to / from the storage device.
  • the storage device that has received the designation of the logical address internally converts the logical address to a physical address indicating the address of the actual disk device, and writes / reads data to / from the disk device.
  • Patent Document 1 discloses a guarantee calculated based on a physical address of a write destination when data is stored in a disk device. It is described that the code disk LA (Logical Address) is added to the data and written, and the LA is checked to read the data, thereby detecting an address abnormality such as writing data to an incorrect address.
  • code disk LA Logical Address
  • the storage apparatus includes a plurality of drives having storage media constituting a logical volume provided to a host apparatus, an I / O request including a logical address identifying a logical storage area of the logical volume from the host apparatus, and a user A front-end I / F that receives data, a processor that controls conversion from a logical address to a physical address that identifies a physical storage area of a storage medium, and writing / writing user data to a plurality of drives based on the physical address And a back-end I / F that controls reading.
  • the data in which the first guarantee code obtained based on the physical address and the logical address corresponding to the physical address is added to the user data is stored in the physical storage area specified by the physical address of the storage medium. Stored.
  • an abnormality of a logical address can be detected, and the reliability of data in the storage apparatus can be further improved.
  • FIG. 1 is a hardware configuration diagram of a computer system related to Example 1.
  • FIG. 1 is a logical configuration diagram of a drive of a computer system related to Example 1.
  • FIG. 1 is a logical configuration diagram of a computer system related to Example 1.
  • FIG. 3 is a configuration diagram of a data block according to Embodiment 1.
  • FIG. 1 is a configuration diagram of a shared memory according to Embodiment 1.
  • FIG. 1 is a configuration diagram of a local memory according to Embodiment 1.
  • FIG. 1 is a configuration diagram of a drive memory according to Embodiment 1.
  • FIG. 3 is a configuration diagram of a cache management table according to Embodiment 1.
  • FIG. 6 is a configuration diagram of a configuration information table according to Embodiment 1.
  • FIG. 6 is a flowchart of a write-time MLA inspection process according to the first embodiment. 6 is a flowchart of a write-time MLA inspection process according to the first embodiment.
  • FIG. 3 is a flowchart of a write-time BLA inspection process according to the first embodiment.
  • 3 is a flowchart of host read processing according to the first embodiment.
  • 3 is a flowchart of front end read processing according to the first embodiment.
  • 3 is a flowchart of backend read processing according to the first embodiment.
  • FIG. 6 is a diagram illustrating a structure of a drive read command according to the first embodiment.
  • 3 is a flowchart of a read-time MLA inspection process according to Embodiment 1; 6 is a flowchart of abnormal termination processing according to the first embodiment.
  • 6 is a logical configuration diagram according to Embodiment 2.
  • FIG. It is a figure which shows a response
  • FIG. 10 is a configuration diagram of an address mapping table according to Embodiment 2.
  • FIG. 12 is a block diagram of the LDEV free block management table which concerns on Example 2.
  • FIG. 12 is a flowchart of front end light processing according to the second embodiment. 12 is a flowchart of a VVOL block allocation process according to the second embodiment. 12 is a flowchart of backend write processing according to the second embodiment. 10 is a flowchart of host read processing according to the second embodiment. 10 is a flowchart of backend read processing according to the second embodiment. 12 is a flowchart of a VVOL block allocation deletion process according to the second embodiment. 12 is a flowchart of a VVOL block allocation change process according to the second embodiment.
  • 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”.
  • processing may be described using hardware as a subject, but it is determined by executing a program by the hardware itself or a processor (for example, MP (Micro Processor)) included in the hardware.
  • the subject of the processing may be a program in order to perform the processed processing appropriately 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 is composed of, for example, the storage apparatus 100 shown in FIG.
  • the DKU 170 of the storage device 100 is provided with a plurality of drive devices 180.
  • a logical volume is configured by storage areas of a plurality of drive apparatuses 180. The logical volume is referenced from the host computer 10.
  • FIG. 1 is a hardware configuration diagram of the computer system 1 according to the first embodiment.
  • the computer system 1 includes one or more host computers (hereinafter referred to as hosts) 10, a management server 20, and a storage device 100.
  • the host 10, the management server 20, and the storage device 100 are connected via a network 30.
  • the network 30 may be a local area network (LAN) or a wide area network (WAN).
  • the host 10 is, for example, a computer that executes an application, and reads data necessary for the application from the storage apparatus 100 and writes data created by the application.
  • the management server 20 is a computer that executes an application for managing the computer system 1, and is a computer that is used by an administrator who executes management processing of the system.
  • the storage system is composed of, for example, the storage apparatus 100 shown in FIG.
  • the storage device includes a DKC (Disk Controller) 190 and a DKU (Disk Unit) 170.
  • the DKC 190 includes one or more front-end packages (FEPK) 110, a maintenance interface (maintenance I / F) 120, one or more microprocessor packages (MPPK) 130, one or more cache memory packages (CMPK) 140, One or more back-end packages (BEPK) 150 and an internal network 160 are included.
  • the FEPK 110, the maintenance I / F 120, the MPPK 130, the CMPK 140, and the BEPK 150 are connected via the internal network 160.
  • the BEPK 150 is connected to the DKU 170 via a plurality of paths 171 and switches 172.
  • the DKU 170 is provided with a plurality of drive devices 180.
  • the FEPK 110 is an example of a front-end interface device, and includes one or more ports 111, a front-end controller (FE controller) 112, a DMA (FE DMA) 113, and a front-end transfer buffer (FE DXBF) 114.
  • the port 111 connects the storage apparatus 100 to various apparatuses via a network or the like.
  • the maintenance I / F 120 is an interface for connecting the storage apparatus 100 to the management server 20.
  • the front-end transfer buffer (FE DXBF) 114 temporarily stores data transmitted from the host 10 and data to be transmitted to the host 10.
  • the FE controller 112 communicates with the host 10 such as various commands, write data, and read data.
  • the FE DMA 113 communicates various commands and data between the FE DXBF 114 and the CM 141.
  • the MPPK 130 includes a microprocessor (MP) 131 and a local memory (LM) 132.
  • the LM 150 stores various programs and various information.
  • the MP 131 executes programs stored in the LM 132 and executes various processes.
  • the MP 131 transmits various commands (for example, a read command and a write command in SCSI) to the drive device 180 of the DKU 170 via the BEPK 150, and receives the results of the various commands from the drive device 180 of the DKU 170.
  • the MP 131 transmits various commands to the external storage apparatus via the FEPK 110.
  • the CMPK 140 includes a cache memory (CM) 141 and a shared memory (SM) 142.
  • the CM 141 is a memory for temporarily storing data (write data) written from the host 10 to a drive or the like and data (read data) read from the drive.
  • the SM 142 is a memory for storing control information for various programs to perform processing.
  • the BEPK 150 is an example of a back-end interface device, and includes one or more ports 151, a back-end controller (BE controller) 152, a DMA (BE DMA) 153, and a back-end transfer buffer (BE DXBF) 154. .
  • the port 151 connects the storage apparatus 100 to the drive apparatus 180 via a network or the like.
  • the back-end transfer buffer (BE DXBF) 154 temporarily stores data transmitted from the drive device 180 and data transmitted to the drive device 180.
  • the BE controller 152 communicates various commands, write data, read data, and the like with the drive unit 180 of the DKU 170.
  • the BE DMA 153 communicates various commands and data between the BE DXBF 154 and the CM 141.
  • FIG. 2 is a hardware configuration diagram of the drive device 180 of the computer system 1 according to the first embodiment.
  • the drive device 180 includes one or more drive controllers 181 and one or more storage devices 182.
  • the drive controller 181 includes one or more ports 183, a cache memory 184 (referred to as DM), and a microprocessor 185 (referred to as DMP).
  • the drive device 180 is connected to the switch 172 via the port 183.
  • the storage device 182 is a non-volatile storage medium, for example, a storage medium such as a magnetic disk, a flash memory, and other semiconductor memories (PRAM, ReRAM, etc.).
  • the drive device 180 can exchange data with the storage device 100 in units of a block 186 (for example, 512B) which is the minimum unit of SCSI command processing.
  • the drive device 180 having the drive controller 181 processing that has been conventionally performed by the DKC 190 can be performed by the drive controller 181, and the load on the DKC 190 can be reduced, and I / O performance can be expected to be improved. it can.
  • an HDD Hard Disk Drive
  • SSD Solid State Drive
  • the processing performed by the drive controller 181 is replaced by the DKC 190 instead of the drive controller 181. You may go on.
  • FIG. 3 is a logical configuration diagram of the computer system 1 according to the first embodiment.
  • the storage apparatus 100 bundles a plurality of drive apparatuses 180 (referred to as PDEV 340) to form a RAID (Redundant Array of Independent (Independent) Disks) group 330 (referred to as PG), thereby ensuring data redundancy.
  • the PG 330 is configured by bundling four PDEVs 340.
  • RAID levels There are several levels of RAID (hereinafter referred to as “RAID levels.”) For example, in RAID5, each drive unit has a failure, so that data that cannot be read from the drive unit is rebuilt.
  • Redundant code Redundant information
  • parity Redundant code
  • RAID 5 Redundant information
  • RAID levels for example, RAID 1 to 4, 6, etc.
  • data redundancy technique there are a triple mirror technique and a triple parity technique using three parities.
  • a device in which the PG 330 is virtually regarded as one volume is called a VDEV 320.
  • the LDEV 310 is a virtual device and is referred from the host 10 using the host LBA.
  • the PDEV 340 is referred to using a physical LBA.
  • the storage device administrator creates the LDEV 310 via the maintenance I / F 120.
  • the LDEV 310 is configured by allocating a plurality of PDEV 340 blocks (one unit of storage area in the PDEV) constituting the VDEV 320.
  • the physical LBA and the host LBA are not limited to the LBA that designates a block, and may be information that can identify the storage areas of the PDEV 340 and the LDEV 310, such as a physical address and a logical address, respectively.
  • the LDEV 310, VDEV 320, and PDEV 340 have unique numbers (LDEV #, VDEV #, PDEV #), respectively.
  • FIG. 4 is a configuration diagram of the data block 400 of the computer system 1 according to the first embodiment.
  • the data block 400 includes a user data part (for example, 512B) 410 and a guarantee code part 420 (for example, 8B).
  • a part of the guarantee code part 420 is used as the LA area 421, and the rest is a bit error correction. It is used as a CRC area 422 for
  • the sizes of the user data part 410 and the guarantee code part 420 are arbitrary, and are not necessarily the same. Further, the entire area of the guarantee code section 420 may be used as LA.
  • the LA calculated from the host LBA is assumed to be FLA.
  • the FLA for example, the host LBA may be used as it is, or a hash value of the host LBA may be used.
  • LA be calculated from the physical LBA.
  • the BLA for example, a physical LBA may be used as it is, or a hash value of the physical LBA may be used.
  • XLA value of FLA and BLA be MLA.
  • MLA does not necessarily need to be the XOR value of FLA and BLA.
  • both FLA and BLA may be stored in the LA area.
  • the MLA may be a value that can be confirmed by comparing with a given FLA or / and BLA as to whether an address error has occurred during I / O.
  • the table described below may be a pointer structure or a hash table, or may have a reverse lookup table, in order to reduce memory usage and search time.
  • FIG. 5 is a diagram illustrating a table stored in the SM 142 according to the first embodiment.
  • the SM 142 secures an area on the CMPK 140.
  • the logical SM 142 may be configured by using a plurality of storage areas such as the drive device 180 and the LM 132.
  • the SM 142 stores a cache management table 1421 and a configuration information management table 1422.
  • FIG. 6 is a configuration diagram of the local memory 132 according to the first embodiment.
  • the LM 132 includes a host I / O processing program 1321, a drive I / O processing program 1322, a configuration information control processing program 1323, a DMA control processing program 1324, a drive format processing program 1325, an LA calculation processing program 1326,
  • the LA inspection processing program 2135 is stored.
  • the host I / O processing program 1321 is a program for executing host read / host write processing.
  • FIG. 7 is a configuration diagram of the drive memory 184 of the drive device 180 according to the first embodiment.
  • the DM 184 stores an I / O processing program 1841, a format processing program 1842, an LA calculation processing program 1843, and an LA inspection processing program 1844.
  • the I / O processing program 1841 is a program for executing read / write processing.
  • FIG. 8 is a configuration diagram of the cache management table 1421 of the computer system 1 according to the first embodiment.
  • the cache management table 1421 is information indicating the physical address correspondence relationship between the LDEV #, the LDEV LBA, and the cache memory.
  • the LDEV # 14211 stores the LDEV #
  • the LDEV LBA14212 stores the LDEV LBA
  • the cache memory address When the data of the block indicated by the corresponding LDEV LBA is stored in the cache memory, 14213 stores the address on the cache memory where the data is stored. For example, since the cache memory is allocated to the LDEV LBA0 of the LDEV # 2, the corresponding cache memory address is stored in the row in which the LDEV LBA0 of the LDEV # 2 is stored.
  • the MP 131 can check whether data of a block corresponding to the LDEV LBA used by the host 10 for access exists in the cache.
  • FIG. 9 is a configuration diagram of the configuration information table 1422 of the computer system 1 according to the first embodiment.
  • the configuration information table 1422 is information indicating a correspondence relationship between the VDEV # 14221, LDEV # 14222, LDEV310 address (host LBA) 14223, PDEV # 14224, and PDEV340 address (physical LBA) 14225.
  • the LDEV LBA is specified as the host LBA.
  • the MP 131 can check which physical LBA the LDEV LBA used by the host 10 for access corresponds to. it can.
  • FIG. 10 is a diagram illustrating the correspondence between the data guarantee outline by LA and the logical system configuration in the computer system 1 according to the first embodiment.
  • the guarantee code hereinafter referred to as FLA
  • FLA the guarantee code calculated from the logical address of the logical volume (LDEV 310) referred to by the host 10 and the physical address of the drive apparatus 180 are calculated.
  • MLA a guarantee code
  • BLA a guarantee code
  • the host 10 When the host 10 reads data from the storage device 100, if the target data exists in the drive device 180, the data is transferred from the drive device 180 to the BE DXBF 154, and then from the BE DXBF 154 to the CM 141, and from the CM 141 to the FE DXBF 114. And then transferred to the host 10 via the port 111.
  • the MP 131 uses the configuration information table 1422 on the SM 142 to convert the host LBA that the host 10 uses to access data into the physical LBA.
  • a physical LBA is used to access data in the physical drive device 180. Data in the drive device 180 is protected by MLA.
  • the DMP 185 in the drive device 180 matches the MLA obtained from the BLA and FLA related to access with the MLA stored in the read destination from the storage device 182. Is confirmed to be normal, and the guarantee code of the read data is changed from MLA to BLA.
  • the BE DMA 153 transfers the data from the BE DXBF 154 to the CM 141, it confirms that the BLA is normal and adds the FLA given by the MP 131 to the data.
  • the MP 131 updates the cache management table 1421 on the SM 142 (hereinafter referred to as back-end read processing, hereinafter referred to as BERD processing).
  • the FE DMA 113 transfers data on the CM 141 to the FE DXBF 114, it confirms that the FLA is normal and removes the FLA.
  • the data transferred to the FE DXBF 114 is transferred to the host 10 by the FE controller 112 (front end read processing, hereinafter referred to as FERD processing).
  • FERD processing front end read processing, hereinafter referred to as FERD processing.
  • the write data transferred from the host 10 is received by the FE DXBF 114 and transferred to the CM 141 by the FE DMA 113.
  • the MP 131 inputs the FLA calculated from the host LBA to the FE DMA 113, and after the FE DMA 113 adds the FLA to the data, the data is transferred from the FE DXBF 114 to the CM 141.
  • the MP 131 updates the cache management table 1421 (the front end write process, hereinafter referred to as the FEWR process).
  • the MP 131 converts from the host LBA to the physical LBA.
  • the BE DMA 153 confirms that the FLA is normal, and then adds the BLA input from the MP 131 to the data.
  • the data transferred from the BE DXBF 154 to the drive device 180 is temporarily held in the DM 184, the BLA added to the data, the FLA added to the drive write command issued to the drive device 180 by the DKC 190, and the drive After the DMP 185 confirms that the MLA stored in the write destination physical LBA is normal from the write destination physical LBA in the write command, the DMP 185 adds the MLA to the data and performs writing (the back end write process, Hereinafter referred to as BEWR processing).
  • FIG. 11 is a flowchart of the drive format process of the computer system 1 according to the first embodiment.
  • the drive format process (also simply referred to as format process) is executed when the storage apparatus receives a drive format instruction via the maintenance I / F 120.
  • the MP 131 In the drive format process, when the MP 131 receives a format instruction from the maintenance I / F 120 (step 1101), the MP 131 that has received the format instruction first creates format data with the MLA initial value added to the BE DMA 153. Processing is instructed (step 1103).
  • the format data is obtained by recording the BLA obtained from the physical address of the drive device as the MLA initial value in the LA area 421 of the guarantee code section 420 with the entire area of the user data section 410 of FIG.
  • the MLA initial value does not necessarily have to be BLA, and may be any value as long as it can be determined as the initial value.
  • the BE DMA 153 writes the created data to the BE DXBF 154 (step 1105).
  • the format data written in the BE DXBF 154 is written into the drive device 180 by the BE controller 152 (step 1107), and the drive format process is completed.
  • the drive formatting process is completed, the data transmitted from the host 10 can be written to the drive device 180.
  • FIG. 12 is a flowchart of host write processing of the computer system 1 according to the first embodiment.
  • the host write process includes a front-end write process (step 1201, hereinafter referred to as FEWR process) in which the FE DMA 113 writes the data transmitted from the host 10 to the cache, and the BE controller 152 sends the data in the cache to the drive.
  • the back-end write process for writing (step 1203; hereinafter referred to as BEWR process).
  • FIG. 13 is a flowchart of the front end light process of the computer system 1 according to the first embodiment.
  • the FEWR process is executed when the MP 131 receives a write command from the host 10 via the port 111 of the FEPK 110.
  • the FE controller 112 receives the write data transmitted from the host 10 and writes it to the FE DXBF 114 (step 1301). LA is not added to the write data in the FE DXBF 114 received from the host 10 and stored.
  • the MP 131 activates the FE DMA 113 (step 1303).
  • the FE DMA 113 calculates the FLA based on the LDEV LBA (hereinafter referred to as host LBA) input from the MP 131, and adds it to the data (step 1305).
  • CRC check is performed at the same time when FLA is added, but the order of FLA addition and CRC check does not matter.
  • the MP 131 writes the data with the FLA added to the CM 141 (step 1307), and transmits a completion report to the host 10 (step 1309).
  • FIG. 14 is a flowchart of the back-end write process of the computer system 1 according to the first embodiment.
  • the BEWR process is a process for writing the write data on the CM 141 to the drive device 180.
  • the BEWR process may be performed synchronously when the write data from the host 10 is written to the CM 141, or asynchronous with the writing to the CM 141, and when the load on the MP 131 is low, the CM 141 does not store the drive device 180. It may be performed when the amount or ratio of reflected data exceeds a certain threshold.
  • the write command transmitted from the host 10 includes, for example, a volume number that is an identifier of an LDEV to be accessed and a host LBA (Logical Block Address).
  • the MP 131 refers to the configuration information table 1422 on the SM 142 from the volume number and the host LBA, and obtains the corresponding physical LBA on the PG (Step 1401).
  • the FL 131 calculated by the MP 131 from the host LBA and the physical LBA obtained from the configuration information table 1422 on the SM 142 based on the host LBA are input to the BE DMA 153, and the BE DMA 153 transfers write data from the CM 141 to the BE DXBF 154 (steps). 1403).
  • the BE DMA 153 compares the FLA input from the MP 131 with the FLA added to the write data to be transferred (step 1405), and checks whether they match (step 1407). If they do not match (N in Step 1407), an abnormality notification is sent to the management server 20 (Step 1427), and the abnormal termination process described in FIG. 24 is performed.
  • the FLA input from the MP131 and the FLA added to the write data to be transferred are compared and confirmed, it is understood that the data having the LDEV LBA that is not the target to be written to the drive device is transferred. Data destruction due to writing to the drive device can be prevented.
  • the cause of the change in the write target is that when the cache management table 1421 is updated, the LDEV LBA or the cache memory address is rewritten to an unintended value due to a software failure, so the address conversion from the LDEV LBA to the cache memory address is performed. It is possible to make a mistake.
  • the BE DMA 153 calculates the BLA based on the physical LBA input from the MP 131 when the FLA added to the data matches the FLA input from the MP 131 (Y in Step 1407), and uses the calculated BLA as the data. In addition, a CRC check is performed, and the data loaded with BLA is transferred to BE DXBF 154 (step 1409).
  • FIG. 15 shows the structure of the drive write command 1500 of the computer system 1 according to the first embodiment.
  • the drive write command 1500 includes, for example, the identifier of the drive device 180 that is the data write destination and the physical address 1510 consisting of the physical LBA, and the FLA 1520 obtained from the LDEV LBA corresponding to the physical address 1510 of the data write destination.
  • FLA may be added to the data, and the drive write command 1500 may include the calculated BLA instead of the FLA 1520.
  • a logical address may be included, and FLA may be recalculated based on the logical address during MLA calculation.
  • the MP 131 inputs the drive write command 1500 to the BE controller 152 and activates the BE controller 152 (step 1411).
  • the BE controller 152 transmits the drive write command 1500 and the write data in the BE DXBF 154 to the drive device 180 (step 1413).
  • the drive controller 181 reads the MLA added to the data referenced by the physical LBA stored in the received drive write command (step 1417). If the MLA is not the initial value (N in Step 1419), the DMP 185 in the drive device 180 performs all the MLA inspection processes shown in FIGS. 16 and 17 and performs the MLA inspection (Step 1420).
  • the DMP in the drive device 180 stores the FLA stored in the drive write command and the drive write command.
  • the XOR value of BLA calculated from the physical LBA stored in is added to the data, and the data is written to the storage device 182 in the drive device 180.
  • the drive device 180 notifies the DKC 190 of the completion and ends the processing. If the result of the MLA inspection is abnormal (N in Step 1421), the drive device 180 notifies the DKC 190 of the abnormality, and the DKC 190 notifies the management server 20 of the abnormality, and the process is terminated.
  • FIG. 16 is a flowchart of the MLA inspection processing process during writing of the computer system 1 according to the first embodiment.
  • the MLA inspection process at the time of writing is executed when the drive device 180 receives the drive write command 1500 and the write data transmitted from the BE controller 150.
  • the drive controller 181 reads the data stored in the area indicated by the physical LBA included in the drive write command 1500, and the DMP 185 is included in the MLA and drive write command 1500 stored in the guarantee code section 420 of the read data.
  • the XOR value (referred to as BLA1) of the FLA that is currently being calculated is calculated (step 1601).
  • the DMP 185 compares BLA (referred to as BLA2) obtained from the physical LBA included in the drive write command 1500 and BLA1 (step 1603), and checks whether they match (step 1605). If the values of BLA1 and BLA2 match (Y in step 1605), it is determined that the write specified by the drive write command 1500 is a write to a normal address (step 1607).
  • Step 1605 If the values of BLA1 and BLA2 do not match (N in Step 1605), it is determined that the write is to an abnormal address, and the above is notified to the management server 20 (Step 1609). By checking whether BLA1 and BLA2 match, it is possible to prevent data destruction due to writing to an abnormal address.
  • the XOR value of MLA and FLA does not have to be compared with BLA. For example, the XOR value of BLA obtained from the physical LBA in drive write command 1500 and FLA added to drive write command 1500 A comparison with the MLA stored in the drive device may be made.
  • the XOR value between the MLA stored in the drive device and the BLA calculated from the physical LBA included in the drive write command 1500 may be compared with the FLA included in the drive write command 1500.
  • the MLA inspection may not be performed by the drive device as shown in FIG. 2, but may be performed by the DKC 190.
  • the block indicated by the physical LBA included in the drive write command 1500 is read onto the CM 141, and the MP 131 performs MLA inspection processing.
  • the reading destination does not need to be the CM 141, and may be the BE DXBF154. Further, it is not necessary for the MP131 to perform the MLA inspection processing, and the BE DMA 153 or the BE controller 152 may be used.
  • FIG. 17 is a flowchart of the write-time MLA inspection processing of the computer system 1 according to the first embodiment.
  • the MLA check process at the time of writing is executed when the drive device 180 receives the drive write command 1500 and the write data transmitted from the DKC 190.
  • the drive controller 181 reads the data indicated by the physical LBA included in the drive write command 1500, and the DMP 185 reads the MLA stored in the guarantee code portion of the read data and the XOR value of the FLA included in the drive write command 1500 (BLA1) is obtained (step 1701), and BLA (BLA2) added to the write data is compared (step 1703). It is confirmed whether BLA1 and BLA2 match (step 1705). If the two values match (Y in step 1705), it is determined that the write specified by the drive write command 1500 is a write to a normal address. (Step 1707).
  • Step 1705 If BLA1 and BLA2 do not match (N in Step 1705), it is determined that the writing is to an abnormal address, and the writing to the above address is notified to the management server. (Step 1709).
  • An address conversion error occurs, for example, when the LDEV LBA or the cache address is rewritten to an incorrect value due to a software defect when the cache management table in FIG. 8 is updated.
  • the XOR value of the BLA in the write data and the FLA added to the drive write command 1500 may be compared with the MLA stored in the drive device, or stored in the drive device.
  • the XOR value between the MLA and the BLA added to the write data may be compared with the FLA included in the drive write command 1500.
  • the MLA inspection may not be performed by the drive device 180 as shown in FIG. 2, but may be performed by the DKC 190.
  • the block indicated by the physical LBA included in the drive write command 1500 is read onto the CM 141, and the MP 131 performs MLA inspection processing.
  • the reading destination does not need to be the CM 141, and may be BE DXBF154.
  • the MP131 it is not necessary for the MP131 to perform the MLA inspection process, and the BE DMA 153 or the BE controller 152 may be used.
  • the MLA inspection with the drive controller 181 it is possible to reduce the load on the MLA inspection processing of the DKC 190, and to improve the I / O performance.
  • the MLA inspection with the DKC 190 it is possible to use a commercially available HDD or SSD that does not have the drive controller 181 that performs the inspection process.
  • the MLA inspection process can detect writing to an abnormal address by executing at least one of the processes shown in FIGS.
  • the ability to detect writing to an abnormal address is improved, and the reliability is further improved.
  • a BLA process to be described later with reference to FIG. 18 may be additionally performed.
  • FIG. 18 is a flowchart of the write-time BLA inspection process of the computer system 1 according to the first embodiment.
  • the MLA check process at the time of writing is executed when the drive device 180 receives the drive write command 1500 and the write data transmitted from the DKC 190.
  • the DMP 185 compares the BLA (referred to as BLA1) calculated from the physical LBA included in the drive write command 1500 with the BLA (referred to as BLA2) added to the write data (step 1801). It is confirmed whether BLA1 and BLA2 match (step 1803). If they match (Y in step 1803), it is determined that the physical LBA specified by the drive write command 1500 is normal (step 1805). If BLA1 and BLA2 do not match (N in Step 1803), it is determined that the write is to an abnormal address (Step 1807).
  • BLA1 and BLA2 do not match
  • the MLA check process is a guarantee code calculated from the address before address conversion in addition to the guarantee of the write destination address by the conventional LA check process, and guarantees the result of address conversion.
  • FLA calculated from LDEV LBA that is not performed must be used for inspection. For this reason, the processing of either FIG. 16 or FIG. 17 is essential.
  • the processing in FIG. 18 is not essential because the result of the address translation is not guaranteed, but since the physical LBA of the write destination is guaranteed, the reliability can be expected to be improved by performing additionally.
  • the XOR values of FLA and BLA added to the drive write command 1500 are stored in the LA area of the write data and written to the storage device 182 of the drive device 180 (step 1419 in FIG. 14). After the writing is completed, the DKC 190 is notified of the completion of the processing, and the back-end write processing is terminated.
  • FIG. 19 is a flowchart of host read processing of the computer system 1 according to the first embodiment.
  • the host read process is executed when the MP 131 receives a read command from the host 10 via the port 111 of the FEPK 110 (step 1901).
  • the read command from the host 10 includes, for example, a volume number and a host LBA that are identifiers of LDEVs to be accessed. From the volume number and the host LBA, the cache management table 1421 on the shared memory is referred to and an address on the CM 141 is obtained.
  • the MP 131 confirms whether there is data designated by the read command on the CM 141 (step 1903). When there is no data on the CM 141 (N in Step 1903), the MP 131 performs back-end read processing, which is processing for writing data read from the drive device 180 into the CM 141 (Step 2005, hereinafter referred to as BERD processing). Details of the BERD process will be described with reference to FIG.
  • the MP 131 transmits a front-end read process for transmitting the data in the CM 141 to the host 10 (Step 1907; hereinafter referred to as FERD process). Do. Details of the FERD process will be described with reference to FIG.
  • FIG. 20 is a flowchart of the front end read process of the computer system 1 according to the first embodiment.
  • the MP 131 inputs the host LBA in the read command and the FLA calculated from the host LBA, and activates the FE DMA 113 (step 2001).
  • the FE DMA 113 compares the input FLA with the FLA added to the read data for the read data on the CM 141 corresponding to the host read command (step 2003).
  • the FE DMA 113 confirms whether the input FLA matches the FLA added to the read data (step 2005).
  • the FE DMA 113 deletes the FLA of the read data, performs a CRC check, and transfers it to the FE DXBF 114 (Step) 2007).
  • the CRC check and FLA deletion are in no particular order. If the input FLA does not match the FLA added to the read data (N in Step 2005), it is determined that the writing is to an abnormal address (Step 2013). This FLA check can detect that data has been written to an abnormal address and can prevent abnormal data from being transferred to the host 10, which is effective in improving the reliability of the storage apparatus 100.
  • the MP 131 activates the FE controller 112, and the FE controller 112 transmits read data to the host 10 via the port 110 of the FEPK 110 (step 2009). After the read data is transmitted to the host 10, the MP 131 transmits a completion notification to the host 10 and ends the FERD process (step 2011).
  • FIG. 21 is a flowchart of the back-end read process of the computer system 1 according to the first embodiment.
  • the BERD process is a process for reading read data from the drive device 180 to the CM 141 when no read data exists on the CM 141.
  • FIG. 22 shows the structure of the drive read command 2200 of the computer system 1 according to the first embodiment.
  • the drive read command includes, for example, the identifier of the drive device 180 to be accessed, the physical address 2210 including the physical LBA, and the FLA 2220 obtained from the corresponding host LBA.
  • the MP 131 acquires the physical LBA from the configuration information table 1422, calculates the FLA from the host LBA, and creates the drive read command 2200 with the FLA added (step 2201).
  • the MP 131 inputs a drive read command 2200 to the BE controller 152 and activates the BE controller 152 (step 2103).
  • the BE controller 152 transmits a drive read command 2200 to the drive device 180 (step 2105).
  • the drive controller 181 performs a read MLA inspection process (step 2109).
  • FIG. 23 is a flowchart of the MLA inspection process at the time of reading of the computer system 1 according to the first embodiment.
  • the read MLA inspection process is executed when the drive device 180 receives the drive read command 2200 transmitted from the DKC 190.
  • the drive controller 181 reads the data indicated by the physical LBA included in the drive read command, and the DMP 185 reads the MLA stored in the guarantee code portion of the read data and the XOR value of the FLA included in the drive read command 2200 (BLA1 and Is calculated (step 2301).
  • the DMP 185 compares the calculated XOR value with the BLA (referred to as BLA2) calculated from the physical LBA included in the drive read command (step 2303). It is confirmed whether the values of BLA1 and BLA2 match (step 2305). If they match (Y in step 2305), it is determined that the reading specified by the drive read command 2200 is a reading to a normal address. (Step 2307). If BLA1 and BLA2 do not match (N in Step 2305), it is determined that an abnormal address is read (Step 2309). Reading from an abnormal address can be detected by the MLA inspection process at the time of reading, and reading from an abnormal address can be prevented).
  • the storage apparatus 100 may perform the MLA inspection process in the same manner as in the back-end write process.
  • the drive controller 181 confirms whether it has passed the MLA inspection process at the time of reading (step 2111), and if it has passed the MLA inspection (Y of step 2111), the BLA calculated from the physical LBA included in the drive read command 2200 is read data. The data is added to the data and transferred to the DKC 190 (step 2113).
  • the BE controller 152 stores the read data transferred from the drive device 180 in the BE DXBF 154 (step 2115)
  • the MP 131 uses the BLA calculated from the physical LBA to be read by the BE DMA 153 and the configuration information table on the shared memory.
  • the obtained host LBA is input and the BE DMA 153 is activated (step 2117).
  • the BE DMA 153 compares the BLA added to the read data in the BE DXBF 154 with the BLA input from the MP 131 (step 2119). Check if the BLA added to the read data matches the BLA input from the MP 131 (step 2121). If they match (Y in step 2121), the BE DMA 153 inputs the read data in the BE DXBF 154 from the MP 131. After adding the FLA calculated from the host LBA, and performing a CRC check, writing to the CM 141 (step 2123) and the back-end read processing are terminated. Again, the CRC check and FLA addition are out of order. If the BLA added to the read data does not match the BLA input from the MP 131 (N in Step 2121), the management server is notified of the abnormality (Step 2125), and the abnormal termination process described in FIG. Do.
  • FIG. 24 is a flowchart of processing in the case of LA mismatch in the computer system 1 according to the first embodiment.
  • the storage apparatus 100 notifies the administrator through the management I / F 120 that an LA mismatch has been detected.
  • the BE DMA 153 transfers data from the CM 141 to the BE DXBF 154, or when the FE DMA 113 transfers data from the CM 141 to the FE DXBF 114, does the FLA added to the MP131 match the FLA input from the MP131? If there is a discrepancy, the BE DMA 153 or the FE DMA 153 notifies the MP 131 of the FLA abnormality.
  • the MP 131 that has received the FLA abnormality notification notifies the management server 20 of the FLA abnormality through the management I / F 120 (Y in Step 2401, Step 2403).
  • the MP 131 receives the MLA abnormality notification from the drive device 180, it notifies the management server 20 of the BLA abnormality through the management I / F 120 (Y in step 2405, step 2407).
  • the BE DMA 153 checks whether the BLA added to the data matches the BLA input from the MP 131. If there is no match, the BE DMA 153 notifies the MP 131 of the BLA abnormality.
  • the outline of the computer system 1 including the storage system according to the second embodiment will be described.
  • the same hardware configuration as that of the first embodiment is used and common processing is also executed, only differences from the first embodiment will be described, and the same portions will be omitted.
  • FIG. 25 is a logical system configuration diagram of the computer system 1 according to the second embodiment.
  • the storage apparatus 100 forms a pool 350 that is a set of logical storage capacities by bundling a plurality of LDEVs 310.
  • a plurality of virtual volumes (VVOL) 360 exist in the pool 350.
  • the VVOL 360 is a virtual device and is referenced from the host 10.
  • the administrator of the storage apparatus 100 creates a VVOL 360 of an arbitrary size via the maintenance I / F 120. This size does not depend on the total capacity of the actual drive.
  • the MP 131 dynamically allocates one storage area (LDEV block) of the LDEV 310 to one virtual storage area (VVOL block) of the VVOL 360 that has been I / O accessed from the host 10. After the assignment, the correspondence between the VVOL LBA and the LDEV LBA is stored in the address mapping table 1423 on the shared memory 142.
  • FIG. 26 is a diagram illustrating the correspondence between the data guarantee outline by LA and the logical system configuration in the computer system 1 according to the second embodiment.
  • a guarantee code hereinafter referred to as FLA
  • FLA a guarantee code calculated from a logical address of a logical volume (VVOL) referred to by the host 10
  • VVOL logical volume
  • BLA data
  • the host 10 When the host 10 reads data from the storage device 100, if the target data exists in the drive device 180, the data is transferred from the drive device 180 to the BE DXBF 154, and then from the BE DXBF 154 to the CM 141, and from the CM 141 to the FE DXBF 114. And then transferred to the host 10 via the port 111.
  • the host LBA (VVOL LBA) used by the host 10 to access the data is converted into the LDEV LBA by the MP 131 using the address mapping table 1423 on the SM 142, and the LDEV LBA obtained by the conversion is converted into the configuration information table 1421.
  • To convert to physical LBA A physical LBA is used to access data in the physical drive device 180.
  • Data in the drive device 180 is protected by MLA.
  • the DMP 185 in the drive device 180 uses the physical LBA and FLA stored in the drive read command 1500 issued by the DKC 190 to the drive device 180, and the MLA is normal. Confirm that the warranty code is changed from MLA to BLA.
  • the BE DMA 153 transfers the data from the BE DXBF 154 to the CM 141, it confirms that the BLA is normal, and adds the FLA calculated from the MP 131 using the VVOL LBA to the data.
  • the MP 131 updates the cache management table on the SM 142 (thin provisioning back-end read processing, hereinafter referred to as Thin-pro BERD processing).
  • Thin-pro BERD processing thin provisioning back-end read processing
  • the FE DMA 113 transfers data on the CM 141 to the FE DXBF 114, it confirms that the FLA is normal and removes the FLA.
  • the data transferred to the FE DXBF 114 is transferred to the host 10 by the FE controller 112 (hereinafter referred to as thin provisioning back front end read processing, hereinafter referred to as Thin-pro FERD processing). If the target data is in the cache, only Thin-pro FERD processing is performed.
  • the write data transferred from the host 10 is received by the FE DXBF 114 and transferred to the CM 141 by the FE DMA 113.
  • the MP 131 inputs the FLA calculated from the host LBA (VVOL LBA) to the FE DMA 113, and after the FE DMA 113 adds the FLA to the data, the data is transferred from the FE DXBF 114 to the CM 141.
  • the MP 131 updates the cache management table (thin provisioning front end write processing, hereinafter referred to as Thin-pro FEWR processing).
  • the MP 131 When writing to the drive device 180 from the CM 141 via the BE DXBF 154, the MP 131 uses the address mapping table 1423 on the SM 142 to convert from the host LBA to the LDEV LBA, and the LDEV LBA obtained by the conversion is converted into the configuration information table 1421. To convert to physical LBA.
  • the BE DMA 153 When transferring from the CM 141 to the BE DXBF 154, the BE DMA 153 confirms that the FLA is normal, and then adds the BLA input from the MP 131 to the data.
  • the data transferred from the BE DXBF 154 to the drive device 180 is temporarily held in the DM 184, the BLA added to the data, the FLA added to the drive write command issued to the drive device 180 by the DKC 190, and the drive After the DMP 185 confirms that the MLA stored in the write destination physical LBA is normal from the write destination physical LBA in the write command 1500, the DMP 185 adds the MLA to the data and performs writing (thin provisioning back) End light processing, hereinafter referred to as Thin-pro BEWR processing).
  • FIG. 27 is a data mapping structure diagram of the computer system 1 according to the second embodiment.
  • the VVOL 360 that can be recognized by the host 10 is composed of a plurality of VVOL blocks 361.
  • the LDEV block 361 and the LDEV block 311-1 and the LDEV block 311-2 of the LDEV 310-2 are allocated to the VVOL block 361. This relationship is called page mapping, and the MP 131 dynamically manages the relationship by the address mapping table 1423 on the SM 142.
  • the VVOL 360 has a unique number (VVOL #) that is an identifier for identifying each VVOL 360 in the storage apparatus 100.
  • FIG. 28 is a diagram illustrating an address mapping table 1423 for managing address mapping of the computer system 1 according to the second embodiment.
  • the host 10 uses VVOL LBA to access data.
  • the address mapping management table is information indicating a correspondence relationship between Pool # 14231, VVOL # 14232, VVOL LBA 14233, LDEV # 14234, and LDEV LBA 14235. This table allows the MP 131 to check which LDEV LBA the block corresponding to the VVOL LBA used by the host 10 for access corresponds to.
  • FIG. 29 is a diagram illustrating an LDEV free block management table 1424 for managing LDEV allocation blocks of the computer system 1 according to the second embodiment.
  • the LDEV allocation block management table 1424 includes a column 14241 for storing Pool #, a column 14242 for storing LDEV #, a column 14243 for storing LDEV LBA, and a block identified by the LDEV LBA allocated to the VVOL block. It consists of a column 14244 for storing an allocation flag indicating whether or not there is, and is stored on the SM 142.
  • an LDEV LBA1 of LDEV # 1 constituting Pool # 0 has a flag indicating that it has already been assigned to the VVOL.
  • “Not-allocated” indicating that it is not assigned is stored like the LDEV LBA3 of the LDEV # 1 constituting the Pool # 0.
  • the LDEV allocation block management table is information indicating a correspondence relationship between Pool #, LDEV #, LDEV LBA, and whether or not in use. With this table, the MP 131 can check the assignable LDEV block when assigning the LDEV block to the VVOL.
  • the host write processing of the computer system 1 according to the second embodiment includes FEWR processing (referred to as Thin-pro FEWR processing in the second embodiment) and BEWR processing (thin in the second embodiment). -Called pro BEWR processing).
  • Thin-pro FEWR processing in the second embodiment FEWR processing
  • BEWR processing thin in the second embodiment
  • -Called pro BEWR processing FEWR processing
  • FIG. 30 is a flowchart of the FEWR process (Thin-pro FEWR process) of the computer system 1 according to the second embodiment.
  • the FEWR process is a process executed when the storage apparatus 100 receives a host write command from the host 10.
  • the MP 131 When the MP 131 receives the host write command from the host 10 (step 3001), the MP 131 adds the LDEV allocation block management table 1424 on the shared memory 142 to the VVOL block that is the write target indicated by the host LBA in the host write command. To determine whether an LDEV block is allocated (step 3003). When the LDEV block is assigned to the VVOL block (N in Step 3003), the FEWR process in FIG. 13 of the first embodiment is performed (Step 3013).
  • Step 3003 it is determined whether there is an LDEV block to which the MP 131 is assigned, that is, not assigned to any VDEV block (Step 3005). If there is an assignable LDEV block (Y in step 3005), the assignment process described in FIG. 31 is performed (step 3009), and then the FEWR process is performed (step 3013). When there is no assignable LDEV block (N in Step 3005), the storage apparatus 100 notifies the host 10 that write data transmission is impossible (Step 3013).
  • FIG. 31 is a flowchart of the VVOL block allocation process of the computer system 1 according to the second embodiment.
  • the MP 131 refers to the LDEV block allocation management table 1424 on the SM 142, determines the LDEV LBA of the LDEV block that can be allocated, and determines the physical LBA from the determined LDEV LBA and the configuration information table 1422. .
  • the obtained physical LBA and the VVOL LBA to which the physical LBA is allocated are input to the BE DMA 153, and the BE DMA 153 is activated (step 3101).
  • the BE DMA 153 sets all areas of the user data section 410 of FIG.
  • the initial allocation data is created and written to the BE DXBF 154 (step 3103).
  • the MP 131 inputs a drive write command 1500 to the BE controller 152 and activates the BE controller 152 (step 3105).
  • the drive write command includes the initial allocation data written in the BE DXBF 154 and the FLA calculated from the VVOL LBA. 1500 is transmitted to the drive device 180 (step 3107).
  • the drive controller 181 stores the drive write command 1500 and the initial allocation data in the DM 184 (step 3109), reads the block indicated by the write destination physical LBA contained in the drive write command 1500 (step 3111), and MLA. Is an initial value (step 3113).
  • the FLA added to the command and the XOR value of BLA calculated by the drive controller 181 are stored in the LA area 421 in the data guarantee code part and stored.
  • Data for initial allocation is written to the device 182 (step 3115).
  • the MLA is not the initial value (N in Step 3113)
  • allocating the LDEV LBA to the VDEV LBA it is possible to prevent data corruption by allocating another VVOL LBA to the allocated area by checking whether or not the MLA is the initial value (N in Step 3115).
  • the drive device 180 When the writing of the initial allocation data is completed, the drive device 180 notifies the DKC 190 of the completion of writing (step 3117). Receiving the write completion notification, the MP 131 in the storage apparatus 100 updates the address mapping table 1423 (step 3119) and ends the VVOL block allocation process.
  • FIG. 32 is a flowchart of the BEWR process (Thin-pro BEWR process) of the computer system 1 according to the second embodiment. Only differences from the first embodiment will be described.
  • the MP 131 obtains the LDEV LBA from the VVOL LBA and the address mapping table 1423 on the SM 142 (Step 3201).
  • the MP 131 obtains a physical LBA from the obtained LDEV LBA and the configuration information management table 1422 on the shared memory 142 (step 3203), and performs the BEWR process of the first embodiment (step 3205).
  • FIG. 33 is a flowchart of host read processing (Thin-pro read processing) in the computer system 1 according to the second embodiment.
  • the MP 131 receives the host read command from the host 10 (step 3301)
  • the MP 131 checks from the address mapping table 1423 on the SM 142 whether or not the LDEV LBA is assigned to the VVOL LBA requested to be read from the host 10 (step 3303).
  • the MP 131 instructs the FE DMA 113 to create data in which the user data unit 410 of FIG.
  • the data generated by the FE DMA 113 is transmitted to the host 10 (step 3305), and the read process is terminated.
  • the MP 131 checks whether there is corresponding data on the CM 141 from the cache management table 1421 on the SM 142 (step 3307).
  • the LDEV # and LDEV LBA in the cache management table are changed to VVOL # and VVOL LBA. If it exists on the CM 141 (Y in step 3307), the same FERD processing as that in the first embodiment is performed (step 3311). If there is no corresponding data on the CM 141, Thin-pro BERD processing is performed (step 3309), and FERD processing similar to that in the first embodiment is performed (step 3311).
  • FIG. 34 is a flowchart of the BERD (Thin-pro BERD) process of the computer system 1 according to the second embodiment.
  • the MP 131 acquires the LDEV LBA from the VVOL LBA and the address mapping table 1423 on the SM 142 (step 3401).
  • the MP 131 acquires the physical LBA from the acquired LDEV LBA and the configuration information table 1422 on the shared memory 142 (step 3402).
  • the same BERD processing as in the first embodiment is performed from step 2201 to step 2215 in FIG.
  • the MP 131 acquires the LDEV LBA from the physical LBA and the configuration information table 1422 on the shared memory 142 (step 3407).
  • the VVOL LBA is acquired from the acquired LDEV LBA and the address mapping table 1423 on the SM 142 (step 3409). After acquiring the VVOL LBA, the same BERD process as in the first embodiment is performed from step 2215 to step 2223 in FIG. 22, and then the same FERD process as in the first embodiment is performed.
  • FIG. 35 is a flowchart of the VVOL block allocation deletion process in the computer system 1 according to the second embodiment.
  • the VVOL block allocation deletion process is a process for efficiently using the physical capacity of the drive device 180. That is, the VVOL block 361 to which the LDEV block 311-1 is assigned in FIG. 27 shows the VVOL block 2361 in the physical LBA corresponding to the LDEV block 311-1 even if the host 10 has not written to the VVOL block 361. Since the MLA using the VVOL LBA information is written, it is not possible to accept anything other than reading / writing to the VVOL block 361.
  • a VVOL block allocation deletion process is required.
  • the host 10 may delete the VVOL block.
  • the storage system 100 executes steps 3105 to 3111 of the VVOL block allocation process of FIG. 31 (step 3501).
  • the drive controller 181 confirms whether or not the MLA is an initial value (step 3503). If the MLA of the physical LBA to be allocated and deleted is not the initial value (N in step 3503), the drive MLA check process in the first embodiment is performed. Perform (step 3505). Similar to the write-time MLA inspection process in the first embodiment, both or either one of the processes in FIGS. 16 and 17 can be performed, and the process in FIG. 18 can be optionally performed. It is confirmed whether or not the result of the MLA inspection processing is normal (step 3507).
  • the BE DMA 154 performs initialization processing of the target block (step 1107 in FIG. 11) (step 1107 in FIG. 11). Step 3509). If it is determined that the MLA is abnormal (N in Step 3507), the MP 131 abnormally ends the VVOL block allocation deletion process (Step 3511).
  • FIG. 36 is a flowchart of the VVOL block allocation change process in the computer system 1 according to the second embodiment.
  • the VVOL block allocation change processing is performed when the number of LDEV blocks allocated to the VVOL 360 is biased among the LDEVs 310 due to the increase or decrease in the number of LDEVs 310 in the Pool 350, or when the LDEV 310 allocated in the Pool 350 is deleted, This is performed when changing to another LDEV block in the Pool 350.
  • the storage apparatus 100 reads the data of the migration target LDEV block into the CM 141 by the BERD process (FIG. 22, Step 2201 to Step 2223) of the first embodiment (Step 3601). After the data is read into the CM 141, the allocation deletion processing (all steps in FIG. 35) of the migration source LDEV block is performed (step 3603).
  • the VVOL block allocation process (all steps in FIG. 31) is performed on the migration destination LDEV block (step 3605).
  • Thin-pro BEWR processing (all steps in FIG. 32) is performed, and the LDEV block in the cache is written to the drive device (step 3607).
  • the mapping table 1423 on the SM 142 is updated. If a read request or a write request is generated immediately before the update, the read / write processing may be performed using the VVOL block allocation information before the update.
  • the cause of this problem is that the correspondence between the host LBA and the physical LBA is not invariant because address conversion is performed.
  • the FLA created from the host LBA is also used, so that even if the correspondence between the host LBA and the physical LBA changes, an address translation error is detected. There is an effect that can be done.
  • a storage apparatus that can detect an abnormality in a logical address, further improve data reliability, and is suitable for mission-critical work. Further, by applying the present invention to a storage device equipped with a drive device 180 that calculates operations, the reliability of data can be improved without increasing the load on the DKC 190, that is, while maintaining high-speed I / O performance. it can.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

 論理アドレスと物理アドレスの異常を検出するため、ストレージ装置は、上位装置に提供される論理ボリュームを構成する記憶媒体を有する複数のドライブと、上位装置から論理ボリュームの論理記憶領域を識別する論理アドレスを含むI/O要求とユーザデータとを受信するフロントエンドI/Fと、論理アドレスから記憶媒体の物理記憶領域を識別する物理アドレスへの変換を制御するプロセッサと、物理アドレスに基づいて複数のドライブへのユーザデータの書込み/読出しを制御するバックエンドI/Fと、を有する。そして、ドライブには、物理アドレスと物理アドレスに対応する論理アドレスとに基づいて得られる第1の保証コードがユーザデータに付加されたデータが、記憶媒体の物理アドレスによって指定された物理記憶領域に格納される。

Description

ストレージ装置及びストレージ装置の制御方法
 ドライブ装置へデータを格納するストレージ装置に関する。
 高性能・高信頼性が求められるストレージ装置では、搭載する複数台のディスク装置でRAID(Redundant Array Independent(Inexpensive) Disks)を構成し、1つまたは複数の仮想的なディスク装置として記憶領域をホストコンピュータなどの上位装置に提供することで、高速化及び冗長性を向上させている。上位装置は、この提供される仮想的なディスク装置の論理アドレスを指定して、ストレージ装置との間のデータの送受信を行う。一方、論理アドレスの指定を受けたストレージ装置は、内部で論理アドレスから実際のディスク装置のアドレスを指す物理アドレスにアドレス変換し、ディスク装置へのデータを書込み/読出しを行っている。
 このようなアドレス変換を伴うデータ転送に対して、信頼性をより向上させるため、例えば、特許文献1には、ディスク装置にデータを格納する際、書込み先の物理アドレスに基づいて計算される保証コード ディスク側LA(Logical Address)をデータに付加して書き込み、データの読出しにLAをチェックすることで、誤ったアドレスにデータを書き込んでしまう等のアドレス異常を検出することが記載されている。
特開2000-347815号公報
 しかしながら、特許文献1に記載のアドレス異常の検出方法では、指定された物理アドレスで指定された物理記憶領域とは異なる物理記憶領域にデータが書き込まれたことは検出できるが、指定された論理アドレスと対応する物理記憶領域と異なる物理記憶領域にデータが書き込まれてしまっていても、論理アドレスの異常は検出できないという課題がある。このような論理アドレスの異常は、論理アドレスから物理アドレスへの変換の際に起きやすい。近年のデータの大容量化に伴い、論理ボリュームの記憶領域を仮想ボリュームに動的に割当てるThin Provisioning機能や、複数のストレージ装置の記憶領域を統合した仮想ボリュームを提供するストレージ装置の仮想化機能等が急速に普及している。これらの機能では論理アドレスと物理アドレスとが固定的に対応づいておらず、動的に対応関係が変化する。また、アドレス変換も複雑化し、1回のアクセスでアドレス変換を行われる回数が増加している。このことからも、データの信頼性をより一層高めるため、論理アドレス異常を検出するニーズは高まっている。
 本発明に係るストレージ装置は、上位装置に提供される論理ボリュームを構成する記憶媒体を有する複数のドライブと、上位装置から論理ボリュームの論理記憶領域を識別する論理アドレスを含むI/O要求とユーザデータとを受信するフロントエンドI/Fと、論理アドレスから記憶媒体の物理記憶領域を識別する物理アドレスへの変換を制御するプロセッサと、物理アドレスに基づいて複数のドライブへのユーザデータの書込み/読出しを制御するバックエンドI/Fと、を有する。そして、ドライブには、物理アドレスと物理アドレスに対応する論理アドレスとに基づいて得られる第1の保証コードがユーザデータに付加されたデータが、記憶媒体の物理アドレスによって指定された物理記憶領域に格納される。
 本発明により、論理アドレスの異常を検出でき、ストレージ装置のデータの信頼性がより向上させることができる。
実施例1に係る計算機システムのハードウェア構成図である。 実施例1に係る計算機システムのドライブの論理構成図である。 実施例1に係る計算機システムの論理構成図である。 実施例1に係るデータブロックの構成図である。 実施例1に係る共有メモリの構成図である。 実施例1に係るローカルメモリの構成図である。 実施例1に係るドライブメモリの構成図である。 実施例1に係るキャッシュ管理テーブルの構成図である。 実施例1に係る構成情報テーブルの構成図である。 実施例1に係るLAによるデータ保証範囲と論理システム構成の対応を示す図である。 実施例1に係るドライブフォーマット処理のフローチャートである。 実施例1に係るホストライト処理のフローチャートである。 実施例1に係るフロントエンドライト処理のフローチャートである。 実施例1に係るバックエンドライト処理のフローチャートである。 実施例1に係るドライブライトコマンドの構造を示す図である。 実施例1に係るライト時MLA検査処理のフローチャートである。 実施例1に係るライト時MLA検査処理のフローチャートである。 実施例1に係るライト時BLA検査処理のフローチャートである。 実施例1に係るホストリード処理のフローチャートである。 実施例1に係るフロントエンドリード処理のフローチャートである。 実施例1に係るバックエンドリード処理のフローチャートである。 実施例1に係るドライブリードコマンドの構造を示す図である。 実施例1に係るリード時MLA検査処理のフローチャートである。 実施例1に係る異常終了処理のフローチャートである。 実施例2に係る論理構成図である。 実施例2に係るLAによるデータ保証範囲と論理システム構成の対応を示す図である。 実施例2に係るデータマッピング構造を示す図である。 実施例2に係るアドレスマッピングテーブルの構成図である。 実施例2に係るLDEV空きブロック管理テーブルの構成図である。 実施例2に係るフロントエンドライト処理のフローチャートである。 実施例2に係るVVOLブロック割り当て処理のフローチャートである。 実施例2に係るバックエンドライト処理のフローチャートである。 実施例2に係るホストリード処理のフローチャートである。 実施例2に係るバックエンドリード処理のフローチャートである。 実施例2に係るVVOLブロック割り当て削除処理のフローチャートである。 実施例2に係るVVOLブロック割り当て変更処理のフローチャートである。
 幾つかの実施例を、図面を参照して説明する。なお、以下に説明する実施例は特許請求の範囲にかかる発明を限定するものではなく、また実施例で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
 なお、以下の説明では、「XXテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていても良い。データ構造に依存しないことを示すために「XXテーブル」を「XX情報」と呼ぶことができる。
 また、以下の説明では、ハードウェアを主語として処理を説明する場合があるが、プログラムをハードウェアの自体、またはハードウェアが有するプロセッサ(例えば、MP(Micro Processor))によって実行することで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インターフェースデバイス(例えばポート)を用いながら行うため、処理の主語がプログラムとされても良い。また、プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであっても良い。
 実施例1に係るストレージシステムを含む計算機システム1の概要を説明する。ストレージシステムは、例えば、図1に示すストレージ装置100により構成される。ストレージ装置100のDKU170には、ドライブ装置180が複数備えられている。ストレージ装置100においては、複数のドライブ装置180の記憶領域により、論理ボリュームが構成される。論理ボリュームはホストコンピュータ10から参照される。
 図1は、実施例1に係る計算機システム1のハードウェア構成図である。 計算機システム1とは、1以上のホスト計算機(以下、ホストという)10と、管理サーバ20と、ストレージ装置100とから構成される。ホスト10、管理サーバ20、ストレージ装置100は、ネットワーク30を介して接続されている。ネットワーク30は、ローカルエリアネットワーク(LAN)であってもよく、ワイドエリアネットワーク(WAN)であってもよい。ホスト10は、例えば、アプリケーションを実行する計算機であり、ストレージ装置100から、アプリケーションで必要なデータを読み込んだり、アプリケーションで作成されたデータを書き込んだりする。管理サーバ20は、計算機システム1を管理するためのアプリケーションを実行する計算機であり、システムの管理処理を実行する管理者により使用される計算機である。ストレージシステムは、例えば、図1に示すストレージ装置100より構成される。ストレージ装置は、DKC(Disk Controller)190とDKU(Disk Unit)170により構成される。DKC190は、1以上のフロントエンドパッケージ(FEPK)110と、保守インタフェース(保守I/F)120と、1以上のマイクロプロセッサパッケージ(MPPK)130と、1以上のキャッシュメモリパッケージ(CMPK)140と、1以上のバックエンドパッケージ(BEPK)150と、内部ネットワーク160とを有する。FEPK110、保守I/F120、MPPK130、CMPK140、及びBEPK150は、内部ネットワーク160を介して接続されている。BEPK150は、複数系統のパス171やスイッチ172を介してDKU170と接続されている。DKU170には、ドライブ装置180が複数供えられている。
 FEPK110は、フロントエンドのインタフェースデバイスの一例であり、1以上のポート111、フロントエンドコントローラ(FEコントローラ)112、DMA(FE DMA)113、フロントエンド転送バッファ(FE DXBF)114を有する。ポート111は、ストレージ装置100を、ネットワーク等を介して種々の装置と接続する。保守I/F120は、ストレージ装置100を管理サーバ20と接続するためのインタフェースである。フロントエンド転送バッファ(FE DXBF)114は、ホスト10から送信されたデータや、ホスト10へ送信するデータを一時的に格納する。FEコントローラ112は、ホスト10との間で各種コマンドや、ライトデータ、リードデータ等の通信を行う。FE DMA113は、FE DXBF114とCM141の間で各種コマンドやデータの通信を行う。
 MPPK130は、マイクロプロセッサ(MP)131と、ローカルメモリ(LM)132とを有する。LM150は、各種プログラムや、各種情報を記憶する。MP131は、LM132に格納されたプログラムを実行して各種処理を実行する。MP131は、BEPK150を介して、各種コマンド(例えばSCSIにおけるリードコマンドやライトコマンドなど)をDKU170のドライブ装置180に送信し、また、DKU170のドライブ装置180から各種コマンドの結果を受信する。また、MP131は、FEPK110を介して、各種コマンドを外部ストレージ装置に送信する。
 CMPK140は、キャッシュメモリ(CM)141と共有メモリ(SM)142を有する。CM141は、ホスト10からドライブ等に書き込むデータ(ライトデータ)や、ドライブから読み出したデータ(リードデータ)を一時的に格納するためのメモリである。SM142は、各種プログラムが処理を行うための制御情報を格納するためのメモリである。
 BEPK150は、バックエンドのインタフェースデバイスの一例であり、1以上のポート151と、バックエンドコントローラ(BEコントローラ)152と、DMA(BE DMA)153と、バックエンド転送バッファ(BE DXBF)154とを有する。ポート151は、ストレージ装置100を、ネットワーク等を介してドライブ装置180と接続する。バックエンド転送バッファ(BE DXBF)154は、ドライブ装置180から送信されたデータや、ドライブ装置180へ送信するデータを一時的に格納する。BEコントローラ152は、DKU170のドライブ装置180との間で各種コマンドや、ライトデータ、リードデータ等の通信を行う。BE DMA153は、BE DXBF154とCM141の間で各種コマンドやデータの通信を行う。
 図2は、実施例1に係る計算機システム1のドライブ装置180のハードウェア構成図である。ドライブ装置180は、1以上のドライブコントローラ181と1以上の記憶デバイス182を有する。ドライブコントローラ181は、1以上のポート183と、キャッシュメモリ184(DMと呼ぶ)と、マイクロプロセッサ185(DMPと呼ぶ)を有する。ドライブ装置180は、スイッチ172とポート183を介して接続されている。記憶デバイス182は、不揮発性の記憶媒体であって、例えば、磁気ディスク、フラッシュメモリ、その他半導体メモリ(PRAM,ReRAM等)等の記憶媒体である。ドライブ装置180は、ストレージ装置100との間では、SCSIコマンド処理の最小単位であるブロック186(例えば、512B)を単位として、データの受け渡しが可能である。また、ドライブコントローラ181を有するドライブ装置180を用いることにより、従来DKC190で行っていた処理をドライブコントローラ181で行うことができ、DKC190の負荷を軽減し、I/O性能の向上等を見込むことができる。しかし、ドライブ装置180に代えて、HDD(Hard Disk Drive)やSSD(Solid State Drive)を用いてることもでき、この際、ドライブコントローラ181が行う演算などの処理は、ドライブコントローラ181に代えてDKC190で行ってもよい。
 図3は、実施例1に係る計算機システム1の論理構成図である。ストレージ装置100は、複数のドライブ装置180(PDEV340と呼ぶ)を束ねて、RAID(Redundant Array of Independence(Inexpensive) Disks)グループ330(PGと呼ぶ)を構成することで、データの冗長性を確保している。たとえば、4個のPDEV340を束ねてPG330を構成する。RAIDにはいくつかのレベル(以下、「RAIDレベル)という)がある。例えば、RAID5では、ドライブ装置に障害が発生したことにより、そのドライブ装置から読み出せなくなったデータをリビルドするために、各データに対して、“パリティ”と呼ばれる冗長な情報(以下、「冗長コード」)が生成され、その冗長コードもドライブ装置に書き込む。RAID5以外にも、RAIDレベルは存在し(例えばRAID1~4、6等)、また、データの冗長化技術として、3重ミラー(Triplication)、パリティを3個用いたトリプルパリティ技術等もある。
PG330を仮想的に1つのボリュームとみなしたものをVDEV320と呼ぶ。LDEV310は仮想的なデバイスで、ホスト10からホストLBAを用いて参照する。また、PDEV340は、物理LBAを用いて参照する。ストレージ装置管理者は、保守I/F120を介してLDEV310を作成する。LDEV310はVDEV320を構成するPDEV340のブロック(PDEV中の記憶領域の一単位)を複数割り当てて構成される。ここで、物理LBA及びホストLBAとは、ブロックを指定するLBAに限定されるものではなく、物理アドレスや論理アドレスなど、それぞれPDEV340とLDEV310の記憶領域を識別できる情報であればよい。また、ストレージシステムにおいて、LDEV310、VDEV320、PDEV340はそれぞれユニークな番号(LDEV#、VDEV#、PDEV#)を持つ。
 図4は、実施例1に係る計算機システム1のデータブロック400の構成図である。
 データは、データブロック400を1単位として、転送され、PDEV340に格納される。データブロック400は、ユーザデータ部(例えば、512B)410と保証コード部420(例えば、8B)から構成されており、保証コード部420の一部をLA領域421として使用し、残りをビットエラー訂正のためのCRC領域422として使用する。ユーザデータ部410と保証コード部420の大きさは任意であり、必ずしもこの通りである必要はない。また、保証コード部420の全領域をLAとして使ってもよい。
 ここで、ホストLBAから計算されるLAをFLAとする。FLAとして、例えば、ホストLBAをそのまま使ってもよいし、ホストLBAのハッシュ値としてもよい。物理LBAから計算されるLAをBLAとする。BLAとして、例えば、物理LBAをそのまま使ってもよいし、物理LBAのハッシュ値としてもよい。FLAとBLAのXOR値をMLAとする。ここで、MLAは必ずしもFLAとBLAのXOR値である必要はなく、例えば、FLAとBLAをLA領域に両方格納してもよい。他にも、MLAは、I/O時にアドレス間違いを起こしていないか、与えられたFLA又は/及びBLAと比較することにより確認できる値であればよい。
 以降、本発明におけるテーブル構造について説明する。下記で説明するテーブルはメモリ使用量や検索時間削減のため、ポインタ構造やハッシュテーブルとしてもよいし、逆引きテーブルを持ってもよい。
 図5は、実施例1に係るSM142内に格納されているテーブルを示す図である。実施例1では、SM142は、CMPK140上に領域を確保するが、例えば、ドライブ装置180、及びLM132等複数の構成の記憶領域を用いて論理的なSM142を構成してもよい。SM142は、キャッシュ管理テーブル1421と、構成情報管理テーブル1422とを格納する。
 図6は、実施例1に係るローカルメモリ132の構成図である。LM132は、ホストI/O処理プログラム1321と、ドライブI/O処理プログラム 1322と、構成情報制御処理プログラム1323と、DMA制御処理プログラム1324と、ドライブフォーマット処理プログラム1325と、LA計算処理プログラム1326と、LA検査処理プログラム2135とを格納する。ホストI/O処理プログラム1321は、ホストリード/ホストライト処理を実行させるためのプログラムである。
 図7は、実施例1に係るドライブ装置180のドライブメモリ184の構成図である。DM184は、I/O処理プログラム1841と、フォーマット処理プログラム1842と、LA計算処理プログラム1843と、LA検査処理プログラム1844とを格納する。I/O処理プログラム1841は、リード/ライト処理を実行させるためのプログラムである。
 図8は、実施例1に係る計算機システム1のキャッシュ管理テーブル1421の構成図である。キャッシュ管理テーブル1421は、LDEV#と、LDEV LBAと、キャッシュメモリの物理のアドレス対応関係を示す情報であり、LDEV#14211はLDEV#を格納し、LDEV LBA14212はLDEV LBAを格納し、キャッシュメモリアドレス14213は対応するLDEV LBAで示されるブロックのデータがキャッシュメモリに格納されている場合、そのデータが格納されているキャッシュメモリ上のアドレスを格納する。例えば、LDEV#2のLDEV LBA0にはキャッシュメモリが割り当てられているため、対応するキャッシュメモリのアドレスがLDEV#2のLDEV LBA0が格納されている行に格納される。LDEV#2のLDEV LBA1には、キャッシュメモリが割り当てられていないため、LDEV#2のLDEV LBA1が格納されている行に、割り当てられていないことを示す定数(列14213におけるNot-allocatedに相当)が格納される。本テーブルにより、MP131は、ホスト10がアクセスに使用したLDEV LBAに対応するブロックのデータがキャッシュ上に存在するか否かを調べることができる。
 図9は、実施例1に係る計算機システム1の構成情報テーブル1422の構成図である。構成情報テーブル1422は、VDEV#14221と、LDEV#14222と、LDEV310のアドレス(ホストLBA)14223と、PDEV#14224と、PDEV340のアドレス(物理LBA)14225との対応関係を示す情報であり、VDEV#を格納する列14221と、LDEV#を格納する列14222と、LDEV LBAを格納する14223と、PDEV#を格納する列14224と、PDEV LBA(物理LBA)を格納する列14225から構成される。ホスト10は、ストレージ装置へのアクセスの際、ホストLBAとして、LDEV LBAを指定するが、本テーブルにより、MP131は、ホスト10がアクセスに使用するLDEV LBAがどの物理LBAに対応するのか調べることができる。
 図10は、実施例1に係る計算機システム1における、LAによるデータ保証概要と論理システム構成の対応を示す図である。ストレージ装置100内のデータ転送において、ホスト10ら参照される論理ボリューム(LDEV310)のもつ論理アドレスから計算される保証コード(以下、FLAと呼ぶ)と、ドライブ装置180の持つ物理アドレスから計算される保証コード(以下、BLAと呼ぶ)を合成した保証コード(以下、MLAと呼ぶ)をデータに付加することで、異常なアドレスに対するI/Oを検出し、データ破壊や誤ったデータの読み込みを防ぐ効果がある。ホスト10がストレージ装置100からデータをリードする際、ドライブ装置180内に目的のデータが存在する場合は、データはドライブ装置180からBE DXBF154へ転送され、その後、BE DXBF154からCM141、CM141からFE DXBF114へ転送され、その後、ポート111を介してホスト10へ転送される。ホスト10がデータへのアクセスに使用するホストLBAを、MP131がSM142上の構成情報テーブル1422を利用して、物理LBAに変換する。物理ドライブ装置180中のデータへのアクセスには物理LBAを使用する。ドライブ装置180中のデータはMLAで保護されている。ドライブ装置180から、BE DXBF154へ転送する際、ドライブ装置180中のDMP185が、アクセスに係るBLAとFLAから得られたMLAと記憶デバイス182から読み出し先に格納されたMLAとが一致する、すなわちMLAが正常であることを確認し、読み出したデータの保証コードをMLAからBLAへ変更する。BE DMA153がデータをBE DXBF154からCM141へ転送する際、BLAが正常であることを確認し、MP131より与えられたFLAをデータに付加する。データをCM141に格納後、MP131はSM142上のキャッシュ管理テーブル1421を更新する(以上バックエンドリード処理、以後BERD処理と言う)。FE DMA113が、CM141上のデータをFE DXBF114に転送する際、FLAが正常であることを確認し、FLAを外す。FE DXBF114に転送されたデータは、FEコントローラ112によりホスト10へ転送される(以上フロントエンドリード処理、以後FERD処理と言う)。目的のデータがCM141上にある場合、FERD処理のみを行う。
 ホスト10がストレージ装置100へデータをライトする際、ホスト10から転送されたライトデータは、FE DXBF114で受信され、FE DMA113でCM141へ転送される。CM141へデータを転送する際、MP131がFE DMA113にホストLBAより計算したFLAを入力し、FE DMA113がデータにFLAを付加した後、FE DXBF114からCM141へデータを転送する。データをCM141に格納後、MP131がキャッシュ管理テーブル1421を更新する(以上フロントエンドライト処理、以後FEWR処理と言う)。CM141からBE DXBF154を経由し、ドライブ装置180へ書き込む際、MP131がホストLBAから物理LBAに変換を行う。CM141からBE DXBF154へ転送する場合、BE DMA153がFLAが正常であることを確認後、MP131から入力されたBLAをデータに付加する。BE DXBF154からドライブ装置180へ転送されたデータは、一時的にDM184に保持され、データに付加されたBLAと、DKC190がドライブ装置180に対して発行するドライブライトコマンドに付加されたFLAと、ドライブライトコマンド中の書き込み先物理LBAから、書き込み先物理LBAに格納されたMLAが正常であることをDMP185が確認した後、DMP185がデータにMLAを付加して書き込みを行う(以上バックエンドライト処理、以後BEWR処理と言う)。
 図11は、実施例1に係る計算機システム1のドライブフォーマット処理のフローチャートである。ドライブフォーマット処理(単にフォーマット処理とも呼ぶ)は、ストレージ装置が保守I/F120を介してドライブフォーマット指示を受信した場合に実行される。
 ドライブフォーマット処理では、MP131が保守I/F120からフォーマット指示を出す受信すると(ステップ1101)、まず始めにフォーマット指示を受け取ったMP131が、BE DMA153に、MLA初期値を付加したフォーマット用データを作成する処理を指示する(ステップ1103)。フォーマット用データは、図4のユーザデータ部410の全領域を0とし、保証コード部420のLA領域421に、MLA初期値として、ドライブ装置の物理アドレスから求めたBLAを記録したものである。ここで、MLA初期値は、必ずしもBLAである必要はなく、初期値だと判別可能な値であればどのような値でもよい。
 BE DMA153は、作成したデータをBE DXBF154に書き込む(ステップ1105)。BE DXBF154に書き込まれたフォーマット用データをBEコントローラ152がドライブ装置180に書き込み(ステップ1107)、ドライブフォーマット処理が完了する。ドライブフォーマット処理が完了すると、ホスト10から送信されたデータをドライブ装置180に書き込むことができるようになる。
 図12は、実施例1に係る計算機システム1のホストライト処理のフローチャートである。ホストライト処理は、ホスト10から送信されたデータをFE DMA113がキャッシュに書き込む処理であるフロントエンドライト処理(ステップ1201。以下、FEWR処理と呼ぶ)と、キャッシュ中のデータをBEコントローラ152がドライブに書き込むバックエンドライト処理(ステップ1203。以下、BEWR処理と呼ぶ)とからなる。
 図13は、実施例1に係る計算機システム1のフロントエンドライト処理のフローチャートである。FEWR処理は、MP131がFEPK110のポート111を介して、ホスト10からライトコマンドを受信した場合に実行される。
 FEコントローラ112がホスト10から送信されたライトデータを受信し、FE DXBF114に書き込む(ステップ1301)。ホスト10から受信し、格納されたFE DXBF114中のライトデータにはLAは付加されていない。次に、MP131がFE DMA113を起動する(ステップ1303)。FE DXBF114からCM141に転送する際、FE DMA113が、MP131から入力されたLDEV LBA(以下、ホストLBAと呼ぶ)を元にFLAを計算し、データに付加する(ステップ1305)。FLA付加時に、同時にCRCチェックを行うが、FLA付加とCRCチェックの順番は問わない。 MP131は、FLAを付加したデータをCM141に書き込み(ステップ1307)、ホスト10に完了報告を送信する(ステップ1309)。
 図14は、実施例1に係る計算機システム1の、バックエンドライト処理のフローチャートである。BEWR処理は、CM141上のライトデータをドライブ装置180に書き込む処理である。BEWR処理は、ホスト10からのライトデータがCM141に書き込まれた時点で同期的に行ってもよいし、CM141への書き込みとは非同期で、MP131の負荷が低いとき、CM141にドライブ装置180に未反映のデータの量や割合がある閾値を超えたとき等に行ってもよい。
 ホスト10から送信されるライトコマンドには、例えば、アクセス対象とするLDEVの識別子であるボリューム番号及びホストLBA(Logical Block Address)が含まれている。MP131は、ボリューム番号及びホストLBAから、SM142上の構成情報テーブル1422を参照して、PG上の対応する物理LBAを求める(ステップ1401)。
 MP131がホストLBAから計算したFLAと、ホストLBAを元にSM142上の構成情報テーブル1422から求めた物理LBAをBE DMA153に入力し、BE DMA153がCM141からBE DXBF154へライトデータの転送を行う(ステップ1403)。BE DMA153が、データの転送を行う際、MP131から入力されたFLAと、転送するライトデータに付加されたFLAとを比較し(ステップ1405)、一致するかどうかを確認する(ステップ1407)。不一致の場合(ステップ1407のN)、管理サーバ20へ異常通知を行い(ステップ1427)、図24で説明する異常終了処理を行う。MP131から入力されたFLAと、転送するライトデータに付加されたFLAとを比較し、確認する処理により、ドライブ装置へ書き込む対象ではないLDEV LBAを持つデータを転送しようとしたことがわかるため、誤ったドライブ装置への書き込みによるデータ破壊を防ぐことができる。書き込み対象が変わってしまう原因としては、キャッシュ管理テーブル1421更新時に、LDEV LBAもしくはキャッシュメモリアドレスが、ソフトウェア不良で意図しない値に書き換えられてしまうことで、LDEV LBAからキャッシュメモリアドレスへのアドレス変換を間違えてしまうことが考えられる。
 BE DMA153は、データに付加されたFLAと、MP131から入力されたFLAの一致する場合(ステップ1407のY)、MP131から入力された物理LBAを基にBLAを計算し、計算したBLAをデータに付加し、CRCチェックを行い、BLAを負荷したデータをBE DXBF154へ転送する(ステップ1409)。
 図15は、実施例1に係る計算機システム1のドライブライトコマンド1500の構造である。ドライブライトコマンド1500は、例えば、データ書込み先となるドライブ装置180の識別子および物理LBAからなる物理アドレス1510、そして、データ書込み先の物理アドレス1510と対応するLDEV LBAより求められたFLA1520が含まれている。なお、ステップ1409において、計算したBLAに代えて、FLAをデータに付加し、ドライブライトコマンド1500に、FLA1520に代えて計算したBLAを含んでもよい。また、FLA1520に代えて論理アドレスを含み、MLA計算時に論理アドレスに基づいてFLAを再計算してもよい。
 再び図14の説明に戻る。MP131は、ドライブ用ライトコマンド1500をBEコントローラ152に入力し、BEコントローラ152を起動する(ステップ1411)。BEコントローラ152は、MP131からの指示により、ドライブライトコマンド1500と、BE DXBF154中のライトデータをドライブ装置180に送信する(ステップ1413)。次に、ドライブコントローラ181が、受信したドライブライトコマンドに格納された物理LBAで参照されるデータに付加されたMLAを読み出す(ステップ1417)。MLAが初期値でなければ(ステップ1419のN)、ドライブ装置180中のDMP185が、図16、図17で示されるMLA検査処理を全ステップ行い、MLA検査を行う(ステップ1420)。MLAが初期値であるか(ステップ1419のY)、MLA検査の結果正常(ステップ1421のY)であれば、ドライブ装置180中のDMPが、ドライブライトコマンドに格納されたFLAと、ドライブライトコマンドに格納された物理LBAから計算されたBLAのXOR値をデータに付加し、ドライブ装置180中の記憶デバイス182に書き込みを行う。書き込み完了後、ドライブ装置180はDKC190に完了を通知し、処理を終了する。MLA検査の結果が異常の場合(ステップ1421のN)、ドライブ装置180はDKC190へ異常を通知し、DKC190が管理サーバ20に異常を通知することで処理を終了する。
 図16は、実施例1に係る計算機システム1のライト時MLA検査処理処理のフローチャートである。ライト時MLA検査処理は、ドライブ装置180がBEコントローラ150より送信されたドライブライトコマンド1500とライトデータを受信したときに実行する。
 ドライブコントローラ181が、ドライブライトコマンド1500に含まれる物理LBAで示される領域に格納されたデータを読み出し、DMP185が、読み出したデータの保証コード部420に格納されたMLAとドライブライトコマンド1500に含まれているFLAのXOR値(BLA1とする)を計算する(ステップ1601)。DMP185は、ドライブライトコマンド1500に含まれている物理LBAから求められるBLA(BLA2とする)とBLA1とを比較し(ステップ1603)、一致するか確認する(ステップ1605)。BLA1とBLA2の値が一致した場合(ステップ1605のY)、ドライブライトコマンド1500で指定された書き込みは、正常なアドレスへの書き込みであると判断する(ステップ1607)。BLA1とBLA2の値が不一致の場合(ステップ1605のN)、異常なアドレスへの書き込みであると判断し、管理サーバ20へ以上を通知する(ステップ1609)。BLA1とBLA2とが一致するか確認することにより、異常なアドレスへの書き込みによるデータの破壊を防ぐことができる。
なお、MLAとFLAのXOR値と、BLAと、の比較でなくともよく、例えば、ドライブライトコマンド1500中の物理LBAから求められたBLAとドライブライトコマンド1500に付加されたFLAとのXOR値と、ドライブ装置中に保存されていたMLAと、の比較を行ってもよい。また、ドライブ装置中に保存されていたMLAとドライブライトコマンド1500に含まれる物理LBAから計算されたBLAとのXOR値と、ドライブライトコマンド1500に含まれるFLAと、の比較を行ってもよい。
なお、MLA検査を行うのは図2のようなドライブ装置でなくてもよく、DKC190が行ってもよい。その場合、ドライブライトコマンド1500に含まれる物理LBAで示されるブロックをCM141上に読み込み、MP131がMLA検査処理を行う。ここで、読み込む先はCM141である必要はなく、BE DXBF154でもよい。また、MLA検査処理を行うのはMP131である必要はなく、BE DMA153やBEコントローラ152であってもよい。
 図17は、実施例1に係る計算機システム1のライト時MLA検査処理処理のフローチャートである。ライト時MLA検査処理は、ドライブ装置180がDKC190より送信されたドライブライトコマンド1500とライトデータを受信したときに実行する。
 ドライブコントローラ181が、ドライブライトコマンド1500に含まれる物理LBAで示されるデータを読み出し、DMP185が、読み出したデータの保証コード部に格納されたMLAとドライブライトコマンド1500に含まれているFLAのXOR値(BLA1とする)を求め(ステップ1701)、ライトデータに付加されているBLA(BLA2とする)を比較する(ステップ1703)。BLA1とBLA2とが一致するか確認し(ステップ1705)、2つの値が一致した場合(ステップ1705のY)、ドライブライトコマンド1500で指定された書き込みは、正常なアドレスへの書き込みであると判断する(ステップ1707)。BLA1とBLA2とが不一致の場合(ステップ1705のN)、異常なアドレスへの書き込みであると判断し、管理サーバへ以上なアドレスへの書き込みを通知する。(ステップ1709)。このライト時MLA検査処理により、アドレス変換間違いよるアドレス間違いを検出でき、異常なアドレスへの書き込みによるデータの破壊を防ぐことができる。アドレス変換間違いは、例えば、図8のキャッシュ管理テーブルの更新時に、ソフトウェア不良により、LDEV LBAもしくはキャッシュアドレスが不正な値に書き換わってしまうこと等で発生する。
 なお、MLAとFLAのXOR値と、BLAと、の比較しなくともよい。例えば、ライトデータ中のBLAとドライブライトコマンド1500に付加されたFLAとのXOR値と、ドライブ装置中に保存されていたMLAと、の比較を行ってもよいし、ドライブ装置中に保存されていたMLAとライトデータに付加されたBLAとのXOR値と、ドライブライトコマンド1500に含まれるFLAと、の比較を行ってもよい。
 なお、MLA検査を行うのは図2のようなドライブ装置180でなくてもよく、DKC190が行ってもよい。その場合、ドライブライトコマンド1500に含まれる物理LBAで示されるブロックをCM141上に読み込み、MP131がMLA検査処理を行う。ここで、読み込む先はCM141である必要はなく、BE DXBF154でもよい。また、MLA検査処理を行うのはMP131である必要はなく、BE DMA153やBEコントローラ152であってもよい。また、MLA検査をドライブコントローラ181で行うことにより、DKC190のMLA検査処理にかかる負荷を減らすことができ、I/O性能の向上等が見込める。一方、MLA検査をDKC190で行うことにより、検査処理を行うドライブコントローラ181を有さない市販のHDDやSSDを用いることができる。
 MLA検査処理は、少なくとも、図16と図17で示した処理のいずれか一方を実行することで異常アドレスへの書き込みを検出できる。図16と図17で示した処理の両方行った場合、異常アドレスへの書き込みを検出する能力が向上し、より信頼性が向上する効果がある。また、一層の信頼性向上のため、図16と図17の処理に加えて、図18にて後述するBLA処理を追加で行ってもよい。
 図18は、実施例1に係る計算機システム1のライト時BLA検査処理のフローチャートである。ライト時MLA検査処理は、ドライブ装置180がDKC190より送信されたドライブライトコマンド1500とライトデータを受信したときに実行する。
 DMP185が、ドライブライトコマンド1500に含まれる物理LBAから計算されるBLA(BLA1とする)と、ライトデータに付加されたBLA(BLA2とする)を比較する(ステップ1801)。BLA1とBLA2とが一致しているか確認し(ステップ1803)、一致した場合(ステップ1803のY)、ドライブライトコマンド1500で指定された物理LBAが正常であると判断する(ステップ1805)。BLA1とBLA2とが一致しない場合(ステップ1803のN)、異常なアドレスへの書き込みであると判断する(ステップ1807)。
 前述したとおり、この処理だけではMLA検査処理にならないが、信頼性向上のために、図16と図17で示したMLA検査処理に加えて行ってもよい。MLA検査処理とは、従来のLA検査処理による書き込み先アドレスの保証に加えて、アドレス変換を行う前のアドレスから計算される保証コードで、アドレス変換の結果を保証するものであり、アドレス変換を行っていないLDEV LBAから計算されるFLAを検査に利用しなければならない。そのため、図16と図17のいずれかの処理は必須である。図18の処理はアドレス変換の結果を保証しないため必須ではないが、書き込み先の物理LBAの保証を行うため、追加で行うことで信頼性向上を見込める。
 MLA検査を通過したら、ドライブライトコマンド1500に付加されたFLAとBLAのXOR値を、ライトデータのLA領域に格納し、ドライブ装置180の記憶デバイス182への書き込みを行う(図14のステップ1419)、書き込みが完了後にDKC190へ処理完了を通知し、バックエンドライト処理を終了する。
 図19は、実施例1に係る計算機システム1のホストリード処理のフローチャートである。ホストリード処理は、MP131がFEPK110のポート111を介して、ホスト10からリードコマンドを受信した場合に実行される(ステップ1901)。
 ホスト10からのリードコマンドには、例えば、アクセス対象とするLDEVの識別子であるボリューム番号及びホストLBAが含まれている。ボリューム番号及びホストLBAから、共有メモリ上のキャッシュ管理テーブル1421を参照し、CM141上のアドレスを求める。MP131は、CM141上にリードコマンドで指定されたデータがあるか確認する(ステップ1903)。CM141上にデータがない場合(ステップ1903のN)、MP131は、ドライブ装置180から読み込んだデータをCM141に書き込む処理であるバックエンドリード処理を行う(ステップ2005。以下、BERD処理と呼ぶ)。BERD処理の詳細は図21で説明する。CM141上にデータがある場合(ステップ1903のY)または、BERD処理が完了すると、MP131は、CM141中のデータをホスト10に送信するフロントエンドリード処理(ステップ1907。以下、FERD処理と呼ぶ)を行う。FERD処理の詳細は図20で説明する。
 図20は、実施例1に係る計算機システム1のフロントエンドリード処理のフローチャートである。MP131は、リードコマンド中のホストLBAと、ホストLBAから計算したFLAを入力し、FE DMA113を起動する(ステップ2001)。FE DMA113は、ホストリードコマンドに対応するCM141上のリードデータに関して、入力されたFLAと、リードデータに付加されたFLAとを比較する(ステップ2003)。FE DMA113は、入力されたFLAと、リードデータに付加されたFLAとが一致するか確認する(ステップ2005)。入力されたFLAと、リードデータに付加されたFLAとが一致する場合(ステップ2005のY)、FE DMA113はリードデータのFLAを削除し、CRCチェックを行った後、FE DXBF114に転送する(ステップ2007)。CRCチェックとFLA削除は順不同である。また、入力されたFLAと、リードデータに付加されたFLAとが一致しない場合(ステップ2005のN)は、異常なアドレスへの書き込みであると判断する(ステップ2013)。ここでのFLA検査により、異常なアドレスへデータが書き込まれていることを検出でき、ホスト10へ異常なデータを転送しないようにできるため、ストレージ装置100の信頼性向上に効果がある。
 FE DXBF114へのデータの転送完了後、MP131がFEコントローラ112を起動し、FEコントローラ112が、FEPK110のポート110を介して、ホスト10にリードデータを送信する(ステップ2009)。ホスト10へリードデータ送信後、MP131が完了通知をホスト10へ送信し、FERD処理を終了する(ステップ2011)。
 図21は、実施例1に係る計算機システム1のバックエンドリード処理のフローチャートである。BERD処理は、CM141上にリードデータが存在しない場合に、ドライブ装置180からCM141上にリードデータを読み出すときの処理である。
 図22は、実施例1に係る計算機システム1のドライブリードコマンド2200の構造である。ドライブリードコマンドは、例えば、アクセス対象とするドライブ装置180の識別子および物理LBAからなる物理アドレス2210、そして対応するホストLBAから求められたFLA2220が含まれている。
 再び、図21に戻る。MP131は、構成情報テーブル1422から物理LBAを取得し、ホストLBAからFLAを計算し、FLAを付加したドライブリードコマンド2200を作成する(ステップ2201)。MP131は、BEコントローラ152にドライブリードコマンド2200を入力し、BEコントローラ152を起動する(ステップ2103)。MP131からの指示により、BEコントローラ152は、ドライブリードコマンド2200をドライブ装置180へ送信する(ステップ2105)。ドライブリードコマンド2200を受信すると、ドライブコントローラ181は、リード時MLA検査処理を行う(ステップ2109)。
 図23は、実施例1に係る計算機システム1のリード時MLA検査処理のフローチャートである。リード時MLA検査処理は、ドライブ装置180がDKC190より送信されたドライブリードコマンド2200を受信したときに実行する。
 ドライブコントローラ181が、ドライブリードコマンドに含まれる物理LBAで示されるデータを読み出し、DMP185が、読み出したデータの保証コード部に格納されたMLAとドライブリードコマンド2200に含まれるFLAのXOR値(BLA1とする)を計算する(ステップ2301)。DMP185が、計算したXOR値と、ドライブリードコマンドに含まれる物理LBAから計算されるBLA(BLA2とする)を比較する(ステップ2303)。BLA1とBLA2との値が一致しているか確認し(ステップ2305)、一致した場合(ステップ2305のY)、ドライブリードコマンド2200で指定された読み込みは、正常なアドレスへの読み込みであると判断する(ステップ2307)。BLA1とBLA2とが不一致の場合(ステップ2305のN)、異常なアドレスの読み込みであると判断する(ステップ2309)。リード時MLA検査処理により、異常なアドレスからの読み込みを検出でき、異常なアドレスからの読み込みを防ぐことができる)。
 ここで、バックエンドライト処理時と同様にして、ストレージ装置100がMLA検査処理を行ってもよい。
 再び、図21に戻る。ドライブコントローラ181は、リード時MLA検査処理を通過したか確認し(ステップ2111)、MLA検査を通過したら(ステップ2111のY)、リードデータにドライブリードコマンド2200に含まれる物理LBAから計算したBLAをデータに付加し、DKC190へ転送する(ステップ2113)。BEコントローラ152が、ドライブ装置180から転送されたリードデータをBE DXBF154に格納した(ステップ2115)後、MP131が、BE DMA153にリード対象の物理LBAから計算したBLAと共有メモリ上の構成情報テーブルから得たホストLBAを入力し、BE DMA153を起動する(ステップ2117)。
 BE DMA153は、BE DXBF154からCM141へリードデータを転送する際、BE DXBF154中のリードデータに付加されたBLAと、MP131から入力されたBLAとを比較する(ステップ2119)。リードデータに付加されたBLAと、MP131から入力されたBLAとが一致するか確認し(ステップ2121)、一致したら(ステップ2121のY)、BE DMA153はBE DXBF154中のリードデータに、MP131から入力されたホストLBAより計算したFLAを付加し、CRCチェックを行った後、CM141への書き込み(ステップ2123)、バックエンドリード処理を終了する。ここでも、CRCチェックとFLA付加は順不同である。また、リードデータに付加されたBLAと、MP131から入力されたBLAとが一致ない場合(ステップ2121のN)、管理サーバに異常を通知し(ステップ2125)、図24で説明する異常終了処理を行う。
 図24は、実施例1に係る計算機システム1のLA不一致の場合の処理のフローチャートである。LA不一致時は、ストレージ装置100が、管理I/F120を通じて、管理者にLA不一致を検出したことを通知する。BE DMA153がCM141からBE DXBF154にデータを転送する際、または、FE DMA113がCM141からFE DXBF114へデータを転送する際、MP131がデータに付加されたFLAと、MP131から入力されたFLAが一致するかどうかをチェックし、不一致時はBE DMA153またはFE DMA153がMP131にFLA異常を通知する。FLA異常通知を受けたMP131は、管理サーバ20に管理I/F120を通じてFLA異常を通知する(ステップ2401のY、ステップ2403)。MP131がドライブ装置180からMLA異常通知を受けた場合、管理サーバ20に管理I/F120を通じてBLA異常を通知する(ステップ2405のY、ステップ2407)。BE DXBF154からCM141にデータを送る際、または、BE DXBF154からドライブ装置180にデータを転送する際、BE DMA153が、データに付加されたBLAと、MP131から入力されたBLAが一致するかどうかをチェックし、不一致時はBE DMA153がMP131にBLA異常を通知する。
 実施例2に係るストレージシステムを含む計算機システム1の概要を説明する。実施例2では、実施例1と同様のハードウェア構成用い、共通処理も実行するため、実施例1との差分のみ説明し、同一部分は割愛する。
 図25は、実施例2に係る計算機システム1の、論理システム構成図である。
ストレージ装置100は、LDEV310を複数束ねて、論理的な記憶容量の集合であるプール350を構成する。
プール350内には仮想ボリューム(VVOL)360が複数存在する。VVOL360は、仮想的なデバイスで、ホスト10から参照する。ストレージ装置100の管理者は、保守I/F120を介して、任意のサイズのVVOL360を作成する。このサイズは、実際のドライブの合計容量に依存しない。ホスト10からI/OアクセスがあったVVOL360の仮想的な一記憶領域(VVOLブロック)に対して、MP131がLDEV310の一記憶領域(LDEVブロック)を動的に割り当てる。割り当て後、VVOL LBAとLDEV LBAの対応を共有メモリ142上のアドレスマッピングテーブル1423に記憶する。
 図26は、実施例2に係る計算機システム1における、LAによるデータ保証概要と論理システム構成の対応を示す図である。ストレージ装置100内のデータ転送において、ホスト10が参照する論理ボリューム(VVOL)のもつ論理アドレスから計算される保証コード(以下、FLAと呼ぶ)と、ドライブ装置の持つ物理アドレスから計算される保証コード(以下、BLAと呼ぶ)を合成した保証コード(以下、MLAと呼ぶ)をデータに付加することで、異常なアドレスに対するI/Oを検出し、データ破壊や誤ったデータの読み込みを防ぐ効果がある。
 ホスト10がストレージ装置100からデータをリードする際、ドライブ装置180内に目的のデータが存在する場合は、データはドライブ装置180からBE DXBF154へ転送され、その後、BE DXBF154からCM141、CM141からFE DXBF114へ転送され、その後、ポート111を介してホスト10へ転送される。ホスト10がデータへのアクセスに使用するホストLBA(VVOL LBA)を、MP131がSM142上のアドレスマッピングテーブル1423を利用してLDEV LBAに変換し、変換して得たLDEV LBAを、構成情報テーブル1421を利用して、物理LBAに変換する。物理ドライブ装置180中のデータへのアクセスには物理LBAを使用する。ドライブ装置180中のデータはMLAで保護されている。ドライブ装置180から、BE DXBF154へ転送する際、ドライブ装置180中のDMP185が、DKC190がドライブ装置180へ発行するドライブリードコマンド1500に格納された物理LBA、FLAを利用して、MLAが正常であることを確認し、保証コードをMLAからBLAへ変更する。BE DMA153がデータをBE DXBF154からCM141へ転送する際、BLAが正常であることを確認し、MP131よりVVOL LBAを利用して計算されたFLAをデータに付加する。データをCM141に格納後、MP131はSM142上のキャッシュ管理テーブルを更新する(以上シン・プロビジョニングバックエンドリード処理、以後Thin-pro BERD処理と言う)。FE DMA113が、CM141上のデータをFE DXBF114に転送する際、FLAが正常であることを確認し、FLAを外す。FE DXBF114に転送されたデータは、FEコントローラ112によりホスト10へ転送される(以上シン・プロビジョニングバックフロントエンドリード処理、以後Thin-pro FERD処理と言う)。目的のデータがキャッシュ上にある場合、Thin-pro FERD処理のみを行う。
 ホスト10がストレージ装置100へデータをライトする際、ホスト10から転送されたライトデータは、FE DXBF114で受信され、FE DMA113でCM141へ転送される。CM141へデータを転送する際、MP131がFE DMA113にホストLBA(VVOL LBA)より計算したFLAを入力し、FE DMA113がデータにFLAを付加した後、FE DXBF114からCM141へデータを転送する。データをCM141に格納後、MP131がキャッシュ管理テーブルを更新する(以上シン・プロビジョニングフロントエンドライト処理、以後Thin-pro FEWR処理と言う)。CM141からBE DXBF154を経由し、ドライブ装置180へ書き込む際、MP131がSM142上のアドレスマッピングテーブル1423を用いて、ホストLBAからLDEV LBAに変換し、変換して得たLDEV LBAを、構成情報テーブル1421を利用して、物理LBAに変換する。CM141からBE DXBF154へ転送する場合、BE DMA153がFLAが正常であることを確認後、MP131から入力されたBLAをデータに付加する。BE DXBF154からドライブ装置180へ転送されたデータは、一時的にDM184に保持され、データに付加されたBLAと、DKC190がドライブ装置180に対して発行するドライブライトコマンドに付加されたFLAと、ドライブライトコマンド1500中の書き込み先物理LBAから、書き込み先物理LBAに格納されたMLAが正常であることをDMP185が確認した後、DMP185がデータにMLAを付加して書き込みを行う(以上シン・プロビジョニングバックエンドライト処理、以後Thin-pro BEWR処理と言う)。
 図27は、実施例2に係る計算機システム1のデータマッピング構造図である。
 ホスト10により認識可能なVVOL360は、複数のVVOLブロック361により構成される。VVOLブロック361には、LDEV310-1、LDEV310-2のLDEVブロック311-1、LDEVブロック311-2が割り当てられる。この関係をページマッピングと呼び、SM142上のアドレスマッピングテーブル1423により、MP131が動的に関係を管理する。VVOL360は、ストレージ装置100において、各VVOL360を識別する識別子であるユニークな番号(VVOL#)を持つ。
 図28は、実施例2に係る計算機システム1のアドレスマッピングを管理するアドレスマッピングテーブル1423を示す図である。実施例2において、ホスト10はデータへのアクセスにVVOL LBAを利用する。アドレスマッピング管理テーブルは、Pool#14231と、VVOL#14232と、VVOL LBA14233と、LDEV#14234と、LDEV LBA14235の対応関係を示す情報である。本テーブルにより、MP131は、ホスト10がアクセスに使用したVVOL LBAに対応するブロックが、どのLDEV LBAに対応するのかを調べることができる。
 図29は、実施例2に係る計算機システム1のLDEV割当ブロックを管理するLDEV空きブロック管理テーブル1424を示す図である。LDEV割当ブロック管理テーブル1424は、Pool#を格納する列14241と、LDEV#を格納する列14242と、LDEV LBAを格納する列14243と、当該LDEV LBAで識別されるブロックがVVOLブロックに割当てられているか否かを示す割り当てフラグを格納する列14244からなり、SM142上に格納されている。例えば、Pool#0を構成するLDEV#1のLDEV LBA1には、既にVVOLへ割り当てられていることを示すフラグが立っている。VVOLへ割り当てられていない場合、Pool#0を構成するLDEV#1のLDEV LBA3のように、割り当てしていないことを示す「Not-allocated」が格納される。
 LDEV割当ブロック管理テーブルは、Pool#と、LDEV#と、LDEV LBAと、使用中か否かの対応関係を示す情報である。本テーブルにより、MP131は、VVOLにLDEVブロックを割り当てる際、割り当て可能なLDEVブロックを調べることができる。
 実施例2に係る計算機システム1のホストライト処理は、実施例1に係る計算機システム1と同じく、FEWR処理(実施例2ではThin-pro FEWR処理と呼ぶ)とBEWR処理(実施例2では、Thin-pro BEWR処理と呼ぶ)から構成される。以後、実施例1との差分のみ説明する。
 図30は、実施例2に係る計算機システム1の、FEWR処理(Thin-pro FEWR処理)のフローチャートである。FEWR処理は、ストレージ装置100がホスト10からホストライトコマンドを受信したときに実行する処理である。
 MP131がホストライトコマンドをホスト10から受領すると(ステップ3001)、MP131は、ホストライトコマンド内のホストLBAで示されるライトの対象となったVVOLブロックに、共有メモリ142上のLDEV割当ブロック管理テーブル1424を参照し、LDEVブロックが割り当てられているか判定する(ステップ3003)。VVOLブロックにLDEVブロックが割り当てられている場合(ステップ3003でN)、実施例1の図13におけるFEWR処理を行う(ステップ3013)。
 割り当てが必要な場合(ステップ3003でY)、MP131が割り当てられる、すなわちいずれのVDEVブロックにも割当てられていないLDEVブロックが存在するかを判定する(ステップ3005)。割当て可能なLDEVブロックが存在する場合(ステップ3005でY)、図31で説明する割り当て処理を行い(ステップ3009)、その後FEWR処理を行う(ステップ3013)。割当て可能なLDEVブロックが存在しない場合(ステップ3005でN)、ストレージ装置100は、ライトデータ送信が不可能であることをホスト10に通知する(ステップ3013)。
 図31は、実施例2に係る計算機システム1の、VVOLブロック割り当て処理のフローチャートである。MP131が、SM142上のLDEVブロック割当管理テーブル1424を参照し、割り当て可能なLDEVブロックのLDEV LBAを求め、求めたLDEV LBAと構成情報テーブル1422から、物理LBAを求める。。求めた物理LBAと、物理LBAを割り当てるVVOL LBAをBE DMA153に入力し、BE DMA153を起動する(ステップ3101)。BE DMA153は、図4のユーザデータ部410の全領域を0とし、保証コード部420のLA領域421に、VVOL LBAから計算したFLAと、物理LBAから計算したBLAのXOR値(MLA)を格納した初期割り当て用データを作成し、BE DXBF154へ書き込む(ステップ3103)。
 MP131が、BEコントローラ152にドライブライトコマンド1500を入力し、BEコントローラ152を起動し(ステップ3105)、BE DXBF154に書き込まれた初期割り当て用データと、VVOL LBAから計算されたFLAを含むドライブライトコマンド1500を、ドライブ装置180に送信する(ステップ3107)。ドライブコントローラ181は、ドライブライトコマンド1500と初期割り当て用データとをDM184に格納し(ステップ3109)、ドライブライトコマンド1500中に含まれる書込み先の物理LBAが示すのブロックを読み出し(ステップ3111)、MLAが初期値かどうかを確認する(ステップ3113)。読み出たMLAが初期値の場合(ステップ3113のY)、データの保証コード部に、コマンドに付加されたFLAと、ドライブコントローラ181が計算したBLAのXOR値をLA領域421に格納し、記憶デバイス182に初期割り当て用データの書き込みを行う(ステップ3115)。
ここで、MLAが初期値でない場合(ステップ3113のN)、既に他のVVOL LBAに割り当てられていることがわかる。そのため、○○は、○○へ異常を通知し(ステップ3121)、初期値でない場合、図24の異常終了時処理を実行する。VDEV LBAへのLDEV LBAの割当ての際に、MLAが初期値か否か確認することで、割り当て済み領域へ別のVVOL LBAを割り当てることによるデータ破壊を防ぐことができる(ステップ3115のN)。
 初期割り当て用データの書き込みが終了すると、ドライブ装置180はDKC190へ書き込み完了を通知する(ステップ3117)。書き込み完了通知を受け取ったストレージ装置100中のMP131は、アドレスマッピングテーブル1423を更新し(ステップ3119)、VVOLブロック割り当て処理を終了する。
 図32は、実施例2に係る計算機システム1の、BEWR処理(Thin-pro BEWR処理)のフローチャートである。実施例1との差分のみ説明する。まず、Thin-pro BEWR処理では、CM141から、BE DXBF154へライトデータを転送する際、MP131が、VVOL LBAとSM142上のアドレスマッピングテーブル1423から、LDEV LBAを求める(ステップ3201)。MP131が、求めたLDEV LBAと共有メモリ142上の構成情報管理テーブル1422から、物理LBAを求め(ステップ3203)、実施例1のBEWR処理を行う(ステップ3205)。
 図33は、実施例2に係る計算機システム1の、ホストリード処理(Thin-pro リード処理)のフローチャートである。MP131は、ホスト10からホストリードコマンドを受領すると(ステップ3301)、SM142上のアドレスマッピングテーブル1423から、ホスト10からリード要求のあったVVOL LBAにLDEV LBAが割り当てられているかどうかを調べる(ステップ3303)。
未割当ブロックへのリード要求であった場合(ステップ3303のN)、MP131が、図4のユーザデータ部410が全て0のデータ作成をFE DMA113に指示する。FE DMA113が生成したデータをホスト10へ送信(ステップ3305)し、リード処理を終了する。
 割当済領域へのリード要求であった場合(ステップ3303のY)、MP131が、SM142上のキャッシュ管理テーブル1421より、CM141上に対応するデータがあるか否かを調べる(ステップ3307)。実施例2の場合、キャッシュ管理テーブルのLDEV#とLDEV LBAは、VVOL#とVVOL LBAに変更される。CM141上に存在する場合(ステップ3307のY)、実施例1と同様のFERD処理を行う(ステップ3311)。CM141上に対応するデータが存在しない場合、Thin-pro BERD処理を行い(ステップ3309)、実施例1と同様のFERD処理を行う(ステップ3311)。
 図34は、実施例2に係る計算機システム1の、BERD(Thin-pro BERD)処理のフローチャートである。MP131が、ドライブリードコマンド1500を作成するため、VVOL LBAと、SM142上のアドレスマッピングテーブル1423から、LDEV LBAを取得する(ステップ3401)。MP131が、取得したLDEV LBAと、共有メモリ142上の構成情報テーブル1422から、物理LBAを取得する(ステップ3402)。物理LBAを取得したら、実施例1と同様のBERD処理を、図22のステップ2201からステップ2215まで行う。その後、MP131が、物理LBAと、共有メモリ142上の構成情報テーブル1422から、LDEV LBAを取得する(ステップ3407)。取得したLDEV LBAと、SM142上のアドレスマッピングテーブル1423から、VVOL LBAを取得する(ステップ3409)。VVOL LBA取得後、実施例1と同様のBERD処理を図22のステップ2215からステップ2223まで行い、その後、実施例1と同様のFERD処理を行う。
 図35は、実施例2にかかる計算機システム1におけるVVOLブロック割り当て削除処理のフローチャートである。VVOLブロック割り当て削除処理は、ドライブ装置180の物理容量を効率よく使うための処理である。すなわち、図27中のLDEVブロック311-1を割り当てたVVOLブロック361は、ホスト10がVVOLブロック361に書き込みを行っていなくとも、LDEVブロック311-1に対応する物理LBAに、VVOLブロック2361を示すVVOL LBA情報を利用したMLAが書き込まれているため、VVOLブロック361に対する読み込み/書き込み以外を受け付けることができない。従って、未使用のVVOLブロックに対して割り当てらているLDEVブロックを他のVVOLブロックへ再利用するため、VVOLブロック割り当て削除処理が必要となる。VVOLブロック割り当て処理の開始契機は、ホスト10がVVOLブロックを削除した場合等が挙げられる。
 VVOLブロック割り当て削除処理では、ストレージ装置100は、図31のVVOLブロック割り当て処理のステップ3105からステップ3111を実行する(ステップ3501)。ドライブコントローラ181は、MLAが初期値かどうかを確認し(ステップ3503)、割当削除対象となる物理LBAのMLAが初期値でない場合(ステップ3503のN)、実施例1におけるライト時MLA検査処理を行う(ステップ3505)。実施例1におけるライト時MLA検査処理と同様に、図16及び図17の処理の両方またはいずれか一方の処理を実施するとともに、任意で図18の処理を行うことができる。MLA検査処理の結果が正常か否か確認し(ステップ3507)、MLAが正常であれば(ステップ3507のY)、BE DMA154が対象のブロックの初期化処理(図11のステップ1107)を行う(ステップ3509)。また、MLAが異常と判定された場合(ステップ3507のN)、MP131はVVOLブロック割り当て削除処理を異常終了する(ステップ3511)。
 図36は、実施例2にかかる計算機システム1におけるVVOLブロック割り当て変更処理のフローチャートである。VVOLブロック割り当て変更処理は、Pool350中のLDEV310数の増減により、LDEV310間でVVOL360に割り当てたLDEVブロック量に偏りが発生した場合や、Pool350中のLDEV310削除に伴い、VVOL360に割り当て済みのLDEVブロックをPool350中の別のLDEVブロックへ変更させる場合に行われる。ストレージ装置100は、移動対象のLDEVブロックのデータを、CM141へ実施例1のBERD処理(図22、ステップ2201からステップ2223)で読み込みを行う(ステップ3601)。CM141へデータを読み込んだら、移動元のLDEVブロックの割当削除処理(図35の全ステップ)を行う(ステップ3603)。
 割当削除後、移動先のLDEVブロックに対してVVOLブロック割り当て処理(図31の全ステップ)を行う(ステップ3605)。Thin-pro BEWR処理(図32の全ステップ)を行い、キャッシュ中のLDEVブロックをドライブ装置に書き込む(ステップ3607)。VVOLブロック割り当て変更時、SM142上のマッピングテーブル1423の更新を行うが、更新直前にリード要求、ライト要求が発生した場合、更新前のVVOLブロック割り当て情報を利用してリード/ライト処理を行う可能性があり、正確なデータを読み出せなかったり、別のデータを破壊してしまう課題がある。この課題の原因は、アドレス変換を行うため、ホストLBAと物理LBAの対応関係が不変ではないことにある。本願発明では、これまでの物理LBAから作成されるBLAに加えて、ホストLBAから作成されるFLAも使用することで、ホストLBAと物理LBAの対応関係が変化しても、アドレス変換間違いを検出できる効果がある。
 以上、幾つかの実施例を説明したが、本発明は、これらの実施例に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
 また、上述したいくつかの実施形態によれば、論理アドレスの異常を検出することができ、よりデータの信頼性を高め、ミッションクリティカルな業務にも向くストレージ装置を提供することができる。また、演算を計算するドライブ装置180を搭載したストレージ装置に適用することにより、DKC190の負荷を増加させることなく、すなわち、高速なI/O性能を保ったままデータの信頼性を向上させることができる。
 1 ストレージシステム
 100 ストレージ装置
 110 フロントエンドパッケージ
 120 保守インタフェース
 130 マイクロプロセッサパッケージ
 140 キャッシュメモリパッケージ
 150 バックエンドパッケージ
 160 内部ネットワーク
 170 Disk Unit
 180 ドライブ装置
 190 Disk Controller

Claims (14)

  1.  上位装置に提供される論理ボリュームを構成する記憶媒体を有する複数のドライブと、 前記上位装置と接続され、前記上位装置から前記論理ボリュームの論理記憶領域を識別する論理アドレスを含むI/O要求とユーザデータとを受信するフロントエンドI/Fと、
     前記フロントエンドI/Fと接続され、前記論理アドレスから前記記憶媒体の物理記憶領域を識別する物理アドレスへの変換を制御する第1のプロセッサと、
     前記第1のプロセッサと前記複数の記憶媒体と接続され、前記物理アドレスに基づいて前記複数のドライブへの前記ユーザデータの書込み/読出しを制御するバックエンドI/Fと、
    を有するストレージ装置であって、
     前記ドライブには、前記物理アドレスと前記物理アドレスに対応する論理アドレスとに基づいて得られる第1の保証コードが前記ユーザデータに付加されたデータが、前記記憶媒体の前記物理アドレスによって指定された物理記憶領域に格納されることを特徴とするストレージ装置。
  2.  請求項1に記載のストレージ装置であって、
     前記ドライブは、前記第1の保証コードを計算する第2のプロセッサを有し、
     前記第2のプロセッサは、データの読出し/書込みコマンドを受領すると、
     前記読出し/書込みコマンドで指定された物理アドレスからデータを読み出し、
     当該物理アドレスと、当該物理アドレスに対応する論理アドレスと、前記読み出したデータに付加された前記第1の保証コードと、に基づいてアドレス異常を検出することを特徴とするストレージ装置。
  3.  請求項2に記載のストレージ装置であって、
     前記第1の保証コードは、前記物理アドレスに基づいて計算された第2の保証コードと当該物理アドレスに対応する前記論理アドレスに基づいて計算された第3の保証コードとのXOR値であることを特徴とするストレージ装置。
  4.  請求項3に記載のストレージ装置であって、
     前記バックエンドI/Fは、
     前記第2の保証コードを前記ユーザデータに付加し、
     前記第2の保証コードを前記ユーザデータに付加したデータと、前記物理アドレス及び前記第3の保証コードを含むコマンドと、を前記ドライブに送信し、
     前記第2のプロセッサは、
     前記第2の保証コードと前記第3の保証コードとから前記第1の保証コードを計算し、 前記第2の保証コードに代えて前記第1の保証コードを前記ユーザデータに付加することを特徴とするストレージ装置。
  5.  請求項2に記載のストレージ装置であって、
     前記上位装置から書込み要求と前記ユーザデータとを受信すると、
     前記フロントエンドI/Fは、前記書込み要求に係る論理アドレスに基づいて第3の保証コードを計算し、前記第3の保証コードを前記ユーザデータに付加し、
     前記第1のプロセッサは、
     前記書込み要求に係る論理アドレスを前記物理アドレスに変換し、
     前記書込み要求に係る論理アドレスに基づいて第4の保証コードを計算し、
     前記バックエンドI/Fは、
     前記第3の保証コードと前記第4の保証コードが一致することを確認すると、前記物理アドレスに基づいて第2の保証コードを計算し、前記第2の保証コードをユーザデータに付加し、
     前記物理アドレス及び前記第3の保証コードを含むコマンドと、前記第2の保証コードが付加されたデータとを前記ドライブに送信することを特徴とするストレージ装置。
  6.  請求項2に記載のストレージ装置であって、
     前記第2のプロセッサは、
     フォーマット処理を指示するコマンドを受信すると、フォーマットデータに保証コードの初期値として定められた値を付加した初期データを前記記憶媒体に格納し、
     データの読出し/書込みコマンドを受領すると、読み出したデータが前記初期データの場合、前記アドレス異常を検出処理を行わないことを特徴とするストレージ装置。
  7.  請求項2に記載のストレージ装置であって、
     前記複数の記憶媒体は、プールボリュームを構成し、
     前記論理ボリュームの論理記憶領域は、前記上位装置からの書込み要求に応じて、前記プールボリュームのプール記憶領域が動的に割り当てられ、
     前記第1のプロセッサは、
     前記論理アドレスを対応する前記プールボリュームのアドレスに変換し、
     当該プールボリュームのアドレスを前記物理アドレスに変換することを特徴とするストレージ装置。
  8.  ストレージ装置の制御方法であって、
     複数のドライブに含まれる記憶媒体から構成される論理ボリュームを上位装置に提供し、
     前記上位装置から前記論理ボリュームの論理記憶領域を識別する論理アドレスを含むI/O要求とユーザデータとを受信し、
     前記論理アドレスから前記記憶媒体の物理記憶領域を識別する物理アドレスへ変換し、 前記物理アドレスに基づいて前記複数のドライブへの前記ユーザデータの書込み/読出しを制御し、
     前記物理アドレスと前記物理アドレスに対応する論理アドレスとに基づいて得られる第1の保証コードが前記ユーザデータに付加されたデータを、前記記憶媒体の前記物理アドレスによって指定された物理記憶領域に格納することを特徴とするストレージ装置の制御方法。
  9.  請求項8に記載のストレージ装置の制御方法であって、
     データの読出し/書込みコマンドを受領すると、
     前記読出し/書込みコマンドで指定された物理アドレスからデータを読み出し、
     当該物理アドレスと、当該物理アドレスに対応する論理アドレスと、前記読み出したデータに付加された前記第1の保証コードと、に基づいてアドレス異常を検出することを特徴とするストレージ装置の制御方法。
  10.  請求項9に記載のストレージ装置の制御方法であって、
     前記第1の保証コードは、前記物理アドレスに基づいて計算された第2の保証コードと当該物理アドレスに対応する前記論理アドレスに基づいて計算された第3の保証コードとのXOR値であることを特徴とするストレージ装置の制御方法。
  11.  請求項10に記載のストレージ装置の制御方法であって、
     前記第2の保証コードを前記ユーザデータが付加されたデータと、前記物理アドレス及び前記第3の保証コードを含むコマンドと、が前記ドライブに送信され、
     前記第2の保証コードに代えて、前記第2の保証コードと前記第3の保証コードとから計算された前記第1の保証コードが前記ユーザデータに前記ドライブ装置で付加されることを特徴とするストレージ装置の制御方法。
  12.  請求項9に記載のストレージ装置の制御方法であって、
     前記上位装置から書込み要求と前記ユーザデータとを受信すると、
     前記書込み要求に係る論理アドレスに基づいて第3の保証コードを計算し、前記第3の保証コードを前記ユーザデータに付加し、
     前記書込み要求に係る論理アドレスを前記物理アドレスに変換し、
     前記書込み要求に係る論理アドレスに基づいて第4の保証コードを計算し、
     前記第3の保証コードと前記第4の保証コードが一致することを確認すると、前記物理アドレスに基づいて第2の保証コードを計算し、前記第2の保証コードをユーザデータに付加し、
     前記物理アドレス及び前記第3の保証コードを含むコマンドと、前記第2の保証コードが付加されたデータとを前記ドライブに送信することを特徴とするストレージ装置の制御方法。
  13.  請求項9に記載のストレージ装置の制御方法であって、
     フォーマット処理を指示するコマンドを受信すると、フォーマットデータに保証コードの初期値として定められた値を付加した初期データを前記記憶媒体に格納し、
     データの読出し/書込みコマンドを受領すると、読み出したデータが前記初期データの場合、前記アドレス異常を検出処理を行わないことを特徴とするストレージ装置の制御方法。
  14.  請求項9に記載のストレージ装置の制御方法であって、
     前記複数の記憶媒体は、プールボリュームを構成し、
     前記上位装置からの書込み要求に応じて、前記プールボリュームのプール記憶領域を前記論理ボリュームの論理記憶領域に動的に割り当て、
     前記論理アドレスを対応する前記プールボリュームのアドレスに変換し、
     当該プールボリュームのアドレスを前記物理アドレスに変換することを特徴とするストレージ装置の制御方法。
PCT/JP2013/063889 2013-05-20 2013-05-20 ストレージ装置及びストレージ装置の制御方法 WO2014188479A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US14/767,019 US9760296B2 (en) 2013-05-20 2013-05-20 Storage device and method for controlling storage device
PCT/JP2013/063889 WO2014188479A1 (ja) 2013-05-20 2013-05-20 ストレージ装置及びストレージ装置の制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/063889 WO2014188479A1 (ja) 2013-05-20 2013-05-20 ストレージ装置及びストレージ装置の制御方法

Publications (1)

Publication Number Publication Date
WO2014188479A1 true WO2014188479A1 (ja) 2014-11-27

Family

ID=51933073

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/063889 WO2014188479A1 (ja) 2013-05-20 2013-05-20 ストレージ装置及びストレージ装置の制御方法

Country Status (2)

Country Link
US (1) US9760296B2 (ja)
WO (1) WO2014188479A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106708648A (zh) * 2015-07-14 2017-05-24 阿里巴巴集团控股有限公司 一种文本数据的存储校验方法和系统
JP2019212175A (ja) * 2018-06-07 2019-12-12 株式会社日立製作所 記憶制御システム及び記憶制御方法

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102438319B1 (ko) * 2018-02-07 2022-09-01 한국전자통신연구원 공통 메모리 인터페이스 장치 및 방법
TWI693517B (zh) 2018-11-16 2020-05-11 慧榮科技股份有限公司 用來進行儲存空間管理之方法以及資料儲存裝置及其控制器
TWI749516B (zh) * 2018-11-16 2021-12-11 慧榮科技股份有限公司 用來進行儲存空間管理之方法以及資料儲存裝置及其控制器
US11074130B2 (en) * 2019-03-28 2021-07-27 International Business Machines Corporation Reducing rebuild time in a computing storage environment

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0720994A (ja) * 1993-06-30 1995-01-24 Hitachi Ltd 記憶システム
JP2009080696A (ja) * 2007-09-26 2009-04-16 Hitachi Ltd ストレージサブシステム及びその制御方法
JP2009251725A (ja) * 2008-04-02 2009-10-29 Hitachi Ltd 記憶制御装置及び記憶制御装置を用いた重複データ検出方法。

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000347815A (ja) 1999-06-07 2000-12-15 Hitachi Ltd ディスクアレイシステム
US7802155B2 (en) * 2000-01-06 2010-09-21 Super Talent Electronics, Inc. Non-volatile memory device manufacturing process testing systems and methods thereof
JP4476021B2 (ja) * 2004-05-24 2010-06-09 株式会社日立製作所 ディスクアレイシステム
JP2006139478A (ja) * 2004-11-11 2006-06-01 Hitachi Ltd ディスクアレイシステム
JP5031392B2 (ja) * 2007-02-13 2012-09-19 株式会社日立製作所 記憶制御装置及びストレージシステム
EP2419817A1 (en) * 2009-10-09 2012-02-22 Hitachi, Ltd. Storage system and control method thereof, implementing data reallocation in case of load bias
JP5603997B2 (ja) * 2010-10-26 2014-10-08 株式会社日立製作所 ストレージ装置及びデータ制御方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0720994A (ja) * 1993-06-30 1995-01-24 Hitachi Ltd 記憶システム
JP2009080696A (ja) * 2007-09-26 2009-04-16 Hitachi Ltd ストレージサブシステム及びその制御方法
JP2009251725A (ja) * 2008-04-02 2009-10-29 Hitachi Ltd 記憶制御装置及び記憶制御装置を用いた重複データ検出方法。

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106708648A (zh) * 2015-07-14 2017-05-24 阿里巴巴集团控股有限公司 一种文本数据的存储校验方法和系统
CN106708648B (zh) * 2015-07-14 2019-11-26 阿里巴巴集团控股有限公司 一种文本数据的存储校验方法和系统
JP2019212175A (ja) * 2018-06-07 2019-12-12 株式会社日立製作所 記憶制御システム及び記憶制御方法
US10846234B2 (en) 2018-06-07 2020-11-24 Hitachi, Ltd. Storage control system and storage control method

Also Published As

Publication number Publication date
US20150378629A1 (en) 2015-12-31
US9760296B2 (en) 2017-09-12

Similar Documents

Publication Publication Date Title
US9697087B2 (en) Storage controller to perform rebuilding while copying, and storage system, and control method thereof
US9542272B2 (en) Write redirection in redundant array of independent disks systems
US8694724B1 (en) Managing data storage by provisioning cache as a virtual device
JP5635621B2 (ja) ストレージシステム及びストレージシステムのデータ転送方法
US9495110B2 (en) LUN management with distributed RAID controllers
US9009395B2 (en) Storage subsystem and its data processing method for reducing the amount of data to be stored in nonvolatile memory
US8234542B2 (en) Storage controller and method for controlling input and output of data between a storage apparatus and a host computer
US10691339B2 (en) Methods for reducing initialization duration and performance impact during configuration of storage drives
US10372538B2 (en) Computer system
JP2012505441A (ja) ストレージ装置およびそのデータ制御方法
WO2014188479A1 (ja) ストレージ装置及びストレージ装置の制御方法
US10579540B2 (en) Raid data migration through stripe swapping
US20170371782A1 (en) Virtual storage
US8041850B2 (en) Storage apparatus and data integrity assurance method
US8880939B2 (en) Storage subsystem and method for recovering data in storage subsystem
US8966173B1 (en) Managing accesses to storage objects
US9639417B2 (en) Storage control apparatus and control method
JP5856665B2 (ja) ストレージシステム及びストレージシステムのデータ転送方法
JP2020027433A (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: 13885133

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 14767019

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13885133

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP