JP6650483B2 - 記憶装置、データ管理方法、及びデータ管理プログラム - Google Patents

記憶装置、データ管理方法、及びデータ管理プログラム Download PDF

Info

Publication number
JP6650483B2
JP6650483B2 JP2018085205A JP2018085205A JP6650483B2 JP 6650483 B2 JP6650483 B2 JP 6650483B2 JP 2018085205 A JP2018085205 A JP 2018085205A JP 2018085205 A JP2018085205 A JP 2018085205A JP 6650483 B2 JP6650483 B2 JP 6650483B2
Authority
JP
Japan
Prior art keywords
log
data
request
chunk
log data
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
JP2018085205A
Other languages
English (en)
Other versions
JP2019192004A (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
Priority to JP2018085205A priority Critical patent/JP6650483B2/ja
Priority to US16/291,945 priority patent/US10776044B2/en
Publication of JP2019192004A publication Critical patent/JP2019192004A/ja
Application granted granted Critical
Publication of JP6650483B2 publication Critical patent/JP6650483B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/0614Improving the reliability of storage 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/0656Data buffering arrangements
    • 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/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/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

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)
  • Retry When Errors Occur (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、I/O要求を受け付けて、I/O要求の対象の対象データを管理する記憶装置等に関する。
従来、データを管理するストレージ機能を有する記憶装置が知られている。このような記憶装置は、専用のハードウェアで構成されており、停電発生時には、内蔵バッテリによりSM(Share Memory)やCM(Cash Memory)の内容をSSD(Solid State Drive)に退避することで、メモリのデータ(メモリデータ)を保護していた。
近年、ソフトウェアによりストレージ機能を実現して汎用サーバを記憶装置として用いることが行われるようになっている。この記憶装置においては、ハードウェアは汎用サーバであるので、内蔵バッテリによりメモリデータを保護する機能を備えていない。このため、停電発生時においてメモリデータが保護できないという問題がある。
例えば、障害発生時におけるデータを保護する技術としては、データの書き込み時に、SSD等の高速な記憶レイヤにログを格納するようにし、その後、速度の遅いバックエンドの記憶デバイスに格納するようにする技術が知られている(例えば、特許文献1参照)。
米国特許第9,336,132号明細書
例えば、専用ハードウェアで構成された記憶装置において、内蔵バッテリによるバッテリバックアップが適切に行われなかった場合には、メモリデータを保護することができない。
また、汎用サーバで構成した記憶装置においては、UPS等の外部バッテリ等を用意することで停電に対処することができるが、UPS等を備えなければならずコストがかかるという問題がある。
本発明は、上記事情に鑑みなされたものであり、その目的は、メモリ部における必要なデータを容易かつ適切に保護することのできる技術を提供することにある。
上記目的を達成するため、一観点に係る記憶装置は、I/O要求を受け付けて、I/O要求の対象の対象データを管理する記憶装置であって、メモリ部と、プロセッサ部と、不揮発性記憶デバイスとを備え、メモリ部は、対象データを一時的に格納するキャッシュ領域と、キャッシュ領域における対象データを管理するための管理情報を格納する管理領域と、キャッシュ領域に対する変更内容のログデータ及び管理領域に対する変更内容を示すログデータを格納するためのログバッファと、を有し、不揮発性デバイスは、ログデータを記憶するためのログチャンクを有し、プロセッサ部は、I/O要求を受け付けた場合に、I/O要求に対応する対象データをキャッシュ領域に格納し、I/O要求に対応する対象データをキャッシュ領域に格納した場合における、キャッシュ領域に対する変更内容のログデータと、管理領域に対する変更内容のログデータとを生成してログバッファに格納し、ログバッファに格納された複数のログデータをまとめてログチャンクに書き込み、I/O要求に対応する全てのログデータがログチャンクに書き込まれた後に、I/O要求の要求元にI/O要求を正常に処理したことを示す正常応答を送信する。
本発明によれば、メモリ部における必要なデータを容易かつ適切に保護することができる。
図1は、一実施形態の概要を説明する図である。 図2は、一実施形態に係る計算機システムの全体構成図である。 図3は、一実施形態に係る計算機システムの一部を詳細に示す構成図である。 図4は、一実施形態に係るログデータの構成図である。 図5は、一実施形態に係るログバッファ管理情報の構成図である。 図6は、一実施形態に係るログチャンク管理情報の構成図である。 図7は、一実施形態に係るログバッファと、ログチャンクとの構成を説明する図である。 図8は、一実施形態に係るI/O処理のシーケンス図である。 図9は、一実施形態に係るI/O応答処理のシーケンス図である。 図10は、一実施形態に係るI/O処理時における確定要求の送信を説明する図である。 図11は、一実施形態に係るSM/CMチャンク更新処理のフローチャートである。 図12は、一実施形態に係る回復処理のフローチャートである。
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
また、以下の説明では、「メモリ部」は、1以上のメモリを含む。メモリは、主に、プロセッサ部による処理の際に使用される。
また、以下の説明では、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサである。1以上のプロセッサの各々は、シングルコアでもよいしマルチコアでもよい。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
また、以下の説明では、「プログラム」を動作主体として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜にメモリ部及びインターフェース部のうちの少なくとも1つを用いながら行うため、処理の主語が、プロセッサ部(或いは、プロセッサ部を有するサーバ(計算機)又は計算機システム)とされてもよい。プログラムは、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な記録媒体であってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号(又は参照符号における共通部分)を使用し、同種の要素を区別して説明する場合は、要素のID(又は要素の参照符号)を使用することがある。
まず、一実施形態の概要について説明する。
図1は、一実施形態の概要を説明する図である。
計算機システム1において、ホスト10からサーバ20A(サーバ1)に対して、I/O(Input/Output)要求が発行されると、サーバ20Aは、I/O要求に応じて、SM(共有メモリ)51と、CM(キャッシュメモリ)52とを更新する(図1(1))。ここで、I/O要求は、ライト要求又はリード要求である。例えば、I/O要求がライト要求である場合には、CM52には、ライト要求に含まれるライト対象のデータ(対象データ:ライトデータ)が格納され、SM51には、ライトデータの記憶デバイス23における格納先の情報からCM52における格納先を特定可能なポインタが格納される。また、I/O要求がリード要求である場合には、CM52には、リード要求により特定される記憶デバイス23に格納されたリード対象のデータ(対象データ:リードデータ)が格納され、SM51には、リードデータの記憶デバイス23における格納先の情報からCM52における格納先を特定可能なポインタが格納される。
次いで、サーバ20Aは、SM51及びCM52のそれぞれにおける更新内容を示すログデータを作成し、ログバッファ54に格納する(図1(2))とともに、それらのログデータのうち、サーバ20B(サーバ2)に格納しておく対象(二重化して管理する対象)のログデータを送信バッファ55に格納する(図1(3))。
サーバ20Aは、所定のタイミングにおいて、送信バッファ55に格納されたログデータが複数ある場合には、複数のログデータをまとめて、サーバ20Bに送信する(図1(4))。サーバ20Bにおいては、サーバ20Aから送信されたログデータをログバッファ54に格納する。次いで、サーバ20Bは、ログバッファ54のログデータの示す内容をSM51とCM52とに反映させる(図1(5))。
一方、サーバ20Aは、ログバッファ54に格納されているログデータ(複数ある場合には、複数のログデータ)を不揮発性メモリデバイス(例えば、SSD(Solid State Drive)である記憶デバイス23のログチャンク72に格納する(図1(6))。同様に、サーバ20Bは、ログバッファ54に格納されているログデータ(複数ある場合には、複数のログデータ)を不揮発性メモリデバイスである記憶デバイス23のログチャンク72に格納する(図1(7))。これにより、SM51及びCM52の更新内容を示すログデータは、記憶デバイス23に格納されることとなり、停電が発生した場合であっても、記憶デバイス23に記憶された状態で維持されることとなる。
この後、サーバ20Aは、I/O要求の要求元のホスト10に対して、I/O要求が正常に終了したことを示す応答(Good応答)を送信する(図1(8))。
この後、サーバ20Aでは、I/O要求とは非同期(無関係)のタイミングで、ログチャンク72に格納されたログデータを作業用メモリ53に読み出し(図1(9))、作業用メモリ53のログデータに対応する変更を、SM/CMチャンク71のSM51及びCM52のイメージ(メモリイメージ)に反映させる(図1(10))。これにより、SM/CMチャンク71には、ログデータが生成された時点におけるSM51及びCM52のメモリイメージが生成されることとなる。一方、サーバ20Bにおいても同様にして、ログチャンク72に格納されたログデータを作業用メモリ53に読み出し(図1(11))、作業用メモリ53のログデータに対応する変更を、SM/CMチャンク71のSM51及びCM52のイメージ(メモリイメージ)に反映させる(図1(12))。これにより、サーバ20BのSM/CMチャンク71にも、ログデータが生成された時点におけるSM51及びCM52のメモリイメージ(ただし、二重化する対象の内容のみ)が生成されることとなる。
次に、一実施形態に係る計算機システムについて詳細に説明する。
図2は、一実施形態に係る計算機システムの全体構成図である。
計算機システム1は、一以上のホスト10と、一以上の記憶装置の一例としてのサーバ20(20A,20B)とを備える。ホスト10と、サーバ20とは、ネットワーク40を介して接続されている。ネットワーク40は、有線LAN(Local Area Network)や無線LANなどである。
ホスト10は、例えば、PC(Personal Computer)で構成され、各種処理を実行する。ホスト10は、処理の実行時に、I/O要求を発行して、処理で生成されたデータをサーバ20に書き込んだり、サーバ20に格納されているデータを読み出したりする。
サーバ20は、例えば、汎用的なサーバ装置により構成され、プロセッサ部21と、メモリ部22と、記憶デバイス23と、通信インターフェース(通信I/F)24とを備える。
通信インターフェース24は、例えば有線LANカードや無線LANカードなどのインターフェースであり、ネットワーク40を介して他の装置(例えば、他のサーバ20、ホスト10)との通信を仲介する。プロセッサ部21は、メモリ部22に格納されたプログラムを実行することにより各種処理を実行する。メモリ部22は、プロセッサ部21により実行されるプログラムや、処理に必要なデータ等を記憶する。メモリ部22は、例えば、RAM(Random Access Memory)等の揮発性メモリにより構成されている。このため、停電等により、サーバ20への電源の供給が遮断された場合には、データの記憶を維持することができない。記憶デバイス23は、例えば、SSD(Solid State Drive)、HDD(Hard Disk Drive)等の不揮発性メモリデバイスである。記憶デバイス23は、サーバ20への電源の供給が遮断した場合であってもデータの記憶を維持することができる。
次に、計算機システム1のサーバ20の一部を詳細に説明する。
図3は、一実施形態に係る計算機システムの一部を詳細に示す構成図である。なお、サーバ20Aと、サーバ20Bとの同様な構成については同一の符号を付している。
サーバ20Aのメモリ部22は、SM(共有メモリ)51と、CM(キャッシュメモリ)52と、作業用メモリ53と、ログバッファ54と、送信バッファ55とを備える。
SM51は、各種管理情報を記憶する。SM51の記憶領域が、管理領域に対応する。管理情報としては、例えば、CM52にキャッシュされているデータの記憶デバイス23におけるアドレス(格納位置情報)と、CM52でのキャッシュされているアドレスとの対応を示す格納位置管理情報や、I/O処理に関する統計情報(IOPS(Input Output Per Second)、平均応答時間等)や、サーバ20の記憶デバイス23に作成されているボリュームや、リモートコピーに関するペア状態等の構成情報(論理構成情報)や、サーバ20に実装されている構成(プロセッサ、ドライブ)に関する構成情報(物理構成情報)等がある。
CM52は、I/O要求の対象となったデータ(対象データ)をキャッシュする。CM52の記憶領域が、キャッシュ領域に対応する。CM52は、ホスト10からのライト要求に対応付けられているデータ(ライトデータ)をキャッシュする。また、CM52は、ホスト10からのリード要求に対応し、記憶デバイス23から読み出されたデータ(リードデータ)を格納する。
作業用メモリ53は、プロセッサ部21による処理における作業領域として利用される。ログバッファ54は、停電時においても維持する必要のある、SM51やCM52の更新内容を示すログデータ50(図4参照)を格納する。本実施形態では、ログバッファ54には、SM51やCM52に対する各更新内容に対するそれぞれのログデータが格納される。
送信バッファ55には、SM51やCM52の更新内容のうちで、二重化して管理する必要がある情報に対する更新内容を示すログデータが格納される。本実施形態では、送信バッファ55には、CM52の各更新内容に対するそれぞれのログデータが格納され、SM51における一部の情報についての更新内容に対するログデータが格納される。送信バッファ55のログデータは、ペアとなるサーバ20(20B)に送信される対象となる。
また、メモリ部22は、ログバッファ管理情報56と、ログチャンク管理情報57と、ストレージOS(Operrating System)58と、SM/CM保護プログラム61と、を記憶する。
ログバッファ管理情報56は、ログバッファ54におけるログデータを管理する情報である。ログチャンク管理情報57は、ログチャンク72におけるログデータを管理する情報である。
ストレージOS58は、サーバ20を、データを管理する記憶装置として動作させるためのOSである。ストレージOS58は、I/O制御プログラム59と、ログ作成プログラム60とを含む。
I/O制御プログラム59は、プロセッサ部21に実行されることにより、ホスト10からのI/O要求を受け付けて、I/O要求に対応するデータのI/Oを制御する。具体的には、I/O制御プログラム59は、プロセッサ部21に実行されることにより、ホスト10からリード要求を受け付けた場合には、リード要求に対応するデータ(リードデータ)がCM52にあれば、CM52から読み出して、ホスト10に送信し、リードデータがなければ、記憶デバイス23からリードデータを読み出して、CM52に格納するとともに、ホスト10に送信する。また、I/O制御プログラム59は、プロセッサ部21に実行されることにより、ホスト10からライト要求を受け付けた場合には、ライト要求に対応するデータ(ライトデータ)を受信してCM52に格納し、その後、ライトデータを記憶デバイス23に格納する。
ログ作成プログラム60は、プロセッサ部21に実行されることにより、SM51とCM52とにおける更新内容に基づくログデータを作成し、作成したログデータをログバッファ54、送信バッファ55に格納する処理を実行する。
SM/CM保護プログラム61は、SM51と、CM52とのメモリデータを復元可能に保持する処理をプロセッサ部21に実行させるためのプログラムである。SM/CM保護プログラム61は、ログ退避回復プログラム62と、ログ転送プログラム63とを含む。
ログ退避回復プログラム62は、プロセッサ部21に実行されることにより、ログバッファ54に格納されたログデータをログチャンク72に格納する処理、ログチャンク72のログデータに基づいて、SM/CMチャンク71にSM51及びCM52のメモリイメージを作成する処理を実行する。ログ転送プログラム63は、プロセッサ部21に実行されることにより、ペアとなるサーバ20との間でのデータ転送処理を実行する。例えば、ログ転送プログラム63は、プロセッサ部21に実行されることにより、送信バッファ55に格納されているログデータを、ペアとなるサーバ20のログバッファ54に送信する処理を実行する。
記憶デバイス23は、ログチャンク72と、SM/CMチャンク71とを格納する。ログチャンク72は、ログデータを格納する。ログチャンク72には、SM/CMチャンク71のメモリイメージに反映されていない更新内容のログデータが格納される。SM/CMチャンク71は、或る時点における、SM51と、CM52とのそれぞれのメモリイメージ、すなわち、SM51に格納される全データと、CM52に格納される全データとを格納する。
次に、ログデータについて詳細に説明する。
図4は、一実施形態に係るログデータの構成図である。
ログデータ50は、SM51又はCM52の更新毎に対応するデータであり、アドレス50aと、サイズ50bと、ログステータス50cと、データ50dとのフィールドを含む。アドレス50aには、更新されたメモリ(SM51又はCM52)のアドレスが格納される。サイズ50bには、更新されたデータのサイズが格納される。ログステータス50cには、ログデータの状態を表す変数(ログステータス)が格納される。変数としては、ログデータがログバッファ54に存在し、作成済みであることを示すfreeと、ログデータがログバッファ54に存在し、後述する確定要求が発行済みであることを示すcommitと、ログデータがログバッファ54に存在し、ログチャンク72に対して書き込み中であることをしめすdestagingと、ログデータがログチャンク72に書き込まれたことを示すcleanと、ログデータがSM/CMチャンク71に反映中であることを示すupdatingとがある。データ50dには、更新内容のデータの本体が格納される。
次に、ログバッファ管理情報、ログチャンク管理情報について詳細に説明する。
図5は、一実施形態に係るログバッファ管理情報の構成図である。図6は、一実施形態に係るログチャンク管理情報の構成図である。図7は、一実施形態に係るログバッファと、ログチャンクとの構成を説明する図である。
ログバッファ管理情報56は、図5に示すように、先頭ポインタ56aと、終端ポインタ56bとを含む。ここで、本実施形態では、ログバッファ54は、図7に示すように、領域の物理的な後端が先頭に繋がって使用されるリングバッファ構造として構成されている。先頭ポインタ56aは、図7に示すように、ログバッファ54のデータが格納可能なfree領域の先頭を示すポインタである。終端ポインタ56bは、ログバッファ54のfree領域の後端を示すポインタである。
ログバッファ管理情報56によると、ログバッファ54における先頭ポインタ56aから後端ポインタ56bまで領域がfree領域であることがわかる。また、終端ポインタ56bと、先頭ポインタ56aとの間の領域には、すでに書き込まれたログデータが格納されていることがわかる。終端ポインタ56bと、先頭ポインタ56aとの間のログデータについては、終端ポインタ56bに近いログデータのほうがより古いログデータであることを示しており、ログデータのステータスとしては、例えば、終端ポインタ56bに近いほうからdestaging、commit、dirtyとなる。
ログチャンク管理情報57は、図6に示すように、先頭オフセット57aと、終端オフセット57bとを含む。ここで、本実施形態では、ログチャンク72は、管理領域72aと、ログデータ格納領域72bとを含む。管理領域72aは、固定のデータサイズであり、ログチャンク管理情報57(先頭オフセット57a及び終端オフセット57b)と同様な情報(以下、便宜的にログチャンク管理情報57ということもある)を格納する。ログデータ格納領域72bは、この領域の物理的な後端が先頭に繋がって使用されるリングバッファ構造として構成されている。先頭オフセット57aは、図7に示すように、ログデータ格納領域72bのデータが格納可能なfree領域の先頭についてのログチャンク72の物理的な先頭からのオフセット(byte)である。後端オフセット57bは、図7に示すように、ログデータ格納領域72bのデータが格納可能なfree領域の後端についてのログチャンク72の物理的な先頭からのオフセット(byte)である。
ログチャンク管理情報57によると、ログチャンク72のログデータ格納領域72bにおける先頭オフセット57aの位置から後端オフセット57bの位置までの領域がfree領域であることがわかる。また、終端オフセット57bの位置から先頭オフセット57aの位置までのログデータについては、終端オフセット57bの位置に近いログデータのほうがより古いログデータであることを示しており、ログデータのステータスとしては、例えば、終端オフセット57bの位置に近いほうから、updating、cleanとなる。ログチャンク72の先頭オフセット57a以降のfreeの領域に、ログバッファ54の後端ポインタ56bが示す領域以降に格納されたログデータが格納されることとなる。
次に、一実施形態に係る計算機システム1におけるI/O処理について説明する。
図8は、一実施形態に係るI/O処理のシーケンス図である。
ホスト10がI/O要求を発行すると(S11)、サーバ20A(サーバ1)のI/O制御プログラム59(厳密には、I/O制御プログラム59を実行するプロセッサ部21)がI/O要求に応じてSM51の更新を行う(S12)。例えば、I/O要求が、ライト要求である場合には、ライト要求に付随するライトデータについてのCM52における格納位置を管理する情報(格納位置管理情報)等を更新する。次いで、I/O制御プログラム59は、ログ作成プログラム60にSM51における更新内容に対応するログを作成する要求(ログ作成要求)を送信する(S13)。
ログ作成プログラム60は、ログ作成要求を受け取ると、SM51での更新内容に対応するログデータを作成し(S14)、作成したログデータをログバッファ54に追加する処理を行う(S15)。ここで、ログ作成プログラム60は、ログバッファ54に追加するログデータのログステータスを、dirtyに設定する。また、ログ作成プログラム60は、ログバッファ管理情報56の先頭ポインタ56aを追加したログデータに応じて更新する。次いで、ログ作成プログラム60は、作成したログデータの中の二重化をすべき内容(例えば、格納位置管理情報)に対応するログデータについては、送信バッファ55に格納する(S16)。
次いで、ログ作成プログラム60は、ログバッファ54に格納されたログデータの退避と、送信バッファ55に格納されたログデータの転送とを確認する処理を実行する(S17)。具体的には、ログ作成プログラム60は、ログバッファ54に格納されたログデータのデータ量が所定の閾値以上あるか否を判定し、所定の閾値以上ある場合には、ログバッファ54に格納されたログデータをログチャンク72へ退避すると決定し、所定の閾値以上でない場合には、退避しないと決定する。また、ログ作成プログラム60は、送信バッファ55に格納されたログデータのデータ量が所定の閾値以上あるか否を判定し、所定の閾値以上ある場合には、送信バッファ55に格納されたログデータをサーバ20B(サーバ2)に転送すると決定し、所定の閾値以上でない場合には、転送しないと決定する。ここで。所定の閾値としては、例えば、ログバッファ54の容量や、ホスト10からのI/O要求の状況に応じて決定してもよく、要は、ログバッファ54の空き容量が枯渇しないような閾値とすればよい。また、退避を決定するための閾値と、転送を決定するための閾値とを異なる値としてもよい。
この結果、送信バッファ55に格納されたログデータをサーバ20Bに転送すると決定した場合(転送決定時)には、ログ作成プログラム60はログ転送プログラム63に他系(サーバ20B)への転送要求を送信する(S18)。ログ転送プログラム63は、他系への転送要求を受信すると、転送バッファ55に格納されているログデータをまとめて、サーバ20Bに転送する(S19)。なお、ログ転送プログラム63は、転送バッファ55に、同一のアドレス及び同一サイズ(同一アドレス範囲)に対する更新内容のログデータが複数ある場合には、最新のログデータを残し、それ以外を削除した後、ログデータを転送するようにしてもよい。この結果、サーバ20Bにおいては、ログ転送プログラム63が、サーバ20Aのログ転送プログラム63から送信されたログデータをログ作成プログラム60に渡す(S20)。一方、サーバ20Aのログ転送プログラム63は、ログデータの転送が終了した場合には、ログデータの転送が終了したことをログ作成プログラム60に通知する(S21)。なお、サーバ20Bにおいては、ログ作成プログラム60がログデータをログバッファ54に格納し(S32)、ログ作成プログラム60が、ログバッファ54のログデータの内容を、SM51及びCM52に反映させる(S33)。
また、ログバッファ54に格納されたログデータをログチャンク72へ退避すると決定した場合(退避決定時)には、ログ作成プログラム60はログ退避回復プログラム62に退避要求を送信する(S22)。退避要求を受け取ったログ退避回復プログラム62は、ログバッファ54に格納されたログデータをログチャンク72に退避する(S23)。なお、ログ退避回復プログラム62は、ログバッファ54に、同一のアドレス及び同一サイズ(同一アドレス範囲)に対する更新内容のログデータが複数ある場合には、最新のログデータを残し、それ以外を削除した後、ログデータを退避するようにしてもよい。ログ退避回復プログラム62は、退避させたログデータに応じて、ログバッファ管理情報56の終端ポインタ56bを更新し、ログチャンク管理情報57の先頭オフセット57aを更新し、ログチャンク72の管理領域72aに先頭オフセット57aを格納する。この際、ログ退避回復プログラム62は、ログバッファ54に複数のログデータがある場合には、それらをまとめてログチャンク72に退避する。ここで、ログチャンク72を備える記憶デバイス23へのデータ転送では、最小アクセス単位(例えば、512byte)が規定されているので、例えば、最小アクセス単位よりも小さいデータを転送する場合であっても最小アクセス単位でのデータ転送が必要となり、転送効率が悪くなる。これに対して、本実施形態では、複数のログデータをまとめて転送することにより、各ログデータを個別に送信する場合に比して転送効率を向上することができる。次いで、ログ退避回復プログラム62は、ログデータの退避が終了した場合には、ログデータの退避が終了したことをログ作成プログラム60に通知する(S24)。
ログ作成プログラム60は、ログデータの転送が終了したことの通知を受けた場合、ログデータの退避が終了したことの通知を受けた場合、又は、ログデータの転送をしない又は退避をしないと決定した場合には、SM51のログ作成処理が終了したことをI/O制御プログラム59に通知する。
次いで、サーバ20AのI/O制御プログラム59は、I/O要求に応じてCM52の更新を行う(S26)。例えば、I/O要求が、ライト要求である場合には、ライト要求に付随するライトデータをCM52に格納し、I/O要求が、リード要求である場合には、リード要求に対応するライトデータがCM52に格納されていなければ、記憶デバイス23から読み出して、CM52に格納する。
次いで、I/O制御プログラム59は、ログ作成プログラム60にCM52における更新内容に対応するログを作成する要求(ログ作成要求)を送信する(S27)。
ログ作成プログラム60は、ログ作成要求を受け取ると、CM52での更新内容に対応するログデータを作成し(S28)、作成したログデータをログバッファ54に追加する処理を行う(S29)。次いで、ログ作成プログラム60は、作成したログデータを送信バッファ55に格納する(S30)。
次いで、ログ作成プログラム60は、ログバッファ54に格納されたログデータの退避と、送信バッファ55に格納されたログデータの転送とを確認する処理を実行する(S31)。この処理は、ステップS17の処理と同様である。また、ステップS31の実行後には、S18〜S25と同様な処理を実行する。
次に、I/O応答処理について説明する。
図9は、一実施形態に係るI/O応答処理のシーケンス図である。I/O応答処理は、例えば、図8に示すI/O処理の後、又は、所定の時間ごとに実行される。
まず、I/O制御プログラム59は、I/O要求に従ったSM51とCM52の更新内容を確定させる要求(確定要求)の処理が実行中であるか否かを確認する(S42)。ここで、確定要求の処理とは、例えば、ログバッファ54に格納されているログデータをログチャンク72に退避させ、正常応答をI/O要求の要求元に送信する処理である。この結果、確定要求の処理が実行中である場合には、確定要求を行うことができないので、I/O制御プログラム59は、I/O応答処理を終了する。
一方、確定要求の処理が実行中ではない場合(未実行時)、すなわち、最初のI/O要求である場合、又は過去のI/O要求に対応する確定要求が完了している場合には、I/O制御プログラム59は、完了していない(応答を返していない)I/O要求に関するSM/CM確定要求をログ退避回復プログラム62に送信する(S43)。
ログ退避回復プログラム62は、SM/CM確定要求を受信すると、ログ転送プログラム63に他系(サーバ20B)に対するSM/CM確定を実行させる要求を送信する。ログ転送プログラム63は、送信バッファ55に未送信のログデータがある場合には、未送信のログデータをサーバ20Bに送信する(S45)。
次いで、ログ転送プログラム63は、SM/CM確定要求をサーバ20Bのログ転送プログラム63に送信し(S46)、他系SM/CM確定要求に対する応答をログ退避回復プログラム62に送信する(S47)。
ログ退避回復プログラム62は、他系SM/CM確定要求に対する応答を受信すると、ログバッファ54に格納されているログデータについてのログチャンク72への反映(退避)を開始し(S48)、ログチャンク72への反映を完了させる(S49)。この結果、その時点におけるSM51及びCM62の更新内容を示すログデータがログチャンク72に存在することとなり、停電が発生したとしても、必要なログデータを消失させることなく記憶させておくことができる。
一方、サーバ20Bでは、ログ転送プログラム63がSM/CM確定要求を受け取ると、ログ退避回復プログラム62に対して、ログバッファ54に格納されたログデータのログチャンク72への退避を指示する(S50)。ログ退避回復プログラム62は、退避指示を受け取ると、ログバッファ54に格納されているログデータについてのログチャンク72への反映を行い(S51)、反映を行った後に完了通知をログ転送プログラム63に送信する(S52)。ログ転送プログラム63は、完了通知を受け取ると、サーバ20Aのログ転送プログラム63に完了通知を送信する(S53)。サーバ20Aのログ転送プログラム63は、完了通知を受け取ると、他系SM/CM確定要求の応答をログ退避回復プログラム62に送信する(S54)。
ログ退避回復プログラム62は、ステップS49の処理を終了し、ステップS54で他系SM/CM確定要求の応答を受け取った場合には、I/O制御プログラム59に対して、SM/CM確定要求に対応する確定完了応答を送信する(S55)。
次いで、I/O制御プログラム59は、SM/CM確定要求に対応する確定完了応答を受け取ると、SM/CM確定要求に対応するI/O要求に対する正常応答(Good応答)をホスト10に送信する(S56)。これにより、ホスト10では、I/O要求に対応する処理が完了したことを把握することができる。
次に、I/O処理時における確定要求の送信について説明する。
図10は、一実施形態に係るI/O処理時における確定要求の送信を説明する図である。
I/O制御プログラム59は、ホスト10からI/O要求(1)を受信し(S61)、既に実行されている確定要求が完了していない場合には、SM/CM確定要求を発行(送信)しない。同様に、I/O制御プログラム59は、ホスト10からI/O要求(2)を受信し(S62)、既に実行されている確定要求が完了していない場合には、SM/CM確定要求を発行しない。
その後、ホスト10からI/O要求(3)を受信し(S63)、既に実行されている確定要求が完了している場合には、I/O制御プログラム59は、確定要求を行っていないI/O(1)(2)(3)に関するSM/CM確定要求をログ退避回復プログラム62に送信する(S64)。
次に、ホスト10からI/O要求(4)(5)を受信した場合(S65,S66)には、S64で送信したSM/CM確定要求が完了していないので、I/O制御プログラム59は、SM/CM確定要求を発行しない。
次いで、ログ退避回復プログラム62からI/O要求(1)(2)(3)に関するSM/CM確定要求に対する確定完了応答を受信すると(S67)、I/O制御プログラム59は、I/O要求(1)に対応するGood応答(1)と、I/O要求(2)に対応するGood応答(2)と、I/O要求(3)に対応するGood応答(3)とをホスト10に送信する(S68,S69,S70)。
次に、ホスト10からI/O要求(6)を受信すると(S71)、実行されている確定要求が完了しているので、確定要求を行っていないI/O(4)(5)(6)に関するSM/CM確定要求をログ退避回復プログラム62に送信する(S72)。
その後、ホスト10からI/O要求(7)(8)を受信した場合(S73,S74)には、S64で送信したSM/CM確定要求が完了していないので、I/O制御プログラム59は、SM/CM確定要求を発行しない。
次いで、ログ退避回復プログラム62からI/O要求(4)(5)(6)に関するSM/CM確定要求に対する確定完了応答を受信すると(S75)、I/O制御プログラム59は、I/O要求(4)に対応するGood応答(4)と、I/O要求(5)に対応するGood応答(5)と、I/O要求(6)に対応するGood応答(6)とをホスト10に送信する(S76,S77,S78)。
次に、SM/CMチャンク更新処理について説明する。
図11は、一実施形態に係るSM/CMチャンク更新処理のフローチャートである。
SM/CMチャンク更新処理は、例えば、ログ退避回復プログラム62によって実行される処理である。SM/CMチャンク更新処理は、I/O要求と非同期の任意のタイミングで行ってよく、例えば、ログチャンク72のデータ量が所定の閾値以上となった場合としてもよく、ホスト10からのI/O要求の頻度が低い場合としてもよい。
ログ退避回復プログラム62(厳密には、ログ退避回復プログラム62を実行するプロセッサ部21)は、ログチャンク72にエントリー(ログデータ)が存在するか否かを判定する(S81)。この結果、ログチャンク72にエントリが存在しないと判定した場合(S81:No)には、ログ退避回復プログラム62は、SM/CMチャンク更新処理を終了する。
一方、ログチャンク72にエントリが存在すると判定した場合(S81:Yes)には、ログ退避回復プログラム62は、ログチャンク72のエントリを作業用メモリ53に読み出し、SM51又はCM52の同一のアドレス及び同一サイズに対する更新内容のエントリが複数ある場合には、最新のエントリを残し、それ以外のエントリを削除する(S82)。これにより、更新に使用するエントリの数を低減することができ、処理効率を向上することができる。
次いで、ログ退避回復プログラム62は、残ったエントリのデータを、SM/CMチャンク71のメモリイメージの対応する領域に反映させる(S83)。この間の処理の進行状態に応じて、ログ退避回復プログラム62は、ログデータのログステータスを、clean、updating、freeの順に変更する。次いで、ログ退避回復プログラム62は、ログチャンク管理情報57(ログチャンク72の管理領域72aのログチャンク管理情報57も同様)の終端オフセット57bを先端オフセット57aと同じ値に設定し(S84)、処理を終了する。
上記したSM/CMチャンク更新処理によると、ログチャンク72に格納されているログデータによる更新内容を、SM/CMチャンク71のメモリイメージに適切に反映させることができる。
次に、回復処理について説明する。
図12は、一実施形態に係る回復処理のフローチャートである。
回復処理は、例えば、停電等が発生した後に、ログ退避回復プログラム62によって実行される。
ログ退避回復プログラム62は、ログチャンク72の管理領域72aからログチャンク管理情報57の先頭オフセット57aと、終端オフセット57bとを取得し、メモリ部22に格納する(S91)。次いで、ログ退避回復プログラム62は、ログチャンク72にエントリ(ログデータ)が存在するか否かを判定する(S92)。この結果、ログチャンク72にエントリが存在しないと判定した場合(S92:No)には、SM/CMチャンク71のメモリイメージが停電発生時に確定しているSM51及びCM52の状態であることを意味しているので、ログ退避回復プログラム62は、処理をステップS96に進める。
一方、ログチャンク72にエントリが存在すると判定した場合(S92:Yes)には、ログ退避回復プログラム62は、ログチャンク72のエントリを作業用メモリ53に読み出し、SM51又はCM52の同一のアドレス及び同一サイズ(同一アドレス範囲)に対する更新内容のエントリが複数ある場合には、最新のエントリを残し、それ以外のエントリを削除する(S93)。これにより、更新に使用するエントリの数を低減することができ、処理効率を向上することができる。
次いで、ログ退避回復プログラム62は、残ったエントリのデータを、SM/CMチャンク71のメモリイメージの対応する領域に反映させる(S94)。この間の処理の進行状態に応じて、ログ退避回復プログラム62は、ログデータのログステータスを、clean、updating、freeの順に変更する。次いで、ログ退避回復プログラム62は、ログチャンク管理情報57(ログチャンク72の管理領域72aのログチャンク管理情報57も同様)の終端オフセット57bを先端オフセット57aと同じ値に設定し(S95)、処理をステップS96に進める。
ステップS96では、ログ退避回復プログラム62は、I/O制御プログラム59の起動を開始し、回復処理を終了する。I/O制御プログラム59は、起動を開始すると、SM/CMチャンク71のSM51及びCM52のメモリイメージを、SM51と、CM52とに書き込む。これにより、SM51とCM52とは、停電発生時に確定しているメモリの状態となる。
以上説明したように、本実施形態に係る計算機システムによると、SM51と、CM52とのI/O要求に基づく更新内容のログデータをログチャンク72に格納した後に、I/O要求の要求元にGood応答を返すようにしたので、停電が発生してメモリ部22のSM51とCM52とのデータが消失した場合であっても、ログチャンク72に格納されたログデータに基づいて、停電発生時において確定している(Good応答を行っている)メモリの状態に適切に回復することができる。このため、SM51及びCM52の必要なデータが消失してしまうことを適切に防止できる。なお、ログチャンク72にログデータを格納した後、Good応答をホスト10に送信していない状態で停電状態となる可能性があり、この場合には、ホスト10側でGood応答を得られていないI/O要求が再度ホスト10から送信されることとなるが、このI/O要求が来た場合であっても、ログチャンク72のログデータの更新内容と同じ内容であるので、メモリのデータについては何ら支障がない。
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
例えば、上記実施形態では、記憶装置を、汎用的なサーバ装置を用いて構成するようにしていたが、本発明はこれに限られず、記憶装置を専用のハードウェアにより構成するようにしてもよい。また、上記実施形態では、記憶装置として、停電時における電力供給を行うバッテリを備えていない例を示していたが、本発明はこれに限られず、バッテリを備えてもよい。バッテリを備えている場合であっても、バッテリの故障等により、電力の供給が遮断されてしまう可能性があるが、上記した発明によると、このような状況においても適切にSM51及びCM52のメモリデータを復元することができる。
また、上記実施形態では、2つのサーバ20間でメモリデータの二重化するようにしていたが、本発明はこれに限られず、必ずしも二重化を行わなくてもよい。すなわち、2つのサーバ20間での二重化に必要な処理を行う機能部をサーバ20に備えないようにしてもよい。例えば、二重化をしない場合には、I/O制御プログラム59は、ログバッファ54からログチャンク72へのログデータの反映が完了した場合にGood応答をホスト10に送信するようにすればよい。
また、上記実施形態において、プロセッサ部21が行っていた処理の一部又は全部を、専用のハードウェア回路で行うようにしてもよい。また、上記実施形態におけるプログラムは、プログラムソースからインストールされてよい。プログラムソースは、プログラム配布サーバ又は記憶メディア(例えば可搬型の記憶メディア)であってもよい。
1…計算機システム、10…ホスト、20,20A,20B…サーバ、21…プロセッサ部、22…メモリ部、23…記憶デバイス、51…共有メモリ(SM)、52…キャッシュメモリ(CM)、54…ログバッファ、55…送信バッファ、71…SM/CMチャンク、72…ログチャンク



Claims (9)

  1. I/O要求を受け付けて、前記I/O要求の対象の対象データを管理する記憶装置であって、
    メモリ部と、プロセッサ部と、不揮発性記憶デバイスとを備え、
    前記メモリ部は、
    前記対象データを一時的に格納するキャッシュ領域と、
    前記キャッシュ領域における前記対象データを管理するための管理情報を格納する管理領域と、
    前記キャッシュ領域に対する変更内容のログデータ及び前記管理領域に対する変更内容を示すログデータを格納するためのログバッファと、を有し、
    前記不揮発性記憶デバイスは、
    前記ログデータを記憶するためのログチャンクを有し、
    前記プロセッサ部は、
    前記I/O要求を受け付けた場合に、前記I/O要求に対応する対象データを前記キャッシュ領域に格納し、
    前記I/O要求に対応する前記対象データを前記キャッシュ領域に格納した場合における、前記キャッシュ領域に対する変更内容のログデータと、前記管理領域に対する変更内容のログデータとを生成して前記ログバッファに格納し、
    前記ログバッファに格納された複数のログデータをまとめて前記ログチャンクに書き込み、
    前記I/O要求に対応する、前記ログバッファに格納されたログデータを前記ログチャンクへ書き込ませる要求を行った時点の全てのログデータが前記ログチャンクに書き込まれた後に、前記I/O要求の要求元にI/O要求を正常に処理したことを示す正常応答を送信し、
    前記プロセッサ部は、
    前記ログチャンクに書き込まれたログデータに基づいて、前記ログデータに対応する変更が行われた時点における前記キャッシュ領域及び管理領域のメモリイメージを前記不揮発性記憶デバイスのメモリチャンクに生成する
    記憶装置。
  2. 前記プロセッサ部は、
    前記ログバッファに格納されたログデータのデータ量が所定のデータ量以上となった場合に、前記ログバッファに格納されている複数のログデータを前記ログチャンクに送信する
    請求項1に記載の記憶装置。
  3. 前記プロセッサ部は、
    前記ログバッファの複数のログデータのうち、前記メモリ部の同一アドレス範囲に対する変更を示す複数のログデータについては、最新のログデータのみを用いて、前記ログチャンクに送信する
    請求項1又は請求項2に記載の記憶装置。
  4. 前記プロセッサ部は、
    前記ログバッファに過去に格納されたログデータを前記ログチャンクに書き込む処理が実行中ではない場合に、前記ログデータを前記ログチャンクに書き込む
    請求項1から請求項3のいずれか一項に記載の記憶装置。
  5. 前記プロセッサ部は、
    前記ログチャンクに書き込まれたログデータのうち、前記メモリの同一アドレス範囲に対する変更を示す複数のログデータについては、最新のログデータのみを用いて、前記キャッシュ領域及び管理領域のメモリイメージを生成する
    請求項に記載の記憶装置。
  6. 前記プロセッサ部は、
    前記メモリの状態を復帰させる必要がある場合に、前記ログチャンクに書き込まれたログデータに基づいて、前記不揮発性記憶デバイスのメモリチャンクに生成された前記メモリイメージを更新し、
    前記メモリイメージを、前記メモリ部に反映させる
    請求項又は請求項に記載の記憶装置。
  7. 前記プロセッサ部は、前記キャッシュ領域に対する変更内容のログデータと、前記管理領域に対する変更内容のログデータの少なくとも一部とを、前記記憶装置で管理するデータのコピーを管理する他の記憶装置に送信する
    請求項1から請求項のいずれか一項に記載の記憶装置。
  8. I/O要求を受け付けて、前記I/O要求の対象の対象データを管理する記憶装置によるデータ管理方法であって、
    前記記憶装置は、メモリ部と、プロセッサ部と、不揮発性記憶デバイスとを備え、
    前記メモリ部は、
    前記対象データを一時的に格納するキャッシュ領域と、
    前記キャッシュ領域における前記対象データを管理するための管理情報を格納する管理領域と、
    前記キャッシュ領域に対する変更内容のログデータ及び前記管理領域に対する変更内容を示すログデータを格納するためのログバッファと、を有し、
    前記不揮発性記憶デバイスは、
    前記ログデータを記憶するためのログチャンクを有し、
    前記記憶装置は、
    前記I/O要求を受け付けた場合に、前記I/O要求に対応する対象データを前記キャッシュ領域に格納し、
    前記I/O要求に対応する前記対象データを前記キャッシュ領域に格納した場合における、前記キャッシュ領域に対する変更内容のログデータと、前記管理領域に対する変更内容のログデータとを生成して前記ログバッファに格納し、
    前記ログバッファに格納された複数のログデータをまとめて前記ログチャンクに書き込み、
    前記I/O要求に対応する、前記ログバッファに格納されたログデータを前記ログチャンクへ書き込ませる要求を行った時点の全てのログデータが前記ログチャンクに書き込まれた後に、前記I/O要求の要求元にライト要求を正常に処理したことを示す正常応答を送信し、
    前記ログチャンクに書き込まれたログデータに基づいて、前記ログデータに対応する変更が行われた時点における前記キャッシュ領域及び管理領域のメモリイメージを前記不揮発性記憶デバイスのメモリチャンクに生成する
    データ管理方法。
  9. I/O要求を受け付けて、前記I/O要求の対象の対象データを格納して管理する記憶装置を構成するコンピュータに実行させるためのデータ管理プログラムであって、
    前記コンピュータは、メモリ部と、プロセッサ部と、不揮発性記憶デバイスとを備え、
    前記メモリ部は、
    前記対象データを一時的に格納するキャッシュ領域と、
    前記キャッシュ領域における前記対象データを管理するための管理情報を格納する管理領域と、
    前記キャッシュ領域に対する変更内容のログデータ及び前記管理領域に対する変更内容を示すログデータを格納するためのログバッファと、を有し、
    前記不揮発性記憶デバイスは、
    前記ログデータを記憶するためのログチャンクを有し、
    前記コンピュータを、
    前記I/O要求を受け付けた場合に、前記I/O要求に対応する対象データを前記キャッシュ領域に格納させ、
    前記I/O要求に対応する前記対象データを前記キャッシュ領域に格納した場合における、前記キャッシュ領域に対する変更内容のログデータと、前記管理領域に対する変更内容のログデータとを生成させて前記ログバッファに格納させ、
    前記ログバッファに格納された複数のログデータをまとめて前記ログチャンクに書き込ませ、
    前記I/O要求に対応する、前記ログバッファに格納されたログデータを前記ログチャンクへ書き込ませる要求を行った時点の全てのログデータが前記ログチャンクに書き込まれた後に、前記I/O要求の要求元にI/O要求を正常に処理したことを示す正常応答を送信させ、
    前記ログチャンクに書き込まれたログデータに基づいて、前記ログデータに対応する変更が行われた時点における前記キャッシュ領域及び管理領域のメモリイメージを前記不揮発性記憶デバイスのメモリチャンクに生成させる
    データ管理プログラム。
JP2018085205A 2018-04-26 2018-04-26 記憶装置、データ管理方法、及びデータ管理プログラム Active JP6650483B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018085205A JP6650483B2 (ja) 2018-04-26 2018-04-26 記憶装置、データ管理方法、及びデータ管理プログラム
US16/291,945 US10776044B2 (en) 2018-04-26 2019-03-04 Storage apparatus, data management method, and non-transitory computer readable medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018085205A JP6650483B2 (ja) 2018-04-26 2018-04-26 記憶装置、データ管理方法、及びデータ管理プログラム

Publications (2)

Publication Number Publication Date
JP2019192004A JP2019192004A (ja) 2019-10-31
JP6650483B2 true JP6650483B2 (ja) 2020-02-19

Family

ID=68292570

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018085205A Active JP6650483B2 (ja) 2018-04-26 2018-04-26 記憶装置、データ管理方法、及びデータ管理プログラム

Country Status (2)

Country Link
US (1) US10776044B2 (ja)
JP (1) JP6650483B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11467746B2 (en) 2020-04-07 2022-10-11 Vmware, Inc. Issuing efficient writes to erasure coded objects in a distributed storage system via adaptive logging
US11625370B2 (en) * 2020-04-07 2023-04-11 Vmware, Inc. Techniques for reducing data log recovery time and metadata write amplification
CN112163176A (zh) * 2020-11-02 2021-01-01 北京城市网邻信息技术有限公司 数据存储方法、装置、电子设备和计算机可读介质
US11474719B1 (en) 2021-05-13 2022-10-18 Vmware, Inc. Combining the metadata and data address spaces of a distributed storage object via a composite object configuration tree
EP4123456A1 (en) * 2021-07-22 2023-01-25 Samsung Electronics Co., Ltd. Storage device and operating method thereof
JP7554031B2 (ja) 2022-03-31 2024-09-19 日立ヴァンタラ株式会社 ストレージシステムおよびストレージ制御方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06124223A (ja) 1991-03-28 1994-05-06 Texas Instr Inc <Ti> ディスクファイルシステムのログ装置および方法
JP3559016B2 (ja) 2001-11-30 2004-08-25 株式会社東芝 ディスクアレイシステム、ディスクアレイシステムにおけるロジカルユニットの引き継ぎ方法及び連携制御コントローラ
JP5291166B2 (ja) 2011-10-04 2013-09-18 株式会社日立製作所 記憶装置システム及びデータ回復方法
US9336132B1 (en) 2012-02-06 2016-05-10 Nutanix, Inc. Method and system for implementing a distributed operations log
JP2015191414A (ja) 2014-03-28 2015-11-02 日本電気株式会社 制御装置、ディスクアレイ装置、及び制御方法、並びにコンピュータ・プログラム
US9697097B2 (en) 2014-06-02 2017-07-04 Hitachi, Ltd. Storage system and method for controlling storage system
US10216534B1 (en) * 2015-12-14 2019-02-26 Amazon Technologies, Inc. Moving storage volumes for improved performance

Also Published As

Publication number Publication date
US10776044B2 (en) 2020-09-15
US20190332312A1 (en) 2019-10-31
JP2019192004A (ja) 2019-10-31

Similar Documents

Publication Publication Date Title
JP6650483B2 (ja) 記憶装置、データ管理方法、及びデータ管理プログラム
JP4727437B2 (ja) データベースを有するストレージシステムの記憶制御方法
US8200897B2 (en) Storage system and data management method
EP2879040B1 (en) Data storage method, data storage apparatus, and storage device
JP4744171B2 (ja) 計算機システム及び記憶制御方法
US20150012699A1 (en) System and method of versioning cache for a clustering topology
US7426588B2 (en) Storage apparatus
JP4400653B2 (ja) 情報システム、および、情報システムの情報保存方法
US10877922B2 (en) Flushes based on intent log entry states
US11509716B2 (en) Method and apparatus for performing simple storage service seamless migration using index objects
JP6350090B2 (ja) ストレージ制御装置、コピー制御プログラム、およびコピー制御方法
JP2009064224A (ja) ウィルススキャン方法及びその方法を用いた計算機システム
US10877674B2 (en) Determining layout templates identifying storage drives
JP2007323507A (ja) 記憶システム並びにこれを用いたデータの処理方法
US11516287B2 (en) Method and apparatus for performing simple storage service seamless migration using index objects
US20240231646A1 (en) Storage System and Method Using Persistent Memory
JP2008210031A (ja) ストレージシステムの記憶領域管理方法
WO2013168276A1 (ja) ストレージシステム及びストレージシステム制御方法
JP6127148B2 (ja) ストレージシステム及びキャッシュ制御方法
JP2006099802A (ja) 記憶制御装置およびキャッシュメモリの制御方法
US10656867B2 (en) Computer system, data management method, and data management program
CN116868173A (zh) 降低在恢复操作期间网络延时的影响
US10936518B2 (en) Storage system, data management method, and data management program
JP2007280236A (ja) バックアップ方法およびバックアッププログラム
JP2009129282A (ja) データ記憶装置、データバックアップ方法およびデータバックアッププログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190109

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191021

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191029

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191217

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200120

R150 Certificate of patent or registration of utility model

Ref document number: 6650483

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350