JP2022541261A - リソース割振り方法、記憶デバイス、および記憶システム - Google Patents

リソース割振り方法、記憶デバイス、および記憶システム Download PDF

Info

Publication number
JP2022541261A
JP2022541261A JP2022502969A JP2022502969A JP2022541261A JP 2022541261 A JP2022541261 A JP 2022541261A JP 2022502969 A JP2022502969 A JP 2022502969A JP 2022502969 A JP2022502969 A JP 2022502969A JP 2022541261 A JP2022541261 A JP 2022541261A
Authority
JP
Japan
Prior art keywords
allocated
address
address segment
virtual
resources
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
JP2022502969A
Other languages
English (en)
Other versions
JP7467593B2 (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 JP2022541261A publication Critical patent/JP2022541261A/ja
Application granted granted Critical
Publication of JP7467593B2 publication Critical patent/JP7467593B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool

Landscapes

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

Abstract

リソース割振り方法および記憶デバイスが提供される。記憶デバイスはディスク筐体と複数のコントローラとを含む。各コントローラは複数のプロセッサを含み、各プロセッサは複数のプロセッサコアを含み、複数のコントローラはディスク筐体に別々に結合され、ディスク筐体は複数のハードディスクを含む。複数のプロセッサは、コンピューティングリソースを提供するように構成される。複数のハードディスクは、記憶空間を提供するように構成される。記憶空間に対応する論理アドレスはいくつかのアドレスセグメントセットに分類され、各アドレスセグメントセットは1つまたは複数のアドレスセグメントを含み、コンピューティングリソースのうちのいくつかは各アドレスセグメントセットに割り振られ、いくつかのコンピューティングリソースはアドレスセグメントセットに含まれるアドレスセグメントにアクセスするためのデータアクセス要求を実行するために使用される。異なるアドレスセグメントセットを処理するために使用されるコンピューティングリソースは異なるプロセッサからのものであるか、または異なるアドレスセグメントセットを処理するために使用されるコンピューティングリソースは異なるプロセッサコアからのものである。したがって、プロセッサ間のより少ない帯域幅リソースが使用される必要がある。

Description

本出願は記憶の分野に関し、より具体的には、リソース割振り方法、記憶デバイス、および記憶システムに関する。
現在の記憶ノードは通常、複数のコントローラを有し、各コントローラは複数のプロセッサを含む。記憶ノードがサービス要求を実行するとき、複数のプロセッサは通常、サービス要求をスプリットすることによって取得された複数のサブ要求を並行して処理する必要がある。これらのサブ要求は互いに関連付けられるので、複数のプロセッサ間のサブ要求の転送およびデータ対話が必要とされ、プロセッサ間の帯域幅リソースが占有される。
本出願は、プロセッサ間の帯域幅リソースをどのように節約するかという問題を解決することを主に目的とする。
第1の態様によれば、ディスク筐体と複数のコントローラとを含む記憶デバイスが提供される。各コントローラは複数のプロセッサを含み、各プロセッサは複数のプロセッサコアを含み、複数のコントローラはディスク筐体に別々に結合され、ディスク筐体は複数のハードディスクを含む。複数のプロセッサは、コンピューティングリソースを提供するように構成される。複数のハードディスクは、記憶空間を提供するように構成される。記憶空間に対応する論理アドレスはいくつかのアドレスセグメントセットに分類され、各アドレスセグメントセットは1つまたは複数のアドレスセグメントを含み、コンピューティングリソースのうちのいくつかは各アドレスセグメントセットに割り振られ、いくつかのコンピューティングリソースはアドレスセグメントセットに含まれるアドレスセグメントにアクセスするためのデータアクセス要求を実行するために使用される。異なるアドレスセグメントセットに割り振られたコンピューティングリソースは異なるプロセッサからのものであるか、または異なるアドレスセグメントセットに割り振られたコンピューティングリソースは異なるプロセッサコアからのものである。
第1の態様におけるアドレスセグメントの場合、記憶空間が論理ユニットLUNに仮想化されるので、LUNは記憶デバイスによってユーザに提供され、LUNに対応するアドレスはいくつかの論理ブロックアドレスLBA間隔に分類され、各アドレスセグメントは1つのLBA間隔である。
第1の態様は、実際には2つの特定の実装形態を提供する。一方の実装形態では、異なるアドレスセグメントセットを処理するために使用されるコンピューティングリソースは異なるプロセッサからのものである。アドレスセグメントにアクセスするために使用されるデータアクセス要求は割り振られたプロセッサによって実行され、異なるCPUは異なるアドレスセグメントセットに割り振られるので、データアクセス要求は複数のプロセッサ間で転送されることが阻止され得、プロセッサ間のより少ない帯域幅リソースが使用される必要がある。他方の実装形態では、異なるアドレスセグメントセットを処理するために使用されるコンピューティングリソースは異なるプロセッサコアからのものである。アドレスセグメントにアクセスするために使用されるデータアクセス要求は割り振られたプロセッサコアによって実行されるので、上記の実装形態と比較して、異なるアドレスセグメントセットに対するデータアクセス要求はより細かい粒度で分離され、データアクセス要求はデータアクセス要求に割り振られたプロセッサコアによって連続して実行され、それによって相互排他的動作を低減し、ロックフリー設計を実装する。
任意選択の実装形態では、各プロセッサはメモリを有し、コンピューティングリソースは複数のプロセッサに含まれる複数のメモリをさらに含み、1つのメモリは1つのアドレスセグメントセットに割り振られる。異なるメモリは異なるアドレスセグメントセットに割り振られる。
任意選択の実装形態では、各アドレスセグメントセットに割り振られたメモリは、アドレスセグメントセットに割り振られたプロセッサのローカルメモリである。実際の適用シナリオでは、プロセッサは、プロセッサのローカルメモリとも呼ばれるメモリを有する。ローカルメモリは通常、プロセッサとともに構成要素に統合されるか、またはプロセッサに直接もしくは間接的に結合される。この場合、メモリ割振りの間に、アドレスセグメントセットに割り振られたプロセッサのローカルメモリは、アドレスセグメントセットに優先的に割り振られ得る。プロセッサの近くのローカルメモリを使用することは、CPU間データ伝送を回避することができる。
任意選択の実装形態では、記憶デバイスはネットワークリソースをさらに含み、ネットワークリソースは複数のコントローラとディスク筐体との間の複数の接続によって提供され、ネットワークリソースのうちのいくつかは各アドレスセグメントセットに割り振られる。異なる接続は異なるアドレスセグメントセットに割り振られる。
任意選択の実装形態では、記憶空間は複数のチャンクグループを含み、複数のチャンクグループは記憶リソースを提供し、記憶リソースのうちのいくつかは各アドレスセグメントセットに割り振られる。異なるアドレスセグメントセットは異なるチャンクグループに割り振られる。
任意選択の実装形態では、記憶デバイスはフロントエンドインターフェースカードをさらに含み、複数のコントローラはフロントエンドインターフェースカードに別々に結合され、フロントエンドインターフェースカードはマッピングテーブルを記憶し、マッピングテーブルは、各アドレスセグメントセットと割り振られたコンピューティングリソースとの間のマッピング関係を示すために使用される。
任意選択で、マッピングテーブルは、各アドレスセグメントセットと割り振られたネットワークリソースとの間のマッピング関係を示すためにさらに使用される。
任意選択で、マッピングテーブルは、各アドレスセグメントセットと割り振られたハードディスクリソースとの間のマッピング関係を示すためにさらに使用される。
任意選択の実装形態では、いくつかの仮想ノードは記憶デバイス内で作成され、1つの仮想ノードは事前設定されたアルゴリズムを使用することによって1つのアドレスセグメントセットにマッピングされ、マッピングテーブルは、各仮想ノードと仮想ノードがマッピングされたアドレスセグメントセットに割り振られたコンピューティングリソースとの間のマッピング関係を記録する。
任意選択で、マッピングテーブルは、各仮想ノードと仮想ノードがマッピングされたアドレスセグメントセットに割り振られたネットワークリソースとの間のマッピング関係をさらに記録する。
任意選択で、マッピングテーブルは、各仮想ノードと仮想ノードがマッピングされたアドレスセグメントセットに割り振られたハードディスクリソースとの間のマッピング関係をさらに記録する。
任意選択の実装形態では、記憶デバイスは新たに追加されたコントローラをさらに含み、新たに追加されたコントローラはプロセッサを含み、新たに追加されたコントローラはディスク筐体に結合される。新たに追加されたコントローラは、新たに追加されたコントローラに含まれるプロセッサをコンピューティングリソースとして使用し、プロセッサをアドレスセグメントセット内の第1のアドレスセグメントに割り振り、第1のアドレスセグメントとアドレスセグメントセットに割り振られたコンピューティングリソースとの間の割振り関係を解放するように構成される。新しいリソースが記憶システムに追加されるとき、この実装形態はアドレスセグメントと元のリソースとの間のマッピング関係をよりわずかに変更することができる。
本出願の第2の態様によれば、リソース割振り方法が提供される。方法は、第1の態様の実装形態のうちのいずれか1つにおいて提供される記憶デバイスに適用され、記憶デバイスの機能を実装するために使用される。
本出願の第3の態様によれば、コンピュータプログラム製品が提供される。コンピュータプログラム製品が記憶デバイス上で実行されるとき、記憶デバイスは第2の態様におけるリソース割振り方法を実施することを可能にされる。
本出願の第4の態様によれば、コンピュータ可読記憶媒体が提供される。コンピュータ可読記憶媒体は命令を記憶し、命令が記憶デバイス上で実行されるとき、記憶デバイスは第2の態様におけるリソース割振り方法を実施することを可能にされる。
本出願の第5の態様によれば、記憶ノードが提供される。記憶ノードは複数のコントローラを含む。複数の仮想ノードは記憶ノード内で作成され、コンピューティングリソースは仮想ノードに事前に割り振られ、コンピューティングリソースはコンピューティングリソースプールからのものである。記憶ノードによって受信されたいくつかのデータアクセス要求は、複数の仮想ノードにルーティングされる。各データアクセス要求は1つの仮想ノードに対応し、各データアクセス要求は対応する仮想ノードに割り振られたコンピューティングリソースを使用することによって実行される。複数のコントローラはコンピューティングリソースをコンピューティングリソースプールに提供するように構成され、コンピューティングリソースは複数のコントローラに含まれる複数のプロセッサによって提供される。1つのプロセッサは1つの仮想ノードに割り振られ、異なるプロセッサは異なる仮想ノードに割り振られる。代替として、1つのプロセッサは複数の仮想ノードに割り振られ、異なるプロセッサコアは異なる仮想ノードに割り振られる。
第5の態様の任意選択の実装形態では、各プロセッサはメモリを有し、コンピューティングリソースプールは複数のプロセッサに含まれる複数のメモリをさらに含む。1つのメモリは1つの仮想ノードに割り振られ、異なるメモリは異なる仮想ノードに割り振られる。
第5の態様の任意選択の実装形態では、各仮想ノードに割り振られたメモリは、仮想ノードに割り振られたプロセッサのローカルメモリである。
第5の態様の任意選択の実装形態では、複数のコントローラはディスク筐体に別々に結合され、ディスク筐体は複数のハードディスクを含む。ネットワークリソースはさらに仮想ノードに事前に割り振られ、ネットワークリソースはネットワークリソースプールからのものであり、ネットワークリソースプールは複数のコントローラとディスク筐体との間の接続によって提供される。各仮想ノードは1つまたは複数の接続に対応し、異なる接続は異なる仮想ノードに割り振られる。
第5の態様の任意選択の実装形態では、ハードディスクリソースはさらに仮想ノードに事前に割り振られ、ハードディスクリソースはハードディスクリソースプールからのものであり、ハードディスクリソースプールは複数のハードディスクによって提供される。各仮想ノードは1つまたは複数のチャンクグループに対応し、異なるチャンクグループは異なる仮想ノードに割り振られる。
第5の態様の任意選択の実装形態では、記憶ノードはフロントエンドインターフェースカードをさらに含み、フロントエンドインターフェースカードは複数のコントローラに結合され、フロントエンドインターフェースカードは、各仮想ノードと割り振られたコンピューティングリソースとの間の対応、および/または、各仮想ノードと割り振られたネットワークリソースとの間の対応、および/または、各仮想ノードと割り振られたハードディスクリソースとの間の対応を記憶する。
第5の態様の任意選択の実装形態では、フロントエンドインターフェースカードは、ホストによって送信された第1のデータアクセス要求を受信することであって、データアクセス要求が仮想アドレスを含む、受信することと、仮想アドレスに基づいて、第1のデータアクセス要求に対応する第1の仮想ノードを決定することと、記憶された対応に基づいて、第1の仮想ノードに割り振られた第1のプロセッサを決定することと、第1のデータアクセス要求を第1のプロセッサに転送することとを行うようにさらに構成される。第1のプロセッサは、第1のデータアクセス要求を処理するように構成される。
第5の態様の任意選択の実装形態では、第1のデータアクセス要求が処理されるときに使用されるデータまたはメタデータは、第1の仮想ノードに対応する第1のメモリに一時的に記憶される。
第5の態様の任意選択の実装形態では、第1のプロセッサは、第1のデータアクセス要求が書き込むことを要求するデータが第1の仮想ノードに割り振られた第1のチャンクグループに書き込まれるように、そのデータを、第1の仮想ノードに割り振られた第1の接続を通じてディスク筐体に送信するか、または、第1のデータアクセス要求が読み取ることを要求するデータを、第1の接続を通じて第1のメモリに書き込むようにさらに構成される。
本出願の第6の態様によれば、別のリソース管理方法が提供される。方法は記憶ノードに適用され、記憶ノードは複数のコントローラを含み、各コントローラは複数のプロセッサを含む。方法は、複数の仮想ノードを作成するステップと、コンピューティングリソースを仮想ノードに割り振るステップとを含む。記憶ノードによって受信されたいくつかのデータアクセス要求は複数の仮想ノードにルーティングされ、各データアクセス要求は1つの仮想ノードに対応し、各データアクセス要求は対応する仮想ノードに割り振られたコンピューティングリソースを使用することによって実行される。複数のプロセッサの各々は複数の仮想ノードのうちの1つに割り振られ、異なるプロセッサは異なるノードに割り振られる。
第6の態様の任意選択の実装形態では、コンピューティングリソースはコンピューティングリソースプールからのものであり、コンピューティングリソースプール内のコンピューティングリソースは複数のコントローラによって提供され、コンピューティングリソースプールは複数のプロセッサを含む。
第6の態様の任意選択の実装形態では、複数の仮想ノードを作成するステップは、記憶ノードに含まれるプロセッサの量に基づいて複数の仮想ノードを作成するステップを含む。複数の仮想ノードの量は、複数の記憶ノードに含まれるプロセッサの量よりも少ないかまたはそれに等しい。
本出願の第7の態様によれば、コンピュータプログラム製品が提供される。コンピュータプログラム製品が記憶ノードのコントローラ上で実行されるとき、コントローラは第6の態様におけるリソース割振り方法を実施することを可能にされる。
本出願の第8の態様によれば、コンピュータ可読記憶媒体が提供される。コンピュータ可読記憶媒体は命令を記憶し、命令が記憶ノードのコントローラ上で実行されるとき、コントローラは第7の態様におけるリソース割振り方法を実施することを可能にされる。
本出願の第9の態様によれば、ホストと、複数の記憶ノードとを含む記憶システムが提供される。複数の記憶ノードによって提供された記憶空間はいくつかのアドレスセグメントセットに分類され、各アドレスセグメントセットは1つまたは複数のアドレスセグメントを含む。ホストは、データアクセス要求を生成することであって、データアクセス要求が仮想アドレスを含む、生成することと、仮想アドレスに基づいて、ターゲットデータに対応するアドレスセグメントセットを決定することであって、アドレスセグメントセットが、データアクセス要求を処理するターゲット記憶ノードを示し、ターゲット記憶ノードが、複数の記憶ノードのうちの1つである、決定することと、ターゲットデータに対応するアドレスセグメントセットに事前に割り振られたリソースを使用することによってターゲット記憶ノードがデータアクセス要求を処理するように、データアクセス要求をターゲット記憶ノードに送信することとを行うように構成される。データアクセス要求に対してターゲット記憶ノードによって実施される処理は、第1の態様における処理と同様である。
本出願の第10の態様によれば、データ処理方法が提供される。方法は、第1の態様において提供される記憶デバイスに適用され得るか、または第5の態様において提供される記憶ノードに適用され得るか、または記憶システムに適用され得る。方法は、データアクセス要求を受信するステップであって、要求が仮想アドレスを搬送する、ステップと、仮想アドレスに基づいてアドレスセグメントセットまたは仮想ノードを一意に決定するステップであって、コンピューティングリソースがアドレスセグメントセット(または仮想ノード)に割り振られる、ステップと、割り振られたコンピューティングリソースを使用することによってデータアクセス要求を処理するステップとを含む。
第10の態様の任意選択の実装形態では、ネットワークリソースおよびハードディスクリソースはアドレスセグメントセット(または仮想ノード)にさらに割り振られ、方法は、割り振られたネットワークリソースを使用することによってハードディスクリソースからデータを読み取るステップ、または書込み対象データをハードディスクリソースに記憶するステップをさらに含む。
本出願において提供される記憶システムによれば、異なるプロセッサは異なるアドレスセグメントセットにアクセスするためのデータアクセス要求に割り振られ、その結果として、プロセッサ間の要求またはデータ転送がある程度回避され得、それによってプロセッサ間の帯域幅リソースを節約する。代替として、異なるプロセッサコアは異なるアドレスセグメントセットにアクセスするためのデータアクセス要求に割り振られ、その結果として、プロセッサコア間の要求またはデータ転送がさらに回避され得る。加えて、異なるアドレスセグメントセットにアクセスするためのデータアクセス要求に割り振られたリソースは互いに独立しており、その結果として、より少ない相互排他的動作が実施され得、ロックフリー設計が実装され得る。
本出願の第11の態様によれば、記憶ノードの容量拡張方法が提供される。記憶ノードは第1のコントローラを含み、第1のコントローラは複数のプロセッサを含む。第2のコントローラが記憶ノードに追加されるとき、第2の仮想ノードセットが作成される。第2のコントローラは複数のプロセッサを含み、第2の仮想ノードセットは複数の第2の仮想ノードを含む。第2の仮想ノードセットが作成される前に、記憶ノード内に第1の仮想ノードセットがある。第1の仮想ノードセットは複数の第1の仮想ノードを含み、記憶ノードによって受信されたいくつかのデータアクセス要求は複数の第1の仮想ノードにルーティングされる。第2のコントローラに含まれる複数のプロセッサはコンピューティングリソースプールに追加され、コンピューティングリソースプールは第1のコントローラによって提供された複数のプロセッサを含む。コンピューティングリソースは複数の第2の仮想ノードに割り振られ、割り振られたコンピューティングリソースはコンピューティングリソースプールからのものである。1つのプロセッサは各第2の仮想ノードに割り振られ、異なるプロセッサは異なる第2の仮想ノードに割り振られる。第1の仮想ノードセットにルーティングされた複数のデータアクセス要求のうちのいくつかは、第2の仮想ノードセットに再割り振りされる。
本出願の第12の態様によれば、第11の態様において提供される方法を実装するように構成された記憶ノードが提供される。
本出願の第11の態様において提供される記憶ノードの容量拡張方法および本出願の第12の態様において提供される記憶ノードによれば、いくつかの仮想ノードが作成され、リソースが仮想ノードに割り振られる。記憶ノードのコンピューティングリソースの量が増加するとき、仮想ノードの量はそれに対応して増加することができ、新たに追加されたコンピューティングリソースは新たに追加された仮想ノードに割り振られ、元の仮想ノードにルーティングされたデータアクセス要求のうちのいくつかは新たに追加された仮想ノードに再割り振りされ得る。このようにして、記憶ノード全体の処理能力も増加する。したがって、ハードウェアリソースの量が増加するとき、記憶ノードの処理能力も直線的に増加する。
本発明の実施形態における技術的解決策が適用され得るシナリオの概略図である。 本発明の一実施形態による、記憶ノードの概略構造図である。 本発明の一実施形態による、仮想ノード、プロセッサリソース、およびメモリリソースの間の関係の概略図である。 本発明の一実施形態による、仮想ノードとネットワークリソースとの間の関係の概略図である。 本発明の一実施形態による、仮想ノードとハードディスクリソースとの間の関係の概略図である。 本発明の一実施形態による、仮想ノードに含まれるリソースの概略図である。 本発明の一実施形態による、書込み要求処理の概略フローチャートである。 本発明の一実施形態による、CPUコアのパケットスケジューリングの概略図である。 本発明の一実施形態による、あるタイプの容量拡張の概略図である。 本発明の一実施形態による、容量拡張方法の概略フローチャートである。 本発明の一実施形態による、別のタイプの容量拡張の概略図である。 本発明の一実施形態による、別の容量拡張方法の概略フローチャートである。
本出願は、プロセッサ間の帯域幅リソースをどのように節約するかという問題を解決することを主に目的とする。以下では、添付の図面を参照しながら本出願の技術的解決策について説明する。
図1は、本出願の実施形態における技術的解決策が適用され得るシナリオの概略図である。図1に示すように、ホスト11は記憶システムと通信し、記憶システムは複数の記憶ノード(または略して「ノード」と呼ばれる)100を含む。各記憶ノード100は1つの記憶エンジン(略してエンジンと呼ばれる)であり、各ノード100は複数のコントローラ103を含む。各コントローラ103は複数のプロセッサを含み、各プロセッサは複数のプロセッサコアを含む。加えて、各ノード100はフロントエンドインターフェースカード101およびバックエンドインターフェースカード102を有する。フロントエンドインターフェースカード101はノード100とホスト11との間の通信に使用され、バックエンドインターフェースカード102はノード100と複数のディスク筐体との間の通信に使用される。各ディスク筐体は複数のハードディスク107を含む。ハードディスクはデータを記憶するように構成され、ディスクまたは別のタイプの記憶媒体、たとえば、ソリッドステートドライブまたはシングル磁気記録ハードディスクであってもよい。各ノード100内のコントローラ103がフロントエンドインターフェースカード101またはバックエンドインターフェースカード102を使用することによってサービスを受信および送信することができることを保証するために、フロントエンドインターフェースカード101は、各ノードに含まれる複数のコントローラ103に内部ネットワークチャネルを通じて直接接続され、バックエンドインターフェースカード102も、各ノードに含まれる複数のコントローラ103に内部ネットワークチャネルを通じて直接接続される(図1はいくつかの接続のみを示す)。加えて、各ノード100は、ノード間のデータ共有を実装するために、バックエンドインターフェースカード102を使用することによってディスク筐体に接続され得る。いくつかの適用シナリオでは、1つまたは複数の記憶ノード100およびディスク筐体は記憶デバイスと総称されることがある。
コントローラ103はコンピューティングデバイス、たとえば、サーバまたはデスクトップコンピュータである。ハードウェアに関して、図2に示すように、コントローラ103は少なくともプロセッサ104、メモリ105、およびバス106を含む。プロセッサ104は中央処理ユニット(英語: central processing unit、CPU)であり、ノード100からのI/O要求またはコントローラ103において生成された要求を処理するように構成される。1つのコントローラ103は複数のプロセッサ104を含んでもよく、各プロセッサは複数のプロセッサコア(図には示されていない)を含む。メモリ105は、ホスト11から受信されたデータまたはハードディスクから読み取られたデータを一時的に記憶するように構成される。ホスト11によって送信された複数の書込み要求を受信するとき、コントローラ103は複数の書込み要求内のデータをメモリ105に一時的に記憶してもよい。メモリ105の容量が特定のしきい値に達したとき、メモリ105に記憶されたデータは記憶のためにハードディスクに送信される。メモリ105は、揮発性メモリ、不揮発性メモリ、またはそれらの組合せを含む。揮発性メモリは、たとえば、ランダムアクセスメモリ(英語: random-access memory、RAM)である。不揮発性メモリは、たとえば、フラッシュメモリチップ、フロッピーディスク、ハードディスク、ソリッドステートディスク(solid state disk、SSD)、または光ディスクなどの、プログラムコードを記憶することができる任意の機械可読媒体である。メモリ105はパワーオフ保護機能を有する。パワーオフ保護機能は、システムが電源切断され、次いで再度電源投入されたときに、メモリ105に記憶されたデータが失われないことを意味する。バス106は、コントローラ103内の構成要素間の通信を実装するように構成される。
コントローラ103によってホスト11に提供される記憶空間は複数のハードディスク107からのものであるが、ハードディスクによって提供される記憶空間の実際のアドレスはコントローラ103またはホスト11に直接曝されない。実際の適用例では、物理記憶空間はホスト11に提供されるいくつかの論理ユニット(logical unit、LU)に仮想化され、各論理ユニットは一意の論理ユニット番号(logical unit number、LUN)を有する。ホスト11は論理ユニット番号を直接検知することができるので、当業者は通常、直接的にLUNを論理ユニットと呼ぶ。各LUNは、LUNを識別するために使用されるLUN IDを有する。LUN内のデータの特定のロケーションは、開始アドレスおよびデータの長さ(length)に基づいて決定され得る。当業者は通常、開始アドレスを論理ブロックアドレス(logical block address、LBA)と呼ぶ。3つの要因、すなわち、LUN ID、LBA、およびlengthが特定のアドレスセグメントを識別することが理解され得る。ホスト11はデータアクセス要求を生成し、データアクセス要求は通常、LUN ID、LBA、およびlengthを搬送する。説明しやすいように、この実施形態では、LUN ID、LBA、およびlengthは仮想アドレスと呼ばれる。要求によってアクセスされることになるLUNおよびLUNの特定のロケーションが仮想アドレスに基づいて決定され得ることは、上記の説明から知られ得る。コントローラ103は、仮想アドレスとデータがハードディスクに記憶されるアドレスとの間の対応を記憶する。したがって、データアクセス要求を受信した後、コントローラ103は、その対応に基づいて対応する物理アドレスを決定し、データを読み取るまたは書き込むためのハードディスクを示し得る。
データが各記憶ノード100に均等に記憶されることを保証するために、記憶ノードが選択されるとき、通常、ルーティングするために分散ハッシュテーブル(Distributed Hash Table、DHT)方式が使用される。分散ハッシュテーブル方式では、ハッシュリングはいくつかの部分に均等に分割され、各部分は1つのパーティションと呼ばれ、1つのパーティションは上記で説明した1つのアドレスセグメントに対応する。ホスト11によって記憶システムに送信されたすべてのデータアクセス要求は、1つのアドレスセグメントに対して位置する。たとえば、データはアドレスセグメントから読み取られるか、またはデータはアドレスセグメントに書き込まれる。これらのデータアクセス要求を処理するために、記憶システム内のCPUリソース、メモリリソース、および別のリソースが使用される必要がある(当業界において、CPUリソースおよびメモリリソースは通常、組み合わされてコンピューティングリソースになる)ことを理解されたい。CPUリソースおよびメモリリソースは、コントローラ103によって提供される。記憶ノードは通常、複数のコントローラ103を有し、各コントローラ103は複数のプロセッサを含む。記憶ノードがサービス要求を実行するとき、複数のプロセッサは通常、サービス要求をスプリットすることによって取得された複数のサブ要求を並行して処理する必要がある。これらのサブ要求は互いに関連付けられるので、複数のプロセッサ間のサブ要求の転送およびデータ対話が必要とされ、プロセッサ間の帯域幅リソースが占有される。
この問題を解決するために、本出願のこの実施形態では、1つのCPUまたは1つのCPU内の1つもしくは複数のCPUコアが1つのアドレスセグメントセットに割り振られる。アドレスセグメントセットは1つまたは複数のアドレスセグメントを含み、アドレスセグメントは連続または非連続であり得る。これらのアドレスセグメントにアクセスするためのすべてのデータアクセス要求は、割り振られたCPUによって実行されるか、または割り振られた1つもしくは複数のCPUコアによって実行される。異なるCPUまたは1つのCPU内の異なるCPUコアは、異なるアドレスセグメントセットに割り振られる。
さらに、本出願のこの実施形態では、1つのメモリは各アドレスセグメントセットに割り振られ、アドレスセグメントセットに含まれるアドレスセグメントにアクセスするためのデータアクセス要求に関係するデータ(サービスデータとメタデータの両方を含む)は、割り振られたメモリに一時的に記憶される。具体的には、1つのメモリは1つのアドレスセグメントセットに割り振られ、異なるメモリは異なるアドレスセグメントセットに割り振られる。本明細書のメモリは、限定はしないが、図2のメモリ105を含む。実際の適用シナリオでは、プロセッサは、プロセッサのローカルメモリとも呼ばれるメモリを有する。ローカルメモリは通常、プロセッサとともに構成要素に統合されるか、またはプロセッサに直接もしくは間接的に結合される。この場合、メモリ割振りの間に、アドレスセグメントセットに割り振られたプロセッサのローカルメモリは、アドレスセグメントセットに優先的に割り振られ得る。上記のメモリ割振り方式は本出願のこの実施形態において提供される一実装形態にすぎず、別の実装形態が使用され得ることに留意されたい。たとえば、メモリはアドレスセグメントセットに事前に割り振られず、メモリは、任意のデータアクセス要求がメモリを使用する必要があるとき、記憶システムに含まれる複数のメモリから選択される。
CPUリソースおよびメモリリソースに加えて、データアクセス要求を処理するために使用されるリソースは、ネットワークリソースおよびハードディスクリソースをさらに含み得る。任意選択で、ネットワークリソースとハードディスクリソースの両方は、異なるアドレスセグメントセットに事前に割り振られ得る。
新しいリソースが記憶システムに追加されるとき、新しいリソースおよび元のリソースが統合され、次いで、アドレスセグメントセットに再割り振りされ得る。1つの実装形態は、アドレスセグメントセットを再分割し、アドレスセグメントの量をそのままにし、アドレスセグメントセットの量を増加し、各アドレスセグメントセットに含まれるアドレスセグメントの量を低減し、次いで、記憶システムのリソースを調整されたアドレスセグメントセットに再割り振りすることである。別の実装形態は、各アドレスセグメントセット内のいくつかのアドレスセグメントと元のリソースとの間の割振り関係を維持し、新たに追加されたリソースをアドレスセグメントセット内のその他のアドレスセグメントに割り振ることである。この実装形態は、アドレスセグメントと元のリソースとの間のマッピング関係の変更を低減することができる。
異なるアドレスセグメントセットに対するデータアクセス要求間のリソース分離をより良く実装するために、いくつかの仮想ノード(virtual node)が本出願の記憶システム内で作成される。仮想ノードは、リソース割振りのための最小単位である。記憶システム内のリソースはいくつかの均等な部分に分類されてもよく、各均等な部分は1つの仮想ノードに対応する。具体的には、各仮想ユニットは、いくつかのCPUリソース、いくつかのメモリリソース、いくつかのネットワークリソース、およびいくつかのハードディスクリソースに対応する。たとえば、記憶システムが4つのノード100を有する場合、各ノードは4つのコントローラ103を有し、各コントローラは4つのCPUを有し、各CPUは48個のCPUコアを有し、1つのノード100は合計で768個のCPUコアを有する。記憶システムが4つのノードを含む場合、合計で3072個のコアがある。各CPUが256GBメモリに対応する場合、1つのコントローラは1TBメモリを有し、1つのノードは4TBメモリを有し、記憶システムは合計で16TBメモリを有する。記憶システムに含まれるすべてのハードウェアリソースが256個の均等な部分に分類される場合、256個の仮想ノードがあり、各仮想ノードに対応するCPUリソースは12個のCPUコアであり、各仮想ノードに対応するメモリリソースは0.0625TBである。上記で説明したように、1つのパーティションは1つのアドレスセグメントに対応する。仮想ノードが導入された後、1つのパーティションセットは1つの仮想ノードに対応し、1つのパーティションセットは複数のパーティションを含む。それに対応して、1つのアドレスセグメントセットは1つの仮想ノードに対応し、1つのアドレスセグメントセットは複数のアドレスセグメントを含む。言い換えれば、アドレスセグメントは入力として使用され、事前設定されたアルゴリズムを使用することによって計算が実施された後、パーティションが一意に決定され得、仮想ノードがさらに一意に決定され得る。記憶システム内に1024個のパーティションがあり、記憶システム内で32個の仮想ノードが作成されると仮定すると、各仮想ノードは32個のパーティションセットに対応し、各パーティションセットは32個のパーティションを含む。一般に、記憶システムに含まれ
るパーティションの量は変化しないままである。仮想ノードが記憶システムに追加されるかまたは記憶システムから削除される場合でも、追加されたまたは削除された仮想ノードにおいて1024個のパーティションのみが再割り振りされる。
仮想ノードを作成することはリソース分離を実装するための唯一の方式ではないことを理解されたい。仮想ノードがない場合、リソースは上記の説明に従って各アドレスセグメントセットに直接割り振られ得る。
記憶システム内での仮想ノードの作成について、この実施形態は少なくとも2つの作成方式を提供する。
1つの方式では、記憶システムの初期化の間に仮想ノードが自動的に作成される。特定のプロセスは以下の通りである。
仮想ノードは、システムに含まれる(1)記憶ノードの量、(2)コントローラの量、および(3)CPUの量、ならびにそれらの組合せのうちのいずれか1つに基づいて作成され得る。作成された仮想ノードの量は、システムに含まれるCPUの量よりも少ないかまたはそれに等しい。次いで、リソースが各仮想ノードに割り振られ、各仮想ノードと割り振られたリソースとの間のマッピング関係が作成され(この部分の内容については、図3から図6の以下の説明を参照されたい)、作成されたマッピング関係がホスト11およびフロントエンドインターフェースカード101に記憶される。
別の方式では、記憶システムの初期化の間に、記憶システムの管理ソフトウェアがインターフェースを管理者に提供する。管理者は、インターフェースにおいて作成対象の仮想ノードの量を選択する。次いで、記憶システムは、命令に従って仮想ノードを作成し、リソースを各仮想ノードに割り振り、各仮想ノードと割り振られたリソースとの間のマッピング関係を作成し(この部分の内容については、図3から図6の以下の説明を参照されたい)、作成されたマッピング関係をホスト11およびフロントエンドインターフェースカード101に記憶する。同様に、管理者は、(1)記憶ノードの量、(2)コントローラの量、および(3)CPUの量、それらの組合せのうちのいずれか1つに基づいて、または別の要因に基づいて、仮想ノードの量を選択してもよい。
上記の作成方式のいずれにおいても、記憶システムの実行中に仮想ノードの量が調整され得る。たとえば、コントローラが記憶システムに追加されるときに仮想ノードの量が増加されてもよく、またはコントローラが記憶システムから削除されるときに仮想ノードの量が低減されてもよく、またはディスク筐体が記憶システムに追加されるときに仮想ノードの量が増加されてもよく、またはディスク筐体が記憶システムから削除されるときに仮想ノードの量が低減されてもよい。リソースの量が変化しない場合でも、記憶システムは依然として、管理者によって指定されたように仮想ノードの量を調整することができる。
図3は、本出願の一実施形態による、仮想ノード、CPUリソース、およびメモリリソースの間の割振り関係の概略図である。図3に示すように、記憶システム内のすべてのCPUおよびすべてのメモリはコンピューティングリソースプールを形成し、コンピューティングリソースプールに含まれるCPUリソースおよびメモリリソースはいくつかのコンピューティングリソースグループに分類され、各コンピューティングリソースグループは1つの仮想ノードに割り振られる。異なる仮想ノードは異なるコンピューティングリソースグループを占有する。各コンピューティングリソースグループが1つのCPUを使用してもよく、または複数のコンピューティングリソースグループが1つのCPUを共有してもよい。たとえば、コンピューティングリソースグループ0がCPU_0を使用し、コンピューティングリソースグループ1がCPU_1を使用し、コンピューティングリソースグループmおよびコンピューティングリソースグループm+1がCPU_mを共有し、コンピューティングリソースグループnがCPU_nを使用し、ここで、mとnの両方は1よりも大きい整数であり、nはmよりも大きい。コンピューティングリソースグループnとコンピューティングリソースグループmとの間にさらなる1つまたは複数のコンピューティングリソースグループがあることが理解され得る。複数のコンピューティングリソースグループが1つのCPUを共有するとき、CPUは複数のCPUコア(たとえば、48個のCPUコア)を含むので、CPUに含まれる複数のCPUコアは複数のコアグループに分類されてもよく、(1つまたは複数のCPUコアを含む)各コアグループは1つの仮想ノードに割り振られる。加えて、各コンピューティングリソースグループはメモリリソースをさらに含み、各コンピューティングリソースグループに含まれるメモリリソースはコンピューティングリソースグループに含まれるCPUのローカルメモリであってもよい。そのような構成の後、仮想ノードに対応するデータアクセス要求は割り振られたCPU上で実行され、仮想ノードは近くのCPUのローカルメモリリソースを使用してもよい。CPUのローカルメモリは、CPUと同じノードに位置するメモリである。具体的には、たとえば、コンピューティングリソースグループ0によって使用されるメモリリソースは
Mem_0であり、Mem_0はCPU_0のローカルメモリである。コンピューティングリソースグループ1によって使用されるメモリリソースはMem_1であり、Mem_1はCPU_1のローカルメモリである。コンピューティングリソースグループmおよびコンピューティングリソースグループm+1はMem_mを共有し、Mem_mはCPU_mのローカルメモリである。コンピューティングリソースグループnによって使用されるメモリリソースはMem_nであり、Mem_nはCPU_nのローカルメモリである。この実施形態では、1つのコンピューティングリソースグループが各仮想ノードに割り振られる。したがって、異なるCPUリソースおよびメモリリソースが異なる仮想ノードに対応するサービス要求に使用されてもよく、それによってリソース競合を回避する。加えて、リソースが従来の方式で各仮想ノードに割り振られない場合、データアクセス要求が実行されるとき、複数のCPUは通常、要求をスプリットすることによって取得された複数のサブ要求を並行して処理する必要がある。これらのサブ要求は互いに関連付けられるので、CPUはサブ要求を処理するときにサブ要求をスケジュールまたは転送する。しかしながら、この実施形態において提供される方式では、各仮想ノードが1つのCPUに対応するか、または複数の仮想ノードが1つのCPUを共有する。したがって、仮想ノードに割り振られたサービス要求は指定されたCPUによって実行され、それによってCPU間でスケジュールすることおよび転送することを低減する。加えて、異なるデータアクセス要求が1つのメモリを共有する場合、データ整合性を実装するために、いくつかの相互排他的動作が必然的に実施される。しかしながら、この実施形態における方式では、異なるメモリが異なるアドレスセグメントセットにアクセスするためのデータアクセス要求に割り振られ、それによって相互排他的動作をある程度低減する。
コンピューティングリソースプールはこの実施形態において提供される一実装形態にすぎず、この実施形態は別の実装形態をさらに提供し得ることに留意されたい。たとえば、記憶システム内のいくつかまたはすべてのCPUはCPUリソースを形成し、CPUリソースのうちのいくつかは各仮想ノードに割り振られる。別の例では、記憶システム内のいくつかまたはすべてのメモリはメモリリソースを形成し、メモリリソースのうちのいくつかは各仮想ノードに割り振られる。
本出願のこの実施形態におけるネットワークリソースは、コントローラ103とディスク筐体との間のリンクリソースを主に含む。複数の論理リンクは各バックエンドインターフェースカード102上で作成されてもよく、複数の接続は各論理リンク上で確立されてもよく、これらの接続はネットワークリソースプールを形成する。図4は、本出願による、仮想ノードとネットワークリソースとの間の割振り関係の概略図である。図4に示すように、ネットワークリソースプールに含まれる接続はいくつかのリンクグループに分類され、各リンクグループは1つまたは複数の接続を使用する。たとえば、リンクグループ0は接続_0を使用し、接続_0は論理リンク_0上で確立される。接続グループ1は接続_1を使用し、接続_1は論理リンク_1上で確立される。接続グループPは接続_mと接続_nとの間のすべての接続を使用し、ここで、mとnの両方は1よりも大きい整数であり、nはmよりも大きい。接続_mと接続_nとの間に1つまたは複数の接続があり、これらの接続は論理リンク_n上で確立される。各リンクグループは1つの仮想ノードに割り振られる。異なる仮想ノードは異なる接続を使用するので、システム内のノード間での交換によって引き起こされるネットワークリソースを求める競合が回避される。
上記のネットワークリソースプールはこの実施形態において提供される一実装形態にすぎず、この実施形態は別の実装形態をさらに提供し得ることに留意されたい。たとえば、コントローラ103とディスク筐体との間の接続のうちのいくつかまたはすべてはネットワークリソースを形成し、ネットワークリソースのうちのいくつかは各仮想ノードに割り振られる。
この実施形態におけるハードディスクリソースは主に、記憶システムに含まれるすべてのハードディスクの容量である。図5は、本出願の一実施形態による、仮想ノードとハードディスクリソースとの間の割振り関係の概略図である。図5に示すように、ディスクは指定された粒度でいくつかのチャンク(chunk)に分類される。これらのchunkは記憶プールを形成する。独立ディスクの冗長アレイ(Redundant Array of Independent Disks、RAID)規則によれば、チャンクグループ(chunk group、CKG)を形成するために、特定の量のchunkが異なるディスクから選択される。たとえば、チャンクグループ0は、チャンク_0、チャンク_m、およびチャンク_nを含む。チャンク_0はハードディスク_0からのものであり、チャンク_mはハードディスク_1からのものであり、チャンク_nはハードディスク_nからのものである。各仮想ノードは1つまたは複数のチャンクグループに対応する。異なる仮想ノードは異なるCKGを使用するので、バックエンドハードディスクリソースが分離される。
上記の記憶プールはこの実施形態において提供される一実装形態にすぎず、この実施形態は別の実装形態をさらに提供し得ることに留意されたい。たとえば、記憶システムに含まれるいくつかまたはすべてのハードディスクはハードディスクリソースを形成し、ハードディスクリソースのうちのいくつかは各仮想ノードに割り振られる。
結論として、各仮想ノードは、サービスを処理するために必要とされるCPUリソース、メモリリソース、ネットワークリソース、およびハードディスクリソースを含む。図6に示すように、仮想ノード0に割り振られたコンピューティングリソースはコンピューティングリソースグループ0であり、仮想ノード0に割り振られたハードディスクリソースはチャンクグループ1およびチャンクグループ2であり、仮想ノード0に割り振られたネットワークリソースはリンクグループmおよびリンクグループnである。仮想ノードに割り振られたリソースは互いに独立している。CPUの量およびCPUコアの量が直線的に増加するにつれて、それに対応して仮想ノードの量を増加させることによって単一の仮想ノードの性能が一貫性を保つ限り、物理リソースの量が増加するにつれて、性能が直線的に拡張される。この実施形態で説明するこの技術は、当業界においてCoreFarmと呼ばれる。
以下では、データ記憶プロセスについて説明する。図7は、一実施形態による、書込み要求処理の概略フローチャートである。図7に示すように、以下のステップが含まれる。
S101.クライアントが、ホスト11を使用することによって書込み要求の生成をトリガし、ここで、書込み要求は書込み対象データおよびデータの仮想アドレスを搬送し、仮想アドレスはLUN ID、LBA、およびlengthである。
S102.ホスト11が、書込み要求に対応する仮想ノードを決定する。
具体的には、ホスト11が、ハッシュ値を取得するために、仮想アドレスに対してハッシュ計算を実施する。ハッシュ値は特定のパーティションに対応し、次いで、パーティションの識別子は、特定の規則に従って複数の仮想ノードの中の特定の仮想ノード(ターゲット仮想ノードと呼ばれる)にマッピングされる。規則は、限定はしないが、シーケンシャルアルゴリズム、ランダムアルゴリズムなどを含む。説明しやすいように、ターゲット仮想ノードが図5の仮想ノード0である一例が、この実施形態において使用される。図3から図5の説明によれば、仮想ノード0に割り振られたハードウェアリソースは、コンピューティングリソースグループ0、チャンクグループ1、チャンクグループ2、リンクグループm、およびリンクグループnを含む。
S103.ホスト11が、書込み要求を仮想ノードに対応する記憶ノードに送信する。具体的には、ホスト11は、各仮想ノードのリソース割振りステータスのマッピングテーブルを記憶する。マッピングテーブルは、(Table 1(表1)に示すように)各仮想ノードと仮想ノードに割り振られた各リソースとの間の対応を記録する。
Figure 2022541261000002
ホスト11は、仮想ノード0に対応し、Table 1(表1)に記録されたコンピューティングリソースに基づいて、コンピューティングリソースが位置する記憶ノードを決定する。仮想ノード0に対応するCPUがコンピューティングリソースグループ0に位置することは、図5の説明から学習され得る。さらに、コンピューティングリソースグループ0がCPU_0およびMem_0を含むことは、図2から学習され得る。したがって、ホスト11は、書込み要求をCPU_0が位置する記憶ノード(たとえば、記憶ノード0)に送信する。ホスト11と記憶ノード0との間にリンクがない場合、書込み要求はホスト11と別の記憶ノードとの間のリンクを通じて別の記憶ノードに送信されてもよく、次いで、別の記憶ノードが書込み要求を記憶ノード0に転送する。ホスト11と記憶ノード0との間に1つのリンクがある場合、書込み要求はそのリンクを通じて記憶ノード0に直接送信される。ホスト11と記憶ノード0との間に複数のリンクがある場合、ポーリング方式または別の方式で複数のリンクから1つのリンクが選択されてもよく、書込み要求は選択されたリンクを通じて記憶ノード0に送信される。
S104.書込み要求を受信した後、記憶ノードが、書込み要求を仮想ノードに対応するCPUに処理のために送信する。具体的には、記憶ノードのフロントエンドインターフェースカード101が、各仮想ノードのリソース割振りステータスの(Table 1(表1)に示すような)マッピングテーブルを記憶する。フロントエンドインターフェースカード101は、書込み要求において搬送される仮想アドレスに基づいて対応するターゲット仮想ノードを決定して、ターゲット仮想ノードに対応するCPUをさらに決定してもよい。ターゲット仮想ノードが仮想ノード0である一例が依然として使用される。仮想ノード0に対応するCPUはCPU_0である。したがって、フロントエンドインターフェースカード101は書込み要求をCPU_0に送信する。CPUは、書込み要求内のデータに対して対応する処理を実施してもよい。処理前のデータおよび処理後のデータは、メモリに一時的に記憶される必要がある。コンピューティングリソースグループ0に含まれるメモリリソースがMem_0であることは、図2から学習され得る。したがって、データはMem_0によって示されたメモリ空間に記憶され得る。
S105.記憶ノードが、仮想ノードと一致するバックエンド物理チャネルを通じて、処理されたデータを対応するハードディスクに記憶のために送信する。具体的には、メモリMem_0に記憶されたデータが特定のウォーターマークに達したとき、メモリMem_0に記憶されたデータは永続的な記憶のためにハードディスクに書き込まれる必要がある。記憶ノードは、ターゲット仮想ノードに対応するチャンクグループについてマッピングテーブルを検索し、書込み対象データをターゲット仮想ノードに対応するチャンクグループに書き込んでもよい。たとえば、仮想ノード0に対応するチャンクグループがチャンクグループ1およびチャンクグループ2であることは、図5およびTable 1(表1)から学習され得る。これは、仮想ノード0がチャンクグループ1のハードディスクリソースまたはチャンクグループ2のハードディスクリソースを使用し得ることを示す。チャンクグループ0がチャンク_0、チャンク_m、およびチャンク_nを含むことは、図5から学習され得る。チャンク_0はハードディスク_0に位置し、チャンク_mはハードディスク_1に位置し、チャンク_nはハードディスク_nに位置する。記憶ノード0は、書込み対象データを2つのデータスライスに分割し、計算によって2つのデータスライスのチェックスライスを取得し、次いで、バックエンドインターフェースカード102を通じて、2つのデータスライスおよびチェックスライスを、それぞれ、ハードディスク_0、ハードディスク_1、およびハードディスク_nに送信してもよい。加えて、記憶ノード0は、データスライスおよびチェックスライスを送信するために、ネットワークリソースプール内のネットワークリソースを使用する必要がある。たとえば、仮想ノード0に対応するネットワークリソースはリンクグループmおよびリンクグループnを含む。したがって、バックエンドインターフェースカード102は、リンクグループmおよび/またはリンクグループnに含まれる複数の接続を使用することによって、データスライスおよびチェックスライスを対応するハードディスクに並行して送信してもよい。
図7において提供される書込み要求処理方法によれば、ホスト11は最初に、書込み要求に対応する仮想ノードを決定し、次いで、仮想ノードに事前に割り振られたハードウェアリソースを使用することによって要求を処理する。仮想ノードに割り振られたリソースは互いに独立しているので、ホスト11が複数のデータ処理要求を並行して処理するとき、複数のデータ処理要求は互いに干渉しない。
書込み要求を処理することは、図7の説明のための一例として使用される。データ読取り/書込み要求を処理することに加えて、記憶システムは、データ交換、プロトコルパーシング、およびデータフラッシングなどの別のサービス要求をさらに処理する。マルチCPUおよびマルチCPUコア記憶システムでは、これらのサービス要求は通常、複数のCPUまたは1つのCPU内の複数のCPUコアによって連続して実行される。直線性に影響を及ぼす鍵は、記憶システムにおけるCPU間およびCPUコア間処理ならびに連続実行によって引き起こされるオーバーヘッドである。実施形態では、この問題を解決するためにCPUパケットスケジューリング方法が提供される。図8は、仮想ノード内のCPUコアのパケットスケジューリングの概略図である。
最初に、仮想ノードが1つのCPUに対応し、それに対応して、そのことが1つの仮想ノードが1つのCPUを使用すること、または複数の仮想ノードが1つのCPUを共有することを意味する。このようにして、同じ仮想ノードに対するサービス要求が同じCPUによって処理されることが保証される。したがって、サービススケジューリングは仮想ノード間で独立したままである。
次いで、仮想ノードに対応するCPUに含まれる複数のCPUコアはサービス論理に基づいていくつかのサービス処理グループに分類され、各サービス処理グループは1つまたは複数のCPUコアを含む。図7に示すように、第1のサービス処理グループは特にI/O読取りおよび書込みに使用され、第2のサービス処理グループは特にデータ交換に使用され、第3のサービス処理グループはプロトコルパーシングに使用され、第4のサービス処理グループはデータフラッシングに使用される。第3のサービス処理グループおよび第4のサービス処理グループに含まれるCPUコアは共有され得る。具体的には、たとえば、1つのCPUは48個のCPUコアを含む。12個のCPUコアが第1のサービス処理グループに割り振られ、12個のCPUコアが第2のサービス処理グループに割り振られ、24個のCPUコアが第3のサービス処理グループと第4のサービス処理グループの両方に割り振られると仮定される。
そのような方式で異なるサービス要求が分離される。単一のサービス処理グループでは、サービス要求がリソースを求めて他のサービス要求と競合することをある程度防止するために、サービス要求はサービス処理グループに割り振られたCPUコア上で連続して実行され、それによって相互排他的動作を低減し、ロックフリー設計を実装する。CPUに含まれるCPUコアの量が増加するとき、CPUの処理能力も直線的に拡張され得る。加えて、サービス要求がグループ化された後、グループ化前のサービスコードよりも少ないサービスコードがあり、それに応じて、サービスコードはより少ないメモリ空間を占有する。メモリ空間の総量が変化しないままであるとき、データのメモリヒット率を上げるために、より多くの空間がメモリにおいて割かれてサービスデータを記憶することができる。
書込み要求の処理と同様に、クライアントがホスト11を使用することによって読取り要求をトリガするとき、ホスト11は、読取り要求において搬送される読取り対象データの仮想アドレスに基づいて、要求に対応する仮想ノードを決定し、仮想ノードに対応する記憶ノードをさらに決定してもよい(S103と同様)。ホスト11は、読取り要求を仮想ノードに対応する記憶ノードに送信する。読取り要求を受信した後、記憶ノードは、読取り要求を仮想ノードに対応するCPUに処理のために送信する(S104と同様)。読取り対象データが対応するメモリにおいてヒットしない場合、仮想ノードに対応するCPUは、仮想ノードに対応するネットワークリソースおよびハードディスクリソースをさらに決定し、次いで、対応するネットワークリソースを使用することによって要求を対応するハードディスクに送信して、読取り対象データを読み取ってもよい。
加えて、実際の適用例では、シングルコア能力を改善することによって記憶システムの能力を改善するコストは増加している。現在、当業界において複数のノードが使用されており、各ノードは複数のCPUコアを有する。このようにして、記憶システムの処理能力が改善される。たとえば、同様のシングルコア能力に関して、記憶システム内のコアの量が48個から768個に増加する場合、記憶システムのハードウェア能力が改善する。しかしながら、CPUコアの量およびメモリリソースなどのリソースの量が増加するにつれて記憶システムのサービス処理能力が直線的に拡張されることをどのように可能にするかは、すべての記憶デバイスベンダーが解決する必要がある問題である。実施形態において提供される容量拡張方法によれば、記憶システムのサービス処理能力は、ハードウェアリソースの量が増加するにつれて直線的に拡張され得る。以下では、ノード容量拡張プロセスについて説明する。このプロセスについて、図3から図6を参照しながら説明する。
図9は、本出願の一実施形態による、記憶システムのあるタイプの容量拡張の概略図であり、図10は、本出願の一実施形態による、容量拡張方法の概略フローチャートである。コントローラの量がノードにおいて拡張される一例を使用することによって、この実施形態について説明する。拡張前にノードが2つのコントローラ、すなわち、コントローラAおよびコントローラBを含むと仮定される。2つのコントローラ(コントローラCおよびコントローラD)が追加された後、ノードは4つのコントローラを含む。フロントエンドインターフェースカード101およびバックエンドインターフェースカード102は、拡張の前および後にコントローラによって共有される。具体的には、図10に示すように、拡張方法は以下のステップを含む。
S201.コントローラCおよびコントローラDがシステムに追加された後、コントローラCおよびコントローラDが仮想ノードインスタンスを別々に初期化する。コントローラの量が増加するとき、それに応じて、ノード全体によって提供され得るCPUリソースおよびメモリリソースが増加することが理解され得る。したがって、仮想ノードの量が増加する限り、ノード全体の処理能力は、新たに追加されたCPUリソースおよび新たに追加されたメモリリソースを新たに追加された仮想ノードに割り振ることによって改善され得る。
コントローラCは一例として使用される。コントローラCは、コントローラCに含まれるCPUの量に基づいて複数の仮想ノードを作成する。この実施形態では、1つのCPUが1つの仮想ノードに割り振られるので、仮想ノードの量はコントローラCに含まれるCPUの量よりも少ないかまたはそれに等しいことがある。たとえば、コントローラCが8個のCPUを含む場合、コントローラCは最大8個の仮想ノードを作成し得る。仮想ノードの量が決定された後、新たに追加された仮想ノードとCPUとの間のマッピング関係および新たに追加された仮想ノードとメモリとの間のマッピング関係がさらに決定される。たとえば、コントローラCでは、仮想ノードxはCPU_x(xは正の整数を表す)に対応し、仮想ノードxによって必要とされるメモリリソースはCPU_xのローカルメモリ(たとえば、Mem_x)であり得る。したがって、CPU_xおよびMem_xは、仮想ノードxに割り振られるコンピューティングリソースグループを形成する。仮想ノードx+1はCPU_x+1に対応し、仮想ノードx+1によって必要とされるメモリリソースはCPU_x+1のローカルメモリ(たとえば、Mem_x+1)であり得る。したがって、CPU_x+1およびMem_x+1は、仮想ノードx+1に割り振られる別のコンピューティングリソースグループを形成する。コントローラDによって仮想ノードを作成する方式は、コントローラCによって仮想ノードを作成する方式と同様である。
加えて、コントローラCおよびコントローラDがシステムに追加された後、コントローラCおよびコントローラDはバックエンドインターフェースカード102との物理リンクを確立する。複数の論理リンクがこれらの物理リンク上で作成され、複数の接続が各論理リンク上で確立され得る。これらの接続は、ネットワークリソースプール内のネットワークリソースを拡張するために、図4に示すネットワークリソースプールに追加される。これらの新たに追加されたネットワークリソースはいくつかのリンクグループに分類されてもよく、各リンクグループは1つまたは複数の接続を含む。次いで、各リンクグループは1つの新たに追加された仮想ノードに割り振られる。たとえば、仮想ノードxはリンクグループx(xは正の整数を表す)に対応し、仮想ノードx+1はリンクグループx+1に対応する。
S202.コントローラAおよびコントローラBの仮想ノードに属するいくつかのパーティションをコントローラCおよびコントローラDの仮想ノードに移行させる。ホスト11からのサービス要求が仮想アドレスに対応するパーティションに基づいて仮想ノードにルーティングされることは、上記の説明から学習され得る。記憶システムに含まれるパーティションの総量が変化しないままであるとき、新たに作成された仮想ノードがサービス要求を担持することを可能にするために、元の仮想ノードに属するいくつかのパーティションは新たに作成された仮想ノードに移行される必要がある。たとえば、容量拡張の前に、1つの仮想ノードは1つのパーティションセットに対応し、1つのパーティションセットは32個のパーティションを含む。容量拡張の後、1つの仮想ノードは24個のパーティションに対応する。一方の実装形態は、記憶システム内のすべてのパーティションとすべての仮想ノード(元の仮想ノードと新たに追加された仮想ノードの両方を含む)との間のマッピング関係を再確立することであり、他方の実装形態は、元のパーティションセット内のいくつかのパーティションを新たに追加された仮想ノードに移行させ、残りのパーティションと元の仮想ノードとの間の対応を保持することである。上記の例を参照すると、元のパーティションセット内の8つのパーティションが新たに追加された仮想ノードに移行される必要がある。移行対象のパーティションの量は、ノード全体に含まれる仮想ノードの量における新たに追加された仮想ノードの量の割合に依存することに留意されたい。パーティションがすべての仮想ノードにおいて均等に分散されるという条件で、移行アルゴリズムはこの実施形態では限定されない。
S203.マッピングテーブルを更新し、ここで、マッピングテーブルは、ホスト11に記憶されたマッピングテーブルとフロントエンドインターフェースカード101内のマッピングテーブルの両方を含む。S201の説明によれば、CPUリソース、メモリリソース、およびネットワークリソースは新たに追加された仮想ノードに割り振られる。これらの新たに追加された割振り関係は、サービス要求を処理するためにマッピングテーブルに記録される必要がある。コントローラCおよびコントローラD内にハードディスクがないので、新たに追加された仮想ノードによって必要とされるハードディスクリソースは依然として、図5に示す記憶プールからのものである。具体的には、元の仮想ノードに属するチャンクグループが新たに追加された仮想ノードに移行され得る。すべての仮想ノードに割り振られたチャンクグループがほぼ等しいという条件で、移行アルゴリズムはこの実施形態では限定されない。
更新されたマッピングテーブルがTable 2(表2)に示されている。
Figure 2022541261000003
S204.ホスト11が、新しいパーティションルーティング関係に基づいてサービス要求を送信する。サービス要求の処理の方式については、図6に示す書込み要求の処理の概略フローチャートを参照されたい。詳細については本明細書で再び説明しない。
図11は、本出願の一実施形態による、記憶システムの別のタイプの容量拡張の概略図であり、図12は、本出願の一実施形態による、別の拡張方法の概略フローチャートである。図11および図12に示す例では、ノード内のコントローラの量が拡張されるだけでなく、ディスクの量またはディスク筐体の量も拡張される。コントローラの量がノードにおいて拡張される一例が依然として使用される。ノードが容量拡張の前に2つのコントローラ、すなわち、コントローラAおよびコントローラBを含むと仮定される。2つのコントローラ(コントローラCおよびコントローラD)が追加された後、ノードは4つのコントローラを含む。フロントエンドインターフェースカード101およびバックエンドインターフェースカード102は、拡張の前および後にコントローラによって共有される。図12に示すように、方法は以下のステップを含む。
S301.コントローラCおよびコントローラDがシステムに追加された後、コントローラCおよびコントローラDが仮想ノードインスタンスを別々に初期化する。このステップについては、図9に示すS201を参照されたい。
S302.コントローラAおよびコントローラBの仮想ノードに属するいくつかのパーティションをコントローラCおよびコントローラDの仮想ノードに移行させる。このステップについては、図9に示すS202を参照されたい。
S303.選択アルゴリズムに基づいて、新たに追加されたコントローラ、すなわち、コントローラCおよびコントローラDからコントローラCなどの一次コントローラを選択する。
S304.コントローラCが、新たに追加されたハードディスクの空間をいくつかのchunkに分割し、これらのchunkを記憶プールに追加する。コントローラCまたはコントローラDが書込み要求を受信したとき、書込み要求は新たに追加された仮想ノードに対応し、異なるハードディスクからのchunkは書込み要求において搬送されるデータを受け入れるためのチャンクグループを形成する。記憶プール内の複数の新たに追加されたチャンクグループは新たに追加された仮想ノードに割り振られ得ることが学習され得る。各仮想ノードは1つまたは複数のチャンクグループを使用する。
S305.マッピングテーブルを更新し、ここで、マッピングテーブルは、ホストに記憶されたマッピングテーブルとフロントエンドインターフェースカード101内のマッピングテーブルの両方を含む。このステップについては、図9に示すS203を参照されたい。S203とは異なり、S203の例では、ハードディスクリソースの量は増加せず、したがって、新たに追加された仮想ノードに対応するチャンクグループは、システム内の元の仮想ノードのチャンクグループを移行させることによって取得される。S305の例では、ハードディスクリソースの量も増加するので、新たに追加された仮想ノードに対応するチャンクグループは新たに追加されたハードディスクリソースからのものである。
図11および図12に示す容量拡張方式によれば、新たに追加されたハードディスクリソースは新たに追加された仮想ノードに割り振られ、新たに追加された仮想ノードに対応する書込み要求において搬送されるデータは新たに追加されたハードディスクに書き込まれ得る。しかしながら、大量の古いデータは依然として、元のハードディスクに記憶される。システムに記憶されたデータをすべてのハードディスクに均等に分散するために、1つの方式は、いくつかの古いデータを記憶のために新しいハードディスクに移行させることであり、別の方式は、古いデータを積極的に移行させるのではなく、ガベージコレクションが古いデータに対して実施されるときに、古いデータ内の有効データ(変更されていないデータ)を新たに追加されたハードディスクに移行させることである。システムが動作するにつれて、生成されるジャンクデータの量が増え続ける。いくつかのガベージコレクション動作の後、データが均等に分散され得る。この方式の利点は、データが積極的に移行されないので、ノード間またはコントローラ間の帯域幅オーバーヘッドが低減され得るということである。
図9および図12に示す2つの容量拡張方法によれば、システム内のコントローラの量が増加するとき、仮想ノードの量も増加し、新たに追加されたリソースは新たに追加された仮想ノードに割り振られる。このようにして、元の仮想ノードに割り振られたより少ないリソースがある程度プリエンプトされる。したがって、ハードウェアリソースの量が増加するにつれて、システム全体の処理能力がそれに対応して増加する。
上記の実施形態のうちのすべてまたはいくつかは、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せを使用することによって実装され得る。実施形態を実装するためにソフトウェアが使用されるとき、実施形態はコンピュータプログラム製品の形態で完全にまたは部分的に実装され得る。コンピュータプログラム製品は、1つまたは複数のコンピュータ命令を含む。コンピュータプログラム命令がコンピュータ上でロードされるかまたは実行されるとき、本発明の実施形態による手順または機能がすべてまたは部分的に生成される。コンピュータは、汎用コンピュータ、専用コンピュータ、コンピュータネットワーク、または別のプログラマブル装置であってもよい。コンピュータ命令はコンピュータ可読記憶媒体に記憶されてもよく、またはコンピュータ可読記憶媒体から別のコンピュータ可読記憶媒体に伝送されてもよい。たとえば、コンピュータ命令は、ウェブサイト、コンピュータ、サーバ、またはデータセンタから別のウェブサイト、コンピュータ、サーバ、またはデータセンタにワイヤード(たとえば、同軸ケーブル、光ファイバー、またはデジタル加入者回線(DSL))またはワイヤレス(たとえば、赤外線、無線、またはマイクロ波)方式で伝送されてもよい。コンピュータ可読記憶媒体は、コンピュータによってアクセス可能な任意の使用可能媒体、または、サーバもしくはデータセンタなどの、1つもしくは複数の使用可能媒体を統合するデータ記憶デバイスであってもよい。使用可能媒体は、磁気媒体(たとえば、フロッピーディスク、ハードディスク、または磁気テープ)、光媒体(たとえば、DVD)、半導体媒体(たとえば、ソリッドステートディスク(Solid State Disk(SSD))などであってもよい。
本出願の実施形態では、「第1の」などの用語は対象物を示すことが意図されているにすぎず、一連の対応する対象物を示すものではないことを理解されたい。
当業者は、本明細書で開示する実施形態で説明する例と組み合わせて、ユニットおよびアルゴリズムステップが電子ハードウェアまたはコンピュータソフトウェアと電子ハードウェアの組合せによって実装され得ることを認識し得る。機能がハードウェアによって実施されるかまたはソフトウェアによって実施されるかは、技術的解決策の特定の適用例および設計制約条件に依存する。当業者は、説明した機能を特定の適用例ごとに実装するために異なる方法を使用してもよいが、実装形態が本出願の範囲を超えると見なされるべきではない。
便利で簡単な説明のために、上記のシステム、装置、およびユニットの詳細なワーキングプロセスについては、上記の方法実施形態における対応するプロセスを参照されたく、詳細については本明細書で再び説明しないことが当業者によって明確に理解され得る。
本出願において提供されるいくつかの実施形態では、開示したシステム、装置、および方法は他の方式において実装され得ることを理解されたい。たとえば、説明した装置実施形態は一例にすぎない。たとえば、単位区分は論理機能区分にすぎず、実際の実装形態では他の区分であってもよい。たとえば、複数のユニットもしくは構成要素が別のシステムに組み合わされるかもしくは統合されてもよく、またはいくつかの特徴が無視されるかもしくは実施されなくてもよい。加えて、表示したまたは論じた相互結合もしくは直接結合または通信接続は、いくつかのインターフェースを使用することによって実装されてもよい。装置またはユニット間の間接結合または通信接続は、電子形態、機械形態、または他の形態で実装されてもよい。
別個の部分として説明されるユニットは物理的に離れていても離れていなくてもよく、ユニットとして表示される部分は物理ユニットであっても物理ユニットでなくてもよく、1つの位置に位置してもよいか、または複数のネットワークユニット上で分散されてもよい。ユニットのうちのいくつかまたはすべては、実施形態の解決策の目的を達成するために実際の要件に基づいて選択されてもよい。
加えて、本出願の実施形態の機能ユニットが1つの処理ユニットに統合されてもよく、またはユニットの各々が物理的に単体で存在してもよく、または2つ以上のユニットが1つのユニットに統合される。
機能がソフトウェア機能ユニットの形態で実装され、独立した製品として販売されるかまたは使用されるとき、機能はコンピュータ可読記憶媒体に記憶されてもよい。そのような理解に基づいて、基本的に、本出願の技術的解決策、または従来技術に寄与する部分、または技術的解決策のうちのいくつかは、ソフトウェア製品の形態で実装されてもよい。ソフトウェア製品は記憶媒体に記憶され、本出願の実施形態で説明する方法のステップのうちのすべてまたはいくつかを実施するようにコンピュータデバイス(パーソナルコンピュータ、記憶ノード、またはネットワークデバイスであり得る)に命令するためのいくつかの命令を含む。上記の記憶媒体は、USBフラッシュドライブ、リムーバブルハードディスク、読取り専用メモリ(Read-Only Memory、ROM)、ランダムアクセスメモリ(Random Access Memory、RAM)、磁気ディスク、または光ディスクなどの、プログラムコードを記憶することができる任意の媒体を含む。
上記の説明は本出願の特定の実装形態にすぎず、本出願の保護範囲を限定することは意図されていない。本出願で開示する技術的範囲内で当業者によって容易に考え出されるいかなる変形または置換も、本出願の保護範囲内に入るものとする。したがって、本出願の保護範囲は特許請求の範囲の保護範囲に従うものとする。
11 ホスト
100 記憶ノード、ノード
101 フロントエンドインターフェースカード
102 バックエンドインターフェースカード
103 コントローラ
104 プロセッサ
105 メモリ
106 バス
107 ハードディスク
第1の態様におけるアドレスセグメントの場合、記憶空間が論理ユニット(LUs)に仮想化されるので、LUsは記憶デバイスによってユーザに提供され、LUsに対応するアドレスはいくつかの論理ブロックアドレスLBA間隔に分類され、各アドレスセグメントは1つのLBA間隔である。
本出願の第6の態様によれば、別のリソース割り振り方法が提供される。方法は記憶ノードに適用され、記憶ノードは複数のコントローラを含み、各コントローラは複数のプロセッサを含む。方法は、複数の仮想ノードを作成するステップと、コンピューティングリソースを仮想ノードに割り振るステップとを含む。記憶ノードによって受信されたいくつかのデータアクセス要求は複数の仮想ノードにルーティングされ、各データアクセス要求は1つの仮想ノードに対応し、各データアクセス要求は対応する仮想ノードに割り振られたコンピューティングリソースを使用することによって実行される。複数のプロセッサの各々は複数の仮想ノードのうちの1つに割り振られ、異なるプロセッサは異なるノードに割り振られる。
第6の態様の任意選択の実装形態では、複数の仮想ノードを作成するステップは、記憶ノードに含まれるプロセッサの量に基づいて複数の仮想ノードを作成するステップを含む。複数の仮想ノードの量は、記憶ノードに含まれるプロセッサの量よりも少ないかまたはそれに等しい。
本出願の第8の態様によれば、コンピュータ可読記憶媒体が提供される。コンピュータ可読記憶媒体は命令を記憶し、命令が記憶ノードのコントローラ上で実行されるとき、コントローラは第6の態様におけるリソース割振り方法を実施することを可能にされる。
本出願の第11の態様によれば、記憶ノードの容量拡張方法が提供される。記憶ノードは第1のコントローラを含み、第1のコントローラは複数のプロセッサを含む。第2のコントローラが記憶ノードに追加されるとき、第2の仮想ノードセットが作成される。第2のコントローラは複数のプロセッサを含み、第2の仮想ノードセットは複数の第2の仮想ノードを含む。第2の仮想ノードセットが作成される前に、記憶ノード内に第1の仮想ノードセットがある。第1の仮想ノードセットは複数の第1の仮想ノードを含み、記憶ノードによって受信されたいくつかのデータアクセス要求は複数の第1の仮想ノードにルーティングされる。第2のコントローラに含まれる複数のプロセッサはコンピューティングリソースプールに追加され、コンピューティングリソースプールは第1のコントローラによって提供された複数のプロセッサを含む。コンピューティングリソースは複数の第2の仮想ノードに割り振られ、割り振られたコンピューティングリソースはコンピューティングリソースプールからのものである。1つのプロセッサは各第2の仮想ノードに割り振られ、異なるプロセッサは異なる第2の仮想ノードに割り振られる。第1の仮想ノードにルーティングされた複数のデータアクセス要求のうちのいくつかは、第2の仮想ノードに再割り振りされる。
コントローラ103はコンピューティングデバイス、たとえば、サーバまたはデスクトップコンピュータである。ハードウェアに関して、図2に示すように、コントローラ103は少なくともプロセッサ104、メモリ105、およびバス106を含む。プロセッサ104は中央処理ユニット(central processing unit、CPU)であり、ノード100からのI/O要求またはコントローラ103において生成された要求を処理するように構成される。1つのコントローラ103は複数のプロセッサ104を含んでもよく、各プロセッサは複数のプロセッサコア(図には示されていない)を含む。メモリ105は、ホスト11から受信されたデータまたはハードディスクから読み取られたデータを一時的に記憶するように構成される。ホスト11によって送信された複数の書込み要求を受信するとき、コントローラ103は複数の書込み要求内のデータをメモリ105に一時的に記憶してもよい。メモリ105の容量が特定のしきい値に達したとき、メモリ105に記憶されたデータは記憶のためにハードディスクに送信される。メモリ105は、揮発性メモリ、不揮発性メモリ、またはそれらの組合せを含む。揮発性メモリは、たとえば、ランダムアクセスメモリ(random-access memory、RAM)である。不揮発性メモリは、たとえば、フラッシュメモリチップ、フロッピーディスク、ハードディスク、ソリッドステートディスク(solid state disk、SSD)、または光ディスクなどの、プログラムコードを記憶することができる任意の機械可読媒体である。メモリ105はパワーオフ保護機能を有する。パワーオフ保護機能は、システムが電源切断され、次いで再度電源投入されたときに、メモリ105に記憶されたデータが失われないことを意味する。バス106は、コントローラ103内の構成要素間の通信を実装するように構成される。
異なるアドレスセグメントセットに対するデータアクセス要求間のリソース分離をより良く実装するために、いくつかの仮想ノード(virtual node)が本出願の記憶システム内で作成される。仮想ノードは、リソース割振りのための最小単位である。記憶システム内のリソースはいくつかの均等な部分に分類されてもよく、各均等な部分は1つの仮想ノードに対応する。具体的には、各仮想ノードは、いくつかのCPUリソース、いくつかのメモリリソース、いくつかのネットワークリソース、およびいくつかのハードディスクリソースに対応する。たとえば、記憶システムが4つのノード100を有する場合、各ノードは4つのコントローラ103を有し、各コントローラは4つのCPUを有し、各CPUは48個のCPUコアを有し、1つのノード100は合計で768個のCPUコアを有する。記憶システムが4つのノードを含む場合、合計で3072個のコアがある。各CPUが256GBメモリに対応する場合、1つのコントローラは1TBメモリを有し、1つのノードは4TBメモリを有し、記憶システムは合計で16TBメモリを有する。記憶システムに含まれるすべてのハードウェアリソースが256個の均等な部分に分類される場合、256個の仮想ノードがあり、各仮想ノードに対応するCPUリソースは12個のCPUコアであり、各仮想ノードに対応するメモリリソースは0.0625TBである。上記で説明したように、1つのパーティションは1つのアドレスセグメントに対応する。仮想ノードが導入された後、1つのパーティションセットは1つの仮想ノードに対応し、1つのパーティションセットは複数のパーティションを含む。それに対応して、1つのアドレスセグメントセットは1つの仮想ノードに対応し、1つのアドレスセグメントセットは複数のアドレスセグメントを含む。言い換えれば、アドレスセグメントは入力として使用され、事前設定されたアルゴリズムを使用することによって計算が実施された後、パーティションが一意に決定され得、仮想ノードがさらに一意に決定され得る。記憶システム内に1024個のパーティションがあり、記憶システム内で32個の仮想ノードが作成されると仮定すると、各仮想ノードは32個のパーティションセットに対応し、各パーティションセットは32個のパーティションを含む。一般に、記憶システムに含まれる
パーティションの量は変化しないままである。仮想ノードが記憶システムに追加されるかまたは記憶システムから削除される場合でも、追加されたまたは削除された仮想ノードにおいて1024個のパーティションのみが再割り振りされる。

Claims (21)

  1. ディスク筐体と複数のコントローラとを含む記憶デバイスであって、各コントローラが複数のプロセッサを含み、各プロセッサが複数のプロセッサコアを含み、前記複数のコントローラが前記ディスク筐体に別々に結合され、前記ディスク筐体が複数のハードディスクを含み、
    前記複数のプロセッサが、コンピューティングリソースを提供するように構成され、
    前記複数のハードディスクが、記憶空間を提供するように構成され、前記記憶空間に対応する論理アドレスがいくつかのアドレスセグメントセットに分類され、各アドレスセグメントセットが1つまたは複数のアドレスセグメントを含み、前記コンピューティングリソースのうちのいくつかが各アドレスセグメントセットに割り振られ、前記いくつかのコンピューティングリソースが前記アドレスセグメントセットに含まれるアドレスセグメントにアクセスするためのデータアクセス要求を実行するために使用され、異なるアドレスセグメントセットに割り振られたコンピューティングリソースが異なるプロセッサからのものであるか、または異なるアドレスセグメントセットに割り振られたコンピューティングリソースが異なるプロセッサコアからのものである、
    記憶デバイス。
  2. 各プロセッサがメモリを有し、前記コンピューティングリソースが前記複数のプロセッサに含まれるメモリをさらに含み、1つのメモリが1つのアドレスセグメントセットに割り振られ、異なるメモリが異なるアドレスセグメントセットに割り振られる、請求項1に記載の記憶デバイス。
  3. 各アドレスセグメントセットに割り振られたメモリが、前記アドレスセグメントセットに割り振られたプロセッサのローカルメモリである、請求項2に記載の記憶デバイス。
  4. 前記記憶デバイスがネットワークリソースをさらに含み、前記ネットワークリソースが前記複数のコントローラと前記ディスク筐体との間の複数の接続によって提供され、前記ネットワークリソースのうちのいくつかが各アドレスセグメントセットに割り振られ、異なる接続が異なるアドレスセグメントセットに割り振られる、請求項1に記載の記憶デバイス。
  5. 前記記憶空間が複数のチャンクグループを含み、前記複数のチャンクグループが記憶リソースを提供し、前記記憶リソースのうちのいくつかが各アドレスセグメントセットに割り振られ、異なるチャンクグループが異なるアドレスセグメントセットに割り振られる、請求項1に記載の記憶デバイス。
  6. 前記記憶空間が論理ユニットLUNに仮想化され、前記LUNが前記記憶デバイスによってユーザに提供され、前記LUNに対応するアドレスがいくつかの論理ブロックアドレスLBA間隔に分類され、各アドレスセグメントが1つのLBA間隔である、請求項1から5のいずれか一項に記載の記憶デバイス。
  7. 前記記憶デバイスがフロントエンドインターフェースカードをさらに含み、前記複数のコントローラが前記フロントエンドインターフェースカードに別々に結合され、前記フロントエンドインターフェースカードがマッピングテーブルを記憶し、前記マッピングテーブルが、各アドレスセグメントセットと割り振られたコンピューティングリソースとの間のマッピング関係、および/または、各アドレスセグメントセットと割り振られたネットワークリソースとの間のマッピング関係、および/または、各アドレスセグメントセットと割り振られたハードディスクリソースとの間のマッピング関係を示すために使用される、請求項1から6のいずれか一項に記載の記憶デバイス。
  8. いくつかの仮想ノードが前記記憶デバイス内で作成され、1つの仮想ノードが、事前設定されたアルゴリズムを使用することによって1つのアドレスセグメントセットにマッピングされ、前記マッピングテーブルが、各仮想ノードと前記仮想ノードがマッピングされたアドレスセグメントセットに割り振られたコンピューティングリソースとの間のマッピング関係、および/または、各仮想ノードと前記仮想ノードがマッピングされたアドレスセグメントセットに割り振られたネットワークリソースとの間のマッピング関係、および/または、各仮想ノードと前記仮想ノードがマッピングされたアドレスセグメントセットに割り振られたハードディスクリソースとの間のマッピング関係を記録する、
    請求項7に記載の記憶デバイス。
  9. 新たに追加されたコントローラをさらに含み、前記新たに追加されたコントローラがプロセッサを含み、前記新たに追加されたコントローラが前記ディスク筐体に結合され、
    前記新たに追加されたコントローラに含まれる前記プロセッサがコンピューティングリソースとして使用され、第1のアドレスセグメントセット内の第1のアドレスセグメントに割り振られ、前記第1のアドレスセグメントと前記第1のアドレスセグメントセットに割り振られたコンピューティングリソースとの間の割振り関係が解放される、
    請求項1に記載の記憶デバイス。
  10. リソース割振り方法であって、前記方法が記憶デバイスに適用され、前記記憶デバイスがディスク筐体と複数のコントローラとを含み、各コントローラが複数のプロセッサを含み、各プロセッサが複数のプロセッサコアを含み、前記複数のコントローラが前記ディスク筐体に別々に結合され、前記ディスク筐体が複数のハードディスクを含み、前記方法が、
    コンピューティングリソースおよび記憶空間を提供するステップであって、前記記憶空間に対応する論理アドレスがいくつかのアドレスセグメントセットに分類され、各アドレスセグメントセットが1つまたは複数のアドレスセグメントを含む、ステップと、
    前記コンピューティングリソースのうちのいくつかを各アドレスセグメントセットに割り振るステップであって、前記いくつかのコンピューティングリソースが前記アドレスセグメントセットに含まれるアドレスセグメントにアクセスするためのデータアクセス要求を実行するために使用され、異なるアドレスセグメントセットに割り振られたコンピューティングリソースが異なるプロセッサからのものであるか、または異なるアドレスセグメントセットに割り振られたコンピューティングリソースが異なるプロセッサコアからのものである、ステップと
    を含む方法。
  11. 各プロセッサがメモリを有し、前記コンピューティングリソースが前記複数のプロセッサに含まれるメモリをさらに含み、前記方法が、
    1つのメモリを各アドレスセグメントセットに割り振るステップであって、異なるメモリが異なるアドレスセグメントセットに割り振られる、ステップ
    をさらに含む、請求項10に記載の方法。
  12. 各アドレスセグメントセットに割り振られたメモリが、前記アドレスセグメントセットに割り振られたプロセッサのローカルメモリである、請求項10に記載の方法。
  13. 前記記憶デバイスがネットワークリソースをさらに含み、前記ネットワークリソースが前記複数のコントローラと前記ディスク筐体との間の複数の接続によって提供され、前記方法が、
    前記ネットワークリソースのうちのいくつかを各アドレスセグメントセットに割り振るステップであって、異なる接続が異なるアドレスセグメントセットに割り振られる、ステップ
    をさらに含む、請求項10に記載の方法。
  14. 前記記憶空間が複数のチャンクグループを含み、前記複数のチャンクグループが記憶リソースを提供し、前記方法が、
    前記記憶リソースのうちのいくつかを各アドレスセグメントセットに割り振るステップであって、異なるチャンクグループが異なるアドレスセグメントセットに割り振られる、ステップ
    をさらに含む、請求項10に記載の方法。
  15. 前記記憶空間が論理ユニットLUNに仮想化され、前記LUNが前記記憶デバイスによってユーザに提供され、前記LUNに対応するアドレスがいくつかの論理ブロックアドレスLBA間隔に分類され、各アドレスセグメントが1つのLBA間隔である、請求項10から14のいずれか一項に記載の方法。
  16. 前記記憶デバイスがフロントエンドインターフェースカードをさらに含み、前記複数のコントローラが前記フロントエンドインターフェースカードに別々に結合され、前記フロントエンドインターフェースカードがマッピングテーブルを記憶し、前記マッピングテーブルが、各アドレスセグメントセットと割り振られたコンピューティングリソースとの間のマッピング関係、および/または、各アドレスセグメントセットと割り振られたネットワークリソースとの間のマッピング関係、および/または、各アドレスセグメントセットと割り振られたハードディスクリソースとの間のマッピング関係を示すために使用される、請求項10から15のいずれか一項に記載の方法。
  17. 前記方法が、
    データアクセス要求を受信するステップであって、前記データアクセス要求が仮想アドレスを含む、ステップと、
    前記仮想アドレスに基づいて、前記データアクセス要求に対応するアドレスセグメントセットを決定するステップと、
    前記データアクセス要求に対応する前記アドレスセグメントセットに割り振られたコンピューティングリソースについて前記マッピングテーブルを検索するステップと、
    前記割り振られたコンピューティングリソースを使用することによって前記データアクセス要求を処理するステップと
    をさらに含む、請求項16に記載の方法。
  18. いくつかの仮想ノードを作成するステップであって、1つの仮想ノードが、事前設定されたアルゴリズムを使用することによって1つのアドレスセグメントセットにマッピングされ、前記マッピングテーブルが、各仮想ノードと前記仮想ノードがマッピングされたアドレスセグメントセットに割り振られたコンピューティングリソースとの間のマッピング関係、および/または、各仮想ノードと前記仮想ノードがマッピングされたアドレスセグメントセットに割り振られたネットワークリソースとの間のマッピング関係、および/または、各仮想ノードと前記仮想ノードがマッピングされたアドレスセグメントセットに割り振られたハードディスクリソースとの間のマッピング関係を記録する、ステップ
    をさらに含む、請求項16に記載の方法。
  19. 新たに追加されたコントローラを構成するステップであって、前記新たに追加されたコントローラがプロセッサを含み、前記新たに追加されたコントローラが前記ディスク筐体に結合される、ステップと、
    前記新たに追加されたコントローラに含まれる前記プロセッサをコンピューティングリソースとして使用し、前記プロセッサをアドレスセグメントセット内の第1のアドレスセグメントに割り振り、前記第1のアドレスセグメントと前記アドレスセグメントセットに割り振られたコンピューティングリソースとの間の割振り関係を解放するステップと
    をさらに含む、請求項10に記載の方法。
  20. ホストと、請求項1から9のいずれか一項に記載の記憶デバイスとを含む記憶システム。
  21. コンピュータ可読記憶媒体であって、前記コンピュータ可読記憶媒体が命令を記憶し、前記命令が記憶デバイス上で実行されるとき、前記記憶デバイスが請求項10から19のいずれか一項に記載のリソース割振り方法を実施することを可能にされる、コンピュータ可読記憶媒体。
JP2022502969A 2019-07-17 2020-05-06 リソース割振り方法、記憶デバイス、および記憶システム Active JP7467593B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
CN201910646566 2019-07-17
CN201910646566.4 2019-07-17
CN201910955603.X 2019-10-09
CN201910955603.XA CN112241320B (zh) 2019-07-17 2019-10-09 资源分配方法、存储设备和存储系统
PCT/CN2020/088784 WO2021008197A1 (zh) 2019-07-17 2020-05-06 资源分配方法、存储设备和存储系统

Publications (2)

Publication Number Publication Date
JP2022541261A true JP2022541261A (ja) 2022-09-22
JP7467593B2 JP7467593B2 (ja) 2024-04-15

Family

ID=74168311

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022502969A Active JP7467593B2 (ja) 2019-07-17 2020-05-06 リソース割振り方法、記憶デバイス、および記憶システム

Country Status (5)

Country Link
US (2) US11861196B2 (ja)
EP (1) EP3992792A4 (ja)
JP (1) JP7467593B2 (ja)
CN (1) CN112241320B (ja)
WO (1) WO2021008197A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11451456B2 (en) * 2019-04-19 2022-09-20 Cisco Technology, Inc. Learning stable representations of devices for clustering-based device classification systems
JP2024509954A (ja) * 2021-03-12 2024-03-05 華為技術有限公司 メモリ共有制御方法及びデバイス、コンピュータデバイス、並びにシステム
CN113485789B (zh) * 2021-06-30 2023-03-21 海光信息技术股份有限公司 资源配置方法、装置及计算机架构
CN113849317B (zh) * 2021-11-29 2022-03-22 苏州浪潮智能科技有限公司 一种内存池资源使用方法及相关装置
CN116192806A (zh) * 2023-01-13 2023-05-30 北京信而泰科技股份有限公司 一种基于测试仪的ip分配方法、系统、终端及存储介质
CN115865803B (zh) * 2023-03-03 2023-08-22 浪潮电子信息产业股份有限公司 一种io请求处理方法、装置、设备及可读存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007501458A (ja) * 2003-08-01 2007-01-25 オラクル・インターナショナル・コーポレイション データの所有権の動的な再割当
JP2008059353A (ja) * 2006-08-31 2008-03-13 Hitachi Ltd 仮想化システム及び領域割当て制御方法
JP2008134775A (ja) * 2006-11-28 2008-06-12 Hitachi Ltd 記憶サブシステム及びこれを利用したリモートコピーシステム
WO2014192144A1 (ja) * 2013-05-31 2014-12-04 株式会社日立製作所 制御装置および制御方法
JP2015529862A (ja) * 2012-10-04 2015-10-08 株式会社日立製作所 計算機システム及び計算機システムのボリューム管理方法
WO2016121066A1 (ja) * 2015-01-29 2016-08-04 株式会社日立製作所 ストレージシステム
US20190114076A1 (en) * 2017-10-13 2019-04-18 Huawei Technologies Co., Ltd. Method and Apparatus for Storing Data in Distributed Block Storage System, and Computer Readable Storage Medium

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6578128B1 (en) * 2001-03-29 2003-06-10 Emc Corporation Address management for a shared memory region on a multi-processor controller board
US6643722B1 (en) * 2001-03-29 2003-11-04 Emc Corporation Data storage system having director boards with plural processors
JP4859471B2 (ja) * 2006-02-02 2012-01-25 株式会社日立製作所 ストレージシステム及びストレージコントローラ
JP4680851B2 (ja) * 2006-08-18 2011-05-11 富士通株式会社 システムコントローラ,同一アドレスリクエストキューイング防止方法および情報処理装置
US7987352B2 (en) * 2007-11-30 2011-07-26 Intel Corporation Booting with sub socket partitioning
CN102446159B (zh) * 2010-10-12 2013-09-18 无锡江南计算技术研究所 多核处理器的数据管理方法及装置
CN102033768B (zh) * 2010-12-10 2013-10-30 杭州海康威视数字技术股份有限公司 多cpu系统的启动方法及多cpu系统
US20150324234A1 (en) * 2013-11-14 2015-11-12 Mediatek Inc. Task scheduling method and related non-transitory computer readable medium for dispatching task in multi-core processor system based at least partly on distribution of tasks sharing same data and/or accessing same memory address(es)
CN109344112A (zh) * 2014-07-08 2019-02-15 北京航空航天大学 一种基于多核处理器架构的机器人混合系统应用框架
CN105677580B (zh) * 2015-12-30 2019-04-12 杭州华为数字技术有限公司 访问缓存的方法和装置
US10534719B2 (en) * 2017-07-14 2020-01-14 Arm Limited Memory system for a data processing network
CN109407975B (zh) * 2018-09-19 2020-08-25 华为技术有限公司 写数据方法与计算节点以及分布式存储系统
US11520674B2 (en) * 2019-09-13 2022-12-06 EMC IP Holding Company LLC Managing containers on a data storage system

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007501458A (ja) * 2003-08-01 2007-01-25 オラクル・インターナショナル・コーポレイション データの所有権の動的な再割当
JP2008059353A (ja) * 2006-08-31 2008-03-13 Hitachi Ltd 仮想化システム及び領域割当て制御方法
JP2008134775A (ja) * 2006-11-28 2008-06-12 Hitachi Ltd 記憶サブシステム及びこれを利用したリモートコピーシステム
JP2015529862A (ja) * 2012-10-04 2015-10-08 株式会社日立製作所 計算機システム及び計算機システムのボリューム管理方法
WO2014192144A1 (ja) * 2013-05-31 2014-12-04 株式会社日立製作所 制御装置および制御方法
WO2016121066A1 (ja) * 2015-01-29 2016-08-04 株式会社日立製作所 ストレージシステム
US20190114076A1 (en) * 2017-10-13 2019-04-18 Huawei Technologies Co., Ltd. Method and Apparatus for Storing Data in Distributed Block Storage System, and Computer Readable Storage Medium

Also Published As

Publication number Publication date
EP3992792A1 (en) 2022-05-04
US20240094933A1 (en) 2024-03-21
EP3992792A4 (en) 2022-08-17
CN112241320B (zh) 2023-11-10
US20220137819A1 (en) 2022-05-05
JP7467593B2 (ja) 2024-04-15
WO2021008197A1 (zh) 2021-01-21
US11861196B2 (en) 2024-01-02
CN112241320A (zh) 2021-01-19

Similar Documents

Publication Publication Date Title
JP7467593B2 (ja) リソース割振り方法、記憶デバイス、および記憶システム
US8051243B2 (en) Free space utilization in tiered storage systems
US11262916B2 (en) Distributed storage system, data processing method, and storage node
JP5512833B2 (ja) ストレージの仮想化機能と容量の仮想化機能との両方を有する複数のストレージ装置を含んだストレージシステム
US8639898B2 (en) Storage apparatus and data copy method
US11226905B2 (en) System and method for mapping objects to regions
US9122415B2 (en) Storage system using real data storage area dynamic allocation method
JP5973089B2 (ja) ストレージシステムの移行方式および移行方法
US10552089B2 (en) Data processing for managing local and distributed storage systems by scheduling information corresponding to data write requests
JP6222227B2 (ja) ストレージノード、ストレージノード管理装置、ストレージノード論理容量設定方法、プログラム、記録媒体および分散データストレージシステム
US11899533B2 (en) Stripe reassembling method in storage system and stripe server
WO2017107015A1 (zh) 存储空间的分配方法及存储设备
JPWO2014155555A1 (ja) 管理システム及び管理プログラム
US20210278983A1 (en) Node Capacity Expansion Method in Storage System and Storage System
US20160364268A1 (en) Computer system, management computer, and management method
US11593182B2 (en) Storage system
JP5183363B2 (ja) 論理ボリュームのデータ移動方法とストレージシステムおよび管理計算機
CN104426965B (zh) 自管理存储方法和系统
JP7107981B2 (ja) 計算機システム
KR20120063946A (ko) 대용량 통합 메모리를 위한 메모리 장치 및 이의 메타데이터 관리 방법
US20210334043A1 (en) Storage system and storage system control method
US20210243082A1 (en) Distributed computing system and resource allocation method
US10671324B2 (en) Locating grains in storage using grain table to grain-range table compression
JP2023016223A (ja) 分散型ストレージシステム及びボリューム管理方法
JP6657990B2 (ja) ストレージ装置、仮想ボリューム制御システム、仮想ボリューム制御方法および仮想ボリューム制御プログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220225

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220225

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230308

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230417

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230718

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20231023

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240214

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20240226

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240311

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240403

R150 Certificate of patent or registration of utility model

Ref document number: 7467593

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150