KR101867635B1 - 저장소 환경에서의 재구성 i/o 판독 동작들의 스케줄링 - Google Patents
저장소 환경에서의 재구성 i/o 판독 동작들의 스케줄링 Download PDFInfo
- Publication number
- KR101867635B1 KR101867635B1 KR1020137009442A KR20137009442A KR101867635B1 KR 101867635 B1 KR101867635 B1 KR 101867635B1 KR 1020137009442 A KR1020137009442 A KR 1020137009442A KR 20137009442 A KR20137009442 A KR 20137009442A KR 101867635 B1 KR101867635 B1 KR 101867635B1
- Authority
- KR
- South Korea
- Prior art keywords
- read
- read request
- data
- requests
- data storage
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0727—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- 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
- 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
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between 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/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
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid 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/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/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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
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)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Abstract
복수의 고체-상태 저장 디바이스들 사이에서 판독 및 기록 동작들을 효율적으로 스케줄링하기 위한 시스템 및 방법. 컴퓨터 시스템은 네트워크를 통해 서로에게 연결된 클라이언트 컴퓨터들 및 데이터 저장소 어레이들을 포함한다. 데이터 저장소 어레이는 데이터 저장을 위해 고체-상태 드라이브들 및 플래시 메모리 셀들을 이용한다. 데이터 저장소 어레이 내의 저장소 제어기는 I/O 스케줄러를 포함한다. 저장소 제어기는 데이터 저장 매체를 타겟으로 한 판독 요청들을 수신하고, 복수의 저장 디바이스 중 판독 요청에 의해 타겟이 된 데이터를 포함하는 적어도 제1 저장 디바이스를 식별하도록 구성된다. 제1 저장 디바이스가 가변적인 성능을 보일 것이라는 검출 또는 예측 중 어느 하나에 응답하여, 제어기는 복수의 저장 디바이스 중 제1 저장 디바이스 이외의 하나 이상의 디바이스로부터 데이터를 획득하도록 구성된 재구성 판독 요청을 생성하도록 구성된다.
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 저장 디바이스를 식별하도록 구성되는 저장소 제어기가 고려된다. 제1 저장 디바이스가 가변적인 성능을 보일 것이라는 검출(detecting) 또는 예측(predicting) 중 어느 하나에 응답하여 - 가변적인 성능은 비교적 높은 응답 레이턴시 또는 비교적 낮은 스루풋 중 적어도 하나를 포함함 - , 제어기는 복수의 저장 디바이스 중 제1 저장 디바이스 이외의 하나 이상의 디바이스로부터 데이터를 획득하도록 구성된 재구성 판독 요청을 생성하도록 구성된다.
이러한 및 다른 실시예들은 다음과 같은 설명 및 첨부 도면들을 고려하면 명백해지게 될 것이다.
도 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 (24)
- 컴퓨터 시스템으로서,
적어도 하나의 독립 디스크들의 리던던트 어레이(RAID, redundant arrays of independent disks) 그룹에 데이터를 저장하도록 구성된 복수의 저장 디바이스를 포함하는 데이터 저장 매체; 및
상기 데이터 저장 매체에 연결된 데이터 저장소 제어기
를 포함하고,
상기 데이터 저장소 제어기는,
상기 데이터 저장 매체를 타겟으로 한 판독 요청을 수신하고,
상기 복수의 저장 디바이스 중에서, 상기 판독 요청에 의해 타겟으로 된 데이터를 포함하는 적어도 제1 저장 디바이스를 식별하고,
상기 제1 저장 디바이스가 상기 판독 요청에 응답하기 위한 제2 시간 간격을 초과하지 않고 상기 판독 요청에 응답하기 위한 제1 시간 간격을 초과하였는지 여부에 기초하여, 상기 복수의 저장 디바이스 중 상기 제1 저장 디바이스 이외의 하나 이상의 디바이스로부터 상기 데이터를 획득하도록 구성된 재구성 판독 요청(reconstruct read request)을 생성할지를 결정하도록
구성되는 컴퓨터 시스템. - 제1항에 있어서, 상기 데이터 저장소 제어기는 I/O 요청들의 최근 이력에 적어도 부분적으로 기초하여 상기 재구성 판독 요청을 생성하도록 구성되는 컴퓨터 시스템.
- 제1항에 있어서, 상기 재구성 판독 요청은 상기 복수의 저장 디바이스 중 적어도 2개의 디바이스를 타겟으로 한 적어도 2개의 판독 요청을 포함하고, 상기 데이터 저장소 제어기는 상기 적어도 2개의 판독 요청을 스케줄링하여 그들이 동일한 시간에 완료되게 하도록 구성되는 컴퓨터 시스템.
- 제1항에 있어서, 상기 데이터 저장소 제어기는, 요구된 레벨보다 긴 레이턴시들을 갖는 레이턴시 동작들을 스케줄링하여 상기 RAID 그룹에서의 상기 복수의 디바이스 중 N보다 많지 않은 개수의 디바이스가 임의의 주어진 시간에 상기 요구된 레벨보다 긴 레이턴시들을 갖는 스케줄링된 레이턴시 동작을 수행하게 하도록 또한 구성되는 컴퓨터 시스템.
- 제4항에 있어서, 상기 레이턴시 동작들은 캐시 플러시 동작(cache flush operation), 트림 동작(trim operation), 및 소거 블록 동작(erase block operation)이나 하이버네이션(hibernation)이나 기록이나 대량 판독(large read) 중 하나 이상을 포함하는 컴퓨터 시스템.
- 제4항에 있어서, 수신되는 요청들의 레이트가 주어진 임계치를 초과한다고 검출하는 것에 응답하여, 상기 데이터 저장소 제어기는, 상기 요구된 레벨보다 긴 레이턴시들을 갖는 레이턴시 동작들을 스케줄링하여 RAID 그룹 내의 N보다 많은 개수의 디바이스가 임의의 주어진 시간에 비지 상태(busy)가 될 수 있게 하도록 구성되는 컴퓨터 시스템.
- 제6항에 있어서, 상기 요청들의 레이트가 임계치 아래에 있다고 검출하는 것에 응답하여, 상기 데이터 저장소 제어기는, 상기 요구된 레벨보다 긴 레이턴시들을 갖는 레이턴시 동작들을 스케줄링하여 상기 RAID 그룹에서의 상기 복수의 디바이스 중 N보다 많지 않은 개수의 디바이스가 임의의 주어진 시간에 스케줄링된 긴 레이턴시 동작을 수행하게 하도록 구성되는 컴퓨터 시스템.
- 제3항에 있어서, 상기 복수의 저장 디바이스 각각은 보류 중인 동작들을 저장하기 위한 큐를 포함하고, 상기 데이터 저장소 제어기는, 상기 적어도 2개의 판독 요청을 스케줄링하여, 대응하는 저장 디바이스의 큐에 동일한 큐 깊이로 또는 예측된 동일한 완료 시간을 갖는 큐 깊이로 상기 적어도 2개의 판독 요청 각각을 저장함으로써 그들이 동일한 시간에 완료되게 하도록 구성되는 컴퓨터 시스템.
- 제8항에 있어서, 상기 판독 요청은 주어진 우선순위를 갖고, 상기 데이터 저장소 제어기는 상기 주어진 우선순위와 동일한 우선순위로 상기 적어도 2개의 판독 요청 모두를 스케줄링하도록 구성되는 컴퓨터 시스템.
- 제8항에 있어서, 상기 판독 요청은 주어진 우선순위를 갖고, 상기 데이터 저장소 제어기는 서로 상이한 우선순위를 갖게 상기 적어도 2개의 판독 요청 각각을 스케줄링하도록 구성되는 컴퓨터 시스템.
- 제10항에 있어서, 상기 데이터 저장소 제어기는 상기 적어도 2개의 판독 요청의 판독의 대상이 되는 디바이스의 상태에 기초하여 상기 적어도 2개의 판독 요청 각각을 스케줄링할 우선순위를 결정하도록 구성되는 컴퓨터 시스템.
- 제11항에 있어서, 상기 상태는 대응하는 디바이스의 큐 점유 레벨(queue occupancy level), 및 대응하는 디바이스의 평균 응답 레이턴시 중 하나 이상을 포함하는 컴퓨터 시스템.
- 제3항에 있어서, 상기 데이터 저장소 제어기는 수신된 요청을 다수의 요청들로 파티셔닝하고, 상기 다수의 요청들 사이에 재구성 판독 요청을 삽입하도록 또한 구성되는 컴퓨터 시스템.
- 컴퓨팅 시스템에서 이용하기 위한 방법으로서,
적어도 하나의 독립 디스크들의 리던던트 어레이(RAID, redundant arrays of independent disks) 그룹에 데이터를 저장하도록 구성된 복수의 저장 디바이스를 포함하는 데이터 저장 매체를 타겟으로 한 판독 요청을 수신하는 단계;
상기 복수의 저장 디바이스 중에서, 상기 판독 요청에 의해 타겟으로 된 데이터를 포함하는 적어도 제1 저장 디바이스를 식별하는 단계; 및
상기 제1 저장 디바이스가 상기 판독 요청에 응답하기 위한 제2 시간 간격을 초과하지 않고 상기 판독 요청에 응답하기 위한 제1 시간 간격을 초과하였는지 여부에 기초하여, 상기 복수의 저장 디바이스 중 상기 제1 저장 디바이스 이외의 하나 이상의 디바이스로부터 상기 데이터를 획득하도록 구성된 재구성 판독 요청을 생성할지를 결정하는 단계
를 포함하는 방법. - 제14항에 있어서, I/O 요청들의 최근 이력에 적어도 부분적으로 기초하여 상기 재구성 판독 요청을 생성하는 단계를 더 포함하는 방법.
- 제14항에 있어서, 상기 재구성 판독 요청은 상기 복수의 저장 디바이스 중 적어도 2개의 디바이스를 타겟으로 한 적어도 2개의 판독 요청을 포함하고, 상기 방법은, 상기 적어도 2개의 판독 요청을 스케줄링하여, 그들이 동일한 시간에 완료되게 하는 단계를 더 포함하는 방법.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 프로그램 명령어들을 포함하는 컴퓨터 판독가능한 저장 매체로서,
처리 디바이스에 의해 실행될 때, 상기 프로그램 명령어들은,
적어도 하나의 독립 디스크들의 리던던트 어레이(RAID, redundant arrays of independent disks) 그룹에 데이터를 저장하도록 구성된 복수의 저장 디바이스를 포함하는 데이터 저장 매체를 타겟으로 한 판독 요청을 수신하고;
상기 복수의 저장 디바이스 중에서, 상기 판독 요청에 의해 타겟으로 된 데이터를 포함하는 적어도 제1 저장 디바이스를 식별하고;
상기 제1 저장 디바이스가 상기 판독 요청에 응답하기 위한 제2 시간 간격을 초과하지 않고 상기 판독 요청에 응답하기 위한 제1 시간 간격을 초과하였는지 여부에 기초하여, 상기 복수의 저장 디바이스 중 상기 제1 저장 디바이스 이외의 하나 이상의 디바이스로부터 상기 데이터를 획득하도록 구성된 재구성 판독 요청(reconstruct read request)을 생성할지를 결정하도록
동작가능한 컴퓨터 판독가능한 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/882,872 US8589625B2 (en) | 2010-09-15 | 2010-09-15 | Scheduling of reconstructive I/O read operations in a storage environment |
US12/882,872 | 2010-09-15 | ||
PCT/US2011/051710 WO2012037318A1 (en) | 2010-09-15 | 2011-09-15 | Scheduling of reconstructive i/o read operations in a storage environment |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140007333A KR20140007333A (ko) | 2014-01-17 |
KR101867635B1 true KR101867635B1 (ko) | 2018-06-15 |
Family
ID=44759768
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137009442A KR101867635B1 (ko) | 2010-09-15 | 2011-09-15 | 저장소 환경에서의 재구성 i/o 판독 동작들의 스케줄링 |
Country Status (6)
Country | Link |
---|---|
US (5) | US8589625B2 (ko) |
EP (2) | EP2616922B1 (ko) |
JP (2) | JP5956445B2 (ko) |
KR (1) | KR101867635B1 (ko) |
CN (1) | CN103370686B (ko) |
WO (1) | WO2012037318A1 (ko) |
Families Citing this family (397)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11429486B1 (en) | 2010-02-27 | 2022-08-30 | Pure Storage, Inc. | Rebuilding data via locally decodable redundancy in a vast storage network |
US20180365105A1 (en) * | 2014-06-05 | 2018-12-20 | International Business Machines Corporation | Establishing an operation execution schedule in a dispersed storage network |
US8819208B2 (en) | 2010-03-05 | 2014-08-26 | Solidfire, Inc. | Data deletion in a distributed data storage system |
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 |
US8589655B2 (en) | 2010-09-15 | 2013-11-19 | Pure Storage, Inc. | Scheduling of I/O in an SSD environment |
US11614893B2 (en) | 2010-09-15 | 2023-03-28 | Pure Storage, Inc. | Optimizing storage device access based on latency |
US8468318B2 (en) | 2010-09-15 | 2013-06-18 | Pure Storage Inc. | Scheduling of I/O writes in a storage environment |
US11275509B1 (en) | 2010-09-15 | 2022-03-15 | Pure Storage, Inc. | Intelligently sizing high latency I/O requests in a storage environment |
US8732426B2 (en) | 2010-09-15 | 2014-05-20 | Pure Storage, Inc. | Scheduling of reactive I/O operations in a storage 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 |
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 |
JP2013061847A (ja) * | 2011-09-14 | 2013-04-04 | Sony Corp | 情報処理装置および情報処理方法 |
US8707090B2 (en) * | 2011-10-19 | 2014-04-22 | Hitachi, Ltd. | Storage system |
US9054992B2 (en) | 2011-12-27 | 2015-06-09 | Solidfire, Inc. | Quality of service policy sets |
US9838269B2 (en) | 2011-12-27 | 2017-12-05 | Netapp, Inc. | Proportional quality of service based on client usage and system metrics |
US8996450B1 (en) * | 2011-12-31 | 2015-03-31 | Teradata Us, Inc. | System and method for allocating resources in a mixed SSD and HDD storage environment |
US8788658B2 (en) | 2012-02-03 | 2014-07-22 | International Business Machines Corporation | Allocation and balancing of storage resources |
US8751861B2 (en) * | 2012-02-08 | 2014-06-10 | Lsi Corporation | System and method for improved rebuild in RAID |
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 |
US8745415B2 (en) | 2012-09-26 | 2014-06-03 | Pure Storage, Inc. | Multi-drive cooperation to generate an encryption key |
US10623386B1 (en) | 2012-09-26 | 2020-04-14 | Pure Storage, Inc. | Secret sharing data protection in a storage system |
US11032259B1 (en) | 2012-09-26 | 2021-06-08 | Pure Storage, Inc. | Data protection in a storage system |
US10908835B1 (en) | 2013-01-10 | 2021-02-02 | Pure Storage, Inc. | Reversing deletion of a virtual machine |
US9589008B2 (en) | 2013-01-10 | 2017-03-07 | Pure Storage, Inc. | Deduplication of volume regions |
US11733908B2 (en) | 2013-01-10 | 2023-08-22 | Pure Storage, Inc. | Delaying deletion of a dataset |
US11768623B2 (en) | 2013-01-10 | 2023-09-26 | Pure Storage, Inc. | Optimizing generalized transfers between storage systems |
US10452284B2 (en) * | 2013-02-05 | 2019-10-22 | International Business Machines Corporation | Storage system based host computer monitoring |
US20140281301A1 (en) * | 2013-03-15 | 2014-09-18 | Silicon Graphics International Corp. | Elastic hierarchical data storage backend |
US9069819B1 (en) * | 2013-04-26 | 2015-06-30 | Symantec Corporation | Method and apparatus for reliable I/O performance anomaly detection in datacenter |
US9697063B2 (en) * | 2013-05-15 | 2017-07-04 | Amazon Technologies, Inc. | Allocating data based on hardware faults |
JP6221467B2 (ja) * | 2013-07-29 | 2017-11-01 | 株式会社リコー | 画像処理装置、制御方法 |
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 |
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 |
US9449018B1 (en) * | 2013-11-25 | 2016-09-20 | Google Inc. | File operation task optimization |
US9594781B2 (en) * | 2013-11-27 | 2017-03-14 | Sybase, Inc. | Estimation of query input/output (I/O) cost in database |
US20180081749A1 (en) * | 2013-12-04 | 2018-03-22 | International Business Machines Corporation | Performance ranking of read requests in a distributed storage network |
US9170746B2 (en) | 2014-01-07 | 2015-10-27 | Netapp, Inc. | Clustered raid assimilation management |
US9208086B1 (en) | 2014-01-09 | 2015-12-08 | Pure Storage, Inc. | Using frequency domain to prioritize storage of metadata in a cache |
US9454434B2 (en) | 2014-01-17 | 2016-09-27 | Netapp, Inc. | File system driven raid rebuild technique |
US9483349B2 (en) | 2014-01-17 | 2016-11-01 | Netapp, Inc. | Clustered raid data organization |
US9665479B2 (en) | 2014-02-11 | 2017-05-30 | Seagate Technology Llc | Managing response time |
US20150244795A1 (en) | 2014-02-21 | 2015-08-27 | Solidfire, Inc. | Data syncing in a distributed system |
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 |
US9779268B1 (en) | 2014-06-03 | 2017-10-03 | Pure Storage, Inc. | Utilizing a non-repeating identifier to encrypt data |
US10574754B1 (en) | 2014-06-04 | 2020-02-25 | Pure Storage, Inc. | Multi-chassis array with multi-level load balancing |
US9367243B1 (en) | 2014-06-04 | 2016-06-14 | Pure Storage, Inc. | Scalable non-uniform storage sizes |
US8850108B1 (en) | 2014-06-04 | 2014-09-30 | Pure Storage, Inc. | Storage cluster |
US11068363B1 (en) | 2014-06-04 | 2021-07-20 | Pure Storage, Inc. | Proactively rebuilding data in a storage cluster |
US9213485B1 (en) | 2014-06-04 | 2015-12-15 | Pure Storage, Inc. | Storage system architecture |
US11960371B2 (en) | 2014-06-04 | 2024-04-16 | Pure Storage, Inc. | Message persistence in a zoned system |
US11652884B2 (en) | 2014-06-04 | 2023-05-16 | Pure Storage, Inc. | Customized hash algorithms |
US9003144B1 (en) | 2014-06-04 | 2015-04-07 | Pure Storage, Inc. | Mechanism for persisting messages in a storage system |
US11399063B2 (en) | 2014-06-04 | 2022-07-26 | Pure Storage, Inc. | Network authentication for a storage system |
US9218244B1 (en) | 2014-06-04 | 2015-12-22 | Pure Storage, Inc. | Rebuilding data across storage nodes |
US9836234B2 (en) | 2014-06-04 | 2017-12-05 | Pure Storage, Inc. | Storage cluster |
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 |
CN104102458B (zh) * | 2014-06-27 | 2017-11-10 | 北京兆易创新科技股份有限公司 | 多核cpu的负载均衡方法、多核cpu及固态硬盘 |
US10114757B2 (en) | 2014-07-02 | 2018-10-30 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US9836245B2 (en) | 2014-07-02 | 2017-12-05 | Pure Storage, Inc. | Non-volatile RAM and flash memory in a non-volatile solid-state storage |
US11604598B2 (en) | 2014-07-02 | 2023-03-14 | Pure Storage, Inc. | Storage cluster with zoned drives |
US9021297B1 (en) | 2014-07-02 | 2015-04-28 | Pure Storage, Inc. | Redundant, fault-tolerant, distributed remote procedure call cache in a storage system |
US11886308B2 (en) | 2014-07-02 | 2024-01-30 | Pure Storage, Inc. | Dual class of service for unified file and object messaging |
US8868825B1 (en) | 2014-07-02 | 2014-10-21 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US10853311B1 (en) | 2014-07-03 | 2020-12-01 | Pure Storage, Inc. | Administration through files in a storage system |
US9811677B2 (en) | 2014-07-03 | 2017-11-07 | Pure Storage, Inc. | Secure data replication in a storage grid |
US8874836B1 (en) * | 2014-07-03 | 2014-10-28 | Pure Storage, Inc. | Scheduling policy for queues in a non-volatile solid-state storage |
US9747229B1 (en) | 2014-07-03 | 2017-08-29 | Pure Storage, Inc. | Self-describing data format for DMA in a non-volatile solid-state storage |
US10296469B1 (en) | 2014-07-24 | 2019-05-21 | Pure Storage, Inc. | Access control in a flash storage system |
US9798728B2 (en) | 2014-07-24 | 2017-10-24 | Netapp, Inc. | System performing data deduplication using a dense tree data structure |
US9483346B2 (en) | 2014-08-07 | 2016-11-01 | Pure Storage, Inc. | Data rebuild on feedback from a queue in a non-volatile solid-state storage |
US9766972B2 (en) | 2014-08-07 | 2017-09-19 | Pure Storage, Inc. | Masking defective bits in a storage array |
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 |
US9082512B1 (en) | 2014-08-07 | 2015-07-14 | Pure Storage, Inc. | Die-level monitoring in a storage cluster |
US10983859B2 (en) | 2014-08-07 | 2021-04-20 | Pure Storage, Inc. | Adjustable error correction based on memory health in a storage unit |
US9864761B1 (en) | 2014-08-08 | 2018-01-09 | Pure Storage, Inc. | Read optimization operations in a storage system |
US10079711B1 (en) | 2014-08-20 | 2018-09-18 | Pure Storage, Inc. | Virtual file server with preserved MAC address |
US10430079B2 (en) | 2014-09-08 | 2019-10-01 | Pure Storage, Inc. | Adjusting storage capacity in a computing system |
US10133511B2 (en) | 2014-09-12 | 2018-11-20 | Netapp, Inc | Optimized segment cleaning technique |
US9671960B2 (en) | 2014-09-12 | 2017-06-06 | Netapp, Inc. | Rate matching technique for balancing segment cleaning and I/O workload |
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 |
US9836229B2 (en) | 2014-11-18 | 2017-12-05 | Netapp, Inc. | N-way merge technique for updating volume metadata in a storage I/O stack |
US9727485B1 (en) | 2014-11-24 | 2017-08-08 | Pure Storage, Inc. | Metadata rewrite and flatten optimization |
US9773007B1 (en) | 2014-12-01 | 2017-09-26 | Pure Storage, Inc. | Performance improvements in a storage system |
US9552248B2 (en) | 2014-12-11 | 2017-01-24 | Pure Storage, Inc. | Cloud alert to replica |
US9588842B1 (en) | 2014-12-11 | 2017-03-07 | Pure Storage, Inc. | Drive rebuild |
US9864769B2 (en) | 2014-12-12 | 2018-01-09 | Pure Storage, Inc. | Storing data utilizing repeating pattern detection |
US9489141B2 (en) * | 2014-12-18 | 2016-11-08 | Nimble Storage, Inc. | Efficient scheduling of Input/Output requests to reduce latency and maximize throughput in a flash storage device |
US10545987B2 (en) | 2014-12-19 | 2020-01-28 | Pure Storage, Inc. | Replication to the cloud |
CN105892934B (zh) * | 2014-12-19 | 2020-11-03 | 伊姆西Ip控股有限责任公司 | 用于存储设备管理的方法和装置 |
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 | 삼성전자주식회사 | 스토리지 디바이스에서의 입출력 처리 방법 및 이를 적용하는 스토리지 디바이스 및 비휘발성 메모리 디바이스 |
US9720601B2 (en) | 2015-02-11 | 2017-08-01 | Netapp, Inc. | Load balancing technique for a storage array |
US9710165B1 (en) | 2015-02-18 | 2017-07-18 | Pure Storage, Inc. | Identifying volume candidates for space reclamation |
US9948615B1 (en) | 2015-03-16 | 2018-04-17 | Pure Storage, Inc. | Increased storage unit encryption based on loss of trust |
US11294893B2 (en) | 2015-03-20 | 2022-04-05 | Pure Storage, Inc. | Aggregation of queries |
US9762460B2 (en) | 2015-03-24 | 2017-09-12 | Netapp, Inc. | Providing continuous context for operational information of a storage system |
US9940234B2 (en) | 2015-03-26 | 2018-04-10 | Pure Storage, Inc. | Aggressive data deduplication using lazy garbage collection |
US10082985B2 (en) | 2015-03-27 | 2018-09-25 | Pure Storage, Inc. | Data striping across storage nodes that are assigned to multiple logical arrays |
US9710317B2 (en) | 2015-03-30 | 2017-07-18 | Netapp, Inc. | Methods to identify, handle and recover from suspect SSDS in a clustered flash array |
US10592122B2 (en) * | 2015-03-31 | 2020-03-17 | Sandisk Technologies Llc | Inherent adaptive trimming |
US10178169B2 (en) | 2015-04-09 | 2019-01-08 | Pure Storage, Inc. | Point to point based backend communication layer for storage processing |
US9672125B2 (en) | 2015-04-10 | 2017-06-06 | Pure Storage, Inc. | Ability to partition an array into two or more logical arrays with independently running software |
CN106445749B (zh) * | 2015-05-12 | 2021-04-23 | 爱思开海力士有限公司 | 使用独立磁盘冗余阵列的动态自动调谐的最大延迟的减小 |
US10140149B1 (en) | 2015-05-19 | 2018-11-27 | Pure Storage, Inc. | Transactional commits with hardware assists in remote memory |
US9817576B2 (en) | 2015-05-27 | 2017-11-14 | Pure Storage, Inc. | Parallel update to NVRAM |
US10289327B2 (en) * | 2015-06-05 | 2019-05-14 | Western Digital Technologies, Inc. | Scheduling scheme(s) for a multi-die storage device |
US9547441B1 (en) | 2015-06-23 | 2017-01-17 | Pure Storage, Inc. | Exposing a geometry of a storage device |
US10310740B2 (en) | 2015-06-23 | 2019-06-04 | Pure Storage, Inc. | Aligning memory access operations to a geometry of a storage device |
US10846275B2 (en) | 2015-06-26 | 2020-11-24 | Pure Storage, Inc. | Key management in a storage device |
US10983732B2 (en) | 2015-07-13 | 2021-04-20 | Pure Storage, Inc. | Method and system for accessing a file |
US11232079B2 (en) | 2015-07-16 | 2022-01-25 | Pure Storage, Inc. | Efficient distribution of large directories |
CN106662895B (zh) * | 2015-07-22 | 2019-10-18 | 华为技术有限公司 | 计算机设备和计算机设备数据读写的方法 |
US9740566B2 (en) | 2015-07-31 | 2017-08-22 | Netapp, Inc. | Snapshot creation workflow |
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 |
US10108355B2 (en) | 2015-09-01 | 2018-10-23 | Pure Storage, Inc. | Erase block state detection |
US11269884B2 (en) | 2015-09-04 | 2022-03-08 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US11341136B2 (en) | 2015-09-04 | 2022-05-24 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
KR20170028825A (ko) | 2015-09-04 | 2017-03-14 | 퓨어 스토리지, 아이앤씨. | 압축된 인덱스들을 사용한 해시 테이블들에서의 메모리 효율적인 스토리지 및 탐색 |
US10025531B2 (en) * | 2015-09-10 | 2018-07-17 | HoneycombData Inc. | Reducing read command latency in storage devices |
US9785525B2 (en) | 2015-09-24 | 2017-10-10 | Netapp, Inc. | High availability failover manager |
US9768953B2 (en) | 2015-09-30 | 2017-09-19 | Pure Storage, Inc. | Resharing of a split secret |
US10853266B2 (en) | 2015-09-30 | 2020-12-01 | Pure Storage, Inc. | Hardware assisted data lookup methods |
US10762069B2 (en) | 2015-09-30 | 2020-09-01 | Pure Storage, Inc. | Mechanism for a system where data and metadata are located closely together |
US9843453B2 (en) | 2015-10-23 | 2017-12-12 | Pure Storage, Inc. | Authorizing I/O commands with I/O tokens |
US9836366B2 (en) | 2015-10-27 | 2017-12-05 | Netapp, Inc. | Third vote consensus in a cluster using shared storage devices |
US10235059B2 (en) | 2015-12-01 | 2019-03-19 | Netapp, Inc. | Technique for maintaining consistent I/O processing throughput in a storage system |
JP6266190B2 (ja) * | 2015-12-03 | 2018-01-24 | 三菱電機株式会社 | 多重系システム |
US10229009B2 (en) | 2015-12-16 | 2019-03-12 | Netapp, Inc. | Optimized file system layout for distributed consensus protocol |
US10007457B2 (en) | 2015-12-22 | 2018-06-26 | Pure Storage, Inc. | Distributed transactions with token-associated execution |
US9965398B2 (en) | 2016-01-12 | 2018-05-08 | Samsung Electronics Co., Ltd. | Method and apparatus for simplified nameless writes using a virtual address table |
US10078455B2 (en) | 2016-01-20 | 2018-09-18 | Microsoft Technology Licensing, Llc | Predicting solid state drive reliability |
WO2017141363A1 (ja) * | 2016-02-17 | 2017-08-24 | 株式会社日立製作所 | データ処理システム及びデータ処理方法 |
US10929022B2 (en) | 2016-04-25 | 2021-02-23 | Netapp. Inc. | Space savings reporting for storage system supporting snapshot and clones |
US9952767B2 (en) | 2016-04-29 | 2018-04-24 | Netapp, Inc. | Consistency group management |
US10133503B1 (en) | 2016-05-02 | 2018-11-20 | Pure Storage, Inc. | Selecting a deduplication process based on a difference between performance metrics |
US10452297B1 (en) | 2016-05-02 | 2019-10-22 | Pure Storage, Inc. | Generating and optimizing summary index levels in a deduplication storage system |
US10261690B1 (en) | 2016-05-03 | 2019-04-16 | Pure Storage, Inc. | Systems and methods for operating a storage system |
KR102547795B1 (ko) * | 2016-05-04 | 2023-06-27 | 에스케이하이닉스 주식회사 | 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법 |
US11861188B2 (en) | 2016-07-19 | 2024-01-02 | Pure Storage, Inc. | System having modular accelerators |
US10768819B2 (en) | 2016-07-22 | 2020-09-08 | Pure Storage, Inc. | Hardware support for non-disruptive upgrades |
US11449232B1 (en) | 2016-07-22 | 2022-09-20 | Pure Storage, Inc. | Optimal scheduling of flash operations |
US9672905B1 (en) | 2016-07-22 | 2017-06-06 | Pure Storage, Inc. | Optimize data protection layouts based on distributed flash wear leveling |
US10216420B1 (en) | 2016-07-24 | 2019-02-26 | Pure Storage, Inc. | Calibration of flash channels in SSD |
US11080155B2 (en) | 2016-07-24 | 2021-08-03 | Pure Storage, Inc. | Identifying error types among flash memory |
US11604690B2 (en) | 2016-07-24 | 2023-03-14 | Pure Storage, Inc. | Online failure span determination |
US11734169B2 (en) | 2016-07-26 | 2023-08-22 | Pure Storage, Inc. | Optimizing spool and memory space management |
US11886334B2 (en) | 2016-07-26 | 2024-01-30 | Pure Storage, Inc. | Optimizing spool and memory space management |
US11797212B2 (en) | 2016-07-26 | 2023-10-24 | Pure Storage, Inc. | Data migration for zoned drives |
US10366004B2 (en) | 2016-07-26 | 2019-07-30 | Pure Storage, Inc. | Storage system with elective garbage collection to reduce flash contention |
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 |
US11422719B2 (en) | 2016-09-15 | 2022-08-23 | Pure Storage, Inc. | Distributed file deletion and truncation |
US10642763B2 (en) | 2016-09-20 | 2020-05-05 | Netapp, Inc. | Quality of service policy sets |
US10613974B2 (en) | 2016-10-04 | 2020-04-07 | Pure Storage, Inc. | Peer-to-peer non-volatile random-access memory |
US9747039B1 (en) | 2016-10-04 | 2017-08-29 | Pure Storage, Inc. | Reservations over multiple paths on NVMe over fabrics |
US10191662B2 (en) | 2016-10-04 | 2019-01-29 | Pure Storage, Inc. | Dynamic allocation of segments in a flash storage system |
US10756816B1 (en) | 2016-10-04 | 2020-08-25 | Pure Storage, Inc. | Optimized fibre channel and non-volatile memory express access |
US20180095788A1 (en) * | 2016-10-04 | 2018-04-05 | Pure Storage, Inc. | Scheduling operations for a storage device |
US10162523B2 (en) | 2016-10-04 | 2018-12-25 | Pure Storage, Inc. | Migrating data between volumes using virtual copy operation |
US12039165B2 (en) | 2016-10-04 | 2024-07-16 | Pure Storage, Inc. | Utilizing allocation shares to improve parallelism in a zoned drive storage system |
US10481798B2 (en) | 2016-10-28 | 2019-11-19 | Pure Storage, Inc. | Efficient flash management for multiple controllers |
US10185505B1 (en) | 2016-10-28 | 2019-01-22 | Pure Storage, Inc. | Reading a portion of data to replicate a volume based on sequence numbers |
US10359942B2 (en) | 2016-10-31 | 2019-07-23 | Pure Storage, Inc. | Deduplication aware scalable content placement |
JP2018073312A (ja) | 2016-11-04 | 2018-05-10 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
KR102611571B1 (ko) | 2016-11-09 | 2023-12-07 | 삼성전자주식회사 | 비휘발성 메모리를 포함하는 raid 시스템 |
US11550481B2 (en) | 2016-12-19 | 2023-01-10 | Pure Storage, Inc. | Efficiently writing data in a zoned drive storage system |
US10452290B2 (en) | 2016-12-19 | 2019-10-22 | Pure Storage, Inc. | Block consolidation in a direct-mapped flash storage system |
CN113407122B (zh) * | 2016-12-21 | 2023-08-25 | 伊姆西Ip控股有限责任公司 | Raid重建的方法和设备 |
US11307998B2 (en) | 2017-01-09 | 2022-04-19 | Pure Storage, Inc. | Storage efficiency of encrypted host system data |
US11093146B2 (en) | 2017-01-12 | 2021-08-17 | Pure Storage, Inc. | Automatic load rebalancing of a write group |
US11955187B2 (en) | 2017-01-13 | 2024-04-09 | Pure Storage, Inc. | Refresh of differing capacity NAND |
US9747158B1 (en) | 2017-01-13 | 2017-08-29 | Pure Storage, Inc. | Intelligent refresh of 3D NAND |
US10979223B2 (en) | 2017-01-31 | 2021-04-13 | Pure Storage, Inc. | Separate encryption for a solid-state drive |
US10528488B1 (en) | 2017-03-30 | 2020-01-07 | Pure Storage, Inc. | Efficient name coding |
US11016667B1 (en) | 2017-04-05 | 2021-05-25 | Pure Storage, Inc. | Efficient mapping for LUNs in storage memory with holes in address space |
US12045487B2 (en) | 2017-04-21 | 2024-07-23 | Pure Storage, Inc. | Preserving data deduplication in a multi-tenant storage system |
US11403019B2 (en) | 2017-04-21 | 2022-08-02 | Pure Storage, Inc. | Deduplication-aware per-tenant encryption |
US10141050B1 (en) | 2017-04-27 | 2018-11-27 | Pure Storage, Inc. | Page writes for triple level cell flash memory |
US10944671B2 (en) | 2017-04-27 | 2021-03-09 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
US10516645B1 (en) | 2017-04-27 | 2019-12-24 | Pure Storage, Inc. | Address resolution broadcasting in a networked device |
CN107203341A (zh) * | 2017-05-23 | 2017-09-26 | 建荣半导体(深圳)有限公司 | 基于闪存的数据存储方法、装置以及闪存芯片 |
US11467913B1 (en) | 2017-06-07 | 2022-10-11 | Pure Storage, Inc. | Snapshots with crash consistency in a storage system |
US11138103B1 (en) | 2017-06-11 | 2021-10-05 | Pure Storage, Inc. | Resiliency groups |
US11947814B2 (en) | 2017-06-11 | 2024-04-02 | Pure Storage, Inc. | Optimizing resiliency group formation stability |
US11782625B2 (en) | 2017-06-11 | 2023-10-10 | Pure Storage, Inc. | Heterogeneity supportive resiliency groups |
US10425473B1 (en) | 2017-07-03 | 2019-09-24 | Pure Storage, Inc. | Stateful connection reset in a storage cluster with a stateless load balancer |
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 |
US11947489B2 (en) | 2017-09-05 | 2024-04-02 | Robin Systems, Inc. | Creating snapshots of a storage volume in a distributed storage system |
CN112214166B (zh) * | 2017-09-05 | 2022-05-24 | 华为技术有限公司 | 用于传输数据处理请求的方法和装置 |
US10579276B2 (en) | 2017-09-13 | 2020-03-03 | Robin Systems, Inc. | Storage scheme for a distributed storage system |
US10430105B2 (en) | 2017-09-13 | 2019-10-01 | Robin Systems, Inc. | Storage scheme for a distributed storage system |
US10452267B2 (en) | 2017-09-13 | 2019-10-22 | Robin Systems, Inc. | Storage scheme for a distributed storage system |
US10877827B2 (en) | 2017-09-15 | 2020-12-29 | Pure Storage, Inc. | Read voltage optimization |
US10210926B1 (en) | 2017-09-15 | 2019-02-19 | Pure Storage, Inc. | Tracking of optimum read voltage thresholds in nand flash devices |
US10534549B2 (en) | 2017-09-19 | 2020-01-14 | Robin Systems, Inc. | Maintaining consistency among copies of a logical storage volume in a distributed storage system |
US10423344B2 (en) | 2017-09-19 | 2019-09-24 | Robin Systems, Inc. | Storage scheme for a distributed storage system |
US10776202B1 (en) | 2017-09-22 | 2020-09-15 | Pure Storage, Inc. | Drive, blade, or data shard decommission via RAID geometry shrinkage |
US10789211B1 (en) | 2017-10-04 | 2020-09-29 | Pure Storage, Inc. | Feature-based deduplication |
US10496330B1 (en) | 2017-10-31 | 2019-12-03 | Pure Storage, Inc. | Using flash storage devices with different sized erase blocks |
US11024390B1 (en) | 2017-10-31 | 2021-06-01 | Pure Storage, Inc. | Overlapping RAID groups |
US10545687B1 (en) | 2017-10-31 | 2020-01-28 | Pure Storage, Inc. | Data rebuild when changing erase block sizes during drive replacement |
US10515701B1 (en) | 2017-10-31 | 2019-12-24 | Pure Storage, Inc. | Overlapping raid groups |
US10884919B2 (en) | 2017-10-31 | 2021-01-05 | Pure Storage, Inc. | Memory management in a storage system |
US10782887B2 (en) | 2017-11-08 | 2020-09-22 | Robin Systems, Inc. | Window-based prority tagging of IOPs in a distributed storage system |
US20190138244A1 (en) * | 2017-11-08 | 2019-05-09 | Robin Systems, Inc. | Managing QOS Priorities In Primary And Replica Storage Nodes Of A Distributed Storage System |
US10846001B2 (en) | 2017-11-08 | 2020-11-24 | Robin Systems, Inc. | Allocating storage requirements in a distributed storage system |
US10860475B1 (en) | 2017-11-17 | 2020-12-08 | Pure Storage, Inc. | Hybrid flash translation layer |
US10990566B1 (en) | 2017-11-20 | 2021-04-27 | Pure Storage, Inc. | Persistent file locks in a storage system |
CN108052279B (zh) * | 2017-11-23 | 2020-06-19 | 深圳市江波龙电子股份有限公司 | 一种提升闪存性能的方法、装置、设备及存储介质 |
US10719265B1 (en) | 2017-12-08 | 2020-07-21 | Pure Storage, Inc. | Centralized, quorum-aware handling of device reservation requests in a storage system |
US10929053B2 (en) | 2017-12-08 | 2021-02-23 | Pure Storage, Inc. | Safe destructive actions on drives |
US11036677B1 (en) * | 2017-12-14 | 2021-06-15 | Pure Storage, Inc. | Replicated data integrity |
US10452308B2 (en) | 2017-12-19 | 2019-10-22 | Robin Systems, Inc. | Encoding tags for metadata entries in a storage system |
US10430292B2 (en) | 2017-12-19 | 2019-10-01 | Robin Systems, Inc. | Snapshot deletion in a distributed storage system |
US10430110B2 (en) | 2017-12-19 | 2019-10-01 | Robin Systems, Inc. | Implementing a hybrid storage node in a distributed storage system |
US10929031B2 (en) | 2017-12-21 | 2021-02-23 | Pure Storage, Inc. | Maximizing data reduction in a partially encrypted volume |
TWI659310B (zh) * | 2018-01-04 | 2019-05-11 | 旺宏電子股份有限公司 | 儲存裝置操作方法及其應用其的儲存系統 |
US11392363B2 (en) | 2018-01-11 | 2022-07-19 | Robin Systems, Inc. | Implementing application entrypoints with containers of a bundled application |
US10628235B2 (en) | 2018-01-11 | 2020-04-21 | Robin Systems, Inc. | Accessing log files of a distributed computing system using a simulated file system |
US11748203B2 (en) | 2018-01-11 | 2023-09-05 | Robin Systems, Inc. | Multi-role application orchestration in a distributed storage system |
US11099937B2 (en) | 2018-01-11 | 2021-08-24 | Robin Systems, Inc. | Implementing clone snapshots in a distributed storage system |
US11582168B2 (en) | 2018-01-11 | 2023-02-14 | Robin Systems, Inc. | Fenced clone applications |
US10642697B2 (en) | 2018-01-11 | 2020-05-05 | Robin Systems, Inc. | Implementing containers for a stateful application in a distributed computing system |
US10896102B2 (en) | 2018-01-11 | 2021-01-19 | Robin Systems, Inc. | Implementing secure communication in a distributed computing system |
US10845997B2 (en) | 2018-01-12 | 2020-11-24 | Robin Systems, Inc. | Job manager for deploying a bundled application |
US10846137B2 (en) | 2018-01-12 | 2020-11-24 | Robin Systems, Inc. | Dynamic adjustment of application resources in a distributed computing system |
US10642694B2 (en) | 2018-01-12 | 2020-05-05 | Robin Systems, Inc. | Monitoring containers in a distributed computing system |
US10579364B2 (en) | 2018-01-12 | 2020-03-03 | Robin Systems, Inc. | Upgrading bundled applications in a distributed computing system |
US11010233B1 (en) | 2018-01-18 | 2021-05-18 | Pure Storage, Inc | Hardware-based system monitoring |
US11144638B1 (en) | 2018-01-18 | 2021-10-12 | Pure Storage, Inc. | Method for storage system detection and alerting on potential malicious action |
US10970395B1 (en) | 2018-01-18 | 2021-04-06 | Pure Storage, Inc | Security threat monitoring for a storage system |
US10733053B1 (en) | 2018-01-31 | 2020-08-04 | Pure Storage, Inc. | Disaster recovery for high-bandwidth distributed archives |
US10467527B1 (en) | 2018-01-31 | 2019-11-05 | Pure Storage, Inc. | Method and apparatus for artificial intelligence acceleration |
US10976948B1 (en) | 2018-01-31 | 2021-04-13 | Pure Storage, Inc. | Cluster expansion mechanism |
US11036596B1 (en) | 2018-02-18 | 2021-06-15 | Pure Storage, Inc. | System for delaying acknowledgements on open NAND locations until durability has been confirmed |
US11494109B1 (en) | 2018-02-22 | 2022-11-08 | Pure Storage, Inc. | Erase block trimming for heterogenous flash memory storage devices |
KR102448242B1 (ko) * | 2018-03-01 | 2022-09-28 | 마이크론 테크놀로지, 인크. | 데이터 블록들에 관한 다른 동작의 수행율에 기초한 데이터 블록들에 관한 동작의 동시 수행 |
US10534731B2 (en) * | 2018-03-19 | 2020-01-14 | Micron Technology, Inc. | Interface for memory having a cache and multiple independent arrays |
US11061725B2 (en) * | 2018-03-27 | 2021-07-13 | International Business Machines Corporation | Managing a set of computing resources |
US11934322B1 (en) | 2018-04-05 | 2024-03-19 | Pure Storage, Inc. | Multiple encryption keys on storage drives |
US12001688B2 (en) | 2019-04-29 | 2024-06-04 | Pure Storage, Inc. | Utilizing data views to optimize secure data access in a storage system |
US11995336B2 (en) | 2018-04-25 | 2024-05-28 | Pure Storage, Inc. | Bucket views |
US12079494B2 (en) | 2018-04-27 | 2024-09-03 | Pure Storage, Inc. | Optimizing storage system upgrades to preserve resources |
US10678433B1 (en) | 2018-04-27 | 2020-06-09 | Pure Storage, Inc. | Resource-preserving system upgrade |
US11385792B2 (en) | 2018-04-27 | 2022-07-12 | Pure Storage, Inc. | High availability controller pair transitioning |
US10931450B1 (en) | 2018-04-27 | 2021-02-23 | Pure Storage, Inc. | Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers |
US10853146B1 (en) | 2018-04-27 | 2020-12-01 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
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 |
CN110737393B (zh) * | 2018-07-20 | 2023-08-11 | 伊姆西Ip控股有限责任公司 | 数据读取方法、设备和计算机程序产品 |
US11438279B2 (en) | 2018-07-23 | 2022-09-06 | Pure Storage, Inc. | Non-disruptive conversion of a clustered service from single-chassis to multi-chassis |
US11023328B2 (en) | 2018-07-30 | 2021-06-01 | Robin Systems, Inc. | Redo log for append only storage scheme |
US10976938B2 (en) | 2018-07-30 | 2021-04-13 | Robin Systems, Inc. | Block map cache |
US10817380B2 (en) | 2018-07-31 | 2020-10-27 | Robin Systems, Inc. | Implementing affinity and anti-affinity constraints in a bundled application |
US10599622B2 (en) | 2018-07-31 | 2020-03-24 | Robin Systems, Inc. | Implementing storage volumes over multiple tiers |
US11133076B2 (en) | 2018-09-06 | 2021-09-28 | Pure Storage, Inc. | Efficient relocation of data between storage devices of a storage system |
US11868309B2 (en) | 2018-09-06 | 2024-01-09 | Pure Storage, Inc. | Queue management for data relocation |
US11194759B2 (en) | 2018-09-06 | 2021-12-07 | Pure Storage, Inc. | Optimizing local data relocation operations of a storage device of a storage system |
US11500570B2 (en) | 2018-09-06 | 2022-11-15 | Pure Storage, Inc. | Efficient relocation of data utilizing different programming modes |
US11354058B2 (en) | 2018-09-06 | 2022-06-07 | Pure Storage, Inc. | Local relocation of data stored at a storage device of a storage system |
US12067274B2 (en) | 2018-09-06 | 2024-08-20 | Pure Storage, Inc. | Writing segments and erase blocks based on ordering |
US11520514B2 (en) | 2018-09-06 | 2022-12-06 | Pure Storage, Inc. | Optimized relocation of data based on data characteristics |
RU2731321C2 (ru) | 2018-09-14 | 2020-09-01 | Общество С Ограниченной Ответственностью "Яндекс" | Способ определения потенциальной неисправности запоминающего устройства |
RU2718215C2 (ru) | 2018-09-14 | 2020-03-31 | Общество С Ограниченной Ответственностью "Яндекс" | Система обработки данных и способ обнаружения затора в системе обработки данных |
RU2721235C2 (ru) | 2018-10-09 | 2020-05-18 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и система для маршрутизации и выполнения транзакций |
RU2711348C1 (ru) | 2018-10-15 | 2020-01-16 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и система для обработки запросов в распределенной базе данных |
US10454498B1 (en) | 2018-10-18 | 2019-10-22 | Pure Storage, Inc. | Fully pipelined hardware engine design for fast and efficient inline lossless data compression |
US10908848B2 (en) | 2018-10-22 | 2021-02-02 | Robin Systems, Inc. | Automated management of bundled applications |
US11036439B2 (en) | 2018-10-22 | 2021-06-15 | Robin Systems, Inc. | Automated management of bundled applications |
US10846216B2 (en) | 2018-10-25 | 2020-11-24 | Pure Storage, Inc. | Scalable garbage collection |
US11113409B2 (en) | 2018-10-26 | 2021-09-07 | Pure Storage, Inc. | Efficient rekey in a transparent decrypting storage array |
US10976947B2 (en) | 2018-10-26 | 2021-04-13 | Pure Storage, Inc. | Dynamically selecting segment heights in a heterogeneous RAID group |
US10620871B1 (en) | 2018-11-15 | 2020-04-14 | Robin Systems, Inc. | Storage scheme for a distributed storage system |
US11023179B2 (en) | 2018-11-18 | 2021-06-01 | Pure Storage, Inc. | Cloud-based storage system storage management |
RU2714373C1 (ru) | 2018-12-13 | 2020-02-14 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и система для планирования выполнения операций ввода/вывода |
RU2749649C2 (ru) | 2018-12-21 | 2021-06-16 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и система для планирования обработки операций ввода/вывода |
RU2720951C1 (ru) * | 2018-12-29 | 2020-05-15 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и распределенная компьютерная система для обработки данных |
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 |
CN111506256B (zh) * | 2019-01-31 | 2023-03-28 | 睿宽智能科技有限公司 | 减少写入效能变化并防止io阻塞的方法 |
RU2746042C1 (ru) | 2019-02-06 | 2021-04-06 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и система для передачи сообщения |
US10908821B2 (en) * | 2019-02-28 | 2021-02-02 | Micron Technology, Inc. | Use of outstanding command queues for separate read-only cache and write-read cache in a memory sub-system |
US11288199B2 (en) | 2019-02-28 | 2022-03-29 | Micron Technology, Inc. | Separate read-only cache and write-read cache in a memory sub-system |
US11588633B1 (en) | 2019-03-15 | 2023-02-21 | Pure Storage, Inc. | Decommissioning keys in a decryption storage system |
US11086725B2 (en) | 2019-03-25 | 2021-08-10 | Robin Systems, Inc. | Orchestration of heterogeneous multi-role applications |
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 |
US11256434B2 (en) | 2019-04-17 | 2022-02-22 | Robin Systems, Inc. | Data de-duplication |
US10671453B1 (en) | 2019-04-29 | 2020-06-02 | EMC IP Holding Company LLC | Data storage system employing two-level scheduling of processing cores |
US10831387B1 (en) | 2019-05-02 | 2020-11-10 | Robin Systems, Inc. | Snapshot reservations in a distributed storage system |
US10877684B2 (en) | 2019-05-15 | 2020-12-29 | Robin Systems, Inc. | Changing a distributed storage volume from non-replicated to replicated |
US11487665B2 (en) | 2019-06-05 | 2022-11-01 | Pure Storage, Inc. | Tiered caching of data in a storage system |
US11100092B2 (en) | 2019-06-17 | 2021-08-24 | Bank Of America Corporation | Database tool |
US11269861B2 (en) | 2019-06-17 | 2022-03-08 | Bank Of America Corporation | Database tool |
US11714572B2 (en) | 2019-06-19 | 2023-08-01 | Pure Storage, Inc. | Optimized data resiliency in a modular 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 |
CN110362275B (zh) * | 2019-07-10 | 2021-09-07 | 深圳大普微电子科技有限公司 | 提升固态硬盘服务质量的方法及固态硬盘 |
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 |
US11005970B2 (en) | 2019-07-24 | 2021-05-11 | EMC IP Holding Company LLC | Data storage system with processor scheduling using distributed peek-poller threads |
US11226847B2 (en) | 2019-08-29 | 2022-01-18 | Robin Systems, Inc. | Implementing an application manifest in a node-specific manner using an intent-based orchestrator |
US11249851B2 (en) | 2019-09-05 | 2022-02-15 | Robin Systems, Inc. | Creating snapshots of a storage volume in a distributed storage system |
US11520650B2 (en) | 2019-09-05 | 2022-12-06 | Robin Systems, Inc. | Performing root cause analysis in a multi-role application |
US11963321B2 (en) | 2019-09-11 | 2024-04-16 | Pure Storage, Inc. | Low profile latching mechanism |
US11113158B2 (en) | 2019-10-04 | 2021-09-07 | Robin Systems, Inc. | Rolling back kubernetes applications |
US11347684B2 (en) | 2019-10-04 | 2022-05-31 | Robin Systems, Inc. | Rolling back KUBERNETES applications including custom resources |
US11893126B2 (en) | 2019-10-14 | 2024-02-06 | Pure Storage, Inc. | Data deletion for a multi-tenant environment |
US11403043B2 (en) | 2019-10-15 | 2022-08-02 | Pure Storage, Inc. | Efficient data compression by grouping similar data within a data segment |
JP7403554B2 (ja) * | 2019-10-23 | 2023-12-22 | 株式会社ソニー・インタラクティブエンタテインメント | 情報処理装置 |
JP2021068393A (ja) * | 2019-10-28 | 2021-04-30 | 富士通株式会社 | 情報処理システム、情報処理装置、および情報処理プログラム |
US12050689B2 (en) | 2019-11-22 | 2024-07-30 | Pure Storage, Inc. | Host anomaly-based generation of snapshots |
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 |
US11941116B2 (en) | 2019-11-22 | 2024-03-26 | Pure Storage, Inc. | Ransomware-based data protection parameter modification |
US11687418B2 (en) | 2019-11-22 | 2023-06-27 | Pure Storage, Inc. | Automatic generation of recovery plans specific to individual storage elements |
US11645162B2 (en) | 2019-11-22 | 2023-05-09 | Pure Storage, Inc. | Recovery point determination for data restoration in a storage system |
US11520907B1 (en) | 2019-11-22 | 2022-12-06 | Pure Storage, Inc. | Storage system snapshot retention based on encrypted data |
US11675898B2 (en) | 2019-11-22 | 2023-06-13 | Pure Storage, Inc. | Recovery dataset management for security threat monitoring |
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 |
US11341236B2 (en) | 2019-11-22 | 2022-05-24 | Pure Storage, Inc. | Traffic-based detection of a security threat to a storage system |
US11500788B2 (en) | 2019-11-22 | 2022-11-15 | Pure Storage, Inc. | Logical address based authorization of operations with respect to a storage system |
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 |
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 |
US12079356B2 (en) | 2019-11-22 | 2024-09-03 | Pure Storage, Inc. | Measurement interval anomaly detection-based generation of snapshots |
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 |
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 |
US11720692B2 (en) | 2019-11-22 | 2023-08-08 | Pure Storage, Inc. | Hardware token based management of recovery datasets for 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 |
US11651075B2 (en) | 2019-11-22 | 2023-05-16 | Pure Storage, Inc. | Extensible attack monitoring by a storage system |
US11615185B2 (en) | 2019-11-22 | 2023-03-28 | Pure Storage, Inc. | Multi-layer security threat detection for a storage system |
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 |
US11403188B2 (en) | 2019-12-04 | 2022-08-02 | Robin Systems, Inc. | Operation-level consistency points and rollback |
US11704192B2 (en) | 2019-12-12 | 2023-07-18 | Pure Storage, Inc. | Budgeting open blocks based on power loss protection |
US11416144B2 (en) | 2019-12-12 | 2022-08-16 | Pure Storage, Inc. | Dynamic use of segment or zone power loss protection in a flash device |
US12001684B2 (en) | 2019-12-12 | 2024-06-04 | Pure Storage, Inc. | Optimizing dynamic power loss protection adjustment in a storage system |
US11847331B2 (en) | 2019-12-12 | 2023-12-19 | Pure Storage, Inc. | Budgeting open blocks of a storage unit based on power loss prevention |
KR20210108130A (ko) | 2020-02-25 | 2021-09-02 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US11188432B2 (en) | 2020-02-28 | 2021-11-30 | Pure Storage, Inc. | Data resiliency by partially deallocating data blocks of a storage device |
JP7337006B2 (ja) | 2020-03-03 | 2023-09-01 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US11507297B2 (en) | 2020-04-15 | 2022-11-22 | Pure Storage, Inc. | Efficient management of optimal read levels for flash storage systems |
US11256587B2 (en) | 2020-04-17 | 2022-02-22 | Pure Storage, Inc. | Intelligent access to a storage device |
US11789611B2 (en) | 2020-04-24 | 2023-10-17 | Netapp, Inc. | Methods for handling input-output operations in zoned storage systems and devices thereof |
US11474986B2 (en) | 2020-04-24 | 2022-10-18 | Pure Storage, Inc. | Utilizing machine learning to streamline telemetry processing of storage media |
US11416338B2 (en) | 2020-04-24 | 2022-08-16 | Pure Storage, Inc. | Resiliency scheme to enhance storage performance |
US12056365B2 (en) | 2020-04-24 | 2024-08-06 | Pure Storage, Inc. | Resiliency for a storage system |
US11108638B1 (en) | 2020-06-08 | 2021-08-31 | Robin Systems, Inc. | Health monitoring of automatically deployed and managed network pipelines |
US11528186B2 (en) | 2020-06-16 | 2022-12-13 | Robin Systems, Inc. | Automated initialization of bare metal servers |
US11768763B2 (en) | 2020-07-08 | 2023-09-26 | Pure Storage, Inc. | Flash secure erase |
US11681448B2 (en) | 2020-09-08 | 2023-06-20 | Pure Storage, Inc. | Multiple device IDs in a multi-fabric module storage system |
US11513974B2 (en) | 2020-09-08 | 2022-11-29 | Pure Storage, Inc. | Using nonce to control erasure of data blocks of a multi-controller storage system |
US11740980B2 (en) | 2020-09-22 | 2023-08-29 | Robin Systems, Inc. | Managing snapshot metadata following backup |
US11743188B2 (en) | 2020-10-01 | 2023-08-29 | Robin Systems, Inc. | Check-in monitoring for workflows |
US11456914B2 (en) | 2020-10-07 | 2022-09-27 | Robin Systems, Inc. | Implementing affinity and anti-affinity with KUBERNETES |
US11271895B1 (en) | 2020-10-07 | 2022-03-08 | Robin Systems, Inc. | Implementing advanced networking capabilities using helm charts |
US11750451B2 (en) | 2020-11-04 | 2023-09-05 | Robin Systems, Inc. | Batch manager for complex workflows |
CN112491905B (zh) * | 2020-12-01 | 2023-05-05 | 郑州昂视信息科技有限公司 | 网络设备的性能测试方法、装置及系统 |
US11556361B2 (en) | 2020-12-09 | 2023-01-17 | Robin Systems, Inc. | Monitoring and managing of complex multi-role applications |
US11487455B2 (en) | 2020-12-17 | 2022-11-01 | Pure Storage, Inc. | Dynamic block allocation to optimize storage system performance |
US12067282B2 (en) | 2020-12-31 | 2024-08-20 | Pure Storage, Inc. | Write path selection |
US11847324B2 (en) | 2020-12-31 | 2023-12-19 | Pure Storage, Inc. | Optimizing resiliency groups for data regions of a storage system |
US12093545B2 (en) | 2020-12-31 | 2024-09-17 | Pure Storage, Inc. | Storage system with selectable write modes |
US11614880B2 (en) | 2020-12-31 | 2023-03-28 | Pure Storage, Inc. | Storage system with selectable write paths |
US12061814B2 (en) | 2021-01-25 | 2024-08-13 | Pure Storage, Inc. | Using data similarity to select segments for garbage collection |
US11340987B1 (en) | 2021-03-04 | 2022-05-24 | Netapp, Inc. | Methods and systems for raid protection in zoned solid-state drives |
US11630593B2 (en) | 2021-03-12 | 2023-04-18 | Pure Storage, Inc. | Inline flash memory qualification in a storage system |
US11507597B2 (en) | 2021-03-31 | 2022-11-22 | Pure Storage, Inc. | Data replication to meet a recovery point objective |
US12032848B2 (en) | 2021-06-21 | 2024-07-09 | Pure Storage, Inc. | Intelligent block allocation in a heterogeneous storage system |
US11567673B1 (en) * | 2021-08-18 | 2023-01-31 | International Business Machines Corporation | Adaptive, proactive raid rebuild |
US11832410B2 (en) | 2021-09-14 | 2023-11-28 | Pure Storage, Inc. | Mechanical energy absorbing bracket apparatus |
US11797377B2 (en) | 2021-10-05 | 2023-10-24 | Netapp, Inc. | Efficient parity determination in zoned solid-state drives of a storage system |
US11803329B2 (en) | 2021-11-22 | 2023-10-31 | Netapp, Inc. | Methods and systems for processing write requests in a storage system |
US11816359B2 (en) | 2021-12-16 | 2023-11-14 | Netapp, Inc. | Scalable solid-state storage system and methods thereof |
US11940911B2 (en) | 2021-12-17 | 2024-03-26 | Netapp, Inc. | Persistent key-value store and journaling system |
US11994723B2 (en) | 2021-12-30 | 2024-05-28 | Pure Storage, Inc. | Ribbon cable alignment apparatus |
US20240069807A1 (en) * | 2022-08-31 | 2024-02-29 | Micron Technology, Inc. | Managing command completion notification pacing in a memory sub-system |
CN117827973A (zh) * | 2023-12-29 | 2024-04-05 | 云和恩墨(北京)信息技术有限公司 | 分布式数据库的读请求调度方法、装置及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020065833A1 (en) * | 2000-11-30 | 2002-05-30 | Emc Corporation | System and method for evaluating changes in performance arising from reallocation of files among disk storage units |
JP2005092876A (ja) | 2003-08-29 | 2005-04-07 | Internatl Business Mach Corp <Ibm> | データ転送速度を調整するための装置および方法 |
JP2007115019A (ja) * | 2005-10-20 | 2007-05-10 | Hitachi Ltd | ストレージのアクセス負荷を分散する計算機システム及びその制御方法 |
US20090249013A1 (en) * | 2008-03-27 | 2009-10-01 | Asif Daud | Systems and methods for managing stalled storage devices |
WO2010071655A1 (en) | 2008-12-19 | 2010-06-24 | Hewlett-Packard Development Company, L.P. | Redundant data storage for uniform read latency |
Family Cites Families (162)
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 |
JP2923702B2 (ja) * | 1991-04-01 | 1999-07-26 | 株式会社日立製作所 | 記憶装置及びそのデータ修復方法 |
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 |
US6018778A (en) * | 1996-05-03 | 2000-01-25 | Netcell Corporation | Disk array controller for reading/writing striped data using a single address counter for synchronously transferring data between data ports and buffer memory |
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 |
US6321345B1 (en) * | 1999-03-01 | 2001-11-20 | Seachange Systems, Inc. | Slow response in redundant arrays of inexpensive disks |
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 |
JP2002108573A (ja) | 2000-09-28 | 2002-04-12 | Nec Corp | ディスクアレイ装置、そのエラー制御方法、ならびにその制御プログラムを記録した記録媒体 |
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 |
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 |
JP4457185B2 (ja) | 2001-02-13 | 2010-04-28 | ネットアップ,インコーポレイテッド | シリコンベースのストレージ仮想化サーバ |
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 |
EP1611518A1 (en) | 2003-04-07 | 2006-01-04 | Itracs Corporation | Network security system based on physical location |
US20050210304A1 (en) * | 2003-06-26 | 2005-09-22 | Copan Systems | Method and apparatus for power-efficient high-capacity scalable storage system |
US7424498B1 (en) | 2003-06-30 | 2008-09-09 | Data Domain, Inc. | Probabilistic summary data structure based encoding for garbage collection |
US7379974B2 (en) * | 2003-07-14 | 2008-05-27 | International Business Machines Corporation | Multipath data retrieval from redundant array |
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 | 株式会社日立製作所 | ディスクアレイ装置及びディスクアレイ装置の障害回避方法 |
JP4518541B2 (ja) | 2004-01-16 | 2010-08-04 | 株式会社日立製作所 | ディスクアレイ装置及びディスクアレイ装置の制御方法 |
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 |
US7366852B2 (en) * | 2004-07-29 | 2008-04-29 | Infortrend Technology, Inc. | Method for improving data reading performance and storage system for performing the same |
JP2006106975A (ja) * | 2004-10-01 | 2006-04-20 | Canon Inc | ディスクアレイ装置及びその制御方法 |
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 |
JP2006285889A (ja) * | 2005-04-05 | 2006-10-19 | Sony Corp | データ記憶装置、再構築制御装置、再構築制御方法、プログラム及び記憶媒体 |
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 |
WO2006123416A1 (ja) | 2005-05-19 | 2006-11-23 | Fujitsu Limited | ディスク故障復旧方法及びディスクアレイ装置 |
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 |
WO2008065695A1 (fr) | 2006-11-27 | 2008-06-05 | Fujitsu Limited | Programme de gestion de serveur, programme de gestion de serveur de messagerie, système de gestion de serveur et procédé de gestion de serveur |
US8694712B2 (en) | 2006-12-05 | 2014-04-08 | Microsoft Corporation | Reduction of operational costs of virtual TLBs |
WO2008070172A2 (en) * | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for remote direct memory access to a solid-state storage device |
US20080155191A1 (en) | 2006-12-21 | 2008-06-26 | Anderson Robert J | Systems and methods for providing heterogeneous storage systems |
US8370562B2 (en) | 2007-02-25 | 2013-02-05 | Sandisk Il Ltd. | Interruptible cache flushing in flash memory systems |
JP4900811B2 (ja) | 2007-03-30 | 2012-03-21 | 株式会社日立製作所 | 記憶システムおよび記憶制御方法 |
JP4529990B2 (ja) | 2007-03-30 | 2010-08-25 | ブラザー工業株式会社 | 画像処理プログラム及び画像処理装置 |
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 |
JP5018880B2 (ja) | 2007-05-30 | 2012-09-05 | 富士通株式会社 | 画像暗号化装置、画像復号装置、方法、及びプログラム |
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 |
US7877380B2 (en) | 2008-02-25 | 2011-01-25 | Yahoo! Inc. | System for query scheduling to maximize work sharing |
US8473779B2 (en) * | 2008-02-29 | 2013-06-25 | Assurance Software And Hardware Solutions, Llc | Systems and methods for error correction and detection, isolation, and recovery of faults in a fail-in-place storage array |
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 |
US7945752B1 (en) * | 2008-03-27 | 2011-05-17 | Netapp, Inc. | Method and apparatus for achieving consistent read latency from an array of solid-state storage devices |
US7873619B1 (en) | 2008-03-31 | 2011-01-18 | Emc Corporation | Managing metadata |
US7788541B2 (en) * | 2008-04-15 | 2010-08-31 | Dot Hill Systems Corporation | Apparatus and method for identifying disk drives with unreported data corruption |
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 |
US8392791B2 (en) * | 2008-08-08 | 2013-03-05 | George Saliba | Unified data protection and data de-duplication in a storage system |
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 |
US7992037B2 (en) * | 2008-09-11 | 2011-08-02 | Nec Laboratories America, Inc. | Scalable secondary storage systems and methods |
US8145806B2 (en) * | 2008-09-19 | 2012-03-27 | Oracle International Corporation | Storage-side storage request management |
US20100077205A1 (en) | 2008-09-19 | 2010-03-25 | Ekstrom Joseph J | System and Method for Cipher E-Mail Protection |
KR101034022B1 (ko) * | 2008-09-25 | 2011-05-11 | 기아자동차주식회사 | 캠으로 구동하는 연료 펌프 윤활장치 |
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 |
US8312204B2 (en) | 2009-01-23 | 2012-11-13 | Seagate Technology Llc | System and method for wear leveling in a data storage device |
JP5012822B2 (ja) * | 2009-01-27 | 2012-08-29 | 日本電気株式会社 | 記憶制御装置 |
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 |
EP2302638B1 (fr) | 2009-09-21 | 2013-04-17 | STMicroelectronics (Rousset) SAS | Procédé d'écriture et de lecture de données dans une mémoire non volatile, au moyen de métadonnées |
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 |
US9059851B2 (en) | 2010-02-23 | 2015-06-16 | Salesforce.Com, Inc. | Method and computer program product for order preserving symbol based encryption |
JP4892072B2 (ja) | 2010-03-24 | 2012-03-07 | 株式会社東芝 | ホスト装置と連携して重複データを排除するストレージ装置、同ストレージ装置を備えたストレージシステム、及び同システムにおける重複排除方法 |
US8487835B2 (en) * | 2010-04-27 | 2013-07-16 | Sukho JUNG | Display device |
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 |
US9092337B2 (en) | 2011-01-31 | 2015-07-28 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for managing eviction of data |
US9563555B2 (en) | 2011-03-18 | 2017-02-07 | Sandisk Technologies Llc | Systems and methods for storage allocation |
US8595267B2 (en) | 2011-06-27 | 2013-11-26 | Amazon Technologies, Inc. | System and method for implementing a scalable data storage service |
US8751463B1 (en) | 2011-06-30 | 2014-06-10 | Emc Corporation | Capacity forecasting for a deduplicating storage system |
US8806160B2 (en) | 2011-08-16 | 2014-08-12 | Pure Storage, Inc. | Mapping in a storage system |
US8788788B2 (en) | 2011-08-11 | 2014-07-22 | Pure Storage, Inc. | Logical sector mapping in a flash storage array |
US8527544B1 (en) | 2011-08-11 | 2013-09-03 | Pure Storage Inc. | Garbage collection in a storage system |
US8793467B2 (en) | 2011-09-30 | 2014-07-29 | Pure Storage, Inc. | Variable length encoding in a storage system |
JP5768587B2 (ja) | 2011-08-17 | 2015-08-26 | 富士通株式会社 | ストレージシステム、ストレージ制御装置およびストレージ制御方法 |
US8700875B1 (en) | 2011-09-20 | 2014-04-15 | Netapp, Inc. | Cluster view for storage devices |
JP5735654B2 (ja) | 2011-10-06 | 2015-06-17 | 株式会社日立製作所 | 格納データの重複排除方法、格納データの重複排除装置、及び重複排除プログラム |
US8825605B2 (en) | 2011-10-11 | 2014-09-02 | Netapp, Inc. | Deduplication aware scheduling of requests to access data blocks |
US8918579B2 (en) | 2012-02-06 | 2014-12-23 | Sandisk Technologies Inc. | Storage device and method for selective data compression |
US9519647B2 (en) | 2012-04-17 | 2016-12-13 | Sandisk Technologies Llc | Data expiry in a non-volatile device |
US9075710B2 (en) | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
US8996881B2 (en) | 2012-04-23 | 2015-03-31 | International Business Machines Corporation | Preserving redundancy in data deduplication systems by encryption |
US8793466B2 (en) | 2012-04-27 | 2014-07-29 | Netapp, Inc. | Efficient data object storage and retrieval |
US9645177B2 (en) | 2012-05-04 | 2017-05-09 | Seagate Technology Llc | Retention-drift-history-based non-volatile memory read threshold optimization |
US8874850B1 (en) | 2012-05-10 | 2014-10-28 | Netapp, Inc. | Hierarchically tagged cache |
US20130318314A1 (en) | 2012-05-25 | 2013-11-28 | Red Hat, Inc. | Managing copies of data on multiple nodes using a data controller node to avoid transaction deadlock |
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 |
US9176858B2 (en) | 2012-11-19 | 2015-11-03 | Hitachi, Ltd. | Storage system configured to selectively utilize data compression based on real pool usage rates |
US9348840B2 (en) | 2012-12-14 | 2016-05-24 | Intel Corporation | Adaptive data striping and replication across multiple storage clouds for high availability and performance |
US9589008B2 (en) | 2013-01-10 | 2017-03-07 | Pure Storage, Inc. | Deduplication of volume regions |
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 |
US10430282B2 (en) | 2014-10-07 | 2019-10-01 | Pure Storage, Inc. | Optimizing replication by distinguishing user and system write activity |
US9489132B2 (en) | 2014-10-07 | 2016-11-08 | Pure Storage, Inc. | Utilizing unmapped and unknown states in a replicated storage system |
US9552248B2 (en) | 2014-12-11 | 2017-01-24 | Pure Storage, Inc. | Cloud alert to replica |
-
2010
- 2010-09-15 US US12/882,872 patent/US8589625B2/en active Active
-
2011
- 2011-09-15 EP EP11764903.8A patent/EP2616922B1/en active Active
- 2011-09-15 JP JP2013529315A patent/JP5956445B2/ja active Active
- 2011-09-15 EP EP17154034.7A patent/EP3206118A1/en not_active Ceased
- 2011-09-15 KR KR1020137009442A patent/KR101867635B1/ko active IP Right Grant
- 2011-09-15 CN CN201180054158.1A patent/CN103370686B/zh active Active
- 2011-09-15 WO PCT/US2011/051710 patent/WO2012037318A1/en active Application Filing
-
2013
- 2013-11-18 US US14/083,161 patent/US8862820B2/en active Active
-
2014
- 2014-10-13 US US14/513,007 patent/US9436396B2/en active Active
-
2016
- 2016-06-16 JP JP2016119624A patent/JP6337042B2/ja active Active
- 2016-07-28 US US15/221,686 patent/US11307772B1/en active Active
-
2022
- 2022-04-18 US US17/723,318 patent/US20220244865A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020065833A1 (en) * | 2000-11-30 | 2002-05-30 | Emc Corporation | System and method for evaluating changes in performance arising from reallocation of files among disk storage units |
JP2005092876A (ja) | 2003-08-29 | 2005-04-07 | Internatl Business Mach Corp <Ibm> | データ転送速度を調整するための装置および方法 |
JP2007115019A (ja) * | 2005-10-20 | 2007-05-10 | Hitachi Ltd | ストレージのアクセス負荷を分散する計算機システム及びその制御方法 |
US20090249013A1 (en) * | 2008-03-27 | 2009-10-01 | Asif Daud | Systems and methods for managing stalled storage devices |
WO2010071655A1 (en) | 2008-12-19 | 2010-06-24 | Hewlett-Packard Development Company, L.P. | Redundant data storage for uniform read latency |
Also Published As
Publication number | Publication date |
---|---|
JP6337042B2 (ja) | 2018-06-06 |
CN103370686B (zh) | 2016-08-03 |
US20140075115A1 (en) | 2014-03-13 |
JP2016189209A (ja) | 2016-11-04 |
US20120066449A1 (en) | 2012-03-15 |
WO2012037318A1 (en) | 2012-03-22 |
EP2616922B1 (en) | 2017-11-08 |
EP3206118A1 (en) | 2017-08-16 |
US8589625B2 (en) | 2013-11-19 |
US9436396B2 (en) | 2016-09-06 |
CN103370686A (zh) | 2013-10-23 |
US11307772B1 (en) | 2022-04-19 |
US20150032958A1 (en) | 2015-01-29 |
US8862820B2 (en) | 2014-10-14 |
US20220244865A1 (en) | 2022-08-04 |
JP2013541765A (ja) | 2013-11-14 |
KR20140007333A (ko) | 2014-01-17 |
JP5956445B2 (ja) | 2016-07-27 |
EP2616922A1 (en) | 2013-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220244865A1 (en) | Scheduling Of Reconstructive I/O Read Operations In A Storage Environment | |
US10228865B1 (en) | Maintaining a target number of storage devices for variable I/O response times in a storage system | |
US10353630B1 (en) | Simultaneously servicing high latency operations in a storage system | |
KR101862892B1 (ko) | 저장소 환경에서의 i/o 기록들의 스케줄링 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |