JP2023523144A - フルストライド・デステージのためのプリエンプティブ・ステージング - Google Patents

フルストライド・デステージのためのプリエンプティブ・ステージング Download PDF

Info

Publication number
JP2023523144A
JP2023523144A JP2022559761A JP2022559761A JP2023523144A JP 2023523144 A JP2023523144 A JP 2023523144A JP 2022559761 A JP2022559761 A JP 2022559761A JP 2022559761 A JP2022559761 A JP 2022559761A JP 2023523144 A JP2023523144 A JP 2023523144A
Authority
JP
Japan
Prior art keywords
cache
stride
raid array
data element
destaged
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.)
Pending
Application number
JP2022559761A
Other languages
English (en)
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2023523144A publication Critical patent/JP2023523144A/ja
Pending legal-status Critical Current

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/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
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk 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/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/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/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/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/46Caching storage objects of specific type in disk cache
    • G06F2212/462Track or segment
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Preparation Of Compounds By Using Micro-Organisms (AREA)
  • External Artificial Organs (AREA)
  • Supply Devices, Intensifiers, Converters, And Telemotors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

RAIDアレイへのデステージ性能を改善するための方法を開示する。そのような方法は、RAIDアレイにデステージされる準備ができている第1のストライドについてキャッシュを定期的にスキャンする。キャッシュをスキャンしている間に、この方法は、RAIDアレイにデステージされる準備が現在できていないが、キャッシュの後続のスキャン中にデステージされる準備ができる可能性が高い第2のストライドを識別する。この方法は、後続のスキャンに備えて、RAIDアレイからキャッシュへの第2のストライドの欠落データのプリエンプティブ・ステージングを開始する。後続のスキャンが発生した場合に、この方法は、キャッシュからRAIDアレイに第2のストライドをキャッシュからデステージする。対応するシステムおよびコンピュータ・プログラム製品も開示する。

Description

本発明は、RAIDアレイへのデステージ性能を改善するためのシステムおよび方法に関する。
RAID(すなわち、独立ディスクの冗長アレイ:Redundant Array of Independent Disks)は、冗長性を通じてストレージ機能および信頼性を向上させるストレージ技術である。RAIDは、複数のストレージ・ドライブ・コンポーネント(たとえば、ディスク・ドライブまたはソリッド・ステート・ドライブあるいはその両方)を論理的なユニットへと統合することによって作成される。そして、データは「RAIDレベル」と呼ばれる様々な技術を使用してドライブに分散される。現在RAIDレベル1~6を含む標準的なRAIDレベルは、ストライピング、ミラーリング、またはデータの冗長性を提供するためのパリティ、あるいはそれらの組み合わせを採用するRAID構成の基本セットである。各構成は、2つの主要な目標、すなわち、(1)データの信頼性の向上、および(2)I/O性能の向上、の間にバランスをもたらす。
RAIDアレイで構成されたディスクは、複数のドライブから同時にデータにアクセスされ得るので、加速された読み出し性能を提供し得る。しかしながら、RAID-5またはRAID-6アレイなどのRAIDアレイへの書き込みを実行する場合、オーバーヘッドが増加し得る。これは主にパリティ計算によるものである。たとえば、RAID-5アレイ内のデータのストライドのサブセット(すなわち、ストリップ)に書き込むために、ストライドの他のストリップをRAID-5アレイからステージングして、ストライドに関連するパリティ値を再計算する必要があり得る。パリティ値が再計算されると、ストライド全体がRAID-5アレイにデステージされ得る。このように、RAID-5アレイへのフルストライド未満の書き込みでは、RAIDアレイからデータをステージングし、パリティ値を再計算し、データと再計算されたパリティ値とをRAIDアレイにデステージするために、かなりのオーバーヘッドが必要になり得る。一方、データのフル・ストライドを構成する書き込みは、1回の操作を使用して、計算されたパリティ値と共にRAID-5アレイにデステージされ得る。これは、RAIDアレイにストライドを書き込む前に、ディスク・ドライブから欠落データ値もパリティ値もロードする必要がないためである。
本発明は、現在の最先端技術に対応して、より詳細には、現在利用可能なシステムおよび方法によってまだ完全に解決されていない当技術分野の問題およびニーズに対応して開発された。したがって、本発明は、RAIDアレイへのデステージ性能を改善するために開発された。本発明の特徴および利点は、以下の説明および添付の特許請求の範囲からより完全に明らかになり、または以下に記載する本発明を実践することによって理解され得る。
前述と一致して、RAIDアレイへのデステージ性能を改善するための方法を開示する。一実施形態では、そのような方法は、RAIDアレイにデステージされる準備ができている第1のストライドについてキャッシュを定期的にスキャンする。キャッシュをスキャンしている間に、この方法は、RAIDアレイにデステージされる準備が現在できていないが、キャッシュの後続のスキャン中にデステージされる準備ができる可能性が高い第2のストライドを識別する。この方法は、後続のスキャンに備えて、RAIDアレイからキャッシュへの第2のストライドの欠落データのプリエンプティブ・ステージング(preemptive staging)を開始する。後続のスキャンが発生した場合に、この方法は、キャッシュからRAIDアレイに第2のストライドをキャッシュからデステージする。
対応するコンピュータ・プログラム製品およびシステムも本明細書に開示し、特許請求する。
本発明の利点が容易に理解されるようにするために、上記で簡単に説明した本発明のより詳細な説明を、添付の図面に示す特定の実施形態を参照して行う。これらの図面は本発明の典型的な実施形態を示しているにすぎず、したがってその範囲を限定するものと見なされるべきではないということを踏まえて、添付の図面を使用して、本発明をさらに具体的かつ詳細に記述および説明する。
本発明によるシステムおよび方法が実装され得るネットワーク環境の一例を示す高レベルのブロック図である。 図1のネットワーク環境で使用するためのストレージ・システムの一例を示す高レベルのブロック図である。 RAIDアレイのストライドを示す高レベルのブロック図である。 図3AのRAIDアレイの各ストライドについて計算されたパリティ値を示す表である。 キャッシュ内の読み出しキャッシュおよび書き込みキャッシュを示す高レベルのブロック図である。 キャッシュからRAIDアレイにデータをデステージするためのキャッシュ・デステージ・モジュールを示す高レベルのブロック図である。 RAIDアレイにデステージすべきストライドについてキャッシュをスキャンするための方法の一実施形態を示す流れ図である。 キャッシュにプリエンプティブにステージングされるストライドの数を調節するための方法の一実施形態を示す流れ図である。
本明細書で一般的に説明および図示した本発明の構成要素が、多種多様な異なる構成で配置および設計され得ることは容易に理解されよう。したがって、図に示すような本発明の実施形態の以下のより詳細な説明は、特許請求する本発明の範囲を限定することを意図するものではなく、本発明に従って現在考えられる実施形態の特定の例を表すものにすぎない。本明細書で説明する実施形態は、図面を参照することによって最もよく理解され、図面全体を通して同様の部分は同様の数字で示す。
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組み合わせとして具現化され得る。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のために命令を保持および記憶可能な有形のデバイスであり得る。コンピュータ可読記憶媒体は、たとえば、限定はしないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであり得る。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラム可能読み取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル・バーサタイル・ディスク(DVD:digital versatile disk)、メモリー・スティック(R)、フレキシブル・ディスク、命令が記録されたパンチ・カードまたは溝の隆起構造などの機械的にコード化されたデバイス、およびこれらの任意の適切な組み合わせが含まれる。コンピュータ可読記憶媒体は、本明細書で使用する場合、たとえば、電波または他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体を伝搬する電磁波(たとえば、光ファイバ・ケーブルを通過する光パルス)、または有線で伝送される電気信号などの一過性の信号自体であると解釈されるべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいは、たとえば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくは無線ネットワーク、またはそれらの組み合わせなどのネットワークを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組み合わせを含み得る。各コンピューティング/処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または類似のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで書かれたソース・コードまたはオブジェクト・コードであり得る。
コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン・ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上かつ部分的にリモート・コンピュータ上で、あるいは完全にリモート・コンピュータまたはサーバ上で実行され得る。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)またはワイド・エリア・ネットワーク(WAN:wide area network)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され得、または(たとえば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータへの接続がなされ得る。いくつかの実施形態では、たとえば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA:field-programmable gate array)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic array)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用してコンピュータ可読プログラム命令を実行することによって、電子回路を個人向けにし得る。
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して本明細書で説明されている。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得ることは理解されよう。
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供して、それらの命令がコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行された場合に、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/行為を実装するための手段が生成されるようなマシンを生成し得る。また、これらのコンピュータ可読プログラム命令を、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはそれらの組み合わせに特定の方法で機能するように指示することが可能なコンピュータ可読記憶媒体に記憶して、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/行為の態様を実装する命令を含む製造品を構成するようにし得る。
また、コンピュータ可読プログラム命令をコンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードして、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実行させることによって、それらの命令がコンピュータ、他のプログラム可能装置、または他のデバイス上で実行された場合に、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/行為が実装されるようなコンピュータ実装処理を生成し得る。
図1を参照すると、ネットワーク環境100の一例が示されている。ネットワーク環境100は、本発明の実施形態が動作し得る環境の一例を示すために提示する。ネットワーク環境100は、限定ではなく例としてのみ提示している。実際に、本明細書に開示するシステムおよび方法は、図示したネットワーク環境100に加えて、多種多様な異なるネットワーク環境に適用可能であり得る。
図示のように、ネットワーク環境100は、ネットワーク104によって相互接続された1つまたは複数のコンピュータ102、106を含む。ネットワーク104は、たとえば、ローカル・エリア・ネットワーク(LAN)104、ワイド・エリア・ネットワーク(WAN)104、インターネット104、イントラネット104などを含み得る。特定の実施形態では、コンピュータ102、106は、クライアント・コンピュータ102およびサーバ・コンピュータ106(本明細書では「ホスト」106または「ホスト・システム」106とも呼ぶ)の両方を含み得る。一般に、クライアント・コンピュータ102は通信セッションを開始し、サーバ・コンピュータ106はクライアント・コンピュータ102からの要求を待機して応答する。特定の実施形態では、コンピュータ102またはサーバ106あるいはその両方は、1つまたは複数の内蔵または外付けの直接接続されたストレージ・システム112(たとえば、ハードディスク・ドライブ、ソリッドステート・ドライブ、テープ・ドライブのアレイなど)に接続され得る。これらのコンピュータ102、106、および直接接続されたストレージ・システム112は、ATA、SATA、SCSI、SAS、ファイバ・チャネルなどのプロトコルを使用して通信し得る。
ネットワーク環境100は、特定の実施形態では、ストレージ・エリア・ネットワーク(SAN:storage-area-network)108またはLAN108(たとえば、ネットワーク接続ストレージを使用する場合)などのストレージ・ネットワーク108をサーバ106の背後に含み得る。このネットワーク108は、ハードディスク・ドライブまたはソリッドステート・ドライブのアレイ110a、テープ・ライブラリ110b、個々のハードディスク・ドライブ110cまたはソリッドステート・ドライブ110c、テープ・ドライブ110d、CD-ROMライブラリなどの1つまたは複数のストレージ・システム110にサーバ106を接続し得る。ストレージ・システム110にアクセスするために、ホスト・システム106は、ホスト106の1つまたは複数のポートからストレージ・システム110の1つまたは複数のポートへの物理的接続を介して通信し得る。接続は、スイッチ、ファブリック、直接接続などを介したものであり得る。特定の実施形態では、サーバ106およびストレージ・システム110は、ファイバ・チャネル(FC:Fibre Channel)またはiSCSIなどのネットワーク規格を使用して通信し得る。
図2を参照すると、ストレージ・ドライブ204(たとえば、ハードディスク・ドライブまたはソリッドステート・ドライブあるいはその両方)のアレイを含むストレージ・システム110aの一実施形態が示されている。図示のように、ストレージ・システム110aは、ストレージ・コントローラ200と、1つまたは複数のスイッチ202と、ハード・ディスク・ドライブまたはソリッドステート・ドライブ(たとえば、フラッシュメモリベースのドライブ)あるいはその両方などの1つまたは複数のストレージ・ドライブ204とを含む。ストレージ・コントローラ200は、1つまたは複数のホスト106(たとえば、オープン・システムまたはメインフレーム・サーバ106あるいはその両方)が1つまたは複数のストレージ・ドライブ204内のデータにアクセスすることを可能にし得る。ストレージ・ドライブ204は、特定の実施形態では、所望のレベルのI/O性能またはデータ冗長性あるいはその両方を提供するように、様々なRAIDレベルのRAIDアレイで構成され得る。
選択した実施形態では、ストレージ・コントローラ200は、1つまたは複数のサーバ206を含む。ストレージ・コントローラ200はまた、ストレージ・コントローラ200をホスト・デバイス106およびストレージ・ドライブ204にそれぞれ接続するためのホスト・アダプタ208およびデバイス・アダプタ210を含み得る。通常動作中(両方のサーバ206が動作している場合)、サーバ206は、エンタープライズ・ストレージ・システム110a内の異なる論理サブシステム(LSS:logical subsystem)へのI/Oを管理し得る。たとえば、特定の構成では、第1のサーバ206aが偶数のLSSへのI/Oに対処し得、第2のサーバ206bが奇数のLSSへのI/Oに対処し得る。これらのサーバ206a、206bは、接続されたホスト106が常にデータを利用できるようにするために、冗長性を提供し得る。したがって、一方のサーバ206aに障害が発生した場合、他方のサーバ206bは、障害が発生したサーバ206aのI/O負荷を引き取って、ホスト106とストレージ・ドライブ204との間でI/Oが継続できるようにし得る。この処理は「フェイルオーバー」と呼ばれ得る。
選択した実施形態では、各サーバ206は、1つまたは複数のプロセッサ212およびメモリ214を含む。メモリ214は、揮発性メモリ(たとえば、RAM)、ならびに不揮発性メモリ(たとえば、ROM、EPROM、EEPROM、フラッシュ・メモリ、ローカル・ディスク・ドライブ、ローカル・ソリッド・ステート・ドライブなど)を含み得る。揮発性および不揮発性メモリは、特定の実施形態では、プロセッサ(複数可)212上で動作し、ストレージ・ドライブ204内のデータにアクセスするために使用されるソフトウェア・モジュールを記憶し得る。これらのソフトウェア・モジュールは、ストレージ・ドライブ204内の論理ボリューム302への全ての読み出しおよび書き込み要求を管理し得る。
選択した実施形態では、メモリ214は、DRAMキャッシュ218などのキャッシュ218を含む。ホスト106(たとえば、オープン・システムまたはメインフレーム・サーバ106)が読み出し操作を実行する場合はいつでも、読み出しを実行するサーバ206は、ストレージ・ドライブ204からデータをフェッチし、それが再び必要になる場合に、そのキャッシュ218に記憶し得る。データがホスト106によって再び要求された場合、サーバ206は、ストレージ・ドライブ204からデータをフェッチする代わりに、キャッシュ218からフェッチして、時間およびリソースの両方を節約し得る。同様に、ホスト106が書き込みを実行する場合、書き込み要求を受信したサーバ106は、書き込みをそのキャッシュ218に記憶し、後で書き込みをストレージ・ドライブ204にデステージし得る。書き込みがキャッシュ218に記憶される場合、書き込みは反対側のサーバ206の不揮発性ストレージ(NVS:non-volatile storage)220にも記憶され得、その結果、第1のサーバ206に障害が発生した場合に、反対側のサーバ206によって書き込みを回復することができる。
図2に示したのと同様のアーキテクチャを有するストレージ・システム110aの一例は、IBM DS8000(R)エンタープライズ・ストレージ・システムである。DS8000(R)は、連続動作をサポートするように設計されたディスクおよびソリッドステート・ストレージを提供する高性能で大容量のストレージ・コントローラである。とはいえ、本明細書に開示するシステムおよび方法は、IBM DS8000(R)エンタープライズ・ストレージ・システムに限定されず、システムに関連する製造業者、製品名、またはコンポーネントもしくはコンポーネント名に関係なく、任意の同等のまたは類似のストレージ・システムまたはストレージ・システムのグループで実装され得る。本発明の1つまたは複数の実施形態から利益を得ることができる任意のストレージ・システムは、本発明の範囲内にあると考えられる。このように、IBM DS8000(R)は例としてのみ提示しており、限定することを意図したものではない。
図3Aを参照すると、選択した実施形態では、ストレージ・システム110aのディスク・ドライブ204は、RAIDアレイ302(すなわち、安価なディスクの冗長アレイ:redundant array of inexpensive disks)で構成され得る。たとえば、「RAID5」アレイ302では、論理的に順次的なデータが複数のディスク・ドライブ204a~dに分けられ得る。たとえば、ディスク・ドライブ204a~dが4つのディスクを含む場合、論理的に順次的なデータ「A」は、セグメント「A」、「A」、および「A」(まとめて「ストライドA」と呼ぶ)に分けられ、3つの別々のディスク204a~cに記憶され得る。選択した実施形態では、各セグメントは1つまたは複数のトラック300を含むが、他の分割も可能である。A、A、およびAにXOR演算を実行することによってパリティ・データ「A」が計算され得る。このパリティ・データは、第4のディスク204dに記憶され得る。例示的なデータおよびパリティ値を図3Bに示す(パリティ値は影付き)。ディスク204a~cの1つに障害が発生した場合、残りのデータおよびパリティ値を使用して、障害が発生したディスク上のデータが再構築され得る。たとえば、Aを含むディスク204bが失われた場合、値A、A、およびAを使用して、Aが再構築され得る。
RAIDアレイ302で構成されるディスクは、データが複数のドライブ204a~cから同時にアクセスされ得るので、加速された読み出し性能を提供し得る。しかしながら、典型的には、アレイへの書き込みを実行する場合、オーバーヘッドが増加する。これは主にパリティ計算によるものである。たとえば、Aに書き込むには、値A、A、およびAがディスク・ドライブ204からロード(すなわち、ステージング)される必要があり得、値Aがディスク・ドライブ上で変更される必要があり、パリティ値Aが(値A、A、およびAを使用して)再計算され、ディスク・ドライブ204にデステージされる必要がある。これらの操作には、合計4回のディスク操作が必要である。一方、データのフル・ストライド(すなわち、A、A、およびA)は、1回のディスク操作を使用して、パリティ値Aと共にディスク・ドライブ204にデステージされ得る。これは、ストライドを書き込む場合に、ディスク・ドライブ204からデータ値もパリティ値もロードする必要がないためである。このため、キャッシュ218からストレージ・ドライブ204にデータをデステージする場合、フルストライド・デステージが好ましい。
図4を参照すると、特定の実施形態では、キャッシュ218は、読み出しキャッシュ218aおよび書き込みキャッシュ218bに分割され得る。読み出しキャッシュ218aは、変更されていないデータ(たとえば、変更されていないトラック400)を記憶し得る。書き込みキャッシュ218bは、変更されたデータ(たとえば、変更されたトラック400)を記憶し得る。この変更されたデータは、最終的にバックエンド・ストレージ・ドライブ204にデステージされ得る。
特定の実施形態では、ストレージ・システム110a内の各ランク(すなわち、RAIDアレイ302)について、変更されたデータ要素(たとえば、トラック)の順序付きリスト(たとえば、b木)が維持され得る。この順序付きリストを使用して、書き込みキャッシュ218bからRAIDアレイ302にデステージすべき変更されたデータ要素、ならびにデステージを実行するための順序を決定し得る。特定の実施形態では、順序付きリストは、RAIDアレイ302内の各データ要素の物理的位置に基づいてソートされる。
図4に示すように、特定の実施形態では、書き込みキャッシュ218b内に、変更されたデータ要素400ごとに1つまたは複数のクロック・ビット402が維持され得る。たとえば、特定の実施形態では、データ要素400ごとに4つのクロック・ビット402が維持され得、0から15までの値が可能になる。図6に関連してより詳細に説明するように、これらのクロック・ビット402は、データ要素をいつデステージすべきかを決定するために使用されるカウントを記憶し得る。順序付きリストがスキャンされるたびに、データ要素のカウントがデクリメントされ得る。データ要素400が書き込まれるたびに、データ要素400に関連付けられたカウントがインクリメントされ得る。カウントにより、頻繁に書き込まれるデータ要素400がキャッシュ218からストレージ・ドライブ204に時期尚早にデステージされないようになり得る。
図5を参照すると、特定の実施形態では、データ要素400を書き込みキャッシュ218bからストレージ・ドライブ204にデステージするためのキャッシュ・デステージ・モジュール500が提供され得る。このキャッシュ・デステージ・モジュール500は、様々な特徴および機能を提供するための様々なサブモジュールを含み得る。キャッシュ・デステージ・モジュール500および関連するサブモジュールは、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組み合わせで実装され得る。キャッシュ・デステージ・モジュール500および関連するサブモジュールは、限定ではなく例として提示している。異なる実施形態では、より多くのまたはより少ないサブモジュールが提供され得る。たとえば、一部のサブモジュールの機能が単一のまたはより少数のサブモジュールに統合され得、単一のサブモジュールの機能がいくつかのサブモジュールに分散され得る。
図示のように、キャッシュ・デステージ・モジュール500は、キャッシュ・スキャン・モジュール502、カウント・デクリメント・モジュール504、カウント特定モジュール506、閾値モジュール508、ステージ・モジュール510、デステージ・モジュール512、プリエンプティブ・ステージ・モジュール514、および制限モジュール516のうちの1つまたは複数を含む。キャッシュ・スキャン・モジュール502は、順序付きリストを定期的にスキャンして、どのデータ要素400が書き込みキャッシュ218bからRAIDアレイ302にデステージされる準備ができているかを特定するように構成され得る。順序付きリスト内のデータ要素400がスキャンされるたびに、カウント・デクリメント・モジュール504は、データ要素400に関連付けられたクロック・ビット402のカウントをデクリメントし得る。
順序付きリスト内のデータ要素400をスキャンすると、カウント特定モジュール506は、クロック・ビット402を読み取ることによって、データ要素400に関連付けられたカウントを特定し得る。この特定を行うと、閾値モジュール508は、同じストライドからのデータ要素400に関連付けられた全てのカウントが第1の閾値(たとえば、ゼロ)以下であるかを判定し得る。カウントが第1の閾値以下である場合、データ要素400は、キャッシュ218からRAIDアレイ302にデステージされる「準備ができている」と見なされ得る。必要に応じて、ステージ・モジュール510は、欠落データ要素400をRAIDアレイ302からキャッシュ218にステージングして、キャッシュ218内のデータ要素400がフル・ストライドを構成するようにし得る。次いで、デステージ・モジュール512は、必要に応じて、ストライドに関連するパリティ値を再計算し、キャッシュ218からRAIDアレイ302にストライドをデステージし得る。
ストライドに関連付けられたデータ要素400のカウントが第1の閾値以下でない場合、閾値モジュール508は、カウントが第2の閾値(たとえば、3)以下であるかを判定し得る。そうである場合、ストライドに関連付けられたデータ要素400は、(それらのカウントが第1の閾値以下ではないので)RAIDアレイ302へのデステージの準備が現在できていない場合があるが、キャッシュ218の後続のスキャン中に準備ができる可能性が高い(それらのカウントがデクリメントされるので、第1の閾値を超えてカウントを増加させる書き込みなどのイベントがなければ、後続のスキャン中に第1の閾値以下になる可能性が高いためである)。そのような場合、プリエンプティブ・ステージ・モジュール514は、欠落データ要素400をRAIDアレイ302からキャッシュ218にプリエンプティブにステージングして、キャッシュ・スキャン・モジュール502の次のパスの間にフル・ストライドがキャッシュ218に存在するようにし得る。キャッシュ218の次のスキャン中に、ストライドのデータ要素400に関連付けられた全てのカウントが第1の閾値を下回る場合、ストライドに関連付けられたデータ要素400はデステージの「準備ができている」と見なされる。このように欠落データ要素400をプリエンプティブにステージングすることにより、デステージ時に欠落データ要素400をRAIDアレイ302からキャッシュ218にステージングする必要性が排除または低減され、それによって効率が改善され得る。
制限モジュール516は、RAIDアレイ302からプリエンプティブにステージングされているストライドの数を制限するように構成され得る。特定の実施形態では、制限モジュール516は、ストライドの数を選択された閾値(たとえば、50個)に制限し得る。プリエンプティブにステージングされているストライドの数がこの量以上である場合、制限モジュール516は、プリエンプティブ・ステージングのさらなる要求をキューに入れ得る。プリエンプティブにステージングされているストライドの数が閾値(またはさらに低い閾値)を下回った場合、制限モジュール516は、キューに入れられた順序で、キュー内の要求から開始して、ストライドをプリエンプティブにステージングする要求の処理を再開し得る。制限モジュール516によって使用され得る方法700の一実施形態については、図7に関連して論じる。
図6を参照すると、キャッシュ218をスキャンするための方法600の一実施形態が示されている。そのような方法600は、前述のキャッシュ・デステージ・モジュール500によって実行され得る。図示のように、方法600は最初に、キャッシュ218をスキャンすべき時間であるかを602で判定する。特定の実施形態では、スキャンは、前のスキャンが完了したとき、または指定された間隔で発生し得る。スキャンを実行するのに必要な時間は、特定の実施形態では、前述の順序付きリストの過程を経る(proceed through)のに必要な時間に対応し得る。
図示のように、新しいスキャンが開始されると、方法600は、順序付きリスト内の最初のストライドに関連付けられたキャッシュ218内のデータ要素400を604で検査する。ステップ606において、ストライドに関連付けられた全てのデータ要素400のカウント(すなわち、クロック・ビット402)が第1の閾値(たとえば、ゼロ)以下である場合、ストライドはRAIDアレイ302へのデステージの準備ができている。ステップ608において、(フルストライド・デステージが必要であるか、またはデータをデステージするのに最も効率的な方法であるか、あるいはその両方であると仮定して)フルストライド・デステージを実行するためにデータが欠落している場合、方法600は、欠落データ要素400をRAIDアレイ302から610でステージングして、フル・ストライドがキャッシュ218に存在するようにする。データのフル・ストライドを使用して、方法600は、パリティ値を612で再計算し、ストライドをRAIDアレイ302に612でデステージする。一方、ステップ608において、ストライドからデータが欠落していない場合、方法600は、単にパリティ値を612で再計算し、ストライドを612でデステージする。RAIDアレイ302からの欠落データ要素400のステージングは必要ない。次いで、方法600は、順序付きリストがまだストライドを含むかを614で判定し、そうである場合、順序付きリストの次のストライドを604で検査する。
ステップ606において、ストライドに関連付けられた全てのデータ要素400のカウント(すなわち、クロック・ビット402)が第1の閾値以下でない場合、方法600は、ストライドに関連付けられた全てのデータ要素400のカウントが第2の閾値(たとえば、3)以下であるかを616で判定する。そうでない場合、方法600は、順序付きリストがまだストライドを含むかを614で判定し、そうである場合、順序付きリストの次のストライドを604で検査する。ストライドに関連付けられた全てのデータ要素400が第2の閾値以下である場合、ストライドはRAIDアレイ302へのデステージの準備が現在できていない場合があるが、キャッシュ218の後続のスキャン中にデステージの準備ができる可能性が高い(データ要素400へのさらなる書き込みが行われないと仮定する)。ステップ616において、ストライドに関連付けられた全てのデータ要素400が第2の閾値以下である場合、方法600は、フルストライドのデステージが必要であるか、または最も効率的であるか、あるいはその両方であると仮定して、ストライドを完成させるために欠落データが必要かを618で判定する。データが欠落している場合、方法600は、欠落データをRAIDアレイ302からキャッシュ218にプリエンプティブに620でステージングすることによって、次のスキャンの間にフル・ストライドがキャッシュ218に存在するようにする。一方、ステップ618において、ストライドからデータが欠落していない場合、プリエンプティブ・ステージングは必要ない。次いで、方法600は、順序付きリストがまだストライドを含むかを614で判定し、そうである場合、順序付きリストの次のストライドを604で検査する。
順序付きリスト内の全てのストライドが604で検査されると、方法600は終了し、次のスキャンが開始するのを602で待機する。特定の実施形態では、次のスキャンは直ちに開始される。他の実施形態では、前のスキャンが終了し、一定時間が経過した後に、次のスキャンが開始される。さらに他の実施形態では、スキャンは一定間隔で発生し、次の一定間隔の開始時に次のスキャンが開始される。
図7を参照すると、RAIDアレイ302からプリエンプティブにステージングされているストライドの数を調節するための方法700の一実施形態が示されている。図示のように、方法700は、キャッシュ218内のストライドにプリエンプティブ・ステージングが必要かを702で判定する。そうである場合、方法700は、プリエンプティブにステージングされているストライドの数が高閾値(たとえば、50個)を上回るかを704で判定する。そうである場合、方法700はストライドを706でキューに入れる。ステップ704において、プリエンプティブにステージングされているストライドの数が高閾値を下回る場合、方法700は、現在プリエンプティブにステージングされているストライドの数を708でインクリメントし、そのストライドのプリエンプティブ・ステージングを708で開始する。
ステップ710において、ストライドのプリエンプティブ・ステージングが完了した場合、方法700は、現在プリエンプティブにステージングされているストライドの数を712でデクリメントする。次いで、方法700は、現在プリエンプティブにステージングされているストライドの数が低閾値(たとえば、40個)を下回るかを714で判定する。そうである場合、方法700は、現在キューにストライドがあるかを716で判定する。そうである場合、方法700は、現在プリエンプティブにステージングされているストライドの数を708でインクリメントし、キュー内の次のストライドのプリエンプティブ・ステージングを708で開始する。キューにストライドがない場合、方法700は一番上に戻って、他のストライドがプリエンプティブにステージングされる必要があるかを702で判定し、またはストライドのプリエンプティブ・ステージングが完了したかを710で判定する。
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ使用可能媒体の可能な実装形態のアーキテクチャ、機能、および動作を示している。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理的機能(複数可)を実装するための1つまたは複数の実行可能命令を含むモジュール、セグメント、またはコードの一部を表し得る。いくつかの代替的実装形態では、ブロックに記載した機能は、図示した順序以外で行われ得ることにも留意されたい。たとえば、関与する機能に応じて、連続して示した2つのブロックは、実際には実質的に同時に実行され得、またはそれらのブロックは、場合により逆の順序で実行され得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組み合わせは、指定された機能もしくは行為、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用のハードウェア・ベースのシステムによって実装され得ることにも気付くであろう。

Claims (20)

  1. RAIDアレイへのデステージ性能を改善するための方法であって、
    RAIDアレイにデステージされる準備ができている第1のストライドについてキャッシュを定期的にスキャンすることと、
    前記キャッシュをスキャンしている間に、前記RAIDアレイにデステージされる準備が現在できていないが、前記キャッシュの後続のスキャン中にデステージされる準備ができる可能性が高い第2のストライドを識別することと、
    前記後続のスキャンに備えて、前記RAIDアレイから前記キャッシュへの前記第2のストライドの欠落データのプリエンプティブ・ステージングを開始することと、
    前記後続のスキャンが発生した場合に、前記キャッシュから前記RAIDアレイに前記第2のストライドを前記キャッシュからデステージすることと、
    を含む、方法。
  2. 前記キャッシュに記憶された各ストライドの各データ要素についてカウントを維持することをさらに含み、前記カウントは、前記データ要素が書き込まれるたびにインクリメントされ、前記データ要素がスキャンされるたびにデクリメントされる、請求項1に記載の方法。
  3. 前記第1のストライドの各データ要素は、第1の指定された閾値以下のカウントを有する、請求項2に記載の方法。
  4. 前記第1の指定された閾値はゼロである、請求項3に記載の方法。
  5. 前記第2のストライドの各データ要素は、第2の指定された閾値以下のカウントを有する、請求項2に記載の方法。
  6. 前記データ要素はトラックである、請求項2に記載の方法。
  7. プリエンプティブ・ステージングを開始することは、指定された閾値までの数の第2のストライドに対してプリエンプティブ・ステージングを開始することを含む、請求項1に記載の方法。
  8. RAIDアレイへのデステージ性能を改善するためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は、コンピュータ使用可能プログラム・コードが具現化された非一過性コンピュータ可読記憶媒体を含み、前記コンピュータ使用可能プログラム・コードは、少なくとも1つのプロセッサによって実行された場合に、
    RAIDアレイにデステージされる準備ができている第1のストライドについてキャッシュを定期的にスキャンすることと、
    前記キャッシュをスキャンしている間に、前記RAIDアレイにデステージされる準備が現在できていないが、前記キャッシュの後続のスキャン中にデステージされる準備ができる可能性が高い第2のストライドを識別することと、
    前記後続のスキャンに備えて、前記RAIDアレイから前記キャッシュへの前記第2のストライドの欠落データのプリエンプティブ・ステージングを開始することと、
    前記後続のスキャンが発生した場合に、前記キャッシュから前記RAIDアレイに前記第2のストライドを前記キャッシュからデステージすることと、
    を行うように構成される、コンピュータ・プログラム製品。
  9. 前記コンピュータ使用可能プログラム・コードは、前記キャッシュに記憶された各ストライドの各データ要素についてカウントを維持するようにさらに構成され、前記カウントは、前記データ要素が書き込まれるたびにインクリメントされ、前記データ要素がスキャンされるたびにデクリメントされる、請求項8に記載のコンピュータ・プログラム製品。
  10. 前記第1のストライドの各データ要素は、第1の指定された閾値以下のカウントを有する、請求項9に記載のコンピュータ・プログラム製品。
  11. 前記第1の指定された閾値はゼロである、請求項10に記載のコンピュータ・プログラム製品。
  12. 前記第2のストライドの各データ要素は、第2の指定された閾値以下のカウントを有する、請求項9に記載のコンピュータ・プログラム製品。
  13. 前記データ要素はトラックである、請求項9に記載のコンピュータ・プログラム製品。
  14. プリエンプティブ・ステージングを開始することは、指定された閾値までの数の第2のストライドに対してプリエンプティブ・ステージングを開始することを含む、請求項8に記載のコンピュータ・プログラム製品。
  15. RAIDアレイへのデステージ性能を改善するためのシステムであって、
    少なくとも1つのプロセッサと、
    前記少なくとも1つのプロセッサに動作可能に結合され、前記少なくとも1つのプロセッサ上で実行するための命令を記憶する少なくとも1つのメモリ・デバイスと、
    を備え、前記命令は前記少なくとも1つのプロセッサに、
    RAIDアレイにデステージされる準備ができている第1のストライドについてキャッシュを定期的にスキャンすることと、
    前記キャッシュをスキャンしている間に、前記RAIDアレイにデステージされる準備が現在できていないが、前記キャッシュの後続のスキャン中にデステージされる準備ができる可能性が高い第2のストライドを識別することと、
    前記後続のスキャンに備えて、前記RAIDアレイから前記キャッシュへの前記第2のストライドの欠落データのプリエンプティブ・ステージングを開始することと、
    前記後続のスキャンが発生した場合に、前記キャッシュから前記RAIDアレイに前記第2のストライドを前記キャッシュからデステージすることと、
    を行わせる、システム。
  16. 前記命令は前記少なくとも1つのプロセッサに、前記キャッシュに記憶された各ストライドの各データ要素についてカウントを維持することをさらに行わせ、前記カウントは、前記データ要素が書き込まれるたびにインクリメントされ、前記データ要素がスキャンされるたびにデクリメントされる、請求項15に記載のシステム。
  17. 前記第1のストライドの各データ要素は、第1の指定された閾値以下のカウントを有する、請求項16に記載のシステム。
  18. 前記第2のストライドの各データ要素は、第2の指定された閾値以下のカウントを有する、請求項16に記載のシステム。
  19. 前記データ要素はトラックである、請求項16に記載のシステム。
  20. プリエンプティブ・ステージングを開始することは、指定された閾値までの数の第2のストライドに対してプリエンプティブ・ステージングを開始することを含む、請求項15に記載のシステム。
JP2022559761A 2020-04-22 2021-03-30 フルストライド・デステージのためのプリエンプティブ・ステージング Pending JP2023523144A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/855,229 2020-04-22
US16/855,229 US11467772B2 (en) 2020-04-22 2020-04-22 Preemptive staging for full-stride destage
PCT/CN2021/083765 WO2021213139A1 (en) 2020-04-22 2021-03-30 Preemptive staging for full-stride destage

Publications (1)

Publication Number Publication Date
JP2023523144A true JP2023523144A (ja) 2023-06-02

Family

ID=78222178

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022559761A Pending JP2023523144A (ja) 2020-04-22 2021-03-30 フルストライド・デステージのためのプリエンプティブ・ステージング

Country Status (8)

Country Link
US (1) US11467772B2 (ja)
JP (1) JP2023523144A (ja)
KR (1) KR20220139420A (ja)
CN (1) CN115087962A (ja)
AU (1) AU2021260526B2 (ja)
DE (1) DE112021000794T5 (ja)
GB (1) GB2610121A (ja)
WO (1) WO2021213139A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11880600B2 (en) * 2021-09-02 2024-01-23 Micron Technology, Inc. Consolidating write request in cache memory

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5740465A (en) * 1992-04-08 1998-04-14 Hitachi, Ltd. Array disk controller for grouping host commands into a single virtual host command
US6704837B2 (en) 1998-06-29 2004-03-09 International Business Machines Corporation Method and apparatus for increasing RAID write performance by maintaining a full track write counter
US8862819B2 (en) * 2010-03-31 2014-10-14 Kaminario Technologies Ltd. Log structure array
US8332589B2 (en) * 2010-09-29 2012-12-11 International Business Machines Corporation Management of write cache using stride objects
US8880839B2 (en) 2011-04-14 2014-11-04 International Business Machines Corporation Writing adjacent tracks to a stride, based on a comparison of a destaging of tracks to a defragmentation of the stride
US8631190B2 (en) * 2011-07-22 2014-01-14 International Business Machines Corporation Prefetching data tracks and parity data to use for destaging updated tracks
US8560771B2 (en) 2011-07-22 2013-10-15 International Business Machines Corporation Efficient track destage in secondary storage
US9342463B2 (en) * 2012-09-20 2016-05-17 International Business Machines Corporation Management of destage tasks with large number of ranks
US9395925B2 (en) 2014-03-11 2016-07-19 International Business Machines Corporation Grouping of tracks for copy source to target destage on global mirror secondary
US9529542B2 (en) 2015-04-14 2016-12-27 E8 Storage Systems Ltd. Lockless distributed redundant storage and NVRAM caching of compressed data in a highly-distributed shared topology with direct memory access capable interconnect
US10120811B2 (en) 2015-09-29 2018-11-06 International Business Machines Corporation Considering a frequency of access to groups of tracks and density of the groups to select groups of tracks to destage
US9858146B2 (en) 2015-12-21 2018-01-02 International Business Machines Corporation Reducing latency for raid destage operations
US9952974B2 (en) * 2016-06-07 2018-04-24 International Business Machines Corporation Preservation of modified cache data in local non-volatile storage following a failover
US11054994B2 (en) 2017-12-14 2021-07-06 International Business Machines Corporation Copy source to target management in a data storage system

Also Published As

Publication number Publication date
GB202217375D0 (en) 2023-01-04
US20210334038A1 (en) 2021-10-28
WO2021213139A1 (en) 2021-10-28
CN115087962A (zh) 2022-09-20
GB2610121A (en) 2023-02-22
DE112021000794T5 (de) 2022-12-22
KR20220139420A (ko) 2022-10-14
US11467772B2 (en) 2022-10-11
AU2021260526A1 (en) 2022-08-18
AU2021260526B2 (en) 2023-12-14

Similar Documents

Publication Publication Date Title
US8719520B1 (en) System and method for data migration between high-performance computing architectures and data storage devices with increased data reliability and integrity
US20150026514A1 (en) Raid 10 Reads Optimized for Solid State Drives
US10664189B2 (en) Performance in synchronous data replication environments
US10621059B2 (en) Site recovery solution in a multi-tier storage environment
US9262089B2 (en) Use of flash cache to improve tiered migration performance
JP2023523144A (ja) フルストライド・デステージのためのプリエンプティブ・ステージング
US10768822B2 (en) Increasing storage capacity in heterogeneous storage arrays
US11151053B2 (en) Increasing data read and/or write heat tracking resolution in storage devices having cache architecture
JP7495191B2 (ja) I/o性能を最適化するためのメモリ・コピーおよびメモリ・マッピング間の動的な切り替え
US10942857B1 (en) Dynamically adjusting a number of memory copy and memory mapping windows to optimize I/O performance
US11048667B1 (en) Data re-MRU to improve asynchronous data replication performance
US8433868B2 (en) Concurrent copy of system configuration global metadata
US11249667B2 (en) Storage performance enhancement
US11080136B2 (en) Dropped write error detection
US11281502B2 (en) Dispatching tasks on processors based on memory access efficiency
US10133630B2 (en) Disposable subset parities for use in a distributed RAID
US11379427B2 (en) Auxilary LRU list to improve asynchronous data replication performance
US11314691B2 (en) Reserved area to improve asynchronous data replication performance
US8762646B2 (en) Destaging of write ahead data set tracks
US10664188B2 (en) Data set allocations taking into account point-in-time-copy relationships
US10866752B2 (en) Reclaiming storage space in raids made up of heterogeneous storage drives

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230810