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

計算機システム Download PDF

Info

Publication number
JP6600698B2
JP6600698B2 JP2017561025A JP2017561025A JP6600698B2 JP 6600698 B2 JP6600698 B2 JP 6600698B2 JP 2017561025 A JP2017561025 A JP 2017561025A JP 2017561025 A JP2017561025 A JP 2017561025A JP 6600698 B2 JP6600698 B2 JP 6600698B2
Authority
JP
Japan
Prior art keywords
data
computer
computer node
node
storage
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
JP2017561025A
Other languages
English (en)
Other versions
JPWO2018029820A1 (ja
Inventor
弘明 圷
山本  彰
貴大 山本
良徳 大平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPWO2018029820A1 publication Critical patent/JPWO2018029820A1/ja
Application granted granted Critical
Publication of JP6600698B2 publication Critical patent/JP6600698B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

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

Landscapes

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

Description

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

Claims (16)

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

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JPWO2018029820A1 JPWO2018029820A1 (ja) 2018-08-09
JP6600698B2 true JP6600698B2 (ja) 2019-10-30

Family

ID=61161796

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017561025A Active JP6600698B2 (ja) 2016-08-10 2016-08-10 計算機システム

Country Status (3)

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

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190083150A (ko) * 2018-01-03 2019-07-11 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
JP7056460B2 (ja) * 2018-08-10 2022-04-19 横河電機株式会社 制御システム及び制御装置
JP6957431B2 (ja) * 2018-09-27 2021-11-02 株式会社日立製作所 Hci環境でのvm/コンテナおよびボリューム配置決定方法及びストレージシステム
JP6853227B2 (ja) 2018-10-10 2021-03-31 株式会社日立製作所 ストレージシステム及びストレージ制御方法
JP7259288B2 (ja) * 2018-11-28 2023-04-18 日本電気株式会社 ジョブスケジューリング装置、管理システム、及びスケジューリング方法
JP2020154990A (ja) 2019-03-22 2020-09-24 株式会社日立製作所 計算機システム及びデータ管理方法
JP6960491B2 (ja) * 2020-03-04 2021-11-05 株式会社日立製作所 管理システム及び基盤システムの管理方法
JP7468012B2 (ja) * 2020-03-13 2024-04-16 富士通株式会社 管理装置、情報処理システム及び管理プログラム
JP7154261B2 (ja) * 2020-09-25 2022-10-17 株式会社日立製作所 複合型ストレージシステム
JP7229214B2 (ja) 2020-10-07 2023-02-27 株式会社日立製作所 計算機システム及び負荷分散方法
JP7337869B2 (ja) * 2021-03-26 2023-09-04 株式会社日立製作所 分散ストレージシステム、及び管理方法
JP2022163604A (ja) 2021-04-14 2022-10-26 株式会社日立製作所 分散ストレージシステム及び記憶制御方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007328734A (ja) * 2006-06-09 2007-12-20 Hitachi Ltd ストレージ装置及びストレージ装置の制御方法
US8832687B2 (en) * 2011-04-20 2014-09-09 Red Hat Israel, Ltd. Managing quotas in a distributed virtualization environment
US8601473B1 (en) 2011-08-10 2013-12-03 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
EP2791774A1 (en) 2012-02-08 2014-10-22 Hitachi, Ltd. Storage apparatus with a plurality of nonvolatile semiconductor storage units and control method thereof to place hot data in storage units with higher residual life and cold data in storage units with lower residual life
JP6083268B2 (ja) * 2013-03-14 2017-02-22 日本電気株式会社 レプリケーションシステム
DE112013006476T5 (de) * 2013-06-14 2015-11-12 Hitachi, Ltd. Speicher-Management-Rechner und Speicher-Management-Verfahren
US9575856B2 (en) * 2014-08-29 2017-02-21 Vmware, Inc. Preventing migration of a virtual machine from affecting disaster recovery of replica

Also Published As

Publication number Publication date
WO2018029820A1 (ja) 2018-02-15
JPWO2018029820A1 (ja) 2018-08-09
US10359967B2 (en) 2019-07-23
US20180285016A1 (en) 2018-10-04

Similar Documents

Publication Publication Date Title
JP6600698B2 (ja) 計算機システム
US20210271551A1 (en) Distributed storage system
US10152381B1 (en) Using storage defragmentation function to facilitate system checkpoint
US7975115B2 (en) Method and apparatus for separating snapshot preserved and write data
US10459638B2 (en) Computer system that generates group information and redundant code based on user data and changes the group information and redundant code based on transmission data, control method for computer system, and recording medium
US10346075B2 (en) Distributed storage system and control method for distributed storage system
US20200117372A1 (en) Available storage space in a system with varying data redundancy schemes
JP6677740B2 (ja) ストレージシステム
US20180267713A1 (en) Method and apparatus for defining storage infrastructure
CN110300960B (zh) 信息系统、管理程序和信息系统的程序更换方法
US10936243B2 (en) Storage system and data transfer control method
US11740823B2 (en) Storage system and storage control method
US10067882B2 (en) Storage system and storage control method
US10698627B2 (en) Storage system and storage control method
US11907746B2 (en) Compound storage system
JP6817340B2 (ja) 計算機
WO2016194162A1 (ja) 計算機システム
US11079956B2 (en) Storage system and storage control method
JP5597266B2 (ja) ストレージシステム
US20180307427A1 (en) Storage control apparatus and storage control method
WO2018055686A1 (ja) 情報処理システム
JP7113698B2 (ja) 情報システム
US11550488B2 (en) Computer system and load distribution method
US20220253250A1 (en) Storage system including storage nodes to determine cache allocations to implement cache control
US20190205044A1 (en) Device for restoring lost data due to failure of storage drive

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181030

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20181224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190716

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190828

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190910

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191007

R150 Certificate of patent or registration of utility model

Ref document number: 6600698

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150