KR20140045286A - 저장소 환경에서의 i/o 기록들의 스케줄링 - Google Patents
저장소 환경에서의 i/o 기록들의 스케줄링 Download PDFInfo
- Publication number
- KR20140045286A KR20140045286A KR1020137009441A KR20137009441A KR20140045286A KR 20140045286 A KR20140045286 A KR 20140045286A KR 1020137009441 A KR1020137009441 A KR 1020137009441A KR 20137009441 A KR20137009441 A KR 20137009441A KR 20140045286 A KR20140045286 A KR 20140045286A
- Authority
- KR
- South Korea
- Prior art keywords
- requests
- type
- operations
- storage devices
- processing
- Prior art date
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
복수의 고체-상태 저장 디바이스들 사이에서 판독 및 기록 동작들을 효율적으로 스케줄링하기 위한 시스템 및 방법. 컴퓨터 시스템은 네트워크를 통해 서로에게 연결된 클라이언트 컴퓨터들 및 데이터 저장소 어레이들을 포함한다. 데이터 저장소 어레이는 데이터 저장을 위한 고체-상태 드라이브드르 및 플래시 메모리 셀들을 이용한다. 데이터 저장소 어레이 내의 저장소 제어기는 I/O 스케줄러를 포함한다. 데이터 저장소 제어기는 데이터 저장 매체를 타겟으로 한 요청들을 수신하도록 구성되고, 상기 요청들은 제1 유형의 동작 및 제2 유형의 동작을 포함한다. 제어기는 상기 복수의 저장 디바이스에 의한 즉각적인 처리를 위해 제1 유형의 요청들을 스케줄링(schedule)하고, 복수의 저장 디바이스에 의한 나중 처리를 위해 제2 유형의 요청들을 큐잉(queue)하도록 더 구성된다. 제1 유형의 동작들은 비교적 낮은 레이턴시가 예상되는 동작들에 대응할 수 있고, 제2 유형의 동작들은 비교적 높은 레이턴시가 예상되는 동작들에 대응할 수 있다.
Description
본 발명은 컴퓨터 네트워크에 관한 것으로, 특히, 데이터 저장소 시스템을 컴퓨팅하는 것에 관한 것이다.
컴퓨터 메모리 저장 및 데이터 대역폭이 증가함에 따라, 비즈니스들이 관리하는 데이터의 양 및 복잡도가 증가한다. 데이터 센터와 같은 대규모 분산 저장소 시스템은 일반적으로 많은 비즈니스 동작들을 실행한다. 분산 저장소 시스템은 하나 이상의 네트워크에 의해 상호접속된 다수의 클라이언트 컴퓨터에 연결될 수 있다. 분산 저장소 시스템의 임의의 부분이 열악한 성능을 갖거나 사용할 수 없게 되면, 컴퍼니 동작들은 손상되거나 완전히 중지될 수 있다. 이러한 분산 저장소 시스템은 데이터 가용성과 고-성능 기능성에 대해 높은 기준을 유지하고자 한다.
저장소 시스템들 그 자체 내에서, 파일 시스템 및 저장 디바이스-레벨 입/출력(I/O) 스케줄러들은 일반적으로 동작들이 어떻게 실행될지에 대한 단계들을 제공할 뿐만 아니라 판독 및 기록 동작들에 대한 순서를 결정한다. 예를 들어, 비-순차적 판독 및 기록 동작들은 순차적 판독 및 기록 동작들보다 저장 디바이스에 대해 실행하기가 더 비쌀 수 있다(예컨대, 시간 및/또는 자원들의 측면에서). 따라서, I/O 스케줄러들은 비-순차적 동작들을 줄이고자 할 수 있다. 또한, I/O 스케줄러들은 고갈 방지(starvation prevention), 요청 병합(request merging), 및 프로세스-간 공정성(inter-process fairness)과 같은 다른 기능들을 제공할 수 있다.
적어도 판독 및 기록 응답 시간은 저장 디바이스들 사이에서 실질적으로 다를 수 있다. 이러한 차이는 기술 자체의 특성일 수 있다. 그 결과, 선택된 데이터 저장 디바이스와 관련된 기술 및 메커니즘은 효율적인 I/O 스케줄링을 수행하는데 사용되는 방법을 결정할 수 있다. 예를 들어, 현재의 많은 알고리즘은 하드 디스크 드라이브(HDD)를 이용하는 시스템을 위해 개발되었다. HDD는, 자기 매체로 각각 코팅된, 하나 이상의 회전 디스크를 포함한다. 이러한 디스크는 분당 수천 번 회전하는 레이트로 회전한다. 또한, 전-자기 액추에이터는 회전 디스크 위로 자기 판독/기록 디바이스를 배치할 책임이 있다. 디바이스의 기계적 및 전기-기계적 설계는 그의 I/O 특성에 영향을 미친다. 불행하게도, 마찰(friction), 마모(wear), 진동(vibrations) 및 기계적 오정렬(mechanical misalignments)은 HDD의 I/O 특성에 영향을 미칠 뿐만 아니라 신뢰성 이슈들을 만들 수 있다. 많은 현재의 I/O 스케줄러는 HDD의 입/출력(I/O) 특성을 고려하도록 설계되어 있다.
저장 매체의 또 다른 유형 중 하나의 예는 고체-상태 드라이브(Solid-State Drive; SSD)이다. HDD와는 대조적으로, SSD는 영구 데이터(persistent data)를 저장하기 위해 자기 매체 디바이스들보다는 고체-상태 메모리를 이용한다. 고체-상태 메모리는 플래시 메모리 셀들을 포함할 수 있다. 플래시 메모리는, 하드 드라이브와는 다른, 다수의 특징들을 갖는다. 예를 들어, 플래시 메모리 셀들은 일반적으로 재기록 또는 재프로그램되기 전에 큰 블록들로 소거된다. 플래시 메모리는 또한 일반적으로, 다이들, 패키지들, 플레인들 및 블록들과 같은, 복잡한 배열들로 구조화된다. 선택된 배열의 크기 및 병렬성, 시간이 지남에 따른 플래시 메모리의 마모, 및 디바이스(들)의 상호접속 및 전송 속도 모두 달라질 수 있다. 또한, 이러한 디바이스들은 디바이스에서의 저장을 관리하기 위해 FTL(flash translation layer) 또한 포함할 수 있다. FTL에 의해 이용되는 알고리즘은 달라질 수 있고, 또한 디바이스의 거동 및/또는 성능에 있어서의 변화에 기여할 수 있다. 그 결과, 높은 성능 및 예측가능한 레이턴시들(latencies)은 일반적으로 서로 다른 특성을 갖는 하드 드라이브들과 같은 시스템들을 위해 설계된 I/O 스케줄러들을 이용하면서 저장용 플래시 기반 SSD들을 사용하는 시스템들에서 달성될 수 없다.
상기의 견지에서, 복수의 저장 디바이스 사이에서 판독 및 기록 동작들을 효율적으로 스케줄링하기 위한 시스템 및 방법이 요구된다.
복수의 고체-상태 저장 디바이스들 사이에서 판독 및 기록 동작들을 효율적으로 스케줄링하기 위한 컴퓨터 시스템 및 방법들에 대한 다양한 실시예들이 개시된다.
하나의 실시예에서, 컴퓨터 시스템은 네트워크를 통해 판독 및 기록 요청들을 수신하도록 연결된(coupled) 하나 이상의 데이터 저장소 어레이들에 네트워크를 통해 판독 및 기록 요청들을 전달하도록 구성된 복수의 클라이언트 컴퓨터를 포함한다. 복수의 저장 디바이스들에 복수의 저장소 위치를 포함하는 데이터 저장소 어레이(들)가 고려된다. 다양한 실시예들에서, 저장 디바이스는 데이터 저장 및 보호를 위한 RAID(redundant array of independent drives) 배열로 구성된다. 데이터 저장 디바이스들은 데이터 저장을 위한 고체-상태 메모리 기술, 이를테면, 플래시 메모리 셀을 포함할 수 있다. 대응하는 저장 디바이스들의 특성은 저장 디바이스들에 대해 I/O 요청들을 스케줄링하는데 사용된다. 특성들 I/O 요청에 대한 예측된 응답 시간, 디바이스 에이지(age), 임의의 대응하는 캐시 크기, 액세스 레이트, 에러 레이트, 현재 I/O 요청, 완료된 I/O 요청 등을 포함할 수 있다.
하나의 실시예에서, I/O 스케줄러는 판독 및 기록 요청들을 수신하고, 복수의 저장 디바이스에 의한 처리를 위해 판독 및 기록 요청들을 스케줄링하도록 구성된다. 저장 디바이스들은 서비스되는 동작들에 따라 다른 레이턴시들을 보일 수 있고, 또한 다양한 시간에 스케줄링되지 않거나 예측되지 않은 거동들을 보일 수 있어 성능이 예상되거나 요구된 것과는 달라지게 한다. 다양한 실시예에서, 이러한 거동들은, 디바이스들이 적절하게 기능(즉, 에러 상태에 있지 않음)하고 있지만, 레이턴시 및/또는 스루풋(throughput)에 기초하여 예상되거나 요구된 레벨보다 적은 레벨로 단순히 수행하는 거동들에 대응한다. 이러한 거동들 및 성능은 "가변적 성능(variable performance)" 거동들로 지칭될 수도 있다. 이러한 가변적 성능 거동들은, 예를 들어, 플래시 기반 메모리 기술과 같은 기술에 의해 보여질 수 있다. 데이터 저장 매체를 타겟으로 한 요청들을 수신하도록 구성되는 저장소 제어기가 고려되는데, 상기 요청들은 제1 유형의 동작 및 제2 유형의 동작을 포함한다. 제어기는 상기 복수의 저장 디바이스에 의한 즉각적인 처리를 위해 제1 유형의 요청들을 스케줄링하고, 복수의 저장 디바이스에 의한 나중 처리를 위해 제2 유형의 요청들을 큐잉하도록 더 구성된다. 제1 유형의 동작들은 비교적 낮은 레이턴시가 예상되는 동작들에 대응할 수 있고, 제2 유형의 동작들은 비교적 높은 레이턴시가 예상되는 동작들에 대응할 수 있다. 낮은 레이턴시 동작은 판독 동작들에 대응하고, 높은 레이턴시 동작들은 기록 동작들을 포함할 수 있다. 또한, 제2 유형의 동작에 대응하는 복수의 요청의 큐잉에 후속해서, 저장소 제어기는 제1 유형의 동작에 대응하는 요청들의 처리를 중단하고 단지 제2 유형의 동작에 대응하는 요청들만 처리하도록 구성되는 실시예들이 고려된다.
이러한 및 다른 실시예들은 다음과 같은 설명 및 첨부 도면들을 고려하면 명백해지게 될 것이다.
도 1은 네트워크 아키텍처에 대한 하나의 실시예를 도시하는 일반화된 블록 다이어그램이다.
도 2는 컴퓨팅 시스템에 대한 하나의 실시예에 따른 개념적 모델을 도시한다.
도 3은 데이터 저장소 서브시스템(data storage subsystem)에서 예측되지 않은 가변적인 I/O 응답 시간을 줄이기 위해 I/O 스케줄링을 조정하기 위한 방법에 대한 하나의 실시예를 도시하는 일반화된 흐름 다이어그램이다.
도 4는 저장 디바이스에 발행된 동작들을 분리하기(segregating) 위한 방법에 대한 하나의 실시예를 도시하는 일반화 블록 다이어그램이다.
도 5는 저장소 서브시스템에서 저장 디바이스들의 거동을 특성화하는 모델을 개발하기 위한 방법에 대한 하나의 실시예를 도시하는 일반화된 흐름 다이어그램이다.
도 6은 저장소 서브시스템에 대한 하나의 실시예를 도시하는 일반화된 블록 다이어그램이다.
도 7은 디바이스 유닛에 대한 또 다른 실시예를 도시하는 일반화된 블록 다이어그램이다.
도 8은 상태 테이블에 대한 또 다른 실시예를 도시하는 일반화된 블록 다이어그램이다.
도 9는 데이터 저장소 서브시스템에서 예측되지 않은 가변적인 I/O 응답 시간을 줄이기 위해 I/O 스케줄링을 조정하기 위한 방법에 대한 하나의 실시예를 도시하는 일반화된 흐름 다이어그램이다.
도 10은 공유된 데이터 저장소에서 판독 동작들이 효율적인 레이턴시를 갖는 것을 유지하기 위한 방법에 대한 하나의 실시예를 도시하는 일반화된 흐름 다이어그램이다.
도 11은 가변적인 I/O 응답 시간을 보이는 저장 디바이스의 수를 줄이기 위한 방법에 대한 하나의 실시예를 도시하는 일반화된 흐름 다이어그램이다.
도 12는 공유된 데이터 저장소에서 판독 동작들이 효율적인 레이턴시들을 갖는 것을 유지하기 위한 방법에 대한 하나의 실시예를 도시하는 일반화된 흐름 다이어그램이다.
본 발명은 다양한 수정들 및 대안적인 형태들이 가능한 한편, 특정 실시예들이 도면들에 예로서 도시되고 여기에 자세히 설명되어 있다. 그러나, 도면들 및 그들에 대한 상세한 설명은 본 발명을 여기에 개시된 특정한 형태로 제한하려는 의도가 아니라, 그와는 반대로, 본 발명은 첨부된 청구항들에 의해 정의된 것과 같은 본 발명의 사상 및 범위 내에 있는 모든 수정, 등가물 및 대안을 커버하는 것이다.
도 2는 컴퓨팅 시스템에 대한 하나의 실시예에 따른 개념적 모델을 도시한다.
도 3은 데이터 저장소 서브시스템(data storage subsystem)에서 예측되지 않은 가변적인 I/O 응답 시간을 줄이기 위해 I/O 스케줄링을 조정하기 위한 방법에 대한 하나의 실시예를 도시하는 일반화된 흐름 다이어그램이다.
도 4는 저장 디바이스에 발행된 동작들을 분리하기(segregating) 위한 방법에 대한 하나의 실시예를 도시하는 일반화 블록 다이어그램이다.
도 5는 저장소 서브시스템에서 저장 디바이스들의 거동을 특성화하는 모델을 개발하기 위한 방법에 대한 하나의 실시예를 도시하는 일반화된 흐름 다이어그램이다.
도 6은 저장소 서브시스템에 대한 하나의 실시예를 도시하는 일반화된 블록 다이어그램이다.
도 7은 디바이스 유닛에 대한 또 다른 실시예를 도시하는 일반화된 블록 다이어그램이다.
도 8은 상태 테이블에 대한 또 다른 실시예를 도시하는 일반화된 블록 다이어그램이다.
도 9는 데이터 저장소 서브시스템에서 예측되지 않은 가변적인 I/O 응답 시간을 줄이기 위해 I/O 스케줄링을 조정하기 위한 방법에 대한 하나의 실시예를 도시하는 일반화된 흐름 다이어그램이다.
도 10은 공유된 데이터 저장소에서 판독 동작들이 효율적인 레이턴시를 갖는 것을 유지하기 위한 방법에 대한 하나의 실시예를 도시하는 일반화된 흐름 다이어그램이다.
도 11은 가변적인 I/O 응답 시간을 보이는 저장 디바이스의 수를 줄이기 위한 방법에 대한 하나의 실시예를 도시하는 일반화된 흐름 다이어그램이다.
도 12는 공유된 데이터 저장소에서 판독 동작들이 효율적인 레이턴시들을 갖는 것을 유지하기 위한 방법에 대한 하나의 실시예를 도시하는 일반화된 흐름 다이어그램이다.
본 발명은 다양한 수정들 및 대안적인 형태들이 가능한 한편, 특정 실시예들이 도면들에 예로서 도시되고 여기에 자세히 설명되어 있다. 그러나, 도면들 및 그들에 대한 상세한 설명은 본 발명을 여기에 개시된 특정한 형태로 제한하려는 의도가 아니라, 그와는 반대로, 본 발명은 첨부된 청구항들에 의해 정의된 것과 같은 본 발명의 사상 및 범위 내에 있는 모든 수정, 등가물 및 대안을 커버하는 것이다.
다음의 설명에서, 수많은 특정 상세는 본 발명에 대한 철저한 이해를 제공하기 위해 진술된다. 그러나, 당업자는 이러한 특정 상세들 없이 본 발명이 실행될 수 있다는 것을 인식할 것이다. 어떤 경우에는, 본 발명을 모호하게 하지 않기 위해 잘 알려진 회로, 구조, 신호, 컴퓨터 프로그램 명령어 및 기법이 자세히 표시되지 않았다.
도 1을 참조하면, 네트워크 아키텍처(100)에 대한 하나의 실시예의 일반화된 블록 다이어그램이 표시된다. 아래 더 설명된 바와 같이, 네트워크 아키텍처(100)에 대한 하나의 실시예는 네트워크(180)를 통해 서로 및 데이터 저장소 어레이(120a-120b)에 상호접속된 클라이언트 컴퓨터 시스템(110a-110b)을 포함한다. 네트워크(180)는 스위치(140)를 통해 제2 네트워크(190)에 연결될 수 있다. 클라이언트 컴퓨터 시스템(110c)은 네트워크(190)를 통해 클라이언트 컴퓨터 시스템(110a-110b) 및 데이터 저장소 어레이(120a-120b)에 연결된다. 또한, 네트워크(190)는 스위치(150)를 통해 인터넷(160) 또는 다른 외측 네트워크에 연결될 수 있다.
대안적인 실시예에서, 클라이언트 컴퓨터와 서버, 스위치, 네트워크, 데이터 저장소 어레이, 및 데이터 저장 디바이스의 수와 유형은 도 1에 도시된 것으로 제한되지 않는다. 여러 경우에, 하나 이상의 클라이언트는 오프라인에서 동작할 수 있다. 또한, 동작 동안, 개개의 클라이언트 컴퓨터 접속 유형은, 사용자가 네트워크 아키텍처(100)에 접속(connect), 접속해제(disconnect), 및 재접속(reconnect)함에 따라 달라질 수 있다. 또한, 본 설명은 일반적으로 네트워크 부착 저장소에 대해 논의하고 있지만, 여기에 설명된 시스템 및 방법은 직접 부착된 저장소 시스템에 적용될 수도 있고, 설명된 방법 중 하나 이상 측면을 수행하도록 구성된 호스트 운영 체제를 포함할 수 있다. 많은 이러한 대안들이 가능하고 고려된다. 도 1에 도시된 컴포넌트들 각각에 대한 추가 설명이 곧 제공된다. 먼저, 데이터 저장소 어레이(120a-120b)에 의해 제공된 특징들 중 일부에 대한 개요가 설명된다.
네트워크의 아키텍처(100)에서, 데이터 저장소 어레이(120a-120b)의 각각은, 클라이언트 컴퓨터 시스템(110a-110c)과 같은, 상이한 서버들 및 컴퓨터들 간의 데이터의 공유를 위해 사용될 수 있다. 또한, 데이터 저장소 어레이(120a-120b)는 디스크 미러링(disk mirroring), 백업과 복원, 보관(archival)과 보관된 데이터의 검색, 및 하나의 저장 디바이스에서 또 다른 저장 디바이스로의 데이터 이주(data migration)를 위해 사용될 수 있다. 대안적인 실시예에서, 하나 이상의 클라이언트 컴퓨터 시스템(110a-110c)은 클러스터를 형성하기 위해 빠른 LAN들(local area networks)을 통해 서로에게 링크될 수 있다. 이러한 클라이언트는, 데이터 저장소 어레이(120a-120b) 중 하나에 거주하는 클러스터 공유 볼륨과 같은, 저장 자원을 공유할 수 있다.
데이터 저장소 어레이(120a-120b) 각각은 데이터 저장소를 위한 저장소 서브시스템(170)을 포함한다. 저장소 서브시스템(170)은 복수의 저장 디바이스(176a-176m)를 포함할 수 있다. 이러한 저장 디바이스(176a-176m)는 클라이언트 컴퓨터 시스템(110a-110c)에 데이터 저장 서비스를 제공할 수 있다. 저장 디바이스(176a-176m) 각각은 데이터 저장을 수행하기 위해 특정한 기술 및 메커니즘을 사용한다. 저장 디바이스들(176a-176m) 각각에서 사용된 기술 및 메커니즘의 유형은 저장 디바이스들(176a-176m) 각각으로 및 그로부터 판독 및 기록 동작들을 제어 및 스케줄링하기 위해 사용된 알고리즘을 결정하는 데 적어도 부분적으로 사용될 수 있다. 이러한 알고리즘들에 사용된 논리는 기본 운영 체제(OS)(116), 파일 시스템(140), 저장소 서브시스템 제어기(174) 내의 하나 이상의 글로벌 I/O 스케줄러(178), 저장 디바이스들(176a-176m) 각각 내의 제어 논리, 또는 그 밖의 것 중 하나 이상에 포함될 수 있다. 또한, 여기에 설명된 논리, 알고리즘, 및 제어 메커니즘은 하드웨어 및/또는 소프트웨어를 포함할 수 있다.
저장 디바이스들(176a-176m) 각각은 판독 및 기록 요청들을 수신하고, 복수의 데이터 저장소 위치를 포함하도록 구성될 수 있는데, 각각의 데이터 저장소 위치는 어레이에서 로우들 및 컬럼들로서 주소 지정 가능(addressable)하다. 하나의 실시예에서, 저장 디바이스들(176a-176m) 내에서 데이터 저장소 위치는 논리적, 리던던트 저장 컨테이너(redundant storage containers) 또는 RAID 어레이(redundant arrays of inexpensive/independent disks)로 배열될 수 있다. 일부 실시예들에서, 저장 디바이스(176a-176m) 각각은 종래의 하드 디스크 드라이브(HDD)와는 다른 데이터 저장을 위한 기술을 이용할 수 있다. 예를 들어, 저장 디바이스(176a-176m) 중 하나 이상은 영구적인 데이터를 저장하기 위해 고체-상태 메모리로 구성된 저장소를 포함하거나 그에 연결될 수 있다. 다른 실시예들에서, 저장 디바이스들(176a-176m) 중 하나 이상은 스핀 토크 전송 기법(spin torque transfer technique), MRAM(magnetoresistive random access memory) 기법, 슁글드 디스크(shingled disk), 멤리스터(memristors), 상 변화 메모리(phase change memory), 또는 다른 저장 기술들과 같은 다른 기술들을 사용하는 저장소를 포함하거나 또한 그에 연결될 수 있다. 이러한 서로 다른 저장 기법들 및 기술들은 저장 디바이스들 사이에서 I/O 특성들이 달라지는 것으로 이어질 수 있다.
하나의 실시예에서, 포함된 고체-상태 메모리는 고체-상태 드라이브(SSD) 기술을 포함한다. 일반적으로, SSD 기술은 플래시 메모리 셀을 이용한다. 본 기술에서 알려진 바와 같이, 플래시 메모리 셀은 플로팅 게이트에 트랩 및 저장된 전자의 범위에 기초한 이진 값을 보유한다. 완전히 소거된 플래시 메모리 셀은 플로팅 게이트에 전자들이 없거나 최소 수의 전자를 저장한다. 단일-레벨 셀(single-level cell; SLC) 플래시를 위한 이진 1과 같은, 특정한 이진 값은 소거된 플래시 메모리 셀과 관련된다. 멀티-레벨 셀(MLC) 플래시는 소거된 플래시 메모리 셀과 관련된 이진 값 11을 갖는다. 플래시 메모리 셀 내의 제어 게이트에 주어진 임계 전압보다 높은 전압을 인가한 후에, 플래시 메모리 셀은 부동 게이트에 주어진 범위의 전자를 트랩한다. 따라서, SLC 플래시를 위한 이진 0과 같은, 또 다른 특정한 이진 값이, 프로그래밍된(기록된) 플래시 메모리 셀과 관련된다. MLC 플래시 셀은 제어 게이트에 인가된 전압에 따라 프로그래밍된 메모리 셀과 관련된 다수의 이진 값 중 하나를 가질 수 있다.
기술 및 HDD 기술과 SDD 기술 사이의 메커니즘들에 있어서의 차이는 데이터 저장 디바이스(176a-176m)의 입/출력(I/O) 특성에 있어서의 차이를 초래할 수 있다. 일반적으로 말해서, SSD 기술은 HDD 기술보다 낮은 판독 액세스 레이턴시 시간을 제공한다. 그러나, SSD의 기록 성능은 일반적으로 판독 성능보다 더 느리고, SSD 내에서 프리(free)이고 프로그램가능한 블록들의 가용성에 의해 상당히 영향을 받을 수 있다. SSD의 기록 성능이 SSD의 판독 성능에 비해 상당히 더 느림에 따라, 판독과 유사한 레이턴시를 예상하는 특정 기능들이나 동작들에서 문제가 발생할 수 있다. 또한, 판독 레이턴시에 영향을 미치는 긴 기록 레이턴시에 의해 스케줄링을 행하기가 더 어렵게 될 수 있다. 따라서, 데이터 저장소 어레이(120a-120b) 각각에서 I/O 스케줄링을 위해 서로 다른 알고리즘들이 사용될 수 있다.
하나의 실시예에서, 판독 및 기록 동작들과 같은 서로 다른 유형의 동작들이 서로 다른 레이턴시를 갖는 경우에, I/O 스케줄링을 위한 알고리즘은 이러한 동작들을 분리(segregate)하고, 스케줄링을 목적으로 그들을 별도로 처리할 수 있다. 예를 들어, 저장 디바이스(176a-176m) 중 하나 이상 내에서, 기록 동작이 디바이스들 그 자체에 의해, 이를테면, 내부 캐시에 그들을 저장하는 것에 의해 배치(batch)될 수 있다. 이러한 캐시들이 주어진 점유 임계치(occupancy threshold)에 도달할 때, 또는 일부 다른 시간에, 대응하는 저장 디바이스(176a-176m)는 캐시를 플러시할 수 있다. 일반적으로, 이러한 캐시 플러시는 예측할 수 없는 시간에 판독 및/또는 기록에 추가된 레이턴시를 도입할 수 있는데, 이는 동작들을 효율적으로 스케줄링하는데 있어서 어려움을 초래한다. 따라서, I/O 스케줄러는, 그러한 캐시 플러시가 언제 발생할 수 있는지를 예측하기 위해, 캐시의 크기 또는 측정된 유휴 시간과 같은, 저장 디바이스의 특성을 이용할 수 있다. 하나 이상의 저장 디바이스(176a-176m) 각각의 특성을 알면, 더 효율적인 I/O 스케줄링으로 이어질 수 있다. 하나의 실시예에서, 글로벌 I/O 스케줄러(178)는, 하나 이상의 저장 디바이스들(176a-176m) 중 주어진 디바이스가 예측되지 않은 시간에 I/O 요청에 대해 긴 응답 시간을 보인다는 것을 검출할 수 있다. 이에 응답하여, 글로벌 I/O 스케줄러(178)는, 디바이스가 다시 예상된 거동을 보이도록 하기 위해, 주어진 디바이스에 대해 주어진 동작을 스케줄링할 수 있다. 하나의 실시예에서, 이러한 동작은 캐시 플러시 명령, 트림 명령, 소거 명령, 또는 그 외의 것일 수 있다. I/O 스케줄링에 관한 더 자세한 사항은 아래에서 논의될 것이다.
네트워크 아키텍처의 컴포넌트들(Components of a Network Architecture)
다시, 도시된 바와 같이, 네트워크 아키텍처(100)는 서로 및 데이터 저장소 어레이(120a-120b)에 네트워크(180 및 190)를 통해 상호접속된 클라이언트 컴퓨터 시스템(110a-110c)을 포함하고 있다. 네트워크(180 및 190)는 무선 접속, 직접 LAN(local area network) 접속, 인터넷과 같은 WAN(wide area network) 접속, 라우터, SAN(storage area network), 이더넷 등을 포함하는 다양한 기법을 포함할 수 있다. 네트워크(180 및 190)는 무선일 수도 있는 하나 이상의 LAN을 포함할 수 있다. 네트워크(180 및 190)는 RDMA(remote direct memory access) 하드웨어 및/또는 소프트웨어, TCP/IP(transmission control protocol/internet protocol) 하드웨어 및/또는 소프트웨어, 라우터, 리피터, 스위치, 그리드 및/또는 그 외의 것들을 더 포함할 수 있다. 파이버 채널(Fibre Channel), FCoE(Fibre Channel over Ethernet), iSCSI 등과 같은 프로토콜이 네트워크(180 및 190)에서 사용될 수 있다. 스위치(140)는 네트워크(180 및 190) 둘 다와 관련된 프로토콜을 이용할 수 있다. 네트워크(190)는 TCP(Transmission Control Protocol) 및 IP(Internet Protocol) 또는 TCP/IP와 같은 인터넷(160)을 위해 사용된 통신 프로토콜들의 세트와 인터페이스할 수 있다. 스위치(150)는 TCP/IP 스위치일 수 있다.
클라이언트 컴퓨터 시스템(110a-110c)은 데스크톱 PC(personal computers), 서버, 서버 팜, 워크스테이션, 랩톱, 핸드헬드 컴퓨터, 서버, PDA(personal digital assistants), 스마트폰 등과 같은 임의의 수의 정지(stationary) 또는 이동(mobile) 컴퓨터를 나타낸다. 일반적으로 말해서, 클라이언트 컴퓨터 시스템(110a-110c)은 하나 이상의 프로세서 코어를 포함하는 하나 이상의 프로세서를 포함한다. 각 프로세서 코어는 미리 정의된 범용 명령어 세트에 따라 명령어들을 실행하기 위한 회로를 포함한다. 예를 들어, x86 명령어 세트 아키텍처가 선택될 수 있다. 대안적으로, Alpha®, PowerPC®, SPARC®, 또는 또 다른 범용 명령어 세트 아키텍처가 선택될 수 있다. 프로세서 코어는 데이터 및 컴퓨터 프로그램 명령어를 위해 캐시 메모리 서브시스템에 액세스할 수 있다. 캐시 서브시스템은 RAM(random access memory) 및 저장 디바이스를 포함하는 메모리 계층 구조(memory hierarchy)에 연결될 수 있다.
클라이언트 컴퓨터 시스템 내의 각 프로세서 코어 및 메모리 계층 구조가 네트워크 인터페이스에 접속될 수 있다. 하드웨어 컴포넌트들에 더해, 클라이언트 컴퓨터 시스템(110a-110c) 각각은 메모리 계층 구조 내에 저장된 기본 운영 체제(OS)를 포함할 수 있다. 기본 OS는, 예를 들어, MS-DOS®, MS-WINDOWS®, OS/2®, UNIX®, Linux®, Solaris®, AIX®, DART 또는 그 외의 것과 같은, 다양한 운영 체제 중 임의의 것을 나타낼 수 있다. 그에 따라, 기본 OS는 최종 사용자에게 다양한 서비스를 제공하고, 다양한 프로그램의 실행을 지원하도록 동작가능한 소프트웨어 프레임워크를 제공하도록 동작가능할 수 있다. 또한, 클라이언트 컴퓨터 시스템(110a-110c) 각각은 VM(virtual machines)을 지원하는 데 사용된 하이퍼바이저(hypervisor)를 포함할 수 있다. 당업자에게 잘 알려진 바와 같이, 가상화(virtualization)는, 시스템의 하드웨어로부터, OS와 같은, 소프트웨어를 완전히 또는 부분적으로 분리(decouple)시키기 위해 데스크톱 및 서버에서 사용될 수 있다. 가상화는, 최종-사용자에게, 데이터 저장소 어레이들(120a-120b) 각각의 내에 있는 저장 디바이스들(176a-176m) 상에 구축된 논리적 저장 엔티티들(예컨대, LUN들)로의 액세스 및 그 자신의 자원들을 각각 갖는 동일한 기계 상에서 실행하는 다수의 OS들의 일루전(illusion)을 제공할 수 있다.
데이터 저장소 어레이(120a-120b) 각각은, 클라이언트 컴퓨터 시스템(110a-110c)과 같은, 서로 다른 서버들 사이에서 데이터의 공유를 위해 사용될 수 있다. 데이터 저장소 어레이(120a-120b) 각각은 데이터 저장을 위한 저장소 서브시스템(170)을 포함한다. 저장소 서브시스템(170)은 복수의 저장 디바이스(176a-176m)를 포함할 수 있다. 이러한 저장 디바이스(176a-176m) 각각은 SSD일 수 있다. 제어기(174)는 수신된 판독/기록 요청들을 처리하기 위한 논리를 포함할 수 있다. 예를 들어, 위에서 간단히 설명한 알고리즘들은 적어도 제어기(174)에서 실행될 수 있다. RAM(random-access memory)(172)는, 수신된 기록 요청들과 같은, 동작들을 배치(batch)하는데 사용될 수 있다. 다양한 실시예에서, 기록 동작들(또는 다른 동작들)을 배칭(batching)할 때, 비-휘발성 저장소(예컨대, NVRAM)가 사용될 수 있다.
기본 OS(132), 파일 시스템(134), 임의의 OS 드라이버들(미도시) 및 메모리 매체(130)에 저장된 다른 소프트웨어는 파일들로의 액세스를 제공하는 기능성 및 이러한 기능성들의 관리를 제공할 수 있다. 기본 OS(134) 및 OS 드라이버는 수신된 요청에 대응하는 저장소 서브시스템(170)에서의 하나 이상의 메모리 액세스 동작을 수행하기 위해 프로세서(122)에 의해 실행가능하고 메모리 매체(130)에 저장된 프로그램 명령어들을 포함할 수 있다. 도 1에 도시된 시스템은 일반적으로 하나 이상의 파일 서버 및/또는 블록 서버를 포함할 수 있다.
데이터 저장소 어레이(120a-120b) 각각은 네트워크(180)에 접속하기 위해 네트워크 인터페이스(124)를 사용할 수 있다. 클라이언트 컴퓨터 시스템(110a-110c)과 유사하게, 하나의 실시예에서, 네트워크 인터페이스(124)의 기능성은 네트워크 어댑터 카드에 포함될 수 있다. 네트워크 인터페이스(124)의 기능성은 하드웨어 및 소프트웨어 둘 다를 사용하여 구현될 수 있다. 랜덤-액세스 메모리(RAM) 및 판독-전용 메모리(ROM) 둘 다 네트워크 인터페이스(124)의 네트워크 카드 구현에 포함될 수 있다. 하나 이상의 ASIC(application specific integrated circuit)는 네트워크 인터페이스(124)의 기능성을 제공하는 데 사용될 수 있다.
하나의 실시예에서, 데이터 저장소 모델은 I/O 성능을 최적화하고자 개발될 수 있다. 하나의 실시예에서, 모델은 저장소 시스템 내의 저장 디바이스들의 특성에 적어도 부분적으로 기초한다. 예를 들어, 고체 상태 저장소 기술을 이용하는 저장소 시스템에서, 특정 디바이스들의 특성은 디바이스를 위한 모델을 개발하는 데 사용될 수 있는데, 이는 결국 대응하는 I/O 스케줄링 알고리즘을 알려주는 역할을 할 수 있다. 예를 들어, 사용되고 있는 특정한 저장 디바이스가 판독 레이턴시(read latencies)에 비해 비교적 높은 기록 레이턴시(write latencies)를 보이는 경우에, 그러한 특성은 동작들을 스케줄링하는데 고려될 수 있다. 비교적 높거나 낮다는 것은 주어진 시스템, 처리되는 데이터의 유형, 처리되는 데이터의 양, 데이터의 타이밍, 또는 그 외의 것에 따라 달라질 수 있는 것으로 간주된다는 것에 주목한다. 일반적으로 말해서, 시스템은 낮거나 높은 레이턴시를 구성하는 것이 무엇인지, 및/또는 둘 사이에 상당한 차이를 구성하는 것이 무엇인지를 결정하도록 프로그램가능하다.
일반적으로 말해서, 디바이스들을 위해 개발되는 임의의 모델, 또는 컴퓨팅 시스템은 불완전할 것이다. 종종, 주어진 시스템을 완전히 모델링하기 위해 실제 시스템(real world system)에서 고려할 변수들이 단순히 너무 많다. 어떤 경우에는, 완전하지 않지만 그럼에도 불구하고 가치있는 모델을 개발할 가능성이 있을 수 있다. 아래에 더 충분히 설명한 바와 같이, 실시예들이 설명되는데, 여기서, 저장 디바이스는 디바이스의 특성에 기초하여 모델링된다. 다양한 실시예에서, I/O 스케줄링은, 디바이스가 어떻게 거동할지에 관한 특정 예측에 기초하여 수행된다. 디바이스의 특성에 대한 이해에 기초하면, 특정 디바이스 거동들이 다른 것들보다 더 예측가능하다. 최적의 I/O 성능을 위해 동작들을 더 효율적으로 스케줄링하기 위해, 시스템의 거동에 대한 더 많은 제어가 요구된다. 예상치 못한, 또는 예측할 수 없는 디바이스 거동은 동작을 스케줄링하는 것을 더 어렵게 만든다. 따라서, 시스템에서 예측할 수 없거나 예상되지 않은 거동을 최소화하는 알고리즘이 개발된다.
도 2는 모델링되는 디바이스나 시스템에 대한 개념적 도시(conceptual illustration), 및 디바이스나 시스템 내에서 예측할 수 없는 거동을 최소화하기 위해 사용된 접근법을 제공한다. 제1 블록 200에서, 이상적인 시나리오가 도시된다. 블록 200에는 시스템(204) 및 그 시스템의 모델(202)이 도시된다. 하나의 실시예에서, 시스템은 단일 디바이스의 것일 수 있다. 대안적으로, 시스템은 많은 디바이스 및/또는 컴포넌트를 포함할 수 있다. 위에서 논의된 바와 같이, 모델(202)은, 모델링하고자 하는 시스템(204)의 완전한 모델이 아닐 수 있다. 그럼에도 불구하고, 모델(202)은 모델을 위해서 관심 있는 거동들을 캡처한다. 하나의 실시예에서, 모델(202)은 컴퓨팅 저장소 시스템을 모델링하려고 할 수 있다. 이상적인 시나리오(200)에서, 시스템(204)의 실제 거동이 모델(202)의 거동과 "일치"된다(is aligned with). 다시 말해, 시스템(204)의 거동은 일반적으로 모델(202)이 캡처하고자 하는 그러한 거동들(behaviors)로 거동한다(comport). 시스템 거동(204)이 모델(202)의 거동과 일치하는 동안, 시스템 거동은 일반적으로 더 예측가능할 수 있다. 그 결과, 시스템 내의 동작들(예컨대, 판독 및 기록 동작들)의 스케줄링이 더 효율적으로 수행될 수 있다.
예를 들어, 판독 응답 시간을 최적화하도록 요구되는 경우에, 시스템의 다른 거동들이 비교적 예측가능한 경우에 더 적시에 서비스가 제공되도록 판독을 스케줄링하는 것이 가능할 수 있다. 반면에, 시스템 거동이 비교적 예측할 수 없는 경우에, 요구될 때 결과를 제공하기 위해 판독들을 스케줄링하는 능력에 있어서의 신뢰의 레벨이 감소된다. 블록 210은 시스템 거동(더 작은 원)이 해당 시스템의 모델의 거동(더 큰 원)과 일치하지 않는 시나리오를 도시한다. 이 경우에, 시스템은 모델의 외측에 있는 거동을 보여주고 있다. 그 결과, 시스템 거동은 덜 예측가능하고 동작들의 스케줄링은 덜 효율적이 될 수 있다. 예를 들어, 고체 상태 메모리 디바이스가 저장소 시스템에서 사용되고, 이러한 디바이스가 스스로 액션들을 개시하여 그 디바이스가 더 큰(또는 그 외에 예상치 못한) 레이턴시를 갖는 요청들을 서비스하게 하는 경우에, 그 디바이스에 대해 스케줄링된 임의의 동작들은 더 크거나 예상치 못한 레이턴시를 경험할 수 있다. 이러한 디바이스 동작에 대한 하나의 예는 내부 캐시 플러시이다.
예상치 못한 또는 스케줄링되지 않은 시스템 거동 및 대응하는 가변적인 성능에 대한 문제를 어드레스하기 위해, 개발되는 모델은 덜 불확실한 상태로 시스템을 복원하기 위해 취할 수 있는 액션들을 포함할 수 있다. 다시 말해, 시스템이 시스템의 거동을 예측하는 모델의 능력을 저하시키는 거동을 보이기 시작한다면, 모델은 어떤 상태(a state)로 시스템을 복원하기 위해 취할 수 있는 특정 액션들을 내장하여, 특정한 예상치 못한 거동이 제거되거나 렌더링될 가능성이 적다. 도시된 예에서, 모델에 더 가깝게 일치되는 상태로 시스템을 "이동(move)"하고자 하는 액션(212)이 도시된다. 액션(212)은, 모델의 외측에 있는 시스템 거동의 검출에 응답하여 수행됨에 따라, "리액티브(reactive)" 액션 또는 동작이라 불릴 수 있다. 액션(212)을 수행하는 것에 후속하여, 더욱 이상적인 상태(220)가 달성될 수 있다.
더 이상적인 상태로 시스템을 이동하기 위해 예측할 수 없는 거동에 반응할 수 있는 모델을 개발하는 것이 바람직하지만, 이러한 예측할 수 없는 거동의 존재가 여전히 동작을 효율적으로 스케줄링하는 것을 방해할 수 있다. 따라서, 예상치 못한 거동 또는 이벤트의 발생을 최소화하는 것이 바람직할 것이다. 하나의 실시예에서, 예상치 못한 거동의 발생을 방지하거나 줄일 수 있도록 설계된 액션들이나 동작들을 포함하는 모델이 개발된다. 이러한 액션들은 일반적으로 일부 거동이나 이벤트의 발생을 방지하거나, 일부 거동이나 이벤트의 타이밍을 변경하기 위해, 선행하여(proactively) 수행될 수 있으므로, "프로액티브(proactive)" 액션들이나 동작들이라 할 수 있다. 도 2에서 블록 230은 시스템 거동(더 작은 원)이 모델의 거동(더 큰 원) 내에 있는 시나리오를 도시한다. 그럼에도 불구하고, 모델은, 계속 그 모델 내에 있으면서 아마 더 이상적으로 일치되는 방식으로 시스템 거동을 이동하기 위한 액션(232)을 취한다. 블록 230에서 시스템 거동은, 모델의 외측에 있는 거동을 보이는 상태에 근접한 것으로 보일 수 있다. 이러한 경우에, 모델은 시스템이 이러한 상태에 근접해 있다는 것을 믿기 위한 일부 기준을 가질 수 있다. 예를 들어, I/O 스케줄러가 주어진 디바이스로 다수의 기록 동작을 전달한 경우, 스케줄러는 디바이스가 향후의 어떤 시간에 내부 캐시 플러시 동작을 수행할 수 있을 것으로 예상할 수 있다. 이러한 이벤트의 발생을 기다리기보다, 스케줄러는, 캐시 플러시가 스케줄러의 선택 시에 수행되도록, 해당 디바이스에 대해 캐시 플러시 동작을 선행하여 스케줄링할 수 있다. 대안적으로, 또는 위에 더해, 이러한 프로액티브 동작들(proactive operations)은 랜덤 시간에 수행될 수 있다. 캐시 플러시가 여전히 발생하는 동안, 그 발생은 예상되지 않고 그것은 이제 스케줄러에 의해 수행된 전체 스케줄링의 일부가 되며, 더 효율적이고 지능적인 방식으로 관리될 수 있다. 이러한 프로액티브 액션(proactive action; 232)의 수행에 후속하여, 시스템은 일반적으로 더 예측가능한 상태(240)에 있는 것으로 보일 수 있다. 그 이유는, 캐시 플러시가 디바이스에서 스케줄링 및 수행되었고, 디바이스가 스스로 내부 캐시 플러시를 자발적으로 개시할 가능성이 감소되기 때문이다(즉, 그의 캐시가 이미 플러시됨). 모델 내에서 리액티브(reactive) 및 프로액티브(proactive) 액션들 둘 다를 조합하여, 더 큰 시스템 예측가능성이 달성될 수 있고 개선된 스케줄링도 마찬가지로 달성될 수 있다.
이제, 도 3을 참조하면, 예측되지 않은 거동을 줄이기 위해 I/O 스케줄링을 수행하기 위한 방법(300)에 대한 하나의 실시예에가 도시된다. 위에서 설명한 네트워크 아키텍처(100) 및 데이터 저장소 어레이(120a-120b)에 구현되어 있는 컴포넌트들은 일반적으로 상기 방법(300)에 따라 동작할 수 있다. 이 실시예에서 단계들은 순차적 순서(sequential order)로 도시된다. 하지만, 일부 단계들은 도시된 것과는 다른 순서로 발생할 수 있고, 일부 단계들은 동시에 수행될 수 있고, 일부 단계들은 다른 단계들과 조합될 수 있고, 일부 단계들은 또 다른 실시예에서는 없을 수 있다.
블록 302에서, I/O 스케줄러는 하나 이상의 저장 디바이스에 대해 판독 및 기록 동작들을 스케줄링한다. 다양한 실시예들에서, I/O 스케줄러는 각 저장 디바이스에 대해 (물리적 또는 논리적으로) 별도의 큐(separate queue)를 유지할 수 있다. 또한, I/O 스케줄러는 대응하는 저장 디바이스에 의해 지원된 각 동작 유형에 대해 별도의 큐를 포함할 수 있다. 예를 들어, I/O 스케줄러는 적어도 SSD에 대해 별도의 판독 큐와 별도의 기록 큐를 유지할 수 있다. 블록 304에서, I/O 스케줄러는 하나 이상의 저장 디바이스의 거동을 모니터링 할 수 있다. 하나의 실시예에서, I/O 스케줄러는 대응하는 저장 디바이스의 모델(예컨대, 디바이스의 모델에 적어도 부분적으로 기초한 거동 유형 모델 및/또는 알고리즘들)을 포함할 수 있고 저장 디바이스로부터 상태 데이터를 수신하여 모델에 입력할 수 있다. I/O 스케줄러 내의 모델은 저장 디바이스의 알려진 및/또는 관찰된 특성을 이용하여 저장 디바이스의 거동의 예측 및 모델링 둘 다를 할 수 있다.
I/O 스케줄러는 I/O 성능에 영향을 미치거나, 영향을 미칠 수 있는 주어진 저장 디바이스의 특성을 검출할 수 있다. 예를 들어, 추가로 아래에 논의되는 바와 같이, 디바이스들 및 I/O 트래픽의 다양한 특성들과 상태들은 유지될 수 있다. 이러한 특성과 상태를 관찰함으로써, I/O 스케줄러는, 주어진 디바이스가 곧 높은 I/O 레이턴시 거동을 보이는 상태에 진입한다는 것을 예측할 수 있다. 예를 들어, 하나의 실시예에서, I/O 스케줄러는, 저장 디바이스에 대한 요청의 응답 시간에 영향을 미칠 수 있는 내부 캐시 플러시가 저장 디바이스 내에서 막 발생하려고 한다는 것을 검출 또는 예측할 수 있다. 예를 들어, 하나의 실시예에서, 주어진 시간량 동안 유휴상태(idle)로 있는 저장 디바이스는 그의 내부 캐시를 플러시할 수 있다. 일부 실시예들에서, 주어진 디바이스가 유휴상태인지 여부는 디바이스 외부의 관점에 기초한 것일 수 있다. 예를 들어, 시간 기간 동안 디바이스에 대해 동작이 스케줄링되지 않는 경우에, 디바이스는 대략 그 시간 기간 동안 유휴상태인 것으로 간주될 수 있다. 이러한 실시예에서, 디바이스는 사실 디바이스 내에서 내부적으로 개시된 액티비티로 인해 비지 상태(busy)일 수 있다. 그러나, 그러한 내부적으로 개시된 액티비티는, 디바이스가 유휴상태인지 여부를 결정하는데 고려되지 않는다. 다른 실시예들에서, 내부적으로 개시된 디바이스의 액티비티들은, 디바이스가 유휴상태(idle)인지 아니면 비지 상태(busy)인지를 결정할 때 고려될 수 있다. 디바이스의 거동을 관찰하고, 주어진 시간량 동안 유휴상태라는 것에 주목하여, 스케줄러는 내부 캐시 플러시가 언제 발생할 수 있는지를 예측할 수 있다. 다른 실시예들에서, 스케줄러는 또한 디바이스의 다양한 상태 또는 조건을 결정하기 위해 디바이스들을 폴링(poll)하는 능력을 가질 수 있다. 아무튼, 스케줄러는 내부 캐시 플러시와 같은 스케줄링되지 않은 거동의 가능성을 결정하고, 그 거동이 발생하는 것을 방지하기 위해 프로액티브 동작을 개시하도록 구성될 수 있다. 이러한 방식으로, 스케줄러는 디바이스 및 시스템에서 이벤트들의 타이밍을 제어하고, 동작들을 더 잘 스케줄링할 수 있다.
다양한 특성은 디바이스 거동에 관한 예측을 만들기 위한 기준(basis)으로서 사용될 수 있다. 다양한 실시예들에서, 스케줄러는 현재 보류중인 동작들의 상태 및/또는 저장 디바이스에 대응하는 최근 동작들의 이력을 유지할 수 있다. 일부 실시예들에서, I/O 스케줄러는 디바이스 내의 캐시의 크기 및/또는 캐싱 정책을 알 수 있고, 저장 디바이스로 전송된 다수의 기록 요청들의 카운트를 유지할 수 있다. 다른 실시예들에서, 디바이스 내에 있는 캐시의 상태를 결정하기 위해 다른 메커니즘이 사용가능할 수 있다(예컨대, 디바이스로의 직접 폴링 유형 액세스). 또한, I/O 스케줄러는 저장 디바이스로 전송된 기록 요청에 있어서 데이터의 양을 추적할 수 있다. 그 다음, I/O 스케줄러는, 다수의 기록 요청 또는 기록 요청에 대응하는 데이터의 총량 중 어느 하나가 언제 주어진 임계치에 도달하는지를 검출할 수 있다. I/O 스케줄러가 그러한 조건을 검출하는 경우(조건부 블록 306), 그 다음, 블록 308에서, I/O 스케줄러는 디바이스에 대한 특정한 동작을 스케줄링할 수 있다. 이러한 동작은 일반적으로 위에서 설명한 프로액티브 동작에 대응할 수 있다. 예를 들어, I/O 스케줄러는 스케줄러의 선택시에 저장 디바이스가 캐시 플러시를 강제로 수행하게 하기 위해 대응하는 큐에 캐시 플러시 명령을 배치할 수 있다. 대안적으로, I/O 스케줄러는, 저장 디바이스에서 임의의 캐시 플러시가 완료되었는지 여부를 결정하기 위해, 큐에 더미 판독 동작을 배치할 수 있다. 또한, 스케줄러는 상태 정보(예컨대, 유휴 상태, 비지 상태 등)를 획득하기 위해 디바이스에게 쿼리(query)할 수 있다. 이러한 및 다른 특성 및 동작이 가능하고 고려된다. 또한, 다양한 실시예에서, 가동중인(in place) SSD를 리컨디셔닝할 때 프로액티브 동작들이 스케줄링될 수 있다. 이러한 실시예에서, SSD 펌웨어 및/또는 매핑 테이블들은, 요청들이 행(hang)되거나 영구적으로 느린 상태로 들어갈 수 있다. 드라이브를 단지 리셋하거나 드라이브를 파워오프하여 펌웨어의 장애를 없애는 것이 가능할 수 있다. 그러나, 조건이 영구적인 경우에(즉, 매핑 테이블들의 현재 상태를 처리할 수 없는 펌웨어에서의 버그), 그것을 고치는(fix) 또 다른 방식은 드라이브를 완전히 깨끗하게 하기 위해 리포맷하고 FTL을 리셋한 다음 어떤 다른 데이터를 위해 그것을 재실장(repopulate)하거나 그것을 재사용(reuse)하는 것이다.
다수의 예측되지 않는 가변적인 응답 시간의 발생을 방지하거나 줄이기 위해 위에서 설명한 액션들이 수행될 수 있다. 동시에, I/O 스케줄러는 예측되지 않는 시간에 주어진 저장 디바이스의 임의의 가변적인 거동의 발생을 검출할 수 있다. I/O 스케줄러가 그러한 조건을 검출하는 경우(조건부 블록 310), 그 다음, 블록 312에서, I/O 스케줄러는 저장 디바이스의 대응하는 큐에 동작을 배치할 수 있다. 이러한 경우에, 동작은 일반적으로 위에서 설명한 리액티브 동작에 대응할 수 있다. 동작은, 저장 디바이스가 가변적인 거동을 제공하는 시간량을 줄이고 가변적인 거동의 끝을 검출하기 위해 사용될 수 있다. 다양한 실시예에서, 프로액티브 및/또는 리액티브 동작들은 일반적으로 (적어도 부분적으로) 알려진 상태로 디바이스를 배치할 수 있는 임의의 동작을 포함할 수 있다. 예를 들어, 캐시 플러시 동작을 개시하면 결과적으로 디바이스가 빈 캐시 상태를 달성하도록 야기할 수 있다. 비어있는 캐시를 갖는 디바이스는 그의 캐시가 비어 있지 않은 디바이스보다 내부 캐시 플러시를 개시할 가능성이 적을 수 있다. 프로액티브 및/또는 리액티브 동작들에 대한 일부 예로는, 캐시 플러시 동작, 소거 동작, 안전한 소거 동작, 트림 동작, 슬립 동작, 하이버네이트 동작(hibernate operations), 파워온과 파워오프, 및 리셋 동작을 포함한다.
이제, 도 4를 참조하면, 저장 디바이스에 발행된 동작들을 분리하기(segregating) 위한 방법(400)에 대한 하나의 실시예가 도시된다. 이 실시예에서 단계들은 순차적 순서로 도시된다. 그러나, 일부 단계는 도시된 것과는 다른 순서로 발생할 수 있고, 일부 단계들은 동시에 수행될 수 있고, 일부 단계들은 다른 단계들과 조합될 수 있고, 일부 단계들은 또 다른 실시예에 없을 수 있다. 다양한 실시예에서, 제1 유형의 동작은 스케줄링을 위해 제2 유형의 동작에서 분리될 수 있다. 예를 들어, 하나의 실시예에서, 제1 유형의 동작은 제2 유형의 동작에 대해 우선순위가 부여되도록 스케줄링될 수 있다. 이러한 실시예에서, 제1 유형의 동작은 비교적 빠른 처리를 위해 스케줄링될 수 있는 한편, 제2 유형의 동작은 나중 처리를 위해 큐잉된다(사실상 동작의 처리를 연기). 주어진 시점에, 이전에 큐잉된 (제2 유형의) 동작은 처리되는 한편 제1 유형의 동작의 처리는 중지될 수 있다. 후속해서, 제1 유형의 동작으로 처리 우선순위가 리턴되는 동안 제2 동작 유형의 처리는 다시 중지될 수 있다. 하나의 유형에 대해 언제 처리가 중단되고 또 다른 유형에 대해 언제 시작되는지는, 시간 기간, 축적된 데이터, 거래 빈도, 사용가능한 자원(예컨대, 큐 이용), 상기의 임의의 조합, 또는 요구에 따른 임의의 요구된 조건에 기초한 것일 수 있다.
랜덤 판독 및 기록 요청에 대해, SSD는 일반적으로 HDD보다 더 나은 성능을 보여준다. 그러나, SSD는 일반적으로 SSD의 특성으로 인해 판독 요청보다 랜덤 기록 요청에 대해 더 열악한 성능을 보인다. HDD와 달리, 플래시 메모리 셀을 판독하는 것보다 그것을 프로그래밍하는데 더 긴 시간이 걸리기 때문에 일반적으로 판독 요청들보다 상당히 더 긴 시간이 걸리는 기록 요청들로 인해, 판독 및 기록 요청들의 상대적인 레이턴시는 매우 다르다. 또한, 기록 동작의 레이턴시는 기록의 일부로서 수행될 필요가 있는 추가 동작으로 인해 매우 가변적일 수 있다. 예를 들어, 소거 동작은, 이미 수정된, 플래시 메모리 셀에 대한 기록 또는 프로그램 동작에 앞서 수행될 수 있다. 또한, 소거 동작은 블록 단위로(block-wise basis) 수행될 수 있다. 이러한 경우에, 블록(소거 세그먼트) 내의 플래시 메모리 셀들 모두는 함께 소거된다. 블록은 비교적 크고 다수의 페이지를 포함하기 때문에, 동작이 비교적 긴 시간이 걸릴 수 있다. 대안적으로, FTL은 이미 소거된 소거 블록에 블록을 다시 매핑할 수 있다. 어느 한 경우에, 기록 동작을 수행하는 것과 관련된 추가 동작들은, 기록들이, 판독들보다 상당히 더 높은 레이턴시는 물론 레이턴시에 있어서 상당히 더 높은 가변성을 갖게 할 수 있다. 다른 저장 디바이스 유형은 요청 유형에 기초하여 서로 다른 특성을 보일 수 있다. 상기에 더해, 특정 저장 디바이스들은 판독 및 기록 요청이 혼합되는 경우 열악하고 및/또는 가변적인 성능을 제공할 수 있다. 따라서, 성능을 개선하기 위해, 다양한 실시예는 판독 및 기록 요청들을 분리할 수 있다. 이 논의는 일반적으로 특히 판독 및 기록 동작에 대해 말하지만, 여기 설명된 시스템 및 방법은 물론 다른 동작들에도 적용될 수 있다는 것에 주목한다. 이러한 다른 실시예들에서, 다른 비교적 높은 및 낮은 레이턴시 동작들이 그와 같이 식별될 수 있고 스케줄링을 목적으로 분리될 수 있다. 또한, 일부 실시예들에서, 판독 및 기록은 제1 유형의 동작으로 분류될 수 있는 한편, 캐시 플러시 및 트림 동작과 같은 다른 동작들은 제2 유형의 동작에 대응하는 것으로서 분류될 수 있다. 다양한 조합이 가능하고 고려된다.
블록 402에서, I/O 스케줄러는 하나 이상의 저장 디바이스의 주어진 저장 디바이스에 대한 I/O 요청을 수신하고 버퍼링할 수 있다. 블록 404에서, 낮은-레이턴시 I/O 요청은 일반적으로 높은 레이턴시 요청보다 우선적으로 저장 디바이스로 발행될 수 있다. 예를 들어, 저장 디바이스에 의해 사용된 저장 기술에 따라, 판독 요청은 기록 요청 및 다른 명령 유형보다 낮은 레이턴시를 가질 수 있고, 먼저 발행될 수 있다. 그 결과, 판독 요청에 발행 우선순위가 부여되는(즉, 기록 요청에 앞서 디바이스에 전달되는) 한편 기록 요청은 축적될 수 있다. 일부 시점에, I/O 스케줄러는 디바이스에게 판독 요청의 발행을 중지하고 기록 요청의 발행을 시작할 수 있다. 하나의 실시예에서, 기록 요청은 다수의 기록의 스트림으로 발행될 수 있다. 따라서, 기록 요청과 관련된 오버헤드가 다수의 기록 요청을 통해 분할 상환될(amortized) 수 있다. 이러한 방식으로, 높은 레이턴시 요청(예컨대, 기록 요청) 및 낮은 레이턴시 요청(예컨대, 판독 요청)은 분리되고 별도로 처리될 수 있다.
블록 406에서, I/O 스케줄러는, 높은 레이턴시 요청들이 디바이스(들)로 전달되어야 한다는 것을 표시하는 특정한 조건이 존재하는지 여부를 결정할 수 있다. 예를 들어, 하나의 실시예에서, 이러한 조건을 검출하는 것은, 소정 수의 높은 레이턴시 I/O 요청들 또는 대응하는 데이터의 양이 축적되어 주어진 임계치에 도달하는 것에 대한 검출을 포함할 수 있다. 대안적으로, 수신되는 높은 레이턴시 요청의 레이트가 일부 임계치에 도달할 수 있다. 수많은 이러한 조건이 가능하고 고려된다. 하나의 실시예에서, 높은 레이턴시 요청들은 기록 요청일 수 있다. 이러한 조건이 발생하는 경우(조건부 블록 408), 그 다음, 블록 410에서, I/O 스케줄러는 주어진 저장 디바이스로 높은 레이턴시 I/O 요청의 발행을 시작할 수 있다. 발행된 이러한 요청의 수는 주어진 알고리즘에 따라 달라질 수 있다. 수는 고정된 또는 프로그램가능한 기록의 수, 또는 데이터의 양에 대응할 수 있다. 대안적으로, 주어진 시간 기간 동안 기록이 발행될 수 있다. 예를 들어, 시간 기간은 특정 조건이 존재하기를 중단(예컨대, 수신된 기록의 레이트가 내려감)하거나 특정한 조건이 발생할 때까지 지속할 수 있다. 대안적으로, 상기의 임의의 조합은, 디바이스(들)에게 높은 레이턴시 요청의 발행을 시작할 때 및 중지할 때를 결정하는데 사용될 수 있다. 일부 실시예들에서, 기록 요청의 스트림 이후의 제1 판독 요청은 다른 판독 요청에 비해 비교적 느릴 수 있다. 기록 요청의 스트림 직후의 발행 슬롯에서 "진성의(genuine)" 판독 요청들을 스케줄링하는 것을 피하기 위해, I/O 스케줄러는 기록 요청들의 스트림에 후속하는 "더미" 판독을 자동으로 스케줄링하도록 구성될 수 있다. 이러한 맥락에서, "진성의" 판독은 데이터가 사용자 또는 애플리케이션에 의해 요청되는 판독이고, "더미" 판독은 그 데이터가 단순히 폐기될 수 있는 인위적으로 만들어진 판독이다. 다양한 실시예에서, 더미 판독이 끝나는 것처럼 검출될 때까지, 기록 요청은 완료한 것으로 결정될 수 없다. 또한, 다양한 실시예들에서, 캐시 플러시는 기록의 스트림에 후속할 수 있고 기록이 언제 완료되는지를 결정하는데 사용될 수 있다.
이제, 도 5를 참조하면, 저장소 서브시스템에서 저장 디바이스의 거동을 특성화하는 모델을 개발하기 위한 방법(500)에 대한 하나의 실시예가 도시된다. 이 실시예에서 단계들은 순차적 순서로 도시된다. 하지만, 일부 단계는 도시된 것과는 다른 순서로 발생할 수 있고, 일부 단계는 동시에 수행될 수 있고, 일부 단계는 다른 단계와 조합될 수 있고, 일부 단계는 또 다른 실시예에서는 없을 수 있다.
블록 502에서, 하나 이상의 저장 디바이스는 저장소 서브시스템에서 사용되도록 선택될 수 있다. 블록 504에서, 캐시 크기, 일반적인 판독 및 기록 응답 시간, 저장 토폴로지, 디바이스의 에이지(age) 등과 같은 각 디바이스에 대한 다양한 특성이 식별될 수 있다. 블록 506에서, 주어진 저장 디바이스에 대한 I/O 성능에 영향을 미치는 하나 이상의 특성이 식별될 수 있다.
블록 508에서, 주어진 디바이스에 대한 특성의 타이밍 및/또는 발생에 영향을 미치는 하나 이상의 액션이 결정될 수 있다. 예로는 캐시 플러시 및 SSD에 대한 소거 동작과 같은 주어진 동작들의 실행을 포함할 수 있다. 예를 들어, 캐시 플러시와 같은 강제 동작(force operation)은 예측되지 않은 시간에 SSD의 가변적인 응답 시간의 발생을 줄일 수 있다. 블록 510에서, 모델은 대응하는 특성과 액션에 기초한 하나 이상의 선택된 디바이스 각각에 대해 개발될 수 있다. 이 모델은, 저장소 제어기 내에 있는 I/O 스케줄러 내에서와 같이, 소프트웨어에서 사용될 수 있다.
이제, 도 6을 참조하면, 저장소 서브시스템에 대한 하나의 실시예의 일반화된 블록 다이어그램이 도시된다. 도시된 실시예에서, 저장 디바이스(176a-176m)의 각각은 단일 디바이스 그룹 내에 도시된다. 그러나, 다른 실시예들에서, 하나 이상의 저장 디바이스(176a-176m)는 디바이스 그룹들(173a-173m) 중 두 개 이상으로 파티셔닝될 수 있다. 각 저장 디바이스에 대한 하나 이상의 대응하는 동작 큐 및 상태 테이블은 디바이스 유닛(600a-600w)에 포함될 수 있다. 이러한 디바이스 유닛은 RAM(172)에 저장될 수 있다. 디바이스 그룹들(173a-173m)의 각 하나에 대해 대응하는 I/O 스케줄러(178)가 포함될 수 있다. 각 I/O 스케줄러(178)는 대응하는 디바이스 그룹 내의 저장 디바이스 각각에 대해 상태 데이터를 추적하는 모니터(610)를 포함할 수 있다. 스케줄링 논리(620)는 대응하는 저장 디바이스로 어떤 요청을 발행할 것인지에 대한 결정을 수행할 수 있고 요청을 발행할 타이밍을 결정할 수 있다.
이제, 도 7을 참조하면, 디바이스 유닛(600)에 대한 하나의 실시예의 일반화된 블록 다이어그램이 도시된다. 디바이스 유닛(600)은 디바이스 큐(710) 및 테이블(720)을 포함할 수 있다. 디바이스 큐(710)는 판독 큐(712), 기록 큐(714) 및 다른 동작 큐(716)와 같은 하나 이상의 다른 큐를 포함할 수 있다. 각 큐는 하나 이상의 대응하는 요청을 저장하기 위한 복수의 엔트리(730)를 포함할 수 있다. 예를 들어, 대응하는 SSD를 위한 디바이스 유닛은 적어도 판독 요청, 기록 요청, 트림 요청, 소거 요청 등을 저장하는 큐들을 포함할 수 있다. 테이블들(720)은, 각각 상태 데이터를 저장하기 위한 복수의 엔트리(730)를 포함하는, 하나 이상의 상태 테이블(722a-722b)을 포함할 수 있다. 다양한 실시예들에서, 도 7에 도시된 큐는 물리적 및/또는 논리적으로 별도일 수 있다. 또한, 큐 및 테이블은 복수의 엔트리를 포함하는 것으로 도시되지만, 엔트리 자체가 반드시 서로 대응할 필요는 없다는 것에 주목한다. 또한, 큐 및 테이블의 수는 도면에 도시된 것과 다를 수 있다. 또한, 주어진 큐 이내 또는 큐들에 걸친 엔트리들은 우선순위가 매겨질 수 있다. 예를 들어, 판독 요청들은, 요청이 디바이스에 발행되는 순서에 영향을 미치는 높은, 중간, 또는 낮은 우선순위를 가질 수 있다. 또한, 이러한 우선순위는 다양한 조건에 따라 변동가능할 수 있다. 예를 들어, 특정 에이지에 도달한 낮은 우선순위 판독은 그의 우선순위가 증가될 수 있다. 수많은 이러한 우선순위 스킴 및 기법이 당업자에게 알려져 있다. 이러한 모든 접근법이 고려되고 여기에 설명된 시스템 및 방법과 관련하여 사용될 수 있다.
이제, 도 8을 참조하면, 도 7에 도시된 바와 같은 상태 테이블에 대한 하나의 실시예를 도시하는 일반화된 블록 다이어그램이 도시된다. 하나의 실시예에서, 이러한 테이블은, 주어진 저장 디바이스에 대한 상태, 에러, 마모 레벨 정보, 및 다른 정보에 대응하는 데이터를 포함할 수 있다. 대응하는 I/O 스케줄러는, I/O 스케줄러가 저장 디바이스들로의 I/O 요청들을 더 잘 스케줄링하도록 허용할 수 있는, 이러한 정보에 액세스할 수 있다. 하나의 실시예에서, 정보는, 디바이스 에이지(802), 에러 레이트(804), 디바이스(806)에서 검출된 에러의 총 수, 회복가능한 에러의 수(808), 회복불가능한 에러의 수(810), 디바이스(812)의 액세스 레이트, 저장된 데이터의 에이지(814), 대응하는 캐시 크기(816), 대응하는 캐시 플러시 유휴 시간(818), 할당 공간들에 대한 하나 이상의 할당 상태(820-822), 동시성 레벨(824), 및 다양한 동작들에 대한 예상 시간(들)(826) 중 적어도 하나 이상을 포함할 수 있다. 할당 상태는 가득 찬(filled), 텅 빈(empty), 에러 등을 포함할 수 있다. 주어진 디바이스의 동시성 레벨(concurrency level)은 동시에 다수의 동작을 처리하는 디바이스의 능력에 관한 정보를 포함할 수 있다. 예를 들어, 디바이스가 4개의 플래시 칩을 가지고 있고 각 하나가 한 번에 하나씩 전송할 수 있는 경우, 디바이스는 4개의 병렬 동작까지 할 수 있다. 특정한 동작들이 병렬로 수행될 수 있는지 여부는 데이터가 디바이스에 어떻게 레이아웃 되는지에 따라 달라질 수 있다. 예를 들어, 디바이스의 내측에 데이터가 레이아웃되고, 요청에 의해 액세스된 데이터는 모두 하나의 칩 상에 있는 경우에, 그 데이터에 대한 동작들은 다른 칩들 상의 데이터에 액세스하려는 요청들과 병렬로 진행할 수 있다. 그러나, 요청에 의해 액세스된 데이터가 다수의 칩에 걸쳐 스트라이프되는 경우에, 요청들은 서로 방해할 수 있다. 그 결과, 디바이스는 최대 N개의 병렬/동시 동작들(예컨대, 디바이스가 4개의 칩을 갖는 것으로서 설명된 상기에서는 4)을 할 수 있다. 대안적으로, 동시성의 최대 레벨은 관여된 동작들의 유형에 기초할 수 있다. 임의의 이벤트에서, 동시성의 레벨 N을 표시하는 저장된 정보, 및 보류중인 트랜잭션의 수 M은 동작들을 스케줄링할 때 스케줄러에 의해 고려될 수 있다.
이제, 도 9를 참조하면, 데이터 저장소 서브시스템에서 예측되지 않은 가변적인 I/O 응답 시간을 줄이기 위해 I/O 스케줄링을 조정하기 위한 방법(900)에 대한 또 다른 실시예가 도시된다. 위에서 설명한 네트워크 아키텍처(100) 및 데이터 저장소 어레이(120a-120b)에 내장된 컴포넌트들은 일반적으로 방법(900)에 따라 동작할 수 있다. 논의를 목적으로, 이 실시예에서 단계들은 순차적 순서로 도시된다. 하지만, 일부 단계들은 도시된 것과는 다른 순서로 발생할 수 있고, 일부 단계들은 동시에 수행될 수 있고, 일부 단계들은 다른 단계들과 조합될 수 있고, 일부 단계들은 또 다른 실시예에서는 없을 수 있다.
블록 902에서, I/O 스케줄러는 저장 디바이스의 각 하나의 거동을 모니터링할 수 있다. 조건부 블록(904-908)은 방법(300)의 조건부 단계(306)에 관하여 위에서 설명된 바와 같이 I/O 성능에 영향을 미칠 수 있는 주어진 디바이스의 특성을 검출하는 것에 대한 하나의 실시예를 도시한다. 하나의 실시예에서, I/O 스케줄러가, 주어진 디바이스가 주어진 유휴 시간을 초과한다는 것을 검출하거나(조건부 블록 904), 대응하는 캐시가 점유 임계치(occupancy threshold)를 초과한다는 것을 검출하거나(조건부 블록 906), 캐시된 데이터가 데이터 에이지 임계치를 초과한다는 것을 검출(조건부 블록 908)하는 경우, 블록 910에서, I/O 스케줄러는 주어진 저장 디바이스에 강제(프로액티브) 동작(force(proactive) operation)을 발행할 수 있다. 이러한 경우에, 스케줄러는 내부 캐시 플러시가 곧 그리고 예측할 수 없는 시간에 발생할 것으로 예측할 수 있다. 이러한 이벤트의 발생을 피하기 위해, I/O 스케줄러는 이벤트를 방지(avert)하기 위해 동작을 선행하여 스케줄링한다.
위에 설명한 바와 같은 이벤트의 방지(aversion)는 이벤트가 발생하지 않는다는 것, 또는 예측되지 않거나 예상치 못한 시간에 발생하지 않는다는 것을 의미할 수 있다는 것에 주목한다. 다시 말해, 스케줄러는 일반적으로, 주어진 이벤트들이 스케줄러의 타이밍에 따라 발생하고 그 외에는 발생하지 않는 것을 선호한다. 이런 의미에서, 스케줄러가 이벤트를 스케줄링했기 때문에 발생하는 긴 레이턴시 이벤트가 예상치 않게 발생하는 이벤트보다 낫다. 스케줄링 논리(620) 내의 타이머 및 카운터가 모니터(610)와 조합하여 사용되어 적어도 이러한 검출들을 수행할 수 있다. 주어진 저장 디바이스에 발행된 강제 동작의 예로는 캐시 플러시를 포함할 수 있다. 강제 동작의 또 다른 예로는 소거 요청을 포함할 수 있다. 강제 동작은, 스케줄링의 일부로서, I/O 스케줄러로부터, 대응하는 디바이스 유닛(600) 내에 있는 디바이스 큐(710)에서 대응하는 큐로 전송될 수 있다.
이제, 도 10을 참조하면, 공유된 데이터 저장소에서 비교적 낮은 레이턴시를 갖는 판독 동작들을 유지하기 위한 방법(1000)에 대한 하나의 실시예가 도시된다. 위에서 설명한 네트워크 아키텍처(100) 및 데이터 저장소 어레이(120a-120b)에 내장된 컴포넌트들은 일반적으로 방법(1000)에 따라 동작할 수 있다. 논의를 목적으로, 이 실시예에서 단계들은 순차적 순서로 도시된다. 하지만, 일부 단계들은 도시된 것과는 다른 순서로 발생할 수 있고, 일부 단계들은 동시에 수행될 수 있고, 일부 단계들은 다른 단계들과 조합될 수 있고, 일부 단계들은 또 다른 실시예에서는 없을 수 있다.
블록 1002에서, 주어진 디바이스 그룹(173) 내에서 사용될 저장소 서브시스템에 대한 RAID 아키텍처에서의 리던던시의 양이 결정될 수 있다. 예를 들어, 4+2 RAID 그룹에 대해, 저장 디바이스들 중 2가 사용되어, 패리티 정보와 같은, ECC(erasure correcting code) 정보를 저장할 수 있다. 이 정보는 재구성 판독 요청의 일부로 사용될 수 있다. 하나의 실시예에서, 재구성 판독 요청은, 다수의 저장 디바이스가 가변적인 I/O 응답 시간을 보이는 것으로 검출되는 동안 디바이스 그룹의 성능을 개선하기 위해 일반적인 I/O 스케줄링 동안 사용될 수 있다. 블록 1004에서, 디바이스 그룹 내에서, 동시에 바쁠 수 있거나, 가변적인 응답 시간을 보일 수 있는 디바이스의 최대 수가 결정된다. 이러한 최대 수는 타겟 수(Target number)로 지칭될 수 있다. 하나의 실시예에서, 저장 디바이스는 기록 요청, 소거 요청, 또는 캐시 플러시의 실행으로 인해 가변적인 응답 시간을 보일 수 있는 SSD이다. 하나의 실시예에서, 재구성 판독이 계속 수행될 수 있는 타겟 수가 선택된다.
하나의 실시예에서, I/O 스케줄러는 재구성 판독이 더 이상 효율적이지 않은 레벨로 타겟 수를 높이는 것을 보장하는 조건을 검출할 수 있다. 예를 들어, 주어진 디바이스에 대해 보류중인 기록 요청의 수가 대기 임계치(waiting threshold)에 도달할 수 있다(즉, 기록 요청들이 상당한 시간 기간 동안 보류중이었고 그들은 더 이상 대기하지 않을 것으로 결정된다). 대안적으로, 위에 논의된 바와 같은 나중 발행을 위해 축적될 수 없는 비교적 높은-우선순위를 갖는 소정 수의 기록 요청이 검출될 수 있다. I/O 스케줄러가 그러한 조건을 검출하는 경우(조건부 블록 1006), 블록 1008에서, I/O 스케줄러는 하나 이상의 검출된 조건에 기초하여 타겟을 증가 또는 감소할 수 있다. 예를 들어, I/O 스케줄러는, 적절한 수의 높은-우선순위의 기록 요청이 보류중이거나, 일부 다른 조건이 발생하는 경우에, 타겟이 지원된 리던던시의 양을 초과하는 것을 허용할 수 있다. 블록 1010에서, I/O 스케줄러는, 디바이스 그룹 내에서 가변적인 I/O 응답 시간을 보이는 N 개의 저장 디바이스를 결정할 수 있다. N이 타겟보다 큰 경우(조건부 블록 1012), 블록 1014에서, 저장 디바이스는 N을 줄이기 위한 방식으로 스케줄링될 수 있다. 그렇지 않으면, 블록 1016에서, I/O 스케줄러는 성능을 개선하기 위한 방식으로 요청들을 스케줄링할 수 있다. 예를 들어, I/O 스케줄러는 아래에 더 설명된 바와 같이 재구성 판독 요청을 능력을 이용할 수 있다.
이제, 도 11을 참조하면, 가변적인 I/O 응답 시간을 보이는 저장 디바이스의 수를 감소시키기 위한 방법(1100)에 대한 하나의 실시예가 도시된다. 이 실시예에서 단계들은 순차적 순서로 도시된다. 하지만, 일부 단계들은 도시된 것과는 다른 순서로 발생할 수 있고, 일부 단계들은 동시에 수행될 수 있고, 일부 단계들은 다른 단계들과 조합될 수 있고, 일부 단계들은 또 다른 실시예에서는 없을 수 있다.
블록 1102에서, I/O 스케줄러는 예측되지 않은 시간에 가변적인 응답 시간을 야기하는 높은 레이턴시 동작들을 실행하는 저장소 서브시스템 내의 저장 디바이스의 수 N을 줄이도록 결정할 수 있다. 블록 1104에서, I/O 스케줄러는 높은 레이턴시 동작들을 실행하는 주어진 디바이스를 선택할 수 있다. 블록 1106에서, I/O 스케줄러는 주어진 디바이스에서 높은 레이턴시 동작들의 실행을 중단하고 N을 감소시킬 수 있다. 예를 들어, I/O 스케줄러는 주어진 저장 디바이스에 기록 요청 및 소거 요청을 발행하는 것을 중지할 수 있다. 또한, 대응하는 I/O 스케줄러는 발행된 기록 요청 및 소거 요청의 실행을 중단할 수 있다. 블록 1108에서, I/O 스케줄러는, 판독 요청과 같은, 주어진 디바이스에서의 낮은-레이턴시 동작들의 실행을 개시할 수 있다. 이러한 판독 요청들은 재구성 판독 요청들을 포함할 수 있다. 이러한 방식으로, 디바이스는 긴 레이턴시 응답 상태를 떠나고 N이 줄어든다.
이제, 도 12를 참조하면, 공유된 데이터 저장소에서 효율적인 레이턴시들을 갖는 판독 동작들을 유지하기 위한 방법에 대한 하나의 실시예가 도시된다. 위에서 설명한 네트워크 아키텍처(100) 및 데이터 저장소 어레이(120a-120b)에 내장된 컴포넌트들은 일반적으로 상기 방법에 따라 동작할 수 있다. 논의를 목적으로, 이 실시예에서 단계들은 순차적 순서로 도시된다. 하지만, 일부 단계들은 도시된 것과는 다른 순서로 발생할 수 있고, 일부 단계들은 동시에 수행될 수 있고, 일부 단계들은 다른 단계들과 조합될 수 있고, 일부 단계들은 또 다른 실시예에서는 없을 수 있다.
도 12의 방법은 방법(1000)에서 단계(1016)를 수행하기 위해 취해진 단계들에 대한 하나의 실시예를 나타낼 수 있다. 블록 1201에서, I/O 스케줄러는 가변적인 응답 시간 거동을 보이는 제1 디바이스를 겨냥하는 원래의 판독 요청을 수신한다. 제1 디바이스는 특정한 스케줄링된 동작(즉, 알려진 이유)의 수신으로 인해 또는 일부 알려지지 않은 이유로 인해 가변적인 응답 시간을 보일 수 있다. 다양한 실시예에서, 가변적인 응답 시간은 주어진 동작에 대해 예상된 레이턴시에 적어도 부분적으로 기초하여 결정될 수 있다는 것이 고려된다. 예를 들어, 디바이스의 특성 및/또는 동작의 최근 이력에 기초하여, 주어진 판독에 대한 응답은 주어진 시간 기간 내에 발생하는 것으로 예상될 수 있다. 예를 들어, 평균 응답 레이턴시는 허용가능한 응답 레이턴시의 범위를 반영하기 위해 결정된 델타에 의해 디바이스에 대해 결정될 수 있다. 이러한 델타는 트랜잭션의 99%, 또는 임의의 다른 적절한 수의 트랜잭션을 처리하도록 선택될 수 있다. 응답이 예상된 시간 기간 내에 수신되지 않는 경우에, 재구성 판독의 개시가 트리거될 수 있다.
일반적으로 말해서, 재구성 판독이 모방될지 아닐지 여부는, 재구성 판독을 수행하는 것과 관련된 비용과 재구성 판독의 결과를 획득하는 (잠재적) 이득을 비교하는 비용 이득 분석에 기초할 수 있다. 예를 들어, 주어진 디바이스에서 원래의 판독 요청에 대한 응답이 주어진 시간 기간 내에 수신되지 않는 경우에, 디바이스는, 결과적으로 개시될 재구성 판독의 레이턴시를 초과하는 레이턴시를 야기할 동작을 수행중이라는 것이 예측될 수 있다. 따라서, 재구성 판독이 개시될 수 있다. 이러한 액션은 (예를 들어) 주어진 레벨의 판독 서비스 성능을 유지하기 위해 취해질 수 있다. 재구성 판독을 개시할지 여부를 결정할 때, 이를테면, 현재 부하, 수신되는 요청의 유형, 요청의 우선순위, 시스템에서 다른 디바이스의 상태, 도 7 및 8에서 설명된 바와 같은 다양한 특성 등과 같은 다른 팩터들이 마찬가지로 고려될 수 있다는 것에 주목한다. 또한, 원래의 판독에 대한 비교적 긴 응답 레이턴시로 인해 재구성 판독이 개시될 수 있는 동안, 원래의 판독 요청은 사실상 완료될 것으로 예상된다는 것에 주목한다. 사실상, 원래의 판독 및 재구성 판독 모두가 성공적으로 완료되어 결과를 제공할 수 있다. 그 결과, 원래의 요청이 서비스되기 위해 재구성 판독이 요구되지 않는다. 이는 레이턴시와는 달리 트랜잭션이 성공적으로 완료되지 않을 것이다(또는 할 수 없을 것이다)라는 것을 표시하는 에러의 일부 표시 및 레이턴시를 검출하는 것과 같은, 에러 조건으로 인한 것이다. 예를 들어, 주어진 저장소 위치를 판독하는 것에 대한 무능력으로 인한 디바이스 타임아웃은 완료될 것으로 예상되지 않은 응답을 나타낸다. 이러한 경우에, 요청을 서비스하기 위해 재구성 판독이 요구될 수 있다. 따라서, 다양한 실시예에서, 시스템은 주어진 디바이스에 대해 적어도 두 개의 타임아웃 조건을 효율적으로 포함할 수 있다. 제1 타임아웃은, 반드시 요구되지 않더라도 재구성 판독이 개시될 수 있는 그 이후의 시간 기간에 대응한다. 이러한 방식으로, 재구성 판독은 논-에러(non-error) 관련 스케줄링 프로세스의 일반적인 부분으로서 스케줄링 알고리즘에 통합될 수 있다. 제1 타임아웃 이후에 발생하는, 제2 타임아웃은 에러 조건이 발생한 것으로 믿어지는 그 이후의 시간 기간을 나타낸다. 이러한 경우에, 원래의 판독이 에러를 표시하는 디바이스에 의해 서비스되지 않을 것이라는 예상으로 인해 재구성 판독이 또한 개시될 수 있다.
상기의 견지에서, I/O 스케줄러는 원래의 판독에 대응하는 재구성 판독이 개시되는지 여부를 결정할 수 있다(결정 블록 1202). 재구성 판독은 일반적으로 제1 디바이스 이외의 디바이스들에 의해 서비스된 하나 이상의 판독을 수반한다. 재구성 판독이 개시되는지 여부를 결정하는데 있어서, 많은 팩터들이 고려될 수 있다. 일반적으로 말해서, I/O 스케줄러는 제1 디바이스에 의해 원래의 판독을 서비스하고자 하는 시도 또는 재구성 판독을 발행함으로써 원래의 판독을 서비스하고자 하는 시도 중 어느 것이 "더 나은지(better)" 여부를 결정하기 위해 비용/이득 분석에 참여한다. 위에서 논의된 바와 같이, 재구성 판독을 개시할지 여부를 결정할 때 다수의 팩터가 고려될 수 있다. 주어진 상황에서 "더 나은(better)" 것은 달라질 수 있고, 프로그램가능할 수 있고, 동적으로 결정될 수 있다. 예를 들어, 알고리즘은 항상 더 빠른 판독 응답 시간을 선호하는 것일 수 있다. 이러한 경우에, 재구성 판독의 서비스가 원래의 디바이스에 의한 원래의 판독의 서비스에 앞서 완료될 수 있는지(can)(될 수도 있는지(may))에 대한 결정이 이루어질 수 있다. 대안적으로, 알고리즘은 감소된 시스템 부하가 주어진 시간에 선호된다고 결정할 수 있다. 이러한 경우에, I/O 스케줄러는 - 재구성 판독이 원래의 판독보다 더 빨리 완료될 수 있더라도 - 그의 추가의 오버헤드를 갖는 재구성 판독을 개시하지 않도록 선택할 수 있다. 또한, 속도 대 오버헤드의 보다 섬세한 균형이 이러한 결정에 사용될 수 있다. 다양한 실시예들에서, 알고리즘은 초기 가중(initial weighting)으로 프로그램가능할 수 있다(예컨대, 항상 부하에 관계없이 속도를 선호). 이러한 가중은 상수일 수도 있고, 다양한 조건에 따라 동적으로 달라지도록 프로그램가능할 수 있다. 예를 들어, 조건은 하루의 시간, 수신된 I/O 요청의 레이트, 수신된 요청의 우선순위, 특정한 태스크가 검출되는지 여부(예컨대, 백업 동작이 현재 수행 중인지), 실패의 검출 등을 포함할 수 있다.
스케줄러가 재구성 판독을 개시하지 않도록 결정하는 경우, 판독은 원래 타겟인 디바이스에 의해 서비스된다(블록 1203). 대안적으로, 재구성 판독이 개시될 수 있다(블록 1204). 하나의 실시예에서, 재구성 판독을 서비스하기 위해 선택되는 다른 디바이스들은 비-가변적인 거동을 보이는 것으로 식별되는 것들이다. 비 가변적인 거동(즉, 더 예측가능한 거동)을 보이는 디바이스들을 선택함으로써, I/O 스케줄러는 재구성 판독을 서비스하는데 걸리는 시간을 더 잘 예측할 수 있다. 디바이스의 주어진 가변적인/비-가변적인 거동에 더해, I/O 스케줄러는 또한 각 디바이스의 다른 측면을 고려할 수 있다. 예를 들어, 재구성 판독을 서비스하기 위한 특정한 디바이스를 선택하는데 있어서, I/O 스케줄러는 또한 주어진 디바이스에 대한 아웃스탠딩 요청들의 수(예컨대, 디바이스 큐가 얼마나 채워져 있는지), 주어진 디바이스에 대해 현재 보류중인 요청들의 우선순위, 디바이스 자체의 예상된 처리 속도(예컨대, 일부 디바이스는 다른 디바이스들보다 더 오래된 또는 그렇지 않으면 본질적으로 더 느린 기술을 나타날 수 있다) 등을 평가할 수 있다. 또한, 스케줄러는, 디바이스 각각으로부터의 대응하는 결과가 거의 동일한 시간에 리턴되는 방식으로 재구성 판독을 스케줄링하기를 원할 수 있다. 그러한 경우에, 스케줄러는 그의 처리 시간이 다른 디바이스들과는 상당히 다를 것으로 예측되는 경우에 - 그것이 다른 디바이스들보다 훨씬 더 빠르더라도 - , 특정한 디바이스에 재구성 판독을 서비스하는 것을 선호하지 않을 수 있다. 감안해야 할 수많은 그러한 팩터들 및 조건들이 있을 수 있고 고려된다.
하나의 실시예에서, 재구성 판독 요청은 원래의 판독 요청의 우선순위 레벨을 물려받을 수 있다. 다른 실시예들에서, 재구성 판독 요청은 원래의 판독 요청과 다른 우선순위를 가질 수 있다. 대응하는 재구성 판독 요청을 수신하는 선택된 제2(다른) 디바이스가 지금 가변적인 응답 시간 거동을 보이고 있고(조건부 블록 1205), 이러한 제 2디바이스는 제1 디바이스가 비-가변적이 된 것으로 예측된 이후까지 계속 가변적인 것으로 예측된다(조건부 블록 1206)는 것을 I/O 스케줄러가 검출한 경우에, 블록 1208에서, I/O 스케줄러는 제1 디바이스에 원래의 판독 요청을 발행할 수 있다. 하나의 실시예에서, 타이머는, 가변적인 응답 시간을 보이는 저장 디바이스가 비-가변적인 응답 시간을 다시 제공할 수 있을 때를 예측하는 데 사용될 수 있다. 방법(1200)의 제어 흐름은 블록 C를 통해 블록 1208로부터 조건부 블록 1212로 이동한다. 제2 디바이스가 제1 디바이스보다 더 오래 가변적으로 유지되는 것으로 예측되지 않는 경우(조건부 블록 1206)에, 방법(1200)의 제어 흐름은 블록 1210으로 이동한다. 블록 1210에서, 판독 요청은 발행된 재구성 판독 요청에 의해 서비스된다.
주어진 가변적인 디바이스가 비-가변적이 되는 것을 I/O 스케줄러가 검출한 경우(조건부 블록 1212)에, 블록 1214에서, I/O 스케줄러는 주어진 디바이스로 원래의 판독 요청을 발행한다. I/O 스케줄러는 주어진 디바이스를 비-가변적인 것으로 지정하고 N(가변적인 I/O 응답 시간을 제공하는 것으로 검출된 저장 디바이스의 수)을 감소시킬 수 있다. 원래의 판독 요청이 대안적인 재구성 판독 요청들 이전에 끝나는 경우에(조건부 블록 1216), 블록 1218에서, I/O 스케줄러는 원래의 판독 요청으로 판독 요청을 서비스한다. 다양한 실시예들에서, 스케줄러는 재건 판독 요청들(rebuild read requests)을 제거할 수 있다. 대안적으로, 재구성 판독 요청이 완료될 수 있고, 그들의 데이터는 단순히 폐기될 수 있다. 그렇지 않으면, 블록 1220에서, I/O 스케줄러는 재구성 판독 요청으로 판독 요청을 서비스하고 원래의 판독 요청을 제거(또는 그의 리턴된 데이터를 폐기)할 수 있다.
위에서 설명한 실시예는 소프트웨어를 포함할 수 있다는 것에 주목한다. 이러한 실시예에서, 방법 및/또는 메커니즘을 구현하는 프로그램 명령어들은 컴퓨터 판독가능한 매체에 전달되거나 저장될 수 있다. 프로그램 명령어들을 저장하도록 구성되는 다양한 유형의 미디어가 사용가능하고, 하드 디스크, 플로피 디스크, CD-ROM, DVD, 플래시 메모리, 프로그램가능한 ROM(PROM), 랜덤 액세스 메모리(RAM) 및 휘발성 또는 비-휘발성 저장을 위한 다양한 다른 형태를 포함한다.
다양한 실시예들에서, 여기에 설명된 방법 및 메커니즘 중 하나 이상 부분은 클라우드-컴퓨팅 환경의 일부를 형성할 수 있다. 이러한 실시예에서, 자원은 하나 이상의 다양한 모델에 따른 서비스로서 인터넷을 통해 제공될 수 있다. 이러한 모델은 IaaS(Infrastructure as a Service), PaaS(Platform as a Service), 및 SaaS(Software as a Service)를 포함할 수 있다. IaaS에서, 컴퓨터 인프라스트럭처는 서비스로서 배달된다. 이러한 경우에, 컴퓨팅 장비는 일반적으로 서비스 제공자에 의해 소유되고 동작된다. PaaS 모델에서, 소프트웨어 솔루션을 개발하기 위해 개발자가 사용하는 소프트웨어 툴 및 기본적인 장비가 서비스로서 제공될 수 있고 서비스 제공자에 의해 호스트될 수 있다. SaaS는 일반적으로 주문형 서비스로서 서비스 제공자 라이센싱 소프트웨어를 포함한다. 서비스 제공자는 소프트웨어를 호스트하거나 주어진 시간 기간 동안 고객에게 소프트웨어를 배포할 수 있다. 위의 모델의 수많은 조합이 가능하며 고려된다. 또한, 위의 설명은 네트워크화된 저장소 및 제어기에 초점을 맞추고 있는 한편, 위에서 설명된 방법 및 메커니즘은 또한 직접 부착된 저장소, 호스트 운영 체제 및 그 외의 것을 갖는 시스템에 적용될 수 있다.
위의 실시예들이 상당히 자세히 설명되었지만, 상기 개시가 완전히 인정되면, 수많은 변형 및 수정이 당업자에게 명백해지게 될 것이다. 다음과 같은 청구항들은 이러한 변형 및 수정 모두를 수용하는 것으로 해석되도록 의도된다.
Claims (20)
- 컴퓨터 시스템으로서,
데이터를 저장하도록 구성된 복수의 저장 디바이스를 포함하는 데이터 저장 매체; 및
상기 데이터 저장 매체에 연결된 데이터 저장소 제어기
를 포함하고,
상기 데이터 저장소 제어기는,
상기 데이터 저장 매체를 타겟으로 한 요청들을 수신하고 - 상기 요청들은 제1 유형의 동작 및 제2 유형의 동작을 포함함 -,
상기 복수의 저장 디바이스에 의한 즉각 처리를 위해 상기 제1 유형의 요청들을 스케줄링하고,
상기 복수의 저장 디바이스에 의한 나중 처리를 위해 상기 제2 유형의 요청들을 큐잉하도록
구성되는 컴퓨터 시스템. - 제1항에 있어서, 상기 제1 유형의 동작들은 비교적 낮은 예상 레이턴시를 갖는 동작들에 대응하고, 상기 제2 유형의 동작들은 비교적 높은 예상 레이턴시를 갖는 동작들에 대응하는 컴퓨터 시스템.
- 제2항에 있어서, 상기 제1 유형의 동작들은 판독 요청들에 대응하고, 상기 제2 유형의 동작들은 기록 요청들, 캐시 플러시들(cache flushes), 또는 트림 동작들(trim operations)에 대응하는 컴퓨터 시스템.
- 제1항에 있어서, 상기 복수의 저장 디바이스는 고체 저장 디바이스들이고, 상기 고체 저장 디바이스들 각각은 비교적 낮은 레이턴시를 갖는 판독 요청들을 처리하고, 비교적 높은 레이턴시를 갖는 기록 요청들을 처리하는 컴퓨터 시스템.
- 제1항에 있어서, 상기 제2 유형의 동작에 대응하는 복수의 요청의 큐잉에 후속하여, 상기 저장소 제어기는 상기 제1 유형의 동작에 대응하는 요청들의 처리를 중지하고 상기 제2 유형의 동작에 대응하는 요청들만을 처리하도록 구성되는 컴퓨터 시스템.
- 제5항에 있어서, 상기 제2 유형의 동작에 대응하는 상기 복수의 요청은 기록 요청들에 대응하고, 상기 저장소 제어기는 상기 기록 요청들을 뒤따르도록 주어진 디바이스에 대한 더미 판독(dummy read)을 자동으로 스케줄링하도록 구성되는 컴퓨터 시스템.
- 제5항에 있어서, 상기 저장소 제어기는, 상기 복수의 디바이스 중 다른 디바이스가 비교적 긴 응답 레이턴시를 나타내고 있다고 검출하는 것에 응답하여, 상기 제2 유형의 동작에 대응하는 요청들의 처리를 중단하도록 구성되는 컴퓨터 시스템.
- 제2항에 있어서, 상기 제2 유형의 동작에 대응하는 상기 복수의 요청은 기록 요청들에 대응하며, 상기 저장소 제어기는 처리를 위해 복수의 개별 데이터 유닛(discrete units of data)으로서 상기 기록 요청들을 스트리밍하도록 구성되고, 상기 저장소 제어기는 상기 유닛들 중 임의의 유닛 뒤에 상기 스트리밍을 중지할 수 있는 컴퓨터 시스템.
- 제1항에 있어서, 상기 저장소 제어기는, 주어진 조건의 검출에 응답하여, 상기 제1 유형에 대응하는 요청들의 처리를 즉시 중지하고, 상기 제2 유형에 대응하는 큐잉된 요청들의 처리를 시작하도록 구성되는 컴퓨터 시스템.
- 제9항에 있어서, 상기 조건은, 특정 개수의 상기 제2 유형의 요청들이 큐잉된 것, 상기 제2 유형의 요청들이 처리된 이후로 소정 기간이 경과된 것, 및 주어진 기간 동안 어떠한 새로운 요청들도 수신되지 않은 것 중 적어도 하나를 포함하는 컴퓨터 시스템.
- 컴퓨팅 시스템에서 이용하기 위한 방법으로서,
데이터를 저장하도록 구성된 복수의 저장 디바이스를 포함하는 데이터 저장 매체를 타겟으로 한 요청들을 수신하는 단계 - 상기 요청들은 제1 유형의 동작 및 제2 유형의 동작을 포함함 -;
상기 복수의 저장 디바이스에 의한 즉각 처리를 위해 상기 제1 유형의 요청들을 스케줄링하는 단계; 및
상기 복수의 저장 디바이스에 의한 나중 처리를 위해 상기 제2 유형의 요청들을 큐잉하는 단계
를 포함하는 방법. - 제11항에 있어서, 상기 제1 유형의 동작들은 비교적 낮은 예상 레이턴시를 갖는 동작들에 대응하고, 상기 제2 유형의 동작들은 비교적 높은 예상 레이턴시를 갖는 동작들에 대응하는 방법.
- 제12항에 있어서, 상기 제1 유형의 동작들은 판독 요청들에 대응하고, 상기 제2 유형의 동작들은 기록 요청들, 캐시 플러시들, 또는 트림 동작들에 대응하는 방법.
- 제11항에 있어서, 상기 복수의 저장 디바이스는 고체 저장 디바이스들이고, 상기 고체 저장 디바이스들 각각은 비교적 낮은 레이턴시를 갖는 판독 요청들을 처리하고, 비교적 높은 레이턴시를 갖는 기록 요청들을 처리하는 방법.
- 제11항에 있어서, 상기 제2 유형의 동작에 대응하는 복수의 요청의 큐잉에 후속하여, 상기 방법은, 상기 제1 유형의 동작에 대응하는 요청들의 처리를 중지하고 상기 제2 유형의 동작에 대응하는 요청들만을 처리하는 단계를 포함하는 방법.
- 제15항에 있어서, 상기 제2 유형의 동작에 대응하는 상기 복수의 요청은 기록 요청들에 대응하고, 상기 방법은, 상기 기록 요청들을 뒤따르도록 주어진 디바이스에 대한 더미 판독을 자동으로 스케줄링하는 단계를 포함하는 방법.
- 제15항에 있어서, 상기 방법은, 상기 복수의 디바이스 중 다른 디바이스가 비교적 긴 응답 레이턴시를 나탸내고 있다고 검출하는 것에 응답하여, 상기 제2 유형의 동작에 대응하는 요청들의 처리를 중단하는 단계를 포함하는 방법.
- 제12항에 있어서, 상기 제2 유형의 동작에 대응하는 상기 복수의 요청은 기록 요청들에 대응하고, 상기 방법은, 처리를 위해 복수의 개별 데이터 유닛으로서 상기 기록 요청들을 스트리밍하는 단계를 포함하고, 상기 방법은 상기 유닛들 중 임의의 것 뒤에 상기 스트리밍을 중지할 수 있는 방법.
- 프로그램 명령어들을 포함하는 컴퓨터 판독가능한 저장 매체로서,
처리 디바이스에 의해 실행될 때, 상기 프로그램 명령어들은,
데이터를 저장하도록 구성된 복수의 저장 디바이스를 포함하는 데이터 저장 매체를 타겟으로 한 요청들을 수신하고 - 상기 요청들은 제1 유형의 동작 및 제2 유형의 동작을 포함함 -;
상기 복수의 저장 디바이스에 의한 즉각 처리를 위해 상기 제1 유형의 요청들을 스케줄링하고;
상기 복수의 저장 디바이스에 의한 나중 처리를 위해 상기 제2 유형의 요청들을 큐잉하도록
동작가능한 컴퓨터 판독가능한 저장 매체. - 제19항에 있어서, 상기 제1 유형의 동작들은 비교적 낮은 예상 레이턴시를 갖는 동작들에 대응하고, 상기 제2 유형의 동작들은 비교적 높은 레이턴시를 갖는 동작들에 대응하는 컴퓨터 판독가능한 저장 매체.
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 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140045286A true KR20140045286A (ko) | 2014-04-16 |
KR101862892B1 KR101862892B1 (ko) | 2018-05-30 |
Family
ID=44759769
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137009441A KR101862892B1 (ko) | 2010-09-15 | 2011-09-15 | 저장소 환경에서의 i/o 기록들의 스케줄링 |
Country Status (6)
Country | Link |
---|---|
US (5) | US8468318B2 (ko) |
EP (2) | EP3043255B1 (ko) |
JP (2) | JP5937598B2 (ko) |
KR (1) | KR101862892B1 (ko) |
CN (1) | CN103370685B (ko) |
WO (1) | WO2012037344A1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101579941B1 (ko) * | 2014-09-03 | 2015-12-23 | 서울대학교 산학협력단 | 가상머신 i/o 관리 방법 및 장치 |
WO2018016659A1 (ko) * | 2016-07-18 | 2018-01-25 | 주식회사 파두 | 플래시 스토리지 대역폭의 비례 지분 스케줄링을 위한 방법 및 시스템 |
Families Citing this family (221)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11275509B1 (en) | 2010-09-15 | 2022-03-15 | Pure Storage, Inc. | Intelligently sizing high latency I/O requests in a storage environment |
US8732426B2 (en) | 2010-09-15 | 2014-05-20 | Pure Storage, Inc. | Scheduling of reactive I/O 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 |
US12008266B2 (en) | 2010-09-15 | 2024-06-11 | Pure Storage, Inc. | Efficient read by reconstruction |
US8589625B2 (en) | 2010-09-15 | 2013-11-19 | Pure Storage, Inc. | Scheduling of reconstructive I/O read operations in a storage environment |
US11614893B2 (en) | 2010-09-15 | 2023-03-28 | Pure Storage, Inc. | Optimizing storage device access based on latency |
US8589655B2 (en) | 2010-09-15 | 2013-11-19 | Pure Storage, Inc. | Scheduling of I/O in an SSD environment |
US8775868B2 (en) | 2010-09-28 | 2014-07-08 | Pure Storage, Inc. | Adaptive RAID for an SSD environment |
US9244769B2 (en) | 2010-09-28 | 2016-01-26 | Pure Storage, Inc. | Offset protection data in a RAID array |
US9606863B2 (en) * | 2010-10-25 | 2017-03-28 | SMART High Reliability Solutions, LLC | Fabric-based solid state drive architecture |
US9009391B2 (en) * | 2010-10-25 | 2015-04-14 | Fastor Systems, Inc. | Solid state drive architecture |
JP2012234363A (ja) * | 2011-04-28 | 2012-11-29 | Toshiba Corp | メモリシステム |
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 |
US10623386B1 (en) | 2012-09-26 | 2020-04-14 | Pure Storage, Inc. | Secret sharing 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 |
US11032259B1 (en) | 2012-09-26 | 2021-06-08 | Pure Storage, Inc. | 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 |
US11768623B2 (en) | 2013-01-10 | 2023-09-26 | Pure Storage, Inc. | Optimizing generalized transfers between storage systems |
US9063967B2 (en) | 2013-01-10 | 2015-06-23 | Pure Storage, Inc. | Performing copies in a storage system |
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 |
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 |
US11128448B1 (en) | 2013-11-06 | 2021-09-21 | Pure Storage, Inc. | Quorum-aware secret sharing |
US9516016B2 (en) * | 2013-11-11 | 2016-12-06 | Pure Storage, Inc. | Storage array password management |
JP2015114887A (ja) * | 2013-12-12 | 2015-06-22 | 株式会社 日立産業制御ソリューションズ | 監視用レコーダーおよびデータ記録方法 |
US9208086B1 (en) | 2014-01-09 | 2015-12-08 | Pure Storage, Inc. | Using frequency domain to prioritize storage of metadata in a cache |
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 |
US10133488B2 (en) | 2014-03-17 | 2018-11-20 | Primaryio, Inc. | Apparatus and method for cache provisioning, configuration for optimal 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 |
US9218407B1 (en) | 2014-06-25 | 2015-12-22 | Pure Storage, Inc. | Replication and intermediate read-write state for mediums |
US10496556B1 (en) | 2014-06-25 | 2019-12-03 | Pure Storage, Inc. | Dynamic data protection within a flash storage system |
US10296469B1 (en) | 2014-07-24 | 2019-05-21 | Pure Storage, Inc. | Access control in a flash storage system |
CN105320466A (zh) * | 2014-07-29 | 2016-02-10 | 广明光电股份有限公司 | 固态硬盘安排操作的方法 |
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 (zh) * | 2014-08-28 | 2018-01-23 | 华为技术有限公司 | 一种存储系统的并行读写方法和装置 |
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 |
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 |
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 |
US9588842B1 (en) | 2014-12-11 | 2017-03-07 | Pure Storage, Inc. | Drive rebuild |
US9552248B2 (en) | 2014-12-11 | 2017-01-24 | Pure Storage, Inc. | Cloud alert to replica |
US9864769B2 (en) | 2014-12-12 | 2018-01-09 | Pure Storage, Inc. | Storing data utilizing repeating pattern detection |
US10545987B2 (en) | 2014-12-19 | 2020-01-28 | Pure Storage, Inc. | Replication to the cloud |
US10761772B2 (en) * | 2014-12-19 | 2020-09-01 | Toshiba Memory Corporation | Memory system including a plurality of chips and a selectively-connecting bus |
US9569357B1 (en) | 2015-01-08 | 2017-02-14 | Pure Storage, Inc. | Managing compressed data in a storage system |
US11947968B2 (en) | 2015-01-21 | 2024-04-02 | Pure Storage, Inc. | Efficient use of zone in a storage device |
US10296354B1 (en) | 2015-01-21 | 2019-05-21 | Pure Storage, Inc. | Optimized boot operations within a flash storage array |
KR102317786B1 (ko) | 2015-02-02 | 2021-10-26 | 삼성전자주식회사 | 스토리지 디바이스에서의 입출력 처리 방법 및 이를 적용하는 스토리지 디바이스 및 비휘발성 메모리 디바이스 |
US9710165B1 (en) | 2015-02-18 | 2017-07-18 | Pure Storage, Inc. | Identifying volume candidates for space reclamation |
CN106164888A (zh) * | 2015-02-26 | 2016-11-23 | 斯特拉托斯卡莱有限公司 | 用于最小化工作负荷空闲时间和工作负荷间干扰的网络和存储i/o请求的排序方案 |
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 (ko) | 2015-08-11 | 2022-05-10 | 삼성전자주식회사 | 통신 중단시 데이터 손실을 방지하도록 동작하는 스토리지 장치 |
CN111475438B (zh) * | 2015-08-12 | 2021-12-10 | 北京忆恒创源科技股份有限公司 | 提供服务质量的io请求处理方法及其装置 |
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 |
US11341136B2 (en) | 2015-09-04 | 2022-05-24 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US11269884B2 (en) | 2015-09-04 | 2022-03-08 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
KR20170028825A (ko) | 2015-09-04 | 2017-03-14 | 퓨어 스토리지, 아이앤씨. | 압축된 인덱스들을 사용한 해시 테이블들에서의 메모리 효율적인 스토리지 및 탐색 |
US9843453B2 (en) | 2015-10-23 | 2017-12-12 | Pure Storage, Inc. | Authorizing I/O commands with I/O tokens |
CN106610883B (zh) * | 2015-10-27 | 2020-09-11 | 腾讯科技(深圳)有限公司 | 一种检测方法及装置 |
WO2017141413A1 (ja) * | 2016-02-19 | 2017-08-24 | 株式会社日立製作所 | 計算機、通信ドライバ、および通信制御方法 |
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 |
US10452297B1 (en) | 2016-05-02 | 2019-10-22 | Pure Storage, Inc. | Generating and optimizing summary index levels in a deduplication storage system |
US10133503B1 (en) | 2016-05-02 | 2018-11-20 | Pure Storage, Inc. | Selecting a deduplication process based on a difference between performance metrics |
CN107491265B (zh) * | 2016-06-12 | 2021-05-25 | 杭州海康威视数字技术股份有限公司 | 分配网际协议ip磁盘的方法及装置 |
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 |
US10756816B1 (en) | 2016-10-04 | 2020-08-25 | Pure Storage, Inc. | Optimized fibre channel and non-volatile memory express access |
US10191662B2 (en) | 2016-10-04 | 2019-01-29 | Pure Storage, Inc. | Dynamic allocation of segments in a flash storage system |
KR20180041898A (ko) * | 2016-10-17 | 2018-04-25 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
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 |
US10452290B2 (en) | 2016-12-19 | 2019-10-22 | Pure Storage, Inc. | Block consolidation in a direct-mapped flash storage system |
US11550481B2 (en) | 2016-12-19 | 2023-01-10 | Pure Storage, Inc. | Efficiently writing data in a zoned drive storage system |
JP6677627B2 (ja) * | 2016-12-20 | 2020-04-08 | 株式会社ソニー・インタラクティブエンタテインメント | 情報処理装置およびメモリアクセス方法 |
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 |
US12045487B2 (en) | 2017-04-21 | 2024-07-23 | Pure Storage, Inc. | Preserving data deduplication in a multi-tenant storage system |
US10944671B2 (en) | 2017-04-27 | 2021-03-09 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
JP7221585B2 (ja) * | 2017-07-20 | 2023-02-14 | 富士通株式会社 | 情報処理装置、情報処理システム、情報処理装置制御方法及び情報処理装置制御プログラム |
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 (zh) * | 2017-09-05 | 2022-05-24 | 华为技术有限公司 | 用于传输数据处理请求的方法和装置 |
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 (ko) | 2017-09-22 | 2023-06-29 | 삼성전자주식회사 | 스토리지 장치 및 그 동작 방법 |
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 |
US11995336B2 (en) | 2018-04-25 | 2024-05-28 | Pure Storage, Inc. | Bucket views |
US11385792B2 (en) | 2018-04-27 | 2022-07-12 | Pure Storage, Inc. | High availability controller pair transitioning |
US10678433B1 (en) | 2018-04-27 | 2020-06-09 | Pure Storage, Inc. | Resource-preserving system upgrade |
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 (ja) * | 2018-08-06 | 2022-08-31 | 京セラドキュメントソリューションズ株式会社 | 処理実行システムおよび処理実行プログラム |
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 |
US10860078B2 (en) | 2018-10-25 | 2020-12-08 | Dell Products, L.P. | Managing power request during cluster operations |
US10846216B2 (en) | 2018-10-25 | 2020-11-24 | Pure Storage, Inc. | Scalable garbage collection |
US11048523B2 (en) | 2018-10-25 | 2021-06-29 | Dell Products, L.P. | Enabling software sensor power operation requests via baseboard management controller (BMC) |
US11126486B2 (en) * | 2018-10-25 | 2021-09-21 | Dell Products, L.P. | Prediction of power shutdown and outage incidents |
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 |
US11397674B1 (en) | 2019-04-03 | 2022-07-26 | Pure Storage, Inc. | Optimizing garbage collection across heterogeneous flash devices |
US11775189B2 (en) | 2019-04-03 | 2023-10-03 | Pure Storage, Inc. | Segment level heterogeneity |
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 |
US12087382B2 (en) | 2019-04-11 | 2024-09-10 | Pure Storage, Inc. | Adaptive threshold for bad flash memory blocks |
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 (ja) * | 2019-05-08 | 2020-11-12 | ファナック株式会社 | 加工制御システム及び加工システム |
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 (zh) * | 2019-08-22 | 2022-03-22 | 济南浪潮数据技术有限公司 | 一种存储设备的选取方法、装置和计算机可读存储介质 |
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 |
US11687244B2 (en) * | 2019-10-24 | 2023-06-27 | Micron Technology, Inc. | Quality of service for memory devices using weighted memory access operation types |
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 |
US11500788B2 (en) | 2019-11-22 | 2022-11-15 | Pure Storage, Inc. | Logical address based authorization of operations with respect to a storage system |
US11675898B2 (en) | 2019-11-22 | 2023-06-13 | Pure Storage, Inc. | Recovery dataset management for security threat monitoring |
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 |
US11651075B2 (en) | 2019-11-22 | 2023-05-16 | Pure Storage, Inc. | Extensible attack monitoring by 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 |
US12079333B2 (en) | 2019-11-22 | 2024-09-03 | Pure Storage, Inc. | Independent security threat detection and remediation by storage systems in a synchronous replication arrangement |
US12050683B2 (en) | 2019-11-22 | 2024-07-30 | Pure Storage, Inc. | Selective control of a data synchronization setting of a storage system based on a possible ransomware attack against the storage system |
US12050689B2 (en) | 2019-11-22 | 2024-07-30 | Pure Storage, Inc. | Host anomaly-based generation of snapshots |
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 |
US12079356B2 (en) | 2019-11-22 | 2024-09-03 | Pure Storage, Inc. | Measurement interval anomaly detection-based generation of snapshots |
US11720692B2 (en) | 2019-11-22 | 2023-08-08 | Pure Storage, Inc. | Hardware token based management of recovery datasets for a storage system |
US11615185B2 (en) | 2019-11-22 | 2023-03-28 | Pure Storage, Inc. | Multi-layer security threat detection for a storage system |
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 |
US12079502B2 (en) | 2019-11-22 | 2024-09-03 | Pure Storage, Inc. | Storage element attribute-based determination of a data protection policy for use within a storage system |
US11645162B2 (en) | 2019-11-22 | 2023-05-09 | Pure Storage, Inc. | Recovery point determination for data restoration in a storage system |
US11687418B2 (en) | 2019-11-22 | 2023-06-27 | Pure Storage, Inc. | Automatic generation of recovery plans specific to individual storage elements |
US11341236B2 (en) | 2019-11-22 | 2022-05-24 | Pure Storage, Inc. | Traffic-based detection of a security threat to a storage system |
US11941116B2 (en) | 2019-11-22 | 2024-03-26 | Pure Storage, Inc. | Ransomware-based data protection parameter modification |
US11520907B1 (en) | 2019-11-22 | 2022-12-06 | Pure Storage, Inc. | Storage system snapshot retention based on encrypted data |
US12067118B2 (en) | 2019-11-22 | 2024-08-20 | Pure Storage, Inc. | Detection of writing to a non-header portion of a file as an indicator of a possible ransomware attack against 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 (ko) | 2019-12-23 | 2021-07-01 | 삼성전자주식회사 | 컴플리션 타이밍을 관리하는 스토리지 컨트롤러, 및 이의 동작 방법 |
EP3842952B1 (en) | 2019-12-23 | 2023-05-10 | Samsung Electronics Co., Ltd. | Storage controller managing completion timing, and operating method thereof |
CN111338567B (zh) * | 2020-02-13 | 2021-09-17 | 苏州浪潮智能科技有限公司 | 一种基于Protocol Buffer的镜像缓存方法 |
KR20210115576A (ko) * | 2020-03-13 | 2021-09-27 | 에스케이하이닉스 주식회사 | 호스트 및 메모리 시스템을 포함하는 전자 시스템 |
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 (zh) * | 2020-08-27 | 2023-08-18 | 优刻得科技股份有限公司 | 一种io调度系统和调度方法以及相应的电子设备 |
US20240069807A1 (en) * | 2022-08-31 | 2024-02-29 | Micron Technology, Inc. | Managing command completion notification pacing in a memory sub-system |
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 (de) | 1993-07-15 | 1993-09-23 | Paul Hettich GmbH & Co, 32278 Kirchlengern | Rasteinrichtung fuer schubkaesten o.dgl. |
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 (ja) | 1998-12-18 | 2000-06-30 | Fujitsu Ltd | 鍵管理機能付電子データ保管装置および電子データ保管方法 |
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 (ja) | 2000-09-28 | 2002-04-12 | Nec Corp | ディスクアレイ装置、そのエラー制御方法、ならびにその制御プログラムを記録した記録媒体 |
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 |
AU2002306495A1 (en) | 2001-02-13 | 2002-08-28 | Candera, Inc. | Storage virtualization and storage management to provide higher level storage services |
US6973549B1 (en) | 2001-12-10 | 2005-12-06 | Incipient, Inc. | Locking technique for control and synchronization |
US6986015B2 (en) | 2001-12-10 | 2006-01-10 | Incipient, Inc. | Fast path caching |
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 (ja) | 2003-03-07 | 2009-08-26 | 富士通株式会社 | ストレージシステム及びそのデイスク負荷バランス制御方法 |
AU2004230005A1 (en) | 2003-04-07 | 2004-10-28 | Itracs Corporation | 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 (ja) | 2003-11-26 | 2010-03-03 | 株式会社日立製作所 | ディスクアレイ装置及びディスクアレイ装置の障害回避方法 |
US8560747B1 (en) | 2007-02-16 | 2013-10-15 | Vmware, Inc. | Associating heartbeat data with access to shared resources of a computer system |
JP4456909B2 (ja) | 2004-03-29 | 2010-04-28 | 株式会社日立製作所 | バックアップ方法、ストレージシステム及びそのプログラム |
JP2005293774A (ja) | 2004-04-02 | 2005-10-20 | Hitachi Global Storage Technologies Netherlands Bv | ディスク装置の制御方法 |
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 (ja) * | 2005-03-08 | 2012-09-19 | エイチジーエスティーネザーランドビーブイ | データ記憶装置 |
US7913300B1 (en) | 2005-04-08 | 2011-03-22 | Netapp, Inc. | Centralized role-based access control for storage servers |
US8364845B2 (en) | 2005-05-19 | 2013-01-29 | Wyse Technology Inc. | Method and system for thin client configuration |
JPWO2006123416A1 (ja) | 2005-05-19 | 2008-12-25 | 富士通株式会社 | ディスク故障復旧方法及びディスクアレイ装置 |
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 (ja) | 2005-09-21 | 2007-04-05 | Hitachi Ltd | スナップショット維持装置及び方法 |
JP4662548B2 (ja) | 2005-09-27 | 2011-03-30 | 株式会社日立製作所 | スナップショット管理装置及び方法並びにストレージシステム |
JP4927408B2 (ja) | 2006-01-25 | 2012-05-09 | 株式会社日立製作所 | 記憶システム及びそのデータ復元方法 |
JP2007199953A (ja) | 2006-01-25 | 2007-08-09 | Fujitsu Ltd | ディスクアレイ装置およびディスクアレイ制御方法 |
US7743197B2 (en) | 2006-05-11 | 2010-06-22 | Emulex Design & Manufacturing Corporation | System and method for virtualizing PCIe devices |
JP2007233903A (ja) | 2006-03-03 | 2007-09-13 | Hitachi Ltd | 記憶制御装置及び記憶制御装置のデータ回復方法 |
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 (ja) | 2006-11-27 | 2010-11-04 | 富士通株式会社 | サーバ管理プログラム、メールサーバ管理プログラム、サーバ管理システム、管理サーバおよびサーバ管理方法 |
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 |
JP4529990B2 (ja) | 2007-03-30 | 2010-08-25 | ブラザー工業株式会社 | 画像処理プログラム及び画像処理装置 |
JP4900811B2 (ja) | 2007-03-30 | 2012-03-21 | 株式会社日立製作所 | 記憶システムおよび記憶制御方法 |
US7958303B2 (en) | 2007-04-27 | 2011-06-07 | Gary Stephen Shuster | Flexible data storage system |
US8086652B1 (en) | 2007-04-27 | 2011-12-27 | Netapp, Inc. | Storage system-based hole punching for reclaiming unused space from a data container |
CN101682503A (zh) | 2007-05-30 | 2010-03-24 | 富士通株式会社 | 图像加密装置、图像解密装置、方法以及程序 |
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 (ja) * | 2007-09-26 | 2009-04-16 | Nec Corp | 情報記録再生システム,情報記録再生方法及びプログラム |
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 (ja) | 2008-07-23 | 2013-02-20 | 株式会社日立製作所 | ストレージサブシステム及びコントローラによるコマンド実行方法 |
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 (ja) * | 2008-10-29 | 2010-01-13 | 株式会社東芝 | ディスクアレイ制御装置および記憶装置 |
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 |
WO2010071655A1 (en) | 2008-12-19 | 2010-06-24 | Hewlett-Packard Development Company, L.P. | 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 (ja) | 2009-03-12 | 2012-02-08 | 株式会社東芝 | ストレージ装置及び仮想化装置 |
US7941584B2 (en) | 2009-03-26 | 2011-05-10 | Arm Limited | Data processing apparatus and method for performing hazard detection |
US8560787B2 (en) | 2009-03-30 | 2013-10-15 | International Business Machines Corporation | Incremental backup of source to target storage volume |
US8205065B2 (en) | 2009-03-30 | 2012-06-19 | Exar Corporation | System and method for data deduplication |
TWI397009B (zh) | 2009-04-30 | 2013-05-21 | Inventec Corp | 基本輸入輸出系統的資料處理裝置 |
US8180955B2 (en) | 2009-05-06 | 2012-05-15 | Via Telecom, Inc. | Computing systems and methods for managing flash memory device |
EP2302637B1 (fr) | 2009-09-21 | 2014-09-03 | STMicroelectronics (Rousset) SAS | Méthode d'écriture de données dans une mémoire non volatile, protegée contre l'arrachement |
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 (ja) | 2010-03-24 | 2012-03-07 | 株式会社東芝 | ホスト装置と連携して重複データを排除するストレージ装置、同ストレージ装置を備えたストレージシステム、及び同システムにおける重複排除方法 |
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 |
US8468318B2 (en) * | 2010-09-15 | 2013-06-18 | Pure Storage Inc. | Scheduling of I/O writes 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 |
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 |
WO2012106362A2 (en) | 2011-01-31 | 2012-08-09 | Fusion-Io, Inc. | 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 |
US8793467B2 (en) | 2011-09-30 | 2014-07-29 | Pure Storage, Inc. | Variable length encoding in a storage system |
US8806160B2 (en) | 2011-08-16 | 2014-08-12 | Pure Storage, Inc. | Mapping in a storage system |
US8527544B1 (en) | 2011-08-11 | 2013-09-03 | Pure Storage Inc. | Garbage collection in a storage system |
US8788788B2 (en) | 2011-08-11 | 2014-07-22 | Pure Storage, Inc. | Logical sector mapping in a flash storage array |
JP5768587B2 (ja) | 2011-08-17 | 2015-08-26 | 富士通株式会社 | ストレージシステム、ストレージ制御装置およびストレージ制御方法 |
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 |
US9075710B2 (en) | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
US9519647B2 (en) | 2012-04-17 | 2016-12-13 | Sandisk Technologies Llc | Data expiry in a non-volatile device |
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 |
AU2013277351A1 (en) | 2012-06-18 | 2015-01-22 | Actifio, Inc. | 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 |
US9154298B2 (en) | 2012-08-31 | 2015-10-06 | Cleversafe, Inc. | Securely storing data in a dispersed storage network |
JP5954081B2 (ja) | 2012-09-26 | 2016-07-20 | 富士通株式会社 | ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム |
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 (ja) | 2014-02-20 | 2017-11-22 | 富士通株式会社 | ストレージ制御装置,ストレージシステム及び制御プログラム |
US10169121B2 (en) | 2014-02-27 | 2019-01-01 | Commvault Systems, Inc. | Work flow management 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 KR KR1020137009441A patent/KR101862892B1/ko active IP Right Grant
- 2011-09-15 EP EP15195458.3A patent/EP3043255B1/en active Active
- 2011-09-15 JP JP2013529322A patent/JP5937598B2/ja active Active
- 2011-09-15 CN CN201180054157.7A patent/CN103370685B/zh active Active
- 2011-09-15 WO PCT/US2011/051752 patent/WO2012037344A1/en active Application Filing
- 2011-09-15 EP EP11764904.6A patent/EP2616923A1/en not_active Withdrawn
-
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/ja active Active
- 2016-07-29 US US15/224,281 patent/US9684460B1/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101579941B1 (ko) * | 2014-09-03 | 2015-12-23 | 서울대학교 산학협력단 | 가상머신 i/o 관리 방법 및 장치 |
WO2018016659A1 (ko) * | 2016-07-18 | 2018-01-25 | 주식회사 파두 | 플래시 스토리지 대역폭의 비례 지분 스케줄링을 위한 방법 및 시스템 |
Also Published As
Publication number | Publication date |
---|---|
CN103370685A (zh) | 2013-10-23 |
CN103370685B (zh) | 2016-09-14 |
US9684460B1 (en) | 2017-06-20 |
KR101862892B1 (ko) | 2018-05-30 |
JP6298098B2 (ja) | 2018-03-20 |
US9423967B2 (en) | 2016-08-23 |
US20140136808A1 (en) | 2014-05-15 |
US8468318B2 (en) | 2013-06-18 |
JP2013541766A (ja) | 2013-11-14 |
JP5937598B2 (ja) | 2016-06-22 |
US20130275710A1 (en) | 2013-10-17 |
US8645657B2 (en) | 2014-02-04 |
US9037827B2 (en) | 2015-05-19 |
WO2012037344A1 (en) | 2012-03-22 |
EP3043255B1 (en) | 2020-12-16 |
EP3043255A1 (en) | 2016-07-13 |
EP2616923A1 (en) | 2013-07-24 |
US20120066435A1 (en) | 2012-03-15 |
US20150254004A1 (en) | 2015-09-10 |
JP2016167301A (ja) | 2016-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10353630B1 (en) | Simultaneously servicing high latency operations in a storage system | |
US10228865B1 (en) | Maintaining a target number of storage devices for variable I/O response times in a storage system | |
KR101862892B1 (ko) | 저장소 환경에서의 i/o 기록들의 스케줄링 | |
KR101867635B1 (ko) | 저장소 환경에서의 재구성 i/o 판독 동작들의 스케줄링 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |