WO2018029820A1 - 計算機システム - Google Patents

計算機システム Download PDF

Info

Publication number
WO2018029820A1
WO2018029820A1 PCT/JP2016/073600 JP2016073600W WO2018029820A1 WO 2018029820 A1 WO2018029820 A1 WO 2018029820A1 JP 2016073600 W JP2016073600 W JP 2016073600W WO 2018029820 A1 WO2018029820 A1 WO 2018029820A1
Authority
WO
WIPO (PCT)
Prior art keywords
computer
data
computer node
node
virtual machine
Prior art date
Application number
PCT/JP2016/073600
Other languages
English (en)
French (fr)
Inventor
弘明 圷
山本 彰
貴大 山本
良徳 大平
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2016/073600 priority Critical patent/WO2018029820A1/ja
Priority to JP2017561025A priority patent/JP6600698B2/ja
Priority to US15/754,179 priority patent/US10359967B2/en
Publication of WO2018029820A1 publication Critical patent/WO2018029820A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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
    • 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
    • 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/0653Monitoring storage devices or systems
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/08Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers from or to individual record carriers, e.g. punched card, memory card, integrated circuit [IC] card or smart card
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing

Definitions

  • the present invention relates to a computer system.
  • SoE System of Engagement
  • a hyper-converged system can be started from a small-scale server configuration and can support a large-scale scale. For this reason, the market for hyper-converged systems is expanding as a product for private clouds.
  • the hyperconverged system includes a plurality of server nodes each having a local storage. Each server node has a virtualization function and a storage function, and makes data redundant by performing communication via a network.
  • the hyperconverged system is disclosed in, for example, US Pat. No. 8,601,473.
  • US Pat. No. 8,601,473 discloses the following matters. “An improved approach for implementing management of I / O and storage devices in a virtualized environment is disclosed.
  • service VMs are directly attached storage in addition to network and cloud storage. Used to control and manage any type of storage device, including: Service VM implements user space storage controller logic and migrates from one node to another as needed IP-based requests are used to send I / O requests to the service VM, which does not require direct add-on products, and storage and I / O in the direct data access path. (Summary).
  • Flash drives have a lifetime that depends on the number of writes. Due to the need for large capacity and low price, flash drives are becoming more and more multi-cell, and the number of possible writes is decreasing.
  • the life of the storage drive of a specific computer node can be expedited by write load bias among computer nodes and writing redundant data by an application program or storage controller program operating on the computer system.
  • An example of the present invention is a computer system including a plurality of computer nodes communicating via a network, each of the plurality of computer nodes including a local storage and one or more virtual machines, and each of the plurality of computer nodes includes The write data for the local storage is transferred to one or more other computer nodes for redundancy, and the computer included in the computer system acquires information indicating the write load amount by the first virtual machine, and Obtain the remaining writeable amount of the local storage of the placement destination candidate in a plurality of computer nodes, and based on the write load amount of the first virtual machine and the remaining writeable amount of the placement destination candidate computer node , It is determined whether to place the first virtual machine on the placement destination candidate computer node.
  • the life of the storage drive of the computer node can be effectively extended.
  • the flowchart of the VM allocation program which concerns on this embodiment is shown.
  • positioning change program which concerns on this embodiment is shown.
  • the flowchart of the VM migration program which concerns on this embodiment is shown.
  • 3 shows a flowchart of network I / O (transmission) according to the present embodiment.
  • 3 shows a flowchart of network I / O (reception) according to the present embodiment.
  • Each computer node 101 executes a hypervisor 204 that operates a virtual machine (VM) 201.
  • the computer node 101 further includes a network I / O program that handles communication between the VMs 201, and storage that uses local storage as scale-out storage.
  • a control program (for example, a storage I / O program described later) is executed.
  • the VM 201 is a virtual computer configured by the hypervisor 204.
  • the VM 201 executes an OS (guest OS) 203 and an application program 202 on the hypervisor 204.
  • the VM 201 writes these programs to the local drive 113 is a service that operates on the computer node 101.
  • another virtualization technology for example, container technology
  • Container technology constitutes a container instead of a VM.
  • Each computer node 101 includes one or a plurality of storage drives 113.
  • the storage drive 113 has a life corresponding to the write amount.
  • the processor receives information on the remaining writable amount from the storage drive 113.
  • the remaining writable amount is a remaining writable amount with respect to external light.
  • the remaining writable amount is represented by, for example, the data amount per unit time (write throughput) or the number of writes per unit time (write IOPS).
  • the writeable amount is determined using existing technology.
  • the writable amount is defined in advance in the storage drive 113.
  • the writable amount is a value obtained by dividing the specified total writable amount by the specified product life time.
  • the total writable amount is represented by, for example, the data amount or the number of IOs.
  • the total writable amount is determined in consideration of writing to the medium by internal processing including wear leveling.
  • the storage drive 113 calculates the difference between the writable amount and the current write amount from the outside as the remaining writable amount.
  • the current write amount includes a light 210 from the local VM 201 and a light 211 from another computer node 101.
  • the storage drive 113 may correct the current write amount (external write amount) with the write amount by actual internal processing including wear leveling. For example, the current light amount is corrected based on a comparison result between a ratio between the current external light amount and the current internal light amount and a preset value.
  • the remaining write capacity is a negative value, it is necessary to reduce the current write load in order to achieve the specified product life. If the remaining write capacity is a positive value, the product life can be achieved even if the write load is increased accordingly.
  • the processor may calculate the remaining writable amount from the information regarding the lifetime received from the storage drive 113.
  • the processor obtains the operating time and the consumption life rate of the storage drive 113.
  • the consumed life rate indicates a consumed life rate at a life rate of 100%, and is determined by, for example, the number of times the medium can be rewritten and the actual number of times of rewriting.
  • the processor determines the relationship between the write amount (for example, IOPS and throughput) and the change rate of the consumption life rate from the operation time, the consumption life rate, and the total write amount (for example, the number of IOs and the data amount) within the operation time.
  • the processor calculates the change rate of the service life rate that satisfies the specified product life from the operating time and the service life rate, and calculates the writable amount from the relationship between the change rate and the service life rate change rate. decide.
  • the processor holds and manages the remaining writable amount of each storage drive 113 in the memory or storage drive 113.
  • Each computer node 101 also manages the remaining capacity of each storage drive 113.
  • the processor detects that the remaining writable amount of one storage drive 113 is negative, the processor refers to the write amount of the VM 201 that is operating in the computer node 101 and accesses the storage drive 113, and the other computer The VM to be migrated to the node 101 is determined.
  • the processor In determining the migration destination, the processor considers the write amount 211 for redundancy by the storage control program (and the application program 202) in addition to the write amount 210 of the VM to be migrated.
  • the storage control program transmits write data for the local drive to one or a plurality of other computer nodes 101.
  • the computer node 101 that stores the redundant data of the VM 201 changes.
  • transferring data for redundancy is called mirroring, and transferred data is sometimes called mirror data.
  • the processor sets the migration destination computer node 101 so that the remaining writable amount of the computer node 101 that stores redundant data for the migration destination computer node 101 remains positive. select.
  • the migration of the VM 201 is carried out by performing a data migration process on the storage side simultaneously with the live migration, and storing the data in the migration destination local storage.
  • the computer node 101 has, for example, a general server computer configuration.
  • the hardware configuration of the computer node is not particularly limited.
  • the computer node 101 is connected to another computer node via the network 103 through the port 106.
  • the network 103 is configured by, for example, Infini Band or Ethernet.
  • the internal configuration of the computer node connects a port 106, a processor package 111, and a storage drive (hereinafter also referred to as a drive) 113 via an internal network 112.
  • the processor package 111 includes a memory 118 and a processor 119.
  • the memory 118 stores information necessary for control when the processor 119 processes a read or write command and executes a storage function, and also stores storage cache data. Furthermore, the memory 118 stores a program executed by the processor 119, for example.
  • the memory 118 may be a volatile DRAM or a non-volatile SCM (Storage Class Memory).
  • the storage drive 113 is, for example, an HDD (Hard Disk Drive) or SSD (Sdive structure) such as an FC (Fibre Channel), SAS (Serial Attached SCSI), or SATA (Serial Advanced Technology Attachment) or SSD (Sdive configuration) or SSD.
  • HDD Hard Disk Drive
  • SSD SSD
  • FC Fibre Channel
  • SAS Serial Attached SCSI
  • SATA Serial Advanced Technology Attachment
  • SSD Serial configuration
  • the storage drive 113 is managed by the processor package 111 and is accessed from the processor package 111 without going through another computer node.
  • the storage drive 113 is connected to the processor package 111 via a so-called DAS (Direct Access Storage) or back-end switch.
  • the storage drive 113 constitutes a local storage of the computer node 101.
  • the storage drive 113 has a lifetime based on the amount of light from the outside.
  • the storage drive 113 is a flash drive having a flash memory as a medium.
  • the computer system may further include a management computer.
  • FIG. 3 shows a software configuration example of the computer node 101 according to the present embodiment.
  • the hypervisor and the VM are omitted.
  • the computer node 101 executes a storage I / O program 410, a VM arrangement change program 411, a VM allocation program 412, a VM migration program 413, and a network I / O program 414.
  • the processor 119 implements a specific function by operating according to a program.
  • the memory 118 stores management information. Specifically, the memory 118 stores a stripe mapping table 301, a VM information table 302, a storage drive lifetime information table 303, a capacity management table 304, and a page mapping table 305. In addition, the memory includes a buffer 306. Details of each program and table will be described later.
  • FIG. 4A shows a configuration example of the stripe mapping table 301.
  • the stripe mapping table 301 is referred to by the storage I / O program 410 and indicates a computer node to which the write data is transferred in order to make the write data from the VM 201 redundant between nodes.
  • the stripe mapping table 301 has a stripe type number column 311 and corresponding node columns 312 to 315.
  • the write data from the VM 201 is transferred to other computer nodes indicated by the corresponding node columns 312 to 315 for redundancy. Data is transferred in block units of a prescribed size.
  • the value in the stripe type number column 311 is determined from the access destination address of the write data.
  • the access destination address is a logical address of a volume that stores write data. For example, the remainder with respect to the prescribed value of the access destination address of the write data is the stripe type number of the write data (access destination address).
  • the storage I / O program 410 stores the write data in the local storage, calculates a remainder with respect to the specified value of the access destination address, and determines the stripe type number of the write data.
  • the storage I / O program 410 refers to the stripe mapping table 301 and identifies the computer node 101 corresponding to the determined stripe type number.
  • the storage I / O program 410 transfers the write data to the identified computer node 101.
  • FIG. 4B shows a configuration example of the VM information table 302.
  • the VM information table 302 manages information on the VM 201 operating on the computer node 101.
  • the VM information table 302 includes a VM number column 321, a write load amount column 322, a virtual volume capacity column 323, a used capacity column 324, and a template information column 325.
  • the VM number column 321 indicates an identifier of a VM operating on the computer node 101 that holds the VM information table 302.
  • the write load amount column 322 indicates the write load amount generated by the VM 201.
  • the write load amount is a write amount per unit time, for example, the number of writes per unit time or the amount of write data.
  • the unit of the write load amount is the same unit as the remaining writable amount.
  • the virtual volume capacity column 323 indicates the definition capacity (virtual capacity) of the virtual volume used by the VM 201.
  • the used capacity column 324 indicates the capacity used by the VM 201 in the virtual volume.
  • the virtual volume used by the VM 201 stores the image data of the VM 201.
  • the image data of the VM 201 contains programs and data that are executed / used by the VM 201.
  • the template information column 325 includes the specification of the VM 201.
  • the template information column 325 indicates information on the OS and application program operating on the VM 201 and the write amount assumed in accordance with the execution program.
  • the template information column 325 is set by the administrator.
  • FIG. 4C shows a configuration example of the storage drive life information table 303.
  • the storage drive life information table 303 manages information about the life of the storage drive 113.
  • the storage drive life information table 303 includes a drive number column 331, a remaining writable amount column 332, an operation time column 333, a consumption life rate column 334, and a WA (Write Amplification) model column 335.
  • the drive number column 331 indicates the identifier of the local drive 113 of the computer node 101 that holds the storage drive life information table 303.
  • the remaining writable amount column 332 indicates the remaining writable amount of each storage drive 113. The remaining writable amount can be calculated as described above.
  • the operation time column 333 indicates the operation time of each storage drive 113.
  • the consumed life rate column 334 indicates the consumed life rate of each storage drive 113.
  • the consumption life rate represents the degree of wear due to the light of the storage drive 113.
  • the WA model column 335 stores information on the WA model representing the write amplification properties of each storage drive 113.
  • the WA model indicates, for example, the relationship between the used capacity of the storage drive 113 and the WA.
  • the WA model is represented by a graph or an approximate expression. The WA model can be used to calculate the remaining write capacity.
  • FIG. 4D shows a configuration example of the capacity management table 304.
  • the capacity management table 304 manages the capacity of each storage drive 113.
  • the capacity management table 304 includes a drive number column 341, a remaining capacity column 342, a physical capacity column 343, a logical capacity column 344, and a compression rate column 345.
  • the remaining capacity column 342 indicates the remaining physical capacity of each storage drive 113.
  • the physical capacity column 343 indicates the physical capacity of each storage drive 113.
  • the logical capacity column 344 indicates the capacity of each storage drive 113 as viewed from the processor 119.
  • the compression rate column 345 indicates the current data compression rate of each storage drive 113.
  • Information of the capacity management table 304 is provided from each storage drive 113.
  • FIG. 4E shows a configuration example of the page mapping table 305.
  • the page mapping table 305 manages data stored in the storage drive 113 or the buffer 306 of the computer node 101 that holds the page mapping table 305.
  • the page mapping table 305 shows the correspondence between the virtual volume page and the storage drive 113 (physical drive) page.
  • the page mapping table 305 further indicates the relationship between these pages and the pages in the buffer.
  • the page mapping table 305 includes a hash value column 351, a transfer information column 352, a node number (1) column 353, a virtual volume (VVOL) number (1) column 354, and a page number (1) column 355.
  • the page mapping table 305 further includes a node number (2) column 356, a virtual volume (VVOL) number (2) column 357, a page number (2) column 358, a buffer address column 359, a drive number column 360, and a page number column. 361.
  • the page mapping table 305 in this example is a hash table.
  • the hash value column 351 stores the hash value of page data.
  • a page is a unit for assigning a storage area to a virtual volume.
  • the redundancy block and the page size may be the same.
  • the buffer address column 359 manages the buffer in units of pages.
  • the transfer information column 352 shows information on the data attribute and transfer processing of each entry. Specifically, the transfer information column 352 is a network in which the entry data is storage I / O data reflected in the local drive 113 or is transferred between the computer nodes 101 and not reflected in the local drive 113. Indicates whether the data is I / O data.
  • Storage I / O data and network I / O data information are stored in different entries even if they have the same hash value.
  • Storage I / O data is processed by the storage I / O program 410, and network I / O data is processed by the network I / O program 414.
  • Network I / O data is transfer data between VMs 201 (for example, between application programs 202) of different computer nodes 101.
  • the buffer 306 stores network I / O data to be transferred to the other computer node 101 and network I / O data received from the other computer node 101.
  • the VM 201 (application program 202) writes the network I / O data transferred from the other computer node 101 to the storage drive 113, and passes the data to the storage I / O program 410 together with the write request as write data.
  • Storage I / O data includes normal write data and mirror data transferred from another computer node 101.
  • the transfer information column 352 indicates whether the storage I / O data is write data or mirror data.
  • the transfer information column 352 indicates whether the data of each entry has been transferred to another computer node 101. When the entry data is transferred data, the transfer information column 352 indicates information of the transfer destination computer node 101.
  • the node number (1) column 353, the virtual volume (VVOL) number (1) column 354, and the page number (1) column 355 indicate pages of a virtual volume in which data having a hash value is stored.
  • the node number (2) column 356, virtual volume (VVOL) number (2) column 357, and page number (2) column 358 indicate pages of other virtual volumes in which data having the same hash value is stored.
  • FIG. 4E clearly shows two virtual page columns, but the page mapping table 305 has three or more virtual page columns.
  • the data is only logically stored in the virtual volume, and the actual data is stored in the storage drive 113 having a physical storage area.
  • a cell that does not have a corresponding value stores, for example, a NULL value.
  • the data entry stored only in the buffer 306 has a NULL value in the cell that stores information about the address of the virtual volume and the storage drive.
  • the buffer address column 359 indicates the address of the buffer 306 in which data having a hash value is stored.
  • the drive number column 360 and the page number column 361 indicate pages of the storage drive 113 in which data having hash values is actually stored.
  • the buffer address column 359 and the drive number column 360 indicate the pages of the buffer 306 and the storage drive 113 included in the computer node 101 that holds the page mapping table 305.
  • the page mapping table 305 indicates the reference relationship between the hash value and the address, and further indicates the reference relationship between the logical address (virtual volume address) and the physical address.
  • the target data is parity
  • a plurality of logical addresses of data used for generating the parity are associated with each other.
  • the target data When the target data is real data, usually one logical address (virtual volume page) is associated.
  • a common physical page is allocated to different logical addresses for storing the duplicate data by exclusion.
  • FIG. 5 shows a flowchart of storage I / O processing (read) according to the present embodiment.
  • the storage I / O program 410 receives the read request, it operates according to the flowchart.
  • the storage I / O program 410 reads data with reference to the execution status of the VM migration processing by the VM migration program 413 described later.
  • the VM migration program 413 executes live migration of the VM 201.
  • the data of the VM 201 including the application program 202 and the OS 203 is migrated between the memory 118 of the computer node 101, and the VM image data is further migrated to the storage drive 113 of the migration destination computer node 101.
  • the data is stored in the local drive 113.
  • the target data exists in the migration source computer node 101 or the migration destination computer node 101.
  • the storage I / O program 410 receives a read request from the application program 202, for example.
  • the storage I / O program 410 of the migration destination computer node 101 receives a read request from the migrated application program 202.
  • the storage I / O program 410 determines whether the VM 201 including (managing) the application program 202 and the target data is being migrated (step 601). For example, the storage I / O program 410 inquires of the VM migration program 413 whether the VM 201 is being migrated.
  • the storage I / O program 410 determines whether the target data has been copied to the migration destination computer node 101 (step 602). For example, the storage I / O program 410 inquires of the VM migration program 413 whether the target data has been copied.
  • the storage I / O program 410 reads data from the migration source computer node 101 (step 605).
  • the storage I / O program 410 transmits a read request with an address specified to the migration source computer node 101, and receives the returned target data.
  • step 602 If the target data has been copied (step 602: YES), the storage I / O program 410 proceeds to step 603. If the VM 201 is not being migrated (step 601: NO), the storage I / O program 410 proceeds to step 603.
  • step 603 the storage I / O program 410 acquires the corresponding physical address from the page mapping table 305.
  • the storage I / O program 410 reads the data of the corresponding physical address from the storage drive 113 (step 604).
  • the latest data can be referred to appropriately without depending on the designated address of the read request.
  • the target data may not exist due to processing (parity conversion) for reducing the data amount, as will be described later.
  • the storage I / O program 410 makes an inquiry to the computer node 101 whose entity is present, or restores data from parity to generate read target data. This destination node can be efficiently searched using a hash table described later.
  • FIG. 6 shows a flowchart of storage I / O processing (Front End write) according to the present embodiment.
  • the front end write is a process from reception of write data to writing to the buffer 306.
  • the Front End write of this example further transfers data that needs redundancy to another computer node 101.
  • the storage I / O program 410 only updates the page mapping table 305 without actually writing the data to the storage drive 113.
  • the virtual write process is executed. Thereby, the write amount to the storage drive 113 is reduced.
  • the storage I / O program 410 calculates the hash value of the write data and compares it with the value of the hash value column 351 of the page mapping table 305. If the same hash value exists, the storage I / O program 410 executes a virtual write process. That is, the storage I / O program 410 adds the access destination of the write request to the hash value entry.
  • one method for detecting duplication of mirror data generated in other nodes by the mirroring function by the application holds a global hash table between the nodes.
  • the hash table indicates the identifier of the node where the corresponding data is stored using the hash value of the data as a key.
  • the hash table may include information on the identifier of the node that is the reference source of the data.
  • the hash table may be partially retained using a predetermined algorithm (for example, LRU algorithm) for efficient memory usage.
  • the hash value assigned to the node may be determined using a consistent hash so that the hash value of the data uniquely corresponds to the node, and the responsible node may hold a hash table of the assigned range.
  • the storage I / O program 410 searches the global hash table (the hash table corresponding to the hash value) when the same hash value does not exist as compared with the value of the hash value column 351 of the page mapping table 305 described above. (Sends the node number and hash value to the node that manages the server to inquire).
  • the storage I / O program 410 receives the node number and page address information, and executes the above-described virtual write processing.
  • the inquiry destination node of the global hash table records the inquiry source node information in association with the hash value.
  • the storage I / O program 410 proceeds to step 705.
  • the inquiry destination node of the global hash table records the information of the inquiry source node in association with the hash value as the data holding node.
  • the storage I / O program 410 transfers only the metadata to the transfer destination computer node 101.
  • the transfer destination computer node is indicated by the stripe mapping table 301.
  • the metadata indicates a hash value and a write data target address (virtual volume logical address).
  • the transfer destination computer node 101 updates the page mapping table 305 with the received metadata.
  • the storage I / O program 410 refers to the transfer information column 352 of the page mapping table 305 to determine whether duplicate data has been transferred.
  • the storage I / O program 410 transfers the write data to the computer node 101 indicated by the stripe mapping table 301.
  • the storage I / O program 410 transmits the write data target address together with the write data.
  • the storage I / O program 410 When the storage I / O program 410 receives a write request, it operates according to the flowchart. For example, the storage I / O program 410 receives a read request from the application program 202. When the VM 201 executing the application program 202 is being migrated, the storage I / O program 410 of the migration destination computer node 101 receives a write request from the migrated application program 202.
  • the storage I / O program 410 determines whether the VM 201 including (managing) the application program 202 and the target data (address) is being migrated (step 701). For example, the storage I / O program 410 inquires of the VM migration program 413 whether the VM 201 is being migrated.
  • the storage I / O program 410 determines whether or not the data at the target address has been copied to the migration destination computer node 101 (step 709). For example, the storage I / O program 410 inquires of the VM migration program 413 whether the data at the target address has been copied. If the copying has not been completed (step 709: NO), the storage I / O program 410 transfers the write request to the migration source computer node 101 (step 710) and ends the processing.
  • step 709 If the data at the target address has been copied (step 709: YES), the storage I / O program 410 continues the process because the latest data exists in the migration destination computer node 101. When the VM 201 is not being migrated (step 701: NO), the storage I / O program 410 similarly continues the process.
  • the storage I / O program 410 calculates a hash value of the write data (step 702). For the calculation of the hash value, a generally known method such as CRC, MD5, or SHA can be used.
  • the storage I / O program 410 searches the hash value column 351 of the page mapping table 305.
  • the storage I / O program 410 determines whether or not the write data has been written based on whether or not the same value as the calculated hash value exists (step 703).
  • This step also checks the hash value match for the data in the buffer 306, and determines whether it has been written.
  • the buffer data is also managed by the page mapping table 305.
  • the storage I / O program 410 updates the page mapping table 305 (step 704). Specifically, the storage I / O program 410 associates a page with a physical address that has already been written with a virtual page to be written.
  • This process allows multiple logical pages to correspond to one physical page, reducing the amount of data written to the drive and increasing the usable storage capacity.
  • step 704 if the buffer received and written by the network I / O program 414 described later has the same data, it is considered that the data is generated by the redundancy process of the application program 202. It is done.
  • the storage I / O program 410 may use the data in the same manner as the mirror data by the storage I / O.
  • the storage I / O program 410 generates parity from the data and other mirror data, and registers the information in the page mapping table 305.
  • the storage I / O program 410 writes data to the local storage (storage drive 113) and makes the data redundant between the computer nodes 101.
  • the network I / O program 414 is not stored in the local storage (storage drive 113), and performs data transfer between VMs 201 of different computer nodes 101.
  • an application program 202 (for example, NoSQL) having a data redundancy function transfers data to another computer node 101 by the network I / O program 414 for redundancy.
  • Redundant data resulting from network communication processing by an application program 202 having a data redundancy function (for example, NoSQL) is stored in the buffer 306 of the memory 118. This data is managed by the page mapping table 305.
  • the storage I / O program 410 detects the redundancy of the data by calculating a hash value.
  • Network redundancy is managed by the transfer information column 352 of the page mapping table 305.
  • the transfer information column 352 holds information of the computer node 101 that transferred the data.
  • the storage I / O program 410 transmits only the metadata to the redundancy destination node (step 711), and ends this processing.
  • the metadata indicates a hash value and a storage destination address. In other words, before the storage write I / O is generated, the storage write I / O has occurred or has been made redundant by application network transfer.
  • the storage I / O program 410 writes the write data to the buffer (step 705).
  • the buffer data by the storage I / O program 410 and data by the network I / O program 414 are stored. Since each meaning is different, it is identified and managed by the transfer information column 352 of the page mapping table 305.
  • redundancy is implemented by storage I / O processing.
  • a redundancy destination node is calculated from the stripe mapping table 301 (step 707), data and metadata are transferred to the redundancy destination node (step 708), and when the transfer is completed, the process ends.
  • Metadata is information for identifying data to be transmitted by a transfer destination, and includes information such as a logical address.
  • a plurality of transfer destinations may be selected and a plurality of transfers may be executed according to the redundancy required by the system.
  • FIG. 7 shows a flowchart of storage I / O processing (Back End write) according to the present embodiment.
  • the Back End write reflects unreflected data in the buffer to the storage drive 113 (physical storage area). More specifically, the data stored in the buffer or data generated from the data stored in the buffer is written to the physical storage area of the storage drive 113.
  • the storage I / O program 410 processes the data in the buffer 306 asynchronously with the write request.
  • the storage I / O program 410 may release the storage area in the buffer 306 in synchronization with the write request.
  • the buffer 306 has a predetermined capacity. When the usage rate exceeds the specified value, old data is deleted. Generally, FIFO is used, but other scheduling algorithms (eg, LRU) may be used. Write data to be written to the storage drive 113 is erased after writing to the storage drive 113 (storage medium).
  • the storage I / O program 410 generates parity (Erasure Code) from the mirror data transferred from a plurality of other computer nodes 101 and stored in the buffer 306, and writes only the parity to the storage drive 113. As a result, the write amount to the storage drive 113 is reduced.
  • parity Erasure Code
  • the data (transfer data) stored in the buffer 306 does not need to be written to the storage drive 113 (not unreflected data). Therefore, the data is erased from the buffer 306 without being processed. This is realized by deleting the entry on the page mapping table 305 as the data from the buffer 306 is deleted.
  • the storage I / O program 410 refers to the page mapping table 305 and determines whether there is data not yet reflected in the storage drive 113 (step 801).
  • the transfer information column 352 indicates storage I / O data, and the entries in which the drive number column 360 and the page number column 361 store NULL values indicate unreflected data.
  • the storage I / O program 410 determines whether the unreflected data is mirror data (step 802).
  • the mirror data is data transmitted for redundancy and is data transferred from the other node 101 in step 708.
  • the transfer information column 352 indicates whether the entry data is mirror data.
  • the storage I / O program 410 When the unreflected data is mirror data (step 802: YES), the storage I / O program 410 generates parity together with other mirror data (step 807), and further generates metadata (step 808).
  • Parity generation may use a general Erasure Coding technique (for example, Reed Solomon encoding).
  • the data block group for generating the parity is the data transmitted for redundancy, and at the same time, each transmission source is a different node.
  • the metadata indicates which parity address (or physical address) of which computer node 101 the parity is generated from, and is stored in the page mapping table 305.
  • the metadata is referred to when restoring the data.
  • step 803. the storage I / O program 410 proceeds to step 803.
  • the target data is not mirror data (step 802: NO)
  • the storage I / O program 410 proceeds to step 803.
  • the target data is the write data of the write request issued by the computer node 101 (data written to the buffer in step 705).
  • the storage I / O program 410 executes a series of processing for writing to the storage drive 113 in steps 803 to 806.
  • the storage I / O program 410 refers to the page mapping table 305 and determines whether the correspondence relationship between the target virtual page and the physical page has already been determined (step 803). If a physical page has already been assigned to the target virtual page (step 803: YES), the storage I / O program 410 proceeds to step 805.
  • the storage I / O program 410 changes the page mapping table 305 so that an unallocated physical page is allocated to the virtual page ( Step 804).
  • FIG. 8 shows a flowchart of the VM allocation program 412 according to this embodiment.
  • This process is executed to deploy the VM 201.
  • the deployment of the VM 201 means that the VM 201 is arranged in the computer node 101 and the VM 201 is operated. More specifically, the VM image data is stored in the storage drive 113 of the computer node 101, and the VM 201 is operated on the memory 108.
  • the VM allocation program 412 determines the placement destination based on the writable amount and usable capacity of the placement destination storage drive 113.
  • the user operates a management computer (not shown) or one of the computer nodes 101 (referred to as a user terminal) to instruct the VM allocation program 412 of any one of the computer nodes 101 to deploy the VM 201.
  • the instruction indicates the location of the VM image data and the configuration information of the VM image data.
  • the VM allocation program 412 that has received the instruction executes the processing of the flowchart of FIG.
  • the management computer may execute this process.
  • the VM allocation program 412 acquires information on the allocation-target candidate computer node 101 (step 901). Specifically, the VM allocation program 412 acquires the VM information table 302, the storage drive life information table 303, and the capacity management table 304 from these computer nodes 101.
  • the computer system may centrally manage information of the computer node 101 using a distributed database (SQL, NoSQL), KVS (Key Value Store), or the like.
  • the VM allocation program 412 acquires the information from the database.
  • the VM allocation program 412 determines a computer node 101 that satisfies the free space requirement for the VM 201 to be deployed (step 902).
  • the required free space for the VM 201 is specified by the user or preset for a program included in the VM 201.
  • the VM allocation program 412 refers to the capacity management table 304 of each computer node 101 and determines the computer node 101 having the necessary free capacity from the value of the remaining capacity column 342.
  • the free capacity is calculated, for example, for each pool, and one of the pools is required to have the necessary free capacity.
  • the capacity management table 304 manages information on the capacity of the storage drive 113 for each pool. Note that the capacity management table 304 illustrated in FIG. 4D indicates information of one pool. In the following, each computer node 101 has one pool.
  • step 903 If there is no computer node 101 that satisfies the free space requirement (step 903: NO), the VM 201 cannot be deployed.
  • the VM allocation program 412 outputs an error message to the user terminal (step 907).
  • the VM allocation program 412 can write to the VM 201 to be deployed (remaining writable amount) in the computer node group.
  • the computer node 101 that satisfies the above requirement is determined (step 904).
  • the VM allocation program 412 calculates the write load amount of the VM 201 to be deployed from the specified write load amount of the executed program (including the OS and application program). Further, the VM allocation program 412 calculates the remaining writable amount of each computer node 101 when the VM 201 is deployed from the information in the storage drive life information table 303.
  • the calculated remaining writable amount is the minimum remaining writable amount in the storage drive 113 allocated to the deployed VM 201.
  • the VM allocation program 412 estimates the write load amount from the VM 201 for each storage drive 113.
  • the VM allocation program 412 includes the number of storage drives 113 that provide storage areas for the pool, or the capacity that the storage drives 113 provide to the pool, the preset write load amount of the VM 201, the WA model 335, stripes
  • the write load amount of the VM 201 with respect to each storage drive 113 is estimated based on the consideration of the write increase due to storage mirroring by the mapping table 301.
  • the VM allocation program 412 estimates the remaining writable amount of each storage drive 113 from the value indicated by the remaining writable amount column 332 of the storage drive life information table 303 and the estimated write load amount of the VM 201 with respect to the storage drive 113. When all the remaining writable amount values are positive, the remaining writable amount requirement is satisfied. When the computer node 101 has a plurality of pools, the requirement for the remaining writable amount of free capacity is determined for each pool.
  • the VM allocation program 412 When there is no computer node 101 that satisfies the writable amount requirement (step 905: NO), the VM allocation program 412 outputs a warning message indicating that the life requirement may not be satisfied at the user terminal (Ste 908). Further, the VM allocation program 412 selects one computer node 101 determined to satisfy the free capacity requirement in step 902 (step 909), and deploys the VM 201 to the computer node 101 (step 906).
  • the VM allocation program 412 that has received an instruction from the user terminal transfers the selected VM image data to the computer node 101, and further instructs the computer node 101 to deploy the VM 201.
  • the VM allocation program 412 deploys the VM 201 to the computer node 101 (step 906).
  • the VM 201 can be deployed to an appropriate computer node 101 that satisfies the requirements for the writable amount and the free space.
  • the VM allocation program 412 further considers mirror data transferred between the computer nodes 101 for redundancy by deploying the VM 201 in determining the deployment destination.
  • the mirror data of the VM 201 is transferred from the computer node 101 to the computer node 101 indicated by the stripe mapping table 301.
  • the write load increases.
  • the VM allocation program 412 determines the deployment destination computer node 101 so that the value of the remaining writable amount becomes positive also in the transfer destination computer node 101.
  • a function indicating an increase in the write load amount at the computer node i with respect to an increase in the write load amount at the computer node r due to the replication of the storage I / O program 410 is set in advance.
  • the VM allocation program 412 estimates the write load amount that increases in the other computer nodes 101 indicated by the stripe mapping table 301 when the VM 201 is deployed to the deployment destination candidate using the function.
  • the VM allocation program 412 estimates the remaining writable amount in other computer nodes 101 from the estimated increase in the write load amount and information in the storage drive life information table 303.
  • the VM 201 is deployed to a more appropriate computer node 101 by referring to the remaining writable amount of the computer node 101 that constitutes the redundancy group of the storage destination and storage I / O in addition to the writeable amount of the deployment destination of the VM 201 be able to.
  • FIG. 9 shows a flowchart of the VM arrangement change program 411 according to the present embodiment.
  • the arrangement of the deployed VM 201 is reviewed, and the VM 201 is migrated so as to satisfy the requirements for the writable amount and the free space.
  • This process may be executed periodically by each computer node 101 or may be executed when an event such as activation / termination of the VM 201 occurs. It may be executed when the write load of the VM 201 changes greatly, such as when the setting of the application program 202 is changed.
  • the VM arrangement changing program 411 may sequentially select the VMs 201 operating on the own computer node 101 and execute this flow.
  • the VM placement change program 411 determines whether the remaining writable amount of the own computer node 101 is insufficient (step 1006). For example, the VM arrangement changing program 411 compares the largest remaining capacity with a threshold value. When the remaining writable amount of the own computer node 101 is not insufficient (step 1006: NO), the VM arrangement change program 411 ends this processing.
  • step 1001: YES When the free space of the own computer node 101 is insufficient (step 1001: YES) or the remaining writable amount is insufficient (step 1006: YES), the VM arrangement change program 411 is a migration destination candidate. Information on the computer node 101 is acquired (step 1002). Step 1002 is the same as step 901. The computer node 101 from which information is acquired may be limited in advance.
  • the VM placement change program 411 determines the computer node 101 that satisfies the free space requirement for the target VM 201 (step 1003). Step 1003 is similar to step 902.
  • the VM arrangement change program 411 outputs an error message to the management terminal (user terminal) (step 1005).
  • Step 1004 When there is a computer node 101 that satisfies the free space requirement (step 1004: YES), the VM placement change program 411 executes steps 1007 to 1010. Steps 1007 to S1009 are the same as steps 904, 905, and 908.
  • the VM placement change program 411 uses the VM migration program 413 to assign the VM 201 Transition to the computer node 101. Details of the VM 201 migration method will be described later.
  • the VM 201 can be migrated to an appropriate computer node 101 that satisfies the writeable amount and free capacity conditions.
  • FIG. 10 shows a flowchart of the VM migration program 413 according to this embodiment.
  • live migration of the VM 201 and migration of VM image data are executed simultaneously.
  • the VM 201 is migrated while maintaining the local read by the VM 201.
  • the local read is a data read from the local storage not via the network.
  • the migration destination VM migration program 413 creates an access path from the migration source to the migration destination computer node 101 (step 1101). For example, the VM migration program 413 performs login processing so that the VM 201 can access the migration source volume from the migration destination computer node 101.
  • the VM migration program 413 creates a virtual volume at the migration destination (step 1102). It is desirable for the VM migration program 413 to create a volume having the same size as the migration source.
  • the VM migration program 413 executes live migration of the VM 201 (step 1103).
  • the VM migration program 413 copies the page from the migration source to the migration destination (step 1104).
  • the VM migration program 413 has a copy pointer (sequential pointer indicating the position from the beginning to the end of the volume), and executes copying in order of LBA. Further, at this time, it is used for determination of copying in step 602 and step 709, and if it is before the copy pointer, it can be determined that it has been copied, and if it is after, it can be determined that it has not been copied.
  • the VM migration program 413 determines whether all copying has been performed (step 1105). For example, when the copy pointer reaches the end of the volume, the VM migration program 413 considers that all copies have been completed.
  • the VM migration program 413 deletes the migration source virtual volume and its access path (step 1106).
  • pages used by the virtual volume are released as unused pages, and the usable capacity increases.
  • the data on the buffer used for the network I / O may be released.
  • the VM 201 can be migrated while continuing the storage I / O.
  • FIG. 11 shows a flowchart of network I / O (transmission) according to the present embodiment. This process is called from the hypervisor 203 during communication between the application programs 202 of different computer nodes 101.
  • the network I / O program 414 checks the hash value of the transmission data, and checks whether the data is written to the storage drive 113 or the buffer 306.
  • the network I / O program 414 transmits only the metadata. Otherwise, the network I / O program 414 sends the mirror data along with the metadata. This reduces the amount of data transferred between computer nodes.
  • the network I / O program 414 generates a hash value of the transmission target data (step 1201).
  • the network I / O program 414 checks whether the same data has already been transmitted to the destination computer node 101 (step 1202).
  • the network I / O program 414 refers to the page mapping table 305 and searches for an entry for the hash value.
  • the hash value entry exists and the transfer information column 352 indicates that the data has not been transmitted to the transmission destination, the data is transmitted to the transmission destination (step 1204), and the data is written to the buffer 306 ( Step 1205), the process ends.
  • the network I / O program 414 updates the page mapping table 305.
  • the network I / O program 414 may update only the hash value of the page mapping table 305 without writing the data to the buffer 306.
  • the destination computer node 101 holds the data in the buffer 306.
  • the network I / O program 414 transmits only the metadata (step 1203) and ends the process.
  • the metadata includes, for example, a hash value so that the data can be referred to by the hash value at the transmission destination.
  • FIG. 12 shows a flowchart of network I / O (reception) according to the present embodiment.
  • This process is called back from the hypervisor during communication by the application between the VMs 201.
  • This process is called back from the hypervisor during communication by the application between the VMs 201.
  • the network I / O program 414 determines whether the received data is metadata or data (step 1301). If it is metadata, the network I / O program 414 refers to the page mapping table 305, calculates the data position from the metadata (step 1302), and reads the data from the data position (buffer, drive, etc.) (step 1303).
  • the data position can be identified by searching the page mapping table 305 with the hash value.
  • the network I / O program 414 inquires of the computer node 101 where the data exists or restores the data from the parity.
  • the network I / O program 414 stores the data in the reception area of the application program 202 (step 1305), and ends the process. If the received data is not metadata (if it is data), the network I / O program 414 writes the data to the buffer 306 (step 1304) and stores the data in the data receiving area (step 1305). ).
  • the network transfer amount can be reduced in cooperation with the processing on the transmission side described with reference to FIG.
  • this embodiment can improve the efficiency of processing in a computer system (hyperconverged system) that integrates storage, a network, and computing.
  • the computer system acquires information on the remaining writable amount (lifetime) of the local storage of the computer node, and changes the VM arrangement according to the write load amount of the VM.
  • the increase in the write amount to the local storage by a scalable application (such as NoSQL) operating on the hyper-converged system is reduced by deduplication of data and erasure coding, and the storage usage capacity is further improved.
  • this embodiment has high scalability because each computer node manages the capacity and the remaining writable amount. According to this embodiment, even in a large-scale computer environment, it is possible to reduce the cost of the medium while reducing the number of maintenance.
  • a buffer may be allocated to the storage area of the storage drive, and the optimum buffer amount may be dynamically adjusted according to the load (write amount, etc.).
  • this invention is not limited to the above-mentioned Example, Various modifications are included.
  • the above-described embodiments have been described in detail for easy understanding of the present invention, and are not necessarily limited to those having all the configurations described.
  • a part of the configuration of one embodiment can be replaced with the configuration of another embodiment, and the configuration of another embodiment can be added to the configuration of one embodiment.
  • each of the above-described configurations, functions, processing units, and the like may be realized by hardware by designing a part or all of them with, for example, an integrated circuit.
  • Each of the above-described configurations, functions, and the like may be realized by software by interpreting and executing a program that realizes each function by the processor.
  • Information such as programs, tables, and files for realizing each function can be stored in a recording device such as a memory, a hard disk, or an SSD, or a recording medium such as an IC card or an SD card.
  • the control lines and information lines are those that are considered necessary for the explanation, and not all the control lines and information lines on the product are necessarily shown. In practice, it may be considered that almost all the components are connected to each other.

Abstract

ネットワークにより通信する複数の計算機ノードを含む計算機システムであって、前記複数の計算機ノードそれぞれは、ローカルストレージと1以上の仮想マシンを含み、前記複数の計算機ノードそれぞれは、そのローカルストレージに対するライトデータを、冗長化のために1又は複数の他の計算機ノードに転送し、前記計算機システムに含まれる計算機は、第1の仮想マシンによるライト負荷量を示す情報を取得し、前記複数の計算機ノードにおける配置先候補のローカルストレージの残ライト可能量を示す取得し、前記第1の仮想マシンのライト負荷量と、前記配置先候補の計算機ノードの前記残ライト可能量と、に基づき、前記第1の仮想マシンを前記配置先候補の計算機ノードに配置するか決定する。

Description

計算機システム
本発明は、計算機システムに関する。
 SoE(Systems of Engagement)型のITインフラストラクチャに対するニーズの拡大により、アジリティ、スケーラビリティ、及びコスト対効果の高いITインフラストラクチャが求められている。
 例えば、ハイパーコンバージドシステムは、小規模のサーバ構成から開始することができ、大規模スケールまで対応可能である。そのため、プライベートクラウド向け製品として、ハイパーコンバージドシステムの市場が拡大してきている。ハイパーコンバージドシステムは、それぞれがローカルストレージを有する複数のサーバノードを含む。サーバノードは、それぞれ、仮想化機能及びストレージ機能を有し、ネットワークを介して通信を行うことでデータを冗長化する。
 ハイパーコンバージドシステムは、例えば、米国特許第8601473号に開示されている。米国特許第8601473号は、例えば、以下の事項を開示する。「仮想化環境におけるI/Oとストレージデバイスの管理を実装するための改良されたアプローチが開示されている。いくつかのアプローチによると、サービスVMは、ネットワークとクラウドストレージに加えて、直接接続ストレージを含むストレージデバイスのいずれかのタイプを、制御および管理するために使用されます。サービスVMは、ユーザ空間でのストレージコントローラロジックを実装し、あるノードから別のノードに、必要に応じて移行することができる。IPベースの要求は、サービスVMへのI/O要求を送信するために使用される。サービスVMは直接アドオン製品を必要とせずに、直接データアクセスパス内のストレージおよびI/Oの最適化を実現できる。」(要約)。
 一方、IoTやデータ分析のニーズが拡大し、フラッシュドライブを用いるシステムの市場が拡大している。フラッシュドライブは、書き込み回数に依存する寿命をもっている。大容量・低価格化のニーズから、フラッシュドライブのマルチセル化が進み、書き込み回数可能回数は低下している。
米国特許第8601473号
 例えば、ハイパーコンバージドシステムのように、仮想化機能を有する複数の計算機ノード間でネットワークを介して互いに通信を行う従来の計算機システムは、使用する記憶ドライブの寿命を考慮していない。
 そのため、計算機ノード間でライト負荷の偏りや、計算機システム上で動作するアプリケーションプログラムやストレージコントローラプログラムによる、冗長データの書き込みにより、特定の計算機ノードの記憶ドライブの寿命の消費が早くなり得る。
 本発明の一例は、ネットワークにより通信する複数の計算機ノードを含む計算機システムであって、前記複数の計算機ノードそれぞれは、ローカルストレージと1以上の仮想マシンを含み、前記複数の計算機ノードそれぞれは、そのローカルストレージに対するライトデータを、冗長化のために1又は複数の他の計算機ノードに転送し、前記計算機システムに含まれる計算機は、第1の仮想マシンによるライト負荷量を示す情報を取得し、前記複数の計算機ノードにおける配置先候補のローカルストレージの残ライト可能量を示す取得し、前記第1の仮想マシンのライト負荷量と、前記配置先候補の計算機ノードの前記残ライト可能量と、に基づき、前記第1の仮想マシンを前記配置先候補の計算機ノードに配置するか決定する。
 本発明の一態様により、仮想化機能を有する複数の計算機ノード間でネットワークを介して互いに通信を行う計算機システムにおいて、効率的に計算機ノードの記憶ドライブの寿命を延ばすことができる。
本実施形態に係る計算機システムの概要を示す。 本実施形態に係る計算機システムの構成例を示す。 本実施形態に係る計算機ノードのソフトウェア構成例を示す。 ストライプマッピングテーブルの構成例を示す。 VM情報テーブルの構成例を示す。 記憶ドライブ寿命情報テーブルの構成例を示す。 容量管理テーブルの構成例を示す。 ページマッピングテーブルの構成例を示す。 本実施形態に係るストレージI/O処理(リード)のフローチャートを示す。 本実施形態に係るストレージI/O処理(Front Endライト)のフローチャートを示す。 本実施形態に係るストレージI/O処理(Back Endライト)のフローチャートを示す。 本実施形態に係るVM割り当てプログラムのフローチャートを示す。 本実施形態に係るVM配置変更プログラムのフローチャートを示す。 本実施形態に係るVM移行プログラムのフローチャートを示す。 本実施形態に係るネットワークI/O(送信)のフローチャートを示す。 本実施形態に係るネットワークI/O(受信)のフローチャートを示す。
 以下、添付図面を参照して本発明の実施形態を説明する。本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。各図において共通の構成については同一の参照符号が付されている。
 図1は、本実施形態に係る計算機システムの概要を示す。計算機システムは、ネットワークを介して通信する複数の計算機ノード101を含んで構成されている。図1において、三つの計算機ノード101が例示されている。
 各計算機ノード101は、仮想マシン(VM)201を稼働させるハイパーバイザ204を実行する計算機ノード101は、さらに、VM201間の通信を受け持つネットワークI/Oプログラムと、ローカルストレージをスケールアウトストレージにするストレージコントロールプログラム(例えば後述するストレージI/Oプログラム)を実行する。
 VM201は、ハイパーバイザ204により構成される仮想的な計算機である。VM201は、ハイパーバイザ204上で、OS(ゲストOS)203及びアプリケーションプログラム202を実行する。VM201は、ローカルドライブ113にライトするこれらプログラムは、計算機ノード101で動作するサービスである。ハイパーバイザ204に代えて、他の仮想化技術(例えばコンテナ技術)が計算機ノードに適用されてもよい。コンテナ技術は、VMに代えて、コンテナを構成する。
 各計算機ノード101は、1又は複数の記憶ドライブ113を含む。記憶ドライブ113はライト量に応じた寿命を有する。プロセッサは、記憶ドライブ113から、残ライト可能量の情報を受信する。残ライト可能量は、外部からのライトに対する残ライト可能量である。残ライト可能量は、例えば、単位時間あたりのデータ量(ライトのスループット)又は単位時間あたりのライト回数(ライトのIOPS)で表わされる。
 ライト可能量は、既存の技術を使用して決定される。例えば、予め、ライト可能量が、記憶ドライブ113において定義されている。例えば、ライト可能量は、規定の総ライト可能量を規定の製品寿命時間で割った値である。総ライト可能量は、例えば、データ量やIO数で表わされる。総ライト可能量は、ウェアレベリングを含む内部処理による媒体へのライトを考慮して決定される。
 記憶ドライブ113は、残ライト可能量として、ライト可能量と外部からの現在のライト量との差分を、計算する。現在のライト量は、ローカルのVM201からのライト210及び他の計算機ノード101からのライト211を含む。記憶ドライブ113は、現在のライト量(外部ライト量)を、ウェアレベリングを含む実際の内部処理によるライト量により補正してもよい。たとえば、現在の外部ライト量と現在内部ライト量との比と、予め設定された値との比較結果に基づいて、現在のライト量が補正される。
 残ライト可能量がマイナスの値であれば、規定の製品寿命を達成するためには、現在のライト負荷を削減する必要がある。残ライト可能量がプラスの値であれば、その分ライト負荷を増加させても、製品寿命を達成することができる。
 プロセッサは、記憶ドライブ113から受け取った寿命に関する情報から、残ライト可能量を計算してもよい。プロセッサは、記憶ドライブ113の稼働時間と消費寿命率を取得する。消費寿命率は、100%の寿命率において消費された寿命率を示し、例えば、媒体の書き換え可能回数と実際の書き換え回数により決定される。
 プロセッサは、稼働時間、消費寿命率及び稼働時間内の総ライト量(例えばIO回数やデータ量)から、ライト量(例えばIOPSやスループット)と消費寿命率の変化率との関係を決定する。プロセッサは、稼働時間と消費寿命率とから、現在から規定の製品寿命を満たす寿命率の変化率を算出し、さらに、その変化率及び消費寿命率の変化率との関係から、ライト可能量を決定する。
 プロセッサ(計算機ノード101)は、各記憶ドライブ113の残ライト可能量をメモリ又は記憶ドライブ113に保持し、管理する。また、各計算機ノード101は、各記憶ドライブ113の残容量も管理する。
 プロセッサは、一つの記憶ドライブ113の残ライト可能量がマイナスであることを検出すると、当該計算機ノード101で動作しており、当該記憶ドライブ113にアクセスするVM201のライト量を参照し、他の計算機ノード101に移行するVMを決定する。
 移行先の決定において、プロセッサは、移行するVMのライト量210に加え、ストレージコントロールプログラム(及びアプリケーションプログラム202)による冗長化のためのライト量211を考慮する。ストレージコントロールプログラムは、ローカルドライブへのライトデータを、1又は複数の他の計算機ノード101に送信する。VM201が他の計算機ノード101に移行されると、当該VM201の冗長データを格納する計算機ノード101が変化する。なお、以下において、冗長化のためにデータを転送することをミラーリングと呼び、また、転送されるデータをミラーデータとも呼ぶことがある。
 したがって、プロセッサは、移行先の計算機ノード101に加え、移行先計算機ノード101のための冗長データを格納する計算機ノード101の残ライト可能量がプラスを維持するように、移行先の計算機ノード101を選択する。VM201の移行は、ライブマイグレーションと同時にストレージ側のデータの移行処理を実施し、データを移行先のローカルストレージに格納するように動作させる。
 図2は、本実施形態に係る計算機システムの構成例を示す。計算機システムは、ネットワークを介して接続された複数の計算機ノード(単にノードとも呼ぶ)101を含んで構成される。図1において、三つの計算機ノード101が例示されている。
 計算機ノード101は、例えば一般的なサーバ計算機の構成を有している。計算機ノードのハードウェア構成は特に限定されない。計算機ノード101は、ネットワーク103を介して他の計算機ノードとポート106を通じて接続する。ネットワーク103は、例えばInfini Bandや、イーサネットなどにより構成される。
 計算機ノードの内部構成は、内部ネットワーク112を介してポート106、プロセッサパッケージ111、記憶ドライブ(以下においてドライブとも呼ぶ)113を接続する。プロセッサパッケージ111は、メモリ118及びプロセッサ119を含む。
 メモリ118は、プロセッサ119がリードやライト命令を処理し、ストレージの機能を実行する上で、必要な制御用の情報を格納し、また、ストレージのキャッシュデータを格納する。さらに、メモリ118は、例えばプロセッサ119により実行するプログラムを格納する。メモリ118は、揮発性のDRAMであってもよいし、不揮発のSCM(Storage Class Memory)などを用いてもよい。
 記憶ドライブ113は、例えば、FC(Fibre Channel)、SAS(Serial Attached SCSI)、SATA(Serial Advanced Technology Attachment)などのインタフェースを持つHDD(Hard Disk Drive)や、SSD(Solid State Drive)などにより構成される。
 記憶ドライブ113は、プロセッサパッケージ111により管理され、他の計算機ノードを介することなく、プロセッサパッケージ111からアクセスされる。記憶ドライブ113は、いわゆるDAS(Direct Access Stroage)又はバックエンドスイッチを介してプロセッサパッケージ111に接続される。記憶ドライブ113は、計算機ノード101のローカルストレージを構成する。
 上述のように、記憶ドライブ113は、外部からのライト量に基づく寿命を有している。以下の記載において、記憶ドライブ113は、フラッシュメモリを媒体として有するフラッシュドライブとする。計算機システムは、さらに、管理計算機を含んでもよい。
 図3は、本実施形態に係る計算機ノード101のソフトウェア構成例を示す。図3において、ハイパーバイザ及びVMは省略されている。計算機ノード101は、ストレージI/Oプログラム410、VM配置変更プログラム411、VM割り当てプログラム412、VM移行プログラム413、及びネットワークI/Oプログラム414を実行する。プロセッサ119は、プログラムに従って動作することで、特定の機能を実現する。
 メモリ118は、管理情報を格納する。具体的には、メモリ118は、ストライプマッピングテーブル301、VM情報テーブル302、記憶ドライブ寿命情報テーブル303、容量管理テーブル304、及びページマッピングテーブル305を格納する。さらに、メモリは、バッファ306を含む。それぞれのプログラム及びテーブルの詳細は、後述する。
 図4Aは、ストライプマッピングテーブル301の構成例を示す。ストライプマッピングテーブル301は、ストレージI/Oプログラム410により参照され、VM201からのライトデータをノード間で冗長化するために、当該ライトデータを転送する先の計算機ノードを示す。
 ストライプマッピングテーブル301は、ストライプタイプ番号カラム311と、対応ノードカラム312~315を有する。VM201からのライトデータは、冗長化のために、対応ノードカラム312~315が示す他の計算機ノードに転送される。データは、規定サイズのブロック単位で転送される。
 ストライプタイプ番号カラム311の値は、ライトデータのアクセス先アドレスから決定される。アクセス先アドレスは、ライトデータを格納するボリュームの論理アドレスである。例えば、ライトデータのアクセス先アドレスの規定値に対する剰余が、当該ライトデータ(アクセス先アドレス)のストライプタイプ番号である。
 ストレージI/Oプログラム410は、ライトデータをローカルストレージに格納すると共に、アクセス先アドレスの規定値に対する剰余を計算して、当該ライトデータのストライプタイプ番号を決定する。ストレージI/Oプログラム410は、ストライプマッピングテーブル301を参照し、決定したストライプタイプ番号に対応する計算機ノード101を同定する。ストレージI/Oプログラム410は、ライトデータを、同定した計算機ノード101に転送する。
 図4Bは、VM情報テーブル302の構成例を示す。VM情報テーブル302は、当該計算機ノード101で動作するVM201の情報を管理する。具体的には、VM情報テーブル302は、VM番号カラム321、ライト負荷量カラム322、仮想ボリューム容量カラム323、使用容量カラム324、及びテンプレート情報カラム325を有する。
 VM番号カラム321は、VM情報テーブル302を保持する当該計算機ノード101上で動作するVMの識別子を示す。ライト負荷量カラム322は、VM201が発生させるライト負荷量を示す。ライト負荷量は、単位時間当たりのライト量であり、例えば、単位時間当たりのライト回数又はライトデータ量である。ライト負荷量の単位は、上記残りライト可能量と同様の単位である。
 仮想ボリューム容量カラム323は、VM201が使用している仮想ボリュームの定義容量(仮想容量)を示す。使用容量カラム324は、仮想ボリュームにおいてVM201が使用している容量を示す。VM201が使用している仮想ボリュームが、当該VM201のイメージデータを格納する。VM201のイメージデータは、当該VM201が実行/使用するプログラム及びデータを収容している。
 テンプレート情報カラム325は、VM201の仕様を含む。例えば、テンプレート情報カラム325は、VM201上で動作するOS及びアプリケーションプログラムの情報や、実行プログラムに応じて想定されるライト量を示す。テンプレート情報カラム325は、管理者により設定される。
 図4Cは、記憶ドライブ寿命情報テーブル303の構成例を示す。記憶ドライブ寿命情報テーブル303は、記憶ドライブ113の寿命についての情報を管理する。具体的には、記憶ドライブ寿命情報テーブル303は、ドライブ番号カラム331、残ライト可能量カラム332、稼働時間カラム333、消費寿命率カラム334、及びWA(Write Amplivfication)モデルカラム335を有する。
 ドライブ番号カラム331は、記憶ドライブ寿命情報テーブル303を保持する当該計算機ノード101のローカルドライブ113の識別子を示す。残ライト可能量カラム332は、記憶ドライブ113それぞれの残ライト可能量を示す。残ライト可能量は、上述のように計算できる。
 稼働時間カラム333は、記憶ドライブ113それぞれの稼働時間を示す。消費寿命率カラム334は、記憶ドライブ113それぞれの消費寿命率を示す。消費寿命率は、記憶ドライブ113のライトによる磨耗度を表す。
 WAモデルカラム335は、記憶ドライブ113それぞれのWrite Amplificationの性質を現すWAモデル、の情報を格納する。WAモデルは、例えば、記憶ドライブ113の使用容量とWAとの関係を示す。WAモデルは、グラフ又は近似式で表わされる。WAモデルは、残ライト可能量の計算に使用できる。
 図4Dは、容量管理テーブル304の構成例を示す。容量管理テーブル304は、記憶ドライブ113それぞれの容量を管理する。容量管理テーブル304は、ドライブ番号カラム341、残容量カラム342、物理容量カラム343、論理容量カラム344、及び圧縮率カラム345を有する。
 残容量カラム342は、記憶ドライブ113それぞれの、物理容量の残容量を示す。物理容量カラム343は、記憶ドライブ113それぞれの物理容量を示す。論理容量カラム344は、記憶ドライブ113それぞれの、プロセッサ119から見た容量を示す。圧縮率カラム345は、記憶ドライブ113それぞれの、現在のデータ圧縮率を示す。容量管理テーブル304の情報は、記憶ドライブ113それぞれから提供される。
 図4Eは、ページマッピングテーブル305の構成例を示す。ページマッピングテーブル305は、当該ページマッピングテーブル305を保持する計算機ノード101の記憶ドライブ113又はバッファ306に格納されているデータを管理する。
 ページマッピングテーブル305は、仮想ボリュームのページと、記憶ドライブ113(物理ドライブ)のページとの、対応関係を示す。ページマッピングテーブル305は、さらに、それらページとバッファア内のページとの関係を示す。
 ページマッピングテーブル305は、ハッシュ値カラム351、転送情報カラム352、ノード番号(1)カラム353、仮想ボリューム(VVOL)番号(1)カラム354、ページ番号(1)カラム355を有する。ページマッピングテーブル305は、さらに、ノード番号(2)カラム356、仮想ボリューム(VVOL)番号(2)カラム357、ページ番号(2)カラム358、バッファアドレスカラム359、ドライブ番号カラム360、及びページ番号カラム361を有する。
 本例のページマッピングテーブル305は、ハッシュテーブルである。ハッシュ値カラム351は、ページデータのハッシュ値を格納する。ページは、仮想ボリュームに対する記憶領域の割り当て単位である。冗長化ブロックとページサイズは同一でもよい。その場合、バッファアドレスカラム359は、ページ単位でバッファを管理する。
 転送情報カラム352は、各エントリのデータの属性及び転送処理についての情報を示す。具体的には、転送情報カラム352は、エントリのデータが、ローカルドライブ113に反映されるストレージI/Oのデータであるか、又は、計算機ノード101間で転送され、ローカルドライブ113に反映されないネットワークI/Oのデータであるかを示す。
 ストレージI/OのデータとネットワークI/Oのデータの情報は、同一のハッシュ値であったとしても、異なるエントリに格納される。ストレージI/Oのデータは、ストレージI/Oプログラム410により処理され、ネットワークI/OのデータはネットワークI/Oプログラム414に処理される。
 ネットワークI/Oのデータは、異なる計算機ノード101のVM201間(例えばアプリケーションプログラム202間)の転送データである。後述するように、バッファ306は、他の計算機ノード101に転送するネットワークI/Oデータ及び他の計算機ノード101から受信したネットワークI/Oデータを格納する。
 VM201(アプリケーションプログラム202)は、他の計算機ノード101から転送されたネットワークI/Oデータを記憶ドライブ113にライトするため、当該データをライトデータとして、ライト要求と共にストレージI/Oプログラム410に渡す。
 ストレージI/Oデータは、通常のライトデータ及び他計算機ノード101から転送されたミラーデータを含む。転送情報カラム352は、ストレージI/Oのデータが、ライトデータであるか又はミラーデータであるかを示す。
 転送情報カラム352は、各エントリのデータが、他の計算機ノード101に転送済みであるかを示す。エントリのデータが転送済みデータである場合、転送情報カラム352は、転送先計算機ノード101の情報を示す。
 ノード番号(1)カラム353、仮想ボリューム(VVOL)番号(1)カラム354、及びページ番号(1)カラム355は、ハッシュ値を有するデータが格納されている仮想ボリュームのページを示す。
 ノード番号(2)カラム356、仮想ボリューム(VVOL)番号(2)カラム357、及びページ番号(2)カラム358は、同ハッシュ値を有するデータが格納されている他の仮想ボリュームのページを示す。図4Eは、二つの仮想ページのカラムを明示するが、ページマッピングテーブル305は、3以上の仮想ページのカラムを有する。
 なお、データは仮想ボリュームに論理的に格納されているのみであって、実際のデータは物理記憶領域を有する記憶ドライブ113に格納される。該当する値を有していないセルは、例えば、NULL値を格納している。例えば、バッファ306のみに格納されているデータのエントリは、仮想ボリューム及び記憶ドライブのアドレスについて情報を格納するセルにおいて、NULL値を有している。
 バッファアドレスカラム359は、ハッシュ値を有するデータが格納されているバッファ306のアドレスを示す。ドライブ番号カラム360及びページ番号カラム361は、ハッシュ値を有するデータが実際に格納されている記憶ドライブ113のページを示す。バッファアドレスカラム359及びドライブ番号カラム360は、当該ページマッピングテーブル305を保持する計算機ノード101に含まれるバッファ306及び記憶ドライブ113のページを示す。
 このように、ページマッピングテーブル305は、ハッシュ値とアドレスとの間の参照関係を示し、さらに、論理アドレス(仮想ボリュームのアドレス)と物理アドレスとの間の参照関係を示す。対象のデータがパリティの場合、当該パリティを生成するために使用されたデータの複数の論理アドレスが関連付けられる。
 対象のデータが実データである場合、通常一つの論理アドレス(仮想ボリュームのページ)が関連付けられる。対象のデータが重複データである場合、排除により、重複データを格納する異なる論理アドレスに対して、共通の物理ページが割り当てられる。
 図5は、本実施形態に係るストレージI/O処理(リード)のフローチャートを示す。ストレージI/Oプログラム410は、リード要求を受信すると、当該フローチャートに従って動作する。ストレージI/Oプログラム410は、後述するVM移行プログラム413によるVM移行処理の実施状況を参照して、データをリードする。VM移行プログラム413は、VM201のライブマイグレーションを実行する。
 ライブマイグレーションは、アプリケーションプログラム202及びOS203を含むVM201のデータを、計算機ノード101のメモリ118間で移行し、さらに、VMイメージデータを移行先の計算機ノード101の記憶ドライブ113に移行する。
 リード対象のデータを含むVM201が移行中でない場合、データはローカルドライブ113に格納されている。リード対象のデータを含むVM201が移行中である場合、対象データは移行元計算機ノード101又は移行先計算機ノード101に存在している。
 ストレージI/Oプログラム410は、例えば、アプリケーションプログラム202からのリード要求を受ける。アプリケーションプログラム202を実行しているVM201が移行中である場合、移行先計算機ノード101のストレージI/Oプログラム410が、移行済みのアプリケーションプログラム202からリード要求を受ける。
 ストレージI/Oプログラム410は、当該アプリケーションプログラム202及び対象データを含む(管理)するVM201が、移行中であるか判定する(ステップ601)。例えば、ストレージI/Oプログラム410は、VM移行プログラム413に、当該VM201が移行中であるか問い合わせる。
 VM201が移行中であれば(ステップ601:YES)、ストレージI/Oプログラム410は、対象データが、移行先の計算機ノード101にコピー済みかどうかを判定する(ステップ602)。例えば、ストレージI/Oプログラム410は、VM移行プログラム413に、対象データがコピー済みであるか問い合わせる。
 対象データがコピー済みでなければ(ステップ602:NO)、ストレージI/Oプログラム410は、移行元計算機ノード101からデータをリードする(ステップ605)。ストレージI/Oプログラム410は、移行元計算機ノード101に、アドレスを指定してリード要求を送信し、返された対象データを受信する。
 対象データがコピー済みであれば(ステップ602:YES)、ストレージI/Oプログラム410は、ステップ603に進む。VM201が移行中なければ(ステップ601:NO)、ストレージI/Oプログラム410は、ステップ603に進む。
 ステップ603において、ストレージI/Oプログラム410は、ページマッピングテーブル305から対応する物理アドレスを取得する。ストレージI/Oプログラム410は、対応する物理アドレスのデータを記憶ドライブ113からリードする(ステップ604)。
 以上で説明したフローにより、リード要求の指定アドレスに拠らず、適切に最新のデータを参照することができる。なお、アプリケーションプログラム202により複製されたデータがリード対象である場合、後述するように、データ量を削減するための処理(パリティ化)により、当該対象データが存在していない場合がある。ストレージI/Oプログラム410は、その実体がある計算機ノード101に問い合わせる、又は、パリティからデータを修復することにより、リード対象データを生成する。このあて先のノードは、後述するハッシュテーブルを用いて、効率的に検索できる。
 図6は、本実施形態に係るストレージI/O処理(Front Endライト)のフローチャートを示す。Front Endライトは、ライトデータを受信してから、バッファ306にライトするまでの処理である。本例のFront Endライトは、さらに、冗長化が必要なデータを他の計算機ノード101に転送する。
 本処理の概要を説明する。受信したライトデータと同一のデータが既に記憶ドライブ113に格納されている場合、ストレージI/Oプログラム410は、記憶ドライブ113への実際にデータをライトせずに、ページマッピングテーブル305を更新するのみの、仮想的なライト処理を実行する。これにより、記憶ドライブ113へのライト量を低減する。
 具体的には、ストレージI/Oプログラム410は、ライトデータのハッシュ値を計算し、ページマッピングテーブル305のハッシュ値カラム351の値と比較する。同一ハッシュ値が存在する場合、ストレージI/Oプログラム410は、仮想的なライト処理を実行する。つまり、ストレージI/Oプログラム410は、当該ハッシュ値のエントリに、当該ライト要求のアクセス先を追加する。
 また、アプリケーションによるミラーリング機能により他のノードで発生したミラーデータの重複を検出する一手法は、ノード間でグローバルなハッシュテーブルを保持する。当該ハッシュテーブルは、データのハッシュ値をキーとして、対応するデータの格納先のノードの識別子を示す。またハッシュテーブルは、データの参照元のノードの識別子の情報を含んでもよい。
 当該ハッシュテーブルは、メモリ使用量の効率化のため、所定アルゴリズム(例えばLRUアルゴリズム)を用いて、一部を保持するようにしてもよい。また、データのハッシュ値とノードが一意に対応するように、コンシステントハッシュを用いてノードが担当するハッシュ値を定め、担当のノードが、担当範囲のハッシュテーブルを保持してもよい。
 ストレージI/Oプログラム410は、上述した、ページマッピングテーブル305のハッシュ値カラム351の値と比較して、同一ハッシュ値が存在しない場合に、グローバルなハッシュテーブルを検索(ハッシュ値に対応するハッシュテーブルを管理するノードに、自ノード番号とハッシュ値を送付して問い合わせる)する。
 グローバルなハッシュテーブルで同一ハッシュ値が存在した場合、ストレージI/Oプログラム410は、そのノード番号及びページのアドレス情報を受け取り、上述した仮想的なライト処理を実行する。またグローバルなハッシュテーブルの問い合わせ先のノードは、問い合わせ元ノードの情報をハッシュ値と対応付けて記録する。
 グローバルなハッシュテーブルで同一ハッシュ値が存在しなかった場合は、ストレージI/Oプログラム410は、ステップ705へと進む。グローバルなハッシュテーブルの問い合わせ先のノードは、問い合わせ元ノードの情報を、そのデータの保持ノードとして、ハッシュ値と対応付けて記録する。
 上述の手法を単純に適用すると、ミラーデータの実体を保持するノードは1個だけとなるが、ページのアクセス頻度などによる負荷や、統計的学習情報などをハッシュテーブルに保持することで、一部の負荷の高いページについてミラーデータを複数のノードで保持することで、効率的にネットワーク転送を低減し、ストレージの性能を高めることができる。
 さらに、重複データが、冗長化のために他の計算機ノード101(ミラーリング先)に転送済みである場合、ストレージI/Oプログラム410は、転送先計算機ノード101に、メタデータのみを転送する。転送先計算機ノードは、ストライプマッピングテーブル301により示される。
 メタデータのみを転送することで、ネットワークの帯域を削減しつつ、転送先(ミラーリング先)の容量消費量も削減する。メタデータは、ハッシュ値とライトデータの対象アドレス(仮想ボリュームの論理アドレス)を示す。転送先計算機ノード101は、受信したメタデータによりページマッピングテーブル305を更新する。ストレージI/Oプログラム410は、ページマッピングテーブル305の転送情報カラム352を参照して、重複データの転送の有無を判定する。
 重複データを転送済みではない場合、ストレージI/Oプログラム410は、ライトデータをストライプマッピングテーブル301が示す計算機ノード101に転送する。ストレージI/Oプログラム410は、ライトデータと共に、ライトデータの対象アドレスを送信する。
 図6を参照して、具体的な処理の流れを説明する。ストレージI/Oプログラム410は、ライト要求を受信すると、当該フローチャートに従って動作する。ストレージI/Oプログラム410は、例えば、アプリケーションプログラム202からのリード要求を受ける。アプリケーションプログラム202を実行しているVM201が移行中である場合、移行先計算機ノード101のストレージI/Oプログラム410が、移行済みのアプリケーションプログラム202からライト要求を受ける。
 ストレージI/Oプログラム410は、当該アプリケーションプログラム202及び対象データ(アドレス)を含む(管理)するVM201が、移行中であるか判定する(ステップ701)。例えば、ストレージI/Oプログラム410は、VM移行プログラム413に、当該VM201が移行中であるか問い合わせる。
 VM201が移行中であれば(ステップ701:YES)、ストレージI/Oプログラム410は、対象アドレスのデータが、移行先の計算機ノード101にコピー済みかどうかを判定する(ステップ709)。例えば、ストレージI/Oプログラム410は、VM移行プログラム413に、対象アドレスのデータがコピー済みであるか問い合わせる。コピーが済んでいない場合(ステップ709:NO)、ストレージI/Oプログラム410は、移行元計算機ノード101にライト要求を転送して(ステップ710)、処理を終了する。
 対象アドレスのデータがコピー済みの場合(ステップ709:YES)、移行先計算機ノード101に最新のデータが存在するため、ストレージI/Oプログラム410は、当該処理を継続する。VM201が移行中ではない場合(ステップ701:NO)、ストレージI/Oプログラム410は、同様に、当該処理を継続する。
 ストレージI/Oプログラム410は、ライトデータのハッシュ値を計算する(ステップ702)。ハッシュ値の計算は、CRC、MD5、SHAなど、一般的に知られた方法を用いることができる。ストレージI/Oプログラム410は、ページマッピングテーブル305のハッシュ値カラム351を検索する。ストレージI/Oプログラム410は、計算したハッシュ値と同一値が存在する否かに基づいて、ライトデータが書き込み済みか否か判定する(ステップ703)。
 本ステップは、バッファ306のデータについても、ハッシュ値の一致をチェックし、書き込み済みかどうかを判定する。図4Eを参照して説明したように、バッファのデータも、ページマッピングテーブル305により、管理されている。
 ライトデータが書き込み済みである場合(ステップ703:YES)、ストレージI/Oプログラム410は、ページマッピングテーブル305を更新する(ステップ704)。具体的には、ストレージI/Oプログラム410は、ライト対象の仮想ページに対して、すでに書き込んでいる物理アドレスのページを対応させる。
 本処理により、1個の物理ページに対して、複数の論理ページが対応することになり、データをドライブにライトする量が削減でき、また使用可能なストレージ容量も増加させることが出来る。
 また、ステップ704において、後述するネットワークI/Oプログラム414が受信してライトしたバッファに、同一のデータを持っていた場合、当該データは、アプリケーションプログラム202の冗長化処理により発生していると考えられる。ストレージI/Oプログラム410は、当該データを、ストレージI/Oによるミラーデータと同様に使ってもよい。ストレージI/Oプログラム410は、当該データと他のミラーデータとからパリティを生成し、その情報をページマッピングテーブル305に登録する。
 なお、ストレージI/Oプログラム410は、ローカルストレージ(記憶ドライブ113)へのデータのライト及び計算機ノード101間での当該データの冗長化を行う。ネットワークI/Oプログラム414は、ローカルストレージ(記憶ドライブ113)格納されず、異なる計算機ノード101のVM201間でのデータ転送を行う。
 次に、ストレージI/Oプログラム410は、ネットワーク冗長化済みかどうかを判定する(ステップ706)。ネットワーク冗長化済みは、計算機ノード101が保持するデータが、冗長化のために他の計算機ノード101に転送されていることを意味する。ストライプマッピングテーブル301が、冗長化先計算機ノード101を示す。本実施形態においては、ストレージI/Oプログラム410によるネットワーク冗長化に加え、VM201が、ネットワーク冗長化を行う。
 具体的には、データ冗長化機能を持つアプリケーションプログラム202(例えばNoSQL)が、冗長化のためにデータを、ネットワークI/Oプログラム414によって、他の計算機ノード101に転送する。データ冗長化機能を持つアプリケーションプログラム202(例えばNoSQL)によるネットワークの通信処理による冗長データは、メモリ118のバッファ306に格納される。このデータは、ページマッピングテーブル305で管理される。
 ストレージI/Oプログラム410は、ハッシュ値を計算することにより、そのデータの冗長性を検出する。ネットワーク冗長性は、ページマッピングテーブル305の転送情報カラム352によって管理される。転送情報カラム352は、データを転送した計算機ノード101の情報を保持する。
 冗長化済みであれば(ステップ706:Y)、ストレージI/Oプログラム410は、メタデータのみを冗長化先ノードに送信して(ステップ711)、本処理を終了する。メタデータは、ハッシュ値と格納先アドレスとを示す。これはつまり、当該ストレージライトI/Oが発生する以前に、ストレージライトI/Oが発生していたか、アプリケーションのネットワーク転送により冗長化されていたか、のいずれかであるという、状態である。
 ライトデータが書き込み済みでない場合(ステップ703:NO)、ストレージI/Oプログラム410は、バッファにライトデータをライトする(ステップ705)。バッファ上には、ストレージI/Oプログラム410によるデータと、ネットワークI/Oプログラム414によるデータが格納される。それぞれの意味が異なるため、ページマッピングテーブル305の転送情報カラム352により、識別して管理する。
 ネットワーク冗長化済みでない場合(ステップ706:N)、ストレージI/O処理により冗長化を実施する。まず、ストライプマッピングテーブル301から冗長化先ノードを算出し(ステップ707)、冗長化先ノードにデータとメタデータを転送し(ステップ708)、転送が完了したら、処理を終了する。メタデータは、送信するデータを転送先で識別する情報であり、論理アドレスなどの情報を含む。ここでは、システムで必要な冗長度に応じて、転送先を複数選択し、複数回の転送を実行してもよい。
 図7は、本実施形態に係るストレージI/O処理(Back Endライト)のフローチャートを示す。Back Endライトは、バッファ内の未反映データを記憶ドライブ113(物理記憶領域)に反映する。より具体的には、バッファに格納されているデータ又はバッファに格納されているデータから生成されたデータを、記憶ドライブ113の物理記憶領域にライトする。
 ストレージI/Oプログラム410は、バッファ306内のデータを、ライト要求とは非同期に処理する。バッファ306の使用率が高い場合、ストレージI/Oプログラム410は、ライト要求と同期的にバッファ306内の記憶領域を開放してもよい。
 バッファ306は、所定の容量を持つ。使用率が規定値を超える場合、古いデータから消去される。一般的にはFIFOが使用されるが、その他のスケジューリングアルゴリズム(例えばLRU)が使用されてもよい。記憶ドライブ113にライトされるべきライトデータは、記憶ドライブ113(記憶媒体)へのライトの後に消去される。
 ストレージI/Oプログラム410は、複数の他計算機ノード101から転送され、バッファ306に格納されているミラーデータから、パリティ(Erasure Code)を生成し、パリティのみを記憶ドライブ113にライトする。これにより、記憶ドライブ113に対するライト量を削減する。
 ネットワークI/Oプログラム414によって、他の計算機ノード101への転送時に、バッファ306に格納されたデータ(転送データ)は、記憶ドライブ113へライトする必要はない(未反映データではない)。そのため、当該データは、処理されることなく、バッファ306から消去される。バッファ306からのデータの消去に伴い、ページマッピングテーブル305上のエントリを消去することで実現する。
 図7を参照して、具体的な処理の流れを説明する。ストレージI/Oプログラム410は、ページマッピングテーブル305を参照し、記憶ドライブ113への未反映データが存在するか判定する(ステップ801)。転送情報カラム352がストレージI/Oデータであることを示し、ドライブ番号カラム360及びページ番号カラム361がNULL値を格納しているエントリは、未反映データを示す。
 未反映データがバッファ306に存在する場合(ステップ801:YES)、ストレージI/Oプログラム410は、未反映データがミラーデータであるか判定する(ステップ802)。ミラーデータは、冗長化のために送信されたデータであり、ステップ708で他ノード101から転送されたデータである。転送情報カラム352は、エントリのデータがミラーデータでるか示す。
 未反映データがミラーデータである場合(ステップ802:YES)、ストレージI/Oプログラム410は、他のミラーデータと共に、パリティを生成し(ステップ807)、さらに、メタデータを生成する(ステップ808)。パリティの生成は、一般的にしられたErasure Codingの手法(例えばReed Solomon符号化)を用いてもよい。
 パリティを生成するデータブロック群は、冗長化のために送信されたデータであると同時に、それぞれの送信元が異なるノードとすることが望ましい。メタデータは、そのパリティがいずれの計算機ノード101のいずれの論理アドレス(または物理アドレス)のデータから生成されているかを示し、ページマッピングテーブル305に格納される。メタデータは、データを復元する際参照される。
 その後、ストレージI/Oプログラム410は、ステップ803へ進む。または、対象データがミラーデータではない場合(ステップ802:NO)、ストレージI/Oプログラム410は、ステップ803へ進む。
 対象データがミラーデータではない場合、対象データは、当該計算機ノード101により発行されたライト要求のライトデータ(ステップ705でバッファにライトされたデータ)である。ストレージI/Oプログラム410は、ステップ803からステップ806にて、記憶ドライブ113に対するライトの一連の処理を実行する。
 具体的には、ストレージI/Oプログラム410は、ページマッピングテーブル305を参照して、対象仮想ページと物理ページとの対応関係がすでに決定されているか判定する(ステップ803)。対象仮想ページに物理ページがすでに割り当てられている場合(ステップ803:YES)、ストレージI/Oプログラム410は、ステップ805に進む。
 対象仮想ページに物理ページが割り当てられていない場合(ステップ803:NO)、ストレージI/Oプログラム410は、未割り当ての物理ページを、当該仮想ページに割り当てるように、ページマッピングテーブル305を変更する(ステップ804)。
 ステップ805において、ストレージI/Oプログラム410は、ページマッピングテーブル305から、対象仮想ページに対応するドライブ番号及びページ番号を取得する。ストレージI/Oプログラム410は、対象ライトデータを、取得したドライブ番号及びページ番号に対応する物理アドレスにライトする(ステップ806)。ストレージI/Oプログラム410は、対象データをバッファ306から消去し、処理を終了する。
 図8は、本実施形態に係るVM割り当てプログラム412のフローチャートを示す。本処理は、VM201をデプロイするために実行される。VM201のデプロイは、計算機ノード101にVM201を配置し、そのVM201を動作させることを意味する。より具体的には、VMイメージデータを計算機ノード101の記憶ドライブ113に格納し、さらに、そのメモリ108上でVM201を動作させる。VM割り当てプログラム412は、VM201は、配置先の記憶ドライブ113のライト可能量や使用可能容量に基づいて、配置先を決定する。
 ユーザは、不図示の管理計算機又はいずれかの計算機ノード101(ユーザ端末と呼ぶ)を操作して、いずれかの計算機ノード101のVM割り当てプログラム412に、VM201のデプロイを指示する。当該指示は、VMイメージデータのロケーション及びVMイメージデータの構成情報を示す。指示を受けたVM割り当てプログラム412は、図8のフローチャートの処理を実行する。管理計算機が本処理を実行してもよい。
 VM割り当てプログラム412は、割り当て対象候補の計算機ノード101の情報を取得する(ステップ901)。具体的には、VM割り当てプログラム412は、これら計算機ノード101から、VM情報テーブル302、記憶ドライブ寿命情報テーブル303、及び容量管理テーブル304を取得する。
 計算機システムは、分散データベース(SQL、NoSQL)やKVS(Key Value Store)などを用いて、計算機ノード101の情報を一元管理してもよい。VM割り当てプログラム412は、当該データベースから上記情報を取得する。
 次に、VM割り当てプログラム412は、デプロイ対象のVM201に対して、空き容量の要件を満たす計算機ノード101を決定する(ステップ902)。VM201に対して、必要とされる空き容量は、ユーザに指定される、又は、VM201に含まれるプログラムに対して予め設定されている。
 VM割り当てプログラム412は、各計算機ノード101の容量管理テーブル304を参照し、残容量カラム342の値から、必要な空き容量を持つ計算機ノード101を決定する。空き容量は、例えば、プール毎に計算され、いずれかのプールが必要空き容量を持つことが要求される。容量管理テーブル304は、プール毎に、記憶ドライブ113の容量の情報を管理する。なお、図4Dが示す容量管理テーブル304は、一つのプールの情報を示す。以下において、各計算機ノード101が持つプールは一つとする。
 空き容量の要件を満たす計算機ノード101が存在しない場合(ステップ903:NO)、当該VM201のデプロイは不可能である。VM割り当てプログラム412は、エラーメッセージをユーザ端末に出力する(ステップ907)。
 空き容量の要件を満たす計算機ノード101が存在する場合(ステップ903:YES)、VM割り当てプログラム412は、それら計算機ノード群の中で、デプロイ対象のVM201に対してライト可能量(残ライト可能量)の要件を満たす計算機ノード101を決定する(ステップ904)。
 VM割り当てプログラム412は、デプロイ対象のVM201のライト負荷量を、実行されるプログラム(OS及びアプリケーションプログラムを含む)の規定ライト負荷量から、計算する。さらに、VM割り当てプログラム412は、記憶ドライブ寿命情報テーブル303の情報から、VM201をデプロイした場合の、各計算機ノード101の残ライト可能量を計算する。
 計算される残ライト可能量は、デプロイされるVM201に割り当てられる記憶ドライブ113における、最小の残ライト可能量である。VM割り当てプログラム412は、記憶ドライブ113それぞれに対して、VM201からのライト負荷量を推定する。例えば、VM割り当てプログラム412は、プールに記憶領域を提供する記憶ドライブ113の数、又は、それら記憶ドライブ113がプールに提供する容量と、VM201の予め設定されたライト負荷量、WAモデル335、ストライプマッピングテーブル301によりストレージのミラーリングによるライト増加分の考慮に基づいて、各記憶ドライブ113に対するVM201のライト負荷量を推定する。
 VM割り当てプログラム412は、記憶ドライブ寿命情報テーブル303の残ライト可能量カラム332が示す値と、記憶ドライブ113に対するVM201の推定ライト負荷量とから、記憶ドライブ113それぞれの残ライト可能量を推定する。全ての残ライト可能量の値が正である場合、残ライト可能量の要件が満たされる。計算機ノード101が複数プールを有する場合、プール毎に空き容量の残ライト可能量の要件が判定される。
 ライト可能量の要件を満たす計算機ノード101が存在しない場合(ステップ905:NO)、VM割り当てプログラム412は、寿命要件を満たすことができない可能性があることを示す警告メッセージをユーザ端末において出力する(ステップ908)。さらに、VM割り当てプログラム412は、テップ902で空き容量の要件を満たすと判定された一つの計算機ノード101を選択し(ステップ909)、当該計算機ノード101にVM201をデプロイする(ステップ906)。
 具体的には、ユーザ端末から指示を受けたVM割り当てプログラム412は、選択され計算機ノード101にVMイメージデータを転送し、さらに、選択され計算機ノード101にVM201のデプロイを指示する。
 ライト可能量の要件を満たす計算機ノード101が存在する場合(ステップ905:YES)、VM割り当てプログラム412は、当該計算機ノード101にVM201をデプロイする(ステップ906)。以上のように、本実施形態は、ライト可能量と空き容量の要件を満たす、適切な計算機ノード101にVM201をデプロイできる。
 他の例において、VM割り当てプログラム412は、デプロイ先の決定において、さらに、VM201のデプロイによって、冗長化のために計算機ノード101間で転送されるミラーデータを考慮する。
 VM201が計算機ノード101にデプロイされると、当該VM201のミラーデータが、当該計算機ノード101から、ストライプマッピングテーブル301が示す計算機ノード101に転送される。転送先の計算機ノード101において、ライト負荷量が増加する。VM割り当てプログラム412は、ステップ904において、転送先計算機ノード101においても残ライト可能量の値が正となるように、デプロイ先計算機ノード101を決定する。
 例えば、ストレージI/Oプログラム410のレプリケーションによる、計算機ノードrでのライト負荷量の増加に対する、計算機ノードiでのライト負荷量の増加を示す関数が、予め設定されている。VM割り当てプログラム412は、当該関数を使用して、デプロイ先候補にVM201をデプロイした場合に、ストライプマッピングテーブル301が示す他の計算機ノード101において増加するライト負荷量を推定する。
 VM割り当てプログラム412は、推定したライト負荷量の増加と記憶ドライブ寿命情報テーブル303の情報から、他の計算機ノード101における残ライト可能量を推定する。VM201のデプロイ先のライト可能量に加え、デプロイ先とストレージI/Oの冗長化グループを構成する計算機ノード101の残ライト可能量を参照することで、より適切な計算機ノード101にVM201をデプロイすることができる。
 図9は、本実施形態に係るVM配置変更プログラム411のフローチャートを示す。本処理は、デプロイ済みのVM201の配置を見直し、ライト可能量と空き容量の要件を満たすように、VM201を移行する。
 本処理は、各計算機ノード101で周期的に実行されてもよく、VM201の起動・終了などのイベント発生時に実行されてもよい。アプリケーションプログラム202の設定が変更されたときなど、VM201のライト負荷が大きく変化する場合に、実行されてもよい。VM配置変更プログラム411は、自計算機ノード101で動作しているVM201を順次選択して、本フローを実行してもよい。
 VM配置変更プログラム411は、自計算機ノード101の空き容量が不足しているか判定する(ステップ1001)。例えば、VM配置変更プログラム411は、容量管理テーブル304を参照し、残容量カラム342の値と閾値とを比較することによって、空き容量が不足しているか否か判定する。例えば、VM配置変更プログラム411は、最も多いドライブの残容量の値342と閾値とを比較する。
 自計算機ノード101の空き容量が不足していない場合(ステップ1001:NO)、VM配置変更プログラム411は、自計算機ノード101の残ライト可能量が不足しているか判定する(ステップ1006)。例えば、VM配置変更プログラム411は、最も多い残容量と閾値とを比較する。自計算機ノード101の残ライト可能量が不足していない場合(ステップ1006:NO)、VM配置変更プログラム411は、本処理を終了する。
 自計算機ノード101の空き容量が不足している場合(ステップ1001:YES)、又は、残ライト可能量が不足している場合(ステップ1006:YES)、VM配置変更プログラム411は、移行先候補の計算機ノード101の情報を取得する(ステップ1002)。ステップ1002は、ステップ901と同様である。情報を取得する計算機ノード101は、予め限定されていてもよい。
 VM配置変更プログラム411は、対象のVM201に対して、空き容量の要件を満たす計算機ノード101を決定する(ステップ1003)。ステップ1003はステップ902と同様である。
 情報を取得した計算機ノード101において、空き容量の要件を満たす計算機ノード101が存在しない場合(ステップ1004:NO)、当該VM201を移行することができない。VM配置変更プログラム411は、エラーメッセージを管理端末(ユーザ端末)に出力する(ステップ1005)。
 空き容量の要件を満たす計算機ノード101が存在する場合(ステップ1004:YES)、VM配置変更プログラム411は、ステップ1007~1010を実行する。ステップ1007~S1009は、ステップ904、905、908と同様である。
 空き容量及び残ライト可能量の要件を満たす移行先候補の計算機ノード101が存在する場合(ステップ1004:YES、ステップ1008:YES)、VM配置変更プログラム411は、VM移行プログラム413によって、VM201を当該計算機ノード101に移行する。VM201の移行方法の詳細は後述する。
 以上のようにして、ライト可能量と空き容量の条件を満たす適切な計算機ノード101にVM201を移行することができる。
 図10は、本実施形態に係るVM移行プログラム413のフローチャートを示す。本処理は、VM201のライブマイグレーションとVMイメージデータの移行を同時に実行する。これにより、VM201によるローカルリードを維持しつつ、VM201を移行する。ローカルリードは、ローカルストレージからの、ネットワークを介さないデータリードである。
 移行先のVM移行プログラム413は、移行先の計算機ノード101に対する移行元からのアクセスパスを作成する(ステップ1101)。例えば、VM移行プログラム413は、移行先の計算機ノード101からVM201が移行元のボリュームにアクセス可能となるように、ログイン処理を実施する。
 次に、VM移行プログラム413は、移行先で仮想ボリュームを作成する(ステップ1102)。VM移行プログラム413は、移行元と同じサイズのボリュームを作成することが望ましい。次にVM移行プログラム413は、VM201のライブマイグレーションを実行する(ステップ1103)。
 VM移行プログラム413は、ページを移行元から移行先にコピーする(ステップ1104)。例えば、VM移行プログラム413は、コピーポインタ(ボリュームの先頭から末端までの位置を表すシーケンシャルなポインタ)を持ち、コピーを順番にLBA順で実行していく。また、このときに、ステップ602やステップ709のコピー済みの判定に利用し、コピーポインタより前であれば、コピー済みで、後であれば、未コピーと判定できる。
 次に、VM移行プログラム413は、全コピーを実施したか判定する(ステップ1105)。例えば、コピーポインタがボリュームの末端に到達したら、VM移行プログラム413は、全コピーが完了したものとみなす。
 最後に、VM移行プログラム413は、移行元の仮想ボリュームとそのアクセスパスを消去する(ステップ1106)。仮想ボリュームの削除時には、その仮想ボリュームが使用していたページは、未使用のページとして開放され、使用可能な容量が増える。また、ネットワークI/Oに利用していたバッファ上のデータも開放してもよい。以上のようにして、ストレージI/Oを継続したままVM201を移行できる。
 図11は、本実施形態に係るネットワークI/O(送信)のフローチャートを示す。本処理は、異なる計算機ノード101のアプリケーションプログラム202間の通信時に、ハイパーバイザ203から呼ばれる。ネットワークI/Oプログラム414は、送信データのハッシュ値をチェックし、記憶ドライブ113又はバッファ306にライトしたデータかチェックする。
 対象データと同一のデータが送信先にすでに送信されたデータであれば、ネットワークI/Oプログラム414は、メタデータのみを送信する。そうではない場合、ネットワークI/Oプログラム414は、ミラーデータをメタデータと共に送信する。これにより、計算機ノード間のデータ転送量を削減する。
 図11に示すように、ネットワークI/Oプログラム414は、送信対象データのハッシュ値を生成する(ステップ1201)。ネットワークI/Oプログラム414は、送信先の計算機ノード101に、同一データがすでに送信されているかチェックする(ステップ1202)。
 例えば、ネットワークI/Oプログラム414は、ページマッピングテーブル305を参照し、当該ハッシュ値のエントリがあるかを検索する。当該ハッシュ値のエントリが存在し、かつ、転送情報カラム352が当該送信先にデータを送信済みでないことを示す場合、データを当該送信先に送信し(ステップ1204)、データをバッファ306に書き込み(ステップ1205)、処理を終了する。ハッシュ値のエントリが存在しない場合も同様である。
 ネットワークI/Oプログラム414は、ページマッピングテーブル305を更新する。ネットワークI/Oプログラム414は、データをバッファ306にライトせず、ページマッピングテーブル305のハッシュ値のみを更新してもよい。送信先計算機ノード101は、データをバッファ306に保持する。
 データを送信済みの場合、ネットワークI/Oプログラム414は、メタデータのみを送信し(ステップ1203)、処理を終了する。メタデータは、例えば、ハッシュ値を含み、送信先でハッシュ値によりデータを参照できるようにする。
 図12は、本実施形態に係るネットワークI/O(受信)のフローチャートを示す。まず、本処理の概要を説明する。本処理は、VM201間のアプリケーションによる通信時にハイパーバイザからコールバックされる。ネットワークI/Oの受信データを、そのまま破棄せずにバッファに一時的に保存しておくことで、再度同じデータが転送される場合に、データ転送の再発生を回避し、データ転送のオーバヘッドを削減する。
 図12に示すように、ネットワークI/Oプログラム414は、受信データがメタデータか、データかを判定する(ステップ1301)。メタデータである場合、ネットワークI/Oプログラム414は、ページマッピングテーブル305を参照し、メタデータからデータ位置を算出し(ステップ1302)、データ位置(バッファやドライブなど)からデータをリードする(ステップ1303)。
 メタデータがハッシュ値であれは、ページマッピングテーブル305でそのハッシュ値で検索することで、データ位置を特定できる。パリティが生成され、当該対象データが存在していない場合、ネットワークI/Oプログラム414は、当該データが存在する計算機ノード101に問い合わせる、又は、パリティからデータを修復する。
 その後、ネットワークI/Oプログラム414は、データをアプリケーションプログラム202の受信領域に格納し(ステップ1305)、処理を終了する。また、受信データがメタデータではない場合(データである場合)、ネットワークI/Oプログラム414は、当該データをバッファ306にライトし(ステップ1304)、データ受信領域に当該データを格納する(ステップ1305)。以上に述べた処理により、図11を参照して説明した送信側の処理と連携して、ネットワーク転送量を削減できる。
 上述のように、本実施形態は、ストレージとネットワークとコンピューティングを統合した計算機システム(ハイパーコンバージドシステム)における処理を効率化することができる。計算機システムは、計算機ノードのローカルストレージの残ライト可能量(寿命)の情報を取得し、VMのライト負荷量に応じて、VMの配置を変更する。
 VMのライト負荷量とデータサイズに応じて、VMとイメージデータの配置を決めることで、記憶ドライブの寿命消費を分散し、使用量容量を分散することができる。これにより、特定の計算機ノードのローカルストレージの寿命や容量が尽きる問題を回避できる。
 本実施形態は、ハイパーコンバージドシステム上で動作するスケーラブルなアプリケーション(NoSQLなど)によるローカルストレージへのライト量の増加を、データの重複排除とErasure Codingにより低減し、さらにストレージ使用容量を効率化する。また、本実施形態は、容量や残ライト可能量の管理を各計算機ノードが行うため、しているため、スケーラビリティが高い。本実施形態により、大規模な計算機環境においても、保守回数を削減しつつ媒体のコストを低減できる。
 すでに転送済みのデータを転送することなくメタデータのみ転送することで、ネットワーク転送量及びストレージ消費量(ライト量)を削減できる。アプリケーションのレプリケーション動作によるストレージ消費(ライト量)を、ストレージのミラーリングに置き換えることにより、ストレージ消費量(ライト量)を削減できる。
 なお、本実形態で述べた書き込みの処理において、データの実体が自計算機ノードまたは他計算機ノードに存在する場合には、処理効率の向上のため、データの参照のみを修正し、実際のデータ書き込みを実施しない、という方法を組み合わせてもよい。
 また、バッファ量が多いほど、ストレージ処理やアプリケーションのネットワーク処理による、ネットワーク転送量やストレージ消費量(ライト量)を削減できる。バッファを記憶ドライブの記憶領域に割り当て、負荷(ライト量等)などに応じて、最適なバッファ量を動的に調整するようにしてもよい。
 なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
 また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD等の記録装置、または、ICカード、SDカード等の記録媒体に置くことができる。また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。

Claims (14)

  1.  ネットワークにより通信する複数の計算機ノードを含む計算機システムであって、
     前記複数の計算機ノードそれぞれは、ローカルストレージと1以上の仮想マシンを含み、
     前記複数の計算機ノードそれぞれは、そのローカルストレージに対するライトデータを、冗長化のために1又は複数の他の計算機ノードに転送し、
     前記計算機システムに含まれる計算機は、
     第1の仮想マシンによるライト負荷量を示す情報を取得し、
     前記複数の計算機ノードにおける配置先候補のローカルストレージの残ライト可能量を示す取得し、
     前記第1の仮想マシンのライト負荷量と、前記配置先候補の計算機ノードの前記残ライト可能量と、に基づき、前記第1の仮想マシンを前記配置先候補の計算機ノードに配置するか決定する、計算機システム。
  2.  請求項1に記載の計算機システムであって、
     前記計算機は、前記配置先候補の計算機ノードの空き容量と前記第1の仮想マシンのイメージデータサイズとに基づき、前記第1の仮想マシンを前記配置先候補の計算機ノードに配置するか決定する、計算機システム。
  3.  請求項1に記載の計算機システムであって、
     前記計算機は、前記配置先候補の計算機ノードに前記第1の仮想マシンを配置した場合に、冗長化のためのデータ転送による前記1以上の他の計算機ノードそれぞれのライト負荷量の増加量と、前記1以上の他の計算機ノードそれぞれの残ライト可能量と、に基づき、前記第1の仮想マシンを前記配置先候補の計算機ノードに配置するか決定する、計算機システム。
  4.  請求項1に記載の計算機システムであって、
     前記第1の仮想マシンは、前記複数の計算機ノードに含まれる第1の計算機ノード上で動作しており、
     前記計算機は前記第1の計算機ノードであり、
     前記第1の計算機ノードは、そのローカルストレージの残ライト可能量と、その実行している仮想マシンのライト負荷量と、に基づき、前記第1の仮想マシンの移行の有無を決定する、計算機システム。
  5.  請求項1に記載の計算機システムであって、
     前記複数の計算機ノードは、第1の計算機ノードと第2の計算機ノードとを含み、
     前記第1の計算機ノードは、
     前記第2の計算機ノードに転送済みのデータを管理する管理情報を保持し、
     前記管理情報を参照して、前記第2の計算機ノードに転送すべき第1データと同一データを、前記第2の計算機ノードに転送済みであるか判定し、
     前記第1の計算機ノードが前記同一データを転送済みである場合、前記第1の計算機ノードは、前記第1データのメタデータのみを前記第2の計算機ノードに送信する、計算機システム。
  6.  請求項5に記載の計算機システムであって、
     前記管理情報は、前記第1の計算機ノードのローカルストレージに格納されるデータの転送データと、前記第1の計算機ノードの仮想マシンと前記第2の計算機ノードの仮想マシンとの間で転送されたデータと、を管理する、計算機システム。
  7.  請求項5に記載の計算機システムであって、
     前記メタデータは、前記第1データのハッシュ値を示す、計算機システム。
  8.  ネットワークにより通信する複数の計算機ノードを含む計算機システムを制御する方法であって、
     前記複数の計算機ノードそれぞれは、ローカルストレージと1以上の仮想マシンを含み、
     前記複数の計算機ノードそれぞれは、そのローカルストレージに対するライトデータを、冗長化のために1又は複数の他の計算機ノードに転送し、
     前記方法は、
     第1の仮想マシンによるライト負荷量の情報を取得し、
     前記複数の計算機ノードにおける配置先候補の計算機ノードから、そのローカルストレージの残ライト可能量の情報を取得し、
     前記第1の仮想マシンのライト負荷量と、前記配置先候補の計算機ノードの残ライト可能量と、に基づき、前記第1の仮想マシンを前記配置先候補の計算機ノードに配置するか決定する、ことを含む方法。
  9.  請求項8に記載の方法であって、
     前記配置先候補の計算機ノードの空き容量と前記第1の仮想マシンのイメージデータサイズとに基づき、前記第1の仮想マシンを前記配置先候補の計算機ノードに配置するか決定する、ことを含む方法。
  10.  請求項8に記載の方法であって、
     前記配置先候補の計算機ノードに前記第1の仮想マシンを配置した場合に、冗長化のためのデータ転送による前記1以上の他の計算機ノードそれぞれのライト負荷量の増加量と、前記1以上の他の計算機ノードそれぞれの残ライト可能量と、に基づき、前記第1の仮想マシンを前記配置先候補の計算機ノードに配置するか決定する、ことを含む方法。
  11.  請求項8に記載の方法であって、
     前記第1の仮想マシンは、前記複数の計算機ノードに含まれる第1の計算機ノード上で動作しており、
     前記方法は、
     前記第1の計算機ノードのローカルストレージの残ライト可能量と、前記第1の計算機ノードの実行している仮想マシンのライト負荷量と、に基づき、前記第1の仮想マシンの移行の有無を決定する、ことを含む方法。
  12.  請求項8に記載の方法であって、
     前記複数の計算機ノードは、第1の計算機ノードと第2の計算機ノードとを含み、
     前記方法は、
     前記第1の計算機ノードから前記第2の計算機ノードに転送済みのデータを管理する管理情報を参照して、前記第2の計算機ノードに転送すべき第1データと同一データを、前記第1の計算機ノードから前記第2の計算機ノードに転送済みであるか判定し、
     前記同一データを転送済みである場合、前記第1データのメタデータのみを前記第1の計算機ノードから前記第2の計算機ノードに送信する、ことを含む方法。
  13.  請求項12に記載の方法であって、
     前記管理情報は、前記第1の計算機ノードのローカルストレージに格納されるデータの転送データと、前記第1の計算機ノードの仮想マシンと前記第2の計算機ノードの仮想マシンとの間で転送されたデータと、を管理する、方法。
  14.  請求項12に記載の方法であって、
     前記メタデータは、前記第1データのハッシュ値を示す、方法。
PCT/JP2016/073600 2016-08-10 2016-08-10 計算機システム WO2018029820A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2016/073600 WO2018029820A1 (ja) 2016-08-10 2016-08-10 計算機システム
JP2017561025A JP6600698B2 (ja) 2016-08-10 2016-08-10 計算機システム
US15/754,179 US10359967B2 (en) 2016-08-10 2016-08-10 Computer system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/073600 WO2018029820A1 (ja) 2016-08-10 2016-08-10 計算機システム

Publications (1)

Publication Number Publication Date
WO2018029820A1 true WO2018029820A1 (ja) 2018-02-15

Family

ID=61161796

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2016/073600 WO2018029820A1 (ja) 2016-08-10 2016-08-10 計算機システム

Country Status (3)

Country Link
US (1) US10359967B2 (ja)
JP (1) JP6600698B2 (ja)
WO (1) WO2018029820A1 (ja)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020027434A (ja) * 2018-08-10 2020-02-20 横河電機株式会社 制御システム及び制御装置
JP2020052730A (ja) * 2018-09-27 2020-04-02 株式会社日立製作所 Hci環境でのvm/コンテナおよびボリューム配置決定方法及びストレージシステム
JP2020060983A (ja) * 2018-10-10 2020-04-16 株式会社日立製作所 ストレージシステム及びストレージ制御方法
JP2020087060A (ja) * 2018-11-28 2020-06-04 日本電気株式会社 ジョブスケジューリング装置、管理システム、及びスケジューリング方法
US11112973B2 (en) 2019-03-22 2021-09-07 Hitachi, Ltd. Computer system and data management method
JP2021140404A (ja) * 2020-03-04 2021-09-16 株式会社日立製作所 管理システム及び基盤システムの管理方法
JP2021144662A (ja) * 2020-03-13 2021-09-24 富士通株式会社 管理装置、情報処理システム及び管理プログラム
JP2022054132A (ja) * 2020-09-25 2022-04-06 株式会社日立製作所 複合型ストレージシステム
JP2022061706A (ja) * 2020-10-07 2022-04-19 株式会社日立製作所 計算機システム及び負荷分散方法
JP2022150953A (ja) * 2021-03-26 2022-10-07 株式会社日立製作所 分散ストレージシステム、及び管理方法
US11675545B2 (en) 2021-04-14 2023-06-13 Hitachi, Ltd. Distributed storage system and storage control method

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190083150A (ko) * 2018-01-03 2019-07-11 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007328734A (ja) * 2006-06-09 2007-12-20 Hitachi Ltd ストレージ装置及びストレージ装置の制御方法
JP2014178827A (ja) * 2013-03-14 2014-09-25 Nec Corp レプリケーションシステム
JP2015505078A (ja) * 2012-02-08 2015-02-16 株式会社日立製作所 複数の不揮発性の半導体記憶媒体を有し、ホットデータを長寿命記憶媒体に配置しコールドデータを短寿命記憶媒体に配置するストレージ装置、及び、記憶制御方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8832687B2 (en) * 2011-04-20 2014-09-09 Red Hat Israel, Ltd. Managing quotas in a distributed virtualization environment
US8601473B1 (en) 2011-08-10 2013-12-03 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
CN104919429B (zh) * 2013-06-14 2018-01-09 株式会社日立制作所 存储管理计算机及存储管理方法
US9575856B2 (en) * 2014-08-29 2017-02-21 Vmware, Inc. Preventing migration of a virtual machine from affecting disaster recovery of replica

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007328734A (ja) * 2006-06-09 2007-12-20 Hitachi Ltd ストレージ装置及びストレージ装置の制御方法
JP2015505078A (ja) * 2012-02-08 2015-02-16 株式会社日立製作所 複数の不揮発性の半導体記憶媒体を有し、ホットデータを長寿命記憶媒体に配置しコールドデータを短寿命記憶媒体に配置するストレージ装置、及び、記憶制御方法
JP2014178827A (ja) * 2013-03-14 2014-09-25 Nec Corp レプリケーションシステム

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020027434A (ja) * 2018-08-10 2020-02-20 横河電機株式会社 制御システム及び制御装置
US11048565B2 (en) 2018-08-10 2021-06-29 Yokogawa Electric Corporation Control system and control apparatus
JP7056460B2 (ja) 2018-08-10 2022-04-19 横河電機株式会社 制御システム及び制御装置
JP2020052730A (ja) * 2018-09-27 2020-04-02 株式会社日立製作所 Hci環境でのvm/コンテナおよびボリューム配置決定方法及びストレージシステム
CN110955487A (zh) * 2018-09-27 2020-04-03 株式会社日立制作所 Hci环境下的vm/容器和卷配置决定方法及存储系统
US11663029B2 (en) 2018-09-27 2023-05-30 Hitachi, Ltd. Virtual machine storage controller selection in hyperconverged infrastructure environment and storage system
US11080081B2 (en) 2018-09-27 2021-08-03 Hitachi, Ltd. Virtual machine and volume allocation in hyperconverged infrastructure environment and storage system
US11080080B2 (en) 2018-09-27 2021-08-03 Hitachi, Ltd. Virtual machine and volume allocation in hyperconverged infrastructure environment and storage system
JP7118230B2 (ja) 2018-09-27 2022-08-15 株式会社日立製作所 Hci環境でのvm/コンテナおよびボリューム配置決定方法及びストレージシステム
JP2022003577A (ja) * 2018-09-27 2022-01-11 株式会社日立製作所 Hci環境でのvm/コンテナおよびボリューム配置決定方法及びストレージシステム
JP2020060983A (ja) * 2018-10-10 2020-04-16 株式会社日立製作所 ストレージシステム及びストレージ制御方法
US11740823B2 (en) 2018-10-10 2023-08-29 Hitachi, Ltd. Storage system and storage control method
JP2020087060A (ja) * 2018-11-28 2020-06-04 日本電気株式会社 ジョブスケジューリング装置、管理システム、及びスケジューリング方法
JP7259288B2 (ja) 2018-11-28 2023-04-18 日本電気株式会社 ジョブスケジューリング装置、管理システム、及びスケジューリング方法
US11112973B2 (en) 2019-03-22 2021-09-07 Hitachi, Ltd. Computer system and data management method
JP2021140404A (ja) * 2020-03-04 2021-09-16 株式会社日立製作所 管理システム及び基盤システムの管理方法
JP2021144662A (ja) * 2020-03-13 2021-09-24 富士通株式会社 管理装置、情報処理システム及び管理プログラム
JP7468012B2 (ja) 2020-03-13 2024-04-16 富士通株式会社 管理装置、情報処理システム及び管理プログラム
JP2022054132A (ja) * 2020-09-25 2022-04-06 株式会社日立製作所 複合型ストレージシステム
JP7154261B2 (ja) 2020-09-25 2022-10-17 株式会社日立製作所 複合型ストレージシステム
US11907746B2 (en) 2020-09-25 2024-02-20 Hitachi, Ltd. Compound storage system
JP7229214B2 (ja) 2020-10-07 2023-02-27 株式会社日立製作所 計算機システム及び負荷分散方法
US11550488B2 (en) 2020-10-07 2023-01-10 Hitachi, Ltd. Computer system and load distribution method
JP2022061706A (ja) * 2020-10-07 2022-04-19 株式会社日立製作所 計算機システム及び負荷分散方法
JP2022150953A (ja) * 2021-03-26 2022-10-07 株式会社日立製作所 分散ストレージシステム、及び管理方法
JP7337869B2 (ja) 2021-03-26 2023-09-04 株式会社日立製作所 分散ストレージシステム、及び管理方法
US11675545B2 (en) 2021-04-14 2023-06-13 Hitachi, Ltd. Distributed storage system and storage control method

Also Published As

Publication number Publication date
JP6600698B2 (ja) 2019-10-30
US20180285016A1 (en) 2018-10-04
JPWO2018029820A1 (ja) 2018-08-09
US10359967B2 (en) 2019-07-23

Similar Documents

Publication Publication Date Title
JP6600698B2 (ja) 計算機システム
US11487619B2 (en) Distributed storage system
US9946642B2 (en) Distributed multimode storage management
US7975115B2 (en) Method and apparatus for separating snapshot preserved and write data
US10346075B2 (en) Distributed storage system and control method for distributed storage system
US20200117372A1 (en) Available storage space in a system with varying data redundancy schemes
JP6677740B2 (ja) ストレージシステム
US20180267713A1 (en) Method and apparatus for defining storage infrastructure
CN110300960B (zh) 信息系统、管理程序和信息系统的程序更换方法
US10936243B2 (en) Storage system and data transfer control method
US11740823B2 (en) Storage system and storage control method
US10067882B2 (en) Storage system and storage control method
US11907746B2 (en) Compound storage system
US20190212937A1 (en) Storage system and storage control method
JP6817340B2 (ja) 計算機
US11079956B2 (en) Storage system and storage control method
US11868248B2 (en) Optimization for garbage collection in a storage system
WO2018055686A1 (ja) 情報処理システム
US11550488B2 (en) Computer system and load distribution method
JP7113698B2 (ja) 情報システム

Legal Events

Date Code Title Description
ENP Entry into the national phase

Ref document number: 2017561025

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 15754179

Country of ref document: US

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

Ref document number: 16912701

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

Country of ref document: EP

Kind code of ref document: A1