KR101905645B1 - Ssd 환경에서의 i/o 스케줄링 - Google Patents
Ssd 환경에서의 i/o 스케줄링 Download PDFInfo
- Publication number
- KR101905645B1 KR101905645B1 KR1020137009549A KR20137009549A KR101905645B1 KR 101905645 B1 KR101905645 B1 KR 101905645B1 KR 1020137009549 A KR1020137009549 A KR 1020137009549A KR 20137009549 A KR20137009549 A KR 20137009549A KR 101905645 B1 KR101905645 B1 KR 101905645B1
- Authority
- KR
- South Korea
- Prior art keywords
- storage device
- storage devices
- given
- storage
- behavior
- 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/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
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3485—Performance evaluation by tracing or monitoring for I/O devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/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
-
- 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- 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
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3034—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3055—Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/26—Using a specific storage system architecture
- G06F2212/261—Storage comprising a plurality of storage devices
- G06F2212/262—Storage comprising a plurality of storage devices configured as RAID
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
복수의 고상 저장 장치 간의 판독 및 기록 동작을 효과적으로 스케줄링하는 시스템 및 방법이 개시된다. 컴퓨터 시스템은 네트워크를 통해 서로 연결된 클라이언트 컴퓨터 및 데이터 저장 어레이를 포함한다. 데이터 저장 어레이는 데이터 저장을 위해 고상 드라이브 및 플래시 메모리 셀을 이용한다. 데이터 저장 어레이 내에 있는 저장 제어기는 I/O 스케줄러를 포함한다. 예측 시간에 비교적 일관된 응답 시간을 유지하도록 저장 장치에 대한 I/O 요청을 스케줄링하기 위해 해당 저장 장치의 특성이 사용된다. 상기 저장 장치의 스케줄링되지 않은 거동의 가능성을 감소시키기 위해, 상기 저장 제어기는 스케줄링되지 않은 거동의 발생 횟수를 감소시키기 위해 상기 저장 장치에 대해 프로액티브 동작을 스케줄링하도록 구성된다.
Description
본 발명은 컴퓨터 네트워크에 관한 것으로, 특히, 컴퓨팅 데이터 저장 시스템에 관한 것이다.
컴퓨터 메모리 저장 및 데이터 대역폭이 증가함에 따라, 기업이 관리하는 데이터의 양 및 복잡도도 커지고 있다. 데이터 센터와 같은 대규모 분산 저장 시스템은 전형적으로 많은 사업 활동을 수행한다. 분산 저장 시스템은 하나 이상의 네트워크에 의해 상호 접속된 많은 클라이언트 컴퓨터에 연결될 수 있다. 만일 분산 저장 시스템의 어떤 일부가 성능이 낮거나 이용가능하지 않으면, 회사 활동이 손상되거나 완전히 중단될 수 있다. 그러한 분산 저장 시스템은 데이터 이용가능성 및 고성능 기능을 위해 높은 수준을 유지하려고 추구한다.
저장 시스템 자체 내에서, 파일 시스템 및 저장 장치 레벨의 입/출력(I/O) 스케줄러(schedulers)는 일반적으로 판독 및 기록 동작을 어떻게 실행할지에 대한 단계를 제공하는 것 외에 그 동작의 순서를 결정한다. 예를 들면, 비순차적 판독 및 기록 동작은 순차적 판독 및 기록 동작보다 저장 장치에 대해 실행하는 것이 (예컨대, 시간 및/또는 자원 측면에서) 더 비용이 들 수 있다. 따라서, I/O 스케줄러는 비순차적 동작을 줄이려고 시도할 수 있다. 또한, I/O 스케줄러는 기아(starvation) 방지, 요청 합병(request merging), 및 프로세스 간 공정성(inter-process fairness)과 같은 다른 기능을 제공할 수 있다.
적어도 판독 및 기록 응답 시간은 실질적으로 저장 장치들 간에 다를 수 있다. 그러한 차이는 기술 자체의 특성일 수 있다. 결과적으로, 선택된 데이터 저장 장치와 연관된 기술 및 메커니즘은 효과적인 I/O 스케줄링을 수행하는데 사용되는 방법을 결정할 수 있다. 예를 들면, 하드 디스크 드라이브(HDDs)를 이용하는 시스템용으로 많은 현재의 알고리즘이 개발되었다. HDD는 각각이 자기 매체로 코딩된 하나 이상의 회전형 디스크를 포함한다. 이러한 디스크는 분당 수천 회전율로 회전한다. 또한, 전자기 액추에이터는 회전형 디스크 위에 자기 판독/기록 장치를 위치시키는 것을 담당한다. 장치의 기계적 및 전기 기계적 설계는 그의 I/O 특성에 영향을 미친다. 불행하게도, 마찰, 마모, 진동 및 기계적 어긋남(misalignments)은 HDD의 I/O 특성에 영향을 미칠 뿐만 아니라 신뢰성 문제를 일으킬 수 있다. 많은 현재의 I/O 스케줄러는 HDD의 입/출력(I/O) 특성을 고려하여 설계되어 있다.
다른 타입의 저장 매체의 일예는 고상 드라이브(Solid-State Drive: SSD)이다. HDD와 대조적으로, SSD는 자기 매체 장치 대신 고상 메모리를 이용하여 영구데이터를 저장한다. 고상 메모리는 플래시 메모리 셀을 포함할 수 있다. 플래시 메모리는 하드 드라이브의 특징과 다른 많은 특징을 갖는다. 예를 들면, 플래시 메모리 셀은 일반적으로 재기록되거나 재프로그램되기 전에 대형 블록 단위로 소거된다. 플래시 메모리는 또한 일반적으로 다이(dies), 패키지, 플레인 및 블록과 같은 복잡한 배열로 조직된다. 선택된 배열의 크기 및 병렬성, 플래시 메모리의 시간의 경과에 따른 마모, 및 장치(들)의 상호 접속 및 전달 속도는 모두 변할 수 있다. 추가적으로, 그러한 장치는 또한 그 장치의 저장을 관리하기 위해 플래시 변환층(FTL)을 포함할 수 있다. FTL에 이용되는 알고리즘은 다를 수 있으며 또한 장치의 거동(behavior) 및/또는 성능 변화의 원인이 될 수 있다. 결과적으로, 서로 다른 특성을 갖는 하드 드라이브와 같은 시스템용으로 설계된 I/O 스케줄러를 이용하면서 저장을 위해 플래시 기반 SSD를 이용하는 시스템에서는 고성능 및 예측가능한 지연(latencies)이 성취될 수 없다.
전술한 바에 비추어, 복수의 저장 장치 간의 판독 및 기록 동작을 효과적으로 스케줄링하는 시스템 및 방법이 바람직하다.
복수의 고상 저장 장치 간의 판독 및 기록 동작을 효과적으로 스케줄링하는 컴퓨터 시스템 및 방법의 여러 실시예가 개시된다.
일 실시예에서, 컴퓨터 시스템은 네트워크를 통한 판독 및 기록 요청을 네트워크를 매개로 하여 상기 판독 및 기록 요청을 수신하도록 연결된 하나 이상의 데이터 저장 어레이로 전달하도록 구성된 복수의 클라이언트 컴퓨터를 포함한다. 복수의 저장 장치에 복수의 저장 위치를 포함하는 데이터 저장 어레이(들)가 계획된다. 여러 실시예에서, 상기 저장 장치는 데이터 저장 및 보호를 위해 독립 드라이브들의 중복 어레이(redundant array of independent drives: RAID) 배열로 구성된다. 상기 데이터 저장 장치는 데이터 저장을 위해 플래시 메모리 셀과 같은 고상 메모리 기술을 포함할 수 있다. 저장 장치에 대한 I/O 요청을 스케줄링하기 위해 해당 저장 장치의 특성이 이용된다. 그 특성은 I/O 요청의 예측 응답 시간, 장치 에이지, 임의의 대응하는 캐시 크기, 액세스율, 오류율, 현재의 I/O 요청, 완료된 I/O 요청 등을 포함할 수 있다.
일 실시예에서, I/O 스케줄러는 판독 및 기록 요청을 수신하고 복수의 저장 장치에 의한 처리를 위해 상기 판독 및 기록 요청을 스케줄링하도록 구성된다. 상기 저장 장치는 서비스되는 동작에 따라 가변 지연을 보일 수 있으며, 또한 예상되거나 원하는 것에서 성능 변화를 초래하는 스케줄링되지(unscheduled) 않거나 예측치 못한(unpredicted) 거동을 여러 번 보일 수 있다. 여러 실시예에서, 이러한 거동은 상기 장치가 적절히 기능하는(즉 오류 상태에 있지 않은) 거동에 해당하지만, 단순히 지연 및/또는 처리율(throughput)에 기초하여 예상된 또는 원하는 레벨 미만으로 수행한다. 그러한 거동 및 성능은 "가변 성능(variable performance)" 거동이라고 지칭될 수 있다. 이러한 가변 성능 거동은, 예를 들어, 플래시 기반 메모리 기술과 같은 기술에 의해 보여질 수 있다. 상기 장치에 의한 그러한 거동의 발생을 감소시키기 위해, 일 실시예에서, 상기 스케줄러는 소정 시간에 하나 이상의 저장 장치에 대해 프로액티브(proactive) 동작을 스케줄링하도록 구성된다. 상기 프로액티브 동작은 일반적으로 장치가 스케줄링되지 않은 거동을 보일 가능성을 감소시킬 수 있다. 일부 실시예에서, 상기 스케줄러는 상기 장치 및 시스템의 상태를 모니터하고 스케줄링되지 않은 거동이 다가오거나 또는 그렇지 않고 발생할 것이라는 예측에 기초하여 주어진 장치에 대해 프로액티브 동작을 스케줄링한다. 일부 실시예에서, 상기 스케줄러는 랜덤한 시간에 상기 저장 장치에 대해 프로액티브 동작을 스케줄링할 수 있다.
이러한 실시예 및 다른 실시예는 다음의 설명 및 첨부의 도면을 고려하면 명백해질 것이다.
도 1은 네트워크 아키텍처의 일 실시예를 예시하는 일반화된 블록도이다.
도 2는 컴퓨팅 시스템의 일 실시예에 따른 개념적 모델을 도시한다.
도 3은 I/O 스케줄링을 조정하여 데이터 저장 서브시스템 상에서의 예측치 못한 가변 I/O 응답 시간을 감소시키는 방법의 일 실시예를 예시하는 일반화된 흐름도이다.
도 4는 저장 장치에 발행된 동작을 분리하는 방법의 일 실시예를 예시하는 일반화된 블록도이다.
도 5는 저장 서브시스템에서 저장 장치의 거동을 특성화하는 모델을 개발하는 방법의 일 실시예를 예시하는 일반화된 흐름도이다.
도 6은 저장 서브시스템의 일 실시예를 예시하는 일반화된 블록도이다.
도 7은 장치 유닛의 다른 실시예를 예시하는 일반화된 블록도이다.
도 8은 상태 테이블의 다른 실시예를 예시하는 일반화된 블록도이다.
도 9는 I/O 스케줄링을 조정하여 데이터 저장 서브시스템 상에서의 예측치 못한 가변 I/O 응답 시간을 감소시키는 방법의 일 실시예를 예시하는 일반화된 흐름도이다.
도 10은 공유 데이터 저장장치에 대한 판독 동작이 효율적인 지연을 갖도록 유지하는 방법의 일 실시예를 예시하는 일반화된 흐름도이다.
도 11은 가변 I/O 응답 시간을 보이는 저장 장치의 수를 감소시키는 방법의 일 실시예를 예시하는 일반화된 흐름도이다.
도 12는 공유 데이터 저장장치에 대한 판독 동작이 효율적인 지연을 갖도록 유지하는 방법의 일 실시예를 예시하는 일반화된 흐름도이다.
본 발명은 다양한 변형 및 대안의 형태가 가능하지만, 특정 실시예가 도면에 예를 들어 도시되며 본 명세서에서 상세히 기술된다. 그러나, 그에 대한 도면 및 상세한 설명은 본 발명을 개시된 특정 형태로 제한하려는 것이 아니며, 반대로 본 발명은 첨부의 특허청구범위로 규정된 바와 같은 본 발명의 정신 및 범주 내에 속하는 변형, 등가물 및 대안을 모두 망라하고자 한다는 점을 이해해야 한다.
도 2는 컴퓨팅 시스템의 일 실시예에 따른 개념적 모델을 도시한다.
도 3은 I/O 스케줄링을 조정하여 데이터 저장 서브시스템 상에서의 예측치 못한 가변 I/O 응답 시간을 감소시키는 방법의 일 실시예를 예시하는 일반화된 흐름도이다.
도 4는 저장 장치에 발행된 동작을 분리하는 방법의 일 실시예를 예시하는 일반화된 블록도이다.
도 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)에 접속, 접속해제, 및 재접속함에 따라 개별 클라이언트 컴퓨터 접속 타입이 변할 수 있다. 또한, 본 설명이 대체로 네트워크 부착형 저장장치를 기술하지만, 본 명세서에서 기술된 시스템 및 방법은 직접 부착된 저장 시스템에도 또한 적용될 수 있으며 기술된 방법의 하나 이상의 양태를 수행하도록 구성된 호스트 운영 체제를 포함할 수 있다. 많은 그러한 대안도 가능하고 예상된다. 도 1에 도시된 각 컴포넌트의 추가 설명이 간략히 제공된다. 먼저, 데이터 저장 어레이(120a-120b)에 의해 제공되는 특징들 중 일부의 개요가 기술된다.
네트워크 아키텍처(100)에서, 데이터 저장 어레이(120a-120b)는 각각 클라이언트 컴퓨터 시스템(110a-110c)과 같은 서로 다른 서버 및 컴퓨터 간의 데이터 공유를 위해 사용될 수 있다. 또한, 데이터 저장 어레이(120a-120b)는 디스크 미러링(mirroring), 백업 및 복원, 기록 및 기록된 데이터의 검색, 및 하나의 저장 장치로부터 다른 저장 장치로의 데이터 이동을 위해 사용될 수 있다. 대안의 실시예에서, 하나 이상의 클라이언트 컴퓨터 시스템(110a-110c)은 고속 근거리 네트워크(LANs)를 통해 서로 링크되어 클러스터를 구성할 수 있다. 그러한 클라이언트들은 저장 자원, 이를 테면, 데이터 저장 어레이(120a-120b) 중 하나 내에 존재하는 클러스터 공유 볼륨(volume)을 공유할 수 있다.
데이터 저장 어레이(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)는 판독 및 기록 요청을 수신하도록 구성될 수 있으며 복수의 데이터 저장 위치를 포함할 수 있으며, 각각의 데이터 저장 위치는 어레이에서 로우 및 컬럼으로 어드레스 가능하다. 일 실시예에서, 저장 장치(176a-176m) 내의 데이터 저장 위치는 논리적인 중복 저장 컨테이너 또는 RAID 어레이(저렴한/독립 디스크들의 중복 어레이들)로 배열될 수 있다. 일부 실시예에서, 각각의 저장 장치(176a-176m)는 통상적인 하드 디스크 드라이브(HDD)와 다른 데이터 저장 기술을 이용할 수 있다. 예를 들면, 저장 장치(176a-176m) 중 하나 이상은 영구 데이터를 저장하는 고상 메모리로 구성되는 저장장치를 포함하거나 그러한 저장장치에 추가로 연결될 수 있다. 다른 실시예에서, 저장 장치(176a-176m) 중 하나 이상은 스핀 토크 전달 기술, 자기저항 랜덤 액세스 메모리(MRAM) 기술, 싱글 디스크(shingled disks), 멤리스터(memristors), 상 변화(phase change) 메모리, 또는 다른 저장 기술과 같은 다른 기술을 이용하는 저장장치를 포함하거나 그러한 저장장치에 추가로 연결될 수 있다. 이러한 다른 저장 기법 및 기술은 저장 장치들 간에 서로 다른 I/O 특성을 가져올 수 있다.
일 실시예에서, 포함된 고상 메모리는 고상 드라이브(SSD) 기술을 포함한다. 전형적으로, SSD 기술은 플래시 메모리 셀을 이용한다. 본 기술 분야에서 잘 알려진 바와 같이, 플래시 메모리 셀은 플로팅 게이트(floating gate)에 트랩(trapped)되어 저장된 전자들의 범위에 기초하여 이진값을 보유한다. 완전히 소거된 플래시 메모리 셀은 플로팅 게이트에 전자를 전혀 저장하지 않거나 최소한만 저장한다. 싱글 레벨 셀(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 스케줄링 알고리즘은 이러한 동작을 분리하고 스케줄링 목적상 이들을 개별적으로 처리할 수 있다. 예를 들면, 하나 이상의 저장 장치(176a-176m) 내에서, 기록 동작은 그 장치 스스로, 이를 테면, 내부 캐시에 이를 저장함으로써 배치(batched)될 수 있다. 이러한 캐시가 주어진 점유(occupancy) 임계치, 또는 어떤 다른 시간에 도달하면, 해당 저장 장치(176a-176m)는 캐시를 플러시(flush)할 수 있다. 일반적으로, 이러한 캐시 플러시는 예측 불가능한 시간에 판독 및/또는 기록하는데 추가 지연을 발생시켜, 동작을 효과적으로 스케줄링하는 것을 어렵게 만들 수 있다. 따라서, I/O 스케줄러는 캐시의 크기 또는 측정된 유휴(idle) 시간과 같은 저장 장치의 특성을 이용하여, 그러한 캐시 플러시가 발생할 수 있는 시간을 예측할 수 있다. 하나 이상의 저장 장치(176a-176m) 각각의 특성을 알면 좀 더 효과적인 I/O 스케줄링이 가능할 수 있다. 일 실시예에서, 글로벌 I/O 스케줄러(178)는 하나 이상의 저장 장치(176a-176m) 중 주어진 장치가 예측치 못한 시간에 I/O 요청에 대해 장시간 응답 시간을 보이는 것을 검출할 수 있다. 이에 응답하여, 글로벌 I/O 스케줄러(178)는 주어진 장치에 대한 주어진 동작을 스케줄링하여 그 장치가 예상 거동을 보이는 것을 재개하도록 할 수 있다. 일 실시예에서, 그러한 동작은 캐시 플러시 커맨드, 트림(trim) 커맨드, 소거 커맨드, 또는 다른 것일 수 있다. 또한, I/O 스케줄링에 관한 추가적인 세부 내용에 대해서는 아래에서 기술될 것이다.
네트워크 아키텍처의 컴포넌트
다시, 도시된 바와 같이, 네트워크 아키텍처(100)는 네트워크(180 및 190)를 통해 서로 그리고 데이터 저장 어레이(120a-120b)에 상호 접속된 클라이언트 컴퓨터 시스템(110a-110c)을 포함한다. 네트워크(180 및 190)는 무선 접속, 직접 근거리 네트워크(LAN) 접속, 인터넷과 같은 광역 네트워크(WAN) 접속, 라우터, 저장 영역 네트워크, 이더넷, 또는 다른 것을 포함하여 다양한 기술을 포함할 수 있다. 네트워크(180 및 190)는 무선일 수도 있는 하나 이상의 LAN을 포함할 수 있다. 네트워크(180 및 190)는 원격 직접 메모리 액세스(RDMA) 하드웨어 및/또는 소프트웨어, 전송 제어 프로토콜/인터넷 프로토콜(TCP/IP) 하드웨어 및/또는 소프트웨어, 라우터, 중계기(repeaters), 스위치, 그리드(grids) 및/또는 다른 것을 더 포함할 수 있다. 네트워크(180 및 190)에는 섬유 채널, 이더넷을 통한 섬유 채널(FCoE), iSCSI 등과 같은 프로토콜이 사용될 수 있다. 스위치(140)는 두 네트워크(180 및 190)와 관련된 프로토콜을 사용할 수 있다. 네트워크(190)는 전송 제어 프로토콜(TCP) 및 인터넷 프로토콜(IP), 또는 TCP/IP와 같은 인터넷(160)에 사용되는 일련의 통신 프로토콜과 인터페이스할 수 있다. 스위치(150)는 TCP/IP 스위치일 수 있다.
클라이언트 컴퓨터 시스템(110a-110c)은 데스크 탑 개인용 컴퓨터(PCs), 서버, 서버 팜, 워크스테이션, 랩탑, 핸드헬드 컴퓨터, 서버, 개인 정보휴대 단말기(PDAs), 스마트폰 등과 같은 임의 개수의 고정식 또는 이동식 컴퓨터를 나타낸다. 일반적으로 말하면, 클라이언트 컴퓨터 시스템(110a-110c)은 하나 이상의 프로세서 코어를 포함하는 하나 이상의 프로세서를 포함한다. 각 프로세서 코어는 사전 정의된 범용 명령어 집합에 따라 명령어를 실행하는 회로를 포함한다. 예를 들면, x86 명령어 집합 아키텍처가 선택될 수 있다. 대안으로, Alpha®, PowerPC®, SPARC®, 또는 어떤 다른 범용 명령어 집합 아키텍처가 선택될 수 있다. 이러한 프로세서 코어는 데이터 및 컴퓨터 프로그램 명령어를 위해 캐시 메모리 서브시스템에 액세스할 수 있다. 캐시 서브시스템은 랜덤 액세스 메모리(RAM) 및 저장 장치를 포함하는 메모리 계층에 연결될 수 있다.
클라이언트 컴퓨터 시스템 내의 각 프로세서 코어 및 메모리 계층은 네트워크 인터페이스에 접속될 수 있다. 하드웨어 컴포넌트 외에, 각각의 클라이언트 컴퓨터 시스템(110a-110c)은 메모리 계층 내에 저장된 기본 운영 체제(OS)를 포함할 수 있다. 기본 OS는, 예를 들어, MS-DOS®, MS-WINDOWS®, OS/2®, UNIX®, Linux®, Solaris®, AIX®, DART, 또는 그 밖의 다른 것과 같은 다양한 운영 체제 중 어떤 것을 나타낼 수 있다. 그와 같이, 기본 OS는 다양한 서비스를 최종 사용자(end-user)에게 제공하고 각종 프로그램의 실행을 지원하도록 동작가능한 소프트웨어 프레임워크(framework)를 제공하도록 동작가능할 수 있다. 추가적으로, 각각의 클라이언트 컴퓨터 시스템(110a-110c)은 가상 기계(VMs)를 지원하는데 사용되는 하이퍼바이저(hypervisor)를 포함할 수 있다. 당업자에게 잘 알려진 바와 같이, 가상화(virtualization)는 데스크탑에 이용될 수 있으며 시스템의 하드웨어로부터 OS와 같은 소프트웨어를 완전히 또는 부분적으로 연결해제하는 기능을 한다. 가상화는 최종 사용자에게 다수의 OS가 각각 자신의 자원을 갖고 동일 기계에서 실행하고 각각의 데이터 저장 어레이(120a-120b) 내의 저장 장치(176a-176m)에 구축된 논리적 저장 엔티티(예컨대, LUNs)에 액세스하는 착각을 줄 수 있다.
각각의 데이터 저장 어레이(120a-120b)는 클라이언트 컴퓨터 시스템(110a-110c)과 같은 서로 다른 서버들 간에서 데이터를 공유하는데 사용될 수 있다. 각각의 데이터 저장 어레이(120a-120b)는 데이터 저장을 위해 저장 서브시스템(170)을 포함한다. 저장 서브시스템(170)은 복수의 저장 장치(176a-176m)를 포함할 수 있다. 이러한 저장 장치(176a-176m) 각각은 SSD일 수 있다. 제어기(174)는 수신된 판독/기록 요청을 처리하기 위한 로직을 포함할 수 있다. 예를 들면, 앞에서 간략하게 기술된 알고리즘은 적어도 제어기(174)에서 실행될 수 있다. 수신된 기록 요청과 같은 동작을 배치(batch)하기 위해 랜덤 액세스 메모리(RAM)(172)가 사용될 수 있다. 여러 실시예에서, 기록 동작(또는 다른 동작)을 배치할 때, 비휘발성 저장장치(예컨대, NVRAM)가 사용될 수 있다.
메모리 매체(130)에 저장되어 있는 기본 OS(132), 파일 시스템(134), 어떤 OS 드라이버(미도시) 및 다른 소프트웨어는 파일에 대한 액세스를 제공하는 기능성 및 이러한 기능성의 관리를 제공할 수 있다. 기본 OS(134) 및 OS 드라이버는 메모리 매체(130)에 저장된, 저장 서브시스템(170) 내에서 수신된 요청에 해당하는 하나 이상의 메모리 액세스 동작을 수행하도록 프로세서(122)에 의해 실행가능한 프로그램 명령어를 포함할 수 있다. 도 1에 도시된 시스템은 일반적으로 하나 이상의 파일 서버 및/또는 블록 서버를 포함할 수 있다.
각각의 데이터 저장 어레이(120a-120b)는 네트워크 인터페이스(124)를 이용하여 네트워크(180)에 접속할 수 있다. 클라이언트 컴퓨터 시스템(110a-110c)과 유사하게, 일 실시예에서, 네트워크 인터페이스(124)의 기능성은 네트워크 어댑터 카드에 포함될 수 있다. 네트워크 인터페이스(124)의 기능성은 하드웨어 및 소프트웨어 둘 다를 이용하여 구현될 수 있다. 랜덤 액세스 메모리(RAM)와 판독 전용 메모리(ROM)는 모두 네트워크 인터페이스(124)의 네트워크 카드 구현에 포함될 수 있다. 네트워크 인터페이스(124)의 기능성을 제공하기 위해 하나 이상의 주문형 반도체(ASICs)가 사용될 수 있다.
일 실시예에서, I/O 성능의 최적화를 추구하는 데이터 저장 모델이 개발될 수 있다. 일 실시예에서, 이러한 모델은 적어도 부분적으로 저장 시스템 내의 저장 장치의 특성을 기반으로 한다. 예를 들면, 고상 저장 기술을 이용하는 저장 시스템에서, 특정 장치용 모델을 개발하기 위해 그 장치의 특성이 이용될 수 있으며, 이는 다시 대응하는 I/O 스케줄링 알고리즘에 알려주는 기능을 할 수 있다. 예를 들면, 만일 사용되는 특정 저장 장치가 판독 지연에 비해 상대적으로 높은 기록 지연을 보인다면, 그러한 특성은 스케줄링 동작에서 설명될 수 있다. 상대적으로 높거나 낮다고 간주되는 것은 주어진 시스템, 처리되는 데이터 타입, 처리되는 데이터 양, 데이터 타이밍, 또는 그 밖의 다른 것에 따라 변할 수 있다. 일반적으로 말하면, 시스템은 저지연 또는 고지연을 구성하는 것, 및/또는 그 둘 간의 상당한 차(significant difference)를 구성하는 것을 결정하도록 프로그램가능하다.
일반적으로 말하면, 장치, 또는 컴퓨팅 시스템용으로 개발된 모든 모델은 불완전할 것이다. 종종, 단순히 실세계 시스템에서는 설명할 변수가 너무 많아서 주어진 시스템을 완전히 모델링하지 못한다. 어떤 경우에는, 완전하지는 않지만 그럼에도 불구하고 가치있는 모델을 개발하는 것이 가능할 수 있다. 아래에서 보다 상세히 설명되는 바와 같이, 저장 장치의 특성에 따라 그 장치를 모델링하는 실시예가 기술된다. 여러 실시예에서, I/O 스케줄링은 장치가 어떻게 거동할 수 있는지에 대한 소정 예측에 기초하여 수행된다. 장치의 특성을 이해함에 기초하여, 소정의 장치 거동이 다른 장치보다 더 예측가능하다. 최적의 I/O 성능을 위해 동작을 좀 더 효과적으로 스케줄링하기 위해서는, 시스템의 거동에 대해 더 잘 제어하는 것이 바람직하다. 예상치 못한, 또는 예측이 불가능한 장치 거동은 동작을 스케줄링하는 것을 더 어렵게 한다. 따라서, 시스템에서 예측이 불가능하거나 예상치 못한 거동을 최소화하고자 하는 알고리즘이 개발된다.
도 2는 모델링되는 장치 또는 시스템, 및 그 장치 또는 시스템 내에서 예측이 불가능한 거동을 최소화하는데 사용되는 접근법의 개념적 예시를 제공한다. 제1 블록(200)에는, 이상적인 시나리오가 도시되어 있다. 블록(200)에는 시스템(204)과 그 시스템의 모델(202)이 도시되어 있다. 일 실시예에서, 시스템은 단일 장치의 시스템일 수 있다. 대안으로, 시스템은 많은 장치 및/또는 컴포넌트를 포함할 수 있다. 전술한 바와 같이, 모델(202)은 시스템(204)이 모델링하고자 하는 시스템의 완전한 모델이 아닐 수 있다. 그럼에도 불구하고, 모델(202)은 그 모델의 목적상의 관심 거동을 캡처한다. 일 실시예에서, 모델(202)은 컴퓨팅 저장 시스템을 모델링하고자 할 수 있다. 이상적인 시나리오(200)에서, 시스템(204)의 실제 거동은 모델(202)의 거동과 "일치"한다. 다시 말하면, 시스템(204)의 거동은 모델(202)이 캡처하고자 하는 그 거동과 대체로 부합한다. 시스템 거동(204)이 모델(202)의 거동과 일치하는 동안, 시스템 거동은 대체로 더 예측가능할 수 있다. 결과적으로, 시스템 내에서 동작(예컨대, 판독 및 기록 동작)의 스케줄링은 보다 효과적으로 수행될 수 있다.
예를 들면, 만일 판독 응답 시간을 최적화하고자 한다면, 시스템의 다른 거동이 비교적 예측가능한 경우 좀 더 시기 적절한 방식으로 판독 서비스가 이루어지도록 판독을 스케줄링할 수 있다. 반면에, 만일 시스템 거동이 비교적 예측 불가능한 경우, 그러한 판독을 스케줄링하여 원할 때 결과를 제공할 수 있는 능력에 대한 신뢰도가 떨어진다. 블록(210)은 시스템 거동(작은 원)이 그 시스템의 모델의 거동(큰 원)과 일치하지 않는 시나리오를 예시한다. 이 경우, 시스템은 모델 밖에 있는 거동을 보인다. 결과적으로, 시스템 거동은 덜 예측가능하고 동작 스케줄링은 덜 효과적일 수 있다. 예를 들면, 만일 고상 메모리 장치가 저장 시스템에 사용되고, 이러한 장치가 스스로 그 장치로 하여금 더 큰 (또는 그렇지 않고 예상치 못한) 지연을 갖고 요청에 서비스를 제공하게 하는 액션을 개시할 수 있다면, 그 장치에 대해 스케줄링된 임의의 동작은 더 크거나 예상치 못한 지연을 또한 경험할 수 있다. 그러한 장치 동작의 일예는 내부 캐시 플러시이다.
예상치 못하거나 스케줄링되지 않은 시스템 거동 및 대응하는 가변 성능의 문제를 다루기 위해, 개발된 모델은 시스템을 덜 불확실한 상태로 복원하기 위해 취할 수 있는 액션을 포함할 수 있다. 다시 말하면, 시스템이 시스템의 거동을 예측할 수 있는 모델의 능력을 떨어트리는 거동을 보이기 시작한다면, 모델에는 시스템을 특정한 예상치 못한 거동을 제거하거나 덜 일어나게 하는 상태로 복원하기 위해 취할 수 있는 소정 액션이 내장되어 있다. 도시된 예에는, 시스템을 모델과 보다 가깝게 맞추어 조정된 상태로 "이동"하려고 하는 액션(212)이 도시되어 있다. 액션(212)은 모델 밖에 있는 시스템 거동을 검출함에 응답하여 수행되기 때문에 "리액티브(reactive)" 액션 또는 동작이라고 불릴 수 있다. 액션(212)을 수행한 후에, 좀 더 이상적인 상태(220)에 도달할 수 있다.
예측 불가능한 거동에 반응하여 시스템을 좀 더 이상적인 상태로 이동할 수 있는 모델을 개발하는 것이 바람직하지만, 그러한 예측 불가능한 행동이 존재하면 여전히 효과적인 스케줄링 동작을 방해할 수 있다. 따라서, 예상치 못한 거동 또는 이벤트의 발생을 최소화하는 것이 바람직할 것이다. 일 실시예에서, 예상치 못한 거동의 발생을 방지하거나 감소하도록 설계된 액션 또는 동작을 포함하는 모델이 개발된다. 이러한 액션은 대체로 어떤 거동 또는 이벤트의 발생을 방지하거나, 또는 어떤 거동 또는 이벤트의 타이밍을 변경하기 위해 예방적으로(proactively) 수행될 수 있기 때문에 "프로액티브" 액션 또는 동작이라고 불릴 수 있다. 도 2에서 블록(230)은 시스템 거동(작은 원)이 모델의 거동(큰 원) 내에 있는 시나리오를 예시한다. 그럼에도 불구하고, 모델은 시스템 거동이 모델 내에 유지되고 아마도 좀 더 이상적으로 정렬되는 방식으로 시스템 거동을 이동시키기 위해 액션(232)을 취한다. 블록(230)에서 시스템 거동은 모델 밖의 거동이 보이는 상태에 가까워지고 있는 것으로 보일 수 있다. 그러한 경우, 모델은 시스템이 그러한 상태에 가까워지고 있다고 생각하는 어떤 근거를 가질 수 있다. 예를 들면, 만일 I/O 스케줄러가 많은 기록 동작을 주어진 장치로 전달하였다면, 스케줄러는 그 장치가 미래의 어떤 시간에 내부 캐시 플러시 동작을 수행할 수 있다고 예상할 수 있다. 그러한 이벤트의 발생을 대기하는 대신, 스케줄러는 캐시 플러시가 스케줄러의 선택시 수행되도록 그 장치의 캐시 플러시 동작을 예방적으로 스케줄링할 수 있다. 대안으로, 또는 전술한 바 외에, 그러한 프로액티브 동작은 랜덤한 시간에 수행될 수 있다. 캐시 플러시가 여전히 발생하지만, 그러한 발생은 예상되지 않고 이제 스케줄러에 의해 수행되는 전체 스케줄링의 일부가 되었고 보다 효과적이면서 지능적인 방식으로 관리될 수 있다. 이러한 프로액티브 액션(232)을 수행한 후에, 시스템은 대체로 보다 예측가능한 상태(240)에 있는 것으로 보일 수 있다. 이는 캐시 플러시가 장치에서 스케줄링되고 수행되며 장치가 스스로 내부 캐시 플러시를 자발적으로 개시할 가능성이 감소되기(즉, 그의 캐시는 이미 플러시 되었기) 때문이다. 모델 내에서 리액티브 및 프로액티브 액션 또는 동작을 결합함으로써, 더 큰 시스템 예측가능성이 성취될 수 있으며 개선된 스케줄링도 마찬가지로 성취될 수 있다.
이제 도 3을 참조하면, I/O 스케줄링을 수행하여 예측치 못한 거동을 감소시키는 방법(300)의 일 실시예가 도시되어 있다. 네트워크 아키텍처(100)에 구체화된 컴포넌트 및 전술한 데이터 저장 어레이(120a-120b)는 대체로 방법(300)에 따라 동작할 수 있다. 이 실시예에서 단계들은 순차적인 순서로 도시되어 있다. 그러나, 일부 단계는 도시된 것과 다른 순서로 발생할 수 있고, 일부 단계는 동시에 수행될 수 있고, 어떤 단계는 다른 단계와 결합될 수 있으며, 일부 단계는 다른 실시예에 존재하지 않을 수 있다.
블록(302)에서, I/O 스케줄러는 하나 이상의 저장 장치에 대한 판독 및 기록 동작을 스케줄링한다. 여러 실시예에서, I/O 스케줄러는 각 저장 장치마다 (물리적으로 또는 논리적으로) 개별의 큐(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 스케줄러는 저장 장치 내에서 저장 장치에 대한 요청의 응답 시간에 영향을 미칠 수 있는 내부 캐시 플러시가 막 발생한다는 것을 검출하거나 예측할 수 있다. 예를 들면, 일 실시예에서, 주어진 시간량 동안 유휴 상태에 있는 저장 장치는 그의 내부 캐시를 플러시할 수 있다. 일부 실시예에서, 주어진 장치가 유휴 상태에 있는지 여부는 장치 외부의 관점에 기반할 수 있다. 예를 들면, 만일 주어진 시간 동안 장치의 동작이 스케줄링되지 않았다면, 장치는 대략 그 시간 동안 유휴 상태에 있는 것으로 간주될 수 있다. 그러한 실시예에서, 장치는 실제로는 장치 내에서 내부에서 시작한 활동에 기초하여 사용 중(busy)일 수 있다. 그러나, 그러한 내부에서 시작한 활동은 장치가 유휴 상태인지를 판단할 때 고려되지 않을 것이다. 다른 실시예에서, 장치가 유휴 상태인지 사용 중인지를 판단할 때 장치의 내부에서 시작한 활동이 고려될 수 있다. 장치의 거동을 관찰하고, 그 장치가 주어진 시간량 동안 유휴 상태에 있었음을 주목함으로써, 스케줄러는 내부 캐시 플러시가 발생할 수 있는 시간을 예측할 수 있다. 다른 실시예에서, 스케줄러는 또한 장치를 폴링(poll)하여 장치의 다양한 상태 또는 상황을 판단할 수 있는 능력을 가질 수 있다. 어떠한 상황에도, 스케줄러는 내부 캐시 플러시와 같은 스케줄링되지 않은 거동의 잠재성을 결정하고 프로액티브 동작을 시작하여 거동의 발생을 방지하도록 구성될 수 있다. 이러한 방식으로, 스케줄러는 장치, 및 시스템에서의 이벤트의 타이밍을 제어하고, 동작을 더 잘 스케줄링할 수 있다.
장치 거동에 관한 예측을 위한 근거로서 다양한 특성이 이용될 수 있다. 여러 실시예에서, 스케줄러는 현재 계류 중인 동작의 상태 및/또는 저장 장치에 해당하는 최근 동작의 이력을 유지할 수 있다. 일부 실시예에서, I/O 스케줄러는 장치 내 캐시의 크기 및/또는 캐싱 정책을 인식하고 저장 장치로 송신되는 많은 기록 요청 횟수를 유지할 수 있다. 다른 실시예에서, 장치 내 캐시의 상태(예컨대, 장치에 대한 직접 폴링 타입 액세스)를 결정하기 위해 다른 메커니즘이 이용가능할 수 있다. 또한, I/O 스케줄러는 저장 장치에 송신되는 기록 요청시의 데이터 량을 추적할 수 있다. 다음에, I/O 스케줄러는 기록 요청 횟수 또는 기록 요청에 해당하는 총 데이터 량이 주어진 임계치에 도달하는 시간을 검출할 수 있다. 만일 I/O 스케줄러가 그러한 상태를 검출하면(조건부 블록(306)), 블록(308)에서 I/O 스케줄러는 해당 장치에 대해 특정한 동작을 스케줄링할 수 있다. 그러한 동작은 대체로 전술한 프로액티브 동작에 해당할 수 있다. 예를 들어, I/O 스케줄러는 캐시 플러시 커맨드를 대응 큐에 두어, 저장 장치가 스케줄러의 선택 시에 캐시 플러시를 수행하도록 강요할 수 있다. 대안으로, I/O 스케줄러는 저장 장치에서 임의의 캐시 플러시가 완료하였는지 여부를 판단하기 위해 큐에 더미(dummy) 판독 동작을 둘 수 있다. 또한, 스케줄러는 장치에 질의하여 상태 정보(예컨대, 유휴 상태인지, 사용 중인지 등)를 획득할 수 있다. 이러한 특성 및 동작과 다른 특성 및 동작도 가능하고 예상된다. 또한, 여러 실시예에서, 프로액티브 동작은 SSD를 제자리에서 재조정할 때 스케줄링될 수 있다. 그러한 실시예에서, SSD 펌웨어 및/또는 매핑 테이블은 요청이 정지된 채 있거나(hang) 영구적으로 느린 상태가 될 수 있다. 드라이브를 단지 리셋하거나 드라이브 전원을 온오프하여 펌웨어의 장애를 없애는 것이 가능할 수 있다. 그러나, 만일 조건이 영구적(즉, 매핑 테이블의 현재 상태를 처리할 수 없는 펌웨어의 버그)이면, 이를 수리하는 다른 방식은 드라이브를 재포맷화하여 FTL을 완전히 깨끗이 하고 리셋한 다음 이를 재배치(repopulate)하거나 어떤 다른 데이터용으로 재사용하는 것이다.
전술한 액션은 많은 예측치 못한 가변 응답 시간의 발생을 방지하거나 감소하도록 수행될 수 있다. 동시에, I/O 스케줄러는 예측치 못한 시간에 주어진 저장 장치의 어떤 가변 거동의 발생을 검출할 수 있다. 만일 I/O 스케줄러가 그러한 조건을 검출하면(조건부 블록(310)), 블록(312)에서 I/O 스케줄러는 저장 장치의 대응하는 큐에 동작을 둘 수 있다. 이 경우, 이러한 동작은 대체로 전술한 리액티브 동작에 해당할 수 있다. 이러한 동작은 저장 장치가 가변 거동을 제공하는 시간량을 감소시키면서 가변 거동의 끝을 검출하는데 사용될 수 있다. 여러 실시예에서, 프로액티브 및/또는 리액티브 동작은 일반적으로 장치를 (적어도 부분적으로) 알려진 상태로 둘 수 있는 어떤 동작이라도 포함할 수 있다. 예를 들면, 캐시 플러시 동작을 개시하면 장치가 빈(empty) 캐시 상태에 이를 수 있다. 캐시가 빈 장치는 캐시가 비어 있지 않은 장치보다 내부 캐시 플러시를 개시할 가능성이 적을 수 있다. 프로액티브 및/또는 리액티브 동작의 일부 예는 캐시 플러시 동작, 소거 동작, 보안 삭제(secure erase) 동작, 트림(trim) 동작, 슬립(sleep) 동작, 휴면(hibernate) 동작, 전원 온오프, 및 리셋 동작을 포함한다.
이제 도 4를 참조하면, 저장 장치에 발행된 동작을 분리하는 방법(400)의 일 실시예가 도시되어 있다. 이 실시예에서 단계들은 순차적인 순서로 도시되어 있다. 그러나, 일부 단계는 도시된 것과 다른 순서로 발생할 수 있고, 일부 단계는 동시에 수행될 수 있고, 일부 단계는 다른 단계와 결합될 수 있으며, 일부 단계는 다른 실시예에 존재하지 않을 수 있다. 여러 실시예에서, 제1 타입의 동작은 스케줄링 목적상 제2 타입의 동작과 분리될 수 있다. 예를 들면, 일 실시예에서, 제1 타입의 동작은 제2 타입의 동작보다 스케줄링 우선권(priority)이 주어질 수 있다. 그러한 실시예에서, 제1 타입의 동작은 상대적으로 빠르게 처리하도록 스케줄링될 수 있으며, 반면에 제2 타입의 동작은 나중에 처리하도록 큐잉된다(사실상 동작 처리를 연기함). 주어진 시점에, 제1 타입의 동작 처리는 중단될 수 있으며 반면에 (제2 타입의) 이전에 큐잉된 동작이 처리된다. 이어서, 제2 동작 타입의 처리는 다시 중단될 수 있으며 반면에 처리 우선권은 제1 타입의 동작으로 되돌아간다. 제1 타입의 처리가 중단되고 다른 타입의 처리가 시작하는 시간은 시간 기간, 누적 데이터, 트랜잭션 빈도, 이용가능한 자원(예컨대, 큐 이용), 전술한 것들의 어떤 조합에 기반할 수 있거나, 또는 원하는 어떤 조건에 기반할 수 있다.
랜덤한 판독 및 기록 요청의 경우, SSD는 전형적으로 HDD보다 더 좋은 성능을 보인다. 그러나, SSD는 전형적으로 SSD의 특성으로 인해 랜덤한 기록 요청의 경우 판독 요청보다 낮은 성능을 보인다. HDD와 달리, 판독 및 기록 요청의 상대 지연은 상당히 다르며, 여기서 기록 요청은 전형적으로 플래시 메모리 셀을 프로그램하는 것이 판독하는 것보다 시간이 더 걸리기 때문에 판독 요청보다 시간이 상당히 더 걸린다. 또한, 기록 동작의 지연은 기록의 일부로 수행될 필요가 있는 추가 동작으로 인해 상당히 가변적일 수 있다. 예를 들면, 소거 동작은 이미 변경된 플래시 메모리 셀의 기록 또는 프로그램 동작 전에 수행될 수 있다. 추가적으로, 소거 동작은 블록 방식(block-wise) 단위로 수행될 수 있다. 그러한 경우, 블록(소거 세그먼트) 내의 모든 플래시 메모리 셀은 함께 소거된다. 블록은 비교적 크고 다수의 페이지를 포함하기 때문에, 동작은 비교적 장시간 걸릴 수 있다. 대안으로, FTL은 블록을 이미 소거된 소거 블록으로 재매핑할 수 있다. 어느 경우든지, 기록 동작을 수행하는 것과 관련된 동작을 추가하면 기록은 판독보다 지연을 상당히 클 뿐 아니라 지연 가변성을 상당히 클 수 있다. 다른 저장 장치 타입은 요청 타입에 기초하여 서로 다른 특성을 보일 수 있다. 전술한 바 외에, 소정 저장 장치는 판독 및 기록 요청을 혼합한 경우 낮은 및/또는 가변 성능을 제공할 수 있다. 따라서, 성능을 향상시키기 위해, 여러 실시예는 판독 및 기록 요청을 분리할 수 있다. 본 설명이 대체로 판독 및 기록 동작에 관하여 특별히 언급하고 있지만, 본 명세서에서 기술된 시스템 및 방법은 다른 동작에도 역시 적용될 수 있다는 점이 주목된다. 그러한 다른 실시예에서, 비교적 지연이 높은 다른 동작과 낮은 다른 동작은 그와 같이 식별될 수 있으며 스케줄링 목적상 분리될 수 있다. 추가적으로, 일부 실시예에서, 판독 및 기록은 제1 타입의 동작으로 분류될 수 있으며, 반면에 캐시 플러시 및 트림 동작과 같은 다른 동작은 제2 타입의 동작에 해당하는 것으로 분류될 수 있다. 다양한 조합도 가능하고 예상된다.
블록(402)에서, I/O 스케줄러는 하나 이상의 저장 장치 중 주어진 저장 장치의 I/O 요청을 수신하고 버퍼링할 수 있다. 블록(404)에서, 저지연(low-latency) I/O 요청은 대체로 고지연(high latency) 요청에 우선하여 저장 장치에 발행될 수 있다. 예를 들면, 저장 장치에 의해 이용되는 저장 기술에 의존하여, 판독 요청은 기록 요청 및 다른 커맨드 타입보다 적은 지연을 가질 수 있으며 먼저 발행될 수 있다. 결과적으로, 기록 요청은 누적될 수 있으며 반면에 판독 요청은 발행 우선권이 주어진다(즉, 기록 요청보다 먼저 장치로 전달된다). 어떤 시점에, I/O 스케줄러는 장치로의 판독 요청의 발행을 중단하고 기록 요청의 발행을 시작할 수 있다. 일 실시예에서, 기록 요청은 다수의 기록의 스트림으로서 발행될 수 있다. 따라서, 기록 요청과 관련된 오버헤드는 다수의 기록 요청 동안 분할 상각(amortized)될 수 있다. 이러한 방식으로, 고지연 요청(예컨대, 기록 요청) 및 저지연 요청(예컨대, 판독 요청)은 분리되고 개별적으로 처리될 수 있다.
블록(406)에서, I/O 스케줄러는 고지연 요청이 장치(들)로 전달되어야 함을 나타내는 특정 조건이 존재하는지를 판단할 수 있다. 예를 들면, 일 실시예에서, 그러한 조건을 검출하는 것은 주어진 횟수의 고지연 I/O 요청, 또는 대응하는 데이터량이 누적되었고 주어진 임계치에 도달한 것을 검출하는 것을 포함할 수 있다. 대안으로, 수신되는 고지연 요청율이 어떤 임계치에 도달할 수 있다. 많은 그러한 조건이 가능하고 예상된다. 일 실시예에서, 고지연 요청은 기록 요청일 수 있다. 만일 그러한 조건이 발생하면(조건부 블럭(408)), 블록(410)에서 I/O 스케줄러는 고지연 I/O 요청을 주어진 저장 장치에 발행하기를 시작할 수 있다. 그와 같이 발행된 요청의 횟수는 주어진 알고리즘에 따라 다를 수 있다. 그 횟수는 고정된 또는 프로그램가능한 기록 횟수, 또는 데이터의 양에 해당할 수 있다. 대안으로, 주어진 시간 기간 동안 기록이 발행될 수 있다. 예를 들면, 그 시간 기간은 특정 조건이 소멸하거나(예컨대, 수신된 기록율이 떨어지거나), 또는 특정 조건이 발생할 때까지 지속할 수 있다. 대안으로, 전술한 것들 중 어떤 것의 조합도 고지연 요청을 장치(들)에 발행하기를 시작하는 시간 및 중단하는 시간을 판단할 때 사용될 수 있다. 일부 실시예에서, 기록 요청들의 스트림 후의 첫 번째 판독 요청은 다른 판독 요청에 비해 상대적으로 느릴 수 있다. 기록 요청들의 스트림 바로 다음의 발행 슬롯에서 "진짜(genuine)" 판독 요청의 스케줄링을 방지하기 위해, I/O 스케줄러는 그 기록 요청들의 스트림 다음에 "더미" 판독을 자동으로 스케줄링하도록 구성될 수 있다. 이러한 상황에서, "진짜" 판독은 사용자 또는 애플리케이션이 데이터를 요청하는 판독이고, "더미" 판독은 데이터를 간단히 폐기할 수 있는 인위적으로 생성된 판독이다. 여러 실시예에서, 더미 판독이 완료된 것으로 검출될 때까지, 기록 요청은 완료된 것으로 판단되지 않을 수 있다. 또한, 여러 실시예에서, 캐시 플러시는 기록들의 스트림에 후속할 수 있으며 기록이 완료된 시간을 판단하는데 사용될 수 있다.
이제 도 5를 참조하면, 저장 서브시스템 내에서 저장 장치의 거동을 특성화하는 모델을 개발하는 방법(500)의 일 실시예가 도시되어 있다. 이 실시예에서 단계들은 순차적인 순서로 도시되어 있다. 그러나, 일부 단계는 도시된 것과 다른 순서로 발생할 수 있고, 일부 단계는 동시에 수행될 수 있고, 일부 단계는 다른 단계와 결합될 수 있으며, 일부 단계는 다른 실시예에 존재하지 않을 수 있다.
블록(502)에서, 저장 서브시스템에서 하나 이상의 저장 장치를 선택하여 사용할 수 있다. 블록(504)에서, 각 장치마다 캐시 크기, 전형적인 판독 및 기록 응답 시간, 저장 토폴로지, 장치의 에이지 등과 같은 다양한 특성을 식별할 수 있다. 블록(506)에서, 주어진 저장 장치의 I/O 성능에 영향을 미치는 하나 이상의 특성을 식별할 수 있다.
블록(508)에서, 주어진 장치의 특성의 타이밍 및/또는 발생에 영향을 미치는 하나 이상의 액션을 결정할 수 있다. 그 예는 SSD의 소거 동작과 같은 주어진 동작의 캐시 플러시 및 실행을 포함할 수 있다. 예를 들면, 캐시 플러시와 같은 강제(force) 동작은 예측치 못한 시간에서의 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에 도시된 바와 같은 상태 테이블의 일 실시예를 예시하는 일반화된 블록도가 도시되어 있다. 일 실시예에서, 그러한 테이블은 주어진 저장 장치에 대한 상태, 오류, 마모(wear) 레벨 정보, 및 다른 정보에 대응하는 데이터를 포함할 수 있다. 대응하는 I/O 스케줄러는 이러한 정보에 액세스할 수 있으며, 이는 I/O 스케줄러가 저장 장치에 대한 I/O 요청을 더 잘 스케줄링하게 할 수 있다. 일 실시예에서, 이 정보는 장치 에이지(802), 오류율(804), 장치에서 검출된 총 오류 수(806), 복구가능한 오류 수(808), 복구 불가능한 오류 수(810), 장치의 액세스율(812), 저장된 데이터의 에이지(814), 대응하는 캐시 크기(816), 대응하는 캐시 플러시 유휴 시간(818), 할당 공간의 하나 이상의 할당 상태(820-822), 동시성 레벨(824), 및 각종 동작의 예상 시간(들)(826) 중 적어도 하나 이상을 포함할 수 있다. 할당 상태는 충만(filled), 빈(empty), 오류(error) 등을 포함할 수 있다. 주어진 장치의 동시성 레벨은 장치가 다수의 동작을 동시에 처리할 수 있는 능력에 관한 정보를 포함할 수 있다. 예를 들면, 만일 장치가 4개의 플래시 칩을 갖고 있고 각 칩이 한 번에 한 번의 전송을 할 수 있다면, 장치는 4개까지 병렬 동작이 가능할 수 있다. 특정 동작들이 병렬로 수행될 수 있는지 여부는 데이터가 장치에서 어떻게 레이아웃 되어 있느냐에 좌우될 수 있다. 예를 들면, 만일 장치 내부의 데이터가 레이아웃 되고 요청에 의해 액세스된 데이터가 모두 하나의 칩 상에 존재한다면, 그 데이터에 대한 동작은 다른 칩 상의 데이터를 액세스하는 요청과 병행하여 진행할 수 있다. 그러나, 만일 요청에 의해 액세스된 데이터가 다수의 칩에 걸처 스트립된(striped) 경우, 요청은 서로 방해할 수 있다. 결과적으로, 장치는 최대 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) 임계치를 초과하는 것을 검출하거나(조건부 블록(906)) 또는 캐시 데이터가 데이터 에이지 임계치를 초과하는 것을 검출하면(조건부 블록(908)), 블록(910)에서 I/O 스케줄러는 강제(프로액티브) 동작을 주어진 저장 장치에 발행할 수 있다. 그러한 경우, 스케줄러는 내부 캐시 플러시가 곧이어 그리고 예측 불가능한 시간에 발생할 것으로 예측할 수 있다. 그러한 이벤트의 발생을 방지하기 위해, I/O 스케줄러는 그러한 이벤트를 방지하기 위한 동작을 예방적으로 스케줄링한다.
전술한 바와 같은 이벤트의 방지라는 것은 그 이벤트가 발생하지 않거나, 또는 예측치 못한 또는 예상치 못한 시간에 발생하지 않는다는 것을 의미할 수 있음이 주목된다. 다시 말하면, 스케줄러는 일반적으로 주어진 이벤트가 스케줄러의 타이밍에 따라 발생하는 것을 선호하며, 그렇지 않으면 선호하지 않는다. 이런 의미에서, 스케줄러가 이벤트를 스케줄링하였기 때문에 발생하는 장시간의 지연 이벤트는 예상치 못하게 발생하는 그러한 이벤트보다 더 낫다. 스케줄링 로직(620) 내에 있는 타이머 및 카운터는 모니터(610)와 결합하여 적어도 이러한 검출을 수행하는데 사용될 수 있다. 주어진 저장 장치에 발행되는 강제 동작의 일예는 캐시 플러시를 포함할 수 있다. 강제 동작의 다른 예는 소거 요청을 포함할 수 있다. 강제 동작은 스케줄링의 일환으로서 I/O 스케줄러로부터 대응하는 장치 유닛(600) 내에 있는 장치 큐(710)의 대응하는 큐로 전송될 수 있다.
이제 도 10을 참조하면, 공유 데이터 저장장치에서 판독 동작이 비교적 낮은 지연을 갖도록 유지하는 방법(1000)의 일 실시예가 도시되어 있다. 네트워크 아키텍처(100)에 구체화된 구성 요소 및 전술한 데이터 저장 어레이(120a-120b)는 대체로 방법(1000)에 따라 동작할 수 있다. 설명의 목적상, 이 실시예에서 단계들은 순차적인 순서로 도시되어 있다. 그러나, 일부 단계는 도시된 것과 다른 순서로 발생할 수 있고, 일부 단계는 동시에 수행될 수 있고, 일부 단계는 다른 단계와 결합될 수 있으며, 일부 단계는 다른 실시예에 존재하지 않을 수 있다.
블록(1002)에서, 저장 서브시스템의 RAID 아키텍처에서 주어진 장치 그룹(173) 내에서 사용될 중복량을 결정할 수 있다. 예를 들면, 4+2 RAID 그룹의 경우, 저장 장치 중 2개는 패리티 정보와 같은 소거 정정 부호(erasure correcting code; ECC) 정보를 저장하는데 사용될 수 있다. 이러한 정보는 재구성(reconstruct) 판독 요청의 일부로 사용될 수 있다. 일 실시예에서, 재구성 판독 요청은 정상적인 I/O 스케줄링 중에 많은 저장 장치가 가변 I/O 응답 시간을 보이는 것으로 검출되는 동안 장치 그룹의 성능을 개선하는데 사용될 수 있다. 블록(1004)에서, 장치 그룹 내에서 동시에 사용 중이거나, 또는 가변 응답 시간을 보일 수 있는 최대 수의 장치를 결정한다. 이와 같은 최대 수는 목표(Target) 수라고 지칭될 수 있다. 일 실시예에서, 저장 장치는 기록 요청, 소거 요청, 또는 캐시 플러시를 실행함으로 인해 가변 응답 시간을 보일 수 있는 SSD이다. 일 실시예에서, 목표 수는 재구성 판독이 계속 수행될 수 있도록 선택된다.
일 실시예에서, I/O 스케줄러는 목표 수를 재구성 판독이 더 이상 효율적이지 않는 레벨로 상승하는 것을 정당화하는 조건을 검출할 수 있다. 예를 들면, 주어진 장치의 계류 중인 많은 기록 요청이 대기(waiting) 임계치에 도달할 수 있다(즉, 기록 요청이 상당 시간 기간 동안 계류 중이었고 이들이 더 이상 대기하지 않아야 한다고 판단된다). 대안으로, 전술한 바와 같은 나중의 발행을 위해 누적될 수 없는 비교적 우선순위가 높은 주어진 수의 기록 요청이 검출될 수 있다. 만일 I/O 스케줄러가 그러한 조건을 검출하면(조건부 블록(1006)), 블록(1008)에서 I/O 스케줄러는 하나 이상의 검출된 상태에 기초하여 목표를 증가하거나 감소할 수 있다. 예를 들면, I/O 스케줄러는 우선순위가 높은 적절한 수의 기록 요청이 계류 중이거나, 또는 어떤 다른 조건이 발생한 경우 목표가 지원되는 중복량을 초과하게 할 수 있다. 블록(1010)에서, I/O 스케줄러는 장치 그룹 내에서 N개의 저장 장치가 가변 I/O 응답 시간을 보인다고 판단할 수 있다. 만일 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 장치로 향하는 원(original) 판독 요청을 수신한다. 제1 장치는 특정한 스케줄링된 동작을 받음으로(예컨대, 알려진 이유) 인해 또는 어떤 알려지지 않은 이유로 인해 가변 응답 시간을 보일 수 있다. 여러 실시예에서, 가변 응답 시간이라고 간주되는 것은 적어도 부분적으로 주어진 동작의 예상 지연에 기초하여 결정될 수 있다. 예를 들면, 장치의 특성 및/또는 동작의 최근 이력에 따라, 주어진 판독에 대한 응답은 주어진 시간 기간 내에 발생할 것으로 예상될 수 있다. 예를 들면, 허용 응답 지연의 범위를 반영하도록 결정된 델타(delta)를 이용하여 해당 장치의 평균 응답 지연이 결정될 수 있다. 그러한 델타는 99%의 트랜잭션, 또는 어떤 다른 적절한 수의 트랜잭션을 차지하도록 선택될 수 있다. 만일 응답이 예상 시간 기간 내에 수신되지 않으면, 재구성 판독의 개시가 트리거(triggered)될 수 있다.
일반적으로 말하면, 재구성 판독의 모방(imitated) 여부는 재구성 판독의 수행과 연관된 비용과 재구성 판독의 결과로 얻는 (잠재적) 이익을 비교하는 비용 이익 분석을 기반으로 할 수 있다. 예를 들면, 만일 주어진 장치에서 원 판독 요청에 대한 응답이 주어진 시간 기간 내에 수신되지 않으면, 그 장치가 개시될 재구성 판독의 시간을 초과하는 지연을 초래하는 동작을 수행하는 것으로 예측될 수 있다. 따라서, 재구성 판독이 개시될 수 있다. 그러한 액션은 (예를 들어) 주어진 레벨의 판독 서비스 성능을 유지하도록 취해질 수 있다. 현재 로드, 수신되는 요청의 타입, 요청의 우선순위, 시스템 내 다른 장치의 상태, 도 7 및 도 8에 기술된 바와 같은 다양한 특성 등과 같은 다른 요소는 재구성 판독의 개시 여부를 판단할 때 역시 고려될 수 있음이 주목된다. 또한, 원 판독에 대한 비교적 장시간 응답 지연으로 인해 재구성 판독이 개시될 수 있지만, 실제로 원 판독 요청은 완료할 것으로 예상됨을 유념한다. 실제로 원 판독 및 재구성 판독은 성공적으로 완료하여 결과를 제공할 수 있다. 결과적으로, 재구성 판독은 원 요청의 서비스를 위해 필요하지 않다. 이는 지연 및 트랜잭션이 성공적으로 완료하지 못할 것임을(또는 못할 수 있음을) 나타내는 어떤 오류 표시를 검출하는 것과 같은 오류 조건에 기인한 지연과 대조적이다. 예를 들면, 주어진 저장 위치를 판독할 수 없음으로 인한 장치 타임아웃(timeout)은 완료하지 못할 것으로 예상되는 응답을 나타낸다. 그러한 경우, 재구성 판독은 그 요청을 서비스하기 위해 필요할 수 있다. 따라서, 여러 실시예에서, 시스템은 주어진 장치에 대해 적어도 두 가지 타임아웃 조건을 효과적으로 포함할 수 있다. 첫 번째 타임아웃은 일정 시간 기간에 해당하며 그 시간 후 반드시 필요하지는 않지만 재구성 판독이 개시될 수 있다. 이러한 방식으로, 재구성 판독은 비오류(non-error) 관련 스케줄링 프로세스의 정상 부분으로서 스케줄링 알고리즘에 포함될 수 있다. 첫 번째 타임아웃 후에 발생하는 두 번째 타임아웃은 일정 시간 기간을 나타내며 그 후 오류 상태가 발생한 것으로 생각된다. 이 경우, 재구성 판독은 또한 원 판독이 그 오류를 나타내는 장치에 의해 서비스되지 않을 것이라는 예상으로 인해 개시될 수 있다.
전술한 바에 비추어, I/O 스케줄러는 이어서 원 판독에 대응하는 재구성 판독의 개시 여부를 판단할 수 있다(판단 블록(1202)). 재구성 판독은 일반적으로 제1 장치와 다른 장치에 의해 서비스되는 하나 이상의 판독을 수반할 것이다. 재구성 판독의 개시 여부를 판단할 때, 많은 요소들이 고려될 수 있다. 일반적으로 말하면, I/O 스케줄러는 비용/이익 분석에 관여하여 제1 장치로 원 판독을 서비스하려 시도하거나, 또는 재구성 판독을 발행하여 원 판독을 서비스하려고 시도하는 것이 "더 좋을" 수 있는지를 판단한다. 전술한 바와 같이, 많은 요소들은 재구성 판독의 개시 여부를 판단할 때 고려될 수 있다. 주어진 상황에서 "더 좋은" 것은 변할 수 있고, 프로그램될 수 있고, 동적으로 결정될 수 있다. 예를 들면, 알고리즘은 언제나 더 빠른 판독 응답 시간을 선호하게 할 수 있다. 그러한 경우, 재구성 판독의 서비스가 원 장치에 의해 원 판독을 서비스하기 전에 완료할 수(또는 완료할 수도) 있는지에 대한 판단을 내릴 수 있다. 대안으로, 알고리즘은 주어진 시간에 시스템 로드를 줄이는 것이 바람직하다고 판단할 수 있다. 그러한 경우, I/O 스케줄러는 재구성 판독이 원 판독보다 빠르게 완료할 수 있을지라도 그의 추가적인 오버헤드를 갖는 재구성 판독을 개시하지 않도록 선택할 수 있다. 또한, 그러한 판단시 속도 대 오버헤드에 대해 좀 더 미묘하게 균형 잡힌 것이 사용될 수 있다. 여러 실시예에서, 알고리즘은 초기 가중치를 갖고 프로그램할 수 있다(예를 들어, 로딩과 무관하게 언제나 속도를 선호할 수 있다). 그러한 가중치는 일정하거나, 또는 다양한 조건에 따라 동적으로 변하도록 프로그램가능할 수 있다. 예를 들면, 조건은 하루 중 시간, 수신된 I/O 요청율, 수신된 요청의 우선순위, 특정 작업의 검출 여부(예컨대, 백업 동작의 현재 수행 여부), 장애 검출 등을 포함할 수 있다.
만일 스케줄러가 재구성 판독을 개시하지 않기로 결정하면, 판독은 원 대상 장치에 의해 서비스될 수 있다(블록(1203)). 그렇지 않으면, 재구성 판독이 개시될 수 있다(블록(1204)). 일 실시예에서, 재구성 판독을 서비스하기 위해 선택된 다른 장치는 비가변 거동을 보이는 것으로 식별된 것이다. 비가변 거동(즉, 좀 더 예측가능한 거동)을 보이는 장치를 선택함으로써, I/O 스케줄러는 재구성 판독을 서비스하는데 시간이 얼마나 걸릴 수 있는지를 더 잘 예측할 수 있다. 장치의 주어진 가변/비가변 거동 외에, I/O 스케줄러는 또한 각 장치의 다른 양상도 고려할 수 있다. 예를 들면, 재구성 판독을 서비스하는 특정 장치를 선택할 때, I/O 스케줄러는 또한 주어진 장치에 대한 많은 미해결(outstanding) 요청(예컨대, 장치 큐가 얼마나 채워져 있는지), 주어진 장치에 대한 현재 계류 중인 요청의 우선순위, 장치 자체의 예상 처리 속도(예컨대, 일부 장치는 구식이거나 그렇지 않고 다른 장치보다 본질적으로 더 느린 기술을 나타낼 수 있다) 등을 평가할 수 있다. 또한, 스케줄러는 각 장치로부터의 해당 결과가 대략 동시에 반송되는 방식으로 재구성 판독을 스케줄링하기를 원할 수 있다. 그러한 경우, 스케줄러는 다른 장치보다 훨씬 빨랐더라도 그 처리 시간이 다른 장치와 상당히 다를 것으로 예측된 경우 재구성 판독을 서비스하는 특정 장치를 원하지 않을 수 있다. 그와 같이 고려할 많은 요소 및 조건이 가능하고 예상된다.
일 실시예에서, 재구성 판독 요청은 원 판독 요청의 우선순위 레벨을 물려받을 수 있다. 다른 실시예에서, 재구성 판독 요청은 원 판독 요청과 다른 우선순위를 가질 수 있다. 만일 I/O 스케줄러에서 대응하는 재구성 판독 요청을 수신하는 선택된 제2 (다른) 장치가 현재 가변 응답 시간 거동을 보이는 것을 검출하고(조건부 블록(1205)) 이 제2 장치에서 제1 장치가 비가변 상태가 된 것으로 예측된 후까지 가변 상태로 유지하는 것으로 예측되면(조건부 블록(1206)), 블록(1208)에서 I/O 스케줄러는 원 판독 요청을 제1 장치에 발행할 수 있다. 일 실시예에서, 가변 응답 시간을 보이는 저장 장치가 다시 비가변 응답 시간을 제공할 수 있는 시간을 예측하기 위해 타이머가 사용될 수 있다. 방법(1200)의 제어 흐름은 블록(1208)에서 블록(C)을 통해 조건부 블록(1212)으로 진행한다. 만일 제2 장치가 제1 장치보다 장시간 가변 상태로 유지하는 것으로 예측되지 않으면(조건부 블록(1206)), 방법(1200)의 제어 흐름은 블록(1210)으로 진행한다. 블록(1210)에서, 발행된 재구성 판독 요청에 의해 판독 요청을 서비스한다.
만일 I/O 스케줄러에서 주어진 가변 장치가 비가변 상태가 된 것으로 검출하면(조건부 블록(1212)), 블록(1214)에서, I/O 스케줄러는 원 판독 요청을 주어진 장치에 발행한다. I/O 스케줄러는 주어진 장치를 비가변 상태로 지정하고 N(가변 I/O 응답 시간을 제공하는 것으로 검출된 저장 장치의 수)을 감소시킬 수 있다. 만일 원 판독 요청이 대안의 재구성 판독 요청 전에 완료하면(조건부 블록(1216)), 블록(1218)에서 I/O 스케줄러는 원 판독 요청에 따라 판독 요청을 서비스한다. 여러 실시예에서, 스케줄러는 재건 판독 요청을 제거할 수 있다. 대안으로, 재구성 판독 요청은 완료할 수 있고 이들의 데이터는 간단히 폐기될 수 있다. 그렇지 않으면, 블록(1220)에서 I/O 스케줄러는 재구성 판독 요청에 따라 판독 요청을 서비스하고 원 판독 요청을 제거할 수 있다(또는 그의 반송된 데이터를 폐기할 수 있다).
전술한 실시예는 소프트웨어를 포함할 수 있음이 주목된다. 그러한 실시예에서, 방법 및/또는 메커니즘을 구현하는 프로그램 명령어는 컴퓨터 판독가능한 매체에 전달되거나 저장될 수 있다. 프로그램 명령어를 저장하도록 구성된 많은 타입의 매체가 이용가능하고 하드 디스크, 플로피 디스크, CD-ROM, DVD, 플래시 메모리, 프로그램가능 ROMs(PROM), 랜덤 액세스 메모리(RAM), 및 각종 다른 형태의 휘발성 또는 비휘발성 저장장치를 포함한다.
여러 실시예에서, 본 명세서에서 기술된 방법 및 메커니즘의 하나 이상의 부분은 클라우드 컴퓨팅 환경의 일부를 구성할 수 있다. 그러한 실시예에서, 자원은 하나 이상의 다양한 모델에 따라 인터넷을 통해 서비스로서 제공될 수 있다. 그러한 모델은 인프라구조 서비스(IaaS), 플랫폼 서비스(PaaS), 및 소프트웨어 서비스(SaaS)를 포함할 수 있다. IaaS에서, 컴퓨터 인프라구조는 서비스로서 전달된다. 그러한 경우, 컴퓨팅 장비는 일반적으로 서비스 제공자가 소유하거나 그에 의해 운영된다. PaaS 모델에서, 개발자에 의해 소프트웨어 솔루션을 개발하기 위해 사용되는 소프트웨어 툴 및 기본 장비는 서비스로서 제공되고 서비스 제공자에 의해 호스트될 수 있다. SaaS는 전형적으로 요구에 따라 서비스 제공자 라이센싱 소프트웨어를 서비스로서 포함한다. 서비스 제공자는 소프트웨어를 호스트하거나, 또는 소프트웨어를 주어진 시간 기간 동안 고객에게 배치할 수 있다. 전술한 모델의 많은 조합도 가능하고 예상된다. 추가적으로, 전술한 설명은 네트워크 저장장치 및 제어기에 초점을 맞추고 있지만, 전술한 방법 및 메커니즘은 직접 부착 저장장치, 호스트 운영 체제, 및 그 밖의 다른 것을 갖는 시스템에도 적용될 수 있다.
비록 전술한 실시예가 상당히 상세하게 기술되었지만, 당업자에게는 전술한 발명을 충분히 인식한다면 많은 변경 및 변형이 명백해질 것이다. 다음의 특허청구범위는 그러한 변경 및 변형을 모두 망라하는 것으로 해석되어야 함이 의도된다.
Claims (26)
- 컴퓨터 시스템으로서,
데이터를 저장하도록 구성된 복수의 저장 장치; 및
데이터 저장 제어기
를 포함하고,
상기 데이터 저장 제어기는,
특정 저장 장치가 특정 동작 상태에 있었던 시간의 길이를 결정하고;
상기 특정 동작 상태 및 상기 특정 저장 장치가 상기 특정 동작 상태에 있었던 상기 시간의 길이에 기초하여, 상기 복수의 저장 장치 중 상기 특정 저장 장치가 제1의 원하는 레벨보다 낮거나 제2의 원하는 레벨보다 높은 응답 지연(latency)을 포함하는 스케줄링되지 않은 거동(unscheduled behavior)을 언제 보일지를 예측하도록 구성되는 컴퓨터 시스템. - 제1항에 있어서, 상기 데이터 저장 제어기는 적어도 부분적으로 상기 특정 저장 장치와 관련된 I/O 요청들의 최근 이력에 기초하여 하나 이상의 프로액티브 동작(proactive operation)을 스케줄링하도록 구성되는 컴퓨터 시스템.
- 제1항에 있어서, 상기 데이터 저장 제어기는 하나 이상의 프로액티브 동작을 스케줄링하도록 구성되고, 상기 특정 저장 장치는 상기 스케줄링되지 않은 거동을 보이며, 상기 하나 이상의 프로액티브 동작은 상기 특정 저장 장치가 상기 제2의 원하는 레벨보다 높은 응답 지연을 보이는 상태에 진입하게 하는 컴퓨터 시스템.
- 제3항에 있어서, 상기 복수의 저장 장치는 고상(solid state) 저장 장치이고,
상기 프로액티브 동작들은 캐시 플러시(flush) 동작, 보안 삭제(secure erase) 동작, 트림(trim) 동작, 슬립(sleep) 동작, 휴면(hibernate) 동작, 전원 온오프 동작, 및 리셋 동작 중 하나 이상을 포함하는 컴퓨터 시스템. - 삭제
- 삭제
- 제1항에 있어서, 상기 복수의 저장 장치는 적어도 하나의 RAID 그룹을 포함하고, 상기 데이터 저장 제어기는 상기 RAID 그룹 내 상기 복수의 저장 장치 중 N개 이하의 저장 장치가 어떤 주어진 시간에 스케줄링된 장시간 지연 동작을 수행하도록 원하는 레벨보다 긴 지연들을 갖는 동작들을 스케줄링하도록 구성되는 컴퓨터 시스템.
- 제7항에 있어서, 상기 저장 장치들 중 N개 초과의 저장 장치가 주어진 시간에 사용 중(busy)인 것으로 결정하는 것에 응답하여, 상기 데이터 저장 제어기는 상기 저장 장치들 중 적어도 하나 상에서 고지연 동작의 실행을 중단하도록 구성되는 컴퓨터 시스템.
- 제1항에 있어서, 상기 데이터 저장 제어기는 또한,
상기 복수의 저장 장치 중 주어진 저장 장치가 스케줄링되지 않은 거동을 보이는 것을 검출하고;
상기 주어진 저장 장치에 의한 상기 스케줄링되지 않은 거동의 발생을 검출함에 응답하여 하나 이상의 리액티브(reactive) 동작을 스케줄링하도록 구성되며,
상기 하나 이상의 리액티브 동작은 상기 주어진 저장 장치가 알려진 상태에 진입하게 하도록 구성되는 컴퓨터 시스템. - 제1항에 있어서, 상기 데이터 저장 제어기는,
상기 복수의 저장 장치 중 주어진 저장 장치의 상태를 모니터하고;
프로액티브 동작이 없는 경우 스케줄링되지 않은 거동이 발생할 가능성이 있는 것으로 예측함에 응답하여 상기 주어진 저장 장치에 대해 상기 프로액티브 동작을 스케줄링하도록 구성되는 컴퓨터 시스템. - 삭제
- 제1항에 있어서, 상기 데이터 저장 제어기는 장시간 지연 동작이 스케줄링된 것을 검출함에 응답하여 주어진 저장 장치에 대해 상기 장시간 지연 동작에 뒤따르도록 하나 이상의 프로액티브 동작을 스케줄링하도록 구성되는 컴퓨터 시스템.
- 컴퓨팅 시스템에 사용하기 위한 방법으로서, 상기 방법은,
복수의 저장 장치 중 특정 저장 장치가 특정 동작 상태에 있었던 시간의 길이를 결정하는 단계; 및
상기 특정 동작 상태 및 상기 특정 저장 장치가 상기 특정 동작 상태에 있었던 상기 시간의 길이에 기초하여, 상기 복수의 저장 장치 중 상기 특정 저장 장치가 제1의 원하는 레벨보다 낮거나 제2의 원하는 레벨보다 높은 응답 지연을 포함하는 스케줄링되지 않은 거동을 언제 보일지를 예측하는 단계
를 포함하는 방법. - 제13항에 있어서, 적어도 부분적으로 상기 특정 저장 장치와 관련된 I/O 요청들의 최근 이력에 기초하여 하나 이상의 프로액티브 동작을 스케줄링하는 단계를 더 포함하는 방법.
- 제13항에 있어서, 하나 이상의 프로액티브 동작을 스케줄링하는 단계를 더 포함하고, 상기 특정 저장 장치는 상기 스케줄링되지 않은 거동을 보이며, 상기 하나 이상의 프로액티브 동작은 상기 특정 저장 장치가 상기 제2의 원하는 레벨보다 높은 응답 지연을 보이는 상태에 진입하게 하는 방법.
- 제15항에 있어서, 상기 복수의 저장 장치는 고상 저장 장치이고,
상기 프로액티브 동작들은 캐시 플러시 동작, 보안 삭제 동작, 트림 동작, 슬립 동작, 전원 온오프 동작, 휴면 동작, 및 리셋 동작 중 하나 이상을 포함하는 방법. - 삭제
- 삭제
- 제13항에 있어서, 상기 복수의 저장 장치는 적어도 하나의 RAID 그룹을 포함하고,
상기 방법은 상기 RAID 그룹 내 상기 복수의 저장 장치 중 N개 이하의 저장 장치가 어떤 주어진 시간에 스케줄링된 장시간 지연 동작을 수행하도록 원하는 레벨보다 긴 지연들을 갖는 동작들을 스케줄링하는 단계를 더 포함하는 방법. - 제19항에 있어서, 상기 저장 장치들 중 N개 초과의 저장 장치가 주어진 시간에 사용 중인 것으로 결정하는 것에 응답하여, 상기 저장 장치들 중 적어도 하나 상에서 고지연 동작의 실행을 중단하는 단계를 더 포함하는 방법.
- 제13항에 있어서,
상기 복수의 저장 장치 중 주어진 저장 장치가 스케줄링되지 않은 거동을 보이는 것을 검출하는 단계; 및
상기 주어진 저장 장치에 의한 상기 스케줄링되지 않은 거동의 발생을 검출함에 응답하여 하나 이상의 리액티브 동작을 스케줄링하는 단계
를 더 포함하고, 상기 하나 이상의 리액티브 동작은 상기 주어진 저장 장치가 알려진 상태에 진입하게 하도록 구성되는 방법. - 제13항에 있어서,
상기 복수의 저장 장치 중 주어진 저장 장치의 상태를 모니터하는 단계; 및
프로액티브 동작이 없는 경우 스케줄링되지 않은 거동이 발생할 가능성이 있는 것으로 예측함에 응답하여 상기 주어진 저장 장치에 대해 프로액티브 동작을 스케줄링하는 단계를 더 포함하는 방법. - 삭제
- 프로그램 명령어들을 포함하는 컴퓨터 판독가능한 저장 매체로서,
처리 장치에 의해 실행될 때, 상기 프로그램 명령어들은,
복수의 저장 장치 중 특정 저장 장치가 특정 동작 상태에 있었던 시간의 길이를 결정하고;
상기 특정 동작 상태 및 상기 특정 저장 장치가 상기 특정 동작 상태에 있었던 상기 시간의 길이에 기초하여, 상기 복수의 저장 장치 중 상기 특정 저장 장치가 제1의 원하는 레벨보다 낮거나 제2의 원하는 레벨보다 높은 응답 지연을 포함하는 스케줄링되지 않은 거동을 언제 보일지를 예측하도록 동작 가능한 컴퓨터 판독가능한 저장 매체. - 제24항에 있어서, 상기 프로그램 명령어들은 또한,
상기 복수의 저장 장치 중 주어진 저장 장치의 상태를 모니터하고;
프로액티브 동작이 없는 경우 스케줄링되지 않은 거동이 발생할 가능성이 있는 것으로 예측함에 응답하여 상기 주어진 저장 장치에 대해 프로액티브 동작을 스케줄링하도록 동작가능한 컴퓨터 판독가능한 저장 매체. - 제25항에 있어서, 상기 프로그램 명령어들은 또한, 적어도 부분적으로 상기 특정 저장 장치와 관련된 I/O 요청들의 최근 이력에 기초하여 하나 이상의 프로액티브 동작을 스케줄링하도록 동작가능한 컴퓨터 판독가능한 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/882,854 | 2010-09-15 | ||
US12/882,854 US8589655B2 (en) | 2010-09-15 | 2010-09-15 | Scheduling of I/O in an SSD environment |
PCT/US2011/051654 WO2012037293A1 (en) | 2010-09-15 | 2011-09-14 | Scheduling of i/o in an ssd environment |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130116253A KR20130116253A (ko) | 2013-10-23 |
KR101905645B1 true KR101905645B1 (ko) | 2018-10-10 |
Family
ID=44759767
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137009549A KR101905645B1 (ko) | 2010-09-15 | 2011-09-14 | Ssd 환경에서의 i/o 스케줄링 |
Country Status (6)
Country | Link |
---|---|
US (5) | US8589655B2 (ko) |
EP (2) | EP3572922A1 (ko) |
JP (2) | JP5912120B2 (ko) |
KR (1) | KR101905645B1 (ko) |
CN (1) | CN103348314B (ko) |
WO (1) | WO2012037293A1 (ko) |
Families Citing this family (68)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10353774B2 (en) * | 2015-10-30 | 2019-07-16 | International Business Machines Corporation | Utilizing storage unit latency data in a dispersed storage network |
US8589655B2 (en) | 2010-09-15 | 2013-11-19 | Pure Storage, Inc. | Scheduling of I/O in an SSD environment |
US12008266B2 (en) | 2010-09-15 | 2024-06-11 | Pure Storage, Inc. | Efficient read by reconstruction |
US11614893B2 (en) | 2010-09-15 | 2023-03-28 | Pure Storage, Inc. | Optimizing storage device access based on latency |
WO2012108040A1 (ja) * | 2011-02-10 | 2012-08-16 | 富士通株式会社 | ストレージ制御装置、ストレージ装置、ストレージシステム、ストレージ制御方法、及び、そのプログラム |
US9131265B2 (en) * | 2011-05-19 | 2015-09-08 | Maxlinear, Inc. | Method and system for providing satellite television service to a premises |
JP2012252558A (ja) * | 2011-06-03 | 2012-12-20 | Sony Corp | 不揮発性メモリ、メモリコントローラ、不揮発性メモリのアクセス方法、およびプログラム |
US9286079B1 (en) * | 2011-06-30 | 2016-03-15 | Western Digital Technologies, Inc. | Cache optimization of a data storage device based on progress of boot commands |
US8856415B2 (en) * | 2012-02-01 | 2014-10-07 | National Instruments Corporation | Bus arbitration for a real-time computer system |
US8874829B2 (en) * | 2012-03-30 | 2014-10-28 | Hitachi, Ltd. | Storage system and storage system control method |
CN102662608B (zh) * | 2012-03-30 | 2015-11-25 | 华为技术有限公司 | 一种降低读延时的方法及装置 |
US9032177B2 (en) | 2012-12-04 | 2015-05-12 | HGST Netherlands B.V. | Host read command return reordering based on time estimation of flash read command completion |
US9514041B2 (en) * | 2013-03-08 | 2016-12-06 | Kabushiki Kaisha Toshiba | Memory controller and memory system |
US10536565B2 (en) * | 2013-03-14 | 2020-01-14 | International Business Machines Corporation | Efficient centralized stream initiation and retry control |
US8775687B1 (en) | 2013-04-15 | 2014-07-08 | Lsi Corporation | Method to ensure data coherency in a scalable aggregate neighbor-device interface |
US9423978B2 (en) | 2013-05-08 | 2016-08-23 | Nexgen Storage, Inc. | Journal management |
US9280463B2 (en) | 2013-07-25 | 2016-03-08 | Globalfoundries Inc. | Semiconductor memory garbage collection |
JP2015111334A (ja) * | 2013-12-06 | 2015-06-18 | 富士通株式会社 | ストレージ制御装置、ストレージ制御プログラム、およびストレージ制御方法 |
US9798493B2 (en) | 2013-12-16 | 2017-10-24 | International Business Machines Corporation | Firmware bypass for medium-access commands |
JP2015138272A (ja) * | 2014-01-20 | 2015-07-30 | ソニー株式会社 | 情報処理装置、情報処理方法、および情報処理プログラム |
US10235053B1 (en) * | 2014-03-31 | 2019-03-19 | Emc Corporation | Method and system for using host driver for flexible allocation fast-sideways data movements |
US9354971B2 (en) * | 2014-04-23 | 2016-05-31 | Facebook, Inc. | Systems and methods for data storage remediation |
US8935567B1 (en) * | 2014-04-30 | 2015-01-13 | Igneous Systems, Inc. | Network addressable storage controller with storage drive profile comparison |
USRE48835E1 (en) | 2014-04-30 | 2021-11-30 | Rubrik, Inc. | Network addressable storage controller with storage drive profile comparison |
US9081828B1 (en) | 2014-04-30 | 2015-07-14 | Igneous Systems, Inc. | Network addressable storage controller with storage drive profile comparison |
KR101652324B1 (ko) * | 2014-06-13 | 2016-08-31 | 고려대학교 산학협력단 | 요구 성능 보장 방법 및 요구 성능 보장 장치 |
US9917790B2 (en) | 2014-07-31 | 2018-03-13 | Microsoft Technology Licensing, Llc | Storage device access mediation |
CN104216836B (zh) * | 2014-08-28 | 2018-01-23 | 华为技术有限公司 | 一种存储系统的并行读写方法和装置 |
WO2016068986A1 (en) | 2014-10-31 | 2016-05-06 | Hewlett Packard Enterprise Development Lp | Draining a write queue based on information from a read queue |
US9921750B2 (en) | 2014-11-20 | 2018-03-20 | Samsung Electronics Co., Ltd. | Solid state drive (SSD) memory cache occupancy prediction |
US9519429B2 (en) | 2014-12-09 | 2016-12-13 | Intel Corporation | Techniques to manage multiple sequential write streams to a solid state drive |
US10108339B2 (en) * | 2014-12-17 | 2018-10-23 | Intel Corporation | Reduction of intermingling of input and output operations in solid state drives |
US9116833B1 (en) | 2014-12-18 | 2015-08-25 | Igneous Systems, Inc. | Efficiency for erasure encoding |
KR102301937B1 (ko) | 2014-12-22 | 2021-09-15 | 삼성전자주식회사 | 가상 머신 환경에서의 입출력 방법 |
US10156994B2 (en) | 2015-02-27 | 2018-12-18 | Western Digital Technologies, Inc. | Methods and systems to reduce SSD IO latency |
US10073714B2 (en) * | 2015-03-11 | 2018-09-11 | Western Digital Technologies, Inc. | Task queues |
US9361046B1 (en) | 2015-05-11 | 2016-06-07 | Igneous Systems, Inc. | Wireless data storage chassis |
US10289327B2 (en) * | 2015-06-05 | 2019-05-14 | Western Digital Technologies, Inc. | Scheduling scheme(s) for a multi-die storage device |
KR102519663B1 (ko) | 2015-07-31 | 2023-04-07 | 삼성전자주식회사 | 스토리지 장치, 스토리지 장치를 포함하는 시스템 및 그것의 동작 방법 |
CN105511806B (zh) | 2015-11-30 | 2018-09-07 | 华为技术有限公司 | 处理写请求的方法和移动终端 |
US9792051B2 (en) * | 2016-02-24 | 2017-10-17 | Samsung Electronics Co., Ltd. | System and method of application aware efficient IO scheduler |
US10592171B2 (en) * | 2016-03-16 | 2020-03-17 | Samsung Electronics Co., Ltd. | Multi-stream SSD QoS management |
JP2018022397A (ja) * | 2016-08-04 | 2018-02-08 | 富士通株式会社 | ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム |
JP2018041154A (ja) * | 2016-09-05 | 2018-03-15 | 東芝メモリ株式会社 | ストレージシステムおよび処理方法 |
CN106484536B (zh) * | 2016-09-30 | 2020-04-03 | 杭州朗和科技有限公司 | 一种io调度方法、装置和设备 |
US10198205B1 (en) * | 2016-12-19 | 2019-02-05 | Pure Storage, Inc. | Dynamically adjusting a number of storage devices utilized to simultaneously service write operations |
US10524022B2 (en) | 2017-05-02 | 2019-12-31 | Seagate Technology Llc | Data storage system with adaptive data path routing |
KR20200067848A (ko) | 2017-09-30 | 2020-06-12 | 마이크론 테크놀로지, 인크. | 우선적 유휴 시간 판독 스캔 |
US11023166B2 (en) * | 2018-08-08 | 2021-06-01 | Micron Technology, Inc. | Quality of service control for read operations in memory systems |
US12056401B2 (en) | 2019-03-28 | 2024-08-06 | Nutanix, Inc. | Machine learning for local caching of remote data in a clustered computing environment |
KR20200139433A (ko) | 2019-06-04 | 2020-12-14 | 에스케이하이닉스 주식회사 | 컨트롤러의 동작 방법 및 메모리 시스템 |
KR20200123684A (ko) | 2019-04-22 | 2020-10-30 | 에스케이하이닉스 주식회사 | 메모리 시스템에서 맵 정보를 전송하는 장치 |
KR20210004322A (ko) | 2019-07-04 | 2021-01-13 | 에스케이하이닉스 주식회사 | 메모리 시스템에서 맵정보 및 리드카운트를 전송하는 장치 및 방법 |
KR102666123B1 (ko) | 2019-07-05 | 2024-05-16 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법 |
US11422942B2 (en) | 2019-04-02 | 2022-08-23 | SK Hynix Inc. | Memory system for utilizing a memory included in an external device |
KR20200137181A (ko) | 2019-05-29 | 2020-12-09 | 에스케이하이닉스 주식회사 | 메모리 시스템에서 맵정보를 전송하는 장치 |
US11137914B2 (en) | 2019-05-07 | 2021-10-05 | Western Digital Technologies, Inc. | Non-volatile storage system with hybrid command |
CN112115067A (zh) * | 2019-06-21 | 2020-12-22 | 慧荣科技股份有限公司 | 闪存物理资源集合管理装置及方法及计算机可读取存储介质 |
US11614890B2 (en) * | 2019-07-30 | 2023-03-28 | Micron Technology, Inc. | Handling of host-initiated requests in memory sub-systems |
KR20210080761A (ko) | 2019-12-23 | 2021-07-01 | 삼성전자주식회사 | 컴플리션 타이밍을 관리하는 스토리지 컨트롤러, 및 이의 동작 방법 |
EP3842952B1 (en) | 2019-12-23 | 2023-05-10 | Samsung Electronics Co., Ltd. | Storage controller managing completion timing, and operating method thereof |
US11243694B2 (en) | 2020-01-29 | 2022-02-08 | Samsung Electronics Co., Ltd. | Grouping key value object IOs to improve IO performance for key-value storage devices |
US11972361B2 (en) | 2020-01-29 | 2024-04-30 | Samsung Electronics Co., Ltd. | Performance optimization of object grouping schema in a network key-value storage device using adaptive regression |
LU101681B1 (en) * | 2020-03-16 | 2021-09-16 | Microsoft Technology Licensing Llc | Maintenance mode for storage nodes |
WO2022164490A1 (en) * | 2021-01-27 | 2022-08-04 | Pure Storage, Inc. | Optimizing storage device access based on latency |
US11650753B2 (en) | 2021-07-27 | 2023-05-16 | Beijing Tenafe Electronic Technology Co., Ltd. | Firmware-controlled and table-based conditioning for synchronous handling of exception cases |
US11860788B2 (en) | 2021-09-08 | 2024-01-02 | Red Hat, Inc. | Prefetching data in a distributed storage system |
US20240069807A1 (en) * | 2022-08-31 | 2024-02-29 | Micron Technology, Inc. | Managing command completion notification pacing in a memory sub-system |
Citations (4)
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 |
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 |
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 |
US20090249013A1 (en) * | 2008-03-27 | 2009-10-01 | Asif Daud | Systems and methods for managing stalled storage devices |
Family Cites Families (172)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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. |
US5640529A (en) * | 1993-07-29 | 1997-06-17 | Intel Corporation | Method and system for performing clean-up of a solid state disk during host command execution |
JPH08249133A (ja) * | 1994-12-15 | 1996-09-27 | Internatl Business Mach Corp <Ibm> | ディスク・ドライブ・アレイの故障対策の方法及びシステム |
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 |
JP3062050B2 (ja) * | 1995-07-21 | 2000-07-10 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | ディスク駆動制御方法及び装置 |
JP3648311B2 (ja) * | 1995-12-12 | 2005-05-18 | 富士通株式会社 | ディスクアレイ装置 |
JPH09244931A (ja) * | 1996-03-06 | 1997-09-19 | Mitsubishi Electric Corp | リアルタイムファイルシステム |
JPH103357A (ja) * | 1996-06-18 | 1998-01-06 | Nippon Telegr & Teleph Corp <Ntt> | ビデオサーバ |
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 |
JPH11305954A (ja) * | 1998-04-27 | 1999-11-05 | Oki Electric Ind Co Ltd | 半導体記憶装置及び半導体記憶装置の書き換え制御方法 |
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 |
US6757769B1 (en) | 2000-11-28 | 2004-06-29 | Emc Corporation | Cooperative lock override procedure |
US6718448B1 (en) | 2000-11-28 | 2004-04-06 | Emc Corporation | Queued locking of a shared resource using multimodal lock types |
JP2002182859A (ja) | 2000-12-12 | 2002-06-28 | Hitachi Ltd | ストレージシステムおよびその利用方法 |
US6850938B1 (en) | 2001-02-08 | 2005-02-01 | Cisco Technology, Inc. | Method and apparatus providing optimistic locking of shared computer resources |
US7594024B2 (en) | 2001-02-13 | 2009-09-22 | Netapp, Inc. | Silicon-based storage virtualization |
US6950966B2 (en) | 2001-07-17 | 2005-09-27 | Seachange International, Inc. | Data transmission from raid services |
US6973549B1 (en) | 2001-12-10 | 2005-12-06 | Incipient, Inc. | Locking technique for control and synchronization |
US6986015B2 (en) | 2001-12-10 | 2006-01-10 | Incipient, Inc. | Fast path caching |
US7539991B2 (en) | 2002-03-21 | 2009-05-26 | Netapp, Inc. | Method and apparatus for decomposing I/O tasks in a raid system |
JP4287631B2 (ja) * | 2002-09-06 | 2009-07-01 | 株式会社日立コミュニケーションテクノロジー | 記憶装置 |
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 |
US6922754B2 (en) | 2002-12-09 | 2005-07-26 | Infabric Technologies, Inc. | Data-aware data flow manager |
CN1795440A (zh) | 2003-04-07 | 2006-06-28 | 艾特拉克斯公司 | 基于物理位置的网络安全系统 |
US7424498B1 (en) | 2003-06-30 | 2008-09-09 | Data Domain, Inc. | Probabilistic summary data structure based encoding for garbage collection |
US7865485B2 (en) | 2003-09-23 | 2011-01-04 | Emc Corporation | Multi-threaded write interface and methods for increasing the single file read and write throughput of a file server |
US7647327B2 (en) * | 2003-09-24 | 2010-01-12 | Hewlett-Packard Development Company, L.P. | Method and system for implementing storage strategies of a file autonomously of a user |
US7127545B1 (en) | 2003-11-19 | 2006-10-24 | Veritas Operating Corporation | System and method for dynamically loadable storage device I/O policy modules |
JP4426262B2 (ja) | 2003-11-26 | 2010-03-03 | 株式会社日立製作所 | ディスクアレイ装置及びディスクアレイ装置の障害回避方法 |
US8560747B1 (en) | 2007-02-16 | 2013-10-15 | Vmware, Inc. | Associating heartbeat data with access to shared resources of a computer system |
JP4456909B2 (ja) | 2004-03-29 | 2010-04-28 | 株式会社日立製作所 | バックアップ方法、ストレージシステム及びそのプログラム |
JP2005293774A (ja) | 2004-04-02 | 2005-10-20 | Hitachi Global Storage Technologies Netherlands Bv | ディスク装置の制御方法 |
US7424482B2 (en) | 2004-04-26 | 2008-09-09 | Storwize Inc. | Method and system for compression of data for block mode access storage |
US20060074940A1 (en) | 2004-10-05 | 2006-04-06 | International Business Machines Corporation | Dynamic management of node clusters to enable data sharing |
US7631023B1 (en) | 2004-11-24 | 2009-12-08 | Symantec Operating Corporation | Performance-adjusted data allocation in a multi-device file system |
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 |
US8200887B2 (en) | 2007-03-29 | 2012-06-12 | Violin Memory, Inc. | Memory management system and method |
JPWO2006123416A1 (ja) | 2005-05-19 | 2008-12-25 | 富士通株式会社 | ディスク故障復旧方法及びディスクアレイ装置 |
US8364845B2 (en) | 2005-05-19 | 2013-01-29 | Wyse Technology Inc. | Method and system for thin client configuration |
US7933936B2 (en) | 2005-06-10 | 2011-04-26 | Network Appliance, Inc. | Method and system for automatic management of storage space |
US7979613B2 (en) | 2005-07-15 | 2011-07-12 | International Business Machines Corporation | Performance of a storage system |
JP2007087036A (ja) | 2005-09-21 | 2007-04-05 | Hitachi Ltd | スナップショット維持装置及び方法 |
JP4662548B2 (ja) | 2005-09-27 | 2011-03-30 | 株式会社日立製作所 | スナップショット管理装置及び方法並びにストレージシステム |
US20070079072A1 (en) * | 2005-09-30 | 2007-04-05 | Collier Josh D | Preemptive eviction of cache lines from a directory |
US7496796B2 (en) * | 2006-01-23 | 2009-02-24 | International Business Machines Corporation | Apparatus, system, and method for predicting storage device failure |
JP2007199953A (ja) | 2006-01-25 | 2007-08-09 | Fujitsu Ltd | ディスクアレイ装置およびディスクアレイ制御方法 |
JP4927408B2 (ja) | 2006-01-25 | 2012-05-09 | 株式会社日立製作所 | 記憶システム及びそのデータ復元方法 |
US7743197B2 (en) | 2006-05-11 | 2010-06-22 | Emulex Design & Manufacturing Corporation | System and method for virtualizing PCIe devices |
JP2007233903A (ja) | 2006-03-03 | 2007-09-13 | Hitachi Ltd | 記憶制御装置及び記憶制御装置のデータ回復方法 |
US8832247B2 (en) | 2006-03-24 | 2014-09-09 | Blue Coat Systems, Inc. | Methods and systems for caching content at multiple levels |
US7987438B2 (en) | 2006-08-10 | 2011-07-26 | International Business Machines Corporation | Structure for initializing expansion adapters installed in a computer system having similar expansion adapters |
US7555599B2 (en) | 2006-09-06 | 2009-06-30 | International Business Machines Corporation | System and method of mirrored RAID array write management |
US7475215B2 (en) | 2006-09-08 | 2009-01-06 | Lsi Corporation | Identification of uncommitted memory blocks during an initialization procedure |
JP4573898B2 (ja) | 2006-11-27 | 2010-11-04 | 富士通株式会社 | サーバ管理プログラム、メールサーバ管理プログラム、サーバ管理システム、管理サーバおよびサーバ管理方法 |
US8694712B2 (en) | 2006-12-05 | 2014-04-08 | Microsoft Corporation | Reduction of operational costs of virtual TLBs |
US20080155191A1 (en) | 2006-12-21 | 2008-06-26 | Anderson Robert J | Systems and methods for providing heterogeneous storage systems |
US7937531B2 (en) * | 2007-02-01 | 2011-05-03 | Cisco Technology, Inc. | Regularly occurring write back scheme for cache soft error reduction |
US8370562B2 (en) | 2007-02-25 | 2013-02-05 | Sandisk Il Ltd. | Interruptible cache flushing in flash memory systems |
US9632870B2 (en) | 2007-03-29 | 2017-04-25 | Violin Memory, Inc. | Memory system with multiple striping of raid groups and method for performing the same |
JP4900811B2 (ja) | 2007-03-30 | 2012-03-21 | 株式会社日立製作所 | 記憶システムおよび記憶制御方法 |
JP4529990B2 (ja) | 2007-03-30 | 2010-08-25 | ブラザー工業株式会社 | 画像処理プログラム及び画像処理装置 |
US8086652B1 (en) | 2007-04-27 | 2011-12-27 | Netapp, Inc. | Storage system-based hole punching for reclaiming unused space from a data container |
US7958303B2 (en) | 2007-04-27 | 2011-06-07 | Gary Stephen Shuster | Flexible data storage system |
EP2154815A4 (en) | 2007-05-30 | 2012-11-14 | Fujitsu Ltd | IMAGE ENCRYPTION DEVICE, IMAGE KEYING DEVICE, METHOD AND PROGRAM |
US7765426B2 (en) | 2007-06-07 | 2010-07-27 | Micron Technology, Inc. | Emerging bad block detection |
US8874854B2 (en) | 2007-07-30 | 2014-10-28 | International Business Machines Corporation | Method for selectively enabling and disabling read caching in a storage subsystem |
US7877558B2 (en) | 2007-08-13 | 2011-01-25 | Advanced Micro Devices, Inc. | Memory controller prioritization scheme |
JP5292813B2 (ja) * | 2008-01-07 | 2013-09-18 | 日本電気株式会社 | ストレージ装置と方法とプログラム |
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 |
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 |
KR101474344B1 (ko) * | 2008-07-11 | 2014-12-18 | 시게이트 테크놀로지 엘엘씨 | 캐시 플러시 제어 방법 및 이를 이용한 데이터 저장 시스템 |
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 |
US20100077205A1 (en) | 2008-09-19 | 2010-03-25 | Ekstrom Joseph J | System and Method for Cipher E-Mail Protection |
US8756369B2 (en) | 2008-09-26 | 2014-06-17 | Netapp, Inc. | Priority command queues for low latency solid state drives |
JP4399021B1 (ja) | 2008-10-29 | 2010-01-13 | 株式会社東芝 | ディスクアレイ制御装置および記憶装置 |
US7945733B2 (en) | 2008-12-12 | 2011-05-17 | Lsi Corporation | Hierarchical storage management (HSM) for redundant array of independent disks (RAID) |
US8200922B2 (en) | 2008-12-17 | 2012-06-12 | Netapp, Inc. | Storage system snapshot assisted by SSD technology |
KR101638764B1 (ko) | 2008-12-19 | 2016-07-22 | 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 | 균일한 판독 대기시간을 위한 중복 데이터 저장 |
US8312204B2 (en) | 2009-01-23 | 2012-11-13 | Seagate Technology Llc | System and method for wear leveling in a data storage device |
JP4869368B2 (ja) | 2009-03-12 | 2012-02-08 | 株式会社東芝 | ストレージ装置及び仮想化装置 |
US7941584B2 (en) | 2009-03-26 | 2011-05-10 | Arm Limited | Data processing apparatus and method for performing hazard detection |
US8205065B2 (en) | 2009-03-30 | 2012-06-19 | Exar Corporation | System and method for data deduplication |
US8560787B2 (en) | 2009-03-30 | 2013-10-15 | International Business Machines Corporation | Incremental backup of source to target storage volume |
TWI397009B (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 |
EP2302636B1 (fr) | 2009-09-21 | 2014-11-05 | STMicroelectronics (Rousset) SAS | Procédé de lecture d'une mémoire non volatile au moyen de métadonnées et d'une table de correspondance |
US8510569B2 (en) | 2009-12-16 | 2013-08-13 | Intel Corporation | Providing integrity verification and attestation in a hidden execution environment |
US9134918B2 (en) | 2009-12-31 | 2015-09-15 | Sandisk Technologies Inc. | Physical compression of data with flat or systematic pattern |
US8452932B2 (en) | 2010-01-06 | 2013-05-28 | Storsimple, Inc. | System and method for efficiently creating off-site data volume back-ups |
WO2011104663A1 (en) | 2010-02-23 | 2011-09-01 | Confidato Security Solutions Ltd | Method and computer program product for order preserving symbol based encryption |
US8560794B2 (en) * | 2010-03-12 | 2013-10-15 | Cleversafe, Inc. | Dispersed storage network for managing data deletion |
JP4892072B2 (ja) | 2010-03-24 | 2012-03-07 | 株式会社東芝 | ホスト装置と連携して重複データを排除するストレージ装置、同ストレージ装置を備えたストレージシステム、及び同システムにおける重複排除方法 |
US8738970B2 (en) | 2010-07-23 | 2014-05-27 | Salesforce.Com, Inc. | Generating performance alerts |
US8713268B2 (en) | 2010-08-05 | 2014-04-29 | Ut-Battelle, Llc | Coordinated garbage collection for raid array of solid state disks |
US8468318B2 (en) | 2010-09-15 | 2013-06-18 | Pure Storage Inc. | Scheduling of I/O writes in a storage environment |
US8732426B2 (en) | 2010-09-15 | 2014-05-20 | Pure Storage, Inc. | Scheduling of reactive I/O operations in a storage environment |
US8589655B2 (en) | 2010-09-15 | 2013-11-19 | Pure Storage, Inc. | Scheduling of I/O in an SSD 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 |
US8966184B2 (en) | 2011-01-31 | 2015-02-24 | Intelligent Intellectual Property Holdings 2, LLC. | Apparatus, system, and method for managing eviction of data |
US9563555B2 (en) | 2011-03-18 | 2017-02-07 | Sandisk Technologies Llc | Systems and methods for storage allocation |
US8595267B2 (en) | 2011-06-27 | 2013-11-26 | Amazon Technologies, Inc. | System and method for implementing a scalable data storage service |
US8751463B1 (en) | 2011-06-30 | 2014-06-10 | Emc Corporation | Capacity forecasting for a deduplicating storage system |
US8527544B1 (en) | 2011-08-11 | 2013-09-03 | Pure Storage Inc. | Garbage collection in a storage system |
US8806160B2 (en) | 2011-08-16 | 2014-08-12 | Pure Storage, Inc. | Mapping in a storage system |
US8793467B2 (en) | 2011-09-30 | 2014-07-29 | Pure Storage, Inc. | Variable length encoding in a storage system |
US8788788B2 (en) | 2011-08-11 | 2014-07-22 | Pure Storage, Inc. | Logical sector mapping in a flash storage array |
JP5768587B2 (ja) | 2011-08-17 | 2015-08-26 | 富士通株式会社 | ストレージシステム、ストレージ制御装置およびストレージ制御方法 |
US8700875B1 (en) | 2011-09-20 | 2014-04-15 | Netapp, Inc. | Cluster view for storage devices |
US9542413B2 (en) | 2011-10-06 | 2017-01-10 | Hitachi, Ltd. | Stored data deduplication method, stored data deduplication apparatus, and deduplication program |
US8825605B2 (en) | 2011-10-11 | 2014-09-02 | Netapp, Inc. | Deduplication aware scheduling of requests to access data blocks |
US8918579B2 (en) | 2012-02-06 | 2014-12-23 | Sandisk Technologies Inc. | Storage device and method for selective data compression |
US9075710B2 (en) | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
US9519647B2 (en) | 2012-04-17 | 2016-12-13 | Sandisk Technologies Llc | Data expiry in a non-volatile device |
US8996881B2 (en) | 2012-04-23 | 2015-03-31 | International Business Machines Corporation | Preserving redundancy in data deduplication systems by encryption |
US8793466B2 (en) | 2012-04-27 | 2014-07-29 | Netapp, Inc. | Efficient data object storage and retrieval |
US9645177B2 (en) | 2012-05-04 | 2017-05-09 | Seagate Technology Llc | Retention-drift-history-based non-volatile memory read threshold optimization |
US8874850B1 (en) | 2012-05-10 | 2014-10-28 | Netapp, Inc. | Hierarchically tagged cache |
US20130318314A1 (en) | 2012-05-25 | 2013-11-28 | Red Hat, Inc. | Managing copies of data on multiple nodes using a data controller node to avoid transaction deadlock |
JP2015525419A (ja) | 2012-06-18 | 2015-09-03 | アクテフィオ,インク. | 高度データ管理仮想化システム |
US8959305B1 (en) | 2012-06-29 | 2015-02-17 | Emc Corporation | Space reclamation with virtually provisioned devices |
US9489293B2 (en) | 2012-08-17 | 2016-11-08 | Netapp, Inc. | Techniques for opportunistic data storage |
US9176822B2 (en) | 2012-08-31 | 2015-11-03 | Cleversafe, Inc. | Adjusting dispersed storage error encoding parameters |
JP5954081B2 (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 |
US9436720B2 (en) | 2013-01-10 | 2016-09-06 | Pure Storage, Inc. | Safety for volume operations |
US9886346B2 (en) | 2013-01-11 | 2018-02-06 | Commvault Systems, Inc. | Single snapshot for multiple agents |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US9335932B2 (en) | 2013-03-15 | 2016-05-10 | Bracket Computing, Inc. | Storage unit selection for virtualized storage units |
US9519575B2 (en) | 2013-04-25 | 2016-12-13 | Sandisk Technologies Llc | Conditional iteration for a non-volatile device |
US10263770B2 (en) | 2013-11-06 | 2019-04-16 | Pure Storage, Inc. | Data protection in a storage system using external secrets |
US9516016B2 (en) | 2013-11-11 | 2016-12-06 | Pure Storage, Inc. | Storage array password management |
JP6233086B2 (ja) | 2014-02-20 | 2017-11-22 | 富士通株式会社 | ストレージ制御装置,ストレージシステム及び制御プログラム |
US10169121B2 (en) | 2014-02-27 | 2019-01-01 | Commvault Systems, Inc. | Work flow management for an information management system |
US10656864B2 (en) | 2014-03-20 | 2020-05-19 | Pure Storage, Inc. | Data replication within a flash storage array |
US9361469B2 (en) | 2014-03-26 | 2016-06-07 | Amazon Technologies, Inc. | Electronic communication with secure screen sharing of sensitive information |
US9513820B1 (en) | 2014-04-07 | 2016-12-06 | Pure Storage, Inc. | Dynamically controlling temporary compromise on data redundancy |
US9563509B2 (en) | 2014-07-15 | 2017-02-07 | Nimble Storage, Inc. | Methods and systems for storing data in a redundant manner on a plurality of storage units of a storage system |
US9489132B2 (en) | 2014-10-07 | 2016-11-08 | Pure Storage, Inc. | Utilizing unmapped and unknown states in a replicated storage system |
US10430282B2 (en) | 2014-10-07 | 2019-10-01 | Pure Storage, Inc. | Optimizing replication by distinguishing user and system write activity |
US9552248B2 (en) | 2014-12-11 | 2017-01-24 | Pure Storage, Inc. | Cloud alert to replica |
-
2010
- 2010-09-15 US US12/882,854 patent/US8589655B2/en active Active
-
2011
- 2011-09-14 CN CN201180053028.6A patent/CN103348314B/zh active Active
- 2011-09-14 WO PCT/US2011/051654 patent/WO2012037293A1/en active Application Filing
- 2011-09-14 EP EP19162381.8A patent/EP3572922A1/en active Pending
- 2011-09-14 EP EP11764901.2A patent/EP2616921B1/en active Active
- 2011-09-14 KR KR1020137009549A patent/KR101905645B1/ko active IP Right Grant
- 2011-09-14 JP JP2013529309A patent/JP5912120B2/ja active Active
-
2013
- 2013-11-18 US US14/083,163 patent/US9298376B2/en active Active
-
2016
- 2016-01-19 US US15/000,602 patent/US9569116B1/en active Active
- 2016-03-31 JP JP2016070334A patent/JP6356720B2/ja active Active
-
2017
- 2017-01-30 US US15/418,944 patent/US10126982B1/en active Active
-
2018
- 2018-09-26 US US16/142,690 patent/US10353630B1/en active Active
Patent Citations (4)
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 |
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 |
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 |
US20090249013A1 (en) * | 2008-03-27 | 2009-10-01 | Asif Daud | Systems and methods for managing stalled storage devices |
Also Published As
Publication number | Publication date |
---|---|
JP2016131037A (ja) | 2016-07-21 |
EP2616921B1 (en) | 2019-03-13 |
JP5912120B2 (ja) | 2016-04-27 |
US20140075105A1 (en) | 2014-03-13 |
EP3572922A1 (en) | 2019-11-27 |
US9298376B2 (en) | 2016-03-29 |
JP6356720B2 (ja) | 2018-07-11 |
US10353630B1 (en) | 2019-07-16 |
US20120066447A1 (en) | 2012-03-15 |
CN103348314B (zh) | 2016-01-27 |
CN103348314A (zh) | 2013-10-09 |
JP2013542494A (ja) | 2013-11-21 |
US10126982B1 (en) | 2018-11-13 |
WO2012037293A1 (en) | 2012-03-22 |
KR20130116253A (ko) | 2013-10-23 |
EP2616921A1 (en) | 2013-07-24 |
US9569116B1 (en) | 2017-02-14 |
US8589655B2 (en) | 2013-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101905645B1 (ko) | Ssd 환경에서의 i/o 스케줄링 | |
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 | |
JP6298098B2 (ja) | ストレージ環境におけるi/o書き込みのスケジューリング |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |