KR20220139420A - 완전한 스트라이드 디스테이지를 위한 선제적 스테이징 - Google Patents

완전한 스트라이드 디스테이지를 위한 선제적 스테이징 Download PDF

Info

Publication number
KR20220139420A
KR20220139420A KR1020227033917A KR20227033917A KR20220139420A KR 20220139420 A KR20220139420 A KR 20220139420A KR 1020227033917 A KR1020227033917 A KR 1020227033917A KR 20227033917 A KR20227033917 A KR 20227033917A KR 20220139420 A KR20220139420 A KR 20220139420A
Authority
KR
South Korea
Prior art keywords
cache
strides
raid array
data
stride
Prior art date
Application number
KR1020227033917A
Other languages
English (en)
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 KR20220139420A publication Critical patent/KR20220139420A/ko

Links

Images

Classifications

    • 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
    • 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
    • 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/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
    • G06F3/0656Data buffering arrangements
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/462Track or segment
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Supply Devices, Intensifiers, Converters, And Telemotors (AREA)
  • Preparation Of Compounds By Using Micro-Organisms (AREA)
  • External Artificial Organs (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

RAID 어레이에 대한 디스테이지 성능 개선을 위한 방법이 개시된다. 이러한 방법은 RAID 어레이에 디스테이징될 준비가 된 제1 스트라이드들에 대해 캐시를 주기적으로 스캔한다. 상기 캐시를 스캔하는 동안, 상기 방법은 현재 상기 RAID 어레이에 디스테이징될 준비가 되지 않았지만 상기 캐시의 후속 스캔 동안 디스테이징될 준비가 될 가능성이 있는 제2 스트라이드를 식별한다. 상기 방법은 상기 후속 스캔에 대비하여 상기 RAID 어레이로부터 상기 캐시로 상기 제2 스트라이드들의 누락된 데이터의 선제적 스테이징을 개시한다. 상기 후속 스캔의 발생 시, 상기 방법은 상기 캐시로부터 상기 RAID 어레이로 상기 제2 스트라이드들을 디스테이징한다. 이에 상응하는 시스템 및 컴퓨터 프로그램 제품이 또한 개시된다.

Description

완전한 스트라이드 디스테이지를 위한 선제적 스테이징
[0001] 본 발명은 RAID 어레이에 대한 디스테이지 성능(destage performance)을 개선하기 위한 시스템 및 방법에 관한 것이다.
[0002] RAID(즉, 중복 어레이 독립 디스크)는 중복을 통해 향상된 스토리지 기능과 안정성을 제공하는 스토리지 기술이다. RAID는 여러 스토리지 드라이브 컴포넌트(예를 들어, 디스크 드라이브 및/또는 솔리드 스테이트 드라이브)를 하나의 논리 유닛으로 결합하여 생성된다. 그런 다음 데이터는 “RAID 레벨”이라고 하는 다양한 기술을 사용하여 드라이브들에 분산된다. 현재 RAID 레벨 1~6을 포함하는 표준 RAID 레벨들은 데이터 중복을 제공하기 위해 스트라이핑, 미러링 및/또는 패리티를 사용하는 RAID 구성들의 기본 세트이다. 상기 각 구성은 (1) 데이터 안정성 향상 및 (2) I/O 성능 향상이라는 두 가지 주요 목표 간의 균형을 제공한다.
[0003] RAID 어레이로 구성된 디스크들은, 여러 드라이브에서 동시에 데이터에 액세스할 수 있으므로, 읽기 성능 가속화를 제공할 수 있다. 그러나, RAID-5 또는 RAID-6 어레이와 같은 RAID 어레이들에 쓰기를 수행할 때 오버헤드가 증가할 수 있다. 이것은 주로 패리티 계산으로 인한 것이다. 예를 들면, RAID-5 어레이에서 데이터 스트라이드의 서브세트(즉, 스트립)에 쓰기 위해서는, 스트라이드의 다른 스트립들이 스트라이드와 연관된 패리티 값을 재계산하기 위해 RAID-5 어레이로부터 스테이징될 필요가 있을 수 있다. 일단 패리티 값이 재계산되면, 완전한 스트라이드는 RAID-5 어레이로 다시 디스테이징될 수 있다. 따라서, RAID-5 어레이에 전체-스트라이드-미만 쓰기는 RAID 어레이로부터 데이터를 스테이징하고, 패리티 값을 재계산하고, 데이터와 재계산된 패리티 값을 RAID 어레이에 다시 디스테이징하는 데 상당한 오버헤드가 필요할 수 있다. 반면에, 데이터의 완전한 스트라이드를 구성하는 쓰기는 단일 연산을 사용하여 계산된 패리티 값과 함께 RAID-5 어레이로 디스테이징될 수 있다. 이는 RAID 어레이에 스트라이드를 쓰기 전에 디스크 드라이브들에서 누락된 데이터 값들이나 패리티 값을 로드할 필요가 없기 때문이다.
[0004] 본 발명은 현재의 기술 상태에 응답하여 개발되었고, 특히 현재 이용 가능한 시스템들 및 방법들에 의해 아직 완전히 해결되지 않은 기술에서의 문제들 및 요구들에 응답하여 개발되었다. 따라서, 본 발명은 RAID 어레이에 대한 디스테이지 성능을 개선하기 위해 개발되었다. 본 발명의 특징 및 이점은 다음의 상세한 설명 및 첨부된 청구범위로부터 보다 완전히 명백해지거나, 이하에서 설명되는 바와 같이 본 발명의 실시에 의해 학습될 수 있다.
[0005] 전술한 내용과 일관되게, RAID 어레이에 대한 디스테이지 성능 개선을 위한 방법이 개시된다. 한 실시예에서, 이러한 방법은 RAID 어레이에 디스테이징될 준비가 된 제1 스트라이드들에 대해 캐시를 주기적으로 스캔한다. 상기 캐시를 스캔하는 동안, 상기 방법은 현재 상기 RAID 어레이에 디스테이징될 준비가 되지 않았지만 상기 캐시의 후속 스캔 동안 디스테이징될 준비가 될 가능성이 있는 제2 스트라이드를 식별한다. 상기 방법은 상기 후속 스캔에 대비하여 상기 RAID 어레이로부터 상기 캐시로 상기 제2 스트라이드들의 누락된 데이터의 선제적 스테이징을 개시한다. 상기 후속 스캔의 발생 시, 상기 방법은 상기 캐시로부터 상기 RAID 어레이로 상기 제2 스트라이드들을 디스테이징한다.
[0006] 이에 상응하는 컴퓨터 프로그램 제품 및 시스템이 또한 본원에 개시되고 청구된다.
[0007] 본 발명의 이점이 용이하게 이해될 수 있도록, 첨부된 도면들에 도시된 특정 실시예들을 참조하여 위에서 간략히 설명된 본 발명의 보다 구체적인 설명을 할 것이다. 이 도면들은 본 발명의 전형적인 실시예들만을 도시하고 따라서 그 범위를 제한하는 것으로 간주되어서는 안 된다는 것을 이해하고, 첨부 도면들을 사용하여 본 발명을 추가로 구체적이고 상세하게 기술하고 설명할 것이다.
[0008] 도 1은 본 발명에 따른 시스템 및 방법이 구현될 수 있는 네트워크 환경의 일 예를 도시하는 고수준 블록도이다.
[0009] 도 2는 도 1의 네트워크 환경에서 사용하기 위한 스토리지 시스템의 일 예를 도시하는 고수준 블록도이다.
[0010] 도 3a는 RAID 어레이 내 스트라이드들을 도시하는 고수준 블록도이다.
[0011] 도 3b는 도 3a의 RAID 어레이 내 각 스트라이드에 대해 계산된 패리티 값들을 보여주는 표이다.
[0012] 도 4는 캐시 내의 읽기 캐시 및 쓰기 캐시를 도시하는 고수준 블록도이다.
[0013] 도 5는 캐시에서 RAID 어레이로 데이터를 디스테이징하기 위한 캐시 디스테이지 모듈을 도시하는 고수준 블록도이다.
[0014] 도 6은 RAID 어레이에 디스테이징하기 위해 스트라이드들에 대해 캐시를 스캐닝하는 방법의 일 실시예를 도시하는 흐름도이다.
[0015] 도 7은 캐시에 선제적으로 스테이징되는 스트라이드의 수를 조절하는 방법의 일 실시예를 나타내는 흐름도이다.
[0016] 본원의 도면에 일반적으로 설명되고 예시된 바와 같이, 본 발명의 구성요소는 매우 다양한 상이한 구성으로 배열되고 설계될 수 있다는 것을 쉽게 이해할 것이다. 따라서, 도면에 나타낸 바와 같이, 본 발명의 실시예들에 대한 하기의 보다 상세한 설명은 청구된 바와 같은 본 발명의 범위를 제한하려는 것이 아니라, 단지 본 발명에 따라 현재 고려되는 실시예들의 특정 예들을 나타내는 것이다. 현재 기술하는 실시예들은 도면들을 참조하여 가장 잘 이해될 것이며, 여기서 동일한 부분은 전체에 걸쳐 동일한 번호로 표기된다.
[0017] 본 발명은 시스템, 방법, 및/또는 컴퓨터 프로그램 제품으로 구현될 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 스토리지 매체를 포함할 수 있으며, 이 매체 상에 프로세서가 본 발명의 실시예들을 수행하도록 하는 컴퓨터 판독 가능 프로그램 명령들을 갖는다.
[0018] 상기 컴퓨터 판독 가능 스토리지 매체는 명령 실행 디바이스에 의해 사용될 명령들을 유지 및 저장할 수 있는 유형의(tangible) 디바이스일 수 있다. 상기 컴퓨터 판독 가능 스토리지 매체는, 예를 들면, 전자 스토리지 디바이스, 자기 스토리지 디바이스, 광 스토리지 디바이스, 전자기 스토리지 디바이스, 반도체 스토리지 디바이스, 또는 전술한 것들의 모든 적절한 조합일 수 있으며, 그러나 이에 한정되지는 않는다. 컴퓨터 판독 가능 스토리지 매체의 더 구체적인 예들의 비포괄적인 목록에는 다음이 포함된다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 소거 및 프로그램가능 읽기 전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 읽기 전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 메모리 스틱, 플로피 디스크, 천공-카드들 또는 명령들이 기록된 홈에 있는 융기된 구조들 같이 기계적으로 인코드된 디바이스, 및 전술한 것들의 모든 적절한 조합. 본원에서 사용되는 컴퓨터 판독 가능 스토리지 매체는 무선 전파들이나 다른 자유롭게 전파되는 전자기파들, 도파관이나 기타 전송 매체를 통해 전파되는 전자기파들(예를 들어, 광섬유 케이블을 통해 전달되는 광 펄스들), 또는 선(wire)을 통해 전송되는 전기 신호들 같이 그 자체로 일시적인(transitory) 신호들로 해석되지는 않는다.
[0019] 본원에 기술되는 컴퓨터 판독 가능 프로그램 명령들은, 예를 들어, 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크 등의 통신망(네트워크)을 통해 컴퓨터 판독 가능 스토리지 매체로부터 각각 컴퓨팅/처리 디바이스들로 또는 외부 컴퓨터 또는 외부 스토리지 디바이스로 다운로드될 수 있다. 상기 통신망은 구리 전송 케이블들, 광 전송 섬유들, 무선 전송, 라우터들, 방화벽들, 스위치들, 게이트웨이 컴퓨터들 및/또는 엣지 서버들을 포함할 수 있다. 각 컴퓨팅/처리 디바이스 내 네트워크 어댑터 카드 또는 네트워크 인터페이스는 상기 통신망으로부터 컴퓨터 판독 가능 프로그램 명령들을 수신하고 그 컴퓨터 판독 가능 프로그램 명령들을 각각의 컴퓨팅/처리 디바이스 내의 컴퓨터 판독 가능 스토리지 매체에 저장하기 위해 전송한다.
[0020] 본 발명의 연산들을 실행하기 위한 컴퓨터 판독 가능 프로그램 명령들은 Smalltalk, C++ 또는 그와 유사 언어 등의 객체 지향 프로그래밍 언어와 “C” 프로그래밍 언어 또는 그와 유사한 언어 등의 종래의 절차적 프로그래밍 언어들을 포함하여, 하나 이상의 프로그래밍 언어들을 조합하여 작성된(written) 어셈블러 명령들, 명령-세트-아키텍처(ISA) 명령들, 머신 명령들, 머신 종속 명령들, 마이크로코드, 펌웨어 명령들, 상태-셋팅 데이터, 또는 소스 코드나 목적 코드일 수 있다.
[0021] 상기 컴퓨터 판독 가능 프로그램 명령들은 전적으로 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형(stand-alone) 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서 그리고 부분적으로 원격 컴퓨터상에서 또는 전적으로 원격 컴퓨터나 서버상에서 실행될 수 있다. 위에서 마지막의 경우에, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함한 모든 종류의 네트워크를 통해서 사용자의 컴퓨터에 접속될 수 있고, 또는 이 접속은 (예를 들어, 인터넷 서비스 제공자를 이용한 인터넷을 통해서) 외부 컴퓨터에 이루어질 수도 있다. 일부 실시예들에서, 예를 들어 프로그램 가능 논리 회로, 필드-프로그램 가능 게이트 어레이들(FPGA), 또는 프로그램 가능 논리 어레이들(PLA)을 포함한 전자 회로는 본 발명의 실시예들을 수행하기 위해 전자 회로를 맞춤화하도록 상기 컴퓨터 판독 가능 프로그램 명령들의 상태 정보를 활용하여 상기 컴퓨터 판독 가능 프로그램 명령들을 실행할 수 있다.
[0022] 여기에서는 본 발명의 실시예들에 따른 방법들, 장치들(시스템들), 및 컴퓨터 프로그램 제품들의 흐름 예시도들 및/또는 블록도들을 참조하여 본 발명의 실시예들을 기술한다. 흐름 예시도들 및/또는 블록도들의 각 블록과 흐름 예시도들 및/또는 블록도들 내 블록들의 조합들은 컴퓨터 판독 가능 프로그램 명령들에 의해 구현될 수 있다는 것을 이해할 수 있을 것이다.
[0023] 이들 컴퓨터 판독 가능 프로그램 명령들은 범용 컴퓨터, 특수목적용 컴퓨터, 또는 기타 프로그램가능 데이터 처리 장치의 프로세서에 제공되어 머신(machine)을 생성하고, 그렇게 하여 그 명령들이 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 장치의 프로세서를 통해서 실행되어, 상기 흐름도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현하기 위한 수단을 생성할 수 있다. 이들 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터 판독 가능 스토리지 매체에 저장될 수 있으며, 컴퓨터, 프로그램가능 데이터 처리 장치 및/또는 기타 디바이스들에 지시하여 명령들이 저장된 상기 컴퓨터 판독 가능 스토리지 매체가 상기 흐름도 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작의 특징들을 구현하는 명령들을 포함하는 제조품(an article of manufacture)을 포함하도록 특정한 방식으로 기능하게 할 수 있다.
[0024] 상기 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터, 기타 프로그램가능 데이터 처리 장치, 또는 다른 디바이스에 로드 되어, 상기 컴퓨터, 기타 프로그램가능 장치 또는 다른 디바이스에서 일련의 연산 단계들이 수행되게 하여 컴퓨터 구현 프로세스를 생성하며, 그렇게 하여 상기 컴퓨터, 기타 프로그램가능 장치, 또는 다른 디바이스 상에서 실행되는 명령들이 흐름도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현할 수 있다.
[0025] 도 1을 참조하면, 네트워크 환경(100)의 한 예가 도시된다. 네트워크 환경(100)은 본 발명의 실시예들이 동작할 수 있는 환경의 일례를 보여주기 위해 제시된다. 네트워크 환경(100)은 단지 예로서 제시되며 제한되지 않는다. 실제로, 본원에 개시된 시스템들 및 방법들은 도시된 네트워크 환경(100)에 더하여 매우 다양한 상이한 네트워크 환경들에 적용될 수 있다.
[0026] 도시된 바와 같이, 네트워크 환경(100)은 네트워크(104)에 의해 상호 연결된 하나 이상의 컴퓨터(102, 106)를 포함한다. 네트워크(104)에는 예를 들어 근거리 통신망(LAN)(104), 광역 통신망(WAN)(104), 인터넷(104), 인트라넷(104) 등이 포함될 수 있다. 특정 구현예들에서, 컴퓨터들(102, 106)은 클라이언트 컴퓨터들(102) 및 서버 컴퓨터들(106)(본원에서는 “호스트들”(106) 또는 “호스트 컴퓨터들”(106)로도 지칭됨) 둘 모두가 포함될 수 있다. 일반적으로 클라이언트 컴퓨터들(102)은 통신 세션들을 개시하는 반면, 서버 컴퓨터들(106)은 클라이언트 컴퓨터들(102)에게서 요청들을 기다리고 그에 응답한다. 특정 구현예들에서, 컴퓨터들(102) 및/또는 서버들(106)은 하나 이상의 내부 또는 외부 직접 연결 스토리지 시스템들(112)(예를 들어, 하드 디스크 드라이브들, 솔리드 스테이트 드라이브들, 테이프 드라이브들 등의 어레이들)을 연결할 수 있다. 이 컴퓨터들(102, 106) 및 직접 연결 스토리지 시스템들(112)은 ATA, SATA, SCSI, SAS, 파이버 채널 등의 프로토콜들을 사용하여 통신할 수 있다.
[0027] 네트워크 환경(100)은, 특정 구현예들에서, 서버들(106) 뒤에 스토리지-영역-네트워크(SAN)(108) 또는 LAN(108) 등의 스토리지 네트워크(108)를 (예를 들어, 네트워크 연결 스토리지를 사용할 때) 포함할 수 있다. 이 네트워크(108)는 서버들(106)을 하드 디스크 드라이브들 또는 솔리드 스테이트 드라이브들의 어레이들(110a), 테이프 라이브러리들(110b), 개별 하드 디스크 드라이브들(110c) 또는 솔리드 스테이트 드라이브들(110c), 테이프 드라이브들(110d), CD-ROM 라이브러리들 등과 같은 하나 이상의 스토리지 시스템들(110)에 연결할 수 있다. 스토리지 시스템(110)에 액세스하기 위해, 호스트 시스템(106)은 호스트(106) 상의 하나 이상의 포트로부터 스토리지 시스템(110) 상의 하나 이상의 포트로의 물리적 연결들을 통해 통신할 수 있다. 연결은 스위치, 패브릭, 직접 연결 등을 통해 이루어질 수 있다. 특정 구현예들에서, 서버들(106) 및 스토리지 시스템들(110)은 파이버 채널(FC) 또는 iSCSI 등의 네트워킹 표준을 사용하여 통신할 수 있다.
[0028] 도 2를 참조하면, 스토리지 드라이브들(204)(예를 들어, 하드 디스크 드라이브들 및/또는 솔리드 스테이트 드라이브들)의 어레이를 포함하는 스토리지 시스템(110a)의 한 실시예가 도시된다. 도시된 바와 같이, 스토리지 시스템(110a)은 스토리지 컨트롤러(200), 하나 이상의 스위치(202), 및 하드 디스크 드라이브들 및/또는 솔리드 스테이트 드라이브들 등의 스토리지 드라이브들(204)(예컨대, 플래시 메모리 기반 드라이브들)을 포함한다. 스토리지 컨트롤러(200)는 하나 이상의 호스트들(106)(예를 들어, 개방 시스템 및/또는 메인프레임 서버들(106))이 하나 이상의 스토리지 드라이브들(204)에 있는 데이터에 액세스하게 할 수 있다. 스토리지 드라이브들(204)은, 특정 구현예들에서, 다양한 RAID 레벨들의 RAID 어레이들에서 원하는 레벨의 I/O 성능 및/또는 데이터 중복을 제공하도록 구성될 수 있다.
[0029] 선택된 실시예들에서, 스토리지 컨트롤러(200)는 하나 이상의 서버(206)를 포함한다. 스토리지 컨트롤러(200)는 또한 스토리지 컨트롤러(200)를 호스트 디바이스들(106) 및 스토리지 드라이브들(204)에 각각 연결하는 호스트 어댑터들(208) 및 디바이스 어댑터들(210)을 포함할 수 있다. 정상 연산 동안(두 서버(206)가 모두 연산 가능할 때), 서버들(206)은 엔터프라이즈 스토리지 시스템(110a) 내의 상이한 논리 서브시스템들(LSSs)에 대한 I/O를 관리할 수 있다. 예를 들면, 특정 구성들에서, 제1 서버(206a)는 짝수 LSS들에 대한 I/O를 처리할 수 있는 반면, 제2 서버(206b)는 홀수 LSS들에 대한 I/O를 처리할 수 있다. 이 서버들(206a, 206b)은 연결된 호스트들(106)이 항상 데이터를 이용할 수 있도록 중복을 제공할 수 있다. 따라서, 한 서버(206a)가 고장날 때, 다른 서버(206b)가 고장난 서버(206a)의 I/O 로드를 픽업하여 I/O가 호스트들(106)과 스토리지 드라이브들(204) 사이에서 계속될 수 있도록 보장할 수 있다. 이 프로세스를 “페일오버(failover)”라 지칭할 수 있다.
[0030] 선택된 실시예들에서, 각 서버(206)는 하나 이상의 프로세서들(212)과 메모리(214)를 포함한다. 메모리(214)는 휘발성 메모리(예를 들어, RAM)와 비휘발성 메모리(예를 들어, ROM, EPROM, EEPROM, 플래시 메모리, 로컬 디스크 드라이브들, 로컬 솔리드 스테이트 드라이브들 등)를 포함할 수 있다. 휘발성 및 비휘발성 메모리는, 특정 구현예들에서, 프로세서(들)(212) 상에서 실행되고 스토리지 드라이브들(204) 내 데이터에 액세스하는 데 사용되는, 소프트웨어 모듈들을 저장할 수 있다. 이 소프트웨어 모듈들은 스토리지 드라이브들(204) 내 논리 볼륨들(302)에 대한 모든 읽기 및 쓰기 요청을 관리할 수 있다.
[0031] 선택된 실시예들에서, 메모리(214)는 DRAM 캐시(218) 등의 캐시(218)를 포함한다. 호스트(106)(예를 들어, 개방 시스템 또는 메인프레임 서버 106)가 읽기 연산을 수행할 때마다, 해당 읽기를 수행하는 서버(206)는 스토리지 드라이브들(204)로부터 데이터를 인출하여 그것이 다시 필요한 경우를 위해 자신의 캐시(218)에 저장할 수 있다. 상기 데이터가 호스트(106)에 의해 다시 요청되면, 서버(206)는 상기 데이터를 스토리지 드라이브들(204)로부터 인출하는 대신 캐시(218)로부터 인출할 수 있어, 시간과 리소스를 절약할 수 있다. 유사하게, 호스트(106)가 쓰기를 수행할 때, 해당 쓰기 요청을 수신하는 서버(106)는 해당 쓰기를 자신의 캐시(218)에 저장하고, 나중에 스토리지 드라이브들(204)에 대한 쓰기를 디스테이징할 수 있다. 쓰기가 캐시(218)에 저장되면, 해당 쓰기는 또한 상대 서버(206)의 비휘발성 스토리지(NVS)(220)에 저장될 수 있어 해당 쓰기는 제1 서버(206)가 고장나는 경우 상대 서버(206)에 의해 복구될 수 있다.
[0032] 도 2에 예시된 것과 유사한 아키텍처를 가진 스토리지 시스템(110a)의 일례는 IBM DS8000® 엔터프라이즈 스토리지 시스템이다. DS8000®은 연속적인 연산들을 지원하도록 설계된 디스크 및 솔리드 스테이트 스토리지를 제공하는 고성능 고용량 스토리지 컨트롤러이다. 그럼에도 불구하고, 본원에 개시된 시스템들 및 방법들은 IBM DS8000® 엔터프라이즈 스토리지 시스템으로 한정되지 않으며, 하지만 제조업체, 제품 이름 또는 시스템과 관련된 구성 요소 또는 구성 요소 이름에 관계없이 비교 가능하거나 유사한 스토리지 시스템 또는 스토리지 시스템들의 그룹에서 구현될 수 있다. 본 발명의 하나 이상의 실시예로부터 이익을 얻을 수 있는 스토리지 시스템은 본 발명의 범위에 속하는 것으로 간주된다. 따라서, IBM DS8000®은 단지 예시로 제시된 것이며 제한하려는 의도는 없다.
[0033] 도 3a를 참조하면, 선택된 실시예들에서, 스토리지 시스템(110a)의 디스크 드라이브들(204)은 RAID 어레이(302)(즉, 저렴한 디스크들의 중복 어레이)로 구성될 수 있다. 예를 들어, “RAID 5” 어레이(302)에서, 논리적으로 순차적인 데이터가 다수의 디스크 드라이브들(204a-d)에 걸쳐 분할될 수 있다. 예를 들어, 디스크 드라이브들(204a-d)이 4개의 디스크를 포함하는 경우, 논리적으로 순차적인 데이터 “A”는 세그먼트들 “A1”, “A2,” 및 “A3”(집합적으로 “스트라이드 A”라 지칭함)으로 분할되어 세 개의 개별 디스크(204a-c) 상에 저장될 수 있다. 선택된 실시예들에서, 각 세그먼트는 하나 이상의 트랙(300)을 포함하지만, 다른 분할도 가능하다. 패리티 데이터 “Ap”는 A1, A2, 및 A3에 대해 XOR 연산을 수행하여 계산될 수 있다. 이 패리티 데이터는 제4 디스크(204d)에 저장될 수 있다. 예시적인 데이터 및 패리티 값들이 도 3b에 예시되어 있다(패리티 값들은 음영이 표시되어 있다). 디스크들(204a-c) 중 하나가 고장나는 경우, 나머지 데이터 및 패리티 값들은 고장난 디스크의 데이터를 재구성하는 데 사용될 수 있다. 예를 들어, A2를 포함하는 디스크(204b)가 손실되면, A1, A3, 및 Ap 값들이 A2를 재구성하는 데 사용될 수 있다.
[0034] RAID 어레이(302)로 구성된 디스크들은, 여러 드라이브(204a-c)에서 동시에 데이터에 액세스할 수 있으므로, 읽기 성능 가속화를 제공할 수 있다. 그러나, 상기 어레이에 쓰기들을 수행할 때 일반적으로 오버헤드가 증가한다. 이것은 주로 패리티 계산으로 인한 것이다. 예를 들어, A1에 쓰기 위해, 값들 A2, A3, 및 Ap가 디스크 드라이브들(204)에서 로드(즉, 스테이징)돼야 할 수 있고, 값 A1이 디스크 드라이브들에서 수정돼야 하고, 패리티 값 Ap가 (값들 A1, A2, 및 A3을 이용하여) 재계산되어 디스크 드라이브들(204)로 디스테이징되어야 한다. 이 연산들은 총 4개의 디스크 연산이 필요하다. 반면에, 데이터의 완전한 스트라이드(즉, A1, A2, 및 A3)는 단일 디스크 연산을 사용하여 패리티 값 Ap과 함께 디스크 드라이브들(204)에 디스테이징될 수 있다. 이는 디스크 드라이브들(204)로부터 이곳에 스트라이드를 쓸 때 데이터 값들이나 패리티 값을 로드할 필요가 없기 때문이다. 이러한 이유로, 캐시(218)에서 스토리지 드라이브들(204)로 데이터를 디스테이징할 때 풀 스트라이드 디스테이지가 선호된다.
[0035] 도 4를 참조하면, 특정 실시예들에서, 캐시(218)는 읽기 캐시(218a)와 쓰기 캐시(218b)로 분할될 수 있다. 읽기 캐시(218a)는 미수정된 데이터(예를 들어, 미수정된 트랙들(400))를 저장할 수 있다. 쓰기 캐시(218b)는 수정된 데이터(예를 들어, 수정된 트랙들(400))를 저장할 수 있다. 이 수정된 데이터는 결국 백엔드 스토리지 드라이브들(204)에 디스테이징될 수 있다.
[0036] 특정 실시예들에서, 수정된 데이터 요소들(예를 들어, 트랙들)의 순서 목록(예를 들어, b-트리)이 스토리지 시스템(110a)의 각 랭크(즉, RAID 어레이(302))에 대해 유지될 수 있다. 이 순서 목록은 쓰기 캐시(218b)로부터 RAID 어레이(302)로 디스테이징할 수정된 데이터 요소들과 디스테이징을 수행할 순서를 결정하는 데 사용될 수 있다. 특정 실시예들에서, 순서 목록은 RAID 어레이(302) 내 각 데이터 요소의 물리적 위치에 기초하여 정렬된다.
[0037] 도 4에 도시된 바와 같이, 특정 실시예들에서, 하나 이상의 클록 비트(402)가 쓰기 캐시(218b) 내 각 수정된 데이터 요소(400)에 대해 유지된다. 예를 들면, 특정 실시예들에서, 4개의 클록 비트(402)가 0 내지 15의 값들을 인에이블링하는 각 데이터 요소(400)에 대해 유지될 수 있다. 도 6과 관련하여 더 상세히 설명되는 바와 같이, 이 클록 비트들(402)은 데이터 요소들을 디스테이징 할 때를 결정하는 데 사용되는 카운트들을 저장할 수 있다. 순서 목록이 스캔될 때마다, 데이터 요소들의 카운트들이 감분(decremented)될 수 있다. 데이터 요소(400)가 쓰기될 때마다, 데이터 요소(400)와 연관된 카운트는 증분(incremented)될 수 있다. 카운트들은 종종 쓰기되는 데이터 요소(400)가 캐시(218)로부터 스토리지 드라이브들(204)로 조기에 디스테이징되지 않도록 보장할 수 있다.
[0038] 도 5를 참조하면, 특정 실시예들에서, 쓰기 캐시(218b)로부터 스토리지 드라이브들(204)로 데이터 요소들(400)을 디스테이징하기 위해 캐시 디스테이지 모듈(500)이 제공될 수 있다. 이 캐시 디스테이지 모듈(500)은 다양한 특징들과 기능들을 제공하기 위한 다양한 하위 모듈들을 포함할 수 있다. 캐시 디스테이지 모듈(500) 및 연관 하위 모듈들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합들로 구현될 수 있다. 캐시 디스테이지 모듈(500) 및 연관 하위 모듈들은 제한이 아닌 예로서 제시된다. 상이한 실시예들에서 더 많거나 더 적은 하위 모듈들이 제공될 수 있다. 예를 들면, 몇몇 하위 모듈들의 기능이 단일 또는 더 적은 수의 하위 모듈들로 결합될 수 있거나, 단일 하위 모듈의 기능이 몇몇 하위 모듈들에 걸쳐 분산될 수 있다.
[0039] 도시된 바와 같이, 캐시 디스테이지 모듈(500)은 캐시 스캔 모듈(502), 카운트 감분 모듈(504), 카운트 결정 모듈(506), 임계치 모듈(508), 스테이지 모듈(510), 디스테이지 모듈(512), 선제 스테이지 모듈(514), 및 제한 모듈(516) 중 하나 이상을 포함한다. 캐시 스캔 모듈(502)은 어느 데이터 요소들(400)이 쓰기 캐시(218b)로부터 RAID 어레이(302)로 디스테이징될 준비가 되는지를 판별하기 위해 순서 목록을 주기적으로 스캔하도록 구성될 수 있다. 순서 목록 내의 데이터 요소들(400)이 스캔될 때마다, 카운트 감분 모듈(504)은 데이터 요소들(400)과 연관된 클록 비트들(402) 내의 카운트들을 감분시킬 수 있다.
[0040] 순서 목록에서 데이터 요소들(400)을 스캔할 시, 카운트 결정 모듈(506)은 클록 비트들(402)을 판독함으로써 데이터 요소들(400)과 연관된 카운트들을 결정할 수 있다. 이러한 결정을 할 때, 임계치 모듈(508)은 동일한 스트라이드로부터의 데이터 요소들(400)과 연관된 모든 카운트들이 제1 임계치(예를 들어, 0) 이하인지 여부를 결정할 수 있다. 카운트들이 제1 임계치 이하이면, 데이터 요소들(400)은 캐시(218)로부터 RAID 어레이(302)로 디스테이징될 “준비”된 것으로 간주될 수 있다. 필요한 경우, 스테이지 모듈(510)은 캐시(218) 내 데이터 요소들(400)이 완전한 스트라이드를 구성하도록 RAID 어레이(302)로부터 캐시(218)로 누락된 데이터 요소들(400)을 스테이징할 수 있다. 이어서, 디스테이지 모듈(512)은 필요하면 상기 스트라이드와 연관된 패리티 값을 재계산하고 상기 스트라이드를 캐시(218)로부터 RAID 어레이(302)로 디스테이징할 수 있다.
[0041] 상기 스트라이드와 연관된 데이터 요소들(400)에 대한 카운트들이 제1 임계치 이하가 아니면, 임계치 모듈(508)은 카운트들이 제2 임계치(예를 들어, 3) 이하라고 결정할 수 있다. 만일 그렇다면, 상기 스트라이드와 연관된 데이터 요소들(400)은 (이들의 카운트들이 제1 임계치 이하가 아니므로) RAID 어레이(302)에 현재 디스테이징될 “준비”되지 않을 수 있지만, 캐시(218)의 후속 스캔 중에 준비될 가능성이 있다(이들의 카운트들이 감분될 것이고 따라서 카운트들을 제1 임계치 위로 증가시킬 수도 있는 쓰기들과 같은 이벤트들이 없다면 후속 스캔 중에 제1 임계치 이하가 될 가능성이 있으므로). 이러한 경우에, 선제 스테이지 모듈(514)은, 캐시 스캔 모듈(502)의 다름 패스를 위해 캐시(218) 내에 완전한 스트라이드가 존재하도록, RAID 어레이(302)로부터 캐시(218)로 누락된 데이터 요소들(400)을 선제적으로 스테이징할 수 있다. 만일 캐시(218)의 다음 스캔 동안 스트라이드의 데이터 요소들(400)과 연관된 모든 카운트가 제1 임계치 아래가 되면, 스트라이드와 연관된 데이터 요소들(400)은 디스테이징할 “준비”가 된 것으로 간주될 것이다. 이런 방식으로 누락된 데이터 요소들(400)을 선제적으로 스테이징하면 디스테이징 시에 RAID 어레이(302)로부터 캐시(218)로 누락된 데이터 요소들(400)을 스테이징할 필요를 없애거나 줄일 수 있다.
[0042] 제한 모듈(516)은 RAID 어레이(302)로부터 선제적으로 스테이징되는 프로세스에 있는 스트라이드들의 수를 제한하도록 구성될 수 있다. 특정 실시예들에서, 제한 모듈(516)은 스트라이드의 수를 선택된 임계치(예를 들어, 50)로 제한할 수 있다. 만일 선제적으로 스테이징되는 스트라이드의 수가 이 양과 같거나 이를 초과하면, 제한 모듈(516)은 선제적 스테이징을 위한 임의의 추가적인 요청들을 대기 행렬에 넣을 수 있다. 선제적으로 스테이징되는 스트라이드의 수가 임계치(또는 심지어 더 낮은 임계치) 아래로 떨어지면, 제한 모듈(516)은 대기열 내에 배치된 순서대로 대기열 내의 요청들부터 시작하여 스트라이드들을 선제적으로 스테이징하기 위한 요청들을 다시 한 번 처리하기 시작할 수 있다. 제한 모듈(516)에 의해 사용될 수 있는 방법(700)의 한 실시예는 도 7과 관련하여 논의될 것이다.
[0043] 도 6을 참조하면, 캐시(218)를 스캔하는 방법(600)의 한 실시예가 도시된다. 이러한 방법(600)은 앞서 논의된 캐시 디스테이지 모듈(500)에 의해 실행될 수 있다. 도시된 바와 같이, 방법(600)은 초기에 캐시(218)를 스캔할 시간인지를 결정한다(602). 특정 실시예들에서, 스캔은 선행 스캔이 완료되었을 때 또는 지정된 간격으로 이루어질 수 있다. 스캔을 수행하는데 필요한 시간은 특정 실시예들에서, 이전에 논의된 순서 목록을 통해 진행하는데 필요한 시간의 양에 대응할 수 있다.
[0044] 도시된 바와 같이, 새로운 스캔이 개시되면, 방법(600)은 순서 목록 내의 제1 스트라이드와 연관된 캐시(218) 내 데이터 요소들(400)을 검사한다(604). 만일 단계 606에서 상기 스트라이드와 연관된 모든 데이터 요소들(400)의 카운트들(즉, 클록 비트들(402))이 제1 임계치(예를 들어, 0) 이하이면, 상기 스트라이드는 RAID 어레이로 디스테이징될 준비가 된 것이다. 만일 단계 608에서, (완전한 스트라이드 디스테이징이 필요하고/거나 가장 효율적인 방식으로 데이터를 디스테이징한다고 가정하고) 완전한 스트라이드 디스테이징을 수행하기 위한 데이터가 누락되었다면, 방법(600)은 완전한 스트라이드가 캐시(218) 내에 존재하도록 RAID 어레이(302)로부터 누락된 데이터들(400)을 스테이징한다(610). 데이터의 완전한 스트라이드를 사용하여, 방법(600)은 패리티 값을 재계산하고(612) 상기 스트라이드를 RAID 어레이(302)로 디스테이징한다(612). 반면에, 만일 단계 608에서, 데이터가 상기 스트라이드로부터 누락되지 않았으면, 방법(600)은 단순히 패리티 값을 재계산하고(612) 상기 스트라이드를 디스테이징한다(612). RAID 어레이(302)로부터 누락된 데이터 요소들(400)의 스테이징이 필요하지 않다. 그런 후, 방법(600)은 순서 목록이 더 많은 스트라이드를 포함하고 있는지 결정하고(614), 만일 그렇다면, 순서 목록 내 다음 스트라이드를 검사한다(604).
[0045] 만일 단계 606에서 스트라이드와 연관된 모든 데이터 요소들(400)의 카운트들(즉, 클록 비트들(402))이 제1 임계치 이하가 아니면, 방법(600)은 스트라이드와 연관된 데이터 요소들(400) 모두의 카운트들이 제2 임계치(예를 들어, 3) 이하인지 결정한다(616). 그렇지 않으면, 방법(600)은 순서 목록이 더 많은 스트라이드를 포함하고 있는지 결정하고(614), 그렇다면 순서 목록 내 다음 스트라이드를 검사한다(604). 만일 스트라이드와 연관된 데이터 요소들(400) 모두가 제2 임계치 이하이면, 스트라이드는 현재 RAID 어레이(302)로 디스테이징될 준비가 되지 않았을 수 있지만, (데이터 요소들(400)에 추가적인 쓰기가 이루어지지 않는다고 가정하면) 캐시(218)의 후속 스캔 도중에 디스테이징할 준비가 될 가능성이 있다. 만일 단계 616에서 스트라이드와 연관된 데이터 요소들(400) 모두가 제2 임계치 이하이면, 완전한 스트라이드 디스테이지가 필요하고/거나 가장 효율적이라고 가정하고, 방법(600)은 스트라이드를 완료하기 위해 누락된 데이터가 필요한지 결정한다(618). 만일 데이터가 누락되었으면, 방법(600)은 RAID 어레이(302)로부터 캐시(218)로 누락된 데이터를 선제적으로 스테이징하고(620), 그에 의해 다음 스캔에 완전한 스트라이드가 캐시(218) 내에 존재하도록 보장한다. 반면에, 만일 단계 618에서 스트라이드로부터 데이터가 누락되지 않았으면, 선제적 스테이징은 필요하지 않다. 그런 후, 방법(600)은 순서 목록이 더 많은 스트라이드를 포함하고 있는지 결정하고(614), 만일 그렇다면, 순서 목록 내 다음 스트라이드를 검사한다(604).
[0046] 일단 순서 목록 내 모든 스트라이드가 검사되면(604), 방법(600)은 종료되고 다음 스캔이 시작되기를 기다린다(602). 특정 실시예들에서, 다음 스캔은 즉시 시작된다. 다른 실시예들에서, 다음 스캔은 선행 스캔이 종료되고 일정량의 시간이 지난 후에 시작된다. 또 다른 실시예에서, 스캔은 규칙적인 간격으로 발생하고, 다음 스캔은 다음 규칙적인 간격의 시작점에서 시작한다.
[0047] 도 7을 참조하면, RAID 어레이(302)로부터 선제적으로 스테이징되는 스트라이드의 수를 조절하는 방법(700)의 한 실시예가 도시된다. 도시된 바와 같이, 방법(700)은 캐시(218) 내 스트라이드에 선제적 스테이징이 필요한지 결정한다(702). 만일 그렇다면, 방법(700)은 선제적으로 스테이징되는 스트라이드의 수가 높은 임계치(예를 들어, 50) 위인지 결정한다(704). 만일 그렇다면, 방법(700)은 스트라이드를 대기열에 넣는다(706). 만일 단계 704에서 선제적으로 스테이징되는 스트라이드의 수가 높은 임계치 아래이면, 방법(700)은 현재 선제적으로 스테이징되는 스트라이드의 수를 증분하고(708) 스트라이드에 대한 선제적 스테이징을 개시한다(708).
[0048] 만일 단계 710에서 선제적 스테이징이 스트라이드에 대해 완료되면, 방법(700)은 현재 선제적으로 스테이징되는 스트라이드의 수를 감분한다(712). 이어서, 방법(700)은 현재 선제적으로 스테이징되는 스트라이드의 수가 낮은 임계치(예를 들어, 40) 아래인지 결정한다(714). 만일 그렇다면, 방법(700)은 스트라이드가 현재 대기열에 있는지 결정한다(716). 만일 그렇다면, 방법(700)은 현재 선제적으로 스테이징되는 스트라이드의 수를 증분하고(708) 대기열에 있는 다음 스트라이드에 대한 선제적 스테이징을 개시한다(708). 만일 스트라이드가 대기열에 없으면, 방법(700)은 다른 스트라이드가 선제적으로 스테이징될 필요가 있는지를 결정하거나(702) 선제적 스테이징이 스트라이드에 대해 완료되었는지를 결정하기(710) 위해 상부로 리턴한다.
[0049] 도면들 내 흐름도 및 블록도들은 본 발명의 여러 실시예들에 따른 시스템들, 방법들 및 컴퓨터-사용 가능 매체의 가능한 구현들의 아키텍처, 기능, 및 연산을 예시한다. 이와 관련하여, 상기 흐름도들 또는 블록도들 내 각 블록은 상기 명시된 논리적 기능(들)을 구현하기 위한 하나 이상의 실행 가능한 명령들을 포함하는 모듈, 세그먼트 또는 코드 일부분을 나타낼 수 있다. 일부 다른 구현들에서, 상기 블록에 언급되는 기능들은 도면들에 언급된 순서와 다르게 일어날 수도 있음에 또한 주목해야 한다. 예를 들면, 연속으로 도시된 두 개의 블록은 실제로는 사실상 동시에 실행될 수도 있고, 또는 이 두 블록은 때때로 관련된 기능에 따라서는 역순으로 실행될 수도 있다. 블록도들 및/또는 흐름 예시도들의 각 블록, 및 블록도들 및/또는 흐름 예시도들 내 블록들의 조합들은 특수목적용 하드웨어 및 컴퓨터 명령들의 명시된 기능들 또는 동작들, 또는 이들의 조합들을 수행하는 특수목적용 하드웨어-기반 시스템들에 의해 구현될 수 있다는 것에 또한 주목해야 한다.

Claims (20)

  1. RAID 어레이에 대한 디스테이지 성능 개선을 위한 방법에 있어서,
    상기 방법은:
    RAID 어레이에 디스테이징될 준비가 된(ready to be destaged) 제1 스트라이드들(first strides)에 대해 캐시를 주기적으로 스캔하는 단계;
    상기 캐시를 스캔하는 단계 동안, 현재 상기 RAID 어레이에 디스테이징될 준비가 되지 않았지만 상기 캐시의 후속 스캔 동안 디스테이징될 준비가 될 가능성이 있는 제2 스트라이드를 식별하는 단계;
    상기 후속 스캔에 대비하여 상기 RAID 어레이로부터 상기 캐시로 상기 제2 스트라이드들의 누락된 데이터의 선제적 스테이징을 개시하는 단계; 및
    상기 후속 스캔의 발생 시, 상기 캐시로부터 상기 RAID 어레이로 상기 제2 스트라이드들을 디스테이징하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 방법은 상기 캐시에 저장된 각 스트라이드의 각 데이터 요소에 대한 카운트를 유지하는 단계를 더 포함하고, 상기 카운트는 상기 데이터 요소가 쓰기될 때마다 증분되고 상기 데이터 요소가 스캔될 때마다 감분되는,
    방법.
  3. 제2항에 있어서,
    상기 제1 스트라이드들의 각 데이터 요소는 제1 지정된 임계치 이하의 카운트를 갖는,
    방법.
  4. 제3항에 있어서,
    상기 제1 지정된 임계치는 0인,
    방법.
  5. 제2항에 있어서,
    상기 제2 스트라이드들의 각 데이터 요소는 제2 지정된 임계치 이하의 카운트를 갖는,
    방법.
  6. 제2항에 있어서,
    상기 데이터 요소들은 트랙들인,
    방법.
  7. 제1항에 있어서,
    상기 선제적 스테이징을 개시하는 단계는 지정된 임계치까지 제2 스트라이드들의 수에 대해 선제적 스테이징을 개시하는 단계를 포함하는,
    방법.
  8. RAID 어레이에 대한 디스테이지 성능을 개선하기 위한 컴퓨터 프로그램 제품에 있어서,
    상기 컴퓨터 프로그램 제품은 컴퓨터 사용 가능 프로그램 코드가 내부에 구현된 비일시적 컴퓨터 판독 가능 스토리지 매체를 포함하고, 상기 컴퓨터 사용 가능 프로그램 코드는 적어도 하나의 프로세서에 의해 수행될 때 동작들을 수행하도록 구성되며, 상기 동작들은:
    RAID 어레이에 디스테이징될 준비가 된 제1 스트라이드들에 대해 캐시를 주기적으로 스캔하는 단계;
    상기 캐시를 스캔하는 동안, 현재 상기 RAID 어레이에 디스테이징될 준비가 되지 않았지만 상기 캐시의 후속 스캔 동안 디스테이징될 준비가 될 가능성이 있는 제2 스트라이드를 식별하는 단계;
    상기 후속 스캔에 대비하여 상기 RAID 어레이로부터 상기 캐시로 상기 제2 스트라이드들의 누락된 데이터의 선제적 스테이징을 개시하는 단계; 그리고
    상기 후속 스캔의 발생 시 상기 캐시로부터 상기 RAID 어레이로 상기 제2 스트라이드들을 디스테이징하는 단계를 포함하는,
    컴퓨터 프로그램 제품.
  9. 제8항에 있어서,
    상기 컴퓨터 사용 가능 프로그램 코드는 상기 캐시에 저장된 각 스트라이드의 각 데이터 요소에 대한 카운트를 유지하도록 더 구성되고,
    상기 카운트는 상기 데이터 요소가 쓰기될 때마다 증분되며 상기 데이터 요소가 스캔될 때마다 감분되는,
    컴퓨터 프로그램 제품.
  10. 제9항에 있어서,
    상기 제1 스트라이드들의 각 데이터 요소는 제1 지정된 임계치 이하의 카운트를 갖는,
    컴퓨터 프로그램 제품.
  11. 제10항에 있어서,
    상기 제1 지정된 임계치는 0인,
    컴퓨터 프로그램 제품.
  12. 제9항에 있어서,
    상기 제2 스트라이드들의 각 데이터 요소는 제2 지정된 임계치 이하의 카운트를 갖는,
    컴퓨터 프로그램 제품.
  13. 제9항에 있어서,
    상기 데이터 요소들은 트랙들인,
    컴퓨터 프로그램 제품.
  14. 제8항에 있어서,
    상기 선제적 스테이징을 개시하는 단계는 지정된 임계치까지 제2 스트라이드들의 수에 대해 선제적 스테이징을 개시하는 단계를 포함하는,
    컴퓨터 프로그램 제품.
  15. RAID 어레이에 대한 디스테이지 성능 개선을 위한 시스템에 있어서,
    상기 시스템은:
    적어도 하나의 프로세서;
    상기 적어도 하나의 프로세서에 작동 가능하게 결합되고 상기 적어도 하나의 프로세서 상에서 실행하기 위한 명령들을 저장하는 적어도 하나의 메모리 디바이스를 포함하고, 상기 명령들은 상기 적어도 하나의 프로세서가:
    RAID 어레이에 디스테이징될 준비가 된 제1 스트라이드들에 대해 캐시를 주기적으로 스캔하는 단계;
    상기 캐시를 스캔하는 동안, 현재 상기 RAID 어레이에 디스테이징될 준비가 되지 않았지만 상기 캐시의 후속 스캔 동안 디스테이징될 준비가 될 가능성이 있는 제2 스트라이드를 식별하는 단계;
    상기 후속 스캔에 대비하여 상기 RAID 어레이로부터 상기 캐시로 상기 제2 스트라이드들의 누락된 데이터의 선제적 스테이징을 개시하는 단계; 그리고
    상기 후속 스캔의 발생 시 상기 캐시로부터 상기 RAID 어레이로 상기 제2 스트라이드들을 디스테이징하는 단계를 수행하도록 하는,
    시스템.
  16. 제15항에 있어서,
    상기 명령들은 상기 적어도 하나의 프로세서가, 추가로, 상기 캐시에 저장된 각 스트라이드의 각 데이터 요소에 대한 카운트를 유지하는 단계를 수행하도록 하고, 상기 카운트는 상기 데이터 요소가 쓰기될 때마다 증분되고 상기 데이터 요소가 스캔될 때마다 감분되는,
    시스템.
  17. 제16항에 있어서,
    상기 제1 스트라이드들의 각 데이터 요소는 제1 지정된 임계치 이하의 카운트를 갖는,
    시스템.
  18. 제16항에 있어서,
    상기 제2 스트라이드들의 각 데이터 요소는 제2 지정된 임계치 이하의 카운트를 갖는,
    시스템.
  19. 제16항에 있어서,
    상기 데이터 요소들은 트랙들인,
    시스템.
  20. 제15항에 있어서,
    상기 선제적 스테이징을 개시하는 단계는 지정된 임계치까지 제2 스트라이드들의 수에 대해 선제적 스테이징을 개시하는 단계를 포함하는,
    시스템.
KR1020227033917A 2020-04-22 2021-03-30 완전한 스트라이드 디스테이지를 위한 선제적 스테이징 KR20220139420A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/855,229 2020-04-22
US16/855,229 US11467772B2 (en) 2020-04-22 2020-04-22 Preemptive staging for full-stride destage
PCT/CN2021/083765 WO2021213139A1 (en) 2020-04-22 2021-03-30 Preemptive staging for full-stride destage

Publications (1)

Publication Number Publication Date
KR20220139420A true KR20220139420A (ko) 2022-10-14

Family

ID=78222178

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227033917A KR20220139420A (ko) 2020-04-22 2021-03-30 완전한 스트라이드 디스테이지를 위한 선제적 스테이징

Country Status (8)

Country Link
US (1) US11467772B2 (ko)
JP (1) JP2023523144A (ko)
KR (1) KR20220139420A (ko)
CN (1) CN115087962A (ko)
AU (1) AU2021260526B2 (ko)
DE (1) DE112021000794T5 (ko)
GB (1) GB2610121A (ko)
WO (1) WO2021213139A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11880600B2 (en) * 2021-09-02 2024-01-23 Micron Technology, Inc. Consolidating write request in cache memory

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5740465A (en) * 1992-04-08 1998-04-14 Hitachi, Ltd. Array disk controller for grouping host commands into a single virtual host command
US6704837B2 (en) 1998-06-29 2004-03-09 International Business Machines Corporation Method and apparatus for increasing RAID write performance by maintaining a full track write counter
WO2011121590A1 (en) * 2010-03-31 2011-10-06 Kaminario Technologies Ltd. Log structure array
US8332589B2 (en) * 2010-09-29 2012-12-11 International Business Machines Corporation Management of write cache using stride objects
US8880839B2 (en) 2011-04-14 2014-11-04 International Business Machines Corporation Writing adjacent tracks to a stride, based on a comparison of a destaging of tracks to a defragmentation of the stride
US8560771B2 (en) * 2011-07-22 2013-10-15 International Business Machines Corporation Efficient track destage in secondary storage
US8631190B2 (en) * 2011-07-22 2014-01-14 International Business Machines Corporation Prefetching data tracks and parity data to use for destaging updated tracks
US9342463B2 (en) * 2012-09-20 2016-05-17 International Business Machines Corporation Management of destage tasks with large number of ranks
US9395925B2 (en) 2014-03-11 2016-07-19 International Business Machines Corporation Grouping of tracks for copy source to target destage on global mirror secondary
US9529542B2 (en) 2015-04-14 2016-12-27 E8 Storage Systems Ltd. Lockless distributed redundant storage and NVRAM caching of compressed data in a highly-distributed shared topology with direct memory access capable interconnect
US10120811B2 (en) 2015-09-29 2018-11-06 International Business Machines Corporation Considering a frequency of access to groups of tracks and density of the groups to select groups of tracks to destage
US9858146B2 (en) 2015-12-21 2018-01-02 International Business Machines Corporation Reducing latency for raid destage operations
US9952974B2 (en) * 2016-06-07 2018-04-24 International Business Machines Corporation Preservation of modified cache data in local non-volatile storage following a failover
US11054994B2 (en) 2017-12-14 2021-07-06 International Business Machines Corporation Copy source to target management in a data storage system

Also Published As

Publication number Publication date
CN115087962A (zh) 2022-09-20
WO2021213139A1 (en) 2021-10-28
DE112021000794T5 (de) 2022-12-22
GB202217375D0 (en) 2023-01-04
AU2021260526A1 (en) 2022-08-18
AU2021260526B2 (en) 2023-12-14
GB2610121A (en) 2023-02-22
US11467772B2 (en) 2022-10-11
US20210334038A1 (en) 2021-10-28
JP2023523144A (ja) 2023-06-02

Similar Documents

Publication Publication Date Title
US7305579B2 (en) Method, apparatus and program storage device for providing intelligent rebuild order selection
US10031808B2 (en) Raid 10 reads optimized for solid state drives
US10664189B2 (en) Performance in synchronous data replication environments
US20180101456A1 (en) Enclosure-encapsulated raid rebuild
US10621059B2 (en) Site recovery solution in a multi-tier storage environment
US9471253B2 (en) Use of flash cache to improve tiered migration performance
KR20220139420A (ko) 완전한 스트라이드 디스테이지를 위한 선제적 스테이징
US10768822B2 (en) Increasing storage capacity in heterogeneous storage arrays
US11048667B1 (en) Data re-MRU to improve asynchronous data replication performance
US11281502B2 (en) Dispatching tasks on processors based on memory access efficiency
US11249667B2 (en) Storage performance enhancement
US8433868B2 (en) Concurrent copy of system configuration global metadata
US11016692B2 (en) Dynamically switching between memory copy and memory mapping to optimize I/O performance
US9690484B2 (en) Minimizing delay periods when accessing mirrored disks
US10133630B2 (en) Disposable subset parities for use in a distributed RAID
US10175888B2 (en) Performance-balanced heterogeneous raid
US11379427B2 (en) Auxilary LRU list to improve asynchronous data replication performance
JP7495191B2 (ja) I/o性能を最適化するためのメモリ・コピーおよびメモリ・マッピング間の動的な切り替え
US11314691B2 (en) Reserved area to improve asynchronous data replication performance
US10866752B2 (en) Reclaiming storage space in raids made up of heterogeneous storage drives
US11055015B2 (en) Fine-grain asynchronous mirroring suppression
JP6048976B2 (ja) マルチターゲット・アーキテクチャにおけるソースと空間効率の良いターゲットとの間の関係の削除のための方法、コンピュータ・プログラム、および装置

Legal Events

Date Code Title Description
E902 Notification of reason for refusal