KR101431480B1 - 드라이브 어레이내의 분산 캐시 시스템 - Google Patents

드라이브 어레이내의 분산 캐시 시스템 Download PDF

Info

Publication number
KR101431480B1
KR101431480B1 KR1020107023978A KR20107023978A KR101431480B1 KR 101431480 B1 KR101431480 B1 KR 101431480B1 KR 1020107023978 A KR1020107023978 A KR 1020107023978A KR 20107023978 A KR20107023978 A KR 20107023978A KR 101431480 B1 KR101431480 B1 KR 101431480B1
Authority
KR
South Korea
Prior art keywords
cache
disk drives
cache circuits
circuits
circuit
Prior art date
Application number
KR1020107023978A
Other languages
English (en)
Other versions
KR20110004397A (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 KR20110004397A publication Critical patent/KR20110004397A/ko
Application granted granted Critical
Publication of KR101431480B1 publication Critical patent/KR101431480B1/ko

Links

Images

Classifications

    • 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
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

드라이브 어레이, 제1 캐시 회로, 복수의 제2 캐시 회로들 및 컨트롤러를 포함하는 장치가 개시된다. 드라이브 어레이는 복수의 디스크 드라이브들을 포함할 수 있다. 복수의 제2 캐시 회로들은 디스크 드라이브들 각각에 각각 연결될 수 있다. 컨트롤러는 (ⅰ) 디스크 드라이브들의 읽기 동작과 쓰기 동작을 제어하고, (ⅱ) 디스크 드라이브들에서 제1 캐시로 정보를 읽고 쓰고, (ⅲ) 제2 캐시 회로들에 정보를 읽고 쓰고, (ⅳ) 디스크 드라이브들 중 하나에서 제2 캐시 회로들 중 하나로의 직접적인 정보의 읽기 및 쓰기를 제어하도록 구성될 수 있다.

Description

드라이브 어레이내의 분산 캐시 시스템{DISTRIBUTED CACHE SYSTEM IN A DRIVE ARRAY}
본 발명은 드라이브 어레이들에 관한 것으로, 특히 드라이브 어레이내에 분산 캐시 시스템을 구현하는 방법 및/또는 장치에 관한 것이다.
종래의 외부 RAID(Redundant Array of Independent Disks) 컨트롤러들은 모든 볼륨들에 의해 사용되는 일정한 국부 캐시(RAM)를 갖는다. 관찰되는 빈번한 블록 어드레스 패턴들에 근거하여, RAID 컨트롤러는 해당 블록 어드레스로부터 관련 데이터를 미리 프리페치한다. 블록 캐싱 접근방식은 파일들 중 작은 비율이 I/O 요구들 중 대부분에 가담하는 애플리케이션들(예를 들면, 메시징, 웹 서버들 및 데이터베이스 애플리케이션들)의 증가하는 액세스 밀도 요구사항을 만족시키지 못할 수 있다. 이는 대기 시간 및 액세스 시간 지연을 야기할 수 있다.
종래의 RAID 컨트롤러내의 캐시는 제한된 용량을 갖는다. 종래의 캐시는 현재 어레이들의 증가하는 액세스 밀도 요구사항들을 만족시키지 못할 수 있다. 종래의 RAID 컨트롤러내의 캐시는 파일-캐싱을 요구하는 높은 I/O 집약적 애플리케이션의 요구를 충족시키지 못할 수 있는 블록-캐싱을 이용한다. SAN(Storage Area Network) 환경에서의 증가하는 데이터 볼륨들이 갖고 있는 다른 문제점들은 제한된 RAID 캐시 용량이 캐시 요구를 충족시키지 못하는 경우에 발생한다. 모든 LUN들(Logical Unit Number devices)은 공통의 RAID 레벨 블록-캐싱을 이용하고 있다. 이러한 구성은 다른 운영체제들 및 다른 LUN들로부터의 데이터를 귀속하는 애플리케이션들로서의 기능을 제공하고자 할 때 종종 병목현상을 일으킨다.
본 발명은 드라이브 어레이, 제1 캐시 회로, 복수의 제2 캐시 회로들 및 컨트롤러를 포함하는 장치에 관한 것이다.
드라이브 어레이는 복수의 디스크 드라이브들을 포함할 수 있다. 복수의 제2 캐시 회로들은 디스크 드라이브들 각각에 각각 연결될 수 있다. 컨트롤러는 (ⅰ) 디스크 드라이브들의 읽기 동작과 쓰기 동작을 제어하고, (ⅱ) 디스크 드라이브들에서 제1 캐시로 정보를 읽고 쓰고, (ⅲ) 제2 캐시 회로들에 정보를 읽고 쓰고, (ⅳ) 디스크 드라이브들 중 하나에서 제2 캐시 회로들 중 하나로의 직접적인 정보의 읽기 및 쓰기를 제어하도록 구성될 수 있다.
본 발명의 목적들, 특징들 및 장점들은 (ⅰ) 스토리지 어레이와 동일한 서브시스템들에서 파일-캐싱을 허용하고, (ⅱ) 볼륨들 또는 LUN들에 전용될 파일-캐싱을 제공하고, (ⅲ) 스케일링될 수 있는 한 그룹의 SSD에 걸쳐 분산된 파일-캐싱을 제공하고, (ⅳ) RAID 캐싱에 무제한의 캐시 용량을 제공하고, (ⅴ) 액세스 시간을 저감시키고, (ⅵ) 액세스 밀도를 증가시키고, 및/또는 (ⅶ) 전반적인 어레이 성능을 증대시킬 수 있는 분산 캐시의 구현을 포함한다.
본 발명의 목적들, 특징들 및 장점들은 다음의 상세한 설명과 첨부한 청구항들 및 도면들로부터 명백해질 것이다.
도 1은 본 발명의 시스템의 블록도이다.
도 2는 본 발명의 동작을 예시한 흐름도이다.
도 3은 그룹이 도시되어 있는 다른 구현의 블록도이다.
도 4는 캐시 그룹이 도시되어 있는 또 다른 구현의 블록도이다.
본 발명은 RAID(Redundant Array of Independent Disks) 컨트롤러를 구현할 수 있다. 컨트롤러는 드라이브들에 외부적으로 구현될 수 있다. 컨트롤러는 캐시-신디케이트(또는 캐시 부분들의 그룹)에의 액세스를 갖도록 설계될 수 있다. 캐시 신디케이트는 고체 상태 디바이스(SSD)상에 존재할 수 있는 논리적인 캐시 메모리 그룹으로 고려될 수 있다. RAID 컨트롤러가 소유한 (또는 제어하는) 볼륨들이 캐시-신디케이트로부터의 전용 캐시-리포지토리(cache-repository)에 할당될 수 있다. 특별히 할당된 캐시-리포지토리가 파일-캐싱을 위한 운영체제/애플리케이션 계층에 제시될 수 있다.
도 1은 시스템(100)의 블록도이다. 시스템(100)은 RAID 환경내에 구현될 수 있다. 시스템(100)은 일반적으로 블록(또는 회로)(102), 블록(또는 회로)(104), 블록(또는 회로)(106), 및 블록(또는 회로)(108)를 포함한다. 회로(102)는 마이크로프로세서(또는 마이크로컨트롤러의 일부)로 구현될 수 있다. 회로(104)는 국부 캐시로 구현될 수 있다. 회로(106)는 스토리지 회로로 구현될 수 있다. 회로(108)는 캐시 그룹(또는 캐시 신디케이트)으로 구현될 수 있다. 회로(106)는 일반적으로 복수의 볼륨들(LUN0-LUNn)을 포함한다. 볼륨들(LUN0-LUNn)의 개수는 특정 구현의 설계 기준을 충족시키기 위해 변할 수 있다.
캐시 그룹(108)은 일반적으로 복수의 캐시 섹션들(C1-Cn)을 포함한다. 캐시 그룹(108)은 캐시 리포지토리로 고려될 수 있다. 캐시 섹션들(C1-Cn)은 고체 상태 디바이스(SSD) 그룹상에 구현될 수 있다. 예를 들면, 캐시 섹션들(C1-Cn)은 고체 상태 메모리 디바이스상에 구현될 수 있다. 구현될 수 있는 고체 상태 메모리 디바이스들의 예들은 DIMM(Dual Inline Memory Module), 나노 플래시 메모리, 또는 다른 휘발성 또는 비휘발성 메모리를 포함한다. 캐시 섹션들(C1-Cn)의 개수는 특정 구현의 설계 기준을 충족시키기 위해 변할 수 있다. 일예에 있어서, 볼륨들(LUN0-LUNn)의 개수는 캐시 섹션들(C1-Cn)의 개수와 매치하도록 구성될 수 있다. 하지만, 다른 비율들(예를 들면, 각 볼륨(LUN0-LUNn)에 대하여 둘 이상의 캐시 섹션들(C1-Cn))도 구현될 수 있다. 일예에 있어서, 캐시 그룹(108)은 회로(102)로부터의 외부 칩으로서 구현 및/또는 제조될 수 있다. 다른 예에 있어서, 캐시 그룹(106)은 회로(102)의 일부로서 구현 및/또는 제조될 수 있다. 회로(106)가 회로(102)의 일부로서 구현되면, 개별적인 메모리 포트들은 캐시 섹션들(C1-Cn) 각각에의 동시 액세스를 허용하도록 구현될 수 있다.
컨트롤러 회로(102)는 버스(120)를 통해 회로(106)에 연결될 수 있다. 버스(120)는 볼륨들(LUN0-LUNn)의 읽기 및 쓰기 동작들을 제어하는데 사용될 수 있다. 일예에 있어서, 버스(120)는 양방향 버스로 구현될 수 있다. 다른 예에 있어서, 버스(120)는 하나 이상의 단방향 버스들로 구현될 수 있다. 버스(120)의 비트폭은 특정 구현의 설계 기준을 충족시키기 위해 변할 수 있다.
컨트롤러 회로(102)는 버스(122)를 통해 회로(104)에 연결될 수 있다. 버스(122)는 볼륨들(LUN0-LUNn)에서 회로(104)로의 읽기 및 쓰기 정보의 전송을 제어하는데 사용될 수 있다. 일예에 있어서, 버스(122)는 양방향 버스로 구현될 수 있다. 다른 예에 있어서, 버스(122)는 하나 이상의 단방향 버스들로 구현될 수 있다. 버스(122)의 비트폭은 특정 구현의 설계 기준을 충족시키기 위해 변할 수 있다.
컨트롤러 회로(102)는 버스(124)를 통해 회로(108)에 연결될 수 있다. 버스(124)는 볼륨들(LUN0-LUNn)에서 회로(108)로의 정보의 읽기 및 쓰기를 제어하는데 사용될 수 있다. 일예에 있어서, 버스(124)는 양방향 버스로 구현될 수 있다. 다른 예에 있어서, 버스(124)는 하나 이상의 단방향 버스들로 구현될 수 있다. 버스(124)의 비트폭은 특정 구현의 설계 기준을 충족시키기 위해 변할 수 있다.
회로(106)는 복수의 연결 버스들(130a-130n)을 통해 회로(108)에 연결될 수 있다. 컨트롤러 회로(102)는 볼륨들(LUN0-LUNn)에서 캐시 그룹(108)으로의 직접적인 정보 전송(예를 들면, LUN0에서 C1, LUN1에서 C2, LUNn에서 Cn 등)을 제어할 수 있다. 일예에 있어서, 연결 버스들(130a-130n)은 복수의 양방향 버스들로 구현될 수 있다. 다른 예에 있어서, 연결 버스들(130a-130n)은 복수의 단방향 버스들로 구현될 수 있다. 연결 버스들(130a-130n)의 비트폭은 특정 구현의 설계 기준을 충족시키기 위해 변할 수 있다.
시스템(100)은 캐시 부분들(C1-Cn)을 캐시-신디케이트를 위한 한 그룹의 고체 상태 디바이스들로 구현할 수 있다. 시스템(100)이 볼륨들(LUN0-LUNn) 중 새로운 볼륨을 생성하면, 해당 캐시 부분(C1-Cn)이 회로(108)내에 생성된다. 정상적으로, 회로(108)의 용량은 미리 정의된 컨트롤러 스펙의 일부로서 결정되어진다. 예를 들면, 회로(108)의 용량은, 일예로서, 볼륨들(LUN0-LUNn)의 용량의 1% 내지 10%에 있는 것으로 정의될 수 있다. 하지만, 다른 비율들이 특정 구현의 설계 기준을 충족시키기 위해 구현될 수 있다. 특정 캐시 부분(C1-Cn)은 특정 볼륨(LUN0-LUNn)을 위한 전용 캐시 리소스가 될 수 있다. 시스템(100)은 운영체제 및/또는 애플리케이션 프로그램이 파일-캐싱을 위한 캐시 부분(C1-Cn) 및/또는 실제 데이터의 저장을 위한 추가 볼륨 용량을 이용할 수 있게 특정 볼륨(LUN0-LUNn) 및 특정 캐시 부분(C1-Cn)을 초기화할 수 있다.
시스템(100)은 n개의 볼륨들로 구현될 수 있다(여기서, n은 정수). 생성된 하나 이상의 캐시 섹션들(C1-Cn)을 각각 가지는 볼륨들(LUN0-LUNn)을 구현함으로써, 시스템(100)은 성능 증대를 제공할 수 있다. 운영체제 및/또는 애플리케이션 프로그램들은 볼륨들(LUN0-LUNn)과 캐시-리포지토리 섹션들(C1-Cn)의 결합 공간에의 액세스를 가질 수 있다. 일예에 있어서, 국부 캐시 회로(104)에 더하여 캐시 섹션들(C1-Cn)이 구현될 수 있다. 하지만, 일부의 설계 구현들에 있어서는 캐시 섹션들(C1-Cn)이 국부 캐시 회로(104) 대신에 구현될 수 있다.
도 2는 방법(또는 프로세스)(200)의 흐름도이다. 프로세스(200)는 상태(또는 단계)(202), 판정 상태(또는 단계)(204), 판정 상태(또는 단계)(206), 상태(또는 단계)(208), 상태(또는 단계)(210), 상태(또는 단계)(212), 상태(또는 단계)(214), 및 상태(또는 단계)(216)를 포함할 수 있다.
상태(202)는 볼륨들(LUN0-LUNn) 중 하나를 생성할 수 있다. 예를 들면, 상태(202)는 특정 볼륨(예를 들면, 볼륨(LUN0))의 생성을 시작하기 위해 생성 볼륨 시퀀스를 초기화할 수 있다. 판정 상태(204)는 캐시 부분들(C1-Cn) 중 하나를 추가하기에 충분한 자유공간을 회로(108)내에서 이용가능한지를 판정할 수 있다. 예를 들면, 판정 상태(204)는 캐시 부분(C1)을 추가하기에 충분한 공간이 있는지를 판정할 수 있다. 충분한 공간이 없으면, 프로세스(200)는 판정 상태(206)로 이동한다. 판정 상태(206)는 사용자가 캐시 부분(C1) 없이 볼륨을 생성하기를 원하는지를 판정할 수 있다. 만약 원하면, 프로세스(200)는 상태(210)로 이동할 수 있다. 상태(210)는 해당 캐시 부분(C1) 없이 볼륨(LUN0)을 생성한다. 만약 원하지 않으면, 프로세스(200)는 상태(208)로 이동한다. 상태(208)는 볼륨(LUN0)의 생성을 중지한다. 회로(108)내에 자유 공간이 있으면, 프로세스(200)는 상태(212)로 이동한다. 상태(212)는 캐시 부분(C1) 및 볼륨(LUN0)을 생성한다. 상태(214)는 볼륨(LUN0)을 해당 캐시 부분(Cn)에 연결할 수 있다. 상태(216)는 운영체제 및/또는 애플리케이션 프로그램들에 의해 볼륨(LUN0) + 캐시 부분(Cn)내의 공간에의 액세스를 허용할 수 있다.
도 3은 다른 시스템(100') 구현을 나타낸 도면이다. 시스템(100')은 복수의 캐시 섹션들(108a-108n)을 구현할 수 있다. 일예에 있어서, 캐시 섹션들(108a-108n) 각각은 개별적인 디바이스로 구현될 수 있다. 다른 예에 있어서, 캐시 섹션들(108a-108n) 각각은 동일 디바이스의 개별적인 부분들상에 구현될 수 있다. 캐시 부분들(108a-108n)이 개별적인 디바이스들상에 구현되면, 시스템(100')의 사용중 수리가 구현될 수 있다. 예를 들면, 캐시 섹션(108a-108n) 중 하나가 교체되면서, 나머지 캐시 섹션들(108a-108n)은 사용중 상태로 유지될 수 있다. 일예에 있어서, 볼륨(LUN0)에 연결된 캐시 부분(108a)의 캐시 부분(C1) 및 캐시 부분(108n)의 캐시 부분(C1)이 도시되어 있다. 캐시 부분들(108a-108n) 중 둘 이상의 각각의 캐시 부분들(C1-Cn) 중 하나 이상을 해당 볼륨(LUN0-LUNn)에 연결함으로써, 캐시 리던던시가 구현될 수 있다. 볼륨(LUN0)에 연결된 캐시 부분(C1)이 도시되어 있지만, 볼륨들(LUN0-LUNn) 각각에 연결된 특정 캐시 부분들(C1-Cn)은 특정 구현의 설계 기준을 충족시키기 위해 변할 수 있다.
도 4는 다른 시스템(100'') 구현을 나타낸 도면이다. 시스템(100'')은 캐시 풀(cache pool)로 회로(108')를 구현할 수 있다. 회로(108')는 볼륨들(LUN0-LUNn)의 개수보다 많은 복수의 캐시 섹션들(C1-Cn)을 구현할 수 있다. 캐시 부분들(C1-Cn) 중 하나 이상이 볼륨들(LUN0-LUNn) 각각에 연결될 수 있다. 예를 들면, 캐시 부분(C2) 및 캐시 부분(C4)에 연결된 볼륨(LUN1)이 도시되어 있다. 캐시 부분(C5), 캐시 부분(C7), 및 캐시 부분(C9)에 연결된 볼륨(LUNn)이 도시되어 있다. 볼륨들(LUN0-LUN1) 각각에 연결된 특정 캐시 부분들(C1-Cn)은 특정 구현의 설계 기준을 충족시키기 위해 변할 수 있다. 동일한 사이즈 또는 다른 사이즈를 갖는 캐시 부분들(C1-Cn)이 구현될 수 있다. 동일 사이즈를 갖는 캐시 부분들(C1-Cn)이 구현되면, 캐시 부분들(C1-Cn) 중 하나 이상을 볼륨들(LUN0-LUNn) 중 단 하나로의 할당은 높은 로드를 경험하는 볼륨들(LUN0-LUN1)에서의 추가 캐싱을 가능하게 할 수 있다. 수신된 I/O 요구들의 볼륨에 응답하여 캐시 부분들(C1-Cn)이 볼륨들(LUN0-LUN1)에 동적으로 할당될 수 있다. 예를 들면, 캐시 부분들(C1-Cn)의 구성은 초기 구성 이후에 일회 이상 재구성될 수 있다.
일반적으로, 도 3의 시스템(100')은 복수의 캐시 섹션들(108a-108n)을 구현한다. 도 4의 시스템(100'')은 도 1의 캐시 섹션(108)과 비교하여 보다 큰 캐시 섹션(108')을 구현한다. 시스템(100' 및 100'')의 결합물이 구현될 수 있다. 예를 들면, 도 3의 캐시 회로들(108a-108n) 각각은 도 4의 보다 큰 캐시 회로(108')로 구현될 수 있다. 복수의 회로들(108')을 구현함으로써, 시스템(100'')은 리던던시를 구현할 수 있다. 시스템(100), 시스템(100') 및 시스템(100'')의 다른 결합물이 구현될 수 있다.
시스템(100)의 파일-캐싱 회로(108)는 일반적으로 스토리지 어레이(106)와 동일한 서브시스템에서 이용가능하다. 파일-캐싱은 특정 볼륨들(LUN0-LUNn)에 전용될 수 있다. 일예에 있어서, 파일-캐싱 회로(108)는 한 그룹의 고체 상태 디바이스들에 걸쳐 분산될 수 있다. 이러한 고체 상태 디바이스들은 스케일링될 수 있다.
시스템(100)은 특정 캐싱 볼륨들(LUN0-LUNn)에 전용될 수 있는 회로(108)의 무제한 및/또는 확장가능한 용량을 제공할 수 있다. 고체 상태 디바이스로 캐시 회로(108)를 구현함으로써, 특정 캐시 읽기들의 전반적인 액세스 시간은 저감될 수 있다. 저감된 액세스 시간이 나타나지만 전반적인 액세스-밀도는 증가된다. 캐시 회로(108)는 볼륨들(LUN0-LUNn)의 전반적인 성능을 증가시킬 수 있다.
캐시 그룹(108)은 시스템(100)을 제조하기 위한 전체 비용에 약간 추가되는 고체 상태 메모리 디바이스를 이용하여 구현될 수 있다. 어떤 구현들에 있어서, 데이터 실패의 경우에 리던던시를 제공하기 위해 캐시 그룹(108)이 미러링될 수 있다. 이 시스템은, 복수의 운영체제들 및/또는 다른 애플리케이션들을 이용하는 복수의 사용자들이 어레이(106)로의 액세스를 필요로 할 수 있는 엔터프라이즈 레벨의 SAN(Storage Area Network) 환경에서 유용할 수 있다. 예를 들면, 메시징, 웹 및/또는 데이터베이스 서버 애플리케이션들은 시스템(100)을 구현할 수 있다.
도 2의 흐름도에 의해 수행되는 기능이 본 명세서의 교시에 따라 프로그램된 종래의 범용 디지털 컴퓨터를 이용하여 구현될 수 있다는 것은 이 기술분야의 당업자에게 자명하다. 본 발명의 교시를 기초로 적절한 소프트웨어 코딩이 숙련된 프로그래머들에 의해 용이하게 준비될 수 있다는 것도 이 기술분야의 당업자에게 자명하다.
또한, 여기에 개시되고, 그 변형물이 이 기술분야의 당업자에게 자명한 본 발명은 ASIC들, FPGA들의 준비에 의해 또는 종래 구성 회로들의 적절한 네트워크를 상호연결함으로써 구현될 수 있다.
따라서, 본 발명은 본 발명에 따라 프로세스를 수행하도록 컴퓨터를 프로그램하는데 사용될 수 있는 명령들을 포함하는 스토리지 매체일 수 있는 컴퓨터 제품도 포함할 수 있다. 스토리지 매체는, 그에 한정되지는 않지만, 플로피 디스크, 광 디스크, CD-ROM, 자기-광 디스크들, ROM들, RAM들, EPROM들, EEPROM들, 플래시 메모리, 자기 또는 광 카드들을 포함하는 모든 종류의 디스크, 또는 전자 명령들을 저장하기에 적합한 모든 종류의 매체들을 포함할 수 있다.
여기에 사용된 용어 "동시"는 어떤 공통 시간 주기를 공유하는 이벤트들을 설명하기 위한 것이지만 이 용어는 시간적으로 동일한 시점에 시작하여 시간적으로 동일한 시점에 끝나거나 또는 동일한 듀레이션을 갖는 이벤트들로 한정하기 위한 것은 아니다.
본 발명이 바람직한 실시예들을 참조하여 특별히 도시되고 설명되었지만, 형태와 상세에 있어 다양한 변형물들이 본 발명의 범위를 일탈하지 않고 이루어질 수 있다는 것을 이 기술분야의 당업자는 이해할 것이다.

Claims (19)

  1. 복수의 디스크 드라이브를 포함하는 드라이브 어레이와,
    제1 캐시 회로와,
    메모리 회로 상에 작성되어, 각각이 상기 복수의 디스크 드라이브 각각의 하나에 접속된 복수의 제2 캐시 회로로서, (ⅰ) 상기 복수의 제2 캐시 회로가 상기 복수의 디스크 드라이브 중 특정의 하나를 위한 전용의 캐시로 되고, (ⅱ) 상기 복수의 제2 캐시 회로 중 하나 이상의 용량이 상기 복수의 디스크 드라이브 각각에 동적으로 할당되고, (ⅲ) 상기 복수의 제2 캐시 회로 중 하나 이상의 용량이 상기 복수의 디스크 드라이브 중 특정의 하나에서 수신되는 다수의 입출력 요구에 응답하여 재구성 가능한 복수의 제2 캐시 회로와,
    상기 복수의 제2 캐시 회로와는 별개의 디바이스로 제작되어, (ⅰ) 상기 복수의 디스크 드라이브의 읽기 동작과 쓰기 동작을 제어하고, (ⅱ) 상기 복수의 디스크 드라이브로부터 상기 제1 캐시 회로로 정보를 읽고 쓰고, (ⅲ) 상기 복수의 제2 캐시 회로에 정보를 읽고 쓰고, (ⅳ) 상기 복수의 디스크 드라이브 중 하나로부터 상기 복수의 제2 캐시 회로 중 하나로의 직접 정보의 읽기 및 쓰기를 제어하도록 구성된 컨트롤러를 포함하는 장치.
  2. 제1항에 있어서,
    상기 컨트롤러는 마이크로프로세서를 포함하는 장치.
  3. 제1항에 있어서,
    상기 컨트롤러는 상기 컨트롤러와 상기 복수의 디스크 드라이브 간에 접속된 제1 제어 버스를 통해 상기 복수의 디스크 드라이브의 읽기 동작과 쓰기 동작을 제어하는 장치.
  4. 제3항에 있어서,
    상기 컨트롤러는 제2 제어 버스를 통해 상기 복수의 디스크 드라이브로부터 상기 제1 캐시 회로로 읽기 정보 및 쓰기 정보를 송신하는 것을 제어하는 장치.
  5. 제4항에 있어서,
    상기 컨트롤러는 제3 제어 버스를 통해 상기 복수의 디스크 드라이브로부터 상기 복수의 제2 캐시 회로로 정보를 송신하는 것을 제어하는 장치.
  6. 제5항에 있어서,
    (ⅰ) 상기 컨트롤러는 상기 제2 제어 버스를 통해 상기 복수의 디스크 드라이브로부터 상기 복수의 제2 캐시 회로로 정보를 직접 송신하는 것을 제어하고 (ⅱ) 그 데이터 송신은 상기 복수의 제2 캐시 회로로 복수의 접속 버스에 의해 직접 송신되는 장치.
  7. 제5항에 있어서,
    상기 제1 버스, 상기 제2 버스, 및 상기 제3 버스의 각각은 양방향 버스를 포함하는 장치.
  8. 제1항에 있어서,
    상기 복수의 제2 캐시 회로가 고체 상태 메모리 디바이스로 구현되는 장치.
  9. 제1항에 있어서,
    (ⅰ) 상기 컨트롤러는 제어 버스를 통해 상기 복수의 디스크 드라이브로부터 상기 복수의 제2 캐시 회로로 정보를 직접 송신하는 것을 제어하고 (ⅱ) 그 데이터 송신은 상기 복수의 제2 캐시 회로로 복수의 접속 버스에 의해 직접 송신되는 장치.
  10. 제1항에 있어서,
    (ⅰ) 먼저, 상기 복수의 제2 캐시 회로 중 하나 이상은 제1 메모리 회로 상에 구현되고 (ⅱ) 이어서 상기 복수의 제2 캐시 회로 중 하나 이상은 제2 메모리 회로 상에 구현되는 장치.
  11. 제1항에 있어서,
    (ⅰ) 먼저, 상기 복수의 제2 캐시 회로 중 제1 하나 이상은 메모리 회로의 제1 부분 상에 구현되고 (ⅱ) 이어서 상기 복수의 제2 캐시 회로 중 하나 이상은 상기 메모리 회로의 제2 부분 상에 구현되는 장치.
  12. 제11항에 있어서,
    상기 복수의 제2 캐시 회로는 상기 복수의 디스크 드라이브 중 하나에 링크되도록 구성된 장치.
  13. 제1항에 있어서,
    상기 복수의 제2 캐시 회로의 각각은 상기 복수의 디스크 드라이브에 동적으로 할당되는 장치.
  14. 제1항에 있어서,
    상기 복수의 제2 캐시 회로의 각각은 상기 복수의 디스크 드라이브로의 입출력 요구에 응답하여 재구성 가능한 장치.
  15. 제1항에 있어서,
    상기 복수의 디스크 드라이브 각각은 데이터 볼륨을 포함하는 장치.
  16. 제1항에 있어서,
    상기 복수의 디스크 드라이브 중 2 이상은 데이터 볼륨을 포함하는 장치.
  17. 복수의 디스크 드라이브를 포함하는 드라이브 어레이를 구현하기 위한 수단과,
    제1 캐시 회로를 구현하기 위한 수단과,
    메모리 회로 상에 작성되어, 각각이 상기 복수의 디스크 드라이브 각각의 하나에 접속된 복수의 제2 캐시 회로를 구현하기 위한 수단으로서, (ⅰ) 상기 복수의 제2 캐시 회로가 상기 복수의 디스크 드라이브 중 특정의 하나를 위한 전용의 캐시로 되고, (ⅱ) 상기 복수의 제2 캐시 회로 중 하나 이상의 용량이 상기 복수의 디스크 드라이브 각각에 동적으로 할당되고, (ⅲ) 상기 복수의 제2 캐시 회로 중 하나 이상의 용량이 상기 복수의 디스크 드라이브 중 특정의 하나에서 수신되는 다수의 입출력 요구에 응답하여 재구성 가능한 수단과,
    상기 복수의 제2 캐시 회로와는 별개의 디바이스로 제작되어, (ⅰ) 상기 복수의 디스크 드라이브의 읽기 동작과 쓰기 동작을 제어하고, (ⅱ) 상기 복수의 디스크 드라이브로부터 상기 제1 캐시 회로로 정보를 읽고 쓰고, (ⅲ) 상기 복수의 제2 캐시 회로에 정보를 읽고 쓰고, (ⅳ) 상기 복수의 디스크 드라이브 중 하나로부터 상기 복수의 제2 캐시 회로 중 하나로의 직접 정보의 읽기 및 쓰기를 제어하도록 구성된 컨트롤러를 구현하기 위한 수단을 포함하는 장치.
  18. 제1항에 기재된 장치를 이용하여,
    (A) 복수의 디스크 드라이브 중 하나로부터 드라이브 볼륨의 작성을 개시하는 단계와,
    (B) 복수의 캐시 부분 중 하나를 활성화시키는 단계와,
    (C) 상기 활성화된 캐시 부분을 상기 드라이브 볼륨에 링크시키는 단계와, 및
    (D) 상기 드라이브 볼륨에 액세스를 허가하는 단계를 포함하는 것을 특징으로 하는, 드라이브 어레이 내에 드라이브 컨트롤러를 구성하는 방법.
  19. 제18항에 있어서,
    단계(B) 전에, 상기 복수의 캐시 부분 중 하나를 위해 공간이 이용가능한지를 체크하는 단계와,
    상기 공간이 이용가능인 경우, 단계(B)로 진행하는 단계와, 및
    상기 공간이 이용가능하지 아니한 경우, 단계(C)를 건너뛰고 단계(D)로 진행하는 단계를 더 포함하는 방법.
KR1020107023978A 2008-04-22 2008-05-19 드라이브 어레이내의 분산 캐시 시스템 KR101431480B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US4681508P 2008-04-22 2008-04-22
US61/046,815 2008-04-22
PCT/US2008/006402 WO2009131560A1 (en) 2008-04-22 2008-05-19 Distributed cache system in a drive array

Publications (2)

Publication Number Publication Date
KR20110004397A KR20110004397A (ko) 2011-01-13
KR101431480B1 true KR101431480B1 (ko) 2014-09-23

Family

ID=41217084

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107023978A KR101431480B1 (ko) 2008-04-22 2008-05-19 드라이브 어레이내의 분산 캐시 시스템

Country Status (7)

Country Link
US (1) US20110022794A1 (ko)
EP (1) EP2288992A4 (ko)
JP (1) JP5179649B2 (ko)
KR (1) KR101431480B1 (ko)
CN (1) CN102016807A (ko)
TW (1) TWI423020B (ko)
WO (1) WO2009131560A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8984225B2 (en) 2011-06-22 2015-03-17 Avago Technologies General Ip (Singapore) Pte. Ltd. Method to improve the performance of a read ahead cache process in a storage array
US20130138884A1 (en) * 2011-11-30 2013-05-30 Hitachi, Ltd. Load distribution system
US8924944B2 (en) 2012-06-29 2014-12-30 Microsoft Corporation Implementation of distributed methods that support generic functions
US9176769B2 (en) 2012-06-29 2015-11-03 Microsoft Technology Licensing, Llc Partitioned array objects in a distributed runtime
US8893155B2 (en) 2013-03-14 2014-11-18 Microsoft Corporation Providing distributed array containers for programming objects
US9678787B2 (en) 2014-05-23 2017-06-13 Microsoft Technology Licensing, Llc Framework for authoring data loaders and data savers
CN106527985A (zh) * 2016-11-02 2017-03-22 郑州云海信息技术有限公司 一种基于ceph的存储交互装置及存储系统
CN110928495B (zh) * 2019-11-12 2023-09-22 杭州宏杉科技股份有限公司 一种在多控存储系统上的数据处理方法及装置
US11768599B2 (en) * 2021-07-13 2023-09-26 Saudi Arabian Oil Company Managing an enterprise data storage system
CN115826882B (zh) * 2023-02-15 2023-05-30 苏州浪潮智能科技有限公司 一种存储方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05216760A (ja) * 1992-02-04 1993-08-27 Hitachi Ltd 計算機システム
JP2002032196A (ja) 2000-07-19 2002-01-31 Toshiba Corp ディスクドライブ装置

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4603382A (en) * 1984-02-27 1986-07-29 International Business Machines Corporation Dynamic buffer reallocation
US6192408B1 (en) * 1997-09-26 2001-02-20 Emc Corporation Network file server sharing local caches of file access information in data processors assigned to respective file systems
US6493772B1 (en) * 1999-08-23 2002-12-10 International Business Machines Corporation System and method with guaranteed maximum command response time
US7127668B2 (en) * 2000-06-15 2006-10-24 Datadirect Networks, Inc. Data management architecture
US6880044B2 (en) * 2001-12-31 2005-04-12 Intel Corporation Distributed memory module cache tag look-up
US6912669B2 (en) * 2002-02-21 2005-06-28 International Business Machines Corporation Method and apparatus for maintaining cache coherency in a storage system
JP2004110503A (ja) * 2002-09-19 2004-04-08 Hitachi Ltd 記憶制御装置、記憶システム、記憶制御装置の制御方法、チャネル制御部、及びプログラム
WO2004114116A1 (ja) * 2003-06-19 2004-12-29 Fujitsu Limited キャッシュ二重化方式におけるミラーキャッシュからの書き戻し方法
US7137038B2 (en) * 2003-07-29 2006-11-14 Hitachi Global Storage Technologies Netherlands, B.V. System and method for autonomous data scrubbing in a hard disk drive
US7136973B2 (en) * 2004-02-04 2006-11-14 Sandisk Corporation Dual media storage device
JP4494031B2 (ja) * 2004-02-06 2010-06-30 株式会社日立製作所 ストレージ制御装置、及びストレージ制御装置の制御方法
JP4585217B2 (ja) * 2004-03-29 2010-11-24 株式会社日立製作所 ストレージシステムおよびその制御方法
JP2005309739A (ja) * 2004-04-21 2005-11-04 Hitachi Ltd ディスクアレイ装置およびディスクアレイ装置のキャッシュ制御方法
US7296094B2 (en) * 2004-08-20 2007-11-13 Lsi Corporation Circuit and method to provide configuration of serial ATA queue depth versus number of devices
JP4555029B2 (ja) * 2004-09-01 2010-09-29 株式会社日立製作所 ディスクアレイ装置
JP2006252358A (ja) * 2005-03-11 2006-09-21 Nec Corp ディスクアレイ装置及びその共有メモリ装置、ディスクアレイ装置の制御プログラム及び制御方法
US7254686B2 (en) * 2005-03-31 2007-08-07 International Business Machines Corporation Switching between mirrored and non-mirrored volumes
JP5008845B2 (ja) * 2005-09-01 2012-08-22 株式会社日立製作所 ストレージシステムとストレージ装置及びその制御方法
TW200742995A (en) * 2006-05-15 2007-11-16 Inventec Corp System of performing a cache backup procedure between dual backup servers

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05216760A (ja) * 1992-02-04 1993-08-27 Hitachi Ltd 計算機システム
JP2002032196A (ja) 2000-07-19 2002-01-31 Toshiba Corp ディスクドライブ装置

Also Published As

Publication number Publication date
KR20110004397A (ko) 2011-01-13
TWI423020B (zh) 2014-01-11
JP5179649B2 (ja) 2013-04-10
CN102016807A (zh) 2011-04-13
WO2009131560A1 (en) 2009-10-29
TW200945031A (en) 2009-11-01
EP2288992A4 (en) 2011-11-30
EP2288992A1 (en) 2011-03-02
JP2011518392A (ja) 2011-06-23
US20110022794A1 (en) 2011-01-27

Similar Documents

Publication Publication Date Title
KR101431480B1 (ko) 드라이브 어레이내의 분산 캐시 시스템
US20200409564A1 (en) Data storage among a plurality of storage drives
US8621142B1 (en) Method and apparatus for achieving consistent read latency from an array of solid-state storage devices
US8621146B1 (en) Network storage system including non-volatile solid-state memory controlled by external data layout engine
US7093158B2 (en) Data redundancy in a hot pluggable, large symmetric multi-processor system
US10042869B1 (en) Method for data transfer between compute clusters and file system
US11698873B2 (en) Interleaving in multi-level data cache on memory bus
US8037244B2 (en) Storage apparatus and data storage method using the same
US5883909A (en) Method and apparatus for reducing data transfers across a memory bus of a disk array controller
US20020083270A1 (en) Data storage systems and methods which utilize an on-board cache
US9824041B2 (en) Dual access memory mapped data structure memory
US10891078B2 (en) Storage device with a callback response
CN101206553B (zh) 利用支持处理器的优化数据迁移方法和系统
CA2511304C (en) Dual journaling store method and storage medium thereof
US8195877B2 (en) Changing the redundancy protection for data associated with a file
US20070094531A1 (en) Expandable storage apparatus for blade server system
CN101390059A (zh) 用于并发raid阵列重定位的装置
US20050102482A1 (en) Method and system for configuring RAID subsystems with block I/O commands and block I/O path
EP4310690A1 (en) Systems and methods for data prefetching for low latency data read from a remote server
US20080133836A1 (en) Apparatus, system, and method for a defined multilevel cache
JP4708669B2 (ja) パス冗長化装置及び方法
US7533235B1 (en) Reserve stacking
Imazaki et al. EFFICIENT SNAPSHOT METHOD FOR ALL-FLASH ARRAY.
KR20240048774A (ko) 호스트와 메모리 시스템이 데이터를 공유하는 장치 및 방법
CN117111830A (zh) 存储装置、存储器装置和包括其的计算系统

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee