WO2014162586A1 - ストレージシステムおよびストレージシステム制御方法 - Google Patents

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

Info

Publication number
WO2014162586A1
WO2014162586A1 PCT/JP2013/060448 JP2013060448W WO2014162586A1 WO 2014162586 A1 WO2014162586 A1 WO 2014162586A1 JP 2013060448 W JP2013060448 W JP 2013060448W WO 2014162586 A1 WO2014162586 A1 WO 2014162586A1
Authority
WO
WIPO (PCT)
Prior art keywords
storage device
storage
node
data
processor
Prior art date
Application number
PCT/JP2013/060448
Other languages
English (en)
French (fr)
Inventor
洋俊 赤池
藤本 和久
講平 鑪
田中 勝也
真喜夫 水野
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to US14/234,236 priority Critical patent/US9015111B2/en
Priority to PCT/JP2013/060448 priority patent/WO2014162586A1/ja
Publication of WO2014162586A1 publication Critical patent/WO2014162586A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/1827Management specifically adapted to NAS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2206/00Indexing scheme related to dedicated interfaces for computers
    • G06F2206/10Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
    • G06F2206/1008Graphical user interface [GUI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes

Definitions

  • the present invention relates to a technique using a plurality of storage devices.
  • a cluster-structured storage system that collects multiple storage nodes can achieve high data access performance through parallel access and high availability through data redundancy by operating each storage node in parallel.
  • a storage node may be called a node.
  • the first method uses a local cache (for example, Patent Document 1).
  • This method is a cluster configuration in which a plurality of storage devices (nodes) are connected via a network, and temporarily receives data in a local cache when a data write request is received from a host.
  • a local cache is a cache in a node having a write destination volume.
  • the second method uses a dynamic capacity allocation function (for example, Patent Documents 2 and 3).
  • the dynamic capacity allocation function is realized by a capacity pool in which storage areas of storage nodes are collected and a virtual volume.
  • a virtual volume is a volume that does not have physical storage capacity.
  • the node that receives the data write request allocates a part of the capacity space of the capacity pool as a storage area to the storage location of the write data in the virtual volume when the data write to the virtual volume occurs. .
  • a storage area is allocated in the node that has received the data write request, and the data is stored in the allocated storage area, thereby reducing the number of times of data transfer via the network and reducing the amount of data transfer between the nodes.
  • the first method allocates a cache in a node having a write destination virtual volume, and therefore a node (BE node: back) having a data storage medium as a final storage destination of data. -end node) may be assigned to a different node.
  • CM node cache memory node
  • the second method allocates the storage area of the data storage medium in the node (host node) that receives data from the host computer to the storage location of the write data of the virtual volume, so that the host node and the data storage medium are Nodes (BE nodes) possessed can be made the same node.
  • the node that stores the cache (CM node) may be different from the host node. As a result, data transfer between the host node and the CM node and data transfer between the CM node and the BE node occur, and the performance of the storage system may deteriorate due to a shortage of network bandwidth due to the data transfer.
  • a storage system includes at least three or more storage devices.
  • Each of the plurality of storage devices includes a processor connected to at least one other storage device via a communication path, a cache memory connected to the processor, and a storage connected to the processor.
  • the processor of the first storage device among the plurality of storage devices is connected to a host computer and provides a virtual volume to the host computer.
  • the processor of the first storage device receives a write request as a data access request to the virtual volume from the host computer, and the plurality of virtual storage areas in the virtual volume specified in the data access request When any cache memory of the storage device is not allocated, the processor of the first storage device transfers the write data specified in the data access request to the cache memory of the second storage device among the plurality of storage devices.
  • a predetermined state condition in the plurality of storage devices Among candidates that meet Et al. The second storage apparatus and the third storage device is selected based on the connection information indicating a connection between said plurality of storage devices by the communication channel.
  • data transfer between storage devices can be reduced, and the data access performance of the storage system can be improved.
  • FIG. 1 shows the configuration of a computer system according to an embodiment of the present invention.
  • FIG. 2 shows the configuration of the management computer 0172.
  • FIG. 3 shows information stored in the memory 0140 of the storage node 0105.
  • FIG. 4 shows the configuration of the command processing program 0215.
  • FIG. 5 shows the configuration of the RAID group management table 0220.
  • FIG. 6 shows the configuration of the volume management table 0225.
  • FIG. 7 shows the configuration of the virtual volume allocation management table 0230.
  • FIG. 8 shows the configuration of the capacity pool configuration management table 0235.
  • FIG. 9 shows the configuration of the BE node configuration management table 0240.
  • FIG. 10 shows a comparative example of data transfer in the first network with a non-Any-to-any connection.
  • FIG. 10 shows a comparative example of data transfer in the first network with a non-Any-to-any connection.
  • FIG. 11 shows data transfer of a comparative example in the second network with a non-any-to-any connection.
  • FIG. 12 shows the configuration of the write evaluation value table 1200.
  • FIG. 13 shows the operation of the IO control process.
  • FIG. 14 shows the high-speed write control process.
  • FIG. 15 shows the IO control determination conditions.
  • FIG. 16 shows the first high-speed write control process.
  • FIG. 17 shows the second high-speed write control process.
  • FIG. 18 shows the third high-speed write control process.
  • FIG. 19 shows the first selection process 1630.
  • FIG. 20 shows the second selection process 1735.
  • FIG. 21 shows the write reservation process 1655.
  • FIG. 22 shows the record addition process 1640.
  • FIG. 23 shows the first record update processing 1555.
  • FIG. 24 shows the second record update process 1750.
  • FIG. 25 shows a write evaluation value table creation process.
  • FIG. 26 shows the cache load information update process.
  • FIG. 27 shows the free space information update process.
  • FIG. 28 shows the high-speed read control process.
  • FIG. 29 shows a setting screen.
  • FIG. 30 schematically illustrates sharing of a virtual volume.
  • aaa table such as “aaa list”, “aaaDB”, “aaa queue”, etc.
  • these information include tables, lists, DBs, queues, etc. It may be expressed by other than the data structure. Therefore, “aaa table”, “aaa list”, “aaaDB”, “aaa queue”, etc. may be referred to as “aaa information” to indicate that they are not dependent on the data structure.
  • program is used as the subject, but since the program performs processing determined by being executed by the processor using the memory and the communication port (communication control device), The description may be based on the processor. Further, the processing disclosed with the program as the subject may be processing performed by a computer such as a management computer. Further, part or all of the program may be realized by dedicated hardware.
  • Various programs may be installed in each computer by a program distribution server or a storage medium that can be read by the computer.
  • the management computer has input / output devices.
  • input / output devices include a display, a keyboard, and a pointer device, but other devices may be used.
  • a serial interface or an Ethernet interface is used as the input / output device, a display computer having a display or keyboard or pointer device is connected to the interface, and the display information is transmitted to the display computer.
  • the display computer may perform the display, or the input may be replaced by the input / output device by receiving the input.
  • a set of one or more computers that manage the storage system and display the display information of the present invention may be referred to as a management system.
  • the management computer displays display information
  • the management computer is a management system
  • a combination of the management computer and the display computer is also a management system.
  • a plurality of computers may realize processing equivalent to that of the management computer.
  • the plurality of computers if the display computer performs the display, display (Including computers) is the management system.
  • FIG. 1 shows the configuration of a computer system according to an embodiment of the present invention.
  • This computer system has a plurality of host computers 0100 and a storage system 0102.
  • the storage system 0102 has a plurality of storage nodes 0105 and a management computer 0172.
  • the plurality of storage nodes 0105 are connected to the plurality of host computers 0100, respectively.
  • a plurality of host computers 0100 may be connected to one storage node 0105.
  • the storage node 0105 is a storage device and is connected to another storage node 0105 via a network 0101 (communication path).
  • the host computer 0100 transmits a write command (write request) for writing data to the connected storage node 0105 and a read command (read request) for reading data from the storage node 0105 to the storage node 0105.
  • This figure shows an example in which the number of storage nodes 0105 is four, but the number of storage nodes may be two, three, five or more.
  • the storage system 0102 may have a plurality of management computers 0172.
  • the storage node 0105 includes a storage medium unit 0160 having a data storage medium for storing data, and a controller 0150 that controls the entire storage node 0105.
  • the storage node 0105 may have a plurality of storage medium units 0160.
  • the storage medium unit 0160 has a plurality of HDDs (Hard Disk Drives) 0155 as an example of a data storage medium.
  • HDDs Hard Disk Drives
  • another storage device such as a flash memory may be used.
  • the controller 0150 includes a CPU (Central Processing Unit) 0135, a memory 0140, a data communication unit 0115, a FE I / F (Front-end Interface) 0110, a BE I / F (Back-end Interface) 0145, a NIC (Network Interface Card). 0171. Note that the controller 0150 may include a plurality of units.
  • the CPU 0135 controls each unit of the storage node 0105 according to the program and data in the memory 0140.
  • the data communication unit 0115 has a local router 0120, a buffer 0125, and a switch 0130.
  • the local router 0120 controls data transfer between the FE I / F 0110 and the buffer 0125, data transfer between the buffer 0125 and the CPU 0135, and data transfer between the buffer 0125 and the CPU 0135 of another storage node 0105.
  • the switch 0130 is connected to the network 0101 and controls communication with other storage nodes 0105.
  • the network 0101 is, for example, PCIe (Peripheral Component Interconnect Express).
  • the FE I / F 0110 is an interface for connecting to a storage network, and is, for example, an FC (fibre channel) I / F.
  • the FE I / F 0110 is directly connected to one host computer 0100, but may be connected to a plurality of host computers 0100 directly or via a storage network.
  • BE I / F0145 is an interface for connecting to HDD0155, and is, for example, a SCSI (Small Computer System Interface) I / F.
  • SCSI Small Computer System Interface
  • the memory 0140 stores a program for the CPU 0135 to perform processing and a control table.
  • the memory 0140 further includes a cache memory 0250 that stores data read from the HDD 0155 and data to be written.
  • the NIC 0171 is connected to the management computer 0172 via the management network 0170.
  • the management network 0170 is, for example, a LAN (local area network).
  • the storage node 0105 aggregates a plurality of HDDs 0155 in the storage medium unit 0160 and logically manages them as one storage volume.
  • the storage node 0105 of this embodiment uses a RAID (Redundant Array of Inexpensive Disks) configuration to realize high-speed data transfer by parallel access and high availability by data redundancy.
  • a group of HDD 0155 used for the RAID configuration is called a RAID group.
  • a JBOD Just a Bunch of Disks
  • a single HDD configuration may be used.
  • All the storage nodes 0105 share a capacity pool (pool volume) in which storage areas of at least one RAID group are collected. There may be one capacity pool or a plurality of capacity pools, but here, a case of one will be described.
  • the storage node 0105 has one or a plurality of virtual volumes.
  • the virtual volume is a volume that has no physical storage capacity but is virtualized as if it were a logical volume having a physical storage area.
  • a virtual volume can be assigned a storage area of a pool volume in which the storage areas of logical volumes in the storage node 0105 are collected.
  • the storage node 0105 manages a virtual volume for each virtual storage area of a predetermined size.
  • the storage node 0105 receives a write command for writing the virtual storage area in the virtual volume from the host computer 0100, if the storage area of the RAID group is not allocated to the virtual storage area, the storage node 0105 A storage area is selected from the RAID groups belonging to the capacity pool and assigned to the virtual storage area.
  • a normal volume is bound to a RAID group or a single HDD, but a virtual volume is not particularly limited as long as it is bound to a storage area belonging to a capacity pool.
  • the management computer 0172 checks the setting and status of the controller 0150 and the storage medium unit 0160 of each storage node 0105, performs operations such as creation, change, and deletion of capacity pools and virtual volumes, and manages the network 0101. Do.
  • FIG. 2 shows the configuration of the management computer 0172.
  • the management computer 0172 has a CPU 0180, a NIC0181, a display device 0192, an input device 0193, and a memory 0190.
  • the CPU 0180 controls each part of the management computer 0172 according to the program and data in the memory 0190.
  • the NIC 0181 is connected to the storage node 0105 via the management network 0170.
  • Display device 0192 displays a screen in accordance with an instruction from CPU 0180.
  • the input device 0193 receives input from the administrator of the storage system 0102 and sends the input information to the CPU 0180.
  • the memory 0190 stores a management program 3060, a setting program 0361, management information 0370, and setting information 0371.
  • FIG. 3 shows information stored in the memory 0140 of the storage node 0105.
  • a message transmission program 0205, a message reception program 0210, and a command processing program 0215 are stored as programs.
  • the memory 0140 stores a RAID group management table 0220, a volume management table 0225, a virtual volume allocation management table 0230, a capacity pool configuration management table 0235, a BE node configuration management table 0240, and setting information 0255 as tables. .
  • An area in the memory 0140 other than the area storing the above-described program and table is used as the cache memory 0250.
  • FIG. 4 shows the configuration of the command processing program 0215.
  • the command processing program 0215 includes, as programs, a normal write control program 0305, a normal read control program 0310, an IO control program 0315, a high-speed write control program 0320, a high-speed read control program 0325, a virtual volume allocation addition program 0330, and a virtual volume allocation update.
  • a program 0335 and an evaluation value table update program 0345 are stored.
  • the command processing program 0215 has an evaluation value table 0350.
  • Evaluation value table 0350 includes a write evaluation value table and a read evaluation value table.
  • the CPU 0135 controls the storage node 0105 according to each program in the command processing program 0215.
  • FIG. 5 shows the configuration of the RAID group management table 0220.
  • the RAID group management table 0220 stores information regarding the HDD 0155 constituting the RAID group, and has a record for each RAID group created in the storage node 0105.
  • the RAID group management table 0220 includes members of a RAID group number 0405, a RAID level 0410, an HDD number list 0415, and an HDD size 0420.
  • the RAID group number 0405 indicates the number of the RAID group.
  • the RAID level 0410 indicates the RAID level of the RAID group.
  • the HDD number list 0415 indicates the number of the HDD 0155 assigned to the RAID group.
  • the HDD size 0420 indicates the size of the RAID group.
  • the RAID group management table 0220 is created by the management computer 0172 and stored in the storage node 0105.
  • FIG. 6 shows the configuration of the volume management table 0225.
  • the volume management table 0225 stores information provided to the storage user (host computer 0100) and has a record for each volume.
  • the volume management table 0225 includes members of a volume number 0505, a capacity pool number 0510, a RAID group number 0515, and a data area 0520.
  • the volume number 0505 indicates the number of the volume.
  • the capacity pool number 0510 indicates the number of the capacity pool associated with the virtual volume
  • the RAID group number 0515 and the data area 0520 indicate that the volume is a virtual volume, for example, “N / A "is stored.
  • the capacity pool number 0510 stores, for example, “N / A”, and the RAID group number 0515 and the data area 0520 correspond to the RAID group number and data respectively associated as data access destinations. Stores the range of the area.
  • the volume management table 0225 is created by the management computer 0172 and stored in each storage node 0105.
  • FIG. 7 shows the configuration of the virtual volume allocation management table 0230.
  • the virtual volume allocation management table 0230 has a record for each virtual storage area in the virtual volume.
  • the virtual storage area is managed in units of pages by a dynamic capacity allocation function.
  • a page is a management unit of a storage area in which a plurality of blocks, which are minimum units for data reading and writing, are collected.
  • a storage area in the CM node cache memory 0250 allocated to the virtual storage area is referred to as a cache area
  • a storage area in the BE node RAID group allocated to the virtual storage area is referred to as a drive area.
  • the virtual volume allocation management table 0230 stores the correspondence relationship of drive areas allocated to the target virtual storage area.
  • the virtual volume allocation management table 0230 includes members of a head address 0605, a RAID group number 0610, a storage destination BE node number 0615, an allocation destination address 0620, a storage destination CM node number 0625, and reservation destination BE node number information 0630.
  • the start address 0605 stores the start virtual address of the page existing in the virtual storage area on the virtual volume.
  • the RAID group number 0610 stores the number of the RAID group in which the drive area allocated to the virtual storage area is stored.
  • the storage destination BE node number 0615 stores a number indicating the storage destination BE node that is the storage node 0105 having the RAID group identified by the RAID group number 0610.
  • the allocation destination address 0620 stores the address of the drive area allocated to the virtual storage area identified by the head address 0605 in the storage destination BE node.
  • the storage destination CM node number 0625 stores the number of the CM node that is the storage node 0105 in which the cache area allocated to the virtual storage area identified by the head address 0605 is stored.
  • the reservation destination BE node number 0630 is an item used before the RAID group number 0610, the storage destination BE node number 0615, and the assignment destination address 0620 are determined.
  • the storage node that stores the drive area The number of the reservation destination BE node is stored.
  • Each storage node 0105 updates the virtual volume allocation management table 0230 and transmits the updated content to the other storage node 0105, thereby reflecting the updated content in the virtual volume allocation management table 0230 of the other storage node 0105.
  • the virtual volume allocation management table 0230 may store the address of the cache area allocated to the virtual storage area identified by the head address 0605 in the storage destination CM node.
  • FIG. 8 shows the configuration of the capacity pool configuration management table 0235.
  • the capacity pool configuration management table 0235 is a table for managing free areas of the capacity pool and unallocated areas of the RAID group.
  • the capacity pool configuration management table 0235 has a record for each capacity pool and a record for each RAID group.
  • Each capacity pool record includes members of capacity pool number 0705, capacity pool creation presence / absence 0710, and free area 0715.
  • the capacity pool number 0705 indicates the number of the capacity pool.
  • the capacity pool creation presence / absence 0710 indicates whether or not the capacity pool has been created.
  • the free area 0715 indicates the free area of the capacity pool.
  • the record for each RAID group includes members of a RAID group number 0720, a capacity pool number 0725, and unallocated area information 0730.
  • the RAID group number 0720 indicates the number of the RAID group.
  • the capacity pool number 0725 indicates the number of the capacity pool assigned to the RAID group.
  • the unallocated area information 0730 indicates an address range of an unallocated area in the RAID group.
  • Each storage node 0105 updates the capacity pool configuration management table 0235, and transmits the updated content to the other storage node 0105, thereby reflecting the updated content in the capacity pool configuration management table 0235 of the other storage node 0105. .
  • FIG. 9 shows the configuration of the BE node configuration management table 0240.
  • the BE node configuration management table 0240 is a table for managing the free area of the capacity pool separately for each BE node, and is used to select the BE node of the drive area to be allocated to the virtual volume when writing data.
  • the BE node configuration management table 0240 has a record for each capacity pool.
  • the BE node configuration management table 0240 includes members of a capacity pool number 0805, a RAID group number 0810, an allocation area 0815, a reserved area 0820, a free area 0825, and an entire area 0830.
  • the capacity pool number 0805 stores the number of the capacity pool.
  • the RAID group number 0810 is a RAID group assigned to the capacity pool identified by the capacity pool number 0805, and stores the number of the RAID group in the BE node.
  • the allocation area 0815 stores the capacity of the drive area allocated to the virtual volume in the storage area of the RAID group identified by the RAID group number 0810.
  • the reserved area 0820 stores the capacity of the drive area reserved for allocation before being allocated to the virtual volume in the storage area of the RAID group identified by the RAID group number 0810.
  • the free area 0825 stores the capacity of a storage area that is not assigned to or reserved in a virtual volume, among the storage areas of the RAID group identified by the RAID group number 0810.
  • the entire area 0830 stores the entire capacity of the storage area of the RAID group identified by the RAID group number 0810.
  • Each storage node 0105 updates the BE node configuration management table 0240 and transmits the updated content to the other storage node 0105, thereby reflecting the updated content in the capacity pool configuration management table 0235 of the other storage node 0105. .
  • the management computer 0172 creates a RAID group management table 0220 and a volume management table 0225 based on an instruction from the administrator of the storage system 0102 and transmits them to a plurality of storage nodes 0105.
  • the storage node 0105 updates the virtual volume allocation management table 0230, the capacity pool configuration management table 0235, and the BE node configuration management table 0240, the updated information is transmitted to the other storage nodes 0105.
  • the virtual volume allocation management table 0230 and the capacity pool configuration management table 0235 are synchronized among the plurality of storage nodes 0105. Any one of the RAID group management table 0220, the volume management table 0225, the virtual volume allocation management table 0230, and the capacity pool configuration management table 0235 may be stored outside the storage node 0105 such as the management computer 0172.
  • Any-to-any There is a topology called Any-to-any as a type of network topology.
  • any-to-any each storage node is directly connected to all other storage nodes.
  • Any-to-any connection is easy to implement storage control because of its symmetrical topology, and many storage systems employ the Any-to-any connection.
  • the number of storage nodes increases, the number of connections increases by the number of combinations of storage nodes, and there is a demerit that wiring of the network becomes difficult. Therefore, there is a non-Any-to-any connection in which the number of connections is reduced from the Any-to-any connection.
  • FIG. 10 discloses a first network as an example of non-Any-to-any connection.
  • This first network connects eight storage nodes indicated by nodes # 1 to # 8. Each node is connected to a host computer. Each node is not directly connected to all other nodes via a network. Therefore, a multi-stage transfer (hop) is required for communication between nodes that are not directly connected.
  • CM node and BE node As CM node and BE node
  • node # 1 (1055) when the node # 1 (1055) receives a data write command from the host computer, the node # 1 (1055) which is the host node selects the node # 8 having a small load on the cache memory 0250 as the CM node, Separately, node # 3 (1070) is selected as a free node in the RAID group for storing data.
  • data transfer is performed from node # 1 (1055) to node # 6 (1060) (1040), from node # 6 (1065) to node # 8 (1065) (1045), and node #. 8 (1065) to node # 3 (1070) 3 times (1050).
  • the host node (first storage device) in the present embodiment selects a CM node candidate and a BE node candidate that satisfy a predetermined state from among the plurality of storage nodes 0105, and the CM node candidate and the BE node are selected.
  • a combination of a CM node (second storage device) and a BE node (third storage device) with a small number of transfer stages is considered. Let's choose. Therefore, in the example shown in FIG. 10, when there is a combination of nodes having CM and BE capacity that can be used with a smaller number of transfer stages other than the nodes # 8 and # 3, the combination is preferentially selected. It will be.
  • it is possible to reduce the amount of data transfer by reducing the straddle between nodes for data transfer when using a limited network bandwidth.
  • the network 0101 may have another network topology of the first network, and may be any topology as long as the storage node 0105 can operate in a cluster configuration.
  • FIG. 11 discloses a second network which is another example of non-Any-to-any connection. In this network as well, it is necessary to select a node in consideration of the number of connection stages as in FIG.
  • FIG. 12 shows the configuration of the write evaluation value table 1200.
  • This Write evaluation value table 1200 is used by the host node that has received the Write command to select a CM node and a BE node.
  • This figure shows an example of the write evaluation value table 1200 stored in the node # 1, and is used when the node # 1 receives a write command from the host computer 0100, that is, when the node # 1 is a host node. .
  • the write evaluation value table 1200 includes a row for each CM node number 1210 indicating a CM node and a column for each BE node number 1205 indicating a BE node. Further, the write evaluation value table 1200 includes cache load information 1215 indicating the determination result of the cache load of each CM node, and free capacity information 1220 which is a determination result of the free capacity of each BE node.
  • the cache load is a load on the cache memory 0250 of the corresponding CM node.
  • the free capacity is the size of the free area of the RAID group of the corresponding BE node. This figure shows the cache load information 1215 as “load” and the free capacity information 1220 as “free”.
  • the cache load information 1215 indicates whether or not the cache load of the corresponding CM node is higher than the cache load threshold, and has a value of “high (high)” or “low (low)”, for example.
  • the cache load is represented by the transfer amount of the cache memory 0250 of the corresponding CM node
  • the cache load threshold is represented by the transfer amount threshold.
  • the free capacity information 1220 indicates whether or not the corresponding BE node has a free capacity equal to or greater than the free capacity threshold, and has a value of “present” or “not present”, for example.
  • the storage node 0105 whose cache load information 1215 has a value of “low” is selected as a CM node candidate.
  • the storage node 0105 in which the free capacity information 1220 has a value of “present” is selected as a BE node candidate. Processing for creating the write evaluation value table 1200 and processing for updating the write evaluation value table 1200 will be described later.
  • the state condition described above is that the data transfer amount of the cache memory 0250 of the CM node is smaller than the transfer amount threshold, and the free capacity of the BE node is larger than the free capacity threshold.
  • the matrix element 1225 of the write evaluation value table 1200 stores an evaluation value of a combination of the CM node number 1210 and the BE node number 1205.
  • An evaluation value of a combination of a certain CM node number 1210 and a BE node number 1205 indicates the total of the number of transfer stages from the host node to the CM node and the number of transfer stages from the CM node to the BE node. In the following description, the number of transfer stages may be referred to as the number of hops.
  • Each storage node 0105 that can be a host node stores a write evaluation value table 1200 indicating an evaluation value when the storage node 0105 is a host node.
  • the storage node 0105 determined as having a low cache load can be selected as a CM node candidate, and the storage node 0105 determined as having free capacity is selected as a BE node. Can be selected as a candidate. Further, the host node can select a combination of the CM node and the BE node that minimizes the number of transfer stages from the CM node candidate and the BE node candidate.
  • FIG. 13 shows the operation of the IO control process.
  • the IO control program 0315 determines the optimal IO control based on the IO control determination condition including the access type, cache hit / cache miss, presence / absence of drive area allocation, and command type. .
  • the IO control program 0315 receives a data access request from the host computer 0100 and confirms the data transfer length (data length) specified in the data access request (1305).
  • the IO control program 0315 compares the data transfer length with a predetermined data transfer length threshold (data length threshold) (1310), and if the data transfer length is greater than the data transfer length threshold, the access type is set to a large data transfer amount. (1320), if it is smaller, the access type is determined to be a small data transfer amount (1315).
  • An access with a large data transfer amount is, for example, sequential access, and an access with a small data transfer amount is, for example, random access.
  • the IO control program 0315 determines whether the cache data corresponding to the virtual storage area specified by the virtual address and data transfer length of the data access request exists in the cache memory 0250 (cache hit) or not (cache miss) ( It is determined whether or not a cache area corresponding to the designated virtual storage area is allocated in the cache memory 0250 (1325), and it is determined whether or not a drive area is allocated to the specified virtual storage area ( 1330). Further, the IO control program 0315 determines whether the command type is Read or Write from the data access request (1335).
  • the IO control program 0315 determines whether high-speed IO control is possible based on the access type, cache hit / cache miss, drive area allocation, and command type determination result (1340). ). If it is determined that high-speed IO control is possible, the IO control program 0315 determines whether the determined command type is a write command (1345), and if it is a write command, executes high-speed write control processing ( 1355), if it is a Read command, high-speed Read control processing is executed (1350). If it is determined that high-speed IO control is not possible, the IO control program 0315 determines whether the determined command type is a write command (1360), and if it is a write command, executes normal write control processing.
  • CM node candidates can be selected for accesses with a large data transfer length. The effect is small.
  • CM node and BE node with a small number of transfer stages can be selected from CM node and BE node candidates, so the high-speed IO control of the present application is applied to all accesses regardless of the data transfer length. It is possible. As a result, even when a large number of accesses with a small data transfer length occur, data transfer between storage devices can be reduced, and the influence on the network bandwidth can be reduced.
  • the setting information 0255 includes information used for IO control processing such as the above-described data transfer length threshold.
  • the IO control program 0315 performs IO control processing based on the setting information 0255.
  • FIG. 14 shows the high-speed write control process.
  • the high-speed write control program 0320 uses the result of the cache hit / cache miss determination in the above-described processing 1325 (1405). Each of the cache hit and cache miss indicates that a CM node has been determined and a CM node has not been determined. If it is a cache hit, the high-speed write control program 0320 executes the first high-speed write control process (1415). If it is not a cache hit, the high-speed write control program 0320 uses the determination result of the presence / absence of drive area allocation in the process 1330 (1410). The presence or absence indicates that the BE node has been determined and that the BE node has not been determined.
  • the high-speed write control program 0320 executes the second high-speed write control process (1420). If there is a mapping to the drive area, the storage destination BE node number has already been determined, so the third high-speed write control process is executed (1425). The above is the high-speed write control process.
  • FIG. 15 shows the distribution result through FIGS. Note that it is only necessary to be able to finally sort as disclosed in FIG. 15, and the order of determination in FIGS. 13 and 14 can be changed.
  • the IO control program 0315 determines that the data does not occupy a large network bandwidth even if the data crosses the network, and the normal write control program 0305 is compared with the comparative example.
  • the CM node and the BE node are selected without considering the network bandwidth consumption due to the multistage transfer or the increase in the number of transfer stages.
  • the normal write control program 0305 selects a CM node and a BE node by, for example, round robin. As a result, the CM node and the BE node can be selected uniformly without being biased toward a specific node.
  • the IO control program 0315 determines that the IO control program 0315 is the normal IO control when the CM node and the BE node are determined, and both and / or one of the CM node and the BE node is determined. Is determined, it is determined that high-speed IO control is possible.
  • the command type 0920 is a Read command
  • the drive area information 0915 is not present, and there is a cache hit, data in the cache is in a state before the data is written to the drive area of the reservation destination BE node, and normally Read
  • the control program 0310 performs normal cache hit control.
  • the command type 0920 is a Read command
  • the drive area information 0915 is not present
  • the cache area information 0910 is a miss, special data in which data has never been written to the virtual storage area specified in the Read command.
  • the normal read control program 0310 performs normal control of the dynamic capacity allocation function, and transmits a predetermined response to the host computer 0100, for example.
  • the host node can perform appropriate IO control for a data access request by selecting IO control according to the IO control determination condition 0900.
  • the data access history indicating the past data access may be used, and the IO control type may be determined using the data transfer length indicated in the data access history. For example, the IO control process records the data transfer length of Read and Write accesses within the past 10 minutes for each host computer 0100, and the data transfer length is longer than the data transfer length threshold in the recorded access. If the number of accesses is large, the access type of the host computer 0100 is determined to be a large data transfer amount, and if the number of accesses whose data transfer length is equal to or less than the data transfer length threshold is large, the access type is determined to be a small data transfer amount.
  • the IO control process may determine the access type of each port and each virtual volume using the data access history of each port and each virtual volume. As described above, by using the data access history, it is possible to improve the accuracy of determination of the access type.
  • the port is a communication port of the storage system for performing data transfer with the host computer.
  • a determination method indicating whether to determine the access type based on the data transfer length of each access or whether to determine the access type based on the data access history is for each host, each port, and each virtual volume. It may be determined.
  • FIG. 16 shows the first high-speed write control process.
  • the first high-speed write control process is called under the IO control determination condition 0900 under the write command, the access type 0905 is a large data transfer amount, the cache area information 0910 is a cache hit, and the drive area information 0915 is It is a time of nothing. That is, the CM node and the BE node are already determined, and the BE node is reserved for writing, but no drive area is allocated because data is not written to the BE node. Since the CM node and the BE node have already been determined, the first high-speed write control process writes the data stored in the cache area of the CM node to the drive area of the reservation destination BE node. That is, the first high-speed write control process is executed when a write command for updating data before being written to the CM node and written (destaged) to the reservation destination BE node is received.
  • the high-speed write control program 0320 instructs the host computer 0100 to transfer write data (1505).
  • the high-speed write control program 0320 confirms the transfer to the buffer 0125 (1510), and determines whether the transfer of the write data from the host computer 0100 to the buffer 0125 is completed (1515). If the transfer is completed, the high-speed write control program 0320 advances the flow to the process 1520. If the transfer has not been completed, the high-speed write control program 0320 confirms again in the process 1510.
  • the high-speed write control program 0320 acquires the storage destination CM node number and the reservation destination BE node number corresponding to the virtual storage area specified in the write command from the virtual volume allocation management table 0230 (1520).
  • the high-speed write control program 0320 instructs the local router 0120 to transfer data to the cache area of the node having the storage destination CM node number (1525).
  • the high-speed write control program 0320 confirms the transfer to the cache area (1530), and determines whether the transfer to the cache area is completed (1535). If the transfer has been completed, the high-speed write control program 0320 advances the flow to the process 1540. If the transfer has not been completed, the high-speed write control program 0320 confirms again in the process 1530.
  • the high-speed write control program 0320 writes data to the drive of the reservation destination BE node (1540). Thereafter, the high-speed write control program 0320 confirms writing to the drive (1545), and determines whether writing to the drive is completed (1550). If the writing is completed, the high-speed write control program 0320 advances the flow to process 1555. If the writing has not been completed, the high-speed write control program 0320 confirms writing to the drive again in processing 1545.
  • the high-speed write control program 0320 performs the first record update process for updating the record of the virtual volume allocation management table 0230 according to the state where the writing is completed (1555). Details of the first record update process will be described later.
  • Control after the processing 1540 is an operation to destage the data on the cache memory 0250 to the drive of the BE node, and an existing cache management method can be used to determine the timing for executing the destage.
  • the response from the host node to the host computer 0100 may be after writing to the CM node or after writing to the BE node. The above is the first high-speed write control process.
  • the host node writes the write data to the allocated CM node in response to the Write command for updating the virtual storage area to which the CM node has been allocated and the BE node has been reserved, and to the reserved BE node.
  • the write data can be transferred through an optimum path.
  • FIG. 17 shows the second high-speed write control process.
  • the second high-speed write control process is called under the IO control determination condition 0900 in the write command, the access type 0905 is a large data transfer amount, the cache area information 0910 is a miss, and the drive area information 0915 is not present. Is the time. That is, no CM node has been determined and no write reservation has been made to the BE node, that is, a write command has been issued to the drive area for the first time. Therefore, the second high-speed write control process determines the CM node and the BE node, stores the write data from the host computer 0100 in the cache area of the CM node, and writes the data to the drive area of the reservation-destination BE node. I do. That is, when a write command for writing data to a new virtual storage area is received, the second high-speed write control process is executed.
  • the high-speed write control program 0320 confirms the cache load L in the node #h (1605).
  • the high-speed write control program 0320 confirms the free capacity C in the node #h (1610).
  • the free capacity C in the node #h is the free capacity 0825 shown in the BE node configuration management table 0240 in the node #h.
  • a drive area that is not allocated or reserved to a virtual volume in the storage area of the RAID group in the node #h identified by the RAID group number 0810 Can be allocated to the virtual storage area specified by the Write command.
  • the high-speed write control program 0320 determines whether or not the cache load L is smaller than the cache load threshold and the free capacity C is larger than the free capacity threshold (1615). If it is determined YES, the high-speed write control program 0320 can allocate the cache area and the drive area to the node #h, and therefore selects #h as the CM node and #h as the BE node (1620). With this process, if the load on the CM of the host node is not high and the storage capacity is free, the host node itself that is the node having the smallest number of transfer stages from the host node is preferentially selected. In this case, since the data transfer is closed in the node #h, the data transfer across the nodes does not occur.
  • the high-speed write control program 0320 When it is determined NO in the process 1615, the high-speed write control program 0320 performs a cache load information update process for updating the load 1215 in the write evaluation value table 1200 with the latest value (1625), and in the write evaluation value table 1200.
  • the free space information update process for updating the free space information 1220 with the latest value is performed (1627). Details of the cache load information update process and the free space information update process will be described later.
  • the high-speed write control program 0320 has the smallest evaluation value, for example, the evaluation value is the most, among the combinations of the CM node having a low load and the BE node having the free capacity of the BE node.
  • a first selection process for selecting a small set is performed (1630). That is, the high-speed write control program 0320 selects a set of nodes with a small number of times that data transfer crosses between nodes. Details of the first selection process will be described later.
  • the high-speed write control program 0320 determines whether or not an error has occurred in the processing 1630 (1635). If there is an error, it means that the optimal CM node / BE node pair was not found. If there is an error, the high-speed write control program 0320 selects a predetermined default CM node and BE node (1645).
  • the default CM node and BE node are set to the node #h (host node) that has received the command so that the data transfer is closed within the node, for example.
  • the default CM node and the default BE node may be different. For example, it is possible to set a node having the highest cache performance by installing a large number of cache memories 0250 as a default CM node. Further, for example, the node having the largest capacity pool area, that is, the node having the largest value in the entire area 0830 of the BE node configuration management table 0240 can be set as the default BE node.
  • the high-speed write control program 0320 performs a record addition process for adding a new virtual storage area record specified in the command in the virtual volume allocation management table 0230 (1640). Details of the record addition processing will be described later.
  • the high-speed write control program 0320 secures a cache area in the cache memory 0250 of the selected CM node (1650), and performs a write reservation process for reserving a disk area for writing data to the selected BE node ( 1655). Details of the write reservation process will be described later.
  • the high-speed write control program 0320 instructs the host computer 0100 to transfer write data (1660).
  • the high-speed write control program 0320 stores the write data transferred from the host computer 0100 in the cache area of the CM node.
  • the subsequent flow is the same as the flow after A in the first high-speed write control process described above.
  • the above is the second high-speed write control process.
  • a CM node having a low load and a BE node having a free capacity are allocated to the new virtual storage area in consideration of the number of transfer stages. Accordingly, the number of transfer stages for write data from the host node to the BE node via the CM node can be reduced. Further, after the host node secures the cache area of the CM node and reserves the drive area of the BE node, the host node can instruct the host computer 0100 to transfer the write data. While deciding, the response to the host computer 0100 can be speeded up. In addition, when the cache load and free capacity of the own node satisfy predetermined conditions, the host node preferentially selects the own node as the CM node and the BE node, thereby preventing data transfer via the network 0101. it can.
  • FIG. 18 shows the third high-speed write control process.
  • the third high-speed write control process is called under the IO control determination condition 0900 when the write command is used, the access type 0905 is large in data transfer amount, the cache area information 0910 is missed, and the drive area information 0915 is present. It's time. In other words, the CM node has not been determined, but the BE node has been determined, and the drive area allocation and writing have been completed. The CM node is not determined because the data on the cache area is released after the data is written to the BE node. Therefore, in the third high-speed write control process, the CM node is determined, the write data of the host is stored in the cache of the determined CM node, and the data is written to the drive area of the BE node. That is, the third high-speed write control process is executed when a write command for updating the data is received after the data written to the CM node and written to the BE node (destage) is deleted from the CM node. Executed.
  • the high-speed write control program 0320 confirms the cache load L of the node #h that has received the command (1705).
  • the high-speed write control program 0320 acquires the storage destination BE node number of the record in the virtual storage area specified in the write command in the virtual volume allocation management table 0230 (1710).
  • the high-speed write control program 0320 selects the storage destination BE node number acquired as the BE node (1715).
  • the high-speed write control program 0320 determines whether or not the cache load L is smaller than the cache load threshold (1720).
  • the high-speed write control program 0320 selects #h as the CM node (1725). That is, the high-speed write control program 0320 selects the cache memory 0250 of the host node as the cache memory 0250 of the storage destination CM node.
  • the cache load L is larger than the cache load threshold value in the process 1720, a cache load information update process for updating the cache load information 1215 of the write evaluation value table 1200 with the latest value is performed (1730).
  • the high-speed write control program 0320 performs a second selection process for selecting an optimal CM node based on the write evaluation value table 1200 (1735), and determines whether an error has occurred in the process 1735 (1740). Details of the second selection process will be described later. In the case of an error, it means that the optimal CM node was not found. If an error has occurred, the high-speed write control program 0320 selects a predetermined default CM node (1745). The default CM node is set to the node #h (host node) that has received the command so that the data transfer is closed within the node, for example. In addition, for example, it is possible to set a node having the highest cache performance by installing a large number of cache memories 0250 as a default CM node.
  • the high-speed write control program 0320 performs a second record update process for updating the record of the virtual storage area specified in the command in the virtual volume allocation management table 0230 (1750). Details of the second record update process will be described later.
  • the high-speed write control program 0320 secures a cache area in the CM node (1755), and instructs the host computer 0100 to transfer write data (1760).
  • the high-speed write control program 0320 stores the write data transferred from the host computer 0100 in the cache area of the CM node.
  • the subsequent flow is the same as the flow after A in the first high-speed write control process described above.
  • the above is the third high-speed write control process.
  • the host node allocates an optimal CM node to the virtual storage area in response to the Write command for updating the virtual storage area to which the assignment of the CM node has been released and the BE node has been assigned.
  • the write data can be transferred through an optimum path.
  • FIG. 19 shows the first selection process 1630.
  • the high-speed write control program 0320 extracts nodes determined to have a low cache load from the write evaluation value table 1200, and creates a CM node list indicating the extracted nodes (1805). Hereinafter, this CM node list is referred to as CM_list.
  • the high-speed write control program 0320 determines whether or not CM_list is empty (1810). When the CM_list is empty, the high speed write control program 0320 returns an error to the second high speed write control process (1835), and then ends this flow.
  • the high-speed write control program 0320 extracts a node determined to have free capacity from the write evaluation value table 1200, and creates a BE node list indicating the extracted node (1815). This BE node list will be referred to as BE_list. Next, the high-speed write control program 0320 determines whether BE_list is empty (1820). When BE_list is empty, the high-speed write control program 0320 returns an error to the second high-speed write control process (1835), and then ends this flow.
  • the high-speed write control program 0320 When the BE_list is not empty, the high-speed write control program 0320 considers the corresponding element 1225 in the write evaluation value table 1200 from the combination of the CM node included in the CM_list and the BE node included in the BE_list. Is extracted (1825). For example, a combination with a short data transfer path is selected by selecting a combination that minimizes the element 1225.
  • the high-speed write control program 0320 determines whether there are a plurality of candidates (1830). If there are a plurality of candidates, the high-speed write control program 0320 randomly selects one set from the plurality of candidates ( 1840), this flow is finished. If there is only one candidate, the high-speed write control program 0320 selects that candidate (1845) and ends this flow.
  • the first selection process 1630 has been described above.
  • FIG. 20 shows the second selection process 1735.
  • the details of the second selection processing 1735 will be described. Compared to the first selection process 1630, in the second selection process 1735, the BE node has already been determined, and only the CM node is selected.
  • the high-speed write control program 0320 performs processing (1905) similar to 1805 of the first selection processing 1630 and processing (1910) similar to 1810.
  • the high-speed write control program 0320 performs the same processing (1925) as 1825, and ends this flow.
  • the high-speed write control program 0320 extracts CM nodes from the CM nodes included in the CM_list in consideration of the corresponding elements 1225 in the write evaluation value table 1200 for the determined BE nodes. (1915). This extraction method is the same as 1825.
  • the high-speed write control program 0320 performs processing similar to 1830 (1920), processing similar to 1840 (1930), processing similar to 1945 (1935), and ends this flow.
  • the above is the second selection processing 1735.
  • FIG. 21 shows the write reservation process 1655.
  • the high-speed write control program 0320 calls the record of the specified capacity pool number in the BE node configuration management table 0240 of the specified BE node (2005). Thereafter, the high-speed write control program 0320 updates the record by subtracting the reserved size from the size of the free area of the record (2010). Thereafter, the high-speed write control program 0320 adds the reserved size to the reserved area of the record, and updates the record (2015). Thereafter, the high-speed write control program 0320 calculates the sum of the size of the free area of the capacity pool number in the BE node configuration management table 0240 of each node (2020), and the free space of the capacity pool number in the capacity pool configuration management table 0235. The size of the area is updated with the calculated value (2025), and this flow is finished. The above is the write reservation process.
  • the host node may change the BE node reservation.
  • This reservation change has an advantage that an appropriate BE node can be selected again when the access type determination method is changed and the IO control type determination result is updated.
  • the high-speed write control program 0320 restores the information at the time of reserving the disk area to the BE node by the write reservation process, reselects an appropriate BE node again, and then writes the disk to the BE node by the write reservation process.
  • Reserve an area The timing of the reservation change is a period until data is actually written in the reserved drive area in the reservation destination BE node by the destage of the cache, that is, before the storage destination BE node is determined.
  • reservation change conditions may be determined in advance. For example, if the number of Reads and Writes performed by the host computer 0100 after the reservation is equal to or less than a predetermined number, it may be determined that there is enough time before destage and the reservation can be changed. If the reservation change frequency is high, there may be a problem that other processing in the storage system 0102 is delayed. Therefore, if the access type determination is frequently changed, it may be determined that the reservation change is not performed. For example, when a sufficient amount of history is not accumulated in the data access history, the access type determination is likely to be changed. Therefore, the high-speed write control program 0320 has the number of accesses equal to or less than a predetermined number of times. Cancel reservation changes.
  • FIG. 22 shows the record addition process 1640.
  • the virtual volume allocation addition program 0330 acquires the selected CM node number #a and BE node number #b (2105), and extracts a write target virtual address from the Write command (2110). Thereafter, the virtual volume allocation addition program 0330 adds a new record corresponding to the extracted virtual address in the virtual volume allocation management table 0230 (2115). Thereafter, in the added record, the virtual volume allocation addition program 0330 sets N / A as the RAID group number, N / A as the storage destination BE node number, N / A as the allocation destination address, and N / A as the update information. Input A, #a as the storage destination CM node number, and #b as the reservation destination BE node number (2120), and this flow ends.
  • the record addition processing 1640 has been described above.
  • FIG. 23 shows the first record update process 1555.
  • the virtual volume allocation update program 0335 acquires the write target RAID group number #p_col and the allocation destination address #p_addr (2205).
  • the virtual volume allocation update program 0335 extracts the write target virtual address #v_addr from the Write command (2210).
  • the virtual volume allocation update program 0335 reads the record #rec corresponding to #v_addr from the virtual volume allocation management table 0230 (2215).
  • the virtual volume allocation update program 0335 reads the reservation destination BE node number #BE_node of #rec (2220).
  • the virtual volume allocation update program 0335 sets #p_vol as the RAID group number, #BE_node as the storage destination BE node number, #p_addr as the allocation destination address, N / A as the update information, and the reservation destination N / A is input to each BE node number, the storage destination CM node number is not updated (2225), and this flow ends.
  • #p_vol the RAID group number
  • #BE_node the storage destination BE node number
  • #p_addr as the allocation destination address
  • N / A as the update information
  • the reservation destination N / A is input to each BE node number
  • the storage destination CM node number is not updated (2225), and this flow ends.
  • the above is the first record update processing 1555.
  • FIG. 24 shows the second record update processing 1750.
  • the virtual volume allocation update program 0335 acquires the selected CM node number #CM_node (2305).
  • the virtual volume allocation update program 0335 extracts the write target virtual address #v_addr from the Write command (2310).
  • the virtual volume allocation update program 0335 reads the record #rec corresponding to #v_addr from the virtual volume allocation management table 0230 (2315).
  • the virtual volume allocation update program 0335 inputs N / A as update information, #CM_node as the storage destination CM node number, and N / A as the reservation destination BE node number, and the RAID group number, The storage destination BE node number and the allocation destination address are not updated (2320), and this flow is finished.
  • the above is the second record update processing 1750.
  • FIG. 25 shows a write evaluation value table creation process.
  • the evaluation value stored in the element 1225 of the write evaluation value table 1200 in this embodiment is the total of the number of hops from the host node to the CM node and the number of hops from the CM node to the BE node.
  • the management computer 0172 manages the network 0101 and the switch 0130 of the storage node 0105.
  • the management program 0360 of the management computer 0172 can execute operations for adding, deleting, and changing the management information 0370 indicating the settings of the network 0101 and the storage node 0105 in accordance with instructions from the administrator of the storage system 0102.
  • the management information 0370 includes topology information indicating the network 0101 and the topology.
  • the management program 0360 calculates an evaluation value using the topology information.
  • the management computer 0172 may execute a write evaluation value table creation process when a network 0101 is newly constructed and when the topology of the network 0101 is changed.
  • the management computer 0172 sequentially selects each node as the host node #host_node (2405).
  • #host_node When #host_node is selected, the management computer 0172 initializes #eval_table, which is the Write evaluation value table 1200 stored in #host_node (2410).
  • #eval_table which is the Write evaluation value table 1200 stored in #host_node (2410).
  • the management computer 0172 sequentially selects each node as a CM node #CM_node (2415).
  • #CM_node the management computer 0172 sequentially selects each node as a BE node #BE_node (2420).
  • the management computer 0172 calculates the sum of the number of hops from #host_node to #CM_node and the number of hops from #CM_node to #BE_node as an evaluation value #hop_sum (2425).
  • #hop_sum is input to element 1225 corresponding to the set of (#CM_node, #BE_node) (2430).
  • the management computer 0172 repeats the loop of the process 2420 for all #BE_nodes.
  • the management computer 0172 repeats the loop of the process 2415 for all #CM_nodes.
  • the management computer 0172 repeats the loop of the process 2405 for all #host_nodes.
  • the above is the write evaluation value table creation processing.
  • Each of the cache load information update processes 1625 and 1730 determines the cache load information of the own node, notifies the other nodes of the cache load information, receives the cache load information from the other nodes, And updating the evaluation value table.
  • FIG. 26 shows the cache load information update process.
  • the evaluation value table update program 0345 acquires the Read transfer amount and the Write transfer amount of the cache memory in its own node (2505).
  • the read transfer amount and the write transfer amount may be measured values of the latest period, or may be average values of measured values of a plurality of periods.
  • the evaluation value table update program 0345 calculates the total transfer amount #trans by summing the read transfer amount and the write transfer amount of the cache memory (2010).
  • the evaluation value table update program 0345 adds up the read transfer amount and the write transfer amount of the plurality of cache memories.
  • the evaluation value table update program 0345 determines whether or not #trans is larger than the cache load threshold (2515).
  • the evaluation value table update program 0345 determines that the cache load is high if #trans is greater than the cache load threshold (2525), and otherwise determines that the cache load is low (2520).
  • the message transmission program 0205 notifies all other nodes of the cache load information, which is the determination result of the cache load (2530), and ends this flow.
  • the above is the cache load information update process.
  • the cache load information is received by the message reception program 0210, and the evaluation value table update program 0345 updates the cache load information 1215 corresponding to #CM_node in the evaluation value table of the own node with the received data.
  • the free capacity information update process 1627 determines the free capacity information of the own node, notifies the free capacity information to other nodes, receives free capacity information from other nodes, and writes the write evaluation value table of the own node. 1200 to update 1200.
  • FIG. 27 shows the free space information update process.
  • the evaluation value table update program 0345 reads the free capacity #fr_space of the capacity pool in its own node from the BE node configuration management table 0240 (2605). Next, the evaluation value table update program 0345 determines whether #fr_space is smaller than the free space threshold (2610). The evaluation value table update program 0345 determines that there is free space if #fr_space is larger than the free space threshold (2620), and otherwise determines that there is no free space (shortage) (2615). Next, the message transmission program 0205 notifies all other nodes of the free space information that is the determination result of the free space (2625), and ends this flow. The above is the free space information update process.
  • the free space information is received by the reception program 0210.
  • the evaluation value table update program 0345 updates the free capacity information 1220 corresponding to #BE_node with the received data in the evaluation value table of its own node.
  • the cache load information update process and the free space information reception process may be executed periodically, or may be executed every predetermined number of times of Read and Write. Further, all nodes can be changed, or only nodes that have changed by the update may be updated.
  • the storage node 0105 determines the cache load and free capacity of its own node and acquires the determination results of the cache load and free capacity of the other nodes. Can do.
  • the own node state information corresponds to the cache load information and the free capacity information transmitted to the other nodes by the cache load information transmission process and the free capacity information transmission process.
  • the other node status information corresponds to the cache load information and the free capacity information received from the other nodes by the cache load information receiving process and the free capacity information receiving process.
  • the local node state information may be information indicating the cache load and free capacity of the local node
  • the other node state information may be information indicating the cache load and free capacity of the other node.
  • each node determines whether or not the cache load of the other node is less than or equal to the cache load threshold based on the other node state information, and determines whether or not the free capacity of the other node is greater than or equal to the free capacity threshold. You may judge.
  • FIG. 28 shows an example of the high-speed read control process.
  • the high-speed read control process is similar to the third high-speed write control process because the BE node has already been determined, but the data transfer direction is reversed. That is, after the data after being written to the CM node and written to the BE node (destaged) is deleted from the CM node, a high-speed read process is executed when a Read command for reading the data is received.
  • the high-speed read control program 0325 performs cache load information update processing similar to the processing 1625 and 1730 (2805).
  • the high-speed read control program 0325 performs a third selection process for selecting an optimal CM node (2810), and determines whether an error has occurred in the process 1735 (2815).
  • the third selection process is the same as the second selection process described above, but uses a Read evaluation value table instead of the Write evaluation value table 1200.
  • the Read evaluation value table is different in that the free capacity 1220 of BE in the Write evaluation value table 1200 does not need to be managed.
  • the Read data transfer direction is opposite to the Write data transfer direction, but the number of transfer stages stored in the element 1225 is usually the same as the Write evaluation value table.
  • the write evaluation value table and the read evaluation value table may be used together. However, when a failure or the like occurs in any of them, the number of transfer stages may be different, and may be managed separately.
  • the Read evaluation value table is created according to the same procedure as in FIG. If an error has occurred, it means that an optimal CM node has not been found. If there is an error, the high-speed read control program 0325 selects a default CM node in the same manner as the process 1745 of the third high-speed write control process (2820).
  • the high-speed read control program 0325 performs the third record update process for updating the record in the virtual storage area specified in the command in the virtual volume allocation management table 0230 (2825).
  • the third record update process is similar to the second record update process. The only difference is S2310. In the second record update process, the write target virtual address #v_addr is extracted from the Write command in S2310. In the third record update process, the write target virtual address #v_addr is extracted from the Read command.
  • the high-speed read control program 0325 secures a cache area in the selected CM node (2830).
  • the high-speed read control program 0325 transfers the data from the drive area of the storage destination BE node indicated in the record to the cache area of the storage destination CM node (2835).
  • the high-speed read control program 0325 confirms the transfer to the cache area (2850), and determines whether the transfer to the cache area is completed (2855). If the transfer has been completed, the high-speed read control program 0325 advances the flow to process 2860. If the transfer has not been completed, the high-speed read control program 0325 confirms again in processing 2855.
  • the high-speed read control program 0325 transfers data from the cache area of the save destination CM node to the buffer 0125 of the own node (2860).
  • the high-speed read control program 0325 confirms the transfer to the buffer 0125 (2865), and determines whether the transfer to the buffer 0125 is completed (2870). If the transfer has been completed, the high-speed read control program 0325 advances the flow to process 2880. If the transfer has not been completed, the high-speed read control program 0325 confirms again at step 2865. Next, the high-speed read control program 0325 transmits data from the buffer 0125 to the host computer 0100 (2880), and this flow ends. The above is the high-speed read control process.
  • the host node allocates an optimal CM node to the virtual storage area in response to a Read command for reading the virtual storage area to which the assignment of the CM node has been released and the BE node has been assigned, and the assigned BE is assigned.
  • the data to be read can be transferred through an optimum route.
  • CM nodes and BM nodes can be set via the management computer 0172 for specific cases. The setting process by will be described.
  • FIG. 29 shows an example of the setting screen.
  • the setting screen includes an edit box 3405 in which the host computer name indicating the target host computer 0100 of the IO control determination condition is input, an edit box 3410 in which the port number of the target port is input, and the volume identifier of the target virtual volume. And an edit box 3415 for inputting.
  • the setting screen further includes a drop-down list 3420 into which the application type of the target application in the target host computer 0100 is input.
  • the setting screen further includes a drop-down list 3425 to which an IO control type is input.
  • the IO control type is high-speed IO control or normal IO control.
  • the setting screen further includes an edit box 3430 in which a host node number is input, an edit box 3435 in which a CM node number is input, and an edit box 3440 in which a BE node is input.
  • the IO control program 0315 determines that the host node, CM node, and BE node are The data transfer path is controlled to match the values in edit boxes 3405, 3410, and 3415, respectively.
  • the storage system administrator can set which CM node and BE node should be assigned to a command having a specific host name, port number, and volume identifier.
  • an access pattern may be preset in the application, and the IO control type 3425 may be presented from the data transfer amount using the setting screen.
  • the administrator can set the CM node and the BE node with reference to the presented IO control type.
  • the setting information 0255 thus set includes an IO control determination condition, and the IO control program 0315, the high-speed write control program 0320, and the high-speed read control program 0325 determine the IO control based on the setting information 0255.
  • the setting program 0361 of the management computer 0172 displays a setting screen on the display device 192, creates setting information 0371 based on an input from the input device 193, transmits the setting information 0371 to the plurality of storage nodes 0105, and sets the setting information 0255. As a setting process.
  • this screen can be used to display a set of CM nodes and BE nodes set in the present embodiment.
  • the setting screen further includes a data transfer path 3445, and the set data transfer path 3445 can be clearly indicated.
  • a local cache is applied to a storage system having a dynamic capacity allocation function and a BE node is determined after determining a CM node, the BE node is not determined at the time of data writing, so the local cache is allocated. I can't.
  • a local cache is applied to a storage system having a dynamic capacity allocation function and a CM node is determined after determining a BE node
  • the local cache is allocated after the BE node is determined by the dynamic capacity allocation function. Will do. That is, the cache is allocated to the BE node regardless of the cache state. At this time, data access is concentrated in the cache and a large amount of data is transferred, which may increase the load on the cache. In this case, since the performance of data transfer from the host node to the CM node and the data transfer from the CM node to the BE node are degraded, the performance of the storage system may be degraded.
  • a CM node and a BE node having a small number of times of passing through the network 0101 out of a CM node candidate that satisfies the cache load condition and a BE node candidate that satisfies the free capacity condition.
  • the write evaluation value table may be used as the read evaluation value table.
  • the table may be omitted.
  • the first selection process, the second selection process, and the third selection process described above are connection information indicating connections between a plurality of storage nodes 0105 via the network 0101, such as the topology information described above, instead of the evaluation values in the evaluation value table. May be used to select a CM node and a BE node that minimize the number of times data transfer passes through the network 0101. In this case, the management computer 0172 may transmit the topology information to a plurality of storage nodes 0105.
  • FIG. 30 schematically shows sharing of a virtual volume.
  • the host computers 3205 and 3210 share a virtual volume 3215 provided by the storage system 0102. That is, the host computers 3205 and 3210 may access data to the same virtual volume 3215.
  • Each of the host computers 3205 and 3210 corresponds to the host computer 0100 of the first embodiment. There may be three or more host computers. There may be two or more virtual volumes.
  • the storage node 0105 in the storage system 0102 receives a Write command to the virtual storage area in the virtual volume 3215 from any of the host computers 3205 and 3210, and no drive area is assigned to the virtual storage area.
  • the storage node 0105 that has received the Write command selects a drive area from the HDDs 0155 belonging to the RAID group assigned to the capacity pool 3220 and assigns it to the virtual storage area.
  • the host node high-speed write control program 0320 selects one host computer having the highest access frequency to the virtual volume, determines it as the representative host computer for the virtual volume, and transfers the data from the representative host computer.
  • CM nodes and BE nodes that optimize the above are determined.
  • the conditions and method for determining the CM node and the BE node are the same as in the first embodiment.
  • the high-speed write control program 0320 can determine the representative host computer for each page of the virtual volume, in addition to determining the representative host computer in units of virtual volumes.
  • the host computer having the largest access amount is identified as the representative host computer among the plurality of host computers accessing the virtual volume, and the optimum CM node is determined based on the data access request from the representative host computer.
  • 0100 Host computer, 0101: Network, 0102: Storage system, 0105: Storage node, 0115: Data communication unit, 0120: Local router, 0125: Buffer, 0130: Switch, 0140: Memory, 0150: Controller, 0160: Storage medium Unit 0170: Management network 0172: Management computer 0250: Cache memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

ストレージ装置間のデータ転送を削減し、ストレージシステムのデータアクセス性能を向上させる。 第1ストレージ装置のプロセッサがホストコンピュータから仮想ボリュームへのデータアクセス要求として書き込み要求を受信し、且つデータアクセス要求に指定された仮想ボリューム内の仮想記憶領域に対して複数のストレージ装置の何れかのキャッシュメモリが割り当てられていない場合、第1ストレージ装置のプロセッサは、複数のストレージ装置の中で所定の状態条件を満たす候補の中から、第2ストレージ装置及び第3ストレージ装置を、通信路による複数のストレージ装置の間の接続を示す接続情報に基づいて選択する。

Description

ストレージシステムおよびストレージシステム制御方法
 本発明は、複数のストレージ装置を用いる技術に関する。
 複数のストレージノードを集めたクラスタ構成のストレージシステムは、各ストレージノードを並列に稼働させることにより、並列アクセスによる高いデータアクセス性能を実現すると共に、データの冗長化による高可用を実現できる。以下の説明及び図面において、ストレージノードをノードと呼ぶことがある。
 近年、ノード数の増加と伴にノード間のデータ転送量が増大し、ノード間を接続するネットワークの帯域不足によりストレージシステムの性能が低下する。この問題を解決するための方法として、以下の方法が知られている。
 第1の方法は、ローカルキャッシュを用いる(例えば特許文献1)。この方法は、複数のストレージ装置(ノード)をネットワークで接続するクラスタ構成で、ホストからデータ書き込み要求を受けた時に、ローカルキャッシュにデータを一時的に保存する。ローカルキャッシュとは、書き込み先ボリュームを有するノード内のキャッシュのことである。ローカルキャッシュにデータを一時的に保存することで、キャッシュから書き込み先ボリュームへのネットワークを経由したデータ転送の回数を削減し、ノード間のデータ転送量を抑える。
 第2の方法は、動的容量割り当て機能を用いる(例えば特許文献2、3)。動的容量割り当て機能は、ストレージノードが持つ記憶領域をまとめた容量プールと、仮想ボリュームとにより実現される。仮想ボリュームとは、物理的な記憶容量を持たないボリュームのことである。動的容量割り当て機能では、データ書き込み要求を受けたノードが、仮想ボリュームに対するデータ書き込み発生を契機として、仮想ボリュームにおける書き込みデータの格納対象箇所に、容量プールの容量空間の一部を記憶領域として割り当てる。この時、データ書き込み要求を受けたノード内に記憶領域を割り当て、割り当てた記憶領域にデータを保存することで、ネットワークを経由したデータ転送の回数を削減し、ノード間のデータ転送量を抑える。
米国特許出願公開第2002/0083270号明細書 特開2008-186172号公報 特開2005-11316号公報
 管理の柔軟性を高める仮想ボリュームの利用が普及しているが、仮想ボリュームを有するストレージシステムに第1の方法を適用すると、第1の方法の利点であるノード間のデータ転送量を抑えることが困難となる。すなわち、仮想ボリュームを有するストレージシステムにおいて、第1の方法は書き込み先の仮想ボリュームを有するノード内にキャッシュを割り当てるため、データの最終的な保存先となるデータ記憶媒体を持つノード(BEノード:back-end node)とは別のノードにキャッシュを割り当てる場合がある。そのため、ローカルキャッシュを割り当てたとしても、記憶領域がローカルにない場合があり、キャッシュを保存するノード(CMノード:cache memory node)とBEノードの間のデータ転送が発生し、データ転送によりネットワーク帯域が不足することで、ストレージシステムの性能が低下する場合がある。
 また、第2の方法により、仮想ボリュームの書き込みデータの格納対象箇所に、ホストコンピュータからデータを受け取るノード(ホストノード)内のデータ記憶媒体の記憶領域を割り当てることで、ホストノードとデータ記憶媒体を持つノード(BEノード)を同一のノードにすることができる。しかし、キャッシュを保存するノード(CMノード)がホストノードと異なる場合がある。これにより、ホストノードとCMノードの間のデータ転送、CMノードとBEノードの間のデータ転送が発生し、データ転送によりネットワーク帯域が不足することで、ストレージシステムの性能が低下する場合がある。
 上記課題を解決するために、本発明の一態様であるストレージシステムは、少なくとも3以上の複数のストレージ装置を備える。前記複数のストレージ装置の夫々は、通信路を介して少なくとも何れか1つの他のストレージ装置に接続されているプロセッサと、前記プロセッサに接続されているキャッシュメモリと、前記プロセッサに接続されている記憶デバイスとを含む。前記複数のストレージ装置の中の第1ストレージ装置のプロセッサは、ホストコンピュータに接続され、前記ホストコンピュータに対して仮想ボリュームを提供する。前記第1ストレージ装置のプロセッサが前記ホストコンピュータから前記仮想ボリュームへのデータアクセス要求として書き込み要求を受信し、且つ前記データアクセス要求に指定された前記仮想ボリューム内の仮想記憶領域に対して前記複数のストレージ装置の何れかのキャッシュメモリが割り当てられていない場合、前記第1ストレージ装置のプロセッサは、前記データアクセス要求に指定された書き込みデータを前記複数のストレージ装置の中の第2ストレージ装置のキャッシュメモリへ書き込み前記第2ストレージ装置のキャッシュメモリへ書き込まれた前記書き込みデータを前記複数のストレージ装置の中の第3ストレージ装置の記憶デバイスへ書き込むために、前記複数のストレージ装置の中で所定の状態条件を満たす候補の中から、前記第2ストレージ装置及び前記第3ストレージ装置を、前記通信路による前記複数のストレージ装置の間の接続を示す接続情報に基づいて選択する。
 本発明の一態様によれば、ストレージ装置間のデータ転送を削減し、ストレージシステムのデータアクセス性能を向上させることができる。
図1は、本発明の実施例の計算機システムの構成を示す。 図2は、管理コンピュータ0172の構成を示す。 図3は、ストレージノード0105のメモリ0140に格納される情報を示す。 図4は、コマンド処理プログラム0215の構成を示す。 図5は、RAIDグループ管理テーブル0220の構成を示す。 図6は、ボリューム管理テーブル0225の構成を示す。 図7は、仮想ボリューム割り当て管理テーブル0230の構成を示す。 図8は、容量プール構成管理テーブル0235の構成を示す。 図9は、BEノード構成管理テーブル0240の構成を示す。 図10は、非Any-to-any接続の第1のネットワークにおける比較例のデータ転送を示す。 図11は、非Any-to-any接続の第2のネットワークにおける比較例のデータ転送を示す。 図12は、Write評価値表1200の構成を示す。 図13は、IO制御処理の動作を示す。 図14は、高速Write制御処理を示す。 図15は、IO制御判定条件を示す。 図16は、第1高速Write制御処理を示す。 図17は、第2高速Write制御処理を示す。 図18は、第3高速Write制御処理を示す。 図19は、第1選択処理1630を示す。 図20は、第2選択処理1735を示す。 図21は、書き込み予約処理1655を示す。 図22は、レコード追加処理1640を示す。 図23は、第1レコード更新処理1555を示す。 図24は、第2レコード更新処理1750を示す。 図25は、Write評価値表作成処理を示す。 図26は、キャッシュ負荷情報更新処理を示す。 図27は、空き容量情報更新処理を示す。 図28は、高速Read制御処理を示す。 図29は、設定画面を示す。 図30は、仮想ボリュームの共有を模式的に示す。
 以下、本発明の実施形態について図面を参照しつつ説明する。
 なお、以後の説明では「aaaテーブル」、「aaaリスト」、「aaaDB」、「aaaキュー」等の表現にて本発明の情報を説明するが、これら情報はテーブル、リスト、DB、キュー、等のデータ構造以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「aaaテーブル」、「aaaリスト」、「aaaDB」、「aaaキュー」等について「aaa情報」と呼ぶことがある。
 さらに、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ID」、「番号」等の表現を用いるが、これらについてはお互いに置換が可能である。
 以後の説明では「プログラム」を主語として説明を行う場合があるが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート(通信制御デバイス)を用いながら行うため、ストレージ装置のプロセッサを主語とした説明としてもよい。また、プログラムを主語として開示された処理は管理コンピュータ等の計算機が行う処理としてもよい。また、プログラムの一部または全ては専用ハードウェアによって実現されてもよい。
 また、各種プログラムはプログラム配布サーバや、計算機が読み取り可能な記憶メディアによって各計算機にインストールされてもよい。
 なお、管理計算機(管理コンピュータ)は入出力デバイスを有する。入出力デバイスの例としてはディスプレイとキーボードとポインタデバイスが考えられるが、これ以外のデバイスであってもよい。また、入出力デバイスの代替としてシリアルインタフェースやイーサーネットインタフェースを入出力デバイスとし、当該インタフェースにディスプレイ又はキーボード又はポインタデバイスを有する表示用計算機を接続し、表示用情報を表示用計算機に送信したり、入力用情報を表示用計算機から受信することで、表示用計算機で表示を行ったり、入力を受け付けることで入出力デバイスでの入力及び表示を代替してもよい。
 以後、ストレージシステムを管理し、本願発明の表示用情報を表示する一つ以上の計算機の集合を管理システムと呼ぶことがある。管理計算機が表示用情報を表示する場合は管理計算機が管理システムである、また、管理計算機と表示用計算機の組み合わせも管理システムである。また、管理処理の高速化や高信頼化のために複数の計算機で管理計算機と同等の処理を実現してもよく、この場合は当該複数の計算機(表示を表示用計算機が行う場合は表示用計算機も含め)が管理システムである。
 本実施例では、複数のホストコンピュータが仮想ボリュームを共有していない場合について説明する。
 以下、本発明の実施例の計算機システムの構成について説明する。
 図1は、本発明の実施例の計算機システムの構成を示す。
 この計算機システムは、複数のホストコンピュータ0100と、ストレージシステム0102とを有する。ストレージシステム0102は、複数のストレージノード0105と、管理コンピュータ0172とを有する。複数のストレージノード0105は、複数のホストコンピュータ0100に夫々接続されている。なお、一つのストレージノード0105に複数のホストコンピュータ0100が接続されていても良い。ストレージノード0105は、ストレージ装置であり、ネットワーク0101(通信路)を介して別のストレージノード0105に接続されている。ホストコンピュータ0100は、接続されているストレージノード0105へデータを書き込むためのWriteコマンド(書き込み要求)や、そのストレージノード0105からデータを読み出すためのReadコマンド(読み出し要求)を、そのストレージノード0105へ送信する。なお、この図は、ストレージノード0105の数が4つの例を示しているが、ストレージノードの数は、2、3または5つ以上であっても構わない。なお、ストレージシステム0102は、複数の管理コンピュータ0172を有していても良い。
 ストレージノード0105は、データを記憶するためのデータ記憶媒体を有する記憶媒体ユニット0160と、ストレージノード0105の全体を制御するコントローラ0150とを有する。なお、ストレージノード0105は、複数の記憶媒体ユニット0160を有していても良い。
 記憶媒体ユニット0160は、データ記憶媒体の一例として、複数のHDD(Hard Disk Drive)0155を有する。HDD0155に代えて、フラッシュメモリ等、他の記憶デバイスが用いられてもよい。
 コントローラ0150は、CPU(Central Processing Unit)0135、メモリ0140、データ通信ユニット0115、FE I/F(Front-end Interface)0110、BE I/F(Back-end Interface)0145、NIC(Network Interface Card)0171を有する。なお、コントローラ0150の各部は、複数であっても良い。
 CPU0135は、メモリ0140内のプログラム及びデータに従ってストレージノード0105の各部を制御する。
 データ通信ユニット0115は、ローカルルータ0120、バッファ0125、スイッチ0130を有する。ローカルルータ0120は、FE I/F0110とバッファ0125の間のデータ転送や、バッファ0125とCPU0135の間のデータ転送や、バッファ0125と他のストレージノード0105のCPU0135の間のデータ転送を制御する。スイッチ0130は、ネットワーク0101に接続されており、他のストレージノード0105との間の通信を制御する。ネットワーク0101は例えば、PCIe(Peripheral Component Interconnect Express)等である。
 FE I/F0110は、ストレージネットワークと接続するためのインタフェースであり、例えば、FC(fibre channel) I/Fである。本実施例において、FE I/F0110は、一つのホストコンピュータ0100に直接接続されているが、直接又はストレージネットワークを介して、複数のホストコンピュータ0100に接続されていても構わない。
 BE I/F0145は、HDD0155と接続するためのインタフェースであり、例えば、SCSI(Small Computer System Interface) I/Fである。
 メモリ0140は、CPU0135が処理を行う為のプログラムや、制御テーブルを格納する。更にメモリ0140は、HDD0155より読み出したデータや書き込むべきデータを格納するキャッシュメモリ0250を有する。
 NIC0171は、管理用ネットワーク0170を介して管理コンピュータ0172に接続されている。管理用ネットワーク0170は例えば、LAN(local area network)である。
 ストレージノード0105は、記憶媒体ユニット0160内の複数のHDD0155を集約し、論理的に1台のストレージボリュームとして管理する。本実施例のストレージノード0105は、RAID(Redundant Array of Inexpensive Disks)構成を用いて、並列アクセスによる高速なデータ転送とデータの冗長化による高可用性を実現する。RAID構成に用いられているHDD0155のグループをRAIDグループと呼ぶ。RAID構成に限らず、JBOD(Just a Bunch of Disks)構成や単一のHDD構成が用いられても構わない。
 全てのストレージノード0105は、少なくとも1つのRAIDグループの記憶領域をまとめた容量プール(プールボリューム)を共有して持つ。容量プールは1つ、もしくは複数であってもかまわないが、ここでは1つの場合について説明する。ストレージノード0105は仮想ボリュームを1つ、もしくは複数個持つ。ここで、仮想ボリュームとは、物理的な記憶容量を持たないが、あたかも物理的な記憶領域を持つ論理ボリュームのように仮想化したボリュームのことである。仮想ボリュームには、ストレージノード0105内の論理ボリュームの記憶領域をまとめたプールボリュームの記憶領域を割り当てることができる。
 ストレージノード0105は、仮想ボリュームを所定サイズの仮想記憶領域毎に管理する。ストレージノード0105は、ホストコンピュータ0100から仮想ボリューム内の仮想記憶領域を書き込み対象とするWriteコマンドを受けた時、その仮想記憶領域にRAIDグループの記憶領域が割り当てられていない場合、ストレージノード0105は、容量プールに属するRAIDグループの中から記憶領域を選び出し、仮想記憶領域に割り当てる。通常のボリュームはRAIDグループや単一のHDDに括り付けられているが、仮想ボリュームは容量プールに属する記憶領域に括り付けられれば特に制限されない。そこで、本実施例では仮想ボリュームの特徴を用いることで、データをキャッシュするキャッシュ領域を割り当てられたストレージノード0105だけでなく、最終的にデータを保存するディスク領域を割り当てられたストレージノード0105を適切に選ぶことでストレージノード0105間のデータ転送の回数を削減している。本実施例で説明するストレージシステムは、仮想ボリュームの代わりに、物理的な記憶容量を持たないが論理ボリュームの記憶領域を割り当てることのできる機能を有する他のボリュームの仮想化技術を用いても、本実施例で説明するものと同じ効果が得られる。
 管理コンピュータ0172は、各ストレージノード0105のコントローラ0150や記憶媒体ユニット0160について、設定や状態の確認を行い、容量プールおよび仮想ボリュームの作成、変更、削除などの操作を行い、ネットワーク0101の管理などを行う。
 図2は、管理コンピュータ0172の構成を示す。
 管理コンピュータ0172は、CPU0180、NIC0181、表示装置0192、入力装置0193、メモリ0190を有する。
 CPU0180は、メモリ0190内のプログラム及びデータに従って管理コンピュータ0172の各部を制御する。NIC0181は、管理用ネットワーク0170を介してストレージノード0105に接続されている。表示装置0192は、CPU0180からの指示に従って画面を表示する。入力装置0193は、ストレージシステム0102の管理者からの入力を受け付け、入力された情報をCPU0180へ送る。メモリ0190は、管理プログラム3060、設定プログラム0361、管理情報0370、設定情報0371を格納する。
 以下、ストレージノード0105のメモリ0140に格納されている情報について説明する。
 図3は、ストレージノード0105のメモリ0140に格納されている情報を示す。
 メモリ0140には、プログラムとして、メッセージ送信プログラム0205、メッセージ受信プログラム0210、コマンド処理プログラム0215が格納されている。また、メモリ0140には、テーブルとして、RAIDグループ管理テーブル0220、ボリューム管理テーブル0225、仮想ボリューム割り当て管理テーブル0230、容量プール構成管理テーブル0235、BEノード構成管理テーブル0240、設定情報0255が格納されている。メモリ0140内の上記したプログラム及びテーブルを格納した領域以外の領域は、キャッシュメモリ0250として使用される。
 図4は、コマンド処理プログラム0215の構成を示す。
 コマンド処理プログラム0215には、プログラムとして、通常Write制御プログラム0305、通常Read制御プログラム0310、IO制御プログラム0315、高速Write制御プログラム0320、高速Read制御プログラム0325、仮想ボリューム割り当て追加プログラム0330、仮想ボリューム割り当て更新プログラム0335、評価値表更新プログラム0345が格納されている。更に、コマンド処理プログラム0215は、評価値表0350を持つ。評価値表0350は、Write評価値表とRead評価値表を含む。CPU0135は、コマンド処理プログラム0215内の各プログラムに従って、ストレージノード0105の制御を行う。
 図5は、RAIDグループ管理テーブル0220の構成を示す。
 RAIDグループ管理テーブル0220は、RAIDグループを構成するHDD0155に関する情報を格納し、当該ストレージノード0105内に作成されたRAIDグループ毎のレコードを有する。また、RAIDグループ管理テーブル0220は、RAIDグループ番号0405、RAIDレベル0410、HDD番号リスト0415、HDDサイズ0420のメンバを含む。RAIDグループ番号0405は、当該RAIDグループの番号を示す。RAIDレベル0410は、当該RAIDグループのRAIDレベルを示す。HDD番号リスト0415は、当該RAIDグループに割り当てられているHDD0155の番号を示す。HDDサイズ0420は、当該RAIDグループのサイズを示す。RAIDグループ管理テーブル0220は、管理コンピュータ0172により作成され、ストレージノード0105に格納される。
 図6は、ボリューム管理テーブル0225の構成を示す。
 ボリューム管理テーブル0225は、ストレージユーザ(ホストコンピュータ0100)に提供する情報を格納し、ボリューム毎のレコードを有する。また、ボリューム管理テーブル0225は、ボリューム番号0505、容量プール番号0510、RAIDグループ番号0515、データ領域0520のメンバを含む。ボリューム番号0505は、当該ボリュームの番号を示す。ボリュームが仮想ボリュームである場合、容量プール番号0510は、仮想ボリュームに対応付けられている容量プールの番号を示し、RAIDグループ番号0515及びデータ領域0520は、仮想ボリュームであることを示す、例えば“N/A”を格納する。ボリュームが論理ボリュームである場合、容量プール番号0510は、例えば“N/A”を格納し、RAIDグループ番号0515及びデータ領域0520は、それぞれデータのアクセス先として対応づけられたRAIDグループの番号とデータ領域の範囲とを格納する。本実施例では、ボリュームが仮想ボリュームである場合について説明する。ボリューム管理テーブル0225は、管理コンピュータ0172により作成され、各ストレージノード0105に格納される。
 図7は、仮想ボリューム割り当て管理テーブル0230の構成を示す。
 仮想ボリューム割り当て管理テーブル0230は、仮想ボリュームにおける仮想記憶領域毎のレコードを有する。仮想記憶領域は例えば、動的容量割り当て機能によりページ単位で管理される。ページとは、データ読み込みと書き込みの最小単位であるブロックを複数纏めた記憶領域の管理単位である。以下の説明において、仮想記憶領域に割り当てられたCMノードのキャッシュメモリ0250内の記憶領域をキャッシュ領域と呼び、仮想記憶領域に割り当てられたBEノードのRAIDグループ内の記憶領域をドライブ領域と呼ぶ。
 仮想ボリューム割り当て管理テーブル0230は、対象の仮想記憶領域に割り当てられたドライブ領域の対応関係を格納する。また、仮想ボリューム割り当て管理テーブル0230は、先頭アドレス0605、RAIDグループ番号0610、保存先BEノード番号0615、割当先アドレス0620、保存先CMノード番号0625、予約先BEノード番号情報0630のメンバを含む。
 先頭アドレス0605は、仮想ボリューム上の仮想記憶領域内に存在するページの先頭の仮想アドレスを格納する。RAIDグループ番号0610には、当該仮想記憶領域に割り当てられたドライブ領域が格納されたRAIDグループの番号を格納する。保存先BEノード番号0615は、RAIDグループ番号0610で識別されるRAIDグループを有するストレージノード0105である保存先BEノードを示す番号を格納する。割当先アドレス0620は、保存先BEノード内で、先頭アドレス0605で識別される仮想記憶領域に割り当てられたドライブ領域のアドレスを格納する。なお、先頭アドレス0605で識別される仮想記憶領域にドライブ領域が未割り当ての場合、RAIDグループ番号0610、保存先BEノード番号0615、割当先アドレス0620には例えば“N/A”が格納される。保存先CMノード番号0625は、先頭アドレス0605で識別される仮想記憶領域に割り当てられたキャッシュ領域が格納されたストレージノード0105であるCMノードの番号を格納する。予約先BEノード番号0630は、RAIDグループ番号0610、保存先のBEノード番号0615、割当先アドレス0620が決定する前に用いる項目であり、ドライブ領域を予約した時に、そのドライブ領域を格納するストレージノードである予約先BEノードの番号を格納する。各ストレージノード0105は、仮想ボリューム割り当て管理テーブル0230を更新し、その更新内容を他のストレージノード0105へ送信することにより、その更新内容を他のストレージノード0105の仮想ボリューム割り当て管理テーブル0230へ反映する。なお、仮想ボリューム割り当て管理テーブル0230は、保存先CMノード内で、先頭アドレス0605で識別される仮想記憶領域に割り当てられたキャッシュ領域のアドレスを格納しても良い。
 図8は、容量プール構成管理テーブル0235の構成を示す。
 容量プール構成管理テーブル0235は、容量プールの空き領域とRAIDグループの未割り当て領域とを管理するためのテーブルである。容量プール構成管理テーブル0235は、容量プール毎のレコードと、RAIDグループ毎のレコードとを有する。各容量プールのレコードは、容量プール番号0705、容量プール作成有無0710、空き領域0715のメンバを含む。容量プール番号0705は、当該容量プールの番号を示す。容量プール作成有無0710は、当該容量プールが作成されているか否かを示す。空き領域0715は、当該容量プールの空き領域を示す。RAIDグループ毎のレコードは、RAIDグループ番号0720、容量プール番号0725、未割り当て領域情報0730のメンバを含む。RAIDグループ番号0720は、当該RAIDグループの番号を示す。容量プール番号0725は、当該RAIDグループに割り当てられた容量プールの番号を示す。未割り当て領域情報0730は、当該RAIDグループの中で未割り当ての領域のアドレスの範囲を示す。各ストレージノード0105は、容量プール構成管理テーブル0235を更新し、その更新内容を他のストレージノード0105へ送信することにより、その更新内容を他のストレージノード0105の容量プール構成管理テーブル0235へ反映する。
 図9は、BEノード構成管理テーブル0240の構成を示す。
 BEノード構成管理テーブル0240は、容量プールの空き領域をBEノード毎に分けて管理するためのテーブルであり、データの書き込み時に仮想ボリュームに割り当てるドライブ領域のBEノードを選択するために用いる。BEノード構成管理テーブル0240は、容量プール毎のレコードを有する。また、BEノード構成管理テーブル0240は、容量プール番号0805、RAIDグループ番号0810、割り当て領域0815、予約領域0820、空き領域0825、全領域0830のメンバを含む。容量プール番号0805は、当該容量プールの番号を格納する。RAIDグループ番号0810は、容量プール番号0805で識別される容量プールに割り当てられたRAIDグループで、当該BEノード内のRAIDグループの番号を格納する。割り当て領域0815は、RAIDグループ番号0810で識別されるRAIDグループの記憶領域の中で、仮想ボリュームに割り当てられたドライブ領域の容量を格納する。予約領域0820は、RAIDグループ番号0810で識別されるRAIDグループの記憶領域の中で、仮想ボリュームに割り当てられる前に割り当てが予約されたドライブ領域の容量を格納する。空き領域0825は、RAIDグループ番号0810で識別されるRAIDグループの記憶領域の中で、仮想ボリュームに割り当ても予約もされていない記憶領域の容量を格納する。全領域0830は、RAIDグループ番号0810で識別されるRAIDグループの記憶領域の全体の容量を格納する。各ストレージノード0105は、BEノード構成管理テーブル0240を更新し、その更新内容を他のストレージノード0105へ送信することにより、その更新内容を他のストレージノード0105の容量プール構成管理テーブル0235へ反映する。
 管理コンピュータ0172は、ストレージシステム0102の管理者からの指示に基づいて、RAIDグループ管理テーブル0220、ボリューム管理テーブル0225を作成し、複数のストレージノード0105へ送信する。ストレージノード0105は、仮想ボリューム割り当て管理テーブル0230、容量プール構成管理テーブル0235、BEノード構成管理テーブル0240を更新すると、更新された情報を他のストレージノード0105へ送信する。これにより、複数のストレージノード0105の間で、仮想ボリューム割り当て管理テーブル0230、容量プール構成管理テーブル0235は同期される。なお、RAIDグループ管理テーブル0220、ボリューム管理テーブル0225、仮想ボリューム割り当て管理テーブル0230、容量プール構成管理テーブル0235の何れかが、管理コンピュータ0172等、ストレージノード0105の外に格納されていても良い。
 以下、複数のストレージノード0105の間のデータ転送の経路について説明する。
 ネットワークトポロジの種類に、Any-to-anyというトポロジがある。Any-to-anyは、各ストレージノードが他の全てのストレージノードに直接接続されている。Any-to-any接続は対称的なトポロジのためストレージ制御の実装が容易で、多くのストレージシステムではAny-to-any接続が採用されている。しかし、ストレージノード数が増加すると、ストレージノードの組み合わせの分だけ結線数が増加してしまうため、ネットワークの配線が困難になるというデメリットがある。そこで、Any-to-any接続から結線数を減らした非Any-to-any接続がある。
 図10で、非Any-to-any接続の一実施例として第1のネットワークを開示する。
 この第1のネットワークは、ノード#1~#8で示されている8つのストレージノードを接続している。各ノードは、ホストコンピュータに接続されている。各ノードは、他の全てのノードとネットワークで直接接続されているわけではない。よって、直接接続されておらずノード間の通信には多段の転送(ホップ)が必要となる。CMノードとBEノードとして
 例えば、ノード#1(1055)がホストコンピュータからデータの書き込み命令を受け取った場合に、ホストノードであるノード#1(1055)がキャッシュメモリ0250の負荷の小さいノード#8をCMノードとして選択し、別途、データを保存するためにRAIDグループに空きのあるノードとしてノード#3(1070)を選択する。この場合、データ転送はノード#1(1055)からノード#6(1060)への転送(1040)と、ノード#6(1065)からノード#8(1065)への転送(1045)と、ノード#8(1065)からノード#3(1070)への転送(1050)の3回である。そこで、本実施例におけるホストノード(第1ストレージ装置)は、複数のストレージノード0105の中から所定の状態条件を満たすCMノードの候補及びBEノードの候補を選択し、CMノードの候補及びBEノードの候補の中から、転送段数(接続数、データがネットワーク0101を経由する回数)を考慮して、転送段数の少ないCMノード(第2ストレージ装置)及びBEノード(第3ストレージ装置)の組み合わせを選択することとする。よって図10に示した例において、ノード#8とノード#3以外に、転送段数がより少なく使用可能なCM,BE容量を有するノードの組み合わせが有る場合には、その組み合わせを優先的に選択することになる。本発明によれば限られているネットワークの帯域の使用に際してデータ転送のノード間の跨ぎを減らしてデータ転送量を削減することができる。
 ネットワーク0101は、第1のネットワークの他のネットワークトポロジを有していても良く、ストレージノード0105をクラスタ構成で稼働することのできるネットワークであればどのようなトポロジでも構わない。
 図11は、非Any-to-any接続の他の例である第2のネットワークを開示する。本ネットワークにおいても図10と同じように接続段数を考慮したノード選択が必要となる。
 以下、CMノード及びBEノードの選択に用いられる評価値表について説明する。
 図12は、Write評価値表1200の構成を示す。
 このWrite評価値表1200は、Writeコマンドを受信したホストノードがCMノード及びBEノードを選択するために用いられる。この図は、ノード#1に格納されているWrite評価値表1200の例を示し、ノード#1がホストコンピュータ0100からWriteコマンドを受信した場合、即ちノード#1がホストノードである場合に用いられる。
 Write評価値表1200は、CMノードを示すCMノード番号1210毎の行と、BEノードを示すBEノード番号1205毎の列とを有する。更にWrite評価値表1200は、各CMノードのキャッシュ負荷の判定結果を示すキャッシュ負荷情報1215と、各BEノードの空き容量の判定結果である空き容量情報1220とを含む。キャッシュ負荷は、対応するCMノードのキャッシュメモリ0250の負荷である。空き容量は、対応するBEノードのRAIDグループの空き領域のサイズである。この図は、キャッシュ負荷情報1215を「負荷」と示し、空き容量情報1220を「空き」と示す。キャッシュ負荷情報1215は、対応するCMノードのキャッシュ負荷が、キャッシュ負荷閾値より高いか否かを示し、例えば「高い(高)」又は「低い(低)」の値を有する。例えば、キャッシュ負荷は、対応するCMノードのキャッシュメモリ0250の転送量で表され、キャッシュ負荷閾値は転送量閾値で表される。空き容量情報1220は、対応するBEノードが空き容量閾値以上の空き容量を有するか否かを示し、例えば「有」又は「無」の値を有する。キャッシュ負荷情報1215が「低」の値を有するストレージノード0105は、CMノードの候補として選択される。空き容量情報1220が「有」の値を有するストレージノード0105は、BEノードの候補として選択される。Write評価値表1200を作成する処理やWrite評価値表1200を更新する処理については後述する。前述の状態条件は例えば、CMノードのキャッシュメモリ0250のデータ転送量が転送量閾値より小さく、且つBEノードの空き容量が空き容量閾値より大きいことである。
 Write評価値表1200の行列の要素1225は、CMノード番号1210とBEノード番号1205の組み合わせの評価値を格納する。或るCMノード番号1210とBEノード番号1205の組み合わせの評価値は、ホストノードから当該CMノードまでの転送段数と、当該CMノードから当該BEノードまでの転送段数との合計を示す。以下の説明において、転送段数をホップ数と呼ぶことがある。ホストノードとなり得る各ストレージノード0105は、自己がホストノードである場合の評価値を示すWrite評価値表1200を格納する。
 ホストノードがWrite評価値表1200を用いることにより、キャッシュ負荷が低いと判定されたストレージノード0105をCMノードの候補として選択することができ、空き容量が有ると判定されたストレージノード0105をBEノードの候補として選択することができる。また、ホストノードは、CMノードの候補とBEノードの候補の中から、転送段数が最も少なくなるCMノードとBEノードの組み合わせを選択することができる。
 以下、ホストコンピュータ0100からデータアクセス要求(IOコマンド)を受信したストレージノード0105の動作について説明する。
 図13は、IO制御処理の動作を示す。
 IO制御処理において、IO制御プログラム0315は、アクセス種別と、キャッシュヒット/キャッシュミスと、ドライブ領域の割り当ての有無と、コマンド種別とを含むIO制御判定条件に基づいて、最適なIO制御を決定する。まず、IO制御プログラム0315は、ホストコンピュータ0100からデータアクセス要求を受信し、データアクセス要求に指定されたデータ転送長(データ長)を確認する(1305)。IO制御プログラム0315は、データ転送長を予め定められたデータ転送長閾値(データ長閾値)と比較し(1310)、データ転送長がデータ転送長閾値よりも大きい場合はアクセス種別をデータ転送量大と判定し(1320)、小さい場合はアクセス種別をデータ転送量小と判定する(1315)。データ転送量が大きいアクセスは、例えばシーケンシャルアクセスであり、データ転送量が小さいアクセスは、例えばランダムアクセスである。次にIO制御プログラム0315は、データアクセス要求の仮想アドレス及びデータ転送長に指定された仮想記憶領域に対応するキャッシュデータがキャッシュメモリ0250に存在する(キャッシュヒット)か、否(キャッシュミス)か(指定された仮想記憶領域に対応するキャッシュ領域がキャッシュメモリ0250内に割り当てられているか否か)を判定し(1325)、指定された仮想記憶領域にドライブ領域が割り当てられているか否か判定する(1330)。さらに、IO制御プログラム0315は、データアクセス要求からコマンド種別がReadかWriteかを判定する(1335)。
 IO制御プログラム0315は、前述の、アクセス種別と、キャッシュヒット/キャッシュミスと、ドライブ領域の割り当ての有無と、コマンド種別の判定結果に基づいて、高速IO制御が可能か否かを判定する(1340)。高速IO制御が可能と判定された場合、IO制御プログラム0315は、判定されたコマンド種別がWriteコマンドであるか否か判定し(1345)、Writeコマンドであれば、高速Write制御処理を実行し(1355)、Readコマンドであれば高速Read制御処理を実行する(1350)。高速IO制御が不可能と判定された場合、IO制御プログラム0315は、判定されたコマンド種別がWriteコマンドであるか否か判定し(1360)、Writeコマンドであれば、通常Write制御処理を実行し(1365)、Readコマンドであれば通常Read制御処理を実行する(1370)。尚、データ転送長の小さいアクセスにおいても、高速IO制御を適用することで、データ転送長の大きいアクセスと同様にデータ転送のノード間の跨ぎを減らしてデータ転送を削減し、システム全体の性能を向上できる場合がある。そのため、1305,1310,1320,1315については必須ではない。例えば、データ転送長の小さいアクセスが一部のCMノードに偏ることが無い場合、もしくは、各CMノードに与える負荷が小さい場合であれば、データ転送長の大きいアクセスにおけるCMノードの候補の選択に与える影響は少ない。この場合、CMノード及びBEノードの候補から、転送段数の少ないCMノード及びBEノードの組み合わせを選択できるので、データ転送長の大小に関わらず全てのアクセスに対して本願の高速IO制御を適用することが可能である。これにより、データ転送長の小さいアクセスが大量に発生した場合であっても、ストレージ装置間のデータ転送を減らすことができ、ネットワーク帯域に与える影響を低減することができる。
 設定情報0255は、前述のデータ転送長閾値等、IO制御処理に用いられる情報を含む。IO制御プログラム0315は、設定情報0255に基づいてIO制御処理を行う。
 以下、高速Write制御処理について説明する。
 図14は、高速Write制御処理を示す。
 高速Write制御プログラム0320は、前述の処理1325におけるキャッシュヒット/キャッシュミス判定の結果を用いる(1405)。このキャッシュヒット及びキャッシュミスはそれぞれ、CMノードが決定されていること、CMノードが決定されていないことを示す。キャッシュヒットである場合、高速Write制御プログラム0320は、第1高速Write制御処理を実行する(1415)。キャッシュヒットでない場合、高速Write制御プログラム0320は、前述の処理1330におけるドライブ領域の割り当て有/無の判定結果を用いる(1410)。この有と無はそれぞれ、BEノードが決定されていること、BEノードが決定されていないことを示す。コマンドに指定された仮想記憶領域のドライブ領域へのマッピングがない場合は、保存先CMノード番号および保存先BEノード番号が決まっていないことになる。そこで、高速Write制御プログラム0320は、第2高速Write制御処理を実行する(1420)。ドライブ領域へのマッピングがある場合は、すでに保存先BEノード番号が決まっているため、第3高速Write制御処理を実行する(1425)。以上が高速Write制御処理である。
 図15は、図13,14を通じての振り分け結果を示す。尚、最終的に図15に開示するような振り分けができればよく、図13、図14の判断順番は開示したものを入れ替えることが可能である。
 例えば、アクセス種別0905がデータ転送量小の場合、IO制御プログラム0315は、データがネットワークを跨いだとしてもネットワーク帯域を大きく占有することはないと判断し、通常Write制御プログラム0305は、比較例と同様、多段転送や転送段数増加によるネットワーク帯域の消費を考慮せずにCMノードとBEノードを選択する。通常Write制御プログラム0305は、例えば、ラウンドロビンによりCMノードとBEノードを選択する。これにより、特定のノードに偏ることなく、一様にCMノードとBEノードを選択できる。
 また、アクセス種別0905がデータ転送量大の場合、IO制御プログラム0315は、CMノードおよびBEノードが決定されている場合に、通常IO制御と判定し、CMノードとBEノードの両方もしくはどちらか一方が決定されていない場合に、高速IO制御が可能と判定する。ただし、コマンド種別0920がReadコマンドで、且つドライブ領域情報0915が無で、且つキャッシュヒットである場合、キャッシュ上のデータを予約先BEノードのドライブ領域にデータを書き込む前の状態であり、通常Read制御プログラム0310は通常のキャッシュヒットの制御を行う。また、コマンド種別0920がReadコマンドで、且つドライブ領域情報0915が無で、且つキャッシュ領域情報0910がミスである場合、当該Readコマンドに指定された仮想記憶領域に一度もデータが書き込まれていない特別な状態であり、通常Read制御プログラム0310は動的容量割り当て機能の通常の制御を行い、例えば所定の応答をホストコンピュータ0100へ送信する。
 ホストノードは、このIO制御判定条件0900に従ってIO制御を選択することにより、データアクセス要求に対して適切なIO制御を行うことができる。
 尚、IO制御処理は、過去のデータアクセスを示すデータアクセス履歴を用い、データアクセス履歴に示されたデータ転送長を用いてIO制御種別を判定しても良い。例えば、IO制御処理は、ホストコンピュータ0100毎に過去10分以内のRead及びWriteのアクセスのデータ転送長を記録しておき、記録されたアクセスの中で、データ転送長がデータ転送長閾値より長いアクセスが多数であれば、当該ホストコンピュータ0100のアクセス種別をデータ転送量大と、データ転送長がデータ転送長閾値以下であるアクセスが多数であればアクセス種別をデータ転送量小と判定する。
 また、IO制御処理は、各ポート及び各仮想ボリュームのデータアクセス履歴を用い、各ポート及び各仮想ボリュームのアクセス種別を判定しても良い。このように、データアクセス履歴を用いることで、アクセス種別の判定の精度を向上させることができる。ここで、ポートとはホストコンピュータとデータ転送を行うためのストレージシステムの通信ポートのことである。
 また、各アクセスのデータ転送長に基づいてアクセス種別を判定するのか、データアクセス履歴に基づいてアクセス種別を判定するのか、を示す判定方法が、各ホスト、各ポート、各仮想ボリュームに対して、定められても良い。
 図16は、第1高速Write制御処理を示す。
 第1高速Write制御処理が呼び出されるのは、IO制御判定条件0900において、Writeコマンドで、且つアクセス種別0905がデータ転送量大で、且つキャッシュ領域情報0910がキャッシュヒットで、且つドライブ領域情報0915が無の時である。つまり、CMノードおよびBEノードは既に決定され、BEノードは書き込みの予約がされているが、BEノードへデータを書き込んでいないためにドライブ領域が割り当てられていない状態である。CMノードおよびBEノードは既に決定されていることから、第1高速Write制御処理は、CMノードのキャッシュ領域に保存されているデータを予約先BEノードのドライブ領域へ書き込む。即ち、CMノードへ書き込まれ、予約先BEノードへ書き込まれる(デステージ)前のデータを更新するWriteコマンドを受信した場合に、第1高速Write制御処理が実行される。
 まず高速Write制御プログラム0320は、ホストコンピュータ0100にWriteデータの転送を指示する(1505)。次に高速Write制御プログラム0320は、バッファ0125への転送を確認し(1510)、ホストコンピュータ0100からバッファ0125へのWriteデータの転送が完了したか否かを判定する(1515)。転送が完了したならば、高速Write制御プログラム0320は、フローを処理1520へ進める。転送が完了していなければ、高速Write制御プログラム0320は、処理1510で再び確認を行う。
 その後、高速Write制御プログラム0320は、仮想ボリューム割り当て管理テーブル0230から、Writeコマンドに指定された仮想記憶領域に対応する保存先CMノード番号と予約先BEノード番号を取得する(1520)。高速Write制御プログラム0320は、ローカルルータ0120に対して保存先CMノード番号のノードのキャッシュ領域へデータを転送するように指示する(1525)。高速Write制御プログラム0320は、キャッシュ領域への転送を確認し(1530)、キャッシュ領域への転送が完了したか否かを判定する(1535)。転送が完了していれば、高速Write制御プログラム0320は、フローを処理1540へ進める。転送が完了していなければ、高速Write制御プログラム0320は、処理1530で再び確認を行う。
 その後、高速Write制御プログラム0320は、予約先BEノードのドライブへデータを書き込む(1540)。その後、高速Write制御プログラム0320は、ドライブへの書き込みを確認し(1545)、ドライブへの書き込みが完了したか否かを判定する(1550)。書き込みが完了したならば、高速Write制御プログラム0320は、フローを処理1555へ進める。書き込みが完了していなければ、高速Write制御プログラム0320は、処理1545にて再びドライブへの書き込みを確認する。
 その後、高速Write制御プログラム0320は、書き込みが完了した状態に応じて仮想ボリューム割り当て管理テーブル0230のレコードを更新する第1レコード更新処理を行う(1555)。第1レコード更新処理の詳細は後述する。処理1540以降の制御はキャッシュメモリ0250上のデータをBEノードのドライブへデステージする操作であり、デステージを実行するタイミングの決定には既存のキャッシュ管理手法を用いることが出来る。例えば、ホストノードからホストコンピュータ0100への応答は、CMノードへの書き込みの後であっても良いし、BEノードへの書き込みの後であっても良い。以上が第1高速Write制御処理である。
 この処理によれば、ホストノードは、CMノードを割り当て済みでBEノードを予約済みの仮想記憶領域を更新するWriteコマンドに対し、割り当て済みのCMノードへ書き込みデータを書き込み、予約済みのBEノードへ書き込みデータを書き込むことにより、最適な経路で書き込みデータを転送することができる。
 図17は、第2高速Write制御処理を示す。
 第2高速Write制御処理が呼び出されるのは、IO制御判定条件0900において、Writeコマンドで、且つアクセス種別0905がデータ転送量大で、且つキャッシュ領域情報0910がミスで、且つドライブ領域情報0915が無の時である。つまり、CMノードが決定されておらず、且つBEノードへの書き込みの予約もされていない、つまり初めて当該ドライブ領域へWriteコマンドが発行された状態である。そこで、第2高速Write制御処理は、CMノードとBEノードを決定し、ホストコンピュータ0100からのWriteデータをCMノードのキャッシュ領域へ保存し、当該データを予約先のBEノードのドライブ領域へ書き込む処理を行う。即ち、新規の仮想記憶領域にデータを書き込むWriteコマンドを受信した場合に、第2高速Write制御処理が実行される。
 以下、ホストコンピュータ0100からコマンドを受信したノード(ホストノード)をノード#hと表すとき、ノード#hの高速Write制御プログラム0320の動作について説明する。高速Write制御プログラム0320は、ノード#h内のキャッシュ負荷Lを確認する(1605)。次に高速Write制御プログラム0320は、ノード#h内の空き容量Cを確認する(1610)。ノード#h内の空き容量Cは、ノード#h内のBEノード構成管理テーブル0240に示された空き容量0825である。ノード#h内に空き容量が空き容量閾値以上であれば、RAIDグループ番号0810で識別されるノード#h内のRAIDグループの記憶領域の中で、仮想ボリュームに割り当ても予約もされていないドライブ領域を、Writeコマンドで指定された仮想記憶領域に割り当てることができる。
 次に高速Write制御プログラム0320は、キャッシュ負荷Lがキャッシュ負荷閾値より小さく、且つ空き容量Cが空き容量閾値より大きいか否かを判定する(1615)。YESと判定された場合、高速Write制御プログラム0320は、ノード#hにキャッシュ領域およびドライブ領域を割り当てることができるので、CMノードとして#hを、BEノードとして#hを選択する(1620)。本処理によって、ホストノードのCMの負荷が高くなく、記憶容量に空きがあれば、ホストノードからの転送段数が最も少ないノードであるホストノード自身が優先的に選択される。この場合、データ転送がノード#h内で閉じるため、ノード間を跨いだデータ転送は発生しない。処理1615でNOと判定された場合、高速Write制御プログラム0320は、Write評価値表1200内の負荷1215を最新の値で更新するキャッシュ負荷情報更新処理を行い(1625)、Write評価値表1200内の空き容量情報1220を最新の値で更新する空き容量情報更新処理を行う(1627)。キャッシュ負荷情報更新処理と空き容量情報更新処理の詳細は後述する。
 次に高速Write制御プログラム0320は、Write評価値表1200において、負荷が低いCMノードと、BEノードの空き容量があるBEノードとの組の中から、評価値の小さな組、例えば評価値が最も小さい組を選択する第1選択処理を行う(1630)。すなわち高速Write制御プログラム0320は、データ転送がノード間を跨ぐ回数の少ないノードの組を選択する。第1選択処理の詳細は後述する。
 次に高速Write制御プログラム0320は、処理1630でエラーが発生したか否かを判定する(1635)。エラーがある場合、最適なCMノードとBEノードの組が見つからなかったことを意味する。そこでエラーがある場合、高速Write制御プログラム0320は、予め定められたデフォルトのCMノードとBEノードを選択する(1645)。デフォルトのCMノードとBEノードは、例えばデータ転送がノード内で閉じるように、コマンドを受信したノード#h(ホストノード)に設定される。なお、デフォルトのCMノードとデフォルトのBEノードとは異なっても構わない。例えば、キャッシュメモリ0250を多数搭載してキャッシュの性能が最も高いノードをデフォルトのCMノードに設定することもできる。また、例えば容量プールの領域が最も大きいノード、すなわちBEノード構成管理テーブル0240の全領域0830の値が最も大きいノードを、デフォルトのBEノードに設定することもできる。
 エラーが無い場合、高速Write制御プログラム0320は、仮想ボリューム割り当て管理テーブル0230において、コマンドに指定された新規の仮想記憶領域のレコードを追加するレコード追加処理を行う(1640)。レコード追加処理の詳細は後述する。次に高速Write制御プログラム0320は、選択されたCMノードのキャッシュメモリ0250にキャッシュ領域を確保し(1650)、選択されたBEノードにデータを書き込むためのディスク領域を予約する書き込み予約処理を行う(1655)。書き込み予約処理の詳細は後述する。書き込み予約処理の完了後、高速Write制御プログラム0320は、ホストコンピュータ0100にWriteデータの転送を指示する(1660)。
 その後、高速Write制御プログラム0320は、ホストコンピュータ0100から転送されたWriteデータをCMノードのキャッシュ領域へ保存する。この後のフローは前述の第1高速Write制御処理のA以下のフローと同様である。以上が第2高速Write制御処理である。
 この処理によれば、新たな仮想記憶領域に、転送段数を考慮した上で負荷が低いCMノード及び空き容量のあるBEノードが割り当てられる。よって、書込みデータについて、ホストノードからCMノードを経由してBEノードへの転送段数を少なくすることができる。また、ホストノードがCMノードのキャッシュ領域を確保すると共に、BEノードのドライブ領域を予約した後に、ホストコンピュータ0100へ書き込みデータの転送を指示することができ、最適なCMノード及びBEノードの組を決定しつつ、ホストコンピュータ0100への応答を高速化することができる。また、ホストノードは、自ノードのキャッシュ負荷及び空き容量が所定の条件を満たす場合、自ノードを優先してCMノード及びBEノードとして選択することにより、ネットワーク0101を経由するデータ転送を防ぐことができる。
 図18は、第3高速Write制御処理を示す。
 第3高速Write制御処理が呼び出されるのは、IO制御判定条件0900において、Writeコマンドで、且つアクセス種別0905がデータ転送量大で、且つキャッシュ領域情報0910がミスで、ドライブ領域情報0915が有の時である。すなわち、CMノードは決定されていないが、BEノードが決定されており、更にドライブ領域の割り当てと書き込みが完了した状態にある。CMノードが決定されていないのは、BEノードにデータが書き込まれた後、キャッシュ領域上のデータが解放されたためである。そこで、第3高速Write制御処理はCMノードを決定し、ホストのWriteデータを決定したCMノードのキャッシュに保存し、当該データをBEノードのドライブ領域にデータを書き込む処理を行う。即ち、CMノードへ書き込まれ、BEノードへ書き込まれた(デステージ)後のデータがCMノードから削除された後、そのデータを更新するWriteコマンドを受信した場合に、第3高速Write制御処理が実行される。
 まず高速Write制御プログラム0320は、コマンドを受信したノード#hのキャッシュ負荷Lを確認する(1705)。次に高速Write制御プログラム0320は、想ボリューム割り当て管理テーブル0230において、Writeコマンドに指定された仮想記憶領域のレコードの保存先BEノード番号を取得する(1710)。次に高速Write制御プログラム0320は、BEノードとして取得された保存先BEノード番号を選択する(1715)。次に高速Write制御プログラム0320は、キャッシュ負荷Lが、キャッシュ負荷閾値より小さいか否かを判定する(1720)。
 キャッシュ負荷Lがキャッシュ負荷閾値より小さい場合、高速Write制御プログラム0320は、CMノードとして#hを選択する(1725)。つまり、高速Write制御プログラム0320は、保存先CMノードのキャッシュメモリ0250として、ホストノードのキャッシュメモリ0250を選択する。処理1720でキャッシュ負荷Lがキャッシュ負荷閾値より大きい場合、Write評価値表1200のキャッシュ負荷情報1215を最新の値で更新するキャッシュ負荷情報更新処理を行う(1730)。
 次に高速Write制御プログラム0320は、Write評価値表1200に基づいて、最適なCMノードを選択する第2選択処理を行い(1735)、処理1735でエラーが発生しているかどうかを判定する(1740)。第2選択処理の詳細は後述する。エラーの場合、最適なCMノードが見つからなかったことを意味する。そこでエラーが発生している場合、高速Write制御プログラム0320は、予め定められたデフォルトのCMノードを選択する(1745)。デフォルトのCMノードは、例えばデータ転送がノード内で閉じるように、コマンドを受信したノード#h(ホストノード)に設定される。この他、例えば、キャッシュメモリ0250を多数搭載してキャッシュの性能が最も高いノードをデフォルトのCMノードに設定することもできる。
 エラーが発生していない場合、高速Write制御プログラム0320は、仮想ボリューム割り当て管理テーブル0230において、コマンドに指定された仮想記憶領域のレコードを更新する第2レコード更新処理を行う(1750)。第2レコード更新処理の詳細は後述する。次に、高速Write制御プログラム0320は、CMノードにキャッシュ領域を確保し(1755)、ホストコンピュータ0100にWriteデータの転送を指示する(1760)。
 その後、高速Write制御プログラム0320は、ホストコンピュータ0100から転送されたWriteデータをCMノードのキャッシュ領域へ保存する。この後のフローは前述の第1高速Write制御処理のA以下のフローと同様である。以上が第3高速Write制御処理である。
 この処理によれば、ホストノードは、CMノードの割り当てが解除済みでBEノードを割り当て済みの仮想記憶領域を更新するWriteコマンドに対し、その仮想記憶領域へ最適なCMノードを割り当て、割り当て済みのBEノードへ書き込みデータを書き込むことにより、最適な経路で書き込みデータを転送することができる。
 図19は、第1選択処理1630を示す。
 ここでは前述の第1選択処理1630の詳細について説明する。まず高速Write制御プログラム0320は、Write評価値表1200からキャッシュ負荷が低いと判定されたノードを抽出し、抽出されたノードを示すCMノードリストを作成する(1805)。以下、このCMノードリストのことをCM_listと呼ぶことにする。次に高速Write制御プログラム0320は、CM_listが空であるか否かを判定する(1810)。CM_listが空の場合、高速Write制御プログラム0320は、第2高速Write制御処理へエラーを返した後(1835)、このフローを終了する。CM_listが空でない場合、高速Write制御プログラム0320は、Write評価値表1200から空き容量が有ると判定されたノードを抽出し、抽出されたノードを示すBEノードリストを作成する(1815)。このBEノードリストのことをBE_listと呼ぶことにする。次に高速Write制御プログラム0320は、BE_listが空であるか否かを判定する(1820)。BE_listが空の場合、高速Write制御プログラム0320は、第2高速Write制御処理へエラーを返した後(1835)、このフローを終了する。BE_listが空でない場合、高速Write制御プログラム0320は、CM_listに含まれるCMノードとBE_listに含まれるBEノードの組み合わせの中から、Write評価値表1200内の対応する要素1225を考慮してノードの組み合わせを抽出する(1825)。例えば、要素1225が最小となる組み合わせを選択することでデータ転送経路が短い組が選択される。又は、例えば、最小となる組み合わせに対応するデータ転送経路に流れるデータ転送量が多く、データ転送経路の負荷が高い状態である場合、又はデータ転送経路上のネットワークに障害が発生し、データ転送ができない場合などにおいて、要素1225が2番目に最小となる組み合わせ、もしくは要素1225が予め定められた閾値以下となる組み合わせを候補として抽出しても良い。次に高速Write制御プログラム0320は、候補が複数存在するか判定し(1830)、候補が複数存在する場合、高速Write制御プログラム0320は、複数の候補の中からランダムに1つの組を選択し(1840)、このフローを終了する。候補が1つしか存在しない場合、高速Write制御プログラム0320は、その候補を選択し(1845)、このフローを終了する。以上が第1選択処理1630である。
 図20は、第2選択処理1735を示す。
 ここでは前述の第2選択処理1735の詳細について説明する。第1選択処理1630と比べると、第2選択処理1735においては、すでにBEノードが決定されており、CMノードのみが選択される。
 まず高速Write制御プログラム0320は、第1選択処理1630の1805と同様の処理(1905)、1810と同様の処理(1910)を行う。CM_listが空の場合、高速Write制御プログラム0320は、1825と同様の処理(1925)を行い、このフローを終了する。CM_listが空でない場合、高速Write制御プログラム0320は、決定済みのBEノードに対し、CM_listに含まれるCMノードの中から、Write評価値表1200内の対応する要素1225を考慮してCMノードを抽出する(1915)。この抽出方法は1825と同様である。次に高速Write制御プログラム0320は、1830と同様の処理(1920)、1840と同様の処理(1930)、1945と同様の処理(1935)を行い、このフローを終了する。以上が第2選択処理1735である。
 図21は、書き込み予約処理1655を示す。
 ここでは前述の書き込み予約処理1655の詳細について説明する。まず高速Write制御プログラム0320は、指定されたBEノードのBEノード構成管理テーブル0240の中で、指定された容量プール番号のレコードを呼び出す(2005)。その後、高速Write制御プログラム0320は、当該レコードの空き領域のサイズから、予約サイズ分を減じ、当該レコードを更新する(2010)。その後、高速Write制御プログラム0320は、当該レコードの予約領域に予約サイズ分を加え、当該レコードを更新する(2015)。その後、高速Write制御プログラム0320は、各ノードのBEノード構成管理テーブル0240における当該容量プール番号の空き領域のサイズの合計を算出し(2020)、容量プール構成管理テーブル0235の当該容量プール番号の空き領域のサイズを算出された値で更新し(2025)、このフローを終了する。以上が書き込み予約処理である。
 尚、ホストノードは、BEノードの予約を変更しても良い。この予約変更には、アクセス種別の判定方法が変更され、IO制御種別の判定結果が更新された場合に、適切なBEノードを選び直すことができるという利点がある。予約変更において、高速Write制御プログラム0320は、書き込み予約処理によりBEノードにディスク領域を予約した際の情報を元に戻し、もう一度適切なBEノードを選び直した後に、書き込み予約処理によりBEノードにディスク領域を予約する。この予約変更のタイミングは、キャッシュのデステージにより実際にデータが予約先BEノード内の予約されたドライブ領域に書き込まれる前まで、すなわち保存先BEノードが確定する前までの期間である。ただし、予約されたドライブ領域に書き込まれるまでデータはキャッシュメモリに保存されるため、キャッシュのデステージが遅延することによりキャッシュメモリの空き容量が不足する場合がある。そのため、キャッシュメモリの空き容量が不足する場合はキャッシュのデステージに影響がないように予約は変更しないものとする。
 また、予約変更の条件が予め定められても良い。例えば、予約後にホストコンピュータ0100が行ったRead及びWriteの回数が予め定められた回数以下であれば、デステージまでに時間の余裕があると判定し、予約変更が可能としても良い。予約変更の頻度が高い場合、ストレージシステム0102における他の処理が遅れる問題が生じる場合があるため、アクセス種別の判定が頻繁に変更される場合、予約変更を行わないと判定しても良い。例えば、データアクセス履歴に十分な量の履歴が溜まっていない場合、アクセス種別の判定が変更される可能性が高いため、高速Write制御プログラム0320は、アクセス回数が予め定められた回数以下の場合、予約の変更を取りやめる。
 図22は、レコード追加処理1640を示す。
 ここでは前述のレコード追加処理1640の詳細について説明する。まず仮想ボリューム割り当て追加プログラム0330は、選択されたCMノード番号#a及びBEノード番号#bを取得し(2105)、Writeコマンドから書き込み対象の仮想アドレスを抽出する(2110)。その後、仮想ボリューム割り当て追加プログラム0330は、仮想ボリューム割り当て管理テーブル0230において、抽出された仮想アドレスに対応する新規レコードを追加する(2115)。その後、仮想ボリューム割り当て追加プログラム0330は、追加されたレコードにおいて、RAIDグループ番号にN/Aを、保存先BEノード番号にN/Aを、割当先アドレスにN/Aを、更新情報にN/Aを、保存先CMノード番号に#aを、予約先BEノード番号に#bをそれぞれ入力し(2120)、このフローを終了する。以上がレコード追加処理1640である。
 図23は、第1レコード更新処理1555を示す。
 ここでは前述の第1レコード更新処理1555の詳細について説明する。まず仮想ボリューム割り当て更新プログラム0335は、書き込み対象のRAIDグループ番号#p_colと、割当先アドレス#p_addrとを取得する(2205)。次に仮想ボリューム割り当て更新プログラム0335は、Writeコマンドから書き込み対象の仮想アドレス#v_addrを抽出する(2210)。次に仮想ボリューム割り当て更新プログラム0335は、仮想ボリューム割り当て管理テーブル0230から、#v_addrに対応するレコード#recを読み出す(2215)。次に仮想ボリューム割り当て更新プログラム0335は、#recの予約先BEノード番号#BE_nodeを読み出す(2220)。
 次に仮想ボリューム割り当て更新プログラム0335は、#recにおいて、RAIDグループ番号に#p_volを、保存先BEノード番号に#BE_nodeを、割当先アドレスに#p_addrを、更新情報にN/Aを、予約先BEノード番号にN/Aをそれぞれ入力し、保存先CMノード番号を更新せず(2225)、このフローを終了する。以上が第1レコード更新処理1555である。
 図24は、第2レコード更新処理1750を示す。
 ここでは前述の第2レコード更新処理1750の詳細について説明する。まず仮想ボリューム割り当て更新プログラム0335は、選択されたCMノード番号#CM_nodeを取得する(2305)。次に仮想ボリューム割り当て更新プログラム0335は、Writeコマンドから書き込み対象の仮想アドレス#v_addrを抽出する(2310)。次に仮想ボリューム割り当て更新プログラム0335は、仮想ボリューム割り当て管理テーブル0230から、#v_addrに対応するレコード#recを読み出す(2315)。次に仮想ボリューム割り当て更新プログラム0335は、#recにおいて、更新情報にN/Aを、保存先CMノード番号に#CM_nodeを、予約先BEノード番号にN/Aをそれぞれ入力し、RAIDグループ番号、保存先BEノード番号、割当先アドレスを更新せず(2320)、このフローを終了する。以上が第2レコード更新処理1750である。
 図25は、Write評価値表作成処理を示す。
 本実施例におけるWrite評価値表1200の要素1225に格納される評価値は、ホストノードからCMノードまでのホップ数とCMノードからBEノードまでのホップ数の合計である。管理コンピュータ0172は、ネットワーク0101及びストレージノード0105のスイッチ0130を管理している。管理コンピュータ0172の管理プログラム0360は、ストレージシステム0102の管理者からの指示に従って、ネットワーク0101及びストレージノード0105の設定を示す管理情報0370の追加、削除、変更の操作を実行できる。管理情報0370は、ネットワーク0101とトポロジを示すトポロジ情報を含む。管理プログラム0360は、トポロジ情報を用いて評価値を計算する。管理コンピュータ0172は、新規にネットワーク0101を構築したとき、およびネットワーク0101のトポロジが変更されたときにWrite評価値表作成処理を実行すればよい。
 Write評価値表作成処理において、管理コンピュータ0172は、各ノードをホストノード#host_nodeとして順次選択する(2405)。#host_nodeが選択されると、管理コンピュータ0172は、#host_nodeに格納されるWrite評価値表1200である#eval_tableを初期化する(2410)。次に管理コンピュータ0172は、各ノードをCMノード#CM_nodeとして順次選択する(2415)。#CM_nodeが選択されると、管理コンピュータ0172は、各ノードをBEノード#BE_nodeとして順次選択する(2420)。#BE_nodeが選択されると、管理コンピュータ0172は、#host_nodeから#CM_nodeまでのホップ数と、#CM_nodeから#BE_nodeまでのホップ数との合計を、評価値#hop_sumとして算出し(2425)、#eval_tableにおいて、(#CM_node,#BE_node)の組に対応する要素1225へ#hop_sumを入力する(2430)。更に管理コンピュータ0172は、全ての#BE_nodeについて処理2420のループを繰り返す。更に管理コンピュータ0172は、全ての#CM_nodeについて処理2415のループを繰り返す。更に管理コンピュータ0172は、全ての#host_nodeについて処理2405のループを繰り返す。以上がWrite評価値表作成処理である。
 ここでは前述のキャッシュ負荷情報更新処理1625、1730の詳細について説明する。
 キャッシュ負荷情報更新処理1625、1730の夫々は、自ノードのキャッシュ負荷情報を判定し、そのキャッシュ負荷情報を他のノードへ通知する処理と、他のノードからキャッシュ負荷情報を受信し、自ノードの評価値表を更新する処理とを有する。
 図26は、キャッシュ負荷情報更新処理を示す。
 まず評価値表更新プログラム0345は、自ノード内のキャッシュメモリのRead転送量及びWrite転送量を取得する(2505)。Read転送量及びWrite転送量は、最新の期間の測定値であっても良いし、複数の期間の測定値の平均値であっても良い。次に評価値表更新プログラム0345は、キャッシュメモリのRead転送量及びWrite転送量を合計することにより合計転送量#transを計算する(2010)。ここで、自ノードが複数のキャッシュメモリを有する場合、評価値表更新プログラム0345は、複数のキャッシュメモリのRead転送量及びWrite転送量を合計する。次に評価値表更新プログラム0345は、#transがキャッシュ負荷閾値より大きいか否かを判定する(2515)。評価値表更新プログラム0345は、#transがキャッシュ負荷閾値より大きい場合、キャッシュ負荷が高いと判定し(2525)、それ以外の場合、キャッシュ負荷が低いと判定する(2520)。次にメッセージ送信プログラム0205は、キャッシュ負荷の判定結果であるキャッシュ負荷情報を他の全ノードへ通知し(2530)、このフローを終了する。以上がキャッシュ負荷情報更新処理である。
 尚、キャッシュ負荷情報はメッセージ受信プログラム0210で受信され、評価値表更新プログラム0345が、自ノードの評価値表において、#CM_nodeに対応するキャッシュ負荷情報1215を受信されたデータで更新する。
 ここでは前述の空き容量情報更新処理1627の詳細について説明する。
 空き容量情報更新処理1627は、自ノードの空き容量情報を判定し、その空き容量情報を他のノードへ通知する処理と、他のノードから空き容量情報を受信し、自ノードのWrite評価値表1200を更新する処理とを有する。
 図27は、空き容量情報更新処理を示す。
 まず評価値表更新プログラム0345は、自ノード内の容量プールの空き容量#fr_spaceを、BEノード構成管理テーブル0240から読み出す(2605)。次に評価値表更新プログラム0345は、#fr_spaceが空き容量閾値より小さいか否かを判定する(2610)。評価値表更新プログラム0345は、#fr_spaceが空き容量閾値より大きい場合、空き容量が有ると判定し(2620)、それ以外の場合、空き容量が無い(不足する)と判定する(2615)。次にメッセージ送信プログラム0205は、空き容量の判定結果である空き容量情報を他の全ノードへ通知し(2625)、このフローを終了する。以上が空き容量情報更新処理である。
 空き容量情報は受信プログラム0210によって受信される。次に評価値表更新プログラム0345は、自ノードの評価値表において、#BE_nodeに対応する空き容量情報1220を受信されたデータで更新する。
 キャッシュ負荷情報更新処理及び空き容量情報受信処理は、定期的に実行されても良いし、Read及びWriteの回数で予め定められた回数ごとに実行されても良い。また、全ノードを変更対象とすることもできるし、当該更新によって変更のあるノードだけについて更新しても良い。
 以上のキャッシュ負荷情報更新処理及び空き容量情報更新処理によれば、ストレージノード0105は、自ノードのキャッシュ負荷及び空き容量を判定すると共に、他ノードのキャッシュ負荷及び空き容量の判定結果を取得することができる。なお、自ノード状態情報は、キャッシュ負荷情報送信処理及び空き容量情報送信処理により他ノードへ送信されるキャッシュ負荷情報及び空き容量情報等に対応する。他ノード状態情報は、キャッシュ負荷情報受信処理及び空き容量情報受信処理により他ノードから受信されるキャッシュ負荷情報及び空き容量情報等に対応する。また、自ノード状態情報は、自ノードのキャッシュ負荷及び空き容量を示す情報であっても良く、他ノード状態情報は、他ノードのキャッシュ負荷及び空き容量を示す情報であっても良い。この場合、各ノードは、他ノード状態情報に基づいて、他ノードのキャッシュ負荷がキャッシュ負荷閾値以下であるか否かを判定し、他ノードの空き容量が空き容量閾値以上であるか否かを判定しても良い。
 以下、高速Read制御処理について説明する。
 図28は、高速Read制御処理の一例を示す。
 高速Read制御処理は、既にBEノードが決定しているため、第3高速Write制御処理と類似するが、データ転送方向が逆になる。即ち、CMノードへ書き込まれBEノードへ書き込まれた(デステージ)後のデータがCMノードから削除された後、そのデータを読み出すReadコマンドを受信した場合に、高速Read処理が実行される。
 まず高速Read制御プログラム0325は、処理1625、1730と同様のキャッシュ負荷情報更新処理を行う(2805)。次に高速Read制御プログラム0325は、最適なCMノードを選択する第3選択処理を行い(2810)、処理1735でエラーが発生しているかどうかを判定する(2815)。第3選択処理は、前述の第2選択処理と同様であるが、Write評価値表1200に代えてRead評価値表を用いる。Read評価値表はWrite評価値表1200のBEの空き容量1220が管理されている必要が無い点で相違する。又、Readのデータ転送方向はWriteのデータ転送方向と逆であるが、通常は要素1225に格納される転送段数の数は結果的にはWrite評価値表と同じになる。よって、Write評価値表とRead評価値表とを兼用しても良いが、何れかに障害等が生じた場合には転送段数が異なることも考えられるため別に管理してもよい。Read評価値表の作成は図25と同様の手順に沿って行われる。エラーが発生している場合、最適なCMノードが見つからなかったことを意味する。そこでエラーがある場合、高速Read制御プログラム0325は、第3高速Write制御処理の処理1745と同様にして、デフォルトのCMノードを選択する(2820)。
 エラーが発生していない場合、高速Read制御プログラム0325は、仮想ボリューム割り当て管理テーブル0230において、コマンドに指定された仮想記憶領域のレコードを更新する第3レコード更新処理を行う(2825)。第3レコード更新処理は第2レコード更新処理と類似する。違いはS2310だけである。第2レコード更新処理ではS2310においてWriteコマンドから書き込み対象の仮想アドレス#v_addrを抽出するが、第3レコード更新処理ではReadコマンドから書き込み対象の仮想アドレス#v_addrを抽出する。次に高速Read制御プログラム0325は、選択されたCMノードにキャッシュ領域を確保する(2830)。次に高速Read制御プログラム0325は、当該レコードに示されている保存先BEノードのドライブ領域から保存先CMノードのキャッシュ領域へデータを転送する(2835)。次に高速Read制御プログラム0325は、キャッシュ領域への転送を確認し(2850)、キャッシュ領域への転送が完了したか否かを判定する(2855)。転送が完了していれば、高速Read制御プログラム0325は、フローを処理2860へ進める。転送が完了していなければ、高速Read制御プログラム0325は、処理2855で再び確認を行う。次に高速Read制御プログラム0325は、保存先CMノードのキャッシュ領域から自ノードのバッファ0125へデータを転送する(2860)。次に高速Read制御プログラム0325は、バッファ0125への転送を確認し(2865)、バッファ0125への転送が完了したか否かを判定する(2870)。転送が完了していれば、高速Read制御プログラム0325は、フローを処理2880へ進める。転送が完了していなければ、高速Read制御プログラム0325は、処理2865で再び確認を行う。次に高速Read制御プログラム0325は、バッファ0125からホストコンピュータ0100へデータを送信し(2880)、このフローを終了する。以上が高速Read制御処理である。
 この処理によれば、ホストノードは、CMノードの割り当てが解除済みでBEノードを割り当て済みの仮想記憶領域を読み出すReadコマンドに対し、その仮想記憶領域へ最適なCMノードを割り当て、割り当て済みのBEノードから読み出しデータを読み出すことにより、最適な経路で読み出すデータを転送することができる。
 上記説明した実施に加えて、特定の場合については管理コンピュータ0172を介してCMノード、BMノードを設定することもできる。による設定処理について説明する。
 図29は、設定画面の一実施例を示す。
 設定画面は、IO制御判定条件の対象のホストコンピュータ0100を示すホストコンピュータ名が入力されるエディットボックス3405と、対象のポートのポート番号が入力されるエディットボックス3410と、対象の仮想ボリュームのボリューム識別子が入力されるエディットボックス3415とを有する。設定画面は更に、対象のホストコンピュータ0100における対象のアプリケーションのアプリケーション種別が入力されるドロップダウンリスト3420を有する。設定画面は更に、IO制御種別が入力されるドロップダウンリスト3425を有する。IO制御種別は、高速IO制御もしくは通常IO制御である。設定画面は更に、ホストノードの番号が入力されるエディットボックス3430と、CMノードの番号が入力されるエディットボックス3435と、BEノードが入力されるエディットボックス3440とを有する。
 例えば、IO制御プログラム0315は、コマンドに示されているホストコンピュータ名、ポート番号、ボリューム識別子が、エディットボックス3405、3410、3415の値にそれぞれ適合する場合、ホストノード、CMノード、BEノードが、エディットボックス3405、3410、3415の値にそれぞれ一致するように、データ転送経路を制御する。
 この設定画面を用いて、ストレージシステムの管理者が特定のホスト名、ポート番号、ボリューム識別子を有するコマンドに対して、どのCMノードとBEノードを割り当てるべきか設定することができる。
 さらに、アプリケーションにアクセスパターンを事前設定しておき、設定画面を用いてデータ転送量からIO制御種別3425を提示するようにしておいても良い。管理者は提示されたIO制御種別を参考にしてCMノードとBEノードを設定することが可能となる。こうして設定された設定情報0255は、IO制御判定条件を含み、IO制御プログラム0315、高速Write制御プログラム0320、高速Read制御プログラム0325は、設定情報0255に基づいて、IO制御を決定する。この場合、管理コンピュータ0172の設定プログラム0361は、表示装置192に設定画面を表示させ、入力装置193からの入力に基づいて設定情報0371を作成し、複数のストレージノード0105へ送信し、設定情報0255として保存する設定処理を行う。
 又、本画面を本願実施例で設定されたCMノードとBEノードの組を表示するために用いることも可能である。
 設定画面は更に、データ転送経路3445を有し、設定されたデータ転送経路3445を明示することが可能である。
 以下、本発明を適用せずにローカルキャッシュ及び動的容量割り当て機能を用いるストレージシステムと、本実施例のストレージシステム0102とを比較する。
 もし、動的容量割り当て機能を有するストレージシステムにローカルキャッシュを適用し、CMノードを決定した後にBEノードを決定すると仮定すると、データ書き込み時において、BEノードが決定されていないので、ローカルキャッシュを割り当てることができない。
 もし、動的容量割り当て機能を有するストレージシステムにローカルキャッシュを適用し、BEノードを決定した後にCMノードを決定すると仮定すると、動的容量割り当て機能でBEノードを決定した後に、ローカルキャッシュの割り当てを行うことになる。すなわちキャッシュの状態とは無関係にBEノードにキャッシュを割り当てることになる。この時、キャッシュにデータアクセスが集中して大量のデータが転送されており、キャッシュの負荷が高くなる場合がある。この場合は、ホストノードからCMノードへのデータの転送およびCMノードからBEノードへのデータ転送の性能が低下するため、ストレージシステムの性能が低下する場合がある。
 一方、本実施例によれば、キャッシュの負荷の条件を満たすCMノードの候補と、空き容量の条件を満たすBEノードの候補との中から、ネットワーク0101を経由する回数の少ないCMノード及びBEノードの組を選択することにより、ストレージシステム0102におけるネットワーク帯域の消費を防ぎ、データアクセス性能を向上させることができる。これにより、非Any-to-any接続のストレージシステム0102においてノード数の増加による性能低下を防ぐことができ、ノード数に比例する性能スケーラビリティを実現することができる。
 なお、ネットワーク0101が全二重であり、Write時のデータ転送経路とRead時のデータ転送経路が同一である場合、Write評価値表がRead評価値表として用いてられても良く、Read評価値表が省かれても良い。
 なお、前述の第1選択処理、第2選択処理、第3選択処理は、評価値表の評価値の代わりに前述のトポロジ情報等、ネットワーク0101による複数のストレージノード0105間の接続を示す接続情報を用いて、データ転送がネットワーク0101を経由する回数を最少にするCMノード及びBEノードを選択しても良い。この場合、管理コンピュータ0172は、トポロジ情報を複数のストレージノード0105へ送信しても良い。
 本実施例では、複数のホストコンピュータが仮想ボリュームを共有する場合について説明する。以下、実施例1との相違点を中心に説明する。
 図30は、仮想ボリュームの共有を模式的に示す。
 ホストコンピュータ3205、3210は、ストレージシステム0102により提供される仮想ボリューム3215を共有している。即ち、ホストコンピュータ3205、3210が同一の仮想ボリューム3215にデータアクセスする場合がある。ホストコンピュータ3205、3210の夫々は、実施例1のホストコンピュータ0100に相当する。ホストコンピュータは、3台以上存在しても構わない。仮想ボリュームは、2個以上存在しても構わない。
 ストレージシステム0102内のストレージノード0105が、ホストコンピュータ3205、3210の何れかから仮想ボリューム3215内の仮想記憶領域へのWriteコマンドを受信し、当該仮想記憶領域にドライブ領域が割り当てられていないとする。この場合、Writeコマンドを受信したストレージノード0105は、容量プール3220に割り当てられたRAIDグループに属するHDD0155の中からドライブ領域を選び出し、当該仮想記憶領域に割り当てる。
 本実施例において、ホストノードの高速Write制御プログラム0320は、仮想ボリュームへのアクセス頻度が最も高いホストコンピュータを1つ選び、当該仮想ボリュームに対する代表ホストコンピュータとして決定し、代表ホストコンピュータからのデータ転送経路を最適化するCMノード及びBEノードを決定する。CMノード及びBEノードを決定する条件及び方法は、実施例1と同様である。
 なお、アクセス頻度に代えて、当該仮想ボリュームに対するRead及びWriteのデータ転送量等、他のアクセス量が用いられても良い。また、本実施例の高速Write制御プログラム0320は、仮想ボリュームの単位で代表ホストコンピュータを定めること以外にも、仮想ボリュームのページ毎に代表ホストコンピュータを定めることも可能である。
 本実施例によれば、仮想ボリュームにアクセスする複数のホストコンピュータの中からアクセス量が最も多いホストコンピュータを代表ホストコンピュータとして特定し、代表ホストコンピュータからのデータアクセス要求に基づいて、最適なCMノード及びBEノードを選択することにより、最適な経路でデータを転送する確率を向上させることができ、ネットワーク0101の負荷を軽減することができる。
 本発明は、以上の実施例に限定されるものでなく、その趣旨から逸脱しない範囲で、他の様々な形に変更することができる。
 0100:ホストコンピュータ、 0101:ネットワーク、 0102:ストレージシステム、 0105:ストレージノード、 0115:データ通信ユニット、 0120:ローカルルータ、 0125:バッファ、 0130:スイッチ、 0140:メモリ、 0150:コントローラ、 0160:記憶媒体ユニット、 0170:管理用ネットワーク、 0172:管理コンピュータ、 0250:キャッシュメモリ
 

Claims (15)

  1.  少なくとも3以上の複数のストレージ装置を備え、
     前記複数のストレージ装置の夫々は、通信路を介して少なくとも何れか1つの他のストレージ装置に接続されているプロセッサと、前記プロセッサに接続されているキャッシュメモリと、前記プロセッサに接続されている記憶デバイスとを含み、
     前記複数のストレージ装置の中の第1ストレージ装置のプロセッサは、ホストコンピュータに接続され、前記ホストコンピュータに対して仮想ボリュームを提供し、
     前記第1ストレージ装置のプロセッサが前記ホストコンピュータから前記仮想ボリュームへのデータアクセス要求として書き込み要求を受信し、且つ前記データアクセス要求に指定された前記仮想ボリューム内の仮想記憶領域に対して前記複数のストレージ装置の何れかのキャッシュメモリが割り当てられていない場合、前記第1ストレージ装置のプロセッサは、前記データアクセス要求に指定された書き込みデータを前記複数のストレージ装置の中の第2ストレージ装置のキャッシュメモリへ書き込み前記第2ストレージ装置のキャッシュメモリへ書き込まれた前記書き込みデータを前記複数のストレージ装置の中の第3ストレージ装置の記憶デバイスへ書き込むために、前記複数のストレージ装置の中で所定の状態条件を満たす候補の中から、前記第2ストレージ装置及び前記第3ストレージ装置を、前記通信路による前記複数のストレージ装置の間の接続を示す接続情報に基づいて選択する、
    ストレージシステム。
  2.  前記第1ストレージ装置のプロセッサは、前記第1のストレージ装置から前記第2ストレージ装置を経由した前記第3ストレージ装置までの接続数が最も短くなる前記第2ストレージ装置及び前記第3ストレージ装置の組を選択する、
    請求項1に記載のストレージシステム。
  3.  前記第1ストレージ装置のプロセッサは、前記複数のストレージ装置の中で、キャッシュメモリのデータ転送量が特定のデータ転送量閾値より小さいストレージ装置を前記第2ストレージ装置の候補として選択し、前記第2ストレージ装置の候補の中から前記第2ストレージ装置を選択する、
    請求項2に記載のストレージシステム。
  4.  前記第1ストレージ装置のプロセッサは、前記複数のストレージ装置の中で、記憶デバイスの空き容量が特定の空き容量閾値より大きいストレージ装置を前記第3ストレージ装置の候補として選択し、前記第3ストレージ装置の候補の中から前記第3ストレージ装置を選択する、
    請求項3に記載のストレージシステム。
  5.  前記第1ストレージ装置のプロセッサが前記書き込み要求を受信し、且つ前記書き込みデータのデータ長が予め定められたデータ長閾値より大きく、且つ前記データアクセス要求に指定された前記仮想ボリューム内の仮想記憶領域に対して前記複数のストレージ装置の何れかのキャッシュメモリが割り当てられていない場合、前記第1ストレージ装置のプロセッサは、前記第2ストレージ装置及び前記第3ストレージ装置を選択する、
    請求項4に記載のストレージシステム。
  6.  前記第1ストレージ装置のプロセッサが前記書き込み要求を受信し、且つ前記書き込みデータのデータ長が前記データ長閾値より大きく、且つ前記仮想記憶領域に前記複数のストレージ装置の何れかのキャッシュメモリが割り当てられておらず、且つ前記仮想記憶領域に前記複数のストレージ装置の何れかの記憶デバイスが割り当てられていない場合、前記第1ストレージ装置のプロセッサは、前記状態条件を満たすストレージ装置の中から、前記書き込みデータが前記通信路を経由する回数が最も少なくなる前記第2ストレージ装置及び前記第3ストレージ装置を、前記接続情報に基づいて選択する、
    請求項5に記載のストレージシステム。
  7.  前記第1ストレージ装置のプロセッサが前記書き込み要求を受信し、且つ前記書き込みデータのデータ長が前記データ長閾値より大きく、且つ前記仮想記憶領域に前記複数のストレージ装置の何れかのキャッシュメモリが割り当てられておらず、且つ前記仮想記憶領域に前記複数のストレージ装置の何れかの記憶デバイスが割り当てられている場合、前記第1ストレージ装置のプロセッサは、前記仮想記憶領域に割り当てられている記憶デバイスを含むストレージ装置を前記第3ストレージ装置として選択し、前記状態条件を満たすストレージ装置の中から、前記書き込みデータが前記通信路を経由する回数が最も少なくなる前記第2ストレージ装置を前記接続情報に基づいて選択する、
    請求項6に記載のストレージシステム。
  8.  前記第1ストレージ装置のプロセッサが前記書き込み要求を受信し、且つ前記書き込みデータのデータ長が前記データ長閾値より大きく、且つ前記仮想記憶領域に前記複数のストレージ装置の何れかのキャッシュメモリが割り当てられておらず、且つ前記仮想記憶領域に前記複数のストレージ装置の何れかの記憶デバイスが割り当てられていない場合、前記第1ストレージ装置のプロセッサは、前記第3ストレージ装置を選択した後、前記第3ストレージ装置の記憶デバイス内の記憶領域を予約し、前記ホストコンピュータへ前記書き込みデータの転送を指示する、
    請求項7に記載のストレージシステム。
  9.  前記第1ストレージ装置のプロセッサが前記書き込み要求を受信し、且つ前記書き込みデータのデータ長が前記データ長閾値より大きく、且つ前記仮想記憶領域に前記複数のストレージ装置の何れかのキャッシュメモリが割り当てられており、且つ前記仮想記憶領域に前記複数のストレージ装置の何れかの記憶デバイスが予約されている場合、前記第1ストレージ装置のプロセッサは、前記仮想記憶領域に割り当てられているキャッシュメモリを含むストレージ装置を前記第2ストレージ装置として選択し、前記予約された記憶領域を含むストレージ装置を前記第3ストレージ装置として選択する、
    請求項8に記載のストレージシステム。
  10.  前記第1ストレージ装置のプロセッサが前記データアクセス要求として読み出し要求を受信し、且つ前記データアクセス要求に指定された読み出しデータのデータ長が前記データ長閾値より大きく、且つ前記データアクセス要求に指定された前記仮想記憶領域に前記複数のストレージ装置の何れかのキャッシュメモリが割り当てられておらず、且つ前記仮想記憶領域に前記複数のストレージ装置の何れかの記憶デバイスが割り当てられている場合、前記第1ストレージ装置のプロセッサは、前記予約された記憶領域を含むストレージ装置を前記第3ストレージ装置として選択し、前記書き込みデータが前記通信路を経由する回数が最も少なくなる前記第2ストレージ装置を前記接続情報に基づいて選択する、
    請求項9に記載のストレージシステム。
  11.  前記第1ストレージ装置のプロセッサは、前記第1ストレージ装置のキャッシュメモリのデータ転送量と記憶デバイスの空き容量との状態を示す自ノード状態情報を送信し、前記複数のストレージ装置の中の前記第1ストレージ装置以外のストレージ装置におけるキャッシュメモリのデータ転送量と記憶デバイスの空き容量との状態を示す他ノード状態情報を受信し、前記自ノード状態情報と前記他ノード状態情報と前記接続情報とに基づいて、前記第2ストレージ装置及び前記第3ストレージ装置を選択する、
    請求項4に記載のストレージシステム。
  12.  前記第1ストレージ装置のプロセッサは、前記第1ストレージ装置のキャッシュメモリのデータ転送量が前記データ転送量閾値より小さいか否かと、前記第1ストレージ装置の記憶デバイスの空き容量が前記空き容量閾値より大きいか否かとを判定して前記自ノード状態情報とし、前記複数のストレージ装置の中の前記第1ストレージ装置以外のストレージ装置のキャッシュメモリのデータ転送量が前記データ転送量閾値より小さいか否かと、前記第1ストレージ装置の記憶デバイスの空き容量が前記空き容量閾値より大きいか否かとの判定結果を示す前記他ノード状態情報を受信する、
    請求項11に記載のストレージシステム。
  13.  前記第1ストレージ装置のプロセッサは、前記第1ストレージ装置が所定の状態条件を満たすか否かを判定し、前記第1ストレージ装置が前記状態条件を満たす場合、前記第1ストレージ装置を、前記第2ストレージ装置及び前記第3ストレージ装置として選択し、前記第1ストレージ装置が前記状態条件を満たさない場合、前記複数のストレージ装置の中で前記第1ストレージ装置以外のストレージ装置の中から、前記第2ストレージ装置及び前記第3ストレージ装置を選択する、
     前記状態条件は、キャッシュメモリのデータ転送量が前記データ転送量閾値より小さく、且つ記憶デバイスの空き容量が前記空き容量閾値より大きいことである、
    請求項12に記載のストレージシステム。
  14.  複数のホストコンピュータが前記仮想ボリュームへアクセスする場合、前記第1ストレージ装置のプロセッサは、前記複数のホストコンピュータの中から、アクセス量が最も多いホストコンピュータを代表ホストコンピュータとして特定し、前記代表ホストコンピュータからのデータアクセス要求に基づいて、前記第2ストレージ装置及び前記第3ストレージ装置を選択する、
    請求項2に記載のストレージシステム。
  15.  少なくとも3以上の複数のストレージ装置を備え、前記複数のストレージ装置の夫々が、通信路を介して少なくとも何れか1つの他のストレージ装置に接続されているプロセッサと、前記プロセッサに接続されているキャッシュメモリと、前記プロセッサに接続されている記憶デバイスとを含むストレージシステムを制御するストレージシステム制御方法であって、
     前記複数のストレージ装置の中の第1ストレージ装置のプロセッサが、ホストコンピュータに接続され、前記ホストコンピュータに対して仮想ボリュームを提供し、
     前記第1ストレージ装置のプロセッサが前記ホストコンピュータから前記仮想ボリュームへのデータアクセス要求として書き込み要求を受信し、且つ前記データアクセス要求に指定された前記仮想ボリューム内の仮想記憶領域に対して前記複数のストレージ装置の何れかのキャッシュメモリが割り当てられていない場合、前記第1ストレージ装置のプロセッサが、前記データアクセス要求に指定された書き込みデータを前記複数のストレージ装置の中の第2ストレージ装置のキャッシュメモリへ書き込み前記第2ストレージ装置のキャッシュメモリへ書き込まれた前記書き込みデータを前記複数のストレージ装置の中の第3ストレージ装置の記憶デバイスへ書き込むために、前記複数のストレージ装置の中で所定の状態条件を満たす候補の中から、前記第2ストレージ装置及び前記第3ストレージ装置を、前記通信路による前記複数のストレージ装置の間の接続を示す接続情報に基づいて選択する、
    ことを備えるストレージシステム制御方法。
     
PCT/JP2013/060448 2013-04-05 2013-04-05 ストレージシステムおよびストレージシステム制御方法 WO2014162586A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US14/234,236 US9015111B2 (en) 2013-04-05 2013-04-05 Storage system and storage system control method
PCT/JP2013/060448 WO2014162586A1 (ja) 2013-04-05 2013-04-05 ストレージシステムおよびストレージシステム制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/060448 WO2014162586A1 (ja) 2013-04-05 2013-04-05 ストレージシステムおよびストレージシステム制御方法

Publications (1)

Publication Number Publication Date
WO2014162586A1 true WO2014162586A1 (ja) 2014-10-09

Family

ID=51657914

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/060448 WO2014162586A1 (ja) 2013-04-05 2013-04-05 ストレージシステムおよびストレージシステム制御方法

Country Status (2)

Country Link
US (1) US9015111B2 (ja)
WO (1) WO2014162586A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017145223A1 (ja) * 2016-02-22 2017-08-31 株式会社日立製作所 計算機システム、計算機システムの制御方法、および記録媒体
JP2018169941A (ja) * 2017-03-30 2018-11-01 富士通株式会社 情報処理装置、方法、及びプログラム
US10459791B2 (en) 2015-02-26 2019-10-29 Hitachi, Ltd. Storage device having error communication logical ports

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9495292B1 (en) * 2013-12-31 2016-11-15 EMC IP Holding Company, LLC Cache management
JP6307962B2 (ja) * 2014-03-19 2018-04-11 日本電気株式会社 情報処理システム、情報処理方法、及び、情報処理プログラム
US10284645B1 (en) * 2014-05-06 2019-05-07 Veritas Technologies Llc Backup from network attached storage to sequential access media in network data management protocol environments
US10019202B2 (en) 2016-01-11 2018-07-10 International Business Machines Corporation Autonomic configuration of storage systems for virtualization
JP6672190B2 (ja) * 2017-01-16 2020-03-25 株式会社東芝 データベースシステムおよびデータ処理方法
US10866912B2 (en) 2017-03-10 2020-12-15 Toshiba Memory Corporation Integrated heterogeneous solid state storage drive
JP2018156594A (ja) * 2017-03-21 2018-10-04 東芝メモリ株式会社 ストレージシステムおよび処理方法
JP7314867B2 (ja) * 2020-06-18 2023-07-26 トヨタ自動車株式会社 マスタ、ネットワークシステム、方法、プログラム、センタ、および車両
CN112286725A (zh) * 2020-10-28 2021-01-29 联想(北京)有限公司 数据处理方法、装置及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006252019A (ja) * 2005-03-09 2006-09-21 Hitachi Ltd ストレージネットワークシステム
JP2009230381A (ja) * 2008-03-21 2009-10-08 Hitachi Ltd ストレージシステム及びボリューム割当方法並びに管理装置
JP2009266119A (ja) * 2008-04-28 2009-11-12 Hitachi Ltd ストレージ装置及びデータ転送方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6289383B1 (en) * 1998-11-30 2001-09-11 Hewlett-Packard Company System and method for managing data retrieval bandwidth
US6389432B1 (en) * 1999-04-05 2002-05-14 Auspex Systems, Inc. Intelligent virtual volume access
US6751703B2 (en) 2000-12-27 2004-06-15 Emc Corporation Data storage systems and methods which utilize an on-board cache
US6748502B2 (en) * 2001-01-12 2004-06-08 Hitachi, Ltd. Virtual volume storage
US7353334B2 (en) * 2002-08-19 2008-04-01 Aristos Logic Corporation Method of increasing performance and manageability of network storage systems using optimized cache setting and handling policies
JP4438457B2 (ja) 2003-05-28 2010-03-24 株式会社日立製作所 記憶領域割当方法、システム及び仮想化装置
US7571168B2 (en) * 2005-07-25 2009-08-04 Parascale, Inc. Asynchronous file replication and migration in a storage network
JP5069011B2 (ja) 2007-01-29 2012-11-07 株式会社日立製作所 ストレージモジュール及び容量プール空き容量調整方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006252019A (ja) * 2005-03-09 2006-09-21 Hitachi Ltd ストレージネットワークシステム
JP2009230381A (ja) * 2008-03-21 2009-10-08 Hitachi Ltd ストレージシステム及びボリューム割当方法並びに管理装置
JP2009266119A (ja) * 2008-04-28 2009-11-12 Hitachi Ltd ストレージ装置及びデータ転送方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10459791B2 (en) 2015-02-26 2019-10-29 Hitachi, Ltd. Storage device having error communication logical ports
WO2017145223A1 (ja) * 2016-02-22 2017-08-31 株式会社日立製作所 計算機システム、計算機システムの制御方法、および記録媒体
US10459638B2 (en) 2016-02-22 2019-10-29 Hitachi Ltd. Computer system that generates group information and redundant code based on user data and changes the group information and redundant code based on transmission data, control method for computer system, and recording medium
JP2018169941A (ja) * 2017-03-30 2018-11-01 富士通株式会社 情報処理装置、方法、及びプログラム

Also Published As

Publication number Publication date
US9015111B2 (en) 2015-04-21
US20150052176A1 (en) 2015-02-19

Similar Documents

Publication Publication Date Title
WO2014162586A1 (ja) ストレージシステムおよびストレージシステム制御方法
US9658779B2 (en) Computer system and control method for computer system
US9785381B2 (en) Computer system and control method for the same
JP5427630B2 (ja) 動的ページ再割当てストレージシステムにおけるアプリケーション及び階層構成の管理
JP4819369B2 (ja) ストレージシステム
US9400759B2 (en) Cache load balancing in storage controllers
JP4452064B2 (ja) 情報処理システム、情報処理装置、情報処理装置の制御方法及びプログラム
US20090276588A1 (en) Free space utilization in tiered storage systems
WO2012049711A1 (en) Data migration system and data migration method
US9323463B2 (en) Storage system and cache control method
US10182110B2 (en) Transfer format for storage system, and transfer method
US10606503B2 (en) Apparatus to reduce a data-migration time for rearranging data between storage hierarchical layers
JP4862067B2 (ja) キャッシュ制御装置及び方法
JP5531091B2 (ja) 計算機システム及びその負荷均等化制御方法
JP2015517697A (ja) 二次記憶装置に基づく記憶領域をキャッシュ領域として用いるストレージシステム及び記憶制御方法
US9361033B2 (en) Compound storage system and storage control method
JP2009043030A (ja) ストレージシステム
US20180307426A1 (en) Storage apparatus and storage control method
JP6294569B2 (ja) ストレージシステム及びキャッシュ制御方法
JP2018197933A (ja) ストレージ制御装置、情報処理システムおよびプログラム
US8732422B2 (en) Storage apparatus and its control method
JP5597266B2 (ja) ストレージシステム
JP2021124796A (ja) 分散コンピューティングシステム及びリソース割当方法
JP2022020926A (ja) ストレージシステム及び処理移行方法
JP6273678B2 (ja) ストレージ装置

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 14234236

Country of ref document: US

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13880837

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP