KR20110031441A - 분산 raid 구현을 위한 방법 및 시스템 - Google Patents
분산 raid 구현을 위한 방법 및 시스템 Download PDFInfo
- Publication number
- KR20110031441A KR20110031441A KR1020107029904A KR20107029904A KR20110031441A KR 20110031441 A KR20110031441 A KR 20110031441A KR 1020107029904 A KR1020107029904 A KR 1020107029904A KR 20107029904 A KR20107029904 A KR 20107029904A KR 20110031441 A KR20110031441 A KR 20110031441A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- segment
- data bank
- command
- volume
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1028—Distributed, i.e. distributed RAID systems with parity
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본원에 개신된 방법 및 시스템의 실시예들은 데이터 뱅크의 셋트를 포함하는 분산 RAID 시스템을 제공한다. 더욱 상세히는, 분산 RAID 시스템의 특정 실시예에서 각각의 데이터 뱅크는 연관된 저장 매체의 셋트를 포함하고 마찬가지의 분산 RAID 애플리케이션을 실행한다. 각각의 데이터 뱅크상의 분산 RAID 애플리케이션들은 데이터 뱅크의 연관된 저장 매체에 저장된 데이터와 공동으로 RAID의 레벨을 구현하는 것과 연관된 데이터 흐름을 제어 및 분배하기 위해 스스로 조정한다.
Description
본 발명은 일반적으로 저장 디바이스의 사용에 관한 것이다. 상세하게는, 본 발명의 실시예는 저장 디바이스상에 RAID를 구현하는 것에 관한 것이다. 더욱 상세하게는, 본 발명의 특정 실시예는 분산 RAID의 구현에 관한 것이다.
데이터는 대다수의 엔티티에 대한 중요한 자산을 나타낸다. 결과적으로, 우발적이거나 악의적인 동작에 의한 데이터 손실은 인력 낭비, 고객으로부터의 신뢰 상실, 시간 손실 및 잠재적인 법적 책임의 관점에서 볼 때 대가가 클 수 있다. 비지니스, 법적 또는 기타 목적들을 위해 데이터를 적합하게 보호할 수 있도록 하기 위해, 대다수의 엔티티는, 데이터 저장, 중복, 보안 등을 포함하는 여러 기술을 이용하여 자신들의 데이터를 보호하기를 바랄 수 있다. 그러나, 이 기술들은 그 데이터를 처리 또는 저장하는 데에 사용되는 컴퓨팅 디바이스의 구성 또는 상태에 의해 부과되는 요구사항 또는 기타 상충하는 제약사항과 충돌할 수 있다.
이러한 긴장 상황들을 다루기 위한 한 방법은 RAID(Redundant Array of Independent Disks)를 구현하는 것이다. 일반적으로 RAID 시스템은 신뢰성을 증대시키기 위해, 그리고 일부 경우엔 저장장치를 위한 이들 RAID 시스템을 사용하여 컴퓨팅 디바이스(호스트로 알려짐)의 처리율을 개선시키기 위해, 통칭하여 어레이로 지칭되는 다수의 하드 디스크 드라이브(또는 기타 저장 매체 유형)에 걸쳐 데이터를 분할하고 복제한다. 호스트에게는, RAID 어레이는 하나 이상의 모노리딕 저장 영역으로 보여질 수 있다. 호스트가 RAID 시스템과 통신(판독, 기록등)하기를 원하는 경우, 호스트는 RAID 어레이가 단일 디스크인 것처럼 통신한다. 한편 RAID 시스템은 이 통신내용들을 처리하여 그러한 통신내용들과 공동으로 특정한 RAID 레벨을 구현한다. 이 RAID 레벨들은 신뢰도, 저장용량, 속도등과 같은 다양한 상충사항들간에 소정의 바람직한 밸런스를 이루도록 설계될 수 있다. 예를 들어, RAID(레벨) 0은, 속도를 향상시키고 실질적으로 디스크의 전체 용량을 이용하지만, 디스크가 오류가 있는 경우엔 디스크상의 모든 데이터는 손실되는 방식으로 여러 디스크에 걸쳐 데이터를 분산시킴; RAID(레벨) 1은, RAID (레벨) 1은 각각이 동일한 데이터를 저장하는 두 개(또는 그 이상)의 디스크를 사용함으로써, 데이터는 하나의 디스크가 살아있는 한 손실되지 않음. 상기 어레이의 전체 용량은 실질적으로 단일 디스크의 용량이고 RAID(레벨) 5는, 임의의 한 디스크의 손실에 대해 데이터를 보호하는 방식으로 세 개 이상의 디스크를 결합한다. 상기 어레이의 저장 용량은 한 디스크 만큼 감소된다.
현재 기술의 RAID 구현에는 여러 문제점들이 있을 수 있다. 이 문제점들은, 대부분의 경우에 RAID 시스템과의 모든 통신은 RAID 시스템을 제어 및 관리하는 단일 서버에 대해 주소지정되어야만 한다는 사실등과 같은, 상기 RAID 시스템들의 구조에 의해 부과되는 제약사항들로부터 생긴다. 다른 문제점들은 RAID 시스템을 포함하고 있는 디스크상의 데이터의 구성 또는 레이아웃으로부터 생길 수 있다. 예를 들어, 특정한 경우엔, RAID 레벨은 RAID 시스템이 이용될 수 있기 이전에 선택되어야만 하고 저장 장치가 RAID 시스템내에 할당되어야 한다. 따라서, 초기에 선택된 RAID 레벨은 그 RAID 레벨이 바람직한 것인지 또는 필요로 되는 지에 무관하게, RAID 시스템상에 저장된 데이터와 공동으로 구현되어야 한다. 대부분의 경우에 상기한 바와 같은 종래의 문제점들은 이들 솔루션을 구현하기 위해 맞춤형 하드웨어 또는 소프트웨어를 사용해야 한다는 것에 의해 악화되어 왔고, 그러한 솔루션을 구현하는 것과 연관된 비용을 상승시킨다. 결과적으로, 상기한 바와 같은 종래의 문제점들을 개선하는 것이 요망된다.
본원에 개시된 시스템 및 방법의 실시예들은 데이터 뱅크의 셋트를 포함하는 분산 RAID 시스템을 제공한다. 상세하게는, 분산 RAID 시스템의 특정 실시예에서, 각각의 데이터 뱅크는 연관된 저장 매체의 셋트를 가지며 유사한 분산 RAID 애플리케이션을 실행한다. 각각의 데이터 뱅크상의 분산 RAID 애플리케이션은 스스로 그들간에 조정하여 데이터 뱅크의 연관된 저장 매체에 저장된 데이터와 공동으로 RAID 레벨을 구현하는 것과 연관된 데이터 흐름을 분산 및 제어한다.
상세하게는, 한 실시예에서, 연관된 RAID 레벨을 갖는 볼륨(volume)은 분산 RAID 시스템을 사용하여 생성될 수 있다. 각각의 분산 RAID 애플리케이션은 그 볼륨과 연관된 데이터 또는 그 볼륨과 공동으로 소망하는 RAID 레벨의 구현과 연관된 데이터가 분산 RAID 시스템의 다수의 데이터 뱅크에 저장될 수 있도록 그 볼륨의 데이터와 연관된 동작을 조정할 수 있다.
다수의 데이터 뱅크의 각각에서 실행하는 유사한 분산 RAID 애플리케이션을 사용하여 상기 다수의 데이터 뱅크에 RAID의 구현과 연관된 데이터 및 볼륨의 데이터 양자 모두를 저장함으로써 볼륨과 공동으로 RAID 레벨의 구현을 조정함으로써, 다수의 이점이 달성될 수 있다. 즉, 상이한 RAID 레벨과 공동으로 구현된 하나 이상의볼륨들로써, 상이한 저장 볼륨들이 할당될 수 있다. 더욱이, 데이터 뱅크에 걸쳐 RAID를 구현하는 것과 저장장치의 조정은 실질적으로 동일한 분산 RAID 애플리케이션을 사용하여 달성되므로, 대부분의 경우엔 표준 x86 기반 서버 및 저장 매체와 같은 표준 또는 규격품(off-the-shelf) 하드웨어가 이용될 수 있다.
더욱이, RAID 시스템의 각각의 데이터 뱅크에 걸쳐 제어를 분산시킴으로써, 각각의 데이터 뱅크상의 각각의 분산된 RAID 애플리케이션들은 실질적으로 독자적으로 실행할 수 있다. 또한, 일정한 오류 허용 정도는 한 데이터 뱅크가 손실될 수 있으므로 구조적인 면에서 내재적인 것일 수 있고 RAID 시스템은 RAID 시스템을 이용하는 각각의 호스트에 대해 끊김없는 방식(seamlessly)으로 동작할 수 있다.
더욱이, 본원에 제시된 시스템 및 방법의 실시예의 부수적인 효과로서, 성능면에서 훨씬 적은 보틀넥이 있으므로 개선된 성능이 달성될 수 있고, 각각의 호스트가 스위치에 연결될 수 있고 각각의 데이터 뱅크가 상기 스위치에 연결될 수 있음에 따라 증가된 대역폭이 달성될 수 있고 이러한 분산된 RAID 시스템의 확장 및 축소는 상대적으로 끊김없는 방식으로 달성될 수 있다.
본 발명의 상기한 양상 및 기타 양상들은 하기의 상세한 설명 및 첨부 도면과 연계하여 고려할 때 더욱 잘 인식되고 이해될 것이다. 하기의 설명은, 발명의 여러 실시예 및 이 실시예의 특정한 여러 상세한 내용을 지시하지만, 단지 예시적인 것으로서 설명되며 제한적인 의미의 것으로서 설명되는 것은 아니다. 다수의 대체, 수정, 부가 또는 재배열 구성등이 본 발명의 범위내에서 행해질 수 있고, 본 발명은 그러한 모든 대체, 수정, 부가 또는 재배열 구성등을 포함한다.
본 발명에 따르면, 분산 RAID 구현을 위한 방법 및 시스템을 제공할 수 있다.
본원의 일부를 구성하는 첨부 도면은 발명의 특정 양상을 설명하기 위해 포함된다. 본 발명의 명확한 이해 및 본 발명에 제공된 시스템의 컴포넌트 및 동작들은, 도면에 나타낸 실시예들을 예시적인 것으로 즉, 비제한적인 것으로 참조함으로써 더욱 용이하게 분명히 이해될 것이고, 도면에서 동일한 도면 참조 부호는 동일한 컴포넌트를 지정한다. 도면에 나타낸 특징들은 반드시 동일한 축척 비율을 나타낸 것은 아니다.
도 1은 분산 RAID 시스템을 채용하는 구조의 한 실시예의 블록도를 나타낸 도면이다.
도 2A는 데이터 뱅크의 한 실시예의 블록도를 나타낸 도면이다.
도 2B는 데이터 뱅크에 대한 구조의 한 실시예의 블록도를 나타낸 도면이다.
도 3은 분산 RAID 시스템에 의해 구현된 방법의 한 실시예의 흐름도를 나타낸 도면이다.
도 4는 분산 RAID 시스템을 채용하는 구조의 한 실시예의 예시적인 블록도를 나타낸 도면이다.
도 5는 테이블의 한 실시예의 블록도를 나타낸 도면이다.
도 6은 테이블의 한 실시예의 블록도를 나타낸 도면이다.
도 7은 테이블의 한 실시예의 블록도를 나타낸 도면이다.
도 8은 분산 RAID 시스템에 의해 구현된 방법의 한 실시예의 흐름도를 나타낸 도면이다.
도 9A는 분산 RAID 시스템에 의해 구현된 방법의 한 실시예의 흐름도를 나타낸 도면이다.
도 9B는 분산 RAID 시스템에 의해 구현된 방법의 한 실시예의 흐름도를 나타낸 도면이다.
도 10은 기록 캐쉬의 한 실시예의 블록도를 나타낸 도면이다.
도 11은 분산 RAID 시스템에 의해 구현된 방법의 한 실시예의 흐름도를 나타낸 도면이다.
도 12는 분산 RAID 시스템에 의해 구현된 방법의 한 실시예의 흐름도를 나타낸 도면이다.
도 1은 분산 RAID 시스템을 채용하는 구조의 한 실시예의 블록도를 나타낸 도면이다.
도 2A는 데이터 뱅크의 한 실시예의 블록도를 나타낸 도면이다.
도 2B는 데이터 뱅크에 대한 구조의 한 실시예의 블록도를 나타낸 도면이다.
도 3은 분산 RAID 시스템에 의해 구현된 방법의 한 실시예의 흐름도를 나타낸 도면이다.
도 4는 분산 RAID 시스템을 채용하는 구조의 한 실시예의 예시적인 블록도를 나타낸 도면이다.
도 5는 테이블의 한 실시예의 블록도를 나타낸 도면이다.
도 6은 테이블의 한 실시예의 블록도를 나타낸 도면이다.
도 7은 테이블의 한 실시예의 블록도를 나타낸 도면이다.
도 8은 분산 RAID 시스템에 의해 구현된 방법의 한 실시예의 흐름도를 나타낸 도면이다.
도 9A는 분산 RAID 시스템에 의해 구현된 방법의 한 실시예의 흐름도를 나타낸 도면이다.
도 9B는 분산 RAID 시스템에 의해 구현된 방법의 한 실시예의 흐름도를 나타낸 도면이다.
도 10은 기록 캐쉬의 한 실시예의 블록도를 나타낸 도면이다.
도 11은 분산 RAID 시스템에 의해 구현된 방법의 한 실시예의 흐름도를 나타낸 도면이다.
도 12는 분산 RAID 시스템에 의해 구현된 방법의 한 실시예의 흐름도를 나타낸 도면이다.
본 발명 및 본 발명의 여러 특징 및 이점에 대한 상세사항들은 첨부 도면 및 하기의 발명의 상세한 설명에 설명한 비제한적인 실시예를 참조하여 더욱 완전하게 설명된다. 공지된 시작 요소, 처리 기술, 컴포넌트 및 장비들은 본 발명을 불필요하게 애매하게 하지 않도록 하기 위해 생략되었다. 그러나, 본 발명의 바람직한 실시예를 설명하는 중에, 상세한 설명 내용 및 특정한 예들은 단지 예시적인 것으로 설명된 것이며 제한하기 위해 설명된 것이 아님을 알아야 한다. 본 발명의 근간이 되는 원리의 범위 및/또는 사상의 범위내에서 여러 대체, 수정, 부가 및/또는 재배열 구성들은 당업자에게는 본 발명으로부터 명백할 것이다. 본원에 설명된 실시예들은 컴퓨터로 판독가능한 매체(예로서, HD), 하드웨어 회로등, 또는 이들의 임의의 조합에 상주하는 적합한 컴퓨터에서 실행될 수 있는 명령어로 구현될 수 있다.
특정한 실시예를 설명하기 전에, 특정 실시예를 구현하기 위한 하드웨어 구조에 대한 실시예가 설명된다. 한 실시예는 네트워크와 통신으로 연결된 하나 이상의 컴퓨터를 포함할 수 있다. 당업자가 알 수 있는 바와 같이, 컴퓨터는 중앙처리장치("CPU"), 적어도 하나의 판독전용 메모리("ROM"), 적어도 하나의 임의 접근 메모리("RAM"), 적어도 하나의 하드 드라이브("HD"), 및 하나 이상의 입력/출력("I/O") 디바이스를 포함할 수 있다. I/O 디바이스는 키보드, 모니터, 프린터, 전자 포인팅 디바이스(마우스, 트랙볼, 스트일리스트등과 같은) 등을 포함할 수 있다. 다양한 실시예에서, 컴퓨터는 네트워크를 통해 적어도 하나의 데이터베이스에 대한 액세스 권한을 갖는다.
ROM, RAM 및 HD는 CPU에 의해 실행될 수 있는 컴퓨터에서 실행될 수 있는 명령어를 저장하기 위한 컴퓨터 메모리이다. 본원의 설명에서, 용어 "컴퓨터로 판독가능한 매체"는 ROM, RAM 및 HD에 제한되지 않으며 프로세서에 의해 판독될 수 있는 임의의 유형의 데이터 저장 매체응 포함할 수 있다. 일부 실시예에서, 컴퓨터로 판독가능한 매체는 데이터 카트리지, 데이터 백업 자기 테이프, 플로피 디스켓, 플래시 메모리 드라이브, 광학식 데이터 저장장치 드라이브, CD-ROM, ROM, RAM 및 HD등을 지칭할 수 있다.
본원에 설명된 기능 및 프로세스의 적어도 일부분들은 컴퓨터에서 실행될 수 있는 적합한 명령어로 구현될 수 있다. 컴퓨터에서 실행될 수 있는 명령어는 하나 이상의 컴퓨터로 판독가능한 매체(비휘발성 메모리, 휘발성 메모리, DASD 어레이, 자기 테이프, 플로피 디스켓, 하드 드라이브, 광학식 저장 디바이스등 또는 임의의 기타 적합한 컴퓨터로 판독가능한 매체 또는 저장 디바이스)에서 소프트웨어 코드 컴포넌트 또는 모듈로서 저장될 수 있다. 한 실시예에서, 컴퓨터에서 실행될 수 있는 명령어는 컴파일된 C++, Java, HTML 또는 임의의 기타 프로그래밍 또는 스크립팅 코드의 라인들을 포함할 수 있다.
또한, 개시된 실시예의 기능들은 한 컴퓨터에서 또는 네트워크에 있는 또는 네트워크에 걸쳐 연결되어 있는 둘 이상의 컴퓨터들에 공유되거나/분산되어 구현될 수 있다. 실시예를 구현하는 컴퓨터들간의 통신은 임의의 전기 신호, 광신호, 무선 주파수 신호, 또는 공지된 네트워크 프로토콜에 맞는 적합한 통신 툴 또는 방법을 사용하여 행해질 수 있다.
본원에 기재된, 용어 "포함한다", "포함하는", "갖는다", "갖는" 또는 이들 용어에 대한 임의의 기타 변형용어들은 이들로 제한되지 않는 포함관계를 설명하는 것을 의도한다. 예를 들어, 일련의 구성요소를 포함하는 프로세스, 물품(article), 또는 장치는 반드시 그러한 구성요소로만 한정되는 것은 아니고 명시적으로 나타내지 않은 구성요소 또는 그러한 프로세스, 물품, 또는 장치에 본질적으로 내재된 구성요소를 포함할 수 있다. 또한, 명시적으로 반대의 의미로 설명하지 않는 한, "또는"은 포함관계를 의미하는 것으로서, 배제적인 것을 의미하는 것은 아니다. 예를 들어, 조건 A 또는 B는, A는 참(또는 존재함)이고 B는 거짓(또는 존재하지 않음), A는 거짓(또는 존재하지 않음)이고 B는 참(또는 존재함), 및 A 및 B 모두 참인 경우 중 어느 한 경우에 의해서도 충족된다.
또한, 본원에 나타낸 임의의 예 또는 예시 내용들은 이 내용들에 이용되는 임의의 용어 또는 용어들에 대한 제약 사항, 제한 사항 또는 정의 내용 중 어느 것으로도 간주되어선 안된다. 그 대신, 상기 예 또는 예시 내용들은 한 특정 실시예에 대해 설명된 것으로서 그리고 단지 예시적인 것으로서 간주되어야 한다. 당업자는 임의의 예 또는 예시 내용들에 이용되는 임의의 용어 또는 용어들이 기타 실시예에 있을 수 있거나 있지 않을 수 있는 또는 상세한 설명의 다른 설명부분에 있거나 있지 않을 수 있는 기타 실시예들을 포함할 것이라는 것을 인식할 것이고 그러한 모든 실시예들은 상기 용어 또는 용어들의 범위내에 포함되는 것으로 의도된다는 것을 알 것이다. 그러한 비제한적인 예 및 예시 내용을 지정하는 언어는 "예를 들어", "예를 들면", "예로서", "한 실시예에서"를 포함하지만 이들로 제한되는 것은 아니다.
본원은 Galloway등에 의해, 2009년 6월 5일 출원되고, 발명의 명칭이 "Method and System for Data Migration in a Distributed RAID Implementation"인 미국 특허출원 제 호(PIVOTlllO-1), Galloway등에 의해, 2009년 6월 5일 출원되고, 발명의 명칭이 "Method and System for Distributing Commands to Targets" 인 미국 특허출원 제 호(PIVOTll2O-1), Galloway등에 의해, 2009년 6월 5일 출원되고, 발명의 명칭이 "Method and System for Initilizing Storage in a Storage System"인 미국 특허출원 제 호(PIVOTll3O-1), Galloway등에 의해, 2009년 6월 5일 출원되고, 발명의 명칭이 "Method and System for Rebuilding Data in a Distributed RAID System" 인 미국 특허출원 제 호(PIVOTll4O-1), 및 Galloway등에 의해, 2009년 6월 5일 출원되고, 발명의 명칭이 "Method and System for Placement of Data on a Storage Device"인 미국 특허출원 제 호(PIVOTll5O-1)와 관련되고, 이들 문헌은 전부 본원에 참조문헌으로 포함되어 있는 것으로 한다.
특히 데이터 저장장치에 대한 간단한 설명이 유용할 것이다. 상기 설명한 바와 같이, RAID 시스템은 신뢰성을 증대시키기 위해 그리고 일부 경우엔 저장장치를위한 이들 RAID 시스템을 이용하여 컴퓨팅 디바이스(호스트로 알려짐)의 처리율을 개선시키기 위해, 어레이로 통칭되는 다수의 하드 디스크 드라이브(또는 기타 유형의 저장 매체)에 걸쳐 데이터를 분할 및 복제한다. 그러나, 현재 기술의 RAID 구현은 여러 문제점을 가질 수 있다. 이 문제점들은 상기 RAID 시스템들의 구조에 의해 부여되는 제한사항으로부터 RAID 시스템을 포함하는 디스크상의 데이터의 구성 또는 레이아웃으로부터, 또는 솔루션을 구현하기 위해 맞춤형 하드웨어 또는 소프트웨어를 사용할 필요성으로부터 생기는데, 그러한 솔루션의 구현과 연관된 비용을 증대시킨다. 무엇보다도, 상기한 바와 같은 문제점을 실질적으로 개선시킬 것이 요망된다.
이를 위해, 본 발명의 시스템 및 방법에 대해 설명한다. 이 시스템 및 방법들의 실시예는 데이터 뱅크의 셋트를 포함하는 분산 RAID 시스템을 제공한다. 더욱 상세히는, 분산 RAID 시스템의 특정 실시예에서 각각의 데이터 뱅크는 연관된 저장 매체의 셋트를 가지며 유사한 분산 RAID 애플리케이션을 실행한다. 각각의 데이터 뱅크상의 분산 RAID 애플리케이션은 데이터 뱅크의 연관된 저장 매체에 저장된 데이터와 공동으로 RAID의 레벨의 구현과 연관된 데이터 흐름을 분산 및 제어하기 위해 그들간에 스스로 조정한다.
상세하게는, 소정 실시예에서, 연관된 RAID 레벨을 갖는 볼륨은 분산 RAID 시스템을 사용하여 생성될 수 있다. 각각의 분산 RAID 애플리케이션은 그 볼륨과 연관된 데이터 또는 그 볼륨과 공동으로 소망하는 RAID 레벨의 구현과 연관된 데이터가 분산 RAID 시스템의 다수의 데이터 뱅크에 저장될 수 있도록 그 볼륨의 데이터와 연관된 동작을 조정할 수 있다.
상기 데이터 뱅크의 각각에서 실행하는 유사한 분산 RAID 애플리케이션을 사용하여 다수의 데이터 뱅크상에 RAID의 구현과 연관된 데이터 및 볼륨의 데이터 양자 모두를 저장하는 것에 의해 볼륨과 공동으로 RAID 레벨의 구현을 조정함으로써, 다수의 이점이 달성될 수 있다. 즉, 상이한 RAID 레벨과 공동으로 구현된 하나 이상의 볼륨들로써, 상이한 저장 볼륨들이 할당될 수 있다. 더욱이, 데이터 뱅크에 걸쳐 RAID를 구현하는 것과 저장장치의 조정은 실질적으로 동일한 분산 RAID 애플리케이션을 사용하여 달성되므로, 대부분의 경우엔 표준 x86 기반 서버 및 저장 매체와 같은 표준 또는 규격품(off-the-shelf) 하드웨어가 이용될 수 있다. 다수의 기타 이점들도 여기에 제시된 실시예 또는 기타 실시예를 이용하여 실현될 수 있고, 특히 상세하게 지시되거나 지시되지 않은, 이점들은 본 발명을 읽은 후 실현될 것이다.
이제 도 1을 참조하면, 분산 RAID 시스템의 한 실시예를 이용하는 시스템에 대한 구조의 블록도가 나타나 있다. 분산 RAID 시스템(100)은 데이터 뱅크(110)의 셋트를 포함하는 데, 각각의 데이터 뱅크(110)는 스위치(120) 모두와 통신으로 연결된다. 각각의 스위치(120)는 또한 각각의 호스트(102)에 연결됨으로써, 호스트(102)는 특정한 데이터 뱅크(110)에 대응하는 경로의 셋트를 통해 각각의 데이터 뱅크(110)와 통신할 수 있고, 각각의 경로는 스위치(120) 중의 하나를 포함한다.
데이터 뱅크(110), 스위치(120) 및 스위치(120)간의 통신 연결은 이더넷, SCSI, iSCSI, 광섬유 채널, 직렬 접속 SCSI("SAS(serial attached SCSI))", "ATA(advanced technology attachment)", 시리얼 ATA("SATA(serial ATA)", 또는 당업계에 공지된 기타 프로토콜을 포함하는, 소망하는 대부분의 임의의 전송 매체(유선 또는 무선)를 사용하여 달성될 수 있다. 또한, 통신 연결은 인터넷, LAN, WAN, 무선 네트워크 또는 당업계에 공지된 임의의 기타 통신 네트워크와 같은 통신 네트워크와 공동으로 구현될 수 있다.
한 실시예에서, iSCSI, SCSI등과 같은 커맨드 프로토콜을 이용하여, 호스트(102)는 데이터를 조작하기 위해 데이터 뱅크(110)와 통신할 수 있다. 더욱 상세히는, 각각의 데이터 뱅크(110)는 (하기에 더욱 상세히 설명되는 바와 같이) 저장 매체를 포함한다. 집합적으로, 데이터 뱅크(110)내의 저장 매체는 가상화되어 하나 이상의 연속적인 저장 블록, 저장 디바이스등으로서 호스트(102)에 제공될 수 있다. 예를 들어, iSCSI 프로토콜이 이용되는 경우, 데이터 뱅크(110)내의 저장 매체는, 한 실시예에서, 다수의 포트를 갖춘, SCSI 타겟으로서 호스트(102)에 제공될 수있다.
따라서, 동작 동안, 한 실시예에서, 호스트(102)(또는 호스트(102)에 있거나 데이터 뱅크(110)와 상호작용하는 사용자)는 볼륨의 생성을 요청하고 그 볼륨과 공동으로 구현되어야 할 RAID의 레벨을 지정할 수 있다. 그 볼륨과 연관된 데이터 및 그 볼륨과 연관되어 소망하는 레벨의 RAID를 구현하는 것과 연관된 데이터는 데이터 뱅크(110)에 걸쳐 저장된다. 호스트(102)는 그러면 그 볼륨 또는 볼륨의 일부에 대응하는 논리적 주소를 이용하여 이 볼륨을 액세스할 수 있다. 이러한 방식으로, 호스트(102)는 생성된 저장 볼륨을 이용할 수 있고 오류 허용오차는 호스트(102)에게는 실질적으로 보이지 않게 상기 볼륨들과 공동으로 달성될 수 있다.
데이터 뱅크(110)를 이용하는 RAID의 구현 및 저장장치의 가상화는 분산 RAID를 구현하기 위해 동작할 수 있는 데이터 뱅크(110) 컴퓨터의 한 실시예에 대한 블록도를 나타내는 도 2A를 참조하여 더욱 잘 이해될 것이다. 여기서, 데이터 뱅크(110)는 데이터는 데이터 스토어(250), 및 명령어가 분산 RAID 애플리케이션(210)을 실행하도록 동작가능한, 컴퓨터로 판독가능한 매체에 저장된 명령어를 실행하도록 동작가능한 프로세서(202)를 포함한다. 분산 RAID 애플리케이션(210)은 해당 데이터 뱅크(110)가 오류상태에 있는 지의 여부를 결정하기 위해 다른 데이터 뱅크(110)상의 분산 RAID 애플리케이션(210)에 하트비트 통신을 주기적으로 발행할 수 있다. 분산 RAID 애플리케이션(210)이 또다른 데이터 뱅크(110)에 오류가 있는 것으로 결정한다면, 그 데이터 뱅크(110)에 대응하는 하나 이상의 오류 플래그를 셋트시킬 수 있다. 각각의 데이터 뱅크(110)상의 각각의 분산 RAID 애플리케이션(210)에 대해 상기 오류 플래그들을 사용하여, 특정한 분산 RAID 애플리케이션(210)은 특정한 데이터 뱅크(110)가 오류상태에 있는 지를 결정할 수 있다.
분산 RAID 애플리케이션(210)은 또한 예를 들어, SATA, PATA, FC등과 같은, 거의 모든 임의의 공지된 프로토콜에 따라 동작하는 디스크로서 각각의 디스크(252)가 동일 크기이거나 동일 크기가 아닐 수 있는, 하나 이상의 저장 매체를 포함하는 데이터 스토어(250)에 대한 액세스(예로서, 판독, 기록, 커맨드 발행등)권한을 가질 수 있다. 각각의 데이터 뱅크(110)상에서 실행하는, 분산 RAID 애플리케이션(210)은, 데이터 뱅크(110)에 걸쳐 데이터 스토어(250)를 사용하여 볼륨을 할당 및 사용할 수 있도록 하고 데이터 뱅크(110), 로컬 테이블(245)의 셋트 및 기록 캐쉬(260)-이들은 모두 메모리(230)(이것은 데이터 스토어(250) 또는 다른 메모리일 수 있음)에 저장될 수 있음-들간에 공유된 글로벌 테이블(245)의 셋트를 이용하여 상기 볼륨들과 공동으로 RAID를 구현할 수 있도록 할 수 있다.
도 2B는 분산 RAID를 구현하도록 동작할 수 있는 데이터 뱅크(110) 컴퓨터를 구현하는 데에 사용될 수 있는 하드웨어 구조의 한 실시예의 블록도를 나타낸다. 이 예시적인 구조에서, 데이터 뱅크(110)는 인텔 x86 구조 또는 임의의 기타 구조에 부가될 수 있는 하나 이상의 프로세서(202) 및, 버스를 통하여 I/O 제어기 허브(212)에 연결된 메모리를 포함하고, 이는 한 실시예에서 사우스브리지 칩등일 수 있다. I/O 제어기 허브(212)는 한편으로 PCI-X 버스, PCI-익스프레스 버스등과 같은 버스(272)에 연결될 수 있고 제어할 수 있다. 이 버스(272)에는 예를 들어, LSI(1068) SATA/SAS 제어기와 같은, 하나 이상의 디스크 제어기(262)가 연결된다. 이 디스크 제어기(262)의 각각은 하나 이상의 디스크(252)에 연결되는 데, 여기서 이 디스크(252)들은 집합적으로 데이터 스토어(250)를 구성한다. 또한, 하나 이상의 이 네트워크 인터페이스(282)들은 버스(272)에 연결될 수 있다. 하나 이상의 네트워크 인터페이스(282)는 마더보드에 포함될 수 있는 네트워크 인터페이스들(이더넷등과 같은)일 수 있고, 이더넷, 광섬유 채널등과 같은 하나 이상의 프로토콜을 통해 인터페이스하도록 구성된 하나 이상의 네트워크 인터페이스 카드를 포함할 수 있거나, 데이터 뱅크(110)가 네트워크 인터페이스(282)를 통하여 스위치(120)와 통신할 수 있도록 기타 유형의 네트워크 인터페이스일 수 있다.
이제 도 3을 참조하면, 데이터 뱅크(110)에 걸쳐 데이터 스토어(250)내의 볼륨들과 연관된 데이터의 레이아웃 및 볼륨의 할당을 위한 방법에 대한 실시예가 예시되어 있다. 맨처음에, 볼륨이 데이터 스토어(250)의 디스크(252)상에 할당되기 이전에, 디스크(252)는 단계(305)에서 포맷팅될 수 있다. 상기 설명한 바와 같이, 임의의 고장으로부터 용이하고 간단하게 복구할 능력을 갖기 위해선 중복(redundancy) 데이터는 임의의 대응하는 저장된 데이터에 대해 정확해야 할 필요가 있다. 대부분의 경우에, 이것은 볼륨을 저장하는 데에 이용된 디스크(252)가, 볼륨의 일부분이 저장되어야 할 디스크(252)상의 영역에 저장된 데이터가 현재 쓰레기값을 갖는 상태에 있는 경우에도, 상기 영역에 있는 현재 데이터로부터 중복 데이터를 계산함으로써 포맷팅되는 것을 수반할 수 있다. 이 계산은 바람직하지 못하게 상당한 양의 시간을 소비할 수 있다.
또한, 도 1에 대해 상세히 설명한 바와 같은 분산 RAID 환경에서, 기타 문제점들을 자체적으로 제시할 수 있다. 더욱 상세히는, 볼륨의 상이한 부분이 상이한 데이터 뱅크(110)에 저장되고 이 볼륨에 대응하는 중복 데이터도 여러 데이터 뱅크(110)에 저장될 수 있으므로, 상기한 유형의 포맷팅을 달성하는 것은 또한 데이터 뱅크(110)상의 분산 RAID 애플리케이션들간에 상당한 양의 통신을 필요로 하고, 이는 프로세서 사이클 및 통신 대역폭을 소모한다.
따라서, 한 실시예에서, 중복 데이터가, 볼륨의 데이터가 저장되는 디스크의 영역에 대응하는 중복 데이터가 상기 볼륨의 데이터가 저장되는 디스크(252)의 영역에 대해 정확성을 유지하도록 하기 위해, 제로 값이 상기 볼륨에 대응하는 데이터가 저장되는 디스크(252)의 영역 및 중복 데이터가 저장되는 디스크(252)의 영역에 기록될 수 있다. 볼륨의 데이터가 저장되는 디스크(252)의 영역 및 중복 데이터가 저장되는 디스크(252)의 영역 모두에 제로를 기록함으로써, 볼륨의 임의의 데이터가 그 대응하는 중복 데이터로부터 재생성될 수 있는 것이 보장될 수 있다.
제로가 기록되는 디스크(252)는 그 밖의 이점들을 가질 수 있다. 즉, 중복 데이터를 결정하기 위해 복잡한 계산이 수행될 필요가 없으며 볼륨이 저장되어야 하는 영역과 이들 영역에 대응하는 중복 데이터간의 상대적 정확성을 달성하기 위해 분산 RAID 애플리케이션(210)들간에 어떠한 통신도 필요로 되지 않을 수 있다.
중요한 것은, 볼륨에 사용하기 위해 디스크(252)의 소정 영역 및 그 대응하는 중복 데이터에 제로를 기록함으로써 RAID 시스템의 활용성에 있어서의 상당한 지연이 방지될 수 있다. 이러한 이점들은, 예를 들어, 분산 RAID 시스템(100)의 초기 사용, 새로운 디스크(252)의 초기화, 볼륨의 삭제등으로부터 초래되는, 디스크(252)의 비할당 영역을 동작 동안 연속적으로 제로를 기록하는 프로세스를 이용하여 달성될 수 있다. 이러한 경우에, 각각의 데이터 뱅크(110)상의 디스크(252)의 현재 비할당(즉, 현재 할당되지 않은) 영역은 제로가 기록되어 있을 수 있다(이하에선 "제로화(zeroing)" 영역으로 지칭함).
제로화된(zeroed) 디스크(252)의 비할당 영역은 볼륨의 일부분에 대응하는 커맨드 또는 볼륨의 일부분과 연관된 중복 데이터가 상기 부분이 할당된 데이터 뱅크(110)에서 수신되는 경우, 분산 RAID 애플리케이션(210)이 볼륨의 일부분이 할당되어 있는 데이터 뱅크(110)상의 디스크(252)의 대응 영역에 상기 볼륨의 일부분이 할당되었는 지를 결정하기 위해 검사할 수 있도록, 추적될 수 있다. 데이터 뱅크(110)상의 디스크(252)의 어떠한 대응 영역도 할당되지 않았으면, 분산 RAID 애플리케이션(210)은 제로화되어 있는 디스크(252)의 영역을 선택하고 디스크(252)의 이 영역을 볼륨의 상기 일부분 또는 대응하는 중복 데이터에 할당할 수 있다.
이전에 제로화되지 않은 임의의 비할당 영역을 동시에 제로화함으로써 그리고 볼륨의 일부분 또는 중복 데이터에 대응하는 커맨드가 디스크(252)의 제로화된 영역을 상기 볼륨의 일부분에 할당하기 위해 수신될 때 까지 대기함으로써, 분산 RAID 시스템(100)은 오랜 기간 수반되는 포맷팅 프로세스 없이 실질적으로 즉시 동작할 수 있고 새로운 디스크(252)가 부가될 수 있고 볼륨은 분산 RAID 시스템(100)의 동작에 대해 비교적 은밀하지만 효과적으로 삭제되거나 자유상태로 될 수 있다.
그러므로, 상기 설명을 읽은 후엔, 디스크(252)가 포맷팅되는 단계(305)는 분산 RAID 시스템(100)에 대해 볼륨을 생성하기 전, 생성 동안 또는 생성 후 달성될 수 있다는 것을 알 수 있고, 그리고 단계(305)(및 본원에서의 모든 흐름도의 그 밖의 모든 단계들)의 배치는 단계들에 대해 반드시 그러한 순서이어야 한다는 것이 아님을 알게 될 것이다. 도 3의 단계의 나머지 및 본원의 개시 내용의 나머지 부분들을 완전히 검토한 후엔, 볼륨이 생성될 수 있고 볼륨의 일부분 및 상기 볼륨에 대응하는 중복 데이터는 상기 데이터 뱅크(110)상의 디스크(252)의 물리적 영역이 볼륨의 일부분 또는 중복 데이터를 저장하기 위해 할당되기 전에 데이터 뱅크(110)에 할당될 수 있고, 또한, 상기 일부분에 대응하는 데이터를 저장하기 위해 사용되는 디스크(252)상의 물리적 영역의 제로화는 볼륨의 생성 전에 또는 볼륨의 생성 후 이면서 상기 물리적 영역이 볼륨 또는 중복 데이터의 대응하는 일부분에 할당되기 이전에 발생할 수 있다(하기에서 더욱 상세히 설명됨)는 것을 알게 될 것이다.
이 로케이션들은, 한 세그먼트가 2048개 논리 블록 주소(LBA)(또는 일부 기타 사이즈) 및 논리 블록 주소가 디스크(252)의 섹터 사이즈에 대응하는, 분산 RAID 애플리케이션(210)의 실시예에 의해 이용될 수 있는 세그먼트의 개념을 참조하여 더욱 양호하게 설명될 수 있다. 각각의 데이터 뱅크(110)상의 데이터 스토어(250)의 디스크(252)는 단계(310)에서 동일 크기의 세그먼트(예로서, 1MB)로 분할될 수 있다. 이 세그먼트들은 디스크 드라이브(252)의 하나 이상의 연속하는 데이터 블록에 대응할 수 있다. 그러므로, 단계(320)에서 사용자 또는 호스트(102)가 분산 RAID 애플리케이션(210)으로부터 볼륨의 생성을 요청하고 단계(330)에서 볼륨과 공동으로 사용될 RAID의 레벨을 지정하는 경우, 단계(340)에서 요청된 볼륨의 사이즈에 대응하는 세그먼트들의 수와 볼륨과 공동으로 소망하는 RAID의 레벨을 구현하기 위해 요망되는 세그먼트의 수를 더한 것이 볼륨에 할당될 수 있다.
따라서, 볼륨은 다수의 세그먼트(논리 세그먼트로도 지칭됨)를 포함하는 데, 여기서 이들 세그먼트의 각각은 데이터 뱅크(110)가 그 볼륨의 세그먼트를 관리하기 위해 할당될 수 있도록 특정한 데이터 뱅크(110)와 연관될 수 있다. 이 세그먼트는 예를 들어, 2048개 논리 블록 주소(LBA)들의 사이즈일 수 있는 데, 여기서 논리 블록 주소의 사이즈는 디스크(252)의 섹터 사이즈에 대응한다(기타 배열 및 사이즈도 가능하다). 대부분의 경우에, 볼륨의 상기 세그먼트를 포함하는 물리적 저장장치는 상기 세그먼트를 관리하는 데이터 뱅크(110)의 데이터 스토어(250)에 저장될 것이지만, 그 밖의 경우엔 상기 세그먼트에 대응하는 데이터는 상이한 데이터 뱅크(110)의 데이터 스토어(250)에 저장될 수 있다(다른 말로 하면, 특정한 경우엔 그 세그먼트를 관리하는 분산 RAID 애플리케이션을 포함하는 데이터 뱅크(110)에는 그 세그먼트에 대응하는 데이터를 저장하는 데이터 스토어(250)를 포함하는 데이터 뱅크(110)와 별개의 것일 수 있다).
한 실시예에서, 세그먼트를 특정 볼륨에 대응하는 데이터 뱅크(110)에 할당하는 것은 분산 RAID 시스템(100)에 대응하는 데이터 뱅크(110)의 셋트에 대한 무작위 순열을 결정함으로써 달성될 수 있다. 따라서, 6개 데이터 뱅크가 있다면 사이즈 6인 무작위 순열이 있고, 여기서 상기 무작위 순열은 세그먼트가 무작위 순열의 순서로 연속하여 각각의 데이터 뱅크에 할당될 수 있도록 결정될 수 있는 각각의 데이터 뱅크를 포함한다.
예를 들어, 분산 RAID 시스템에 4개의 데이터 뱅크(110)(데이터 뱅크 1, 데이터 뱅크 2등으로 지칭됨)가 있다고 가정하자. 데이터 뱅크 2, 데이터 뱅크 4, 데이터 뱅크 1 및 데이터 뱅크 3인 무작위 순열이 결정될 수 있다. 이 경우, 볼륨에 대응하는 제1 세그먼트는 데이터 뱅크2에 있고, 제2 세그먼트는 데이터 뱅크4에 있을 수 있고, 제3 세그먼트는 데이터 뱅크1에 있을 수 있고, 제4 세그먼트는 데이터 뱅크3에 있을 수 있고, 제5 세그먼트는 또다시 데이터 뱅크4에 있을 수 있다. 이러한 방식으로, 볼륨에 대응하는 특정 세그먼트의 위치는 볼륨에 대응하는 무작위 순열이 알려진다면 수학적으로 계산될 수 있다.
상기 설명한 바와 같이, 사용자는 단계(330)에서 RAID의 레벨이 볼륨과 공동으로 구현되어야 함을 명시할 수 있다. 이 경우, 분산 RAID 애플리케이션(210)은 볼륨과 공동으로 RAID의 구현에 대응하는 임의의 데이터가 소망하는 RAID의 레벨이 달성되는 것을 보장하기 위해 RAID 정보가 데이터 뱅크(110)에 걸쳐 적합하게 분산되도록 단계(350)에서 적합한 위치에 저장된다는 것을 보장할 수 있다.
예를 들어, 볼륨과 공동으로 RAID 5를 구현하는 것이 요망된다면, 분산 RAID 애플리케이션(210)은 소망하는 RAID 패리티 그룹 사이즈를 (예를 들어, 사용자 구성 RAID 셋트에 기초하여 또는 그렇지 않은 경우엔 결정된 것에 기초하여) 결정할 수 있다. 이 결정은 분산된 RAID 시스템에서 데이터 뱅크(110)의 수에 기초할 수 있고, 한 실시예에서, 데이터 뱅크(110)의 수(패리티 데이터인 것을 설명하기 위해선 추가적으로 1을 더함) 보단 1 작을 수 있다.
예시적으로 설명하기 위해, 볼륨(데이터 세그먼트들로 지칭됨)과 연관된 데이터를 저장하는 매 4개 세그먼트 마다에 대해, 5개의 데이터 뱅크(110)가 있다면, 한 세그먼트는 패리티에 전용될 것이고 4개 세그먼트에 대한 패리티는 계산되어 상기 패리티 세그먼트에 저장될 수 있고, 여기서 패리티 세그먼트는 그 데이터 스토어(250)가 패리티 세그먼트의 패리티 데이터를 계산하는 데에 이용된 데이터 세그먼트를 포함하지 않는 데이터 뱅크(110)에 전용되게 될 것이다.
이 시점에서, 논리 볼륨에 대응하는 각각의 세그먼트는 특정한 데이터 뱅크(110)에 할당되어 있고 볼륨에 대응하는 RAID 데이터를 저장하는데에 이용되는 임의의 세그먼트(100)(본원에서, 볼륨과 공동으로 임의 레벨의 RAID의 구현과 연관된 임의 유형의 중복 데이터를 저장하기 위해 세그먼트의 사용에 대한 일반적인 적용성을 손상하지 않고, 중복 세그먼트 또는 패리티 세그먼트로서 상호 교환하여 지칭될 수 있음)도 데이터 뱅크(110)에 할당되어 있지만, 데이터 뱅크의 데이터 스토어(250)의 디스크(252)의 물리적 섹터는 상기 세그먼트들에 대응하는 데이터를 저장하기 위해 아직 할당되어 있지 않다. 따라서, 단계(360)에서 볼륨의 논리 세그먼트가 할당되어 있는 데이터 뱅크(110)상의 디스크(252)의 물리적 세그먼트가 결정될 수 있고 논리 세그먼트에 할당될 수 있다. 이 세그먼트 매핑은 각각의 데이터 뱅크(110)의 논리 테이블(245)들에 저장될 수 있다. 이 할당은, 상기 설명한 바와 같이, 예를 들어, 커맨드가 먼저 논리 세그먼트를 기록하려고 맨처음 시도할 때, 소정의 나중 시점에 발생할 수 있다.
이 할당을 행할 때, 한 실시예에서 디스크(252)의 상이한 수행 특성의 영역은 액세스된 할 논리 세그먼트에 대해 처리될 수 있다. 다른 말로 하면, 디스크(252)는 동일 디스크의 다른 세그먼트들 보다 더욱 효율적으로 액세스되는 세그먼트를 가질 수 있다. 그러므로, 한 실시예에서 논리 세그먼트와 연관된 기준에 기초하여 디스크(252)의 물리적 세그먼트를 할당하는 것이 바람직할 수 있다. 이러한 특성은 예를 들어, 논리 세그먼트에 대응하는 볼륨과 연관된 서비스 지정 품질, 논리 세그먼트등을 포함하는 볼륨에 대한 액세스의 수와 같은 것들을 포함할 수 있다.
단계(370)에서, 볼륨에 대응하는 정보가 저장될 수 있고, 그 결과 볼륨에 대응하는 세그먼트의 위치, 또는 볼륨과 공동으로 RAID의 구현에 대응하는 세그먼트가 상기 저장된 정보로부터 결정될 수 있다. 이 저장된 정보(집합적으로 매핑 데이터로 지칭됨)는 그러므로 볼륨에 대한 식별, 볼륨에 대응하는 무작위 순열(예로서, 세그먼트가 위치되는 데이터 뱅크(110)의 순서를 지시함) 및 임의의 RAID 구현(예로서, 볼륨이 4+1 RAID 셋트, 7+1 RAID 셋트에 대응하고, RAID 1이 구현된다면, 등등)의 패리티 그룹 사이즈를 포함할 수 있다. 이 데이터는, 각각의 분산 RAID 애플리케이션(210)과 연관된 테이블(240)의 셋트의 적어도 일부분이 실질적으로 위치와 일관성을 유지하도록 보장하기 위해 상기 데이터가 다른 데이터 뱅크(110)상의 다른 분산 RAID 애플리케이션(210)에 전달될 수 있도록, 예를 들어, 글로벌 테이블(240)에 저장될 수 있다.
상기 설명은 5개 데이터 뱅크(110)를 갖춘 분산 RAID 시스템의 한 실시예를나타내는 도 4를 참조하여 더 잘 이해될 수 있다. 여기서, 각각의 데이터 뱅크(110)의 각각의 데이터 스토어(250)는 동일한 사이즈의 세그먼트(402)-이 예로 든 세그먼트의 사이즈는 1MB인 것으로 가정함-의 셋트로서 나타내었다. 이제, 호스트(102)는 데이터 뱅크(110b)상의 분산 RAID 애플리케이션(210b)으로부터 RAID 레벨 5를 갖춘 8MB의 볼륨을 요청한다고 가정한다. 이 경우에, 분산 RAID 애플리케이션(210b)은, 볼륨에 대한 소망하는 RAID 레벨의 구현과 공동으로 볼륨에 대한 중복 데이터를 저장하기 위해선 두 개의 세그먼트(402)가 필요로 될 수 있는 반면에 볼륨의 데이터부분에 대해선 8개 세그먼트(402)가 필요로 된다고 결정할 수 있다. 분산 RAID 애플리케이션(210b)은 그후 볼륨에 대한 무작위 순열을 결정할 수 있다. 이 예를 위해, 무작위 순열은: 데이터 뱅크(110b), 데이터 뱅크(110d), 데이터 뱅크(110a), 데이터 뱅크(110c), 데이터 뱅크(110e)인 것으로 가정한다. 따라서, 데이터 뱅크(110b)에는 요청된 볼륨의 제1 세그먼트인, 세그먼트(402a)가 할당될 수 있고, 데이터 뱅크(110d)에는 요청된 볼륨의 제2 세그먼트인, 세그먼트(402b)가 할당될 수 있고, 데이터 뱅크(110a)에는 요청된 볼륨의 제3 세그먼트인, 세그먼트(402c)가 할당될 수 있고, 데이터 뱅크(110c)에는 요청된 볼륨의 제4 세그먼트인, 세그먼트(402d)가 할당될 수 있고, 데이터 뱅크(110e)에는 요청된 볼륨의 제5 세그먼트인, 세그먼트(402e)가 할당될 수 있다. 이 할당은 그후 데이터 뱅크(110b)에 요청된 볼륨의 제6 세그먼트인, 세그먼트(402f)가 할당될 수 있도록, 데이터 뱅크(110d)에 요청된 볼륨의 제7 세그먼트인, 세그먼트(402g)가 할당될 수 있도록, 데이터 뱅크(110a)에 요청된 볼륨의 제8 세그먼트인, 세그먼트(402h)가 할당될 수 있도록 무작위 순서로 제1 데이터 뱅크(110)에 대해 다시 시작한다.
볼륨과 연관된 데이터를 저장하기 위한 데이터 세그먼트(402a-402h)가 할당되었으면, 분산 RAID 애플리케이션(210b)은 그 RAID 레벨의 구현과 연관된 임의 데이터에 대해 세그먼트(402)를 할당할 수 있다. 이 예에서, RAID 5가 볼륨에 대해 요망되므로, 분산 RAID 애플리케이션(210b)은 5개의 데이터 뱅크(110)가 이용될 수 있음에 따라 (4+1) 패리티 셋트가 요망된다고 결정할 수 있다. 분산 RAID 애플리케이션(210b)은 그후 8개 세그먼트(402)와 공동으로 RAID 5를 구현하도록 패리티를 저장하기 위해 추가의 2개 세그먼트(402)가 필요로 될 수 있다고 결정할 수 있다.
더욱이, 특정한 셋트의 데이터 세그먼트(402)를 이용하는 생성된 패리티는 데이터 스토어에서 임의의 데이터 세그먼트(402)의 셋트를 갖는 데이터 뱅크(110)에 저장되지 않도록 될 것이 요망될 수 있다. 따라서, 분산 RAID 애플리케이션(210b)도 각각의 패리티 세그먼트가 결정된 RAID 패리티 그룹 사이즈, 제1 데이터 세그먼트(402a)의 위치등에 기초하여 할당될 위치를 결정할 수 있다. 여기서, 데이터 세그먼트(402a, 402b, 402c, 402d)에 저장된 데이터에 대응하는 패리티 데이터를 저장할 패리티 세그먼트(402i)는 데이터 뱅크(110c)의 데이터 스토어(250c)에 할당될 것인 반면에 데이터 세그먼트(402e, 402f, 402g, 402h)에 저장된 데이터에 대응하는 패리티 데이터를 저장할 패리티 세그먼트(402j)는 데이터 뱅크(110e)의 데이터 스토어(250e)에 할당될 것이다. 여기서 데이터 세그먼트(402a-402h)를 포함하는 볼륨과 공동으로 RAID의 구현과 연관된 패리티 정보를 저장하게 될 패리티 세그먼트(402i,402j)는 볼륨과 연관된 데이터를 저장하는 세그먼트(402a-402h)들로서 레이아웃되고 이들과 실질적으로 동일한 사이즈의 세그먼트로됨을 주목해야 한다.
따라서, 호스트(102)가 볼륨을 액세스할 때, 볼륨의 제1 데이터 세그먼트에 대응하는 논리 주소를 이용한 요청은 데이터 뱅크(110b)상의 데이터 세그먼트(402a)에 대응할 수 있고, 볼륨의 제2 데이터 세그먼트에 대응하는 논리 주소를 이용한 요청은 데이터 뱅크(110d)상의 데이터 세그먼트(402b)에 대응할 수 있다. 여기서, 할당된 데이터 세그먼트(402a-402h)들은 상이한 데이터 뱅크(110)에 상주할 수 있고 임의의 할당된 데이터 세그먼트(402a-402h)들의 위치는 그 볼륨과 연관된 무작위 순열을 이용하여 결정(예로서, 데이터 뱅크(110)에서 글로벌 테이블(240)에 저장된 바와 같이)될 수 있음을 주목해야 한다. 상기 설명한 바와 같이, 그러나, 데이터 뱅크(110)상의 데이터 스토어(250)는 가상화되어 있으므로, 요청하는 호스트는 데이터 스토어(250)내에서의 데이터 세그먼트(402)의 위치, 다수의 데이터 스토어(250)가 존재하는 것, 데이터 스토어(250)가 다수의 데이터 뱅크(110)에 걸쳐 확장되는 것을 알지 못할 수 있다. 호스트(102)는 단일한 연속 볼륨을 주소지정하는 것으로 여진다.
이 예에서 데이터 뱅크(110)상의 데이터 세그먼트(402)의 위치(및 데이터 뱅크(110)의 대응하는 무작위 순열)은 예시적인 것으로 설명되었으며 볼륨의 데이터 세그먼트(402)는 거의 모든 임의의 무작위, 또는 그 밖의 순열에 따라 임의의 데이터 뱅크(110)상의 임의의 데이터 스토어(250)에 위치될 수 있다는 것이 분명히 이해될 것이다. 더욱이, 각각의 세그먼트(402)는 이 예에선 1MB이지만, 이 세그먼트들은 일반성을 잃지 않고 임의의 사이즈일 수 있으며 1MB 사이즈는 단지 예시적인 목적으로 선택한 사이즈임을 알아야 한다.
상기 설명으로부터 알 수 있는 바와 같이, 특정한 데이터 세그먼트(402) 또는 패리티 세그먼트(402)의 위치는 볼륨 및 RAID 패리티 그룹 사이즈와 연관된 무작위 순열을 이용하여 알고리즘 방식(예를 들어, 볼륨에 대해 세그먼트를 할당하는 데에 사용되는 동일한 무작위 순열을 이용하여, 그 볼륨에 대한 패리티 세그먼트를 찾음)으로 결정될 수 있다. 따라서, 정보는 볼륨에 대응하는 식별과 공동으로, 예를 들어, 글로벌 테이블(240)의 셋트에, 저장될 수 있다. 더욱이, 이 글로벌 테이블(240)들은 데이터 뱅크(110)들간에 통신될 수 있거나, 그렇지 않으면, 갱신될 수 있어서, 각각의 데이터 뱅크(110)내의 글로벌 테이블(240)의 셋트의 적어도 일부분은 실질적으로 일관성있게 유지될 수 있다.
분산 RAID 애플리케이션(210)과 연관된 글로벌 테이블(240)에 관해 더욱 상세하게 간명하게 탐구하는 것이 유익할 수 있을 것이다. 상기 설명한 바와 같이, 한 실시예에서, 글로벌 테이블(240)은 분산 RAID 애플리케이션(210)에 의해 생성된 볼륨과 연관된 정보를 저장할 수 있는 데, 여기서 상기 글로벌 테이블(240)들은 그 볼륨내의 데이터 세그먼트와 연관된 데이터 뱅크(110)를 결정하는 데에 사용될 수 있거나 그 볼륨에 대응하는 데이터 세그먼트와 연관된 패리티 세그먼트가 위치될 수 있다. 글로벌 테이블(240)은 그러므로 한 셋트의 테이블을 포함할 수 있고, 각각의 테이블은 데이터 뱅크(110)에 대해 구현된 볼륨에 대응한다. 특히, 이 테이블(240)들 중 하나는 데이터 뱅크(110)의 데이터 스토어(250)가 볼륨의 특정 세그먼트를 포함하는 그 데이터 뱅크(110)를 식별하는데에 사용될 수 있는 데이터를 포함할 수 있다. 상세하게는, 이 테이블은 볼륨과 연관된 논리 주소를 이 논리 주소에 대응하는 세그먼트가 저장되는 데이터 뱅크(110)에 상관시키는데 에 사용될 수 있다.
도 5는 상기 유형의 테이블에 대한 한 실시예를 그래픽으로 나타낸 도면으로서, 각각의 볼륨은 연관된 테이블의 연관된 인스턴스를 가질 수 있다. 테이블(550)은 LV 번호(504), 세그먼트 사이즈(508), 세그먼트 카운트(512), 서비스 품질(QoS;Quality of Service)(514), 범위 카운트(518)에 대한 엔트리들, 제1범위(524a) 및 제2 범위(524b)로 표현된 범위 엔트리들에 대한 정보 및 임의 추가적인 범위 엔트리들(524n)에 대한 정보를 포함한다.
LV 번호(504)는 특정 볼륨을 식별하기 위해 사용되는 고유 번호이고, 세그먼트 사이즈(508)는 볼륨을 구현하는 데에 사용되는 세그먼트의 사이즈에 대응하고, 세그먼트 카운트(512)는 논리 볼륨에 대응하는 세그먼트의 수(예로서, 데이터 세그먼트의 수 및 중복 세그먼트의 수, 단지 데이터 세그먼트만의 수 등)에 대응하고, QoS(514)는 볼륨에 대해 구현될 것이 요망되는 서비스의 품질을 지시하고(이 QoS 지시자는 데이터 뱅크(110)에 저장된 다른 볼륨에 대한 상기 볼륨에 주어진 우선순위를 지시할 수 있음을 알아야 한다) 그리고 범위 카운트(518)는 볼륨과 연관된 범위의 수를 지시하는 반면에, 범위 엔트리들은 각각 이들 범위 중의 하나에 대응한다.
범위는 특정한 데이터 뱅크(110) 순서 및 RAID 구현에 대응할 수 있다. 다수의 범위는 여러 이유로 범위를 구현하는데에 이용될 수 있다. 상세하게는, 예를 들어, 다수의 범위는 볼륨과 공동으로 이용될 수 있는 데 이는 상이한 데이터 뱅크(110)에 있는 상이한 데이터 스토어(250)는 사용할 수 있는 데이터 스토어(250)내의 상이한 저장 장소의 크기를 가질 수 있기 때문이다. 이것은, 예를 들어, 볼륨의 제1 범위에 대해 모든 데이터 뱅크(110)가 제1 RAID 구현과 공동으로 이용될 수 있는 반면에 볼륨의 제2 범위에선 상기 모든 데이터 뱅크(110) 보다 적은 데이터 뱅크들이 제2 RAID 구현과 공동으로 이용될 수 있다(여기서 제1 및 제2 RAID 구현은 사실상, 서로 상이한 레벨일 수 있다). 이들 범위의 각각은 그러므로 사용할 수 있는 상이한 수의 데이터 뱅크(110), 상이한 유형의 RAID 등을 갖는, 상이한 데이터 뱅크(110) 순서들(예로서, 무작위 순열 등)에 따라 레이아웃될 수 있다.
구체적인 예를 이용하여 예시하기 위해, 도 4를 간단히 다시 참조한다. RAID 레벨 5를 지닌 8MB의 볼륨이 도시된 바와 같이 레이아웃되어 있다고 가정하는 데, 여기서, 데이터 세그먼트들은 데이터 뱅크(110b), 데이터 뱅크(110d), 데이터 뱅크(110a), 데이터 뱅크(110c) 및 데이터 뱅크(110e)인 순서에 따라 레이아웃되고 RAID 5는 패리티 세그먼트가 데이터 뱅크(110c)의 데이터 스토어(250c) 및 데이터 뱅크(110e)의 데이터 스토어(250e)에 할당되는 것이 요망될 수 있는 (4+1) 패리티 셋트를 이용하는 볼륨과 공동으로 구현된다.
이제 추가의 3MB를 상기 볼륨에 추가하는 것이 요청된다고 가정한다. 그러나, 이 경우에, 데이터 뱅크(110e), 데이터 뱅크(110c) 및 데이터 뱅크(110d)의 데이터 스토어(250)는 더 이상 여유가 없다고 가정한다. 따라서, 이 경우에, 해결책은 데이터 스토어(250)에 남은 저장장소를 갖고 있는 데이터 뱅크(110a)와 데이터 뱅크(110b)간에 추가의 요망되는 3MB를 할당하는 것일 수 있다. 더욱이, 단지 두 개의 데이터 뱅크(110)만이 사용을 위해 이용할 수 있으므로 볼륨의 제1의 8MB로써 이용될 수 있는 RAID 5 대신에 RAID 레벨 1을 이용할 수 있을 뿐이다. 따라서, 이 경우에, 볼륨의 제1의 8MB는 제1 범위에 대응하고, 제1 셋트의 값을 지닌 볼륨에 대응하는 제1 범위 엔트리를 테이블에 갖는 반면에, 볼륨의 다음 3MB는 제2 범위에 대응하고, 제2 셋트의 값을 지닌 볼륨에 대응하는 제2 범위 엔트리를 가질 수 있다. 본원을 읽은 후엔 분명히 알 수 있는 바와 같이, 이러한 유형의 발생은 일정한 빈도로 나타날 수 있다.
도 5를 참조하면, 이러한 유형의 상황을 타개하기 위해, 볼륨의 각각의 범위는 그 특정한 범위내의 세그먼트의 위치가 그 범위에 대응하는 범위 엔트리로부터 결정될 수 있도록 엔트리를 테이블(550)에 가질 수 있다. 테이블(550)에 대응하는볼륨의 각각의 범위에 대한 엔트리(524)는 범위 카운트(518)와 연관된다. 한 실시예에서, 범위 카운트(518)는 범위 엔트리(524)들의 수가 범위 카운트(518)에 대응하도록 볼륨의 범위의 수에 대응할 수 있다. 반면에, 범위 엔트리(524a) 및 범위 엔트리(524b)가 나타나 있지만, 테이블(550)내의 범위 엔트리(524)들의 수는 그 테이블이 대응하는 볼륨에 대응하는 범위의 수에 좌우될 것이라는 것을 알아야 한다. 따라서, 하나의 볼륨이 세 개의 범위로 분할된다면, 테이블(550)에 대응하는 각각의 볼륨의 범위에 대한 정보를 포함하는 범위 엔트리(524)가 있도록 세 개의 범위 엔트리(524)가 테이블(550)에 있게 될 것이다.
범위 엔트리(524)에 대한 정보들로는 타입(526), 시작(530), 끝(534), 네트워크 RAID(538), 네트워크 RAID 사이즈(542), 디스크 RAID(546), 디스크 RAID 사이즈(550), 데이터뱅크 카운트(554), 데이터뱅크 순서(558) 및 범위(524)와 연관된 세그먼트를 저장하는 데에 사용되는 각각의 데이터 뱅크에 대응하는 디스크 카운트(562) 및 디스크 순서(566)(다른 말로 하면, 그 범위 엔트리(524)의 데이터뱅크 카운트(554)와 등가인 디스크 카운트(562) 및 디스크 순서(566)가 있을 것임)들이 포함된다. 타입(526)은 범위 엔트리(524)에 대한 정보에 대응하는 범위의 타입: 예를 들어, 정상, 소스(SRC), 목적지(DST) 또는 기타 범위 타입을 기술한다. 시작(530)은 범위 엔트리(524)에 대응하는 볼륨의 범위의 첫 번째 논리 세그먼트 주소이다. 끝(534)은 범위 엔트리(524)에 대응하는 볼륨의 범위에 대한 정보에 대응하는 범위의 마지막 논리 세그먼트 주소이다. 다른 구성도 또한 가능하며, 예를 들어 끝(524)은 범위 내의 세그먼트 또는 블록들의 최대 갯수인 카운트일 수 있다.
데이터뱅크 카운트(554)는 범위 엔트리에 대응하는 범위가 상주하는 데이터 뱅크(110)의 수에 대응할 수 있고, 데이터 뱅크 순서(558)는 그 범위내의 세그먼트가 데이터 뱅크(110)에 할당되었던 순서일 수 있고, 한편 네트워크 RAID(538), 네트워크 RAID 사이즈(542), 디스크 RAID(546), 디스크 RAID 사이즈(550)는 범위 엔트리(524)에 대응하는 볼륨의 범위와 공동으로 구현된 RAID의 타입에 대응할 수 있다.
네트워크 RAID(538)는 테이블(550)에 대응하는 볼륨과 연관되어 구현되는 RAID의 타입, 예를 들어, RAID 0, RAID 1, 또는 RAID 5 또는 기타 RAID 타입이다. 네트워크 RAID 사이즈(542)는 범위에서 사용된 RAID 타입의 패리티 그룹 사이즈이다. 네트워크 RAID 사이즈(542)는 범위(524)에 대한 정보에 대응하는 범위내의 데이터뱅크의 수와 같거나 이보다 적은 범위에서의 데이터 뱅크(110)의 수로 제한될 수 있다. 디스크 RAID(546)는 범위에서 데이터 뱅크내의 디스크에 걸쳐 구현되는 RAID의 유형이다. 디스크 RAID 사이즈(552)는 각각의 데이터 뱅크(110)의 데이터 스토어(250)내의 디스크(252)에 걸쳐 사용되는 RAID 타입의 패리티 그룹 사이즈일 수 있고 데이터 뱅크내의 디스크의 수와 같거나 이보다 적은 범위의 디스크의 수로 제한될 수 있다. 실시예에서, 범위에서 데이터뱅크(110)내의 디스크에 걸친 RAID는 선택적인 것이고 사용될 수 있거나 사용되지 않을 수 있다. 이러한 실시예에서, 디스크 RAID(546), 디스크 RAID 사이즈(550) 또는 이들 양자 모두는 사용되지 않을 수 있거나 생략될 수 있다.
데이터뱅크 카운트(554)는 범위내의 데이터뱅크의 수이고 데이터뱅크 순서(558)는 범위내에서 데이터 뱅크(110)에 걸쳐 RAID가 구현되는(예로서, 스트라이프되는) 순서이다. 예를 들어, 데이터 뱅크(110)는 특정한 순서로 저장된 볼륨의 논리 주소에 대응하는 데이터를 가질 수 있고 데이터뱅크 순서(558)는 이 순서에 대응한다. 디스크 카운트(562)는 범위의 데이터 뱅크(110)내의 디스크의 수이고 디스크 순서(566)는 특정한 데이터 뱅크(110)의 디스크에 걸쳐 RAID가 구현되는 순서이다. 예를 들어, 디스크(252)는 특정한 순서로 저장된 세그먼트를 가질 수 있고 디스크 순서(558)는 세그먼트가 데이터 뱅크(110)내의 디스크(252)에 걸쳐 저장된 순서이다. 따라서, 범위 엔트리(524)와 연관된 범위의 세그먼트를 저장하는데에 사용되는 각각의 데이터 뱅크(110)에 대해, 대응하는 디스크 카운트(562) 및 디스크 순서(566)가 있을 것이다(다른 말로 하면, 디스크 카운트(562)의 수 및 디스크 순서(566)는 한 실시예에서, 그 범위 엔트리(524)의 데이터뱅크 카운트(554)와 등가일 것이다). 실시예에서, 데이터 뱅크(110)내의 디스크(252)에 걸친 RAID는 선택사항이고 사용되지 않을 수도 있다. 테이블(550)은 특정하게 설명되었지만, 이와 같은 특정한 설명은 예시적인 것으로서 제한적인 의미로 설명한 것이 아니며 다른 형태의 테이블(550)도 이용될 수 있다. 예를 들어, 가상 테이블이 테이블(550) 대신 이용될 수 있고 각각의 논리 주소에 대응하는 데이터 뱅크(110) 및 세그먼트(402)를 명시적으로 나열할 수 있다.
따라서, 상기 설명한 바와 같이, 테이블(550)내의 정보는 논리 주소(커맨드로 또는 기타 임의의 컨텍스트로 호스트(102)에 의해 참조됨)에 대응하는 데이터 세그먼트(402)를 포함하는 데이터 뱅크(110)를 식별하는 데에 사용될 수 있다. 예를 들어, 세그먼트(402)의 크기를 아는 것, 시작(530), 끝(534), 상기 주소 등에 대응하는 범위 엔트리(524), 볼륨의 논리 주소에 대응하는 특정한 데이터 뱅크(110)를 사용하는 것이 결정될 수 있다.
테이블(240)의 하나 이상의 부분들이 모든 데이터 뱅크(110)에 걸쳐 동일할 수 있고 상기 설명한 바와 같이 하나 이상의 데이터 뱅크(110)에 걸치는 하나 이상의 논리 볼륨을 기술하는 한편, 데이터 뱅크(110)상의 기타 테이블(245)들은 대응하는 데이터 뱅크(110)에 개별적일 수 있다(예로서, 테이블(245)은 대응하는 분산 RAID 애플리케이션(210)이 실행되는 데이터 뱅크(110)에 고유할 수 있다). 이 테이블(245)은 대응하는 데이터 뱅크(110)의 데이터 스토어(250)에 포함된 각각의 디스크(252)에 속하는 데이터를 포함할 수 있고 데이터 스토어(250)의 디스크(252)에 또는 디스크들에, 예로서, 데이터 뱅크(110)에 할당된 세그먼트(402)가 데이터 스토어(250)에 위치되는 디스크(252)의 섹터에 저장되는 정보를 포함할 수 있다.
도 6에 상기 유형의 테이블에 대한 한 실시예가 그래픽으로 표현되어 있다. 테이블(660)은 특정한 데이터 뱅크(110)에 저장될 수 있고 다수의 디스크 테이블(670)을 포함하는 데, 각각의 디스크(252) 테이블(670)은 그 디스크(252) 뱅크(110)내의 데이터 스토어(250)의 디스크(252)에 대응하고 그 디스크내 저장된 세그먼트의 위치를 나열한다. 더욱 상세히는, 대부분의 경우에 디스크(252)는 물리적 섹터들로 분할되고, 각각의 물리적 섹터는 대응하는 주소 또는 주소 범위를 갖는다.
디스크 테이블(670)은 볼륨의 세그먼트가 저장되는 데이터 뱅크(110)의 디스크(252)의 섹터의 위치를 결정하는데에 사용될 수 있는 매핑 테이블일 수 있다. 따라서, 테이블(670)을 이용하여 볼륨의 세그먼트에 대응하는 디스크(252)상의 섹터의 주소가 결정될 수 있다. 더욱이, 테이블은 디스크의 섹터 또는 세그먼트에 대응하는 엔트리 마다 하나 이상의 플래그 또는 설명 비트를 포함할 수 있고, 이 플래그 또는 설명 비트는 상기 섹터 또는 상기 섹터에 저장된 세그먼트를 기술한다.
이제 도 7을 참조하면, 디스크 테이블(670)의 한 실시예가 그래픽으로 표현되어 있다. 디스크 테이블(670)은 다수의 엔트리를 갖는데, 각각의 엔트리는 디스크 테이블(670)의 엔트리가 디스크(252)의 물리적 세그먼트를 기술하도록 대응하는 디스크의 물리적 세그먼트에 대응한다. 디스크 테이블(670)내의 각각의 엔트리도 대응하는 섹터에 저장된 볼륨의 세그먼트 또는 물리적 세그먼트를 기술하는 하나 이상의 플래그 또는 설명 비트를 포함할 수 있다. 더욱 상세히는, 도 7에서 알 수 있는 바와 같이, 한 실시예에서, 디스크 테이블(670)내의 엔트리는 논리 볼륨(LV) 번호, 논리 세그먼트 번호, 주소 공간 및 섹터 상태를 위한 필드를 포함한다. LV 번호는 그 물리적 세그먼트에 저장된 데이터가 대응하는 논리 볼륨을 식별한다. 논리 세그먼트 번호는 그 데이터에 대응하는 논리 볼륨의 세그먼트를 식별한다. 주소 공간은 '데이터' 또는 '중복'으로서 저장된 세그먼트를 식별한다. '데이터'의 값은 데이터가 엔트리에 의해 표현된 섹터에 저장되어 있다는 것을 지시하는 반면에, '중복'의 값은 섹터에 저장된 정보가 RAID 데이터 보호를 위해 사용될 수 있고, RAID 레벨에 따라, 중복 데이터, 미러링된 데이터 또는 패리티 정보일 수 있음을 지시한다. 섹터 상태는 세그먼트의 상태를 '할당됨', '제로화됨' 또는 '더티 상태'인 것으로서 지시한다. '할당됨'은 세그먼트가 할당되어 있고 유효한 데이터를 포함할 수 있음을 지시한다. '제로화됨'은 세그먼트에 제로를 기록함으로써 그 세그먼트가 제로화되었음을 지시한다. '더티 상태'는 세그먼트가, 예로서 제로화되지 않았거나 할당되지 않았기 때문에, 사용불가능하거나 바람직하지 않은 값들인 가비지를 포함할 수 있고, 무작위 비트 또는 데이터를 저장할 수 있는, 세그먼트를 지시한다. 한 실시예에서, 예를 들어, 새로운 디스크에 대해 디스크의 모든 세그먼트는 새로운 또는 새롭게 추가된 디스크에 대응하는 디스크 테이블에서 더티 상태인 것으로서 표시될 수 있다.
테이블에 대한 상기 설명을 읽은 후엔, 분산 RAID 애플리케이션(210)은, 볼륨에 대응하는 데이터 뱅크(110) 세그먼트(데이터 또는 중복 세그먼트)가 위치되는, 볼륨의 논리 주소에 대응하는 세그먼트를 결정하기 위해, 그리고 볼륨의 세그먼트와 연관된 RAID 데이터(패리티 데이터, 미러 데이터, 기타 유형의 중복 데이터)가 위치되어 있는, 볼륨의 논리 주소에 대응하는 볼륨의 세그먼트를 결정하기 위해 글로벌 테이블(240)을 이용할 수 있음을 분명히 알 수 있고, 특정한 데이터 뱅크(110)상의 디스크(252)는 한 세그먼트 또는 볼륨들, 세그먼트들, 또는 특정 데 뱅크(110)에 대응하는 디스크에 관한 기타 정보를 포함하거나, 볼륨들, 세그먼트(402)들, 데이터 뱅크(110), RAID 데이터등에 관한 정보에 관한 기타 정보를 포함한다.
마찬가지로, 각각의 개별 데이터 뱅크(110)상의 분산 RAID 애플리케이션(210)은 특정한 세그먼트가 위치되는 그 데이터 뱅크(110)상의 장소(디스크(252)의 섹터등) 또는 그 특정한 데이터 뱅크(110)에 대응하는 디스크(252)들, 세그먼트들 또는 볼륨들에 관한 기타 정보를 결정하기 위해 그 데이터 뱅크(110)상에서 로컬 테이블(245)을 이용할 수 있다.
데이터 뱅크(110)와 각각의 개별 데이터 뱅크(110)에 대응하는 로컬 테이블(245)간에 공유되는 글로벌 테이블(240)의 조합을 이용하면, 특정 동작들이 서로 협력하여 데이터 뱅크(110)상에서 분산 RAID 애플리케이션(210)에 의해 수행될 수 있다. 이러한 유형의 동작들은 하기에 더욱 상세히 설명된다. 상세하게는, RAID 레벨 5가 볼륨과 공동으로 구현되는, 볼륨상에서 판독(READ) 커맨드 및 기록(WRITE) 커맨드를 구현하는 한 실시예가 예시적인 분산 RAID 시스템에 대해 상기 커맨드들의 견고한 구현예가 뒤따르는 설명에 의해 더욱 상세히 설명될 것이다. 본 발명에 대한 완전한 검토 후에 기타 유형의 실시예, 커맨드, RAID 레벨등이 구현되는 방법을 알게 될 것이다.
먼저 도 8을 참조하면, 분산 RAID 시스템에서 READ 커맨드를 구현하는 방법의 한 실시예의 흐름도가 설명되어 있다. 이 READ 커맨드는 호스트(120)에 의해 스위치(120)를 통해 데이터 뱅크(110)에 전송될 수 있거나 한 데이터 뱅크(110)로부터 다른 데이터 뱅크(110)로 전송될 수 있다. 특정 실시예에서, 호스트(120)는 READ 커맨드가 커맨드를 발행하는 호스트(120)와 적합한 데이터 뱅크(110)간의 경로를 따라 커맨드를 발행하는 호스트(120)로부터 적합한 데이터 뱅크(110)로 라우팅될 수 있도록 하나 이상의 애플리케이션 및 연관된 라우팅 정보를 포함할 수 있다. 다른 경우엔, 그러나, 어떠한 애플리케이션 또는 라우팅 정보도 호스트(120)에 제공되지 않을 수 있고 따라서 호스트(120)로부터 발행된 READ 커맨드는 임의의 데이터 뱅크(110)에 라우팅될 수 있다. 후자의 경우가 본 실시예에 설명될 것이다. 이 실시예에 대한 설명을 검토한 후, 그러나, 당업자는 전자의 경우에도 적용될 수 있는 단계들을 알게 될 것이다.
단계(810)에서, READ 커맨드가 데이터 뱅크(110)에서 수신된다. 데이터 뱅크(110)상의 분산 RAID 애플리케이션(210)은, 단계(820)에서, 수신된 READ 커맨드에서 참조되는 논리 주소에 대응하는 볼륨의 세그먼트 및 단계(830)에서 볼륨의 세그먼트가 저장되는 데이터 뱅크(110)를 결정한다. 상기 설명한 바와 같이, 이 정보는 분산 RAID 애플리케이션(210)과 연관된 글로벌 테이블(240)을 이용하여 결정될 수 있다. 세그먼트를 저장하는 데이터 뱅크(110)가 READ 커맨드를 수신한 데이터 뱅크(110)와 동일하다면(단계(832)에서 결정되는 바와 같이), 요청된 데이터는 단계(840)에서 수신 데이터 뱅크(110)상의 데이터 스토어(250)의 적합한 디스크(252)로부터 및 단계(850)에서 응답된 READ 커맨드로부터 획득된다. 상기 설명한 바와 같이, 세그먼트가 저장된 데이터 뱅크(110)의 데이터 스토어(250)의 특정 디스크(252)는 글로벌 테이블(240)을 이용하여 결정될 수 있는 반면에 세그먼트에 대응하는 데이터가 저장되어 있는 그 디스크(252)상의 위치는 볼륨의 세그먼트를 디스크(252)상의 물리적 위치에 매핑하는 데에 이용되는 로컬 테이블(245)을 이용하여 결정될 수 있다. 수신 데이터 뱅크(110)가 호스트(102)로부터 READ 커맨드를 수신하면, 호스트(102)는 응답될 수 있는 반면에 수신 데이터 뱅크(110)가 다른 데이터 뱅크(110)로부터 READ 커맨드를 수신하면, 응답은 READ 커맨드를 발행한 데이터 뱅크(110)상의 분산 RAID 애플리케이션(210)에 전송될 수 있다.
그러나, 세그먼트가 원격 데이터 뱅크(110)(커맨드를 수신한 데이터 뱅크가 아닌 데이터 뱅크(110))에 저장되어 있으면 단계(860)에서 READ 커맨드는 원격 데이터 뱅크(110)에 있는 분산 RAID 애플리케이션(210)에 전송될 수 있다. 한 실시예에서, 이 READ 커맨드는 분산 RAID 애플리케이션(210)에 의해 이용되는 커맨드 포맷을 이용하여 원격 데이터 뱅크(110)에 있는 분산 RAID 애플리케이션(210)에 통신될 수 있다. 이 커맨드는, 최초 READ 커맨드의 관련 정보를 제공하는 동안 그 READ 커맨드를 최초로 수신한 데이터 뱅크(110)에 READ 커맨드의 결과를 회신하도록, 또는 다른 기능을 수행하도록 분산 RAID 애플리케이션에 명령할 수도 있다. 따라서, 단계(870)에서 READ 커맨드가 원격 데이터 뱅크(110)에 전송된 후, 요청된 데이터를 포함하는 응답은 원격 데이터 뱅크(110)로부터 수신될 수 있고 단계(880)에서 수신된 READ 커맨드는 그 응답에 수신된 데이터를 이용하여 응답한다.
이제 도 9A 및 도 9B를 참조하면, 분산 RAID 시스템에서 WRITE 커맨드를 구현하는 방법의 한 실시예의 흐름도가 설명되어 있다. 이 WRITE 커맨드는 호스트(120)에 의해 스위치(120)를 통해 데이터 뱅크(110)에 전송될 수 있거나 한 데이터 뱅크(110)로부터 다른 데이터 뱅크(110)로 전송될 수 있다. 특정 실시예에서, 호스트(120)는 WRITE 커맨드가 커맨드를 발행하는 호스트(120)와 적합한 데이터 뱅크(110)간의 경로를 따라 커맨드를 발행하는 호스트(120)로부터 적합한 데이터 뱅크(110)로 라우팅될 수 있도록 하나 이상의 애플리케이션 및 연관된 라우팅 정보를 포함할 수 있다. 다른 경우엔, 그러나, 어떠한 애플리케이션 또는 라우팅 정보도 호스트(120)에 제공되지 않을 수 있고 따라서 호스트(120)로부터 발행된 WRITE 커맨드는 임의의 데이터 뱅크(110)에 라우팅될 수 있다. 후자의 경우가 본 실시예에 설명될 것이다. 이 실시예에 대한 설명을 검토한 후, 그러나, 당업자는 전자의 경우에 적용될 수 있는 단계들을 알게 될 것이다.
단계(910)에서, WRITE 커맨드가 수신 데이터 뱅크(110)에서 수신된다. 수신 데이터 뱅크(110)상의 분산 RAID 애플리케이션(210)은, 단계(920, 930 및 940)에서, WRITE 커맨드에 의해 참조되는 논리 주소에 대응하는 볼륨의 세그먼트, 그 세그먼트의 위치(예로서, 그 세그먼트에 대응하는 데이터를 저장하는 데이터 뱅크(110)) 및 그 세그먼트에 대응하는 패리티의 위치(예로서, 그 세그먼트에 대응하는 데이터로부터 생성된 패리티 데이터가 저장되는 세그먼트를 저장하는 데이터 뱅크(110))를 결정한다. 상기 설명한 바와 같이, 데이터 세그먼트 및 패리티 세그먼트 양자 모두의 위치는 수신 데이터 뱅크(110)에 저장된 글로벌 테이블(240)을 이용하여 결정될 수 있다.
데이터 세그먼트(데이터를 저장하고 있는) 및 중복 세그먼트(다른 말로 하면, 패리티 또는 기타 유형의 중복 데이터가 데이터 세그먼트로부터 생성되는) 모두가 수신 데이터 뱅크(110)에 저장되어 있지 않다면(단계 950 및 960에서 결정된 바와 같이), WRITE 커맨드는 단계(964)에서 데이터 세그먼트가 저장되는 원격 데이터 뱅크(110)상의 분산 RAID 애플리케이션(210)에 통신될 수 있고, 단계(966)에서 패리티 세그먼트가 저장되는 원격 패리티 데이터 뱅크(110)상의 분산 RAID 애플리케이션(210)에 통신될 수 있다. 한 실시예에서, 이 WRITE 커맨드는 분산 RAID 애플리케이션(210)에 의해 이용된 커맨드 포맷을 이용하여 원격 패리티 데이터 뱅크(110) 및 원격 데이터 뱅크(110)에 있는 분산 RAID 애플리케이션(210)에 통신될 수 있다. 이 커맨드는, 최초 WRITE 커맨드의 관련 정보를 제공하는 동안 다른 소망하는 기능을 수행하도록 분산 RAID 애플리케이션(210)에 명령할 수도 있다.
따라서, WRITE 커맨드가 원격 데이터 뱅크(110)에 전송된 후, 단계(968 및 970)에서 원격 패리티 데이터 뱅크 완료 통지가 원격 데이터 뱅크(110) 및 원격 패리티 데이터 뱅크(110)상의 분산 RAID 애플리케이션(210)으로부터 수신될 수 있다. 이들 수신확인 응답이 수신되면, WRITE 커맨드는 수신 데이터 뱅크(110)상의 분산 RAID 애플리케이션(210)에 의해 응답될 수 있다.
단계(950)로 되돌아 가면, 데이터 세그먼트가 수신 데이터 뱅크(110)에 저장되어 있으면, 단계(952)에서 WRITE 커맨드가 호스트(102)로부터 또는 다른 데이터 뱅크(110)로부터 수신되었는 지가 결정될 수 있다. WRITE 커맨드가 호스트(102)로부터 수신되었다면, WRITE 커맨드는 단계(976)에서 원격 패리티 데이터 뱅크 (110)상의 분산 RAID 애플리케이션(210)에 통신될 수 있고 단계(974)에서 수신 데이터 뱅크(110)의 기록 캐쉬에 위치될 수 있다. 단계(978)에서 원격 패리티 데이터 뱅크 (110)상의 분산 RAID 애플리케이션(210)으로부터 완료 통지를 수신한 후, WRITE 커맨드는 단계(980)에서 수신 데이터 뱅크 (110)상의 분산 RAID 애플리케이션(210)에 의해 응답될 수 있다(예로서, 호스트(102)에 전송된 응답). 더욱이, 단계(982)에서 WRITE 커맨드가 자체적으로 처리될 수 있다. 이 프로세스는 수신 데이터 뱅크(110)에 저장된 데이터 세그먼트로의 WRITE 커맨드와 연관된 데이터의 저장 또는 기타 기능을 수반할 수 있다.
반면에, 단계(952)에서, WRITE 커맨드가 호스트(102)로부터 수신되지 않았다면, 이것은 WRITE 커맨드가 다른 데이터 뱅크(110)(대부분의 경우에, 이는 호스트(102)로부터 WRITE 커맨드를 최초로 수신한 데이터 뱅크(110)이었을 수 있다)로부터 수신되었다는 것을 지시할 수 있다. 이 경우에, 데이터 뱅크(110)는 단계(984)에서, 수신된 WRITE 커맨드를 자신의 기록 캐쉬에 위치시킬 수 있고 단계(986)에서, 완료 통지를 발행 데이터 뱅크(110)에 전송할 수 있다. 그후 일정 시간 이후의 시점에, WRITE 커맨드는 단계(988)에서, 자체적으로 처리된다.
단계(950)로 되돌아 가면, 단계(960)에서 결정된 바와 같이, 데이터 세그먼트가 수신 데이터 뱅크(110)에 저장되어 있진 않지만 패리티 세그먼트가 수신 데이터 뱅크(110)에 저장되어 있다면, 단계(962)에서, WRITE 커맨드가 호스트(102)로부터 또는 다른 데이터 뱅크(110)로부터 수신되었는 지가 결정될 수 있다. WRITE 커맨드가 호스트(102)로부터 수신되었다면 WRITE 커맨드는 단계(1002)에서, WRITE 커맨드에 대응하는 데이터 세그먼트가 저장되어 있는 원격 데이터 뱅크(110)상의 분산 RAID 애플리케이션(210)에 통신될 수 있고 단계(1000)에서, 수신 데이터 뱅크(110)의 기록 캐쉬에 위치될 수 있다. 단계(1004)에서, 완료 통지를 원격 데이터 뱅크(110)상의 분산 RAID 애플리케이션(210)으로부터 수신한 후, WRITE 커맨드는 단계(1006)에서, 수신 데이터 뱅크(110)상의 분산 RAID 애플리케이션(210)에 의해 응답될 수 있고, 단계(1008)에서, 수신 데이터 뱅크(110)에 의해 기록 커맨드가 처리될 수 있다.
여기서, 기록 커맨드를 처리하는 것은 수신 데이터 뱅크(110)에서 저장된 패리티 세그먼트가 기록 커맨드에 기초하여 갱신될 수 있다는 것을 수반할 수 있다. 이러한 패리티 세그먼트 갱신은 다양한 방법으로 달성될 수 있는 데, 그 방법 모두가 본원에 상세히 설명되어 있진 않지만 당업자는 알 수 있을 것이다. 예를 들어, 패리티 데이터 뱅크(110)상의 분산 RAID 애플리케이션(210)은 패리티 세그먼트를 갱신하기 위해 기록 탈퇴를 수행할 수 있다. 기록 탈퇴 수행은 데이터 세그먼트와 이로부터 패리티 세그먼트를 획득하는 것 및 획득된 데이터 세그먼트 및 WRITE 커맨드와 연관된 기록되어야 할 데이터를 이용하여 논리 동작(배타적 논리합(XOR) 동작과 같은)을 수행하는 것을 수반할 수 있다. 대안으로서, 수신 데이터 뱅크(110)상의 분산 RAID 애플리케이션(210)은 패리티 세그먼트가 생성되었던 각각의 데이터 세그먼트에 대응하는 다수의 WRITE 커맨드를 갖는다면, 새로운 패리티 세그먼트가 계산될 수 있고 최초 패리티 세그먼트는 새롭게 계산된 패리티 세그먼트로 대체됨으로써 갱신될 수 있다. 패리티 세그먼트를 갱신하는 다른 방법은 본원에 개시된 설명을 검토하여 실현될 수 있고 분산 RAID 애플리케이션에 의해 패리티 세그먼트를 갱신하는 데에 이용되는 특정한 방법은 구성 파라미터, 특정 데이터의 이용가능성(예로서, 패리티를 생성하기 위해 사용된 모든 세그먼트 데이터에 대응하는 WRITE 커맨드 등)을 포함하는 다양한 인자, 또는 임의의 다수의 기타 인자들에 좌우될 수 있다.
단계(962)로 가면, WRITE 커맨드가 호스트로부터 수신되지 않았다면 이것은 WRITE 커맨드가 다른 데이터 뱅크(110)(이는 대부분의 경우에, 호스트(102)로부터 최초로 WRITE 커맨드를 수신 데이터 뱅크(110)이었을 수도 있음)로부터 수신되었다는 것을 지시한다. 이 경우에, 단계(990)에서, WRITE 커맨드는 수신 데이터 뱅크(110)의 기록 캐쉬에 위치될 수 있고 단계(992)에서, 완료 통지가 발행 데이터 뱅크에 전송될 수 있다. 그러면 단계(994)에서, WRITE 커맨드가 처리될 수 있다(예로서, 패리티 세그먼트는 상기 설명한 바와 같이, 갱신될 수 있다).
상기 설명을 검토한 후엔, 대부분의 경우에, 특정한 데이터 뱅크(110)에 있는 분산 RAID 애플리케이션(210)은 통지가 패리티 데이터 뱅크(110)로부터 수신될 때 까지 수신된 WRITE 커맨드를 처리할 수 없다는 것과, 하나 이상의 WRITE 커맨드를 저장하는 것 또는 이 저장된 WRITE 커맨드의 셋트를 평가하는 것이 요망되는 경우 패리티를 갱신하는 것 또는 임의의 다수의 기타 경우들을 위한 방법을 결정 또는 구현하기 위해 다수의 수신된 WRITE 커맨드를 패리티 데이터 뱅크가 평가할 필요가 있다는 것을 알게 될 것이다. WRITE 커맨드(또는 기타 커맨드)의 평가 및 저장이 용이하도록 하기 위해, 각각의 분산 RAID 애플리케이션(210)은 연관된 기록 캐쉬(260)를 가질 수 있다.
기록 캐쉬의 한 실시예에 대한 표현이 도 10에 나타나 있다. WRITE 커맨드가 분산 RAID 애플리케이션(210)에 의해 수신됨에 따라 이들은 기록 캐쉬(1100)에 위치된다. 각각의 이들 WRITE 커맨드(1160)는 WRITE 커맨드(1160)가 수신되었을 때를 지시하는 연관된 타임스탬프를 가질 수 있다. 따라서, 한 실시예에서 기록 캐쉬(1100)는 타임스탬프가 표시된 WRITE 커맨드(1160)의 큐(queue)를 포함할 수 있다. 소정 시점에 타임스탬프 마커가 분산 RAID 애플리케이션(210)에 의해 발행될 수 있다. 이 타임스탬프 마커는 시간을 포함할 수 있고 각각의 분산 RAID 애플리케이션(210)에 통신될 수 있다. 타임스탬프 마커를 발행할 시점은, 소정 시간간격에서 또는 여러 방법론으로 기록 캐쉬(1100) 소정 백분율로 완전한 상태에 있을 때 또는 소정 갯수의 WRITE 커맨드(1160)가 수신되었을 때와 같은 다양한 방식으로, 결정될 수 있다.
어느 경우에도, 이 타임스탬프 마커(1110)는 각각의 분산 RAID 애플리케이션(210)과 연관된 각각의 기록 캐쉬(1100)를 적어도 두 개의 세그먼트들인, 타임스탬프 마커(1110) 보다 이전에 수신된 WRITE 커맨드(1160)(이 예에선, WRITE 커맨드(1160a, 1160b, 1160c 및 1160d))를 포함하는 닫힌 마커(1150) 및 타임스탬프 마커(1110) 보다 이후에 수신된 WRITE 커맨드(1160)(이 예에선, WRITE 커맨드(1160e, 1160f 및 1160g))를 포함하는 열린 마커(1140)들로 세그먼트화 한다. 분산 RAID 애플리케이션(210)은 그러면 수신된 WRITE 커맨드들이 개방 마커(1140)에 추가될 수 있는 동안 상기 WRITE 커맨드(1160)들이 처리되어야 할 방법을 결정하기 위해 닫힌 마커(1150)에서 WRITE 커맨드(1160)들(이 예에선, WRITE 커맨드(1160a, 1160b, 1160c 및 1160d))의 셋트를 평가할 수 있다.
반대로, 닫힌 마커(1150)가 더 이상 변화하지 않는 WRITE 커맨드(1160)들의 셋트를 포함하기 때문에 분산 RAID 애플리케이션은 실행 순서를 결정(그리고 닫힌 마커(1150)에 WRITE 커맨드(1160)를 재순서화할 수 있음)하기 위해 서로에 대해 (또는 다른 기준으로) 이 WRITE 커맨드(1160)들의 셋트를 평가할 수 있고, 패리티 세그먼트를 갱신하는 방법론(예로서, 패리티를 생성하기 위해 사용되는 각각의 데이터 세그먼트에 대응하는 닫힌 마커(1150)에 WRITE 커맨드가 있다면) 또는 기타 결정을 행하는 방법론은 WRITE 커맨드(1160)들의 처리와 연관된다. 타임스탬프 마커(1110)가 각각의 데이터 뱅크(110)상의 임의의 분산 RAID 애플리케이션(210)에 의해 여러 이유로 발행될 수 있으므로, 다수의 닫힌 마커(1110)는, 임의의 한 시점에, 예를 들어, 기록 캐쉬가 임의의 분산 RAID 애플리케이션(210)에 의해 평가되는 시간 사이에 분산 RAID 애플리케이션(210)에 의해 발행되는 때와 같은 시점에, 존재할 수 있다.
상기 내용을 검토한 후 데이터 뱅크(110)상의 분산 RAID 애플리케이션(210)이 가상화된 저장장치 및 RAID 구현을 달성하기 위해 협력하여 동작하는 방법을 이해할 것이다. 또한 오류 발생 후 분산 RAID 애플리케이션(210)의 특정 실시예의 기능을 설명하기 위해 특정한 실시예를 이해하는데에 도움을 줄 수 있을 것이다. 상기 설명한 바와 같이, 분산 RAID 애플리케이션(210)은 오류가 있는 (예로서, 저장되어 있는) 데이터 뱅크를 알 수 있다(다른 말로 하면, 데이터를 액세스하거나 동작하기 위해 데이터 뱅크(110)의 능력을 방해 또는 지체시키는 기타 오류, 통신, 소프트웨어 또는 하드웨어를 가질 수 있다). 분산 RAID 애플리케이션(210)은 호스트(102)로부터의 커맨드를 충족시키면서 그러한 오류에 대해 대처할 수 있다.
예시적으로 설명하기 위해, 도 11은 분산 RAID 시스템에 READ 커맨드를 구현하기 위한 방법의 한 실시예에 대한 흐름도를 나타낸다. 이 방법은 RAID 5가 볼륨의 범위와 공동으로 구현되어있는 실시예에 적용된다는 것 및 다른 실시예도 다른 레벨의 RAID가 구현되어 있는 경우에도 마찬가지로 적용된다는 것을 알 수 있을 것이다. READ 커맨드는 스위치(120)를 통해 호스트(102)에 의해 데이터 뱅크(110)로 전송되거나 다른 데이터 뱅크(110)로부터 수신 데이터 뱅크(110)로 전송될 수 있다. 단계(1110)에서, READ 커맨드는 데이터 뱅크(110)에서 수신될 수 있다. 데이터 뱅크(110)상의 분산 RAID 애플리케이션(210)은 단계(1220)에서, 수신된 READ 커맨드에서 참조된 논리 주소에 대응하는 데이터 세그먼트를 결정할 수 있고 단계(1230)에서 데이터 세그먼트가 저장되어 있는 데이터 뱅크(110)를 결정할 수 있다. 데이터 세그먼트를 저장하고 있는 데이터 뱅크(110)가 READ 커맨드를 수신한 데이터 뱅크(110)와 동일하다면(단계(1240)에서 결정된 바와 같이), 요청된 데이터는 단계(1250)에서 수신 데이터 뱅크(110)상의 데이터 스토어(250)의 적합한 디스크로부터 획득될 수 있고 수신된 READ 커맨드는 단계(1252)에서 획득된 데이터를 이용하여 응답될 수 있다. 수신 데이터 뱅크(110)가 호스트(102)로부터 READ 커맨드를 수신하면, 호스트(102)가 응답될 수 있는 반면에 수신 데이터 뱅크(110)가 다른 데이터 뱅크(110)로부터 READ 커맨드를 수신하면, 그 응답은 READ 커맨드를 발행한 데 뱅크(110)상의 분산 RAID 애플리케이션(210)에 전송될 수 있다.
그러나, 단계(1254)에서 데이터 세그먼트가 원격 데이터 뱅크(110)에 저장되어 있다면(커맨드를 수신한 것과는 다른 데이터 뱅크(110)), 판독되어야 할 데이터 세그먼트가 저장되어 있는 원격 데이터 뱅크(110)가 오류상태에 있는 지를 결정할 수 있다. 오류상태에 있지 않으면 READ 커맨드는 원격 데이터 뱅크(110)에 있는 분산 RAID 애플리케이션(210)에 전송될 수 있다. 단계(1258)에서 요청 데이터를 포함하는 응답이 원격 데이터 뱅크(110)로부터 수신된 후, 수신된 READ 커맨드는 단계(1260)에서 그 데이터를 사용하기 위해 응답될 수 있다.
원격 데이터 뱅크(110)가 오류 상태에 있다면, 그러나, 단계(1254)에서 수신 데이터 뱅크(110)가 READ 커맨드와 연관된 데이터 세그먼트에 대응하는 패리티 세그먼트를 유지하고 있는 지가 결정될 수 있다. 패리티 세그먼트가 수신 데이터 뱅크(110)에 저장되어 있으면, READ 커맨드에 대응하는 데이터 세그먼트는 수신 데이터 뱅크(110)에서 저장된 패리티 세그먼트를 사용하여 획득될 수 있다. 패리티 데이터로부터 데이터 세그먼트를 획득하는 것은, 다른 데이터 뱅크(110)로부터 다른 데이터 세그먼트(READ 커맨드에 대응하는 것과는 상이한 데이터 세그먼트)를 획득하는 것 및 다른 데이터 세그먼트와 패리티 세그먼트간의 논리 동작의 수행에 의한 소망하는 데이터 세그먼트 획득을 포함하는, 상세히 설명하진 않지만 여러 방법으로 달성될 수 있다. 단계(1268)에서, 요청된 데이터 세그먼트가 패리티 데이터를 사용하여 획득되었으면, 단계(1270)에서, 수신된 READ 커맨드가 응답될 수 있다. 수신 데이터 뱅크(110)가 호스트(102)로부터 READ 커맨드를 수신하면 호스트(102)가 응답될 수 있는 반면에 수신 데이터 뱅크(110)가 다른 데이터 뱅크(110)로부터 READ 커맨드를 수신하면 응답은 READ 커맨드를 발행한 데이터 뱅크(110)상의 분산 RAID 애플리케이션(210)에 전송될 수 있다.
수신 데이터 뱅크(110)가 패리티 블록을 저장하는 데이터 뱅크(110)가 아니면, READ 커맨드는 단계(1262)에서, READ 커맨드에서 참조된 데이터 세그먼트에 대응하는 패리티 세그먼트가 저장되어 있는 원격 데이터 뱅크(110)에 저장될 수 있다. 단계(1264)에서, 요청된 데이터를 포함하는 응답이 원격 패리티 데이터 뱅크(110)로부터 수신되면, 단계(1266)에서, 수신된 READ 커맨드는 그 데이터를 사용하여 응답될 수 있다.
도 12를 참조하면, 분산 RAID 시스템에 WRITE 커맨드를 구현하기 위한 방법의 한 실시예에 대한 흐름도가 설명되어 있다. 이 WRITE 커맨드는 스위치(120)를 통해 호스트(102)에 의해 데이터 뱅크(110)로 전송될 수 있거나 한 데이터 뱅크(110)로부터 다른 데이터 뱅크(110)로 전송될 수 있다. 단계(1310)에서, WRITE 커맨드는 수신 데이터 뱅크(110)에서 수신될 수 있다. 수신 데이터 뱅크(110)상의 분산 RAID 애플리케이션(210)은 그러면 단계(1312), 단계(1314) 및 단계(1320)에서, WRITE 커맨드에 의해 참조된 논리 주소에 대응하는 데이터 세그먼트, 그 데이터 세그먼트의 위치(예로서, 데이터뱅크(110)가 저장하는 그 데이터 세그먼트에 대응하는 데이터) 및 그 데이터 세그먼트에 대응하는 패리티 세그먼트의 위치(예로서, 데이터뱅크(110)가 저장하는 그 세그먼트에 대응하는 데이터로부터 생성된 패리티 데이터가 저장된 세그먼트)를 결정할 수 있다. 상기 설명한 바와 같이, 데이터 세그먼트 및 패리티 세그먼트 양자 모두의 위치는 수신 데이터 뱅크(110)에 저장되어 있는 테이블(240)의 셋트를 이용하여 결정될 수 있다.
데이터 세그먼트가 저장되어 있는 데이터 뱅크(110)가 오류 상태에 있는 지 또는 패리티 세그먼트가 저장되어 있는 데이터 뱅크(110)가 오류 상태에 있는 지가 결정될 수 있다. 어느 데이터 뱅크(110)들도 오류 상태에 있지 않으면 단계(1324)에서 분산 RAID 애플리케이션에 의해 정상 기록 동작이 수행될 수 있다. 정상 기록 동작은 도 9A 및 9B를 참조하여 상기에서 설명하였으므로 더 설명하진 않는다.
그러나 어느 한 데이터 뱅크(110)가 오류 상태에 있다면 단계(1326)에서 오류 데이터 뱅크(110)를 고려한 기록 동작이 수행될 수 있다. 이 기록 동작은, 기록 커맨드가 데이터 뱅크(110)에 전송되기 이전에 기록 커맨드가 전송되어야 할 데이터 뱅크(110)가 오류 상태에 있지를 결정하고 만일 오류 상태에 있다면 기록 커맨드는 오류 데이터 뱅크(110)에 전송되지 않아야 한다고 결정되는 것을 제외하곤 도 9A 및 9B에 대해 설명한 기록 동작과 실질적으로 동일하게 행해질 수 있다. 그 밖의 모든 것에 대해선 실질적으로 동일하다.
상기 설명을 읽은 후에 특정 실시예의 동작의 흐름도가 분산 RAID 시스템 동작의 한 실시예에 대한 특정 예를 참조하여 더욱 양호하게 이해될 것이다. 이를 위해, 5개 데이터 뱅크(110)를 갖는 분산 RAID 시스템의 한 실시예를 예시하는 도 4를 다시 참조한다. 먼저, 제1 예로서, 호스트(102b)가 READ 커맨드를 데이터 뱅크(110c)에 발행하고, 여기서 READ 커맨드는 데이터 뱅크(110a)상의 데이터 세그먼트 "2"(402c)에 대응하는 논리 주소를 참조한다고 가정한다. 여기서, 데이터 뱅크(110c)의 분산 RAID 애플리케이션(210c)은 수신된 READ 커맨드의 논리 주소가 데이터 세그먼트 "2"(402c)를 참조하고 있다고 그리고 데이터 세그먼트 "2"(402c)가 데이터 뱅크(110)상에 저장되어 있다고 결정할 수 있다. 분산 RAID 애플리케이션(210c)은 그후 대응하는 READ 커맨드를 데이터 뱅크(110a)에 전송할 수 있다.
데이터 뱅크(110a)상의 분산 RAID 애플리케이션(210a)은 이 READ 커맨드를 수신하고, READ 커맨드가 데이터 세그먼트 "2"(402c)에 대응하는 논리 주소를 참조하고 있다고 그리고 데이터 세그먼트 "2"(402c)가 그것이 실행중인 데이터 뱅크(110a)에 위치되어 있다고 결정할 수 있다. 분산 RAID 애플리케이션(210a)은 그후 데이터 세그먼트 "2"(402c)로부터 요청된 데이터를 획득하기 이해 데이터 스토어(250a)를 액세스하고 상기 획득된 데이터를 발행 데이터 뱅크(110c)에 있는 분산 RAID 애플리케이션(210c)에 반환할 수 있다. 데이터 뱅크(110c)상의 분산 RAID 애플리케이션(210c)은 이 응답을 데이터 뱅크(110a)상의 분산 RAID 애플리케이션(210a)으로부터 수신하고 호스트(102b)로부터 발행된 최초 READ 커맨드에 응답하기 위해 상기 응답으로부터의 데이터를 사용할 수 있다.
이제 호스트(102b)가, 오류 상태에 있고 더 이상 동작하지 않는, 데이터 뱅크(110a)상의 데이터 세그먼트 "2"(402c)에 대응하는 논리 주소를 READ 커맨드가 참조하는, READ 커맨드를, 발행하는 것으로 가정한다. 이 경우에, 데이터 뱅크(110c)상의 분산 RAID 애플리케이션(210c)은 수신된 READ 커맨드의 논리 주소가 데이터 세그먼트 "2"(402c)를 참조한다고 그리고 데이터 세그먼트 "2"(402c)는 데이터 뱅크(110a)에 저장되어 있다고 결정할 수 있다. 또한, 데이터 뱅크(110c)상의 분산 RAID 애플리케이션(210c)은 데이터 뱅크(110a)가 오류 상태에 있다고 결정할 수 있다.
따라서, 분산 RAID 애플리케이션(210c)은 데이터 세그먼트 "2"(402c)에 대응하는 패리티 세그먼트(402j)의 위치가 데이터 뱅크(110e)인 것으로 결정할 수 있다. 분산 RAID 애플리케이션(210c)은 그후 READ 커맨드를 데이터 뱅크(110e)에 전송할 수 있다. 데이터 뱅크(110e)상의 분산 RAID 애플리케이션(210e)은 이 READ 커맨드를 수신하고, READ 커맨드가 데이터 세그먼트 "2"(402c)에 대응하는 논리 주소를 참조한다고 그리고 데이터 세그먼트 "2"(402c)에 대응하는 패리티 세그먼트(402j)가 그것이 실행중인 데이터 뱅크(110e)에 위치되어 있다고 결정할 수 있다. 분산 RAID 애플리케이션(210e)은 그후 패리티 세그먼트(402j)를 액세스하기 위해 데이터 스토어(250e)를 액세스하고 패리티 세그먼트(402j)를 이용하여 데이터 세그먼트 "2"(402c)로부터 요청된 데이터를 획득할 수 있다. 이렇게 획득된 데이터는 발행 데이터 뱅크(110c)에 있는 분산 RAID 애플리케이션(210c)에 반환될 수 있다. 분산 RAID 애플리케이션(210e)은 데이터 세그먼트 "2"(402c)에 대해 요청된 데이터를 결정하기 위해 다른 데이터를 필요로 할 수 있다. 따라서, 분산 RAID 애플리케이션(210e)은 패리티 세그먼트(402j)를 생성하기 위해 데이터 세그먼트 "2"(402c)와 공동으로 사용되었던 데이터 세그먼트 "0"(402a), 데이터 세그먼트 "1"(402b) 및 데이터 세그먼트 "3"(402d)의 위치가 각각 데이터 뱅크(110b, 110d 및 110c)에 위치되어 있다고 결정할 수 있다. 분산 RAID 애플리케이션(210e)은 그후 이들 데이터 뱅크(110b, 110d 및 110c)에 READ 요청을 전송함에 의해 데이터 세그먼트 "0"(402a), 데이터 세그먼트 "1"(402b) 및 데이터 세그먼트 "3"(402d)을 획득할 수 있고 데이터 세그먼트 "2"(402c)로부터 요청된 데이터를 획득하기 위해 데이터 세그먼트 "0"(402a), 데이터 세그먼트 "1"(402b) 및 데이터 세그먼트 "3"(402d)을 사용할 수 있다.
데이터 뱅크(110c)상의 분산 RAID 애플리케이션(210c)은 데이터 뱅크(110e)상의 분산 RAID 애플리케이션(210e)으로부터 응답을 수신하고 호스트(102b)로부터 발행된 최초 READ 커맨드에 응답하기 위해 상기 응답으로부터의 데이터를 사용할 수 있다. 이러한 방식으로, 데이터 세그먼트에 대응하는 데이터는 분산 RAID 시스템에서의 오류의 발생에도 불구하고 호스트에 의해 판독될 수 있다.
WRITE 커맨드에 대해 계속 설명하면, 호스트(102b)는 데이터 뱅크(110c)에 WRITE 커맨드를 발행한다고 가정하는데, 여기서 WRITE 커맨드는 데이터 뱅크(110a)상의 데이터 세그먼트 "2"(402c)에 대응하는 논리 주소를 참조한다. 여기서, 데이터 뱅크(110c)상의 데이터 세그먼트 "2"(402c)는 수신된 WRITE 커맨드의 논리 주소가 데이터 세그먼트 "2"(402c)를 참조하고 데이터 세그먼트 "2"(402c)는 데이터 뱅크(110a)에 저장되어 있는 것으로 가정한다. 더욱이, 분산 RAID 애플리케이션(210c)은 데이터 세그먼트 "2"(402c)에 대응하는 패리티 세그먼트(402j)가 데이터 뱅크(110e)에 위치되어 있다고 결정할 수 있다. 분산 RAID 애플리케이션(210c)은 그후 대응하는 WRITE 커맨드를 데이터 뱅크(110a 및 110e)에 전송할 수 있다. 분산 RAID 애플리케이션(210a 및 210e)으로부터 완료 통지를 수신하면, 분산 RAID 애플리케이션(210c)은 최초에 수신된 WRITE 커맨드에 응답할 수 있다.
데이터 뱅크(110e)상의 분산 RAID 애플리케이션(210c)은 그 대응하는 WRITE 커맨드를 수신하고, WRITE 커맨드가 데이터 세그먼트 "2"(402c)에 대응하는 논리 주소를 참조한다고 그리고 데이터 세그먼트 "2"(402c)에 대응하는 패리티 세그먼트(402j)가 그것이 실행중인 데이터 뱅크(110e)상에 위치되어 있다고 결정할 수 있다. 분산 RAID 애플리케이션(210e)은 자신의 기록 캐쉬에 WRITE 커맨드를 위치시키고 데이터 뱅크(110c)에 완료 통지를 전송할 수 있다. 분산 RAID 애플리케이션(210e)은 그후 패리티 세그먼트(402j)를 액세스하기 위해 데이터 스토어(250e)를 액세스하고 수신된 WRITE 커맨드에서 참조된 데이터를 이용하여 패리티 세그먼트(402j)를 갱신할 수 있다.
데이터 뱅크(110a)상의 분산 RAID 애플리케이션(210a)은 그 대응하는 WRITE 커맨드를 수신하고, WRITE 커맨드가 데이터 세그먼트 "2"(402c)에 대응하는 논리 주소를 참조한다고 그리고 데이터 세그먼트 "2"(402c)가 그것이 실행중인 데이터 뱅크(110a)상에 위치되어 있다고 결정할 수 있다. 분산 RAID 애플리케이션(210a)은 자신의 기록 캐쉬에 WRITE 커맨드를 위치시키고 데이터 뱅크(110c)에 완료 통지를 전송할 수 있다. 분산 RAID 애플리케이션(210a)은 그후 수신된 WRITE 커맨드에서 참조된 데이터를 이용하여 세그먼트"2"(402c)를 갱신하기 위해 데이터 스토어(250e)를 액세스할 수 있다.
또다시 호스트(102b)는 데이터 뱅크(110c)에 WRITE 커맨드를 발행한다고 가정하는 데, 여기서 WRITE 커맨드는, 오류 상태에 있고 더 이상 동작하지 않는, 데이터 뱅크(110a)상의 데이터 세그먼트"2"(402c)에 대응하는 논리 주소를 참조한다고 가정한다. 이 경우에, 데이터 뱅크(110c)상의 분산 RAID 애플리케이션(210c)은 수신된 WRITE 커맨드의 논리 주소가 데이터 세그먼트 "2"(402c)를 참조한다고 그리고 데이터 세그먼트 "2"(402c)는 데이터 뱅크(110a)에 저장되어 있다고 결정할 수 있다. 또한, 데이터 뱅크(110c)상의 분산 RAID 애플리케이션(210c)은 데이터 뱅크(110a)가 오류 상태에 있다고 결정할 수 있다. 더욱이, 분산 RAID 애플리케이션(210c)은 데이터 세그먼트 "2"(402c)에 대응하는 패리티 세그먼트(402j)가 데이터 뱅크(110e)상에 위치되어 있다고 결정할 수 있다. 분산 RAID 애플리케이션(210c)은 그후 대응하는 WRITE 커맨드를 데이터 뱅크(110e)에 전송할 수 있다. 분산 RAID 애플리케이션(210e)으로부터 완료 통지를 수신하면, 분산 RAID 애플리케이션(210c)은 최초로 수신된 WRITE 커맨드에 대해 응답할 수 있다.
데이터 뱅크(110e)상의 분산 RAID 애플리케이션(210e)은 대응하는 WRITE 커맨드를 수신하고, 이 WRITE 커맨드가 데이터 세그먼트 "2"(402c)에 대응하는 논리 주소를 참조한다고 그리고 데이터 세그먼트 "2"(402c)에 대응하는 패리티 세그먼트(402j)가 그것이 실행중인 데이터 뱅크(110e)에 위치되어 있다고 결정할 수 있다. 분산 RAID 애플리케이션(210e)은 그후 자신의 기록 캐쉬에 WRITE 커맨드를 위치시키고 완료 통지를 데이터 뱅크(110c)에 전송할 수 있다. 분산 RAID 애플리케이션(210e)은 그후 패리티 세그먼트(402j)를 액세스하기 위해 데이터 스토어(250e)를 액세스하고 수신된 WRITE 커맨드에서 참조된 데이터를 이용하여 패리티 세그먼트(402j)를 갱신할 수 있다. 이러한 방식으로, 데이터 세그먼트에 대응하는 데이터는 분산 RAID 시스템에서 오류의 발생에도 불구하고 호스트에 의해 기록될 수 있다.
상기 상세한 설명에서, 본 발명은 특정 실시예를 참조하여 설명되었다. 그러나, 당업자는 다양한 수정 및 변경이 하기의 청구항에 정의된 발명의 범위로부터 벗어나지 않고 행해질 수 있음을 인식할 것이다. 따라서, 발명의 상세한 설명 및 도면들은 제한적이기 보단 예시적인 것으로 간주되어야 하고, 본 발명에 대한 그러한 모든 수정들은 본 발명의 범위에 포함되는 것으로 의도된다.
종래 기술의 문제점들에 대한 본 발명의 이점, 기타 장점 및 해결책들이 특정 실시예를 참조하여 상기한 바와 같이 설명되었다. 그러나, 문제점들에 대한 본 발명의 이점, 기타 장점 및 해결책들, 및 임의의 이점, 기타 장점 및 해결책들을 발생시키거나 더욱 분명하게 되도록 하는 임의의 컴포넌트(들)은 임의의 또는 모든 청구항에서 매우 중요하고 필요 불가결한 특징 또는 컴포넌트인 것으로 간주되지 않아야 한다.
102a, 102b, 102c, 102n: 호스트
110a, 110b, 110c, 110d: 데이터 뱅크
120a, 120b: 스위치
110a, 110b, 110c, 110d: 데이터 뱅크
120a, 120b: 스위치
Claims (20)
- 분산 RAID(Redundant Array of Independent Disk)를 구현하기 위한 시스템에 있어서,
하나 이상의 호스트; 및
복수의 데이터 뱅크 컴퓨터를 포함하고,
각각의 데이터 뱅크는 각각의 호스트 및 다른 복수의 데이터 뱅크의 각각에 연결되고, 상기 각각의 데이터 뱅크는,
프로세서; 데이터 스토어(data store); 및 명령어를 포함하고 있는 컴퓨터로 판독가능한 매체를 포함하고, 상기 명령어는,
상기 하나 이상의 호스트의 제1 호스트로부터 볼륨(volume)의 제 1 세그먼트에 대응하는 커맨드를 수신하고 - 상기 볼륨의 각각의 세그먼트에 대하여 그 세그먼트와 연관된 중복(redundancy) 데이터를 포함하는 대응하는 중복 세그먼트가 상기 세그먼트가 상주하는 데이터 뱅크와 동일한 데이터 뱅크에 상주하지 않도록, 상기 볼륨 및 볼륨과 공동으로 구현된 RAID 레벨에 대응하는 중복 데이터가 상기 복수의 데이터 뱅크의 각각에 저장됨 - ,
상기 복수의 데이터 뱅크의 제1 데이터 뱅크 - 상기 제1 데이터 뱅크는 상기 제1 세그먼트에 대응함 - 를 결정하고,
상기 제1 데이터 뱅크가 상기 커맨드를 수신한 데이터 뱅크이면 상기 제1 세그먼트에 대해 상기 제1 커맨드를 실행하고, 그렇지 않은 경우엔 상기 제1 커맨드를 상기 제1 데이터 뱅크에 전송하도록 실행될 수 있는 것인, 분산 RAID를 구현하기 위한 시스템. - 제1 항에 있어서, 상기 볼륨의 각각의 세그먼트는 상기 복수의 데이터 뱅크 중의 하나에 대응하고, 각각의 세그먼트는 상기 복수의 데이터 뱅크의 순열(permutation)에 따라 복수의 데이터 뱅크 중의 하나에 할당되며, 상기 중복 세그먼트의 각각은 그 중복 세그먼트와 연관된 상기 볼륨의 임의의 세그먼트에 대응하는 상기 복수의 데이터 뱅크의 각각과는 별개인 복수의 데이터 뱅크 중의 하나에 할당되는 것인, 분산 RAID를 구현하기 위한 시스템.
- 제2 항에 있어서, 상기 컴퓨터 명령어는 또한, 상기 제1 커맨드가 기록 커맨드인지를 결정하고 만일 상기 제1 커맨드가 기록 커맨드이면 상기 복수의 데이터 뱅크의 제2 데이터 뱅크 - 상기 제2 데이터 뱅크는 상기 제1 세그먼트와 연관된 제1 중복 세그먼트에 대응함 - 를 결정하도록 실행될 수 있고, 상기 제2 데이터 뱅크가 상기 커맨드를 수신한 데이터 뱅크이면 상기 제1 중복 세그먼트에 대해 상기 제1 커맨드를 실행하고, 그렇지 않은 경우엔 상기 제1 커맨드를 상기 제2 데이터 뱅크에 전송하도록 실행될 수 있는 것인, 분산 RAID를 구현하기 위한 시스템.
- 제3 항에 있어서, 상기 제1 데이터 뱅크를 결정하는 것과 상기 제2 데이터 뱅크를 결정하는 것은 상기 데이터 스토어내의 글로벌 테이블(global table)을 액세스하는 것을 포함하고, 상기 글로벌 테이블은 RAID 레벨 및 데이터 뱅크의 순열을 포함하는 것인, 분산 RAID를 구현하기 위한 시스템.
- 프로세서를 갖는 컴퓨팅 디바이스상에 분산 RAID를 구현하는 방법에 있어서,
복수의 데이터 뱅크에 볼륨을 수립하고 - 상기 볼륨은 세그먼트의 셋트를 포함하고, 상기 세그먼트의 셋트는 복수의 데이터 뱅크에 저장됨 - ;
상기 볼륨과 공동으로 RAID 레벨을 구현하고 - 상기 RAID 레벨을 구현하는 것은 중복 세그먼트의 셋트를 저장하는 것을 포함하고, 각각의 중복 세그먼트는, 각각의 중복 세그먼트가 상기 세그먼트의 셋트의 대응하는 하나 이상의 세그먼트가 상주하는 데이터 뱅크와 동일한 데이터 뱅크에 상주하지 않도록, 상기 세그먼트의 셋트의 하나 이상의 세그먼트에 대응함 - ;
상기 볼륨의 상기 세그먼트의 셋트의 제1 세그먼트에 대응하는 커맨드를 수신하고;
상기 복수의 데이터 뱅크의 제1 데이터 뱅크 - 상기 제1 데이터 뱅크는 상기 제1 세그먼트에 대응함 - 를 결정하고;
상기 제1 세그먼트에 대해 제1 커맨드를 실행하는 것을 포함하며,
상기 제1 커맨드는 상기 제1 데이터 뱅크상에서 실행되는 것인, 프로세서를 갖는 컴퓨팅 디바이스상에 분산 RAID를 구현하는 방법. - 제5 항에 있어서, 상기 볼륨의 상기 세그먼트의 셋트의 각각은 상기 복수의 데이터 뱅크 중의 하나에 대응하고, 각각의 세그먼트는 상기 복수의 데이터 뱅크의 순열에 따라 데이터 뱅크에 할당되며, 상기 중복 세그먼트의 셋트의 각각은 상기 중복 세그먼트에 대응하는 하나 이상의 임의의 세그먼트에 대응하는 상기 복수의 데이터 뱅크의 각각과는 별개인 데이터 뱅크에 할당되는 것인, 프로세서를 갖는 컴퓨팅 디바이스상에 분산 RAID를 구현하는 방법.
- 제6 항에 있어서, 상기 제1 커맨드가 기록 커맨드인지를 결정하고 만일 상기 제1 커맨드가 기록 커맨드이면 상기 복수의 데이터 뱅크의 제2 데이터 뱅크 - 상기 제2 데이터 뱅크는 상기 제1 세그먼트와 연관된 제1 중복 세그먼트에 대응함 - 를 결정하는 것과, 상기 제1 중복 세그먼트에 대해 상기 제1 커맨드를 실행하는 것을 더 포함하고, 상기 제1 커맨드는 상기 제2 데이터 뱅크상에서 실행되는 것인, 프로세서를 갖는 컴퓨팅 디바이스상에 분산 RAID를 구현하는 방법.
- 제7 항에 있어서, 상기 제1 데이터 뱅크를 결정하는 것과 상기 제2 데이터 뱅크를 결정하는 것은 RAID 레벨 및 데이터 뱅크의 순열을 포함하는 글로벌 테이블을 액세스하는 것을 포함하는 것인, 프로세서를 갖는 컴퓨팅 디바이스상에 분산 RAID를 구현하는 방법.
- 하나 이상의 데이터 뱅크 컴퓨터에 분산 RAID를 구현하기 위한 방법으로서, 각각의 데이터 뱅크 컴퓨터가 하나 이상의 호스트 및 다른 복수의 데이터 뱅크의 각각에 연결되어 있는 것인, 상기 방법에 있어서,
호스트로부터 볼륨의 제1 세그먼트에 대응하는 커맨드를 수신하고 - 상기 볼륨의 각각의 세그먼트에 대하여 그 세그먼트와 연관된 중복 데이터를 포함하는 대응하는 중복 세그먼트가 상기 세그먼트가 상주하는 데이터 뱅크와 동일한 데이터 뱅크에 상주하지 않도록, 상기 볼륨 및 볼륨과 공동으로 구현된 RAID 레벨에 대응하는 중복 데이터가 복수의 데이터 뱅크의 각각에 저장됨 - ,
상기 복수의 데이터 뱅크의 제1 데이터 뱅크 - 상기 제1 데이터 뱅크는 제1 세그먼트에 대응함 - 를 결정하고,
상기 제1 세그먼트에 대해 제1 커맨드를 실행하는 것을 포함하며,
상기 제1 커맨드는 상기 제1 데이터 뱅크상에서 실행되는 것인, 하나 이상의 데이터 뱅크 컴퓨터에 분산 RAID를 구현하기 위한 방법. - 제9 항에 있어서, 상기 볼륨의 각각의 세그먼트는 상기 복수의 데이터 뱅크 중의 하나에 대응하고, 각각의 세그먼트는 상기 복수의 데이터 뱅크의 순열에 따라 데이터 뱅크에 할당되며, 중복 세그먼트의 각각은 그 중복 세그먼트와 연관된 상기 볼륨의 임의의 세그먼트에 대응하는 상기 복수의 데이터 뱅크의 각각과는 별개인 데이터 뱅크에 할당되는 것인, 하나 이상의 데이터 뱅크 컴퓨터에 분산 RAID를 구현하기 위한 방법.
- 제10 항에 있어서, 상기 제1 커맨드가 기록 커맨드인지를 결정하고 만일 상기 제1 커맨드가 기록 커맨드이면 상기 복수의 데이터 뱅크의 제2 데이터 뱅크 - 상기 제2 데이터 뱅크는 상기 제1 세그먼트와 연관된 제1 중복 세그먼트에 대응함 - 를 결정하는 것과, 중복 세그먼트에 대해 상기 제1 커맨드를 실행하는 것을 더 포함하고, 상기 제1 커맨드는 상기 제2 데이터 뱅크상에서 실행되는 것인, 하나 이상의 데이터 뱅크 컴퓨터에 분산 RAID를 구현하기 위한 방법.
- 제11 항에 있어서, 상기 제1 데이터 뱅크를 결정하는 것과 상기 제2 데이터 뱅크를 결정하는 것은 RAID 레벨 및 데이터 뱅크의 순열을 포함하는 글로벌 테이블을 액세스하는 것을 포함하는 것인, 하나 이상의 데이터 뱅크 컴퓨터에 분산 RAID를 구현하기 위한 방법.
- 분산 RAID를 구현하기 위한 컴퓨터에서 실행가능한 명령어를 포함하는 컴퓨터로 판독가능한 매체에 있어서, 상기 컴퓨터에서 실행가능한 명령어는,
복수의 데이터 뱅크에 볼륨을 수립하고 - 상기 볼륨은 세그먼트의 셋트를 포함하고, 상기 세그먼트의 셋트는 복수의 데이터 뱅크에 저장됨 - ;
상기 볼륨과 공동으로 RAID 레벨을 구현하고 - 상기 RAID 레벨을 구현하는 것은 중복 세그먼트의 셋트를 저장하는 것을 포함하고, 각각의 중복 세그먼트는, 각각의 중복 세그먼트가 상기 세그먼트의 셋트의 대응하는 하나 이상의 세그먼트가 상주하는 데이터 뱅크와 동일한 데이터 뱅크에 상주하지 않도록, 상기 세그먼트의 셋트의 하나 이상의 세그먼트에 대응함 - ;
상기 볼륨의 상기 세그먼트의 셋트의 제1 세그먼트에 대응하는 커맨드를 수신하고;
상기 복수의 데이터 뱅크의 제1 데이터 뱅크 - 상기 제1 데이터 뱅크는 상기 제1 세그먼트에 대응함 - 를 결정하고;
상기 제1 세그먼트에 대해 상기 제1 커맨드를 실행하도록, 실행될 수 있으며,
상기 제1 커맨드는 상기 제1 데이터 뱅크상에서 실행되는 것인, 분산 RAID를 구현하기 위한 컴퓨터에서 실행가능한 명령어를 포함하는 컴퓨터로 판독가능한 매체. - 제13 항에 있어서, 상기 볼륨의 상기 세그먼트의 셋트의 각각은 상기 복수의 데이터 뱅크 중의 하나에 대응하고, 각각의 세그먼트는 상기 복수의 데이터 뱅크의 순열에 따라 데이터 뱅크에 할당되며, 상기 중복 세그먼트의 셋트의 각각은 상기 중복 세그먼트에 대응하는 하나 이상의 임의의 세그먼트에 대응하는 상기 복수의 데이터 뱅크의 각각과는 별개인 데이터 뱅크에 할당되는 것인, 분산 RAID를 구현하기 위한 컴퓨터에서 실행가능한 명령어를 포함하는 컴퓨터로 판독가능한 매체.
- 제14 항에 있어서, 상기 컴퓨터에서 실행가능한 명령어는 또한, 상기 제1 커맨드가 기록 커맨드인지를 결정하고 만일 상기 제1 커맨드가 기록 커맨드이면 상기 복수의 데이터 뱅크의 제2 데이터 뱅크 - 상기 제2 데이터 뱅크는 상기 제1 세그먼트와 연관된 제1 중복 세그먼트에 대응함 - 를 결정하고, 상기 제1 중복 세그먼트에 대해 상기 제1 커맨드를 실행하도록, 실행될 수 있으며, 상기 제1 커맨드는 상기 제2 데이터 뱅크상에서 실행되는 것인, 분산 RAID를 구현하기 위한 컴퓨터에서 실행가능한 명령어를 포함하는 컴퓨터로 판독가능한 매체.
- 제15 항에 있어서, 상기 제1 데이터 뱅크를 결정하는 것과 상기 제2 데이터 뱅크를 결정하는 것은 RAID 레벨 및 데이터 뱅크의 순열을 포함하는 글로벌 테이블을 액세스하는 것을 포함하는 것인, 분산 RAID를 구현하기 위한 컴퓨터에서 실행가능한 명령어를 포함하는 컴퓨터로 판독가능한 매체.
- 복수의 데이터 뱅크 컴퓨터에 분산 RAID를 구현하기 위한 컴퓨터에서 실행가능한 명령어를 포함하는 컴퓨터로 판독가능한 매체에 있어서, 상기 컴퓨터에서 실행가능한 명령어는,
호스트로부터 볼륨의 제1 세그먼트에 대응하는 커맨드를 수신하고 - 상기 볼륨의 각각의 세그먼트에 대하여 그 세그먼트와 연관된 중복 데이터를 포함하는 대응하는 중복 세그먼트가 상기 세그먼트가 상주하는 데이터 뱅크와 동일한 데이터 뱅크에 상주하지 않도록, 상기 볼륨 및 볼륨과 공동으로 구현된 RAID 레벨에 대응하는 중복 데이터가 복수의 데이터 뱅크의 각각에 저장됨 - ,
상기 복수의 데이터 뱅크의 제1 데이터 뱅크 - 상기 제1 데이터 뱅크는 제1 세그먼트에 대응함 - 를 결정하고,
상기 제1 세그먼트에 대해 제1 커맨드를 실행하도록, 실행될 수 있으며,
상기 제1 커맨드는 상기 제1 데이터 뱅크상에서 실행되는 것인, 복수의 데이터 뱅크 컴퓨터에 분산 RAID를 구현하기 위한 컴퓨터에서 실행가능한 명령어를 포함하는 컴퓨터로 판독가능한 매체. - 제17 항에 있어서, 상기 볼륨의 각각의 세그먼트는 상기 복수의 데이터 뱅크 중의 하나에 대응하고, 각각의 세그먼트는 상기 복수의 데이터 뱅크의 순열에 따라 데이터 뱅크에 할당되며, 중복 세그먼트의 각각은 그 중복 세그먼트와 연관된 볼륨의 임의의 세그먼트에 대응하는 상기 복수의 데이터 뱅크의 각각과는 별개인 데이터 뱅크에 할당되는 것인, 복수의 데이터 뱅크 컴퓨터에 분산 RAID를 구현하기 위한 컴퓨터에서 실행가능한 명령어를 포함하는 컴퓨터로 판독가능한 매체.
- 제18 항에 있어서, 상기 컴퓨터에서 실행가능한 명령어는 또한, 상기 제1 커맨드가 기록 커맨드인지를 결정하고 만일 상기 제1 커맨드가 기록 커맨드이면 상기 복수의 데이터 뱅크의 제2 데이터 뱅크 - 상기 제2 데이터 뱅크는 상기 제1 세그먼트와 연관된 제1 중복 세그먼트에 대응함 - 를 결정하고, 중복 세그먼트에 대해 상기 제1 커맨드를 실행하도록, 실행될 수 있으며, 상기 제1 커맨드는 상기 제2 데이터 뱅크상에서 실행되는 것인, 복수의 데이터 뱅크 컴퓨터에 분산 RAID를 구현하기 위한 컴퓨터에서 실행가능한 명령어를 포함하는 컴퓨터로 판독가능한 매체.
- 제19 항에 있어서, 상기 제1 데이터 뱅크를 결정하는 것과 상기 제2 데이터 뱅크를 결정하는 것은 RAID 레벨 및 데이터 뱅크의 순열을 포함하는 글로벌 테이블을 액세스하는 것을 포함하는 것인, 복수의 데이터 뱅크 컴퓨터에 분산 RAID를 구현하기 위한 컴퓨터에서 실행가능한 명령어를 포함하는 컴퓨터로 판독가능한 매체.
Applications Claiming Priority (12)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13129108P | 2008-06-06 | 2008-06-06 | |
US13137908P | 2008-06-06 | 2008-06-06 | |
US13131408P | 2008-06-06 | 2008-06-06 | |
US13127008P | 2008-06-06 | 2008-06-06 | |
US13131208P | 2008-06-06 | 2008-06-06 | |
US13129008P | 2008-06-06 | 2008-06-06 | |
US61/131,379 | 2008-06-06 | ||
US61/131,270 | 2008-06-06 | ||
US61/131,291 | 2008-06-06 | ||
US61/131,290 | 2008-06-06 | ||
US61/131,314 | 2008-06-06 | ||
US61/131,312 | 2008-06-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20110031441A true KR20110031441A (ko) | 2011-03-28 |
Family
ID=41398559
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020107029904A KR20110031441A (ko) | 2008-06-06 | 2009-06-05 | 분산 raid 구현을 위한 방법 및 시스템 |
Country Status (9)
Country | Link |
---|---|
US (16) | US8082393B2 (ko) |
EP (2) | EP2645251A1 (ko) |
JP (2) | JP2011523144A (ko) |
KR (1) | KR20110031441A (ko) |
CN (1) | CN102099792A (ko) |
DK (1) | DK2304568T3 (ko) |
HK (1) | HK1154969A1 (ko) |
IL (1) | IL209571A (ko) |
WO (3) | WO2009149388A1 (ko) |
Families Citing this family (318)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9632722B2 (en) * | 2010-05-19 | 2017-04-25 | International Business Machines Corporation | Balancing storage unit utilization within a dispersed storage network |
US8489817B2 (en) | 2007-12-06 | 2013-07-16 | Fusion-Io, Inc. | Apparatus, system, and method for caching data |
CN101715575A (zh) | 2006-12-06 | 2010-05-26 | 弗森多系统公司(dba弗森-艾奥) | 采用数据管道管理数据的装置、系统和方法 |
US8719501B2 (en) | 2009-09-08 | 2014-05-06 | Fusion-Io | Apparatus, system, and method for caching data on a solid-state storage device |
US8935302B2 (en) | 2006-12-06 | 2015-01-13 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume |
US7836226B2 (en) | 2007-12-06 | 2010-11-16 | Fusion-Io, Inc. | Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment |
US9519540B2 (en) | 2007-12-06 | 2016-12-13 | Sandisk Technologies Llc | Apparatus, system, and method for destaging cached data |
US8886909B1 (en) | 2008-03-31 | 2014-11-11 | Emc Corporation | Methods, systems, and computer readable medium for allocating portions of physical storage in a storage array based on current or anticipated utilization of storage array resources |
EP2645251A1 (en) | 2008-06-06 | 2013-10-02 | Pivot3 | Method and system for distributed RAID implementation |
US8219750B2 (en) * | 2008-06-30 | 2012-07-10 | Pivot3 | Method and system for execution of applications in conjunction with distributed RAID |
US8176247B2 (en) * | 2008-10-28 | 2012-05-08 | Pivot3 | Method and system for protecting against multiple failures in a RAID system |
US9122579B2 (en) | 2010-01-06 | 2015-09-01 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for a storage layer |
WO2011031903A2 (en) * | 2009-09-09 | 2011-03-17 | Fusion-Io, Inc. | Apparatus, system, and method for allocating storage |
US20110078343A1 (en) * | 2009-09-29 | 2011-03-31 | Cleversafe, Inc. | Distributed storage network including memory diversity |
US8880843B2 (en) * | 2010-02-10 | 2014-11-04 | International Business Machines Corporation | Providing redundancy in a virtualized storage system for a computer system |
US9792181B2 (en) * | 2010-02-22 | 2017-10-17 | International Business Machines Corporation | Pool of devices providing operating system redundancy |
US8484536B1 (en) * | 2010-03-26 | 2013-07-09 | Google Inc. | Techniques for data storage, access, and maintenance |
US8924681B1 (en) * | 2010-03-31 | 2014-12-30 | Emc Corporation | Systems, methods, and computer readable media for an adaptative block allocation mechanism |
US9330105B1 (en) | 2010-05-07 | 2016-05-03 | Emc Corporation | Systems, methods, and computer readable media for lazy compression of data incoming to a data storage entity |
WO2011145137A1 (en) * | 2010-05-18 | 2011-11-24 | Hitachi, Ltd. | Storage apparatus and control method thereof for dynamic migration of small storage areas |
US8861727B2 (en) * | 2010-05-19 | 2014-10-14 | Cleversafe, Inc. | Storage of sensitive data in a dispersed storage network |
US8719675B1 (en) | 2010-06-16 | 2014-05-06 | Google Inc. | Orthogonal coding for data storage, access, and maintenance |
US9311002B1 (en) | 2010-06-29 | 2016-04-12 | Emc Corporation | Systems, methods, and computer readable media for compressing data at a virtually provisioned storage entity |
US10157002B2 (en) * | 2010-08-26 | 2018-12-18 | International Business Machines Corporation | Migrating an encoded data slice based on an end-of-life memory level of a memory device |
US8402230B2 (en) * | 2010-09-10 | 2013-03-19 | International Business Machines Corporation | Recoverability while adding storage to a redirect-on-write storage pool |
US11614893B2 (en) | 2010-09-15 | 2023-03-28 | Pure Storage, Inc. | Optimizing storage device access based on latency |
US12008266B2 (en) | 2010-09-15 | 2024-06-11 | Pure Storage, Inc. | Efficient read by reconstruction |
JP5614213B2 (ja) * | 2010-10-01 | 2014-10-29 | 日本電気株式会社 | 記憶領域提供装置、記憶領域提供方法、及び、記憶領域提供プログラム |
US20120239860A1 (en) | 2010-12-17 | 2012-09-20 | Fusion-Io, Inc. | Apparatus, system, and method for persistent data management on a non-volatile storage media |
US9348515B2 (en) * | 2011-01-17 | 2016-05-24 | Hitachi, Ltd. | Computer system, management computer and storage management method for managing data configuration based on statistical information |
US9003104B2 (en) | 2011-02-15 | 2015-04-07 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a file-level cache |
US8874823B2 (en) | 2011-02-15 | 2014-10-28 | Intellectual Property Holdings 2 Llc | Systems and methods for managing data input/output operations |
US9201677B2 (en) | 2011-05-23 | 2015-12-01 | Intelligent Intellectual Property Holdings 2 Llc | Managing data input/output operations |
US9141527B2 (en) | 2011-02-25 | 2015-09-22 | Intelligent Intellectual Property Holdings 2 Llc | Managing cache pools |
WO2012129191A2 (en) | 2011-03-18 | 2012-09-27 | Fusion-Io, Inc. | Logical interfaces for contextual storage |
US9563555B2 (en) | 2011-03-18 | 2017-02-07 | Sandisk Technologies Llc | Systems and methods for storage allocation |
US8527699B2 (en) * | 2011-04-25 | 2013-09-03 | Pivot3, Inc. | Method and system for distributed RAID implementation |
US20120278552A1 (en) * | 2011-04-28 | 2012-11-01 | Lsi Corporation | Remote execution of raid in large topologies |
US9003101B1 (en) * | 2011-06-29 | 2015-04-07 | Western Digital Technologies, Inc. | Prioritized access for media with heterogeneous access rates |
US9417823B2 (en) | 2011-07-12 | 2016-08-16 | Violin Memory Inc. | Memory system management |
US9335939B2 (en) | 2011-07-12 | 2016-05-10 | Violin Memory Inc. | RAIDed memory system |
GB2492981B (en) * | 2011-07-18 | 2014-03-26 | Qando Service Inc | Data reconstruction |
US8621317B1 (en) | 2011-07-25 | 2013-12-31 | Google Inc. | Modified orthogonal coding techniques for storing data |
US8589640B2 (en) | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
CN102955801B (zh) * | 2011-08-25 | 2017-06-16 | 中兴通讯股份有限公司 | 基于分布式数据库系统的数据控制方法及系统 |
US8615698B1 (en) | 2011-09-28 | 2013-12-24 | Google Inc. | Skewed orthogonal coding techniques |
JP5744244B2 (ja) * | 2011-10-19 | 2015-07-08 | 株式会社日立製作所 | ストレージシステム |
CA2890516C (en) | 2011-11-07 | 2018-11-27 | Nexgen Storage, Inc. | Primary data storage system with quality of service |
US9274937B2 (en) | 2011-12-22 | 2016-03-01 | Longitude Enterprise Flash S.A.R.L. | Systems, methods, and interfaces for vector input/output operations |
US9251086B2 (en) | 2012-01-24 | 2016-02-02 | SanDisk Technologies, Inc. | Apparatus, system, and method for managing a cache |
US9116812B2 (en) | 2012-01-27 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a de-duplication cache |
WO2013118194A1 (en) | 2012-02-10 | 2013-08-15 | Hitachi, Ltd. | Storage system with virtual volume having data arranged astride storage devices, and volume management method |
US8856619B1 (en) | 2012-03-09 | 2014-10-07 | Google Inc. | Storing data across groups of storage nodes |
JP6119736B2 (ja) * | 2012-03-19 | 2017-04-26 | 富士通株式会社 | データアクセス方法、プログラムおよびデータアクセス装置 |
US9110600B1 (en) | 2012-03-19 | 2015-08-18 | Amazon Technologies, Inc. | Triggered data shelving to a different storage system and storage deallocation |
US8954706B2 (en) * | 2012-03-21 | 2015-02-10 | Hitachi, Ltd. | Storage apparatus, computer system, and control method for storage apparatus |
WO2013157032A1 (en) * | 2012-04-16 | 2013-10-24 | Hitachi, Ltd. | Storage subsystem and data management method of storage subsystem |
US9823840B1 (en) * | 2012-05-07 | 2017-11-21 | Amazon Technologies, Inc. | Data volume placement techniques |
US9804993B1 (en) | 2012-05-07 | 2017-10-31 | Amazon Technologies, Inc. | Data volume placement techniques |
US9348769B2 (en) * | 2012-05-24 | 2016-05-24 | Red Hat, Inc. | Managing zeroed logical volume |
US9612966B2 (en) | 2012-07-03 | 2017-04-04 | Sandisk Technologies Llc | Systems, methods and apparatus for a virtual machine cache |
US10339056B2 (en) | 2012-07-03 | 2019-07-02 | Sandisk Technologies Llc | Systems, methods and apparatus for cache transfers |
US10346095B2 (en) | 2012-08-31 | 2019-07-09 | Sandisk Technologies, Llc | Systems, methods, and interfaces for adaptive cache persistence |
TWI471241B (zh) * | 2012-09-14 | 2015-02-01 | Automotive Res & Testing Ct | Brake back to charge control learning module, controller and controlled brake back to the car |
US10509776B2 (en) | 2012-09-24 | 2019-12-17 | Sandisk Technologies Llc | Time sequence data management |
US10318495B2 (en) | 2012-09-24 | 2019-06-11 | Sandisk Technologies Llc | Snapshots for a non-volatile device |
US9177177B1 (en) * | 2012-10-04 | 2015-11-03 | Symantec Corporation | Systems and methods for securing storage space |
US9135198B2 (en) | 2012-10-31 | 2015-09-15 | Avago Technologies General Ip (Singapore) Pte Ltd | Methods and structure for serial attached SCSI expanders that self-configure by setting routing attributes of their ports based on SMP requests |
US8782292B2 (en) * | 2012-10-31 | 2014-07-15 | Lsi Corporation | Methods and structure for performing a rebuild of a logical volume with a serial attached SCSI expander |
US8904119B2 (en) | 2012-10-31 | 2014-12-02 | Lsi Corporation | Method and structures for performing a migration of a logical volume with a serial attached SCSI expander |
US8904108B2 (en) | 2012-10-31 | 2014-12-02 | Lsi Corporation | Methods and structure establishing nested Redundant Array of Independent Disks volumes with an expander |
US9632889B2 (en) * | 2012-11-12 | 2017-04-25 | Oracle International Corporation | Method for the optimization of performance, capacity and redundancy in digital data storage systems |
CN103023992A (zh) * | 2012-11-28 | 2013-04-03 | 江苏乐买到网络科技有限公司 | 海量数据的分布式存储方法 |
US9286163B2 (en) | 2013-01-14 | 2016-03-15 | International Business Machines Corporation | Data recovery scheme based on data backup status |
US9842053B2 (en) | 2013-03-15 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for persistent cache logging |
US9235355B2 (en) | 2013-04-04 | 2016-01-12 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Reverse mirroring in raid level 1 |
US9298617B2 (en) | 2013-04-16 | 2016-03-29 | International Business Machines Corporation | Parallel destaging with replicated cache pinning |
US9298398B2 (en) | 2013-04-16 | 2016-03-29 | International Business Machines Corporation | Fine-grained control of data placement |
US9104332B2 (en) | 2013-04-16 | 2015-08-11 | International Business Machines Corporation | Managing metadata and data for a logical volume in a distributed and declustered system |
US9423981B2 (en) | 2013-04-16 | 2016-08-23 | International Business Machines Corporation | Logical region allocation with immediate availability |
US9329938B2 (en) | 2013-04-16 | 2016-05-03 | International Business Machines Corporation | Essential metadata replication |
US9104597B2 (en) * | 2013-04-16 | 2015-08-11 | International Business Machines Corporation | Destaging cache data using a distributed freezer |
US9619404B2 (en) | 2013-04-16 | 2017-04-11 | International Business Machines Corporation | Backup cache with immediate availability |
US10558561B2 (en) | 2013-04-16 | 2020-02-11 | Sandisk Technologies Llc | Systems and methods for storage metadata management |
US10102144B2 (en) | 2013-04-16 | 2018-10-16 | Sandisk Technologies Llc | Systems, methods and interfaces for data virtualization |
US9542126B2 (en) | 2013-04-22 | 2017-01-10 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Redundant array of independent disks systems that utilize spans with different storage device counts for a logical volume |
US10331375B1 (en) * | 2013-06-21 | 2019-06-25 | Amazon Technologies, Inc. | Data storage area cleaner |
US20150032798A1 (en) * | 2013-07-24 | 2015-01-29 | Alcatel-Lucent Canada Inc. | Method And Apparatus For Providing Redundant Data Access |
US9842128B2 (en) | 2013-08-01 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for atomic storage operations |
US10019320B2 (en) | 2013-10-18 | 2018-07-10 | Sandisk Technologies Llc | Systems and methods for distributed atomic storage operations |
GB2519815A (en) | 2013-10-31 | 2015-05-06 | Ibm | Writing data cross storage devices in an erasure-coded system |
US10073630B2 (en) | 2013-11-08 | 2018-09-11 | Sandisk Technologies Llc | Systems and methods for log coordination |
US9274901B2 (en) | 2013-11-20 | 2016-03-01 | Avago Technologies General Ip (Singapore) Pte. Ltd. | I/O request mirroring in a clustered storage system |
CN103605484B (zh) * | 2013-11-26 | 2016-10-26 | 华为技术有限公司 | 一种数据存储的方法和存储服务器 |
US9612745B2 (en) * | 2014-01-24 | 2017-04-04 | Silicon Graphics International Corp. | Raid set initialization |
WO2015116197A1 (en) * | 2014-01-31 | 2015-08-06 | Hewlett-Packard Development Company, L.P. | Storing data based on a write allocation policy |
US9547448B2 (en) * | 2014-02-24 | 2017-01-17 | Netapp, Inc. | System and method for transposed storage in raid arrays |
KR102318478B1 (ko) * | 2014-04-21 | 2021-10-27 | 삼성전자주식회사 | 스토리지 컨트롤러, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법 |
US10574754B1 (en) | 2014-06-04 | 2020-02-25 | Pure Storage, Inc. | Multi-chassis array with multi-level load balancing |
US11399063B2 (en) | 2014-06-04 | 2022-07-26 | Pure Storage, Inc. | Network authentication for a storage system |
US11960371B2 (en) | 2014-06-04 | 2024-04-16 | Pure Storage, Inc. | Message persistence in a zoned system |
US11652884B2 (en) | 2014-06-04 | 2023-05-16 | Pure Storage, Inc. | Customized hash algorithms |
US8850108B1 (en) | 2014-06-04 | 2014-09-30 | Pure Storage, Inc. | Storage cluster |
US9612952B2 (en) * | 2014-06-04 | 2017-04-04 | Pure Storage, Inc. | Automatically reconfiguring a storage memory topology |
US11068363B1 (en) | 2014-06-04 | 2021-07-20 | Pure Storage, Inc. | Proactively rebuilding data in a storage cluster |
US9003144B1 (en) | 2014-06-04 | 2015-04-07 | Pure Storage, Inc. | Mechanism for persisting messages in a storage system |
US9836234B2 (en) | 2014-06-04 | 2017-12-05 | Pure Storage, Inc. | Storage cluster |
US9213485B1 (en) | 2014-06-04 | 2015-12-15 | Pure Storage, Inc. | Storage system architecture |
US9218244B1 (en) | 2014-06-04 | 2015-12-22 | Pure Storage, Inc. | Rebuilding data across storage nodes |
US9367243B1 (en) | 2014-06-04 | 2016-06-14 | Pure Storage, Inc. | Scalable non-uniform storage sizes |
US10114757B2 (en) | 2014-07-02 | 2018-10-30 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US9836245B2 (en) | 2014-07-02 | 2017-12-05 | Pure Storage, Inc. | Non-volatile RAM and flash memory in a non-volatile solid-state storage |
US8868825B1 (en) | 2014-07-02 | 2014-10-21 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US9021297B1 (en) | 2014-07-02 | 2015-04-28 | Pure Storage, Inc. | Redundant, fault-tolerant, distributed remote procedure call cache in a storage system |
US11604598B2 (en) | 2014-07-02 | 2023-03-14 | Pure Storage, Inc. | Storage cluster with zoned drives |
US11886308B2 (en) | 2014-07-02 | 2024-01-30 | Pure Storage, Inc. | Dual class of service for unified file and object messaging |
US9811677B2 (en) | 2014-07-03 | 2017-11-07 | Pure Storage, Inc. | Secure data replication in a storage grid |
US9747229B1 (en) | 2014-07-03 | 2017-08-29 | Pure Storage, Inc. | Self-describing data format for DMA in a non-volatile solid-state storage |
US8874836B1 (en) | 2014-07-03 | 2014-10-28 | Pure Storage, Inc. | Scheduling policy for queues in a non-volatile solid-state storage |
US10853311B1 (en) | 2014-07-03 | 2020-12-01 | Pure Storage, Inc. | Administration through files in a storage system |
US9372630B2 (en) | 2014-07-09 | 2016-06-21 | International Business Machines Corporation | Migration of newly allocated data to a storage tier |
US9588843B2 (en) | 2014-07-14 | 2017-03-07 | International Business Machines Corporation | System and method for transferring traditional RAID to distributed array |
WO2016018383A1 (en) | 2014-07-31 | 2016-02-04 | Hewlett-Packard Development Company | Live migration of data |
US9766972B2 (en) | 2014-08-07 | 2017-09-19 | Pure Storage, Inc. | Masking defective bits in a storage array |
US10983859B2 (en) | 2014-08-07 | 2021-04-20 | Pure Storage, Inc. | Adjustable error correction based on memory health in a storage unit |
US9495255B2 (en) | 2014-08-07 | 2016-11-15 | Pure Storage, Inc. | Error recovery in a storage cluster |
US9558069B2 (en) | 2014-08-07 | 2017-01-31 | Pure Storage, Inc. | Failure mapping in a storage array |
US9082512B1 (en) | 2014-08-07 | 2015-07-14 | Pure Storage, Inc. | Die-level monitoring in a storage cluster |
US9483346B2 (en) | 2014-08-07 | 2016-11-01 | Pure Storage, Inc. | Data rebuild on feedback from a queue in a non-volatile solid-state storage |
US10079711B1 (en) | 2014-08-20 | 2018-09-18 | Pure Storage, Inc. | Virtual file server with preserved MAC address |
US10372627B2 (en) | 2014-08-25 | 2019-08-06 | Western Digital Technologies, Inc. | Method to generate pattern data over garbage data when encryption parameters are changed |
US9298647B2 (en) | 2014-08-25 | 2016-03-29 | HGST Netherlands B.V. | Method and apparatus to generate zero content over garbage data when encryption parameters are changed |
WO2016036347A1 (en) | 2014-09-02 | 2016-03-10 | Hewlett Packard Enterprise Development Lp | Serializing access to fault tolerant memory |
WO2016064417A1 (en) | 2014-10-24 | 2016-04-28 | Hewlett Packard Enterprise Development Lp | End-to-end negative acknowledgment |
CN105739909A (zh) * | 2014-12-11 | 2016-07-06 | 国际商业机器公司 | 分布式存储系统中基于时间的数据放置方法和装置 |
WO2016098202A1 (ja) * | 2014-12-17 | 2016-06-23 | 株式会社日立製作所 | ストレージ装置およびその制御方法 |
US10664369B2 (en) | 2015-01-30 | 2020-05-26 | Hewlett Packard Enterprise Development Lp | Determine failed components in fault-tolerant memory |
WO2016122610A1 (en) | 2015-01-30 | 2016-08-04 | Hewlett Packard Enterprise Development Lp | Preventing data corruption and single point of failure in a fault-tolerant memory |
WO2016122637A1 (en) | 2015-01-30 | 2016-08-04 | Hewlett Packard Enterprise Development Lp | Non-idempotent primitives in fault-tolerant memory |
US9946607B2 (en) | 2015-03-04 | 2018-04-17 | Sandisk Technologies Llc | Systems and methods for storage error management |
US9678665B2 (en) * | 2015-03-06 | 2017-06-13 | Western Digital Technologies, Inc. | Methods and systems for memory page allocation |
US10715460B2 (en) | 2015-03-09 | 2020-07-14 | Amazon Technologies, Inc. | Opportunistic resource migration to optimize resource placement |
US9948615B1 (en) | 2015-03-16 | 2018-04-17 | Pure Storage, Inc. | Increased storage unit encryption based on loss of trust |
US11294893B2 (en) | 2015-03-20 | 2022-04-05 | Pure Storage, Inc. | Aggregation of queries |
US9940234B2 (en) | 2015-03-26 | 2018-04-10 | Pure Storage, Inc. | Aggressive data deduplication using lazy garbage collection |
US10082985B2 (en) | 2015-03-27 | 2018-09-25 | Pure Storage, Inc. | Data striping across storage nodes that are assigned to multiple logical arrays |
US10402261B2 (en) | 2015-03-31 | 2019-09-03 | Hewlett Packard Enterprise Development Lp | Preventing data corruption and single point of failure in fault-tolerant memory fabrics |
US10178169B2 (en) | 2015-04-09 | 2019-01-08 | Pure Storage, Inc. | Point to point based backend communication layer for storage processing |
US9672125B2 (en) | 2015-04-10 | 2017-06-06 | Pure Storage, Inc. | Ability to partition an array into two or more logical arrays with independently running software |
US10140149B1 (en) | 2015-05-19 | 2018-11-27 | Pure Storage, Inc. | Transactional commits with hardware assists in remote memory |
US9817576B2 (en) | 2015-05-27 | 2017-11-14 | Pure Storage, Inc. | Parallel update to NVRAM |
US10846275B2 (en) | 2015-06-26 | 2020-11-24 | Pure Storage, Inc. | Key management in a storage device |
US10983732B2 (en) | 2015-07-13 | 2021-04-20 | Pure Storage, Inc. | Method and system for accessing a file |
US11232079B2 (en) | 2015-07-16 | 2022-01-25 | Pure Storage, Inc. | Efficient distribution of large directories |
US10108355B2 (en) | 2015-09-01 | 2018-10-23 | Pure Storage, Inc. | Erase block state detection |
US11341136B2 (en) | 2015-09-04 | 2022-05-24 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US11269884B2 (en) | 2015-09-04 | 2022-03-08 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US10762069B2 (en) | 2015-09-30 | 2020-09-01 | Pure Storage, Inc. | Mechanism for a system where data and metadata are located closely together |
US10853266B2 (en) | 2015-09-30 | 2020-12-01 | Pure Storage, Inc. | Hardware assisted data lookup methods |
US9768953B2 (en) | 2015-09-30 | 2017-09-19 | Pure Storage, Inc. | Resharing of a split secret |
CN106569728B (zh) * | 2015-10-09 | 2021-02-23 | 中兴通讯股份有限公司 | 多磁盘阵列raid共享写缓存的处理方法及装置 |
US9843453B2 (en) | 2015-10-23 | 2017-12-12 | Pure Storage, Inc. | Authorizing I/O commands with I/O tokens |
US10007457B2 (en) | 2015-12-22 | 2018-06-26 | Pure Storage, Inc. | Distributed transactions with token-associated execution |
US10482071B1 (en) * | 2016-01-26 | 2019-11-19 | Pure Storage, Inc. | Systems and methods for providing metrics for a plurality of storage entities of a multi-array data storage system |
US10261690B1 (en) | 2016-05-03 | 2019-04-16 | Pure Storage, Inc. | Systems and methods for operating a storage system |
US11231858B2 (en) | 2016-05-19 | 2022-01-25 | Pure Storage, Inc. | Dynamically configuring a storage system to facilitate independent scaling of resources |
US10691567B2 (en) | 2016-06-03 | 2020-06-23 | Pure Storage, Inc. | Dynamically forming a failure domain in a storage system that includes a plurality of blades |
US11861188B2 (en) | 2016-07-19 | 2024-01-02 | Pure Storage, Inc. | System having modular accelerators |
US11706895B2 (en) | 2016-07-19 | 2023-07-18 | Pure Storage, Inc. | Independent scaling of compute resources and storage resources in a storage system |
US10768819B2 (en) | 2016-07-22 | 2020-09-08 | Pure Storage, Inc. | Hardware support for non-disruptive upgrades |
US9672905B1 (en) | 2016-07-22 | 2017-06-06 | Pure Storage, Inc. | Optimize data protection layouts based on distributed flash wear leveling |
US11449232B1 (en) | 2016-07-22 | 2022-09-20 | Pure Storage, Inc. | Optimal scheduling of flash operations |
US11080155B2 (en) | 2016-07-24 | 2021-08-03 | Pure Storage, Inc. | Identifying error types among flash memory |
US11604690B2 (en) | 2016-07-24 | 2023-03-14 | Pure Storage, Inc. | Online failure span determination |
US10216420B1 (en) | 2016-07-24 | 2019-02-26 | Pure Storage, Inc. | Calibration of flash channels in SSD |
US11886334B2 (en) | 2016-07-26 | 2024-01-30 | Pure Storage, Inc. | Optimizing spool and memory space management |
US11797212B2 (en) | 2016-07-26 | 2023-10-24 | Pure Storage, Inc. | Data migration for zoned drives |
US10203903B2 (en) | 2016-07-26 | 2019-02-12 | Pure Storage, Inc. | Geometry based, space aware shelf/writegroup evacuation |
US11734169B2 (en) | 2016-07-26 | 2023-08-22 | Pure Storage, Inc. | Optimizing spool and memory space management |
US10366004B2 (en) | 2016-07-26 | 2019-07-30 | Pure Storage, Inc. | Storage system with elective garbage collection to reduce flash contention |
US11422719B2 (en) | 2016-09-15 | 2022-08-23 | Pure Storage, Inc. | Distributed file deletion and truncation |
CN109313593B (zh) * | 2016-09-16 | 2022-03-01 | 株式会社日立制作所 | 存储系统 |
US10193634B2 (en) | 2016-09-19 | 2019-01-29 | Hewlett Packard Enterprise Development Lp | Optical driver circuits |
US12039165B2 (en) | 2016-10-04 | 2024-07-16 | Pure Storage, Inc. | Utilizing allocation shares to improve parallelism in a zoned drive storage system |
US10756816B1 (en) | 2016-10-04 | 2020-08-25 | Pure Storage, Inc. | Optimized fibre channel and non-volatile memory express access |
US9747039B1 (en) | 2016-10-04 | 2017-08-29 | Pure Storage, Inc. | Reservations over multiple paths on NVMe over fabrics |
US10613974B2 (en) | 2016-10-04 | 2020-04-07 | Pure Storage, Inc. | Peer-to-peer non-volatile random-access memory |
KR102631351B1 (ko) | 2016-10-07 | 2024-01-31 | 삼성전자주식회사 | 피어-투 피어 통신을 수행할 수 있는 저장 장치와 이를 포함하는 데이터 저장 시스템 |
US10481798B2 (en) | 2016-10-28 | 2019-11-19 | Pure Storage, Inc. | Efficient flash management for multiple controllers |
US11550481B2 (en) | 2016-12-19 | 2023-01-10 | Pure Storage, Inc. | Efficiently writing data in a zoned drive storage system |
CN108228647B (zh) | 2016-12-21 | 2022-05-24 | 伊姆西Ip控股有限责任公司 | 用于数据拷贝的方法和设备 |
US10089015B1 (en) * | 2016-12-28 | 2018-10-02 | EMC IP Holding Company LLC | Per-drive memory resident zeroing maps for drive zeroing in a data storage system |
US11307998B2 (en) | 2017-01-09 | 2022-04-19 | Pure Storage, Inc. | Storage efficiency of encrypted host system data |
US11955187B2 (en) | 2017-01-13 | 2024-04-09 | Pure Storage, Inc. | Refresh of differing capacity NAND |
US9747158B1 (en) | 2017-01-13 | 2017-08-29 | Pure Storage, Inc. | Intelligent refresh of 3D NAND |
US10162531B2 (en) | 2017-01-21 | 2018-12-25 | International Business Machines Corporation | Physical allocation unit optimization |
US10459663B2 (en) | 2017-01-23 | 2019-10-29 | International Business Machines Corporation | Thin provisioning of raid storage |
US10979223B2 (en) | 2017-01-31 | 2021-04-13 | Pure Storage, Inc. | Separate encryption for a solid-state drive |
US10210063B2 (en) | 2017-02-05 | 2019-02-19 | International Business Machines Corporation | Disk array storage controller |
US10528488B1 (en) | 2017-03-30 | 2020-01-07 | Pure Storage, Inc. | Efficient name coding |
US11016667B1 (en) | 2017-04-05 | 2021-05-25 | Pure Storage, Inc. | Efficient mapping for LUNs in storage memory with holes in address space |
US10944671B2 (en) | 2017-04-27 | 2021-03-09 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
US10516645B1 (en) | 2017-04-27 | 2019-12-24 | Pure Storage, Inc. | Address resolution broadcasting in a networked device |
US10141050B1 (en) | 2017-04-27 | 2018-11-27 | Pure Storage, Inc. | Page writes for triple level cell flash memory |
US10409521B1 (en) * | 2017-04-28 | 2019-09-10 | EMC IP Holding Company LLC | Block-based backups for large-scale volumes |
US11467913B1 (en) | 2017-06-07 | 2022-10-11 | Pure Storage, Inc. | Snapshots with crash consistency in a storage system |
US11947814B2 (en) | 2017-06-11 | 2024-04-02 | Pure Storage, Inc. | Optimizing resiliency group formation stability |
US11782625B2 (en) | 2017-06-11 | 2023-10-10 | Pure Storage, Inc. | Heterogeneity supportive resiliency groups |
US11138103B1 (en) | 2017-06-11 | 2021-10-05 | Pure Storage, Inc. | Resiliency groups |
US10389342B2 (en) | 2017-06-28 | 2019-08-20 | Hewlett Packard Enterprise Development Lp | Comparator |
US10425473B1 (en) | 2017-07-03 | 2019-09-24 | Pure Storage, Inc. | Stateful connection reset in a storage cluster with a stateless load balancer |
US10402266B1 (en) | 2017-07-31 | 2019-09-03 | Pure Storage, Inc. | Redundant array of independent disks in a direct-mapped flash storage system |
US10831935B2 (en) | 2017-08-31 | 2020-11-10 | Pure Storage, Inc. | Encryption management with host-side data reduction |
US10210926B1 (en) | 2017-09-15 | 2019-02-19 | Pure Storage, Inc. | Tracking of optimum read voltage thresholds in nand flash devices |
US10877827B2 (en) | 2017-09-15 | 2020-12-29 | Pure Storage, Inc. | Read voltage optimization |
US11520514B2 (en) | 2018-09-06 | 2022-12-06 | Pure Storage, Inc. | Optimized relocation of data based on data characteristics |
US12032848B2 (en) | 2021-06-21 | 2024-07-09 | Pure Storage, Inc. | Intelligent block allocation in a heterogeneous storage system |
US10545687B1 (en) | 2017-10-31 | 2020-01-28 | Pure Storage, Inc. | Data rebuild when changing erase block sizes during drive replacement |
US12067274B2 (en) | 2018-09-06 | 2024-08-20 | Pure Storage, Inc. | Writing segments and erase blocks based on ordering |
US10515701B1 (en) | 2017-10-31 | 2019-12-24 | Pure Storage, Inc. | Overlapping raid groups |
US11354058B2 (en) | 2018-09-06 | 2022-06-07 | Pure Storage, Inc. | Local relocation of data stored at a storage device of a storage system |
US11024390B1 (en) | 2017-10-31 | 2021-06-01 | Pure Storage, Inc. | Overlapping RAID groups |
US10496330B1 (en) | 2017-10-31 | 2019-12-03 | Pure Storage, Inc. | Using flash storage devices with different sized erase blocks |
US10884919B2 (en) | 2017-10-31 | 2021-01-05 | Pure Storage, Inc. | Memory management in a storage system |
US10860475B1 (en) | 2017-11-17 | 2020-12-08 | Pure Storage, Inc. | Hybrid flash translation layer |
US10990566B1 (en) | 2017-11-20 | 2021-04-27 | Pure Storage, Inc. | Persistent file locks in a storage system |
US10929053B2 (en) | 2017-12-08 | 2021-02-23 | Pure Storage, Inc. | Safe destructive actions on drives |
US10719265B1 (en) | 2017-12-08 | 2020-07-21 | Pure Storage, Inc. | Centralized, quorum-aware handling of device reservation requests in a storage system |
US10929031B2 (en) | 2017-12-21 | 2021-02-23 | Pure Storage, Inc. | Maximizing data reduction in a partially encrypted volume |
US10976948B1 (en) | 2018-01-31 | 2021-04-13 | Pure Storage, Inc. | Cluster expansion mechanism |
US10467527B1 (en) | 2018-01-31 | 2019-11-05 | Pure Storage, Inc. | Method and apparatus for artificial intelligence acceleration |
US10733053B1 (en) | 2018-01-31 | 2020-08-04 | Pure Storage, Inc. | Disaster recovery for high-bandwidth distributed archives |
US11036596B1 (en) | 2018-02-18 | 2021-06-15 | Pure Storage, Inc. | System for delaying acknowledgements on open NAND locations until durability has been confirmed |
US11494109B1 (en) | 2018-02-22 | 2022-11-08 | Pure Storage, Inc. | Erase block trimming for heterogenous flash memory storage devices |
US12001688B2 (en) | 2019-04-29 | 2024-06-04 | Pure Storage, Inc. | Utilizing data views to optimize secure data access in a storage system |
US11995336B2 (en) | 2018-04-25 | 2024-05-28 | Pure Storage, Inc. | Bucket views |
US10931450B1 (en) | 2018-04-27 | 2021-02-23 | Pure Storage, Inc. | Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers |
US11385792B2 (en) | 2018-04-27 | 2022-07-12 | Pure Storage, Inc. | High availability controller pair transitioning |
US10853146B1 (en) | 2018-04-27 | 2020-12-01 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
US12079494B2 (en) | 2018-04-27 | 2024-09-03 | Pure Storage, Inc. | Optimizing storage system upgrades to preserve resources |
WO2019222958A1 (en) | 2018-05-24 | 2019-11-28 | Alibaba Group Holding Limited | System and method for flash storage management using multiple open page stripes |
US11436023B2 (en) | 2018-05-31 | 2022-09-06 | Pure Storage, Inc. | Mechanism for updating host file system and flash translation layer based on underlying NAND technology |
WO2020000136A1 (en) | 2018-06-25 | 2020-01-02 | Alibaba Group Holding Limited | System and method for managing resources of a storage device and quantifying the cost of i/o requests |
US11121981B1 (en) | 2018-06-29 | 2021-09-14 | Amazon Technologies, Inc. | Optimistically granting permission to host computing resources |
US11438279B2 (en) | 2018-07-23 | 2022-09-06 | Pure Storage, Inc. | Non-disruptive conversion of a clustered service from single-chassis to multi-chassis |
US10831603B2 (en) | 2018-08-03 | 2020-11-10 | Western Digital Technologies, Inc. | Rebuild assist using failed storage device |
US10824526B2 (en) | 2018-08-03 | 2020-11-03 | Western Digital Technologies, Inc. | Using failed storage device in peer-to-peer storage system to perform storage-centric task |
US10649843B2 (en) | 2018-08-03 | 2020-05-12 | Western Digital Technologies, Inc. | Storage systems with peer data scrub |
US10901848B2 (en) | 2018-08-03 | 2021-01-26 | Western Digital Technologies, Inc. | Storage systems with peer data recovery |
US11868309B2 (en) | 2018-09-06 | 2024-01-09 | Pure Storage, Inc. | Queue management for data relocation |
US11500570B2 (en) | 2018-09-06 | 2022-11-15 | Pure Storage, Inc. | Efficient relocation of data utilizing different programming modes |
US11327929B2 (en) | 2018-09-17 | 2022-05-10 | Alibaba Group Holding Limited | Method and system for reduced data movement compression using in-storage computing and a customized file system |
US10454498B1 (en) | 2018-10-18 | 2019-10-22 | Pure Storage, Inc. | Fully pipelined hardware engine design for fast and efficient inline lossless data compression |
US10976947B2 (en) | 2018-10-26 | 2021-04-13 | Pure Storage, Inc. | Dynamically selecting segment heights in a heterogeneous RAID group |
US10891066B2 (en) | 2018-12-28 | 2021-01-12 | Intelliflash By Ddn, Inc. | Data redundancy reconfiguration using logical subunits |
US11061735B2 (en) | 2019-01-02 | 2021-07-13 | Alibaba Group Holding Limited | System and method for offloading computation to storage nodes in distributed system |
US11182258B2 (en) | 2019-01-04 | 2021-11-23 | Western Digital Technologies, Inc. | Data rebuild using dynamic peer work allocation |
US11003559B2 (en) | 2019-03-26 | 2021-05-11 | International Business Machines Corporation | Underperforming drive handling in redundant arrays |
US11334254B2 (en) | 2019-03-29 | 2022-05-17 | Pure Storage, Inc. | Reliability based flash page sizing |
US11775189B2 (en) | 2019-04-03 | 2023-10-03 | Pure Storage, Inc. | Segment level heterogeneity |
US12087382B2 (en) | 2019-04-11 | 2024-09-10 | Pure Storage, Inc. | Adaptive threshold for bad flash memory blocks |
US11099986B2 (en) | 2019-04-12 | 2021-08-24 | Pure Storage, Inc. | Efficient transfer of memory contents |
CN110321075B (zh) * | 2019-05-31 | 2023-05-23 | 平安科技(深圳)有限公司 | 基于nbd设备的数据迁移方法、装置、设备及存储介质 |
CN110333823B (zh) * | 2019-05-31 | 2023-07-07 | 平安科技(深圳)有限公司 | 基于nbd设备的数据迁移方法、装置、设备及存储介质 |
US11487665B2 (en) | 2019-06-05 | 2022-11-01 | Pure Storage, Inc. | Tiered caching of data in a storage system |
US11714572B2 (en) | 2019-06-19 | 2023-08-01 | Pure Storage, Inc. | Optimized data resiliency in a modular storage system |
US11281394B2 (en) | 2019-06-24 | 2022-03-22 | Pure Storage, Inc. | Replication across partitioning schemes in a distributed storage system |
US10860223B1 (en) | 2019-07-18 | 2020-12-08 | Alibaba Group Holding Limited | Method and system for enhancing a distributed storage system by decoupling computation and network tasks |
US11620233B1 (en) * | 2019-09-30 | 2023-04-04 | Amazon Technologies, Inc. | Memory data migration hardware |
US11617282B2 (en) | 2019-10-01 | 2023-03-28 | Alibaba Group Holding Limited | System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers |
US11893126B2 (en) | 2019-10-14 | 2024-02-06 | Pure Storage, Inc. | Data deletion for a multi-tenant environment |
US11704192B2 (en) | 2019-12-12 | 2023-07-18 | Pure Storage, Inc. | Budgeting open blocks based on power loss protection |
US11416144B2 (en) | 2019-12-12 | 2022-08-16 | Pure Storage, Inc. | Dynamic use of segment or zone power loss protection in a flash device |
US12001684B2 (en) | 2019-12-12 | 2024-06-04 | Pure Storage, Inc. | Optimizing dynamic power loss protection adjustment in a storage system |
US11847331B2 (en) | 2019-12-12 | 2023-12-19 | Pure Storage, Inc. | Budgeting open blocks of a storage unit based on power loss prevention |
US11055190B1 (en) * | 2020-01-03 | 2021-07-06 | Alibaba Group Holding Limited | System and method for facilitating storage system operation with global mapping to provide maintenance without a service interrupt |
US11449455B2 (en) | 2020-01-15 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility |
US11379447B2 (en) | 2020-02-06 | 2022-07-05 | Alibaba Group Holding Limited | Method and system for enhancing IOPS of a hard disk drive system based on storing metadata in host volatile memory and data in non-volatile memory using a shared controller |
US11188432B2 (en) | 2020-02-28 | 2021-11-30 | Pure Storage, Inc. | Data resiliency by partially deallocating data blocks of a storage device |
US11316917B2 (en) * | 2020-03-04 | 2022-04-26 | Samsung Electronics Co., Ltd. | Methods and apparatus for peer-to-peer data channels for storage devices |
US11449386B2 (en) | 2020-03-20 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for optimizing persistent memory on data retention, endurance, and performance for host memory |
US11507297B2 (en) | 2020-04-15 | 2022-11-22 | Pure Storage, Inc. | Efficient management of optimal read levels for flash storage systems |
US11256587B2 (en) | 2020-04-17 | 2022-02-22 | Pure Storage, Inc. | Intelligent access to a storage device |
US11385833B2 (en) | 2020-04-20 | 2022-07-12 | Alibaba Group Holding Limited | Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources |
US11301173B2 (en) | 2020-04-20 | 2022-04-12 | Alibaba Group Holding Limited | Method and system for facilitating evaluation of data access frequency and allocation of storage device resources |
US11416338B2 (en) | 2020-04-24 | 2022-08-16 | Pure Storage, Inc. | Resiliency scheme to enhance storage performance |
US11474986B2 (en) | 2020-04-24 | 2022-10-18 | Pure Storage, Inc. | Utilizing machine learning to streamline telemetry processing of storage media |
US12056365B2 (en) | 2020-04-24 | 2024-08-06 | Pure Storage, Inc. | Resiliency for a storage system |
US11281575B2 (en) | 2020-05-11 | 2022-03-22 | Alibaba Group Holding Limited | Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks |
US11494115B2 (en) | 2020-05-13 | 2022-11-08 | Alibaba Group Holding Limited | System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC) |
US11461262B2 (en) | 2020-05-13 | 2022-10-04 | Alibaba Group Holding Limited | Method and system for facilitating a converged computation and storage node in a distributed storage system |
US11556277B2 (en) | 2020-05-19 | 2023-01-17 | Alibaba Group Holding Limited | System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification |
US11507499B2 (en) | 2020-05-19 | 2022-11-22 | Alibaba Group Holding Limited | System and method for facilitating mitigation of read/write amplification in data compression |
US11263132B2 (en) | 2020-06-11 | 2022-03-01 | Alibaba Group Holding Limited | Method and system for facilitating log-structure data organization |
US11354200B2 (en) | 2020-06-17 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating data recovery and version rollback in a storage device |
US11422931B2 (en) | 2020-06-17 | 2022-08-23 | Alibaba Group Holding Limited | Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization |
US11768763B2 (en) | 2020-07-08 | 2023-09-26 | Pure Storage, Inc. | Flash secure erase |
US11354233B2 (en) | 2020-07-27 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating fast crash recovery in a storage device |
US11372774B2 (en) | 2020-08-24 | 2022-06-28 | Alibaba Group Holding Limited | Method and system for a solid state drive with on-chip memory integration |
US11681448B2 (en) | 2020-09-08 | 2023-06-20 | Pure Storage, Inc. | Multiple device IDs in a multi-fabric module storage system |
US11513974B2 (en) | 2020-09-08 | 2022-11-29 | Pure Storage, Inc. | Using nonce to control erasure of data blocks of a multi-controller storage system |
US11487465B2 (en) | 2020-12-11 | 2022-11-01 | Alibaba Group Holding Limited | Method and system for a local storage engine collaborating with a solid state drive controller |
US11487455B2 (en) | 2020-12-17 | 2022-11-01 | Pure Storage, Inc. | Dynamic block allocation to optimize storage system performance |
US11734115B2 (en) | 2020-12-28 | 2023-08-22 | Alibaba Group Holding Limited | Method and system for facilitating write latency reduction in a queue depth of one scenario |
US11416365B2 (en) | 2020-12-30 | 2022-08-16 | Alibaba Group Holding Limited | Method and system for open NAND block detection and correction in an open-channel SSD |
US11614880B2 (en) | 2020-12-31 | 2023-03-28 | Pure Storage, Inc. | Storage system with selectable write paths |
US12093545B2 (en) | 2020-12-31 | 2024-09-17 | Pure Storage, Inc. | Storage system with selectable write modes |
US12067282B2 (en) | 2020-12-31 | 2024-08-20 | Pure Storage, Inc. | Write path selection |
US11847324B2 (en) | 2020-12-31 | 2023-12-19 | Pure Storage, Inc. | Optimizing resiliency groups for data regions of a storage system |
US12061814B2 (en) | 2021-01-25 | 2024-08-13 | Pure Storage, Inc. | Using data similarity to select segments for garbage collection |
US11630593B2 (en) | 2021-03-12 | 2023-04-18 | Pure Storage, Inc. | Inline flash memory qualification in a storage system |
US12099742B2 (en) | 2021-03-15 | 2024-09-24 | Pure Storage, Inc. | Utilizing programming page size granularity to optimize data segment storage in a storage system |
US11726699B2 (en) | 2021-03-30 | 2023-08-15 | Alibaba Singapore Holding Private Limited | Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification |
US11507597B2 (en) | 2021-03-31 | 2022-11-22 | Pure Storage, Inc. | Data replication to meet a recovery point objective |
US11461173B1 (en) | 2021-04-21 | 2022-10-04 | Alibaba Singapore Holding Private Limited | Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement |
US11476874B1 (en) | 2021-05-14 | 2022-10-18 | Alibaba Singapore Holding Private Limited | Method and system for facilitating a storage server with hybrid memory for journaling and data storage |
US11832410B2 (en) | 2021-09-14 | 2023-11-28 | Pure Storage, Inc. | Mechanical energy absorbing bracket apparatus |
US11994723B2 (en) | 2021-12-30 | 2024-05-28 | Pure Storage, Inc. | Ribbon cable alignment apparatus |
Family Cites Families (66)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3160106B2 (ja) * | 1991-12-23 | 2001-04-23 | ヒュンダイ エレクトロニクス アメリカ | ディスクアレーの区分け方法 |
JPH05324579A (ja) * | 1992-05-25 | 1993-12-07 | Hitachi Ltd | 分散ファイルシステム及び記憶装置 |
JP2766424B2 (ja) | 1992-06-04 | 1998-06-18 | 三菱電機株式会社 | 論理ボリューム装置 |
JPH07261945A (ja) * | 1994-03-17 | 1995-10-13 | Hitachi Ltd | ディスクアレイ装置およびディスクアレイの区分け方法 |
US6449730B2 (en) * | 1995-10-24 | 2002-09-10 | Seachange Technology, Inc. | Loosely coupled mass storage computer cluster |
US6601138B2 (en) | 1998-06-05 | 2003-07-29 | International Business Machines Corporation | Apparatus system and method for N-way RAID controller having improved performance and fault tolerance |
JP3736134B2 (ja) | 1998-08-28 | 2006-01-18 | 日本電信電話株式会社 | 分散記憶方法及び分散記憶システム及び分散記憶プログラムを記録した記録媒体 |
US6370605B1 (en) | 1999-03-04 | 2002-04-09 | Sun Microsystems, Inc. | Switch based scalable performance storage architecture |
US7000069B2 (en) | 1999-04-05 | 2006-02-14 | Hewlett-Packard Development Company, L.P. | Apparatus and method for providing very large virtual storage volumes using redundant arrays of disks |
US6304942B1 (en) | 1999-08-09 | 2001-10-16 | Lsi Logic Corporation | Providing an upgrade path for an existing data storage system |
US20010044879A1 (en) * | 2000-02-18 | 2001-11-22 | Moulton Gregory Hagan | System and method for distributed management of data storage |
US6957313B2 (en) * | 2000-12-01 | 2005-10-18 | Hsia James R | Memory matrix and method of operating the same |
US6895485B1 (en) | 2000-12-07 | 2005-05-17 | Lsi Logic Corporation | Configuring and monitoring data volumes in a consolidated storage array using one storage array to configure the other storage arrays |
US7058788B2 (en) | 2001-02-23 | 2006-06-06 | Falconstor Software, Inc. | Dynamic allocation of computer memory |
US7076510B2 (en) * | 2001-07-12 | 2006-07-11 | Brown William P | Software raid methods and apparatuses including server usage based write delegation |
US7644136B2 (en) | 2001-11-28 | 2010-01-05 | Interactive Content Engines, Llc. | Virtual file system |
US7096328B2 (en) * | 2002-01-25 | 2006-08-22 | University Of Southern California | Pseudorandom data storage |
US6757790B2 (en) * | 2002-02-19 | 2004-06-29 | Emc Corporation | Distributed, scalable data storage facility with cache memory |
US6901499B2 (en) * | 2002-02-27 | 2005-05-31 | Microsoft Corp. | System and method for tracking data stored in a flash memory device |
US20040177218A1 (en) | 2002-11-06 | 2004-09-09 | Meehan Thomas F. | Multiple level raid architecture |
WO2004046971A1 (en) | 2002-11-14 | 2004-06-03 | Isilon Systems, Inc. | Systems and methods for restriping files in a distributed file system |
US7032086B2 (en) | 2003-02-28 | 2006-04-18 | Hewlett-Packard Development Company, L.P. | System and method for adjusting storage device layout with at least one status for the adjusting |
US6952743B2 (en) | 2003-03-07 | 2005-10-04 | Ivivity, Inc. | Interface for distributed processing of SCSI tasks |
US7111147B1 (en) | 2003-03-21 | 2006-09-19 | Network Appliance, Inc. | Location-independent RAID group virtual block management |
US7096316B1 (en) * | 2003-06-30 | 2006-08-22 | Veritas Operating Corporation | Multi-host environment with coordinated distributed logging for writes to a raid storage volume |
US7254754B2 (en) | 2003-07-14 | 2007-08-07 | International Business Machines Corporation | Raid 3+3 |
US7523257B2 (en) | 2003-08-27 | 2009-04-21 | Adaptec, Inc. | Method of managing raid level bad blocks in a networked storage system |
US7366837B2 (en) * | 2003-11-24 | 2008-04-29 | Network Appliance, Inc. | Data placement technique for striping data containers across volumes of a storage system cluster |
JP2005316762A (ja) * | 2004-04-28 | 2005-11-10 | Toshiba Corp | ディスク記憶装置及びraid構築方法 |
US8055745B2 (en) | 2004-06-01 | 2011-11-08 | Inmage Systems, Inc. | Methods and apparatus for accessing data from a primary data storage system for secondary storage |
US7516354B2 (en) * | 2004-08-25 | 2009-04-07 | International Business Machines Corporation | Storing parity information for data recovery |
CN100518061C (zh) * | 2004-09-07 | 2009-07-22 | 北京邦诺存储科技有限公司 | 写一次读多次磁盘存储系统和设计方法 |
JP4555036B2 (ja) | 2004-09-16 | 2010-09-29 | 株式会社日立製作所 | ストレージ装置及びストレージ装置のデバイス切替制御方法 |
US7389393B1 (en) | 2004-10-21 | 2008-06-17 | Symantec Operating Corporation | System and method for write forwarding in a storage environment employing distributed virtualization |
GB2419702A (en) | 2004-10-29 | 2006-05-03 | Hewlett Packard Development Co | Virtual overlay infrastructures which can be suspended and later reactivated |
US20060129559A1 (en) * | 2004-12-15 | 2006-06-15 | Dell Products L.P. | Concurrent access to RAID data in shared storage |
US20070094348A1 (en) | 2005-01-07 | 2007-04-26 | Microsoft Corporation | BITS/RDC integration and BITS enhancements |
US7130960B1 (en) * | 2005-04-21 | 2006-10-31 | Hitachi, Ltd. | System and method for managing disk space in a thin-provisioned storage subsystem |
JP4690765B2 (ja) * | 2005-04-26 | 2011-06-01 | 株式会社日立製作所 | ストレージ管理システム、ストレージ管理サーバ、データ再配置制御方法およびデータ再配置制御プログラム |
US7617370B2 (en) * | 2005-04-29 | 2009-11-10 | Netapp, Inc. | Data allocation within a storage system architecture |
US7904649B2 (en) * | 2005-04-29 | 2011-03-08 | Netapp, Inc. | System and method for restriping data across a plurality of volumes |
JP2006331076A (ja) * | 2005-05-26 | 2006-12-07 | Hitachi Ltd | データ記憶システム及び記憶方法 |
US7529816B2 (en) * | 2005-06-03 | 2009-05-05 | Hewlett-Packard Development Company, L.P. | System for providing multi-path input/output in a clustered data storage network |
US7437507B2 (en) * | 2005-06-06 | 2008-10-14 | Cisco Technology, Inc. | Online restriping technique for distributed network based virtualization |
US7418550B2 (en) | 2005-07-30 | 2008-08-26 | Lsi Corporation | Methods and structure for improved import/export of raid level 6 volumes |
US7844775B2 (en) * | 2005-09-23 | 2010-11-30 | Avid Technology, Inc. | Distribution of data in a distributed shared storage system |
WO2007058617A1 (en) | 2005-11-17 | 2007-05-24 | Chee Keng Chang | A controller for non-volatile memories, and methods of operating the memory controller |
US20070143541A1 (en) * | 2005-12-19 | 2007-06-21 | Lsi Logic Corporation | Methods and structure for improved migration of raid logical volumes |
US8321377B2 (en) | 2006-04-17 | 2012-11-27 | Microsoft Corporation | Creating host-level application-consistent backups of virtual machines |
JP5124103B2 (ja) * | 2006-05-16 | 2013-01-23 | 株式会社日立製作所 | 計算機システム |
CN102880424B (zh) * | 2006-05-24 | 2015-10-28 | 克姆佩棱特科技公司 | 用于raid管理、重新分配以及重新分段的系统和方法 |
US7546398B2 (en) | 2006-08-01 | 2009-06-09 | International Business Machines Corporation | System and method for distributing virtual input/output operations across multiple logical partitions |
JP2008107896A (ja) | 2006-10-23 | 2008-05-08 | Nec Corp | 物理資源制御管理システム、物理資源制御管理方法および物理資源制御管理用プログラム |
JP5244332B2 (ja) * | 2006-10-30 | 2013-07-24 | 株式会社日立製作所 | 情報システム、データ転送方法及びデータ保護方法 |
US8706968B2 (en) | 2007-12-06 | 2014-04-22 | Fusion-Io, Inc. | Apparatus, system, and method for redundant write caching |
CN101715575A (zh) * | 2006-12-06 | 2010-05-26 | 弗森多系统公司(dba弗森-艾奥) | 采用数据管道管理数据的装置、系统和方法 |
US20080155191A1 (en) * | 2006-12-21 | 2008-06-26 | Anderson Robert J | Systems and methods for providing heterogeneous storage systems |
JP5246388B2 (ja) * | 2007-03-08 | 2013-07-24 | 日本電気株式会社 | 仮想装置構成システム、及びその方法 |
US8117495B2 (en) | 2007-11-26 | 2012-02-14 | Stratus Technologies Bermuda Ltd | Systems and methods of high availability cluster environment failover protection |
US20090172335A1 (en) | 2007-12-31 | 2009-07-02 | Anand Krishnamurthi Kulkarni | Flash devices with raid |
US8370833B2 (en) | 2008-02-20 | 2013-02-05 | Hewlett-Packard Development Company, L.P. | Method and system for implementing a virtual storage pool in a virtual environment |
EP2645251A1 (en) | 2008-06-06 | 2013-10-02 | Pivot3 | Method and system for distributed RAID implementation |
US8219750B2 (en) | 2008-06-30 | 2012-07-10 | Pivot3 | Method and system for execution of applications in conjunction with distributed RAID |
US8176247B2 (en) | 2008-10-28 | 2012-05-08 | Pivot3 | Method and system for protecting against multiple failures in a RAID system |
US8850114B2 (en) | 2010-09-07 | 2014-09-30 | Daniel L Rosenband | Storage array controller for flash-based storage devices |
US8527699B2 (en) | 2011-04-25 | 2013-09-03 | Pivot3, Inc. | Method and system for distributed RAID implementation |
-
2009
- 2009-06-05 EP EP13167831.0A patent/EP2645251A1/en not_active Withdrawn
- 2009-06-05 US US12/479,434 patent/US8082393B2/en active Active
- 2009-06-05 US US12/479,360 patent/US8239624B2/en not_active Expired - Fee Related
- 2009-06-05 EP EP09759544.1A patent/EP2304568B1/en active Active
- 2009-06-05 WO PCT/US2009/046473 patent/WO2009149388A1/en active Application Filing
- 2009-06-05 CN CN2009801275899A patent/CN102099792A/zh active Pending
- 2009-06-05 WO PCT/US2009/046470 patent/WO2009149386A1/en active Application Filing
- 2009-06-05 KR KR1020107029904A patent/KR20110031441A/ko not_active Application Discontinuation
- 2009-06-05 US US12/479,394 patent/US8127076B2/en active Active
- 2009-06-05 JP JP2011512708A patent/JP2011523144A/ja active Pending
- 2009-06-05 WO PCT/US2009/046471 patent/WO2010011428A1/en active Application Filing
- 2009-06-05 US US12/479,403 patent/US8086797B2/en active Active
- 2009-06-05 US US12/479,377 patent/US8145841B2/en active Active
- 2009-06-05 US US12/479,319 patent/US8090909B2/en active Active
- 2009-06-05 DK DK09759544.1T patent/DK2304568T3/da active
-
2010
- 2010-11-25 IL IL209571A patent/IL209571A/en active IP Right Grant
-
2011
- 2011-05-12 JP JP2011107699A patent/JP2011165212A/ja active Pending
- 2011-08-30 HK HK11109154.0A patent/HK1154969A1/xx unknown
- 2011-09-02 US US13/224,936 patent/US8140753B2/en active Active
- 2011-11-08 US US13/291,311 patent/US8271727B2/en active Active
- 2011-11-08 US US13/291,309 patent/US8261017B2/en active Active
- 2011-11-09 US US13/292,388 patent/US8255625B2/en not_active Expired - Fee Related
-
2012
- 2012-01-25 US US13/358,306 patent/US8316180B2/en active Active
- 2012-02-03 US US13/366,069 patent/US8316181B2/en active Active
- 2012-07-06 US US13/543,561 patent/US8621147B2/en active Active
- 2012-07-06 US US13/543,565 patent/US9465560B2/en active Active
-
2013
- 2013-09-16 US US14/028,286 patent/US9146695B2/en active Active
-
2015
- 2015-08-20 US US14/831,601 patent/US9535632B2/en active Active
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9535632B2 (en) | Method and system for distributed raid implementation | |
US8386709B2 (en) | Method and system for protecting against multiple failures in a raid system | |
US8527699B2 (en) | Method and system for distributed RAID implementation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |