JP5937598B2 - Scheduling I / O writes in a storage environment - Google Patents
Scheduling I / O writes in a storage environment Download PDFInfo
- Publication number
- JP5937598B2 JP5937598B2 JP2013529322A JP2013529322A JP5937598B2 JP 5937598 B2 JP5937598 B2 JP 5937598B2 JP 2013529322 A JP2013529322 A JP 2013529322A JP 2013529322 A JP2013529322 A JP 2013529322A JP 5937598 B2 JP5937598 B2 JP 5937598B2
- Authority
- JP
- Japan
- Prior art keywords
- request
- type
- storage
- read
- storage devices
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
Description
本発明は、コンピュータネットワークに関し、より詳細には、コンピューティングデータストレージシステムに関する。 The present invention relates to computer networks, and more particularly to computing data storage systems.
コンピュータのメモリストレージ及びデータ帯域幅が増すと、企業が管理するデータの量及び複雑性も増す。通常、データセンターなどの大規模分散型ストレージシステムは、多くの業務を実行する。分散型ストレージシステムは、1又はそれ以上のネットワークにより相互接続された複数のクライアントコンピュータに結合することができる。分散型ストレージシステムのいずれかの部分が不良を起こし、又は利用できなくなった場合には、企業活動が損なわれ、又は完全に停止する恐れがある。このような分散型ストレージシステムは、データの利用可能性及び高パフォーマンス機能のための基準を高く維持しようと努める。 As computer memory storage and data bandwidth increase, so does the amount and complexity of data managed by the enterprise. Usually, a large-scale distributed storage system such as a data center performs many tasks. A distributed storage system can be coupled to multiple client computers interconnected by one or more networks. If any part of a distributed storage system fails or becomes unusable, business activity may be compromised or completely stopped. Such distributed storage systems strive to maintain high standards for data availability and high performance capabilities.
ストレージシステム自体の内部では、一般に、ファイルシステム及びストレージデバイスレベルの入力/出力(I/O)スケジューラが、どのように動作を実行すべきかに関する段階を提供することに加え、読み込み及び書き込み動作の順序を決定する。例えば、ストレージデバイスにとっては、非順次的読み込み及び書き込み動作の方が、順次的読み込み及び書き込み動作よりも(時間及び/又はリソースなどの観点から)実行にコストが掛かることがある。従って、I/Oスケジューラは、非順次的動作を低減しようと試みることができる。また、I/Oスケジューラは、スタベーションの防止、要求のマージング及びプロセス間の公平性などのその他の機能を提供することもできる。 Within the storage system itself, in general, the order of read and write operations in addition to providing a stage for how the file system and storage device level input / output (I / O) scheduler should perform the operations. To decide. For example, for storage devices, non-sequential read and write operations may be more expensive to perform (in terms of time and / or resources) than sequential read and write operations. Thus, the I / O scheduler can attempt to reduce nonsequential operations. The I / O scheduler may also provide other functions such as starvation prevention, request merging, and fairness between processes.
ストレージデバイス間では、少なくとも読み込み及び書き込み応答時間が大幅に異なることがある。このような差異は、技術自体の特性と考えることができる。従って、選択したデータストレージデバイスに関連する技術及び機構は、効果的なI/Oスケジューリングを行うために使用する方法を決定することができる。例えば、多くの現在のアルゴリズムは、ハードディスクドライブ(HDD)を利用するシステムに合わせて開発されたものである。HDDは、各々が磁気媒体で被覆された1又はそれ以上の回転ディスクを含む。これらのディスクは、毎分数千回転の速さで回転する。また、この回転ディスク上への磁気読み込み/書き込み装置の位置付けには、電磁アクチュエータが関与する。この装置の機械的及び電気機械的設計が、I/O特性に影響を与える。残念ながら、摩擦、摩耗、振動及び機械的不均衡によって信頼性問題が生じるとともに、HDDのI/O特性が影響を受けることがある。多くの現在のI/Oスケジューラは、HDDの入力/出力(I/O)特性を考慮するように設計されている。 At least the read and write response times may differ significantly between storage devices. Such a difference can be considered as a characteristic of the technology itself. Thus, the techniques and mechanisms associated with the selected data storage device can determine the method to use to perform effective I / O scheduling. For example, many current algorithms have been developed for systems that use hard disk drives (HDDs). The HDD includes one or more rotating disks, each coated with a magnetic medium. These discs rotate at a speed of thousands of revolutions per minute. In addition, an electromagnetic actuator is involved in positioning the magnetic read / write device on the rotating disk. The mechanical and electromechanical design of this device affects the I / O characteristics. Unfortunately, friction, wear, vibration, and mechanical imbalances can cause reliability problems and can affect HDD I / O characteristics. Many current I / O schedulers are designed to take into account HDD input / output (I / O) characteristics.
別のタイプの記憶媒体の例に、ソリッドステートドライブ(SSD)がある。SSDは、HDDとは対照的に、永続データの記憶に磁気媒体装置ではなく固体メモリを利用する。固体メモリは、フラッシュメモリセルを含むことができる。フラッシュメモリは、ハードドライブの特徴とは異なるいくつかの特徴を有する。例えば、一般に、フラッシュメモリセルは、書き換え又は再プログラム前に大きなブロック単位で消去される。一般的には、フラッシュメモリも、チップ、パッケージ、平面及びブロックなどの複雑な構成で構築される。選択した構成のサイズ及び並列性、時間に伴うフラッシュメモリの損耗性、(単複の)デバイスの相互接続及び転送速度は全てが異なり得る。また、このようなデバイスは、デバイス上の記憶を管理するためのフラッシュ変換層(FTL)を含むこともできる。FTLが利用するアルゴリズムは様々であり、デバイスの挙動及び/又はパフォーマンスのばらつきの一因となることもある。従って、一般に、フラッシュベースのSSDを記憶に使用するシステムでは、特性の異なるハードドライブなどのシステムに合わせて設計されたI/Oスケジューラを利用しながら高いパフォーマンス及び予測可能なレイテンシを実現できない場合がある。 Another example of a storage medium is a solid state drive (SSD). In contrast to HDDs, SSDs use solid-state memory rather than magnetic media devices to store persistent data. The solid state memory can include flash memory cells. Flash memory has several features that are different from those of a hard drive. For example, in general, flash memory cells are erased in large block units before rewriting or reprogramming. In general, the flash memory is also constructed with a complicated configuration such as a chip, a package, a plane, and a block. The size and parallelism of the selected configuration, flash memory wear over time, device interconnect (s) and transfer rates can all be different. Such devices can also include a flash translation layer (FTL) for managing storage on the device. The algorithms that FTL uses vary and may contribute to device behavior and / or performance variations. Therefore, in general, a system using a flash-based SSD for storage may not achieve high performance and predictable latency while using an I / O scheduler designed for a system such as a hard drive having different characteristics. is there.
上記に鑑み、複数のストレージデバイス間で読み込み及び書き込み動作を効果的にスケジュールするためのシステム及び方法が望まれている。 In view of the above, there is a need for a system and method for effectively scheduling read and write operations between multiple storage devices.
複数のソリッドステートストレージデバイス間で読み込み及び書き込み動作を効果的にスケジュールするためのコンピュータシステム及び方法の様々な実施形態を開示する。 Various embodiments of computer systems and methods for effectively scheduling read and write operations among multiple solid state storage devices are disclosed.
1つの実施形態では、コンピュータシステムが、ネットワークを介して読み込み及び書き込み要求を受け取るように結合された1又はそれ以上のデータストレージアレイにネットワークを介して読み込み及び書き込み要求を伝達するように構成された複数のクライアントコンピュータを備える。複数のストレージデバイス上の複数の記憶位置を含む(単複の)データストレージアレイを企図する。様々な実施形態では、このストレージデバイスが、データの記憶及び保護を行うための独立ドライブ冗長アレイ(RAID)構成で構成される。データストレージデバイスは、フラッシュメモリセルなどの、データ記憶のための固体メモリ技術を含むことができる。対応するストレージデバイスの特性を使用して、ストレージデバイスへのI/O要求をスケジュールする。特性としては、I/O要求の予測応答時間、デバイス寿命、いずれかの対応するキャッシュサイズ、アクセス速度、エラー率、現在のI/O要求、完了したI/O要求などを挙げることができる。 In one embodiment, the computer system is configured to communicate read and write requests over the network to one or more data storage arrays coupled to receive read and write requests over the network. A plurality of client computers are provided. Contemplate data storage array (s) including multiple storage locations on multiple storage devices. In various embodiments, the storage device is configured in an independent drive redundant array (RAID) configuration for data storage and protection. Data storage devices can include solid state memory technology for data storage, such as flash memory cells. Schedule the I / O request to the storage device using the characteristics of the corresponding storage device. Characteristics can include an expected response time of an I / O request, device lifetime, any corresponding cache size, access speed, error rate, current I / O request, completed I / O request, and the like.
1つの実施形態では、I/Oスケジューラが、読み込み及び書き込み要求を受け取り、この読み込み及び書き込み要求を、複数のストレージデバイスによって処理されるようにスケジュールするよう構成される。これらのストレージデバイスは、提供される動作に応じて異なるレイテンシを示すことがあり、期待又は希望されるパフォーマンスとは異なるパフォーマンスを様々な時点で引き起こす予定外又は予想外の挙動を示すこともある。様々な実施形態では、これらの挙動が、デバイスは正しく機能している(すなわち、エラー状態ではない)ものの、レイテンシ及び/又はスループットに基づいて期待又は希望するレベルよりも低いレベルで単純に行われている挙動に対応する。このような挙動及びパフォーマンスを、「可変パフォーマンス」挙動と呼ぶことができる。これらの可変パフォーマンス挙動は、例えば、フラッシュベースのメモリ技術などの技術によって示されることがある。データ記憶媒体を対象とする、第1のタイプの動作及び第2のタイプの動作を含む要求を受け取るように構成されたストレージコントローラを企図する。このコントローラは、第1のタイプの要求を前記複数のストレージデバイスによって直ちに処理されるようにスケジュールし、第2のタイプの要求を複数のストレージデバイスによって後で処理されるようにキューに入れるよう構成される。第1のタイプの動作は、レイテンシが相対的に短いと予想される動作に対応することができ、第2のタイプの動作は、レイテンシが相対的に長いと予想される動作に対応することができる。短いレイテンシの動作は、読み込み動作に対応することができ、長いレイテンシの動作は、書き込み動作を含むことができる。第2のタイプの動作に対応する複数の要求をキューに入れた後、ストレージコントローラが、第1のタイプの動作に対応する要求の処理を中断し、第2のタイプの動作に対応する要求のみを処理するように構成される実施形態も企図する。 In one embodiment, the I / O scheduler is configured to receive read and write requests and schedule the read and write requests to be processed by multiple storage devices. These storage devices may exhibit different latencies depending on the operations provided and may exhibit unplanned or unexpected behavior that causes performance at different times that is different from the expected or desired performance. In various embodiments, these behaviors are simply performed at a level that is lower than expected or desired based on latency and / or throughput, even though the device is functioning correctly (ie, not in an error state). Corresponds to the behavior. Such behavior and performance can be referred to as “variable performance” behavior. These variable performance behaviors may be demonstrated by techniques such as, for example, flash-based memory technology. A storage controller is contemplated that is configured to receive a request directed to a data storage medium that includes a first type of operation and a second type of operation. The controller is configured to schedule a first type of request for immediate processing by the plurality of storage devices and to queue a second type of request for later processing by the plurality of storage devices. Is done. The first type of operation may correspond to an operation that is expected to have a relatively short latency, and the second type of operation may correspond to an operation that is expected to have a relatively long latency. it can. A short latency operation can correspond to a read operation, and a long latency operation can include a write operation. After queuing a plurality of requests corresponding to the second type of operation, the storage controller suspends processing of the request corresponding to the first type of operation and only requests corresponding to the second type of operation Embodiments configured to process are also contemplated.
以下の説明及び添付図面を検討すると、これらの及びその他の実施形態が明らかになるであろう。 These and other embodiments will be apparent from consideration of the following description and accompanying drawings.
本発明は様々な修正及び代替形態が可能であるが、図面には特定の実施形態を一例として示し、本明細書ではこれらについて詳細に説明する。しかしながら、図面及びこれらに対する詳細な説明は、開示する特定の形態に本発明を限定することを意図するものではなく、むしろ添付の特許請求の範囲によって定められる本発明の思想及び範囲内にある全ての修正物、同等物及び代替物を含むことを意図するものであると理解されたい。 While the invention is susceptible to various modifications and alternative forms, specific embodiments are shown by way of example in the drawings and are described in detail herein. However, the drawings and detailed description thereof are not intended to limit the invention to the particular forms disclosed, but rather are within the spirit and scope of the invention as defined by the appended claims. It should be understood that the modifications, equivalents and alternatives are intended to be included.
以下の説明では、本発明を完全に理解できるように数多くの具体的な詳細を示す。しかしながら、当業者であれば、これらの具体的な詳細を伴わずに本発明を実施できると認識するであろう。いくつかの例では、本発明を曖昧にしないように、周知の回路、構造、信号、コンピュータプログラム命令及び技術については詳細に示していない。 In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, one skilled in the art will recognize that the invention may be practiced without these specific details. In some instances, well-known circuits, structures, signals, computer program instructions, and techniques have not been shown in detail in order not to obscure the present invention.
図1を参照すると、ネットワークアーキテクチャ100の1つの実施形態の汎用ブロック図を示している。後述するように、ネットワークアーキテクチャ100の1つの実施形態は、ネットワーク180を介して互いに、及びデータストレージアレイ120a〜120bに相互接続されたクライアントコンピュータシステム110a〜110bを含む。ネットワーク180は、スイッチ140を介して第2のネットワーク190に結合することができる。このネットワーク190を介して、クライアントコンピュータシステム110cが、クライアントコンピュータシステム110a〜110b及びデータストレージアレイ120a〜120bに結合される。また、ネットワーク190は、スイッチ150を介してインターネット160又はその他の外部ネットワークに結合することもできる。
Referring to FIG. 1, a general block diagram of one embodiment of a network architecture 100 is shown. As described below, one embodiment of network architecture 100 includes client computer systems 110a-110b interconnected to each other and to
なお、代替の実施形態では、クライアントコンピュータ及びサーバ、スイッチ、ネットワーク、データストレージアレイ及びデータストレージデバイスの数及びタイプが、図1に示すものに限定されない。1又はそれ以上のクライアントは、様々な時点でオフラインで動作することができる。また、動作中、ユーザがネットワークアーキテクチャ100への接続、切断及び再接続を行うと、個々のクライアントコンピュータの接続タイプは変化することがある。さらに、本説明では、一般にネットワーク接続されたストレージについて検討するが、本明細書で説明するシステム及び方法は、直接接続されたストレージシステムに適用することもでき、説明する方法の1つ又はそれ以上の態様を実行するように構成されたホストオペレーティングシステムを含むこともできる。数多くのこのような代替案が可能であり、企図される。図1に示す構成要素の各々のさらなる説明を手短に行う。まず、データストレージアレイ120a〜120bにより提供される機能のいくつかの概要について説明する。
Note that in alternative embodiments, the number and type of client computers and servers, switches, networks, data storage arrays and data storage devices are not limited to those shown in FIG. One or more clients can operate offline at various times. Also, during operation, when a user connects, disconnects, and reconnects to the network architecture 100, the connection type of individual client computers may change. Further, although this description discusses networked storage in general, the systems and methods described herein can also be applied to directly connected storage systems, and one or more of the methods described. A host operating system configured to perform the embodiments may also be included. Many such alternatives are possible and contemplated. A further description of each of the components shown in FIG. First, some outlines of the functions provided by the
ネットワークアーキテクチャ100では、データストレージアレイ120a〜120bの各々を、クライアントコンピュータシステム110a〜110cなどの異なるサーバ及びコンピュータ間のデータの共有に使用することができる。また、データストレージアレイ120a〜120bを、ディスクのミラーリング、バックアップ及び復元、保存データの保管及び検索、並びにストレージデバイス間のデータ移行に使用することもできる。代替の実施形態では、クラスタを形成するために、1又はそれ以上のクライアントコンピュータシステム110a〜110cを、高速ローカルエリアネットワーク(LAN)を介して互いにリンクさせることができる。このようなクライアントは、データストレージアレイ120a〜120bの1つに存在するクラスタ共有ボリュームなどのストレージリソースを共有することができる。
In network architecture 100, each of
データストレージアレイ120a〜120bの各々は、データ記憶のためのストレージサブシステム170を含む。ストレージサブシステム170は、複数のストレージデバイス176a〜176mを含むことができる。これらのストレージデバイス176a〜176mは、クライアントコンピュータシステム110a〜110cにデータ記憶サービスを提供することができる。ストレージデバイス176a〜176mの各々は、データ記憶を行うための特定の技術及び機構を使用する。これらのストレージデバイス176a〜176mの各々で使用されるタイプの技術及び機構を少なくとも部分的に使用して、ストレージデバイス176a〜176mの各々との間の読み込み及び書き込み動作の制御及びスケジュールに使用するアルゴリズムを決定することができる。これらのアルゴリズムで使用されるロジックを、基本オペレーティングシステム(OS)116、ファイルシステム140、ストレージサブシステムコントローラ174内の1又はそれ以上のグローバルI/Oスケジューラ178、又はストレージデバイス176a〜176mの各々における制御ロジックなどのうちの1又はそれ以上に含めることができる。また、本明細書で説明するロジック、アルゴリズム及び制御機構は、ハードウェア及び/又はソフトウェアを含むことができる。
Each of the
ストレージデバイス176a〜176mの各々は、読み込み及び書き込み要求を受け取るとともに、各々をアレイ内の行及び列としてアドレス指定可能な複数のデータス記憶位置を含むように構成することができる。1つの実施形態では、ストレージデバイス176a〜176m内のデータ記憶位置を、論理的で冗長なストレージコンテナ又はRAIDアレイ(低価格/独立ディスク冗長アレイ)内に配置することができる。いくつかの実施形態では、ストレージデバイス176a〜176mの各々が、従来のハードディスクドライブ(HDD)とは異なる技術をデータ記憶に利用することができる。例えば、ストレージデバイス176a〜176mの1又はそれ以上は、永続データを記憶するための固体メモリから成るストレージを含み、又はこれにさらに結合することができる。他の実施形態では、ストレージデバイス176a〜176mの1又はそれ以上が、スピン注入法、磁気抵抗メモリ(MRAM)法、シングルディスク、メモリスタ、相変化メモリ又はその他の記憶技術などの他の技術を使用するストレージを含み、又はこれにさらに結合することができる。これらの異なる記憶方法及び技術により、ストレージデバイス間で異なるI/O特性が生じ得る。
Each of the
1つの実施形態では、含まれる固体メモリが、ソリッドステートドライブ(SSD)技術を含む。通常、SSD技術は、フラッシュメモリセルを利用する。当業で周知のように、フラッシュメモリセルは、フローティングゲート内に捕捉され蓄積された電子の範囲に基づく二進値を保持する。完全に消去されたフラッシュメモリセルは、フローティングゲート内に電子を全く又は最低数しか蓄積していない。消去されたフラッシュメモリセルには、シングルレベルセル(SLC)フラッシュの二進1などの特定の二進値が関連付けられる。マルチレベルセル(MLC)フラッシュでは、消去されたフラッシュメモリセルに二進値11が関連付けられる。フラッシュメモリセル内の制御ゲートに所与の閾値電圧よりも高い電圧を印加した後、このフラッシュメモリセルは、フローティングゲート内に所与の範囲の電子を捕捉する。従って、プログラムされた(書き込まれた)フラッシュメモリセルには、SLCフラッシュの二進0などの別の特定の二進値が関連付けられる。MLCフラッシュセルでは、制御ゲートに印加された電圧に応じて、プログラムされたメモリセルに複数の二進値の1つを関連付けることができる。
In one embodiment, the included solid state memory includes solid state drive (SSD) technology. Usually, SSD technology utilizes flash memory cells. As is well known in the art, flash memory cells hold a binary value based on the range of electrons trapped and stored in the floating gate. Fully erased flash memory cells store no or a minimum number of electrons in the floating gate. An erased flash memory cell is associated with a particular binary value, such as a
HDD技術とSDD技術の間の技術及び機構の違いにより、データストレージデバイス176a〜176mの入力/出力(I/O)特性に違いが生じることがある。一般的に言えば、SSD技術では、読み込みアクセスレイテンシタイムがHDD技術よりも短い。しかしながら、一般にSSDの書き込みパフォーマンスは、その読み込みパフォーマンスよりも遅く、SSD内の自由なプログラマブルブロックの利用可能性によって大きく影響を受けることがある。SSDの書き込みパフォーマンスは、SSDの読み込みパフォーマンスに比べて大幅に遅いので、読み込みと同様のレイテンシを予想する特定の機能又は動作に関する問題が生じることがある。また、長い書き込みレイテンシが読み込みレイテンシに影響を与えることにより、スケジューリングがより困難になる場合がある。従って、データストレージアレイ120a〜120bの各々では、I/Oスケジューリングに異なるアルゴリズムが使用されることがある。
Differences in input / output (I / O) characteristics of
1つの実施形態では、読み込み動作及び書き込み動作などの異なるタイプの動作のレイテンシが異なる場合、I/Oスケジューリングのアルゴリズムが、これらの動作を分離して、スケジューリングのためにこれらを別個に処理することができる。例えば、ストレージデバイス176a〜176mの1又はそれ以上において、デバイス自体が書き込み動作を内部キャッシュに記憶することなどによってバッチ処理することができる。これらのキャッシュが所与の占有率閾値に達した時に、又は他の何らかの時点で、対応するストレージデバイス176a〜176mが、キャッシュをフラッシュすることができる。一般的には、これらのキャッシュフラッシュにより、予測できない時点で読み込み及び/又は書き込みに追加のレイテンシが加わることがあり、これにより動作を効果的にスケジュールするのが困難になる。従って、I/Oスケジューラは、このようなキャッシュフラッシュがいつ発生し得るかを予測するために、キャッシュのサイズ又は測定したアイドル時間などのストレージデバイスの特性を利用することができる。1又はそれ以上のストレージデバイス176a〜176mの各々の特性が分かると、より効果的なI/Oスケジューリングを行うことができる。1つの実施形態では、グローバルI/Oスケジューラ178が、ストレージデバイス176a〜176mの1又はそれ以上のうちの所与のデバイスが予想外の時点でI/O要求に対して長い応答時間を示していることを検出することができる。これに応答して、グローバルI/Oスケジューラ178は、この所与のデバイスに予想される挙動を再開させるために、このデバイスに所与の動作をスケジュールすることができる。1つの実施形態では、このような動作を、キャッシュフラッシュコマンド、トリムコマンド、又は消去コマンドなどとすることができる。以下、入出力スケジューリングに関するさらなる詳細について説明する。
In one embodiment, if the latency of different types of operations, such as read operations and write operations, is different, an I / O scheduling algorithm separates these operations and processes them separately for scheduling. Can do. For example, in one or more of the
ネットワークアーキテクチャの構成要素
繰り返すが、図示のように、ネットワークアーキテクチャ100は、ネットワーク180及び190を介して互いに及びデータストレージアレイ120a〜120bに相互接続されたクライアントコンピュータシステム110a〜110cを含む。ネットワーク180及び190は、無線接続、直接ローカルエリアネットワーク(LAN)接続、インターネットなどの広域ネットワーク(WAN)接続、ルータ、ストレージエリアネットワーク及びイーサネット(登録商標)などを含む様々な技術を含むことができる。ネットワーク180及び190は、1又はそれ以上のLANを含むことができ、これらは無線であってもよい。ネットワーク180及び190は、リモートダイレクトメモリアクセス(RDMA)ハードウェア及び/又はソフトウェア、伝送制御プロトコル/インターネットプロトコル(TCP/IP)ハードウェア及び/又はソフトウェア、ルータ、リピータ、スイッチ及び/又はグリッドなどをさらに含むことができる。ネットワーク180及び190内では、ファイバチャネル、ファイバチャネルオーバーイーサネット(FCoE)及びiSCSIなどのプロトコルを使用することができる。スイッチ140は、ネットワーク180及び190の両方に関連するプロトコルを利用することができる。ネットワーク190は、伝送制御プロトコル(TCP)及びインターネットプロトコル(IP)、すなわちTCP/IPなどの、インターネット160に使用される通信プロトコルの組と整合することができる。スイッチ150は、TCP/IPスイッチとすることができる。
Repeated components of the network architecture, as shown, network architecture 100 includes a client computer system 110a~110c interconnected to each other and to the
クライアントコンピュータシステム110a〜110cは、デスクトップパソコン(PC)、サーバ、サーバファーム、ワークステーション、ラップトップ、ハンドヘルドコンピュータ、サーバ、携帯情報端末(PDA)及びスマートフォンなどのあらゆる数の固定又はモバイルコンピュータを表す。一般的に言えば、クライアントコンピュータシステム110a〜110cは、1又はそれ以上のプロセッサコアを備えた1又はそれ以上のプロセッサを含む。各プロセッサコアは、所定の汎用命令セットに従って命令を実行するための回路を含む。例えば、x86命令セットアーキテクチャを選択することができる。或いは、Alpha(登録商標)、PowerPC(登録商標)、SPARC(登録商標)又はその他のいずれの汎用命令セットアーキテクチャを選択してもよい。プロセッサコアは、データ及びコンピュータプログラム命令を求めてキャッシュメモリサブシステムにアクセスすることができる。キャッシュサブシステムは、ランダムアクセスメモリ(RAM)及びストレージデバイスを含む記憶階層に結合することができる。 Client computer systems 110a-110c represent any number of fixed or mobile computers such as desktop personal computers (PCs), servers, server farms, workstations, laptops, handheld computers, servers, personal digital assistants (PDAs) and smart phones. Generally speaking, client computer systems 110a-110c include one or more processors with one or more processor cores. Each processor core includes circuitry for executing instructions according to a predetermined general purpose instruction set. For example, an x86 instruction set architecture can be selected. Alternatively, Alpha (R), PowerPC (R), SPARC (R), or any other general purpose instruction set architecture may be selected. The processor core can access the cache memory subsystem for data and computer program instructions. The cache subsystem can be coupled to a storage hierarchy that includes random access memory (RAM) and storage devices.
クライアントコンピュータシステム内の各プロセッサコア及び記憶階層は、ネットワークインターフェイスに接続することができる。クライアントコンピュータシステム110a〜110cの各々は、ハードウェア構成要素に加え、記憶階層内に記憶された基本オペレーティングシステム(OS)を含むことができる。この基本OSは、例えば、MS−DOS(登録商標)、MS−WINDOWS(登録商標)、OS/2(登録商標)、UNIX(登録商標)、Linux(登録商標)、Solaris(登録商標)、AIX(登録商標)又はDARTなどの様々なオペレーティングシステムのいずれかを表すことができる。従って、基本OSは、エンドユーザに様々なサービスを提供するとともに、様々なプログラムの実行をサポートするソフトウェアフレームワークを提供することができる。また、クライアントコンピュータシステム110a〜110cの各々は、バーチャルマシン(VM)をサポートするために使用されるハイパーバイザを含むことができる。当業者には周知のように、デスクトップ及びサーバ内で仮想化を使用して、OSなどのソフトウェアをシステムのハードウェアから完全に又は部分的に分離することができる。仮想化により、エンドユーザに、各々が独自のリソースを有する同じ機械上で複数のOSが実行されているという錯覚を与え、データストレージアレイ120a〜120bの各々におけるストレージデバイス176a〜176m上に構築された論理記憶エンティティ(LUNなど)にアクセスできるようにすることができる。
Each processor core and storage hierarchy in the client computer system can be connected to a network interface. Each of the client computer systems 110a-110c can include a basic operating system (OS) stored in a storage hierarchy in addition to hardware components. Examples of the basic OS include MS-DOS (registered trademark), MS-WINDOWS (registered trademark), OS / 2 (registered trademark), UNIX (registered trademark), Linux (registered trademark), Solaris (registered trademark), and AIX. It can represent any of various operating systems such as (registered trademark) or DART. Therefore, the basic OS can provide various services to end users and a software framework that supports the execution of various programs. In addition, each of the client computer systems 110a-110c can include a hypervisor that is used to support a virtual machine (VM). As is well known to those skilled in the art, virtualization within the desktop and server can be used to completely or partially separate software such as the OS from the system hardware. Virtualization gives the end user the illusion that multiple OSs are running on the same machine, each with its own resources, built on
データストレージアレイ120a〜120bの各々は、クライアントコンピュータシステム110a〜110cなどの異なるサーバ間のデータの共有に使用することができる。データストレージアレイ120a〜120bの各々は、データを記憶するためのストレージサブシステム170を含む。ストレージサブシステム170は、複数のストレージデバイス176a〜176mを含むことができる。これらのストレージデバイス176a〜176mの各々は、SSDとすることができる。コントローラ174は、受け取った読み込み/書き込み要求を処理するためのロジックを含むことができる。例えば、少なくともコントローラ174において、手短に上述したアルゴリズムを実行することができる。受け取った書き込み要求などのバッチ動作には、ランダムアクセスメモリ(RAM)172を使用することができる。様々な実施形態では、書き込み動作(又はその他の動作)をバッチ処理する際に、不揮発性ストレージ(NVRAMなど)を使用することができる。
Each of the
記憶媒体130に記憶された基本OS132、ファイルシステム134、いずれかのOSドライバ(図示せず)及びその他のソフトウェアは、ファイルへのアクセスを可能にする機能を提供し、これらの機能を管理することができる。基本OS134及びOSドライバは、記憶媒体130上に記憶された、受け取った要求に対応する1又はそれ以上のメモリアクセス動作をストレージサブシステム170内で行うようにプロセッサ122により実行可能なプログラム命令を含むことができる。図1に示すシステムは、一般に1又はそれ以上のファイルサーバ及び/又はブロックサーバを含むことができる。
The basic OS 132, the
データストレージアレイ120a〜120bの各々は、ネットワークインターフェイス124を使用してネットワーク180に接続することができる。1つの実施形態では、クライアントコンピュータシステム110a〜110cと同様に、ネットワークインターフェイス124の機能をネットワークアダプタカード上に含めることができる。ネットワークインターフェイス124の機能は、ハードウェア及びソフトウェアの両方を使用して実装することができる。ネットワークインターフェイス124のネットワークカードによる実装上には、ランダムアクセスメモリ(RAM)及び読み取り専用メモリ(ROM)の両方を含めることができる。1又はそれ以上の特定用途向け集積回路(ASIC)を使用して、ネットワークインターフェイス124の機能を提供することができる。
Each of the data storage arrays 120 a-120 b can be connected to the
1つの実施形態では、I/Oパフォーマンスを最適化しようと努めるデータストレージモデルを作成することができる。1つの実施形態では、このモデルが、ストレージシステム内のストレージデバイスの特性に少なくとも部分的に基づく。例えば、ソリッドステートストレージ技術を利用するストレージシステムでは、特定のデバイスの特性を使用してこのデバイスのためのモデルを作成し、このモデルが、対応するI/Oスケジューリングアルゴリズムを通知する機能を果たすことができる。例えば、使用中の特定のストレージデバイスが、読み込みレイテンシに比べて相対的に長い書き込みレイテンシを示す場合、スケジューリング動作においてこのような特性を考慮することができる。なお、相対的に長いと考えるか、それとも短いと考えるかは、特定のシステム、処理中のデータのタイプ、処理するデータの量、又はデータのタイミングなどによって異なることがある。一般的に言えば、システムは、短い又は長いレイテンシを構成するものが何であるか、及び/又はこれらの2つの有意な違いを構成するものが何であるかを判断するようにプログラム可能である。 In one embodiment, a data storage model can be created that seeks to optimize I / O performance. In one embodiment, this model is based at least in part on the characteristics of the storage devices in the storage system. For example, in a storage system utilizing solid state storage technology, a specific device characteristic is used to create a model for this device, which serves to notify the corresponding I / O scheduling algorithm Can do. For example, if a particular storage device in use exhibits a relatively long write latency compared to the read latency, such characteristics can be taken into account in the scheduling operation. Note that whether it is considered relatively long or short may differ depending on the specific system, the type of data being processed, the amount of data to be processed, the timing of the data, and the like. Generally speaking, the system is programmable to determine what constitutes a short or long latency and / or what constitutes a significant difference between these two.
一般的に言えば、デバイス又はコンピューティングシステムのために開発されるあらゆるモデルが不完全となる。多くの場合、現実のシステムで所与のシステムを完全にモデル化するには、考慮すべき変数が単純に多すぎる。場合によっては、完全ではないが価値のあるモデルを開発することが可能な場合もある。以下でより詳細に説明するように、デバイスの特性に基づいてストレージデバイスをモデル化する実施形態を説明する。様々な実施形態では、デバイスがどのように挙動し得るかに関するいくつかの予測に基づいてI/Oスケジューリングが行われる。装置の挙動によっては、デバイスの特性の理解に基づいて、他の挙動より予測しやすいものもある。最適なI/Oパフォーマンスのための動作をより効果的にスケジュールするには、システムの挙動をより確実に制御することが望ましい。予想外の、又は予測できない装置の挙動は、動作のスケジューリングをより困難にする。従って、システム内の予測不能な又は予想外の挙動を最小化しようと努めるアルゴリズムを開発する。 Generally speaking, any model developed for a device or computing system will be incomplete. In many cases, there are simply too many variables to consider in order to fully model a given system in a real system. In some cases, it may be possible to develop a model that is not complete but valuable. As will be described in more detail below, an embodiment for modeling a storage device based on device characteristics will be described. In various embodiments, I / O scheduling is based on some predictions about how a device may behave. Some device behaviors are easier to predict than others based on an understanding of device characteristics. To more effectively schedule operations for optimal I / O performance, it is desirable to more reliably control system behavior. Unexpected or unpredictable device behavior makes operation scheduling more difficult. Therefore, we develop algorithms that try to minimize unpredictable or unexpected behavior in the system.
図2は、モデル化中のデバイス又はシステム、及びこのデバイス又はシステム内の予測不能な挙動を最小化するために使用する方法の概念図である。第1のブロック200に、理想的なシナリオを示す。ブロック200には、システム204及びこのシステムのモデル202を示している。1つの実施形態では、このシステムを、単一のデバイスのシステムとすることができる。或いは、このシステムは、多くのデバイス及び/又は構成要素を含むこともできる。上述したように、モデル202は、モデル化しようとするシステム204の完全なモデルではない場合もある。にもかかわらず、モデル202は、このモデルのために関心のある挙動を捕捉する。1つの実施形態では、モデル202が、コンピューティングストレージシステムをモデル化しようとすることができる。理想的なシナリオ200では、システム204の実際の挙動が、モデル202の挙動と「揃って」いる。換言すれば、一般に、システム204の挙動は、モデル202が捕捉しようとする挙動に適合する。システム挙動204がモデル202の挙動と一致している間は、このシステム挙動は、一般に予測しやすいと思われる。従って、システム内の動作(例えば、読み込み及び書き込み動作)のスケジューリングを、より効果的に行うことができる。
FIG. 2 is a conceptual diagram of the device or system being modeled and the method used to minimize unpredictable behavior within this device or system. The
例えば、読み込み応答時間を最適化することが望まれる場合、システムの他の挙動が比較的予測しやすい場合には、よりタイムリーに読み込みが行われるように読み込みをスケジュールすることが可能である。一方、システムの挙動が比較的予測しにくい場合には、必要時に結果を提供するように読み込みをスケジュールする能力の信頼度が低下する。ブロック210に、システム挙動(小さい方の円)がこのシステム(大きい方の円)のモデルの挙動と揃っていないシナリオを示す。この場合、このシステムは、モデルから外れる挙動を示している。従って、システム挙動の予測可能性が低くなり、動作をスケジューリングする効果が下がることがある。例えば、ストレージシステム内で固体メモリデバイスを使用し、これらのデバイスが、より長いレイテンシで要求を処理するアクションを開始し得る場合、そのデバイスに対してスケジュールされていたあらゆる動作が、より長い又は予想外のレイテンシを生じる可能性もある。このようなデバイス動作の1つの例に、内部キャッシュフラッシュがある。
For example, if it is desired to optimize the read response time, the read can be scheduled to be read in a more timely manner if other behaviors of the system are relatively predictable. On the other hand, if the behavior of the system is relatively difficult to predict, the reliability of the ability to schedule reads to provide results when needed decreases.
予想外の又は予定外のシステム挙動及び対応する可変パフォーマンスの問題に対処するために、作成するモデルは、システムを不確実性の少ない状態に復元するために行うことができるアクションを含むことができる。換言すれば、システムの挙動を予測するモデルの能力を低下させる挙動をシステムが示し始めた場合、このモデルは、特定の予想外の挙動が排除され又は起きにくくなる状態にシステムを復元するために行うことができるいくつかのアクションを構築する。図示の例では、より密接にモデルと揃った状態にシステムを「移動」させようとするアクション212を示している。アクション212は、モデルの外側にあるシステム挙動を検出することに応答して行われるので、「反応的」アクション又は動作と呼ぶことができる。アクション212を行った後に、より理想的な状態220を達成することができる。
To deal with unexpected or unplanned system behavior and corresponding variable performance issues, the model you create can include actions that can be taken to restore the system to a state of low uncertainty. . In other words, if the system begins to exhibit behavior that reduces the model's ability to predict system behavior, this model can be used to restore the system to a state where certain unexpected behavior is eliminated or less likely to occur. Build up some actions that can be done. The illustrated example shows an
予測不能な挙動に反応してシステムをより理想的な状態に移行できるモデルを作成することが望ましいが、それらの予測不能な挙動が存在することにより、効果的なスケジューリング動作が妨げられたままになることもある。従って、予想外の挙動又はイベントの発生を最小化することが望ましいと考えられる。1つの実施形態では、予想外の挙動の発生を防止又は低減するように設計されたアクション又は動作を含むモデルを作成する。これらのアクションは、何らかの挙動又はイベントの発生を防ぎ、又は何らかの挙動又はイベントのタイミングを変化させるために事前対応的に行うことができるので、「事前対応」アクション又は動作と呼ぶことができる。図2のブロック230に、システム挙動(小さい方の円)がそのモデル(大きい方の円)の挙動内に存在するシナリオを示す。にもかかわらず、このモデルは、システム挙動がモデル内に留まったまま、恐らくはより理想的に揃うようにシステム挙動を移動させるアクション232を行うことができる。ブロック230内のシステム挙動は、モデルの外部での挙動を示す状態に近づいているように見える。このような場合、モデルは、システムがこのような状態に近づいていると確信するための何らかの基準を有することができる。例えば、I/Oスケジューラが特定のデバイスにいくつかの書き込み動作を伝えた場合、スケジューラは、このデバイスが将来のある時点で内部キャッシュフラッシュ動作を行うかもしれないと予測することができる。スケジューラは、このようなイベントの発生を待つのではなく、スケジューラが選択した時点でキャッシュフラッシュが行われるように、このデバイスのキャッシュフラッシュ動作を事前対応的にスケジュールすることができる。これとは別に、又はこれに加えて、このような事前対応動作を不定期に行うこともできる。それでもキャッシュフラッシュは発生するが、その発生は予想外のものではなく、既にスケジューラが行う全体的なスケジューリングの一部になっており、より効果的かつ知的に管理することができる。システムは、この事前対応アクション232を行った後、一般的にはより予測しやすい状態240になることが分かる。この理由は、デバイス上でキャッシュフラッシュがスケジュールされて実行され、デバイスがデバイス自体で自発的に内部キャッシュフラッシュを開始する可能性が減少した(すなわち、そのキャッシュが既にフラッシュされた)からである。モデル内で反応的アクション又は動作と事前対応アクション又は動作を組み合わせることにより、システムの予測性を強化できるとともに、同様にスケジューリングの改善を達成することもできる。
It is desirable to create a model that can move the system to a more ideal state in response to unpredictable behavior, but the presence of those unpredictable behaviors has hindered effective scheduling behavior. Sometimes. Therefore, it may be desirable to minimize the occurrence of unexpected behavior or events. In one embodiment, a model is created that includes actions or actions designed to prevent or reduce the occurrence of unexpected behavior. These actions can be referred to as “proactive” actions or actions because they can be proactive to prevent the occurrence of any behavior or event or to change the timing of any behavior or event.
ここで図3を参照すると、予想外の挙動を低減するようにI/Oスケジューリングを行う方法300の1つの実施形態を示している。一般に、上述したネットワークアーキテクチャ100及びデータストレージアレイ120a〜120b内で具体化される構成要素は、方法300に従って動作することができる。この実施形態のステップを順番に示す。しかしながら、ステップによっては、図示のものとは異なる順序で行なうことができるもの、同時に行うことができるもの、他のステップと組み合わせることができるもの、及び別の実施形態には存在しないものもある。 Referring now to FIG. 3, one embodiment of a method 300 for performing I / O scheduling to reduce unexpected behavior is shown. In general, the components embodied in the network architecture 100 and data storage arrays 120 a-120 b described above can operate according to the method 300. The steps of this embodiment are shown in order. However, some steps may be performed in a different order than shown, some may be performed simultaneously, some may be combined with other steps, and some may not exist in other embodiments.
ブロック302において、I/Oスケジューラが、1又はそれ以上のストレージデバイスの読み込み及び書き込み動作をスケジュールする。様々な実施形態では、I/Oスケジューラが、ストレージデバイス毎に別個のキューを(物理的又は論理的に)維持することができる。また、I/Oスケジューラは、対応するストレージデバイスによりサポートされる動作タイプ毎に別個のキューを含むことができる。例えば、I/Oスケジューラは、SSDのための少なくとも別個の読み込みキュー及び別個の書き込みキューを維持することができる。ブロック304において、I/Oスケジューラは、1又はそれ以上のストレージデバイスの挙動をモニタすることができる。1つの実施形態では、I/Oスケジューラが、対応するストレージデバイスのモデル(例えば、デバイスのモデルに少なくとも部分的に基づく挙動タイプモデル及び/又はアルゴリズム)を含み、このモデルに入力するための状態データをストレージデバイスから受け取ることができる。I/Oスケジューラ内のモデルは、ストレージデバイスの既知の及び/又は観察された特性を利用することにより、ストレージデバイスの挙動のモデル化及び予測の両方を行うことができる。
At
I/Oスケジューラは、I/Oパフォーマンスに影響を与える又は影響を与え得る所与のストレージデバイスの特性を検出することができる。例えば、以下でさらに説明するように、デバイス及びI/Oトラフィックの様々な特性及び状態を維持することができる。I/Oスケジューラは、これらの特性及び状態を観察することにより、所与のデバイスが、長いI/Oレイテンシの挙動を示す状態にもうすぐ入るかもしれないと予測することができる。例えば、1つの実施形態では、I/Oスケジューラが、ストレージデバイスへの要求の応答時間に影響を与え得る内部キャッシュフラッシュがストレージデバイス内でまさに起きようとしていることを検出又は予測することができる。例えば、1つの実施形態では、一定時間にわたってアイドルのままであるストレージデバイスは、内部キャッシュをフラッシュする可能性がある。いくつかの実施形態では、所与のデバイスがアイドルであるかどうかが、デバイス外部の展望に基づくことができる。例えば、ある期間にわたってデバイスに動作がスケジュールされていない場合、このデバイスをほぼこの期間にわたってアイドルであると見なすことができる。このような実施形態では、このデバイスは、デバイス内の内部的に開始されたアクティビティに基づいて実際には稼働中の可能性がある。しかしながら、デバイスがアイドルであるかどうかを判断する際には、このような内部的に開始されたアクティビティは考慮されない。他の実施形態では、デバイスがアイドル中であるか、それとも稼働中であるか判断する際に、デバイスの内部的に開始されたアクティビティを考慮することができる。スケジューラは、デバイスの挙動を観察すること、及びこのデバイスが所与の時間にわたってアイドルであったと気付くことにより、いつ内部キャッシュフラッシュが発生し得るかを予測することができる。他の実施形態では、スケジューラが、デバイスの様々な状況又は状態を判断するためにデバイスにポーリングする能力を有することもできる。いずれにせよ、スケジューラは、予定外の挙動が発生するのを防ぐために、内部キャッシュフラッシュなどの予定外の挙動の可能性を判断して、事前対応動作を開始するように構成することができる。このようにして、スケジューラは、デバイス及びシステム内のイベントのタイミングを制御し、より良好に動作をスケジュールすることができる。 The I / O scheduler can detect characteristics of a given storage device that affects or can affect I / O performance. For example, as described further below, various characteristics and states of device and I / O traffic can be maintained. By observing these characteristics and states, the I / O scheduler can predict that a given device may soon enter a state that exhibits long I / O latency behavior. For example, in one embodiment, the I / O scheduler can detect or predict that an internal cache flush is about to occur in the storage device that may affect the response time of requests to the storage device. For example, in one embodiment, a storage device that remains idle for a period of time may flush its internal cache. In some embodiments, whether a given device is idle can be based on a perspective external to the device. For example, if an operation has not been scheduled for a device for a period of time, the device can be considered idle for approximately this period of time. In such an embodiment, the device may actually be running based on internally initiated activity within the device. However, such internally initiated activity is not taken into account when determining whether the device is idle. In other embodiments, the device's internally initiated activity can be taken into account when determining whether the device is idle or running. The scheduler can predict when an internal cache flush may occur by observing the behavior of the device and noting that this device has been idle for a given time. In other embodiments, the scheduler may have the ability to poll the device to determine various conditions or states of the device. In any case, the scheduler can be configured to determine the possibility of unscheduled behavior, such as internal cache flush, and to initiate a proactive action to prevent unscheduled behavior from occurring. In this way, the scheduler can control the timing of events in the device and system and better schedule operations.
デバイス挙動に関する予測を行うための基準として様々な特性を使用することができる。様々な実施形態では、スケジューラが、現在保留中の動作の状態及び/又はストレージデバイスに対応する最近の動作の履歴を維持することができる。いくつかの実施形態では、I/Oスケジューラが、デバイス内のキャッシュのサイズ及び/又はキャッシングポリシーを把握し、ストレージデバイスに送られる総書き込み要求数を維持することができる。他の実施形態では、デバイス内のキャッシュの状態を判断するために(デバイスへの直接ポーリングタイプのアクセスなどの)他の機構を利用可能にすることができる。また、I/Oスケジューラは、ストレージデバイスに送られる書き込み要求内のデータ量を追跡することもできる。その後、I/Oスケジューラは、書き込み要求数又はその書き込み要求に対応する総データ量がいつ所与の閾値に達したかを検出することができる。I/Oスケジューラは、このような状態(条件付きブロック306)を検出した場合、ブロック308において、デバイスの特定の動作をスケジュールすることができる。一般に、このような動作は、上述した事前対応動作に対応することができる。例えば、I/Oスケジューラは、対応するキュー内にキャッシュフラッシュコマンドを入れ込んで、スケジューラの選択時にストレージデバイスがキャッシュフラッシュを行うように強制することができる。或いは、I/Oスケジューラは、ストレージデバイス上のいずれかのキャッシュフラッシュが完了したかどうかを判断するために、キュー内にダミーの読み込み動作を入れ込むこともできる。さらに、スケジューラは、デバイスにクエリを行って(アイドル、稼働中などの)状態情報を取得することができる。上記の及びその他の特性及び動作が可能であり、企図される。また、様々な実施形態では、SSDを元の状態に戻す際に事前対応動作をスケジュールすることができる。このような実施形態では、SSDファームウェア及び/又はマッピングテーブルが、要求が滞った状態又は恒久的に減速した状態に入ることがある。このファームウェアの障害を取り除くには、ドライブを単純にリセットすること、又はドライブの電源を入れ直すことが可能である。しかしながら、状態が恒久的である(すなわち、ファームウェア内に、マッピングテーブルの現状に対処できないバグが存在する)場合、これを修復する別の方法は、ドライブを再フォーマットしてFTLを完全にクリーニング及びリセットし、その後データを再投入すること、又はこのFTLを何か他のデータに再利用することである。 Various characteristics can be used as a basis for making predictions about device behavior. In various embodiments, the scheduler may maintain a status of currently pending operations and / or a history of recent operations corresponding to the storage device. In some embodiments, the I / O scheduler can keep track of the size and / or caching policy of the cache in the device and maintain the total number of write requests sent to the storage device. In other embodiments, other mechanisms (such as direct poll type access to the device) can be made available to determine the state of the cache in the device. The I / O scheduler can also track the amount of data in a write request sent to the storage device. Thereafter, the I / O scheduler can detect when the number of write requests or the total amount of data corresponding to the write requests has reached a given threshold. If the I / O scheduler detects such a condition (conditional block 306), at block 308, the device can schedule certain operations. In general, such an operation can correspond to the proactive operation described above. For example, the I / O scheduler can place a cache flush command in the corresponding queue and force the storage device to perform a cache flush when the scheduler is selected. Alternatively, the I / O scheduler can insert a dummy read operation into the queue to determine whether any cache flushes on the storage device are complete. In addition, the scheduler can query the device to obtain status information (such as idle, active). The above and other characteristics and operations are possible and contemplated. Also, in various embodiments, a proactive action can be scheduled when returning the SSD to its original state. In such an embodiment, the SSD firmware and / or mapping table may enter a stuck state or a permanently decelerated state. To remove this firmware failure, it is possible to simply reset the drive or power cycle the drive. However, if the state is permanent (ie, there is a bug in the firmware that cannot handle the current state of the mapping table), another way to repair this is to reformat the drive and clean the FTL completely. Reset and then repopulate the data, or reuse this FTL for some other data.
上述したアクションを行って、予想外の可変応答時間の発生を防ぎ、又はその回数を減少させることができる。同時に、I/Oスケジューラは、所与のストレージデバイスの予想外の時点におけるあらゆる可変的挙動の発生を検出することができる。I/Oスケジューラは、このような状態(条件付きブロック310)を検出した場合、ブロック312において、このストレージデバイスの対応するキュー内にある動作を入れ込むことができる。この場合、一般に、この動作は、上述した反応的動作に対応することができる。この動作を使用して、ストレージデバイスが可変的挙動を行う時間を短縮し、この可変的挙動の終了を検出することができる。様々な実施形態では、一般に、事前対応動作及び/又は反応的動作が、デバイスを(少なくとも部分的に)既知の状態に置くことができるあらゆる動作を含むことができる。例えば、キャッシュフラッシュ動作を開始することにより、デバイスのキャッシュ状態を空にすることができる。キャッシュが空のデバイスは、キャッシュが空でないデバイスよりも、内部キャッシュフラッシュを開始する可能性が低くなり得る。事前対応動作及び/又は反応的動作のいくつかの例として、キャッシュフラッシュ動作、消去動作、セキュアな消去動作、トリム動作、スリープ動作、休止動作、パワーオン及びオフ、並びにリセット動作が挙げられる。 The actions described above can be performed to prevent or reduce the number of unexpected variable response times. At the same time, the I / O scheduler can detect the occurrence of any variable behavior at an unexpected point in time for a given storage device. If the I / O scheduler detects such a condition (conditional block 310), at block 312, operations in the corresponding queue of this storage device may be entered. In this case, in general, this action can correspond to the reactive action described above. This operation can be used to reduce the time for the storage device to perform the variable behavior and detect the end of this variable behavior. In various embodiments, in general, proactive actions and / or reactive actions can include any action that can place a device (at least in part) in a known state. For example, the cache state of the device can be emptied by starting a cache flush operation. A device with an empty cache may be less likely to initiate an internal cache flush than a device with a non-empty cache. Some examples of proactive and / or reactive operations include cache flush operations, erase operations, secure erase operations, trim operations, sleep operations, hibernation operations, power on and off, and reset operations.
ここで図4を参照すると、ストレージデバイスに発行された動作を分離する方法400の1つの実施形態を示している。この実施形態のステップを順番に示す。しかしながら、ステップによっては、図示のものとは異なる順序で行なうことができるもの、同時に行うことができるもの、他のステップと組み合わせることができるもの、及び別の実施形態には存在しないものもある。様々な実施形態では、スケジューリングのために、第1のタイプの動作を第2のタイプの動作から分離することができる。例えば、1つの実施形態では、第1のタイプの動作に、第2のタイプの動作よりも高いスケジューリング上の優先度を与えることができる。このような実施形態では、第1のタイプの動作の処理を相対的に早くスケジュールし、第2のタイプの動作を後で処理する(事実上、動作の処理を延期する)ようにキューに入れることができる。先にキューに入れた(第2のタイプの)動作が処理されている間、任意の時点で第1のタイプの動作の処理を中断することができる。その後、第1のタイプの動作に処理優先度が戻されている間、第2の動作タイプの処理を再び中断することができる。1つのタイプの処理をいつ停止し、別のタイプの処理をいつ開始するかは、期間、蓄積されたデータ、トランザクションの頻度、利用可能なリソース(例えば、キューの利用)、これらのあらゆる組み合わせ、又はあらゆる所望の状態に基づくことができる。 Referring now to FIG. 4, one embodiment of a method 400 for isolating operations issued to a storage device is shown. The steps of this embodiment are shown in order. However, some steps may be performed in a different order than shown, some may be performed simultaneously, some may be combined with other steps, and some may not exist in other embodiments. In various embodiments, a first type of operation can be separated from a second type of operation for scheduling. For example, in one embodiment, a first type of operation may be given higher scheduling priority than a second type of operation. In such an embodiment, the processing of the first type of operation is scheduled relatively early and the second type of operation is queued for later processing (effectively deferring the processing of the operation). be able to. While a previously queued (second type) operation is being processed, processing of the first type of operation can be interrupted at any time. Thereafter, the processing of the second operation type can be interrupted again while the processing priority is returned to the operation of the first type. When to stop one type of processing and start another type of processing is the duration, accumulated data, transaction frequency, available resources (eg, queue usage), any combination of these, Or it can be based on any desired state.
通常、SSDは、ランダムな読み込み及び書き込み要求に関しては、HDDよりも良好なパフォーマンスを示す。しかしながら、通常、SSDは、その特性に起因して、ランダム書き込み要求に関して示すパフォーマンスの方が読み込み要求よりも悪い。HDDとは違って、読み込み要求と書き込み要求の相対的レイテンシは全く異なり、通常、フラッシュメモリセルのプログラムには、その読み込みよりも時間が掛かるので、書き込み要求には読み込み要求よりも大幅に長い時間が掛かる。また、書き込み動作のレイテンシは、書き込みの一部として行う必要がある追加動作が原因で極めて可変的となり得る。例えば、既に修正済みのフラッシュメモリセルでは、書き込み又はプログラム動作の前に消去動作が行われることがある。また、消去動作は、ブロック単位で行われることがある。このような場合、ブロック(消去セグメント)内のフラッシュメモリセルは、全部まとめて消去される。1つのブロックは比較的大きく、複数のページを含むので、動作には比較的長い時間が掛かることがある。或いは、FTLが、あるブロックを既に消去された消去ブロックにリマップすることがある。いずれの場合にも、書き込み動作を行うことに関連する追加動作により、書き込みレイテンシのばらつきが著しく大きくなるとともに、読み込みよりもレイテンシが大幅に長くなる。他のストレージデバイスタイプは、要求のタイプに基づいて異なる特性を示すことがある。これらに加え、ストレージデバイスによっては、読み込み要求と書き込み要求が混在している場合にパフォーマンス劣り、及び/又は可変的になるものもある。従って、様々な実施形態では、パフォーマンスを向上させるために、読み込み要求と書き込み要求を分離することができる。なお、この説明では、特に読み込み及び書き込み動作について一般的に言及するが、本明細書で説明するシステム及び方法を同様にその他の動作に適用することもできる。このような他の実施形態では、他の比較的長い及び短いレイテンシの動作をこのように識別し、これらをスケジューリングのために分離することができる。また、いくつかの実施形態では、読み込み及び書き込みを第1のタイプの動作として分類し、キャッシュフラッシュ及びトリム動作などのその他の動作を第2のタイプの動作に対応するものとして分類することができる。様々な組み合わせが可能であり、様々な企図が実現する。 Typically, SSDs perform better than HDDs for random read and write requests. However, SSDs typically have poorer performance than read requests for random write requests due to their characteristics. Unlike HDDs, the relative latency of read requests and write requests is quite different, and usually a flash memory cell program takes more time to read than a read request, so write requests take significantly longer than read requests. It takes. Also, the latency of the write operation can be very variable due to additional operations that need to be performed as part of the write. For example, in an already modified flash memory cell, an erase operation may be performed before a write or program operation. The erase operation may be performed in units of blocks. In such a case, all the flash memory cells in the block (erase segment) are erased together. Since one block is relatively large and includes a plurality of pages, the operation may take a relatively long time. Alternatively, the FTL may remap a block to an erase block that has already been erased. In either case, the additional operation associated with performing the write operation significantly increases the write latency variation and significantly increases the latency over reading. Other storage device types may exhibit different characteristics based on the type of request. In addition to these, some storage devices have poor performance and / or become variable when read requests and write requests are mixed. Thus, in various embodiments, read requests and write requests can be separated to improve performance. Note that this description generally refers specifically to read and write operations, but the systems and methods described herein may be applied to other operations as well. In such other embodiments, other relatively long and short latency operations can be identified in this way and separated for scheduling. Also, in some embodiments, reads and writes can be classified as a first type of operation, and other operations such as cache flush and trim operations can be classified as corresponding to a second type of operation. . Various combinations are possible and various schemes are realized.
ブロック402において、I/Oスケジューラは、1又はそれ以上のストレージデバイスのうちの所与のストレージデバイスに関するI/O要求を受け取ってバッファすることができる。ブロック404において、一般にレイテンシの短いI/O要求をレイテンシの長い要求よりも優先してストレージデバイスに発行することができる。例えば、ストレージデバイスが使用するストレージ技術に依存して、読み込み要求のレイテンシの方が書き込み要求及びその他のコマンドタイプのレイテンシよりも短いことがあり、これを初めに発行することができる。この結果、書き込み要求を蓄積できる一方で、読み込み要求に発行優先度が与えられる(すなわち、書き込み要求よりも早くデバイスに伝えられる)。I/Oスケジューラは、ある時点でデバイスに読み込み要求を発行するのを中断して書き込み要求を発行し始める。1つの実施形態では、書き込み要求を複数の書き込みストリームとして発行することができる。従って、書き込み要求に伴うオーバヘッドを複数の書き込み要求にわたって償却することができる。このように、レイテンシの長い要求(書き込み要求など)とレイテンシの短い要求(読み込み要求など)を分離して別個に処理することができる。 At block 402, the I / O scheduler may receive and buffer an I / O request for a given storage device of one or more storage devices. At block 404, generally low latency I / O requests can be issued to the storage device in preference to long latency requests. For example, depending on the storage technology used by the storage device, the read request latency may be shorter than the write request and other command type latencies, which can be issued first. As a result, while the write request can be accumulated, an issue priority is given to the read request (that is, it is transmitted to the device earlier than the write request). The I / O scheduler suspends issuing a read request to the device at a certain point and starts issuing a write request. In one embodiment, the write request can be issued as multiple write streams. Thus, the overhead associated with write requests can be amortized over multiple write requests. In this way, a request with a long latency (such as a write request) and a request with a short latency (such as a read request) can be separated and processed separately.
ブロック406において、I/Oスケジューラは、レイテンシの長い要求を(単複の)デバイスに伝えるべき旨を示す特定の状態が存在するかどうかを判定することができる。例えば、1つの実施形態では、このような状態の検出が、一定数のレイテンシの長いI/O要求、又は対応するデータの量が蓄積されて所与の閾値に達したことを検出することを含むことができる。或いは、受け取ったレイテンシの長い要求の割合が何らかの閾値に達することもある。数多くのこのような状態が可能であり、企図される。1つの実施形態では、このレイテンシの長い要求を、書き込み要求とすることができる。このような状態が生じた(条件付きブロック408)場合、ブロック410において、I/Oスケジューラは、所与のストレージデバイスにレイテンシの長いI/O要求を発行し始めることができる。このような発行される要求の数は、所与のアルゴリズムによって異なることがある。この数は、一定の又はプログラム可能な書き込み数又はデータ量に対応することもできる。或いは、一定期間にわたって書き込みを発行することもできる。例えば、この期間は、特定の状態が存在しなくなる(例えば、受け取った書き込みの割合が下がる)まで、又は特定の状態が生じるまで継続することができる。或いは、デバイスに対するレイテンシの長い要求の発行をいつ開始すべきか、又はいつ停止すべきかを判断する際に、上記のいずれかの組み合わせを使用することができる。いくつかの実施形態では、書き込み要求ストリーム後の第1の読み込み要求が、他の読み込み要求と比較して相対的に遅いことがある。書き込み要求ストリームの直後に発行スロット内に「本物」の読み込み要求をスケジュールすることを避けるために、I/Oスケジューラを、書き込み要求ストリーム後に自動的に「ダミー」の読み込みをスケジュールするように構成することができる。この文脈では、「本物」の読み込みとは、ユーザ又はアプリケーションがデータが要求する読み込みのことであり、「ダミー」の読み込みとは、データを単純に破棄できる人工的に創出された読み込みのことである。様々な実施形態では、ダミーの読み込みが完了したものとして検出されるまで、書き込み要求が完了したと判断されない場合がある。また、様々な実施形態では、書き込みストリームの後にキャッシュフラッシュが続き、これを使用して書き込みがいつ完了したかを判断することができる。
At
ここで図5を参照すると、ストレージサブシステム内のストレージデバイスの挙動を特徴付けるモデルを作成する方法500の1つの実施形態を示している。この実施形態のステップを順番に示す。しかしながら、ステップによっては、図示のものとは異なる順序で行なうことができるもの、同時に行うことができるもの、他のステップと組み合わせることができるもの、及び別の実施形態には存在しないものもある。 Referring now to FIG. 5, one embodiment of a method 500 for creating a model that characterizes the behavior of storage devices in a storage subsystem is shown. The steps of this embodiment are shown in order. However, some steps may be performed in a different order than shown, some may be performed simultaneously, some may be combined with other steps, and some may not exist in other embodiments.
ブロック502において、ストレージサブシステム内で使用する1又はそれ以上のストレージデバイスを選択することができる。ブロック504において、キャッシュサイズ、典型的な読み込み及び書き込み応答時間、ストレージトポロジ、デバイス寿命などの、各デバイスの様々な特性を識別することができる。ブロック506において、所与のストレージデバイスのI/Oパフォーマンスに影響を与える1又はそれ以上の特性を識別することができる。
At
ブロック508において、所与のデバイスの特性のタイミング及び/又は発生に影響を与える1又はそれ以上のアクションを特定することができる。一例として、キャッシュフラッシュ、及びSSDの消去動作などの所与の動作の実行を挙げることができる。例えば、キャッシュフラッシュなどの強制動作は、予想外の時点におけるSSDの可変応答時間の発生を低減することができる。ブロック510において、対応する特性及びアクションに基づいて、1又はそれ以上の選択されたデバイスの各々に関するモデルを作成することができる。このモデルは、ストレージコントローラ内のI/Oスケジューラ内などのソフトウェア内で使用することができる。
At block 508, one or more actions that affect the timing and / or occurrence of the characteristics of a given device may be identified. One example may include performing a given operation such as a cache flush and an SSD erase operation. For example, forced operations such as cache flushing can reduce the occurrence of SSD variable response times at unexpected times. At
図6を参照すると、ストレージサブシステムの1つの実施形態の汎用ブロック図を示している。図示の実施形態では、ストレージデバイス176a〜176mの各々を単一のデバイスグループ内に示している。しかしながら、他の実施形態では、1又はそれ以上のストレージデバイス176a〜176mを、デバイスグループ173a〜173mのうちの2又はそれ以上に区分化することができる。デバイスユニット600a〜600wには、各ストレージデバイスの1又はそれ以上の対応する動作キュー及びステータステーブルを含めることができる。これらのデバイスユニットは、RAM172に記憶することができる。デバイスグループ173a〜173mの各々には、対応するI/Oスケジューラ178を含めることができる。各I/Oスケジューラ178は、対応するデバイスグループ内のストレージデバイスの各々の状態データを追跡するモニタ610を含むことができる。スケジューリングロジック620は、対応するストレージデバイスにどの要求を発行すべきかを判断するとともに、要求を発行するタイミングを判断することができる。
Referring to FIG. 6, a general block diagram of one embodiment of a storage subsystem is shown. In the illustrated embodiment, each of the
ここで図7を参照すると、デバイスユニット600の1つの実施形態の汎用ブロック図を示している。デバイスユニット600は、デバイスキュー710及びテーブル720を含むことができる。デバイスキュー710は、読み込みキュー712、書き込みキュー714、及びその他の動作キュー716などの1又はそれ以上のその他のキューを含むことができる。各キューは、1又はそれ以上の対応する要求を記憶するための複数のエントリ730を含むことができる。例えば、対応するSSDのデバイスユニットは、少なくとも読み込み要求、書き込み要求、トリム要求及び消去要求などを記憶するためのキューを含むことができる。テーブル720は、1又はそれ以上の状態テーブル722a〜722bを含み、これらの各々は、状態データを記憶するための複数のエントリ730を含むことができる。様々な実施形態では、図7に示すキューを、物理的に及び/又は論理的に別個のものとすることができる。また、キュー及びテーブルが特定数のエントリを含むように示しているが、必ずしもこれらのエントリ自体が互いに対応するわけではない。また、キュー及びテーブルの数は、図示のものと異なることもある。さらに、エントリには、所与のキュー内で又は複数のキューにわたって優先順位を付けることができる。例えば、読み込み要求は、デバイスに要求を発行する順序に影響を与える、高、中又は低の優先度を有することができる。また、このような優先度は、様々な状況に応じて変更することができる。例えば、一定の寿命に達する優先度の低い読み込みの優先度を上げることができる。当業者には、数多くのこのような優先順位付けスキーム及び技術が知られている。全てのこのような方法が企図されており、本明細書で説明するシステム及び方法に関連して使用することができる。
Referring now to FIG. 7, a general block diagram of one embodiment of the device unit 600 is shown. The device unit 600 can include a device queue 710 and a table 720. Device queue 710 may include one or more other queues such as
ここで図8を参照すると、図7に示すような状態テーブルの1つの実施形態を示す汎用ブロック図を示している。1つの実施形態では、このようなテーブルが、所与のストレージデバイスの状態情報、エラー情報、摩耗レベル情報及びその他の情報に対応するデータを含むことができる。対応するI/Oスケジューラは、この情報にアクセスすることができ、これによりI/Oスケジューラは、ストレージデバイスへのI/O要求をより良好にスケジュールすることができる。1つの実施形態では、この情報が、デバイス寿命802、エラー率804、デバイス806上で検出された総エラー数、回復可能なエラー数808、回復不能なエラー数810、デバイスのアクセス速度812、記憶されたデータの寿命814、対応するキャッシュサイズ816、対応するキャッシュフラッシュアイドル時間818、1又はそれ以上の割り当て空間の割り当て状態820〜822、同時処理レベル824、及び様々な動作の(単複の)予想時間826のうちの少なくとも1つ又はそれ以上を含むことができる。割り当て状態は、使用中、空、及びエラーなどを含むことができる。所与のデバイスの同時処理レベルは、デバイスの複数の動作を同時に処理する能力に関する情報を含むことができる。例えば、あるデバイスが4つのフラッシュチップを有し、各々が一度に1つの転送を行うことができる場合、このデバイスは、最大4つの並行動作を行うことができる。特定の動作を並行して行うことができるか否かは、デバイス上にデータがどのようにレイアウトされていたかに依存することができる。例えば、デバイス内のデータが、要求によりアクセスされるデータが全て1つのチップ上に存在するようにレイアウトされている場合、このデータに関する動作を、異なるチップのデータにアクセスする要求と並行して進めることができる。しかしながら、要求によりアクセスされるデータが複数のチップにわたってストライプ状になっている場合、この要求が他の1つに干渉することがある。従って、デバイスは、最大N回(例えば、デバイスが4つのチップを有する上述の例では4回)の並行/同時動作を行うことができる。或いは、この最大同時処理レベルは、関与する動作のタイプに基づくこともできる。いずれにせよ、動作をスケジュールする時には、スケジューラは、同時処理レベルN及び未処理のトランザクション数Mを示す記憶情報を考慮することができる。 Referring now to FIG. 8, a general block diagram illustrating one embodiment of a state table as shown in FIG. 7 is shown. In one embodiment, such a table may include data corresponding to status information, error information, wear level information, and other information for a given storage device. A corresponding I / O scheduler can access this information, which allows the I / O scheduler to better schedule I / O requests to the storage device. In one embodiment, this information includes device lifetime 802, error rate 804, total number of errors detected on device 806, number of recoverable errors 808, number of unrecoverable errors 810, device access speed 812, storage Data life 814, corresponding cache size 816, corresponding cache flush idle time 818, one or more allocation space allocation states 820-822, concurrency level 824, and various behavior prediction (s) At least one or more of times 826 may be included. Allocation status can include busy, empty, and error. The concurrency level for a given device can include information regarding the ability to process multiple operations of the device simultaneously. For example, if a device has four flash chips, each capable of performing one transfer at a time, the device can perform up to four parallel operations. Whether or not specific operations can be performed in parallel can depend on how the data was laid out on the device. For example, if the data in the device is laid out so that all the data accessed by the request exists on one chip, the operation relating to this data proceeds in parallel with the request to access the data of a different chip. be able to. However, if the data accessed by a request is striped across multiple chips, this request may interfere with the other. Thus, the device can perform parallel / simultaneous operations up to N times (eg, 4 times in the above example where the device has 4 chips). Alternatively, this maximum concurrency level can be based on the type of operation involved. In any case, when scheduling the operation, the scheduler can consider the stored information indicating the concurrent processing level N and the number of unprocessed transactions M.
ここで図9を参照すると、データストレージサブシステム上における予想外の可変I/O応答時間を低減するようにI/Oスケジューリングを調整する方法900の別の実施形態を示している。ネットワークアーキテクチャ100及びデータストレージアレイ120a〜120b内で具体化される構成要素は、一般に方法900に従って動作することができる。説明を目的として、この実施形態のステップを順番に示す。しかしながら、ステップによっては、図示のものとは異なる順序で行なうことができるもの、同時に行うことができるもの、他のステップと組み合わせることができるもの、及び別の実施形態には存在しないものもある。
Referring now to FIG. 9, another embodiment of a method 900 for adjusting I / O scheduling to reduce unexpected variable I / O response times on a data storage subsystem is shown. The components embodied in network architecture 100 and
ブロック902において、I/Oスケジューラは、ストレージデバイスの各々の挙動をモニタすることができる。条件付きブロック904〜908には、方法300の条件付きステップ306に関して上述したような、I/Oパフォーマンスに影響を与え得る所与のデバイスの特性を検出する1つの実施形態を示す。1つの実施形態では、I/Oスケジューラが、所与のデバイスが所与のアイドル時間を超えていることを検出した(条件付きブロック904)場合、又は対応するキャッシュが占有率閾値を超えていることを検出した(条件付きブロック906)場合、又はキャッシュデータがデータ寿命閾値を超えていることを検出した(条件付きブロック908)場合、ブロック910において、この所与のストレージデバイスに強制(事前対応)動作を発行することができる。このような場合、スケジューラは、直ちに及び予測できない時点で内部キャッシュフラッシュが発生するであろうと予測することができる。このようなイベントの発生を避けるために、I/Oスケジューラは、イベントを避ける動作を事前対応的にスケジュールする。
At
なお、上述したイベントの回避とは、イベントが発生しないこと、或いは予想外又は予定外の時点で発生しないことを意味することができる。換言すれば、一般にスケジューラは、所与のイベントがスケジューラのタイミングに従って発生し、その他の場合には発生しないことを好む。この意味では、スケジューラがスケジュールしたことによって発生するレイテンシの長いイベントのほうが、このような予想外に発生するイベントよりもましである。少なくともこれらの検出を行うために、スケジューリングロジック620内のタイマ及びカウンタをモニタ610と組み合わせて使用することができる。特定のストレージデバイスに発行される強制的動作の一例として、キャッシュフラッシュを挙げることができる。強制的動作の別の例として、消去要求を挙げることもできる。強制的動作は、I/Oスケジューラから、対応するデバイスユニット600内のデバイスキュー710内の対応するキューにスケジューリングの一部として送ることができる。
It should be noted that avoiding an event as described above can mean that an event does not occur or does not occur at an unexpected or unscheduled time. In other words, the scheduler generally prefers that a given event occurs according to the scheduler timing and does not occur otherwise. In this sense, an event with a long latency that occurs due to scheduling by the scheduler is better than an event that occurs unexpectedly. To perform at least these detections, the timers and counters in the scheduling logic 620 can be used in combination with the
ここで図10を参照すると、共有データストレージ上における相対的にレイテンシの短い読み込み動作を維持する方法1000の1つの実施形態を示している。ネットワークアーキテクチャ100及びデータストレージアレイ120a〜120b内に具体化される構成要素は、一般に方法1000に従って動作することができる。説明を目的として、この実施形態のステップを順番に示す。しかしながら、ステップによっては、図示のものとは異なる順序で行なうことができるもの、同時に行うことができるもの、他のステップと組み合わせることができるもの、及び別の実施形態には存在しないものもある。
Referring now to FIG. 10, one embodiment of a method 1000 for maintaining a relatively low latency read operation on shared data storage is shown. The components embodied in network architecture 100 and
ブロック1002において、ストレージサブシステムのRAIDアーキテクチャ内の冗長性の量を、所与のデバイスグループ173内で使用すべきと判断することができる。例えば、4+2のRAIDグループでは、ストレージデバイスのうちの2つを使用して、パリティ情報などの消去訂正符号(ECC)情報を記憶することができる。この情報を、再構成読み込み要求の一部として使用することができる。1つの実施形態では、この再構成読み込み要求を通常のI/Oスケジューリング中に使用して、いくつかのストレージデバイスが可変I/O応答時間を示していることが検出されている間にデバイスグループのパフォーマンスを向上させることができる。ブロック1004において、デバイスグループ内の同時に使用中の、又は可変応答時間を示している可能性のあるデバイスの最大数を求める。この最大数は、目標数と呼ぶことができる。1つの実施形態では、ストレージデバイスが、書き込み要求、消去要求又はキャッシュフラッシュを実行することに起因して可変応答時間を示すことがあるSSDである。1つの実施形態では、目標数が、引き続き再構成読み込みを行うことができるように選択される。
At block 1002, it may be determined that the amount of redundancy in the storage subsystem's RAID architecture should be used within a given device group 173. For example, in a 4 + 2 RAID group, two of the storage devices can be used to store erasure correction code (ECC) information such as parity information. This information can be used as part of the reconstruction read request. In one embodiment, this reconfiguration read request is used during normal I / O scheduling to detect device groups while some storage devices are detected to exhibit variable I / O response times. Can improve performance. At
1つの実施形態では、I/Oスケジューラが、再構成読み込みがそれ以上効率的でなくなるレベルにまで目標数を引き上げることを保証する状態を検出することができる。例えば、所与のデバイスの未処理の書き込み要求数が、待機中閾値に達する(すなわち、書き込み要求がかなりの期間にわたって未処理のままであり、これらをこれ以上待機させるべきでないと判断する)ことがある。或いは、上述したように、後で発行されるように蓄積できない比較的優先度の高い一定数の書き込み要求を検出することができる。I/Oスケジューラは、このような状態(条件付きブロック1006)を検出した場合、ブロック1008において、1又はそれ以上の検出した状況に基づいて目標を増分又は減分することができる。例えば、適当な数の高優先度の書き込み要求が未処理である場合、又は他の何らかの条件が生じた場合、I/Oスケジューラは、サポートされる冗長性の量よりも目標が上回るようにすることができる。ブロック1010において、I/Oスケジューラは、デバイスグループ内のN個のストレージデバイスが可変I/O応答時間を示していると判断することができる。Nが目標を上回る場合(条件付きブロック1012)、ブロック1014において、Nを低減するようにストレージデバイスをスケジュールすることができる。そうでない場合、ブロック1016において、I/Oスケジューラは、パフォーマンスを向上させるように要求をスケジュールすることができる。例えば、I/Oスケジューラは、以下でさらに説明するような再構成読み込み要求の能力を利用することができる。
In one embodiment, the I / O scheduler can detect a condition that guarantees raising the target number to a level where reconfiguration reads are no longer efficient. For example, the number of outstanding write requests for a given device reaches the waiting threshold (ie, determines that write requests remain outstanding for a significant period of time and should not be allowed to wait any longer) There is. Alternatively, as described above, it is possible to detect a certain number of write requests with a relatively high priority that cannot be accumulated to be issued later. If the I / O scheduler detects such a condition (conditional block 1006), it may increment or decrement the target at block 1008 based on one or more detected conditions. For example, if an appropriate number of high priority write requests are outstanding, or if some other condition occurs, the I / O scheduler will make the target exceed the amount of redundancy supported. be able to. At block 1010, the I / O scheduler may determine that N storage devices in the device group are exhibiting variable I / O response times. If N exceeds the target (conditional block 1012), at
ここで図11を参照すると、可変I/O応答時間を示すストレージデバイスの数を低減する方法1100の1つの実施形態を示している。この実施形態のステップを順番に示す。しかしながら、ステップによっては、図示のものとは異なる順序で行なうことができるもの、同時に行うことができるもの、他のステップと組み合わせることができるもの、及び別の実施形態には存在しないものもある。 Referring now to FIG. 11, one embodiment of a method 1100 for reducing the number of storage devices that exhibit variable I / O response time is shown. The steps of this embodiment are shown in order. However, some steps may be performed in a different order than shown, some may be performed simultaneously, some may be combined with other steps, and some may not exist in other embodiments.
ブロック1102において、I/Oスケジューラは、予想外の時点で可変応答時間を引き起こすレイテンシの長い動作を実行するストレージサブシステム内のストレージデバイスの数Nを低減すると判断することができる。ブロック1104において、I/Oスケジューラは、レイテンシの長い動作を実行する所与のデバイスを選択することができる。ブロック1106において、I/Oスケジューラは、この所与のデバイス上におけるレイテンシの長い動作の実行を中止させてNを減分することができる。例えば、I/Oスケジューラは、この所与のストレージデバイスに対する書き込み要求及び消去要求の発行を停止することができる。また、対応するI/Oスケジューラは、発行された書き込み要求及び消去要求の実行を中止させることもできる。ブロック1108において、I/Oスケジューラは、この所与のデバイス上で、読み込み要求などのレイテンシの短い動作の実行を開始することができる。これらの読み込み要求は、再構成読み込み要求を含むことができる。このようにして、デバイスは、レイテンシの長い応答状態を放置し、Nを低減する。
At
ここで図12を参照すると、共有データストレージ上における効率的なレイテンシによる読み込み動作を維持する方法の1つの実施形態を示している。ネットワークアーキテクチャ100及びデータストレージアレイ120a〜120b内に具体化される構成要素は、一般にこの方法に従って動作することができる。説明を目的として、この実施形態のステップを順番に示す。しかしながら、ステップによっては、図示のものとは異なる順序で行なうことができるもの、同時に行うことができるもの、他のステップと組み合わせることができるもの、及び別の実施形態には存在しないものもある。
Referring now to FIG. 12, one embodiment of a method for maintaining a read operation with efficient latency on shared data storage is shown. Components embodied in network architecture 100 and
図12で説明する方法は、方法1000のステップ1016を行うために取られるステップの1つの実施形態を表すことができる。ブロック1201において、I/Oスケジューラは、可変応答時間挙動を示している第1のデバイスに向けられた最初の読み込み要求を受け取る。第1のデバイスは、特定のスケジュール動作を受け取ったことにより(すなわち、既知の理由)、又は何らかの未知の理由により可変応答時間を示していることがある。様々な実施形態では、所与の動作の予想されるレイテンシに少なくとも部分的に基づいて、可変応答時間と考えられるものを特定することができる。例えば、デバイスの特性及び/又は最近の動作履歴に基づいて、所与の読み込みに対する応答が一定期間内に発生すると予想することができる。例えば、許容可能な応答レイテンシの範囲を反映すると判断されるデルタを有するデバイスの平均応答レイテンシを特定することができる。このようなデルタは、トランザクションの99%又は他のいずれかの好適な数のトランザクションを考慮するように選択することができる。予想される期間内に応答が受け取られなかった場合、再構成読み込みの開始をトリガすることができる。
The method described in FIG. 12 may represent one embodiment of the steps taken to perform
一般的に言えば、再構成読み込みが模倣されるか否かは、再構成読み込みを行うことに関連するコストと、再構成読み込みの結果を取得する利点(見込み)とを比較する費用便益分析に基づくことができる。例えば、所与のデバイスにおける最初の読み込み要求に対する応答が一定時間内に受け取られない場合、このデバイスが、開始すべき再構成読み込みのレイテンシを上回るレイテンシを生じる動作を行っていると予測することができる。従って、再構成読み込みを開始することができる。このようなアクションは、(例えば)一定レベルの読み込みサービスパフォーマンスを維持するために行うことができる。なお、再構成読み込みを開始すべきかどうか判断する際には、現在の負荷、受け取られている要求のタイプ、要求の優先度、システム内の他のデバイスの状態、並びに図7及び図8で説明したような様々な特性などの他の要素を同様に考慮することができる。さらに、最初の読み込みの応答レイテンシが比較的長いという理由で再構成読み込みを開始することができるが、最初の読み込み要求は実際に完了することが予想される。実際には、最初の読み込み及び再構成読み込みがいずれも正常に完了して結果を提供することができる。従って、再構成読み込みは、最初の要求が処理されるようにするために必要なものではない。このことは、トランザクションが正常に完了しない(又はその可能性がある)ことを示すレイテンシ及び何らかのエラー表示を検出することなどの、エラー状態に起因するレイテンシとは対照的である。例えば、所与のストレージの場所を読み込めないことに起因するデバイスタイムアウトは、完了することが予想されない応答を表す。このような場合、要求を処理するために再構成読み込みが必要となり得る。従って、様々な実施形態では、システムが、所与のデバイスの少なくとも2つのタイムアウト状態を効果的に含むことができる。第1のタイムアウトは、それ以降、必ずしも必要でなくても再構成読み込みを開始できるようになる期間に対応する。このようにして、再構成読み込みを、非エラーに関連するスケジューリングプロセスの通常部分としてスケジューリングアルゴリズムに組み込むことができる。第1のタイムアウト後に発生する第2のタイムアウトは、それ以降、エラー状態が発生したと考えられる期間を表す。この場合、エラーを示すデバイスが最初の読み込みを処理しないと予想されることを理由として再構成読み込みを開始することもできる。 Generally speaking, whether or not a reconstruction read is imitated is a cost-benefit analysis comparing the costs associated with performing a reconstruction read with the benefits (probability) of obtaining the result of the reconstruction read. Can be based. For example, if a response to an initial read request at a given device is not received within a certain amount of time, it may be predicted that this device is performing an operation that causes a latency that exceeds the reconfiguration read latency to be initiated. it can. Therefore, reconstruction reading can be started. Such actions can be taken (for example) to maintain a certain level of read service performance. It should be noted that when determining whether to start reconfiguration reading, the current load, the type of request being received, the priority of the request, the status of other devices in the system, and the description in FIGS. Other factors such as various characteristics can be considered as well. Furthermore, although the reconfiguration read can be initiated because the response latency of the first read is relatively long, the first read request is expected to actually complete. In practice, both the initial read and the reconstructed read can complete successfully and provide results. Thus, a reconfiguration read is not necessary for the initial request to be processed. This is in contrast to latencies due to error conditions, such as detecting latencies indicating that a transaction does not complete (or possibly) and some error indication. For example, a device timeout due to not being able to read a given storage location represents a response that is not expected to complete. In such cases, a reconfiguration read may be required to process the request. Thus, in various embodiments, the system can effectively include at least two timeout conditions for a given device. The first time-out corresponds to a period after which reconstruction reading can be started even if not necessary. In this way, reconstruction reads can be incorporated into scheduling algorithms as a normal part of the scheduling process associated with non-errors. The second timeout that occurs after the first timeout represents a period during which an error condition is considered to have occurred thereafter. In this case, a reconfiguration read can also be initiated because the device exhibiting the error is expected not to process the first read.
上記に照らして、I/Oスケジューラは、最初の読み込みに対応する再構成読み込みを開始すべきかどうかを判断することができる(判断ブロック1202)。一般に、この再構成読み込みは、第1のデバイス以外のデバイスによって処理される1又はそれ以上の読み込みを伴う。再構成読み込みを開始すべきかどうかを判断する際には、多くの要因を考慮することができる。一般的に言えば、I/Oスケジューラは、コスト/利益分析を行って、第1のデバイスによって最初の読み込みを処理しようとする方が「良い」か、それとも再構成読み込みを発行することによって最初の読み込みを処理しようとする方が「良い」かを判断する。上述したように、再構成読み込みを開始すべきかどうかを判断する際には、いくつかの要素を考慮することができる。所与の状況においてどちらが「良い」かは異なることがあり、プログラム可能であり、動的に判断することができる。例えば、アルゴリズムを、常により高速な読み込み応答時間を重んじるようなものとすることができる。このような場合、最初のデバイスが最初の読み込みを処理する前に再構成読み込みの処理を完了できる(又は完了してもよい)かどうかを判断することができる。或いは、アルゴリズムが、ある時点でシステム負荷を低減することを優先すると判断することもできる。このような場合、I/Oスケジューラは、たとえ最初の読み込みよりも速く再構成読み込みを完了できる場合でも、追加のオーバヘッドを伴う再構成読み込みを開始しないことを選択することができる。さらに、このような判断では、速度とオーバヘッドの微妙なバランスを使用することができる。様々な実施形態では、アルゴリズムに、(例えば、負荷に関わらず常に速度を優先するなどの)初期重み付けをプログラムすることができる。このような重み付けは不変的なものであってもよく、又は様々な状況によって動的に変化するようにプログラム可能であってもよい。例えば、状況として、時刻、受け取ったI/O要求の速度、受け取った要求の優先度、特定のタスクが検出されたかどうか(例えば、現在バックアップ処理が行われているかどうか)、及び不具合の検出などを挙げることができる。 In light of the above, the I / O scheduler may determine whether a reconfiguration read corresponding to the first read should be initiated (decision block 1202). In general, this reconstruction read involves one or more reads that are processed by a device other than the first device. Many factors can be taken into account when deciding whether to start reconstruction reading. Generally speaking, the I / O scheduler performs a cost / benefit analysis and is better off trying to process the first read by the first device or by issuing a reconfiguration read first. Determine whether it is better to process the reading of. As described above, several factors can be considered when determining whether to start reconstruction reading. Which is “good” in a given situation can be different, is programmable, and can be determined dynamically. For example, the algorithm can always be such that a faster read response time is respected. In such a case, it can be determined whether the reconstruction read process can (or may) complete before the first device processes the first read. Alternatively, it can be determined that the algorithm gives priority to reducing the system load at a certain time. In such a case, the I / O scheduler can choose not to initiate a reconstruction read with additional overhead, even if the reconstruction read can be completed faster than the first read. Furthermore, such a determination can use a delicate balance between speed and overhead. In various embodiments, the algorithm can be programmed with an initial weighting (eg, always give priority to speed regardless of load). Such weightings may be invariant or may be programmable to change dynamically according to various circumstances. For example, the time, the speed of the received I / O request, the priority of the received request, whether a specific task has been detected (for example, whether backup processing is currently being performed), and detection of a defect Can be mentioned.
スケジューラが、再構成読み込みを開始しないと決定した場合、元々対象になっていたデバイスが読み込みを処理することができる(ブロック1203)。或いは、再構成読み込みを開始することもできる(ブロック1204)。1つの実施形態では、再構成読み込みを処理するために選択される他のデバイスが、非可変的挙動を示すものとして識別されたものである。非可変的挙動(すなわち、より予測しやすい挙動)を示すデバイスを選択することにより、I/Oスケジューラは、再構成読み込みを処理するのにどれほどの時間が掛かるかをより良好に予測することができる。デバイスの所与の可変的/非可変的挙動に加え、I/Oスケジューラは、各デバイスの他の側面を考慮することもできる。例えば、再構成読み込みを処理するための特定のデバイスを選択する際に、I/Oスケジューラは、所与のデバイスに関する未処理要求の数(例えば、デバイスキューがどれほど埋まっているか)、所与のデバイスに関する現在保留中の要求の優先度、及びデバイス自体の予想処理速度(例えば、デバイスによっては、他のデバイスよりも古い又は本質的に別様に低速の技術を示すものもある)などを評価することもできる。さらに、スケジューラは、デバイスの各々からの対応する結果がほぼ同時に戻されるように再構成読み込みをスケジュールしたいと望むことができる。このような場合、スケジューラは、再構成読み込みを処理するための特定のデバイスの処理時間が他のデバイスとは有意に異なると予測される場合、たとえこのデバイスが他のデバイスよりも大幅に高速であるとしても、このデバイスの優先度を下げることができる。数多くのこのような考慮すべき要因及び条件が可能であり、企図される。 If the scheduler decides not to initiate a reconfiguration read, the originally targeted device can process the read (block 1203). Alternatively, a reconstruction read can be initiated (block 1204). In one embodiment, the other device selected to process the reconstruction read has been identified as exhibiting non-variable behavior. By selecting a device that exhibits non-variable behavior (ie, more predictable behavior), the I / O scheduler may better predict how long it will take to process the reconfiguration read. it can. In addition to a given variable / non-variable behavior of a device, the I / O scheduler can also consider other aspects of each device. For example, in selecting a particular device to handle a reconfiguration read, the I / O scheduler may determine the number of outstanding requests for a given device (eg, how full the device queue is), a given Evaluate the priority of currently pending requests for the device, and the expected processing speed of the device itself (for example, some devices may be older or inherently slower than other devices) You can also In addition, the scheduler may wish to schedule the reconstruction read so that the corresponding results from each of the devices are returned almost simultaneously. In such cases, the scheduler can be significantly faster than other devices if the processing time of a particular device to process the reconfiguration read is expected to be significantly different from the other devices. If so, the priority of this device can be lowered. Many such factors and conditions to consider are possible and contemplated.
1つの実施形態では、再構成読み込み要求が、最初の読み込み要求の優先度レベルを継承することができる。他の実施形態では、再構成読み込み要求が、最初の読み込み要求とは異なる優先度を有することができる。I/Oスケジューラは、対応する再構成読み込み要求を受け取る選択した第2の(他の)デバイスが現在可変応答時間挙動(条件付きブロック1205)を示していることを検出し、この第2のデバイスが、第1のデバイスが非可変的になると予測される後まで可変的状態に留まると予測される場合、ブロック1208において、第1のデバイスに最初の読み込み要求を発行することができる。1つの実施形態では、タイマを使用して、可変応答時間を示すストレージデバイスがいつ再び非可変応答時間を示すことができるかを予測することができる。方法1200の制御フローは、ブロック1208からブロックCを介して条件付きブロック1212に移行する。第2のデバイスが第1のデバイスよりも長く可変的状態に留まらない(条件付きブロック1206)と予測される場合、方法1200の制御フローはブロック1210に移行する。ブロック1210において、発行された再構成読み込み要求によって読み込み要求を処理する。
In one embodiment, the reconfiguration read request can inherit the priority level of the first read request. In other embodiments, the reconfiguration read request may have a different priority than the initial read request. The I / O scheduler detects that the selected second (other) device receiving the corresponding reconfiguration read request is currently exhibiting a variable response time behavior (conditional block 1205), and this second device If it is predicted that the first device will remain in a variable state until after it is predicted to be non-variable, an initial read request may be issued to the first device at
I/Oスケジューラは、所与の可変的デバイスが非可変的になることを検出した(条件付きブロック1212)場合、ブロック1214において、この所与のデバイスに最初の読み込み要求を発行する。I/Oスケジューラは、この所与のデバイスを非可変的として指定し、N(可変I/O応答時間を示していることが検出されたストレージデバイスの数)を減分することができる。代替の再構成読み込み要求の前に最初の読み込み要求が終了した(条件付きブロック1216)場合、ブロック1218において、I/Oスケジューラは、最初の読み込み要求で読み込み要求に対応する。様々な実施形態では、スケジューラが、再構成読み込み要求を除去することができる。或いは、再構成読み込み要求を完了して、そのデータを単純に破棄することもできる。そうでない場合、ブロック1220において、I/Oスケジューラは、この読み込み要求を再構成読み込み要求で処理し、最初の読み込み要求を除去する(又はその戻されたデータを破棄する)ことができる。
If the I / O scheduler detects that a given variable device becomes non-variable (conditional block 1212), it issues an initial read request to this given device at block 1214. The I / O scheduler can designate this given device as non-variable and decrement N (the number of storage devices detected to exhibit variable I / O response time). If the first read request is completed before the alternate reconfiguration read request (conditional block 1216), at
なお、上述の実施形態は、ソフトウェアを含むことができる。このような実施形態では、方法及び/又は機構を実装するプログラム命令をコンピュータ可読媒体で搬送し、又はこれに記憶することができる。プログラム命令を記憶するように構成された数多くのタイプの媒体が利用可能であり、これらは、ハードディスク、フロッピー(登録商標)ディスク、CD−ROM、DVD、フラッシュメモリ、プログラマブルROM(PROM)、ランダムアクセスメモリ(RAM)及び他の様々な形態の揮発性又は不揮発性ストレージを含む。 The above-described embodiment can include software. In such embodiments, program instructions implementing the methods and / or mechanisms may be carried on or stored in a computer readable medium. Many types of media configured to store program instructions are available, including hard disks, floppy disks, CD-ROMs, DVDs, flash memories, programmable ROM (PROM), random access. Includes memory (RAM) and various other forms of volatile or non-volatile storage.
様々な実施形態では、本明細書で説明した方法及び機構の1又はそれ以上の部分が、クラウドコンピューティング環境の一部を成すことができる。このような実施形態では、1又はそれ以上の様々なモデルにより、インターネットを介してリソースをサービスとして提供することができる。このようなモデルとして、インフラストラクチャ・アズ・ア・サービス(IaaS)、プラットホーム・アズ・ア・サービス(PaaS)、及びソフトウェア・アズ・ア・サービス(SaaS)を挙げることができる。IaaSでは、コンピュータインフラストラクチャがサービスとして配信される。このような場合、一般にサービスプロバイダがコンピュータ設備を所有し運営する。PaaSモデルでは、開発者がソフトウェアソリューションを開発するために使用するソフトウェアツール及び基本設備をサービスプロバイダがサービスとして供給しホストすることができる。通常、SaaSは、サービスプロバイダのライセンスソフトウェアをサービスオンデマンドとして含む。サービスプロバイダは、このソフトウェアをホストすることができ、又はこのソフトウェアを一定期間にわたって顧客に展開することができる。上記のモデルの数多くの組み合わせが可能であり、企図される。また、上記の説明はネットワーク化されたストレージ及びコントローラに焦点を当てたものであるが、上述の方法及び機構を、直接接続ストレージ及びホストオペレーティングシステムなどを有するシステムにおいて適用することもできる。 In various embodiments, one or more portions of the methods and mechanisms described herein can form part of a cloud computing environment. In such embodiments, resources can be provided as services over the Internet by one or more of various models. Examples of such models include infrastructure as a service (IaaS), platform as a service (PaaS), and software as a service (SaaS). In IaaS, computer infrastructure is distributed as a service. In such cases, the service provider generally owns and operates the computer equipment. In the PaaS model, a service provider can supply and host software tools and basic facilities that developers use to develop software solutions. Typically, SaaS includes service provider license software as service on demand. The service provider can host this software or deploy it to customers over a period of time. Many combinations of the above models are possible and contemplated. Also, while the above description has focused on networked storage and controllers, the methods and mechanisms described above can also be applied in systems having direct attached storage and host operating systems.
以上、実施形態についてかなり詳細に説明したが、上記開示を完全に理解すると、当業者には数多くの変形及び修正が明らかになるであろう。以下の特許請求の範囲は、このような変形及び修正を全て含むと解釈すべきである。 While embodiments have been described in considerable detail, numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. The following claims should be construed to include all such variations and modifications.
400:方法
402:所与のストレージデバイスのI/O要求を受け取ってバッファ。
404:所与のストレージデバイスへのレイテンシの短いI/O要求を発行。
406:レイテンシの長いI/O要求に関し、要求の数又は対応するデータの量が所与の閾値に達するかどうかを判断。
408:レイテンシの長いI/O要求の所与の閾値に達したか?
410:レイテンシの長いI/O要求を所与のストレージデバイスに発行。
400: Method 402: Receive and buffer an I / O request for a given storage device.
404: Issue a low latency I / O request to a given storage device.
406: For long latency I / O requests, determine whether the number of requests or the corresponding amount of data reaches a given threshold.
408: Has a given threshold for long latency I / O requests been reached?
410: Issue a long latency I / O request to a given storage device.
Claims (10)
前記データ記憶媒体に結合されたデータストレージコントローラと、
を備え、前記データストレージコントローラは、
前記データ記憶媒体を対象とする、第1のタイプの動作及び第2のタイプの動作を含む要求を受け取り、
前記第1のタイプの要求を、前記複数のストレージデバイスによって直ちに処理されるようにスケジュールし、
前記第2のタイプの要求を、前記複数のストレージデバイスによって後で処理されるようにキューに入れる、
ように構成され、
前記第2のタイプの動作に対応する前記要求は、書き込み要求に対応し、前記ストレージコントローラは、前記書き込み要求の後に、所与のデバイスに対してダミーの読み込みを自動的にスケジュールするように構成される、
ことを特徴とするコンピュータシステム。 A data storage medium comprising a plurality of storage devices configured to store data;
A data storage controller coupled to the data storage medium;
The data storage controller comprises:
Receiving a request directed to the data storage medium, comprising a first type of operation and a second type of operation;
Scheduling said first type of request for immediate processing by said plurality of storage devices;
Queuing the second type of request for later processing by the plurality of storage devices;
Is configured to,
The request corresponding to the second type of operation corresponds to a write request, and the storage controller is configured to automatically schedule a dummy read for a given device after the write request. To be
A computer system characterized by that.
ことを特徴とする請求項1に記載のコンピュータシステム。 The first type of operation corresponds to an operation that is expected to have a relatively short latency, and the second type of operation corresponds to an operation that is expected to have a relatively long latency.
The computer system according to claim 1.
ことを特徴とする請求項2に記載のコンピュータシステム。 The first type of operation corresponds to a read request, and the second type of operation corresponds to a write request, a cache flush, or a trim operation.
The computer system according to claim 2.
ことを特徴とする請求項1に記載のコンピュータシステム。 The plurality of storage devices are solid state storage devices, each of which processes a read request with a relatively short latency and a write request with a relatively long latency.
The computer system according to claim 1.
ことを特徴とする請求項1に記載のコンピュータシステム。 The storage controller, in response to another storage device of the plurality of storage devices is detected that indicates a relatively short response latency of requests corresponding to said second type of operation Configured to interrupt processing,
The computer system according to claim 1 .
ことを特徴とする請求項1に記載のコンピュータシステム。 Before SL storage controller, said write request, and streaming as data of a plurality of discrete units for processing, the storage controller may stop the streaming after any of the units,
The computer system according to claim 1 .
ことを特徴とする請求項1に記載のコンピュータシステム。 In response to detecting a given state, the storage controller immediately stops processing requests corresponding to the first type and processes queued requests corresponding to the second type. Configured to start,
The computer system according to claim 1.
ことを特徴とする請求項7に記載のコンピュータシステム。 The state is that a certain number of the second type requests have been queued, that a certain amount of time has elapsed since the second type of requests have been processed, and that a new request has been received over a period of time. Including at least one of those that were not
The computer system according to claim 7 .
データを記憶するように構成された複数のストレージデバイスを含むデータ記憶媒体を対象とする、第1のタイプの動作及び第2のタイプの動作を含む要求を受け取るステップと、
前記第1のタイプの要求を、前記複数のストレージデバイスによって直ちに処理されるようにスケジュールするステップと、
前記第2のタイプの要求を、前記複数のストレージデバイスによって後で処理されるようにキューに入れるステップと、
を含み、
前記第2のタイプの動作に対応する前記要求は、書き込み要求に対応し、前記ストレージコントローラは、前記書き込み要求の後に、所与のデバイスに対してダミーの読み込みを自動的にスケジュールするように構成される、
ことを特徴とする方法。 A method for use in a computing system, comprising:
Receiving a request including a first type of operation and a second type of operation directed to a data storage medium including a plurality of storage devices configured to store data;
Scheduling the first type of request for immediate processing by the plurality of storage devices;
Queuing the second type of request for later processing by the plurality of storage devices;
Only including,
The request corresponding to the second type of operation corresponds to a write request, and the storage controller is configured to automatically schedule a dummy read for a given device after the write request. To be
A method characterized by that.
データを記憶するように構成された複数のストレージデバイスを含むデータ記憶媒体を対象とする、第1のタイプの動作及び第2のタイプの動作を含む要求を受け取り、
前記第1のタイプの要求を、前記複数のストレージデバイスによって直ちに処理されるようにスケジュールし、
前記第2のタイプの要求を、前記複数のストレージデバイスによって後で処理されるようにキューに入れる、
ように動作可能であり、
前記第2のタイプの動作に対応する前記要求は、書き込み要求に対応し、前記ストレージコントローラは、前記書き込み要求の後に、所与のデバイスに対してダミーの読み込みを自動的にスケジュールするように構成される、
ことを特徴とするコンピュータ可読記憶媒体。 A computer readable storage medium containing program instructions, wherein the program instructions are executed by a processing device,
Receiving a request including a first type of operation and a second type of operation directed to a data storage medium including a plurality of storage devices configured to store data;
Scheduling said first type of request for immediate processing by said plurality of storage devices;
Queuing the second type of request for later processing by the plurality of storage devices;
Ri operable der so,
The request corresponding to the second type of operation corresponds to a write request, and the storage controller is configured to automatically schedule a dummy read for a given device after the write request. To be
A computer-readable storage medium.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/882,877 US8468318B2 (en) | 2010-09-15 | 2010-09-15 | Scheduling of I/O writes in a storage environment |
US12/882,877 | 2010-09-15 | ||
PCT/US2011/051752 WO2012037344A1 (en) | 2010-09-15 | 2011-09-15 | Scheduling of i/o writes in a storage environment |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016096062A Division JP6298098B2 (en) | 2010-09-15 | 2016-05-12 | Scheduling I / O writes in a storage environment |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2013541766A JP2013541766A (en) | 2013-11-14 |
JP2013541766A5 JP2013541766A5 (en) | 2014-11-06 |
JP5937598B2 true JP5937598B2 (en) | 2016-06-22 |
Family
ID=44759769
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013529322A Active JP5937598B2 (en) | 2010-09-15 | 2011-09-15 | Scheduling I / O writes in a storage environment |
JP2016096062A Active JP6298098B2 (en) | 2010-09-15 | 2016-05-12 | Scheduling I / O writes in a storage environment |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016096062A Active JP6298098B2 (en) | 2010-09-15 | 2016-05-12 | Scheduling I / O writes in a storage environment |
Country Status (6)
Country | Link |
---|---|
US (5) | US8468318B2 (en) |
EP (2) | EP2616923A1 (en) |
JP (2) | JP5937598B2 (en) |
KR (1) | KR101862892B1 (en) |
CN (1) | CN103370685B (en) |
WO (1) | WO2012037344A1 (en) |
Families Citing this family (210)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8589655B2 (en) | 2010-09-15 | 2013-11-19 | Pure Storage, Inc. | Scheduling of I/O in an SSD environment |
US8732426B2 (en) | 2010-09-15 | 2014-05-20 | Pure Storage, Inc. | Scheduling of reactive I/O operations in a storage environment |
US8589625B2 (en) | 2010-09-15 | 2013-11-19 | Pure Storage, Inc. | Scheduling of reconstructive I/O read operations in a storage environment |
US8468318B2 (en) | 2010-09-15 | 2013-06-18 | Pure Storage Inc. | Scheduling of I/O writes in a storage environment |
US11275509B1 (en) | 2010-09-15 | 2022-03-15 | Pure Storage, Inc. | Intelligently sizing high latency I/O requests in a storage environment |
US11614893B2 (en) | 2010-09-15 | 2023-03-28 | Pure Storage, Inc. | Optimizing storage device access based on latency |
US9244769B2 (en) | 2010-09-28 | 2016-01-26 | Pure Storage, Inc. | Offset protection data in a RAID array |
US8775868B2 (en) | 2010-09-28 | 2014-07-08 | Pure Storage, Inc. | Adaptive RAID for an SSD environment |
US9009391B2 (en) * | 2010-10-25 | 2015-04-14 | Fastor Systems, Inc. | Solid state drive architecture |
US9606863B2 (en) * | 2010-10-25 | 2017-03-28 | SMART High Reliability Solutions, LLC | Fabric-based solid state drive architecture |
JP2012234363A (en) * | 2011-04-28 | 2012-11-29 | Toshiba Corp | Memory system |
US8547845B2 (en) * | 2011-05-24 | 2013-10-01 | International Business Machines Corporation | Soft error recovery for converged networks |
US20130019052A1 (en) * | 2011-07-14 | 2013-01-17 | Vinay Ashok Somanache | Effective utilization of flash interface |
US8806112B2 (en) | 2011-07-14 | 2014-08-12 | Lsi Corporation | Meta data handling within a flash media controller |
US20130019057A1 (en) * | 2011-07-15 | 2013-01-17 | Violin Memory, Inc. | Flash disk array and controller |
US8589640B2 (en) | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
US11636031B2 (en) | 2011-08-11 | 2023-04-25 | Pure Storage, Inc. | Optimized inline deduplication |
US8719540B1 (en) | 2012-03-15 | 2014-05-06 | Pure Storage, Inc. | Fractal layout of data blocks across multiple devices |
US8903994B2 (en) * | 2012-03-20 | 2014-12-02 | Drw Technologies Llc | Read-throttled input/output scheduler |
US8554963B1 (en) | 2012-03-23 | 2013-10-08 | DSSD, Inc. | Storage system with multicast DMA and unified address space |
US20130290601A1 (en) * | 2012-04-26 | 2013-10-31 | Lsi Corporation | Linux i/o scheduler for solid-state drives |
US8775762B2 (en) * | 2012-05-07 | 2014-07-08 | Advanced Micro Devices, Inc. | Method and apparatus for batching memory requests |
US11032259B1 (en) | 2012-09-26 | 2021-06-08 | Pure Storage, Inc. | Data protection in a storage system |
US8745415B2 (en) | 2012-09-26 | 2014-06-03 | Pure Storage, Inc. | Multi-drive cooperation to generate an encryption key |
US10623386B1 (en) | 2012-09-26 | 2020-04-14 | Pure Storage, Inc. | Secret sharing data protection in a storage system |
US8922930B1 (en) * | 2012-10-11 | 2014-12-30 | Seagate Technology Llc | Limit disc nodes by band usage |
EP2746958B1 (en) * | 2012-12-18 | 2017-08-16 | Telefonica S.A. | Method and system of caching web content in a hard disk |
US11733908B2 (en) | 2013-01-10 | 2023-08-22 | Pure Storage, Inc. | Delaying deletion of a dataset |
US10908835B1 (en) | 2013-01-10 | 2021-02-02 | Pure Storage, Inc. | Reversing deletion of a virtual machine |
US9063967B2 (en) | 2013-01-10 | 2015-06-23 | Pure Storage, Inc. | Performing copies in a storage system |
US11768623B2 (en) | 2013-01-10 | 2023-09-26 | Pure Storage, Inc. | Optimizing generalized transfers between storage systems |
US8775687B1 (en) | 2013-04-15 | 2014-07-08 | Lsi Corporation | Method to ensure data coherency in a scalable aggregate neighbor-device interface |
US9423978B2 (en) | 2013-05-08 | 2016-08-23 | Nexgen Storage, Inc. | Journal management |
US9152214B2 (en) * | 2013-05-16 | 2015-10-06 | Qualcomm Innovation Center, Inc. | Dynamic load and priority based clock scaling for non-volatile storage devices |
US11128448B1 (en) | 2013-11-06 | 2021-09-21 | Pure Storage, Inc. | Quorum-aware secret sharing |
US10263770B2 (en) | 2013-11-06 | 2019-04-16 | Pure Storage, Inc. | Data protection in a storage system using external secrets |
US10365858B2 (en) | 2013-11-06 | 2019-07-30 | Pure Storage, Inc. | Thin provisioning in a storage device |
US9516016B2 (en) * | 2013-11-11 | 2016-12-06 | Pure Storage, Inc. | Storage array password management |
JP2015114887A (en) * | 2013-12-12 | 2015-06-22 | 株式会社 日立産業制御ソリューションズ | Monitor-purposed recorder and data recording method |
US9208086B1 (en) | 2014-01-09 | 2015-12-08 | Pure Storage, Inc. | Using frequency domain to prioritize storage of metadata in a cache |
US10133488B2 (en) | 2014-03-17 | 2018-11-20 | Primaryio, Inc. | Apparatus and method for cache provisioning, configuration for optimal application performance |
US9740410B2 (en) * | 2014-03-17 | 2017-08-22 | Primaryio, Inc. | Maximize IO throughput in hybrid storage solution |
US10146437B2 (en) | 2014-03-17 | 2018-12-04 | Primaryio, Inc. | Tier aware caching solution to increase application performance |
US10656864B2 (en) | 2014-03-20 | 2020-05-19 | Pure Storage, Inc. | Data replication within a flash storage array |
US10235053B1 (en) * | 2014-03-31 | 2019-03-19 | Emc Corporation | Method and system for using host driver for flexible allocation fast-sideways data movements |
US9513820B1 (en) | 2014-04-07 | 2016-12-06 | Pure Storage, Inc. | Dynamically controlling temporary compromise on data redundancy |
US9600314B2 (en) | 2014-05-27 | 2017-03-21 | Red Hat Israel, Ltd. | Scheduler limited virtual device polling |
US9779268B1 (en) | 2014-06-03 | 2017-10-03 | Pure Storage, Inc. | Utilizing a non-repeating identifier to encrypt data |
US9218244B1 (en) | 2014-06-04 | 2015-12-22 | Pure Storage, Inc. | Rebuilding data across storage nodes |
US11399063B2 (en) | 2014-06-04 | 2022-07-26 | Pure Storage, Inc. | Network authentication for a storage system |
US10496556B1 (en) | 2014-06-25 | 2019-12-03 | Pure Storage, Inc. | Dynamic data protection within a flash storage system |
US9218407B1 (en) | 2014-06-25 | 2015-12-22 | Pure Storage, Inc. | Replication and intermediate read-write state for mediums |
US10296469B1 (en) | 2014-07-24 | 2019-05-21 | Pure Storage, Inc. | Access control in a flash storage system |
CN105320466A (en) * | 2014-07-29 | 2016-02-10 | 广明光电股份有限公司 | Method for arranging operation of SSD (solid state drive) |
US9495102B2 (en) * | 2014-07-31 | 2016-11-15 | Samsung Electronics Co., Ltd. | Input/output (I/O) interceptor that re-orders a plurality of write I/O into combined with I/O with intelligent flush control logic |
US9558069B2 (en) | 2014-08-07 | 2017-01-31 | Pure Storage, Inc. | Failure mapping in a storage array |
US9495255B2 (en) | 2014-08-07 | 2016-11-15 | Pure Storage, Inc. | Error recovery in a storage cluster |
US9864761B1 (en) | 2014-08-08 | 2018-01-09 | Pure Storage, Inc. | Read optimization operations in a storage system |
US9112890B1 (en) * | 2014-08-20 | 2015-08-18 | E8 Storage Systems Ltd. | Distributed storage over shared multi-queued storage device |
CN104216836B (en) * | 2014-08-28 | 2018-01-23 | 华为技术有限公司 | A kind of concurrent reading and concurrent writing method and apparatus of storage system |
KR101579941B1 (en) * | 2014-09-03 | 2015-12-23 | 서울대학교 산학협력단 | Method and apparatus for isolating input/output of virtual machines |
US10430079B2 (en) | 2014-09-08 | 2019-10-01 | Pure Storage, Inc. | Adjusting storage capacity in a computing system |
US9274720B1 (en) | 2014-09-15 | 2016-03-01 | E8 Storage Systems Ltd. | Distributed RAID over shared multi-queued storage devices |
US10164841B2 (en) | 2014-10-02 | 2018-12-25 | Pure Storage, Inc. | Cloud assist for storage systems |
US10430282B2 (en) | 2014-10-07 | 2019-10-01 | Pure Storage, Inc. | Optimizing replication by distinguishing user and system write activity |
US9489132B2 (en) | 2014-10-07 | 2016-11-08 | Pure Storage, Inc. | Utilizing unmapped and unknown states in a replicated storage system |
US9766917B2 (en) | 2014-10-29 | 2017-09-19 | Red Hat Israel, Ltd. | Limited virtual device polling based on virtual CPU pre-emption |
US9389950B2 (en) | 2014-11-14 | 2016-07-12 | International Business Machines Corporation | Techniques for information protection in a solid-state device based storage pool |
US9727485B1 (en) | 2014-11-24 | 2017-08-08 | Pure Storage, Inc. | Metadata rewrite and flatten optimization |
US9519666B2 (en) | 2014-11-27 | 2016-12-13 | E8 Storage Systems Ltd. | Snapshots and thin-provisioning in distributed storage over shared storage devices |
US9773007B1 (en) | 2014-12-01 | 2017-09-26 | Pure Storage, Inc. | Performance improvements in a storage system |
US9552248B2 (en) | 2014-12-11 | 2017-01-24 | Pure Storage, Inc. | Cloud alert to replica |
US9588842B1 (en) | 2014-12-11 | 2017-03-07 | Pure Storage, Inc. | Drive rebuild |
US9864769B2 (en) | 2014-12-12 | 2018-01-09 | Pure Storage, Inc. | Storing data utilizing repeating pattern detection |
US10761772B2 (en) * | 2014-12-19 | 2020-09-01 | Toshiba Memory Corporation | Memory system including a plurality of chips and a selectively-connecting bus |
US10545987B2 (en) | 2014-12-19 | 2020-01-28 | Pure Storage, Inc. | Replication to the cloud |
US9569357B1 (en) | 2015-01-08 | 2017-02-14 | Pure Storage, Inc. | Managing compressed data in a storage system |
US10296354B1 (en) | 2015-01-21 | 2019-05-21 | Pure Storage, Inc. | Optimized boot operations within a flash storage array |
US11947968B2 (en) | 2015-01-21 | 2024-04-02 | Pure Storage, Inc. | Efficient use of zone in a storage device |
KR102317786B1 (en) * | 2015-02-02 | 2021-10-26 | 삼성전자주식회사 | Input/output processing method in storage device, and storage device and non-volatile memory device adopting the same |
US9710165B1 (en) | 2015-02-18 | 2017-07-18 | Pure Storage, Inc. | Identifying volume candidates for space reclamation |
EP3126998A4 (en) * | 2015-02-26 | 2017-11-29 | Strato Scale Ltd. | Ordering schemes for network and storage i/o requests for minimizing workload idle time and inter-workload interference |
US10073714B2 (en) | 2015-03-11 | 2018-09-11 | Western Digital Technologies, Inc. | Task queues |
US10082985B2 (en) | 2015-03-27 | 2018-09-25 | Pure Storage, Inc. | Data striping across storage nodes that are assigned to multiple logical arrays |
US10178169B2 (en) | 2015-04-09 | 2019-01-08 | Pure Storage, Inc. | Point to point based backend communication layer for storage processing |
US9525737B2 (en) | 2015-04-14 | 2016-12-20 | E8 Storage Systems Ltd. | Lockless distributed redundant storage and NVRAM cache in a highly-distributed shared topology with direct memory access capable interconnect |
US9529542B2 (en) | 2015-04-14 | 2016-12-27 | E8 Storage Systems Ltd. | Lockless distributed redundant storage and NVRAM caching of compressed data in a highly-distributed shared topology with direct memory access capable interconnect |
US10140149B1 (en) | 2015-05-19 | 2018-11-27 | Pure Storage, Inc. | Transactional commits with hardware assists in remote memory |
US10496626B2 (en) | 2015-06-11 | 2019-12-03 | EB Storage Systems Ltd. | Deduplication in a highly-distributed shared topology with direct-memory-access capable interconnect |
US10310740B2 (en) | 2015-06-23 | 2019-06-04 | Pure Storage, Inc. | Aligning memory access operations to a geometry of a storage device |
US9547441B1 (en) | 2015-06-23 | 2017-01-17 | Pure Storage, Inc. | Exposing a geometry of a storage device |
KR102396441B1 (en) | 2015-08-11 | 2022-05-10 | 삼성전자주식회사 | Storage device operating to prevent data loss when communication is interrupted |
CN111475438B (en) * | 2015-08-12 | 2021-12-10 | 北京忆恒创源科技股份有限公司 | IO request processing method and device for providing quality of service |
US20170060421A1 (en) * | 2015-08-31 | 2017-03-02 | Dell Products, Lp | System and Method to Support Shingled Magnetic Recording Hard Drives in a Storage System |
KR20170028825A (en) | 2015-09-04 | 2017-03-14 | 퓨어 스토리지, 아이앤씨. | Memory-efficient storage and searching in hash tables using compressed indexes |
US11269884B2 (en) | 2015-09-04 | 2022-03-08 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US11341136B2 (en) | 2015-09-04 | 2022-05-24 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US9843453B2 (en) | 2015-10-23 | 2017-12-12 | Pure Storage, Inc. | Authorizing I/O commands with I/O tokens |
CN106610883B (en) * | 2015-10-27 | 2020-09-11 | 腾讯科技(深圳)有限公司 | Detection method and device |
WO2017141413A1 (en) * | 2016-02-19 | 2017-08-24 | 株式会社日立製作所 | Computer, communication driver, and communication control method |
US20170262191A1 (en) * | 2016-03-08 | 2017-09-14 | Netapp, Inc. | Reducing write tail latency in storage systems |
US9747222B1 (en) * | 2016-03-31 | 2017-08-29 | EMC IP Holding Company LLC | Dynamic ingestion throttling of data log |
US9842084B2 (en) | 2016-04-05 | 2017-12-12 | E8 Storage Systems Ltd. | Write cache and write-hole recovery in distributed raid over shared multi-queue storage devices |
US10133503B1 (en) | 2016-05-02 | 2018-11-20 | Pure Storage, Inc. | Selecting a deduplication process based on a difference between performance metrics |
US10452297B1 (en) | 2016-05-02 | 2019-10-22 | Pure Storage, Inc. | Generating and optimizing summary index levels in a deduplication storage system |
CN107491265B (en) * | 2016-06-12 | 2021-05-25 | 杭州海康威视数字技术股份有限公司 | Method and device for distributing internet protocol IP disk |
WO2018016659A1 (en) * | 2016-07-18 | 2018-01-25 | 주식회사 파두 | Method and system for proportional share scheduling of flash storage bandwidth |
US10203903B2 (en) | 2016-07-26 | 2019-02-12 | Pure Storage, Inc. | Geometry based, space aware shelf/writegroup evacuation |
US11886922B2 (en) | 2016-09-07 | 2024-01-30 | Pure Storage, Inc. | Scheduling input/output operations for a storage system |
US10613974B2 (en) | 2016-10-04 | 2020-04-07 | Pure Storage, Inc. | Peer-to-peer non-volatile random-access memory |
US10162523B2 (en) | 2016-10-04 | 2018-12-25 | Pure Storage, Inc. | Migrating data between volumes using virtual copy operation |
US10191662B2 (en) | 2016-10-04 | 2019-01-29 | Pure Storage, Inc. | Dynamic allocation of segments in a flash storage system |
US10756816B1 (en) | 2016-10-04 | 2020-08-25 | Pure Storage, Inc. | Optimized fibre channel and non-volatile memory express access |
KR20180041898A (en) * | 2016-10-17 | 2018-04-25 | 에스케이하이닉스 주식회사 | Memory system and operating method of memory system |
US10481798B2 (en) | 2016-10-28 | 2019-11-19 | Pure Storage, Inc. | Efficient flash management for multiple controllers |
US10185505B1 (en) | 2016-10-28 | 2019-01-22 | Pure Storage, Inc. | Reading a portion of data to replicate a volume based on sequence numbers |
US10359942B2 (en) | 2016-10-31 | 2019-07-23 | Pure Storage, Inc. | Deduplication aware scalable content placement |
US11550481B2 (en) | 2016-12-19 | 2023-01-10 | Pure Storage, Inc. | Efficiently writing data in a zoned drive storage system |
US10452290B2 (en) | 2016-12-19 | 2019-10-22 | Pure Storage, Inc. | Block consolidation in a direct-mapped flash storage system |
JP6677627B2 (en) * | 2016-12-20 | 2020-04-08 | 株式会社ソニー・インタラクティブエンタテインメント | Information processing apparatus and memory access method |
US11093146B2 (en) | 2017-01-12 | 2021-08-17 | Pure Storage, Inc. | Automatic load rebalancing of a write group |
US10031872B1 (en) | 2017-01-23 | 2018-07-24 | E8 Storage Systems Ltd. | Storage in multi-queue storage devices using queue multiplexing and access control |
US10528488B1 (en) | 2017-03-30 | 2020-01-07 | Pure Storage, Inc. | Efficient name coding |
US10545664B2 (en) | 2017-04-11 | 2020-01-28 | Samsung Electronics Co., Ltd. | System and method for identifying SSDs with lowest tail latencies |
US11403019B2 (en) | 2017-04-21 | 2022-08-02 | Pure Storage, Inc. | Deduplication-aware per-tenant encryption |
US10944671B2 (en) | 2017-04-27 | 2021-03-09 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
JP7221585B2 (en) * | 2017-07-20 | 2023-02-14 | 富士通株式会社 | Information processing device, information processing system, information processing device control method, and information processing device control program |
US10417096B2 (en) * | 2017-07-20 | 2019-09-17 | Vmware, Inc. | Multi-virtual machine time consistent snapshots |
US10402266B1 (en) | 2017-07-31 | 2019-09-03 | Pure Storage, Inc. | Redundant array of independent disks in a direct-mapped flash storage system |
US10831935B2 (en) | 2017-08-31 | 2020-11-10 | Pure Storage, Inc. | Encryption management with host-side data reduction |
CN112214166B (en) * | 2017-09-05 | 2022-05-24 | 华为技术有限公司 | Method and apparatus for transmitting data processing requests |
US10685010B2 (en) | 2017-09-11 | 2020-06-16 | Amazon Technologies, Inc. | Shared volumes in distributed RAID over shared multi-queue storage devices |
US10776202B1 (en) | 2017-09-22 | 2020-09-15 | Pure Storage, Inc. | Drive, blade, or data shard decommission via RAID geometry shrinkage |
KR102549540B1 (en) | 2017-09-22 | 2023-06-29 | 삼성전자주식회사 | Storage device and method of operating the same |
US10789211B1 (en) | 2017-10-04 | 2020-09-29 | Pure Storage, Inc. | Feature-based deduplication |
US10884919B2 (en) | 2017-10-31 | 2021-01-05 | Pure Storage, Inc. | Memory management in a storage system |
US10860475B1 (en) | 2017-11-17 | 2020-12-08 | Pure Storage, Inc. | Hybrid flash translation layer |
US10929031B2 (en) | 2017-12-21 | 2021-02-23 | Pure Storage, Inc. | Maximizing data reduction in a partially encrypted volume |
US10503670B2 (en) * | 2017-12-21 | 2019-12-10 | Advanced Micro Devices, Inc. | Dynamic per-bank and all-bank refresh |
US11010233B1 (en) | 2018-01-18 | 2021-05-18 | Pure Storage, Inc | Hardware-based system monitoring |
US10970395B1 (en) | 2018-01-18 | 2021-04-06 | Pure Storage, Inc | Security threat monitoring for a storage system |
US11144638B1 (en) | 2018-01-18 | 2021-10-12 | Pure Storage, Inc. | Method for storage system detection and alerting on potential malicious action |
US10467527B1 (en) | 2018-01-31 | 2019-11-05 | Pure Storage, Inc. | Method and apparatus for artificial intelligence acceleration |
US11036596B1 (en) | 2018-02-18 | 2021-06-15 | Pure Storage, Inc. | System for delaying acknowledgements on open NAND locations until durability has been confirmed |
US10620880B2 (en) * | 2018-02-20 | 2020-04-14 | International Business Machines Corporation | Using a delay timer to delay code load operations to process queued write requests |
US11494109B1 (en) | 2018-02-22 | 2022-11-08 | Pure Storage, Inc. | Erase block trimming for heterogenous flash memory storage devices |
US11934322B1 (en) | 2018-04-05 | 2024-03-19 | Pure Storage, Inc. | Multiple encryption keys on storage drives |
US10963394B2 (en) * | 2018-04-16 | 2021-03-30 | Samsung Electronics Co., Ltd. | System and method for optimizing performance of a solid-state drive using a deep neural network |
US10657052B2 (en) * | 2018-04-25 | 2020-05-19 | Dell Products, L.P. | Information handling system with priority based cache flushing of flash dual in-line memory module pool |
US10678433B1 (en) | 2018-04-27 | 2020-06-09 | Pure Storage, Inc. | Resource-preserving system upgrade |
US11385792B2 (en) | 2018-04-27 | 2022-07-12 | Pure Storage, Inc. | High availability controller pair transitioning |
US10678436B1 (en) | 2018-05-29 | 2020-06-09 | Pure Storage, Inc. | Using a PID controller to opportunistically compress more data during garbage collection |
US11436023B2 (en) | 2018-05-31 | 2022-09-06 | Pure Storage, Inc. | Mechanism for updating host file system and flash translation layer based on underlying NAND technology |
US10776046B1 (en) | 2018-06-08 | 2020-09-15 | Pure Storage, Inc. | Optimized non-uniform memory access |
US11281577B1 (en) | 2018-06-19 | 2022-03-22 | Pure Storage, Inc. | Garbage collection tuning for low drive wear |
US11869586B2 (en) | 2018-07-11 | 2024-01-09 | Pure Storage, Inc. | Increased data protection by recovering data from partially-failed solid-state devices |
US11874782B1 (en) * | 2018-07-20 | 2024-01-16 | Robert Gezelter | Fast mass storage access for digital computers |
JP7128443B2 (en) * | 2018-08-06 | 2022-08-31 | 京セラドキュメントソリューションズ株式会社 | Process execution system and process execution program |
US10545701B1 (en) * | 2018-08-17 | 2020-01-28 | Apple Inc. | Memory arbitration techniques based on latency tolerance |
US11133076B2 (en) | 2018-09-06 | 2021-09-28 | Pure Storage, Inc. | Efficient relocation of data between storage devices of a storage system |
US11194759B2 (en) | 2018-09-06 | 2021-12-07 | Pure Storage, Inc. | Optimizing local data relocation operations of a storage device of a storage system |
US10846216B2 (en) | 2018-10-25 | 2020-11-24 | Pure Storage, Inc. | Scalable garbage collection |
US11126486B2 (en) * | 2018-10-25 | 2021-09-21 | Dell Products, L.P. | Prediction of power shutdown and outage incidents |
US11048523B2 (en) | 2018-10-25 | 2021-06-29 | Dell Products, L.P. | Enabling software sensor power operation requests via baseboard management controller (BMC) |
US10860078B2 (en) | 2018-10-25 | 2020-12-08 | Dell Products, L.P. | Managing power request during cluster operations |
US11113409B2 (en) | 2018-10-26 | 2021-09-07 | Pure Storage, Inc. | Efficient rekey in a transparent decrypting storage array |
US11194473B1 (en) | 2019-01-23 | 2021-12-07 | Pure Storage, Inc. | Programming frequently read data to low latency portions of a solid-state storage array |
US11588633B1 (en) | 2019-03-15 | 2023-02-21 | Pure Storage, Inc. | Decommissioning keys in a decryption storage system |
US11334254B2 (en) | 2019-03-29 | 2022-05-17 | Pure Storage, Inc. | Reliability based flash page sizing |
US11775189B2 (en) | 2019-04-03 | 2023-10-03 | Pure Storage, Inc. | Segment level heterogeneity |
US11397674B1 (en) | 2019-04-03 | 2022-07-26 | Pure Storage, Inc. | Optimizing garbage collection across heterogeneous flash devices |
US10990480B1 (en) | 2019-04-05 | 2021-04-27 | Pure Storage, Inc. | Performance of RAID rebuild operations by a storage group controller of a storage system |
US11099986B2 (en) | 2019-04-12 | 2021-08-24 | Pure Storage, Inc. | Efficient transfer of memory contents |
US10970210B2 (en) | 2019-04-30 | 2021-04-06 | EMC IP Holding Company LLC | Managing data storage devices for spontaneous de-staging of cache |
US11048632B2 (en) | 2019-04-30 | 2021-06-29 | EMC IP Holding Company LLC | Data storage system with performance-based distribution of I/O requests to processing cores |
JP2020184179A (en) * | 2019-05-08 | 2020-11-12 | ファナック株式会社 | Process control system and process system |
US11487665B2 (en) | 2019-06-05 | 2022-11-01 | Pure Storage, Inc. | Tiered caching of data in a storage system |
US11281394B2 (en) | 2019-06-24 | 2022-03-22 | Pure Storage, Inc. | Replication across partitioning schemes in a distributed storage system |
US10929046B2 (en) | 2019-07-09 | 2021-02-23 | Pure Storage, Inc. | Identifying and relocating hot data to a cache determined with read velocity based on a threshold stored at a storage device |
US11029884B2 (en) | 2019-07-16 | 2021-06-08 | International Business Machines Corporation | Storage handling guidance for host input/output operations |
US11422751B2 (en) | 2019-07-18 | 2022-08-23 | Pure Storage, Inc. | Creating a virtual storage system |
US11086713B1 (en) | 2019-07-23 | 2021-08-10 | Pure Storage, Inc. | Optimized end-to-end integrity storage system |
US11232036B2 (en) * | 2019-08-02 | 2022-01-25 | EMC IP Holding Company LLC | Managing write access to data storage devices for spontaneous de-staging of cache |
CN110531931B (en) * | 2019-08-22 | 2022-03-22 | 济南浪潮数据技术有限公司 | Storage device selection method and device and computer readable storage medium |
US11963321B2 (en) | 2019-09-11 | 2024-04-16 | Pure Storage, Inc. | Low profile latching mechanism |
US11403043B2 (en) | 2019-10-15 | 2022-08-02 | Pure Storage, Inc. | Efficient data compression by grouping similar data within a data segment |
US11163449B2 (en) | 2019-10-17 | 2021-11-02 | EMC IP Holding Company LLC | Adaptive ingest throttling in layered storage systems |
US11204872B2 (en) * | 2019-10-25 | 2021-12-21 | EMC IP Holding Company LLC | Achieving guaranteed application performance using transactional I/O scheduling for SSD storage using known read/write latencies |
US11263089B2 (en) * | 2019-10-31 | 2022-03-01 | EMC IP Holding Company LLC | Achieving guaranteed application performance using transactional I/O scheduling for SSD storage by interleaving and splitting read/write I/Os with required latency configurations |
US11720692B2 (en) | 2019-11-22 | 2023-08-08 | Pure Storage, Inc. | Hardware token based management of recovery datasets for a storage system |
US11675898B2 (en) | 2019-11-22 | 2023-06-13 | Pure Storage, Inc. | Recovery dataset management for security threat monitoring |
US11615185B2 (en) | 2019-11-22 | 2023-03-28 | Pure Storage, Inc. | Multi-layer security threat detection for a storage system |
US11687418B2 (en) | 2019-11-22 | 2023-06-27 | Pure Storage, Inc. | Automatic generation of recovery plans specific to individual storage elements |
US11625481B2 (en) | 2019-11-22 | 2023-04-11 | Pure Storage, Inc. | Selective throttling of operations potentially related to a security threat to a storage system |
US11941116B2 (en) | 2019-11-22 | 2024-03-26 | Pure Storage, Inc. | Ransomware-based data protection parameter modification |
US11651075B2 (en) | 2019-11-22 | 2023-05-16 | Pure Storage, Inc. | Extensible attack monitoring by a storage system |
US11645162B2 (en) | 2019-11-22 | 2023-05-09 | Pure Storage, Inc. | Recovery point determination for data restoration in a storage system |
US11755751B2 (en) | 2019-11-22 | 2023-09-12 | Pure Storage, Inc. | Modify access restrictions in response to a possible attack against data stored by a storage system |
US11520907B1 (en) | 2019-11-22 | 2022-12-06 | Pure Storage, Inc. | Storage system snapshot retention based on encrypted data |
US11341236B2 (en) | 2019-11-22 | 2022-05-24 | Pure Storage, Inc. | Traffic-based detection of a security threat to a storage system |
US11500788B2 (en) | 2019-11-22 | 2022-11-15 | Pure Storage, Inc. | Logical address based authorization of operations with respect to a storage system |
US11657155B2 (en) | 2019-11-22 | 2023-05-23 | Pure Storage, Inc | Snapshot delta metric based determination of a possible ransomware attack against data maintained by a storage system |
US11720714B2 (en) | 2019-11-22 | 2023-08-08 | Pure Storage, Inc. | Inter-I/O relationship based detection of a security threat to a storage system |
US11334384B2 (en) * | 2019-12-10 | 2022-05-17 | Advanced Micro Devices, Inc. | Scheduler queue assignment burst mode |
US11139042B2 (en) | 2019-12-19 | 2021-10-05 | Micron Technology, Inc. | Capacitor health check |
KR20210080761A (en) | 2019-12-23 | 2021-07-01 | 삼성전자주식회사 | Storage controller managing completion timing, and operating method thereof |
CN111338567B (en) * | 2020-02-13 | 2021-09-17 | 苏州浪潮智能科技有限公司 | Mirror image caching method based on Protocol Buffer |
KR20210115576A (en) | 2020-03-13 | 2021-09-27 | 에스케이하이닉스 주식회사 | Electronic system having host and memory system |
US11513882B2 (en) * | 2020-06-08 | 2022-11-29 | EMC IP Holding Company LLC | Dynamic modification of IO shaping mechanisms of multiple storage nodes in a distributed storage system |
CN112015342B (en) * | 2020-08-27 | 2023-08-18 | 优刻得科技股份有限公司 | IO scheduling system and scheduling method and corresponding electronic equipment |
Family Cites Families (149)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5208813A (en) | 1990-10-23 | 1993-05-04 | Array Technology Corporation | On-line reconstruction of a failed redundant array system |
US5403639A (en) | 1992-09-02 | 1995-04-04 | Storage Technology Corporation | File server having snapshot application data groups |
DE9310582U1 (en) | 1993-07-15 | 1993-09-23 | Hettich Paul Gmbh & Co | LOCKING DEVICE FOR DRAWERS OR THE LIKE |
US6412045B1 (en) | 1995-05-23 | 2002-06-25 | Lsi Logic Corporation | Method for transferring data from a host computer to a storage media using selectable caching strategies |
US5832529A (en) | 1996-10-11 | 1998-11-03 | Sun Microsystems, Inc. | Methods, apparatus, and product for distributed garbage collection |
US5940838A (en) | 1997-07-11 | 1999-08-17 | International Business Machines Corporation | Parallel file system and method anticipating cache usage patterns |
US6038639A (en) | 1997-09-09 | 2000-03-14 | Storage Technology Corporation | Data file storage management system for snapshot copy operations |
US6041366A (en) | 1998-02-02 | 2000-03-21 | International Business Machines Corporation | System and method for dynamic specification of input/output attributes |
US6157963A (en) | 1998-03-24 | 2000-12-05 | Lsi Logic Corp. | System controller with plurality of memory queues for prioritized scheduling of I/O requests from priority assigned clients |
US6301640B2 (en) | 1998-07-02 | 2001-10-09 | Lucent Technologies, Inc. | System and method for modeling and optimizing I/O throughput of multiple disks on a bus |
US6799283B1 (en) | 1998-12-04 | 2004-09-28 | Matsushita Electric Industrial Co., Ltd. | Disk array device |
JP2000181803A (en) | 1998-12-18 | 2000-06-30 | Fujitsu Ltd | Electronic data keeping device with key management function and method therefor |
US6292856B1 (en) | 1999-01-29 | 2001-09-18 | International Business Machines Corporation | System and method for application influence of I/O service order post I/O request |
US6834298B1 (en) | 1999-09-21 | 2004-12-21 | Siemens Information And Communication Networks, Inc. | System and method for network auto-discovery and configuration |
US6804755B2 (en) | 2000-06-19 | 2004-10-12 | Storage Technology Corporation | Apparatus and method for performing an instant copy of data based on a dynamically changeable virtual mapping scheme |
US6912537B2 (en) | 2000-06-20 | 2005-06-28 | Storage Technology Corporation | Dynamically changeable virtual mapping scheme |
US6871011B1 (en) | 2000-09-28 | 2005-03-22 | Matsushita Electric Industrial Co., Ltd. | Providing quality of service for disks I/O sub-system with simultaneous deadlines and priority |
JP2002108573A (en) | 2000-09-28 | 2002-04-12 | Nec Corp | Disk array device and method for controlling its error and recording medium with its control program recorded thereon |
US6718448B1 (en) | 2000-11-28 | 2004-04-06 | Emc Corporation | Queued locking of a shared resource using multimodal lock types |
US6757769B1 (en) | 2000-11-28 | 2004-06-29 | Emc Corporation | Cooperative lock override procedure |
US6850938B1 (en) | 2001-02-08 | 2005-02-01 | Cisco Technology, Inc. | Method and apparatus providing optimistic locking of shared computer resources |
WO2002065309A1 (en) | 2001-02-13 | 2002-08-22 | Candera, Inc. | System and method for policy based storage provisioning and management |
US6986015B2 (en) | 2001-12-10 | 2006-01-10 | Incipient, Inc. | Fast path caching |
US6973549B1 (en) | 2001-12-10 | 2005-12-06 | Incipient, Inc. | Locking technique for control and synchronization |
US7539991B2 (en) | 2002-03-21 | 2009-05-26 | Netapp, Inc. | Method and apparatus for decomposing I/O tasks in a raid system |
US7260628B2 (en) | 2002-09-06 | 2007-08-21 | Hitachi, Ltd. | Event notification in storage networks |
US7216164B1 (en) | 2002-10-09 | 2007-05-08 | Cisco Technology, Inc. | Methods and apparatus for determining the performance of a server |
US7028218B2 (en) | 2002-12-02 | 2006-04-11 | Emc Corporation | Redundant multi-processor and logical processor configuration for a file server |
JP4322068B2 (en) * | 2003-03-07 | 2009-08-26 | 富士通株式会社 | Storage system and disk load balance control method thereof |
CN1795440A (en) | 2003-04-07 | 2006-06-28 | 艾特拉克斯公司 | Network security system based on physical location |
US7424498B1 (en) | 2003-06-30 | 2008-09-09 | Data Domain, Inc. | Probabilistic summary data structure based encoding for garbage collection |
US7865485B2 (en) | 2003-09-23 | 2011-01-04 | Emc Corporation | Multi-threaded write interface and methods for increasing the single file read and write throughput of a file server |
US7127545B1 (en) | 2003-11-19 | 2006-10-24 | Veritas Operating Corporation | System and method for dynamically loadable storage device I/O policy modules |
JP4426262B2 (en) | 2003-11-26 | 2010-03-03 | 株式会社日立製作所 | Disk array device and failure avoiding method for disk array device |
US8560747B1 (en) | 2007-02-16 | 2013-10-15 | Vmware, Inc. | Associating heartbeat data with access to shared resources of a computer system |
JP4456909B2 (en) | 2004-03-29 | 2010-04-28 | 株式会社日立製作所 | Backup method, storage system and program thereof |
JP2005293774A (en) | 2004-04-02 | 2005-10-20 | Hitachi Global Storage Technologies Netherlands Bv | Control method of disk unit |
US7424482B2 (en) | 2004-04-26 | 2008-09-09 | Storwize Inc. | Method and system for compression of data for block mode access storage |
US20060074940A1 (en) | 2004-10-05 | 2006-04-06 | International Business Machines Corporation | Dynamic management of node clusters to enable data sharing |
US7363444B2 (en) | 2005-01-10 | 2008-04-22 | Hewlett-Packard Development Company, L.P. | Method for taking snapshots of data |
JP5030387B2 (en) * | 2005-03-08 | 2012-09-19 | エイチジーエスティーネザーランドビーブイ | Data storage device |
US7913300B1 (en) | 2005-04-08 | 2011-03-22 | Netapp, Inc. | Centralized role-based access control for storage servers |
WO2006123416A1 (en) | 2005-05-19 | 2006-11-23 | Fujitsu Limited | Disk failure recovery method and disk array device |
US8364845B2 (en) | 2005-05-19 | 2013-01-29 | Wyse Technology Inc. | Method and system for thin client configuration |
US7933936B2 (en) | 2005-06-10 | 2011-04-26 | Network Appliance, Inc. | Method and system for automatic management of storage space |
US7979613B2 (en) * | 2005-07-15 | 2011-07-12 | International Business Machines Corporation | Performance of a storage system |
JP2007087036A (en) | 2005-09-21 | 2007-04-05 | Hitachi Ltd | Snapshot maintenance device and method |
JP4662548B2 (en) | 2005-09-27 | 2011-03-30 | 株式会社日立製作所 | Snapshot management apparatus and method, and storage system |
JP2007199953A (en) | 2006-01-25 | 2007-08-09 | Fujitsu Ltd | Disk array device and disk array control method |
JP4927408B2 (en) | 2006-01-25 | 2012-05-09 | 株式会社日立製作所 | Storage system and data restoration method thereof |
US7743197B2 (en) | 2006-05-11 | 2010-06-22 | Emulex Design & Manufacturing Corporation | System and method for virtualizing PCIe devices |
JP2007233903A (en) | 2006-03-03 | 2007-09-13 | Hitachi Ltd | Storage controller and data recovery method for storage controller |
US8832247B2 (en) | 2006-03-24 | 2014-09-09 | Blue Coat Systems, Inc. | Methods and systems for caching content at multiple levels |
US7987438B2 (en) | 2006-08-10 | 2011-07-26 | International Business Machines Corporation | Structure for initializing expansion adapters installed in a computer system having similar expansion adapters |
US7555599B2 (en) * | 2006-09-06 | 2009-06-30 | International Business Machines Corporation | System and method of mirrored RAID array write management |
US7475215B2 (en) | 2006-09-08 | 2009-01-06 | Lsi Corporation | Identification of uncommitted memory blocks during an initialization procedure |
JP4573898B2 (en) | 2006-11-27 | 2010-11-04 | 富士通株式会社 | Server management program, mail server management program, server management system, management server, and server management method |
US8694712B2 (en) | 2006-12-05 | 2014-04-08 | Microsoft Corporation | Reduction of operational costs of virtual TLBs |
US20080155191A1 (en) | 2006-12-21 | 2008-06-26 | Anderson Robert J | Systems and methods for providing heterogeneous storage systems |
US8370562B2 (en) | 2007-02-25 | 2013-02-05 | Sandisk Il Ltd. | Interruptible cache flushing in flash memory systems |
JP4900811B2 (en) | 2007-03-30 | 2012-03-21 | 株式会社日立製作所 | Storage system and storage control method |
JP4529990B2 (en) | 2007-03-30 | 2010-08-25 | ブラザー工業株式会社 | Image processing program and image processing apparatus |
US8086652B1 (en) | 2007-04-27 | 2011-12-27 | Netapp, Inc. | Storage system-based hole punching for reclaiming unused space from a data container |
US7958303B2 (en) | 2007-04-27 | 2011-06-07 | Gary Stephen Shuster | Flexible data storage system |
EP2154815A4 (en) | 2007-05-30 | 2012-11-14 | Fujitsu Ltd | Image encrypting device, image decrypting device, method and program |
US7765426B2 (en) | 2007-06-07 | 2010-07-27 | Micron Technology, Inc. | Emerging bad block detection |
US8874854B2 (en) | 2007-07-30 | 2014-10-28 | International Business Machines Corporation | Method for selectively enabling and disabling read caching in a storage subsystem |
US7877558B2 (en) * | 2007-08-13 | 2011-01-25 | Advanced Micro Devices, Inc. | Memory controller prioritization scheme |
JP2009080690A (en) | 2007-09-26 | 2009-04-16 | Nec Corp | Information recording/reproducing system, information recording/reproducing method and program |
US7877380B2 (en) | 2008-02-25 | 2011-01-25 | Yahoo! Inc. | System for query scheduling to maximize work sharing |
US7970994B2 (en) | 2008-03-04 | 2011-06-28 | International Business Machines Corporation | High performance disk array rebuild |
US8352540B2 (en) | 2008-03-06 | 2013-01-08 | International Business Machines Corporation | Distinguishing data streams to enhance data storage efficiency |
US7873619B1 (en) | 2008-03-31 | 2011-01-18 | Emc Corporation | Managing metadata |
US8621241B1 (en) | 2008-04-25 | 2013-12-31 | Netapp, Inc. | Storage and recovery of cryptographic key identifiers |
US8117464B1 (en) | 2008-04-30 | 2012-02-14 | Netapp, Inc. | Sub-volume level security for deduplicated data |
US9678879B2 (en) | 2008-05-29 | 2017-06-13 | Red Hat, Inc. | Set partitioning for encoding file system allocation metadata |
JP5147584B2 (en) | 2008-07-23 | 2013-02-20 | 株式会社日立製作所 | Command execution method by storage subsystem and controller |
US8046551B1 (en) | 2008-08-14 | 2011-10-25 | Emc Corporation | Techniques for processing I/O requests |
US8296547B2 (en) | 2008-08-27 | 2012-10-23 | International Business Machines Corporation | Loading entries into a TLB in hardware via indirect TLB entries |
US20100057673A1 (en) | 2008-09-04 | 2010-03-04 | Boris Savov | Reusable mapping rules for data to data transformation |
US20100077205A1 (en) | 2008-09-19 | 2010-03-25 | Ekstrom Joseph J | System and Method for Cipher E-Mail Protection |
US8756369B2 (en) | 2008-09-26 | 2014-06-17 | Netapp, Inc. | Priority command queues for low latency solid state drives |
JP4399021B1 (en) * | 2008-10-29 | 2010-01-13 | 株式会社東芝 | Disk array control device and storage device |
US7945733B2 (en) * | 2008-12-12 | 2011-05-17 | Lsi Corporation | Hierarchical storage management (HSM) for redundant array of independent disks (RAID) |
US8200922B2 (en) | 2008-12-17 | 2012-06-12 | Netapp, Inc. | Storage system snapshot assisted by SSD technology |
CN102257482B (en) * | 2008-12-19 | 2015-06-03 | 惠普开发有限公司 | Redundant data storage for uniform read latency |
US8312204B2 (en) | 2009-01-23 | 2012-11-13 | Seagate Technology Llc | System and method for wear leveling in a data storage device |
JP4869368B2 (en) | 2009-03-12 | 2012-02-08 | 株式会社東芝 | Storage device and virtualization device |
US7941584B2 (en) | 2009-03-26 | 2011-05-10 | Arm Limited | Data processing apparatus and method for performing hazard detection |
US8205065B2 (en) | 2009-03-30 | 2012-06-19 | Exar Corporation | System and method for data deduplication |
US8560787B2 (en) | 2009-03-30 | 2013-10-15 | International Business Machines Corporation | Incremental backup of source to target storage volume |
TWI397009B (en) | 2009-04-30 | 2013-05-21 | Inventec Corp | Data processing apparatus of basic input/output system |
US8180955B2 (en) | 2009-05-06 | 2012-05-15 | Via Telecom, Inc. | Computing systems and methods for managing flash memory device |
EP2302636B1 (en) | 2009-09-21 | 2014-11-05 | STMicroelectronics (Rousset) SAS | Method for reading a non volatile memory using metadata and a correspondence table |
US8510569B2 (en) | 2009-12-16 | 2013-08-13 | Intel Corporation | Providing integrity verification and attestation in a hidden execution environment |
US9134918B2 (en) | 2009-12-31 | 2015-09-15 | Sandisk Technologies Inc. | Physical compression of data with flat or systematic pattern |
US8452932B2 (en) | 2010-01-06 | 2013-05-28 | Storsimple, Inc. | System and method for efficiently creating off-site data volume back-ups |
WO2011104663A1 (en) | 2010-02-23 | 2011-09-01 | Confidato Security Solutions Ltd | Method and computer program product for order preserving symbol based encryption |
JP4892072B2 (en) | 2010-03-24 | 2012-03-07 | 株式会社東芝 | Storage device that eliminates duplicate data in cooperation with host device, storage system including the storage device, and deduplication method in the system |
US8738970B2 (en) | 2010-07-23 | 2014-05-27 | Salesforce.Com, Inc. | Generating performance alerts |
US8713268B2 (en) | 2010-08-05 | 2014-04-29 | Ut-Battelle, Llc | Coordinated garbage collection for raid array of solid state disks |
US8589625B2 (en) | 2010-09-15 | 2013-11-19 | Pure Storage, Inc. | Scheduling of reconstructive I/O read operations in a storage environment |
US8468318B2 (en) * | 2010-09-15 | 2013-06-18 | Pure Storage Inc. | Scheduling of I/O writes in a storage environment |
US8775868B2 (en) | 2010-09-28 | 2014-07-08 | Pure Storage, Inc. | Adaptive RAID for an SSD environment |
US20120117029A1 (en) | 2010-11-08 | 2012-05-10 | Stephen Gold | Backup policies for using different storage tiers |
US8966184B2 (en) | 2011-01-31 | 2015-02-24 | Intelligent Intellectual Property Holdings 2, LLC. | Apparatus, system, and method for managing eviction of data |
US9563555B2 (en) | 2011-03-18 | 2017-02-07 | Sandisk Technologies Llc | Systems and methods for storage allocation |
US8595267B2 (en) | 2011-06-27 | 2013-11-26 | Amazon Technologies, Inc. | System and method for implementing a scalable data storage service |
US8751463B1 (en) | 2011-06-30 | 2014-06-10 | Emc Corporation | Capacity forecasting for a deduplicating storage system |
US8806160B2 (en) | 2011-08-16 | 2014-08-12 | Pure Storage, Inc. | Mapping in a storage system |
US8788788B2 (en) | 2011-08-11 | 2014-07-22 | Pure Storage, Inc. | Logical sector mapping in a flash storage array |
US8527544B1 (en) | 2011-08-11 | 2013-09-03 | Pure Storage Inc. | Garbage collection in a storage system |
US8793467B2 (en) | 2011-09-30 | 2014-07-29 | Pure Storage, Inc. | Variable length encoding in a storage system |
JP5768587B2 (en) | 2011-08-17 | 2015-08-26 | 富士通株式会社 | Storage system, storage control device, and storage control method |
US8700875B1 (en) | 2011-09-20 | 2014-04-15 | Netapp, Inc. | Cluster view for storage devices |
US9542413B2 (en) | 2011-10-06 | 2017-01-10 | Hitachi, Ltd. | Stored data deduplication method, stored data deduplication apparatus, and deduplication program |
US8825605B2 (en) | 2011-10-11 | 2014-09-02 | Netapp, Inc. | Deduplication aware scheduling of requests to access data blocks |
US8918579B2 (en) | 2012-02-06 | 2014-12-23 | Sandisk Technologies Inc. | Storage device and method for selective data compression |
US9519647B2 (en) | 2012-04-17 | 2016-12-13 | Sandisk Technologies Llc | Data expiry in a non-volatile device |
US9075710B2 (en) | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
US8996881B2 (en) | 2012-04-23 | 2015-03-31 | International Business Machines Corporation | Preserving redundancy in data deduplication systems by encryption |
US8793466B2 (en) | 2012-04-27 | 2014-07-29 | Netapp, Inc. | Efficient data object storage and retrieval |
US9645177B2 (en) | 2012-05-04 | 2017-05-09 | Seagate Technology Llc | Retention-drift-history-based non-volatile memory read threshold optimization |
US8874850B1 (en) | 2012-05-10 | 2014-10-28 | Netapp, Inc. | Hierarchically tagged cache |
US20130318314A1 (en) | 2012-05-25 | 2013-11-28 | Red Hat, Inc. | Managing copies of data on multiple nodes using a data controller node to avoid transaction deadlock |
KR20150021117A (en) | 2012-06-18 | 2015-02-27 | 액티피오 인크. | Enhanced data management virtualization system |
US8959305B1 (en) | 2012-06-29 | 2015-02-17 | Emc Corporation | Space reclamation with virtually provisioned devices |
US9489293B2 (en) | 2012-08-17 | 2016-11-08 | Netapp, Inc. | Techniques for opportunistic data storage |
US9176822B2 (en) | 2012-08-31 | 2015-11-03 | Cleversafe, Inc. | Adjusting dispersed storage error encoding parameters |
JP5954081B2 (en) | 2012-09-26 | 2016-07-20 | 富士通株式会社 | Storage control device, storage control method, and storage control program |
US9348757B2 (en) | 2012-10-08 | 2016-05-24 | International Business Machines Corporation | System supporting multiple partitions with differing translation formats |
WO2014076743A1 (en) | 2012-11-19 | 2014-05-22 | Hitachi, Ltd. | Storage system |
US9348840B2 (en) | 2012-12-14 | 2016-05-24 | Intel Corporation | Adaptive data striping and replication across multiple storage clouds for high availability and performance |
US9063967B2 (en) | 2013-01-10 | 2015-06-23 | Pure Storage, Inc. | Performing copies in a storage system |
US9886346B2 (en) | 2013-01-11 | 2018-02-06 | Commvault Systems, Inc. | Single snapshot for multiple agents |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US9335932B2 (en) | 2013-03-15 | 2016-05-10 | Bracket Computing, Inc. | Storage unit selection for virtualized storage units |
US9519575B2 (en) | 2013-04-25 | 2016-12-13 | Sandisk Technologies Llc | Conditional iteration for a non-volatile device |
US10263770B2 (en) | 2013-11-06 | 2019-04-16 | Pure Storage, Inc. | Data protection in a storage system using external secrets |
US9516016B2 (en) | 2013-11-11 | 2016-12-06 | Pure Storage, Inc. | Storage array password management |
JP6233086B2 (en) | 2014-02-20 | 2017-11-22 | 富士通株式会社 | Storage control device, storage system, and control program |
US9798596B2 (en) | 2014-02-27 | 2017-10-24 | Commvault Systems, Inc. | Automatic alert escalation for an information management system |
US10656864B2 (en) | 2014-03-20 | 2020-05-19 | Pure Storage, Inc. | Data replication within a flash storage array |
US9361469B2 (en) | 2014-03-26 | 2016-06-07 | Amazon Technologies, Inc. | Electronic communication with secure screen sharing of sensitive information |
US9513820B1 (en) | 2014-04-07 | 2016-12-06 | Pure Storage, Inc. | Dynamically controlling temporary compromise on data redundancy |
US9563509B2 (en) | 2014-07-15 | 2017-02-07 | Nimble Storage, Inc. | Methods and systems for storing data in a redundant manner on a plurality of storage units of a storage system |
US9489132B2 (en) | 2014-10-07 | 2016-11-08 | Pure Storage, Inc. | Utilizing unmapped and unknown states in a replicated storage system |
US10430282B2 (en) | 2014-10-07 | 2019-10-01 | Pure Storage, Inc. | Optimizing replication by distinguishing user and system write activity |
US9552248B2 (en) | 2014-12-11 | 2017-01-24 | Pure Storage, Inc. | Cloud alert to replica |
-
2010
- 2010-09-15 US US12/882,877 patent/US8468318B2/en active Active
-
2011
- 2011-09-15 JP JP2013529322A patent/JP5937598B2/en active Active
- 2011-09-15 EP EP11764904.6A patent/EP2616923A1/en not_active Withdrawn
- 2011-09-15 EP EP15195458.3A patent/EP3043255B1/en active Active
- 2011-09-15 CN CN201180054157.7A patent/CN103370685B/en active Active
- 2011-09-15 WO PCT/US2011/051752 patent/WO2012037344A1/en active Application Filing
- 2011-09-15 KR KR1020137009441A patent/KR101862892B1/en active IP Right Grant
-
2013
- 2013-06-17 US US13/919,151 patent/US8645657B2/en active Active
-
2014
- 2014-01-21 US US14/160,169 patent/US9037827B2/en active Active
-
2015
- 2015-05-18 US US14/715,552 patent/US9423967B2/en active Active
-
2016
- 2016-05-12 JP JP2016096062A patent/JP6298098B2/en active Active
- 2016-07-29 US US15/224,281 patent/US9684460B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP6298098B2 (en) | 2018-03-20 |
US9037827B2 (en) | 2015-05-19 |
KR20140045286A (en) | 2014-04-16 |
US20140136808A1 (en) | 2014-05-15 |
CN103370685A (en) | 2013-10-23 |
JP2013541766A (en) | 2013-11-14 |
EP2616923A1 (en) | 2013-07-24 |
US20120066435A1 (en) | 2012-03-15 |
US9423967B2 (en) | 2016-08-23 |
US8645657B2 (en) | 2014-02-04 |
US8468318B2 (en) | 2013-06-18 |
JP2016167301A (en) | 2016-09-15 |
WO2012037344A1 (en) | 2012-03-22 |
CN103370685B (en) | 2016-09-14 |
EP3043255B1 (en) | 2020-12-16 |
EP3043255A1 (en) | 2016-07-13 |
US9684460B1 (en) | 2017-06-20 |
US20150254004A1 (en) | 2015-09-10 |
KR101862892B1 (en) | 2018-05-30 |
US20130275710A1 (en) | 2013-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6337042B2 (en) | Scheduling of reconfiguration I / O read operations in a storage environment | |
JP6356720B2 (en) | I / O scheduling in a solid state drive (SSD) environment | |
JP6298098B2 (en) | Scheduling I / O writes in a storage environment | |
US10228865B1 (en) | Maintaining a target number of storage devices for variable I/O response times in a storage system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140912 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140912 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150630 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150811 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20151111 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20151211 |
|
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: 20160412 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160512 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5937598 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: R3D02 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: R3D04 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |