KR20160033643A - 지능형 데이터 배치 - Google Patents

지능형 데이터 배치 Download PDF

Info

Publication number
KR20160033643A
KR20160033643A KR1020150132614A KR20150132614A KR20160033643A KR 20160033643 A KR20160033643 A KR 20160033643A KR 1020150132614 A KR1020150132614 A KR 1020150132614A KR 20150132614 A KR20150132614 A KR 20150132614A KR 20160033643 A KR20160033643 A KR 20160033643A
Authority
KR
South Korea
Prior art keywords
pool
storage devices
storage
capacity
identification
Prior art date
Application number
KR1020150132614A
Other languages
English (en)
Other versions
KR102414500B1 (ko
Inventor
니르말 라지 삭세나
브루스 케언스 목슨
어빙 마이클 로빈슨
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20160033643A publication Critical patent/KR20160033643A/ko
Application granted granted Critical
Publication of KR102414500B1 publication Critical patent/KR102414500B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2071Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

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

본 발명은 호스트 식별을 갖는 호스트에 의해 지정된 스토리지 장치들의 복수의 풀들을 위한 스토리지의 용량을 매핑하는 방법이다. 데이터 스토리지의 용량은 용량 식별과 복수의 영역들을 갖는다. 본 발명의 방법은 호스트 식별에 근거한 스토리지의 용량을 위한 데이터 장치들의 제 1 풀을 할당하는 단계와 스토리지 장치들의 제 1 풀을 위한 호스트 식별과 용량 식별에 근거하여 매핑 값을 결정하는 단계를 포함한다. 또한, 본 발명의 방법은 복수의 영역들에서 매핑 값과 하나 이상의 영역들에 근거하여 저장 장치 인덱스를 결정하는 단계와 저장 장치 인덱스에 근거하여 저장 장치들의 제 1 풀로 영역들의 일부를 매핑하는 단계를 포함한다.

Description

지능형 데이터 배치{INTELLIGENT DATA PLACEMENT}
본 발명은 다른 것들 사이에서, 데이터 스토리지를 위한 시스템에 관련된 것으로서, 특히 해시 매핑과 리던던시를 사용한 네트워크 데이터 스토리지를 위한 랙 마운트된(rack-mounted) 스토리지 시스템에 관련된 것이다.
스토리지의 용량에 대한 수요는 상승하고 있다. 현재 데이터베이스들과 가상 스토리지 시스템들은 많은 양의 데이터를 일반적으로 저장할 수 있다. 스토리지 용량, 처리 능력, 성능, 및 데이터베이스 내 데이터의 신뢰할 수 있는 접근 가능성에 대한 요구의 증가는 필수적인 것이다. 그러나, 지금까지, 단일 가상 스토리지를 사용한 다중 네트워크 스토리지 장치들로부터의 물리적인 스토리지의 현재 데이터베이스와 메모리 용량 관리는 현명하게 관리되지 못하였고, 필요로 하는 것보다 느리고, 효율적인 데이터 센터 어플리케이션들을 위해 충분히 신뢰할 수 없었다.
본 발명은 스토리지 장치를 효율적으로 관리하는 데이터 장치들의 복수의 풀들을 위한 스토리지의 볼륨을 매핑하는 방법을 제공한다.
본 발명의 예시적인 실시예는 호스트 식별을 갖는 호스트에 의해 구체화된 스토리지 장치의 복수의 풀들로 스토리지의 용량을 매핑하는 방법을 제공한다. 데이터 스토리지 용량은 용량 식별과 복수의 영역들을 갖는다. 방법은 호스트 식별에 근거하여 스토리지의 용량을 위해 스토리지 장치들의 제 1 풀을 할당하는 단계, 상기 스토리지 장치들의 제 1 풀을 위한 상기 호스트 식별과 상기 용량 식별에 근거하여 매핑 값을 결정하는 단계, 상기 매핑 값과 상기 복수의 영역들 내 하나 이상의 영역들에 근거하여 스토리지 장치 인덱스를 결정하는 단계, 및 상기 스토리지 장치 인덱스에 근거하여 상기 스토리지 장치들의 제 1 풀을 위해 상기 복수의 영역들 중 일부를 매핑하는 단계를 포함한다.
본 발명의 다른 예시적인 실시예는 네트워크화된 스토리지 시스템을 제공한다. 시스템은 호스트 식별을 갖고, 용량 식별과 복수의 영역들을 갖는 스토리지의 용량을 맵하기 위한 호스트, 상기 호스트에 의해 구체화된 스토리지의 용량의 상기 복수의 영역들의 적어도 일부를 분배하기 위한 스토리지 장치들의 복수의 풀들, 및 호스트 식별에 근거하여 상기 스토리지의 용량을 위한 상기 스토리지 장치들의 복수의 풀들로부터 제 1 풀을 할당하고, 상기 스토리지 장치들이 할당된 풀을 위한 호스트 식별과 용량 식별에 근거하여 매핑 값을 결정하고, 상기 매핑 값과 하나 이상의 복수의 영역들에 근거하여 스토리지 장치 인덱스를 결정하고, 상기 스토리지 장치 인덱스에 근거하여 상기 스토리지 장치들의 복수의 풀들로부터 상기 제 1 풀을 위한 상기 복수의 영역들 중 적어도 일부를 맵하는 프로세서를 포함한다.
본 발명의 또 다른 예시적인 실시예는 호스트 식별을 갖는 호스트에 의해 구체화된 스토리지 장치의 복수의 풀들로 스토리지의 용량을 매핑하는 방법을 제공한다. 데이터 스토리지 용량은 용량 식별과 복수의 영역들을 갖는다. 방법은 상기 복수의 스토리지 장치들을 위한 상기 호스트 식별과 상기 용량 식별에 근거하여 해쉬 값을 결정하는 단계, 하나 이상의 상기 복수의 영역들에 근거하여 스토리지 장치 인덱스를 검색하는 단계, 상기 스토리지 장치 인덱스에 근거하여 상기 스토리지 장치들의 복수의 풀들로부터 상기 제 1 풀 내 상기 스토리지 장치들 중 하나의 스토리지 장치 어드레스를 할당하는 단계, 상기 할당된 스토리지 장치 어드레스를 갖는 상기 스토리지 장치들의 복수의 풀들로부터 상기 제 1 풀을 위한 상기 복수의 영역들 중 일부를 매핑하는 단계, 상기 복수의 영역들 중 일부 다음으로 리던던시를 삽입하는 단계, 및 상기 삽입된 리던던시 다음에 상기 복수의 영역들 중 남아있는 일부를 매핑하는 단계를 포함한다.
본 발명에 따른 방법은 호스트 식별을 갖는 호스트에 의해 특정된 스토리지 장치의 복수의 풀들을 위해 스토리지의 볼륨을 매핑함으로써 스토리지 장치를 효율적으로 관리할 수 있다.
도 1은 네트워크 스토리지 시스템의 실시예를 도시한 도면,
도 2는 도 1에 도시된 바와 같은 시스템의 예시적인 시스템을 도시한 도면,
도 3a은 본 발명의 실시예에 따른 스토리지 장치 논리 블록 내에서 논리적인 용량의 매핑을 위한 매핑 프로세스의 동작 순서도를 도시한 도면,
도 3b는 본 발명의 실시예에 따른 스토리지 장치들 내 스토리지 공간 또는 용량의 할당을 위한 할당 프로세스의 동작 순서도를 도시한 도면,
도 4는 본 발명에 따른 예시적인 어드레스 매핑 흐름을 도시한 도면,
도 5는 스토리지 장치들의 풀 내 매핑 함수를 통한 다중 용량 할당하는 다중 호스트들 내 제 1 할당예를 도시한 도면,
도 6은 리던던시 없는 스토리지 장치들의 풀 내 매핑 함수를 통한 다중 용량들을 할당하는 다중 호스트들 내 제 2 할당예를 도시한 도면,
도 7은 리던던시를 갖는 스토리지 장치들의 풀 내 매핑 함수를 통한 다중 용량들을 할당하는 다중 호스트들 내 제 3 할당예를 도시한 도면,
도 8은 얇은 프로비저닝 및 리던던시를 사용한 스토리지 장치들의 다수의 풀들 내 매핑 함수를 통해 다중 용량들을 할당하는 다중 호스트들 내 제 4 할당예를 도시한 도면,
도 9는 얇은 프로비저닝 및 리던던시를 사용한 스토리지 장치들의 풀 내 매핑 함수를 통해 다중 용량들을 할당하는 다중 호스트들 내 제 5 할당예를 도시한 도면,
도 10은 도 3의 매핑 프로세스와 RAID 10 리던던시를 사용하여 보고한 제 1 예시적인 평균 고장 간격(MTPF: Mean-time-between-failure) 오류를 도시한 도면, 및
도 11은 도 3의 매핑 프로세스와 RAID 6 리던던시를 사용하여 보고한 제 2 예시적인 평균 고장 간격(MTPF: Mean-time-between-failure) 오류를 도시한 도면이다.
이하, 본 발명에 따른 바람직한 실시예들을 첨부한 도면을 참조하여 상세히 설명하고, 동일한 참조 번호들은 명세서 전체에서 동일한 구성 요소들을 나타낸다. 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예들을 하기에서 설명하기로 한다.
발명의 임의의 실시예들이 상세히 설명되기 이전에, 그것은 다음에 기술되거나 도면들 내 도시된 것들로부터 구조들의 상세와 컴포넌트들의 배열로 그것의 응용이 제한되지 않는 것으로 이해된다.
본 발명의 이점들 및 특징들, 그리고 그것을 달성하는 방법들은 다음의 상세한 설명과 도면들의 참조에 의해 더 쉽게 이해될 수 있을 것이다. 그러나 본 발명의 일반적인 진보적 개념은 다양한 방법들로 수행되거나 실행될 수 있는 많은 다른 스트라이프들로 구현될 수 있고, 하기에서 설명된 실시예들로 제한되는 것으로 해석되지 않을 것이다. 더 정확히 말하면, 이러한 실시예들을 제공함으로써, 해당 기술분야의 당업자의 기술수준에 의해 일반적인 진보적 개념들이 충분히 전달될 것이고, 그것을 통해 기재될 것이다. 본 발명의 일반적인 진보적 개념은 첨부된 청구항들에 의해서만 정의된다. 도면들에서, 레이어들 또는 영역들의 두께는 명확히 하기 위해 과장되었다.
또한, 이 문서 내에서 사용된 용어 및 어법은 기술을 위한 목적이고, 한정하는 것으로서 간주되지 않아야 한다. 본 발명을 설명하기 위한 문맥에서, 단수 표현, 복수 표현, 및 상기와 같이 다른 대상을 나타내는 지시어구(특히, 다음의 청구항들의 문맥에서)의 사용은 여기에서 다른 설명이 없거나 문맥에 의해 명확히 부정되지 않는 한 단수와 복수 모두를 보호하기 위한 것이다. '구성하는', '가지는', '포함한', 및 '함유되는'과 같은 용어들(즉, 포함하지만 제한하지 않는)은 설명이 없는 한, 제한을 두지 않는 용어들로 해석된다.
도면들 내에서 보여지는 시스템들은 동일해야만 하는 실제 시스템들의 모델들인 것이, 해당 기술 분야의 당업자에 의해 명백할 것이다. 기술된 일부 모듈들 및 논리적 구조들은 마이크로프로세서(microprocessor) 또는 유사한 장치들에 의해 실행되는 소프트웨어(software)로 구현될 수 있거나, 예를 들면, 주문형 반도체(ASIC: Application Specific Integrated Circuit)들을 포함하는 다양한 컴포넌트들을 사용한 하드웨어(hardware)로 구현될 수 있다. "프로세서(processor)"와 같은 용어는 하드웨어 및/또는 소프트웨어 모두를 포함하거나 나타낼 수 있다. 특정한 의미가 아닌 한 함축되거나 대문자의 사용에 따라 간단히 추론될 수 있다.
유사하게, 여기서 사용된 '컴포넌트' 또는 '모듈'의 용어는 특정한 작업들을 수행하는 주문형 반도체(ASIC: Application Specific Integrated Circuit), 필드 프로그래머블 게이트 어레이(FPGA: Field Programmable Gate Array)와 같은 소프트웨어 또는 하드웨어 컴포넌트로 한정되지 않는 것을 의미한다. 컴포넌트 또는 모듈은 하나 또는 그 이상의 프로세서들에서 실행되도록 구성되고, 어드레스 지정할 수 있는 스토리지 매체 내에 상주할 수 있다. 그러므로, 컴포넌트 또는 모듈은, 예를 들어, 소프트웨어 컴포넌트, 객체 지향 소프트웨어 컴포넌트, 클래스 컴포넌트들, 및 태스크 컴포넌트들, 프로세스들, 기능들, 특성들, 절차들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어들, 마이크로코드, 회로, 데이터, 데이터베이스들, 데이터 구조들, 테이블들, 어레이들, 및 변수들과 같은 컴포넌트들을 포함할 수 있다. 이러한 컴포넌트들 및/또는 모듈들을 위해 제공되는 기능들은 보다 적은 컴포넌트들 및/또는 모듈들로 조합되거나, 추가적인 컴포넌트들 및/또는 모듈들로 더 분리될 수도 있다.
다르게 정의되지 않는 한, 여기에서 사용된 모든 기술적 및 과학적 용어들은 본 발명이 속하는 기술 분야에서 자명한 기술의 하나에 의해 통상적으로 이해되는 것과 동일한 의미를 갖는다. 또한, 다른 정의가 없다면, 모든 용어들은 일반적으로 사용되는 사전들에서 정의된 모든 용어들로 지나치게 해석되지 않는다.
진보적 개념의 실시예들은 호스트에 의해 요청된 논리적 용량의 할당 방법에 관한 것이다.
도 1은 네트워크 스토리지 시스템(100)의 실시예를 도시한 도면이다. 시스템(100)은 스토리지의 용량을 스위칭 네트워크(switching network)(108)를 통해 요청하는 호스트(host)(104)를 포함한다. 시스템(100)은 프로세싱 컴플렉스(processing complex)(112)를 포함할 수도 있고, 응용 서버(application server)로 제시된 가상화된 블록-스토리지 용량(virtualized block-storage volume)들 내에서 하나 이상의 스토리지 장치들 상의 가상화 데이터를 위해, 어플리케이션들에 의해 부여된 요구들 및/또는 성능들에 의존하는 하나 이상의 프로세서들을 더 포함할 수 있다. 예를 들면, 일부 실시예들에서, 하기에 상세히 기술되는 바와 같이, 프로세싱 컴플렉스(112)는 응용 서버로 향상된 성능과 투명한 이용률을 위해 가상화된 용량의 리던던시 용량(redundancy volume)을 제공하는 동안, 스토리지 장치들의 풀들을 교차하는 가상화된 용량들을 맵(map)하기 위한 하나 이상의 매핑 함수들을 실행할 수 있다. 일부 실시예들에서, 가상화된 용량들은 논리적 유닛의 개수들을 갖는 표준 논리적 용량들로서 호스트(104)에게 보여질 수 있다.
도시된 실시예에서, 프로세싱 컴플렉스(112)는 M개의 프로세서들(112.1-112.M)(i번째 프로세서를 나타내기 위한 일반적 인덱스 112.i를 따름)을 포함한다. 일부 실시예들에서, 프로세싱 컴플렉스(112)는 인터-칩 인터커넥트(ICI: inter-chip interconnect)를 통해 인터페이스되는 두 개의 브로드컴 멀티코어(Broadcom multicore) XLPII 964 SoC's(미도시)를 포함한다.
부트 컴플렉스(116)는 바이오스(BIOS: Basic Input/Output System)와 프로세싱 컴플렉스(112)를 위한 부트 펌웨어 코드(boot firmware code)를 제공하기 위해프로세싱 컴플렉스(112)에 연결된다. 예를 들면, 일부 실시예들에서, 소프트웨어 컨벤션과 선택적 스트랩-옵션들을 사용하는 전원-온되는 동안, 프로세싱 컴플렉스(112)는 두 개의 소켓 공유된 메모리 캐시-코히어런트 비-균일 메모리 액세스(CC-NUMA: cache-coherent non-uniform memory access) 모드에서 단일 커널 이미지(single kernel image)와 함께 부트한다.
프로세싱 컴플렉스(112)는 채널 메모리(channel memory)(120)와 제어기 컴플렉스(controller complex)(124)에 연결된다. 일부 실시예들에서, 채널 메모리(120)는 약 400기가비피에스(Gbps) 반이중(half-duplex) 읽기 또는 쓰기 메모리 트랜잭션 대역폭(memory transaction bandwidth)을 제공하는 M개 프로세서(112.i) 각각을 위한 복수의 72-비트(bit) 디디알3(DDR3) 채널 메모리 제어기 인터페이스들을 포함한다. 일부 실시예들에서, 채널 메모리(120)는 시스템의 신뢰도를 향상시키기 위해 이용할 수 있는 단일 에러 정정 및 이중 에러 검출(SEC-DED: single-error-correct and double-error detect)과 니블 에러 정정(nibble-error correction)도 포함하다. 일부 실시예들에서, 채널 메모리(120)는 하나 이상의 8기가바이트(GB) 동적 랜덤 액세스 메모리(DRAM: dynamic random access memory)를 포함한다.
성능 요구들에 따르면, 제어기 컴플렉스(124)는 메모리 컴플렉스(128)와 통신하기 위해 하나 이상의 제어기들을 가질 수 있다. 도시된 실시예에서, 제어기 컴플렉스(124)는 N개의 컨트롤러들(124.1-124.N)(i번째 컨트롤러를 나타내는 일반적 인덱스 124.i를 따름)을 포함한다. 일부 실시예들에서, 제어기 컴플렉스(124)는 스위치들의 쌍(pari of switches)(미도시)도 포함한다. 예를 들면, 일부 실시예들에서, 스위치는 PEX 8796 PCI3 3.0 스위치이다.
메모리 컴플렉스(128)는 스토리지 장치들(132)의 복수의 풀들을 포함한다. 도시된 실시예에서, 메모리 컴플렉스(128)는 P개의 풀들(128.1-128.P)(i번째 풀들을 나타내는 일반적 인덱스 128.i를 따름)을 포함하고, P개의 풀들 각각은 장치들(132.i.1-132.i.K)(i번째 풀의 j번째 스토리지 장치를 나타내는 일반적 인덱스 132.i.j를 따름)을 포함하는 K개의 스토리지 장치들(132)을 포함한다. 일부 실시예들에서, 스토리지 장치들(132)은 1테라바이트(TB: Terabyte)의 스토리지를 갖는 하나 이상의 솔리드 스테이트 드라이브(SSD: Solid State Drive)들이다. 스토리지 장치들(132)의 동일한 개수가 P개의 풀들에 걸쳐 도시되지만, 스토리지 장치들(132)의 다른 개수들이 응용들에 따라 다른 실시예들에서 P개의 풀들에 걸쳐 사용될 수 있다. 일부 실시예들에서, 스토리지 장치들(132)은 논리 블록 어드레스들의 인접한 범위를 포함한다.
도 2는 도 1에 도시된 바와 같은 시스템(100)의 예시적인 시스템(200)을 도시한 도면이다. 예시적인 시스템(200)은 (i+1)번째 호스트를 나타내는 일반적 인덱스(204.i)를 갖는, N개의 호스트들(204)(204.0-204.N-1)을 도시한다. 각 호스트(204.i)는 복수의 논리적 용량들(208), 예를 들면, Q 용량들에 액세스할 수 있다. 일부 실시예들에서, Q 용량들은 동일한 크기를 갖지 않을 수 있다. 도시된 실시예에서, (i+1)번째 호스트 또는 호스트(i+1)의 j번째 용량을 나타내는 일반적 인덱스 208.i.j를 갖는 호스트 0(204.0)은 Q개의 논리적 용량들(208.0.1-208.0.Q)을 갖는다. 예시적인 시스템(200)은 스토리지 장치들(220)의 하기에서 설명될, 복수의 풀들(216) 내 가상화된 용량들 내에서 논리적 용량들(208)을 맵하는 매핑 함수(212)을 보여줄 수도 있다. 특히, 도시된 실시예에서, 4개(P=4)의 풀들(216.0-216.3)이 도시되고, 풀(216)들 각각은 10(K=10)개의 스토리지 장치들을 갖는다. 예를 들면, 풀(216.0)은 (i+1)번째 풀의 j번째 스토리지 장치를 나타내는 일반적 인덱스(220.i.j)를 갖는 10개의 스토리지 장치들(220.0.1-220.0.9)을 갖는다. 도 2에서 도시된 실시예에서, 호스트 0(204.0)에 의해 보여지는 논리적 용량(208.0.1)은 스토리지 장치들(220.0.0-220.0.9)의 개수에 걸쳐 가상화, 공유, 또는 분배될 수 있다. 일부 실시예들에서, 용량 분배 또는 가상화를 위해 사용된 스토리지 장치들의 개수는 미리 결정되고, 미리 결정된 개수의 스토리지 장치들은 예를 들면, 풀(216.0)과 같은, 풀 내에서 이용 가능할 수 있는 2의 거듭제곱이다. 도시된 실시예에서, 용량 분배 또는 가상화를 위해 사용된 스토리지 장치들(220.0.0-220.0.9)의 개수는 10개의 스토리지 장치들을 갖는 풀들(216.0) 내 이용 가능한 2의 거듭제곱과 동일한 스토리지 장치들의 최대 개수인 8로 미리 결정된다.
일부 실시예들에서, 풀(216) 내 각 스토리지 장치(220.0.i)는 복수의 스토리지 유닛들, 스트라이프들, 또는 영역(extent)들 내 추가적으로 그룹화된다. 각 영역은 2의 거듭제곱 바이트와 같은 일반적인 영역이고, 길이 내 하나 이상의 기가바이트들(예를 들면, 1GB)의 단위이다. 풀 내 영역들은 일반적으로 동일한 크기를 갖기도 한다. 일부 실시예들에서, 각 영역은 섹터들로 더 세분화(미도시)된다. 다른 실시예에서, 각 섹터는 스토리지 장치(220)의 페이지 크기가 4킬로바이트(KB: kilobyte)의 최적화된 값을 갖는 크기에서, 16킬로바이트(KB)의 순서로, 인접 바이트들의 2의 거듭제곱 스트링을 포함한다. 예를 들면, 호스트로부터 4KB 논리 블록 동작은 스토리지 장치(220) 상의 하나의 물리적 읽기 또는 쓰기 내 결과일 수 있다. 일부 실시예들에서, 섹터들은 스토리지 장치(220)로 영역(즉, 영역은 풀에 걸친 스트라이프(stripe))을 할당하는 유닛이고, 각 스토리지 장치(200)는 데이터의 섹터 크기의 청크(chunk)를 수신한다. 다른 실시예들에서, 섹터들은 단일 스토리지 장치(220) 내 포함되고, 풀 내 모든 섹터들은 동일한 크기이다. 영역들의 일부는 스토리지 장치 또는 드라이브 인덱스에 근거하여 풀(216) 내 스토리지 장치들 또는 드라이브들(220)의 미리 결정된 개수로 균일하게 분배되거나 맵되고, 미리 결정된 개수는 예를 들면, 2의 거듭제곱일 수 있다. 일부 실시예들에서, 영역들은 복수의 인접한 메모리 블록들을 포함할 수 있다.
도 3a는 본 발명의 실시예에 따른 도 2의 매핑 함수(212)과 유사한, 복수의 논리적 블록 또는 스토리지 장치들(예를 들면, 도 2의 풀들(216.0-216.3)) 내 스토리지의 용량 또는 논리적 용량의 매핑을 위한 매핑 함수 또는 프로세스(300)의 동작 순서도를 도시한다. 일부 실시예들에서, 호스트는 호스트 식별(host identification)(또는, 호스트 ID)(예를 들면, 도 2의 호스트 0(204.0)은 "0"의 호스트 식별(host identification)을 가짐)에 의해 식별될 수 있다. 요청(request)은 요청된 논리적 용량의 크기를 포함할 수도 있고, 논리적 용량은 논리적 용량 식별에 연관될 수도 있다. 308단계에서, 매핑 프로세스(300)는 요청으로부터 호스트 식별(ID)과 논리적 용량 식별(ID)을 결정할 수 있다. 호스트 식별(ID)에 근거하여, 매핑 프로세스(300)는 용량 식별자 테이블(volume identifier table)에 액세스하고, 312단계에서, 이후에 상세히 설명(예를 들면, 도 4의 용량 테이블(440))한다. 일부 실시예들에서, 도 2의 호스트(204.0)와 같은 각 호스트는 특정 용량 식별자 테이블이 할당된다. 316단계에서, 매핑 프로세스(300)는 용량 크기(예를 들면, 요청으로부터의)를 결정한다. 320단계에서, 매핑 프로세스(300)는 용량 크기 중 적어도 일부에 근거하여, 도 1의 스토리지 장치들(132.1.1-132.1.8) 또는 도 2의 스토리지 장치들(220.0.0-220.0.7)과 유사한 하나 이상의 스토리지 장치들 내 요청을 위한 스토리지 용량을 할당한다. 324단계에서, 매핑 프로세스(300)는 할당된 스토리지 용량들 내 리던던시를 선택적으로 분배하거나 삽입할 수도 있다. 예를 들면, 일부 실시예들에서, 매핑 프로세스(300)는 저렴한(독립적) 디스크 레벨들(1 또는 0), 또는 RAID10의 중복 배열 내에서 사용된 바와 같이, 할당된 스토리지 용량들의 스트리핑(striping)과 미러링(mirroring)을 포함할 수 있다. 일부 실시예들에서, 매핑 프로세스(300)는 할당된 스토리지 용량들 내에서, RAID6와 유사한, 패리티 블록(parity block)들을 삽입할 수 있다. RAID10과 RAID6이 기술되더라도, RAID2, RAID4, RAID6과 같은 다른 리던던시 기법들이 필요에 따라 사용될 수도 있다.
도 3b는 본 발명의 실시예에 따른 도 3a의 매핑 프로세스(300)의 320단계와 유사한, 스토리지 장치들 내 스토리지 공간들 또는 용량들 할당을 위한 할당 프로세스(350)의 동작 순서도를 도시한다. 354단계에서, 할당 프로세스(350)는 할당 요청을 수신한다. 도시된 실시예에서, 할당 요청은 예를 들면, 도 3a의 매핑 프로세스(300)에 대해 논의된 바와 같은 요청으로부터, 용량 크기, 호스트 식별(예를 들면, 도 2의 호스트0(204.0)는 "0"의 호스트 식별을 가짐), 및 논리적 용량 식별(예를 들면, 도 2의 용량 0.1(208.0.1)은 "0.1"의 논리적 용량 식별을 가짐)을 포함한다. 358단계에서, 할당 프로세스(350)는 호스트 식별과 논리적 용량 식별에 근거하여 풀 식별(poll identification)(또는, 풀 ID)을 생성하기 위한 매핑 함수를 사용한다. 일부 실시예들에서, 매핑 함수(mapping function)(예를 들면, 도 2의 212)는 매핑 값 또는 해쉬 값을 랜덤하게 결정하는 해쉬 함수(hash function)이다. 일부 실시예들에서, 풀 식별은 스토리지 장치들(216)의 풀, 예를 들면, 요청된 스토리지 공간들이 사용되고 할당될 도 2의 스토리지 장치들(220.0.0-220.0.9)의 풀(216.0)을 식별하고 할당한다.
362단계애서, 풀 식별이 생성된 이후, 할당 프로세스(350)는 식별된 풀이 용량 크기에 근거하여 이용 가능한 요청된 스토리지 공간을 갖는지를 결정한다. 362단계에서 요청된 용량 크기가 식별된 풀 내 이용 불가능한 것으로 결정되면, 할당 프로세스(350)는 새로운 풀 식별을 생성하고, 366단계에서, 용량 크기에 근거하여 요청된 스토리지 공간들을 갖는 새로운 식별된 풀을 결정한다. 362단계에서 요청된 용량 크기가 식별된 풀 내 이용 가능한 것으로 결정되면, 할당 프로세스(350)는 370단계에서, 식별된 풀 내 요청된 용량을 위한 엔트리를 생성한다. 366단계에서, 새롭게 식별된 풀이 용량 크기에 근거하여 요청된 스토리지 공간들을 갖는 것으로 결정되면, 할당 프로세스(350)는 새롭게 식별된 풀 내 요청된 용량을 위한 엔트리를 생성하기 위해 370단계로 유사하게 진행한다. 그러나, 366단계에서, 새롭게 식별된 풀이 용량 크기에 근거하여 요청된 스토리지 공간들을 제공할 수 없는 것으로 결정되면, 할당 프로세스(350)는 요청된 스토리지 공간이 이용 불가능한 것을 나타내는 에러 메시지를 되돌려 보낸다.
도 4는 본 발명에 따른 도 3b의 할당 프로세스(350)와 유사한, 어드레스 매핑 순서도(400)를 예시적으로 도시한다. 어드레스 매핑 순서도(400)는 호스트 어드레스(404)를 도시한다. 호스트 어드레스(404)는 호스트 식별(ID)(408), 예를 들면, 도 2의 호스트(204.0), 호스트(204)에 의해 보여지는 용량을 식별하는 논리적 용량 식별(ID)(412), 영역 어드레스(extent address) 또는 영역(416), 및 논리 블록 어드레스(LBA: logical block address) 오프셋 어드레스(offset address)(420)로 리스트된다. 도 3b에 대하여 위에서 논의한 바와 같이, 매핑 풀 식별(ID)(424)은 매핑 함수(212)(예를 들면, 랜덤 해쉬 함수일 수 있음)를 사용한 호스트 식별(ID)(408)과 논리적 용량 식별(ID)(412)로부터 결정될 수 있다. 일부 실시예들에서, 매핑 함수(212)는 풀 식별(424)을 핫 스포팅(hot spotting)(둘 이상의 호스트들(204)이 동일한 풀로 할당되거나 동일한 풀 내에서 활성화됨)을 감소하거나 줄이기 위해 풀 식별(424)을 균일하게 분배할 수 있다. 일부 실시예들에서, 어드레스 매핑 흐름(400)은 특히, 풀 식별(424)이 도 3b의 할당 프로세스로 결정된다.
도 4에 도시된 실시예에서, 풀 식별(424)은 예시적인 풀(428), 예를 들면 도 2의 풀(216.0)을 나타낸다. 풀(428)은 10개의 스토리지 장치들(432.0-432.9)를 포함한다. 각 스토리지 장치들(432.0-432.9)은 i+1 번째 스토리지 장치의 j+1번째 스트라이프를 나타내는 일반적 인덱스 436.i.j를 갖고 i+1 번째 스토리지 장치 내 일반적 스트라이프를 나타내는 일반적 인덱스 436.i를 갖는 2W-1 스트라이프들(436.0.0-436.0.2W-1)로 부분할된다. 예를 들면, 스트라이프(436.9)는 스토리지 장치(432.9) 내 스트라이프이고, 스트라이프(436.1)는 스토리지 장치(432.1) 내 스트라이프를 나타낸다. 유사하게, 스트라이프(436.4.2)는 스토리지 장치(432.4) 내 세 번째 스트라이프를 나타낸다.
각 식별된 풀은 또한 요청된 용량을 위해 사용된 어드레스들 또는 엔트리들의 기록을 유지하는 용량 테이블에 연관된다. 도시된 실시예에서, 풀(428)은 용량 테이블(440)에 연관된다. 도시된 실시예에서, 용량 테이블(440)은 장치 식별(device identification)(SS ID)(440.1)과 스트라이프 식별(stripe identification)(PS ID)(440.2)의 두 개의 컬럼들을 리스트한다. 일부 실시예들에서, 장치 식별(440.1)은 요청된 용량을 위해 사용될 수 있는 스토리지 장치들(432.0-432.9)을 식별하고, 스트라이프 식별(440.2)은 요청된 용량을 위한 스트라이프를 시작할 수 있는 식별된 저장 장치들의 스트라이프들을 식별한다. 요청된 용량이 연관된 풀 내 장치의 스트라이프 어드레스를 식별하는 구동 인덱스를 형성하는 장치 식별(440.1)과 스트라이프 식별(440.2)은 하기에서 상세히 설명한다. 추가적으로, 일부 실시예들에서, 용량 테이블(440)은 예를 들면, 장치 식별과 스트라이프 식별에 의해 정의된 풀 시작 내 이용 가능 영역들과 같은 다른 추가적인 정보를 포함할 수도 있다.
도 4는 영역(416)이 2차원 어레이 또는 테이블로서 풀(428)을 갖는 스토리지 장치들(432.0-432.9)의 시점에 의한 풀(428)을 맵하는 것을 도시한다. 2차원 어레이는 따라서 복수의 좌표들, 인덱스들, 또는 장치 인덱스들을 포함하고, 컬럼은 장치 식별(SS ID)을 나타내고, 로우는 스트라이프 식별(PS ID) 또는 복수의 스토리지 장치들(432.0-432.9)에 걸친 스트라이프(436.i)를 나타낸다. 도시된 실시예에서, 영역들(416)은 섹터들 또는 스트라이프들(436.i)의 인접한 그룹핑으로서 스토리지 장치들(432.0-432.9)로 맵된다. 그와 같이, 영역(416)은 임의의 SS ID 및 PS ID 좌표, 또는 식별된 풀, 예를 들면, 풀(428) 내 스토리지 장치들(432)의 개수, 스트라이프(436.i.j) 내 바이트들의 개수, 및 영역(416) 내 스트라이프들(436.i)의 개수 사이의 수학적 관계에 의해 결정된, 풀(428) 내 구동 인덱스에서 시작할 수 있다. 영역들(416)은 인접한 방식에서 식별된 풀 내 위치한다. 영역(416) 내 스트라이프들(436.i)의 개수는 풀 내 스토리지 장치들(432)의 개수와 동일하면, 영역(416)은 432.0에서 시작한다. 영역(416)과 같은 영역 내 스트라이프들(436.i)의 개수가 풀(428) 내 스토리지 장치들(432.0-432.9)의 개수보다 적거나 많으면, 어드레스 매핑 흐름(400)은 용량 테이블(440)의 길이보다 적은 연속된 래핑 효과(continuous wrapping effect)에서의 결과이다. 도시된 실시예에서, 영역(416)은 SS ID(440.1.3) 및 PS ID(440.2.3)을 지시한다. 그러한 경우, 요청된 용량을 위한 시작 어드레스, 좌표, 또는 구동 인덱스는 436.4.2의 구동 인덱스 내 결과로, 스토리지 장치(432.4)의 인덱스와 스트라이프(436.2) 내 두 개의 오프셋을 갖는 SS ID(440.1.3) 및 PS ID(440.2.3)에 의해 식별된다. 따라서, 일부 실시예에서, 스토리지 장치의 인덱스 또는 구동 인덱스는 매핑 값과 영역(416)과 같은 하나 이상의 영역에 근거하여 결정될 수 있거나 적어도 하나의 스토리지 장치들의 스토리지 장치 식별의 결정에 의해 결정될 수 있다.
도 5는 스토리지 장치들(516)(516.0-516.9)의 풀(512) 내 매핑 함수(508)을 통해 다중 용량들(506)(용량 A-E)을 할당하는 다중 호스트들(504)(504.0-504.4) 내 제 1 할당예(500)를 도시한다. 제 1 할당예(500)에서, 매핑 함수(508)은 도 3의 매핑 프로세스(300)와 유사하다. 도시된 실시예에서, 호스트(504.0-504.4)는 스토리지 장치들(516.0-516.9) 각각에 걸친 용량들(506.0-506.4)을 제공하기 위해 프로비전된 용량들(용량 A-E)의 맵을 균일하게 분배한다. 도시된 실시예에서, 표준 프로비저닝은 리던던시 없이 호스트들(504.0-504.4)에 의해 요청된 용량들(506)(용량A-E)로 적용된다.
도 6은 리던던시 없는 스토리지 장치들(616)(616.0-616.9)의 풀(612) 내 매핑 함수(608)를 통해 다중 용량들(606)(용량A-E)을 할당하는 제 2 할당예(600)를 도시한다. 제 2 할당예(600)에서, 매핑 함수(608)는 도 3의 매핑 프로세스(300)과 유사하고, 얇은 프로비저닝을 사용하여 얇은 프로비전된 용량들(606.0-606.4)로 요청된 용량들(606)(A-E)을 맵한다. 도시된 실시예에서, 호스트들(604.0-604.4)은 얇게 프로비전된 용량들(606.0-606.4)의 오버스로우(overthrow)들을 위한 하나 이상의 추가들(additions)(620.0-620.1)을 갖는 저장 장치들(616.0-616.9)에 걸쳐 요청된 용량들(용량A-E)을 균일하게 맵한다. 더 많은 추가들은 응용들에 따라 사용될 수 있다.
도 7은 동일 풀(712) 내 리던던시를 갖는 저장 장치들(716)(716.0-716.9)의, 제 1 서브풀(712.1) 및 제 2 서브풀 또는 미러 서브-풀(712.m)로 부분할 하는 풀 내 매핑 함수(708)을 통해 다중 용량들(용량A-D)(706)을 할당하는 다중 호스트들(704)내 제 3 할당예(700)를 도시한다. 제 3 할당예(700)에서, 매핑 함수(708)는 도 4의 매핑 프로세스(300)와 유사하고, 얇은 프로비저닝을 사용하여 얇은 프로비전된 용량들(706.0-706.3)로 요청된 용량들(용량A-D)을 맵한다. 제 3 할당예(700)에서, 리던던시는 삽입되거나 적용된다. 도시된 실시예에서, 적용된 리던던시는 스트리핑과 미러링을 더 포함한 RFID10을 포함한다. 그러한 경우, 리던던시는 풀 내(712.1) 얇은 프로비전된 용량들(706.0-706.3)을 스트리핑하는 것과, 풀(712.m)에 따른 얇은 프로비전된 용량들(706.0-706.3)을 미러링하는 것을 포함한다. 더 상세히 살펴보면, 호스트들(704.0-704.3)은 서브풀(712.1)의 얇은 프로비저닝 용량들(706.0-706.3)의 오버스로우들을 위한 하나 이상의 추가들(720.0, 720.1)을 갖는 스토리지 장치들(716.0-716.4)에 걸친 얇은 프로비전된 용량들(706.0-706.3)로 요청된 용량들(용량A-D)이 위에서 논의된 바와 같은 구동 인덱스로 균일하게 맵된다. 유사하게, 얇은 프로비전된 용량들(706.0-706.3)과 얇은 프로비전된 추가들(720.m)은 복수의 미러된 용량들(706m.0-706m.3)과 복수의 얇은 프로비저닝 추가들(720.m.0, 720.m.1)을 생성하는 서브풀(712.m) 내 미러 스토리지 장치들(716.5-716.9) 내 미러된 드라이브 인덱스로 미러된다.
도 8은 얇은 프로비저닝과 다른 풀들(812.1-812.m)을 교차하는 리던던시를 사용하여 제 1 풀(812.1)과 다른 제 2 또는 미러 풀(812.m) 내 매핑 함수(808)를 통해 다중 용량들(806)(용량A-E)을 할당하는 다중 호스트들(804)(804.0-804.4)에서 제 4 할당예(800)를 도시한다. 제 4 할당예(800)에서, 제 1 풀(812.1)은 스토리지 장치들(816.0-816.9)을 갖고, 제 2 풀(812.m)은 미러 스토리지 장치들(816m.0-816m.9)을 갖는다. 더욱이, 매핑 함수(808)은 도 3의 매핑 프로세스(300)와 유사하고, 제 1 풀(812.1)의 얇은 프로비전된(806.0-806.4)로 요청된 용량들(용량A-E)을 맵한다. 도시된 실시예에서, 적용된 리던던시는 상술한, 스트리핑과 미러링을 더 포함하는 RAID10을 포함한다. 특히, 호스트(804.0-804.4)는 제 1 풀(812.1)의 얇은 프로비전된 용량들(806.0-806.4)의 오버스로우들을 위한 하나 이상의 얇은 프로비전된 추가들(820.0, 820.1)을 갖는, 제 1 풀(812.1) 내 스토리지 장치들(816.0-816.9)에 걸친 얇은 프로비전된 용량들(806.0-806.4)를 위해 요청된 용량들(용량A-E)을 균일하게 맵된다. 유사하게, 얇은-프로비전된 용량들(806.0-806.4)과 얇은 프로비전 추가들(820.0-820.1)은 복수의 미러된 얇은 프로비전된 용량들(806.m-806m.4)과 복수의 미러 얇은 프로비전된 추가들(820m.0-820m.1) 생성하는 제 2 풀(812.m)에서 미러 스토리지 장치들(816m.0-816m.9) 내에서 미러된다. 따라서, 이러한 실시예에서, 요청된 용량들(806)은 풀(812.1)의 미러인 풀(812.m)을 갖는 두 개의 다른 풀들(812.1, 812.m)에 걸쳐 할당된다.
도 9는 얇은 프로비저닝 및 리던던시를 사용한 스토리지 장치들(916)(916.0-916.9)의 풀(912) 내 매핑 함수(908)를 통해 다중 용량들(906)(용량A-E)를 할당하는 다중 호스트들(904)(940.0-940.4)에서 제 5 할당예(900)를 도시한다. 제 5 할당예(900)에서, 매핑 함수(908)는 도 3의 매핑 프로세스(300)와 유사하고, 분할된 용량들(906.0-906.4) 로 요청된 용량들(용량A-E)을 맵한다. 도시된 실시예에서, 적용된 리던던시는 복수의 PQ 패리티 블록들의 삽입을 더 포함하는 RAID6를 포함한다. 더욱이, 호스트들(904.0-904.4)은 풀(912)의 부분 용량들(906.0-906.4)의 오버스로우들을 위한 하나 이상의 얇은 프로비전된 추가들(920.0, 920.1)을 갖는 풀(912) 내 스토리지 장치들(916.0-916.9)를 교차하는 부분 용량들(906.0-906.4)로 요청된 용량들(용량A-E)들을 균일하게 맵한다. 도시된 실시예에서, 복수의 패리티 블록들(906pq.0-906pq.4, 및 920pq.0-920pq.1)은 풀(912) 내 부분 용량들(906.0-906.4)과 얇은 프로비전된 추가들(920) 내에 삽입된다.
도 10은 도 3의 매핑 프로세스(300)와, 100% 리던던시를 포함하는 RAID10 리던던시를 사용하여 제 1 예시적인 평균 고장 간격(MTPF: Mean-time-between-failure) 오류 보고를 도시한다. 제 1 예시적인 MTPF 오류 보고(1000)에서, 스토리지 장치들(1004.0-1004.7)의, 도 8의 풀(812.1)과 유사한, 풀(1004)은 스토리지 장치들(1004.0-1004.7)의, 도 8의 풀(812.m)과 유사한 미러 풀(1008) 내 미러된다. 도시된 실시예에서, 4KB를 갖는 풀(1004) 내 복수의 섹터들(1004.1, 1004.3)은 페일(fail)되기 위해 결정되고, 다른 미러 풀(1008) 내 다른 복수의 미러 섹터들(1008.6, 1008.7)은 페일되기 위해 결정되기도 한다. 페이지 레벨 오류 보고가 페일된 섹터(또는, 오류 발생 섹터)(failed sector)들 내 복구된 데이터로 사용되면, 비복구가 수행될 수 있다. 그러나, 본 발명에 따르면, 스토리지 장치가 페일되는 것의 결정을 갖는 것에 응답하여, 시스템(100)은 섹터 레벨 오류 보고의 사용, 및 스토리지 장치들 또는 드라이브들의 풀로 액세스(예를 들면, 동시에)에 의해 데이터의 완료 4KB 페이지(1012)를 복구할 수 있다. 도시된 실시예에서, 페일된 섹터들(1004.1, 1004.3)은 그들 각각의 미러 버전들(1008.1, 1008.3)에 의해 교체되는 반면, 페일된 미러 섹터들(1008.6, 1008.7)은 섹터들(1004.6, 1004.7)로 대체될 수 있다.
도 11은 25%의 리던던시를 포함하는 도 3의 매핑 프로세스와 RAID6 리던던시를 사용하여 제 2 예시적인 MTPF 오류 보고(1100)를 도시한다.
스토리지 장치들(1104.0-1104.7)의 도 9의 906.0과 유사한 제 2 예시적인 MTPF 오류 보고(1100), 풀(1104)은 스토리지 장치들(1108.0-1108.7)의 도 9의 906pq.0과 유사하고, 패리티 풀(1108) 내 저장된 그것의 PQ 패리티 블록들을 갖는다. 도시된 실시예에서, 4KB 페이지를 갖는 풀(1104) 내 복수의 섹터들(1104.1, 1104.3)은 페일은 페일을 갖고, 다른 패리티 풀(1108) 내 다른 복수의 패리티 섹터들(1108.6, 1108.7)은 페일도 갖는다. 본 발명에 따르면, 스토리지 장치, 예를 들어, 도 2의 스토리지 장치(220.0.0)가 페일되는 것의 결정을 갖는 것에 응답하여 , 시스템(100)은 섹터 레벨 오류 보고의 사용, 및 스토리지 장치들 또는 드라이버들의 풀, 예를 들면, 도 2의 풀(216.0)의 액세스(예를 들면, 동시에)에 의해 데이터의 완료 4KB 페이지(1112)를 복구할 수 있다. 도시된 실시예에서, 페일된 섹터들(1104.1, 1104.3)은 패리티 섹터들(1108.1, 1108.1)로부터 기인한다.
본 발명은 도시된 실시예들에 따라 기술될 수 있고, 그것은 실시예들로 다양하게 변화될 수 있고, 임의의 변화들이 본 발명의 사상과 범위 내에서 이루어질 것이다. 예를 들면, 예시적인 실시예는 하드웨어, 소프트웨어, 프로그램 명령어들을 포함하는 컴퓨터 읽기 가능 매체, 또는 그것들의 조합을 사용하여 구현될 수 있다. 본 발명에 따른 소프트웨어 쓰기는 메모리, 하드디스크, 또는 CD/DVD-ROM와 같은 컴퓨터 읽기 가능 매체의 일부 형태로 저장되거나, 프로세서에 의해 실행될 수 있다.
반면, 본 발명은 특정 실시예를 참조하여 기술될 수 있고, 다양한 변경들이 만들어질 수 있고, 균등물들이 발명의 범위를 벗어나지 않도록 대체될 수 있는 것으로 당업자에게 이해될 수 있다. 또한, 많은 수정들이 그것의 범위로부터 벗어나지 않도록 발명의 교시하는 특정 상황 또는 물질들의 채택을 위해 만들어질 수 있다. 그러므로, 발명은 특정 실시예들의 기술로 제한되지 않는 것으로 의도되지만, 발명은 첨부된 청구항들의 범위 내에 있는 모든 실시예들을 포함할 것이다.
추가적으로, 도면들에 도시된 논리 흐름은 적합할 수 있는 결과들을 수행하기 위해 도시된 특정 순서 또는 연속적인 순서를 필요로 하지 않는다. 기술된 흐름들로 부터 다른 단계들이 제공될 수 있고, 또는 다른 단계들이 제거될 수도 있고, 기술된 시스템들로 다른 컴포넌트들이 추가되거나 기술된 시스템들로부터 다른 컴포넌트들이 제거될 수 있다. 따라서, 다른 실시예들은 다음의 청구항들의 범위 내에 있다.

Claims (10)

  1. 데이터 스토리지 용량은 용량 식별과 복수의 영역들을 갖고, 호스트 식별을 갖는 호스트에 의해 구체화된 스토리지 장치의 복수의 풀들로 스토리지의 용량을 매핑하는 방법에 있어서,
    호스트 식별에 근거하여 스토리지의 용량을 위해 스토리지 장치들의 제 1 풀을 할당하는 단계;
    상기 스토리지 장치들의 제 1 풀을 위한 상기 호스트 식별과 상기 용량 식별에 근거하여 매핑 값을 결정하는 단계;
    상기 매핑 값과 상기 복수의 영역들 내 하나 이상의 영역들에 근거하여 스토리지 장치 인덱스를 결정하는 단계; 및
    상기 스토리지 장치 인덱스에 근거하여 상기 스토리지 장치들의 제 1 풀을 위해 상기 복수의 영역들 중 일부를 매핑하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 매핑 값을 결정하는 단계는
    상기 호스트 식별과 상기 용량 식별에 근거하여 해쉬 값을 결정하는 단계를 포함하는 방법.
  3. 제 2 항에 있어서,
    상기 해쉬 값을 결정하는 단계는
    상기 호스트 식별과 상기 용량 식별에 근거하여 상기 해쉬 값을 랜덤하게 결정하는 단계를 포함하는 방법.
  4. 제 1 항에 있어서,
    상기 호스트 식별에 근거하여 상기 스토리지의 용량을 위한 스토리지 장치들의 제 2 풀을 할당하는 단계; 및
    상기 스토리지 장치 인덱스에 근거하여 상기 스토리지 장치들의 제 2 풀을 위한 남아있는 상기 복수의 영역들을 매핑하는 단계를 더 포함하는 방법.
  5. 제 1 항에 있어서,
    상기 스토리지 장치들의 제 1 풀 내 상기 스토리지 장치들 중 적어도 하나는 하나 이상의 솔리드 스테이트 드라이브(SSD: Solid State Drive)들을 포함하는 방법.
  6. 제 1 항에 있어서,
    상기 스토리지 장치 인덱스를 결정하는 단계는
    상기 스토리지 장치의 제 1 풀 내 상기 스토리지 장치들 중 적어도 하나의 스토리지 장치 식별을 결정하는 단계를 포함하는 방법.
  7. 제 1 항에 있어서,
    상기 스토리지 장치들의 제 1 풀 내 상기 스토리지 장치들 중 적어도 하나는 복수의 스토리지 장치 스트라이프들을 포함하고,
    상기 스토리지 장치 인덱스를 결정하는 단계는 상기 스토리지 장치 스트라이프들 중 하나의 인덱스를 결정하는 단계를 포함하는 방법.
  8. 제 1 항에 있어서,
    상기 복수의 영역들 중 일부를 매핑하는 단계는
    상기 스토리지 장치 인덱스에 근거하여 상기 스토리지 장치들의 제 1 풀 내 미리 결정된 개수의 스토리지 장치들 내에서 상기 복수의 영역들 중 일부를 균등하게 매핑하는 단계를 포함하는 방법.
  9. 제 8 항에 있어서,
    상기 미리 결정된 개수의 스토리지 장치들은 2의 거듭제곱인 방법.
  10. 제 1 항에 있어서,
    상기 복수의 영역들은 복수의 인접한 메모리 블록들을 포함하는 방법.
KR1020150132614A 2014-09-18 2015-09-18 지능형 데이터 배치 KR102414500B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201462052203P 2014-09-18 2014-09-18
US62/052,203 2014-09-18

Publications (2)

Publication Number Publication Date
KR20160033643A true KR20160033643A (ko) 2016-03-28
KR102414500B1 KR102414500B1 (ko) 2022-06-29

Family

ID=55525764

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150132614A KR102414500B1 (ko) 2014-09-18 2015-09-18 지능형 데이터 배치

Country Status (3)

Country Link
US (1) US9851909B2 (ko)
KR (1) KR102414500B1 (ko)
CN (1) CN105446890B (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10656838B2 (en) 2015-07-13 2020-05-19 Samsung Electronics Co., Ltd. Automatic stream detection and assignment algorithm
US9996463B2 (en) * 2015-11-10 2018-06-12 International Business Machines Corporation Selection and placement of volumes in a storage system using stripes
KR102229013B1 (ko) * 2016-09-02 2021-03-17 삼성전자주식회사 자동 스트림 검출 및 할당 알고리즘
JP7169796B2 (ja) * 2018-07-17 2022-11-11 富士通株式会社 情報処理システム、情報処理装置、及びプログラム
US11188231B2 (en) 2019-03-01 2021-11-30 International Business Machines Corporation Data placement on storage devices
KR20200106739A (ko) * 2019-03-05 2020-09-15 에스케이하이닉스 주식회사 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법
US11604771B2 (en) 2019-09-30 2023-03-14 Dell Products L.P. Method and system for data placement in a linked node system
US11068345B2 (en) 2019-09-30 2021-07-20 Dell Products L.P. Method and system for erasure coded data placement in a linked node system
US11481293B2 (en) 2019-09-30 2022-10-25 Dell Products L.P. Method and system for replica placement in a linked node system
US11360949B2 (en) 2019-09-30 2022-06-14 Dell Products L.P. Method and system for efficient updating of data in a linked node system
US11422741B2 (en) * 2019-09-30 2022-08-23 Dell Products L.P. Method and system for data placement of a linked node system using replica paths
US20230132476A1 (en) * 2021-10-22 2023-05-04 EMC IP Holding Company LLC Global Automated Data Center Expansion
US11947420B2 (en) * 2021-12-15 2024-04-02 Google Llc Hardware memory error tolerant software system
US12067264B2 (en) * 2022-06-01 2024-08-20 Micron Technology, Inc. Power efficient codeword scrambling in a non-volatile memory device

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110078405A (ko) * 2009-12-31 2011-07-07 주식회사 디엠에스 탄소나노튜브 섬유 형성방법
KR20130042052A (ko) * 2006-05-26 2013-04-25 몬산토 테크놀로지 엘엘씨 형질전환 계통 mon89034에 해당하는 옥수수 식물 및 종자와 이의 검출 방법 및 사용
KR20140108858A (ko) * 2013-03-04 2014-09-15 주식회사 엘지유플러스 Nfc 태그를 이용한 액세스 포인트 정보 제공 방법 및 이를 위한 장치

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5765200A (en) * 1995-06-07 1998-06-09 International Business Machines Corporation Logical positioning within a storage device by a storage controller
US8032701B1 (en) * 2004-03-26 2011-10-04 Emc Corporation System and method for managing provisioning of storage resources in a network with virtualization of resources in such a network
US7173929B1 (en) * 2001-12-10 2007-02-06 Incipient, Inc. Fast path for performing data operations
JP4699808B2 (ja) * 2005-06-02 2011-06-15 株式会社日立製作所 ストレージシステム及び構成変更方法
JP2011070345A (ja) * 2009-09-25 2011-04-07 Hitachi Ltd 計算機システム、計算機システムの管理装置、計算機システムの管理方法
CN102123167B (zh) * 2010-12-31 2013-08-07 华为数字技术(成都)有限公司 分布式文件系统及其数据存储处理方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130042052A (ko) * 2006-05-26 2013-04-25 몬산토 테크놀로지 엘엘씨 형질전환 계통 mon89034에 해당하는 옥수수 식물 및 종자와 이의 검출 방법 및 사용
KR20110078405A (ko) * 2009-12-31 2011-07-07 주식회사 디엠에스 탄소나노튜브 섬유 형성방법
KR20140108858A (ko) * 2013-03-04 2014-09-15 주식회사 엘지유플러스 Nfc 태그를 이용한 액세스 포인트 정보 제공 방법 및 이를 위한 장치

Also Published As

Publication number Publication date
KR102414500B1 (ko) 2022-06-29
CN105446890B (zh) 2020-08-25
CN105446890A (zh) 2016-03-30
US20160085467A1 (en) 2016-03-24
US9851909B2 (en) 2017-12-26

Similar Documents

Publication Publication Date Title
KR102414500B1 (ko) 지능형 데이터 배치
US10089026B1 (en) Virtual drive based RAID groups
US10140041B1 (en) Mapped RAID (redundant array of independent disks) in a data storage system with RAID extent sub-groups that are used to perform drive extent allocation and data striping for sequential data accesses to a storage object
US10073621B1 (en) Managing storage device mappings in storage systems
US10210045B1 (en) Reducing concurrency bottlenecks while rebuilding a failed drive in a data storage system
US9495110B2 (en) LUN management with distributed RAID controllers
US7594075B2 (en) Metadata for a grid based data storage system
US11023147B2 (en) Mapping storage extents into resiliency groups
US8145841B2 (en) Method and system for initializing storage in a storage system
US10289336B1 (en) Relocating data from an end of life storage drive based on storage drive loads in a data storage system using mapped RAID (redundant array of independent disks) technology
CN110858124B (zh) 数据迁移方法及装置
US9875043B1 (en) Managing data migration in storage systems
US10592111B1 (en) Assignment of newly added data storage drives to an original data storage drive partnership group and a new data storage drive partnership group in a mapped RAID (redundant array of independent disks) system
US10678643B1 (en) Splitting a group of physical data storage drives into partnership groups to limit the risk of data loss during drive rebuilds in a mapped RAID (redundant array of independent disks) data storage system
CN106873903B (zh) 数据存储方法及装置
US11507287B1 (en) Adding single disks to an array by relocating raid members
US20090172244A1 (en) Hierarchical secondary raid stripe mapping
CN110096216B (zh) 用于管理数据存储系统中的数据存储的方法、装置以及计算机程序产品
US11314608B1 (en) Creating and distributing spare capacity of a disk array
US12045505B2 (en) Scanning pages of shared memory
US20190087111A1 (en) Common logical block addressing translation layer for a storage array
US11327666B2 (en) RAID member distribution for granular disk array growth
US20210389896A1 (en) Flexible raid sparing using disk splits
US11449237B2 (en) Targetless snapshot system replication data pointer table
US11868612B1 (en) Managing storage operations in storage systems

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right