WO2016113882A1 - Storage system and data security method for storage system - Google Patents

Storage system and data security method for storage system Download PDF

Info

Publication number
WO2016113882A1
WO2016113882A1 PCT/JP2015/050960 JP2015050960W WO2016113882A1 WO 2016113882 A1 WO2016113882 A1 WO 2016113882A1 JP 2015050960 W JP2015050960 W JP 2015050960W WO 2016113882 A1 WO2016113882 A1 WO 2016113882A1
Authority
WO
WIPO (PCT)
Prior art keywords
storage
function unit
data
file
read
Prior art date
Application number
PCT/JP2015/050960
Other languages
French (fr)
Japanese (ja)
Inventor
昇 森下
義仁 中川
野中 裕介
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2015/050960 priority Critical patent/WO2016113882A1/en
Publication of WO2016113882A1 publication Critical patent/WO2016113882A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers

Definitions

  • the present invention relates to a storage system and a storage system data guarantee method.
  • Patent Document 1 Data consistency is guaranteed inside the storage device by adding an error check code for data to the data received from the host for management.
  • Patent Document 1 In a conventional storage device, in a data transfer control circuit and a switch for controlling data transfer of a microprocessor, a cache memory, a host control unit and a drive control unit, an error check code is generated, an error check code is added to data, Check the error check code.
  • the data transfer source device and the data transfer destination device are configured as different hardware, and an error check code is generated in a hardware interface such as a switch circuit provided between the hardwares. And inspection.
  • the data transfer source device and the data transfer destination device are tightly coupled in the same housing and are configured to send and receive data via a common memory, these devices are connected.
  • a hardware interface is not required. Therefore, in this case, it is necessary to ensure data consistency by another method.
  • such a problem is not recognized and the solution is not shown.
  • the present invention has been made in view of the above problems, and the object of the present invention is to provide a data function even in a configuration in which the file function unit and the storage function unit are closely coupled in the same housing, and the memory unit is used jointly. It is an object of the present invention to provide a storage system and a storage system data guarantee method that can ensure consistency of data.
  • a storage system stores a file access request received from a computer device in a file memory area and issues an input / output request corresponding to the file access request, and an input / output
  • This is a storage function unit that processes the input / output request by storing the requested target data in the storage memory area, and sets the data guarantee code to guarantee the target data to the target data, and based on the data guarantee code
  • a storage function unit that checks the consistency of the target data, and the file function unit and the storage function unit are closely coupled in the same housing, and are used jointly by the file function unit and the storage function unit
  • File memory area and storage memory area are set in the When the read request is processed as an input / output request, if the read target data that is the target data of the read request is not stored in the storage memory area, the read request data is added to the read target data and the read target data.
  • the first data guarantee code is read from the storage device and stored in the storage memory area, and the read target data stored in the storage memory area is transferred from the storage memory area to the file memory area in accordance with the read transfer instruction information.
  • the read target data stored in the file memory area is read, an error detection code for the read target data is generated, the address information of the read target data is obtained from the read transfer instruction information, and the error detection code And a second data guarantee code based on the address information and the first data Security code and whether the determined second data guarantee codes match, responsive to the file function unit according to the determination result.
  • the storage function unit When processing the write request as an input / output request, the storage function unit reads the write target data, which is the target data of the write request, from the file memory area according to the write transfer instruction information, stores it in the storage memory area, When the target data is read again from the file memory area, an error detection code for the write target data is generated, the address information of the write target data is obtained from the write transfer instruction information, and based on the error detection code and the address information The third data guarantee code is generated, the third data guarantee code is added to the write target data stored in the storage memory area, and the write target data to which the third data guarantee code is added is second write transfer instruction information.
  • the error detection code is generated from the write target data stored in the other storage memory area, and the address information of the write target data stored in the other storage memory area is obtained from the second write transfer instruction information.
  • Third data that is acquired and generated based on the generated error detection code and the acquired second address information, and is added to the write target data stored in another storage memory area. It is also possible to determine whether the security code matches the fourth data security code, and to respond to the file function unit according to the determination result.
  • the file function unit and the storage function unit are tightly coupled in the same housing, and data consistency can be ensured even in a configuration in which the memory unit is used jointly.
  • FIG. 2 is an explanatory diagram showing an overall overview of a storage system according to this embodiment.
  • FIG. 3 is an explanatory diagram illustrating a configuration example of a storage system. An example of volume management information is shown. An example of command management information is shown. An example of queue information is shown. An example of a queue entry is shown. An example of a queue entry (read / write request) is shown. An example of a queue entry (transfer instruction) is shown. An example of transfer list management information is shown. An example of a transfer list is shown. Explanatory drawing which shows the structural example of management information. The flowchart which shows the command issuing process of a file function part. The flowchart which shows the whole command reception process of a storage function part.
  • FIG. 7 is a flowchart showing a part of command reception processing (read processing 1).
  • 10 is a flowchart showing another part of the command reception process (write process 1).
  • 6 is a flowchart showing a part of data transfer processing (read transfer processing).
  • 10 is a flowchart showing another part of the data transfer process (write transfer process).
  • the flowchart which shows the whole response issuing process of a storage function part.
  • the flowchart which shows a part (read process 2) of a response issue process.
  • the flowchart which shows another part (write process 2) of a response issue process.
  • the read target data may be referred to as read data
  • the write target data may be referred to as write data
  • the storage function unit In the storage system according to the present embodiment in which the file function unit and the storage function unit are mounted in the same casing, hardware corresponding to the file function unit and hardware corresponding to the storage function unit do not exist. There is no interface hardware for connecting the hardware. In the storage system according to the present embodiment, the storage function unit directly accesses the memory of the file function unit during data transfer.
  • the storage function unit ensures data consistency. Adopt the configuration.
  • the data read destination address or write destination address is incorrect or the data content is incorrect due to some cause such as a malfunction of the computer program. There is a possibility.
  • the storage system 1 has a file I / F 12, and includes a file function unit P10 that processes a file access request from the file I / F 12, and a file function unit P10. And a storage function unit P20 that processes read / write requests from each (see FIG. 2).
  • the storage function unit P20 has a plurality of independent nonvolatile memory areas 153S (# 0, # 1 storage caches 153S).
  • the read / write request indicates a read request or a write request.
  • the storage function unit P20 confirms that there is no error in the content of the write request, and from the memory area 153F of the file function unit P10 to the memory area (152 of the storage function unit P20) Write data is transferred to either (# 0) or 153S (# 0). Further, the storage function unit P20 reads the write data from the memory area 153F of the file function unit P10, and generates an error detection code (CRC) that is a part of the data guarantee code. Further, the storage function unit P20 generates address information (LA) corresponding to the write request destination. The storage function unit P20 generates a data guarantee code (CRC + LA) from the generated error detection code (CRC) and address information (LA) and assigns it to the write data.
  • CRC error detection code
  • LA address information
  • the storage function unit P20 transfers the write data and the data guarantee code (CRC + LA) to the other-system memory area 153S (# 1). Furthermore, the storage function unit P20 reads the write data stored in the other-system memory area 153S (# 1) to calculate an error detection code (CRC), and address information corresponding to the write request destination of the storage function unit P20 (LA) is calculated. Then, the storage function unit P20, the data guarantee code (CRC + LA) associated with the write data stored in the memory area 153S (# 1) of the other system, the calculated error detection code (CRC) and address information ( Check if the data guarantee code (CRC + LA) obtained from LA) matches. When the storage function unit P20 confirms that both data guarantee codes match, the storage function unit P20 reports the completion of writing to the file function unit P10.
  • CRC error detection code
  • the storage function unit P20 In response to the read request from the file function unit P10, the storage function unit P20 confirms that there is no error in the content of the read request, and calculates address information (LA) corresponding to the read request destination. Further, the storage function unit P20 receives the data guarantee code (LA) stored in the memory area (either 152 (# 0) or 153S (# 0)) used by the storage function unit P20 and the read request destination of the storage function unit. The data guarantee code (LA) corresponding to is confirmed. Further, the storage function unit P20 transfers the read data from the memory area (either 152 (# 0) or 153S (# 0)) used by the storage function unit P20 to the memory area 153F used by the file function unit P10. .
  • LA address information
  • the storage function unit P20 reads the read data from the memory area 153F used by the file function unit P10, calculates an error detection code (CRC), and addresses information (corresponding to the read request destination of the storage function unit P20) LA) is calculated.
  • the storage function unit P20 checks whether the data guarantee code (CRC + LA) added to the read data that has been read matches the calculated data guarantee code (CRC + LA). Report.
  • the data consistency can be ensured by the storage function unit until the file function unit P10 that has received the file access request receives the target data from the storage function unit P20.
  • FIG. 1 shows an overall outline of the storage system 1 according to the present embodiment.
  • the file function unit P ⁇ b> 10 and the storage function unit P ⁇ b> 20 transfer data via a common memory 15.
  • the right side of FIG. 1 shows a case where a read request is processed, and the left side of FIG. 1 shows a case where a write request is processed.
  • the step number attached to each operation corresponds to a step number in a flowchart described later.
  • the file function unit P10 issues a read command corresponding to the file access request to the storage function unit P20.
  • the storage function unit P20 determines whether or not the requested file data exists in the storage cache area 153S (# 0) of the own system (# 0). When the requested read data (read target data) is stored in the storage cache area 153S (# 0), the storage function unit P20 obtains the read data and the data guarantee code GC from the storage cache area 153S (# 0). The data is transferred to the storage buffer area 152 (# 0) (S44).
  • the data guarantee code GC is added to the read data.
  • the data guarantee code GC is data for ensuring data consistency in the storage system 1.
  • the data guarantee code is composed of an error detection code such as CRC (Cyclic Redundancy Check) and address information.
  • CRC Cyclic Redundancy Check
  • the data guarantee code added to the read data corresponds to the “first data guarantee code”.
  • the storage function unit P20 adds a data guarantee code from the logical volume 21 (see FIG. 2), which is a logical storage device.
  • the read data read is read and transferred to the storage cache area 153S (# 0).
  • the storage function unit P20 transfers the read data and the data guarantee code GC from the storage cache area 153S (# 0) to the storage buffer area 152 (# 0) (S44).
  • the storage function unit P20 confirms whether the address information of the read data is correct when the read data is transferred from the storage cache area 153S (# 0) to the storage buffer area 152 (# 0) (S82). That is, the storage function unit P20 compares the address information (LA) in the data guarantee code added to the read data to be transferred with the address information (LA) indicated in the transfer parameter used for the transfer, Make sure that both address information matches.
  • the storage function unit P20 transfers the read data from the transfer source storage buffer area 152 (# 0) to the transfer destination file cache area 153F for storage (S84). .
  • the data guarantee code GC is for ensuring the consistency of data in the storage system 1 and is unnecessary information in the file function unit P10 that sends and receives commands and data to and from the client computer 2. is there.
  • the storage function unit P20 checks the consistency of the data delivered to the file function unit P10 (whether it is the correct content read from the correct location).
  • the storage function unit P20 reads the read data from the file cache area 153F and calculates an error detection code (CRC) (S85).
  • CRC error detection code
  • the storage function unit P20 calculates address information (LA) from the transfer parameters used when transferring read data to the file cache area 153F (S86).
  • the transfer parameter corresponds to “transfer instruction”.
  • the transfer parameter used in the read process corresponds to “read transfer instruction information”. That is, the storage function unit P20 calculates the error detection code (CRC) and address information (LA) for the read data transferred to the transfer destination, thereby generating a data guarantee code at the transfer destination.
  • the data guarantee code generated for the read data stored in the transfer destination file cache area 153F corresponds to the “second data guarantee code”.
  • the storage function unit P20 compares the data guarantee code added to the read data of the transfer source with the data guarantee code newly calculated from the read data of the transfer destination, and determines whether both data guarantee codes match ( S87).
  • the file function unit P10 can determine that the requested read data is read from the correct location and delivered with the correct contents. As will be described later with reference to FIG. 23, the file function unit P10 transmits read data to the client computer 2 when confirming that the read request has been completed normally.
  • the read data transfer source is not always the storage buffer area 152 (# 0).
  • the data may be directly transferred from the storage cache area 153S (# 0) to the file cache area 153F (see S43 in FIG. 14). If the requested read data does not exist in the own system (# 0) storage cache area 153S (# 0) but exists in the other system (# 1) storage cache area 153S (# 1), Read data is transferred from the storage cache area 153S (# 1) to the local storage buffer area 152 (# 0).
  • the file function unit P10 issues a write command corresponding to the file access request to the storage function unit P20. Further, the file function unit P10 stores the write data received from the client computer 2 in the file cache area 153F.
  • the storage function unit P20 transfers write data from the file cache area 153F to the storage buffer area 152 (# 0). Then, the storage function unit P20 reads the write data again from the file cache area 153F, and generates an error detection code (CRC) (S102). Further, the storage function unit P20 calculates the address information (LA) of the write data from the transfer parameter used for the transfer of the write data (S103). The transfer parameter used for transfer of write data from the file cache area 153F to the storage buffer area 152 (# 0) corresponds to “write transfer instruction information”.
  • the storage function unit P20 generates a data guarantee code GC from the error detection code (CRC) calculated from the transfer source write data and the address information (LA) calculated from the transfer parameter, and adds it to the write data (S104). ).
  • This data guarantee code corresponds to a “third data guarantee code”.
  • the storage function unit P20 transfers the write data with the data guarantee code added from the storage buffer area 152 (# 0) to the storage cache area 153S (# 0) (S141). Further, the storage function unit P20 transfers the write data and data guarantee code stored in the own storage cache area 153S (# 0) to the other storage cache area 153S (# 1) (S144). As a result, the write data is stored in a plurality of different storage cache areas 153S (# 0) and 153S (# 1), so that safety against data loss is increased.
  • the storage function unit P20 checks whether transfer to the other storage cache area 153S (# 1) is normally performed and data consistency is maintained as described below.
  • the storage function unit P20 reads the write data stored in the storage cache area 153S (# 1) of the other system and calculates an error detection code (CRC) (S145).
  • CRC error detection code
  • the storage function unit P20 acquires the address information (LA) from the transfer parameters used for the transfer of the write data and the data guarantee code from the storage cache area 153S (# 0) to the storage cache area 153S (# 1) (S146). ).
  • the storage function unit P20 creates a data guarantee code from the error detection code (CRC) calculated at the transfer destination and the address information (LA) used for transfer. This data guarantee code corresponds to the “fourth data guarantee code”.
  • the storage function unit P20 then calculates the data guarantee code (fourth data guarantee code) and the data guarantee code (third answer) added to the write data stored in the storage cache area 153S (# 1) of the other system. It is determined whether or not the data guarantee code matches (S147).
  • the storage function unit P20 reports to the file function unit P10 that the write request has been normally completed (S117).
  • the file function unit P10 receives from the storage function unit P20 a response indicating that the write request has been completed normally, the file function unit P10 reports to the client computer 2 that the write command processing has been completed normally.
  • the write data is transferred from the file cache area 153F to the local storage cache area 153S (# 0) via the local storage buffer area 152 (# 0) in order to prepare for a write error. .
  • the write data may be directly transferred from the file cache area 153F to the local storage cache area 153S (# 0) without going through the local storage buffer area 152 (# 0).
  • the storage function unit P20 generates a data guarantee code for the write data stored in the storage cache area 153S (# 0) and adds it to the write data (S104).
  • FIG. 2 shows a hardware configuration example of the storage system.
  • the storage system 1 is connected to, for example, at least one client computer 2 and a management terminal 3 via a communication network CN1 so as to be capable of bidirectional communication.
  • the communication network CN1 may be formed as an IP (Internet Protocol) network such as the Internet, or may be formed as an FC-SAN (Fibre Channel Channel-Storage Area Network).
  • IP Internet Protocol
  • FC-SAN Fibre Channel Channel-Storage Area Network
  • the client computer 2 as a “computer device” issues a file access request to the storage system 1.
  • the management terminal 3 is a computer terminal for the storage system administrator to manage the storage system 1.
  • the maintenance terminal 4 is a computer terminal for the storage administrator to maintain the storage system 1.
  • the storage system 1 includes, for example, a storage control device 10 and a storage mounting unit 20.
  • the storage mounting unit 20 will be described first.
  • the storage mounting unit 20 includes a plurality of storage devices 21.
  • various drives capable of reading and writing data such as a hard disk drive, a semiconductor memory drive, an optical disk drive, and a magneto-optical disk drive can be used.
  • a hard disk drive for example, a FC (Fibre Channel) disk, a SCSI (Small Computer System Interface) disk, a SATA disk, an ATA (AT Attachment) disk, a SAS (Serial Attached SCSI) disk, or the like can be used.
  • various drives such as flash memory, MRAM (Magnetoresistive Random Access Memory), phase change memory (Phase-Change Memory), ReRAM (Resistive random access memory), FeRAM (Ferroelectric Random Access Memory), etc. may be used. it can. Furthermore, for example, a configuration in which different types of drives are mixed may be used.
  • a logical volume 22 that is a logical storage device can be formed by using the physical storage area of the storage device 21.
  • a configuration may be adopted in which a plurality of logical volumes 22 are stored in a pool, and a storage area of the pooled logical volume 22 is allocated to the virtual volume in response to a write request to the virtual volume. This is so-called thin provisioning technology.
  • the storage system 1 does not need to include the storage device 21 therein.
  • the storage system 1 can also take a logical volume in another storage system into the storage system 1 and use it as if it were an internal volume unique to the storage system 1.
  • the storage control device 10 includes a plurality of (for example, two) controllers 11.
  • One controller 11 is assigned a system number # 0, and the other controller 11 is assigned a system number # 1.
  • One controller 11 (# 0) and the other controller 11 (# 1) form a redundant pair. When the other controller 11 stops due to a failure or the like, it replaces the stopped controller 11. Processing can be continued.
  • the two systems # 0 and # 1 the one executing the target command is called the own system, and the one not executing the target command is called the other system.
  • the controller 11 includes, for example, a front-end interface 12, a back-end interface 13, a microprocessor 14, and a memory 15. A plurality of these hardware units 12 to 15 can be provided.
  • the front end interface 12 as an example of the “first communication interface unit” corresponds to a file protocol such as NFS (Network File System).
  • NFS Network File System
  • the front end interface 12 can bidirectionally communicate with the client computer 2 and the management terminal 3 via the communication network CN1.
  • the storage system 1 may be provided with a front-end interface 12 corresponding to the fiber channel block protocol.
  • the back-end interface 13 as an example of the “second communication interface unit” is a communication interface for reading / writing data from / to the storage device 21, and corresponds to a SAS (Serial Attached SCSI) block protocol.
  • SAS Serial Attached SCSI
  • the microprocessor 14 as the “microprocessor unit” is connected to the front-end interface 12, the back-end interface 13 and the memory 15, and reads and executes the computer programs P 10 and P 20 stored in the memory 15. Realize the desired function.
  • the microprocessor 14 is connected to the microprocessor 14 of the partner controller 11 so as to be capable of bidirectional communication via the inter-controller communication path 16.
  • the microprocessor 14 can access the memory 15 in the partner controller 11 via the inter-controller communication path 16.
  • the memory 15 as an example of the “memory unit” is for storing a computer program, management information, and the like.
  • a file program P10 and a storage program P20 are stored in the program storage area 150 of the memory 15.
  • the file program P10 is a computer program for realizing a “file function unit”. Therefore, it may be called a file function unit P10.
  • the file program P10 includes a process P11 for issuing a command to the storage function unit and a process P12 for receiving a response from the storage function unit. The processes P11 and P12 will be described later.
  • the storage program P20 is a computer program for realizing a “storage function unit”. Therefore, it may be called a storage function unit P20.
  • the storage program P20 includes a process P21 for receiving a command from the file function unit, a process P22 for transferring data, and a process P23 for responding the result of the command process to the file function unit.
  • the processes P21 to P23 will be described later.
  • the memory 15 is provided with a management information area 151, a buffer area 152, and a cache area 153.
  • the cache area 153 is divided into a file cache area 153F used by the file function unit P10 and a storage cache area 153S used by the storage function unit P20.
  • a specific microprocessor 14 may execute the file program P10 and the storage program P20 among the plurality of microprocessors 14, or one microprocessor 14 may time-share the file program P10 and the storage program P20. It may be configured to execute substantially simultaneously. By executing a hypervisor program for managing the operation of the microprocessor 14, the file program P10 and the storage program P20 can be switched.
  • FIG. 3 shows an example of the volume management information T10.
  • the volume management information T10 is information for managing each logical volume 22 in the storage system 1.
  • the volume management information T10 includes, for example, a volume number C100, a volume size C101, a status C102, a path definition information list C103, a volume attribute C104, and storage area management information C105.
  • the volume number C100 is information for uniquely identifying each logical volume 22 in the storage system 1.
  • the volume size C101 indicates the storage capacity of the logical volume 22.
  • the status C102 indicates the status of the logical volume 22. Examples of the volume state include “normal”, “blocked”, and “unused”.
  • the host path definition information list C103 is information that defines the connection relationship between the file function unit P10 that issues a storage request and the logical volume 22 that is the target of the storage request.
  • the host path definition information list C103 includes information for specifying the file function unit P10 of the read / write request source and information for specifying the target logical volume 22 of the read / write request destination.
  • the information specifying the file function unit P10 includes, for example, a computer name (or identification number) for identifying the file function unit P10 and information for specifying a communication port used for communication with the logical volume 22.
  • the information for specifying the target logical volume 22 includes, for example, information for specifying the communication port of the front-end interface 12 and LUN (Logical Unit Number).
  • the volume attribute C104 is information indicating the attribute of the logical volume 22.
  • Examples of the volume attribute include a normal volume, a copy source volume, a copy destination volume, an externally connected volume, a thin provisioning volume, and a pool volume.
  • the externally connected volume is a virtual volume connected to a logical volume in another storage system that exists outside the storage system 1.
  • Storage area management information C105 is information for managing the storage areas constituting the logical volume 22.
  • the storage area management information C105 includes, for example, a pool number to which the logical volume 22 belongs, a RAID (Redundant Arrays of Inexpensive Disks) level of the logical volume 22, a list of storage devices 21 in which the logical volume 22 is set, and the like. Can be mentioned.
  • the storage area management information C104 includes, for example, a correspondence relationship between a virtual page in the virtual volume and a real page managed in the pool.
  • a page means a storage area of a predetermined size.
  • FIG. 4 shows an example of the command management information T20.
  • the command management information T20 is information for managing commands accepted by the storage system 1.
  • the command management information T20 includes, for example, a command execution state C200, a port number C201, a requested volume number C202, initiator information C203, an in-storage sequence number C204, a transfer ID C205, a received command content C206, and a data transfer result C207.
  • the command execution status C200 is information indicating the command execution status.
  • the command execution status includes, for example, “being executed”, “waiting for processing completion”, “waiting for activation”, “transfer end”, “normal end”, and “error end”.
  • the port number C201 is information for specifying the communication port that has accepted the command.
  • the requested volume number C202 is information for specifying the logical volume 22 to be processed by the command.
  • the initiator information C203 is information for specifying an initiator that is a command issue source. Stores information for identifying that the command issuer is the file function unit P10.
  • the in-storage sequence number C204 is information used to specify a command received before receiving the reset request when the storage function unit P20 receives a reset request from the file function unit P10.
  • the transfer ID C205 is information uniquely assigned to the data transfer instruction issued by the storage function unit P20. A certain number of transfer lists corresponding to the transfer IDs are secured.
  • the received command content C206 indicates the content of the received command, that is, whether it is a read command or a write command.
  • the data transfer result C207 indicates the result of data transfer related to the received command.
  • the memory areas 153S, 152 used by the storage function unit P20 For example, as a result of the data transfer from the memory area 153F used by the file function unit P10 to the memory areas 153S, 152 used by the storage function unit P20, the memory areas 153S, 152 used by the storage function unit P20 The result of data transfer to the memory area 153F to be used is shown.
  • FIG. 5 shows an example of the queue information T30.
  • the queue information T30 includes, for example, a queue length C300, a producer index C301, a consumer index C302, and entries C303, C304, C305, C306. . . including.
  • the queue length C300 indicates the number of connected entries, that is, the number of queues.
  • the producer index C301 is information indicating the position (entry number) of the queue added last.
  • the consumer index C302 is information indicating the position (entry number) of the queue processed last.
  • the queue is connected with entries of the number M indicated by the queue length C300.
  • FIG. 6 shows a configuration example of the queue entry T31.
  • the queue entry T31 includes, for example, a content storage area C310 and an error detection code C311.
  • the content storage area C310 stores information (entry type) indicating the content of the queue entry.
  • the contents of the queue entry include “read / write request”, “response”, and “transfer instruction”. Specific examples will be described later with reference to FIGS.
  • the error detection code C311 is information for detecting whether or not an error has occurred in the content stored in the content storage area C310. For example, a value obtained by taking an exclusive OR of the entire data stored in the content storage area C310 can be used as the error detection code C311.
  • FIG. 7 shows a queue entry T32 for a read / write request.
  • the read / write request queue entry T32 includes, for example, a request ID C320, a command type C321, a LUN C322, a head address C323, and a transfer length C324.
  • Request ID C320 is information uniquely assigned to a command issued by the file function unit P10.
  • the storage function unit P20 specifies a file-side transfer list from transfer list management information T40, which will be described later with reference to FIG. 9, using the request ID.
  • the storage function unit P20 specifies the address of the file cache area 153F that is the target of the read / write request, based on the specified file-side transfer list.
  • the command type C321 is information indicating the type of a read command or a write command.
  • the LUN C322, the head address C323, and the transfer length C324 are information for specifying an area used by the command.
  • FIG. 8 shows a transfer entry queue entry T33.
  • the transfer instruction queue entry T33 includes, for example, a transfer type C330, a request ID C331, a transfer ID C332, a transfer start offset address C333, a transfer list address C334, a total transfer length C335, and address information (LA) as a part of the guarantee code. Including C336.
  • the transfer type C330 is information indicating the type of data transfer.
  • the request ID C331 is the same as the request ID described in FIG.
  • the logical address used in the file function unit P10 may be different from the logical address used in the storage function unit P20.
  • the address conversion information provided separately may be used when the file function unit P10 sets the file-side transfer list, and is converted into a logical address in the storage function unit P20 and stored.
  • address conversion may be executed when the storage function unit P20 refers to the file-side transfer list during data transfer.
  • the transfer ID C332 is information for specifying the transfer process.
  • the transfer start offset address C332 is information used to specify a transfer start destination address.
  • Transfer list address C334 indicates the address of the transfer list.
  • the total transfer length C335 is a total transfer size when a plurality of transfers are performed.
  • the address information (LA) that is a part of the data guarantee code is information indicating the data storage position managed by the storage function unit P20 regarding the read / write request.
  • the transfer instruction is managed by the transfer queue.
  • other activation means and response management means may be used.
  • FIG. 9 shows transfer list management information T40.
  • the transfer list management information T40 is information for managing the transfer list, and includes, for example, transfer list addresses C400, C401, C402, and C403 for each request ID.
  • the storage location of the transfer list used for data transfer for the read request or write request can be specified from the request ID issued for the read request or write request.
  • FIG. 10 shows the transfer list T41.
  • the transfer list T41 is information used when transferring data, and corresponds to “transfer instruction information” and “transfer parameter”.
  • the transfer list T41 includes a file side transfer list and a storage side transfer list.
  • the transfer list T41 includes, for example, a request ID C410, the number of valid entries C411, transfer addresses C412 and C414 for each entry number, transfer lengths C413 and C415 for each entry number, a next transfer list address C416 indicating the next transfer list, and error detection
  • the code C417 is included.
  • Request ID C410 is the same as the request ID described above.
  • the number of valid entries C411 indicates the number of valid entries included in the transfer list T41.
  • the transfer addresses C412 and C414 and the transfer lengths C413 and C415 are registered in pairs for each entry number.
  • the next transfer list address C416 is information for connecting a plurality of transfer lists T41 to transfer data.
  • the error detection code C417 is a code for checking whether an error has occurred in the contents of the transfer list T41. For example, a value obtained by taking an exclusive OR of all the data from the request ID C410 to the next transfer list address C416 can be used as the error detection code C417.
  • FIG. 11 shows a configuration example of management information.
  • the memory 15 of the controller 11 includes the program storage area 150, the management information area 151, the buffer area 152, and the cache area 153 (file cache area 153F, storage cache area 153S).
  • the management information area 151 includes a file management information area 151F, a storage management information area 151S, and a common management information area 151C.
  • file management information area 151F storage request management information T50 and a file side transfer list T41F are stored.
  • Storage request management information T50 is information for managing the contents of the storage request and its execution state.
  • the storage request is a data input / output request issued to the storage function unit P20 when the file function unit P10 processes a command.
  • the file-side transfer list T41F has the configuration shown in FIG. 10, and manages data transferred to the file cache area 153F.
  • the file-side transfer list T41F can be accessed by both the file function unit P10 and the storage function unit P20.
  • command management information T20 In the storage side management information area 151S, command management information T20, transfer queue T30T, storage side transfer lists T41SB, T41SC, and volume management information T10 are stored. These pieces of information T10, T20, T30T, T41SB, and T41SC are used by the storage function unit P20.
  • the transfer queue T30T is queue information related to a transfer instruction, and its configuration is as described in FIG.
  • the storage-side transfer list includes a storage-side transfer list T41SB when passing through a buffer and a storage-side transfer list T41SC when directly sending without passing through a buffer.
  • the storage-side transfer list T41SB via the buffer is used.
  • the storage-side transfer list T41SC at the time of direct sending is used.
  • the structures of these transfer lists T41SB and T41SC are as shown in FIG.
  • the common management information 151C stores a request queue T30C, a response queue T30R, and transfer list management information T40.
  • the request queue T30C is information for managing a queue related to a read / write request.
  • the response queue T30R is information for managing a queue related to responses to commands.
  • the configurations of the request queue T30C and the response queue T30R are as described in FIG. These pieces of information T30C, T30R, and T40 can be used by both the file function unit P10 and the storage function unit P20.
  • the file function unit P10 When a read / write request is issued from the client computer 2 to the storage system 1, the file function unit P10 generates a storage request (read command or write command) associated with the read / write request, and manages the storage request. Store in information T50.
  • the command stored in the storage request management information T50 is registered in the request queue T30C of the common management information 151C.
  • the storage function unit P20 reads the command registered in the request queue T30C and manages it with the command management information T20.
  • the storage function unit P20 manages data transfer necessary for command processing by the transfer queue T30T. Further, the storage function unit P20 manages data transfer to the storage buffer area 152 by the storage side transfer list T41SB, and manages data transfer to the storage cache area 153S by the storage side transfer list T41SC.
  • the storage function unit P20 When the storage function unit P20 detects a command managed by the command management information T20 and has completed processing normally or ended in error, the storage function unit P20 registers the command in the response queue T30R. The storage function unit P20 processes the command registered in the response queue T30R and responds to the file function unit P10. Upon receiving the response from the storage function unit P20, the file function unit P10 reports to the client computer 2 according to the response content.
  • the operation of the storage system 1 will be described with reference to FIGS.
  • the illustrated flowchart is an example of processing, and the operation of the storage system 1 is not limited to the illustrated example.
  • the order of the illustrated steps can be changed, a new step can be added, or a plurality of steps can be combined into one step.
  • FIG. 12 is a flowchart showing an example of the command issuing process P11 executed by the file function unit P10.
  • the file request processing (not shown) of the file function unit P10 is performed synchronously or asynchronously to the storage function unit when the front-end interface 12 receives a file access request from the client computer 2 to the storage system 1).
  • a storage request for referring to or updating file metadata or data is issued.
  • the file access request to the storage system 1 means a file input / output request to the storage system 1 and may be called a storage request in this embodiment.
  • the file function unit P10 ends this process.
  • the file function unit P10 executes this process at an appropriate cycle.
  • the file function unit P10 When the file function unit P10 detects the storage request (S10: YES), the file function unit P10 stores the storage request in the storage request management information T50 (S11).
  • the file function unit P10 secures one request ID (S12) and sets the file-side transfer list T41F (S13).
  • the file-side transfer list T41F specifies a portion used for transferring data between the file function unit P10 and the storage function unit P20 in the storage area of the file cache area 153F.
  • the storage request stored in the storage request management information T50 and the transfer contents of the file side transfer list T41F are associated through a common request ID.
  • the file function unit P10 sets the transfer list management information T40 by storing the address of the file side transfer list T41F set in step S13 in the transfer list management information T40 (S14).
  • the file function unit P10 generates a command necessary for processing the storage request from the file request processing unit (S15).
  • the file function unit P10 generates a write command when the client computer 2 requests creation or update of a file, and generates a read command when the client computer 2 requests reading of a file.
  • the file before update may be read from the logical volume 22 first and written to the logical volume 22 after update.
  • the file function unit P10 determines whether the request queue T30C has an empty space (S16), and when determining that the request queue T30C has an empty space (S16: YES), sets the generated command in the request queue T30C (S17). . Then, the file function unit P10 updates the status of the command registered in the request queue T30C to “waiting for request completion” in the storage management information T50 (S18).
  • the file function unit P10 determines that there is no space in the request queue T30C (S16: NO), it updates the status of the command to “wait for request activation” in the storage request management information T50 (S19).
  • the file function unit P10 periodically monitors the free state of the request queue T30C in another process (not shown), and if it detects a free state, it requests a command that has been placed in an activation wait state. It is registered in the queue T30C (S17), and the command status of the storage request management information T50 is updated to “wait for request completion” (S18).
  • FIG. 13 is a flowchart showing an example of command reception processing P21 executed by the storage function unit P20.
  • the storage function unit P20 determines whether a new command is registered in the request queue T30C (S20). If there is no new command in the request queue T30C (S20: NO), this process is terminated.
  • the storage function unit P20 determines that a new command is registered in the request queue T30C (S20: YES)
  • the storage function unit P20 refers to the error detection code C311 of FIG. 6 and an error has occurred in the new command to be processed. (S21). If it is determined that an error has occurred (S21: YES), the new command is discarded (consumer index C302 is added) (S34), the storage function unit P20 returns to step S20, and another new command is added to the request queue T30C. Determine whether the command is registered.
  • the storage function unit P20 stores the new command in the command management information T20 (S22), and analyzes the type of the new command (S23).
  • the storage function unit P20 determines whether the new command is a write command or a read command (S24). When it is determined that the command is a read command, the storage function unit P20 executes a read process 1 described later in FIG. 14 (S25), and when it is determined that the command is a write command, the storage function unit P20 performs a write process 1 described later in FIG. Execute (S26).
  • the storage function unit P20 secures a transfer ID (S27), and further sets a storage-side transfer list (either T41SB or T41SC) (S28).
  • a transfer ID S27
  • a storage-side transfer list either T41SB or T41SC
  • T41SB T41SB
  • T41SC storage-side transfer list
  • the storage function unit P20 generates the transfer instruction shown in FIG. 8 using the request ID secured by the file function unit P10 and the transfer ID secured by the storage function unit P20 (S29), and the transfer queue T30T is free. It is determined whether there is any (S30). When the storage function unit P20 determines that the transfer queue T30T is empty (S30: YES), the storage function unit P20 sets the transfer instruction generated in step S29 in the transfer queue T30T (S31). Then, the storage function unit P20 updates the command execution state C200 of the command management information T20 for the command corresponding to the transfer instruction to “waiting for transfer end” (S32).
  • the command execution state C200 of the command management information T20 for the command corresponding to the transfer instruction generated in step S29 is “ Update to “Waiting for transfer start”.
  • the storage function unit P20 periodically checks the free state of the transfer queue T30T in another process (not shown). When the storage function unit P20 finds a vacancy in the transfer queue T30T, it stores a transfer instruction waiting for transfer activation in the transfer queue T30T, and updates the command execution state C200 of the command management information T20 to “waiting for transfer end”.
  • FIG. 14 is a flowchart showing a detailed example of the read process 1 in FIG.
  • the storage function unit P20 determines whether the read data requested by the read command is stored in the storage cache area 153S (S40).
  • the read data requested by the read command is referred to as target read data.
  • the storage function unit P20 determines that the target read data is not stored in the storage cache area 153S (S40: NO)
  • the storage function unit P20 reads the target read data and its data security code from the storage device 21, and the own storage cache area It is transferred to 153S (# 0) and stored (S41). And it progresses to below-mentioned step S42.
  • step S40 If the storage function unit P20 determines that the target read data is stored in the storage cache area 153S (S40: YES), it skips step S41 and proceeds to step S42.
  • the storage function unit P20 determines whether to transfer the target read data via the storage buffer area 152 (S42). When the target read data is stored in the local storage cache area 153S (# 0), there is no need to transfer the read data via the storage buffer area 152. On the other hand, when the target read data is stored in the storage cache area 153S (# 1) managed by the other system controller 11 (# 1), the target data is stored in the own system storage buffer area 152 (# 0). ) To be transferred.
  • the storage function unit P20 determines that there is no need to transfer it via the storage buffer area 152 (# 0) (S42). : NO). In this case, the storage function unit P20 sets the transfer source of the target read data in the own storage cache area 153S (# 0) (S43).
  • the storage function unit P20 needs to transfer it via the storage buffer area 152 (# 0). Determine (S42: YES). In this case, the storage function unit P20 secures a storage area in the storage buffer area 152 (# 0) of its own system in order to receive the target read data from the other system (S44). The storage function unit P20 transfers the target read data and its data guarantee code from the storage cache area 153S (# 1) of the other system to the storage buffer area 152 (# 0) of the own system (S45). The storage function unit P20 sets the transfer source of the target read data in the own storage buffer area 152 (# 0) (S46).
  • the storage function unit P20 sets the transfer destination of the target read data in the file cache area 153F used by the file function unit P10 that issued the read command, and ends this processing (S47). Only the target read data is transferred from the storage function unit P20 to the file function unit P10, and the data guarantee code is not transferred. This is because the data guarantee code is information used to maintain data consistency in the storage system 1.
  • FIG. 15 is a flowchart showing a detailed example of the write process 1 in FIG.
  • the write data targeted in this process is called target write data.
  • the storage function unit P20 reserves a storage area in its own storage cache area 153S (# 0) in order to store the target write data (S50).
  • the storage function unit P20 sets the transfer source of the target write data in the file buffer area 153F used by the file function unit P10 that issued the write command (S51).
  • the storage function unit P20 determines whether the target write data should be transferred from the file cache area 153F to the storage cache area 153S (# 0) via the storage buffer area 152 (# 0) (S52).
  • the storage function unit P20 first stores the storage buffer area 152 (# 0). Write the target write data to.
  • the storage function unit P20 determines to transfer the target write data without passing through the storage buffer area 152 (# 0) (S52: NO), the transfer destination of the target write data is set to the storage cache area 153S (# 0). Set (S53).
  • the storage function unit P20 determines to transfer the target write data via the storage buffer area 152 (# 0) (S52: YES), in order to store the target write data, the storage buffer area 152 (# 0) Is reserved (S54).
  • the storage function unit P20 sets the transfer destination of the target write data in the storage buffer area 152 (# 0) (S55).
  • the distinction as to whether or not to transfer via the storage buffer area 152 is not limited to the above example.
  • FIG. 16 is a flowchart showing an example of data transfer processing executed by the storage function unit P20.
  • the storage function unit P20 determines whether a new transfer instruction is stored in the transfer queue T30T (S60). When a new transfer instruction is not stored in the transfer queue T30T (S60: NO), this process ends.
  • the storage function unit P20 determines that a new transfer instruction is stored in the transfer queue T30T (S60: YES)
  • the storage function unit P20 refers to the new transfer instruction (S61).
  • the storage function unit P20 identifies the file-side transfer list T41F corresponding to the new transfer instruction based on the request ID associated with the new transfer instruction and the transfer list management information T40 (S62). Further, the storage function unit P20 specifies the storage side transfer list (T41SB or T41SC) based on the transfer ID (S63).
  • the storage function unit P20 refers to the error detection code C417 shown in FIG. 10 and determines whether an error has been detected (S64). When the occurrence of an error is detected by the error detection code C417 (S64: NO), the storage function unit P20 determines that a transfer error has occurred (S65). By checking the error detection code C417, it is possible to suppress errors in the reading position or writing position of the target data.
  • the storage function unit P20 determines whether the transfer type is read transfer or write transfer when no error is detected from the error detection code C417 (S64: YES) (S66). The storage function unit P20 executes read transfer processing described later with reference to FIG. 17 when it is determined that the read data is transferred (S67). If the storage function unit P20 determines that the write data is to be transferred, the storage function unit P20 executes a write transfer process to be described later with reference to FIG. 18 (S68).
  • the storage function unit P20 stores the transfer result in the data transfer result C207 of the command management information T20 (S69).
  • the transfer result includes that a transfer error has been detected by the error detection code, that the read transfer process has ended normally or abnormally, and that the write transfer process has ended normally or abnormally.
  • the storage function unit P20 updates the command execution state C200 of the command management information T20 to “transfer end”.
  • FIG. 17 is a flowchart showing an example of the read transfer process (S67) in FIG.
  • the storage function unit P20 determines whether or not the transfer of all target read data to the file cache area 153F is completed (S80). If the storage function unit P20 determines that the transfer of the target read data has been completed (S80: YES), the process ends.
  • the storage function unit P20 determines that the transfer of the target read data is not completed (S80: NO)
  • the storage function unit P20 refers to the address information (LA) from the data guarantee code of the target read data of the transfer source (S81).
  • the storage function unit P20 determines whether the transfer source address information (LA) matches the address information (LA) calculated from the storage-side transfer list as the transfer instruction (S82).
  • the storage function unit P20 determines that a transfer error has occurred when the transfer source address information does not match the address information obtained from the storage-side transfer list (S82: NO), and ends this process.
  • the storage function unit P20 copies data of a predetermined unit length from the target read data to the file cache area 153F. (S84). Copying means transferring data from one of the transfer sources in the storage cache area 153S (# 0) or the storage buffer area 152 (# 0) and storing it.
  • the predetermined unit length is, for example, 512 bytes. In this case, for example, 512 bytes are read data, and 8 bytes are a data guarantee code (CRC + LA).
  • CRC + LA data guarantee code
  • the storage function unit P20 calculates an error detection code (CRC) constituting a part of the data guarantee code from the unit length read data copied to the file cache area 153F (S85). Subsequently, the storage function unit P20 calculates the address information (LA) for the unit length read data copied to the file cache area 153F from the storage-side transfer list (S86).
  • CRC error detection code
  • LA address information
  • the storage function unit P20 determines whether the data guarantee code (CRC + LA) associated with the transfer target read data matches the data guarantee code (CRC + LA) calculated for the transfer target read data. (S87).
  • the storage function unit P20 determines that a transfer error has occurred (S88). . On the other hand, if both data guarantee codes match (S87: YES), the storage function unit P20 updates the reference position of the transfer list (S89), and returns to step S80. That is, when using a plurality of transfer lists for transferring the target read data, the storage function unit P20 executes steps S80 to S88 for each transfer list.
  • step S87 in order to check whether or not both data guarantee codes match in step S87, the check in steps S81 to S83 may be omitted.
  • FIG. 18 is a flowchart showing an example of the write transfer process (S68) in FIG.
  • the storage function unit P20 determines whether or not the transfer of all target write data to the transfer destination has been completed (S100).
  • the transfer destination of the target write data is either the storage buffer area 152 (# 0) or the storage cache area 153S (# 0). If the storage function unit P20 determines that the transfer of the target write data has been completed (S100: NO), the process ends.
  • the storage function unit P20 determines that the transfer of the target write data has not been completed (S100: NO)
  • the storage function unit P20 copies data of a predetermined unit length from the file write area 153F to the transfer destination (S100: NO). S101).
  • the storage function unit P20 reads the data copied to the transfer destination again from the file cache area 153F, and calculates an error detection code (CRC) that becomes a part of the data guarantee code from the read data (S102).
  • CRC error detection code
  • the storage function unit P20 calculates address information (LA) that becomes a part of the data guarantee code based on the transfer list used for transferring the unit length data that is a part of the target write data (S103).
  • the storage function unit P20 generates a data guarantee code from the error detection code (CRC) calculated in step S102 and the address information (LA) calculated in step S103 (S104), and copies the data guarantee code to the transfer destination.
  • the data is added to the unit length data (S104). If there is an unprocessed transfer list, the storage function unit P20 switches the reference list to the next transfer list (S105), and returns to step S100.
  • the storage function unit P20 when storing the write data in the storage system 1, the storage function unit P20 generates and adds a data guarantee code for each unit length of data.
  • the write data to which the data guarantee code is added is copied to the other-system storage cache area 153S (# 1).
  • the write data copied to the storage cache area 153S (# 1) of the other system is inspected based on the data guarantee code to determine whether the consistency is maintained. This process will be described later.
  • FIG. 19 is a flowchart showing an example of a response issuance process P23 executed by the storage function unit P20.
  • the storage function unit P20 refers to the command execution state C200 of the command management information T20 and determines whether there is a transfer end state command (S110). If there is no command in the transfer end state (S110: NO), this process ends.
  • the storage function unit P20 finds a transfer end command (S110: YES), it releases the transfer ID assigned to the command (S111). Then, the storage function unit P20 determines whether the transfer has been completed normally (S112). If the transfer has not ended normally (S112: NO), the process proceeds to step S118 described later.
  • the storage function unit P20 determines whether the command currently being executed is a read command or a write command (S113). When the storage function unit P20 is processing the read command, the storage function unit P20 executes a read process 2 described later (S114). When the write command is being processed, the storage function unit P20 executes a write process 2 described later (S115).
  • the storage function unit P20 determines whether the write process 2 (S115) has ended normally (S116). When the write process 2 is normally completed (S116: YES), the storage function unit P20 generates a response indicating that the write command process is normally completed (S117). On the other hand, when the write process 2 has not ended normally (S116: NO), the storage function unit P20 generates a response indicating that the write command has ended in error (S118). On the other hand, when the read command is being executed, the storage function unit P20 generates a response indicating normal termination of the read command (S117).
  • the storage function unit P20 generates a response indicating normal termination or error termination according to the type of command, and then determines whether or not there is an empty space in the response queue T30R (S119). When there is an empty response queue T30R (S119: YES), the storage function unit P20 sets the generated response to be stored in the response queue T30R (S120). The storage function unit P20 deletes the command management information T20 corresponding to the generated response (S121), and returns to step S110.
  • the storage function unit P20 updates the command state C200 of the command management information T20 corresponding to the generated response to “response activation waiting state” (S122). ). Then, the storage function unit P20 returns to step S110.
  • FIG. 20 is a flowchart showing an example of the read process 2 (S114) in FIG.
  • the storage function unit P20 determines whether the read data has been transferred to the file cache area 153F via the storage buffer 152 (# 0) (S130). When the storage function unit P20 transfers the read data using the storage buffer area 152 (# 0) (S130: YES), the storage function unit P20 stores the storage buffer area 152 (# 0) used to store the read data. The area is released (S131). If the storage function unit P20 determines that the storage buffer area 152 (# 0) is not used for transfer of read data (S130: NO), the process ends.
  • FIG. 21 is a flowchart showing an example of the write process 2 (S115) in FIG.
  • the storage function unit P20 determines whether the write data has been transferred via the storage buffer area 152 (# 0) (S140). That is, the storage function unit P20 transferred the write data in the file cache area 153F to the storage buffer area 152 (# 0) or transferred the write data in the file cache area 153F to the storage cache area 153S (# 0). To determine.
  • the storage function unit P20 sends the write data and its data guarantee code (CRC + LA) from the storage buffer area 152 (# 0) to the storage cache.
  • the data is transferred to the area 153S (# 0) (S141). If the write data in the file cache area 153F has not been transferred to the storage buffer area 152 (# 0) (S140: NO), that is, if the write data has already been stored in the storage cache area 153S (# 0), step S141 is skipped.
  • the storage function unit P20 sets an inter-controller transfer parameter for transferring write data and a data guarantee code between the controller 11 (# 0) and the controller 11 (# 1) (S142). As a result, the write data and the data guarantee code (CRC + LA) are transferred from the storage cache area 153S (# 0) of the own controller 11 (# 0) via the inter-controller communication path 16 to the other controller 11 (# 1). ) Is transferred to and stored in the storage cache area 153S (# 1).
  • the storage function unit P20 determines whether all write data and data guarantee codes have been transferred from the own controller 11 (# 0) to the other controller 11 (# 1) (S143). When the transfer is completed (S143: YES), this process ends.
  • the storage function unit P20 transfers the unit length write data and the data guarantee code from the own storage cache area 153S (# 0) to the other storage cache area 153S (# 0). Transfer to # 1) and store (S144).
  • the storage function unit P20 calculates an error detection code (CRC) of the unit length write data transferred to the other-system storage cache area 153S (# 1) (S145). Furthermore, the storage function unit P20 calculates address information (LA) that becomes a part of the data guarantee code based on the inter-controller transfer parameter set in step S142 (S146). The storage function unit P20 uses the error detection code (CRC) calculated in step S145 and the address information (LA) calculated in step S146 to write data about the write data transferred to the storage cache area 153S (# 1) of the other system. Generate a data security code. This data guarantee code corresponds to the “fourth data guarantee code”.
  • the storage function unit P20 when the storage function unit P20 receives write data from the file cache area 153F, it generates a data guarantee code (CRC + LA) and adds it to the received write data.
  • CRC + LA data guarantee code
  • the storage function unit P20 completes the transfer of unit-length write data from the local storage cache area 153S (# 0) to the other storage cache area 153S (# 1) normally, and maintains data consistency. It is determined whether it is hit (S147).
  • the storage function unit P20 creates the data guarantee code created before transfer to the other storage cache area 153S (# 1) and the data created after transfer to the other storage cache area 153S (# 1). It is determined whether the guarantee code matches.
  • the data guarantee code created before transfer is a code created when write data is transferred from the file cache area 153F to the own storage cache area 153S (# 0), as described in FIG.
  • the data guarantee code created after the transfer is a code generated when the write data is transferred from the own storage cache area 153S (# 0) to the other storage cache area 153S (# 1).
  • the storage function unit P20 determines that the data guarantee codes match before and after transferring unit-length write data from the own storage cache area 153S (# 0) to the other storage cache area 153S (# 1) ( (S147: YES), the process returns to step S143. Then, the storage function unit P20 transfers the next unit length of write data (S144), regenerates the data guarantee code from the transfer destination write data (S145, S146), and the consistency of the write data is maintained before and after the transfer. Is determined (S147). The storage function unit P20 repeats the above processing for each unit length of write data, and when the transfer of all the write data is completed (S143: YES), the write data to be transferred passes through the storage buffer area 152 (# 0).
  • the storage function unit P20 determines that the data guarantee codes before and after the transfer do not match (S147: NO), it determines that a transfer error has occurred (S148).
  • the storage function unit P20 determines whether or not the write data to be transferred has been transferred to the local storage cache area 153S (# 0) via the storage buffer area 152 (# 0) (S149).
  • the storage function unit P20 determines that the transfer is via the storage buffer area 152 (# 0) (S149: YES), it releases the storage buffer area 152 (# 0) (S150) and ends this process. If the storage function area P20 does not use the storage buffer area 152 (# 0) when transferring the write data (S149: NO), the storage function section P20 skips step S150 and ends this processing.
  • FIG. 22 is a flowchart of response reception processing executed by the file function unit P10.
  • the storage function unit P20 processes the read command or write command issued by the file function unit P10
  • the storage function unit P20 responds to the file function unit P10 with the processing result.
  • the file function unit P10 receives a response transmitted from the storage function unit P20 as described below.
  • the file function unit P10 determines whether a new response is stored in the response queue T30R (S160). If the new response is not stored in the response queue T30R (S160: NO), the file function unit P10 ends this process. On the other hand, when a new response is stored in the response queue T30R (S160: YES), the file function unit P10 takes in the new response from the response queue T30R (S161).
  • the file function unit P10 executes a predetermined process according to the type of command corresponding to the received response and the response result (S162).
  • the type of command corresponding to the fetched response is the command that caused the response to be created.
  • the command type includes a read command and a write command.
  • the response results include a normal response (S117) and an error response (S118).
  • command execution results are stored in a response storage area designated from a file request process (not shown) that has issued a storage request.
  • the file function unit P10 releases the request ID secured for the command that received the response (S163). Further, the file function unit P10 deletes the storage request corresponding to the command that received the response from the storage request management information T50 (S164).
  • FIG. 23 is a flowchart showing an example of processing executed by the file function unit P10 after execution of FIG.
  • the file function unit P10 determines the type of command (S170).
  • the file function unit P10 determines whether a normal response has been received from the storage function unit P20 (S171). When the file function unit P10 receives a normal response for the read command (S171: YES), if the storage request is caused by a file access request from the client computer 2, the file function unit P10 sends a file cache area 153F to the client computer 2. Send the read data stored in
  • the file function unit P10 when the file function unit P10 receives an error response for the read command from the storage function unit P20 (S171: NO), the file function unit P10 erases the read data stored in the file cache area 153F (S173). Since data is overwritten by command retry, the step of deleting data may be abolished.
  • the file function unit P10 determines whether the number of read retries has reached the upper limit (S174). If the number of retries has not reached the upper limit (S174: NO), the file function unit P10 issues a read command again (S175), and ends this process. The reissue of the read command is as described in the command issuance process P11 in FIG. When the number of retries for the read command has reached the upper limit (S174: YES), the file function unit P10 ends this process.
  • the file function unit P10 determines whether the response is a normal response or an error response (S176).
  • S176 a normal response for the write command
  • the file function unit P10 receives a normal response for the write command (S176: YES)
  • the storage request corresponding to the write command is caused by the file access request from the client computer 2
  • the file function unit P10 The processing completion is notified (S177).
  • the file function unit P10 determines whether the number of write retries has reached the upper limit (S180). If the number of retries has not reached the upper limit (S180: NO), the file function unit P10 issues a write command again (S181), and ends this process. When the retry number of the write command reaches the upper limit (S180: YES), the write data stored in the file cache area 153F is deleted (S178). When the storage request corresponding to the write command is caused by the file access request from the client computer 2, the file function unit P10 notifies the client computer 2 that the writing has failed (S179).
  • the file function unit P10 and the storage function unit P20 are closely coupled in the same housing and the memory is used jointly, a special hardware device is not used. The consistency of data in the storage system 1 can be ensured and the usability is improved.
  • the file function unit P10 notifies the client computer 2 of the processing result after confirming that the response from the storage function unit P20 is a normal response. For this reason, it is possible to suppress the possibility of an erroneous report from the storage system 1 to the client computer 2, and to maintain the reliability of the storage system 1.
  • the write data can be stored in the storage cache area 153S via the storage buffer area 152. For this reason, it is possible to prevent the situation where the dirty data is immediately overwritten with the wrong write data received from the file function unit P10. Thereby, the loss of dirty data can be prevented and the reliability of the storage system 1 can be maintained.
  • the write data is transferred from the own storage cache area 153S (# 0) to the other storage cache area 153S (# 1) and redundantly stored
  • the data consistency is checked by software processing. To do. Therefore, it is possible to ensure data consistency when transferring data between the controller 11 (# 0) and the controller 11 (# 1), and to maintain the reliability of the storage system 1.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

The storage system according to the present invention is configured to closely bind a file function unit with a storage function unit in the same housing so as to commonly use a memory unit, thus securing the consistency of data. A storage system 1 comprises: a file function unit that stores a file access request received from a computer apparatus 2 in a file memory region and that issues an input/output request corresponding to the file access request; and a storage function unit that stores target data for the input/output request in a storage memory region and that processes the input/output request. The storage function unit sets a data security code for securing the target data in the target data and, on the basis of the data security code, examines the consistency of the target data.

Description

ストレージシステムおよびストレージシステムのデータ保障方法Storage system and storage system data guarantee method
 本発明は、ストレージシステムおよびストレージシステムのデータ保障方法に関するものである。 The present invention relates to a storage system and a storage system data guarantee method.
 ホストから受領したデータにデータ用のエラーチェックコードを付加して管理することで、ストレージ装置内部でデータの一貫性を保障している(特許文献1)。従来のストレージ装置では、マイクロプロセッサ、キャッシュメモリ、ホスト制御部およびドライブ制御部のデータ転送を制御するためのデータ転送制御回路やスイッチにおいて、エラーチェックコードの生成、エラーチェックコードのデータへの付加、エラーチェックコードの検査などを行う。 Data consistency is guaranteed inside the storage device by adding an error check code for data to the data received from the host for management (Patent Document 1). In a conventional storage device, in a data transfer control circuit and a switch for controlling data transfer of a microprocessor, a cache memory, a host control unit and a drive control unit, an error check code is generated, an error check code is added to data, Check the error check code.
特表2012-519317号公報Special table 2012-519317
 ところで、従来技術では、データ転送元の装置とデータ転送先の装置とがそれぞれ異なるハードウェアとして構成されており、それら各ハードウェア間に設けるスイッチ回路などのハードウェアインターフェースにおいて、エラーチェックコードの生成や検査などを行う。 By the way, in the prior art, the data transfer source device and the data transfer destination device are configured as different hardware, and an error check code is generated in a hardware interface such as a switch circuit provided between the hardwares. And inspection.
 これに対してもしも、データ転送元の装置とデータ転送先の装置とが、同一筐体内で密に結合しており、共通のメモリを介してデータを送受する構成の場合、それら装置を接続するハードウェアインターフェースは不要となる。従って、この場合は、別の方法によってデータの一貫性を保障する必要がある。しかし、従来技術では、このような課題は認識されておらず、その解決策も示されていない。 On the other hand, if the data transfer source device and the data transfer destination device are tightly coupled in the same housing and are configured to send and receive data via a common memory, these devices are connected. A hardware interface is not required. Therefore, in this case, it is necessary to ensure data consistency by another method. However, in the prior art, such a problem is not recognized and the solution is not shown.
 そこで、本発明は上記課題に鑑みてなされたもので、その目的は、ファイル機能部とストレージ機能部とが同一筐体内で密に結合しており、メモリ部を共同使用する構成においても、データの一貫性を保障できるようにしたストレージシステムおよびストレージシステムのデータ保障方法を提供することにある。 Therefore, the present invention has been made in view of the above problems, and the object of the present invention is to provide a data function even in a configuration in which the file function unit and the storage function unit are closely coupled in the same housing, and the memory unit is used jointly. It is an object of the present invention to provide a storage system and a storage system data guarantee method that can ensure consistency of data.
 上記課題を解決すべく、本発明に従うストレージシステムは、コンピュータ装置から受領するファイルアクセス要求をファイル用メモリ領域に格納し、ファイルアクセス要求に応じた入出力要求を発行するファイル機能部と、入出力要求の対象データをストレージ用メモリ領域に格納して、入出力要求を処理するストレージ機能部であって、対象データを保障するためのデータ保障コードを対象データに設定し、データ保障コードに基づいて対象データの一貫性を検査するストレージ機能部と、を備え、ファイル機能部とストレージ機能部とは、同一筐体内で密に結合しており、ファイル機能部およびストレージ機能部により共同使用されるメモリ部に、ファイル用メモリ領域とストレージ用メモリ領域とが設定されており、ストレージ機能部は、入出力要求としてリード要求を処理する場合に、リード要求の対象データであるリード対象データがストレージ用メモリ領域に格納されていない場合には、リード対象データとリード対象データに付加された第1データ保障コードとを記憶装置から読み出して、ストレージ用メモリ領域へ格納し、ストレージ用メモリ領域に格納されたリード対象データをリード転送指示情報に従って、ストレージ用メモリ領域からファイル用メモリ領域へ転送して格納し、ファイル用メモリ領域に格納したリード対象データを読み出して、リード対象データの誤り検出用コードを生成し、リード対象データのアドレス情報をリード転送指示情報から取得し、誤り検出用コードとアドレス情報とに基づいて、第2データ保障コードを生成し、第1データ保障コードと第2データ保障コードとが一致するか判定し、その判定結果に応じてファイル機能部へ応答する。 In order to solve the above problems, a storage system according to the present invention stores a file access request received from a computer device in a file memory area and issues an input / output request corresponding to the file access request, and an input / output This is a storage function unit that processes the input / output request by storing the requested target data in the storage memory area, and sets the data guarantee code to guarantee the target data to the target data, and based on the data guarantee code A storage function unit that checks the consistency of the target data, and the file function unit and the storage function unit are closely coupled in the same housing, and are used jointly by the file function unit and the storage function unit File memory area and storage memory area are set in the When the read request is processed as an input / output request, if the read target data that is the target data of the read request is not stored in the storage memory area, the read request data is added to the read target data and the read target data. The first data guarantee code is read from the storage device and stored in the storage memory area, and the read target data stored in the storage memory area is transferred from the storage memory area to the file memory area in accordance with the read transfer instruction information. The read target data stored in the file memory area is read, an error detection code for the read target data is generated, the address information of the read target data is obtained from the read transfer instruction information, and the error detection code And a second data guarantee code based on the address information and the first data Security code and whether the determined second data guarantee codes match, responsive to the file function unit according to the determination result.
 ストレージ機能部は、入出力要求としてライト要求を処理する場合に、ファイル用メモリ領域からライト要求の対象データであるライト対象データを、ライト転送指示情報に従って読み出してストレージ用メモリ領域に格納し、ライト対象データをファイル用メモリ領域から再度読み出す際に、ライト対象データの誤り検出用コードを生成し、ライト対象データのアドレス情報をライト転送指示情報から取得し、誤り検出用コードとアドレス情報とに基づいて第3データ保障コードを生成し、第3データ保障コードをストレージ用メモリ領域に格納したライト対象データに付加し、第3データ保障コードの付加されたライト対象データを、第2ライト転送指示情報に従って、ストレージ用メモリ領域から他のストレージ用メモリ領域へ転送して格納し、他のストレージ用メモリ領域に格納されたライト対象データから誤り検出用コードを生成し、他のストレージ用メモリ領域に格納されたライト対象データのアドレス情報を第2ライト転送指示情報から取得し、生成した誤り検出用コードと取得した第2アドレス情報とに基づいて第4データ保障コードを生成し、他のストレージ用メモリ領域に格納されたライト対象データに付加されている第3データ保障コードと第4データ保障コードとが一致するか判定し、その判定結果に応じてファイル機能部へ応答することもできる。 When processing the write request as an input / output request, the storage function unit reads the write target data, which is the target data of the write request, from the file memory area according to the write transfer instruction information, stores it in the storage memory area, When the target data is read again from the file memory area, an error detection code for the write target data is generated, the address information of the write target data is obtained from the write transfer instruction information, and based on the error detection code and the address information The third data guarantee code is generated, the third data guarantee code is added to the write target data stored in the storage memory area, and the write target data to which the third data guarantee code is added is second write transfer instruction information. To transfer from one storage memory area to another storage memory area The error detection code is generated from the write target data stored in the other storage memory area, and the address information of the write target data stored in the other storage memory area is obtained from the second write transfer instruction information. Third data that is acquired and generated based on the generated error detection code and the acquired second address information, and is added to the write target data stored in another storage memory area. It is also possible to determine whether the security code matches the fourth data security code, and to respond to the file function unit according to the determination result.
 本発明によれば、ファイル機能部とストレージ機能部とが同一筐体内で密に結合しており、メモリ部を共同使用する構成においても、データの一貫性を保障できる。 According to the present invention, the file function unit and the storage function unit are tightly coupled in the same housing, and data consistency can be ensured even in a configuration in which the memory unit is used jointly.
本実施形態のストレージシステムの全体概要を示す説明図。FIG. 2 is an explanatory diagram showing an overall overview of a storage system according to this embodiment. ストレージシステムの構成例を示す説明図。FIG. 3 is an explanatory diagram illustrating a configuration example of a storage system. ボリューム管理情報の一例を示す。An example of volume management information is shown. コマンド管理情報の一例を示す。An example of command management information is shown. キュー情報の一例を示す。An example of queue information is shown. キューエントリの一例を示す。An example of a queue entry is shown. キューエントリ(リード/ライト要求)の一例を示す。An example of a queue entry (read / write request) is shown. キューエントリ(転送指示)の一例を示す。An example of a queue entry (transfer instruction) is shown. 転送リスト管理情報の一例を示す。An example of transfer list management information is shown. 転送リストの一例を示す。An example of a transfer list is shown. 管理情報の構成例を示す説明図。Explanatory drawing which shows the structural example of management information. ファイル機能部のコマンド発行処理を示すフローチャート。The flowchart which shows the command issuing process of a file function part. ストレージ機能部のコマンド受領処理の全体を示すフローチャート。The flowchart which shows the whole command reception process of a storage function part. コマンド受領処理の一部(リード処理1)を示すフローチャート。7 is a flowchart showing a part of command reception processing (read processing 1). コマンド受領処理の他の一部(ライト処理1)を示すフローチャート。10 is a flowchart showing another part of the command reception process (write process 1). ストレージ機能部のデータ転送処理の全体を示すフローチャート。The flowchart which shows the whole data transfer process of a storage function part. データ転送処理の一部(リード転送処理)を示すフローチャート。6 is a flowchart showing a part of data transfer processing (read transfer processing). データ転送処理の他の一部(ライト転送処理)を示すフローチャート。10 is a flowchart showing another part of the data transfer process (write transfer process). ストレージ機能部の応答発行処理の全体を示すフローチャート。The flowchart which shows the whole response issuing process of a storage function part. 応答発行処理の一部(リード処理2)を示すフローチャート。The flowchart which shows a part (read process 2) of a response issue process. 応答発行処理の他の一部(ライト処理2)を示すフローチャート。The flowchart which shows another part (write process 2) of a response issue process. ファイル機能部の応答受領処理を示すフローチャート。The flowchart which shows the response reception process of a file function part. 図22の処理の実行後にファイル機能部が実行する処理を示すフローチャート。The flowchart which shows the process which a file function part performs after execution of the process of FIG.
 以下、図面に基づいて、本発明の実施の形態を説明する。以下に述べるように、本実施形態では、ファイル機能部とストレージ機能部が同一筐体に実装された形式のストレージシステムにおいて、ストレージ機能部の内部でデータの一貫性を保障する。以下、リード対象データをリードデータと、ライト対象データをライトデータと呼ぶ場合がある。 Hereinafter, embodiments of the present invention will be described with reference to the drawings. As described below, in this embodiment, in a storage system in which the file function unit and the storage function unit are mounted in the same housing, data consistency is ensured inside the storage function unit. Hereinafter, the read target data may be referred to as read data, and the write target data may be referred to as write data.
 ファイル機能部とストレージ機能部とが同一筐体に実装された本実施形態に係るストレージシステムでは、ファイル機能部に相当するハードウェアとストレージ機能部に相当するハードウェアとが存在しないため、それらハードウェアを接続するためのインターフェース用ハードウェアも存在しない。本実施形態に係るストレージシステムでは、データ転送時に、ストレージ機能部が直接、ファイル機能部のメモリにアクセスする。 In the storage system according to the present embodiment in which the file function unit and the storage function unit are mounted in the same casing, hardware corresponding to the file function unit and hardware corresponding to the storage function unit do not exist. There is no interface hardware for connecting the hardware. In the storage system according to the present embodiment, the storage function unit directly accesses the memory of the file function unit during data transfer.
 本実施形態に係るストレージシステムでは、ファイル機能部とストレージ機能部との間に、データの一貫性を保障するためのハードウェアを設けることができないため、ストレージ機能部によりデータの一貫性を保障させる構成を採用する。 In the storage system according to the present embodiment, hardware for ensuring data consistency cannot be provided between the file function unit and the storage function unit. Therefore, the storage function unit ensures data consistency. Adopt the configuration.
 ストレージ機能部とファイル機能部の間でデータを転送する場合、例えば、コンピュータプログラムの動作不良などの何らかの原因によって、データの読出し先のアドレスや書込先アドレスを間違ったり、データ内容を誤ったりする可能性があり得る。 When transferring data between the storage function unit and the file function unit, for example, the data read destination address or write destination address is incorrect or the data content is incorrect due to some cause such as a malfunction of the computer program. There is a possibility.
 例えば、ストレージ機能部がファイル機能部からのライト要求を実行するときに、(W1)ファイル機能部の使用するメモリ領域に格納されたライトデータの格納先アドレスを誤り、間違ったアドレスからデータを読み出してしまう、(W2)格納先アドレスから読み出したライトデータの内容がビットエラーの発生などで誤ってしまう、という可能性がある。 For example, when the storage function unit executes a write request from the file function unit, (W1) the write data storage address stored in the memory area used by the file function unit is incorrect, and data is read from the wrong address. (W2) There is a possibility that the content of the write data read from the storage destination address is erroneous due to the occurrence of a bit error or the like.
 また例えば、ストレージ機能部がファイル機能部からのリード要求を実行するときに、(R1)ファイル機能部の使用するメモリ領域への書込先アドレスを誤り、間違ったアドレスへリードデータを書き込んでしまう、(R2)リードデータを書き込む際にリードデータの内容を誤ってしまう、という可能性がある。 Also, for example, when the storage function unit executes a read request from the file function unit, (R1) the write destination address to the memory area used by the file function unit is incorrect and the read data is written to the wrong address , (R2) When writing read data, there is a possibility that the contents of the read data will be wrong.
 このような潜在的可能性があるため、本実施形態のストレージシステムでは、ストレージ機能部においてデータの一貫性を保障することとした。 Because of such potential, in the storage system of this embodiment, data consistency is guaranteed in the storage function unit.
 そこで、本実施形態のストレージシステムでは、後述のように、ファイルI/F12を持つストレージシステム1であって、ファイルI/F12からのファイルアクセス要求を処理するファイル機能部P10と、ファイル機能部P10からのリード/ライト要求を処理するストレージ機能部P20とを持つ(いずれも図2参照)。ストレージ機能部P20は、独立した複数の不揮発のメモリ領域153S(#0,#1のストレージキャッシュ153S)を持つ。なお、リード/ライト要求とは、リード要求またはライト要求であることを示す。 Therefore, in the storage system of the present embodiment, as will be described later, the storage system 1 has a file I / F 12, and includes a file function unit P10 that processes a file access request from the file I / F 12, and a file function unit P10. And a storage function unit P20 that processes read / write requests from each (see FIG. 2). The storage function unit P20 has a plurality of independent nonvolatile memory areas 153S (# 0, # 1 storage caches 153S). The read / write request indicates a read request or a write request.
 さらに、ストレージ機能部P20は、ファイル機能部P10からのライト要求に対し、ライト要求の内容にエラーが無いことを確認し、ファイル機能部P10のメモリ領域153Fからストレージ機能部P20のメモリ領域(152(#0)または153S(#0)のいずれか)へライトデータを転送する。さらに、ストレージ機能部P20は、ファイル機能部P10のメモリ領域153Fからライトデータを読出して、データ保障コードの一部である誤り検出用コード(CRC)を生成する。さらに、ストレージ機能部P20は、ライト要求先に対応したアドレス情報(LA)を生成する。ストレージ機能部P20は、生成した誤り検出用コード(CRC)とアドレス情報(LA)とから、データ保障コード(CRC+LA)を生成してライトデータに付与する。 Further, in response to the write request from the file function unit P10, the storage function unit P20 confirms that there is no error in the content of the write request, and from the memory area 153F of the file function unit P10 to the memory area (152 of the storage function unit P20) Write data is transferred to either (# 0) or 153S (# 0). Further, the storage function unit P20 reads the write data from the memory area 153F of the file function unit P10, and generates an error detection code (CRC) that is a part of the data guarantee code. Further, the storage function unit P20 generates address information (LA) corresponding to the write request destination. The storage function unit P20 generates a data guarantee code (CRC + LA) from the generated error detection code (CRC) and address information (LA) and assigns it to the write data.
 ストレージ機能部P20は、ライトデータとデータ保障コード(CRC+LA)とを、他系のメモリ領域153S(#1)へ転送する。さらに、ストレージ機能部P20は、他系のメモリ領域153S(#1)に格納したライトデータを読出して誤り検出用コード(CRC)を算出し、ストレージ機能部P20のライト要求先に対応したアドレス情報(LA)を算出する。そして、ストレージ機能部P20は、他系のメモリ領域153S(#1)へ格納したライトデータに対応付けられているデータ保障コード(CRC+LA)と、算出した誤り検出用コード(CRC)およびアドレス情報(LA)から得られるデータ保障コード(CRC+LA)とが一致するか確認する。ストレージ機能部P20は、両方のデータ保障コードが一致することを確認すると、ファイル機能部P10へライト完了を報告する。 The storage function unit P20 transfers the write data and the data guarantee code (CRC + LA) to the other-system memory area 153S (# 1). Furthermore, the storage function unit P20 reads the write data stored in the other-system memory area 153S (# 1) to calculate an error detection code (CRC), and address information corresponding to the write request destination of the storage function unit P20 (LA) is calculated. Then, the storage function unit P20, the data guarantee code (CRC + LA) associated with the write data stored in the memory area 153S (# 1) of the other system, the calculated error detection code (CRC) and address information ( Check if the data guarantee code (CRC + LA) obtained from LA) matches. When the storage function unit P20 confirms that both data guarantee codes match, the storage function unit P20 reports the completion of writing to the file function unit P10.
 ストレージ機能部P20は、ファイル機能部P10からのリード要求に対し、リード要求の内容にエラーが無いことを確認し、リード要求先に対応したアドレス情報(LA)を算出する。さらに、ストレージ機能部P20は、ストレージ機能部P20の使用するメモリ領域(152(#0)または153S(#0)のいずれか)に格納したデータ保障コード(LA)とストレージ機能部のリード要求先に対応したデータ保障コード(LA)の一致を確認する。
さらに、ストレージ機能部P20は、ストレージ機能部P20の使用するメモリ領域(152(#0)または153S(#0)のいずれか)からファイル機能部P10の使用するメモリ領域153Fへリードデータを転送する。
In response to the read request from the file function unit P10, the storage function unit P20 confirms that there is no error in the content of the read request, and calculates address information (LA) corresponding to the read request destination. Further, the storage function unit P20 receives the data guarantee code (LA) stored in the memory area (either 152 (# 0) or 153S (# 0)) used by the storage function unit P20 and the read request destination of the storage function unit. The data guarantee code (LA) corresponding to is confirmed.
Further, the storage function unit P20 transfers the read data from the memory area (either 152 (# 0) or 153S (# 0)) used by the storage function unit P20 to the memory area 153F used by the file function unit P10. .
 さらに、ストレージ機能部P20は、ファイル機能部P10の使用するメモリ領域153Fからリードデータを読出して、誤り検出用コード(CRC)を算出し、ストレージ機能部P20のリード要求先に対応したアドレス情報(LA)を算出する。ストレージ機能部P20は、読み出したリードデータに付加されているデータ保障コード(CRC+LA)と算出したデータ保障コード(CRC+LA)とが一致するか確認し、一致する場合にファイル機能部P10へリード完了を報告する。 Further, the storage function unit P20 reads the read data from the memory area 153F used by the file function unit P10, calculates an error detection code (CRC), and addresses information (corresponding to the read request destination of the storage function unit P20) LA) is calculated. The storage function unit P20 checks whether the data guarantee code (CRC + LA) added to the read data that has been read matches the calculated data guarantee code (CRC + LA). Report.
 本実施形態のストレージシステムによれば、ファイルアクセス要求を受け付けたファイル機能部P10がストレージ機能部P20から対象データを受領するまでの間、そのデータ一貫性をストレージ機能部によって保障することができる。 According to the storage system of this embodiment, the data consistency can be ensured by the storage function unit until the file function unit P10 that has received the file access request receives the target data from the storage function unit P20.
 図1は、本実施形態に係るストレージシステム1の全体概要を示す。ストレージシステム1は、図2で後述するように、ファイル機能部P10とストレージ機能部P20が共通のメモリ15を介してデータを転送する。図1の右側にはリード要求を処理する場合を示し、図1の左側にはライト要求を処理する場合を示す。各動作に添えたステップ番号は、後述するフローチャート中のステップ番号に対応している。 FIG. 1 shows an overall outline of the storage system 1 according to the present embodiment. In the storage system 1, as will be described later with reference to FIG. 2, the file function unit P <b> 10 and the storage function unit P <b> 20 transfer data via a common memory 15. The right side of FIG. 1 shows a case where a read request is processed, and the left side of FIG. 1 shows a case where a write request is processed. The step number attached to each operation corresponds to a step number in a flowchart described later.
 先にリード要求の処理を説明する。クライアントコンピュータ2がストレージシステム1に対してファイルの読み出しを要求すると、ファイル機能部P10は、そのファイルアクセス要求に対応するリードコマンドをストレージ機能部P20に対して発行する。 First, read request processing will be explained. When the client computer 2 requests the storage system 1 to read a file, the file function unit P10 issues a read command corresponding to the file access request to the storage function unit P20.
 ストレージ機能部P20は、要求されたファイルのデータが自系(#0)のストレージキャッシュ領域153S(#0)に存在するか否か判定する。ストレージ機能部P20は、要求されたリードデータ(リード対象データ)がストレージキャッシュ領域153S(#0)に格納されている場合、そのリードデータおよびデータ保障コードGCをストレージキャッシュ領域153S(#0)からストレージバッファ領域152(#0)へ転送する(S44)。 The storage function unit P20 determines whether or not the requested file data exists in the storage cache area 153S (# 0) of the own system (# 0). When the requested read data (read target data) is stored in the storage cache area 153S (# 0), the storage function unit P20 obtains the read data and the data guarantee code GC from the storage cache area 153S (# 0). The data is transferred to the storage buffer area 152 (# 0) (S44).
 リードデータには、データ保障コードGCが付加されている。データ保障コードGCとは、ストレージシステム1内においてデータの一貫性を保障するためのデータである。データ保障コードは、例えばCRC(Cyclic Redundancy Check)のような誤り検出用コードとアドレス情報とから構成される。リードデータに付加されているデータ保障コードは、「第1データ保障コード」に該当する。 The data guarantee code GC is added to the read data. The data guarantee code GC is data for ensuring data consistency in the storage system 1. The data guarantee code is composed of an error detection code such as CRC (Cyclic Redundancy Check) and address information. The data guarantee code added to the read data corresponds to the “first data guarantee code”.
 もしも要求されたリードデータがストレージキャッシュ領域153S(#0)に格納されていない場合、ストレージ機能部P20は、論理的な記憶装置である論理ボリューム21(図2参照)から、データ保障コードの付加されたリードデータを読み出し、ストレージキャッシュ領域153S(#0)へ転送する。その後、ストレージ機能部P20は、ストレージキャッシュ領域153S(#0)からストレージバッファ領域152(#0)へリードデータおよびデータ保障コードGCを転送する(S44)。 If the requested read data is not stored in the storage cache area 153S (# 0), the storage function unit P20 adds a data guarantee code from the logical volume 21 (see FIG. 2), which is a logical storage device. The read data read is read and transferred to the storage cache area 153S (# 0). Thereafter, the storage function unit P20 transfers the read data and the data guarantee code GC from the storage cache area 153S (# 0) to the storage buffer area 152 (# 0) (S44).
 ストレージ機能部P20は、ストレージキャッシュ領域153S(#0)からストレージバッファ領域152(#0)へリードデータを転送した際に、リードデータのアドレス情報が正しいか確認する(S82)。つまり、ストレージ機能部P20は、転送対象のリードデータに付加されているデータ保障コード中のアドレス情報(LA)と、その転送に用いた転送パラメータに示されるアドレス情報(LA)とを比較し、両方のアドレス情報が一致することを確認する。 The storage function unit P20 confirms whether the address information of the read data is correct when the read data is transferred from the storage cache area 153S (# 0) to the storage buffer area 152 (# 0) (S82). That is, the storage function unit P20 compares the address information (LA) in the data guarantee code added to the read data to be transferred with the address information (LA) indicated in the transfer parameter used for the transfer, Make sure that both address information matches.
 正しいアドレスから読み出したことを確認すると、ストレージ機能部P20は、リードデータを、転送元であるストレージバッファ領域152(#0)から、転送先であるファイルキャッシュ領域153Fへ転送し格納する(S84)。 When it is confirmed that the data has been read from the correct address, the storage function unit P20 transfers the read data from the transfer source storage buffer area 152 (# 0) to the transfer destination file cache area 153F for storage (S84). .
 ここで、ストレージバッファ領域152(#0)からファイルキャッシュ領域153Fには、リードデータのみが転送され、データ保障コードGCは転送されない。データ保障コードGCは、ストレージシステム1内でのデータの一貫性を保障するためのものであり、クライアントコンピュータ2との間でコマンドやデータを送受するファイル機能部P10では、不必要な情報だからである。 Here, only the read data is transferred from the storage buffer area 152 (# 0) to the file cache area 153F, and the data guarantee code GC is not transferred. The data guarantee code GC is for ensuring the consistency of data in the storage system 1 and is unnecessary information in the file function unit P10 that sends and receives commands and data to and from the client computer 2. is there.
 ストレージ機能部P20は、ファイル機能部P10へ引き渡したデータの一貫性(正しい場所から読み出した正しい内容であるか)を検査する。ストレージ機能部P20は、ファイルキャッシュ領域153Fからリードデータを読み出して、誤り検出用コード(CRC)を算出する(S85)。 The storage function unit P20 checks the consistency of the data delivered to the file function unit P10 (whether it is the correct content read from the correct location). The storage function unit P20 reads the read data from the file cache area 153F and calculates an error detection code (CRC) (S85).
 ストレージ機能部P20は、ファイルキャッシュ領域153Fへリードデータを転送する際に使用した転送パラメータからアドレス情報(LA)を算出する(S86)。転送パラメータは「転送指示」に該当する。リード処理時に使用する転送パラメータは、「リード転送指示情報」に該当する。つまり、ストレージ機能部P20は、転送先に転送されたリードデータについて誤り検出用コード(CRC)およびアドレス情報(LA)を算出することで、転送先におけるデータ保障コードを生成する。転送先のファイルキャッシュ領域153Fに格納されたリードデータについて生成するデータ保障コードは、「第2データ保障コード」に該当する。 The storage function unit P20 calculates address information (LA) from the transfer parameters used when transferring read data to the file cache area 153F (S86). The transfer parameter corresponds to “transfer instruction”. The transfer parameter used in the read process corresponds to “read transfer instruction information”. That is, the storage function unit P20 calculates the error detection code (CRC) and address information (LA) for the read data transferred to the transfer destination, thereby generating a data guarantee code at the transfer destination. The data guarantee code generated for the read data stored in the transfer destination file cache area 153F corresponds to the “second data guarantee code”.
 ストレージ機能部P20は、転送元のリードデータに付加されていたデータ保障コードと、転送先のリードデータから改めて算出したデータ保障コードとを比較し、両方のデータ保障コードが一致するか判定する(S87)。 The storage function unit P20 compares the data guarantee code added to the read data of the transfer source with the data guarantee code newly calculated from the read data of the transfer destination, and determines whether both data guarantee codes match ( S87).
 両方のデータ保障コードが一致する場合、ファイル機能部P10は、要求したリードデータが正しい場所から読み出されて、正しい内容のままで引き渡されたと判定することができる。ファイル機能部P10は、図23で後述するように、リード要求が正常に終了したことを確認すると、クライアントコンピュータ2にリードデータを送信する。 If both data guarantee codes match, the file function unit P10 can determine that the requested read data is read from the correct location and delivered with the correct contents. As will be described later with reference to FIG. 23, the file function unit P10 transmits read data to the client computer 2 when confirming that the read request has been completed normally.
 これに対し、両方のデータ保障コードが不一致の場合、ストレージシステム1内でのリードデータの一貫性が保たれていないため、ストレージ機能部P20は、リード要求の処理をエラー終了する(S88)。 On the other hand, if both data guarantee codes do not match, the consistency of the read data in the storage system 1 is not maintained, so the storage function unit P20 ends the read request processing in error (S88).
 なお、リードデータの転送元は、常にストレージバッファ領域152(#0)であるとは限らない。ストレージキャッシュ領域153S(#0)からファイルキャッシュ領域153Fへ直接転送してもよい(図14のS43参照)。要求されたリードデータが自系(#0)のストレージキャッシュ領域153S(#0)に存在せず、他系(#1)のストレージキャッシュ領域153S(#1)に存在する場合は、他系のストレージキャッシュ領域153S(#1)から自系のストレージバッファ領域152(#0)へリードデータを転送する。 Note that the read data transfer source is not always the storage buffer area 152 (# 0). The data may be directly transferred from the storage cache area 153S (# 0) to the file cache area 153F (see S43 in FIG. 14). If the requested read data does not exist in the own system (# 0) storage cache area 153S (# 0) but exists in the other system (# 1) storage cache area 153S (# 1), Read data is transferred from the storage cache area 153S (# 1) to the local storage buffer area 152 (# 0).
 次に、図1の左側に示すライト要求の処理を説明する。クライアントコンピュータ2がストレージシステム1に対してファイルの書込み(更新を含む)を要求すると、ファイル機能部P10は、そのファイルアクセス要求に対応するライトコマンドをストレージ機能部P20に対して発行する。また、ファイル機能部P10は、クライアントコンピュータ2から受領したライトデータをファイルキャッシュ領域153Fに格納する。 Next, the write request process shown on the left side of FIG. 1 will be described. When the client computer 2 requests the storage system 1 to write (including update) a file, the file function unit P10 issues a write command corresponding to the file access request to the storage function unit P20. Further, the file function unit P10 stores the write data received from the client computer 2 in the file cache area 153F.
 ストレージ機能部P20は、ファイルキャッシュ領域153Fからストレージバッファ領域152(#0)へライトデータを転送する。そして、ストレージ機能部P20は、ファイルキャッシュ領域153Fからライトデータを再び読み出して、誤り検出用コード(CRC)を生成する(S102)。さらに、ストレージ機能部P20は、ライトデータの転送に使用した転送パラメータから、ライトデータのアドレス情報(LA)を算出する(S103)。ファイルキャッシュ領域153Fからストレージバッファ領域152(#0)へのライトデータの転送に使用した転送パラメータは、「ライト転送指示情報」に該当する。 The storage function unit P20 transfers write data from the file cache area 153F to the storage buffer area 152 (# 0). Then, the storage function unit P20 reads the write data again from the file cache area 153F, and generates an error detection code (CRC) (S102). Further, the storage function unit P20 calculates the address information (LA) of the write data from the transfer parameter used for the transfer of the write data (S103). The transfer parameter used for transfer of write data from the file cache area 153F to the storage buffer area 152 (# 0) corresponds to “write transfer instruction information”.
 ストレージ機能部P20は、転送元のライトデータから算出した誤り検出用コード(CRC)と転送パラメータから算出したアドレス情報(LA)とから、データ保障コードGCを生成し、ライトデータに付加する(S104)。このデータ保障コードは、「第3データ保障コード」に該当する。 The storage function unit P20 generates a data guarantee code GC from the error detection code (CRC) calculated from the transfer source write data and the address information (LA) calculated from the transfer parameter, and adds it to the write data (S104). ). This data guarantee code corresponds to a “third data guarantee code”.
 ストレージ機能部P20は、データ保障コードの付加されたライトデータを、ストレージバッファ領域152(#0)からストレージキャッシュ領域153S(#0)へ転送する(S141)。さらに、ストレージ機能部P20は、自系のストレージキャッシュ領域153S(#0)に格納したライトデータおよびデータ保障コードを、他系のストレージキャッシュ領域153S(#1)へ転送する(S144)。これにより、ライトデータは、異なる複数のストレージキャッシュ領域153S(#0)、153S(#1)に格納されるため、データ消失に対する安全性が高まる。 The storage function unit P20 transfers the write data with the data guarantee code added from the storage buffer area 152 (# 0) to the storage cache area 153S (# 0) (S141). Further, the storage function unit P20 transfers the write data and data guarantee code stored in the own storage cache area 153S (# 0) to the other storage cache area 153S (# 1) (S144). As a result, the write data is stored in a plurality of different storage cache areas 153S (# 0) and 153S (# 1), so that safety against data loss is increased.
 ストレージ機能部P20は、他系のストレージキャッシュ領域153S(#1)への転送が正常に行われ、データの一貫性が保たれているかを下記に述べるように検査する。ストレージ機能部P20は、他系のストレージキャッシュ領域153S(#1)に格納されたライトデータを読み出して誤り検出用コード(CRC)を算出する(S145)。 The storage function unit P20 checks whether transfer to the other storage cache area 153S (# 1) is normally performed and data consistency is maintained as described below. The storage function unit P20 reads the write data stored in the storage cache area 153S (# 1) of the other system and calculates an error detection code (CRC) (S145).
 ストレージ機能部P20は、ストレージキャッシュ領域153S(#0)からストレージキャッシュ領域153S(#1)へのライトデータおよびデータ保障コードの転送に使用した転送パラメータから、アドレス情報(LA)を取得する(S146)。 The storage function unit P20 acquires the address information (LA) from the transfer parameters used for the transfer of the write data and the data guarantee code from the storage cache area 153S (# 0) to the storage cache area 153S (# 1) (S146). ).
 ストレージ機能部P20は、転送先において算出した前記誤り検出用コード(CRC)と転送に使用した前記アドレス情報(LA)とから、データ保障コードを作成する。このデータ保障コードは「第4データ保障コード」に該当する。 The storage function unit P20 creates a data guarantee code from the error detection code (CRC) calculated at the transfer destination and the address information (LA) used for transfer. This data guarantee code corresponds to the “fourth data guarantee code”.
 そして、ストレージ機能部P20は、算出したデータ保障コード(第4データ保障コード)と、他系のストレージキャッシュ領域153S(#1)に格納されたライトデータに付加されているデータ保障コード(第3データ保障コード)とが、一致するかを判定する(S147)。 The storage function unit P20 then calculates the data guarantee code (fourth data guarantee code) and the data guarantee code (third answer) added to the write data stored in the storage cache area 153S (# 1) of the other system. It is determined whether or not the data guarantee code matches (S147).
 両方のデータ保障コードが一致するときは、自系のストレージキャッシュ領域153S(#0)から他系のストレージキャッシュ領域153S(#1)へのライトデータおよびデータ保障コードの転送は正常に終了した場合である。ストレージ機能部P20は、図19で後述するように、ファイル機能部P10へライト要求が正常に終了した旨を報告する(S117)。ファイル機能部P10は、ライト要求が正常に終了した旨の応答をストレージ機能部P20から受領すると、クライアントコンピュータ2にライトコマンドの処理が正常に終了したと報告する。 When both data guarantee codes match, the transfer of the write data and the data guarantee code from the own storage cache area 153S (# 0) to the other storage cache area 153S (# 1) is normally completed. It is. As will be described later with reference to FIG. 19, the storage function unit P20 reports to the file function unit P10 that the write request has been normally completed (S117). When the file function unit P10 receives from the storage function unit P20 a response indicating that the write request has been completed normally, the file function unit P10 reports to the client computer 2 that the write command processing has been completed normally.
 なお、ライトデータを、ファイルキャッシュ領域153Fから自系のストレージバッファ領域152(#0)を経由して自系のストレージキャッシュ領域153S(#0)へ転送するのは、書き間違いに備えるためである。いったんストレージバッファ領域152(#0)に格納することにより、間違ったライトデータでストレージキャッシュ領域153S(#0)上の既存データを上書きしてしまうことを防止できる。 The write data is transferred from the file cache area 153F to the local storage cache area 153S (# 0) via the local storage buffer area 152 (# 0) in order to prepare for a write error. . Once stored in the storage buffer area 152 (# 0), it is possible to prevent overwriting existing data in the storage cache area 153S (# 0) with wrong write data.
 これに代えて、ファイルキャッシュ領域153Fから自系のストレージバッファ領域152(#0)を経由せずに、自系のストレージキャッシュ領域153S(#0)へライトデータを直接転送してもよい。例えば、ストレージキャッシュ領域153S(#0)上に既存データが存在しない新規書き込みの場合は、ストレージバッファ領域152(#0)を経由せずにストレージキャッシュ領域153S(#0)にライトデータを直接書き込んでも不都合は生じない。この場合、ストレージ機能部P20は、ストレージキャッシュ領域153S(#0)に格納されたライトデータについてデータ保障コードを生成して、そのライトデータに付加する(S104)。 Alternatively, the write data may be directly transferred from the file cache area 153F to the local storage cache area 153S (# 0) without going through the local storage buffer area 152 (# 0). For example, in the case of new writing in which existing data does not exist in the storage cache area 153S (# 0), write data is directly written to the storage cache area 153S (# 0) without going through the storage buffer area 152 (# 0). But there is no inconvenience. In this case, the storage function unit P20 generates a data guarantee code for the write data stored in the storage cache area 153S (# 0) and adds it to the write data (S104).
 図2は、ストレージシステムのハードウェア構成例を示す。ストレージシステム1は、例えば、少なくとも一つのクライアントコンピュータ2および管理端末3と通信ネットワークCN1を介して双方向通信可能に接続されている。通信ネットワークCN1は、インターネット等のIP(Internet Protocol)ネットワークとして形成してもよいし、FC-SAN(Fibre Channel - Storage Area Network)として形成してもよい。 FIG. 2 shows a hardware configuration example of the storage system. The storage system 1 is connected to, for example, at least one client computer 2 and a management terminal 3 via a communication network CN1 so as to be capable of bidirectional communication. The communication network CN1 may be formed as an IP (Internet Protocol) network such as the Internet, or may be formed as an FC-SAN (Fibre Channel Channel-Storage Area Network).
 「コンピュータ装置」としてのクライアントコンピュータ2は、ストレージシステム1に対してファイルアクセス要求を発行する。管理端末3は、ストレージシステム管理者がストレージシステム1を管理するためのコンピュータ端末である。保守端末4は、ストレージ管理者がストレージシステム1を保守するためのコンピュータ端末である。 The client computer 2 as a “computer device” issues a file access request to the storage system 1. The management terminal 3 is a computer terminal for the storage system administrator to manage the storage system 1. The maintenance terminal 4 is a computer terminal for the storage administrator to maintain the storage system 1.
 ストレージシステム1は、例えば、ストレージ制御装置10と、ストレージ搭載部20とを備えている。先にストレージ搭載部20を説明すると、ストレージ搭載部20は、複数の記憶装置21を備えている。記憶装置21としては、ハードディスクドライブ、半導体メモリドライブ、光ディスクドライブ、光磁気ディスクドライブ等のデータを読み書き可能な種々のドライブを利用可能である。ハードディスクドライブの場合、例えば、FC(Fibre Channel)ディスク、SCSI(Small Computer System Interface)ディスク、SATAディスク、ATA(AT Attachment)ディスク、SAS(Serial Attached SCSI)ディスク等を用いることができる。また、例えば、フラッシュメモリ、MRAM(Magnetoresistive Random Access Memory)、相変化メモリ(Phase-Change Memory)、ReRAM(Resistive random-access memory)、FeRAM(Ferroelectric Random Access Memory)等の種々のドライブを用いることもできる。さらに、例えば、種類の異なるドライブを混在させる構成でもよい。記憶装置21の物理的記憶領域を用いて、論理的記憶装置である論理ボリューム22を形成することができる。 The storage system 1 includes, for example, a storage control device 10 and a storage mounting unit 20. The storage mounting unit 20 will be described first. The storage mounting unit 20 includes a plurality of storage devices 21. As the storage device 21, various drives capable of reading and writing data such as a hard disk drive, a semiconductor memory drive, an optical disk drive, and a magneto-optical disk drive can be used. In the case of a hard disk drive, for example, a FC (Fibre Channel) disk, a SCSI (Small Computer System Interface) disk, a SATA disk, an ATA (AT Attachment) disk, a SAS (Serial Attached SCSI) disk, or the like can be used. Also, for example, various drives such as flash memory, MRAM (Magnetoresistive Random Access Memory), phase change memory (Phase-Change Memory), ReRAM (Resistive random access memory), FeRAM (Ferroelectric Random Access Memory), etc. may be used. it can. Furthermore, for example, a configuration in which different types of drives are mixed may be used. A logical volume 22 that is a logical storage device can be formed by using the physical storage area of the storage device 21.
 複数の論理ボリューム22をプールに保存し、仮想ボリュームへのライト要求に応じて、プールされた論理ボリューム22の有する記憶領域を仮想ボリュームに割り当てる構成としてもよい。いわゆるシン・プロビジョニング技術である。 A configuration may be adopted in which a plurality of logical volumes 22 are stored in a pool, and a storage area of the pooled logical volume 22 is allocated to the virtual volume in response to a write request to the virtual volume. This is so-called thin provisioning technology.
 ストレージシステム1は、その内部に記憶装置21を備えている必要はない。ストレージシステム1は、他のストレージシステム内の論理ボリュームをストレージシステム1の内部取り込んで、それがあたかもストレージシステム1に固有の内部ボリュームであるかのようにして使用することもできる。 The storage system 1 does not need to include the storage device 21 therein. The storage system 1 can also take a logical volume in another storage system into the storage system 1 and use it as if it were an internal volume unique to the storage system 1.
 ストレージ制御装置10を説明する。ストレージ制御装置10は、複数の(例えば2つの)コントローラ11を備えている。一方のコントローラ11には系番号#0を付し、他方のコントローラ11には系番号#1を付す。一方のコントローラ11(#0)と他方のコントローラ11(#1)とは冗長化ペアを構成しており、互いに相手方のコントローラ11が障害などで停止した場合に、その停止したコントローラ11に代わって処理を続行することができるようになっている。2つの系#0、#1のうち、対象のコマンドを実行している方を自系と呼び、対象のコマンドを実行していない方を他系と呼ぶ。 The storage control device 10 will be described. The storage control device 10 includes a plurality of (for example, two) controllers 11. One controller 11 is assigned a system number # 0, and the other controller 11 is assigned a system number # 1. One controller 11 (# 0) and the other controller 11 (# 1) form a redundant pair. When the other controller 11 stops due to a failure or the like, it replaces the stopped controller 11. Processing can be continued. Of the two systems # 0 and # 1, the one executing the target command is called the own system, and the one not executing the target command is called the other system.
 コントローラ11は、例えば、フロントエンドインターフェース12、バックエンドインターフェース13、マイクロプロセッサ14、メモリ15を備えている。これら各ハードウェア12~15は、それぞれ複数ずつ設けることができる。 The controller 11 includes, for example, a front-end interface 12, a back-end interface 13, a microprocessor 14, and a memory 15. A plurality of these hardware units 12 to 15 can be provided.
 「第1通信インターフェース部」の一例であるフロントエンドインターフェース12は、例えばNFS(Network File System)などのファイルプロトコルに対応する。フロントエンドインターフェース12は、通信ネットワークCN1を介して、クライアントコンピュータ2および管理端末3と双方向通信することができる。さらに、ストレージシステム1には、ファイバチャネルのブロックプロトコルに対応するフロントエンドインターフェース12を設けてもよい。 The front end interface 12 as an example of the “first communication interface unit” corresponds to a file protocol such as NFS (Network File System). The front end interface 12 can bidirectionally communicate with the client computer 2 and the management terminal 3 via the communication network CN1. Further, the storage system 1 may be provided with a front-end interface 12 corresponding to the fiber channel block protocol.
 「第2通信インターフェース部」の一例としてのバックエンドインターフェース13は、記憶装置21に対してデータを読み書きするための通信インターフェースであり、SAS(Serial Attached SCSI)のブロックプロトコルに対応している。 The back-end interface 13 as an example of the “second communication interface unit” is a communication interface for reading / writing data from / to the storage device 21, and corresponds to a SAS (Serial Attached SCSI) block protocol.
 「マイクロプロセッサ部」としてのマイクロプロセッサ14は、フロントエンドインターフェース12、バックエンドインターフェース13およびメモリ15に接続されており、メモリ15に格納されているコンピュータプログラムP10、P20を読み込んで実行することで、所望の機能を実現する。マイクロプロセッサ14は、相手方のコントローラ11のマイクロプロセッサ14に、コントローラ間通信経路16を介して双方向通信可能に接続されている。マイクロプロセッサ14は、コントローラ間通信経路16を介して、相手方のコントローラ11内のメモリ15にアクセスすることができる。 The microprocessor 14 as the “microprocessor unit” is connected to the front-end interface 12, the back-end interface 13 and the memory 15, and reads and executes the computer programs P 10 and P 20 stored in the memory 15. Realize the desired function. The microprocessor 14 is connected to the microprocessor 14 of the partner controller 11 so as to be capable of bidirectional communication via the inter-controller communication path 16. The microprocessor 14 can access the memory 15 in the partner controller 11 via the inter-controller communication path 16.
 「メモリ部」の一例としてのメモリ15は、コンピュータプログラムや管理情報などを記憶するためのものである。メモリ15のプログラム格納領域150には、例えば、ファイルプログラムP10およびストレージプログラムP20が格納されている。 The memory 15 as an example of the “memory unit” is for storing a computer program, management information, and the like. In the program storage area 150 of the memory 15, for example, a file program P10 and a storage program P20 are stored.
 ファイルプログラムP10は、「ファイル機能部」を実現するためのコンピュータプログラムである。従って、ファイル機能部P10と呼ぶ場合がある。ファイルプログラムP10は、ストレージ機能部に対してコマンドを発行する処理P11と、ストレージ機能部からの応答を受領する処理P12とを備える。それら処理P11、P12については後述する。 The file program P10 is a computer program for realizing a “file function unit”. Therefore, it may be called a file function unit P10. The file program P10 includes a process P11 for issuing a command to the storage function unit and a process P12 for receiving a response from the storage function unit. The processes P11 and P12 will be described later.
 ストレージプログラムP20は、「ストレージ機能部」を実現するためのコンピュータプログラムである。従って、ストレージ機能部P20と呼ぶ場合がある。ストレージプログラムP20は、ファイル機能部からコマンドを受領する処理P21と、データを転送する処理P22と、ファイル機能部に対してコマンド処理の結果を応答する処理P23とを備える。それら処理P21~P23については後述する。 The storage program P20 is a computer program for realizing a “storage function unit”. Therefore, it may be called a storage function unit P20. The storage program P20 includes a process P21 for receiving a command from the file function unit, a process P22 for transferring data, and a process P23 for responding the result of the command process to the file function unit. The processes P21 to P23 will be described later.
 メモリ15には、プログラム格納領域150以外に、管理情報領域151、バッファ領域152およびキャッシュ領域153が設けられている。キャッシュ領域153は、図1に示すように、ファイル機能部P10により使用されるファイルキャッシュ領域153Fと、ストレージ機能部P20により使用されるストレージキャッシュ領域153Sとに分けられる。 In addition to the program storage area 150, the memory 15 is provided with a management information area 151, a buffer area 152, and a cache area 153. As shown in FIG. 1, the cache area 153 is divided into a file cache area 153F used by the file function unit P10 and a storage cache area 153S used by the storage function unit P20.
 なお、複数のマイクロプロセッサ14のうち、特定のマイクロプロセッサ14がファイルプログラムP10およびストレージプログラムP20を実行する構成でもよいし、または、一つのマイクロプロセッサ14がファイルプログラムP10とストレージプログラムP20を時分割で略同時に実行する構成でもよい。マイクロプロセッサ14の動作を管理するためのハイパバイザプログラムを実行することで、ファイルプログラムP10とストレージプログラムP20を切り替えることができる。 A specific microprocessor 14 may execute the file program P10 and the storage program P20 among the plurality of microprocessors 14, or one microprocessor 14 may time-share the file program P10 and the storage program P20. It may be configured to execute substantially simultaneously. By executing a hypervisor program for managing the operation of the microprocessor 14, the file program P10 and the storage program P20 can be switched.
 図3は、ボリューム管理情報T10の例を示す。ボリューム管理情報T10は、ストレージシステム1内の各論理ボリューム22を管理するための情報である。ボリューム管理情報T10は、例えば、ボリューム番号C100、ボリュームサイズC101、状態C102、パス定義情報リストC103、ボリューム属性C104、記憶領域管理情報C105を備える。 FIG. 3 shows an example of the volume management information T10. The volume management information T10 is information for managing each logical volume 22 in the storage system 1. The volume management information T10 includes, for example, a volume number C100, a volume size C101, a status C102, a path definition information list C103, a volume attribute C104, and storage area management information C105.
 ボリューム番号C100は、ストレージシステム1内で各論理ボリューム22を一意に識別するための情報である。ボリュームサイズC101は、論理ボリューム22の記憶容量を示す。状態C102は、論理ボリューム22の状態を示す。ボリューム状態としては、例えば、「正常」「閉塞」「未使用」がある。 The volume number C100 is information for uniquely identifying each logical volume 22 in the storage system 1. The volume size C101 indicates the storage capacity of the logical volume 22. The status C102 indicates the status of the logical volume 22. Examples of the volume state include “normal”, “blocked”, and “unused”.
 ホストパス定義情報リストC103は、ストレージ要求を発行するファイル機能部P10とそのストレージ要求の対象である論理ボリューム22との接続関係を定義する情報である。ホストパス定義情報リストC103は、リード/ライト要求元のファイル機能部P10を特定する情報と、リード/ライト要求先の対象論理ボリューム22を特定する情報とを含む。ファイル機能部P10を特定する情報は、例えば、ファイル機能部P10を識別するためのコンピュータ名(または識別番号)と、論理ボリューム22との通信に使用する通信ポートを特定するための情報とを含む。対象の論理ボリューム22を特定する情報は、例えば、フロントエンドインターフェース12の通信ポートを特定するための情報と、LUN(Logical Unit Number)などを含む。 The host path definition information list C103 is information that defines the connection relationship between the file function unit P10 that issues a storage request and the logical volume 22 that is the target of the storage request. The host path definition information list C103 includes information for specifying the file function unit P10 of the read / write request source and information for specifying the target logical volume 22 of the read / write request destination. The information specifying the file function unit P10 includes, for example, a computer name (or identification number) for identifying the file function unit P10 and information for specifying a communication port used for communication with the logical volume 22. . The information for specifying the target logical volume 22 includes, for example, information for specifying the communication port of the front-end interface 12 and LUN (Logical Unit Number).
 ボリューム属性C104は、論理ボリューム22の属性を示す情報である。ボリューム属性には、例えば、通常ボリューム、コピー元ボリューム、コピー先ボリューム、外部接続ボリューム、シン・プロビジョニングボリューム、プールボリュームなどがある。外部接続ボリュームとは、ストレージシステム1の外部に存在する他のストレージシステム内の論理ボリュームに接続されている仮想的なボリュームである。 The volume attribute C104 is information indicating the attribute of the logical volume 22. Examples of the volume attribute include a normal volume, a copy source volume, a copy destination volume, an externally connected volume, a thin provisioning volume, and a pool volume. The externally connected volume is a virtual volume connected to a logical volume in another storage system that exists outside the storage system 1.
 記憶領域管理情報C105は、論理ボリューム22を構成する記憶領域を管理するための情報である。記憶領域管理情報C105としては、例えば、その論理ボリューム22の属するプール番号、その論理ボリューム22のRAID(Redundant Arrays of Inexpensive Disks)レベル、その論理ボリューム22が設定されている記憶装置21のリストなどを挙げることができる。論理ボリューム22がいわゆるシン・プロビジョニングボリュームのような仮想ボリュームである場合、記憶領域管理情報C104は、例えば、仮想ボリューム内の仮想ページとプールで管理される実ページとの対応関係などを含む。ページとは、所定サイズの記憶領域を意味する。 Storage area management information C105 is information for managing the storage areas constituting the logical volume 22. The storage area management information C105 includes, for example, a pool number to which the logical volume 22 belongs, a RAID (Redundant Arrays of Inexpensive Disks) level of the logical volume 22, a list of storage devices 21 in which the logical volume 22 is set, and the like. Can be mentioned. When the logical volume 22 is a virtual volume such as a so-called thin provisioning volume, the storage area management information C104 includes, for example, a correspondence relationship between a virtual page in the virtual volume and a real page managed in the pool. A page means a storage area of a predetermined size.
 図4は、コマンド管理情報T20の例を示す。コマンド管理情報T20は、ストレージシステム1が受け付けたコマンドを管理するための情報である。コマンド管理情報T20は、例えば、コマンド実行状態C200、ポート番号C201、要求ボリューム番号C202、イニシエータ情報C203、ストレージ内シーケンス番号C204、転送ID C205、受領コマンド内容C206、データ転送結果C207を含む。 FIG. 4 shows an example of the command management information T20. The command management information T20 is information for managing commands accepted by the storage system 1. The command management information T20 includes, for example, a command execution state C200, a port number C201, a requested volume number C202, initiator information C203, an in-storage sequence number C204, a transfer ID C205, a received command content C206, and a data transfer result C207.
 コマンド実行状態C200は、コマンドの実行状態を示す情報である。コマンド実行状態としては、例えば「実行中」「処理完了待ち」「起動待ち」「転送終了」「正常終了」「エラー終了」などがある。ポート番号C201は、コマンドを受け付けた通信ポートを特定する情報である。要求ボリューム番号C202は、コマンドの処理対象となる論理ボリューム22を特定する情報である。イニシエータ情報C203は、コマンドの発行元であるイニシエータを特定する情報である。コマンドの発行元がファイル機能部P10であることを識別する情報等を格納する。 The command execution status C200 is information indicating the command execution status. The command execution status includes, for example, “being executed”, “waiting for processing completion”, “waiting for activation”, “transfer end”, “normal end”, and “error end”. The port number C201 is information for specifying the communication port that has accepted the command. The requested volume number C202 is information for specifying the logical volume 22 to be processed by the command. The initiator information C203 is information for specifying an initiator that is a command issue source. Stores information for identifying that the command issuer is the file function unit P10.
 ストレージ内シーケンス番号C204は、ファイル機能部P10からのリセット要求をストレージ機能部P20が受領した場合に、そのリセット要求を受領する以前に受領したコマンドを特定するために使用する情報である。転送ID C205は、ストレージ機能部P20の発行するデータ転送指示に対して一意に割当てる情報である。転送IDに対応した一定数の転送リストが確保される。受領コマンド内容C206は、受領したコマンドの内容、つまりリードコマンドであるかライトコマンドであるかを示す。データ転送結果C207は、受領したコマンドに関するデータ転送の結果を示す。例えば、ファイル機能部P10の使用するメモリ領域153Fからストレージ機能部P20の使用するメモリ領域153S,152へのデータ転送の結果、ストレージ機能部P20の使用するメモリ領域153S,152からファイル機能部P10の使用するメモリ領域153Fへのデータ転送の結果を示す。 The in-storage sequence number C204 is information used to specify a command received before receiving the reset request when the storage function unit P20 receives a reset request from the file function unit P10. The transfer ID C205 is information uniquely assigned to the data transfer instruction issued by the storage function unit P20. A certain number of transfer lists corresponding to the transfer IDs are secured. The received command content C206 indicates the content of the received command, that is, whether it is a read command or a write command. The data transfer result C207 indicates the result of data transfer related to the received command. For example, as a result of the data transfer from the memory area 153F used by the file function unit P10 to the memory areas 153S, 152 used by the storage function unit P20, the memory areas 153S, 152 used by the storage function unit P20 The result of data transfer to the memory area 153F to be used is shown.
 図5は、キュー情報T30の一例を示す。キュー情報T30は、例えば、キュー長C300、プロデューサインデックスC301、コンシューマインデックスC302と、エントリC303、C304、C305、C306...を含む。 FIG. 5 shows an example of the queue information T30. The queue information T30 includes, for example, a queue length C300, a producer index C301, a consumer index C302, and entries C303, C304, C305, C306. . . including.
 キュー長C300は、繋がれているエントリの数、つまりキューの数を示す。プロデューサインデックスC301は、最後に追加したキューの位置(エントリ番号)を示す情報である。コンシューマインデックスC302は、最後に処理したキューの位置(エントリ番号)を示す情報である。キューには、キュー長C300に示す数Mだけエントリが接続される。 The queue length C300 indicates the number of connected entries, that is, the number of queues. The producer index C301 is information indicating the position (entry number) of the queue added last. The consumer index C302 is information indicating the position (entry number) of the queue processed last. The queue is connected with entries of the number M indicated by the queue length C300.
 図6は、キューエントリT31の構成例を示す。キューエントリT31は、例えば、内容格納領域C310と、エラー検出コードC311を含む。内容格納領域C310は、そのキューエントリの内容を示す情報(エントリ種別)を格納する。キューエントリの内容としては、「リード/ライト要求」「応答」「転送指示」がある。具体例は図7および図8で後述する。エラー検出コードC311は、内容格納領域C310に格納された内容にエラーが発生したか否かを検出するための情報である。例えば、内容格納領域C310に格納されたデータ全体の排他的論理和を取った値を、エラー検出コードC311として使用することができる。 FIG. 6 shows a configuration example of the queue entry T31. The queue entry T31 includes, for example, a content storage area C310 and an error detection code C311. The content storage area C310 stores information (entry type) indicating the content of the queue entry. The contents of the queue entry include “read / write request”, “response”, and “transfer instruction”. Specific examples will be described later with reference to FIGS. The error detection code C311 is information for detecting whether or not an error has occurred in the content stored in the content storage area C310. For example, a value obtained by taking an exclusive OR of the entire data stored in the content storage area C310 can be used as the error detection code C311.
 図7は、リード/ライト要求のキューエントリT32を示す。リード/ライト要求のキューエントリT32は、例えば、要求ID C320、コマンド種別C321、LUN C322、先頭アドレスC323、転送長C324を含む。 FIG. 7 shows a queue entry T32 for a read / write request. The read / write request queue entry T32 includes, for example, a request ID C320, a command type C321, a LUN C322, a head address C323, and a transfer length C324.
 要求ID C320は、ファイル機能部P10の発行するコマンドに対して一意に割当てられる情報である。ストレージ機能部P20は、要求IDを用いて、図9で後述する転送リスト管理情報T40からファイル側転送リストを特定する。ストレージ機能部P20は、特定したファイル側転送リストにより、リード/ライト要求の対象とするファイルキャッシュ領域153Fのアドレスを特定する。 Request ID C320 is information uniquely assigned to a command issued by the file function unit P10. The storage function unit P20 specifies a file-side transfer list from transfer list management information T40, which will be described later with reference to FIG. 9, using the request ID. The storage function unit P20 specifies the address of the file cache area 153F that is the target of the read / write request, based on the specified file-side transfer list.
 コマンド種別C321は、リードコマンドであるかライトコマンドであるかの種別を示す情報である。LUN C322、先頭アドレスC323、転送長C324は、コマンドが使用する領域を特定する情報である。 The command type C321 is information indicating the type of a read command or a write command. The LUN C322, the head address C323, and the transfer length C324 are information for specifying an area used by the command.
 図8は、転送指示のキューエントリT33を示す。転送指示のキューエントリT33は、例えば、転送種別C330、要求ID C331、転送ID C332、転送開始オフセットアドレスC333、転送リストアドレスC334、総転送長C335、保障コードの一部となるアドレス情報(LA)C336を含む。 FIG. 8 shows a transfer entry queue entry T33. The transfer instruction queue entry T33 includes, for example, a transfer type C330, a request ID C331, a transfer ID C332, a transfer start offset address C333, a transfer list address C334, a total transfer length C335, and address information (LA) as a part of the guarantee code. Including C336.
 転送種別C330は、データ転送の種別を示す情報である。要求ID C331は、図7で述べた要求IDと同様である。要求IDでファイル側転送リストを参照する際、ファイル機能部P10で使用する論理アドレスとストレージ機能部P20で使用する論理アドレスとが異なる場合がある。この場合、別途設けたアドレス変換情報により、ファイル機能部P10がファイル側転送リストを設定する際にアドレス変換を実行し、ストレージ機能部P20での論理アドレスに変換して格納しても良い。または、データ転送実行時に、ストレージ機能部P20がファイル側転送リストを参照する際、アドレス変換を実行しても良い。 The transfer type C330 is information indicating the type of data transfer. The request ID C331 is the same as the request ID described in FIG. When referring to the file-side transfer list by the request ID, the logical address used in the file function unit P10 may be different from the logical address used in the storage function unit P20. In this case, the address conversion information provided separately may be used when the file function unit P10 sets the file-side transfer list, and is converted into a logical address in the storage function unit P20 and stored. Alternatively, address conversion may be executed when the storage function unit P20 refers to the file-side transfer list during data transfer.
 転送ID C332は、転送処理を特定するための情報である。転送開始オフセットアドレスC332は、転送開始先のアドレスを特定するために使用する情報である。ストレージ機能部P20が一つのリード/ライトコマンドに対して、複数のデータ転送指示を実行する場合、ファイル機能部P10の転送リストにおけるリード/ライト開始位置を、「リード/ライト要求の先頭アドレス+転送指示の転送開始オフセットアドレス」として算出するために使用する。 The transfer ID C332 is information for specifying the transfer process. The transfer start offset address C332 is information used to specify a transfer start destination address. When the storage function unit P20 executes a plurality of data transfer instructions in response to one read / write command, the read / write start position in the transfer list of the file function unit P10 is expressed by “the start address of the read / write request + transfer This is used to calculate the “transfer start offset address of the instruction”.
 転送リストアドレスC334は、転送リストのアドレスを示す。総転送長C335は、複数の転送を行う場合の合計転送サイズである。データ保障コードの一部となるアドレス情報(LA)は、リード/ライト要求についての、ストレージ機能部P20の管理するデータ格納位置を示す情報である。 Transfer list address C334 indicates the address of the transfer list. The total transfer length C335 is a total transfer size when a plurality of transfers are performed. The address information (LA) that is a part of the data guarantee code is information indicating the data storage position managed by the storage function unit P20 regarding the read / write request.
 なお、本実施例では、転送指示を転送キューで管理しているが、これに代えて、他の起動手段および応答管理手段を用いても良い。 In this embodiment, the transfer instruction is managed by the transfer queue. However, instead of this, other activation means and response management means may be used.
 図9は、転送リスト管理情報T40を示す。転送リスト管理情報T40は、転送リストを管理するための情報であり、例えば、要求ID毎の転送リストアドレスC400、C401、C402、C403を含む。これにより、リード要求またはライト要求についてのデータ転送に使用する転送リストの格納先を、そのリード要求またはライト要求に対して発行された要求IDから特定することができる。 FIG. 9 shows transfer list management information T40. The transfer list management information T40 is information for managing the transfer list, and includes, for example, transfer list addresses C400, C401, C402, and C403 for each request ID. As a result, the storage location of the transfer list used for data transfer for the read request or write request can be specified from the request ID issued for the read request or write request.
 図10は、転送リストT41を示す。転送リストT41は、データを転送する際に使用する情報であり、「転送指示情報」「転送パラメータ」に該当する。転送リストT41には、ファイル側転送リストと、ストレージ側転送リストとがある。転送リストT41は、例えば、要求ID C410、有効エントリ数C411、エントリ番号毎の転送アドレスC412,C414、エントリ番号毎の転送長C413,C415、次の転送リストを示す次転送リストアドレスC416、エラー検出コードC417を含む。 FIG. 10 shows the transfer list T41. The transfer list T41 is information used when transferring data, and corresponds to “transfer instruction information” and “transfer parameter”. The transfer list T41 includes a file side transfer list and a storage side transfer list. The transfer list T41 includes, for example, a request ID C410, the number of valid entries C411, transfer addresses C412 and C414 for each entry number, transfer lengths C413 and C415 for each entry number, a next transfer list address C416 indicating the next transfer list, and error detection The code C417 is included.
 要求ID C410は、上述した要求IDと同様である。有効エントリ数C411は、この転送リストT41が含む有効なエントリの数を示す。転送リストT41には、エントリ番号毎に、その転送アドレスC412,C414と転送長C413,C415がペアで登録される。次転送リストアドレスC416は、複数の転送リストT41を繋げてデータを転送するための情報である。エラー検出コードC417は、転送リストT41の内容にエラーが生じていないかを検査するためのコードである。例えば、要求ID C410~次転送リストアドレスC416までの全データの排他的論理和を取った値を、エラー検出コードC417として使用することができる。 Request ID C410 is the same as the request ID described above. The number of valid entries C411 indicates the number of valid entries included in the transfer list T41. In the transfer list T41, the transfer addresses C412 and C414 and the transfer lengths C413 and C415 are registered in pairs for each entry number. The next transfer list address C416 is information for connecting a plurality of transfer lists T41 to transfer data. The error detection code C417 is a code for checking whether an error has occurred in the contents of the transfer list T41. For example, a value obtained by taking an exclusive OR of all the data from the request ID C410 to the next transfer list address C416 can be used as the error detection code C417.
 図11は、管理情報の構成例を示す。コントローラ11の有するメモリ15には、上述のように、プログラム格納領域150、管理情報領域151、バッファ領域152、キャッシュ領域153(ファイルキャッシュ領域153F、ストレージキャッシュ領域153S)を含む。さらに、管理情報領域151は、ファイル管理情報領域151Fと、ストレージ管理情報領域151Sと、共通管理情報領域151Cとを備える。 FIG. 11 shows a configuration example of management information. As described above, the memory 15 of the controller 11 includes the program storage area 150, the management information area 151, the buffer area 152, and the cache area 153 (file cache area 153F, storage cache area 153S). Furthermore, the management information area 151 includes a file management information area 151F, a storage management information area 151S, and a common management information area 151C.
 ファイル管理情報領域151Fには、ストレージ要求管理情報T50と、ファイル側転送リストT41Fとが格納されている。 In the file management information area 151F, storage request management information T50 and a file side transfer list T41F are stored.
 ストレージ要求管理情報T50は、ストレージ要求の内容およびその実行状態を管理するための情報である。ストレージ要求とは、ファイル機能部P10がコマンドを処理するに際してストレージ機能部P20へ発行するデータ入出力要求である。 Storage request management information T50 is information for managing the contents of the storage request and its execution state. The storage request is a data input / output request issued to the storage function unit P20 when the file function unit P10 processes a command.
 ファイル側転送リストT41Fは、図10に示す構成を備えており、ファイルキャッシュ領域153Fへ転送するデータを管理する。ファイル側転送リストT41Fは、ファイル機能部P10およびストレージ機能部P20の両方がアクセス可能である。 The file-side transfer list T41F has the configuration shown in FIG. 10, and manages data transferred to the file cache area 153F. The file-side transfer list T41F can be accessed by both the file function unit P10 and the storage function unit P20.
 ストレージ側管理情報領域151Sには、コマンド管理情報T20と、転送キューT30Tと、ストレージ側転送リストT41SB,T41SCと、ボリューム管理情報T10が格納されている。これら各情報T10、T20、T30T、T41SB、T41SCは、ストレージ機能部P20が使用する。 In the storage side management information area 151S, command management information T20, transfer queue T30T, storage side transfer lists T41SB, T41SC, and volume management information T10 are stored. These pieces of information T10, T20, T30T, T41SB, and T41SC are used by the storage function unit P20.
 転送キューT30Tは、転送指示に関するキューの情報であり、その構成は図5で述べた通りである。ストレージ側転送リストには、バッファ経由時のストレージ側転送リストT41SBと、バッファを経由しない直送時のストレージ側転送リストT41SCとが含まれている。ストレージバッファ領域152を経由してストレージキャッシュ領域153Sへデータを転送する場合は、バッファ経由時のストレージ側転送リストT41SBを使用する。ストレージバッファ領域152を経由せずにストレージキャッシュ領域153Sへデータを転送する場合は、直送時のストレージ側転送リストT41SCを使用する。これら転送リストT41SB、T41SCの構成は図10に示した通りである。 The transfer queue T30T is queue information related to a transfer instruction, and its configuration is as described in FIG. The storage-side transfer list includes a storage-side transfer list T41SB when passing through a buffer and a storage-side transfer list T41SC when directly sending without passing through a buffer. When data is transferred to the storage cache area 153S via the storage buffer area 152, the storage-side transfer list T41SB via the buffer is used. When transferring data to the storage cache area 153S without going through the storage buffer area 152, the storage-side transfer list T41SC at the time of direct sending is used. The structures of these transfer lists T41SB and T41SC are as shown in FIG.
 共通管理情報151Cには、要求キューT30Cと、応答キューT30Rと、転送リスト管理情報T40とが格納される。要求キューT30Cは、リード/ライト要求に関するキューを管理する情報である。応答キューT30Rは、コマンドに対する応答に関するキューを管理する情報である。要求キューT30Cおよび応答キューT30Rの構成は、図5で述べた通りである。これら各情報T30C、T30R、T40は、ファイル機能部P10およびストレージ機能部P20の両方が使用することができる。 The common management information 151C stores a request queue T30C, a response queue T30R, and transfer list management information T40. The request queue T30C is information for managing a queue related to a read / write request. The response queue T30R is information for managing a queue related to responses to commands. The configurations of the request queue T30C and the response queue T30R are as described in FIG. These pieces of information T30C, T30R, and T40 can be used by both the file function unit P10 and the storage function unit P20.
 クライアントコンピュータ2からストレージシステム1に対して、リード/ライト要求が発行されると、ファイル機能部P10は、そのリード/ライト要求に伴うストレージ要求(リードコマンドまたはライトコマンド)を生成し、ストレージ要求管理情報T50へ格納する。 When a read / write request is issued from the client computer 2 to the storage system 1, the file function unit P10 generates a storage request (read command or write command) associated with the read / write request, and manages the storage request. Store in information T50.
 ストレージ要求管理情報T50に格納されたコマンドは、共通管理情報151Cの要求キューT30Cに登録される。ストレージ機能部P20は、要求キューT30Cに登録されたコマンドを読み出して、コマンド管理情報T20で管理する。 The command stored in the storage request management information T50 is registered in the request queue T30C of the common management information 151C. The storage function unit P20 reads the command registered in the request queue T30C and manages it with the command management information T20.
 ストレージ機能部P20は、コマンドの処理に際して必要なデータ転送を転送キューT30Tで管理する。さらに、ストレージ機能部P20は、ストレージバッファ領域152へのデータ転送をストレージ側転送リストT41SBで管理し、ストレージキャッシュ領域153Sへのデータ転送をストレージ側転送リストT41SCで管理する。 The storage function unit P20 manages data transfer necessary for command processing by the transfer queue T30T. Further, the storage function unit P20 manages data transfer to the storage buffer area 152 by the storage side transfer list T41SB, and manages data transfer to the storage cache area 153S by the storage side transfer list T41SC.
 ストレージ機能部P20は、コマンド管理情報T20で管理されているコマンドのうち、処理が正常終了またがエラー終了したものを検出すると、そのコマンドを応答キューT30Rへ登録する。ストレージ機能部P20は、応答キューT30Rに登録されたコマンドを処理し、ファイル機能部P10へ応答する。ファイル機能部P10は、ストレージ機能部P20からの応答を受領すると、その応答内容に従ってクライアントコンピュータ2へ報告する。 When the storage function unit P20 detects a command managed by the command management information T20 and has completed processing normally or ended in error, the storage function unit P20 registers the command in the response queue T30R. The storage function unit P20 processes the command registered in the response queue T30R and responds to the file function unit P10. Upon receiving the response from the storage function unit P20, the file function unit P10 reports to the client computer 2 according to the response content.
 図12~図23を用いてストレージシステム1の動作を説明する。図示するフローチャートは処理の一例であり、ストレージシステム1の動作は図示の例に限定されない。図示したステップの順番を入れ替えたり、新規なステップを追加したり、複数のステップを一つのステップにまとめたりすることができる。 The operation of the storage system 1 will be described with reference to FIGS. The illustrated flowchart is an example of processing, and the operation of the storage system 1 is not limited to the illustrated example. The order of the illustrated steps can be changed, a new step can be added, or a plurality of steps can be combined into one step.
 図12は、ファイル機能部P10が実行するコマンド発行処理P11の例を示すフローチャートである。ファイル機能部P10のファイル要求処理(図示しない)は、クライアントコンピュータ2からストレージシステム1へのファイルアクセス要求)をフロントエンドインターフェース12が受領した契機と同期して、または、非同期に、ストレージ機能部へ、ファイルのメタデータやデータ等を参照、または、更新するためのストレージ要求を発行する。ここで、ストレージシステム1へのファイルアクセス要求とは、ストレージシステム1へのファイル入出力要求を意味し、本実施例ではストレージ要求と呼ぶ場合がある。 FIG. 12 is a flowchart showing an example of the command issuing process P11 executed by the file function unit P10. The file request processing (not shown) of the file function unit P10 is performed synchronously or asynchronously to the storage function unit when the front-end interface 12 receives a file access request from the client computer 2 to the storage system 1). A storage request for referring to or updating file metadata or data is issued. Here, the file access request to the storage system 1 means a file input / output request to the storage system 1 and may be called a storage request in this embodiment.
 ファイル機能部P10は、ストレージ要求が検出されていない場合(S10:NO)、本処理を終了する。ファイル機能部P10は、適当な周期で本処理を実行する。 When the storage request is not detected (S10: NO), the file function unit P10 ends this process. The file function unit P10 executes this process at an appropriate cycle.
 ファイル機能部P10は、ストレージ要求を検出すると(S10:YES)、そのストレージ要求をストレージ要求管理情報T50に格納する(S11)。 When the file function unit P10 detects the storage request (S10: YES), the file function unit P10 stores the storage request in the storage request management information T50 (S11).
 ファイル機能部P10は、要求IDを1つ確保し(S12)、ファイル側転送リストT41Fを設定する(S13)。ファイル側転送リストT41Fは、ファイルキャッシュ領域153Fの記憶領域のうち、ファイル機能部P10とストレージ機能部P20との間でデータを転送するために使用する部分を特定する。ストレージ要求管理情報T50に格納されたストレージ要求とファイル側転送リストT41Fの転送内容とは、共通の要求IDを介して関連付けられる。 The file function unit P10 secures one request ID (S12) and sets the file-side transfer list T41F (S13). The file-side transfer list T41F specifies a portion used for transferring data between the file function unit P10 and the storage function unit P20 in the storage area of the file cache area 153F. The storage request stored in the storage request management information T50 and the transfer contents of the file side transfer list T41F are associated through a common request ID.
 ファイル機能部P10は、ステップS13で設定したファイル側転送リストT41Fのアドレスを転送リスト管理情報T40に格納することにより、転送リスト管理情報T40を設定する(S14)。 The file function unit P10 sets the transfer list management information T40 by storing the address of the file side transfer list T41F set in step S13 in the transfer list management information T40 (S14).
 ファイル機能部P10は、ファイル要求処理部からのストレージ要求を処理するために必要なコマンドを生成する(S15)。ファイル機能部P10は、クライアントコンピュータ2がファイルの作成または更新を要求する場合、ライトコマンドを生成し、クライアントコンピュータ2がファイルの読み出しを要求する場合、リードコマンドを生成する。なお、ファイルの更新時には、先に更新前のファイルが論理ボリューム22から読み出され、更新後に論理ボリューム22に書き込む場合がある。 The file function unit P10 generates a command necessary for processing the storage request from the file request processing unit (S15). The file function unit P10 generates a write command when the client computer 2 requests creation or update of a file, and generates a read command when the client computer 2 requests reading of a file. When updating a file, the file before update may be read from the logical volume 22 first and written to the logical volume 22 after update.
 ファイル機能部P10は、要求キューT30Cに空きがあるか判定し(S16)、要求キューT30Cに空きがあると判定した場合(S16:YES)、生成したコマンドを要求キューT30Cに設定する(S17)。そして、ファイル機能部P10は、ストレージ管理情報T50において、要求キューT30Cに登録したコマンドの状態を「要求終了待ち」に更新する(S18)。 The file function unit P10 determines whether the request queue T30C has an empty space (S16), and when determining that the request queue T30C has an empty space (S16: YES), sets the generated command in the request queue T30C (S17). . Then, the file function unit P10 updates the status of the command registered in the request queue T30C to “waiting for request completion” in the storage management information T50 (S18).
 ファイル機能部P10は、要求キューT30Cに空きがないと判定した場合(S16:NO)、ストレージ要求管理情報T50において、前記コマンドの状態を「要求起動待ち」に更新する(S19)。 When the file function unit P10 determines that there is no space in the request queue T30C (S16: NO), it updates the status of the command to “wait for request activation” in the storage request management information T50 (S19).
 なお、ファイル機能部P10は、図示せぬ別の処理にて、要求キューT30Cの空き状態を周期的に監視しており、空きを検出した場合は、起動待ち状態に置かれていたコマンドを要求キューT30Cに登録し(S17)、ストレージ要求管理情報T50のコマンド状態を「要求終了待ち」に更新する(S18)。 The file function unit P10 periodically monitors the free state of the request queue T30C in another process (not shown), and if it detects a free state, it requests a command that has been placed in an activation wait state. It is registered in the queue T30C (S17), and the command status of the storage request management information T50 is updated to “wait for request completion” (S18).
 図13は、ストレージ機能部P20が実行するコマンド受領処理P21の例を示すフローチャートである。ストレージ機能部P20は、要求キューT30Cに新規コマンドが登録されているか判定する(S20)。要求キューT30Cに新規コマンドが無い場合(S20:NO)、本処理を終了する。 FIG. 13 is a flowchart showing an example of command reception processing P21 executed by the storage function unit P20. The storage function unit P20 determines whether a new command is registered in the request queue T30C (S20). If there is no new command in the request queue T30C (S20: NO), this process is terminated.
 ストレージ機能部P20は、要求キューT30Cに新規コマンドが登録されていると判定すると(S20:YES)、図6のエラー検出コードC311を参照し、これから処理しようとする新規コマンドにエラーが発生しているか判定する(S21)。エラーが発生していると判定した場合(S21:YES)、当該新規コマンドを破棄(コンシューマインデックスC302を加算)し(S34)、ストレージ機能部P20はステップS20に戻り、要求キューT30Cに他の新規コマンドが登録されているか判定する。 When the storage function unit P20 determines that a new command is registered in the request queue T30C (S20: YES), the storage function unit P20 refers to the error detection code C311 of FIG. 6 and an error has occurred in the new command to be processed. (S21). If it is determined that an error has occurred (S21: YES), the new command is discarded (consumer index C302 is added) (S34), the storage function unit P20 returns to step S20, and another new command is added to the request queue T30C. Determine whether the command is registered.
 ストレージ機能部P20は、その新規コマンドにエラー検出コードC311によるエラーが検出されなかった場合(S21:NO)、その新規コマンドをコマンド管理情報T20へ格納し(S22)、その新規コマンドのタイプを解析する(S23)。 When no error due to the error detection code C311 is detected in the new command (S21: NO), the storage function unit P20 stores the new command in the command management information T20 (S22), and analyzes the type of the new command (S23).
 ストレージ機能部P20は、新規コマンドがライトコマンドまたはリードコマンドのいずれであるか判別する(S24)。ストレージ機能部P20は、リードコマンドであると判定した場合は、図14で後述するリード処理1を実行し(S25)、ライトコマンドであると判定した場合は、図15で後述するライト処理1を実行する(S26)。 The storage function unit P20 determines whether the new command is a write command or a read command (S24). When it is determined that the command is a read command, the storage function unit P20 executes a read process 1 described later in FIG. 14 (S25), and when it is determined that the command is a write command, the storage function unit P20 performs a write process 1 described later in FIG. Execute (S26).
 ストレージ機能部P20は、転送IDを確保し(S27)、さらにストレージ側転送リスト(T41SB、T41SCのいずれか)を設定する(S28)。ファイルキャッシュ領域153Fとストレージキャッシュ領域153Sとがストレージバッファ領域152を経由してデータを転送する場合は、ストレージ側転送リストT41SBを設定する。ファイルキャッシュ領域153Fとストレージキャッシュ領域153Sとがストレージバッファ領域152を介さずに直接データを転送する場合は、ストレージ側転送リストT41SCを設定する。 The storage function unit P20 secures a transfer ID (S27), and further sets a storage-side transfer list (either T41SB or T41SC) (S28). When the file cache area 153F and the storage cache area 153S transfer data via the storage buffer area 152, the storage side transfer list T41SB is set. When the file cache area 153F and the storage cache area 153S directly transfer data without passing through the storage buffer area 152, the storage side transfer list T41SC is set.
 ストレージ機能部P20は、ファイル機能部P10の確保した要求IDとストレージ機能部P20の確保した転送ID等とを用いて、図8で示した転送指示を生成し(S29)、転送キューT30Tに空きがあるか判定する(S30)。ストレージ機能部P20は、転送キューT30Tに空きがあると判定すると(S30:YES)、ステップS29で生成した転送指示を転送キューT30Tに設定する(S31)。そして、ストレージ機能部P20は、その転送指示に対応するコマンドについての、コマンド管理情報T20のコマンド実行状態C200を、「転送終了待ち」に更新する(S32)。一方、ストレージ機能部P20は、転送キューT30Tに空きが無いと判定すると(S30:NO)、ステップS29で生成した転送指示に対応するコマンドについての、コマンド管理情報T20のコマンド実行状態C200を、「転送起動待ち」に更新する。 The storage function unit P20 generates the transfer instruction shown in FIG. 8 using the request ID secured by the file function unit P10 and the transfer ID secured by the storage function unit P20 (S29), and the transfer queue T30T is free. It is determined whether there is any (S30). When the storage function unit P20 determines that the transfer queue T30T is empty (S30: YES), the storage function unit P20 sets the transfer instruction generated in step S29 in the transfer queue T30T (S31). Then, the storage function unit P20 updates the command execution state C200 of the command management information T20 for the command corresponding to the transfer instruction to “waiting for transfer end” (S32). On the other hand, when the storage function unit P20 determines that there is no space in the transfer queue T30T (S30: NO), the command execution state C200 of the command management information T20 for the command corresponding to the transfer instruction generated in step S29 is “ Update to “Waiting for transfer start”.
 なお、ストレージ機能部P20は、図示せぬ別の処理にて、定期的に転送キューT30Tの空き状態を確認している。ストレージ機能部P20が、転送キューT30Tに空きを見つけた場合、転送起動待ち状態の転送指示を転送キューT30Tへ格納し、コマンド管理情報T20のコマンド実行状態C200を「転送終了待ち」に更新する。 Note that the storage function unit P20 periodically checks the free state of the transfer queue T30T in another process (not shown). When the storage function unit P20 finds a vacancy in the transfer queue T30T, it stores a transfer instruction waiting for transfer activation in the transfer queue T30T, and updates the command execution state C200 of the command management information T20 to “waiting for transfer end”.
 図14は、図13中のリード処理1の詳細例を示すフローチャートである。ストレージ機能部P20は、リードコマンドの要求するリードデータがストレージキャッシュ領域153Sに記憶されているか判定する(S40)。以下、本処理では、リードコマンドの要求するリードデータを対象リードデータと呼ぶ。 FIG. 14 is a flowchart showing a detailed example of the read process 1 in FIG. The storage function unit P20 determines whether the read data requested by the read command is stored in the storage cache area 153S (S40). Hereinafter, in this process, the read data requested by the read command is referred to as target read data.
 ストレージ機能部P20は、対象リードデータがストレージキャッシュ領域153Sに記憶されていないと判定すると(S40:NO)、記憶装置21から対象リードデータおよびそのデータ保障コードを読み出して、自系のストレージキャッシュ領域153S(#0)へ転送し、記憶させる(S41)。そして、後述のステップS42へ進む。 When the storage function unit P20 determines that the target read data is not stored in the storage cache area 153S (S40: NO), the storage function unit P20 reads the target read data and its data security code from the storage device 21, and the own storage cache area It is transferred to 153S (# 0) and stored (S41). And it progresses to below-mentioned step S42.
 ストレージ機能部P20は、対象リードデータがストレージキャッシュ領域153Sに記憶されていると判定すると(S40:YES)、ステップS41をスキップし、ステップS42へ進む。 If the storage function unit P20 determines that the target read data is stored in the storage cache area 153S (S40: YES), it skips step S41 and proceeds to step S42.
 ストレージ機能部P20は、対象リードデータをストレージバッファ領域152を経由して転送するか判定する(S42)。対象リードデータが自系のストレージキャッシュ領域153S(#0)に格納されている場合は、ストレージバッファ領域152を経由して転送する必要はない。これに対し、対象リードデータが他系のコントローラ11(#1)の管理下にあるストレージキャッシュ領域153S(#1)に格納されている場合、対象データを自系のストレージバッファ領域152(#0)へ転送させる必要がある。 The storage function unit P20 determines whether to transfer the target read data via the storage buffer area 152 (S42). When the target read data is stored in the local storage cache area 153S (# 0), there is no need to transfer the read data via the storage buffer area 152. On the other hand, when the target read data is stored in the storage cache area 153S (# 1) managed by the other system controller 11 (# 1), the target data is stored in the own system storage buffer area 152 (# 0). ) To be transferred.
 ストレージ機能部P20は、対象リードデータが自系のストレージキャッシュ領域153S(#0)に記憶されている場合、ストレージバッファ領域152(#0)を経由して転送する必要はないと判定する(S42:NO)。この場合、ストレージ機能部P20は、対象リードデータの転送元を自系のストレージキャッシュ領域153S(#0)に設定する(S43)。 When the target read data is stored in the own storage cache area 153S (# 0), the storage function unit P20 determines that there is no need to transfer it via the storage buffer area 152 (# 0) (S42). : NO). In this case, the storage function unit P20 sets the transfer source of the target read data in the own storage cache area 153S (# 0) (S43).
 これに対し、ストレージ機能部P20は、対象リードデータが他系のストレージキャッシュ領域153S(#1)に記憶されている場合、ストレージバッファ領域152(#0)を経由して転送する必要があると判定する(S42:YES)。この場合、ストレージ機能部P20は、対象リードデータを他系から受領すべく、自系のストレージバッファ領域152(#0)に記憶領域を確保する(S44)。ストレージ機能部P20は、他系のストレージキャッシュ領域153S(#1)から自系のストレージバッファ領域152(#0)へ、対象リードデータおよびそのデータ保障コードを転送させる(S45)。ストレージ機能部P20は、対象リードデータの転送元を自系のストレージバッファ領域152(#0)に設定する(S46)。 On the other hand, when the target read data is stored in the storage cache area 153S (# 1) of the other system, the storage function unit P20 needs to transfer it via the storage buffer area 152 (# 0). Determine (S42: YES). In this case, the storage function unit P20 secures a storage area in the storage buffer area 152 (# 0) of its own system in order to receive the target read data from the other system (S44). The storage function unit P20 transfers the target read data and its data guarantee code from the storage cache area 153S (# 1) of the other system to the storage buffer area 152 (# 0) of the own system (S45). The storage function unit P20 sets the transfer source of the target read data in the own storage buffer area 152 (# 0) (S46).
 ストレージ機能部P20は、対象リードデータの転送先を、リードコマンドを発行したファイル機能部P10の使用するファイルキャッシュ領域153Fに設定して、本処理を終了する(S47)。ストレージ機能部P20からファイル機能部P10へは対象リードデータのみが転送され、データ保障コードは転送されない。データ保障コードは、ストレージシステム1内でデータの一貫性を保持するために使用する情報だからである。 The storage function unit P20 sets the transfer destination of the target read data in the file cache area 153F used by the file function unit P10 that issued the read command, and ends this processing (S47). Only the target read data is transferred from the storage function unit P20 to the file function unit P10, and the data guarantee code is not transferred. This is because the data guarantee code is information used to maintain data consistency in the storage system 1.
 なお、ストレージバッファ領域152を経由して転送するか否かの区別は、上述の例に限定しない。他の理由により、ストレージバッファ領域152の使用の可否を制御する構成でもよい。 Note that the distinction as to whether or not to transfer via the storage buffer area 152 is not limited to the above example. For other reasons, it may be possible to control whether or not the storage buffer area 152 can be used.
 図15は、図13中のライト処理1の詳細例を示すフローチャートである。本処理で対象とするライトデータを対象ライトデータと呼ぶ。ストレージ機能部P20は、対象ライトデータを格納するために、自系のストレージキャッシュ領域153S(#0)の中に記憶領域を確保する(S50)。ストレージ機能部P20は、対象ライトデータの転送元を、ライトコマンドを発行したファイル機能部P10の使用するファイルバッファ領域153Fに設定する(S51)。 FIG. 15 is a flowchart showing a detailed example of the write process 1 in FIG. The write data targeted in this process is called target write data. The storage function unit P20 reserves a storage area in its own storage cache area 153S (# 0) in order to store the target write data (S50). The storage function unit P20 sets the transfer source of the target write data in the file buffer area 153F used by the file function unit P10 that issued the write command (S51).
 ストレージ機能部P20は、対象ライトデータを、ファイルキャッシュ領域153Fからストレージバッファ領域152(#0)を経由してストレージキャッシュ領域153S(#0)へ転送すべきか判定する(S52)。 The storage function unit P20 determines whether the target write data should be transferred from the file cache area 153F to the storage cache area 153S (# 0) via the storage buffer area 152 (# 0) (S52).
 例えば、ストレージキャッシュ領域153S(#0)のうちステップS50で確保した記憶領域に、先行ライトデータが既に書き込まれており、先行ライトデータがまだ記憶装置21に書き込まれていない場合を考える。 For example, consider a case where the preceding write data has already been written in the storage area secured in step S50 in the storage cache area 153S (# 0) and the preceding write data has not yet been written to the storage device 21.
 この場合、ストレージバッファ領域152(#0)を経由せずに、対象ライトデータをストレージキャッシュ領域153S(#0)へ直接転送したとすると、その先行ライトデータが対象ライトデータにより上書きされてしまい、消失する。もしも、対象ライトデータが誤った位置から読み出されたり、ビットエラーが発生したりしていた場合、誤った対象ライトデータによって、先行ライトデータは失われてしまう。そこで、キャッシュ上にのみ存在し、記憶装置には書き込まれていないダーティ状態の先行ライトデータが書込先に残っている場合、ストレージ機能部P20は、まず最初にストレージバッファ領域152(#0)に対象ライトデータを書き込む。 In this case, if the target write data is directly transferred to the storage cache area 153S (# 0) without going through the storage buffer area 152 (# 0), the preceding write data is overwritten by the target write data, Disappear. If the target write data is read from the wrong position or a bit error occurs, the preceding write data is lost due to the wrong target write data. Therefore, when there is dirty preceding write data that exists only in the cache and has not been written to the storage device, the storage function unit P20 first stores the storage buffer area 152 (# 0). Write the target write data to.
 ストレージ機能部P20は、ストレージバッファ領域152(#0)を経由せずに対象ライトデータを転送すると判定した場合(S52:NO)、対象ライトデータの転送先をストレージキャッシュ領域153S(#0)に設定する(S53)。 When the storage function unit P20 determines to transfer the target write data without passing through the storage buffer area 152 (# 0) (S52: NO), the transfer destination of the target write data is set to the storage cache area 153S (# 0). Set (S53).
 ストレージ機能部P20は、ストレージバッファ領域152(#0)を経由して対象ライトデータを転送すると判定した場合(S52:YES)、対象ライトデータを格納するために、ストレージバッファ領域152(#0)の記憶領域を確保する(S54)。ストレージ機能部P20は、対象ライトデータの転送先をストレージバッファ領域152(#0)に設定する(S55)。なお、ストレージバッファ領域152を経由して転送するか否かの区別は、上述の例に限らない。 When the storage function unit P20 determines to transfer the target write data via the storage buffer area 152 (# 0) (S52: YES), in order to store the target write data, the storage buffer area 152 (# 0) Is reserved (S54). The storage function unit P20 sets the transfer destination of the target write data in the storage buffer area 152 (# 0) (S55). The distinction as to whether or not to transfer via the storage buffer area 152 is not limited to the above example.
 図16は、ストレージ機能部P20の実行するデータ転送処理の例を示すフローチャートである。ストレージ機能部P20は、転送キューT30Tに新規な転送指示が格納されたか判定する(S60)。転送キューT30Tに新規な転送指示が格納されていない場合(S60:NO)、本処理は終了する。 FIG. 16 is a flowchart showing an example of data transfer processing executed by the storage function unit P20. The storage function unit P20 determines whether a new transfer instruction is stored in the transfer queue T30T (S60). When a new transfer instruction is not stored in the transfer queue T30T (S60: NO), this process ends.
 ストレージ機能部P20は、転送キューT30Tに新規な転送指示が格納されていると判定すると(S60:YES)、その新規な転送指示を参照する(S61)。ストレージ機能部P20は、その新規な転送指示に対応付けられている要求IDと転送リスト管理情報T40とに基づいて、その新規な転送指示に対応するファイル側転送リストT41Fを特定する(S62)。さらに、ストレージ機能部P20は、転送IDに基づいて、ストレージ側転送リスト(T41SBまたはT41SC)を特定する(S63)。 When the storage function unit P20 determines that a new transfer instruction is stored in the transfer queue T30T (S60: YES), the storage function unit P20 refers to the new transfer instruction (S61). The storage function unit P20 identifies the file-side transfer list T41F corresponding to the new transfer instruction based on the request ID associated with the new transfer instruction and the transfer list management information T40 (S62). Further, the storage function unit P20 specifies the storage side transfer list (T41SB or T41SC) based on the transfer ID (S63).
 ストレージ機能部P20は、図10で示したエラー検出コードC417を参照し、エラーが検出されなかったか判定する(S64)。ストレージ機能部P20は、エラー検出コードC417によりエラーの発生を検知した場合(S64:NO)、転送エラーが発生したと判定する(S65)。エラー検出コードC417を検査することで、対象データの読み出し位置または書込み位置の誤りを抑制することができる。 The storage function unit P20 refers to the error detection code C417 shown in FIG. 10 and determines whether an error has been detected (S64). When the occurrence of an error is detected by the error detection code C417 (S64: NO), the storage function unit P20 determines that a transfer error has occurred (S65). By checking the error detection code C417, it is possible to suppress errors in the reading position or writing position of the target data.
 ストレージ機能部P20は、エラー検出コードC417からエラー発生が検知されなかった場合(S64:YES)、転送種別がリード転送であるかライト転送であるかを判定する(S66)。ストレージ機能部P20は、リードデータの転送であると判定した場合と、図17で後述するリード転送処理を実行する(S67)。ストレージ機能部P20は、ライトデータの転送であると判定した場合、図18で後述するライト転送処理を実行する(S68)。 The storage function unit P20 determines whether the transfer type is read transfer or write transfer when no error is detected from the error detection code C417 (S64: YES) (S66). The storage function unit P20 executes read transfer processing described later with reference to FIG. 17 when it is determined that the read data is transferred (S67). If the storage function unit P20 determines that the write data is to be transferred, the storage function unit P20 executes a write transfer process to be described later with reference to FIG. 18 (S68).
 ストレージ機能部P20は、転送結果をコマンド管理情報T20のデータ転送結果C207へ格納する(S69)。転送結果としては、エラー検出コードにより転送エラーが検出されたこと、リード転送処理が正常終了または異常終了したこと、ライト転送処理が正常終了または異常終了したこと、がある。ストレージ機能部P20は、転送結果をコマンド管理情報T20に格納した後、コマンド管理情報T20のコマンド実行状態C200を「転送終了」に更新する。 The storage function unit P20 stores the transfer result in the data transfer result C207 of the command management information T20 (S69). The transfer result includes that a transfer error has been detected by the error detection code, that the read transfer process has ended normally or abnormally, and that the write transfer process has ended normally or abnormally. After storing the transfer result in the command management information T20, the storage function unit P20 updates the command execution state C200 of the command management information T20 to “transfer end”.
 なお、ストレージ側転送リストを設定するコマンド受領処理(図13)と図16で述べたデータ転送処理とは、いずれもストレージ機能部P20が実行するため、ステップS64のエラー検出コードの検査を省略してもよい。 Note that both the command reception process (FIG. 13) for setting the storage-side transfer list and the data transfer process described with reference to FIG. 16 are executed by the storage function unit P20, so the error detection code check in step S64 is omitted. May be.
 図17は、図16中のリード転送処理(S67)の例を示すフローチャートである。ストレージ機能部P20は、全ての対象リードデータのファイルキャッシュ領域153Fへの転送が完了したか判定する(S80)。ストレージ機能部P20は、対象リードデータの転送が完了したと判定した場合(S80:YES)、本処理を終了する。 FIG. 17 is a flowchart showing an example of the read transfer process (S67) in FIG. The storage function unit P20 determines whether or not the transfer of all target read data to the file cache area 153F is completed (S80). If the storage function unit P20 determines that the transfer of the target read data has been completed (S80: YES), the process ends.
 ストレージ機能部P20は、対象リードデータの転送が完了していないと判定した場合(S80:NO)、転送元の対象リードデータのデータ保障コードからアドレス情報(LA)を参照する(S81)。ストレージ機能部P20は、転送元のアドレス情報(LA)と、転送指示としてのストレージ側転送リストから算出されるアドレス情報(LA)とが一致するか判定する(S82)。 When the storage function unit P20 determines that the transfer of the target read data is not completed (S80: NO), the storage function unit P20 refers to the address information (LA) from the data guarantee code of the target read data of the transfer source (S81). The storage function unit P20 determines whether the transfer source address information (LA) matches the address information (LA) calculated from the storage-side transfer list as the transfer instruction (S82).
 ストレージ機能部P20は、転送元のアドレス情報とストレージ側転送リストから得られるアドレス情報とが一致しない場合(S82:NO)、転送エラーが発生したと判定し(S83)、本処理を終了する。 The storage function unit P20 determines that a transfer error has occurred when the transfer source address information does not match the address information obtained from the storage-side transfer list (S82: NO), and ends this process.
 ストレージ機能部P20は、転送元のアドレス情報とストレージ側転送リストから得られるアドレス情報とが一致する場合(S82:YES)、対象リードデータから所定の単位長のデータを、ファイルキャッシュ領域153Fへコピーする(S84)。コピーするとは、ストレージキャッシュ領域153S(#0)またはストレージバッファ領域152(#0)のいずれかの転送元から、データを転送して記憶させることである。所定の単位長とは、例えば、512バイトである。この場合、例えば512バイトがリードデータ、8バイトがデータ保障コード(CRC+LA)である。ただし、以上の数値は理解のための例であって、本実施形態はそれらの値に限定されない。 If the transfer source address information matches the address information obtained from the storage-side transfer list (S82: YES), the storage function unit P20 copies data of a predetermined unit length from the target read data to the file cache area 153F. (S84). Copying means transferring data from one of the transfer sources in the storage cache area 153S (# 0) or the storage buffer area 152 (# 0) and storing it. The predetermined unit length is, for example, 512 bytes. In this case, for example, 512 bytes are read data, and 8 bytes are a data guarantee code (CRC + LA). However, the above numerical values are examples for understanding, and the present embodiment is not limited to these values.
 ストレージ機能部P20は、ファイルキャッシュ領域153Fへコピーした単位長のリードデータから、データ保障コードの一部を構成する誤り検出用コード(CRC)を算出する(S85)。続けて、ストレージ機能部P20は、ファイルキャッシュ領域153Fへコピーした単位長のリードデータについてのアドレス情報(LA)を、ストレージ側転送リストから算出する(S86)。 The storage function unit P20 calculates an error detection code (CRC) constituting a part of the data guarantee code from the unit length read data copied to the file cache area 153F (S85). Subsequently, the storage function unit P20 calculates the address information (LA) for the unit length read data copied to the file cache area 153F from the storage-side transfer list (S86).
 そして、ストレージ機能部P20は、転送元の対象リードデータに対応付けられているデータ保障コード(CRC+LA)と、転送先の対象リードデータについて算出したデータ保障コード(CRC+LA)とが一致するか判定する(S87)。 Then, the storage function unit P20 determines whether the data guarantee code (CRC + LA) associated with the transfer target read data matches the data guarantee code (CRC + LA) calculated for the transfer target read data. (S87).
 転送元の対象リードデータについてのデータ保障コードと転送先の対象リードデータについての保障コードとが一致しない場合(S87:NO)、ストレージ機能部P20は、転送エラーが発生したと判定する(S88)。これに対し、両方のデータ保障コードが一致する場合(S87:YES)、ストレージ機能部P20は、転送リストの参照位置を更新し(S89)、ステップS80へ戻る。つまり、ストレージ機能部P20は、対象リードデータを転送するために複数の転送リストを用いる場合、転送リストごとにステップS80~S88を実行する。 If the data guarantee code for the target read data of the transfer source does not match the guarantee code for the target read data of the transfer destination (S87: NO), the storage function unit P20 determines that a transfer error has occurred (S88). . On the other hand, if both data guarantee codes match (S87: YES), the storage function unit P20 updates the reference position of the transfer list (S89), and returns to step S80. That is, when using a plurality of transfer lists for transferring the target read data, the storage function unit P20 executes steps S80 to S88 for each transfer list.
 なお、ステップS87で両方のデータ保障コードが一致するか否か検査するため、ステップS81~S83の検査は省略してもよい。 Note that in order to check whether or not both data guarantee codes match in step S87, the check in steps S81 to S83 may be omitted.
 図18は、図16中のライト転送処理(S68)の例を示すフローチャートである。ストレージ機能部P20は、全ての対象ライトデータの転送先への転送が完了したか判定する(S100)。対象ライトデータの転送先とは、ストレージバッファ領域152(#0)、または、ストレージキャッシュ領域153S(#0)のいずれかである。ストレージ機能部P20は、対象ライトデータの転送が完了したと判定した場合(S100:NO)、本処理を終了する。 FIG. 18 is a flowchart showing an example of the write transfer process (S68) in FIG. The storage function unit P20 determines whether or not the transfer of all target write data to the transfer destination has been completed (S100). The transfer destination of the target write data is either the storage buffer area 152 (# 0) or the storage cache area 153S (# 0). If the storage function unit P20 determines that the transfer of the target write data has been completed (S100: NO), the process ends.
 ストレージ機能部P20は、対象ライトデータの転送が完了していないと判定した場合(S100:NO)、対象ライトデータのうち所定の単位長のデータを、ファイルキャッシュ領域153Fから転送先にコピーする(S101)。ストレージ機能部P20は、転送先にコピーしたデータをファイルキャッシュ領域153Fから再度読み出し、読み出したデータからデータ保障コードの一部となる誤り検出用コード(CRC)を算出する(S102)。 If the storage function unit P20 determines that the transfer of the target write data has not been completed (S100: NO), the storage function unit P20 copies data of a predetermined unit length from the file write area 153F to the transfer destination (S100: NO). S101). The storage function unit P20 reads the data copied to the transfer destination again from the file cache area 153F, and calculates an error detection code (CRC) that becomes a part of the data guarantee code from the read data (S102).
 ストレージ機能部P20は、対象ライトデータの一部である単位長のデータの転送に使用した転送リストに基づいて、データ保障コードの一部となるアドレス情報(LA)を算出する(S103)。 The storage function unit P20 calculates address information (LA) that becomes a part of the data guarantee code based on the transfer list used for transferring the unit length data that is a part of the target write data (S103).
 ストレージ機能部P20は、ステップS102で算出した誤り検出用コード(CRC)とステップS103で算出したアドレス情報(LA)とからデータ保障コードを生成し(S104)、そのデータ保障コードを転送先にコピーした単位長のデータに付加する(S104)。ストレージ機能部P20は、未処理の転送リストが有る場合、参照先リストを次の転送リストに切り替えて(S105)、ステップS100へ戻る。 The storage function unit P20 generates a data guarantee code from the error detection code (CRC) calculated in step S102 and the address information (LA) calculated in step S103 (S104), and copies the data guarantee code to the transfer destination. The data is added to the unit length data (S104). If there is an unprocessed transfer list, the storage function unit P20 switches the reference list to the next transfer list (S105), and returns to step S100.
 このようにストレージ機能部P20は、ライトデータをストレージシステム1へ記憶する際に、単位長のデータごとにデータ保障コードを生成して付加する。データ保障コードの付加されたライトデータは、他系のストレージキャッシュ領域153S(#1)へコピーされる。他系のストレージキャッシュ領域153S(#1)へコピーされたライトデータは、その一貫性が保たれているか、データ保障コードに基づいて検査される。この処理については後述する。 Thus, when storing the write data in the storage system 1, the storage function unit P20 generates and adds a data guarantee code for each unit length of data. The write data to which the data guarantee code is added is copied to the other-system storage cache area 153S (# 1). The write data copied to the storage cache area 153S (# 1) of the other system is inspected based on the data guarantee code to determine whether the consistency is maintained. This process will be described later.
 図19は、ストレージ機能部P20が実行する応答発行処理P23の例を示すフローチャートである。ストレージ機能部P20は、コマンド管理情報T20のコマンド実行状態C200を参照し、転送終了状態のコマンドがあるか判定する(S110)。転送終了状態のコマンドが無い場合(S110:NO)、本処理は終了する。 FIG. 19 is a flowchart showing an example of a response issuance process P23 executed by the storage function unit P20. The storage function unit P20 refers to the command execution state C200 of the command management information T20 and determines whether there is a transfer end state command (S110). If there is no command in the transfer end state (S110: NO), this process ends.
 ストレージ機能部P20は、転送終了状態のコマンドを発見すると(S110:YES)、そのコマンドに割り当てていた転送IDを解放する(S111)。そして、ストレージ機能部P20は、転送が正常に終了したか判定する(S112)。転送が正常終了していない場合(S112:NO)、後述のステップS118へ進む。 When the storage function unit P20 finds a transfer end command (S110: YES), it releases the transfer ID assigned to the command (S111). Then, the storage function unit P20 determines whether the transfer has been completed normally (S112). If the transfer has not ended normally (S112: NO), the process proceeds to step S118 described later.
 転送が正常に終了している場合(S112:YES)、ストレージ機能部P20は、現在実行中のコマンドがリードコマンドまたはライトコマンドのいずれであるかを判別する(S113)。ストレージ機能部P20は、リードコマンドを処理中である場合、後述のリード処理2を実行する(S114)。ストレージ機能部P20は、ライトコマンドを処理中の場合、後述のライト処理2を実行する(S115)。 If the transfer has been completed normally (S112: YES), the storage function unit P20 determines whether the command currently being executed is a read command or a write command (S113). When the storage function unit P20 is processing the read command, the storage function unit P20 executes a read process 2 described later (S114). When the write command is being processed, the storage function unit P20 executes a write process 2 described later (S115).
 ストレージ機能部P20は、ライト処理2を終了した後、ライト処理2(S115)が正常に終了したか判定する(S116)。ストレージ機能部P20は、ライト処理2が正常終了した場合(S116:YES)、ライトコマンドの処理が正常終了したことを示す応答を生成する(S117)。これに対し、ストレージ機能部P20は、ライト処理2が正常終了しなかった場合(S116:NO)、ライトコマンドがエラー終了したことを示す応答を生成する(S118)。一方、ストレージ機能部P20は、リードコマンドを実行中の場合、リードコマンドの正常終了を示す応答を生成する(S117)。 After completing the write process 2, the storage function unit P20 determines whether the write process 2 (S115) has ended normally (S116). When the write process 2 is normally completed (S116: YES), the storage function unit P20 generates a response indicating that the write command process is normally completed (S117). On the other hand, when the write process 2 has not ended normally (S116: NO), the storage function unit P20 generates a response indicating that the write command has ended in error (S118). On the other hand, when the read command is being executed, the storage function unit P20 generates a response indicating normal termination of the read command (S117).
 ストレージ機能部P20は、コマンドの種類に応じて正常終了またはエラー終了を示す応答を生成した後、応答キューT30Rに空きがあるか判定する(S119)。ストレージ機能部P20は、応答キューT30Rに空きがある場合(S119:YES)、生成した応答を応答キューT30Rに格納するよう設定する(S120)。ストレージ機能部P20は、生成した応答に対応するコマンド管理情報T20を消去し(S121)、ステップS110へ戻る。 The storage function unit P20 generates a response indicating normal termination or error termination according to the type of command, and then determines whether or not there is an empty space in the response queue T30R (S119). When there is an empty response queue T30R (S119: YES), the storage function unit P20 sets the generated response to be stored in the response queue T30R (S120). The storage function unit P20 deletes the command management information T20 corresponding to the generated response (S121), and returns to step S110.
 これに対し、ストレージ機能部P20は、応答キューT30Rに空きが無い場合(S119:NO)、生成した応答に対応するコマンド管理情報T20のコマンド状態C200を「応答起動待ち状態」に更新する(S122)。そして、ストレージ機能部P20は、ステップS110へ戻る。 On the other hand, when there is no empty space in the response queue T30R (S119: NO), the storage function unit P20 updates the command state C200 of the command management information T20 corresponding to the generated response to “response activation waiting state” (S122). ). Then, the storage function unit P20 returns to step S110.
 図20は、図19中のリード処理2(S114)の例を示すフローチャートである。ストレージ機能部P20は、ファイルキャッシュ領域153Fへストレージバッファ152(#0)を経由してリードデータを転送したか判定する(S130)。ストレージ機能部P20は、ストレージバッファ領域152(#0)を使用してリードデータを転送した場合(S130:YES)、そのリードデータの格納に使用していたストレージバッファ領域152(#0)の記憶領域を解放する(S131)。ストレージ機能部P20は、リードデータの転送にストレージバッファ領域152(#0)を使用していないと判定した場合(S130:NO)、本処理を終了する。 FIG. 20 is a flowchart showing an example of the read process 2 (S114) in FIG. The storage function unit P20 determines whether the read data has been transferred to the file cache area 153F via the storage buffer 152 (# 0) (S130). When the storage function unit P20 transfers the read data using the storage buffer area 152 (# 0) (S130: YES), the storage function unit P20 stores the storage buffer area 152 (# 0) used to store the read data. The area is released (S131). If the storage function unit P20 determines that the storage buffer area 152 (# 0) is not used for transfer of read data (S130: NO), the process ends.
 図21は、図19中のライト処理2(S115)の例を示すフローチャートである。ストレージ機能部P20は、ライトデータを、ストレージバッファ領域152(#0)を経由して転送したか判定する(S140)。つまり、ストレージ機能部P20は、ファイルキャッシュ領域153Fのライトデータをストレージバッファ領域152(#0)へ転送したか、それとも、ファイルキャッシュ領域153Fのライトデータをストレージキャッシュ領域153S(#0)へ転送したか、を判定する。 FIG. 21 is a flowchart showing an example of the write process 2 (S115) in FIG. The storage function unit P20 determines whether the write data has been transferred via the storage buffer area 152 (# 0) (S140). That is, the storage function unit P20 transferred the write data in the file cache area 153F to the storage buffer area 152 (# 0) or transferred the write data in the file cache area 153F to the storage cache area 153S (# 0). To determine.
 ストレージ機能部P20は、ライトデータをストレージバッファ領域152(#0)へ転送した場合(S140:YES)、ライトデータおよびそのデータ保障コード(CRC+LA)を、ストレージバッファ領域152(#0)からストレージキャッシュ領域153S(#0)へ転送する(S141)。ファイルキャッシュ領域153Fのライトデータをストレージバッファ領域152(#0)へ転送していない場合(S140:NO)、すなわちライトデータが既にストレージキャッシュ領域153S(#0)へ格納されている場合は、ステップS141をスキップする。 When the write data is transferred to the storage buffer area 152 (# 0) (S140: YES), the storage function unit P20 sends the write data and its data guarantee code (CRC + LA) from the storage buffer area 152 (# 0) to the storage cache. The data is transferred to the area 153S (# 0) (S141). If the write data in the file cache area 153F has not been transferred to the storage buffer area 152 (# 0) (S140: NO), that is, if the write data has already been stored in the storage cache area 153S (# 0), step S141 is skipped.
 ストレージ機能部P20は、コントローラ11(#0)とコントローラ11(#1)の間でライトデータおよびデータ保障コードを転送するためのコントローラ間転送パラメータを設定する(S142)。これにより、ライトデータおよびデータ保障コード(CRC+LA)は、自系のコントローラ11(#0)のストレージキャッシュ領域153S(#0)からコントローラ間通信経路16を介して、他系のコントローラ11(#1)のストレージキャッシュ領域153S(#1)へ転送され、格納される。 The storage function unit P20 sets an inter-controller transfer parameter for transferring write data and a data guarantee code between the controller 11 (# 0) and the controller 11 (# 1) (S142). As a result, the write data and the data guarantee code (CRC + LA) are transferred from the storage cache area 153S (# 0) of the own controller 11 (# 0) via the inter-controller communication path 16 to the other controller 11 (# 1). ) Is transferred to and stored in the storage cache area 153S (# 1).
 ストレージ機能部P20は、自系のコントローラ11(#0)から他系のコントローラ11(#1)へ、全てのライトデータおよびデータ保障コードを転送したか判定する(S143)。転送が完了した場合(S143:YES)、本処理は終了する。 The storage function unit P20 determines whether all write data and data guarantee codes have been transferred from the own controller 11 (# 0) to the other controller 11 (# 1) (S143). When the transfer is completed (S143: YES), this process ends.
 転送が完了していない場合(S143:NO)、ストレージ機能部P20は、単位長のライトデータおよびデータ保障コードを、自系のストレージキャッシュ領域153S(#0)から他系のストレージキャッシュ領域153S(#1)へ転送し、記憶させる(S144)。 When the transfer is not completed (S143: NO), the storage function unit P20 transfers the unit length write data and the data guarantee code from the own storage cache area 153S (# 0) to the other storage cache area 153S (# 0). Transfer to # 1) and store (S144).
 ストレージ機能部P20は、他系のストレージキャッシュ領域153S(#1)に転送した単位長のライトデータの誤り検出用コード(CRC)を算出する(S145)。さらに、ストレージ機能部P20は、ステップS142で設定したコントローラ間転送パラメータに基づいて、データ保障コードの一部となるアドレス情報(LA)を算出する(S146)。ストレージ機能部P20は、ステップS145で算出した誤り検出用コード(CRC)とステップS146で算出したアドレス情報(LA)とから、他系のストレージキャッシュ領域153S(#1)へ転送したライトデータについてのデータ保障コードを生成する。このデータ保障コードは「第4データ保障コード」に該当する。 The storage function unit P20 calculates an error detection code (CRC) of the unit length write data transferred to the other-system storage cache area 153S (# 1) (S145). Furthermore, the storage function unit P20 calculates address information (LA) that becomes a part of the data guarantee code based on the inter-controller transfer parameter set in step S142 (S146). The storage function unit P20 uses the error detection code (CRC) calculated in step S145 and the address information (LA) calculated in step S146 to write data about the write data transferred to the storage cache area 153S (# 1) of the other system. Generate a data security code. This data guarantee code corresponds to the “fourth data guarantee code”.
 図18で述べた通り、ストレージ機能部P20は、ファイルキャッシュ領域153Fからライトデータを受け取る際に、データ保障コード(CRC+LA)を生成して、その受領したライトデータに付加している。 As described in FIG. 18, when the storage function unit P20 receives write data from the file cache area 153F, it generates a data guarantee code (CRC + LA) and adds it to the received write data.
 ストレージ機能部P20は、自系のストレージキャッシュ領域153S(#0)から他系のストレージキャッシュ領域153S(#1)への単位長のライトデータの転送が正常に終了し、データの一貫性が保たれているか判定する(S147)。 The storage function unit P20 completes the transfer of unit-length write data from the local storage cache area 153S (# 0) to the other storage cache area 153S (# 1) normally, and maintains data consistency. It is determined whether it is hit (S147).
 詳しくは、ストレージ機能部P20は、他系のストレージキャッシュ領域153S(#1)へ転送する前に作成したデータ保障コードと、他系のストレージキャッシュ領域153S(#1)へ転送した後に作成したデータ保障コードとが一致するか判定する。 Specifically, the storage function unit P20 creates the data guarantee code created before transfer to the other storage cache area 153S (# 1) and the data created after transfer to the other storage cache area 153S (# 1). It is determined whether the guarantee code matches.
 転送前に作成したデータ保障コードとは、図18で述べたように、ファイルキャッシュ領域153Fから自系のストレージキャッシュ領域153S(#0)へライトデータを転送した際に作成したコードである。転送後に作成するデータ保障コードとは、自系のストレージキャッシュ領域153S(#0)から他系のストレージキャッシュ領域153S(#1)へライトデータを転送する際に生成したコードである。 The data guarantee code created before transfer is a code created when write data is transferred from the file cache area 153F to the own storage cache area 153S (# 0), as described in FIG. The data guarantee code created after the transfer is a code generated when the write data is transferred from the own storage cache area 153S (# 0) to the other storage cache area 153S (# 1).
 ストレージ機能部P20は、自系のストレージキャッシュ領域153S(#0)から他系のストレージキャッシュ領域153S(#1)へ単位長のライトデータを転送する前後においてデータ保障コードが一致すると判定した場合(S147:YES)、ステップS143に戻る。そして、ストレージ機能部P20は、次の単位長のライトデータを転送し(S144)、転送先のライトデータからデータ保障コードを作り直し(S145、S146)、転送前後でライトデータの一貫性が保たれているか判定する(S147)。ストレージ機能部P20は、単位長のライトデータごとに上記の処理を繰り返し、全てのライトデータの転送を完了すると(S143:YES)、転送対象のライトデータがストレージバッファ領域152(#0)を経由して自系のストレージキャッシュ領域153S(#0)へ転送されたものであるか判定する(S149)。ストレージ機能部P20は、ストレージバッファ領域152(#0)を経由した転送であると判定すると(S149:YES)、ストレージバッファ領域152(#0)を解放し(S150)、本処理を終了する。ストレージ機能部P20は、ライトデータの転送に際してストレージバッファ領域152(#0)を使用していない場合(S149:NO)、ステップS150をスキップし、本処理を終了する。 When the storage function unit P20 determines that the data guarantee codes match before and after transferring unit-length write data from the own storage cache area 153S (# 0) to the other storage cache area 153S (# 1) ( (S147: YES), the process returns to step S143. Then, the storage function unit P20 transfers the next unit length of write data (S144), regenerates the data guarantee code from the transfer destination write data (S145, S146), and the consistency of the write data is maintained before and after the transfer. Is determined (S147). The storage function unit P20 repeats the above processing for each unit length of write data, and when the transfer of all the write data is completed (S143: YES), the write data to be transferred passes through the storage buffer area 152 (# 0). It is then determined whether it has been transferred to its own storage cache area 153S (# 0) (S149). If the storage function unit P20 determines that the transfer is via the storage buffer area 152 (# 0) (S149: YES), it releases the storage buffer area 152 (# 0) (S150) and ends this process. If the storage function area P20 does not use the storage buffer area 152 (# 0) when transferring the write data (S149: NO), the storage function section P20 skips step S150 and ends this processing.
 これに対し、ストレージ機能部P20は、転送前後のデータ保障コードが一致しないと判定すると(S147:NO)、転送エラーの発生であると判定する(S148)。ストレージ機能部P20は、転送対象のライトデータがストレージバッファ領域152(#0)を経由して自系のストレージキャッシュ領域153S(#0)へ転送されたものであるか判定する(S149)。 In contrast, if the storage function unit P20 determines that the data guarantee codes before and after the transfer do not match (S147: NO), it determines that a transfer error has occurred (S148). The storage function unit P20 determines whether or not the write data to be transferred has been transferred to the local storage cache area 153S (# 0) via the storage buffer area 152 (# 0) (S149).
 ストレージ機能部P20は、ストレージバッファ領域152(#0)を経由した転送であると判定すると(S149:YES)、ストレージバッファ領域152(#0)を解放し(S150)、本処理を終了する。ストレージ機能部P20は、ライトデータの転送に際してストレージバッファ領域152(#0)を使用していない場合(S149:NO)、ステップS150をスキップし、本処理を終了する。 If the storage function unit P20 determines that the transfer is via the storage buffer area 152 (# 0) (S149: YES), it releases the storage buffer area 152 (# 0) (S150) and ends this process. If the storage function area P20 does not use the storage buffer area 152 (# 0) when transferring the write data (S149: NO), the storage function section P20 skips step S150 and ends this processing.
 図22は、ファイル機能部P10の実行する応答受領処理のフローチャートである。上述の通り、ストレージ機能部P20は、ファイル機能部P10の発行したリードコマンドまたはライトコマンドを処理すると、その処理結果をファイル機能部P10に対して応答する。ファイル機能部P10は、以下に述べる通り、ストレージ機能部P20から送信される応答を受領する。 FIG. 22 is a flowchart of response reception processing executed by the file function unit P10. As described above, when the storage function unit P20 processes the read command or write command issued by the file function unit P10, the storage function unit P20 responds to the file function unit P10 with the processing result. The file function unit P10 receives a response transmitted from the storage function unit P20 as described below.
 ファイル機能部P10は、応答キューT30Rに新規応答が格納されたか判定する(S160)。ファイル機能部P10は、応答キューT30Rに新規応答が格納されていない場合(S160:NO)、本処理を終了する。これに対し、ファイル機能部P10は、応答キューT30Rに新規応答が格納されている場合(S160:YES)、その新規な応答を応答キューT30Rから取り込む(S161)。 The file function unit P10 determines whether a new response is stored in the response queue T30R (S160). If the new response is not stored in the response queue T30R (S160: NO), the file function unit P10 ends this process. On the other hand, when a new response is stored in the response queue T30R (S160: YES), the file function unit P10 takes in the new response from the response queue T30R (S161).
 ファイル機能部P10は、取り込んだ応答に対応するコマンドの種別と応答結果とに応じた所定処理を実行する(S162)。取り込んだ応答に対応するコマンドの種別とは、その応答の作成原因となったコマンドである。コマンド種別には、リードコマンド、ライトコマンドがある。応答結果には、図19で述べたように、正常応答(S117)とエラー応答(S118)とがある。例えば、ストレージ要求を発行したファイル要求処理(図示しない)から指定された応答格納領域へコマンド実行結果の格納である。 The file function unit P10 executes a predetermined process according to the type of command corresponding to the received response and the response result (S162). The type of command corresponding to the fetched response is the command that caused the response to be created. The command type includes a read command and a write command. As described in FIG. 19, the response results include a normal response (S117) and an error response (S118). For example, command execution results are stored in a response storage area designated from a file request process (not shown) that has issued a storage request.
 ファイル機能部P10は、応答を受領したコマンドについて確保していた要求IDを解放する(S163)。さらに、ファイル機能部P10は、応答を受領したコマンドに対応するストレージ要求をストレージ要求管理情報T50から消去する(S164)。 The file function unit P10 releases the request ID secured for the command that received the response (S163). Further, the file function unit P10 deletes the storage request corresponding to the command that received the response from the storage request management information T50 (S164).
 図23は、図22の実行後にファイル機能部P10が実行する処理の例を示すフローチャートである。ファイル機能部P10は、コマンドの種別を判別する(S170)。 FIG. 23 is a flowchart showing an example of processing executed by the file function unit P10 after execution of FIG. The file function unit P10 determines the type of command (S170).
 ファイル機能部P10は、リードコマンドの場合、ストレージ機能部P20から正常応答を受領したか判定する(S171)。ファイル機能部P10は、リードコマンドについての正常応答を受領した場合(S171:YES)、ストレージ要求がクライアントコンピュータ2からのファイルアクセス要求を起因としている場合は、クライアントコンピュータ2に対してファイルキャッシュ領域153Fに格納されているリードデータを送信する In the case of a read command, the file function unit P10 determines whether a normal response has been received from the storage function unit P20 (S171). When the file function unit P10 receives a normal response for the read command (S171: YES), if the storage request is caused by a file access request from the client computer 2, the file function unit P10 sends a file cache area 153F to the client computer 2. Send the read data stored in
 これに対し、ファイル機能部P10は、リードコマンドについてのエラー応答をストレージ機能部P20から受領した場合(S171:NO)、ファイルキャッシュ領域153Fに格納されているリードデータを消去する(S173)。なお、コマンドリトライにより上書きするため、データを消去するステップは廃止してもよい。ファイル機能部P10は、リードのリトライ数が上限値に達したか判定する(S174)。ファイル機能部P10は、リトライ数が上限値に達していない場合(S174:NO)、リードコマンドを再び発行し(S175)、本処理を終了する。リードコマンドの再発行については、図12のコマンド発行処理P11で述べた通りである。リードコマンドのリトライ数が上限値に達した場合(S174:YES)、ファイル機能部P10は、本処理を終了する。 On the other hand, when the file function unit P10 receives an error response for the read command from the storage function unit P20 (S171: NO), the file function unit P10 erases the read data stored in the file cache area 153F (S173). Since data is overwritten by command retry, the step of deleting data may be abolished. The file function unit P10 determines whether the number of read retries has reached the upper limit (S174). If the number of retries has not reached the upper limit (S174: NO), the file function unit P10 issues a read command again (S175), and ends this process. The reissue of the read command is as described in the command issuance process P11 in FIG. When the number of retries for the read command has reached the upper limit (S174: YES), the file function unit P10 ends this process.
 一方、ファイル機能部P10は、ストレージ機能部P20からライトコマンドについての応答を受領した場合、その応答が正常応答であるか、それともエラー応答であるかを判定する(S176)。ファイル機能部P10は、ライトコマンドについての正常応答を受領すると(S176:YES)、ライトコマンドに対応するストレージ要求がクライアントコンピュータ2からのファイルアクセス要求を起因としている場合は、クライアントコンピュータ2に対し、処理完了を通知する(S177)。 On the other hand, when the file function unit P10 receives a response to the write command from the storage function unit P20, the file function unit P10 determines whether the response is a normal response or an error response (S176). When the file function unit P10 receives a normal response for the write command (S176: YES), if the storage request corresponding to the write command is caused by the file access request from the client computer 2, the file function unit P10 The processing completion is notified (S177).
 これに対し、ファイル機能部P10は、ライトコマンドについてエラー応答を受領した場合(S176:NO)、ファイル機能部P10は、ライトのリトライ数が上限値に達したか判定する(S180)。ファイル機能部P10は、リトライ数が上限値に達していない場合(S180:NO)、ライトコマンドを再び発行し(S181)、本処理を終了する。ライトコマンドのリトライ数が上限値に達した場合(S180:YES)、ファイルキャッシュ領域153Fに格納されたライトデータを消去する(S178)。ファイル機能部P10は、ライトコマンドに対応するストレージ要求がクライアントコンピュータ2からのファイルアクセス要求を起因としている場合は、クライアントコンピュータ2に対して書込みに失敗したことを通知する(S179)。 On the other hand, when the file function unit P10 receives an error response for the write command (S176: NO), the file function unit P10 determines whether the number of write retries has reached the upper limit (S180). If the number of retries has not reached the upper limit (S180: NO), the file function unit P10 issues a write command again (S181), and ends this process. When the retry number of the write command reaches the upper limit (S180: YES), the write data stored in the file cache area 153F is deleted (S178). When the storage request corresponding to the write command is caused by the file access request from the client computer 2, the file function unit P10 notifies the client computer 2 that the writing has failed (S179).
 このように構成される本実施例によれば、ファイル機能部P10とストレージ機能部P20とが同一筐体内で密に結合し、メモリを共同使用する場合において、特別なハードウェア装置を用いずに、ストレージシステム1内でのデータの一貫性を保障することができ、使い勝手が向上する。 According to the present embodiment configured as described above, when the file function unit P10 and the storage function unit P20 are closely coupled in the same housing and the memory is used jointly, a special hardware device is not used. The consistency of data in the storage system 1 can be ensured and the usability is improved.
 本実施例によれば、ファイル機能部P10は、ストレージ機能部P20からの応答が正常応答であることを確認後に、クライアントコンピュータ2に処理結果を通知する。このため、ストレージシステム1からクライアントコンピュータ2に誤った報告がされる可能性を抑制し、ストレージシステム1の信頼性を維持できる。 According to the present embodiment, the file function unit P10 notifies the client computer 2 of the processing result after confirming that the response from the storage function unit P20 is a normal response. For this reason, it is possible to suppress the possibility of an erroneous report from the storage system 1 to the client computer 2, and to maintain the reliability of the storage system 1.
 本実施例によれば、ライトデータを、ストレージバッファ領域152を経由してストレージキャッシュ領域153Sへ格納させることができる。このため、ファイル機能部P10から受領した間違ったライトデータで、ダーティ状態のデータを直ちに上書きしてしまうという事態の発生を防止できる。これにより、ダーティ状態のデータの消失を防止し、ストレージシステム1の信頼性を維持できる。 According to this embodiment, the write data can be stored in the storage cache area 153S via the storage buffer area 152. For this reason, it is possible to prevent the situation where the dirty data is immediately overwritten with the wrong write data received from the file function unit P10. Thereby, the loss of dirty data can be prevented and the reliability of the storage system 1 can be maintained.
 本実施例では、自系のストレージキャッシュ領域153S(#0)から他系のストレージキャッシュ領域153S(#1)へライトデータを転送して冗長記憶させる場合に、ソフトウェア処理によりデータの一貫性を検査する。このため、コントローラ11(#0)とコントローラ11(#1)の間でデータを転送する場合のデータの一貫性を保障でき、ストレージシステム1の信頼性を維持できる。 In this embodiment, when the write data is transferred from the own storage cache area 153S (# 0) to the other storage cache area 153S (# 1) and redundantly stored, the data consistency is checked by software processing. To do. Therefore, it is possible to ensure data consistency when transferring data between the controller 11 (# 0) and the controller 11 (# 1), and to maintain the reliability of the storage system 1.
 なお、本発明は、上述した実施形態に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。 Note that the present invention is not limited to the above-described embodiment. A person skilled in the art can make various additions and changes within the scope of the present invention.
 1:ストレージシステム、2:クライアントコンピュータ、11:コントローラ、12:フロントエンドインターフェース、13:バックエンドインターフェース、14:マイクロプロセッサ、15:メモリ 1: Storage system, 2: Client computer, 11: Controller, 12: Front-end interface, 13: Back-end interface, 14: Microprocessor, 15: Memory

Claims (14)

  1.  ストレージシステムであって、
     コンピュータ装置から受領するファイルアクセス要求をファイル用メモリ領域に格納し、前記ファイルアクセス要求に応じた入出力要求を発行するファイル機能部と、
     前記入出力要求の対象データをストレージ用メモリ領域に格納して、前記入出力要求を処理するストレージ機能部であって、前記対象データを保障するためのデータ保障コードを前記対象データに設定し、前記データ保障コードに基づいて前記対象データの一貫性を検査するストレージ機能部と、を備え、
     前記ファイル機能部と前記ストレージ機能部とは、同一筐体内で密に結合しており、前記ファイル機能部および前記ストレージ機能部により共同使用されるメモリ部に、前記ファイル用メモリ領域と前記ストレージ用メモリ領域とが設定されており、
     前記ストレージ機能部は、前記入出力要求としてリード要求を処理する場合に、
      前記リード要求の対象データであるリード対象データが前記ストレージ用メモリ領域に格納されていない場合には、前記リード対象データと前記リード対象データに付加された第1データ保障コードとを記憶装置から読み出して、前記ストレージ用メモリ領域へ格納し、
      前記ストレージ用メモリ領域に格納された前記リード対象データをリード転送指示情報に従って、前記ストレージ用メモリ領域から前記ファイル用メモリ領域へ転送して格納し、
      前記ファイル用メモリ領域に格納した前記リード対象データを読み出して、前記リード対象データの誤り検出用コードを生成し、
      前記リード対象データのアドレス情報を前記リード転送指示情報から取得し、
      前記誤り検出用コードと前記アドレス情報とに基づいて、第2データ保障コードを生成し、
      前記第1データ保障コードと前記第2データ保障コードとが一致するか判定し、その判定結果に応じて前記ファイル機能部へ応答する、
    ストレージシステム。
     
    A storage system,
    A file function unit that stores a file access request received from a computer device in a file memory area and issues an input / output request according to the file access request;
    Storing the target data of the input / output request in a memory area for storage, and processing the input / output request, setting a data guarantee code for guaranteeing the target data in the target data; A storage function unit that checks the consistency of the target data based on the data guarantee code,
    The file function unit and the storage function unit are tightly coupled in the same housing, and the file memory area and the storage function unit are connected to a memory unit shared by the file function unit and the storage function unit. Memory area is set,
    When the storage function unit processes a read request as the input / output request,
    When the read target data that is the target data of the read request is not stored in the storage memory area, the read target data and the first data guarantee code added to the read target data are read from the storage device. Stored in the storage memory area,
    According to the read transfer instruction information, the read target data stored in the storage memory area is transferred from the storage memory area to the file memory area and stored.
    Read the read target data stored in the file memory area to generate an error detection code for the read target data;
    Obtaining address information of the read target data from the read transfer instruction information;
    Generating a second data guarantee code based on the error detection code and the address information;
    Determining whether the first data security code and the second data security code match, and responding to the file function unit according to the determination result;
    Storage system.
  2.  前記ストレージ機能部は、
      前記第1データ保障コードと前記第2データ保障コードとが一致する場合、前記リード要求が正常に終了したと判定して前記ファイル機能部へ正常応答し、
      前記第1データ保障コードと前記第2データ保障コードとが一致しない場合、前記リード要求がエラー終了したと判定して前記ファイル機能部へエラー応答する、
    請求項1に記載のストレージシステム。
     
    The storage function unit
    If the first data guarantee code and the second data guarantee code match, it is determined that the read request has ended normally, and a normal response is made to the file function unit.
    If the first data guarantee code and the second data guarantee code do not match, it is determined that the read request has ended in error, and an error response is sent to the file function unit.
    The storage system according to claim 1.
  3.  前記ファイル機能部は、前記ストレージ機能部から前記リード要求に関する前記正常応答を受領した場合、前記ファイル用メモリ領域に格納された前記リード対象データを前記コンピュータ装置へ送信させる、
    請求項2に記載のストレージシステム。
     
    When the file function unit receives the normal response related to the read request from the storage function unit, the file function unit transmits the read target data stored in the file memory area to the computer device.
    The storage system according to claim 2.
  4.  前記ファイル機能部は、前記ストレージ機能部から前記リード要求に関する前記エラー応答を受領した場合、前記ファイル用メモリ領域に格納された前記リード対象データを消去し、予め設定された所定回数だけ前記リード要求の処理をリトライする、
    請求項3に記載のストレージシステム。
     
    When the file function unit receives the error response related to the read request from the storage function unit, the file function unit erases the read target data stored in the file memory area and performs the read request for a predetermined number of times set in advance. Retry the process,
    The storage system according to claim 3.
  5.  前記ストレージ機能部は、前記入出力要求としてライト要求を処理する場合に、
      前記ファイル用メモリ領域から前記ライト要求の対象データであるライト対象データを、ライト転送指示情報に従って読み出して前記ストレージ用メモリ領域に格納し、
      前記ライト対象データを前記ファイル用メモリ領域から再度読み出す際に、前記ライト対象データの誤り検出用コードを生成し、
      前記ライト対象データのアドレス情報を前記ライト転送指示情報から取得し、
      前記誤り検出用コードと前記アドレス情報とに基づいて第3データ保障コードを生成し、
      前記第3データ保障コードを前記ストレージ用メモリ領域に格納した前記ライト対象データに付加し、
      前記第3データ保障コードの付加された前記ライト対象データを、第2ライト転送指示情報に従って、前記ストレージ用メモリ領域から他のストレージ用メモリ領域へ転送して格納し、
      前記他のストレージ用メモリ領域に格納された前記ライト対象データから誤り検出用コードを生成し、
      前記他のストレージ用メモリ領域に格納された前記ライト対象データのアドレス情報を前記第2ライト転送指示情報から取得し、
      前記生成した誤り検出用コードと前記取得したアドレス情報とに基づいて第4データ保障コードを生成し、
      前記他のストレージ用メモリ領域に格納された前記ライト対象データに付加されている前記第3データ保障コードと前記第4データ保障コードとが一致するか判定し、その判定結果に応じて前記ファイル機能部へ応答する、
    請求項1に記載のストレージシステム。
     
    When the storage function unit processes a write request as the input / output request,
    Write target data that is the target data of the write request from the file memory area is read according to the write transfer instruction information and stored in the storage memory area,
    When the write target data is read again from the file memory area, an error detection code for the write target data is generated,
    Obtaining address information of the write target data from the write transfer instruction information;
    Generating a third data guarantee code based on the error detection code and the address information;
    Adding the third data guarantee code to the write target data stored in the storage memory area;
    The write target data to which the third data guarantee code is added is transferred from the storage memory area to another storage memory area according to the second write transfer instruction information, and stored.
    Generate an error detection code from the write target data stored in the other storage memory area,
    Obtaining address information of the write target data stored in the other storage memory area from the second write transfer instruction information;
    Generating a fourth data guarantee code based on the generated error detection code and the acquired address information;
    It is determined whether the third data guarantee code added to the write target data stored in the other storage memory area matches the fourth data guarantee code, and the file function is determined according to the determination result. Respond to the department,
    The storage system according to claim 1.
  6.  前記ストレージ機能部は、
      前記第3データ保障コードと前記第4データ保障コードとが一致する場合、前記ライト要求が正常に終了したと判定して前記ファイル機能部へ正常応答し、
      前記第3データ保障コードと前記第4データ保障コードとが一致しない場合、前記ライト要求がエラー終了したと判定して前記ファイル機能部へエラー応答する、
    請求項5に記載のストレージシステム。
     
    The storage function unit
    If the third data guarantee code and the fourth data guarantee code match, it is determined that the write request has been completed normally and a normal response is made to the file function unit,
    If the third data guarantee code and the fourth data guarantee code do not match, it is determined that the write request has ended in error and an error response is sent to the file function unit.
    The storage system according to claim 5.
  7.  前記ストレージ用メモリ領域は、ストレージバッファ領域とストレージキャッシュ領域とを含んでおり、前記他のストレージ用メモリ領域は少なくとも他のストレージキャッシュ領域を含んでおり、
     前記ストレージ機能部は、
      前記ファイル用メモリ領域から前記ストレージバッファ領域を経由して前記他のストレージキャッシュ領域へ前記ライト対象データおよび前記第3データ保障コードを転送して格納するバッファ経由モードと、前記ファイル用メモリ領域から前記他のストレージキャッシュ領域へ前記ライト対象データおよび前記第3データ保障コードを転送して格納する直送モードとのいずれかを選択することができる、
    請求項6に記載のストレージシステム。
     
    The storage memory area includes a storage buffer area and a storage cache area, and the other storage memory area includes at least another storage cache area,
    The storage function unit
    A buffered mode for transferring and storing the write target data and the third data guarantee code from the file memory area via the storage buffer area to the other storage cache area; Either of the write target data and the third data guarantee code can be selected and transferred to another storage cache area.
    The storage system according to claim 6.
  8.  前記ストレージ用メモリ領域は、ストレージバッファ領域とストレージキャッシュ領域とを含んでおり、前記他のストレージ用メモリ領域は少なくとも他のストレージキャッシュ領域を含んでおり、
     前記ストレージ機能部は、
      前記ストレージキャッシュ領域から前記ファイル用メモリ領域へ前記リード対象データおよび前記第1データ保障コードを転送して格納する直送モードと、前記他のストレージキャッシュ領域から前記ストレージバッファ領域を経由して前記ファイル用メモリ領域へ前記リード対象データおよび前記第1データ保障コードを転送して格納するバッファ経由モードとのいずれかを選択することができる、
    請求項1に記載のストレージシステム。
     
    The storage memory area includes a storage buffer area and a storage cache area, and the other storage memory area includes at least another storage cache area,
    The storage function unit
    A direct transmission mode for transferring and storing the read target data and the first data guarantee code from the storage cache area to the file memory area; and for the file from the other storage cache area via the storage buffer area Either of the read target data and the buffered mode for transferring and storing the first data guarantee code to the memory area can be selected.
    The storage system according to claim 1.
  9.  前記ファイル機能部と前記ストレージ機能部により共同使用される前記メモリ部には、さらに管理情報を格納するための管理情報領域が設定されており、前記管理情報領域にはメモリ領域間でデータを転送する際に使用する転送指示情報が格納される、
    請求項1に記載のストレージシステム。
     
    The memory unit used jointly by the file function unit and the storage function unit is further provided with a management information area for storing management information, and data is transferred between the memory areas in the management information area. Stores the transfer instruction information used when
    The storage system according to claim 1.
  10.  冗長化された複数のコントローラを備え、
     前記各コントローラは、
      前記コンピュータ装置と通信するための第1通信インターフェース部と、
      前記記憶装置と通信するための第2通信インターフェース部と、
      前記第1通信インターフェースおよび前記第2通信インターフェース部に接続されるマイクロプロセッサ部であって、冗長化ペアを構成する相手方のマイクロプロセッサとも通信可能に接続されているマイクロプロセッサ部と、
      前記マイクロプロセッサ部により使用される前記メモリ部と、
    を含んで構成されており、
     前記各メモリ部には、前記ファイル機能部を実現するコンピュータプログラムと前記ストレージ機能部を実現するコンピュータプログラムとが格納されている、
    請求項10に記載のストレージシステム。
     
    It has multiple redundant controllers,
    Each controller is
    A first communication interface unit for communicating with the computer device;
    A second communication interface unit for communicating with the storage device;
    A microprocessor unit connected to the first communication interface and the second communication interface unit, wherein the microprocessor unit is communicably connected to a counterpart microprocessor constituting the redundant pair;
    The memory unit used by the microprocessor unit;
    It is composed including
    Each memory unit stores a computer program for realizing the file function unit and a computer program for realizing the storage function unit.
    The storage system according to claim 10.
  11.  ストレージシステム内でのデータの一貫性を保障するデータ保障方法であって、
     前記ストレージシステムは、
      コンピュータ装置から受領するファイルアクセス要求をファイル用メモリ領域に格納し、前記ファイルアクセス要求に応じた入出力要求を発行するファイル機能部と、
      前記入出力要求の対象データをストレージ用メモリ領域に格納して、前記入出力要求を処理するストレージ機能部であって、前記対象データを保障するためのデータ保障コードを前記対象データに設定し、前記データ保障コードに基づいて前記対象データの一貫性を検査するストレージ機能部と、を備えており、
     前記ファイル機能部と前記ストレージ機能部とは、同一筐体内で密に結合しており、前記ファイル機能部および前記ストレージ機能部により共同使用されるメモリ部に、前記ファイル用メモリ領域と前記ストレージ用メモリ領域とが設定されており、
     前記ストレージ機能部は、前記入出力要求としてリード要求を処理する場合に、
      前記リード要求の対象データであるリード対象データが前記ストレージ用メモリ領域に格納されていない場合には、前記リード対象データと前記リード対象データに付加された第1データ保障コードとを記憶装置から読み出して、前記ストレージ用メモリ領域へ格納し、
      前記ストレージ用メモリ領域に格納された前記リード対象データをリード転送指示情報に従って、前記ストレージ用メモリ領域から前記ファイル用メモリ領域へ転送して格納し、
      前記ファイル用メモリ領域に格納した前記リード対象データを読み出して、前記リード対象データの誤り検出用コードを生成し、
      前記リード対象データのアドレス情報を前記リード転送指示情報から取得し、
      前記誤り検出用コードと前記アドレス情報とに基づいて、第2データ保障コードを生成し、
      前記第1データ保障コードと前記第2データ保障コードとが一致するか判定し、その判定結果に応じて前記ファイル機能部へ応答する、
    ストレージシステムのデータ保障方法。
     
    A data guarantee method for ensuring data consistency in a storage system,
    The storage system
    A file function unit that stores a file access request received from a computer device in a file memory area and issues an input / output request according to the file access request;
    Storing the target data of the input / output request in a memory area for storage, and processing the input / output request, setting a data guarantee code for guaranteeing the target data in the target data; A storage function unit that checks the consistency of the target data based on the data guarantee code, and
    The file function unit and the storage function unit are tightly coupled in the same housing, and the file memory area and the storage function unit are connected to a memory unit shared by the file function unit and the storage function unit. Memory area is set,
    When the storage function unit processes a read request as the input / output request,
    When the read target data that is the target data of the read request is not stored in the storage memory area, the read target data and the first data guarantee code added to the read target data are read from the storage device. Stored in the storage memory area,
    According to the read transfer instruction information, the read target data stored in the storage memory area is transferred from the storage memory area to the file memory area and stored.
    Read the read target data stored in the file memory area to generate an error detection code for the read target data;
    Obtaining address information of the read target data from the read transfer instruction information;
    Generating a second data guarantee code based on the error detection code and the address information;
    Determining whether the first data security code and the second data security code match, and responding to the file function unit according to the determination result;
    Data guarantee method for storage system.
  12.  前記ストレージ機能部は、前記第1データ保障コードと前記第2データ保障コードとが一致する場合、前記リード要求が正常に終了したと判定して前記ファイル機能部へ正常応答し、前記第1データ保障コードと前記第2データ保障コードとが一致しない場合、前記リード要求がエラー終了したと判定して前記ファイル機能部へエラー応答するようになっており、
     前記ファイル機能部は、前記ストレージ機能部から前記リード要求に関する前記正常応答を受領した場合、前記ファイル用メモリ領域に格納された前記リード対象データを前記コンピュータ装置へ送信させる、
    請求項11に記載のストレージシステムのデータ保障方法。
     
    If the first data guarantee code and the second data guarantee code match, the storage function unit determines that the read request has been completed normally and responds normally to the file function unit, and the first data guarantee code If the security code and the second data security code do not match, it is determined that the read request has ended in error, and an error response is made to the file function unit,
    When the file function unit receives the normal response related to the read request from the storage function unit, the file function unit transmits the read target data stored in the file memory area to the computer device.
    The data guarantee method for a storage system according to claim 11.
  13.  前記ファイル機能部は、前記ストレージ機能部から前記リード要求に関する前記エラー応答を受領した場合、前記ファイル用メモリ領域に格納された前記リード対象データを消去し、予め設定された所定回数だけ前記リード要求の処理をリトライする、
    請求項12に記載のストレージシステムのデータ保障方法。
     
    When the file function unit receives the error response related to the read request from the storage function unit, the file function unit erases the read target data stored in the file memory area and performs the read request for a predetermined number of times set in advance. Retry the process,
    The data guarantee method for a storage system according to claim 12.
  14.  前記ストレージ機能部は、前記入出力要求としてライト要求を処理する場合に、
      前記ファイル用メモリ領域から前記ライト要求の対象データであるライト対象データを、ライト転送指示情報に従って読み出して前記ストレージ用メモリ領域に格納し、
      前記ライト対象データを前記ファイル用メモリ領域から再度読み出す際に、前記ライト対象データの誤り検出用コードを生成し、
      前記ライト対象データのアドレス情報を前記ライト転送指示情報から取得し、
      前記誤り検出用コードと前記アドレス情報とに基づいて第3データ保障コードを生成し、
      前記第3データ保障コードを前記ストレージ用メモリ領域に格納した前記ライト対象データに付加し、
      前記第3データ保障コードの付加された前記ライト対象データを、第2ライト転送指示情報に従って、前記ストレージ用メモリ領域から他のストレージ用メモリ領域へ転送して格納し、
      前記他のストレージ用メモリ領域に格納された前記ライト対象データから誤り検出用コードを生成し、
      前記他のストレージ用メモリ領域に格納された前記ライト対象データのアドレス情報を前記第2ライト転送指示情報から取得し、
      前記生成した誤り検出用コードと前記取得したアドレス情報とに基づいて第4データ保障コードを生成し、
      前記他のストレージ用メモリ領域に格納された前記ライト対象データに付加されている前記第3データ保障コードと前記第4データ保障コードとが一致するか判定し、その判定結果に応じて前記ファイル機能部へ応答する、
    請求項11に記載のストレージシステムのデータ保障方法。
    When the storage function unit processes a write request as the input / output request,
    Write target data that is the target data of the write request from the file memory area is read according to the write transfer instruction information and stored in the storage memory area,
    When the write target data is read again from the file memory area, an error detection code for the write target data is generated,
    Obtaining address information of the write target data from the write transfer instruction information;
    Generating a third data guarantee code based on the error detection code and the address information;
    Adding the third data guarantee code to the write target data stored in the storage memory area;
    The write target data to which the third data guarantee code is added is transferred from the storage memory area to another storage memory area according to the second write transfer instruction information, and stored.
    Generate an error detection code from the write target data stored in the other storage memory area,
    Obtaining address information of the write target data stored in the other storage memory area from the second write transfer instruction information;
    Generating a fourth data guarantee code based on the generated error detection code and the acquired address information;
    It is determined whether the third data guarantee code added to the write target data stored in the other storage memory area matches the fourth data guarantee code, and the file function is determined according to the determination result. Respond to the department,
    The data guarantee method for a storage system according to claim 11.
PCT/JP2015/050960 2015-01-15 2015-01-15 Storage system and data security method for storage system WO2016113882A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/050960 WO2016113882A1 (en) 2015-01-15 2015-01-15 Storage system and data security method for storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/050960 WO2016113882A1 (en) 2015-01-15 2015-01-15 Storage system and data security method for storage system

Publications (1)

Publication Number Publication Date
WO2016113882A1 true WO2016113882A1 (en) 2016-07-21

Family

ID=56405443

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/050960 WO2016113882A1 (en) 2015-01-15 2015-01-15 Storage system and data security method for storage system

Country Status (1)

Country Link
WO (1) WO2016113882A1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008071209A (en) * 2006-09-15 2008-03-27 Fujitsu Ltd Storage management program, storage management device and storage management method
JP2011525643A (en) * 2008-12-22 2011-09-22 株式会社日立製作所 Storage device and data verification method in storage device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008071209A (en) * 2006-09-15 2008-03-27 Fujitsu Ltd Storage management program, storage management device and storage management method
JP2011525643A (en) * 2008-12-22 2011-09-22 株式会社日立製作所 Storage device and data verification method in storage device

Similar Documents

Publication Publication Date Title
JP5222617B2 (en) Information system and I / O processing method
JP4756992B2 (en) Storage system and storage control method
US9836404B2 (en) Write mirroring to storage class memory devices
JP6009095B2 (en) Storage system and storage control method
US9298507B2 (en) Data processing resource management
US8607230B2 (en) Virtual computer system and migration method of virtual computer
US8839030B2 (en) Methods and structure for resuming background tasks in a clustered storage environment
JP4727437B2 (en) Storage control method for storage system having database
JP5933755B2 (en) Storage system and storage control device
JP4920291B2 (en) Computer system, access control method, and management computer
US20110289280A1 (en) Storage system, control method therefor, and program
US10691339B2 (en) Methods for reducing initialization duration and performance impact during configuration of storage drives
CN107430494B (en) System, method, and medium for remote direct memory access
CN107430585B (en) System and method for remote direct memory access
JP5852674B2 (en) Method for detecting data loss in data transfer between information devices
CN107533537B (en) Storage system, method for storing and non-transitory computer readable medium
US20090006863A1 (en) Storage system comprising encryption function and data guarantee method
US7194562B2 (en) Method, system, and program for throttling data transfer
US20200034039A1 (en) Sequential write management in a data storage system
JP2008084094A (en) Storage system, and management method and storage control device therefor
US20090228672A1 (en) Remote copy system and check method
US7480820B2 (en) Disk array apparatus, method for controlling the same, and program
US20090177916A1 (en) Storage system, controller of storage system, control method of storage system
JP4635032B2 (en) Method for updating control program of storage controller
WO2016113882A1 (en) Storage system and data security method for storage system

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15877834

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP