WO2012081099A1 - データ移行プログラム、計算機およびデータ移行方法 - Google Patents

データ移行プログラム、計算機およびデータ移行方法 Download PDF

Info

Publication number
WO2012081099A1
WO2012081099A1 PCT/JP2010/072583 JP2010072583W WO2012081099A1 WO 2012081099 A1 WO2012081099 A1 WO 2012081099A1 JP 2010072583 W JP2010072583 W JP 2010072583W WO 2012081099 A1 WO2012081099 A1 WO 2012081099A1
Authority
WO
WIPO (PCT)
Prior art keywords
migration
data
migration source
hash value
computer
Prior art date
Application number
PCT/JP2010/072583
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 EP10860696.3A priority Critical patent/EP2653970A4/en
Priority to JP2012548578A priority patent/JP5534031B2/ja
Priority to PCT/JP2010/072583 priority patent/WO2012081099A1/ja
Publication of WO2012081099A1 publication Critical patent/WO2012081099A1/ja
Priority to US13/917,082 priority patent/US20130275708A1/en

Links

Images

Classifications

    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1425Traffic logging, e.g. anomaly detection

Definitions

  • the present invention relates to a data migration program for performing data migration, a computer, and a data migration method.
  • live migration a virtual machine running on hardware is moved to other hardware almost without interruption, so the OS (Operating System) and applications running on the hardware virtual machine are very short. You can move to other hardware with downtime. For this reason, live migration is used for the purpose of maintaining hardware while continuing the service.
  • OS Operating System
  • Patent Document 1 As a related prior art, there is a technique for sharing memory between virtual machines operating on one physical computer (see, for example, Patent Document 1 below). Further, there is a technique for dynamically changing a physical resource configuration and a virtual device configuration in a virtual environment (see, for example, Patent Document 2 below).
  • the present invention provides a data migration program, a computer, and a data migration method capable of reducing the amount of data transfer by suppressing the transfer of data that does not require copying between computers in order to solve the above-described problems caused by the prior art.
  • the purpose is to do.
  • the disclosed data migration program, computer, and data migration method use the hash value of the migration source data stored in any memory block constituting the migration source memory. For each memory block that is received from the migration source computer and constitutes the migration destination memory, the hash value of the migration destination data stored in the memory block is compared with the received hash value of the migration source data. The compared comparison result is transmitted to the migration source computer, and as a result of the comparison result being transmitted, the migration source data from which the hash value that does not match the hash value of the migration destination data is not migrated. Receive from the original calculator.
  • the disclosed data migration program, computer, and data migration method are provided for each memory block that constitutes the migration source memory.
  • the data hash value is transmitted to the migration destination computer, and the transmitted hash value of the migration source data is compared with the hash value for each migration destination data stored in each memory block constituting the migration destination memory.
  • the result is received from the migration destination computer, based on the received comparison result, it is determined whether the migration source data needs to be copied to the migration destination memory, and it is determined that the copy is necessary
  • the migration source data is transmitted to the migration destination computer.
  • the disclosed data migration program, computer and data migration method include a hash value for each migration destination data stored in each memory block constituting the migration destination memory.
  • the migration source data of the calculation source of the hash value that does not match the hash value for each migration destination data is converted to the migration source computer. Receive from.
  • the disclosed data migration program, computer and data migration method include a hash value for each migration destination data stored in each memory block constituting the migration destination memory. For each memory block constituting the migration source memory, and a hash value of the migration source data stored in the memory block and a hash value for each received migration destination data Based on the comparison result, it is determined whether or not the migration source data needs to be copied to the migration destination memory. If it is determined that copying is necessary, the migration source data is transferred to the migration destination To the calculator.
  • the disclosed data migration program, computer, and data migration method are provided for each memory block that constitutes the migration source memory. Based on the data attribute information, it is determined whether or not the migration source data needs to be copied to the migration destination memory. If it is determined that copying is necessary, the migration source data is transmitted to the migration destination computer.
  • This data migration program, computer, and data migration method have the effect of suppressing the transfer of data that does not require copying between computers and reducing the amount of data transferred.
  • FIG. 6 is an explanatory diagram illustrating an example of a data migration method according to the first exemplary embodiment
  • FIG. 3 is a block diagram illustrating an example of a hardware configuration of a server according to a second embodiment.
  • FIG. 10 is an explanatory diagram of an example of the network system according to the second embodiment; It is explanatory drawing (the 1) which shows an example of the memory content of a memory management table. It is a block diagram which shows the functional structure of the server concerning Embodiment 2.
  • FIG. It is explanatory drawing (the 1) which shows an example of the memory content of a hash table. It is explanatory drawing which shows an example of live migration. It is explanatory drawing (the 2) which shows an example of the memory content of a memory management table.
  • FIG. 10 is a flowchart illustrating an example of a data migration processing procedure of a migration source server according to the second exemplary embodiment
  • 10 is a flowchart (part 1) illustrating an example of a data migration processing procedure of a migration destination server according to the second exemplary embodiment
  • 10 is a flowchart (part 2) illustrating an example of a data migration processing procedure of a migration destination server according to the second exemplary embodiment
  • 10 is a flowchart (part 3) illustrating an example of a data migration processing procedure of a migration destination server according to the second exemplary embodiment
  • FIG. 10 is a flowchart illustrating an example of a data migration processing procedure of a server according
  • FIG. 1 is an explanatory diagram of an example of the data migration method according to the first embodiment.
  • the first embodiment for each memory block constituting the migration source memory, it is determined in advance whether or not the migration source data stored in the memory block needs to be copied, and transfer of migration source data that does not require copying is suppressed. To do.
  • computers 101 and 102 are computers having a function of transferring data between computers.
  • the computer 101 is a migration source computer including the migration source memory 110.
  • the computer 102 is a migration destination computer including the migration destination memory 120.
  • the memory 110 is divided into memory blocks 110-1 to 110-4, which are divided in predetermined data units.
  • the data unit that delimits the memory 110 can be arbitrarily set.
  • the memory 110 is partitioned in megabyte units, page units, or block units.
  • One page is, for example, 4 to 64 [KB (kilobytes)].
  • One block is a group of a plurality of pages, for example.
  • data d1 to d4 to be migrated are stored in the memory blocks 110-1 to 110-4 constituting the memory 110.
  • the data stored in the memory block 110-i is represented as “data di”.
  • the memory 120 is divided into memory blocks 120-1 to 120-9, which are divided in predetermined data units.
  • the data unit that delimits the memory 120 is the same as the data unit that delimits the memory 110.
  • data D1 to D9 are stored in the memory blocks 120-1 to 120-9 constituting the memory 120.
  • data Dj The data stored in the memory block 120-j is represented as “data Dj”.
  • the data according to the first embodiment will be described by taking as an example the case where the data d1 to d4 stored in the memory blocks 110-1 to 110-4 of the migration source memory 110 are migrated to the migration destination memory 120.
  • An embodiment of the migration method will be described.
  • the migration source computer 101 selects an arbitrary memory block 110-i from among the memory blocks 110-1 to 110-4 constituting the migration source memory 110.
  • the selection process of the memory block 110-i is repeatedly performed until there is no unselected memory block selected from the memory blocks 110-1 to 110-4.
  • the migration source computer 101 transmits the hash value of the data di stored in the selected memory block 110-i (hereinafter referred to as “hash value hi”) to the migration destination computer 102. .
  • the hash value is, for example, a fixed-length random number calculated by giving data as a calculation source to the hash function as an argument.
  • the hash function is a function that generates a fixed-length pseudorandom number from data given as an argument.
  • the length of the hash value is set to an arbitrary length that is shorter than the bit length of the calculation source data.
  • the migration destination computer 102 receives the hash value hi of the data di from the migration source computer 101.
  • the migration destination computer 102 For each memory block 120-j constituting the migration destination memory 120, the migration destination computer 102 has a hash value (hereinafter referred to as “hash value Hj”) of the data Dj stored in the memory block 120-j. 2) and the hash value hi of the data di. In the drawing, a part of the migration destination memory 120 is extracted and displayed.
  • the hash value has a feature that if the calculation source data is different, the probability that the same hash value is calculated is very low. For this reason, the identity of the data di and Dj can be determined by comparing the hash values hi and Hj of the two data di and Dj.
  • the 2-bit numbers shown in the squares representing the memory blocks 110-i and 120-j represent the hash values hi and Hj of the data di and Dj.
  • the hash value of the data d1 stored in the memory block 110-1 is “12”.
  • the hash value of the data D1 stored in the memory block 120-1 is “56”.
  • the migration destination computer 102 transmits the comparison result between the hash value hi of the data di and the hash value Hj of the data Dj to the migration source computer 101.
  • the hash value hi of the data di does not match the hash values H1 to H9 of all the data D1 to D9, or matches the hash value Hj of at least one of the hash values H1 to H9 This is information representing the fact.
  • the migration source computer 101 compares the hash value hi of the data di with the hash value Hj for each data Dj stored in each memory block 120-j constituting the migration destination memory 120. Received from the destination computer 102.
  • the migration source computer 101 determines whether or not the data di needs to be copied to the migration destination memory 120 based on the received comparison result. Here, if the migration source data di and the migration destination data Dj have the same contents, it is not necessary to copy the data di to the migration destination memory 120.
  • the migration source computer 101 matches the hash value hi of the data di with at least one hash value Hj of the hash values H1 to H9 of the data D1 to D9, It is determined that copying is unnecessary. On the other hand, if the hash value hi of the data di does not match the hash values H1 to H9 of all the data D1 to D9, the migration source computer 101 needs to copy the data di to the migration destination memory 120. judge.
  • the migration source computer 101 determines that copying of the data d1 to the migration destination memory 120 is unnecessary. Further, the hash value “77” of the migration source data d4 matches the hash value “77” of the migration destination data D7. For this reason, the migration source computer 101 determines that copying of the data d4 to the migration destination memory 120 is unnecessary. On the other hand, the migration source data d2 and d3 do not match the hash values with all the migration destination data D1 to D9. For this reason, the migration source computer 101 determines that copying of the data d2 and d3 to the migration destination memory 120 is necessary.
  • the migration source computer 101 transmits the data di stored in the memory block 110-i to the migration destination computer 102.
  • the migration source computer 101 transmits data d2 and d3 among the migration source data d1 to d4 to the migration destination computer 102.
  • the migration destination computer 102 the migration source data d2 and d3 are written in the free area of the migration destination memory 120.
  • the migration source data d1 and d4 that have not been transmitted from the migration destination computer 101 are transferred to the migration destination memory 102 by, for example, data D2 and D7 having the same hash value as the data d1 and d4. It is generated by copying to 120 free areas.
  • whether or not the data di stored in the memory block 110-i needs to be copied is determined for each memory block 110-i constituting the migration source memory 110. It can be determined in advance. As a result, it is possible to suppress the transfer of data d1 and d4 that do not need to be copied among the data d1 to d4 to be transferred, and to reduce the data transfer amount between the computers 101 and 102.
  • Embodiment 2 In the second embodiment, a case where the computers 101 and 102 described in the first embodiment are applied to a server SV (for example, servers SV1 and SV2 described later) will be described. Note that the description of the same content as that described in Embodiment 1 is omitted.
  • FIG. 2 is a block diagram of an example of a hardware configuration of the server according to the second embodiment.
  • the server SV includes a CPU (Central Processing Unit) 201, a memory 202, a network I / F (Interface) 203, and an input / output device 204. Each component is connected by a bus 200.
  • the CPU 201 controls the entire server SV.
  • the memory 202 is a storage device that stores data.
  • the memory 202 is, for example, a ROM (Read-Only Memory) or a RAM (Random Access Memory).
  • the network I / F 203 is connected to a network 205 such as a LAN (Local Area Network), a WAN (Wide Area Network), or the Internet through a communication line, and is connected to another computer via the network 205.
  • a network I / F 203 controls an internal interface with the network 205 and controls input / output of data from other computers.
  • a modem or a LAN adapter can be employed as the network I / F 203.
  • the input / output device 204 inputs and outputs data.
  • Examples of the input / output device 204 include a display device that displays data such as documents, images, and function information, and a keyboard for inputting characters, numbers, and various instructions.
  • the server SV may be configured to include a storage device such as a magnetic disk or an optical disk.
  • FIG. 3 is an explanatory diagram of an example of the network system according to the second embodiment.
  • the network system 300 includes a server SV1 and a server SV2.
  • the server SV1 and the server SV2 are connected via a network 205 so that they can communicate with each other.
  • the servers SV1 and SV2 are computers including the VM hosts HT1 and HT2 and capable of building a plurality of execution environments by dividing hardware resources.
  • the VM hosts HT1 and HT2 virtualize the hardware resources of the servers SV1 and SV2 (for example, the CPU 201, the memory 202, the network I / F 203, etc. shown in FIG. 2), and perform control so that a plurality of different OSs can be executed.
  • Software Specifically, for example, the VM hosts H1 and HT2 operate the OS by a virtual machine VM that operates in an execution environment constructed by dividing the hardware resources of the servers SV1 and SV2.
  • the virtual machine VM is a virtual computer that operates in an execution environment constructed by dividing the hardware resources of the servers SV1 and SV2.
  • the virtual machine VM includes, for example, information such as software such as a program or OS, variables given to the software, and hardware resources for executing the software.
  • three virtual machines VM1, VM2, and VM3 are operating in an execution environment constructed by dividing the hardware resources of the server SV1.
  • the VM host HT1 operates a plurality of different OSs by the virtual machines VM1 to VM3.
  • two virtual machines VM4 and VM5 are operating in an execution environment constructed by dividing the hardware resources of the server SV2.
  • the VM host HT2 operates a plurality of different OSs by the virtual machines VM4 and VM5.
  • the logical memory divided from the physical memory of each of the servers SV1, SV2 (hereinafter referred to as “physical memory PM1, PM2”) is allocated to the virtual machine VM.
  • the physical memories PM1 and PM2 of the servers SV1 and SV2 are, for example, the memory 202 shown in FIG.
  • the memory of the virtual machine VM is divided into a plurality of memory blocks divided in units of pages.
  • the page is a data unit for the VM hosts HT1 and HT2 to manage the memory of the virtual machine VM.
  • Each memory block constituting the memory of the virtual machine VM corresponds to one of the memory blocks divided by dividing the physical memories PM1 and PM2.
  • the data stored in each memory block is, for example, a program such as an OS or an application, or content such as video or audio.
  • live migration for migrating a virtual machine VM running on a server SV to another server SV is performed for the purpose of load distribution between the servers SV and maintenance of the server SV.
  • live migration the contents of the memory allocated to the virtual machine VM to be migrated are copied to the migration destination server SV.
  • the transfer cost is higher than when data is copied to a storage device or the like connected via the network 205.
  • an arbitrary virtual machine VM operating on the server SV is denoted as “virtual machine VMk”, and a memory allocated to the virtual machine VMk is denoted as “memory Mk”.
  • data stored in the memory block bi is referred to as “migration source data di”.
  • the memory management table is information for managing the memory Mk that is assigned to each virtual machine VMk that is running on the server SV.
  • a memory management table 400 for managing the memory M3 allocated to the virtual machine VM3 operating on the server SV1 will be described as an example.
  • the memory management table 400 is realized by, for example, the memory 202 illustrated in FIG.
  • FIG. 4 is an explanatory diagram (part 1) of an example of the contents stored in the memory management table.
  • the memory management table 400 has fields of machine ID, memory ID, block ID, and hash value, and stores memory management data of the virtual machine VM3 by setting information in each field.
  • the machine ID is an identifier of the virtual machine VMk.
  • the memory ID is an identifier of the memory Mk assigned to the virtual machine VMk.
  • the block ID is an identifier of the memory block bi constituting the memory Mk of the virtual machine VMk.
  • the hash value is the hash value hi of the migration source data di stored in the memory block bi.
  • the memory blocks b1 to b9 constituting the memory M3 allocated to the virtual machine VM3 can be specified. Further, according to the memory management table 400, the hash values h1 to h9 of the migration source data d1 to d9 stored in the memory blocks b1 to b9 can be specified.
  • FIG. 5 is a block diagram of a functional configuration of the server according to the second embodiment.
  • the server SV has a configuration including a receiving unit 501, a selecting unit 502, a transmitting unit 503, a determining unit 504, a comparing unit 505, and a writing unit 506.
  • each function unit realizes its function, for example, by causing the CPU 201 to execute a program stored in the memory 202 illustrated in FIG. 2 or by the network I / F 203. More specifically, for example, each functional unit is realized by the VM hosts HT1 and HT2 illustrated in FIG. The processing result of each functional unit is stored in the memory 202.
  • the server SV may be the migration source server SV that operates the migration target virtual machine VMk or the migration destination server SV of the migration target virtual machine VMk.
  • the processing content of each functional unit when the server SV is the migration source will be described.
  • the receiving unit 501 receives a migration instruction for the virtual machine VMk.
  • the migration instruction of the virtual machine VMk is an instruction to migrate the virtual machine VMk operating on the own server to another server.
  • the migration instruction for the virtual machine VMk includes, for example, a machine ID of the virtual machine VMk and a server ID for identifying the migration destination server SV.
  • the VM host HT1 of the server SV1 receives, from the external computer, a migration instruction that instructs the virtual machine VM3 to migrate to the server SV2 via the network 205. Further, the VM host HT1 may receive a migration instruction for the virtual machine VM3 by a user operation input using the input / output device 204 illustrated in FIG.
  • the selection unit 502 selects an arbitrary memory block bi from the memory blocks b1 to bn constituting the memory Mk allocated to the virtual machine VMk when the migration instruction of the virtual machine VMk is received.
  • a migration instruction that instructs to migrate the virtual machine VM3 to the server SV2 is received will be described as an example.
  • the VM host HT1 refers to, for example, the memory management table 400 shown in FIG. 4, and selects an arbitrary memory block bi from the memory blocks b1 to b9 of the memory M3 allocated to the virtual machine VM3. select.
  • the selection process by the selection unit 502 is repeatedly executed until there is no unselected memory block bi not selected from the memory blocks b1 to bn, for example.
  • the transmission unit 503 transmits the hash value hi of the migration source data di stored in the selected memory block bi to the migration destination server SV.
  • the hash value hi of the migration source data di is calculated, for example, by giving the migration source data di as an argument to the hash function by the VM host HT1 of the migration source server SV1.
  • the calculation timing of the hash value hi of the migration source data di may be, for example, after the memory block bi is selected by the selection unit 502, or may be when the migration source data di is recorded or updated in the memory block bi. .
  • the calculated hash value hi of the migration source data di is stored in the memory management table 400 in association with the block ID of the memory block bi, for example.
  • the VM host HT1 refers to the memory management table 400 and identifies the hash value hi of the migration source data di stored in the selected memory block bi. Then, the VM host HT1 transmits the hash value hi of the specified migration source data di together with the block ID of the memory block bi to the VM host HT2 of the migration destination server SV2 via the network 205.
  • the receiving unit 501 compares the hash value hi of the migration source data di with the hash value Hj for each migration destination data Dj stored in each memory block 120-j constituting the migration destination physical memory PM. Are received from the migration destination server SV.
  • the comparison result is, for example, that the hash value hi of the migration source data di does not match the hash values H1 to Hm of all the migration destination data D1 to Dm, or at least one of the hash values H1 to Hm Information indicating that the hash value Hj matches.
  • the comparison result may represent a comparison result between the hash value hi of the migration source data di and the hash value Hj of each migration destination data Dj.
  • the VM host HT1 transmits the hash value hi of the migration source data di and the hash value Hj for each migration destination data Dj via the network 205.
  • the comparison result is received from the VM host HT2 of the migration destination server SV2.
  • the determination unit 504 determines whether or not it is necessary to copy the migration source data di to the physical memory PM of the migration destination server SV based on the compared result. Specifically, for example, when the VM host HT1 matches the hash value hi of the migration source data di with at least one of the hash values H1 to Hm of the migration destination data D1 to Dm, the migration source It is determined that copying of data di is unnecessary. On the other hand, if the hash value hi of the migration source data di does not match the hash values H1 to Hm of all the migration destination data D1 to Dm, the VM host HT1 determines that the migration source data di needs to be copied. .
  • the transmission unit 503 transmits the migration source data di to the migration destination server SV based on the determined determination result. Specifically, for example, when it is determined that copying of the migration source data di is necessary, the VM host HT1 transmits a copy instruction of the migration source data di to the VM host HT2 via the network 205.
  • the copy instruction includes, for example, the block ID of the memory block bi and the migration source data di.
  • the VM host HT1 does not transmit the migration source data di to the migration destination server SV2.
  • the receiving unit 501 has the hash of the migration source data di stored in the memory block bi for each memory block bi constituting the migration source memory Mk from the migration source server SV.
  • the value hi is received.
  • the VM host HT2 of the server SV2 receives the hash value hi of the migration source data di from the VM host HT1 of the server SV1 via the network 205.
  • the comparison unit 505 compares the hash value Hj of the migration destination data Dj stored in the memory block Bj, the hash value hi of the received migration source data di, Compare
  • the hash value Hj of the migration destination data Dj is calculated, for example, by giving the migration destination data Dj as an argument to the hash function by the VM host HT2 of the migration destination server SV2.
  • the hash value hi of the migration source data di and the hash value Hj of the migration destination data Dj are calculated using the same algorithm (for example, the same hash function).
  • the calculation timing of the hash value Hj of the migration destination data Dj may be, for example, when the comparison unit 505 executes the comparison process, or when the migration destination data Dj is recorded or updated in the memory block Bj.
  • the calculated hash value Hj of the migration destination data Dj is stored in, for example, the hash table 600 shown in FIG.
  • the hash table 600 is realized by the memory 202, for example.
  • FIG. 6 is an explanatory diagram (part 1) illustrating an example of the contents stored in the hash table.
  • the hash table 600 stores the hash value Hj of the migration destination data Dj stored in the memory block Bj for each memory block Bj constituting the physical memory PM2 of the migration destination server SV2.
  • the VM host HT2 refers to the hash table 600, the hash value Hj of the migration destination data Dj stored in the memory block Bj, the hash value hi of the received migration source data di, Compare
  • the transmission unit 503 transmits the compared result of comparison to the server SV of the migration source. Specifically, for example, the VM host HT2 transmits the determination result of the migration source data di to the VM host HT1 of the migration source server SV1 via the network 205.
  • the reception unit 501 receives the migration source data di from the migration source server SV as a result of the transmission of the comparison result.
  • the VM host HT2 receives from the VM host HT1 a copy instruction of the migration source data di from which the hash value hi that does not match the hash values H1 to Hm of all the migration destination data D1 to Dm To do.
  • the writing unit 506 writes the received migration source data di into the migration destination physical memory PM. Specifically, for example, when a copy instruction for the transfer source data di is received, the VM host HT2 transfers the transfer source data di of the memory block bi included in the copy instruction to the free area of the transfer destination physical memory PM. Write.
  • the migration source data di is copied to the free area of the migration destination physical memory PM, and the memory block bi of the virtual machine VMk is generated.
  • the writing unit 506 writes the migration destination data Dj of the calculation source of the hash value Hj that matches the hash value hi of the migration source data di to the migration destination physical memory PM based on the compared result of comparison.
  • the VM host HT2 reads the migration destination data Dj from which the hash value Hj that matches the hash value hi of the migration source data di is read from the memory block Bj, and the migration destination physical memory PM is free. Write to the area.
  • the migration destination data Dj of the calculation source of the hash value Hj that matches the hash value hi of the migration source data di is copied to the free area of the migration destination physical memory PM, and the virtual machine VMk. Memory block bi is generated.
  • the migration destination server SV performs the comparison process between the hash value hi of the migration source data di and the hash value Hj of the migration destination data Dj.
  • the present invention is not limited to this.
  • the migration source VM host HT1 sends a transmission request for the hash value Hj of the migration destination data Dj to the migration destination VM host HT2, and the hash value Hj of the migration destination data Dj (for example, in the hash table 600) Storage content) is received from the VM host HT2.
  • the migration source VM host HT1 may compare the hash value hi of the migration source data di and the hash value Hj of the migration destination data Dj. In this case, the migration source VM host HT1 compares the hash value hi of the migration source data di and the hash value Hj of the migration destination data Dj based on the comparison result of the migration source data di for the migration destination physical memory PM2. Determine whether copying is necessary.
  • the migration destination VM host HT2 does not know the block ID of the memory block Bj of the migration destination data Dj whose hash value matches the migration source data di. For this reason, the VM host HT1 together with the block ID of the memory block bi of the migration source data di, the block ID of the memory block Bj of the migration destination data Dj from which the hash value Hj that matches the hash value hi of the migration source data di is calculated. Is transmitted to the migration destination VM host HT2.
  • the migration destination data Dj of the calculation source of the hash value Hj that matches the hash value hi of the migration source data di is copied to the free area of the migration destination physical memory PM, and the virtual machine VMk. Memory block bi is generated.
  • the switching of the context of the program being executed by the virtual machine VMk may be performed, for example, immediately after the migration instruction of the virtual machine VMk is given, or the memory block of the virtual machine VMk is added to the migration destination physical memory PM. It may be performed after b1 to bn are generated.
  • the context is state information (for example, a register value of the CPU 201) regarding a program being executed by the virtual machine VMk. Specifically, for example, the switching of the context is performed by the migration source VM host HT1 copying the value of the register of the CPU 201 allocated to the virtual machine Mk to the CPU 201 of the migration destination server SV2.
  • FIG. 7 is an explanatory diagram showing an example of live migration.
  • the migration source data d1 to d9 of the memory blocks b1 to b9 constituting the memory M3 of the virtual machine VM3 it is determined that the migration source data d1, d6, d8 needs to be copied, and the migration source data d2 It is determined that copying of .about.d5, d7, d9 is unnecessary.
  • the VM host HT1 transmits a copy instruction of the migration source data d1, d6, d8 determined to be copied to the migration destination VM host HT2. Then, the VM host HT2 writes the migration source data d1, d6, d8 in the free area of the physical memory PM2. As a result, the migration source data d1, d6, d8 are copied to the free area of the physical memory PM2, and the memory blocks b1, b6, b8 of the virtual machine VM3 are generated.
  • the migration destination data D2, D4, D8, D10, D14, and D16 are migration destination data Dj whose hash values match that of the migration source data d2 to d5, d7, and d9 determined to be unnecessary for copying.
  • the VM host HT2 reads the migration destination data D2, D4, D8, D10, D14, and D16 from the memory blocks B2, B4, B8, B10, B14, and B16 and writes them in the free area of the physical memory PM2.
  • the migration destination data D2, D4, D8, D10, D14, and D16 are copied to the empty area of the physical memory PM2, and the memory blocks b2 to b5, b7, and b9 of the virtual machine VM3 are generated.
  • the memory blocks b1 to b9 of the virtual machine VM3 are generated in the physical memory PM2 of the migration destination server SV2, and the migration of the virtual machine VM3 is completed. In this way, it is possible to reduce the amount of data transferred between servers by determining in advance whether or not copying of the migration source data di is necessary and suppressing the transfer of data di that does not require copying.
  • the migration source data di and the migration destination data Dj have different data contents, there is a possibility that the hash value hi and the hash value Hj match (collision). For this reason, when the identity of the migration source data di and the migration destination data Dj is determined only by the hash value match determination, the migration source data di that normally needs to be copied is not transferred to the migration destination server SV. There is.
  • the determination of the identity of the migration source data di and the migration destination data Dj may be further performed by the determination methods 1 to 4 described below.
  • Determination method 1 First, the determination method 1 for determining the identity of the migration source data di and the migration destination data Dj with a plurality of hash values calculated using different algorithms will be described. Here, a plurality of different hash values of the migration source data di and the migration destination data Dj are calculated using different first and second hash functions.
  • the hash value calculated by giving the migration source data di to the first hash function is expressed as “first hash value h 1 i”, and the migration destination data Dj is stored in the first hash function.
  • the hash value calculated by giving is expressed as “first hash value H 1 j”.
  • the hash value calculated by giving the migration source data di to the second hash function is expressed as “second hash value h 2 i”, and the migration destination data Dj is given to the second hash function.
  • the calculated hash value is expressed as “second hash value H 2 j”.
  • the comparison unit 505 calculates, for each hash function included in a plurality of different hash functions, the hash value (for example, the first and second hash values H 1 j of the migration destination data Dj calculated using the hash function). , H 2 j) and the hash value (for example, the first and second hash values h 1 i, h 2 i) of the migration source data di.
  • the comparison unit 505 performs the first hash value H 1 j of the migration destination data Dj of the memory block Bj and the first of the migration source data di of the memory block bi.
  • the hash value h 1 i is compared.
  • the comparison unit 505 determines whether the second hash value H 2 j of the migration destination data Dj and the migration source data di
  • the second hash value h 2 i is compared.
  • the determination unit 504 determines whether or not it is necessary to copy the migration source data di of the memory block bi to the physical memory PM of the migration destination server SV based on the comparison result.
  • the determination method 1 specific processing contents regarding the determination method 1 will be described.
  • the memory management table 800 that stores the first hash value h 1 i and the second hash value h 2 i of the migration source data di will be described.
  • the memory management table 800 is realized by the memory 202 of the migration source server SV, for example.
  • FIG. 8 is an explanatory diagram (part 2) showing an example of the contents stored in the memory management table.
  • the memory management table 800 has fields of a machine ID, a memory ID, a block ID, a first hash value, and a second hash value. By setting information in each field, the virtual machine VM3 Memory management data is stored.
  • the first hash value is a first hash value h 1 i calculated by giving the migration source data di stored in the memory block bi to the first hash function.
  • the second hash value is a second hash value h 2 i calculated by giving the migration source data di stored in the memory block bi to the second hash function.
  • the first hash values h 1 1 to h 1 9 and the second hash values h 2 1 to h 2 9 of the migration source data d1 to d9 stored in the memory blocks b1 to b9 are stored. Can be specified.
  • the migration source VM host HT1 refers to the memory management table 800 to identify the first and second hash values h 1 i, h 2 i of the migration source data di. Then, the VM host HT1 transmits the first and second hash values h 1 i and h 2 i of the specified migration source data di to the migration destination VM host HT2.
  • the migration destination VM host HT2 determines, for each memory block Bj, the first hash value H 1 j of the migration destination data Dj of the memory block Bj and the first hash value h 1 i of the migration source data di. Compare Here, the hash table 900 that stores the first hash value H 1 j and the second hash value H 2 j of the migration destination data Dj will be described.
  • the hash table 900 is realized by the memory 202 of the migration destination server SV, for example.
  • FIG. 9 is an explanatory diagram (part 2) of an example of the stored contents of the hash table.
  • the hash table 900 includes the first hash value H 1 j and the first hash value H 1 j of the migration destination data Dj stored in the memory block Bj for each memory block Bj constituting the physical memory PM2 of the migration destination server SV2. 2 hash values H 2 j are stored.
  • the migration destination VM host HT2 refers to, for example, the hash table 900, for each memory block Bj, the first hash value H 1 j of the migration destination data Dj of the memory block Bj and the first of the migration source data di. Is compared with the hash value h 1 i.
  • the VM host HT2 further refers to the hash table 900, and the second hash of the migration destination data Dj
  • the value H 2 j is compared with the second hash value h 2 i of the migration source data di. Then, the VM host HT2 transmits the compared result of comparison to the VM host HT1.
  • the VM host HT1 determines whether or not it is necessary to copy the migration source data di of the memory block bi to the migration destination physical memory PM2 based on the received comparison result. Specifically, for example, if the second hash value H 2 j and the second hash value h 2 i match, the VM host HT1 determines that copying of the migration source data di is unnecessary. On the other hand, if the first hash value H 1 j and the first hash value h 1 i do not match, or if the second hash value H 2 j and the second hash value h 2 i do not match, The VM host HT1 determines that copying of the migration source data di is necessary.
  • the migration destination VM host HT2 is the source of calculation of the hash value that does not match at least one of the first and second hash values H 1 j and H 2 j of the migration destination data Dj.
  • the migration source data di is received from the migration source VM host HT1.
  • the migration destination server SV When the comparison unit 505 performs comparison processing in the migration source server SV, the migration destination server SV responds to a transmission request from the migration source server SV by the first and second destination data Dj.
  • the hash values H 1 j and H 2 j are transmitted to the migration source server SV.
  • the migration source data di and the migration destination data Dj are identical by determining whether or not the migration source data di and the migration destination data Dj have the same hash value (for example, the first hash value described above).
  • a determination method 2 for determining sex will be described.
  • the comparison unit 505 compares the partial data extracted from the migration destination data Dj based on a predetermined extraction rule, and the migration source The partial data extracted from the data di based on the extraction rule is compared.
  • the partial data extracted from the migration source data di is referred to as “partial data pi”.
  • the partial data extracted from the migration destination data Dj is denoted as “partial data Pj”.
  • the partial data pi of the migration source data di is extracted from the migration source data di based on a predetermined extraction rule, for example, by the VM host HT1 of the migration source server SV1.
  • a predetermined extraction rule for example, by the VM host HT1 of the migration source server SV1.
  • the extraction rule for example, a rule for extracting data of a predetermined number of bits from the beginning or the end of the migration source data di is set.
  • the partial data Pj of the migration destination data Dj is extracted from the migration destination data Dj based on a predetermined extraction rule by, for example, the VM host HT2 of the migration destination server SV2.
  • the partial data pi and Pj are extracted based on the same extraction rule.
  • the extraction timing of each partial data pi, Pj may be, for example, when recording or updating the migration source data di and the migration destination data Dj.
  • the determination unit 504 determines whether or not it is necessary to copy the migration source data di of the memory block bi to the physical memory PM of the migration destination server SV based on the comparison result.
  • the determination method 2 specific processing contents regarding the determination method 2 will be described.
  • the migration destination VM host HT2 matches the first hash value H 1 j and the first hash value h 1 i, the partial data Pj of the migration destination data Dj and the migration source The partial data pi of the data di is compared.
  • the partial data pi of the migration source data di is transmitted from the migration source VM host HT1 to the VM host HT2, for example, in response to a transmission request from the migration destination VM host HT2. Then, the VM host HT2 transmits the compared result of comparison to the VM host HT1.
  • the VM host HT1 determines whether or not it is necessary to copy the migration source data di of the memory block bi to the migration destination physical memory PM2 based on the received comparison result. Specifically, for example, when the partial data Pj and the partial data pi match, the VM host HT1 determines that copying of the migration source data di is unnecessary. On the other hand, if the partial data Pj and the partial data pi do not match, the VM host HT1 determines that the migration source data di needs to be copied.
  • the migration destination VM host HT2 receives from the migration source VM host HT1 the migration source data di of the extraction source of the partial data pi that does not match the partial data Pj of the migration destination data Dj.
  • the migration destination server SV transfers the partial data Pj of the migration destination data Dj in response to a transmission request from the migration source server SV. To the server SV.
  • the execution subject that performs the comparison process between the partial data pi of the migration source data di and the partial data Pj of the migration destination data Dj may be determined.
  • the comparison unit 505 determines the communication quality among the bidirectional communication paths between the servers SV. Select a higher communication path.
  • the communication quality for example, a data transfer rate or an error rate can be used.
  • the transfer rate is the amount of data transferred per unit time (for example, bits per second).
  • the error rate is the probability that the received data includes bits different from the transmitted data when data is transmitted / received.
  • the transfer rate and the error rate may be measured in advance and stored in the memory 202, or may be measured each time a communication path is selected.
  • the VM host HT2 matches the first hash value H 1 j and the first hash value h 1 i, among the bidirectional communication paths between the servers SV1 and SV2, Select a communication channel with high communication quality.
  • the VM host HT2 transmits a transmission request for the partial data pi of the migration source data di to the migration source VM host HT1.
  • the VM host HT2 receives the partial data pi of the migration source data di from the VM host HT1, and performs a comparison process between the partial data pi of the migration source data di and the partial data Pj of the migration destination data Dj.
  • the VM host HT2 transmits the partial data Pj of the migration destination data Dj to the migration source VM host HT1.
  • the migration source VM host HT1 performs a comparison process between the partial data pi of the migration source data di and the partial data Pj of the migration destination data Dj.
  • the comparison unit 505 selects a communication path with high communication quality among the bidirectional communication paths between the servers SV. Specifically, for example, when the VM host HT2 matches the first hash value H 1 j and the first hash value h 1 i, communication is performed among the bidirectional communication paths between the servers SV1 and SV2. Select a high-quality channel.
  • the VM host HT2 transmits the migration destination data Dj to the migration source VM host HT1. Thereafter, the migration source VM host HT1 compares the migration source data di and the migration destination data Dj. Then, the VM host HT1 determines whether or not it is necessary to copy the migration source data di of the memory block bi to the migration destination physical memory PM2 based on the comparison result.
  • the VM host HT1 determines that copying of the migration source data di is unnecessary. On the other hand, if the migration source data di and the migration destination data Dj do not match, the VM host HT1 determines that copying of the migration source data di is necessary.
  • the migration destination VM host HT2 receives from the migration source VM host HT1 the migration source data di that does not match the migration destination data Dj.
  • the migration source data di is transferred from the migration source VM host HT1 to the migration destination VM host HT2 in order to determine a match with the migration destination data Dj. There is no point in sending. Therefore, when a communication path in the direction from the server SV1 to the server SV2 is selected, the VM host HT2 compares the first hash value H 1 j and the first hash value h 1 i to match. The result may be transmitted to the VM host HT1.
  • the VM host HT1 determines that it is necessary to copy the migration source data di of the memory block bi to the migration destination physical memory PM2. That is, when the communication path in the direction from the server SV1 to the server SV2 is selected, it is determined that copying of the migration source data di is necessary without performing a match determination between the migration source data di and the migration destination data Dj. .
  • the migration source data di and the migration destination data Dj are identical by determining whether the migration source data di and the migration destination data Dj having the same hash value (for example, the above-described first hash value) match.
  • a determination method 4 for determining the sex will be described.
  • FIG. 10 is an explanatory diagram showing an example of shared storage for storing migration source data and migration destination data.
  • a storage apparatus 1000 is a shared storage that can be accessed by the migration source server SV1 and the migration destination server SV2 via the network 205.
  • the virtual machine VM3 operating on the server SV1 is a virtual machine to be migrated.
  • the migration source data d5 is stored in the logical volume LV1 of the storage apparatus 1000.
  • the migration destination data D10 is stored in the logical volume LV2 of the storage apparatus 1000.
  • the storage apparatus 1000 has a deduplication function, and logical blocks having the same contents are stored in the same physical block. That is, when the migration source data d5 and the migration destination data D10 are data D stored in the volume PV1 having the same physical address, d5 and D10 have the same contents and indicate the same data source.
  • the migration destination server SV2 stores the memory block B10 in which the migration destination data D10 is stored in a plurality of virtual machines VM (for example, virtual machines VM3, VM3). VM4) can be shared. For this reason, it is not necessary to copy the migration source data d5 to the migration destination physical memory PM2.
  • VM virtual machines
  • the comparison unit 505 further transfers the address of the storage area in the storage that stores the migration destination data Dj, and the migration The address of the storage area in the storage that stores the original data di is compared.
  • the storage is, for example, the storage device 1000 that can be accessed by the migration destination server SV and the migration source server SV. Then, the determination unit 504 determines whether or not it is necessary to copy the migration source data di of the memory block bi to the physical memory PM of the migration destination server SV based on the comparison result.
  • the VM host HT2 inquires of the migration source VM host HT1 about the volume ID for identifying the logical volume LV1 storing the migration source data d5. Then, the VM host HT2 inquires of the storage apparatus 1000 about a physical address corresponding to the logical volume LV1 that stores the migration source data d5.
  • the VM host HT2 inquires of the storage apparatus 1000 about a physical address corresponding to the logical volume LV2 that stores the migration destination data D10. Next, the VM host HT2 compares the physical address corresponding to the logical volume LV1 storing the migration source data d5 and the physical address corresponding to the logical volume LV2 storing the migration destination data D10. Then, the VM host HT2 transmits the compared result of comparison to the VM host HT1.
  • the VM host HT1 determines whether or not it is necessary to copy the migration source data di of the memory block bi to the migration destination physical memory PM2 based on the received comparison result. Specifically, for example, when the physical address of the logical volume LV1 matches the physical address of the logical volume LV2, the VM host HT1 determines that copying of the migration source data d5 is unnecessary. As a result, in the migration destination server SV2, for example, the memory block B10 that stores the migration destination data D10 is shared by the plurality of virtual machines VM3 and VM4.
  • the VM host HT1 determines that copying of the migration source data d5 is necessary.
  • the migration destination VM host HT2 converts the migration source data di stored in the logical volume LV1 having a physical address that does not match the physical address of the logical volume LV2 that stores the migration destination data Dj into the migration source VM host HT1. Will receive from.
  • the migration source data di and the migration destination data Dj are combined by combining a plurality of determination methods 1 to 4 described above.
  • the identity may be determined.
  • FIG. 11 is a flowchart of an example of a data migration processing procedure of the migration source server according to the second embodiment.
  • the receiving unit 501 determines whether an instruction to migrate the virtual machine VMk has been received (step S1101).
  • the reception unit 501 waits to receive a migration instruction for the virtual machine VMk (step S1101: No).
  • the selection unit 502 selects the memory block bi from the memory blocks b1 to bn configuring the memory Mk of the virtual machine VMk (step S1103). Then, the transmission unit 503 transmits the first and second hash values h 1 i and h 2 i of the migration source data di stored in the selected memory block bi to the migration destination server SV (step S1104). ).
  • the reception unit 501 compares the hash value hi of the migration source data di with the hash value Hj for each migration destination data Dj stored in each memory block 120-j constituting the migration destination physical memory PM. It is determined whether the result is received from the migration destination server SV (step S1105).
  • step S1105: No it waits for the reception of the comparison result
  • step S1105: Yes the determination unit 504 uses the physical result of the migration destination server SV based on the received comparison result. It is determined whether or not it is necessary to copy the migration source data di to the memory PV (step S1106).
  • the transmission unit 503 transmits a copy instruction of the migration source data di to the migration destination server SV (step S1108). Then, the selection unit 502 increments “i” of the memory block bi (step S1109), and determines whether “i” is greater than “n” (step S1110).
  • step S1110: No when “i” is equal to or less than “n” (step S1110: No), the process returns to step S1103. On the other hand, when “i” is larger than “n” (step S1110: Yes), a series of processes according to this flowchart is ended. If it is not necessary to copy the migration source data di in step S1107 (step S1107: No), the process proceeds to step S1109.
  • (Data migration processing procedure of migration destination server SV) 12 to 14 are flowcharts illustrating an example of a data migration processing procedure of the migration destination server according to the second embodiment.
  • the receiving unit 501 determines whether or not the first and second hash values h 1 i and h 2 i of the migration source data di have been received from the migration source server SV (step S1201).
  • the comparison unit 505 compares the first hash value H 1 j of the migration destination data Dj stored in the memory block Bj with the first hash value h 1 i of the received migration source data di. (Step S1203). Then, the comparison unit 505 determines whether or not the first hash value H 1 j of the migration destination data Dj matches the first hash value h 1 i of the migration source data di (step S1204).
  • step S1204 when the first hash value H 1 j and the first hash value h 1 i do not match (step S1204: No), the comparison unit 505 increments “j” of the memory block Bj (step S1204). In step S1205, it is determined whether “j” is larger than “m” (step S1206). If “j” is equal to or less than “m” (step S1206: No), the process returns to step S1203.
  • step S1206 when “j” is larger than “m” (step S1206: Yes), the transmission unit 503 transmits the comparison result compared by the comparison unit 505 to the migration source server SV (step S1207). The series of processes by is terminated.
  • step S1204 when the first hash value H 1 j matches the first hash value h 1 i (step S1204: Yes), the comparison unit 505 stores the migration destination stored in the memory block Bj.
  • the second hash value H 2 j of the data Dj is compared with the second hash value h 2 i of the migration source data di (step S1208).
  • the comparison unit 505 determines whether or not the second hash value H 2 j of the migration destination data Dj matches the second hash value h 2 i of the migration source data di (step S1209).
  • the process proceeds to step S1205.
  • step S1209 Yes
  • the process proceeds to step S1301 shown in FIG.
  • the transmission unit 503 transmits a transmission request for the partial data pi of the migration source data di to the migration source server SV (step S1301).
  • the receiving unit 501 determines whether or not the partial data pi of the migration source data di is received from the migration source server SV (step S1302).
  • step S1302 After waiting for reception of the partial data pi (step S1302: No), if received (step S1302: Yes), the comparison unit 505 causes the partial data Pj of the transfer destination data Dj and the transfer source data di to be changed. The partial data pi is compared (step S1303).
  • the comparison unit 505 determines whether or not the partial data Pj of the migration destination data Dj matches the partial data pi of the migration source data di (step S1304). If the partial data Pj and the partial data pi do not match (step S1304: NO), the process proceeds to step S1205 shown in FIG.
  • step S1304 Yes
  • the process proceeds to step S1401 shown in FIG.
  • the comparison unit 505 inquires the migration source server SV about the volume ID of the logical volume storing the migration source data di (step S1401). Then, the comparison unit 505 inquires the storage apparatus 1000 about the physical address corresponding to the logical volume storing the migration source data di (step S1402).
  • the comparison unit 505 inquires the storage apparatus 1000 about a physical address corresponding to the logical volume storing the migration destination data Dj (step S1403).
  • the comparison unit 505 compares the physical address corresponding to the logical volume storing the migration source data di and the physical address corresponding to the logical volume storing the migration destination data Dj (step S1404).
  • the comparison unit 505 determines whether or not the physical address of the compared migration source data di matches the physical address of the migration destination data Dj (step S1405). If the physical address of the migration source data di and the physical address of the migration destination data Dj do not match (step S1405: No), the process proceeds to step S1205 shown in FIG.
  • Step S1405 if the physical address of the migration source data di matches the physical address of the migration destination data Dj (step S1405: Yes), the transmission unit 503 sends the comparison result compared by the comparison unit 505 to the migration source server SV. (Step S1406), and a series of processing according to this flowchart is terminated.
  • the information (comparison result) for determining the identity between the migration source data di stored in the migration source memory block bi and the migration destination data Dj stored in the migration destination memory block Bj. Can be transmitted to the server SV of the migration source.
  • step S1207 when the comparison result is transmitted to the migration source server SV and the receiving unit 501 receives a copy instruction for the migration source data di, the writing unit 506 causes the migration source data to be copied. Write di to the migration destination physical memory PM.
  • step S1406 if the compared result is transmitted to the migration source server SV, for example, the writing unit 506 converts the migration destination data Dj whose hash value matches the migration source data di to the physical data of the migration destination. Write to memory PM.
  • the context switching is performed after, for example, the memory blocks b1 to bn constituting the memory Mk of the virtual machine VMk are generated on the physical memory PM of the migration destination server SV.
  • the server SV According to the server SV according to the second embodiment, necessity of copying of the migration source data di of the memory block bi for each memory block bi constituting the memory Mk of the virtual machine VMk to be migrated. Can be determined. As a result, when live migration is performed, copying of data di that does not need to be copied can be suppressed, and the amount of data transferred between servers SV can be reduced.
  • the hash value hi of the migration source data di and the hash value Hj of the migration destination data Dj are compared, and the identity of the migration source data di and the migration destination data Dj is determined. It is possible to determine whether the bi data di needs to be copied.
  • the server SV by determining the identity of the migration source data di and the migration destination data Dj using a plurality of different hash values, a problem caused by the collision of the hash values of the migration source data di and the migration destination data Dj can be solved. It can be avoided.
  • the identity of the migration source data di and the partial data pi and Pj of the migration destination data Dj is determined to be identical, whereby the hash value of the migration source data di and the migration destination data Dj collides. It is possible to avoid problems caused by.
  • a communication path with high communication quality can be selected from the two-way communication paths between the server SV1 and the server SV2, and the comparison process between the partial data pi and the partial data Pj can be performed. . Thereby, the coincidence determination between the partial data pi and the partial data Pj can be performed quickly and efficiently.
  • the server SV by performing identity determination by determining whether the migration source data di and the migration destination data Dj match, it is possible to avoid problems caused by collision of hash values of the migration source data di and the migration destination data Dj. Can do.
  • a memory block table for managing the memory blocks b1 to bn constituting the memory Mk by the OS (hereinafter referred to as “guest OSk”) being executed by the virtual machine VMk on the server SV will be described.
  • guest OSk a memory block table used by the guest OS 3 being executed by the virtual machine VM3 on the server SV1
  • the memory block table 1500 is realized by, for example, the memory 202 illustrated in FIG.
  • FIG. 15 is an explanatory diagram of an example of the contents stored in the memory block table.
  • the memory block table 1500 has fields of block ID, type, status, and other block ID. By setting information in each field, management data for each memory block bi is stored.
  • the block ID is an identifier of the memory block bi constituting the memory Mk of the virtual machine VMk.
  • the type is the data type of the data di stored in the memory block bi.
  • “kern” represents kernel data.
  • the kernel data includes, for example, a memory block table 1500.
  • “Text” represents text data such as a program code.
  • “Free” represents a memory block included in the free memory.
  • Data represents data such as a data area of the program.
  • “Anno” represents data (anonymous data) other than “kern”, “text”, “free”, and “data”.
  • the status represents the state of the data di stored in the memory block bi.
  • “nostore” represents a state where there is no backing store.
  • the backing store is a storage area in the swap area that stores backup data of the data di.
  • “Sync” indicates that the memory block is synchronized with another memory block different from the memory block bi.
  • “Nosync” indicates that the memory block is not synchronized with another memory block different from the memory block bi.
  • Null indicates that the memory block bi is initialized.
  • the other block ID is a block ID of another memory block that stores data related to the data di stored in the memory block bi.
  • Examples of other memory blocks include a memory block on the file system and a memory block in the swap area.
  • FIG. 16 is a block diagram of a functional configuration of the server according to the third embodiment.
  • the server SV is configured to include a reception unit 501, a selection unit 502, a transmission unit 503, a determination unit 1601, and a determination unit 1602.
  • each function unit realizes its function, for example, by causing the CPU 201 to execute a program stored in the memory 202 illustrated in FIG. 2 or the like, or by the network I / F 203. More specifically, for example, each functional unit is realized by the VM hosts HT1 and HT2 illustrated in FIG. 3 or the guest OSk executed on the virtual machine VMk. The processing result of each functional unit is stored in the memory 202.
  • the determination unit 1601 determines whether or not the memory block bi is an unused storage area based on the attribute information of the migration source data di stored in the memory block bi.
  • the guest OS 3 of the virtual machine VM 3 refers to the memory block table 1500 and determines whether or not the memory block bi is a memory block included in the free memory. More specifically, for example, when “free” is set in the type field of the memory block bi, the guest OS 3 determines that the memory block bi is a memory block included in the free memory.
  • the determination unit 1602 determines whether or not it is necessary to copy the transfer source data di to the physical memory PM of the transfer destination server SV based on the determined determination result. Specifically, for example, when the guest OS 3 determines that the memory block bi is a memory block included in the free memory, it determines that copying of the migration source data di is unnecessary.
  • the guest OS 3 shifts the status of the memory block bi to the page stealed state.
  • the page steal is, for example, a state in which the memory block bi is taken by another virtual machine VM.
  • Information indicating that the status of the memory block bi is shifted to the page stealed state is transferred from the VM host HT1 to the VM host HT2.
  • the status of the memory block bi is reflected in the memory block table 1500 used by the guest OS 3 of the virtual machine VM3 operating on the migration destination server SV2.
  • the guest OS 3 secures a free space in the physical memory PM2 and generates the memory block bi.
  • the determination unit 1601 determines whether or not the migration source data di is stored in a storage device accessible to the migration destination server SV based on the attribute information of the migration source data di stored in the memory block bi. to decide.
  • the guest OS 3 of the virtual machine VM 3 refers to the memory block table 1500 and determines whether the migration source data di is stored in a file system accessible by the migration destination server SV. .
  • the guest OS 3 determines whether “text” or “data” is set in the type field of the memory block bi.
  • the guest OS 3 further determines whether “sync” is set in the status field of the memory block bi.
  • the guest OS 3 determines that the migration source data di is stored in the file system.
  • the guest OS 3 determines that copying of the migration source data di is unnecessary. Next, the guest OS 3 shifts the status of the memory block bi to the page stealed state.
  • the guest OS 3 secures a free area in the physical memory PM2, acquires the data di from the file system, and acquires the memory block. Generate bi.
  • the determination unit 1601 determines whether the migration source data di is backed up in another storage area different from the memory Mk based on the attribute information of the migration source data di stored in the memory block bi.
  • the other storage area may be provided in a storage device such as a magnetic disk or an optical disk of the migration source server SV, and is accessible to the migration source server SV and the migration destination server SV. It may be provided in the storage device.
  • the guest OS 3 of the virtual machine VM 3 refers to the memory block table 1500 and determines whether there is a backing store for the migration source data di. More specifically, for example, first, the guest OS 3 determines whether or not “anno” is set in the type field of the memory block bi. Here, when “anno” is set, the guest OS 3 further determines whether “sync” is set in the status field of the memory block bi.
  • the guest OS 3 determines that there is a backing store of the migration source data di. Then, the guest OS 3 determines that copying of the migration source data di is unnecessary. Then, the guest OS 3 shifts the status of the memory block bi to the page stealed state.
  • the guest OS 3 secures a free area in the physical memory PM2 and accesses the memory block by acquiring data di from the swap area when an access to the memory block bi in the page stealed state occurs. Generate bi.
  • the determination unit 1601 determines whether or not the memory block bi is initialized based on the attribute information of the migration source data di stored in the memory block bi. Specifically, for example, the guest OS 3 of the virtual machine VM3 refers to the memory block table 1500 and determines whether or not the memory block bi has been initialized.
  • the guest OS 3 determines whether or not “null” is set in the status field of the memory block bi.
  • “null” the guest OS 3 determines that the memory block bi is initialized. Then, the guest OS 3 determines that copying of the migration source data di is unnecessary.
  • the guest OS 3 shifts the status of the memory block bi to the page stealed state.
  • the guest OS 3 generates a memory block bi by securing a free space in the physical memory PM2 when an access to the memory block bi in the page stealed state occurs.
  • FIG. 17 is a flowchart of an example of a data migration processing procedure of the server according to the third embodiment.
  • the receiving unit 501 determines whether or not a migration instruction for the virtual machine VMk has been received (step S1701).
  • the reception unit 501 waits to receive a migration instruction for the virtual machine VMk (step S1701: No).
  • the selection unit 502 selects the memory block bi from the memory blocks b1 to bn configuring the memory Mk of the virtual machine VMk (step S1703). Then, the determination unit 1601 determines whether or not the memory block bi is a memory block included in the free memory (step S1704).
  • step S1704 when the memory block bi is a memory block included in the free memory (step S1704: Yes), the determination unit 1602 determines that copying of the migration source data di is unnecessary (step S1705). Then, the determination unit 1602 shifts the status of the memory block bi to the page stealed state (step S1706), and proceeds to step S1712.
  • step S1704 if the memory block bi is a memory block that is not included in the free memory (step S1704: No), the determination unit 1601 determines whether the migration source data di is stored in the file system. (Step S1707). If the migration source data di is stored in the file system (step S1707: YES), the process proceeds to step S1705.
  • step S1707 determines whether there is a backing store for the migration source data di. If there is a backing store for the migration source data di (step S1708: Yes), the process proceeds to step S1705.
  • step S1708 determines whether the memory block bi is initialized (step S1709). If the memory block bi is initialized (step S1709: YES), the process proceeds to step S1705.
  • step S1709 NO
  • the determination unit 1602 determines that the copy of the migration source data di is necessary (step S1710). Then, the transmission unit 503 transmits a copy instruction for the migration source data di of the memory block bi to the migration destination server SV (step S1711).
  • the selection unit 502 increments “i” of the memory block bi (step S1712), and determines whether “i” is greater than “n” (step S1713). If “i” is equal to or less than “n” (step S1713: NO), the process returns to step S1703. On the other hand, when “i” is larger than “n” (step S1713: Yes), a series of processes according to this flowchart is ended.
  • step S1706 and step S1711 may be performed in a lump after determining whether or not copying is required for all the memory blocks b1 to bn, for example.
  • the migration source data is based on the attribute information of the migration source data di stored in the memory block bi.
  • the necessity of copying di can be determined. As a result, when live migration is performed, copying of data di that does not need to be copied can be suppressed, and the amount of data transferred between servers can be reduced.
  • the server SV it is determined whether or not the migration source data di stored in the memory block bi needs to be copied by determining whether or not the memory block bi is a memory block included in the free memory. be able to.
  • the server SV by determining whether or not the migration source data di stored in the memory block bi is stored in a file system accessible by the migration destination server SV, The necessity of copying can be determined.
  • the server SV it is possible to determine whether or not copying of the migration source data di is necessary by determining whether or not there is a backing store of the migration source data di stored in the memory block bi.
  • the server SV it is possible to determine whether or not copying of the migration source data di stored in the memory block bi is necessary by determining whether or not the memory block bi is initialized.
  • the data migration method described in this embodiment can be realized by executing a program prepared in advance on a computer such as a personal computer or a workstation.
  • the data migration program is recorded on a computer-readable recording medium such as a hard disk, a flexible disk, a CD-ROM, an MO, and a DVD, and is executed by being read from the recording medium by the computer.
  • the data migration program may be distributed via a network such as the Internet.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Systems (AREA)

Abstract

 計算機(101)は、移行元のメモリ(110)を構成するメモリブロック(110-1)~(110-4)の中から、任意のメモリブロック(110-i)を選択する。計算機(101)は、メモリブロック(110-i)のデータ(di)のハッシュ値(hi)を計算機(102)に送信する。計算機(102)は、移行先のメモリ(120)を構成するメモリブロック(120-j)ごとに、メモリブロック(120-j)に記憶されているデータ(Dj)のハッシュ値(Hj)と、データ(di)のハッシュ値(hi)とを比較する。計算機(102)は、比較結果を計算機(101)に送信する。計算機(101)は、比較結果に基づいて、移行先の記憶領域(120)に対するデータ(di)の複写の要否を判定する。計算機(101)は、データ(di)の複写が必要な場合、データ(di)を計算機(102)に送信する。

Description

データ移行プログラム、計算機およびデータ移行方法
 本発明は、データ移行を行うデータ移行プログラム、計算機およびデータ移行方法に関する。
 ライブマイグレーションでは、ハードウェア上で動作中の仮想マシンを、ほぼ無停止で他のハードウェアに移動するため、ハードウェア上の仮想マシンが実行中のOS(Operating System)やアプリケーションを、非常に短い停止時間で他のハードウェアに移行することができる。このため、サービスを継続したままハードウェアを保守するといった目的で、ライブマイグレーションが用いられている。
 また、関連する先行技術として、1台の物理計算機上で動作する仮想マシン間のメモリ共有を行うための技術がある(例えば、下記特許文献1参照。)。また、仮想化環境において、物理資源構成と仮想装置構成を動的に変更するための技術がある(例えば、下記特許文献2参照。)。
特開2010-33206号公報 特開2008-225546号公報
 しかしながら、上述した従来技術では、ライブマイグレーションの際に、移行対象となる仮想マシンに割り当てられているメモリ内容を移行先のハードウェアに複写するため、ハードウェア間のデータの転送量の増大化を招くという問題がある。
 本発明は、上述した従来技術による問題点を解消するため、計算機間で複写不要なデータの転送を抑止してデータの転送量を削減することができるデータ移行プログラム、計算機およびデータ移行方法を提供することを目的とする。
 上述した課題を解決し、目的を達成するため、開示のデータ移行プログラム、計算機およびデータ移行方法は、移行元のメモリを構成するいずれかのメモリブロックに記憶されている移行元データのハッシュ値を移行元の計算機から受信し、移行先のメモリを構成するメモリブロックごとに、当該メモリブロックに記憶されている移行先データのハッシュ値と、受信された前記移行元データのハッシュ値とを比較し、比較された比較結果を前記移行元の計算機に送信し、前記比較結果が送信された結果、前記移行先データのハッシュ値と不一致となったハッシュ値の算出元の前記移行元データを前記移行元の計算機から受信する。
 また、上述した課題を解決し、目的を達成するため、開示のデータ移行プログラム、計算機およびデータ移行方法は、移行元のメモリを構成するメモリブロックごとに、当該メモリブロックに記憶されている移行元データのハッシュ値を移行先の計算機に送信し、送信された前記移行元データのハッシュ値と、移行先のメモリを構成する各メモリブロックに記憶されている移行先データごとのハッシュ値との比較結果を、前記移行先の計算機から受信し、受信された比較結果に基づいて、前記移行先のメモリに対する前記移行元データの複写の要否を判定し、複写が必要であると判定された場合、前記移行元データを前記移行先の計算機に送信する。
 また、上述した課題を解決し、目的を達成するため、開示のデータ移行プログラム、計算機およびデータ移行方法は、移行先のメモリを構成する各メモリブロックに記憶されている移行先データごとのハッシュ値を移行元の計算機に送信し、前記移行先データごとのハッシュ値が送信された結果、前記移行先データごとのハッシュ値と不一致のハッシュ値の算出元の移行元データを、前記移行元の計算機から受信する。
 また、上述した課題を解決し、目的を達成するため、開示のデータ移行プログラム、計算機およびデータ移行方法は、移行先のメモリを構成する各メモリブロックに記憶されている移行先データごとのハッシュ値を移行元の計算機から受信し、移行元のメモリを構成するメモリブロックごとに、当該メモリブロックに記憶されている移行元データのハッシュ値と、受信された前記移行先データごとのハッシュ値とを比較し、比較された比較結果に基づいて、前記移行先のメモリに対する前記移行元データの複写の要否を判定し、複写が必要であると判定された場合、前記移行元データを前記移行先の計算機に送信する。
 また、上述した課題を解決し、目的を達成するため、開示のデータ移行プログラム、計算機およびデータ移行方法は、移行元のメモリを構成するメモリブロックごとに、当該メモリブロックに記憶されている移行元データの属性情報に基づいて、移行先のメモリに対する前記移行元データの複写の要否を判定し、複写が必要であると判定された場合、前記移行元データを移行先の計算機に送信する。
 本データ移行プログラム、計算機およびデータ移行方法によれば、計算機間で複写不要なデータの転送を抑止してデータの転送量を削減することができるという効果を奏する。
実施の形態1にかかるデータ移行手法の一実施例を示す説明図である。 実施の形態2にかかるサーバのハードウェア構成の一例を示すブロック図である。 実施の形態2にかかるネットワークシステムの一実施例を示す説明図である。 メモリ管理テーブルの記憶内容の一例を示す説明図(その1)である。 実施の形態2にかかるサーバの機能的構成を示すブロック図である。 ハッシュテーブルの記憶内容の一例を示す説明図(その1)である。 ライブマイグレーションの一例を示す説明図である。 メモリ管理テーブルの記憶内容の一例を示す説明図(その2)である。 ハッシュテーブルの記憶内容の一例を示す説明図(その2)である。 移行元データおよび移行先データを記憶する共有ストレージの一例を示す説明図である。 実施の形態2にかかる移行元のサーバのデータ移行処理手順の一例を示すフローチャートである。 実施の形態2にかかる移行先のサーバのデータ移行処理手順の一例を示すフローチャート(その1)である。 実施の形態2にかかる移行先のサーバのデータ移行処理手順の一例を示すフローチャート(その2)である。 実施の形態2にかかる移行先のサーバのデータ移行処理手順の一例を示すフローチャート(その3)である。 メモリブロックテーブルの記憶内容の一例を示す説明図である。 実施の形態3にかかるサーバの機能的構成を示すブロック図である。 実施の形態3にかかるサーバのデータ移行処理手順の一例を示すフローチャートである。
 以下に添付図面を参照して、この発明にかかるデータ移行プログラム、計算機およびデータ移行方法の好適な実施の形態を詳細に説明する。
(実施の形態1)
 図1は、実施の形態1にかかるデータ移行手法の一実施例を示す説明図である。実施の形態1では、移行元のメモリを構成するメモリブロックごとに、メモリブロックに記憶されている移行元データの複写の要否を事前に判定して、複写不要な移行元データの転送を抑止する。
 図1において、計算機101,102は、計算機間のデータ移行を行う機能を有するコンピュータである。ここで、計算機101は、移行元のメモリ110を備える移行元の計算機である。計算機102は、移行先のメモリ120を備える移行先の計算機である。
 メモリ110は、所定のデータ単位で区切られて、メモリブロック110-1~110-4に分割されている。メモリ110を区切るデータ単位は、任意に設定可能である。例えば、メモリ110は、メガバイト単位、ページ単位、ブロック単位で区切られる。1ページは、例えば、4~64[KB(キロバイト)]である。1ブロックは、例えば、複数のページをひとまとめにしたものである。
 図1の例では、メモリ110を構成するメモリブロック110-1~110-4に、移行対象となるデータd1~d4が記憶されている。ここでは、メモリブロック110-1~110-4のうち、任意のメモリブロックを「メモリブロック110-i」と表記する(i=1,2,3,4)。また、メモリブロック110-iに記憶されているデータを「データdi」と表記する。
 メモリ120は、所定のデータ単位で区切られて、メモリブロック120-1~120-9に分割されている。メモリ120を区切るデータ単位は、メモリ110を区切るデータ単位と同一である。
 図1の例では、メモリ120を構成するメモリブロック120-1~120-9に、データD1~D9が記憶されている。ここでは、メモリブロック120-1~120-9のうち、任意のメモリブロックを「メモリブロック120-j」と表記する(j=1,2,…,9)。また、メモリブロック120-jに記憶されているデータを「データDj」と表記する。
 以下、移行元のメモリ110のメモリブロック110-1~110-4に記憶されているデータd1~d4を、移行先のメモリ120に移行する場合を例に挙げて、実施の形態1にかかるデータ移行手法の一実施例について説明する。
 (1)移行元の計算機101は、移行元のメモリ110を構成するメモリブロック110-1~110-4の中から、任意のメモリブロック110-iを選択する。メモリブロック110-iの選択処理は、メモリブロック110-1~110-4の中から選択されていない未選択のメモリブロックがなくなるまで繰り返し行われる。
 (2)移行元の計算機101は、選択されたメモリブロック110-iに記憶されているデータdiのハッシュ値(以下、「ハッシュ値hi」と表記する)を、移行先の計算機102に送信する。
 ここで、ハッシュ値とは、例えば、算出元となるデータを引数としてハッシュ関数に与えることで算出される固定長の乱数である。ハッシュ関数は、引数として与えられたデータから固定長の疑似乱数を生成する関数である。ハッシュ値の長さは、算出元のデータのビット長より短くなる任意の長さに設定される。
 (3)移行先の計算機102は、データdiのハッシュ値hiを、移行元の計算機101から受信する。
 (4)移行先の計算機102は、移行先のメモリ120を構成するメモリブロック120-jごとに、メモリブロック120-jに記憶されているデータDjのハッシュ値(以下、「ハッシュ値Hj」と表記する)と、データdiのハッシュ値hiとを比較する。なお、図面では、移行先のメモリ120の一部を抜粋して表示している。
 ここで、ハッシュ値は、算出元のデータが異なれば、同じハッシュ値が算出される確率が非常に低いという特徴を有する。このため、2つのデータdi,Djのハッシュ値hi,Hjを比較することで、データdi,Djの同一性を判断することができる。
 図1中、各メモリブロック110-i,120-jを表す□内に示す2ビットの数字は、各データdi,Djのハッシュ値hi,Hjを表している。例えば、メモリブロック110-1に記憶されているデータd1のハッシュ値は「12」である。また、メモリブロック120-1に記憶されているデータD1のハッシュ値は「56」である。
 (5)移行先の計算機102は、データdiのハッシュ値hiとデータDjのハッシュ値Hjとの比較結果を、移行元の計算機101に送信する。比較結果は、例えば、データdiのハッシュ値hiが、全データD1~D9のハッシュ値H1~H9と一致しなかった、または、ハッシュ値H1~H9のうち少なくともいずれかのハッシュ値Hjと一致したことを表す情報である。
 (6)移行元の計算機101は、データdiのハッシュ値hiと、移行先のメモリ120を構成する各メモリブロック120-jに記憶されているデータDjごとのハッシュ値Hjとの比較結果を、移行先の計算機102から受信する。
 (7)移行元の計算機101は、受信した比較結果に基づいて、移行先のメモリ120に対するデータdiの複写の要否を判定する。ここで、移行元のデータdiと移行先のデータDjが同一内容のデータであれば、移行先のメモリ120に対するデータdiの複写は不要となる。
 そこで、移行元の計算機101が、データdiのハッシュ値hiが、データD1~D9のハッシュ値H1~H9のうち少なくともいずれかのハッシュ値Hjと一致した場合、移行先のメモリ120に対するデータdiの複写が不要であると判定する。一方、データdiのハッシュ値hiが、全データD1~D9のハッシュ値H1~H9と一致しなかった場合、移行元の計算機101が、移行先のメモリ120に対するデータdiの複写が必要であると判定する。
 図1の例では、移行元のデータd1のハッシュ値「12」と移行先のデータD2のハッシュ値「12」が一致する。このため、移行元の計算機101が、移行先のメモリ120に対するデータd1の複写が不要であると判定する。また、移行元のデータd4のハッシュ値「77」と移行先のデータD7のハッシュ値「77」が一致する。このため、移行元の計算機101が、移行先のメモリ120に対するデータd4の複写が不要であると判定する。一方、移行元のデータd2,d3は、移行先の全データD1~D9とハッシュ値が一致しない。このため、移行元の計算機101が、移行先のメモリ120に対するデータd2,d3の複写が必要であると判定する。
 (8)移行元の計算機101は、データdiの複写が必要であると判定された場合、メモリブロック110-iに記憶されているデータdiを、移行先の計算機102に送信する。
 図1の例では、移行元のデータd2,d3の複写が必要であると判定され、移行元のデータd1,d4の複写が不要であると判定されている。図1中、「R」は複写が必要であると判定された判定結果を表し、「NR」は複写が不要であると判定された判定結果を表している。
 このため、移行元の計算機101は、移行元のデータd1~d4のうちデータd2,d3を、移行先の計算機102に送信する。この結果、移行先の計算機102において、移行元のデータd2,d3が、移行先のメモリ120の空き領域に書き込まれる。一方、移行先の計算機101から送信されなかった移行元のデータd1,d4は、移行先の計算機102において、例えば、データd1,d4とハッシュ値が同一のデータD2,D7を、移行先のメモリ120の空き領域に複写することで生成される。
 以上説明した実施の形態1にかかるデータ移行手法によれば、移行元のメモリ110を構成するメモリブロック110-iごとに、メモリブロック110-iに記憶されているデータdiの複写の要否を事前に判定することができる。これにより、移行対象となるデータd1~d4のうち、複写不要なデータd1,d4の転送を抑止して、計算機101,102間のデータの転送量を削減することができる。
(実施の形態2)
 実施の形態2では、実施の形態1で説明した計算機101,102をサーバSV(例えば、後述するサーバSV1,SV2)に適用した場合について説明する。なお、実施の形態1で説明した内容と同一内容については説明を省略する。
(サーバSVのハードウェア構成)
 図2は、実施の形態2にかかるサーバのハードウェア構成の一例を示すブロック図である。図2において、サーバSVは、CPU(Central Processing Unit)201と、メモリ202と、ネットワークI/F(Interface)203と、入出力装置204と、を備えている。また、各構成部はバス200によってそれぞれ接続されている。
 ここで、CPU201は、サーバSVの全体の制御を司る。メモリ202は、データを記憶する記憶装置である。メモリ202は、例えば、ROM(Read‐Only Memory)やRAM(Random Access Memory)である。
 ネットワークI/F203は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク205に接続され、ネットワーク205を介して他のコンピュータに接続される。ネットワークI/F203は、ネットワーク205と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F203には、例えば、モデムやLANアダプタなどを採用することができる。
 入出力装置204は、データの入出力を行う。入出力装置204としては、例えば、文書、画像、機能情報などのデータを表示する表示装置や、文字、数字、各種指示などの入力のためのキーボードなどがある。なお、サーバSVは、磁気ディスクや光ディスクなどの記憶装置を備える構成であってもよい。
 つぎに、実施の形態2にかかるサーバSVを含むネットワークシステム300について説明する。
(ネットワークシステム300の一実施例)
 図3は、実施の形態2にかかるネットワークシステムの一実施例を示す説明図である。図3において、ネットワークシステム300は、サーバSV1と、サーバSV2と、を含む構成である。ネットワークシステム300において、サーバSV1およびサーバSV2は、ネットワーク205を介して相互に通信可能に接続されている。
 ここで、サーバSV1,SV2は、VMホストHT1,HT2を備え、ハードウェア資源を分割して複数の実行環境を構築可能なコンピュータである。VMホストHT1,HT2は、サーバSV1,SV2のハードウェア資源(例えば、図2に示したCPU201、メモリ202、ネットワークI/F203など)を仮想化して、複数の異なるOSを実行できるように制御するソフトウェアである。具体的には、例えば、VMホストH1,HT2は、サーバSV1,SV2のハードウェア資源を分割して構築される実行環境で動作する仮想マシンVMによってOSを稼働させる。
 仮想マシンVMは、サーバSV1,SV2のハードウェア資源を分割して構築される実行環境で動作する仮想的なコンピュータである。仮想マシンVMの実体は、具体的には、例えば、プログラムやOSなどのソフトウェア、ソフトウェアに与えられる変数、およびソフトウェアを実行させるためのハードウェア資源を指定する情報を含むものである。
 図3の例では、サーバSV1のハードウェア資源を分割して構築された実行環境で3台の仮想マシンVM1,VM2,VM3が動作している。VMホストHT1は、仮想マシンVM1~VM3によって複数の異なるOSを稼働させる。また、サーバSV2のハードウェア資源を分割して構築された実行環境で2台の仮想マシンVM4,VM5が動作している。VMホストHT2は、仮想マシンVM4,VM5によって複数の異なるOSを稼働させる。
 仮想マシンVMには、各サーバSV1,SV2の物理メモリ(以下、「物理メモリPM1,PM2」という)から分割された論理的なメモリが割り当てられている。サーバSV1,SV2の物理メモリPM1,PM2は、例えば、図2に示したメモリ202である。仮想マシンVMのメモリは、ページ単位で区切られて、複数のメモリブロックに分割されている。ページは、VMホストHT1,HT2が仮想マシンVMのメモリを管理するためのデータ単位である。
 仮想マシンVMのメモリを構成する各メモリブロックは、物理メモリPM1,PM2を区切って分割されたいずれかのメモリブロックに対応している。各メモリブロックに記憶されているデータは、例えば、OS、アプリケーションなどのプログラムや、映像、音声などのコンテンツである。
 ネットワークシステム300では、サーバSV間の負荷分散やサーバSVの保守を目的として、サーバSV上で動作中の仮想マシンVMを、他のサーバSVに移行するライブマイグレーションが行われる。ライブマイグレーションを行う場合、移行対象となる仮想マシンVMに割り当てられているメモリの内容を移行先のサーバSVに複写する。
 ここで、仮想マシンVMに割り当てられているメモリの全内容を移行先のサーバSVに複写すると、サーバSV間のデータの転送量の増大化を招いてしまう。また、移行先のサーバSVのメモリ202にデータを複写する場合、移行先のサーバSVのバス200を介して、データの複写が行われる。このため、ネットワーク205を介して接続されているストレージ装置などにデータを複写する場合に比べて転送コストが高くなる。
 そこで、実施の形態2では、仮想マシンVMのメモリを構成するメモリブロックごとに、メモリブロックに記憶されているデータの、移行先のサーバSVに対する複写の要否を事前に判定して、データの転送量を削減する。
 以下の説明では、サーバSV上で動作する任意の仮想マシンVMを「仮想マシンVMk」と表記し、仮想マシンVMkに割り当てられているメモリを「メモリMk」と表記する。また、メモリMkを構成するメモリブロックを「メモリブロックb1~bn」と表記し、メモリブロックb1~bnのうち任意のメモリブロックを「メモリブロックbi」と表記する(i=1,2,…,n)。また、メモリブロックbiに記憶されているデータを「移行元データdi」と表記する。
 また、移行先のサーバSVの物理メモリPMを構成するメモリブロックを「メモリブロックB1~Bm」と表記し、メモリブロックB1~Bmのうち任意のメモリブロックを「メモリブロックBj」と表記する(j=1,2,…,m)。また、メモリブロックBjに記憶されているデータを「移行先データDj」と表記する。
 ここで、各サーバSVが用いるメモリ管理テーブルについて説明する。メモリ管理テーブルは、各サーバSVが自サーバ上で動作中の仮想マシンVMkに割り当てられているメモリMkを管理するための情報である。ここでは、サーバSV1上で動作中の仮想マシンVM3に割り当てられているメモリM3を管理するためのメモリ管理テーブル400を例に挙げて説明する。メモリ管理テーブル400は、例えば、図2に示したメモリ202によって実現される。
(メモリ管理テーブル400の記憶内容)
 図4は、メモリ管理テーブルの記憶内容の一例を示す説明図(その1)である。図4において、メモリ管理テーブル400は、マシンID、メモリID、ブロックIDおよびハッシュ値のフィールドを有し、各フィールドに情報を設定することで、仮想マシンVM3のメモリ管理データを記憶している。
 ここで、マシンIDは、仮想マシンVMkの識別子である。メモリIDは、仮想マシンVMkに割り当てられているメモリMkの識別子である。ブロックIDは、仮想マシンVMkのメモリMkを構成するメモリブロックbiの識別子である。ハッシュ値は、メモリブロックbiに記憶されている移行元データdiのハッシュ値hiである。
 メモリ管理テーブル400によれば、仮想マシンVM3に割り当てられているメモリM3を構成するメモリブロックb1~b9を特定することができる。また、メモリ管理テーブル400によれば、メモリブロックb1~b9に記憶されている移行元データd1~d9のハッシュ値h1~h9を特定することができる。
 つぎに、実施の形態2にかかるサーバSV(サーバSV1,SV2)の機能的構成について説明する。
(サーバSVの機能的構成)
 図5は、実施の形態2にかかるサーバの機能的構成を示すブロック図である。図5において、サーバSVは、受信部501と、選択部502と、送信部503と、判定部504と、比較部505と、書込部506と、を含む構成である。各機能部は、具体的には、例えば、図2に示したメモリ202に記憶されたプログラムをCPU201に実行させることにより、または、ネットワークI/F203により、その機能を実現する。より具体的には、例えば、各機能部は、図3に示したVMホストHT1,HT2によって実現される。なお、各機能部の処理結果は、メモリ202に記憶される。
 ライブマイグレーションにおいて、サーバSVは、移行対象となる仮想マシンVMkを稼働させている移行元のサーバSVとなる場合と、移行対象となる仮想マシンVMkの移行先のサーバSVとなる場合がある。ここでは、まず、サーバSVが移行元となる場合の各機能部の処理内容について説明する。
・移行元のサーバSVの機能的構成
 受信部501は、仮想マシンVMkの移行指示を受信する。ここで、仮想マシンVMkの移行指示とは、自サーバで動作中の仮想マシンVMkを他サーバに移行するように指示するものである。仮想マシンVMkの移行指示には、例えば、仮想マシンVMkのマシンIDと、移行先のサーバSVを識別するサーバIDが含まれている。
 具体的には、例えば、サーバSV1のVMホストHT1が、ネットワーク205を介して、仮想マシンVM3をサーバSV2に移行するように指示する移行指示を外部のコンピュータから受信する。また、VMホストHT1が、図2に示した入出力装置204を用いたユーザの操作入力により、仮想マシンVM3の移行指示を受け付けてもよい。
 選択部502は、仮想マシンVMkの移行指示が受信された場合、仮想マシンVMkに割り当てられているメモリMkを構成するメモリブロックb1~bnの中から、任意のメモリブロックbiを選択する。ここで、仮想マシンVM3をサーバSV2に移行するように指示する移行指示が受信された場合を例に挙げて説明する。
 この場合、VMホストHT1が、例えば、図4に示したメモリ管理テーブル400を参照して、仮想マシンVM3に割り当てられているメモリM3のメモリブロックb1~b9の中から、任意のメモリブロックbiを選択する。選択部502による選択処理は、例えば、メモリブロックb1~bnの中から選択されていない未選択のメモリブロックbiがなくなるまで繰り返し実行される。
 送信部503は、選択されたメモリブロックbiに記憶されている移行元データdiのハッシュ値hiを移行先のサーバSVに送信する。ここで、移行元データdiのハッシュ値hiは、例えば、移行元のサーバSV1のVMホストHT1により、移行元データdiを引数としてハッシュ関数に与えることで算出される。
 移行元データdiのハッシュ値hiの算出タイミングは、例えば、上記選択部502によってメモリブロックbiが選択された後でもよく、また、メモリブロックbiへの移行元データdiの記録時または更新時でもよい。算出された移行元データdiのハッシュ値hiは、例えば、メモリブロックbiのブロックIDと関連付けてメモリ管理テーブル400に記憶される。
 具体的には、例えば、VMホストHT1が、メモリ管理テーブル400を参照して、選択されたメモリブロックbiに記憶されている移行元データdiのハッシュ値hiを特定する。そして、VMホストHT1が、ネットワーク205を介して、特定された移行元データdiのハッシュ値hiを、メモリブロックbiのブロックIDとともに移行先のサーバSV2のVMホストHT2に送信する。
 また、受信部501は、移行元データdiのハッシュ値hiと、移行先の物理メモリPMを構成する各メモリブロック120-jに記憶されている移行先データDjごとのハッシュ値Hjとの比較結果を、移行先のサーバSVから受信する。
 ここで、比較結果は、例えば、移行元データdiのハッシュ値hiが、全移行先データD1~Dmのハッシュ値H1~Hmと一致しなかった、または、ハッシュ値H1~Hmのうち少なくともいずれかのハッシュ値Hjと一致したことを表す情報である。また、比較結果は、移行元データdiのハッシュ値hiと各移行先データDjのハッシュ値Hjとの各々の比較結果を表すものでもよい。
 具体的には、例えば、移行元データdiのハッシュ値hiが送信された結果、VMホストHT1が、ネットワーク205を介して、移行元データdiのハッシュ値hiと移行先データDjごとのハッシュ値Hjとの比較結果を、移行先のサーバSV2のVMホストHT2から受信する。
 判定部504は、比較された比較結果に基づいて、移行先のサーバSVの物理メモリPMに対する移行元データdiの複写の要否を判定する。具体的には、例えば、VMホストHT1が、移行元データdiのハッシュ値hiが、移行先データD1~Dmのハッシュ値H1~Hmのうち少なくともいずれかのハッシュ値Hjと一致した場合、移行元データdiの複写が不要であると判定する。一方、移行元データdiのハッシュ値hiが、全移行先データD1~Dmのハッシュ値H1~Hmと一致しなかった場合、VMホストHT1が、移行元データdiの複写が必要であると判定する。
 また、送信部503は、判定された判定結果に基づいて、移行元データdiを移行先のサーバSVに送信する。具体的には、例えば、移行元データdiの複写が必要であると判定された場合、VMホストHT1が、ネットワーク205を介して、移行元データdiの複写指示をVMホストHT2に送信する。複写指示には、例えば、メモリブロックbiのブロックIDと、移行元データdiが含まれている。一方、移行元データdiの複写が不要であると判定された場合、VMホストHT1は、移行元データdiを移行先のサーバSV2に送信しない。
 つぎに、サーバSVが移行先となる場合の各機能部の処理内容について説明する。
・移行先のサーバSVの機能的構成
 受信部501は、移行元のサーバSVから、移行元のメモリMkを構成するメモリブロックbiごとに、メモリブロックbiに記憶されている移行元データdiのハッシュ値hiを受信する。具体的には、例えば、サーバSV2のVMホストHT2が、ネットワーク205を介して、移行元データdiのハッシュ値hiをサーバSV1のVMホストHT1から受信する。
 比較部505は、移行先の物理メモリPMを構成するメモリブロックBjごとに、メモリブロックBjに記憶されている移行先データDjのハッシュ値Hjと、受信された移行元データdiのハッシュ値hiとを比較する。ここで、移行先データDjのハッシュ値Hjは、例えば、移行先のサーバSV2のVMホストHT2により、移行先データDjを引数としてハッシュ関数に与えることで算出される。
 ただし、移行元データdiのハッシュ値hiおよび移行先データDjのハッシュ値Hjは、同一のアルゴリズム(例えば、同一のハッシュ関数)を用いて算出される。また、移行先データDjのハッシュ値Hjの算出タイミングは、例えば、上記比較部505による比較処理の実行時でもよく、また、メモリブロックBjへの移行先データDjの記録時または更新時でもよい。
 算出された移行先データDjのハッシュ値Hjは、例えば、図6に示すハッシュテーブル600に記憶される。ここで、ハッシュテーブル600の具体例について説明する。なお、ハッシュテーブル600は、例えば、メモリ202によって実現される。
 図6は、ハッシュテーブルの記憶内容の一例を示す説明図(その1)である。図6において、ハッシュテーブル600は、移行先のサーバSV2の物理メモリPM2を構成するメモリブロックBjごとに、メモリブロックBjに記憶されている移行先データDjのハッシュ値Hjを記憶している。
 具体的には、例えば、VMホストHT2は、ハッシュテーブル600を参照して、メモリブロックBjに記憶されている移行先データDjのハッシュ値Hjと、受信された移行元データdiのハッシュ値hiとを比較する。
 図5の説明に戻り、送信部503は、比較された比較結果を移行元のサーバSVに送信する。具体的には、例えば、VMホストHT2が、ネットワーク205を介して、移行元データdiの判定結果を移行元のサーバSV1のVMホストHT1に送信する。
 また、受信部501は、比較結果が送信された結果、移行元のサーバSVから移行元データdiを受信する。具体的には、例えば、VMホストHT2が、全移行先データD1~Dmのハッシュ値H1~Hmと不一致となったハッシュ値hiの算出元の移行元データdiの複写指示をVMホストHT1から受信する。
 書込部506は、受信された移行元データdiを移行先の物理メモリPMに書き込む。具体的には、例えば、移行元データdiの複写指示が受信された場合、VMホストHT2が、複写指示に含まれるメモリブロックbiの移行元データdiを、移行先の物理メモリPMの空き領域に書き込む。
 この結果、移行先のサーバSV2において、移行元データdiが移行先の物理メモリPMの空き領域に複写されて、仮想マシンVMkのメモリブロックbiが生成される。
 また、書込部506は、比較された比較結果に基づいて、移行元データdiのハッシュ値hiと一致したハッシュ値Hjの算出元の移行先データDjを、移行先の物理メモリPMに書き込む。具体的には、例えば、VMホストHT2が、移行元データdiのハッシュ値hiと一致したハッシュ値Hjの算出元の移行先データDjをメモリブロックBjから読み出して、移行先の物理メモリPMの空き領域に書き込む。
 この結果、移行先のサーバSV2において、移行元データdiのハッシュ値hiと一致したハッシュ値Hjの算出元の移行先データDjが移行先の物理メモリPMの空き領域に複写されて、仮想マシンVMkのメモリブロックbiが生成される。
 上述した説明では、移行元データdiのハッシュ値hiと移行先データDjのハッシュ値Hjとの比較処理を、移行先のサーバSVが行うことにしたが、これに限らない。例えば、移行元のVMホストHT1が、移行先のVMホストHT2に対して、移行先データDjのハッシュ値Hjの送信要求を行って、移行先データDjのハッシュ値Hj(例えば、ハッシュテーブル600の記憶内容)をVMホストHT2から受信する。
 そして、移行元のVMホストHT1が、移行元データdiのハッシュ値hiと移行先データDjのハッシュ値Hjとを比較することにしてもよい。この場合、移行元のVMホストHT1が、移行元データdiのハッシュ値hiと移行先データDjのハッシュ値Hjとを比較した比較結果に基づいて、移行先の物理メモリPM2に対する移行元データdiの複写の要否を判定する。
 ただし、移行元データdiの複写が不要である場合、移行先のVMホストHT2は、移行元データdiとハッシュ値が一致する移行先データDjのメモリブロックBjのブロックIDがわからない。このため、VMホストHT1は、移行元データdiのメモリブロックbiのブロックIDとともに、移行元データdiのハッシュ値hiと一致したハッシュ値Hjの算出元の移行先データDjのメモリブロックBjのブロックIDを移行先のVMホストHT2に送信する。
 この結果、移行先のサーバSV2において、移行元データdiのハッシュ値hiと一致したハッシュ値Hjの算出元の移行先データDjが移行先の物理メモリPMの空き領域に複写されて、仮想マシンVMkのメモリブロックbiが生成される。
 なお、仮想マシンVMkが実行中のプログラムのコンテキストの切り替えは、例えば、仮想マシンVMkの移行指示があった直後に行われてもよく、また、移行先の物理メモリPMに仮想マシンVMkのメモリブロックb1~bnが生成された後に行われてもよい。
 コンテキストは、仮想マシンVMkが実行中のプログラムに関する状態情報(例えば、CPU201のレジスタの値など)である。コンテキストの切り替えは、具体的には、例えば、移行元のVMホストHT1が、仮想マシンMkに割り当てられているCPU201のレジスタの値を、移行先のサーバSV2のCPU201に複写することで行われる。
 ここで、サーバSV1上で動作中の仮想マシンVM3を、サーバSV2に移行する場合を例に挙げて、ライブマイグレーションの一例について説明する。
 図7は、ライブマイグレーションの一例を示す説明図である。図7において、仮想マシンVM3のメモリM3を構成するメモリブロックb1~b9の移行元データd1~d9のうち、移行元データd1,d6,d8の複写が必要であると判定され、移行元データd2~d5,d7,d9の複写が不要であると判定されている。
 この場合、VMホストHT1が、複写が必要であると判定された移行元データd1,d6,d8の複写指示を移行先のVMホストHT2に送信する。そして、VMホストHT2が、移行元データd1,d6,d8を物理メモリPM2の空き領域に書き込む。これにより、移行元データd1,d6,d8が物理メモリPM2の空き領域に複写されて、仮想マシンVM3のメモリブロックb1,b6,b8が生成される。
 ここで、移行先データD2,D4,D8,D10,D14,D16は、複写が不要であると判定された移行元データd2~d5,d7,d9とハッシュ値が一致する移行先データDjである。この場合、VMホストHT2が、移行先データD2,D4,D8,D10,D14,D16を、メモリブロックB2,B4,B8,B10,B14,B16から読み出して、物理メモリPM2の空き領域に書き込む。これにより、移行先データD2,D4,D8,D10,D14,D16が物理メモリPM2の空き領域に複写されて、仮想マシンVM3のメモリブロックb2~b5,b7,b9が生成される。
 この結果、移行先のサーバSV2の物理メモリPM2に、仮想マシンVM3のメモリブロックb1~b9が生成されて、仮想マシンVM3の移行が完了する。このように、移行元データdiの複写の要否を事前に判定して、複写不要なデータdiの転送を抑止することで、サーバ間のデータの転送量を削減することができる。
 ここで、移行元データdiと移行先データDjは、データ内容が異なる場合であっても、ハッシュ値hiとハッシュ値Hjが一致(衝突)する可能性がある。このため、ハッシュ値の一致判定のみで移行元データdiと移行先データDjの同一性の判定を行うと、本来ならば複写の必要がある移行元データdiが移行先のサーバSVに転送されない場合がある。
 この場合、移行先のサーバSVにおいて、移行元データdiとはデータ内容が異なる移行先データDjが複写されて仮想マシンVMkのメモリブロックbiが生成される不具合が発生してしまう。そこで、以下に説明する判定手法1~4により、移行元データdiと移行先データDjの同一性の判定をさらに行うことにしてもよい。
 なお、以下の説明では、特に指定する場合を除いて、移行先のサーバSVにおいて、比較部505による比較処理を行う場合を例に挙げて説明する。
(判定手法1)
 まず、異なるアルゴリズムを用いて算出された複数のハッシュ値により、移行元データdiと移行先データDjの同一性の判定を行う判定手法1について説明する。ここでは、互いに異なる第1および第2のハッシュ関数を用いて、移行元データdiおよび移行先データDjの複数の異なるハッシュ値を算出する。
 以下の説明では、第1のハッシュ関数に移行元データdiを与えることで算出されるハッシュ値を「第1のハッシュ値h1i」と表記し、第1のハッシュ関数に移行先データDjを与えることで算出されるハッシュ値を「第1のハッシュ値H1j」と表記する。また、第2のハッシュ関数に移行元データdiを与えることで算出されるハッシュ値を「第2のハッシュ値h2i」と表記し、第2のハッシュ関数に移行先データDjを与えることで算出されるハッシュ値を「第2のハッシュ値H2j」と表記する。
 上記比較部505は、複数の異なるハッシュ関数に含まれるハッシュ関数ごとに、該ハッシュ関数を用いて算出された、移行先データDjのハッシュ値(例えば、第1および第2のハッシュ値H1j,H2j)と、移行元データdiのハッシュ値(例えば、第1および第2のハッシュ値h1i,h2i)とを比較する。
 具体的には、例えば、上記比較部505が、メモリブロックBjごとに、メモリブロックBjの移行先データDjの第1のハッシュ値H1jと、メモリブロックbiの移行元データdiの第1のハッシュ値h1iとを比較する。また、第1のハッシュ値H1jと第1のハッシュ値h1iとが一致する場合、上記比較部505が、移行先データDjの第2のハッシュ値H2jと移行元データdiの第2のハッシュ値h2iとを比較する。
 そして、上記判定部504は、比較された比較結果に基づいて、移行先のサーバSVの物理メモリPMに対するメモリブロックbiの移行元データdiの複写の要否を判定する。以下、判定手法1に関する具体的な処理内容について説明する。
 まず、移行元データdiの第1のハッシュ値h1iおよび第2のハッシュ値h2iを記憶するメモリ管理テーブル800について説明する。メモリ管理テーブル800は、例えば、移行元のサーバSVのメモリ202によって実現される。
 図8は、メモリ管理テーブルの記憶内容の一例を示す説明図(その2)である。図8において、メモリ管理テーブル800は、マシンID、メモリID、ブロックID、第1のハッシュ値および第2のハッシュ値のフィールドを有し、各フィールドに情報を設定することで、仮想マシンVM3のメモリ管理データを記憶している。
 第1のハッシュ値は、メモリブロックbiに記憶されている移行元データdiを第1のハッシュ関数に与えることで算出される第1のハッシュ値h1iである。第2のハッシュ値は、メモリブロックbiに記憶されている移行元データdiを第2のハッシュ関数に与えることで算出される第2のハッシュ値h2iである。
 メモリ管理テーブル800によれば、メモリブロックb1~b9に記憶されている移行元データd1~d9の第1のハッシュ値h11~h19および第2のハッシュ値h21~h29を特定することができる。
 具体的には、例えば、まず、移行元のVMホストHT1が、メモリ管理テーブル800を参照して、移行元データdiの第1および第2のハッシュ値h1i,h2iを特定する。そして、VMホストHT1が、特定された移行元データdiの第1および第2のハッシュ値h1i,h2iを移行先のVMホストHT2に送信する。
 つぎに、移行先のVMホストHT2が、メモリブロックBjごとに、メモリブロックBjの移行先データDjの第1のハッシュ値H1jと、移行元データdiの第1のハッシュ値h1iとを比較する。ここで、移行先データDjの第1のハッシュ値H1jおよび第2のハッシュ値H2jを記憶するハッシュテーブル900について説明する。ハッシュテーブル900は、例えば、移行先のサーバSVのメモリ202によって実現される。
 図9は、ハッシュテーブルの記憶内容の一例を示す説明図(その2)である。図9において、ハッシュテーブル900は、移行先のサーバSV2の物理メモリPM2を構成するメモリブロックBjごとに、メモリブロックBjに記憶されている移行先データDjの第1のハッシュ値H1jおよび第2のハッシュ値H2jを記憶している。
 移行先のVMホストHT2は、例えば、ハッシュテーブル900を参照して、メモリブロックBjごとに、メモリブロックBjの移行先データDjの第1のハッシュ値H1jと、移行元データdiの第1のハッシュ値h1iとを比較する。ここで、第1のハッシュ値H1jと第1のハッシュ値h1iとが一致する場合、さらに、VMホストHT2が、ハッシュテーブル900を参照して、移行先データDjの第2のハッシュ値H2jと、移行元データdiの第2のハッシュ値h2iとを比較する。そして、VMホストHT2は、比較された比較結果をVMホストHT1に送信する。
 このあと、VMホストHT1は、受信された比較結果に基づいて、移行先の物理メモリPM2に対するメモリブロックbiの移行元データdiの複写の要否を判定する。具体的には、例えば、第2のハッシュ値H2jと第2のハッシュ値h2iとが一致する場合、VMホストHT1が、移行元データdiの複写が不要であると判定する。一方、第1のハッシュ値H1jと第1のハッシュ値h1iとが不一致の場合、または、第2のハッシュ値H2jと第2のハッシュ値h2iとが不一致の場合、VMホストHT1が、移行元データdiの複写が必要であると判定する。
 この結果、移行先のVMホストHT2は、移行先データDjの第1および第2のハッシュ値H1j,H2jのうち少なくともいずれかのハッシュ値と不一致となったハッシュ値の算出元の移行元データdiを、移行元のVMホストHT1から受信することになる。
 このように、複数の異なるハッシュ値により移行元データdiと移行先データDjの同一性の判定を行うことにより、移行元データdiと移行先データDjのハッシュ値の衝突による不具合を回避することができる。
 なお、移行元のサーバSVにおいて、比較部505による比較処理を行う場合、移行元のサーバSVからの送信要求に応じて、移行先のサーバSVが、移行先データDjの第1および第2のハッシュ値H1j,H2jを移行元のサーバSVに送信することになる。
(判定手法2)
 つぎに、ハッシュ値(例えば、上述した第1のハッシュ値)が一致する移行元データdiと移行先データDjの部分データの一致判定を行うことにより、移行元データdiと移行先データDjの同一性の判定を行う判定手法2について説明する。
 上記比較部505は、第1のハッシュ値H1jと第1のハッシュ値h1iとが一致する場合、移行先データDjから所定の抽出ルールに基づいて抽出された部分データと、移行元データdiから該抽出ルールに基づいて抽出された部分データとを比較する。以下、移行元データdiから抽出された部分データを「部分データpi」と表記する。また、移行先データDjから抽出された部分データを「部分データPj」と表記する。
 ここで、移行元データdiの部分データpiは、例えば、移行元のサーバSV1のVMホストHT1により、所定の抽出ルールに基づいて移行元データdiから抽出される。抽出ルールとしては、例えば、移行元データdiの先頭または最後尾から所定ビット数のデータを抽出するルールが設定される。
 また、移行先データDjの部分データPjは、例えば、移行先のサーバSV2のVMホストHT2により、所定の抽出ルールに基づいて移行先データDjから抽出される。部分データpi,Pjは、同一の抽出ルールに基づいて抽出される。また、各部分データpi,Pjの抽出タイミングは、例えば、移行元データdi、移行先データDjの記録時または更新時であってもよい。
 そして、上記判定部504は、比較された比較結果に基づいて、移行先のサーバSVの物理メモリPMに対するメモリブロックbiの移行元データdiの複写の要否を判定する。以下、判定手法2に関する具体的な処理内容について説明する。
 具体的には、例えば、移行先のVMホストHT2が、第1のハッシュ値H1jと第1のハッシュ値h1iとが一致する場合、移行先データDjの部分データPjと、移行元データdiの部分データpiとを比較する。移行元データdiの部分データpiは、例えば、移行先のVMホストHT2からの送信要求に応じて、移行元のVMホストHT1からVMホストHT2に送信される。そして、VMホストHT2は、比較された比較結果をVMホストHT1に送信する。
 このあと、VMホストHT1は、受信された比較結果に基づいて、移行先の物理メモリPM2に対するメモリブロックbiの移行元データdiの複写の要否を判定する。具体的には、例えば、部分データPjと部分データpiとが一致する場合、VMホストHT1が、移行元データdiの複写が不要であると判定する。一方、部分データPjと部分データpiとが不一致の場合、VMホストHT1が、移行元データdiの複写が必要であると判定する。
 この結果、移行先のVMホストHT2は、移行先データDjの部分データPjと不一致となった部分データpiの抽出元の移行元データdiを、移行元のVMホストHT1から受信することになる。
 このように、移行元データdiの部分データpiと移行先データDjの部分データPjの一致判定により同一性の判定を行うことにより、移行元データdiと移行先データDjのハッシュ値の衝突による不具合を回避することができる。
 なお、移行元のサーバSVにおいて、比較部505による比較処理を行う場合、移行元のサーバSVからの送信要求に応じて、移行先のサーバSVが、移行先データDjの部分データPjを移行元のサーバSVに送信することになる。
 また、サーバSV間の双方向の通信路の通信品質に基づいて、移行元データdiの部分データpiと移行先データDjの部分データPjとの比較処理を行う実行主体を決めることにしてもよい。
 具体的には、例えば、上記比較部505は、第1のハッシュ値H1jと第1のハッシュ値h1iとが一致する場合、サーバSV間の双方向の通信路のうち、通信品質の高い通信路を選択する。通信品質としては、例えば、データの転送レートやエラーレートを用いることができる。転送レートは、単位時間当たりに転送されるデータ量(例えば、ビット毎秒)である。
 エラーレートは、データの送受信を行う際に、受信データの中に送信データと異なるビットが含まれる確率である。なお、転送レートおよびエラーレートは、例えば、予め計測されてメモリ202に記憶されていてもよく、また、通信路の選択時にその都度計測されることにしてもよい。
 より具体的には、例えば、VMホストHT2が、第1のハッシュ値H1jと第1のハッシュ値h1iとが一致する場合、サーバSV1,SV2間の双方向の通信路のうち、通信品質の高い通信路を選択する。
 ここで、サーバSV1からサーバSV2の方向の通信路が選択された場合、VMホストHT2が、移行元データdiの部分データpiの送信要求を移行元のVMホストHT1に送信する。この結果、VMホストHT2が、移行元データdiの部分データpiをVMホストHT1から受信して、移行元データdiの部分データpiと移行先データDjの部分データPjとの比較処理を行う。
 一方、サーバSV2からサーバSV1の方向の通信路が選択された場合、VMホストHT2が、移行先データDjの部分データPjを、移行元のVMホストHT1に送信する。この結果、移行元のVMホストHT1が、移行元データdiの部分データpiと移行先データDjの部分データPjとの比較処理を行う。
 このように、サーバSV1とサーバSV2との間の双方向の通信路のうち通信品質の高い通信路を選択して、部分データpiと部分データPjの比較処理を行う実行主体を決めることにより、迅速かつ効率的に該比較処理を行うことができる。
(判定手法3)
 つぎに、ハッシュ値(例えば、上述した第1のハッシュ値)が一致する移行元データdiと移行先データDjの一致判定を行うことにより、移行元データdiと移行先データDjの同一性の判定を行う判定手法3について説明する。
 上記比較部505は、第1のハッシュ値H1jと第1のハッシュ値h1iとが一致する場合、サーバSV間の双方向の通信路のうち、通信品質の高い通信路を選択する。具体的には、例えば、VMホストHT2が、第1のハッシュ値H1jと第1のハッシュ値h1iとが一致する場合、サーバSV1,SV2間の双方向の通信路のうち、通信品質の高い通信路を選択する。
 ここで、サーバSV2からサーバSV1の方向の通信路が選択された場合、VMホストHT2が、移行先データDjを移行元のVMホストHT1に送信する。このあと、移行元のVMホストHT1が、移行元データdiと移行先データDjとを比較する。そして、VMホストHT1は、比較された比較結果に基づいて、移行先の物理メモリPM2に対するメモリブロックbiの移行元データdiの複写の要否を判定する。
 具体的には、例えば、移行元データdiと移行先データDjとが一致する場合、VMホストHT1が、移行元データdiの複写が不要であると判定する。一方、移行元データdiと移行先データDjとが不一致の場合、VMホストHT1が、移行元データdiの複写が必要であると判定する。
 この結果、移行先のVMホストHT2は、移行先データDjと不一致となった移行元データdiを、移行元のVMホストHT1から受信することになる。
 このように、移行元データdiと移行先データDjの一致判定により同一性の判定を行うことにより、移行元データdiと移行先データDjのハッシュ値の衝突による不具合を回避することができる。
 なお、サーバSV間のデータの転送量を削減するという観点からすれば、移行先データDjとの一致判定のために、移行元のVMホストHT1から移行先のVMホストHT2に移行元データdiを送信することは意味がない。このため、サーバSV1からサーバSV2の方向の通信路が選択された場合は、VMホストHT2が、第1のハッシュ値H1jと第1のハッシュ値h1iとが一致することを表す比較結果を、VMホストHT1に送信することにしてもよい。
 この場合、VMホストHT1において、移行先の物理メモリPM2に対するメモリブロックbiの移行元データdiの複写が必要であると判定されることになる。すなわち、サーバSV1からサーバSV2の方向の通信路が選択された場合は、移行元データdiと移行先データDjとの一致判定を行うことなく、移行元データdiの複写が必要であると判定する。
(判定手法4)
 つぎに、ハッシュ値(例えば、上述した第1のハッシュ値)が一致する移行元データdiと移行先データDjのデータソースの一致判定を行うことにより、移行元データdiと移行先データDjの同一性の判定を行う判定手法4について説明する。
 図10は、移行元データおよび移行先データを記憶する共有ストレージの一例を示す説明図である。図10において、ストレージ装置1000は、ネットワーク205を介して、移行元のサーバSV1および移行先のサーバSV2がアクセス可能な共有ストレージである。
 サーバSV1上で動作中の仮想マシンVM3は、移行対象となる仮想マシンである。仮想マシンVM3を構成するメモリブロックb5の移行元データd5は、移行先の物理メモリPM2を構成するメモリブロックB10の移行先データD10と第1のハッシュ値(h15=H110)が一致する。
 また、移行元データd5は、ストレージ装置1000の論理ボリュームLV1に記憶されている。移行先データD10は、ストレージ装置1000の論理ボリュームLV2に記憶されている。ここで、ストレージ装置1000は、重複排除機能を有しており、同一内容を持つ論理ブロックは同一の物理ブロックに格納されるものとする。すなわち、移行元データd5および移行先データD10が、同一の物理アドレスのボリュームPV1に記憶されているデータDである場合、d5とD10は同一内容であり、同一のデータソースであることを示す。
 移行元データd5と移行先データD10のデータソースが同一の場合、移行先のサーバSV2おいて、移行先データD10が記憶されているメモリブロックB10を複数の仮想マシンVM(例えば、仮想マシンVM3,VM4)で共有することができる。このため、移行先の物理メモリPM2に対する移行元データd5の複写は不要となる。
 そこで、上記比較部505は、第1のハッシュ値H1jと第1のハッシュ値h1iとが一致する場合、さらに、移行先データDjを記憶するストレージ内の記憶領域のアドレスと、移行元データdiを記憶するストレージ内の記憶領域のアドレスとを比較する。ストレージは、例えば、移行先のサーバSVおよび移行元のサーバSVがアクセス可能なストレージ装置1000である。そして、上記判定部504は、比較された比較結果に基づいて、移行先のサーバSVの物理メモリPMに対するメモリブロックbiの移行元データdiの複写の要否を判定する。
 具体的には、例えば、VMホストHT2が、移行元データd5を記憶する論理ボリュームLV1を識別するボリュームIDを、移行元のVMホストHT1に問い合わせる。そして、VMホストHT2が、移行元データd5を記憶する論理ボリュームLV1に対応する物理アドレスをストレージ装置1000に問い合わせる。
 また、VMホストHT2が、移行先データD10を記憶する論理ボリュームLV2に対応する物理アドレスをストレージ装置1000に問い合わせる。つぎに、VMホストHT2が、移行元データd5を記憶する論理ボリュームLV1に対応する物理アドレスと、移行先データD10を記憶する論理ボリュームLV2に対応する物理アドレスを比較する。そして、VMホストHT2は、比較された比較結果をVMホストHT1に送信する。
 このあと、VMホストHT1は、受信された比較結果に基づいて、移行先の物理メモリPM2に対するメモリブロックbiの移行元データdiの複写の要否を判定する。具体的には、例えば、論理ボリュームLV1の物理アドレスと論理ボリュームLV2の物理アドレスが一致する場合、VMホストHT1が、移行元データd5の複写が不要であると判定する。この結果、移行先のサーバSV2において、例えば、移行先データD10を記憶するメモリブロックB10が複数の仮想マシンVM3,VM4によって共有されることになる。
 一方、論理ボリュームLV1の物理アドレスと論理ボリュームLV2の物理アドレスが不一致の場合、VMホストHT1が、移行元データd5の複写が必要であると判定する。この結果、移行先のVMホストHT2は、移行先データDjを記憶する論理ボリュームLV2の物理アドレスと不一致の物理アドレスの論理ボリュームLV1に記憶されている移行元データdiを、移行元のVMホストHT1から受信することになる。
 このように、移行元データdiと移行先データDjのデータソースの一致判定により同一性の判定を行うことにより、移行元データdiと移行先データDjのハッシュ値の衝突による不具合を回避することができる。
 なお、第1のハッシュ値H1jと第1のハッシュ値h1iとが一致する場合、上述した判定手法1~4の複数の判定手法を組み合わせて、移行元データdiと移行先データDjの同一性の判定を行うことにしてもよい。
 つぎに、実施の形態2にかかるサーバSVのデータ移行処理手順について説明する。ここではまず、移行元のサーバSVのデータ移行処理手順について説明する。
(移行元のサーバSVのデータ移行処理手順)
 図11は、実施の形態2にかかる移行元のサーバのデータ移行処理手順の一例を示すフローチャートである。図11のフローチャートにおいて、まず、受信部501により、仮想マシンVMkの移行指示を受信したか否かを判断する(ステップS1101)。
 ここで、受信部501により、仮想マシンVMkの移行指示を受信するのを待つ(ステップS1101:No)。そして、受信部501により、移行指示を受信した場合(ステップS1101:Yes)、選択部502により、仮想マシンVMkのメモリMkを区切って分割されたメモリブロックbiの「i」を「i=1」で初期化する(ステップS1102)。
 つぎに、選択部502により、仮想マシンVMkのメモリMkを構成するメモリブロックb1~bnの中からメモリブロックbiを選択する(ステップS1103)。そして、送信部503により、選択されたメモリブロックbiに記憶されている移行元データdiの第1および第2のハッシュ値h1i,h2iを移行先のサーバSVに送信する(ステップS1104)。
 このあと、受信部501により、移行元データdiのハッシュ値hiと、移行先の物理メモリPMを構成する各メモリブロック120-jに記憶されている移行先データDjごとのハッシュ値Hjとの比較結果を、移行先のサーバSVから受信したか否かを判断する(ステップS1105)。
 ここで、比較結果を受信するのを待って(ステップS1105:No)、受信した場合(ステップS1105:Yes)、判定部504により、受信された比較結果に基づいて、移行先のサーバSVの物理メモリPVに対する移行元データdiの複写の要否を判定する(ステップS1106)。
 ここで、移行元データdiの複写が必要な場合(ステップS1107:Yes)、送信部503により、移行元データdiの複写指示を移行先のサーバSVに送信する(ステップS1108)。そして、選択部502により、メモリブロックbiの「i」をインクリメントして(ステップS1109)、「i」が「n」より大きいか否かを判断する(ステップS1110)。
 ここで、「i」が「n」以下の場合(ステップS1110:No)、ステップS1103に戻る。一方、「i」が「n」より大きい場合(ステップS1110:Yes)、本フローチャートによる一連の処理を終了する。また、ステップS1107において、移行元データdiの複写が不要な場合(ステップS1107:No)、ステップS1109に移行する。
 これにより、移行対象となる仮想マシンVMkのメモリMkを構成するメモリブロックbiごとに、メモリブロックbiの移行元データdiの複写の要否を判定することができる。
 つぎに、移行先のサーバSVのデータ移行処理手順について説明する。
(移行先のサーバSVのデータ移行処理手順)
 図12~図14は、実施の形態2にかかる移行先のサーバのデータ移行処理手順の一例を示すフローチャートである。図12のフローチャートにおいて、まず、受信部501により、移行元データdiの第1および第2のハッシュ値h1i,h2iを移行元のサーバSVから受信したか否かを判断する(ステップS1201)。
 ここで、第1および第2のハッシュ値h1i,h2iを受信するのを待って(ステップS1201:No)、受信した場合(ステップS1201:Yes)、比較部505により、移行先の物理メモリPMを構成するメモリブロックBjの「j」を「j=1」で初期化する(ステップS1202)。
 つぎに、比較部505により、メモリブロックBjに記憶されている移行先データDjの第1のハッシュ値H1jと、受信された移行元データdiの第1のハッシュ値h1iとを比較する(ステップS1203)。そして、比較部505により、移行先データDjの第1のハッシュ値H1jと、移行元データdiの第1のハッシュ値h1iとが一致したか否かを判断する(ステップS1204)。
 ここで、第1のハッシュ値H1jと第1のハッシュ値h1iとが不一致の場合(ステップS1204:No)、比較部505により、メモリブロックBjの「j」をインクリメントして(ステップS1205)、「j」が「m」より大きいか否かを判断する(ステップS1206)。ここで、「j」が「m」以下の場合(ステップS1206:No)、ステップS1203に戻る。
 一方、「j」が「m」より大きい場合(ステップS1206:Yes)、送信部503により、比較部505によって比較された比較結果を移行元のサーバSVに送信して(ステップS1207)、本フローチャートによる一連の処理を終了する。
 また、ステップS1204において、第1のハッシュ値H1jと第1のハッシュ値h1iとが一致する場合(ステップS1204:Yes)、比較部505により、メモリブロックBjに記憶されている移行先データDjの第2のハッシュ値H2jと、移行元データdiの第2のハッシュ値h2iとを比較する(ステップS1208)。
 そして、比較部505により、移行先データDjの第2のハッシュ値H2jと、移行元データdiの第2のハッシュ値h2iとが一致したか否かを判断する(ステップS1209)。ここで、第2のハッシュ値H2jと第2のハッシュ値h2iとが不一致の場合(ステップS1209:No)、ステップS1205に移行する。
 一方、第2のハッシュ値H2jと第2のハッシュ値h2iとが一致する場合(ステップS1209:Yes)、図13に示すステップS1301に移行する。
 図13のフローチャートにおいて、まず、送信部503により、移行元データdiの部分データpiの送信要求を移行元のサーバSVに送信する(ステップS1301)。つぎに、受信部501により、移行元データdiの部分データpiを移行元のサーバSVから受信したか否かを判断する(ステップS1302)。
 ここで、部分データpiを受信するのを待って(ステップS1302:No)、受信した場合(ステップS1302:Yes)、比較部505により、移行先データDjの部分データPjと、移行元データdiの部分データpiとを比較する(ステップS1303)。
 このあと、比較部505により、移行先データDjの部分データPjと、移行元データdiの部分データpiとが一致したか否かを判断する(ステップS1304)。ここで、部分データPjと部分データpiとが不一致の場合(ステップS1304:No)、図12に示したステップS1205に移行する。
 一方、部分データPjと部分データpiとが一致する場合(ステップS1304:Yes)、図14に示すステップS1401に移行する。
 図14のフローチャートにおいて、まず、比較部505により、移行元データdiを記憶する論理ボリュームのボリュームIDを移行元のサーバSVに問い合わせる(ステップS1401)。そして、比較部505により、移行元データdiを記憶する論理ボリュームに対応する物理アドレスをストレージ装置1000に問い合わせる(ステップS1402)。
 つぎに、比較部505により、移行先データDjを記憶する論理ボリュームに対応する物理アドレスをストレージ装置1000に問い合わせる(ステップS1403)。そして、比較部505により、移行元データdiを記憶する論理ボリュームに対応する物理アドレスと、移行先データDjを記憶する論理ボリュームに対応する物理アドレスとを比較する(ステップS1404)。
 このあと、比較部505により、比較された移行元データdiの物理アドレスと移行先データDjの物理アドレスとが一致するか否かを判断する(ステップS1405)。ここで、移行元データdiの物理アドレスと移行先データDjの物理アドレスとが不一致の場合(ステップS1405:No)、図12に示したステップS1205に移行する。
 一方、移行元データdiの物理アドレスと移行先データDjの物理アドレスとが一致する場合(ステップS1405:Yes)、送信部503により、比較部505によって比較された比較結果を移行元のサーバSVに送信して(ステップS1406)、本フローチャートによる一連の処理を終了する。
 これにより、移行元のメモリブロックbiに記憶されている移行元データdiと、移行先のメモリブロックBjに記憶されている移行先データDjとの同一性を判断するための情報(比較結果)を、移行元のサーバSVに送信することができる。
 なお、ステップS1207において、比較された比較結果が移行元のサーバSVに送信された後、受信部501により、移行元データdiの複写指示が受信された場合、書込部506により、移行元データdiを移行先の物理メモリPMに書き込む。
 また、ステップS1406において、比較された比較結果が移行元のサーバSVに送信された場合、例えば、書込部506により、移行元データdiとハッシュ値が一致する移行先データDjを移行先の物理メモリPMに書き込む。また、コンテキストの切り替えは、例えば、移行先のサーバSVの物理メモリPM上に、仮想マシンVMkのメモリMkを構成するメモリブロックb1~bnが生成された後に行われる。
 以上説明したように、実施の形態2にかかるサーバSVによれば、移行対象となる仮想マシンVMkのメモリMkを構成するメモリブロックbiごとに、メモリブロックbiの移行元データdiの複写の要否を判定することができる。これにより、ライブマイグレーションを行う際に、複写不要なデータdiの複写を抑止して、サーバSV間のデータの転送量を削減することができる。
 また、サーバSVによれば、移行元データdiのハッシュ値hiと移行先データDjのハッシュ値Hjを比較して、移行元データdiと移行先データDjの同一性を判定することにより、メモリブロックbiのデータdiの複写の要否を判定することができる。
 また、サーバSVによれば、複数の異なるハッシュ値により移行元データdiと移行先データDjの同一性の判定を行うことにより、移行元データdiと移行先データDjのハッシュ値の衝突による不具合を回避することができる。
 また、サーバSVによれば、移行元データdiと移行先データDjの部分データpi,Pjの一致判定により同一性の判定を行うことにより、移行元データdiと移行先データDjのハッシュ値の衝突による不具合を回避することができる。
 また、サーバSVによれば、サーバSV1とサーバSV2との間の双方向の通信路のうち通信品質の高い通信路を選択して、部分データpiと部分データPjの比較処理を行うことができる。これにより、迅速かつ効率的に部分データpiと部分データPjの一致判定を行うことができる。
 また、サーバSVによれば、移行元データdiと移行先データDjの一致判定により同一性の判定を行うことにより、移行元データdiと移行先データDjのハッシュ値の衝突による不具合を回避することができる。
(実施の形態3)
 つぎに、実施の形態3にかかるサーバSVについて説明する。実施の形態3では、移行対象となる仮想マシンVMkのメモリブロックbiごとに、メモリブロックbiに記憶されている移行元データdiの属性情報に基づいて、移行元データdiの複写の要否を判定する。なお、実施の形態1,2で説明した内容と同一の内容については説明を省略する。
 ここで、サーバSV上の仮想マシンVMkによって実行中のOS(以下、「ゲストOSk」という)が、メモリMkを構成するメモリブロックb1~bnを管理するためのメモリブロックテーブルについて説明する。ここでは、一例として、サーバSV1上の仮想マシンVM3が実行中のゲストOS3が用いるメモリブロックテーブル1500を例に挙げて説明する。メモリブロックテーブル1500は、例えば、図2に示したメモリ202によって実現される。
(メモリブロックテーブル1500の記憶内容)
 図15は、メモリブロックテーブルの記憶内容の一例を示す説明図である。図15において、メモリブロックテーブル1500は、ブロックID、タイプ、ステータスおよび他ブロックIDのフィールドを有する。各フィールドに情報を設定することで、メモリブロックbiごとの管理データが記憶されている。
 ここで、ブロックIDは、仮想マシンVMkのメモリMkを構成するメモリブロックbiの識別子である。タイプは、メモリブロックbiに記憶されているデータdiのデータタイプである。図15中、「kern」は、カーネルデータを表している。カーネルデータには、例えば、メモリブロックテーブル1500が含まれている。「text」は、プログラムコードなどのテキストデータを表している。「free」は、フリーメモリに計上されているメモリブロックを表している。「data」は、プログラムのデータ領域などのデータを表している。「anno」は、「kern」、「text」、「free」および「data」以外のデータ(アノニマスデータ)を表している。
 ステータスは、メモリブロックbiに記憶されているデータdiの状態を表している。図15中、「nostore」は、バッキングストアがない状態を表している。バッキングストアとは、データdiのバックアップデータを記憶するスワップ領域内の記憶領域である。「sync」は、メモリブロックbiとは異なる他のメモリブロックと同期していることを表している。「nosync」は、メモリブロックbiとは異なる他のメモリブロックと同期していないことを表している。「null」は、メモリブロックbiが初期化されていることを表している。
 他ブロックIDは、メモリブロックbiに記憶されているデータdiと関連するデータを記憶する他のメモリブロックのブロックIDである。他のメモリブロックとしては、例えば、ファイルシステム上のメモリブロックやスワップ領域内のメモリブロックなどである。
(サーバSVの機能的構成)
 図16は、実施の形態3にかかるサーバの機能的構成を示すブロック図である。図16において、サーバSVは、受信部501と、選択部502と、送信部503と、判断部1601と、判定部1602と、を含む構成である。各機能部は、具体的には、例えば、図2に示したメモリ202などに記憶されたプログラムをCPU201に実行させることにより、または、ネットワークI/F203により、その機能を実現する。より具体的には、例えば、各機能部は、図3に示したVMホストHT1,HT2、または、仮想マシンVMk上で実行されるゲストOSkによって実現される。なお、各機能部の処理結果は、メモリ202に記憶される。
 まず、判断部1601は、メモリブロックbiに記憶されている移行元データdiの属性情報に基づいて、メモリブロックbiが使用されていない空きの記憶領域か否かを判断する。具体的には、例えば、仮想マシンVM3のゲストOS3が、メモリブロックテーブル1500を参照して、メモリブロックbiがフリーメモリに計上されているメモリブロックか否かを判断する。より具体的には、例えば、ゲストOS3が、メモリブロックbiのタイプフィールドに「free」が設定されている場合、メモリブロックbiがフリーメモリに計上されているメモリブロックと判断する。
 判定部1602は、判断された判断結果に基づいて、移行先のサーバSVの物理メモリPMに対する移行元データdiの複写の要否を判定する。具体的には、例えば、ゲストOS3が、メモリブロックbiがフリーメモリに計上されているメモリブロックと判断された場合、移行元データdiの複写が不要であると判定する。
 そして、ゲストOS3が、メモリブロックbiのステータスをページスティールされた状態に移行させる。ここで、ページスティールとは、例えば、メモリブロックbiが他の仮想マシンVMに奪われた状態である。メモリブロックbiのステータスがページスティールされた状態に移行されたことを表す情報は、VMホストHT1からVMホストHT2に転送される。
 この結果、例えば、メモリブロックbiのステータスが移行先のサーバSV2上で動作する仮想マシンVM3のゲストOS3が用いるメモリブロックテーブル1500に反映される。また、移行先のサーバSV2において、ゲストOS3は、ページスティールされた状態のメモリブロックbiに対するアクセスが発生した場合、物理メモリPM2の空き領域を確保して、メモリブロックbiを生成する。
 また、判断部1601は、メモリブロックbiに記憶されている移行元データdiの属性情報に基づいて、移行先のサーバSVがアクセス可能な記憶装置に移行元データdiが記憶されているか否かを判断する。具体的には、例えば、仮想マシンVM3のゲストOS3が、メモリブロックテーブル1500を参照して、移行元データdiが移行先のサーバSVがアクセス可能なファイルシステムに記憶されているか否かを判断する。
 より具体的には、例えば、まず、ゲストOS3が、メモリブロックbiのタイプフィールドに「text」または「data」が設定されているか否かを判断する。ここで、「text」または「data」が設定されている場合、さらに、ゲストOS3が、メモリブロックbiのステータスフィールドに「sync」が設定されているか否かを判断する。ここで、「sync」が設定されている場合、ゲストOS3が、移行元データdiがファイルシステムに記憶されていると判断する。
 そして、ゲストOS3が、移行元データdiの複写が不要であると判定する。つぎに、ゲストOS3が、メモリブロックbiのステータスをページスティールされた状態に移行させる。また、移行先のサーバSV2において、ゲストOS3は、ページスティールされた状態のメモリブロックbiに対するアクセスが発生した場合、物理メモリPM2の空き領域を確保し、ファイルシステムからデータdiを取得してメモリブロックbiを生成する。
 また、判断部1601は、メモリブロックbiに記憶されている移行元データdiの属性情報に基づいて、メモリMkとは異なる他の記憶領域に移行元データdiがバックアップされているか否かを判断する。ここで、他の記憶領域は、例えば、移行元のサーバSVの磁気ディスクや光ディスクなどの記憶装置に設けられていてもよく、また、移行元のサーバSVおよび移行先のサーバSVがアクセス可能な記憶装置に設けられていてもよい。
 具体的には、例えば、仮想マシンVM3のゲストOS3が、メモリブロックテーブル1500を参照して、移行元データdiのバッキングストアがあるか否かを判断する。より具体的には、例えば、まず、ゲストOS3が、メモリブロックbiのタイプフィールドに「anno」が設定されているか否かを判断する。ここで、「anno」が設定されている場合、さらに、ゲストOS3が、メモリブロックbiのステータスフィールドに「sync」が設定されているか否かを判断する。
 ここで、「sync」が設定されている場合、ゲストOS3が、移行元データdiのバッキングストアがあると判断する。そして、ゲストOS3が、移行元データdiの複写が不要であると判定する。そして、ゲストOS3が、メモリブロックbiのステータスをページスティールされた状態に移行させる。
 また、移行先のサーバSV2において、ゲストOS3は、ページスティールされた状態のメモリブロックbiに対するアクセスが発生した場合、物理メモリPM2の空き領域を確保し、スワップ領域からデータdiを取得してメモリブロックbiを生成する。
 また、判断部1601は、メモリブロックbiに記憶されている移行元データdiの属性情報に基づいて、メモリブロックbiが初期化されているか否かを判断する。具体的には、例えば、仮想マシンVM3のゲストOS3が、メモリブロックテーブル1500を参照して、メモリブロックbiが初期化されているか否かを判断する。
 より具体的には、例えば、ゲストOS3が、メモリブロックbiのステータスフィールドに「null」が設定されているか否かを判断する。ここで、「null」が設定されている場合、ゲストOS3が、メモリブロックbiが初期化されていると判断する。そして、ゲストOS3が、移行元データdiの複写が不要であると判定する。
 そして、ゲストOS3が、メモリブロックbiのステータスをページスティールされた状態に移行させる。また、移行先のサーバSV2において、ゲストOS3は、ページスティールされた状態のメモリブロックbiに対するアクセスが発生した場合、物理メモリPM2の空き領域を確保してメモリブロックbiを生成する。
 つぎに、実施の形態3にかかるサーバSVのデータ移行処理手順について説明する。
(サーバSVのデータ移行処理手順)
 図17は、実施の形態3にかかるサーバのデータ移行処理手順の一例を示すフローチャートである。図17のフローチャートにおいて、まず、受信部501により、仮想マシンVMkの移行指示を受信したか否かを判断する(ステップS1701)。
 ここで、受信部501により、仮想マシンVMkの移行指示を受信するのを待つ(ステップS1701:No)。そして、受信部501により、移行指示を受信した場合(ステップS1701:Yes)、選択部502により、移行指示のあった仮想マシンVMkのメモリMkを構成するメモリブロックbiの「i」を「i=1」で初期化する(ステップS1702)。
 つぎに、選択部502により、仮想マシンVMkのメモリMkを構成するメモリブロックb1~bnの中からメモリブロックbiを選択する(ステップS1703)。そして、判断部1601により、メモリブロックbiがフリーメモリに計上されているメモリブロックか否かを判断する(ステップS1704)。
 ここで、メモリブロックbiがフリーメモリに計上されているメモリブロックの場合(ステップS1704:Yes)、判定部1602により、移行元データdiの複写が不要であると判定する(ステップS1705)。そして、判定部1602により、メモリブロックbiのステータスをページスティールされた状態に移行させて(ステップS1706)、ステップS1712に移行する。
 また、ステップS1704において、メモリブロックbiがフリーメモリに計上されていないメモリブロックの場合(ステップS1704:No)、判断部1601により、移行元データdiがファイルシステムに記憶されているか否かを判断する(ステップS1707)。ここで、移行元データdiがファイルシステムに記憶されている場合(ステップS1707:Yes)、ステップS1705に移行する。
 一方、移行元データdiがファイルシステムに記憶されていない場合(ステップS1707:No)、判断部1601により、移行元データdiのバッキングストアがあるか否かを判断する(ステップS1708)。ここで、移行元データdiのバッキングストアがある場合(ステップS1708:Yes)、ステップS1705に移行する。
 一方、移行元データdiのバッキングストアがない場合(ステップS1708:No)、判断部1601により、メモリブロックbiが初期化されているか否かを判断する(ステップS1709)。ここで、メモリブロックbiが初期化されている場合(ステップS1709:Yes)、ステップS1705に移行する。
 一方、メモリブロックbiが初期化されていない場合(ステップS1709:No)、判定部1602により、移行元データdiの複写が必要であると判定する(ステップS1710)。そして、送信部503により、メモリブロックbiの移行元データdiの複写指示を移行先のサーバSVに送信する(ステップS1711)。
 つぎに、選択部502により、メモリブロックbiの「i」をインクリメントして(ステップS1712)、「i」が「n」より大きいか否かを判断する(ステップS1713)。ここで、「i」が「n」以下の場合(ステップS1713:No)、ステップS1703に戻る。一方、「i」が「n」より大きい場合(ステップS1713:Yes)、本フローチャートによる一連の処理を終了する。
 これにより、移行対象となる仮想マシンVMkのメモリMkを分割したメモリブロックbiごとに、メモリブロックbiの移行元データdiの複写の要否を判定することができる。なお、ステップS1706およびステップS1711の処理は、例えば、すべてのメモリブロックb1~bnについて複写の要否が判定された後、一括して行われることにしてもよい。
 以上説明したように、実施の形態3にかかるサーバSVによれば、仮想マシンVMkのメモリブロックbiごとに、メモリブロックbiに記憶されている移行元データdiの属性情報に基づいて、移行元データdiの複写の要否を判定することができる。これにより、ライブマイグレーションを行う際に、複写不要なデータdiの複写を抑止して、サーバ間のデータ転送量を削減することができる。
 また、サーバSVによれば、メモリブロックbiがフリーメモリに計上されているメモリブロックか否かを判断することにより、メモリブロックbiに記憶されている移行元データdiの複写の要否を判定することができる。
 また、サーバSVによれば、メモリブロックbiに記憶されている移行元データdiが移行先のサーバSVがアクセス可能なファイルシステムに記憶されているか否かを判断することにより、移行元データdiの複写の要否を判定することができる。
 また、サーバSVによれば、メモリブロックbiに記憶されている移行元データdiのバッキングストアがあるか否かを判断することにより、移行元データdiの複写の要否を判定することができる。
 また、サーバSVによれば、メモリブロックbiが初期化されているか否かを判断することにより、メモリブロックbiに記憶されている移行元データdiの複写の要否を判定することができる。
 なお、本実施の形態で説明したデータ移行方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本データ移行プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本データ移行プログラムは、インターネット等のネットワークを介して配布してもよい。
 101,102 計算機
 110,110-1~110-4,120,120-1~120-9 記憶領域
 300 ネットワークシステム
 400,800 メモリ管理テーブル
 501 受信部
 502 選択部
 503 送信部
 504,1602 判定部
 505 比較部
 506 書込部
 600,900 ハッシュテーブル
 1500 メモリブロックテーブル
 1601 判断部
 SV,SV1,SV2 サーバ
 VM,VMk 仮想マシン

Claims (24)

  1.  計算機間のデータ移行を行う移行先の計算機に、
     移行元のメモリを構成するいずれかのメモリブロックに記憶されている移行元データのハッシュ値を移行元の計算機から受信する第1の受信工程と、
     移行先のメモリを構成するメモリブロックごとに、当該メモリブロックに記憶されている移行先データのハッシュ値と、前記第1の受信工程によって受信された前記移行元データのハッシュ値とを比較する比較工程と、
     前記比較工程によって比較された比較結果を前記移行元の計算機に送信する送信工程と、
     前記送信工程によって前記比較結果が送信された結果、前記移行先データのハッシュ値と不一致となったハッシュ値の算出元の前記移行元データを前記移行元の計算機から受信する第2の受信工程と、
     を実行させることを特徴とするデータ移行プログラム。
  2.  前記第1の受信工程は、
     複数の異なるハッシュ関数を用いて算出された前記移行元データの複数のハッシュ値を前記移行元の計算機から受信し、
     前記比較工程は、
     前記複数の異なるハッシュ関数に含まれるハッシュ関数ごとに、当該ハッシュ関数を用いて算出された、前記移行先データのハッシュ値と、前記第1の受信工程によって受信された前記移行元データのハッシュ値とを比較し、
     前記第2の受信工程は、
     前記複数の異なるハッシュ関数を用いて算出された前記移行先データの複数のハッシュ値の少なくともいずれかのハッシュ値と不一致となったハッシュ値の算出元の前記移行元データを、前記移行元の計算機から受信することを特徴とする請求項1に記載のデータ移行プログラム。
  3.  前記第1の受信工程は、
     さらに、所定の抽出ルールに基づいて前記移行元データから抽出された部分データを前記移行元の計算機から受信し、
     前記比較工程は、
     前記移行先データのハッシュ値と前記移行元データのハッシュ値とが一致する場合、さらに、前記抽出ルールに基づいて前記移行先データから抽出された部分データと、前記第1の受信工程によって受信された前記移行元データの部分データとを比較し、
     前記第2の受信工程は、
     前記移行先データの部分データと不一致となった部分データの抽出元の前記移行元データを前記移行元の計算機から受信することを特徴とする請求項1に記載のデータ移行プログラム。
  4.  前記移行先の計算機に、
     前記移行先データのハッシュ値と前記移行元データのハッシュ値とが一致する場合、前記移行先の計算機と前記移行元の計算機との間の双方向の通信路のうち通信品質の高い通信路を選択する選択工程を実行させ、
     前記送信工程は、
     前記選択工程によって前記移行先の計算機から前記移行元の計算機の方向の通信路が選択された場合、所定の抽出ルールに基づいて前記移行先データから抽出された部分データを前記移行元の計算機に送信し、
     前記第2の受信工程は、
     前記送信工程によって前記移行先データの部分データが送信された結果、前記移行先データの部分データと不一致の部分データの抽出元の前記移行元データを前記移行元の計算機から受信することを特徴とする請求項1に記載のデータ移行プログラム。
  5.  前記送信工程は、
     前記選択工程によって前記移行先の計算機から前記移行元の計算機の方向の通信路が選択された場合、前記移行先データを前記移行元の計算機に送信し、
     前記第2の受信工程は、
     前記送信工程によって前記移行先データが送信された結果、前記移行先データと不一致の前記移行元データを前記移行元の計算機から受信することを特徴とする請求項4に記載のデータ移行プログラム。
  6.  前記比較工程は、
     前記移行先データのハッシュ値と前記移行元データのハッシュ値とが一致する場合、さらに、前記移行先の計算機および前記移行元の計算機がアクセス可能なストレージ内の、前記移行先データを記憶する記憶領域のアドレスと、前記移行元データを記憶する記憶領域のアドレスとを比較し、
     前記第2の受信工程は、
     前記移行先データを記憶する記憶領域のアドレスと不一致のアドレスの記憶領域に記憶されている前記移行元データを前記移行元の計算機から受信することを特徴とする請求項1に記載のデータ移行プログラム。
  7.  計算機間のデータ移行を行う移行元の計算機に、
     移行元のメモリを構成するメモリブロックごとに、当該メモリブロックに記憶されている移行元データのハッシュ値を移行先の計算機に送信する第1の送信工程と、
     前記第1の送信工程によって送信された前記移行元データのハッシュ値と、移行先のメモリを構成する各メモリブロックに記憶されている移行先データごとのハッシュ値との比較結果を、前記移行先の計算機から受信する受信工程と、
     前記受信工程によって受信された比較結果に基づいて、前記移行先のメモリに対する前記移行元データの複写の要否を判定する判定工程と、
     前記判定工程によって複写が必要であると判定された場合、前記移行元データを前記移行先の計算機に送信する第2の送信工程と、
     を実行させることを特徴とするデータ移行プログラム。
  8.  計算機間のデータ移行を行う移行先の計算機に、
     移行先のメモリを構成する各メモリブロックに記憶されている移行先データごとのハッシュ値を移行元の計算機に送信する送信工程と、
     前記送信工程によって前記移行先データごとのハッシュ値が送信された結果、前記移行先データごとのハッシュ値と不一致のハッシュ値の算出元の移行元データを、前記移行元の計算機から受信する受信工程と、
     を実行させることを特徴とするデータ移行プログラム。
  9.  計算機間のデータ移行を行う移行元の計算機に、
     移行先のメモリを構成する各メモリブロックに記憶されている移行先データごとのハッシュ値を移行元の計算機から受信する受信工程と、
     移行元のメモリを構成するメモリブロックごとに、当該メモリブロックに記憶されている移行元データのハッシュ値と、前記受信工程によって受信された前記移行先データごとのハッシュ値とを比較する比較工程と、
     前記比較工程によって比較された比較結果に基づいて、前記移行先のメモリに対する前記移行元データの複写の要否を判定する判定工程と、
     前記判定工程によって複写が必要であると判定された場合、前記移行元データを前記移行先の計算機に送信する送信工程と、
     を実行させることを特徴とするデータ移行プログラム。
  10.  計算機間のデータ移行を行う移行元の計算機に、
     移行元のメモリを構成するメモリブロックごとに、当該メモリブロックに記憶されている移行元データの属性情報に基づいて、移行先のメモリに対する前記移行元データの複写の要否を判定する判定工程と、
     前記判定工程によって複写が必要であると判定された場合、前記移行元データを移行先の計算機に送信する送信工程と、
     を実行させることを特徴とするデータ移行プログラム。
  11.  前記移行元の計算機に、
     前記移行元データの属性情報に基づいて、当該移行元データを記憶する前記メモリブロックが使用されていない空きのメモリブロックか否かを判断する判断工程をさらに実行させ、
     前記判定工程は、
     前記判断工程によって空きのメモリブロックではないと判断された場合、前記移行元データの複写が必要であると判定することを特徴とする請求項10に記載のデータ移行プログラム。
  12.  前記判断工程は、
     前記移行元データの属性情報に基づいて、前記移行先の計算機がアクセス可能な記憶装置に前記移行元データが記憶されているか否か判断し、
     前記判定工程は、
     前記判断工程によって前記記憶装置に前記移行元データが記憶されていないと判断された場合、前記移行元データの複写が必要であると判定することを特徴とする請求項11に記載のデータ移行プログラム。
  13.  前記判断工程は、
     前記移行元データの属性情報に基づいて、前記移行元のメモリとは異なる他の記憶領域に前記移行元データがバックアップされているか否か判断し、
     前記判定工程は、
     前記判断工程によってバックアップされていないと判断された場合、前記移行元データの複写が必要であると判定することを特徴とする請求項12に記載のデータ移行プログラム。
  14.  前記判断工程は、
     前記移行元データの属性情報に基づいて、当該移行元データを記憶する前記メモリブロックが初期化されているか否かを判断し、
     前記判定工程は、
     前記判断工程によって初期化されていないと判断された場合、前記移行元データの複写が必要であると判定することを特徴とする請求項13に記載のデータ移行プログラム。
  15.  計算機間のデータ移行を行う移行先の計算機において、
     移行元のメモリを構成するいずれかのメモリブロックに記憶されている移行元データのハッシュ値を移行元の計算機から受信する第1の受信部と、
     移行先のメモリを構成するメモリブロックごとに、当該メモリブロックに記憶されている移行先データのハッシュ値と、前記第1の受信部によって受信された前記移行元データのハッシュ値とを比較する比較部と、
     前記比較部によって比較された比較結果を前記移行元の計算機に送信する送信部と、
     前記送信部によって前記比較結果が送信された結果、前記移行先データのハッシュ値と不一致となったハッシュ値の算出元の前記移行元データを前記移行元の計算機から受信する第2の受信部と、
     を備えることを特徴とする計算機。
  16.  計算機間のデータ移行を行う移行元の計算機において、
     移行元のメモリを構成するメモリブロックごとに、当該メモリブロックに記憶されている移行元データのハッシュ値を移行先の計算機に送信する第1の送信部と、
     前記第1の送信部によって送信された前記移行元データのハッシュ値と、移行先のメモリを構成する各メモリブロックに記憶されている移行先データごとのハッシュ値との比較結果を、前記移行先の計算機から受信する受信部と、
     前記受信部によって受信された比較結果に基づいて、前記移行先のメモリに対する前記移行元データの複写の要否を判定する判定部と、
     前記判定部によって複写が必要であると判定された場合、前記移行元データを前記移行先の計算機に送信する第2の送信部と、
     を備えることを特徴とする計算機。
  17.  計算機間のデータ移行を行う移行先の計算機において、
     移行先のメモリを構成する各メモリブロックに記憶されている移行先データごとのハッシュ値を移行元の計算機に送信する送信部と、
     前記送信部によって前記移行先データごとのハッシュ値が送信された結果、前記移行先データごとのハッシュ値と不一致のハッシュ値の算出元の移行元データを、前記移行元の計算機から受信する受信部と、
     を備えることを特徴とする計算機。
  18.  計算機間のデータ移行を行う移行元の計算機において、
     移行先のメモリを構成する各メモリブロックに記憶されている移行先データごとのハッシュ値を移行元の計算機から受信する受信部と、
     移行元のメモリを構成するメモリブロックごとに、当該メモリブロックに記憶されている移行元データのハッシュ値と、前記受信部によって受信された前記移行先データごとのハッシュ値とを比較する比較部と、
     前記比較部によって比較された比較結果に基づいて、前記移行先のメモリに対する前記移行元データの複写の要否を判定する判定部と、
     前記判定部によって複写が必要であると判定された場合、前記移行元データを前記移行先の計算機に送信する送信部と、
     を備えることを特徴とする計算機。
  19.  計算機間のデータ移行を行う移行元の計算機において、
     移行元のメモリを構成するメモリブロックごとに、当該メモリブロックに記憶されている移行元データの属性情報に基づいて、移行先のメモリに対する前記移行元データの複写の要否を判定する判定部と、
     前記判定部によって複写が必要であると判定された場合、前記移行元データを移行先の計算機に送信する送信部と、
     を備えることを特徴とする計算機。
  20.  計算機間のデータ移行を行う移行先の計算機が、
     移行元のメモリを構成するいずれかのメモリブロックに記憶されている移行元データのハッシュ値を移行元の計算機から受信する第1の受信工程と、
     移行先のメモリを構成するメモリブロックごとに、当該メモリブロックに記憶されている移行先データのハッシュ値と、前記第1の受信工程によって受信された前記移行元データのハッシュ値とを比較する比較工程と、
     前記比較工程によって比較された比較結果を前記移行元の計算機に送信する送信工程と、
     前記送信工程によって前記比較結果が送信された結果、前記移行先データのハッシュ値と不一致となったハッシュ値の算出元の前記移行元データを前記移行元の計算機から受信する第2の受信工程と、
     を実行することを特徴とするデータ移行方法。
  21.  計算機間のデータ移行を行う移行元の計算機が、
     移行元のメモリを構成するメモリブロックごとに、当該メモリブロックに記憶されている移行元データのハッシュ値を移行先の計算機に送信する第1の送信工程と、
     前記第1の送信工程によって送信された前記移行元データのハッシュ値と、移行先のメモリを構成する各メモリブロックに記憶されている移行先データごとのハッシュ値との比較結果を、前記移行先の計算機から受信する受信工程と、
     前記受信工程によって受信された比較結果に基づいて、前記移行先のメモリに対する前記移行元データの複写の要否を判定する判定工程と、
     前記判定工程によって複写が必要であると判定された場合、前記移行元データを前記移行先の計算機に送信する第2の送信工程と、
     を実行することを特徴とするデータ移行方法。
  22.  計算機間のデータ移行を行う移行先の計算機が、
     移行先のメモリを構成する各メモリブロックに記憶されている移行先データごとのハッシュ値を移行元の計算機に送信する送信工程と、
     前記送信工程によって前記移行先データごとのハッシュ値が送信された結果、前記移行先データごとのハッシュ値と不一致のハッシュ値の算出元の移行元データを、前記移行元の計算機から受信する受信工程と、
     を実行することを特徴とするデータ移行方法。
  23.  計算機間のデータ移行を行う移行元の計算機が、
     移行先のメモリを構成する各メモリブロックに記憶されている移行先データごとのハッシュ値を移行元の計算機から受信する受信工程と、
     移行元のメモリを構成するメモリブロックごとに、当該メモリブロックに記憶されている移行元データのハッシュ値と、前記受信工程によって受信された前記移行先データごとのハッシュ値とを比較する比較工程と、
     前記比較工程によって比較された比較結果に基づいて、前記移行先のメモリに対する前記移行元データの複写の要否を判定する判定工程と、
     前記判定工程によって複写が必要であると判定された場合、前記移行元データを前記移行先の計算機に送信する送信工程と、
     を実行することを特徴とするデータ移行方法。
  24.  計算機間のデータ移行を行う移行元の計算機が、
     移行元のメモリを構成するメモリブロックごとに、当該メモリブロックに記憶されている移行元データの属性情報に基づいて、移行先のメモリに対する前記移行元データの複写の要否を判定する判定工程と、
     前記判定工程によって複写が必要であると判定された場合、前記移行元データを移行先の計算機に送信する送信工程と、
     を実行することを特徴とするデータ移行方法。
PCT/JP2010/072583 2010-12-15 2010-12-15 データ移行プログラム、計算機およびデータ移行方法 WO2012081099A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
EP10860696.3A EP2653970A4 (en) 2010-12-15 2010-12-15 DATA TRANSFER PROGRAM, COMPUTER, AND DATA TRANSFER METHOD
JP2012548578A JP5534031B2 (ja) 2010-12-15 2010-12-15 データ移行プログラム、計算機およびデータ移行方法
PCT/JP2010/072583 WO2012081099A1 (ja) 2010-12-15 2010-12-15 データ移行プログラム、計算機およびデータ移行方法
US13/917,082 US20130275708A1 (en) 2010-12-15 2013-06-13 Computer product, computing device, and data migration method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/072583 WO2012081099A1 (ja) 2010-12-15 2010-12-15 データ移行プログラム、計算機およびデータ移行方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/917,082 Continuation US20130275708A1 (en) 2010-12-15 2013-06-13 Computer product, computing device, and data migration method

Publications (1)

Publication Number Publication Date
WO2012081099A1 true WO2012081099A1 (ja) 2012-06-21

Family

ID=46244226

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/072583 WO2012081099A1 (ja) 2010-12-15 2010-12-15 データ移行プログラム、計算機およびデータ移行方法

Country Status (4)

Country Link
US (1) US20130275708A1 (ja)
EP (1) EP2653970A4 (ja)
JP (1) JP5534031B2 (ja)
WO (1) WO2012081099A1 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103412929A (zh) * 2013-08-16 2013-11-27 蓝盾信息安全技术股份有限公司 一种海量数据的存储方法
JP2014178939A (ja) * 2013-03-15 2014-09-25 Nec Corp 重複データ管理装置、データ転送制御装置、データ転送制御システム、重複データ管理方法、データ転送制御方法、および、コンピュータ・プログラム
JP2014182859A (ja) * 2013-03-21 2014-09-29 Hitachi Automotive Systems Ltd 電子制御装置
JP2016143221A (ja) * 2015-02-02 2016-08-08 富士通株式会社 ストレージ装置,制御プログラム,ストレージシステム及びデータ転送方法
JP2017535196A (ja) * 2014-11-03 2017-11-24 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 仮想ネットワーク機能インスタンスをマイグレーションさせるための方法、装置およびシステム
JP2019152945A (ja) * 2018-03-01 2019-09-12 Necソリューションイノベータ株式会社 ストレージ装置、データ移行方法、プログラム
JP2021026298A (ja) * 2019-07-31 2021-02-22 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5804189B2 (ja) * 2012-03-19 2015-11-04 富士通株式会社 情報処理システム,情報処理方法,プログラム
US9459902B2 (en) * 2013-08-16 2016-10-04 Red Hat Israel, Ltd. Memory duplication by destination host in virtual machine live migration
US9454400B2 (en) * 2013-08-16 2016-09-27 Red Hat Israel, Ltd. Memory duplication by origin host in virtual machine live migration
US9712610B2 (en) * 2013-10-01 2017-07-18 Vmware, Inc. System and method for increasing physical memory page sharing by workloads
CN103559143A (zh) * 2013-11-08 2014-02-05 华为技术有限公司 数据拷贝管理装置及其数据拷贝方法
US9811367B2 (en) 2014-11-13 2017-11-07 Nsp Usa, Inc. Method and apparatus for combined hardware/software VM migration
JP6558059B2 (ja) * 2015-05-01 2019-08-14 富士通株式会社 ストレージ制御装置、ストレージ制御プログラム、およびストレージシステム
US9619270B2 (en) 2015-06-27 2017-04-11 Vmware, Inc. Remote-direct-memory-access-based virtual machine live migration
US10817321B2 (en) * 2017-03-21 2020-10-27 International Business Machines Corporation Hardware independent interface for cognitive data migration
US11526470B2 (en) * 2018-01-03 2022-12-13 Salesforce, Inc. Data validation for data record migrations
US20190250946A1 (en) * 2018-02-13 2019-08-15 International Business Machines Corporation Migrating a software container taking into account resource constraints
US11422851B2 (en) * 2019-04-22 2022-08-23 EMC IP Holding Company LLC Cloning running computer systems having logical partitions in a physical computing system enclosure
US20220318042A1 (en) * 2021-04-01 2022-10-06 RAMScaler, Inc. Distributed memory block device storage

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008225546A (ja) 2007-03-08 2008-09-25 Nec Corp 仮想装置構成システム、及びその方法
JP2008250903A (ja) * 2007-03-30 2008-10-16 Toshiba Corp ファイル更新装置、プログラム及び方法
JP2010033206A (ja) 2008-07-28 2010-02-12 Fujitsu Ltd 仮想マシンモニタ装置およびプログラム,ならびに仮想マシン間メモリ共有管理方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU5386796A (en) * 1995-04-11 1996-10-30 Kinetech, Inc. Identifying data in a data processing system
US7165088B2 (en) * 2001-01-24 2007-01-16 Microsoft Corporation System and method for incremental and reversible data migration and feature deployment
US6922761B2 (en) * 2002-03-25 2005-07-26 Emc Corporation Method and system for migrating data
JP3991760B2 (ja) * 2002-04-26 2007-10-17 株式会社日立製作所 データベース管理方法および装置およびその処理プログラム
US7366859B2 (en) * 2005-10-06 2008-04-29 Acronis Inc. Fast incremental backup method and system
US8055902B2 (en) * 2007-01-12 2011-11-08 International Business Machines Corporation Method, system, and computer program product for data upload in a computing system
US7925850B1 (en) * 2007-02-16 2011-04-12 Vmware, Inc. Page signature disambiguation for increasing the efficiency of virtual machine migration in shared-page virtualized computer systems
EP3361371A1 (en) * 2008-11-07 2018-08-15 Dell International L.L.C. Thin import for a data storage system
JP5160483B2 (ja) * 2009-03-11 2013-03-13 株式会社日立ソリューションズ ストレージシステム及びデータマイグレーション対応検索システム
US8386731B2 (en) * 2009-09-14 2013-02-26 Vmware, Inc. Method and system for optimizing live migration of persistent data of virtual machine using disk I/O heuristics
US8327060B2 (en) * 2009-11-30 2012-12-04 Red Hat Israel, Ltd. Mechanism for live migration of virtual machines with memory optimizations
US20120005557A1 (en) * 2010-06-30 2012-01-05 Eitan Mardiks Virtual copy and virtual write of data in a storage device
US8826272B2 (en) * 2010-11-29 2014-09-02 International Business Machines Corporation Planning a reliable migration in a limited stability virtualized environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008225546A (ja) 2007-03-08 2008-09-25 Nec Corp 仮想装置構成システム、及びその方法
JP2008250903A (ja) * 2007-03-30 2008-10-16 Toshiba Corp ファイル更新装置、プログラム及び方法
JP2010033206A (ja) 2008-07-28 2010-02-12 Fujitsu Ltd 仮想マシンモニタ装置およびプログラム,ならびに仮想マシン間メモリ共有管理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
KUNIO MIYAMOTO, XEN TETTEI NYUMON, 19 December 2007 (2007-12-19), pages 271 *
RYOZO KIYOHARA: "Reprogramming Method for Mobile Devices", IPSJ SIG NOTES HEISEI 21 NENDO (6) KUMIKOMI SYSTEM (EMB-16), 15 April 2010 (2010-04-15), pages 1 - 8 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014178939A (ja) * 2013-03-15 2014-09-25 Nec Corp 重複データ管理装置、データ転送制御装置、データ転送制御システム、重複データ管理方法、データ転送制御方法、および、コンピュータ・プログラム
JP2014182859A (ja) * 2013-03-21 2014-09-29 Hitachi Automotive Systems Ltd 電子制御装置
US9996296B2 (en) 2013-03-21 2018-06-12 Hitachi Automotive Systems, Ltd. Electronic control unit and method for rewriting data
CN103412929A (zh) * 2013-08-16 2013-11-27 蓝盾信息安全技术股份有限公司 一种海量数据的存储方法
JP2017535196A (ja) * 2014-11-03 2017-11-24 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 仮想ネットワーク機能インスタンスをマイグレーションさせるための方法、装置およびシステム
US10455412B2 (en) 2014-11-03 2019-10-22 Huawei Technologies Co., Ltd. Method, apparatus, and system for migrating virtual network function instance
JP2016143221A (ja) * 2015-02-02 2016-08-08 富士通株式会社 ストレージ装置,制御プログラム,ストレージシステム及びデータ転送方法
JP2019152945A (ja) * 2018-03-01 2019-09-12 Necソリューションイノベータ株式会社 ストレージ装置、データ移行方法、プログラム
JP2021026298A (ja) * 2019-07-31 2021-02-22 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置
US11327741B2 (en) 2019-07-31 2022-05-10 Sony Interactive Entertainment Inc. Information processing apparatus

Also Published As

Publication number Publication date
US20130275708A1 (en) 2013-10-17
JP5534031B2 (ja) 2014-06-25
EP2653970A1 (en) 2013-10-23
JPWO2012081099A1 (ja) 2014-05-22
EP2653970A4 (en) 2014-01-29

Similar Documents

Publication Publication Date Title
JP5534031B2 (ja) データ移行プログラム、計算機およびデータ移行方法
US10970104B2 (en) Resource access method applied to computer and computer
US9201875B2 (en) Partition file system for virtual machine memory management
US9063793B2 (en) Virtual server and virtual machine management method for supporting zero client by providing host interfaces from classified resource pools through emulation or direct connection modes
US20090216986A1 (en) Apparatus and method for managing logical volume in distributed storage systems
US7792918B2 (en) Migration of a guest from one server to another
WO2011033582A1 (en) Storage system for eliminating duplicated data
JP2018518733A (ja) ファイル操作方法及び装置
CN104965757A (zh) 虚拟机热迁移的方法、虚拟机迁移管理装置及系统
US10552089B2 (en) Data processing for managing local and distributed storage systems by scheduling information corresponding to data write requests
US9529618B2 (en) Migrating processes between source host and destination host using a shared virtual file system
WO2021098267A1 (zh) 一种磁盘处理的方法、系统、设备及可读存储介质
WO2015114745A1 (ja) 計算機及び計算機のi/o制御方法
US20170054720A1 (en) Managing Data Storage in Distributed Virtual Environment
US20150006818A1 (en) Data access method and computer-readable storage medium storing computer program
JP2022541261A (ja) リソース割振り方法、記憶デバイス、および記憶システム
CN112328365A (zh) 一种虚拟机迁移方法、装置、设备及存储介质
US11157456B2 (en) Replication of data in a distributed file system using an arbiter
WO2019071431A1 (zh) 处理i/o请求的方法、设备及主机
KR101601877B1 (ko) 분산 파일시스템에서 클라이언트가 데이터 저장에 참여하는 장치 및 방법
CN107577733B (zh) 一种数据复制的加速方法及系统
US20200201691A1 (en) Enhanced message control banks
US11347532B2 (en) Hot-swapping storage pool backend functional modules
CN106293994A (zh) 网络文件系统中的虚拟机克隆方法和网络文件系统
JPWO2018173300A1 (ja) I/o制御方法およびi/o制御システム

Legal Events

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

Ref document number: 10860696

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2012548578

Country of ref document: JP

Kind code of ref document: A

REEP Request for entry into the european phase

Ref document number: 2010860696

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2010860696

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE