JP2022539950A - ストレージシステム、メモリ管理方法、および管理ノード - Google Patents

ストレージシステム、メモリ管理方法、および管理ノード Download PDF

Info

Publication number
JP2022539950A
JP2022539950A JP2021569533A JP2021569533A JP2022539950A JP 2022539950 A JP2022539950 A JP 2022539950A JP 2021569533 A JP2021569533 A JP 2021569533A JP 2021569533 A JP2021569533 A JP 2021569533A JP 2022539950 A JP2022539950 A JP 2022539950A
Authority
JP
Japan
Prior art keywords
storage
data
node
storage device
address
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.)
Granted
Application number
JP2021569533A
Other languages
English (en)
Other versions
JP7482905B2 (ja
JPWO2021218038A5 (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2022539950A publication Critical patent/JP2022539950A/ja
Publication of JPWO2021218038A5 publication Critical patent/JPWO2021218038A5/ja
Application granted granted Critical
Publication of JP7482905B2 publication Critical patent/JP7482905B2/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/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
    • 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
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to 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/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
    • 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
    • G06F3/0649Lifecycle 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/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
    • 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/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • 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

Abstract

Figure 2022539950000001
ストレージシステム、メモリ管理方法、および管理ノードが提供される。ストレージシステムは、管理ノードと、1つまたは複数の第1のストレージデバイスと、1つまたは複数の第2のストレージデバイスとを含む。管理ノードは、データを記憶するためのサービスを提供するためにメモリプールを作成するように構成されている。第1のストレージデバイスの性能は、第2のストレージデバイスのものよりも高く、1つまたは複数の第1のストレージデバイスのうちの少なくとも1つは、第1のストレージノードにあり、1つまたは複数の第2のストレージデバイスのうちの少なくとも1つは、第2のストレージノードにある。管理ノードは、メモリプール内の第1のストレージデバイスと第2のストレージデバイスとの間で移行されるようにデータを制御するようにさらに構成されている。メモリプールは、異なる性能を有するストレージデバイスに基づいて作成され、異なる性能を有するこれらのストレージデバイスは、異なるストレージノードにあり、それによって、異なる性能を有するストレージデバイスを統合するクロスノードメモリプールを実装する。

Description

本出願は、ストレージ技術の分野に関し、特に、ストレージシステム、メモリ管理方法、および管理ノードに関する。
ストレージクラスメモリ(Storage Class Memory, SCM)製品が成熟するにつれて、メモリタイプはより豊かになっている。しかしながら、現在、ストレージノードでメモリを使用することは通常制限されており、メモリの性能上の利点が十分に活用されていない。
本出願の第1の態様は、ストレージシステムを提供する。ストレージシステムは、管理ノードと、1つまたは複数の第1のストレージデバイスと、1つまたは複数の第2のストレージデバイスとを含む。管理ノードは、データを記憶するためのサービスを提供するためにメモリプールを作成するように構成されている。第1のストレージデバイスの性能は、第2のストレージデバイスのものよりも高く、1つまたは複数の第1のストレージデバイスのうちの少なくとも1つは、第1のストレージノードにあり、1つまたは複数の第2のストレージデバイスのうちの少なくとも1つは、第2のストレージノードにある。管理ノードは、メモリプール内の第1のストレージデバイスと第2のストレージデバイスとの間で移行されるようにデータを制御するようにさらに構成されている。
第1の態様で提供されるメモリプールは、少なくとも以下のいくつかのケースを含む。(1)第1のストレージノードは、第1のストレージデバイスおよび第2のストレージデバイスを含み、第2のストレージノードも、第1のストレージデバイスおよび第2のストレージデバイスを含み、すべての第1のストレージデバイスおよびすべての第2のストレージデバイスは、メモリプールの一部である、(2)第1のストレージノードは、第1のストレージデバイスのみを含み、第2のストレージノードは、第2のストレージデバイスのみを含み、第1のストレージデバイスと第2のストレージデバイスの両方は、メモリプールの一部である、(3)第1のストレージノードは、第1のストレージデバイスおよび第2のストレージデバイスを含み、第2のストレージノードは、第1のストレージデバイスまたは第2のストレージデバイスの一方のみを含み、第1のストレージデバイスと第2のストレージデバイスの両方は、メモリプールの一部である。加えて、ストレージシステムは、別のストレージノードをさらに含んでもよく、別のストレージノードに含まれる様々なタイプのストレージデバイスは、メモリプールのためのストレージスペースを提供してもよい。
第1のストレージデバイスと第2のストレージデバイスとは、タイプが異なるため、性能が異なる。第1のストレージデバイスの性能は、一般に、第2のストレージデバイスの性能よりも高い。ここで、性能とは、ストレージデバイスの動作速度および/またはアクセスレイテンシを指す。たとえば、第1のストレージデバイスは、ダイナミックランダムアクセスメモリであり、第2のストレージデバイスは、ストレージクラスメモリである。加えて、第1の態様における第1のストレージデバイスと第2のストレージデバイスとは、タイプに基づいて分類される。たとえば、ダイナミックランダムアクセスメモリは、ダイナミックランダムアクセスメモリが第1のストレージノードにあるか第2のストレージノードにあるかにかかわらず、第1のストレージデバイスと呼ばれる。ストレージクラスメモリは、ストレージクラスメモリが第1のストレージノードにあるか第2のストレージノードにあるかにかかわらず、第2のストレージデバイスと呼ばれる。同様に、メモリプールは、第3のストレージデバイス、第4のストレージデバイスなどをさらに含み得る。
第1の態様のストレージシステムでは、メモリプールは、複数のタイプの性能を有するストレージデバイスに基づいて作成され、複数のタイプの性能を有するこれらのストレージデバイスは、異なるストレージノードにあり、それによって、異なる性能を有するストレージデバイスを統合するクロスノードメモリプールを実装する。このように、様々なタイプのストレージデバイス(メモリかハードディスクかにかかわらず)は、上位層アプリケーションのためのストレージサービスを提供するためのストレージリソースとして働くことができ、それによって、それらの性能上の利点をより良く使用する。メモリプールは、異なる性能を有するストレージデバイスを含むので、データのアクセス頻度に基づいて、異なる性能を有するストレージデバイス間で移行されるようにデータを制御することができる。データのアクセス頻度が比較的高いとき、データを高性能なストレージデバイスに移行させて、データの読取り効率を向上させることができ、データのアクセス頻度が比較的低いとき、データを低性能なストレージデバイスに移行させて、高性能なストレージデバイスのストレージスペースを節約することができる。加えて、本出願におけるメモリプールは、コンピューティングノードまたはLUNのためのストレージスペースを提供し、メモリリソースのプロセッサ中心のアーキテクチャを変更する。
一実装形態では、管理ノードは、ストレージデバイスのステータス情報を取得するようにさらに構成されており、ステータス情報は、第1のストレージデバイスのタイプおよび容量と、第2のストレージデバイスのタイプおよび容量とを含む。メモリプールの容量は、メモリプールのために各ストレージノードによって提供されるストレージデバイスの容量に依存し、メモリプールに含まれるストレージデバイスのタイプは、メモリプールのために各ストレージノードによって提供されるストレージデバイスのタイプに依存する。したがって、メモリプールを作成する前に、管理ノードは、各ストレージノードからストレージデバイスのステータス情報を収集する必要がある。
加えて、メモリプールは、利用可能なスペースが不十分であるか、または新しいストレージノードがストレージシステム内で発見されたときに、スケールアウトされ得る。スケールアウト中、管理ノードは、新しいストレージノードからストレージデバイスのステータス情報を収集する必要もある。
一実装形態では、メモリプールのストレージスペースは、いくつかのページを含み、メモリプール内のページの位置は、グローバルアドレスと呼ばれ、グローバルアドレスは、ページの物理アドレスにマッピングされ、ページの物理アドレスは、ストレージノード内のストレージデバイス内のページに割り振られた物理的スペースの位置を示すために使用される。たとえば、ページのサイズは、4KB、8KB、16KBなどである。ページのサイズは、固定であってもよいし、必要に応じて構成されていてもよい。異なるサイズのページを有するメモリプールは、より柔軟に使用される。
一実装形態では、第1のストレージノードと第2のストレージノードの両方がインデックステーブルを記憶し、インデックステーブルを使用して、ページのグローバルアドレスとページの物理アドレスとの間のマッピング関係を記録する。
一実装形態では、いくつかのページのグローバルアドレスに物理アドレスが事前に割り振られてもよく、グローバルアドレスと物理アドレスとの間のマッピング関係がインデックステーブルに記録される。このように、これらのページに対するデータ書込み要求を受信すると、ストレージノードは、インデックステーブルに基づいて物理アドレスを直接見つけることができ、したがって、物理アドレスによって示される物理的スペースに、書き込まれるべきデータが書き込まれる。事前割振り様式では、データ書込み要求が実行されるとき、データは、事前割振りされた物理的スペースに直接書き込まれ、それによって、データ書込み効率が向上し得る。
一実装形態では、物理アドレスは、事前にページに割り振られていなくてもよい。代わりに、これらのページに対するデータ書込み要求を受信すると、ストレージノードは、ストレージデバイスから物理的スペースを割り振り、書き込まれるべきデータを物理的スペースに書き込み、ページのグローバルアドレスと物理アドレスとの間のマッピング関係をインデックステーブルに記録する。このオンデマンド割振りモードにより、物理的スペースをより柔軟に割り振ることができ、それによって、スペースが節約される。
任意のストレージノードがインデックステーブルを更新すると、更新されたコンテンツを別のノードおよび管理ノードに送信することができる。このようにして、各ストレージノードは、完全なインデックステーブルを有し、それによって、不透明な情報を回避する。各ストレージノードは、コンピューティングノードからデータ読取り要求を受信することができるので、正しいデータを取得するために、インデックステーブルを使用することによって、読み取られるべきデータの物理アドレスを問い合わせることができる。
第1の態様のストレージシステムでは、本出願は、データ書込み要求を実行するための少なくとも3つの実装形態を提供する。
一実装形態では、第1のストレージノードは、IOコントローラを含み、IOコントローラは、インデックステーブルを記憶し、IOコントローラは、コンピューティングノードと通信する。IOコントローラは、コンピューティングノードによって送信される第1のデータおよび第1のデータの第1の論理アドレスを受信することと、第1の論理アドレスに基づいて、メモリプール内の第1のデータの第1のグローバルアドレスを決定することと、インデックステーブルに基づいて、物理的スペースが第1のグローバルアドレスに割り振られているかどうかを決定することと、物理的スペースが第1のグローバルアドレスに割り振られていると決定したとき、第1の物理アドレスによって示される物理的スペースに第1のデータを書き込むこととを行うように構成されている。この実装形態では、第1のストレージノードは、LUNセマンティクスを使用することによってコンピューティングノードと通信し、第1の論理アドレスは、LUN ID、LBA、および長さを指す。
これに対応して、上記の実装形態では、IOコントローラが、第1のデータを読み取るために、コンピューティングノードによって送信されたデータ読取り要求を受信するように構成され、データ読取り要求が第1の論理アドレスを搬送する場合、IOコントローラは、第1の論理アドレスに基づいて、メモリプール内の第1のデータの第1のグローバルアドレスを決定し、インデックステーブルに基づいて、第1のグローバルアドレスに対応する第1の物理アドレスを決定し、第1の物理アドレスによって示される物理的スペースから第1のデータを読み取る。
一実装形態では、第1のストレージノードは、メモリセマンティクスを使用することによってコンピューティングノードと通信する。この場合、第1の論理アドレスは、仮想空間のID、開始アドレス、長さを指す。加えて、データ書込み要求の実行プロセスは、上記の実施手順のものと同じである。データ読取り要求を実行するプロセスも、上記の実施手順のものと同じである。
一実装形態では、ストレージシステム内の各ストレージノードは、ストレージノードのローカルメモリプールをコンピューティングノードにマッピングし、その結果、コンピューティングノードは、メモリプールを「感知」し、メモリプールのグローバルアドレスを取得することができる。この場合、コンピューティングノードによって第1のストレージノードに送信されるデータ書込み要求は、グローバルアドレスを直接搬送することができ、第1のストレージノード内のIOコントローラは、インデックステーブルに基づいて、グローバルアドレスに対応する物理アドレスを決定し、物理アドレスによって示される物理的スペースにデータを書き込む。これに対応して、この実装形態では、コンピューティングノードがデータ読取り要求を第1のストレージノードに送信し、データ読取り要求が読み取られるべきデータのグローバルアドレスも搬送する場合、IOコントローラは、インデックステーブルに基づいて、グローバルアドレスに対応する物理アドレスを直接決定することができる。この実装形態では、論理アドレスをグローバルアドレスに変換するステップが除去されるので、データ書込み効率とデータ読取り効率の両方を向上させることができる。
一実装形態では、メモリプール内の第1のストレージデバイスと第2のストレージデバイスとの間で移行されるようにデータを制御するとき、管理ノードは、ストレージノードのローカルデータのアクセス頻度を監視するよう各ストレージノードに指示し、アクセス頻度が特定のしきい値よりも高いとき、データをより高い性能を有するストレージデバイスに移行するようストレージノードに指示し、または、アクセス頻度が特定のしきい値よりも低いとき、データをより低い性能を有するストレージデバイスに移行するようストレージノードに指示するように特に構成されている。本明細書での移行は、ストレージノード内で行ってもよいし、ストレージノード間で行ってもよいことに留意されたい。
上記の実装形態では、アクセス頻度は、ページの粒度で監視され、データ移行は、ページの粒度で実行され得る。代替的に、アクセス頻度は、データ項目の粒度で監視され、移行は、データ項目の粒度で実行され得る。データ項目は、ページのものよりもその粒度が小さい単位である。データ項目の粒度での監視は、ホットデータ(または非ホットデータ)をより正確に識別し、実際のホットデータをより高い性能を有するストレージデバイスに移行することができ、それによってデータ読取り効率が向上する。
一実装形態では、第1の態様で提供されるメモリは、データプリフェッチングをさらにサポートする。具体的には、上記のデータ読取り要求実行プロセスのいずれかにおいて、または、データ読取り要求が完了した後、読み取られるべきデータに関連付けられた他のデータが、より高い性能を有するストレージデバイスにプリフェッチされる。関連データは、その論理アドレスと読み取られるべきデータの論理アドレスとが連続するデータである。データプリフェッチングは、高性能なストレージデバイスのヒット率を向上させ、データ読取り効率を向上させることができる。
一実装形態では、第1の態様のストレージシステムは、コンピューティングがストレージから分離されたシナリオに適用可能である。言い換えれば、コンピューティングノードは、システム内の任意のストレージノードから独立している。コンピューティングノードは、外部ネットワークを介してストレージノードと通信し、スケールアウトを容易にする。たとえば、コンピューティングリソースが不十分であるとき、コンピューティングノードの数を増やすことができ、ストレージノードの数は変わらないままである。ストレージリソースが不十分であるとき、ストレージノードの数を増やすことができ、コンピューティングノードの数は変わらないままである。
一実装形態では、第1の態様のストレージシステムは、コンピューティングとストレージとが結合されたシナリオに適用可能である。言い換えれば、コンピューティングノードおよびストレージノードは、同じ物理デバイスに統合され、コンピューティングおよびストレージを統合する物理デバイスは、ストレージサーバまたはストレージノードと呼ばれることがある。この場合、コンピューティングノードは、内部ネットワークを介してストレージノードと通信する。したがって、データ読取り要求またはデータ書込み要求が実行されるとき、アクセスレイテンシは比較的低い。
第2の態様は、メモリ管理方法を提供する。この方法は、ストレージシステムに適用され、ストレージシステム内の管理ノードまたはストレージノードは、この方法の方法ステップを実行して、第1の態様の機能を実施する。
第3の態様は、管理ノードを提供する。管理ノードは、第1の態様で提供されるストレージシステムにあり、ストレージシステムは、1つまたは複数の第1のストレージデバイスと、1つまたは複数の第2のストレージデバイスとを含む。管理ノードは、作成モジュールおよび制御モジュールを含む。作成モジュールは、データを記憶するためのサービスを提供するためにメモリプールを作成するように構成されている。メモリプールは、1つまたは複数の第1のストレージデバイス、および1つまたは複数の第2のストレージデバイスを含み、第1のストレージデバイスの性能は、第2のストレージデバイスのものよりも高く、1つまたは複数の第1のストレージデバイスのうちの少なくとも1つは、第1のストレージノードにあり、1つまたは複数の第2のストレージデバイスのうちの少なくとも1つは、第2のストレージノードにある。制御モジュールは、メモリプール内の第1のストレージデバイスと第2のストレージデバイスとの間で移行されるようにデータを制御するように構成されている。
第3の態様で提供される管理ノードでは、メモリプールは、複数のタイプの性能を有するストレージデバイスに基づいて作成され、複数のタイプの性能を有するこれらのストレージデバイスは、異なるストレージノードにあり、それによって、異なる性能を有するストレージデバイスを統合するクロスノードメモリプールを実装する。このように、様々なタイプのストレージデバイス(メモリかハードディスクかにかかわらず)は、上位層アプリケーションのためのストレージサービスを提供するためのストレージリソースとして働くことができ、それによって、それらの性能上の利点をより良く使用する。メモリプールは、異なる性能を有するストレージデバイスを含むので、データのアクセス頻度に基づいて、異なる性能を有するストレージデバイス間で移行されるようにデータを制御することができる。データのアクセス頻度が比較的高いとき、データを高性能なストレージデバイスに移行させて、データの読取り効率を向上させることができ、データのアクセス頻度が比較的低いとき、データを低性能なストレージデバイスに移行させて、高性能なストレージデバイスのストレージスペースを節約することができる。加えて、本出願におけるメモリプールは、コンピューティングノードまたはLUNのためのストレージスペースを提供し、メモリリソースのプロセッサ中心アーキテクチャを変更する。
一実装形態では、作成モジュールは、ストレージデバイスのステータス情報を取得するようにさらに構成されており、ステータス情報は、第1のストレージデバイスのタイプおよび容量と、第2のストレージデバイスのタイプおよび容量とを含む。作成モジュールは、ステータス情報に基づいてメモリプールを作成するように特に構成されている。
一実装形態では、メモリプールのストレージスペースは、いくつかのページを含み、メモリプール内のページのグローバルアドレスは、ページの物理アドレスにマッピングされ、ページのグローバルアドレスは、メモリプール内のページの位置を示すために使用され、ページの物理アドレスは、ストレージノード内のストレージデバイス内のページに割り振られた物理的スペースの位置を示すために使用される。
一実装形態では、データは、第1のストレージデバイスに記憶される。制御モジュールは、データのアクセス頻度を取得するよう第1のストレージノードに指示し、アクセス頻度が指定された頻度しきい値よりも低いとき、メモリプール内の第2のストレージデバイスにデータを移行するよう第1のストレージノードに指示するように特に構成されている。
第4の態様は、管理ノードを提供する。管理ノードは、第1の態様で提供されるストレージシステムにあり、ストレージシステムは、1つまたは複数の第1のストレージデバイスと、1つまたは複数の第2のストレージデバイスとを含む。管理ノードは、インターフェースとプロセッサとを含む。プロセッサは、データを記憶するためのサービスを提供するためにメモリプールを作成するように構成されている。メモリプールは、1つまたは複数の第1のストレージデバイス、および1つまたは複数の第2のストレージデバイスを含み、第1のストレージデバイスの性能は、第2のストレージデバイスのものよりも高く、1つまたは複数の第1のストレージデバイスのうちの少なくとも1つは、第1のストレージノードにあり、1つまたは複数の第2のストレージデバイスのうちの少なくとも1つは、第2のストレージノードにある。プロセッサは、メモリプール内の第1のストレージデバイスと第2のストレージデバイスとの間で移行されるようにデータを制御するようにさらに構成されている。インターフェースは、第1のストレージノードおよび第2のストレージノードと通信するように構成されている。
第4の態様で提供される管理ノードでは、メモリプールは、複数のタイプの性能を有するストレージデバイスに基づいて作成され、複数のタイプの性能を有するこれらのストレージデバイスは、異なるストレージノードにあり、それによって、異なる性能を有するストレージデバイスを統合するクロスノードメモリプールを実装する。このように、様々なタイプのストレージデバイス(メモリかハードディスクかにかかわらず)は、上位層アプリケーションのためのストレージサービスを提供するためのストレージリソースとして働くことができ、それによって、それらの性能上の利点をより良く使用する。メモリプールは、異なる性能を有するストレージデバイスを含むので、データのアクセス頻度に基づいて、異なる性能を有するストレージデバイス間で移行されるようにデータを制御することができる。データのアクセス頻度が比較的高いとき、データを高性能なストレージデバイスに移行させて、データの読取り効率を向上させることができ、データのアクセス頻度が比較的低いとき、データを低性能なストレージデバイスに移行させて、高性能なストレージデバイスのストレージスペースを節約することができる。加えて、本出願におけるメモリプールは、コンピューティングノードまたはLUNのためのストレージスペースを提供し、メモリリソースのプロセッサ中心アーキテクチャを変更する。
一実装形態では、プロセッサは、ストレージデバイスのステータス情報を取得するようにさらに構成されており、ステータス情報は、第1のストレージデバイスのタイプおよび容量と、第2のストレージデバイスのタイプおよび容量とを含む。プロセッサが、ステータス情報に基づいてメモリプールを作成するように特に構成されている。
一実装形態では、メモリプールのストレージスペースは、いくつかのページを含み、メモリプール内のページのグローバルアドレスは、ページの物理アドレスにマッピングされ、ページのグローバルアドレスは、メモリプール内のページの位置を示すために使用され、ページの物理アドレスは、ストレージノード内のストレージデバイス内のページに割り振られた物理的スペースの位置を示すために使用される。
一実装形態では、データは、第1のストレージデバイスに記憶される。プロセッサは、データのアクセス頻度を取得するように第1のストレージノードに指示し、アクセス頻度が指定された頻度しきい値よりも低いとき、メモリプール内の第2のストレージデバイスにデータを移行するように第1のストレージノードに指示するように特に構成されている。
第5の態様は、コンピュータ可読ストレージ媒体を提供する。ストレージ媒体は、プログラム命令を記憶し、プログラム命令は、以下の方法、すなわち、データを記憶するためのサービスを提供するためのメモリプールを作成するステップであり、メモリプールが、1つまたは複数の第1のストレージデバイス、および1つまたは複数の第2のストレージデバイスを含み、第1のストレージデバイスの性能が、第2のストレージデバイスのものよりも高く、1つまたは複数の第1のストレージデバイスのうちの少なくとも1つが、第1のストレージノードにあり、1つまたは複数の第2のストレージデバイスのうちの少なくとも1つが、第2のストレージノードにある、作成するステップと、メモリプール内の第1のストレージデバイスと第2のストレージデバイスとの間で移行されるようにデータを制御するステップとを実行するために使用される。
一実装形態では、この方法は、ストレージデバイスのステータス情報を取得するステップをさらに含み、ステータス情報は、第1のストレージデバイスのタイプおよび容量と、第2のストレージデバイスのタイプおよび容量とを含む。メモリプールを作成するステップは、ステータス情報に基づいてメモリプールを作成するステップを特に含む。
一実装形態では、メモリプールのストレージスペースは、いくつかのページを含み、メモリプール内のページのグローバルアドレスは、ページの物理アドレスにマッピングされ、ページのグローバルアドレスは、メモリプール内のページの位置を示すために使用され、ページの物理アドレスは、ストレージノード内のストレージデバイス内のページに割り振られた物理的スペースの位置を示すために使用される。
一実装形態では、メモリプール内の第1のストレージデバイスと第2のストレージデバイスとの間で移行されるようにデータを制御するステップは、データのアクセス頻度を取得するよう第1のストレージノードに指示し、アクセス頻度が指定された頻度しきい値よりも低いとき、第2のストレージデバイスにデータを移行するよう第1のストレージノードに指示するステップを特に含む。
第6の態様は、コンピュータプログラム製品を提供する。コンピュータプログラム製品は、コンピュータプログラムコードを含み、コンピュータプログラムコードが実行されると、上記の態様のいずれか1つで管理ノードまたはコンピューティングノードによって実行される方法が実行される。
一実施形態によるストレージシステムのシステムアーキテクチャの概略図である。 一実施形態によるストレージノードの概略構成図である。 一実施形態によるIOコントローラの概略構成図である。 一実施形態によるメモリプールの概略アーキテクチャ図である。 一実施形態によるメモリプールに含まれるストレージデバイスの各階層の概略図である。 一実施形態による別のメモリプールの概略アーキテクチャ図である。 一実施形態による別のメモリプールの概略アーキテクチャ図である。 一実施形態によるストレージプールの概略アーキテクチャ図である。 一実施形態によるデータ書込み方法の概略フローチャートである。 一実施形態による別のデータ書込み方法の概略フローチャートである。 一実施形態によるデータ読取り方法の概略フローチャートである。 一実施形態による管理ノードの概略構成図である。 一実施形態による管理ノードの別の概略構成図である。
以下、本発明の実施形態における技術的解決策について、添付の図面を参照しながら説明する。
本発明の実施形態において説明されるネットワークアーキテクチャおよびサービスシナリオは、本発明の実施形態における技術的解決策をより明確に説明することを意図しており、本発明の実施形態で提供される技術的解決策に対する限定を構成しない。当業者であれば、以下のことを知っている可能性がある。ネットワークアーキテクチャの進化および新しいサービスシナリオの出現に伴って、本発明の実施形態で提供される技術的解決策は、同様の技術的問題にも適用可能である。
一実施形態で提供されるストレージシステムは、コンピューティングノードクラスタおよびストレージノードクラスタを含む。コンピューティングノードクラスタは、1つまたは複数のコンピューティングノード100を含む(図1は、2つのコンピューティングノード100を示すが、2つのコンピューティングノード100に限定されない)。コンピューティングノード100は、サーバまたはデスクトップコンピュータなどのユーザ側のコンピューティングデバイスである。ハードウェアに関して、コンピューティングノード100にはプロセッサおよびメモリ(図1には図示せず)が配置されている。ソフトウェアに関して、コンピューティングノード100上で、アプリケーション(application)101(略してアプリ)、およびクライアントプログラム102(略してクライアント)が動作する。アプリケーション101は、ユーザに提示される様々なアプリケーションの総称である。クライアント102は、アプリケーション101によってトリガされたデータアクセス要求を受信し、ストレージノード20と対話し、ストレージノード20にデータアクセス要求を送信するように構成されている。クライアント102は、ストレージノードからデータを受信し、そのデータをアプリケーション101に転送するようにさらに構成されている。クライアント102がソフトウェアプログラムであるとき、クライアント102の機能は、メモリ内のプログラムを実行することによって、コンピューティングノード100に含まれるプロセッサによって実施されることが理解されよう。代替的に、クライアント102は、コンピューティングノード100内にあるハードウェア構成要素によって実施されてもよい。コンピューティングノードクラスタ内の任意のクライアント102は、ストレージノードクラスタ内の任意のストレージノード20にアクセスすることができる。
ストレージノードクラスタは、1つまたは複数のストレージノード20(図1は、3つのストレージノード20を示すが、3つのストレージノード20に限定されない)を含み、ストレージノード20は、相互接続されてもよい。ストレージノードは、たとえば、サーバ、デスクトップコンピュータ、ストレージアレイのコントローラ、またはディスクエンクロージャであり得る。機能的には、ストレージノード20は、主に、データを計算または処理するように構成されている。加えて、ストレージノードクラスタは、管理ノード(図1には図示せず)をさらに含む。管理ノードは、メモリプールを作成し、管理するように構成されている。ストレージノード20から1つのストレージノードが選択され、管理ノードして働く。管理ノードは、任意のストレージノード20と通信し得る。
ハードウェアに関して、図1に示されるように、ストレージノード20は、少なくともプロセッサと、ストレージデバイスと、IOコントローラ201とを含む。プロセッサ202は、中央処理装置(central processing unit, CPU)であり、ストレージノード20の外部のデバイスからのデータ、またはストレージノード20の内部で生成されたデータを処理するように構成されている。ストレージデバイスは、データを記憶するように構成された装置であり、メモリであってもよく、またはハードディスクであってもよい。メモリは、プロセッサとデータを直接交換する内部ストレージデバイスである。メモリは、非常に高速でいつでもデータの読取りおよび書込みを行うことができ、オペレーティングシステムまたは別の実行中のプログラムの一時的なデータストレージデバイスとして使用される。メモリは、少なくとも2つのタイプを有する。たとえば、メモリは、ランダムアクセスメモリであってもよく、または、読取り専用メモリ(Read Only Memory, ROM)メモリであってもよい。たとえば、ランダムアクセスメモリは、ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory, DRAM)であってもよく、またはストレージクラスメモリ(Storage Class Memory, SCM)であってもよい。DRAMは、半導体メモリである。ほとんどのランダムアクセスメモリ(Random Access Memory, RAM)と同様に、DRAMは、揮発性メモリ(volatile memory)デバイスである。SCMは、従来のストレージ装置とストレージデバイスの特徴を結合した複合ストレージ技術である。ストレージクラスメモリは、ハードディスクよりもより高い読取り/書込み速度を提供することができるが、DRAMよりも動作速度が低く、コストが低い。
しかしながら、DRAMおよびSCMは、この実施形態における説明のための例に過ぎず、メモリは、別のランダムアクセスメモリ、たとえばスタティックランダムアクセスメモリ(Static Random Access Memory, SRAM)をさらに含んでいてもよい。たとえば、読取り専用メモリは、プログラマブル読取り専用メモリ(Programmable Read Only Memory, PROM)、または消去可能プログラマブル読取り専用メモリ(Erasable Programmable Read Only Memory, EPROM)とすることができる。加えて、メモリは、デュアルインラインメモリモジュール(Dual In-line Memory Module、略してDIMM)、すなわち、ダイナミックランダムアクセスメモリ(DRAM)を含むモジュールであってもよい。図2および以下の説明では、説明のために、DRAMおよびSCMを一例として使用するが、ストレージノード20が別のタイプのストレージデバイスを含んでいないことを示すものではない。
代替的に、この実施形態におけるストレージデバイスは、ハードディスクであってもよい。メモリ203との違いは、ハードディスクのデータの読取り/書込み速度がメモリのものよりも遅いことであり、通常、ハードディスクは、データを永続的に記憶するように構成されている。ストレージノード20aが一例として使用され、ストレージノード20aの内部に、1つまたは複数のハードディスクが配置されていてもよい。代替的に、ストレージノード20aの外部にディスクエンクロージャ(図2に示される)が搭載されていてもよく、ディスクエンクロージャ内に複数のハードディスクが配置される。配置様式にかかわらず、これらのハードディスクは、ストレージノード20aに含まれるハードディスクと見なされ得る。ハードディスクは、固体ディスク、機械的ハードディスク、または別のタイプのハードディスクである。同様に、ストレージノード20bおよびストレージノード20cなど、ストレージノードクラスタ内の他のストレージノードも、様々なタイプのハードディスクを含むことができる。ストレージノード20は、同じタイプの1つまたは複数のストレージデバイスを含んでいてもよい。
また、この実施形態におけるメモリプールに含まれるハードディスクは、メモリインターフェースを有していてもよく、プロセッサは、メモリインターフェースに直接アクセスしてもよい。
図2は、ストレージノード20の内部構成の概略図である。実際の用途では、ストレージノード20は、サーバであってもよく、またはストレージアレイであってもよい。図2に示されるように、ストレージノード20は、プロセッサおよびストレージデバイスに加えて、IOコントローラをさらに含む。メモリアクセスレイテンシは非常に短いので、オペレーティングシステムスケジューリングオーバーヘッドおよびソフトウェアオーバーヘッドは、データ処理のボトルネックになる可能性がある。ソフトウェアオーバーヘッドを低減するために、この実施形態では、ハードウェアベースのIOアクセスを実装し、CPUスケジューリングおよびソフトウェアスタックの影響を低減するために、ハードウェア構成要素、すなわちIOコントローラが導入される。
第1に、ストレージノード20は、コンピューティングノード100と通信するように構成され、別のストレージノードと通信するようにさらに構成されたそれ自体のIOコントローラ22を有する。具体的には、ストレージノード20は、IOコントローラ22を介してコンピューティングノード100から要求を受信する、もしくはIOコントローラ22を介してコンピューティングノード100に要求を送信してもよく、またはIOコントローラ22を介してストレージノード30に要求を送信する、もしくはIOコントローラ22を介してストレージノード30から要求を受信してもよい。第2に、ストレージノード20内のメモリは、IOコントローラ22を介して互いに通信することができ、またはIOコントローラ22を介してコンピューティングノード100と通信することができる。最後に、ストレージノード20に含まれるハードディスクがストレージノード20内にある場合、これらのハードディスクは、IOコントローラ22を介して互いに通信することができ、またはIOコントローラ22を介してコンピューティングノード100と通信することができる。ハードディスクがストレージノード20に外部接続されたディスクエンクロージャ内にある場合、IOコントローラ24は、ディスクエンクロージャ内に配置される。IOコントローラ24は、IOコントローラ22と通信するように構成されている。ハードディスクは、IOコントローラ24を介してIOコントローラ22にデータや命令を送信してもよく、またはIOコントローラ24を介してIOコントローラ22によって送信されたデータまたは命令を受信してもよい。加えて、ストレージノード20は、ストレージノード20内の構成要素間で通信するように構成されたバス(図2には図示せず)をさらに含んでいてもよい。
図3は、IOコントローラの概略構成図である。IOコントローラ22は、一例として使用され、通信ユニット220およびコンピューティングユニット221を含む。通信ユニットは、高いネットワーク送信能力を提供し、外部または内部通信のために構成される。ここでは、ネットワークインターフェースコントローラ(network interface controller, NIC)が一例として使用される。コンピューティングユニットは、プログラマブルな電子部品であり、データの計算処理などを行うように構成されている。この実施形態では、説明のために、データ処理ユニット(data processing unit, DPU)が一例として使用される。DPUは、CPUの普遍性およびプログラマビリティを有するが、CPUよりも専用である。DPUは、ネットワークデータパケット、ストレージ要求、または分析要求のために効率的に実行することができる。DPUは、(大量の要求を処理する必要がある)より高い並列度によってCPUと区別される。随意に、本明細書のDPUは、代替的に、グラフィックス処理ユニット(graphics processing unit, GPU)または埋込み型ニューラルネットワーク処理ユニット(neural-network processing unit, NPU)などの処理チップによって置き換えられてもよい。DPUは、メモリプールに固有のデータオフローディングサービス、たとえば、アドレスインデキシングまたはクエリ機能、パーティショニング機能、データのフィルタリングまたはスキャンなどの操作の実行などを提供するように構成されている。IO要求がNICを介してストレージノード20に入った後、IO要求は、ストレージノード20内のCPUおよびオペレーティングシステムを使用せずに、コンピューティングユニット221によって直接処理される。このようにして、ソフトウェアスタックの深さが薄くなり、CPUスケジューリングの影響が低減される。IO読取り要求が実行される一例が使用される。NICがコンピューティングノード100によって送信されたIO読取り要求を受信した後、DPUは、IO読取り要求に対応する情報についてインデックステーブルに直接問い合わせることができる。加えて、IOコントローラ22は、DRAM222をさらに含む。DRAM222は、図2で説明されるDRAMと物理的に一致するが、ここでは、DRAM222は、IOコントローラ22に属するメモリである。DRAM222は、IOコントローラ22を通過したデータまたは命令を一時的に記憶するように構成されており、メモリプールの一部ではない。加えて、IOコントローラ22は、DRAM222のスペースがコンピューティングノード100に可視であるように、DRAM222をコンピューティングノード100にさらにマッピングしてもよい。このようにして、IOアクセスは、メモリセマンティックアクセスに変換される。IOコントローラ24の構成および機能は、IOコントローラ22のものと同様であり、詳細は、本明細書では再度説明しない。
以下、この実施形態で提供されるメモリプールについて説明する。図4は、メモリプールの概略アーキテクチャ図である。メモリプールは、複数の異なるタイプのストレージデバイスを含み、各タイプのストレージデバイスは、ストレージデバイスの階層と見なされ得る。ストレージデバイスの各階層の性能は、ストレージデバイスsの別の階層の性能とは異なる。本出願におけるストレージデバイスの性能は、主に、動作速度および/またはアクセスレイテンシなどの観点から考えられる。図5は、一実施形態によるメモリプールに含まれるストレージデバイスの各階層の概略図である。図5に示されるように、メモリプールは、ストレージノード20内にストレージデバイスを含む。DRAMは、すべてのタイプのストレージデバイスにおいて最高の性能を有するので、各ストレージノードのDRAMは、メモリプール内の第1の階層にある。SCMの性能は、DRAMの性能よりも低い。したがって、各ストレージノードのSCMは、メモリプール内の第2の階層にある。さらに、ハードディスクの性能は、SCMの性能よりも低い。したがって、各ストレージノード内のハードディスクは、メモリプール内の第3の階層にある。図3は、3つのタイプのストレージデバイスのみを示す。しかしながら、上記の説明に基づいた製品の実施において、ストレージノード20の内部に、複数の異なるタイプのストレージデバイスが配置されていてもよく、すなわち、すべてのタイプのメモリまたはハードディスクがメモリプールの一部となり、異なるストレージノードにある同じタイプのストレージデバイスが、メモリプール内の同じ階層に属していてもよい。メモリプールに含まれるストレージデバイスのタイプおよび階層の数は、本出願では限定されない。メモリプールの階層は、内部分割であり、上位層アプリケーションによって感知されない。各ストレージノード内の同じタイプのストレージデバイスは、同じ階層にあるが、特定のストレージノードでは、ストレージノードのローカルDRAMの性能が別のストレージノードのDRAMの性能よりも高いことに留意されたい。同様に、ストレージノードのローカルSCMの性能は、別のストレージノードのSCMの性能よりも高いなど、以下同様である。したがって、メモリスペースは、ローカルスペースが不十分でない限り、ストレージノードのローカルスペースから優先的に割り振られる。ローカルスペースが十分でない場合、同じ階層の別のストレージノードから割り振られる。
図4または図5に示されるメモリプールは、ストレージノード内のすべてのタイプのストレージデバイスを含む。しかしながら、別の実施形態では、図6に示されるように、メモリプールは、いくつかのタイプのストレージデバイスのみを含み得る。たとえば、メモリプールは、DRAMおよびSCMなど比較的高い性能を有するストレージデバイスのみを含み、ハードディスクなど比較的低い性能を有するストレージデバイスを除外する。
一実施形態で提供される別のメモリプールのネットワークアーキテクチャについては、図7を参照されたい。図7に示されるように、このネットワークアーキテクチャでは、ストレージノードおよびコンピューティングノードが同じ物理デバイスに統合される。この実施形態では、統合されたデバイスは、まとめてストレージノードと呼ばれる。アプリケーションは、ストレージノード20の内部に配置される。したがって、アプリケーションは、ストレージノード20内のクライアントを介して、ストレージノード20によって処理されるか、または処理のために別のストレージノード20に送信されるように、データ書込み要求またはデータ読取り要求を直接トリガすることができる。この場合、クライアントによってローカルストレージノード20に送信されるデータ読取り/書込み要求は、具体的には、クライアントによってプロセッサに送信されるデータアクセス要求である。加えて、ストレージノード20に含まれる構成要素および構成要素の機能は、図6のストレージノード20のものと同様である。詳細は、本明細書では再度説明しない。図4から図6のいずれか1つに示されるメモリプールと同様に、このネットワークアーキテクチャにおけるメモリプールは、ストレージノード内のすべてのタイプのストレージデバイスを含んでいてもよく、またはいくつかのタイプのストレージデバイスのみを含んでいてもよい。たとえば、メモリプールは、DRAMおよびSCMなど比較的高い性能を有するストレージデバイスのみを含み、ハードディスクなど比較的低い性能を有するストレージデバイスを除外する(図7に示されるように)。
加えて、図4から図7に示されるメモリプールでは、ストレージノードクラスタ内のすべてのストレージノードがメモリプールにストレージスペースを寄与する必要はなく、メモリプールは、クラスタ内のいくつかのストレージノードのみをカバーし得る。いくつかのアプリケーションシナリオでは、ストレージノードクラスタ内に2つ以上のメモリプールがさらに作成されてもよい。各メモリプールは、複数のストレージノードをカバーし、これらのストレージノードは、メモリプールのためのストレージスペースを提供する。異なるメモリプールによって占有されるストレージノードは、同じであってもよく、または同じでなくてもよい。結論として、この実施形態におけるメモリプールは、少なくとも2つのストレージノードにおいて確立され、メモリプールに含まれるストレージスペースは、少なくとも2つの異なるタイプのストレージデバイスから来る。
メモリプールが、ストレージクラスタ内に比較的高い性能を有するストレージデバイス(DRAMおよびSCMなど)を含むとき、管理ノードは、ストレージノードクラスタ内の比較的低い性能を有するストレージデバイス(ハードディスクなど)をさらに使用して、ストレージプールを構築し得る。図8では、ストレージプールを説明するための一例として、図6に示されるネットワークアーキテクチャが使用される。メモリプールと同様に、図8に示されるストレージプールも、少なくとも2つのストレージノードを横断し、ストレージプールのストレージスペースは、少なくとも2つのストレージノード内に1つまたは複数のタイプのハードディスクを含む。ストレージノードクラスタがメモリプールとストレージプールの両方を含むとき、ストレージプールは、データ、特にアクセス頻度の低いデータを永続的に記憶するように構成され、メモリプールは、データ、特にアクセス頻度の高いデータを一時的に記憶するように構成されている。具体的には、メモリプールに記憶されているデータのデータ量が所定のしきい値に達すると、メモリプール内の一部のデータがストレージプールに書き込まれて記憶される。ストレージプールは、図7に示されるネットワークアーキテクチャにおいて確立されてもよく、ストレージプールの実装原理は、上述したものと同様であることを理解されたい。しかしながら、ストレージプールは、本出願では議論の焦点ではなく、メモリプールについては、引き続き以下で議論する。
メモリプールの作成について説明する。各ストレージノード20は、ハートビートチャネルを介して、ストレージデバイスのステータス情報を管理ノードに定期的に報告する。1つまたは複数の管理ノードが配置され得る。管理ノードは、ストレージノードクラスタ内の独立ノードとして配置されてもよく、または、ストレージノード20と一緒に配置されてもよい。言い換えれば、1つまたは複数の特定のストレージノード20が管理ノードとして働く。ストレージデバイスのステータス情報は、限定はしないが、ストレージノードに含まれる様々なタイプのストレージデバイスのタイプおよびヘルスステータス、ならびに、各タイプのストレージデバイスの総容量および利用可能な容量を含む。管理ノードは、収集された情報に基づいてメモリプールを作成する。作成とは、ストレージノード20によって提供されるストレージスペースが、統合された管理用のメモリプールとして収集されることを意味する。したがって、メモリプールの物理的スペースは、ストレージノードに含まれる様々なタイプのストレージデバイスから来る。しかしながら、いくつかのシナリオでは、ストレージノード20は、ストレージノード20のステータス、たとえば、ストレージデバイスのヘルスステータスに基づいて、メモリプールのためのストレージデバイスを選択的に提供し得る。言い換えれば、いくつかのストレージノード内のいくつかのストレージデバイスは、メモリプールの一部ではない。
情報を収集した後、管理ノードは、メモリプールに含まれるストレージスペースに対して統合されたアドレス指定を行う必要がある。統合されたアドレス指定によって、メモリプール内のスペースの各セグメントは、一意のグローバルアドレスを有する。グローバルアドレスによって示されるスペースは、メモリプール内で一意であり、各ストレージノード20は、そのアドレスの意味を知っている。メモリプール内のスペースのセグメントに物理的スペースが割り振られた後、スペースのグローバルアドレスは、グローバルアドレスに対応する物理アドレスを含み、物理アドレスは、グローバルアドレスによって示されるスペースが特定のストレージノード内に実際に位置する特定のストレージデバイス、およびストレージデバイス内のスペースのオフセット、すなわち物理的スペースの位置を示す。スペースの各セグメントは、以下に詳細に説明する「ページ」を指す。実際のアプリケーションでは、データの信頼性を確実にするために、データの冗長性を実装するために、通常、イレージャコーディング(erasure coding, EC)パリティ機構またはマルチコピー機構が使用される。ECパリティ機構は、データが少なくとも2つのデータフラグメントに分割され、少なくとも2つのデータフラグメントのパリティフラグメントが特定のパリティアルゴリズムに従って計算されることを意味する。あるデータフラグメントが失われると、別のデータフラグメントおよびパリティフラグメントがデータ復元に使用され得る。したがって、データのグローバルアドレスは、複数の細粒度のグローバルアドレスの集合であり、各細粒度のグローバルアドレスは、1つのデータフラグメント/パリティフラグメントの物理アドレスに対応する。マルチコピー機構は、少なくとも2つの同一のデータコピーが記憶され、少なくとも2つのデータコピーが2つの異なる物理アドレスに記憶されることを意味する。あるデータコピーが失われると、別のデータコピーを復元に使用することができる。したがって、データのグローバルアドレスは、複数のより細かい粒度のグローバルアドレスの集合でもあり、各より細かい粒度のグローバルアドレスは、1つのデータコピーの物理アドレスに対応する。
管理ノードは、メモリプールを作成した後、各グローバルアドレスに物理的スペースを割り振ってもよく、または、データ書込み要求を受信したとき、データ書込み要求に対応するグローバルアドレスに物理的スペースを割り振ってもよい。各グローバルアドレスとグローバルアドレスの物理アドレスとの間の対応は、インデックステーブルに記録されており、管理ノードは、インデックステーブルを各ストレージノード20に同期させる。各ストレージノード20は、データがその後読み取られる、または書き込まれると、インデックステーブルに従って、グローバルアドレスに対応する物理アドレスについて問合せが行われるように、インデックステーブルを記憶している。
いくつかのアプリケーションシナリオでは、メモリプールは、メモリプールのストレージスペースをコンピューティングノード100に直接公開せず、ストレージスペースを、コンピューティングノード100が使用する論理ユニット(logical unit, LU)に仮想化する。各論理ユニットは、一意の論理ユニット番号(logical unit number, LUN)を有する。コンピューティングノード100は、論理ユニット番号を直接感知することができるので、当業者は、通常、LUNを直接使用して論理ユニットを参照する。各LUNは、LUN IDを有し、LUN IDは、LUNを識別するために使用される。この場合、メモリプールは、ページの粒度でLUNのためのストレージスペースを提供する。言い換えれば、ストレージノード20がスペース用のメモリプールに適用されるとき、メモリプールは、ページまたはページの整数倍だけストレージノード20にスペースを割り振る。ページのサイズは、4KB、8KB、などであり得る。ページのサイズは、本出願では限定されない。LUN内のデータの特定の位置は、データの開始アドレスおよび長さ(length)に基づいて決定され得る。当業者は、通常、開始アドレスを論理ブロックアドレス(logical block address, LBA)と呼ぶ。LUN ID、LBA、および長さなど3つの要因が、決定されたアドレスセグメントを識別し、アドレスセグメントがグローバルアドレスにインデックス付けされ得ることが理解され得る。データが各ストレージノード20に均等に記憶されることを確実にするために、コンピューティングノード100は、通常、分散ハッシュテーブル(Distributed Hash Table, DHT)様式でルーティングを実行し、分散ハッシュテーブル様式でハッシュリングをいくつかの部分に均等に分割する。各部分は、パーティションと呼ばれ、パーティションは、上記のアドレスセグメントのうちの1つに対応する。コンピューティングノード100によってストレージノード20に送信されるすべてのデータアクセス要求は、アドレスセグメントに配置され、たとえば、データがアドレスセグメントから読み取られるか、またはデータがアドレスセグメントに書き込まれる。
上記のアプリケーションシナリオでは、コンピューティングノード100とストレージノード20とは、LUNセマンティクスを使用して互いに通信する。別のアプリケーションシナリオでは、コンピューティングノード100は、メモリセマンティクスを使用することによってストレージノード20と通信する。この場合、コンピューティングノード100がDRAMスペース(この実施形態では仮想空間と呼ばれる)を感知し、仮想空間にアクセスすることができるように、IOコントローラ22は、IOコントローラ22のDRAMスペースをコンピューティングノード100にマッピングする。このシナリオでは、コンピューティングノード100によってストレージノード20に送信されるデータ読取り/書込み要求は、もはやLUN ID、LBA、および長さを搬送せず、他の論理アドレス、たとえば、仮想空間ID、ならびに仮想空間の開始アドレスおよび長さを搬送する。別のアプリケーションシナリオでは、コンピューティングノード100が、スペースを感知し、そのスペースに対応するグローバルアドレスを取得することができるように、IOコントローラ22は、IOコントローラ22によって管理されるメモリプール内のスペースをコンピューティングノード100にマッピングすることができる。たとえば、ストレージノード20a内のIOコントローラ22は、メモリプールにおいて、ストレージノード20aによって提供されるストレージスペースを管理するように構成される。ストレージノード20b内のIOコントローラ22は、メモリプールにおいて、ストレージノード20bによって提供されるストレージスペースを管理するように構成される。ストレージノード20c内のIOコントローラ22は、メモリプールにおいて、ストレージノード20cによって提供されるストレージスペースを管理するように構成される。したがって、メモリプール全体がコンピューティングノード100から可視である。この場合、コンピューティングノード100は、書き込まれるべきデータをストレージノードに送信するとき、データのグローバルアドレスを直接指定してもよい。
以下では、ストレージスペース用のメモリプールにアプリケーションを適用する一例を使用して、スペース割振りプロセスについて説明する。あるケースでは、アプリケーションは、ストレージノードの内部サービスを指す。たとえば、ストレージノード20a内でメモリ適用命令が生成され、メモリ適用命令は、適用スペースのサイズとメモリのタイプとを含む。理解を容易にするために、ここでは、適用スペースは16KBであり、メモリはSCMであると仮定する。要するに、適用スペースのサイズは、記憶されたデータのサイズによって決定され、適用メモリのタイプは、データの頻度情報によって決定される。ストレージノード20aは、記憶されたインデックステーブルから空いているグローバルアドレスのセグメントを取得する。たとえば、アドレス範囲は[000001-000004]であり、そのアドレスが000001であるスペースはページである。空いているグローバルアドレスとは、グローバルアドレスがデータによって占有されていないことを意味する。次いで、ストレージノード20aは、ローカルSCMが16KBの空き領域を有するかどうかを問い合わせる。ローカルSCMが16KBの空き領域を有する場合、ストレージノード20aは、グローバルアドレスにローカルにスペースを割り振り、またはローカルSCMが16KBの空き領域を有さない場合、ストレージノード20aは、別のストレージノード20のSCMが16KBの空き領域を含むかどうかについて、引き続き問合せを実行する。このステップは、問合せ命令を別のストレージノード20に送信することによって実施され得る。別のストレージノード20とストレージノード20aとの間には距離があるので、レイテンシを低減するために、ストレージノード20aが16KBの空き領域をローカルに割り振ることができないとき、ストレージノード20aは、より近いストレージノード20に対して優先的に問合せを実行し得る。物理アドレスを取得した後、ストレージノード20aは、グローバルアドレスと物理アドレスとの間の対応をインデックステーブルに記録し、別のストレージノードとの対応を同期する。物理アドレスを決定した後、ストレージノード20aは、物理アドレスに対応するスペースを使用してデータを記憶することができる。別のケースでは、アプリケーションは、コンピューティ
ングノード100内のアプリケーション101を参照する。この場合、メモリアプリケーション命令がコンピューティングノード100によって生成され、次いで、ストレージノード20aに送信される。この場合、ユーザは、コンピューティングノード100を使用することによって、適用スペースのサイズおよびストレージデバイスのタイプを指定することができる。
上記インデックステーブルの機能は、主に、グローバルアドレスとパーティションIDとの間の対応と、グローバルアドレスと物理アドレスとの間の対応とを記録することである。加えて、インデックステーブルは、データの属性情報、たとえば、そのグローバルアドレスが000001であるデータの頻度情報またはデータレジデンスポリシーを記録するためにさらに使用されてもよい。その後、属性情報に基づいて、様々なストレージデバイス間でデータを移行させたり、属性を設定したりすることができる。データの属性情報は、インデックステーブルのオプションに過ぎず、必ずしも記録されているわけではないことを理解されたい。
ストレージノードクラスタに新しいストレージノードが追加されると、管理ノードは、ノード更新情報を収集し、新しいストレージノードをメモリプールに追加し、ストレージノードに含まれるストレージスペースに対してアドレス設定を実行して新しいグローバルアドレスを生成し、パーティションとグローバルアドレスとの間の対応を更新する(パーティションの総量は、スケーリングアウトまたはスケーリングインにかかわらず不変のままであるので)。また、一部のストレージノードにメモリまたはハードディスクが追加されるケースにも、スケーリングアウトが適用可能である。管理ノードは、各ストレージノードに含まれるストレージデバイスのステータス情報を定期的に収集する。新しいストレージデバイスが追加されると、新しいストレージデバイスがメモリプールに追加され、新しいストレージスペースに対してアドレス指定が行われて、新しいグローバルアドレスが生成され、パーティションとグローバルアドレスとの間の対応が更新される。同様に、この実施形態で提供されるメモリプールは、グローバルアドレスとパーティションとの間の対応が更新されるという条件で、スケーリングインもサポートする。
この実施形態で提供されるメモリプール内の各ストレージデバイスは、プロセッサが連続するスペースのセグメントを感知し、メモリプール内のストレージデバイス上で読取り/書込み動作を直接実行することができるように、プロセッサのためのメモリインターフェースを提供する。
この実施形態のストレージシステムでは、メモリプールは、複数のタイプの性能を有するストレージデバイスに基づいて作成され、複数のタイプの性能を有するこれらのストレージデバイスは、異なるストレージノードにあり、それによって、異なる性能を有するストレージデバイスを統合するクロスノードメモリプールを実装する。このように、様々なタイプのストレージデバイス(メモリかハードディスクかにかかわらず)は、上位層アプリケーションのためのストレージサービスを提供するためのストレージリソースとして働くことができ、それによって、それらの性能上の利点をより良く使用する。メモリプールは、異なる性能を有するストレージデバイスを含むので、データのアクセス頻度に基づいて、異なる性能を有するストレージデバイス間で移行されるようにデータを制御することができる。データのアクセス頻度が比較的高いとき、データを高性能なストレージデバイスに移行させて、データの読取り効率を向上させることができ、データのアクセス頻度が比較的低いとき、データを低性能なストレージデバイスに移行させて、高性能なストレージデバイスのストレージスペースを節約することができる。加えて、本出願におけるメモリプールは、コンピューティングノードまたはLUNのためのストレージスペースを提供し、メモリリソースのプロセッサ中心のアーキテクチャを変更する。
以下では、データ書込み方法を行うプロセスについて説明する。図9は、一実施形態による方法を実行する概略フローチャートである。図9に示されるように、この方法は、以下のステップを含む。
S101: コンピューティングノード100は、ストレージノードにデータ書込み要求を送信し、データ書込み要求は、書き込まれるべきデータと、書き込まれるべきデータの論理アドレスとを搬送する。LUNセマンティクスのアプリケーションシナリオでは、論理アドレスは、LUN ID、LBA、および長さを含む。メモリセマンティクスのアプリケーションシナリオでは、論理アドレスは、仮想空間のID、開始アドレス、および長さを含む。データ書込み要求を受信した後、ストレージノードの通信ユニット220は、データ書込み要求をDRAM222に記憶する。
S102: コンピューティングユニット221は、DRAM222からデータ書込み要求を取得し、論理アドレスを入力として使用し、特定のアルゴリズムに従ってキーを出力し、キーを使用してパーティションIDを一意に特定することができる。
S103: コンピューティングユニット221は、パーティションIDに対応するグローバルアドレスについてインデックステーブルに問い合わせる。
S104: コンピューティングユニット221は、グローバルアドレスに物理アドレスを割り振るかどうかを決定し、グローバルアドレスに物理アドレスを割り当てないと決定した場合、S105を実行し、グローバルアドレスに物理的スペースを割り振り、グローバルアドレスと物理アドレスとの間の対応を作成する。具体的な割振り様式については、上記のスペース割振り手順を参照されたい。決定結果が、グローバルアドレスに物理アドレスが割り振られていることである場合、S106が実行される。
データの信頼性を保証するためにマルチコピー機構が使用される場合、書き込まれるべきデータの複数のコピーがストレージノードクラスタに記憶される必要があり、各コピーが異なる物理アドレスに記憶されることを示す。すべてのコピーを書き込むプロセスは同様である。したがって、本明細書での説明には、1つのコピーが書き込まれる一例が使用される。
S106: コンピューティングユニット221は、物理アドレスによって示される物理的スペースの位置に、書き込まれるべきデータを書き込む。物理アドレスは、物理的スペースがあるストレージノードと、ストレージノード内のストレージデバイスと、ストレージデバイス内のオフセットとを示す。したがって、IOコントローラ22は、そのアドレスに従って、書き込まれるべきデータを直接記憶することができる。たとえば、物理アドレスによって示される物理的スペースがストレージノードのSCMにある場合、IOコントローラ22は、データ書込みアクションを行う。物理アドレスによって示される物理的スペースがストレージノード内のハードディスクにある場合、コンピューティングユニット221は、データ書込み要求をIOコントローラ24に送信するよう通信ユニット220に指示する。IOコントローラ24は、データ書込みアクションを行う。物理アドレスによって示される物理的スペースが別のストレージノードにある場合、コンピューティングユニット221は、書き込まれるべきデータを別のストレージノードに送信するよう通信ユニット220に指示し、物理アドレスによって示される物理的スペースの位置に書き込まれるべきデータを書き込むノードを指示する。
ECパリティ機構が使用される場合、上記手順では、コンピューティングユニット221は、DRAM222からデータ書込み要求において書き込まれるべきデータを取得し、書き込まれるべきデータを複数のデータフラグメントに分割し、複数のデータフラグメントのパリティフラグメントを計算し、生成する。各データフラグメントまたはパリティフラグメントは、それ自体の論理アドレスを有し、論理アドレスは、データ書込み要求で搬送される論理アドレスのサブセットである。コンピューティングユニット221は、各データフラグメント/パリティフラグメントの論理アドレスを入力として使用し、特定のアルゴリズムに従ってキーを出力する。キーを使用して、パーティションIDを一意に特定することができる。コンピューティングユニット221は、パーティションIDに対応するグローバルアドレスについてインデックステーブルに問合せを行い、さらに、グローバルアドレスに対応する物理アドレスを取得し、次いで、各データフラグメントまたはパリティフラグメントを、物理アドレスによって示されるスペースの位置に記憶する。
一実施形態は、別のデータ書込み方法を提供する。この方法では、コンピューティングノード100が、メモリプールのスペースを感知し、グローバルアドレスを使用してストレージノード20にアクセスすることができるように、各ストレージノード20内のIOコントローラ22は、IOコントローラ22によって管理されるメモリプールのグローバルアドレスをコンピューティングノード100に提供する。この場合、コンピューティングノード100によってストレージノード20に送信されるデータ書込み要求は、論理アドレスではなくグローバルアドレスを搬送する。図10は、一実施形態による方法を実行する概略フローチャートである。図10に示されるように、この方法は、以下のステップを含む。
S301: コンピューティングノード100は、ストレージノード20にデータ書込み要求を送信し、データ書込み要求は、書き込まれるべきデータと、書き込まれるべきデータのグローバルアドレスとを搬送する。メモリプールのグローバルアドレスに関するビットマップは、コンピューティングノード100に記憶される。ビットマップは、メモリプール内のいくつかのページに対応するグローバルアドレスおよびページの使用を記録する。たとえば、特定のページのグローバルアドレスに対応するレコードが「1」である場合、そのページにデータが記憶されていることを示す。ページのグローバルアドレスに対応するレコードが「0」である場合、そのページにはデータが記憶されておらず、空きページであることを示す。したがって、コンピューティングノードは、ビットマップに基づいて、特定のグローバルアドレスによって示されるストレージスペースにデータが記憶されていること、および特定のグローバルアドレスによって示されるストレージスペースが空いていることを学習し得る。データ書込み要求を送信すると、コンピューティングノードは、空きページのグローバルアドレスを選択し、グローバルアドレスをデータ書込み要求に含めることができる。具体的には、データ書込み要求の実行を完了した後、ストレージノード20は、コンピューティングノード100に応答メッセージを送信する。コンピューティングノード100は、応答メッセージに基づくビットマップにおいて、要求に対応するページのグローバルアドレス(「1」に設定される)をマークし得る。データ書込み要求を受信した後、ストレージノード20の通信ユニット220は、データ書込み要求をDRAM222に記憶する。
加えて、図1に示されるように、ストレージノードクラスタは、複数のストレージノード20を含む。この場合、データ書込み要求を送信するとき、コンピューティングノード100は、グローバルアドレスに従って特定のストレージノード20を選択する必要がある。上記の説明から、グローバルアドレスが物理アドレスに対応することがわかり得る。物理アドレスは、グローバルアドレスによって示されるスペースが特定のストレージノードにある特定のストレージデバイスを示す。したがって、特定のストレージノード20は、ストレージノード20のストレージデバイスに対応するグローバルアドレスのみを管理し、そのグローバルアドレスに対してデータの書込みまたは読取り操作を行うことができる。ストレージノード20は、別のストレージノードに書き込まれるデータを受信した場合、データを別のストレージノードに転送してもよい。しかしながら、この場合、処理レイテンシは比較的大きい。
アクセスレイテンシを低減するために、メモリプールをアドレス指定するとき、管理ノードは、グローバルアドレスに1つまたは複数のバイトを埋め込み得る。バイトは、グローバルアドレスによって示されるスペースがある特定のストレージノードを示すために使用される。代替的に、各グローバルアドレスが一意のストレージノードに対応するように、特定のアルゴリズムに従ってアドレス設定が実行される。したがって、コンピューティングノード100は、グローバルアドレスに対応するストレージノードを識別し、処理のためにデータ書込み要求をストレージノードに直接送信することができる。
S302: コンピューティングユニット221は、DRAM222からデータ書込み要求を取得し、グローバルアドレスに物理アドレスを割り振るかどうかを決定し、グローバルアドレスに物理アドレスを割り当てないと決定した場合、S303を実行し、グローバルアドレスに物理的スペースを割り振り、グローバルアドレスと物理アドレスとの間の対応を作成する。具体的な割振り様式については、上記のスペース割振り手順を参照されたい。決定結果が、グローバルアドレスに物理アドレスが割り振られていることである場合、S304が実行される。
S304: コンピューティングユニット221は、物理アドレスによって示される物理的スペースに、書き込まれるべきデータを書き込む。このステップについては、図9のS106の説明を参照されたい。詳細は、本明細書では再度説明しない。
加えて、図9に記載されたプロセスと同様に、この実施形態では、データの信頼性を確実にするために、マルチコピー機構またはECパリティ機構を使用することもできる。この部分については、図9の説明を参照されたい。データが最初にストレージノードクラスタに書き込まれるとき、データは通常、メモリプール内のDRAM階層に記憶される。データアクセス頻度が減少したり、DRAM階層のスペース容量が減少したりすると、ストレージノードクラスタは、内部的にデータ移行をトリガする。コンピューティングノードクラスタは、このプロセスに気づいていない。管理ノードには、データ移行ポリシーが記憶されており、管理ノードは、データ移行ポリシーに従ってデータ移行動作を制御する。データ移行ポリシーは、限定はしないが、データ移行動作を実行するためのトリガ条件、たとえば、データ移行動作を定期的に実行するためのトリガ条件、または特定の条件が満たされたときにデータ移行動作を実行するためのトリガ条件を含む。ここでは、特定の条件とは、データのアクセス頻度が所定のしきい値よりも高いか低いか、またはデータがあるストレージデバイスの空き容量が指定されたしきい値よりも高いか低いかなどであり得る。「制御」とは、管理ノードが、ストレージノード20に記憶されているデータのアクセス頻度を監視するよう各ストレージノード20に指示し、ストレージノード20に記憶されているデータをストレージデバイス間で移行させるようストレージノード20に指示することを意味する。
データ移行動作を定期的にトリガすることに加えて、コンピューティングノード100がストレージノードにデータ書込み要求を送信するとき、データの頻度情報(データのアクセス頻度を示すために使用される)が、データ書込み要求において搬送され得る。ストレージノードがデータ書込み要求を実行するとき、実行様式は、まず、データをDRAMに書き込み、次いで、頻度情報に基づいて、データ移行動作を直ちに実行して、データをDRAMからデータの頻度情報に一致するストレージデバイスに移行することである。代替的に、ストレージノードは、データのメタデータ構造、論理アドレスなどに基づいて、データの頻度情報を取得し、頻度情報に基づいて、データ移行動作を行ってもよい。別の実行様式では、ストレージノードは、頻度情報に基づいて、データの頻度情報と一致するストレージデバイスを直接決定し、IOコントローラを介してストレージデバイスにデータを直接書き込む。
加えて、コンピューティングノード100は、データ書込み要求内のデータのレジデンスポリシーを指定することもできる。レジデンスポリシーとは、特定のタイプのデータを特定のタイプのストレージデバイスに長時間記憶する必要があることを意味する。そのようなデータが指定されたストレージデバイスに記憶されると、データのアクセス頻度が増加するか減少するかにかかわらず、データにおいてデータ移行動作は実行されない。
DRAM階層にあるターゲットデータが一例として使用される。ターゲットデータがストレージノード20aにあると仮定すると、ストレージノード20aは、ターゲットデータのアクセス頻度に関する統計を定期的に収集し、アクセス頻度がDRAM階層のアクセスしきい値よりも低いとき、ターゲットデータをSCM階層または別の階層に移行する。オプションの解決策では、メモリプール内のストレージデバイスの各階層は、アクセスしきい値間隔を有する。データのアクセス頻度が間隔の最高値よりも高いとき、または、データのアクセス頻度が間隔の最低値よりも低いとき、データのアクセス頻度に一致する階層にデータを移行する必要があることを示す。別のオプションの解決策では、ストレージデバイスの各階層のアクセスしきい値間隔が設定されるのではなく、アクセス頻度のみが指定されたアクセスしきい値と比較される。アクセス頻度がアクセスしきい値よりも低いとき、より低い性能を有する階層にデータを移行する必要があることを示す。ターゲットデータが依然として一例として使用される。ターゲットデータの現在のアクセス頻度がハードディスク階層のアクセス頻度範囲内である場合、まず、ストレージノード20aのローカルハードディスクが空き領域を有するかどうかが決定される。ストレージノード20aのローカルハードディスクが空き領域を有する場合、ターゲットデータは、ストレージノード20aのローカルハードディスクに移行され、そうでない場合、ターゲットデータは、別のストレージノード、たとえばストレージノード20bに送信される。ストレージノード20bは、ターゲットデータをストレージノード20bのハードディスクに書き込むよう指示される。上位層アプリケーションが移行に気づかず、ターゲットデータの物理アドレスが変わるので、移行の前および後には、ターゲットデータのグローバルアドレスは変わらない。移行が完了した後、各ストレージノード20は、ストレージノード20のインデックステーブルにおいて、ターゲットデータのグローバルアドレスと物理アドレスとの間の対応を更新する。
データアクセス頻度(頻度とも呼ばれる)に基づく階層間のデータ移行に加えて、別の移行ポリシーは、各階層の利用可能な容量に基づいてデータを移行することである。より高い階層のストレージデバイスは、性能が良く、高コストを必要とし、より低い階層のストレージデバイスのものよりもストレージスペースが貴重であることが知られている。たとえば、DRAM階層の利用可能な容量が指定された容量しきい値よりも低いとき、DRAM階層は、新しく書き込まれたデータを収容するためにより多くのスペースを解放するために、DRAM階層に記憶されたデータの一部をSCM階層または別の階層に移行する必要がある。選択され、より低い階層のストレージデバイスに移行されるデータの特定の部分については、既存のキャッシュ置換アルゴリズムを参照されたい。詳細は、本明細書では説明しない。同様に、SCM階層または別の階層も、それ自体の容量しきい値を有する。階層の利用可能な容量が容量しきい値よりも低いとき、記憶されたデータの一部が別の階層に移行される。
上述のように、メモリプールは、外部にページの粒度でストレージスペースを提供する。したがって、データのアクセス頻度に関する統計もページ単位で収集することができ、それに応じて、階層間のデータ移行もページ単位で実施される。しかしながら、製品の実施において、アプリケーションは、たとえば、ページに基づくデータ項目(item)などのより細かい粒度でオブジェクトを割り振る必要があることが多い。ページのサイズが4KBである場合、データ項目のサイズは、1KB、2KB、または3KB(そのサイズがページのサイズより小さい限り)である。この場合、ページの粒度でのアクセス頻度は正確ではない。ページ上のいくつかのデータ項目は頻繁にアクセスされることがあるが、このページ上の他のデータ項目はほとんどアクセスされない。ページ上のアクセス頻度がページの粒度で収集される場合、このページは、DRAMまたはSCM媒体上に常駐し、それによって大量のスペースを浪費する。したがって、この実施形態では、データ項目の粒度によるアクセス頻度の統計がさらに収集され、データ項目の粒度によるデータ移行が実行され、次いで、コールドページとホットページが集約される。このようにして、より効率的なスワップインおよびスワップアウト性能を実装することができる。
以下では、データ読取り要求方法を行うプロセスについて説明する。図11は、一実施形態によるデータ読取り要求方法を実行する概略フローチャートである。図11に示されるように、この方法は、以下のステップを含む。
S201: コンピューティングノード100は、データ読取り要求をストレージノードに送信し、データ読取り要求は、読み取られるべきデータの論理アドレスを搬送し、ストレージノードのIOコントローラ22は、データ読取り要求を受信する。LUNセマンティクスのアプリケーションシナリオでは、論理アドレスは、LUN ID、LBA、および長さを含む。メモリセマンティクスのアプリケーションシナリオでは、論理アドレスは、仮想空間のID、開始アドレス、および長さを含む。データ読取り要求を受信した後、ストレージノードの通信ユニット220は、データ書込み要求をDRAM222に記憶する。
S202: コンピューティングユニット221は、DRAM222からデータ読取り要求を取得し、論理アドレスを入力として使用し、特定のアルゴリズムに従ってキーを出力し、キーを使用してパーティションIDを一意に特定することができる。
S203: コンピューティングユニット221は、パーティションIDに対応するグローバルアドレスについてインデックステーブルに問い合わせる。
S204: コンピューティングユニット221は、グローバルアドレスに対応する物理アドレスについてインデックステーブルに問い合わせる。
S205: コンピューティングユニット221は、物理アドレスによって示される物理的スペースから読み取られるべきデータを読み取り、通信ユニット220は、読み取られるべきデータをコンピューティングノード100に返す。物理アドレスは、物理的スペースがあるストレージノードと、ストレージノード内のストレージデバイスと、ストレージデバイス内のオフセットとを示す。したがって、コンピューティングユニット221は、そのアドレスに従って、読み取られるべきデータを直接読み取ることができる。物理アドレスによって示される物理的スペースが別のストレージノードにある場合、データ読取り要求が別のストレージノードに送信され、ノードは、物理アドレスによって示される物理的スペースからデータを読み取るよう指示される。
データを記憶するためにマルチコピー機構が使用される場合、ストレージノードは、上記の手順に従って任意のデータコピーを読み取り、そのデータコピーをコンピューティングノード100に送信することができる。ECパリティ機構が使用される場合、ストレージノードは、上記の手順に従って各データフラグメントおよび各パリティフラグメントを読み取り、データフラグメントおよびパリティフラグメントを結合して、読み取られるべきデータを取得し、読み取られるべきデータを検証し、読み取られるべきデータが正しいことを検証した後、読み取られるべきデータをコンピューティングノード100に返す必要がある。図11に示されるデータ読取り方法は、図9に示されるデータ書込み方法に対応することが理解されよう。したがって、この方法におけるデータ読取り要求は、読み取られるべきデータの論理アドレスを搬送する。一実施形態は、別のデータ読取り方法をさらに提供する。この方法は、図10に示されるデータ書込み方法に対応する。この方法では、データ読取り要求は、読み取られるべきデータのグローバルアドレスを搬送し、コンピューティングユニット221は、読み取られるべきデータを取得するために、グローバルアドレスに従って物理アドレスの問合せを直接行うことができる。
加えて、図1から図8に示されるメモリプールは、データプリフェッチング機構をさらにサポートする。当業者は、比較的高い性能を有するストレージデバイスからデータを読み取る速度が、比較的低い性能を有するストレージデバイスからデータを読み取る速度よりも速いことを理解されよう。したがって、読み取られるべきデータが比較的高い性能を有するストレージデバイスでヒットした場合、読み取られるべきデータを比較的低い性能を有するストレージデバイスから読み取る必要はない。このように、データの読取り効率は比較的高い。キャッシュのデータヒット率を高めるために、一般的な方法は、比較的低い性能を有するストレージデバイスからデータのセグメントを事前に読み取り、比較的高い性能を有するストレージデバイスにデータのセグメントを書き込むことである。この場合、コンピューティングノード100が、データのセグメントを読み取ることを要求するデータ読取り要求を送信すると、データは、比較的高い性能を有するストレージデバイスに事前に読み取られているので、IOコントローラは、比較的高い性能を有するストレージデバイスからデータを直接読み取ることができる。連続する論理アドレスを有するデータのセグメントについては、データが一緒に読み取られる可能性が比較的高い。したがって、実際には、データは通常、論理アドレスに従ってプリフェッチされる。データプリフェッチングモードは、同期プリフェッチングおよび非同期プリフェッチングを含む。同期プリフェッチングとは、データ読取り要求が実行され、より高い階層のストレージデバイスにおいて読み取られるべきデータがヒットしないとき、その論理アドレスと読み取られるべきデータの論理アドレスとが連続するデータが、読み取られるべきデータの論理アドレスに従って、より低い階層のストレージデバイスから読み取られ、より高い階層のストレージデバイスに書き込まれることを意味する。非同期プリフェッチングとは、データ読取り要求が実行され、より高い階層のストレージデバイスにおいて読み取られるべきデータがヒットするとき、その論理アドレスと読み取られるべきデータの論理アドレスとが連続するデータが、読み取られるべきデータの論理アドレスに従って、より低い階層のストレージデバイスから読み取られ、より高い階層のストレージデバイスに書き込まれることを意味する。
図11を参照すると、データ読取り要求を実行するための方法は、以下をさらに含み得る。
S206: コンピューティングユニット221は、その論理アドレスと読み取られるべきデータの論理アドレスとが連続する他のデータをより高い階層のストレージデバイスに移行する。S205において、コンピューティングユニット221は、物理アドレスによって示される物理的スペースから、読み取られるべきデータを読み取る。読み取られるべきデータは、より高い階層のストレージデバイス(たとえば、DRAM)に記憶されていてもよく、またはより低い階層のストレージデバイス(たとえば、SCM)に記憶されていてもよい。読み取られるべきデータがDRAMに記憶されている場合、コンピューティングユニット221は、DRAM内の読み取られるべきデータにヒットする。読み取られるべきデータがSCMに記憶されている場合、コンピューティングユニット221は、DRAM内の読み取られるべきデータにヒットしない。いずれの場合も、コンピューティングユニット221は、その論理アドレスと読み取られるべきデータの論理アドレスとが連続する他のデータをDRAMにプリフェッチすることができる。
具体的には、コンピューティングユニット221は、まず、その論理アドレスと読み取られるべきデータの論理アドレスとが連続する論理アドレスを取得する。説明しやすいように、読み取られるべきデータの論理アドレスは論理アドレス1と呼ばれ、論理アドレス1に連続する論理アドレスは論理アドレス2と呼ばれる。コンピューティングユニット221は、論理アドレス2を入力として使用し、特定のアルゴリズムに従ってキーを出力する。キーを使用して、パーティションIDを一意に特定することができる。次いで、コンピューティングユニット221は、パーティションIDに対応するグローバルアドレスおよびグローバルアドレスに対応する物理アドレスについて、インデックステーブルに問い合わせる。最後に、コンピューティングユニット221は、物理アドレスによって示される物理的スペースから、他のデータを読み取る。他のデータは、コンピューティングユニット221のローカルストレージノードに配置されてもよく、または別のストレージノードに配置されてもよい。物理アドレスによって示される物理的スペースが別のストレージノードにある場合、ノードは、物理アドレスによって示される物理的スペースからデータを読み取る。
同様に、コンピューティングノード100によってストレージノード20に送信されるデータ読取り要求がグローバルアドレスを搬送する場合、データプリフェッチング中に、グローバルアドレスに連続するアドレスに記憶されたデータが、グローバルアドレスに従ってより高い階層のストレージデバイスにあらかじめ読み取られる。
図12は、一実施形態による管理ノードの概略構成図である。管理ノードは、プロセッサ401およびストレージデバイス402を含む。ストレージデバイス402は、プログラム403を記憶する。プロセッサ401、ストレージデバイス402、およびインターフェース404は、バス405を介して互いに接続され、通信する。プロセッサ401は、シングルコアもしくはマルチコア中央処理装置または特定用途向け集積回路であるか、あるいは本発明のこの実施形態を実施するための1つまたは複数の集積回路として構成されてもよい。ストレージデバイス402は、ランダムアクセスメモリ(Random Access Memory, RAM)であってもよく、または不揮発性メモリ(non-volatile memory)、たとえば、少なくとも1つのハードディスクメモリであってもよい。ストレージデバイス402は、コンピュータ実行可能命令を記憶するように構成される。具体的には、コンピュータ実行可能命令は、プログラム403を含み得る。管理ノードが動作すると、プロセッサ401は、プログラム403を実行して、以下の方法を実行する。
たとえば、データを記憶するためのサービスを提供するために、メモリプールが作成される。メモリプールは、第1のストレージデバイスと、少なくとも2つの第2のストレージデバイスとを含む。制御モジュールは、第1のストレージデバイスから第2のストレージデバイスに移行される、または第2のストレージデバイスから第1のストレージデバイスに移行されるようにデータを制御するように構成される。
随意に、方法は、ストレージデバイスのステータス情報を取得するステップをさらに含み、ステータス情報は、第1のストレージデバイスのタイプおよび容量と、第2のストレージデバイスのタイプおよび容量とを含む。したがって、メモリプールを作成するとき、管理ノードは、ステータス情報に基づいてメモリプールを作成するように特に構成されている。
随意に、第1のストレージデバイスから第2のストレージデバイスに移行されるようにデータを制御するとき、管理ノードは、データのアクセス頻度を取得するよう第1のストレージノードに指示し、アクセス頻度が指定された頻度しきい値よりも低いとき、第2のストレージデバイスにデータを移行するよう第1のストレージノードに指示するように特に構成されている。
図13は、一実施形態による管理ノードの別の概略構造図である。管理ノードは、作成モジュール501および制御モジュール502を含む。作成モジュール501は、データを記憶するためのサービスを提供するためのメモリプールを作成するように構成されている。メモリプールは、第1のストレージデバイスと、少なくとも2つの第2のストレージデバイスとを含む。制御モジュール502は、第1のストレージデバイスから第2のストレージデバイスに移行される、または第2のストレージデバイスから第1のストレージデバイスに移行されるようにデータを制御するように構成される。
随意に、作成モジュール501は、ストレージデバイスのステータス情報を取得するようにさらに構成されており、ステータス情報は、第1のストレージデバイスのタイプおよび容量と、第2のストレージデバイスのタイプおよび容量とを含む。メモリプールを作成するとき、作成モジュール501は、ステータス情報に基づいてメモリプールを作成するように特に構成されている。
随意に、第1のストレージデバイスから第2のストレージデバイスに移行されるようにデータを制御するとき、制御モジュール502は、データのアクセス頻度を取得するよう第1のストレージノードに指示し、アクセス頻度が指定された頻度しきい値よりも低いとき、第2のストレージデバイスにデータを移行するよう第1のストレージノードに指示するように特に構成されている。
実際には、作成モジュール501と制御モジュール502の両方の機能は、プログラム403を実行することによって、図12に示されるプロセッサ401によって実施されてもよく、または、プロセッサ401によって独立して実施されてもよい。
上記の実施形態の全部または一部は、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せを使用することによって実装され得る。ソフトウェアが実装のために使用されるとき、実施形態の全部または一部は、コンピュータプログラム製品の形態で実施され得る。コンピュータプログラム製品は、1つまたは複数のコンピュータ命令を含む。コンピュータ命令がコンピュータにロードされ、実行されると、本発明の実施形態による手順または機能の全部または一部が生成される。コンピュータは、汎用コンピュータ、専用コンピュータ、コンピュータネットワーク、または別のプログラマブル装置とすることができる。コンピュータ命令は、コンピュータ可読ストレージ媒体に記憶されてもよく、またはコンピュータ可読ストレージ媒体から別のコンピュータ可読ストレージ媒体に送信されてもよい。たとえば、コンピュータ命令は、ウェブサイト、コンピュータ、サーバ、またはデータセンターから別のウェブサイト、コンピュータ、サーバ、またはデータセンターに有線(たとえば、同軸ケーブル、光ファイバ、またはデジタル加入者回線(Digital Subscriber Line, DSL))、またはワイヤレス(たとえば、赤外線、ラジオ、マイクロ波など)の方法で送信されてもよい。コンピュータ可読ストレージ媒体は、コンピュータによってアクセス可能な任意の使用可能な媒体、または1つもしくは複数の使用可能な媒体を統合したサーバまたはデータセンターなどのデータストレージデバイスとすることができる。使用可能な媒体は、磁気媒体(たとえば、フロッピーディスク、ハードディスク、または磁気テープ)、光学媒体(たとえば、デジタル多用途ディスク(Digital Versatile Disc, DVD))、半導体媒体(たとえば、ソリッドステートディスク(Solid State Disk、SSD))などであってもよい。
実施形態のステップの全部または一部がハードウェアによって実施され得る、または関連したハードウェアに指示するプログラムによって実施され得ることを、当業者であれば理解されよう。プログラムは、コンピュータ可読媒体に記憶され得る。ストレージ媒体は、読取り専用メモリ、磁気ディスク、または光ディスクであってもよい。
本出願の実施形態では、別段に明記されていない限り、または論理的な矛盾がない限り、異なる実施形態間の用語および/または説明は一貫しており、相互に参照されてもよく、異なる実施形態の技術的特徴は、その内部論理関係に基づいて結合されて、新しい実施形態を形成してもよい。
本出願では、「少なくとも1つ」は1つまたは複数を意味し、「複数」は2つ以上を意味する。「および/または」という用語は、関連するオブジェクトを記述するための関連付け関係を記述し、3つの関係が存在し得ることを表す。たとえば、Aおよび/またはBは、以下の3つのケースを表し得る。Aのみが存在する、AとBの両方が存在する、およびBのみが存在する。AおよびBは各々、単数または複数であってもよい。本出願のテキスト記述では、文字「/」は、関連するオブジェクト間の「or」関係を示す。本出願の公式では、文字「/」は、関連するオブジェクト間の「分割」関係を示す。
本出願の実施形態における様々な数字は、単に説明しやすくするために区別するために使用されており、本出願の実施形態の範囲を限定するために使用されていないことを理解されよう。上記のプロセスの順序番号は、実行順序を意味するものではない。プロセスの実行順序は、プロセスの機能および内部ロジックに基づいて決定されるものとする。
上記の説明は、本出願で提供される実施形態であるが、本出願を限定することを意図するものではない。本出願の趣旨および原理から逸脱することなく行われる任意の修正、等価の置換、または改善は、本出願の保護範囲内に含まれるものとする。
20 ストレージノード
20a~c ストレージノード
22 IOコントローラ
24 IOコントローラ
30 ストレージノード
100 コンピューティングノード
101 アプリケーション
102 クライアントプログラム
201 IOコントローラ
220 通信ユニット
221 コンピューティングユニット
222 DRAM
401 プロセッサ
402 ストレージデバイス
403 プログラム
404 インターフェース
405 バス
501 作成モジュール
502 制御モジュール

Claims (34)

  1. 管理ノードと、1つまたは複数の第1のストレージデバイスと、1つまたは複数の第2のストレージデバイスとを含むストレージシステムであって、
    前記管理ノードが、
    データを記憶するためのサービスを提供するためのメモリプールを作成することであり、前記メモリプールが、前記1つまたは複数の第1のストレージデバイス、および前記1つまたは複数の第2のストレージデバイスを含み、前記第1のストレージデバイスの性能が、前記第2のストレージデバイスのものよりも高く、前記1つまたは複数の第1のストレージデバイスのうちの少なくとも1つが、第1のストレージノードにあり、前記1つまたは複数の第2のストレージデバイスのうちの少なくとも1つが、第2のストレージノードにある、作成することと、
    前記メモリプール内の前記第1のストレージデバイスと前記第2のストレージデバイスとの間で移行されるように前記データを制御することと
    を行うように構成されている、
    ストレージシステム。
  2. 前記管理ノードが、前記ストレージデバイスのステータス情報を取得するようにさらに構成されており、前記ステータス情報が、前記第1のストレージデバイスのタイプおよび容量と、前記第2のストレージデバイスのタイプおよび容量とを含み、
    前記管理ノードが、前記ステータス情報に基づいて前記メモリプールを作成するように特に構成されている、
    請求項1に記載のストレージシステム。
  3. 前記メモリプールのストレージスペースが、複数のページを含み、前記メモリプール内のページのグローバルアドレスが、前記ページの物理アドレスにマッピングされ、前記ページの前記グローバルアドレスが、前記メモリプール内の前記ページの位置を示すために使用され、前記ページの前記物理アドレスが、ストレージノード内のストレージデバイス内の前記グローバルアドレスに割り振られた物理的スペースの位置を示すために使用され、前記ページの前記グローバルアドレスと前記ページの前記物理アドレスとの間のマッピング関係が、インデックステーブルに記録される、請求項1に記載のストレージシステム。
  4. 前記第1のストレージノードが、前記インデックステーブルを記憶し、前記複数の第2のストレージデバイスのうちの1つが、前記第1のストレージノードにあり、前記第1のストレージノードが、
    メモリ割振り要求を受信することであり、前記メモリ割振り要求が、そのタイプが第2のストレージデバイスであるストレージデバイスから物理的スペースを、前記いくつかのページ内の第1のページの第1のグローバルアドレスに割り振ることを要求するために使用される、受信することと、
    物理的スペースを、前記第1のストレージノード内の前記第2のストレージデバイスから割り振るか、または前記第2のストレージノード内の前記第2のストレージデバイスの物理的スペースを割り振るために前記第2のストレージノードに適用することであり、前記第1のストレージノードまたは前記第2のストレージノード内の前記第2のストレージデバイスから割り振られた前記物理的スペースの位置が、前記第1のページの第1の物理アドレスである、適用することと、
    前記第1のページの前記第1のグローバルアドレスと前記第1のページの前記第1の物理アドレスとの間のマッピング関係を、前記インデックステーブルに書き込むことと
    を行うように構成されている、請求項3に記載のストレージシステム。
  5. 前記第1のストレージノードが、IOコントローラを含み、前記IOコントローラが、前記インデックステーブルを記憶し、前記IOコントローラが、コンピューティングノードと通信し、
    前記IOコントローラが、
    前記コンピューティングノードによって送信される第1のデータおよび前記第1のデータの第1の論理アドレスを受信することと、
    前記第1の論理アドレスに基づいて、前記メモリプール内の前記第1のデータの前記第1のグローバルアドレスを決定することと、
    前記インデックステーブルに基づいて、物理的スペースが前記第1のグローバルアドレスに割り振られているかどうかを決定することと、
    前記物理的スペースが前記第1のグローバルアドレスに割り振られていると決定したとき、前記第1の物理アドレスによって示される前記物理的スペースに前記第1のデータを書き込むことと
    を行うように構成されている、
    請求項4に記載のストレージシステム。
  6. 前記第1のストレージノードが、IOコントローラを含み、前記IOコントローラが、コンピューティングノードと通信し、前記IOコントローラが、前記インデックステーブルを記憶し、
    前記IOコントローラが、
    前記コンピューティングノードによって送信される第2のデータおよび前記第2のデータの第2の論理アドレスを受信することと、
    前記第2の論理アドレスに基づいて、前記メモリプール内の前記第2のデータの第2のグローバルアドレスを決定することと、
    前記インデックステーブルに基づいて、物理的スペースが前記第2のグローバルアドレスに割り振られているかどうかを決定することと、
    物理的スペースが前記第2のグローバルアドレスに割り振られていないと決定したとき、前記第1のストレージデバイスから物理的スペースを割り振り、前記第2のグローバルアドレスと前記第2の物理アドレスとの間のマッピング関係を、前記インデックステーブルに書き込み、前記第2のデータを、前記第2の物理アドレスによって示される前記物理的スペースに書き込むことであり、前記第2の物理アドレスが、前記第1のストレージデバイスから前記第2のグローバルアドレスに割り振られた前記物理的スペースの位置を示すために使用される、書き込むことと
    を行うように構成されている、
    請求項3に記載のストレージシステム。
  7. 前記第1のストレージノードが、IOコントローラを含み、前記IOコントローラが、コンピューティングノードと通信し、前記IOコントローラが、前記インデックステーブルを記憶し、
    前記IOコントローラが、
    前記コンピューティングノードによって送信される、前記メモリプール内の第3のデータおよび前記第3のデータの第3のグローバルアドレスを受信することと、
    前記インデックステーブルに基づいて、前記第3のグローバルアドレスに対応する第3の物理アドレスを決定することと、
    前記第3のデータを前記第3の物理アドレスに書き込むことであり、前記第3の物理アドレスが、前記第3のグローバルアドレスに割り振られた物理的スペースの位置を示すために使用される、書き込むことと
    を行うように構成されている、
    請求項3に記載のストレージシステム。
  8. 前記データが、前記第1のストレージデバイスに記憶され、前記管理ノードが、
    前記データのアクセス頻度が指定された頻度しきい値よりも低いとき、前記メモリプール内の前記第2のストレージデバイスに前記データを移行するよう前記第1のストレージノードに指示すること
    を行うように特に構成されている、請求項1に記載のストレージシステム。
  9. 前記IOコントローラが、
    前記コンピューティングノードによって送信されたデータ読取り要求を受信することであり、前記データ読取り要求が、前記第1のデータを読み取るために使用され、前記データ読取り要求が、前記第1の論理アドレスを含む、受信することと、
    前記第1の論理アドレスに基づいて、前記メモリプール内の前記第1のデータの前記第1のグローバルアドレスを決定することと、
    前記インデックステーブルに基づいて、前記第1のグローバルアドレスに対応する前記第1の物理アドレスを決定することと、
    前記第1の物理アドレスによって示される前記物理的スペースの位置から前記第1のデータを取得することと
    を行うようにさらに構成されている、
    請求項5に記載のストレージシステム。
  10. 前記IOコントローラが、
    前記第1の論理アドレスに基づいて、前記第1のデータに関連付けられた他のデータを決定することであり、前記他のデータの論理アドレスおよび前記第1の論理アドレスが連続し、前記他のデータが前記メモリプール内の前記第2のストレージデバイスにある、決定することと、
    前記他のデータを取得し、前記他のデータを前記メモリプール内の前記第1のストレージデバイスに移行することと
    を行うようにさらに構成されている、請求項9に記載のストレージシステム。
  11. 前記ストレージシステムが、コンピューティングノードをさらに含み、前記コンピューティングノードが、前記メモリプール内の前記データにアクセスするように構成され、前記コンピューティングノードが、前記第1のストレージノードおよび前記第2のストレージノードから物理的に独立している、請求項1に記載のストレージシステム。
  12. 前記ストレージシステムが、コンピューティングノードをさらに含み、前記コンピューティングノードが、前記メモリプール内の前記データにアクセスするように構成され、前記コンピューティングノードと、前記第1のストレージノードおよび前記第2のストレージノードのうちの1つとが、同じ物理デバイスにある、請求項1に記載のストレージシステム。
  13. メモリ管理方法であって、前記方法が、ストレージシステムに適用され、前記ストレージシステムが、管理ノードと、1つまたは複数の第1のストレージデバイスと、1つまたは複数の第2のストレージデバイスとを含み、前記方法が、
    前記管理ノードによって、データを記憶するためのサービスを提供するためのメモリプールを作成するステップであり、前記メモリプールが、前記1つまたは複数の第1のストレージデバイス、および前記1つまたは複数の第2のストレージデバイスを含み、前記第1のストレージデバイスの性能が、前記第2のストレージデバイスのものよりも高く、前記1つまたは複数の第1のストレージデバイスのうちの少なくとも1つが、第1のストレージノードにあり、前記1つまたは複数の第2のストレージデバイスのうちの少なくとも1つが、第2のストレージノードにある、作成するステップと、
    前記管理ノードによって、前記メモリプール内の前記第1のストレージデバイスと前記第2のストレージデバイスとの間で移行されるように前記データを制御するステップと
    を含む方法。
  14. 前記方法が、
    前記管理ノードによって、前記ストレージデバイスのステータス情報を取得するステップであり、前記ステータス情報が、前記第1のストレージデバイスのタイプおよび容量と、前記第2のストレージデバイスのタイプおよび容量とを含む、取得するステップ
    をさらに含み、
    メモリプールを作成する前記ステップが、前記ステータス情報に基づいて前記メモリプールを作成するステップを特に含む、
    請求項13に記載の方法。
  15. 前記メモリプールのストレージスペースが、いくつかのページを含み、前記メモリプール内のページのグローバルアドレスが、前記ページの物理アドレスにマッピングされ、前記ページの前記グローバルアドレスが、前記メモリプール内の前記ページの位置を示すために使用され、前記ページの前記物理アドレスが、ストレージノード内のストレージデバイス内の前記ページに割り振られた物理的スペースの位置を示すために使用され、前記ページの前記グローバルアドレスと前記ページの前記物理アドレスとの間のマッピング関係が、インデックステーブルに記録される、請求項13に記載の方法。
  16. 前記第1のストレージノードが、前記インデックステーブルを記憶し、前記複数の第2のストレージデバイスのうちの1つが、前記第1のストレージノードにあり、前記方法が、
    前記第1のストレージノードによって、メモリ割振り要求を受信するステップであり、前記メモリ割振り要求が、そのタイプが第2のストレージデバイスであるストレージデバイスから物理的スペースを、前記いくつかのページ内の第1のページの第1のグローバルアドレスに割り振ることを要求するために使用される、受信するステップと、
    前記第1のストレージノードによって、物理的スペースを、前記第1のストレージノード内の前記第2のストレージデバイスから割り振るか、または前記第2のストレージノード内の前記第2のストレージデバイスの物理的スペースを割り振るために前記第2のストレージノードに適用するステップであり、前記第1のストレージノードまたは前記第2のストレージノード内の前記第2のストレージデバイスから割り振られた前記物理的スペースのアドレスが、前記第1のページの第1の物理アドレスである、適用するステップと、前記第1のページの前記グローバルアドレスと前記第1のページの前記第1の物理アドレスとの間のマッピング関係を、前記インデックステーブルに書き込むステップと
    をさらに含む、請求項15に記載の方法。
  17. 前記第1のストレージノードが、IOコントローラを含み、前記IOコントローラが、前記インデックステーブルを記憶し、前記IOコントローラが、コンピューティングノードと通信し、前記方法が、
    前記IOコントローラによって、前記コンピューティングノードによって送信される第1のデータおよび前記第1のデータの第1の論理アドレスを受信するステップと、
    前記IOコントローラによって、前記第1の論理アドレスに基づいて、前記メモリプール内の前記第1のデータの前記第1のグローバルアドレスを決定するステップと、
    前記IOコントローラによって、前記インデックステーブルに基づいて、物理的スペースが前記第1のグローバルアドレスに割り振られているかどうかを決定するステップと、
    前記物理的スペースが前記第1のグローバルアドレスに割り振られていると決定したとき、前記コンピューティングユニットによって、前記第1の物理アドレスによって示される前記物理的スペースに前記第1のデータを書き込むステップと
    をさらに含む、請求項16に記載の方法。
  18. 前記第1のストレージノードが、IOコントローラを含み、前記IOコントローラが、コンピューティングノードと通信し、前記IOコントローラが、前記インデックステーブルを記憶し、前記方法が、
    前記IOコントローラによって、前記コンピューティングノードによって送信される第2のデータおよび前記第2のデータの第2の論理アドレスを受信するステップと、
    前記IOコントローラによって、前記第2の論理アドレスに基づいて、前記第2のデータの第2のグローバルアドレスを決定するステップと、
    前記IOコントローラによって、前記インデックステーブルに基づいて、物理的スペースが前記第2のグローバルアドレスに割り振られているかどうかを決定するステップと、
    物理的スペースが前記第2のグローバルアドレスに割り振られていないと決定したとき、前記IOコントローラによって、前記第1のストレージデバイスから物理的スペースを割り振り、前記第2のグローバルアドレスと前記第2の物理アドレスとの間のマッピング関係を、前記インデックステーブルに書き込み、前記第2のデータを、前記第2の物理アドレスによって示される前記物理的スペースに書き込むステップであり、前記第2の物理アドレスが、前記第1のストレージデバイスから割り振られた前記物理的スペースを示すために使用される、書き込むステップと
    をさらに含む、請求項15に記載の方法。
  19. 前記第1のストレージノードが、IOコントローラを含み、前記IOコントローラが、コンピューティングノードと通信し、前記IOコントローラが、前記インデックステーブルを記憶し、前記方法が、
    前記IOコントローラによって、前記コンピューティングノードによって送信される第3のデータおよび前記第3のデータの第3のグローバルアドレスを受信するステップと、
    前記IOコントローラによって、前記インデックステーブルに基づいて、前記第3のグローバルアドレスに対応する第3の物理アドレスを決定するステップと、
    前記IOコントローラによって、前記第3のデータを前記第3の物理アドレスに書き込むステップであり、前記第2の物理アドレスが、前記第3のグローバルアドレスに割り振られた物理的スペースの位置を示すために使用される、書き込むステップと
    をさらに含む、請求項15に記載の方法。
  20. 前記データが、前記第1のストレージデバイスに記憶され、
    前記メモリプール内の前記第1のストレージデバイスと前記第2のストレージデバイスとの間で移行されるように前記データを制御する前記ステップが、
    前記データのアクセス頻度が指定された頻度しきい値よりも低いとき、前記管理ノードによって、前記データを前記第2のストレージデバイスに移行するよう前記第1のストレージノードに指示するステップ
    を特に含む、
    請求項13に記載の方法。
  21. 前記方法が、
    前記IOコントローラによって、前記コンピューティングノードによって送信されたデータ読取り要求を受信するステップであり、前記データ読取り要求が、前記第1のデータを読み取るために使用され、前記データ読取り要求が、前記第1の論理アドレスを含む、受信するステップと、
    前記IOコントローラによって、前記第1の論理アドレスに基づいて、前記第1のデータの前記第1のグローバルアドレスを決定するステップと、
    前記IOコントローラによって、前記インデックステーブルに基づいて、前記第1のグローバルアドレスに対応する前記第1の物理アドレスを決定するステップと、
    前記IOコントローラによって、前記第1のグローバルアドレスに対応する前記第1の物理アドレスによって示される前記物理的スペースから前記第1のデータを取得するステップと
    をさらに含む、請求項17に記載の方法。
  22. 前記方法が、
    前記IOコントローラによって、前記第1の論理アドレスに基づいて、前記第1のデータに関連付けられた他のデータを決定するステップであり、前記他のデータの論理アドレスおよび前記第1の論理アドレスが連続し、前記他のデータが前記メモリプール内の前記第2のストレージデバイスにある、決定するステップと、
    前記コンピューティングユニットによって、前記他のデータを取得し、前記他のデータを前記メモリプール内の前記第1のストレージデバイスに移行するステップと
    をさらに含む、請求項21に記載の方法。
  23. 管理ノードであって、前記管理ノードが、ストレージシステムにあり、前記ストレージシステムが、1つまたは複数の第1のストレージデバイスと、1つまたは複数の第2のストレージデバイスとを含み、
    前記管理ノードが、作成モジュールと制御モジュールとを含み、
    前記作成モジュールが、データを記憶するためのサービスを提供するためのメモリプールを作成するように構成されており、前記メモリプールが、前記1つまたは複数の第1のストレージデバイス、および前記1つまたは複数の第2のストレージデバイスを含み、前記第1のストレージデバイスの性能が、前記第2のストレージデバイスのものよりも高く、前記1つまたは複数の第1のストレージデバイスのうちの少なくとも1つが、第1のストレージノードにあり、前記1つまたは複数の第2のストレージデバイスのうちの少なくとも1つが、第2のストレージノードにあり、
    前記制御モジュールが、前記メモリプール内の前記第1のストレージデバイスと前記第2のストレージデバイスとの間で移行されるように前記データを制御するように構成されている、
    管理ノード。
  24. 前記作成モジュールが、前記ストレージデバイスのステータス情報を取得するようにさらに構成されており、前記ステータス情報が、前記第1のストレージデバイスのタイプおよび容量と、前記第2のストレージデバイスのタイプおよび容量とを含み、
    前記作成モジュールが、前記ステータス情報に基づいて前記メモリプールを作成するように特に構成されている、
    請求項23に記載の管理ノード。
  25. 前記メモリプールの前記ストレージスペースが、いくつかのページを含み、前記メモリプール内のページのグローバルアドレスが、前記ページの物理アドレスにマッピングされ、前記ページの前記グローバルアドレスが、前記メモリプール内の前記ページの位置を示すために使用され、前記ページの前記物理アドレスが、ストレージノード内のストレージデバイス内の前記ページに割り振られた物理的スペースの位置を示すために使用される、請求項23に記載の管理ノード。
  26. 前記データが、前記第1のストレージデバイスに記憶され、前記制御モジュールが、
    前記データのアクセス頻度が指定された頻度しきい値よりも低いとき、前記メモリプール内の前記第2のストレージデバイスに前記データを移行するよう前記第1のストレージノードに指示すること
    を行うように特に構成されている、請求項23に記載の管理ノード。
  27. 管理ノードであって、前記管理ノードが、ストレージシステムにあり、前記ストレージシステムが、1つまたは複数の第1のストレージデバイスと、1つまたは複数の第2のストレージデバイスとを含み、
    前記管理ノードが、インターフェースとプロセッサとを含み、
    前記プロセッサが、
    データを記憶するためのサービスを提供するためのメモリプールを作成することであり、前記メモリプールが、前記1つまたは複数の第1のストレージデバイス、および前記1つまたは複数の第2のストレージデバイスを含み、前記第1のストレージデバイスの性能が、前記第2のストレージデバイスのものよりも高く、前記1つまたは複数の第1のストレージデバイスのうちの少なくとも1つが、第1のストレージノードにあり、前記1つまたは複数の第2のストレージデバイスのうちの少なくとも1つが、第2のストレージノードにある、作成することと、
    前記メモリプール内の前記第1のストレージデバイスと前記第2のストレージデバイスとの間で移行されるように前記データを制御することと
    を行うように構成されており、
    前記インターフェースが、前記第1のストレージノードおよび前記第2のストレージノードと通信するように構成されている、
    管理ノード。
  28. 前記プロセッサが、前記インターフェースを介して前記ストレージデバイスのステータス情報を取得するようにさらに構成されており、前記ステータス情報が、前記第1のストレージデバイスのタイプおよび容量と、前記第2のストレージデバイスのタイプおよび容量とを含み、
    前記プロセッサが、前記ステータス情報に基づいて前記メモリプールを作成するように特に構成されている、
    請求項27に記載の管理ノード。
  29. 前記メモリプールのストレージスペースが、いくつかのページを含み、前記メモリプール内のページのグローバルアドレスが、前記ページの物理アドレスにマッピングされ、前記ページの前記グローバルアドレスが、前記メモリプール内の前記ページの位置を示すために使用され、前記ページの前記物理アドレスが、ストレージノード内のストレージデバイス内の前記ページに割り振られた物理的スペースの位置を示すために使用される、請求項27に記載の管理ノード。
  30. 前記データが、前記第1のストレージデバイスに記憶され、前記プロセッサが、
    前記データのアクセス頻度が指定された頻度しきい値よりも低いとき、前記メモリプール内の前記第2のストレージデバイスに前記データを移行するよう前記第1のストレージノードに指示すること
    を行うように特に構成されている、請求項27に記載の管理ノード。
  31. コンピュータ可読ストレージ媒体であって、前記コンピュータ可読ストレージ媒体がプログラム命令を記憶し、前記プログラム命令が、以下の方法、
    データを記憶するためのサービスを提供するためのメモリプールを作成するステップであり、前記メモリプールが、1つまたは複数の第1のストレージデバイス、および1つまたは複数の第2のストレージデバイスを含み、前記第1のストレージデバイスの性能が、前記第2のストレージデバイスのものよりも高く、前記1つまたは複数の第1のストレージデバイスのうちの少なくとも1つが、第1のストレージノードにあり、前記1つまたは複数の第2のストレージデバイスのうちの少なくとも1つが、第2のストレージノードにある、作成するステップと、
    前記メモリプール内の前記第1のストレージデバイスと前記第2のストレージデバイスとの間で移行されるように前記データを制御するステップと
    を実行するために使用される、コンピュータ可読ストレージ媒体。
  32. 前記ストレージデバイスのステータス情報を取得することであり、前記ステータス情報が、前記第1のストレージデバイスのタイプおよび容量と、前記第2のストレージデバイスのタイプおよび容量とを含む、取得すること
    をさらに含み、
    メモリプールを前記作成することが、前記ステータス情報に基づいて前記メモリプールを作成することを特に含む、
    請求項31に記載のコンピュータ可読ストレージ媒体。
  33. 前記メモリプールのストレージスペースが、いくつかのページを含み、前記メモリプール内のページのグローバルアドレスが、前記ページの物理アドレスにマッピングされ、前記ページの前記グローバルアドレスが、前記メモリプール内の前記ページの位置を示すために使用され、前記ページの前記物理アドレスが、ストレージノード内のストレージデバイス内の前記ページに割り振られた物理的スペースの位置を示すために使用される、請求項31に記載のコンピュータ可読ストレージ媒体。
  34. 前記メモリプール内の前記第1のストレージデバイスと前記第2のストレージデバイスとの間で移行されるように前記データを制御する前記ステップが、
    前記データのアクセス頻度が指定された頻度しきい値よりも低いとき、前記データを前記第2のストレージデバイスに移行するよう前記第1のストレージノードに指示するステップ
    を特に含む、
    請求項31に記載のコンピュータ可読ストレージ媒体。
JP2021569533A 2020-04-28 2020-10-07 ストレージシステム、メモリ管理方法、および管理ノード Active JP7482905B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
CN202010348770 2020-04-28
CN202010348770.0 2020-04-28
CN202010625111.7A CN113568562A (zh) 2020-04-28 2020-07-01 一种存储系统、内存管理方法和管理节点
CN202010625111.7 2020-07-01
PCT/CN2020/119857 WO2021218038A1 (zh) 2020-04-28 2020-10-07 一种存储系统、内存管理方法和管理节点

Publications (3)

Publication Number Publication Date
JP2022539950A true JP2022539950A (ja) 2022-09-14
JPWO2021218038A5 JPWO2021218038A5 (ja) 2023-06-14
JP7482905B2 JP7482905B2 (ja) 2024-05-14

Family

ID=

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080301256A1 (en) * 2007-05-30 2008-12-04 Mcwilliams Thomas M System including a fine-grained memory and a less-fine-grained memory
WO2014174653A1 (ja) * 2013-04-26 2014-10-30 株式会社日立製作所 ストレージシステム
JP2017515242A (ja) * 2014-05-06 2017-06-08 華為技術有限公司Huawei Technologies Co.,Ltd. メモリ管理方法およびデバイス
JP2019500705A (ja) * 2015-10-01 2019-01-10 ティダルスケール・インコーポレーテッドTidalscale Incorporated 選択的リソースマイグレーションを用いるネットワーク接続型メモリ
US20190018785A1 (en) * 2017-07-14 2019-01-17 Arm Limited Memory system for a data processing network
JP2020060983A (ja) * 2018-10-10 2020-04-16 株式会社日立製作所 ストレージシステム及びストレージ制御方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080301256A1 (en) * 2007-05-30 2008-12-04 Mcwilliams Thomas M System including a fine-grained memory and a less-fine-grained memory
WO2014174653A1 (ja) * 2013-04-26 2014-10-30 株式会社日立製作所 ストレージシステム
JP2017515242A (ja) * 2014-05-06 2017-06-08 華為技術有限公司Huawei Technologies Co.,Ltd. メモリ管理方法およびデバイス
JP2019500705A (ja) * 2015-10-01 2019-01-10 ティダルスケール・インコーポレーテッドTidalscale Incorporated 選択的リソースマイグレーションを用いるネットワーク接続型メモリ
US20190018785A1 (en) * 2017-07-14 2019-01-17 Arm Limited Memory system for a data processing network
JP2020060983A (ja) * 2018-10-10 2020-04-16 株式会社日立製作所 ストレージシステム及びストレージ制御方法

Also Published As

Publication number Publication date
CN114860163A (zh) 2022-08-05
CN114610232A (zh) 2022-06-10
CN114860163B (zh) 2023-08-22
US20220057954A1 (en) 2022-02-24
US20240094936A1 (en) 2024-03-21
EP3958107A1 (en) 2022-02-23
EP3958107A4 (en) 2022-08-17
WO2021218038A1 (zh) 2021-11-04
US11861204B2 (en) 2024-01-02
CN113568562A (zh) 2021-10-29

Similar Documents

Publication Publication Date Title
CN114860163B (zh) 一种存储系统、内存管理方法和管理节点
US10891055B2 (en) Methods, systems and devices relating to data storage interfaces for managing data address spaces in data storage devices
KR101726824B1 (ko) 캐시 아키텍처에서 하이브리드 미디어의 효율적인 사용
US9141529B2 (en) Methods and apparatus for providing acceleration of virtual machines in virtual environments
US8566550B2 (en) Application and tier configuration management in dynamic page reallocation storage system
JP6785204B2 (ja) メモリシステムおよび制御方法
JP2019008729A (ja) メモリシステムおよび制御方法
US8694563B1 (en) Space recovery for thin-provisioned storage volumes
WO2022095346A1 (zh) 一种区块链数据存储方法、系统、设备及可读存储介质
US11409454B1 (en) Container ownership protocol for independent node flushing
US10853252B2 (en) Performance of read operations by coordinating read cache management and auto-tiering
Guo et al. HP-mapper: A high performance storage driver for docker containers
WO2023045492A1 (zh) 一种数据预取方法、计算节点和存储系统
JP7482905B2 (ja) ストレージシステム、メモリ管理方法、および管理ノード
US10853257B1 (en) Zero detection within sub-track compression domains
US11144445B1 (en) Use of compression domains that are more granular than storage allocation units
US11853574B1 (en) Container flush ownership assignment
US20240134712A1 (en) Techniques for efficient flushing and providing optimal resource utilization
US20240111429A1 (en) Techniques for collecting and utilizing activity metrics
KR102149468B1 (ko) 통합 캐시를 하나 또는 복수의 논리 유닛에 동적 할당하는 시스템 및 방법
US11687359B2 (en) Hybrid memory management apparatus and method for many-to-one virtualization environment
JP7102482B2 (ja) メモリシステムおよび制御方法
EP4239462A1 (en) Systems and methods for heterogeneous storage systems
JP2022061706A (ja) 計算機システム及び負荷分散方法
KR20210058609A (ko) Numa 시스템에서 메모리 버스에 연결하여 사용하는 저장장치의 할당 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230306

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20230606

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20230919

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240119

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20240213

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240401

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240430