KR101905645B1 - Ssd 환경에서의 i/o 스케줄링 - Google Patents

Ssd 환경에서의 i/o 스케줄링 Download PDF

Info

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
Application number
KR1020137009549A
Other languages
English (en)
Other versions
KR20130116253A (ko
Inventor
존 콜그로브
존 헤이즈
보 홍
펑 왕
에단 밀러
크레이그 하머
Original Assignee
퓨어 스토리지, 아이앤씨.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퓨어 스토리지, 아이앤씨. filed Critical 퓨어 스토리지, 아이앤씨.
Publication of KR20130116253A publication Critical patent/KR20130116253A/ko
Application granted granted Critical
Publication of KR101905645B1 publication Critical patent/KR101905645B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0706Error 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/0727Error 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3409Recording 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3466Performance evaluation by tracing or monitoring
    • G06F11/3485Performance evaluation by tracing or monitoring for I/O devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control 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

SSD 환경에서의 I/O 스케줄링{SCHEDULING OF I/O IN AN SSD ENVIRONMENT}
본 발명은 컴퓨터 네트워크에 관한 것으로, 특히, 컴퓨팅 데이터 저장 시스템에 관한 것이다.
컴퓨터 메모리 저장 및 데이터 대역폭이 증가함에 따라, 기업이 관리하는 데이터의 양 및 복잡도도 커지고 있다. 데이터 센터와 같은 대규모 분산 저장 시스템은 전형적으로 많은 사업 활동을 수행한다. 분산 저장 시스템은 하나 이상의 네트워크에 의해 상호 접속된 많은 클라이언트 컴퓨터에 연결될 수 있다. 만일 분산 저장 시스템의 어떤 일부가 성능이 낮거나 이용가능하지 않으면, 회사 활동이 손상되거나 완전히 중단될 수 있다. 그러한 분산 저장 시스템은 데이터 이용가능성 및 고성능 기능을 위해 높은 수준을 유지하려고 추구한다.
저장 시스템 자체 내에서, 파일 시스템 및 저장 장치 레벨의 입/출력(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는 공유 데이터 저장장치에 대한 판독 동작이 효율적인 지연을 갖도록 유지하는 방법의 일 실시예를 예시하는 일반화된 흐름도이다.
본 발명은 다양한 변형 및 대안의 형태가 가능하지만, 특정 실시예가 도면에 예를 들어 도시되며 본 명세서에서 상세히 기술된다. 그러나, 그에 대한 도면 및 상세한 설명은 본 발명을 개시된 특정 형태로 제한하려는 것이 아니며, 반대로 본 발명은 첨부의 특허청구범위로 규정된 바와 같은 본 발명의 정신 및 범주 내에 속하는 변형, 등가물 및 대안을 모두 망라하고자 한다는 점을 이해해야 한다.
다음의 설명에서는, 본 발명의 철저한 이해를 제공하기 위하여 많은 구체적인 세부 내용이 기술된다. 그러나, 당업자라면 본 발명이 이러한 구체적인 세부 내용 없이도 실시될 수 있다는 점을 인식할 것이다. 어떤 경우에, 본 발명을 불명확하게 하지 않도록 하기 위해 공지의 회로, 구조, 신호, 컴퓨터 프로그램 명령어, 및 기술은 상세히 제시되지 않았다.
도 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. 컴퓨터 시스템으로서,
    데이터를 저장하도록 구성된 복수의 저장 장치; 및
    데이터 저장 제어기
    를 포함하고,
    상기 데이터 저장 제어기는,
    특정 저장 장치가 특정 동작 상태에 있었던 시간의 길이를 결정하고;
    상기 특정 동작 상태 및 상기 특정 저장 장치가 상기 특정 동작 상태에 있었던 상기 시간의 길이에 기초하여, 상기 복수의 저장 장치 중 상기 특정 저장 장치가 제1의 원하는 레벨보다 낮거나 제2의 원하는 레벨보다 높은 응답 지연(latency)을 포함하는 스케줄링되지 않은 거동(unscheduled behavior)을 언제 보일지를 예측하도록 구성되는 컴퓨터 시스템.
  2. 제1항에 있어서, 상기 데이터 저장 제어기는 적어도 부분적으로 상기 특정 저장 장치와 관련된 I/O 요청들의 최근 이력에 기초하여 하나 이상의 프로액티브 동작(proactive operation)을 스케줄링하도록 구성되는 컴퓨터 시스템.
  3. 제1항에 있어서, 상기 데이터 저장 제어기는 하나 이상의 프로액티브 동작을 스케줄링하도록 구성되고, 상기 특정 저장 장치는 상기 스케줄링되지 않은 거동을 보이며, 상기 하나 이상의 프로액티브 동작은 상기 특정 저장 장치가 상기 제2의 원하는 레벨보다 높은 응답 지연을 보이는 상태에 진입하게 하는 컴퓨터 시스템.
  4. 제3항에 있어서, 상기 복수의 저장 장치는 고상(solid state) 저장 장치이고,
    상기 프로액티브 동작들은 캐시 플러시(flush) 동작, 보안 삭제(secure erase) 동작, 트림(trim) 동작, 슬립(sleep) 동작, 휴면(hibernate) 동작, 전원 온오프 동작, 및 리셋 동작 중 하나 이상을 포함하는 컴퓨터 시스템.
  5. 삭제
  6. 삭제
  7. 제1항에 있어서, 상기 복수의 저장 장치는 적어도 하나의 RAID 그룹을 포함하고, 상기 데이터 저장 제어기는 상기 RAID 그룹 내 상기 복수의 저장 장치 중 N개 이하의 저장 장치가 어떤 주어진 시간에 스케줄링된 장시간 지연 동작을 수행하도록 원하는 레벨보다 긴 지연들을 갖는 동작들을 스케줄링하도록 구성되는 컴퓨터 시스템.
  8. 제7항에 있어서, 상기 저장 장치들 중 N개 초과의 저장 장치가 주어진 시간에 사용 중(busy)인 것으로 결정하는 것에 응답하여, 상기 데이터 저장 제어기는 상기 저장 장치들 중 적어도 하나 상에서 고지연 동작의 실행을 중단하도록 구성되는 컴퓨터 시스템.
  9. 제1항에 있어서, 상기 데이터 저장 제어기는 또한,
    상기 복수의 저장 장치 중 주어진 저장 장치가 스케줄링되지 않은 거동을 보이는 것을 검출하고;
    상기 주어진 저장 장치에 의한 상기 스케줄링되지 않은 거동의 발생을 검출함에 응답하여 하나 이상의 리액티브(reactive) 동작을 스케줄링하도록 구성되며,
    상기 하나 이상의 리액티브 동작은 상기 주어진 저장 장치가 알려진 상태에 진입하게 하도록 구성되는 컴퓨터 시스템.
  10. 제1항에 있어서, 상기 데이터 저장 제어기는,
    상기 복수의 저장 장치 중 주어진 저장 장치의 상태를 모니터하고;
    프로액티브 동작이 없는 경우 스케줄링되지 않은 거동이 발생할 가능성이 있는 것으로 예측함에 응답하여 상기 주어진 저장 장치에 대해 상기 프로액티브 동작을 스케줄링하도록 구성되는 컴퓨터 시스템.
  11. 삭제
  12. 제1항에 있어서, 상기 데이터 저장 제어기는 장시간 지연 동작이 스케줄링된 것을 검출함에 응답하여 주어진 저장 장치에 대해 상기 장시간 지연 동작에 뒤따르도록 하나 이상의 프로액티브 동작을 스케줄링하도록 구성되는 컴퓨터 시스템.
  13. 컴퓨팅 시스템에 사용하기 위한 방법으로서, 상기 방법은,
    복수의 저장 장치 중 특정 저장 장치가 특정 동작 상태에 있었던 시간의 길이를 결정하는 단계; 및
    상기 특정 동작 상태 및 상기 특정 저장 장치가 상기 특정 동작 상태에 있었던 상기 시간의 길이에 기초하여, 상기 복수의 저장 장치 중 상기 특정 저장 장치가 제1의 원하는 레벨보다 낮거나 제2의 원하는 레벨보다 높은 응답 지연을 포함하는 스케줄링되지 않은 거동을 언제 보일지를 예측하는 단계
    를 포함하는 방법.
  14. 제13항에 있어서, 적어도 부분적으로 상기 특정 저장 장치와 관련된 I/O 요청들의 최근 이력에 기초하여 하나 이상의 프로액티브 동작을 스케줄링하는 단계를 더 포함하는 방법.
  15. 제13항에 있어서, 하나 이상의 프로액티브 동작을 스케줄링하는 단계를 더 포함하고, 상기 특정 저장 장치는 상기 스케줄링되지 않은 거동을 보이며, 상기 하나 이상의 프로액티브 동작은 상기 특정 저장 장치가 상기 제2의 원하는 레벨보다 높은 응답 지연을 보이는 상태에 진입하게 하는 방법.
  16. 제15항에 있어서, 상기 복수의 저장 장치는 고상 저장 장치이고,
    상기 프로액티브 동작들은 캐시 플러시 동작, 보안 삭제 동작, 트림 동작, 슬립 동작, 전원 온오프 동작, 휴면 동작, 및 리셋 동작 중 하나 이상을 포함하는 방법.
  17. 삭제
  18. 삭제
  19. 제13항에 있어서, 상기 복수의 저장 장치는 적어도 하나의 RAID 그룹을 포함하고,
    상기 방법은 상기 RAID 그룹 내 상기 복수의 저장 장치 중 N개 이하의 저장 장치가 어떤 주어진 시간에 스케줄링된 장시간 지연 동작을 수행하도록 원하는 레벨보다 긴 지연들을 갖는 동작들을 스케줄링하는 단계를 더 포함하는 방법.
  20. 제19항에 있어서, 상기 저장 장치들 중 N개 초과의 저장 장치가 주어진 시간에 사용 중인 것으로 결정하는 것에 응답하여, 상기 저장 장치들 중 적어도 하나 상에서 고지연 동작의 실행을 중단하는 단계를 더 포함하는 방법.
  21. 제13항에 있어서,
    상기 복수의 저장 장치 중 주어진 저장 장치가 스케줄링되지 않은 거동을 보이는 것을 검출하는 단계; 및
    상기 주어진 저장 장치에 의한 상기 스케줄링되지 않은 거동의 발생을 검출함에 응답하여 하나 이상의 리액티브 동작을 스케줄링하는 단계
    를 더 포함하고, 상기 하나 이상의 리액티브 동작은 상기 주어진 저장 장치가 알려진 상태에 진입하게 하도록 구성되는 방법.
  22. 제13항에 있어서,
    상기 복수의 저장 장치 중 주어진 저장 장치의 상태를 모니터하는 단계; 및
    프로액티브 동작이 없는 경우 스케줄링되지 않은 거동이 발생할 가능성이 있는 것으로 예측함에 응답하여 상기 주어진 저장 장치에 대해 프로액티브 동작을 스케줄링하는 단계를 더 포함하는 방법.
  23. 삭제
  24. 프로그램 명령어들을 포함하는 컴퓨터 판독가능한 저장 매체로서,
    처리 장치에 의해 실행될 때, 상기 프로그램 명령어들은,
    복수의 저장 장치 중 특정 저장 장치가 특정 동작 상태에 있었던 시간의 길이를 결정하고;
    상기 특정 동작 상태 및 상기 특정 저장 장치가 상기 특정 동작 상태에 있었던 상기 시간의 길이에 기초하여, 상기 복수의 저장 장치 중 상기 특정 저장 장치가 제1의 원하는 레벨보다 낮거나 제2의 원하는 레벨보다 높은 응답 지연을 포함하는 스케줄링되지 않은 거동을 언제 보일지를 예측하도록 동작 가능한 컴퓨터 판독가능한 저장 매체.
  25. 제24항에 있어서, 상기 프로그램 명령어들은 또한,
    상기 복수의 저장 장치 중 주어진 저장 장치의 상태를 모니터하고;
    프로액티브 동작이 없는 경우 스케줄링되지 않은 거동이 발생할 가능성이 있는 것으로 예측함에 응답하여 상기 주어진 저장 장치에 대해 프로액티브 동작을 스케줄링하도록 동작가능한 컴퓨터 판독가능한 저장 매체.
  26. 제25항에 있어서, 상기 프로그램 명령어들은 또한, 적어도 부분적으로 상기 특정 저장 장치와 관련된 I/O 요청들의 최근 이력에 기초하여 하나 이상의 프로액티브 동작을 스케줄링하도록 동작가능한 컴퓨터 판독가능한 저장 매체.
KR1020137009549A 2010-09-15 2011-09-14 Ssd 환경에서의 i/o 스케줄링 KR101905645B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/882,854 US8589655B2 (en) 2010-09-15 2010-09-15 Scheduling of I/O in an SSD environment
US12/882,854 2010-09-15
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 (64)

* Cited by examiner, † Cited by third party
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
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US8589655B2 (en) 2010-09-15 2013-11-19 Pure Storage, Inc. Scheduling of I/O in an SSD environment
JP5761209B2 (ja) * 2011-02-10 2015-08-12 富士通株式会社 ストレージ制御装置、及び、そのプログラム
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
CN102662608B (zh) * 2012-03-30 2015-11-25 华为技术有限公司 一种降低读延时的方法及装置
US8874829B2 (en) * 2012-03-30 2014-10-28 Hitachi, Ltd. Storage system and storage system control method
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
US9081828B1 (en) 2014-04-30 2015-07-14 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
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 华为技术有限公司 一种存储系统的并行读写方法和装置
US10318420B2 (en) 2014-10-31 2019-06-11 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
EP3688599A4 (en) * 2017-09-30 2021-07-28 Micron Technology, INC. PRE-EMPTIVE READ SCANS DURING INACTIVITY
US11023166B2 (en) * 2018-08-08 2021-06-01 Micron Technology, Inc. Quality of service control for read operations in memory systems
KR20200137181A (ko) 2019-05-29 2020-12-09 에스케이하이닉스 주식회사 메모리 시스템에서 맵정보를 전송하는 장치
KR20210004322A (ko) 2019-07-04 2021-01-13 에스케이하이닉스 주식회사 메모리 시스템에서 맵정보 및 리드카운트를 전송하는 장치 및 방법
KR20200139433A (ko) 2019-06-04 2020-12-14 에스케이하이닉스 주식회사 컨트롤러의 동작 방법 및 메모리 시스템
US11422942B2 (en) 2019-04-02 2022-08-23 SK Hynix Inc. Memory system for utilizing a memory included in an external device
US11416408B2 (en) 2019-07-05 2022-08-16 SK Hynix Inc. Memory system, memory controller and method for operating memory system
KR20200123684A (ko) 2019-04-22 2020-10-30 에스케이하이닉스 주식회사 메모리 시스템에서 맵 정보를 전송하는 장치
US11137914B2 (en) 2019-05-07 2021-10-05 Western Digital Technologies, Inc. Non-volatile storage system with hybrid command
TWI719654B (zh) * 2019-06-21 2021-02-21 慧榮科技股份有限公司 閃存實體資源集合管理裝置及方法以及電腦程式產品
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 삼성전자주식회사 컴플리션 타이밍을 관리하는 스토리지 컨트롤러, 및 이의 동작 방법
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
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
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

Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 Hettich Paul Gmbh & Co 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
US6871011B1 (en) 2000-09-28 2005-03-22 Matsushita Electric Industrial Co., Ltd. Providing quality of service for disks I/O sub-system with simultaneous deadlines and priority
JP2002108573A (ja) 2000-09-28 2002-04-12 Nec Corp ディスクアレイ装置、そのエラー制御方法、ならびにその制御プログラムを記録した記録媒体
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
EP1370947A4 (en) 2001-02-13 2009-05-27 Candera Inc STORAGE VIRTUALIZATION SERVER SILICON BASE
US6950966B2 (en) 2001-07-17 2005-09-27 Seachange International, Inc. Data transmission from raid services
US6986015B2 (en) 2001-12-10 2006-01-10 Incipient, Inc. Fast path caching
US6973549B1 (en) 2001-12-10 2005-12-06 Incipient, Inc. Locking technique for control and synchronization
US7539991B2 (en) 2002-03-21 2009-05-26 Netapp, Inc. Method and apparatus for decomposing I/O tasks in a raid system
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
AU2004230005A1 (en) 2003-04-07 2004-10-28 Itracs Corporation Network security system based on physical location
US7424498B1 (en) 2003-06-30 2008-09-09 Data Domain, Inc. Probabilistic summary data structure based encoding for garbage collection
US7865485B2 (en) 2003-09-23 2011-01-04 Emc Corporation Multi-threaded write interface and methods for increasing the single file read and write throughput of a file server
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
WO2006123416A1 (ja) 2005-05-19 2006-11-23 Fujitsu Limited ディスク故障復旧方法及びディスクアレイ装置
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 株式会社日立製作所 スナップショット管理装置及び方法並びにストレージシステム
US20070079075A1 (en) * 2005-09-30 2007-04-05 Collier Josh D Providing cache coherency in an extended multiple processor environment
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
JP4529990B2 (ja) 2007-03-30 2010-08-25 ブラザー工業株式会社 画像処理プログラム及び画像処理装置
JP4900811B2 (ja) 2007-03-30 2012-03-21 株式会社日立製作所 記憶システムおよび記憶制御方法
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
CN101682503A (zh) 2007-05-30 2010-03-24 富士通株式会社 图像加密装置、图像解密装置、方法以及程序
US7765426B2 (en) 2007-06-07 2010-07-27 Micron Technology, Inc. Emerging bad block detection
US8874854B2 (en) 2007-07-30 2014-10-28 International Business Machines Corporation Method for selectively enabling and disabling read caching in a storage subsystem
US7877558B2 (en) 2007-08-13 2011-01-25 Advanced Micro Devices, Inc. Memory controller prioritization scheme
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
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
US8281182B2 (en) * 2010-03-12 2012-10-02 Cleversafe, Inc. Dispersed storage unit selection
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
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
US8732426B2 (en) 2010-09-15 2014-05-20 Pure Storage, Inc. Scheduling of reactive I/O operations in a storage environment
US8468318B2 (en) 2010-09-15 2013-06-18 Pure Storage Inc. Scheduling of I/O writes in a storage environment
US8775868B2 (en) 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
US20120117029A1 (en) 2010-11-08 2012-05-10 Stephen Gold Backup policies for using different storage tiers
WO2012106362A2 (en) 2011-01-31 2012-08-09 Fusion-Io, Inc. Apparatus, system, and method for managing eviction of data
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
US8595267B2 (en) 2011-06-27 2013-11-26 Amazon Technologies, Inc. System and method for implementing a scalable data storage service
US8751463B1 (en) 2011-06-30 2014-06-10 Emc Corporation Capacity forecasting for a deduplicating storage system
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
US8806160B2 (en) 2011-08-16 2014-08-12 Pure Storage, Inc. Mapping 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
WO2013051129A1 (ja) 2011-10-06 2013-04-11 株式会社 日立製作所 格納データの重複排除方法、格納データの重複排除装置、及び重複排除プログラム
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
WO2014076743A1 (en) 2012-11-19 2014-05-22 Hitachi, Ltd. Storage system
US9348840B2 (en) 2012-12-14 2016-05-24 Intel Corporation Adaptive data striping and replication across multiple storage clouds for high availability and performance
US9063967B2 (en) 2013-01-10 2015-06-23 Pure Storage, Inc. Performing copies in a storage system
US9886346B2 (en) 2013-01-11 2018-02-06 Commvault Systems, Inc. Single snapshot for multiple agents
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9335932B2 (en) 2013-03-15 2016-05-10 Bracket Computing, Inc. Storage unit selection for virtualized storage units
US9519575B2 (en) 2013-04-25 2016-12-13 Sandisk Technologies Llc Conditional iteration for a non-volatile device
US10263770B2 (en) 2013-11-06 2019-04-16 Pure Storage, Inc. Data protection in a storage system using external secrets
US9516016B2 (en) 2013-11-11 2016-12-06 Pure Storage, Inc. Storage array password management
JP6233086B2 (ja) 2014-02-20 2017-11-22 富士通株式会社 ストレージ制御装置,ストレージシステム及び制御プログラム
US10169121B2 (en) 2014-02-27 2019-01-01 Commvault Systems, Inc. Work flow management for an information management system
US10656864B2 (en) 2014-03-20 2020-05-19 Pure Storage, Inc. Data replication within a flash storage array
US9361469B2 (en) 2014-03-26 2016-06-07 Amazon Technologies, Inc. Electronic communication with secure screen sharing of sensitive information
US9513820B1 (en) 2014-04-07 2016-12-06 Pure Storage, Inc. Dynamically controlling temporary compromise on data redundancy
US9563509B2 (en) 2014-07-15 2017-02-07 Nimble Storage, Inc. Methods and systems for storing data in a redundant manner on a plurality of storage units of a storage system
US9489132B2 (en) 2014-10-07 2016-11-08 Pure Storage, Inc. Utilizing unmapped and unknown states in a replicated storage system
US10430282B2 (en) 2014-10-07 2019-10-01 Pure Storage, Inc. Optimizing replication by distinguishing user and system write activity
US9552248B2 (en) 2014-12-11 2017-01-24 Pure Storage, Inc. Cloud alert to replica

Patent Citations (4)

* Cited by examiner, † Cited by third party
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
JP2013542494A (ja) 2013-11-21
US8589655B2 (en) 2013-11-19
JP5912120B2 (ja) 2016-04-27
US9298376B2 (en) 2016-03-29
EP3572922A1 (en) 2019-11-27
WO2012037293A1 (en) 2012-03-22
EP2616921B1 (en) 2019-03-13
CN103348314A (zh) 2013-10-09
US10126982B1 (en) 2018-11-13
JP6356720B2 (ja) 2018-07-11
CN103348314B (zh) 2016-01-27
US20140075105A1 (en) 2014-03-13
US9569116B1 (en) 2017-02-14
US10353630B1 (en) 2019-07-16
JP2016131037A (ja) 2016-07-21
EP2616921A1 (en) 2013-07-24
US20120066447A1 (en) 2012-03-15
KR20130116253A (ko) 2013-10-23

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