KR102457611B1 - 터넌트-어웨어 스토리지 쉐어링 플랫폼을 위한 방법 및 장치 - Google Patents

터넌트-어웨어 스토리지 쉐어링 플랫폼을 위한 방법 및 장치 Download PDF

Info

Publication number
KR102457611B1
KR102457611B1 KR1020170017666A KR20170017666A KR102457611B1 KR 102457611 B1 KR102457611 B1 KR 102457611B1 KR 1020170017666 A KR1020170017666 A KR 1020170017666A KR 20170017666 A KR20170017666 A KR 20170017666A KR 102457611 B1 KR102457611 B1 KR 102457611B1
Authority
KR
South Korea
Prior art keywords
storage devices
application
subset
storage device
available
Prior art date
Application number
KR1020170017666A
Other languages
English (en)
Other versions
KR20170132651A (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 KR20170132651A publication Critical patent/KR20170132651A/ko
Application granted granted Critical
Publication of KR102457611B1 publication Critical patent/KR102457611B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/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/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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

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)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

터넌트-어웨어 스토리지-쉐어링 엔진(tenant-aware storage-sharing engine, TASTE)가 개시된다. 상기 TASTE는 데이터 센터에서 가용한 저장 장치들의 집합에 대한 정보를 위한 스토리지를 포함한다. 수신 로직은 터넌트로부터 저장 장치 요구사항을 수신할 수 있다. 선택 로직은 상기 터넌트의 상기 저장 장치 요구사항을 만족하는 상기 가용한 저장 장치들의 집합을 선택할 수 있다.

Description

터넌트-어웨어 스토리지 쉐어링 플랫폼을 위한 방법 및 장치{METHOD AND APPARATUS FOR TENANT-AWARE STORAGE SHARING PLATFORM}
본 발명은 솔리드 스테이트 드라이버들(solid state drives, SSDs)에 관한 것으로, 좀 더 상세하게 데이터 센터에서 애플리케이션 요구사항들에 응답하여 SSDs을 관리하는 것에 관한 것이다.
저장 장치들, 특히, 솔리드 스테이트 드라이버들(solid state drives, SSDs)은, 시간에 지남에 따라 지속적으로 변하는 특성들을 나타낸다. SSDs은 SSD(solid state drive) 내부의 기본 소프트웨어(underlying software, 예, 펌웨어) 및/혹은 하드웨어 때문에 예측할 수 없는 레이턴시 및/혹은 대역폭을 가질 수 있다. 웨어 레벨링에 기인한 연장된 액세스 레이턴시(읽기/쓰기/소거)는 또한 레이턴시 및/혹은 대역폭에 영향을 미친다. SSD 리소스들의 가상 추상화(virtual abstraction)는 SSD의 성능 특성들을 예측하기 어렵게 한다. 즉, 가상 추상화는, 몇 가지만 언급하면, 폴리모픽(polymorphic) SSDs, 오픈-채널(open-channel) SSDs, 및 lightNVM(오픈 채널 SSDs를 지원하는 서브시스템)과 같은 다양한 접근 방식들이다. 마지막으로, 서로 다른 셀 밀도들은, 몇 가지만 언급하면, 예를 들어 SLC(single level cell), MLC(multi-level cell), TLC(three level cell), 및 QLC(quadruple level cell)들은 상당히 서로 다른 특성들을 야기할 수 있다.
데이터 센터들은 애플리케이션들 및 저장 장치들을 맵핑하는 매커니즘(방법)을 필요로 한다. 저장 장치들은 시간에 따라 변화되는 많은 특성들을 갖고 있고, 따라서 모니터링 될 필요가 있다. 반면에, 애플리케이션들은, 이중화(redundancy), 병렬화(parallelism), 지속성(persistency), 보안(security), FTL(flash translation layer) 파라미터들(클러스터 크기, 페이지 크기, 등)의 정도들(degrees)과 같은 서로 다른 요구사항들을 또한 가질 수 있다. 하지만 일반적인 저장 관리는, SSDs과 같은 더 새로운 저장 장치들의 성능 특성들, 혹은 애플리케이션들(예를 들어, HDFS(hadoop distributed file system) 혹은 키-밸류 스토리지(key-value storage)) 혹은 애플리케이션들의 요구사항들을 인식하지 못하는, 볼륨 관리(volume management) 혹은 RAID(redundant array of independent disks)향 접근방식들을 사용한다. 애플리케이션들의 요구사항들에 응답하여 애플리케이션들을 위한 데이터를 저장하도록 저장 장치들을 선택하는 방법이 필요하다.
본 발명의 목적은 데이터 센터에서 애플리케이션의 요구사항에 응답하여 필요한 데이터를 저장하는 저장 장치들을 선택하기 위한 장치 및 그것의 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 터넌트-어웨어 스토리지-쉐어링 엔진(tenant-aware storage-sharing engine, TASTE)은, 이용 가능한 저장 장치들의 집합에 대한 정보를 위한 스토리지, 애플리케이션으로부터 저장 장치 요구사항들을 수신하기 위한 수신 로직, 및 상기 저장 장치 요구사항들을 만족하는 이용 가능한 저장 장치들의 상기 집합의 부분집합(subset)을 선택하기 위한 선택 로직을 포함할 수 있다.
본 발명의 실시 예에 따른 터넌트-어웨어 스토리지-쉐어링(tenant-aware storage-sharing engine, TASTE)의 방법은, 상기 TASTE에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계, 이용 가능한 저장 장치들의 집합을 식별하는 단계, 및 상기 애플리케이션으로부터 상기 저장 장치 요구사항들의 집합을 만족하도록 상기 이용 가능한 저장 장치들의 집합의 부분집합을 선택하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 실체적인 저장 매체를 포함하는 물품은, 상기 실체적인 저장 매체는 비-일시적인 인스트럭션을 저장하고, 상기 비-일시적인 인스트럭션들이 머신에 의해 수행됨으로써, TASTE(tenant-aware storage-sharing engine)에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계, 이용 가능한 저장 장치들의 집합을 식별하는 단계, 및 상기 애플리케이션으로부터 상기 저장 장치 요구사항들의 집합을 만족하도록 상기 이용 가능한 저장 장치들의 집합의 부분집합을 선택하는 단계가 진행될 수 있다.
본 발명의 실시 예에 따른 데이터 센터 내의 터넌트-어웨어 스토리지 쉐어링 엔진 및 그것의 동작 방법은, 애플리케이션으로부터 저장 장치 요구사항들을 수신하고, 상기 저장 장치 요구사항들을 만족하는 이용 가능한 저장 장치들의 집합의 부분집합(subset)을 선택함으로써, 보다 효율적으로 저장 장치들을 관리할 수 있다.
도 1은 클라이언트 머신과 통신하는 다양한 호스트 머신들을 갖는 데이터 센터를 보여준다.
도 2는 본 발명의 실시 예에 따른, 도 1의 호스트 머신을 상세하게 보여준다.
도 3은 도 1의 호스트 머신을 추가적으로 상세하게 보여준다.
도 4는 애플리케이션의 요구사항들을 수신하고, 결과로써 저장 장치 어레이를 조절하는 도 2의 TASTE(tenant-aware storage sharing engine)을 보여준다.
도 5는 도 2의 TASTE를 상세하게 보여준다.
도 6은 도 5의 선택 로직을 상세하게 보여준다.
도 7은 도 4의 저장 장치 어레이를 예시적으로 보여준다.
도 8은 도 7의 저장 장치 어레이 내부의 확립되는 가상 저장 장치를 보여준다.
도 9는 도 7의 저장 장치 어레이에서 다양한 가상 애플리케이션들의 요구사항들을 만족하도록 할당된 다양한 클러스터들 및 저장 장치 페이지 크기들을 보여준다.
도 10은 도 7의 저장 장치 어레이 내에서 저장 장치들 사이의 복제를 보여준다.
도 11은 도 7의 저장 장치 어레이 내에서 저장 장치들 사이의 데이터 이동을 보여준다.
도 12는 본 발명의 실시 예에 따른, 애플리케이션의 저장 요구사항들을 수신하고 도 4의 저장 장치 어레이를 조절하는 도 2의 TASTE를 위한 예시적인 과정에 대한 흐름도를 보여준다.
도 13a ~ 도 13c는 본 발명의 실시 예에 따른, 수신된 애플리케이션의 요구사항들에 응답하여 도 4의 저장 장치 어레이를 구현하는 도 2의 TASTE를 위한 예시적인 과정에 대한 흐름도를 보여준다.
본 발명의 기술적 사상의 실시 예들이 참조되며, 이들의 예들이 첨부된 도면들에 도시된다. 후술되는 상세한 설명에서, 다양한 특정한 상세들이 본 발명의 기술적 사상의 충분한 이해를 돕기 위하여 제공된다. 그러나 이 분야에 통상적인 기술을 가진 자들은 이러한 특정한 상세들 없이도 본 발명의 기술적 사상을 구현할 수 있다. 다른 예들로서, 잘 알려진 방법들, 절차들, 구성 요소들, 회로들, 그리고 네트워크들은 실시 예들의 측면들을 불필요하게 모호하게 하지 않기 위해 상세하게 설명되지 않는다.
여기에서 제 1, 제 2 등과 같은 용어들이 다양한 원소들을 설명하기 위하여 사용되지만, 이러한 원소들은 이러한 용어들에 의해 한정되지 않는다. 이러한 용어들은 하나의 원소를 다른 하나의 원소와 구별하기 위해서만 사용된다. 예를 들어, 본 발명의 기술적 사상의 범위로부터 멀어지지 않으면서 제 1 모듈은 제 2 모듈로 명명될 수 있다. 마찬가지로, 제 2 모듈은 제 1 모듈로 명명될 수 있다.
본 발명의 기술적 사상의 설명에서 사용되는 용어들은 특정한 실시 예들을 설명하기 위한 목적으로만 사용되며, 본 발명의 기술적 사상을 한정하는 것으로 의도되지 않는다. 본 발명의 기술적 사상의 설명 및 첨부된 청구항들에서 사용되는 바와 같이, 맥락에서 명확하게 명시되지 않으면 단수 표현들은 복수 표현들 또한 포함하는 것으로 의도된다. "및/혹은"의 용어는 하나 이상의 연관된 항목들의 임의의 그리고 가능한 모든 조합들을 포함하는 것으로 참조된다. "포함한다" 및/혹은 "포함하는"의 용어들은 상세한 설명에서 사용된 때에 언급된 특성들, 정수들, 단계들, 동작들, 원소들, 및/혹은 구성 요소들의 존재를 명시하며, 하나 이상의 다른 특성들, 정수들, 단계들, 동작들, 원소들, 구성 요소들, 및/혹은 그것들의 그룹들의 존재 혹은 추가를 배제하지 않는다. 도면들의 구성 요소들 및 특성들은 실제 비율에 필수적으로 비례하지 않는다.
대규모의 데이터 센터 스토리지 인프라스트럭쳐 시스템들은 저장 장치들의 쌍(pair) 사이(혹은 호스트와 저장 장치 사이)에서 혹은 저장 장치들의 임의의 셋/클러스터(set/cluster) 중에서 레이턴시(latency) 혹은 대역폭(bandwidth)을 예측하는 능력으로 이익을 얻을 수 있다. 저장 장치들 중에서 최대 레이턴시 혹은 최소 대역폭은 애플리케이션을 지원하는데 하나 이상의 가상 저장 장치들을 선택 혹은 확립하는데 중요할 수 있다. 게다가, 대규모 데이터센터들이 병렬화, 복제, 분리, 기타 등등과 같은 것들을 포함하는 저장의 다양한 서로 다른 측면들을 관리 및 결정하도록 시도하기 때문에, 더욱 많은 성능 정보에 대한 요구들이 증가되고 있다. 예측변수(predictor)는 온-디맨드(on-demand, 주문형) 혹은 퍼-페어(per-pair, 쌍 마다) 측정에 근거하지 않아야 하는데, 왜냐하면 이러한 접근법들이 확장되지 않기 때문이다.
불행하게도, 사양(specifications) 혹은 프로파일링(profiling)에 근거하는 현존하는 스토리지 모델링(storage modeling)은 이러한 요구들을 만족시키지 않는다. 이는 저장 장치들이 동일한 제조 및 심지어 물리적 연령에도 불구하고 SSD(solid state drive) 기반 스토리지들이 종종 FTL(flash translation layer)와 같은 열화/마모도(aging/wearing-out) 및 숨겨진 특성들로 인하여 이질적인 레이턴시/대역폭 및 시간-가변 특성들을 보이기 때문이다.
스토리지 거리(storage distance), 즉, 데이터 센터 안의 한 쌍의 저장 장치들 사이의 거리에 관련된 성능 특성들을 예측하는 것을 방해하는 또 다른 요소는, 페어-와이즈(pair-wise) 예측이 너무 많은 측정들을 필요로 한다는 것이다(올-투-올 커넥션들(all-to-all connections)을 고려함).
2016년 7월 28일 제출된 미국 출원 일련 번호 15/222,938 및 2016년 8월 1일에 제출된 미국 출원 일련 번호 15/225,811은, 참고문헌으로 참조되고, 이러한 문제를 해결하는 부분 해결책을 제공한다. 하지만 고려하기 위한 다른 접근법들이 존재한다.
플래시 기반 저장 시스템들은 비대칭 성능 특성들을 갖는다. 즉, 읽기는 5-25 ㎲, 쓰기는 100 ~ 200 ㎲, 플래시 블록들을 소거하는 데는 수 ㎳가 소비된다. 게다가, 전형적으로 플래시 셀이 견딜 수 있는 프로그램/소거 사이클의 개수는 제한된다. 결론적으로, 웨어 레벨링(wear leveling)이 활용될(및 성능 특성으로써 고려될) 수 있다. 추가로, 가비지 컬렉션(garbage collection)은, 모든 입출력(I/O) 동작들을 방해할 수 있는 상당히 많은 싸이클들을 소비한다.
게다가, 내장된 FTL(flash translation layer) 혹은 FTL-퍼 피지컬 디바이스(per physical device)와 같은 전통적인 접근 방식은, 애플리케이션의 다양한 요구들 및 특성들을 고려할 때 낭비적일 수 있다. 두 가지 대표적인 예들은, HDFS(hadoop distributed file system) 및 키-밸류 스토어(key-value(KV) store)일 수 있다. 통상 HDFS는 큰 블록 크기(많은 경우들에서 64 MB(megabytes))를 이용하고, 반면에 KV-스토어들은 작은 블록 크기(예, 페이스북의 워크로드들을 위한 100 B(bytes))를 이용한다. 이 경우, KV-스토어의 FTL 오버헤드(데이터 스트럭쳐 메모리 풋 프린트(data structure memory foot print) 및 PBA 맵핑들)는 HDFS의 FTL 오버헤드보다 640,000 배 더 클 수 있다. 달리 말해서, 메모리 풋 프린트 관점에서 보면, 동일한 맵핑 방법을 가정할 때, KV-스토어 저장 장치의 FTL은 640,000개의 HDFS 저장 장치들의 FTL을 처리할 수 있다. 효율성을 최적화시키고 숨겨진 FTL 레이턴시를 제거하는 서로 다른 능력들을 갖는 FTLs로 맵핑 될 수 있는 저장 장치들의 클러스터를 발생하는 것이 유용할 것이다.
스토리지 거리 그래프/트리(storage distance graph/tree)는 위상 그래프/트리(topology graph/tree)를 퍼-스토리지 성능들(per-storage performances)에 결합시킬 수 있다. 이러한 접근 방식은 스토리지 성능들의 변화/가변을 비교할 때, 위상들이 거의 변하지 않는 사실을 이용한 것이다. 특히, FTL의 예측할 수 없는 레이턴시는 SLOs(service level objectives)에서 피해져야 한다.
새로운 TASTE(tenant-aware storage-sharing engine, 터넌트-어웨어 스토리지-쉐어링 엔진)은 복수의 입력들을 취할 수 있다. TASTE에 대한 하나의 입력은 내장된 정보(예를 들어, 레이턴시, 대역폭, 위상, 저장 장치들 사이의 거리들, 기타 등등)를 갖는 스토리지 리소스 정보(storage resource information)로부터 일 수 있다. TASTE의 두 번째 입력은 애플리케이션의 요구사항들과 함께 터넌트(tenants, 혹은 애플리케이션)의 사양(specification)일 수 있다. TASTE는 애플리케이션의 요구사항들을 만족하기 위하여 클러스터(스토리지들의 집합)를 제공할 수 있다. 게다가, 상기 TASTE는 FTL 페이지 크기 및 지속성(persistency)과 함께 FTL 맵핑들을 갖는 서브-클러스터들(sub-clusters)을 제공할 수 있다. 추가로, 상기 TASTE는 주어진 애플리케이션들의 부분적인 요구사항들, 예를 들어, 이중화, 병렬화, 및 보안을 또한 구현할 수 있다. 마지막으로, 상기 TASTE는 다이나믹 풀 콘트롤(dynamic pool control)을 위해 제공될 수 있다. 예를 들어, 데이터 이동은 로드 밸런싱(load balancing), 용량 프로비져닝 (capacity provisioning)을 위해 지원될 수 있다.
FTL 클러스터 맵핑들
TASTE는 스토리지 리소스 풀들(storage resource pools)을 인식할 수 있다. 예를 들어, 상기 TASTE는 저장 장치들 사이의 근접도(로컬 혹은 원격, 및 거리)뿐만 아니라, 저성능 저장 장치들로부터 고성능 저장 장치들을 구별할 수 있다. 예를 들어, 2개의 터넌트들(애플리케이션들)이 HDFS 및 KV-스토어 각각에 대한 저장을 요청한다고 가정할 수 있다.
앞에서 토의한 바와 같이, HDFS의 FTL은 좀 더 큰 페이지 세분화(granularity)로 인하여 상대적으로 작은-풋프린트 맵핑(small-footprint mapping)일 수 있다. 따라서, 복수의 저장 장치들(가상 혹은 물리)은 LBA(logical block address) 인터페이스들을 갖는 자기 자신의 FTL에 따르는 다른 가상 저장 장치를 형성하기 위하여 클러스터화 될 수 있다.
HDFS와 달리, KV-스토어 서비스들은 더 고성능의 스토리지들을 요구할 뿐 아니라, 또한 FTL의 풋프린트는 HDFS의 FTL 풋프린트보다 훨씬 더 크다. 따라서, 상기 TASTE는 KV-스토어 사용을 위한 FTL 클러스터를 형성하기 위하여 더 적지만 더 높은 성능의 저장 장치들을 할당할 수 있다.
FTL 페이지 크기
예시적인 비교의 경우에, HDFS는 그것의 클러스터에 걸쳐 64 MB 페이지들을 가질 수 있다. 하지만 KV-스토어는 KV 쌍 배치들(pair placements)에 따라 서로 다른 페이지 크기를 가질 수 있다. 예를 들어, 100 B, 32 KB(kilobytes), 및 2 MB이다.
복제 인자(replication factor)
또한, 상기 TASTE는 리소스 관리 관점에서 어느 정도의 복제를 제공할 수 있다. 예를 들어, 클러스터 내의 각 저장 장치는 다른 저장 장치들에 의해 미러링 될 수 있다. FTL은 데이터 복제를 제어할 수 있다.
애플리케이션은 인터-노드(inter-node) 및 인터-랙(inter-rack) 복제 요구사항들을 모두 가질 수 있다(즉, 동일 노드 혹은 동일 랙의 노드 오류(failure) 혹은 전원 오류에 따른 데이터 유실을 방지하기 위하여, 데이터는 서로 다른 저장 장치 및 서로 다른 노드의 저장 장치에 복사될 필요가 있다). 이러한 상황(context)은 리소스 매니저에게 또한 알려져야만 한다. TASTE는 노드 내의 복제를 제공하도록 TASTE를 활성화시키면서 이러한 요구사항들을 교환하기 위하여 API(application program interface)을 제공할 수 있다. 결론적으로, 예를 들어, HDFS는 하나의 복제 인자로부터 자유로울 수 있고, 목표 복제 인자가 3일 때만 인터-랙 복제에 집중할 필요가 있다. 선택적으로 혹은 추가로, 상기 TASTE는 인트라-랙(intra-rack) 복제뿐 아니라 인터-랙(inter-rack) 복제를 관리할 수 있다.
병렬화(parallelism)
일부 터넌트들(tenants)은 레이턴시 및 대역폭에 함께 민감할 수 있지만, 그러나 개별적인 가용 물리적인 저장 장치는 그것들의 요구사항들을 만족하도록 충분한 성능을 제공하지 못할 수 있다. 이 경우, 상기 TASTE는 애플리케이션의 요구사항을 만족하는 새로운 가상 저장 장치를 발생할 수 있다. 새로운 가상 저장 장치는 큐 지연들(queue delays)을 줄일 수 있는 큰 볼륨 I/O 내의 레이턴시를 줄이면서, 더 높은 총 대역폭(higher aggregate bandwidth)을 나타낼 수 있다.
다이나믹 리소스 풀 제어(dynamic resource pool control)
앞에서 논의된 바와 같이, 스토리지 풀들(storage pools)은 시간, 용량 프로비져닝, 로드 밸런싱, 기타 등등에 대한 성능 특성 변화들로 인하여 업데이트될 필요를 갖는다. 이동은 다이나믹 풀 콘트롤을 다루는 한 가지 방법이다. TASTE는 물리적, 가상의, FTL-클러스터의 부분, FTL-클러스터의 전체, 기타 등등과 같이 데이터를 저장하기 위해 사용되는 저장 장치의 종류에 상관없이 데이터를 이동할 수 있다. TASTE가 그것의 기저의(underlying) 스토리지 타입 및 FTL 구현을 인식하기 때문에 이러한 이동이 가능하다.
도 1은 클라이언트 머신과 통신하는 다양한 호스트 머신들을 갖는 데이터 센터를 보여준다. 도 1을 참조하면, 데이터 센터(105)는 호스트 머신들(110, 115, 120, 125, 및 130)을 포함하도록 도시된다. 아래의 도 2 및 도 3에서는 호스트 머신들(110, 115, 120, 125, 및 130)에 대하여 좀 더 자세하게 도시된다. 또한, 데이터 센터(105)는 서로 통신하고 클라이언트 머신들(140)과 통신하도록 호스트 머신들(110, 115, 120, 125, 및 130)을 허용하는 네트워크(135)를 포함할 수 있다. 네트워크(135)는 LAN(local area network), 혹은 WAN(wide area network)을 갖는 다양한 종류의 네트워크일 수 있다. 네트워크(135)는 이더넷(ethernet)과 같은 유선 기술, IEEE 802.11 a/b/g/n/ac 혹은 동등 혹은 교체 가능한 기술들과 같은 무선 기술, 혹은 무선 및 유선의 조합을 이용할 수 있다. 추가로, 도 1에서는 호스트 머신들(110, 115, 120, 125, 및 130)이 하나의 지리적 영역(single geographic area) 내부에 위치하지만, 본 발명의 다른 실시 예들에서 호스트 머신들(110, 115, 120, 125, 및 130)은 인터넷(가능하게는 VPN(virtual private network)과 같은 오버레이 네트워크(overlay network)을 이용하는)과 같은 글로벌 네트워크(global network)를 이용하여 지리적으로 흩어져 서로 연결되어 있을 수 있다.
호스트 머신(110)은 애플리케이션(145)을 지원할 수 있다. 애플리케이션(145)은 SSH(secure shell), 웹 인터페이스, 혹은 API(application program interface)을 통하여 클라이언트 머신(140)에 의해 사용되는 애플리케이션일 수 있다.
한편, 도 1은 동일한 그리고 모두 타워 컴퓨터들인 것으로 호스트 머신들(110, 115, 120, 125, 및 130)을 도시하지만, 본 발명의 실시 예들은 모두 서로 다를 수 있는 호스트 머신들(110, 115, 120, 125, 및 130)을 위하여 임의의 원하는 포맷들을 지원할 수 있다. 예를 들어, 일부 호스트 머신들(110, 115, 120, 125, 및 130)은 다양한 모델들 및 제조의 타워 컴퓨터들일 수 있고, 다른 호스트 머신들(110, 115, 120, 125, 및 130)은 다양한 모델들 및 제조의 랙-장착 서버(rack-mounted server)일 수 있다. 서로 다른 호스트 머신들(110, 115, 115, 120, 125, 및 130)은, 프로세서의 능력, 가용 메모리, 및 가용 스토리지(이 모두는 다양한 포맷들 일 수 있음)면에서 서로 다른 능력들을 가질 수 있다. 예를 들어, 일부 호스트 머신들(110, 115, 120, 125 및 130)은 멤버(member)를 위해 DRAM(dynamic random access memory)를 사용할 수 있다. 반면에 다른 호스트 머신들은 PRAM(persistent random access memory), SRAM(static random access memory), FRAM(ferroelectronic random access memory), 혹은 MRAM(magnetoresistive random access memory)과 같은 NVRAM(non-volatile random access memory)를 사용할 수 있다. 유사하게, 일부 호스트 머신들(110, 115, 120, 125, 및 130)은 저장을 위해 통상적인 하드 디스크 드라이브들(hard disk drives)을 사용할 수 있다. 반면에 다른 호스트 머신들은 플래시 메모리(다양한 NVRAM) 혹은 MRAM을 사용할 수 있다. 여기에 열거되든 아니든, 다른 가능성들도 본 발명의 범위 내에 있다.
상술 된 바와 같이, 호스트 머신들(110, 115, 120, 125, 및 130)은 모두 근본적으로 동일하거나 상호 교체 가능할 수 있다. 따라서, 이 문서의 나머지 부분에서 호스트 머신(110)에 대한 임의의 참조는, 제한 없이 호스트 머신들(110, 115, 120, 125, 및 130)의 임의 혹은 모두를 포함하는 것으로 의도된다.
한편, 도 1이 모니터, 키보드 및 마우스를 갖는 일반적인 미니타워 컴퓨터 시스템으로써 클라이언트 머신들(140)을 보여줄지라도, 클라이언트 머신들(140)은 랩탑 컴퓨터들, 태블릿 컴퓨터들, 스마트폰들, 및 다른 원하는 기술 형태를 갖는 임의의 원하는 형태를 취할 수 있다. 추가로, 도 1이 하나의 클라이언트 머신(140)을 도시할지라도, 본 발명의 실시 예들은 동시에 임의의 개수의 클라이언트 머신들(140)을 지원할 수 있다.
도 2는 본 발명의 실시 예에 따른, 도 1의 호스트 머신(110)을 상세하게 보여준다. 도 2를 참조하면, 호스트 머신(110)은, 프로세서(205, CPU(central processing unit)으로도 언급), 메모리(210), 네트워크 커넥터(215), 및 저장 장치(220)을 포함하는 것으로 도시된다. 프로세서(205)는 다양한 프로세서일 수 있다. 예를 들어, 프로세서(205)는 인텔 제온(Intel Xeon), 셀루론(Celeron), 이타니엄(Itanuim), 혹은 아톰 프로세서(Atom processor), AMD 옵테론 프로세서I(Opteron processor), 암 프로세서(ARM processor) 등 일 수 있다. 상술 된 바와 같이, 메모리(210)는 플래시 메모리, SRAM, PRAM 등과 같은 다양한 메모리일 수 있지만, 전형적으로는 DRAM일 수 있다. 네트워크 커넥터(215)는 도 1의 네트워크(135)에 호스트 머신(110)을 연결하는 다양한 커넥터일 수 있다. 네트워크 커넥터(215)는, 예를 들어, 이더넷 인터페이스 혹은 무선 인터페이스이다. 저장 장치(220)는 데이터 센터에 의해 사용될 수 있는 다양한 종류의 저장 장치일 수 있다. SSDs(solid state drives)가 저장 장치(220) 중 하나로 가능하지만, 저장 장치(220)는 하드 디스크 드라이브들(HDDs) 혹은 다른 롱-텀 (long-term) 저장 장치들과 같은 다른 저장 형태들(storage forms)을 포함할 수 있다.
또한, 호스트 머신(110)은 터넌트-어웨어 스토리지-쉐어링 엔진(tenant-aware storage-sharing engine, TASTE(225))을 포함할 수 있다. TASTE(225)는, 터넌트들(tenants, 즉, 애플리케이션들, 터넌트들(145 및 230)과 같은)의 요구사항들에 대한 정보를 사용할 수 있고, 그리고, 저장 장치 어레이(storage device array)의 동작을 관리할 수 있다. 도 2가 호스트 머신(110)에 의해 호스티드된(hosted) 터넌트들(145 및 230)을 도시하지만, 본 발명의 실시 예들은 호스트 머신(110)과 다른 머신들에 의해 호스티드된 터넌트들을 지원할 수 있다. 즉, TASTE(225)는 로컬 애플리케이션들(local applications) 뿐 아니라 원격 애플리케이션(remote applications)을 위한 저장 장치 어레이를 관리할 수 있다.
도 3은 도 1의 호스트 머신(110)을 추가로 상세하게 보여준다. 도 3을 참조하면, 전형적으로, 머신 혹은 머신들(110)은 하나 이상의 프로세서들(205)을 포함한다. 하나 이상의 프로세서들(205)은 메모리 제어기(305) 및 클록(310)을 포함할 수 있다. 메모리 제어기(305) 및 클록(310)은 머신 혹은 머신들(110)의 구성 요소들의 동작들을 조정하는데 이용될 수 있다. 또한, 프로세서들(205)은 메모리(210)에 연결될 수 있다. 메모리(210)는 RAM(random access memory), ROM(read-only memory), 혹은 다른 상태 유지 매체(state preserving media) 등과 같은 것을 포함할 수 잇다. 또한, 프로세서들(205)은 저장 장치들(220)에 연결 되고 네트워크 커넥터(315)에 연결될 수 있다. 네트워크 커넥터(315)는, 예를 들어, 이더넷 커넥터 혹은 무선 커넥터일 수 있다. 또한 프로세서들(205)은 사용자 인터페이스(325) 및 입력/출력 인터페이스 포트들에 부착될 수 있도록 버스(320)에 연결될 수 있다. 입력/출력 인터페이스 포트들은 다른 구성 요소들 중에서 입력/출력 엔진(330)을 이용하여 관리될 수 있다.
도 4는 애플리케이션의 요구사항들을 수신하고, 결과로써 저장 장치 어레이를 조절하는 TASTE(tenant-aware storage sharing engine, 225)을 보여준다. 도 4을 참조하면, TASTE(225)는 스토리지 리소스 정보(405) 및 터넌트 요구사항들(415)을 수신할 수 있다. 스토리지 리소스 정보(405)는 저장 장치 어레이(410)애서의 저장장치들에 대한 정보일 수 있다. 이러한 정보를 이용하여, TASTE(225)는 도 2의 터넌트들(145 및 230)이 가질 수 있는 여러 가지 요구사항들을 해결하도록 저장 장치 어레이(410)를 구성할 수 있다. 이러한 요구사항들은 (이러한 요구사항들이 도 2의 TASTE(225)에 의해 어떻게 만족되는 지 도시하는 뒤의 도면들에서 제공되는 실시 예들과 함께) 다음의 것들을 포함할 수 있다:
대역폭(420): 도 2의 터넌트들(145 및 230)에 의해 요구되는 최소 대역폭. 도 2의 터넌트들(145 및 230)으로부터 최소 대역폭 요구사항이 주어지면, TASTE(225)는 요청된 최소 대역폭(420)을 제공하는 저장 장치 어레이(410)로부터 저장 장치(들)를 선택할 수 있다.
레이턴시(425): 도 2의 터넌트들(145 및 230)에 의해 용인될 수 있는 최대 레이턴시. 도 2의 터넌트들(145 및 230)으로부터 최대 레이턴시 요구사항이 주어지면, TASTE(225)는 요청된 최대 레이턴시(425)를 제공하는 저장 장치 어레이(410)로부터 저장 장치(들)를 선택할 수 있다.
클러스터 크기(430): 도 2의 터넌트들(145 및 230)을 지원하도록 얼마나 많은 개별 저장 장치들이 할당되어야 하는가. 요청된 클러스터 크기가 주어지면, TASTE(225)는 요청된 클러스터 크기(430)를 제공하기에 충분한 저장 장치들을 선택할 수 있다.
패이지 크기(435): 도 2의 터넌트들(145 및 230)을 지원하도록 할당된 각 저장 장치를 위한 페이지 크기가 얼마나 커야 하는가. 요청된 페이지 크기(혹은, 터넌트들(145 혹은 230)이 클러스터 내의 서로 다른 저장 장치들을 위해 서로 다른 페이지 크기들을 요청하기 때문에 요청된 페이지들의 크기들)가 주어지면, TASTE(225)는 요청된 페이지 크기(들)(435)를 사용하기 위하여 클러스터에서 다양한 저장 장치들을 구성할 수 있다.
이중화(440, 또한, 복제 인자(replication factor)로 불림): 도 2의 터넌트들(145 및 230)을 위한 저장 장치 어레이(410) 내부에 각 데이터의 복사본들이 얼마나 많이 저장되어야 하는가. 요청된 이중화가 주어지면, TASTE(225)는 요청된 이중화(440)를 제공하도록 충분한 저장 장치들을 선택할 수 있다.
이중화(440) 및 클러스터 크기(430)는 (관련된 경우)서로 다른 개념들이다. 만일 도 2의 터넌트들(1145 및 230)이 3의 클러스터 크기(430)를 명시한다면, 그것들은 3개의 저장 장치들이 클러스터 내에 포함된다는 것을 단지 요청하고 있다. 만일 도 2의 터넌트들(1145 및 230)이 3의 이중화(440)를 명시한다면, 그것들은 각각의 데이터가 3개의 서로 다른 저장 장치들에 저장된다는 것을 요청하고 있다. 따라서, 도 2의 터넌트들(145 및 230)을 위한 클러스터 크기는 최소 3일 필요가 있고(각 데이터의 3개의 복사본들을 저장하도록 서로 다른 적어도 3개의 저장 장치들이 존재해야 하기 때문에), 하지만 클러스터 크기는 더 클 수 있다. 클러스터 크기(430)와 이중화(440) 사이의 차이를 이해하는 다른 방법은, RAID(redundant array of independent disks) 레벨 0 및 1 사이의 차이점에 대한 비교일 수 있다. RAID 0은 임의 개별 디스크의 오류에 대한 이중화는 없지만, 더 큰 전체 저장 용량(각 디스크들의 용량들의 합과 동일함)을 제공한다. 반면에 RAID 1은 n개의 디스크들의 어레이에서 n-1개의 디스크들까지의 오류 가능성에 대하여 보호할 수 있지만, 개별 저장 디스크들의 최소 용량들과 동일한 용량을 제공한다.
병렬화(445): 도 2의 터넌트들(145 및 230)을 위한 서비스 목표치(desired degree)을 제공하도록 저장 장치들을 결합함. 도 2의 터넌트들(145 및 230)이 저장 장치 어레이(410) 내의 개별 저장 장치에 의해 제공되는 것보다 더 큰 대역폭 및/혹은 더 작은 레이턴시를 요구할 수 있다는 가능성이 있다. 이런 상황에서, 요청된 병렬화가 주어지면, TASTE(225)는 요청된 병렬화(445)를 제공하도록 저장 장치들을 선택할 수 있다. 그러면 이러한 선택된 저장 장치들은 원하는 대역폭 및/혹은 레이턴시를 제공하는 가상 저장 장치로 결합될 수 있다.
병렬화(445)가 대역폭(420) 및 레이턴시(425)와 일부 겹치지만, 그것들은 서로 차이가 있다. 예를 들어, 만약 저장 장치 어레이(410) 내의 어떠한 개별 저장 장치도 요구된 대역폭(420) 및/혹은 레이턴시(425)를 제공하지 않지만, 도 2의 터넌트들(145 및 230)이 대역폭(420) 및/혹은 레이턴시(425)를 명시하면, TASTE(225)는 병렬화를 호출하도록 시도하지 않고 요구사항들을 만족하지 못하는 오류를 반환할 수 있다. 그러면, 도 2의 터넌트들(145 및 230)은, 그것들이 더 적은 요구사항들로 만족되는 지 혹은 그것들이 병렬화(445)와 같은 요구사항을 확립하길 원하는 지를 결정할 수 있다. (물론, 저장 장치 어레이(410) 내의 어떠한 개별 저장 장치도 대역폭(420) 및/혹은 레이턴시(425)의 요구사항들을 만족하지 못하면, 필요하다면, TASTE(225)는 자동으로 병렬화(445)의 추가적인 요구사항을 적용할 수 있다.)
지속성(450): 소거되기 전에 저장 장치들에 도 2의 터넌트들(145 및 230)을 위한 데이터가 얼마나 오랫동안 유지해야 되는가 혹은 전원 오류에도 그러한 데이터가 생존하는 지(혹은 모두)이다. 도 2의 터넌트들(145 및230)은 그것들의 데이터가 노화(aging)로 인하여 소거되지 않고, 어떤 최소 시간 동안에 그것들의 저장 장치들에 유지되길 원할 수 있다(즉, 그것들의 데이터는 어떤 최소 시간 동안 저장되어 있었다는 이유로 삭제되지 않아야 한다). TASTE(225)는 명시된 시간 동안 데이터를 유지하기 위하여 도 2의 터넌트들(145 및 230)을 지원하는 저장 장치 어레이(410)에서 저장 장치들을 구성할 수 있다. 예를 들어, 산발적으로 접근되는 데이터를 위한 키-밸류 스토어를 이용하는 애플리케이션들은 너무 빨리 데이터가 무효화되지 않도록 보장하길 원할 수 있다. TASTE(225)는 명시된 시간 동안 데이터를 무효화시키지 않을 수 있는 저장 장치들을 선택할 수 있고, 나중에 그 데이터는 무효화/가비지 컬렉션 아래에 놓일 수 있다.
선택적으로, 도 2의 터넌트들(145 및 230)은, 전원 오류에서도 데이터가 유지되는 것을 보장하길 원할 수 있다. 비휘발성 스토리지(전원이 꺼지더라도 데이터가 유지됨)를 이용하는 것은 해결책 중 하나일 수 있다. 하지만, 지속성은, 전원 오류에도 불구하고 데이터가 저장 장치에 쓰여진 것으로 확실하게 되는 것을 보장하는 능력을 요구할 수 있다. 예를 들어, 저장 장치는 DRAM 내의 버퍼에서 데이터를 저장할 수 있고, 쓰여질 데이터의 사전에 결정된 분량이 존재할 때만 스토리지에 데이터를 오로지 쓸 수 있다. 버퍼링된 데이터가 롱-텀 스토리지에 쓰여지기 전에 전원 오류가 발생하면, 버퍼의 데이터는 유실될 것이다. 이러한 문제를 해결하기 위해, 지속성을 요청하는 애플리케이션은 애플리케이션을 지속성-보장(persistency-guaranteed) FTL 및 물리 장치(physical device)에 맵핑할 수 있다. 여기서 물리 장치는 갑작스러운 전원 손실에도 데이터 유실을 방지하는 내장된 고용량 캐퍼시터들을 갖는 SSD일 수 있다.
보안(455)(또한 분리(isolation)로도 언급됨): 어느 하나의 특별한 터넌트를 위한 데이터는 하나 이상의 다른 터넌트들 보다 저장 장치 어레이(410)에서 서로 다른 저장 장치들에 저장되어야 한다. 예를 들어, 도 2의 터넌트(145)는, 그것의 데이터가 도 2의 터넌트(230)을 위한 데이터로써의 저장 장치에 저장되지 않아야 한다고 명시할 수 있다. TASTE(225)는, 하나 이상의 다른 터넌트들로부터 도 2의 터넌트(145)의 데이터를 분리하는 저장 장치 어레이(140) 내의 저장 장치를 선택할 수 있다.
이동(460): 하나의 저장 장치로부터 저장 장치 어레이(410) 내의 다른 저장 장치로 터넌트를 위한 데이터가 이동 되어야 한다. 도 2의 터넌트들(145, 및 230)은 저장 장치 어레이(410) 내의 하나의 저장 장치로부터 다른 저장 장치로 데이터를 이동시키는 것을 요청할 수 있다. 혹은, TASTE(225)는, 용량 프로비져닝(capacity provisioning) 혹은 로드 밸런싱(load balancing) 과 같은 다른 이유들로 도 2의 터넌트들(145 및 230)을 위한 데이터를 이동하도록 결정할 수 있다. 어느 쪽이든, TASTE(225)는 하나의 저장 장치로부터 저장 장치 어레이(410) 내의 다른 저장 장치로 데이터를 이동하도록 관리할 수 있다.
또한, 도 4에 도시된 것들 이상의 다른 요구사항들(415)이 존재할 수 있다. 예를 들어, 도 2의 터넌트들(145 및 230)은 스토리지의 특수한 용량(예, 2 GB(gigabytes))이 그것들 각각에 할당될 수 있다고 명시할 수 있다. 본 발명의 실시 예들은, 도 4에 명시적으로 도시되거나 도시되지 않은, 임의의 요구사항들(415)을 지원할 수 있다.
도 5는 도 2의 TASTE(225)를 상세하게 보여준다. 도 5에서, TASTE(225)는 수신 로직(505), 스토리지(510), 선택 로직(515), 가상 저장 장치 로직(520), 및 변환 계층 로직(525)을 포함할 수 있다. 수신 로직(505)은, 도 2의 터넌트들(145 및 230)과 같은 다양한 리소스들로부터 도 4의 스토리지 리소스 정보(405) 및/혹은 도 4의 터넌트 요구사항(415)과 같은 정보를 수신할 수 있다. 스토리지(510)는 도 4의 저장 장치 어레이(410)에서 저장 장치들에 대한 정보를 저장할 수 있다. 저장 장치들에 대한 정보는, 어떤 저장 장치들이 어떤 노드들 내에 존재하는지, 어떤 종류들의 저장 장치들이 이용 가능한지, 그것들의 크기들, 대역폭들 및 레이턴시들, 등을 포함한다. 어떠한 저장 장치들이 "이용 가능한"(available)으로 간주될 수 있다는 것이 변할 수 있음에 유의해야 한다. 예를 들어, 도 2의 터넌트(145)가 도 2의 터넌트(230)으로부터 분리를 요청 했었다고 가정한다. 이후, 도 2의 터넌트(230)가 저장 장치들의 클러스터에 요청하면, 도 2의 터넌트(145)에 할당된 임의의 저장 장치들은 도 2의 터넌트(230)을 위한 클러스터를 선택하는 목적을 위해 이용 가능한 것으로 간주되지 않아야 한다.
선택 로직(515)은 터넌트를 위한 도 4의 요구사항들(415)을 만족하기 위하여 도 4의 저장 장치 어레이(410)로부터 저장 장치들을 선택할 수 있다. 가상 저장 장치 로직(520)은 도 4의 저장 장치 어레이(410) 내의 하나 이상의 물리 저장 장치들로부터 가상 저장 장치를 "구성"(construct)할 수 있다. 예를 들어, 도 4의 터넌트 요구사항들(415)이 도 4의 병렬화(445)을 명시하면, 가상 저장 장치 로직(520)은 그러한 요구사항들을 만족하는 물리 저장 장치가 없는 경우에 요청된 대역폭 및/혹은 레이턴시를 제공하는 가상 저장 장치를 "구성"(construct)할 수 있다.
변환 계층 로직(525)은 터넌트 요구사항들을 만족하도록 사용되는 물리 및/혹은 가상 저장 장치들과 사용될 변환 계층을 확립할 수 있다. 변환 계층 로직(525)이 무엇을 할 것인지는 터넌트 요구사항들이 무엇인지에 따라 달라질 수 있다. 본 발명의 일 실시 예에서, 만일 터넌트 요구사항들이 클러스터 크기를 포함하면, 변환 계층 로직(525)은 클러스터 크기로 저장 장치들에 걸쳐 논리 어드레스들을 물리 어드레스들로 맵핑 하기 위한 변환 계층을 확립할 수 있다. 선택적으로, 만일 가상 저장 장치가 터넌트에 의해 사용할 목적으로 생성된다면, 변환 계층 로직(525)은 터넌트에게 싱글 저장 장치로써 보이도록 변환 계층을 확립할 수 있지만, 가상 저장 장치로부터 어드레스들을 가상 저장 장치를 확립하는 다양한 물리 저장 장치들로 맵핑할 수도 있다. 본 발명의 다른 실시 예에서, 만일 터넌트 요구사항들이 하나 이상의 페이지 크기들을 포함한다면, 변환 계층 로직(525)은 명시된 페이지 크기들 중 어느 하나에 따라 다양한 저장 장치들을 페이지들로 분할하는 변환 계층을 확립할 수 있다. 본 발명의 또 다른 실시 예에서, 만일 터넌트 요구사항들이 복제 인자를 포함한다면, 변환 계층 로직(525)은 물리 저장 장치들에 걸쳐서 복제를 지원하도록, 싱글 논리 어드레스를 다양한 물리 저장 장치들 상의 복수의 물리 어드레스들로 맵핑하는 변환 계층을 확립할 수 있다. 상술 된 바와 같이, 물리 저장 장치들은 싱글 노드 혹은 복수의 노드들 내에서 존재할 수 있다. 본 발명의 다른 실시 예에서, 만일 터넌트 요구사항들이 지속성 요구사항을 포함한다면, 변환 계층 로직(525)은 물리 저장 장치(들) 상에 저장된 개별 데이터가 얼마나 오랫동안 변하지 않는지를 추적하는 변환 계층을 확립할 수 있고, 그리고 문턱 시간(threshold amount of time)이 지난 후에만 무효화를 위한 데이터를 마크(mark)할 수 있다. 추가로, 본 발명의 실시 예들은 복수의 이러한 터넌트 요구사항들을 지원하는 변환 계층을 확립하는 변환 계층 로직(525)을 포함할 수 있다.
도 6은 도 5의 선택 로직(515)을 상세하게 보여준다. 도 6을 참조하면, 선택 로직(515)은 클러스터 선택 로직(605), 구성 로직(610), 복제 로직(615), 지속성 로직(620), 분리 로직(625), 및 이동 로직(630)을 포함할 수 있다. 클러스터 선택 로직(605)은 도 4의 클러스터 크기(430)를 만족하도록 저장 장치 어레이(410)으로부터 저장 장치들의 클러스터를 선택할 수 있다. 구성 로직(610)은 도 4의 페이지 크기(들)(435)를 사용하도록 저장 장치 어레이(410)내의 하나 이상의 저장 장치들을 구성할 수 있다. 복제 로직(615)은 데이터 센터(105)의 노드 내의 서로 다른 저장 장치들에 걸쳐 데이터의 복제를 관리할 수 있다. 지속성 로직(620)은, 데이터가 접근되지 않더라도 명시된 최소 구간 동안에 데이터가 지속되도록 도 4의 저장 장치 어레이(410) 내부의 저장 장치들을 구성할 수 있다. 혹은 지속성 로직(620)은 기대되지 않은 전원 오류에서 데이터가 보존되도록 보장하는 저장 장치들을 선택 로직(515)이 선택할 수 있도록 한다. 분리 로직(625)은 하나 이상의 식별된 터넌트들과 저장 장치들을 공유하지 않도록 도 4의 저장 장치 어레이(410) 내의 저장 장치(혹은 저장 장치들의 클러스터)를 선택할 수 있다. 그리고 이동 로직(630)은, 도 2의 터넌트(145 및/혹은 230)의 요청 혹은 도 4의 TASTE(225) 그 자체에 의해, 도 4의 저장 장치 어레이(410) 내의 하나의 저장 장치에서 다른 저장 장치로 데이터 이동을 관리할 수 있다.
도 5 내지 도 6에서, 다양한 구성요소들이 로직들로 설명되었다. 이러한 로직들은 목표된 결과들에 도달하기 위하여 적절하게 설계된 회로들, 혹은 적절하게 변형된 범용 회로들, 예를 들어, PROM(programmable read-only memory), EPPROM(erasable programmable read-only memory), EEPROM(electrically erasable programmable read-only memory), 혹은 임의의 등가의 설계일 수 있다. 또한, 이러한 로직들은 적합한 프로세서 상에서 구동하는 소프트웨어를 이용하여 구현될 수 있다.
상술 된 논의는 도 2의 TASTE(225)가 어떻게 동작하는 지에 대한 일부 설명을 제공한다. 하지만 일부 예들은 도 2의 TASTE(225)가 무엇을 하는지 명확히 하는데 도움이 될 수 있다. 시작하려면, 예시적인 저장 장치 어레이(410)가 유용할 것이다.
도 7은 도 4의 저장 장치 어레이(410)를 예시적으로 보여준다. 도 7를 참조하면, 저장 장치 어레이(410)는 전체 25개의 저장 장치들을 포함한다. 이러한 저장장치들은 2개의 저장 장치들의 클래스들로 대략적으로 구분될 수 있다. 저장 장치들(705)은 고성능 저장 장치들이고, 반면에 저장 장치들(710)은 저성능 저장 장치들이다. 저장 장치들(705 및 710)은 노드들(715, 720, 725, 730, 및 735)에 걸쳐 구분될 수 있다. 여기서 각 노드는 도 1의 데이터 센터(105) 내의 싱글 머신(single machine)을 나타내거나 혹은 싱글 랙(single rack)을 나타낼 수 있다.
도 7이 예시적인 저장 장치 어레이(410)를 도시하지만, 본 발명의 실시 예들은 저장 장치 어레이(410)을 위한 임의의 원하는 구성을 지원할 수 있다. 예를 들어, 오직 5 개가 아니라, 임의의 개수의 노드들이 존재할 수 있다. 각 노드는 오직 5개가 아니라, 저장 장치들의 임의의 개수를 포함할 수 있다. 각 노드는 저장 장치 어레이(410)내에 다른 노드들과 다른 개수의 저장 장치들을 포함할 수 있다. 또한, 각 노드는 제로(zero)를 포함하여 서로 다른 유형들의 서로 다른 개수의 저장 장치들을 포함할 수 있다. 예를 들어, 하나의 노드는 고성능 저장 장치들(705)만을 포함할 수 있고, 다른 노드는 저성능 저장 장치들(710)만을 포함할 수 있다. 저장 장치들의 두 개 이상의 클래스들(도 7에서, 고성능 저장 장치들(705) 및 저성능 저장 장치들(710))이 존재할 수 있다. 그리고 저장 장치들은 하나 이상의 기준에 따라 구분될 수 있다. 그리고, 도 7의 저장 장치들을 링크하는 것으로 보이는 임의의 다른 쓰레드(thread)는 본 발명의 다른 실시 예들에서 또한 가변 될 수 있다.
도 8은 도 7의 저장 장치 어레이(410) 내부에서 확립되는 가상 저장 장치를 보여준다. 도 8을 참조하면, 도 2의 터넌트(145)는 대역폭(420) 및/혹은 레이턴시(425), 및 병렬화(445)를 식별하는, 도 4의 명시된 요구사항들(415)을 가질 수 있다. 도 4의 이러한 요구사항들(415)은, 도 2의 터넌트(145)가 특별한 최소 대역폭 및/혹은 최대 레이턴시를 원한다는 것을 지시할 수 있으며, 만일, 이러한 요구사항들을 만족하는 가용의 싱글 저장 장치가 없다면, 도 2의 TASTE(225)가 이러한 요구사항들을 만족하도록 가상 저장 장치를 구성할 수 있다는 것을 지시할 수 있다. 추가로 저장 장치 어레이(410) 내의 어떠한 싱글 저장 장치도 이러한 요구사항들을 만족하지 않는다고 가정하자. 따라서, 도 2의 TASTE(225)는 노드(715)에서 두 개의 저장 장치들로부터 가상 저장 장치(805)를 구성할 수 있다. 도 8에서, TASTE(225)는 저성능 저장 장치들(710)이 도 2의 터넌트(145)에 충분하다는 것을 알기 위하여 도 2의 터넌트(145)에 대한 정보를 이용할 수 있지만, 만일, 도 2의 터넌트(145)가 고성능 저장 장치들(705)로부터 지원을 필요로 한다면 도 2의 TASTE(225)는 고성능 저장 장치들(705)로부터 가상 저장 장치(805)를 구성할 수 잇다.
가상 저장 장치(805)는 새로운 플래시 저장 장치(예를 들어 SSD)를 나타날 수 있기 때문에 가상 저장 장치(805)는 자기 자신의 플래시 변환 계층(FTL, 810)을 포함할 수 있다. FTL(810)은, 도 2의 터넌트(145)에 의해 사용되는 논리 블록 어드레스들과 가상 저장 장치(805)를 구성하는 저장 장치들에 의해 사용되는 물리 블록 어드레스들 사이의 맵핑을 관리할 수 있다.
도 9는 도 7의 저장 장치 어레이(410)에서 다양한 애플리케이션들의 요구사항들을 만족하도록 할당된 다양한 클러스터들 및 저장 장치 페이지 크기들을 보여준다. 도 9를 참조하면, 도 2의 터넌트(145)는 4개의 가상 저장 장치들의 클러스터 크기(430)를 명시할 수 있다. 각 가상 저장 장치는 2개의 병렬화를 포함한다. 도 2의 터넌트(145)는, 예를 들어, HDFS일 수 있다. 유사하게, 도 2의 터넌트(230)는 KV-스토어일 수 있고, 3개의 가상 저장 장치들의 클러스터 크기(430)를 명시할 수 있다. 각 가상 저장 장치는 2개의 병렬화(445)를 포함할 수 있다. 이러한 결과들에 도달하기 위하여, 도 2의 TASTE(225)는 각 터넌트를 위하여 적합한 가상 저장 장치들을 구성할 수 있다. HDFS가 고성능 저장 장치들을 요구하지 않기 때문에, TASTE(225)는 저성능 저장 장치들(710)을 이용하는 HDFS를 위한 클러스터를 구성할 수 있다. 따라서, 도 2의 TASTE(225)는 클러스터(920)로 모일 수 있는 가상 저장 장치들(805, 905, 910, 및 915)을 구성할 수 있다(간략화를 위해 도 9에는 이러한 가상 저장 장치들을 위한 FTL들이 도시되지 않음). 유사하게, KV-스토어는 고성능 저장 장치들로 구성하는 것이 유리하기 때문에, 도 2의 TASTE(225)는 고성능 저장 장치들(705)로부터 가상 저장 장치들(925, 930, 및 935)을 구성할 수 있다. 그러면, 가상 저장 장치들(925, 930, 및 935)은 클러스터(940)로 모일 수 있다.
또한, 도 9는 도 4의 페이지 크기(435)의 사용을 도시한다. 도 9에서, 도 2의 터넌트(145)는 가상 저장 장치들(805, 905, 910, 및 915)을 위하여 64 MB(페이지 크기(945))의 도 4의 페이지 크기(435)를 명시할 수 있다. 반면에 KV-스토어는 가상 저장 장치들(925, 930, 및 935)을 위하여 100 B, 32 KB, 및 2 MB (페이지 크기들(950, 955, 및 960))의 도 4의 페이지 크기들(435)을 명시할 수 있다. 서로 다른 터넌트들은 도4의 서로 다른 페이지 크기들(435)을 명시할 수 있고, 싱글 터넌트는 모든 저장 장치들(가상 혹은 물리)을 위해 도 4의 동일한 페이지 크기(435)를 사용해야만 하는 것은 아닌 것에 유의하여야 한다.
도 10은 도 7의 저장 장치 어레이(410) 내에서 저장 장치들 사이의 복제를 보여준다. 도 10을 참조하면, 도 9와 유사하게, 도 2의 터넌트(145)는 4개의 저장 장치들의 도 4의 클러스터 크기(430)를 명시할 수 있다. 하지만, 도 4의 병렬화(445)를 명시하는 것 대신에, 도 2의 터넌트(145)는 2개의 이중화(440)를 명시할 수 있다. 즉, 각 데이터는 노드 내의 두 개의 저장 장치들 상에 저장되어야 한다. 그러면, 도 2의 터넌트(225)는 가상 저장 장치(805, 905, 910, 및 915)을 구성할 수 있다. 그러나, 두 개의 저장 장치들 모두가 결합된 만큼 크게 보이도록 가상 저장 장치를 구성하기 위해 개별 저장 장치들을 결합하는 것 대신에, 도 2의 TASTE(225)는 하나의 저장 장치로부터 각 가상 저장 장치 내의 다른 저장 장치로 데이터를 복사하도록 저장 장치들을 관리할 수 있다. 이러한 복사 동작은 동작(1005)으로 도시되어 있다.
도 10은 하나의 노드 내의 저장 장치들 사이에서 복사하는 것을 도시한다는 것에 유의 하여야 한다. 또한, 도 2의 TASTE(225)는 노드를 제거할 수 있는 전원 손실에 대한 보호를 위하여 서로 다른 노드들에서의(즉, 서로 다른 랙들에서의) 저장 장치들 사이의 데이터 복사를 관리할 수 있다. 이러한 방식으로, 데이터 이중화는 저장 장치의 오류에 대하여 보호할 뿐 아니라, 전원 오류와 함께 발생할 수 있는 하나의 노드 내의 모든 저장 장치들이 동시에 이용 불가능하게 되는 것에 대한 보호를 할 수 있다.
도 11은 도 7의 저장 장치 어레이(410) 내에서 저장 장치들 사이의 데이터 이동을 보여준다. 도 11을 참조하면, 도 2의 터넌트(145) 혹은 도 2의 TASTE(225) 스스로가, 데이터가 하나의 저장 장치에서 다른 저장 장치로 이동되어야 하는 것을 결정할 수 있다. 예를 들어, 도 2의 터넌트(145)는 이전 저장 장치가 지원하는 것 이상의 스토리지 증가를 요청할 수 있다. 그러면, 도 2의 TASTE(225)는 동작(1105)에 도시된 바와 같이, 새로운 저장 장치로 데이터를 이동할 수 있다. 혹은 웨어 레벨링의 이유들(혹은 다른 이유들)로 인하여, 도 2의 TASTE(225)는 또한 동작(1105)에 도시된 바와 같이, 이전 저장 장치로부터 새로운 저장 장치로 데이터를 이동할 필요를 판별할 수 있다.
도 12는 본 발명의 실시 예에 따른, 도 4의 애플리케이션의 저장 요구사항들(415)을 수신하고 이에 따라 도 4의 저장 장치 어레이(410)를 조절하는 도 2의 TASTE(225)를 위한 예시적인 과정에 대한 흐름도를 보여준다. 도 12를 참조하면, 1205 단계에서, 도 2의 TASTE(225)는 터넌트(애플리케이션)을 위한 도 4의 요구사항들(415)을 수신할 수 있다. 1210 단계에서, 도 2의 TASTE(225)는 도 1의 데이터 센터(105)에서 이용 가능한 리소스들을 식별할 수 있다. 즉, 이용 가능한 리소스들은 도 4의 저장 장치 어레이(410) 에서 저장 장치들, 및 그것들의 모든 특성들이다. 이러한 정보는 도 5의 스토리지(510)로부터 접근될 수 있다. 1215 단계에서, 도 5의 선택 로직(515)은 터넌트를 위한 도 4의 요구사항들(415)을 만족할 수 있는 도 4의 저장 장치 어레이(410) 에서 저장 장치들의 부분집합(subset)을 선택할 수 있다. 1220 단계에서, 도 5의 가상 저장 장치 로직(515)은, 필요하다면, 적어도 하나의 물리 저장 장치로부터 가상 저장 장치를 구성할 수 있다. 1225 단계에서, 도 5의 가상 저장 장치 로직(520)은 애플리케이션의 요구사항들을 만족하는 변환 계층을 확립할 수 있다. 도 5를 참조하여 상술 된 바와 같이, 도 5의 변환 계층 로직(525)은 애플리케이션 요구사항들에서 하나의 이상의 서로 다른 목적들을 만족할 수 있는 변환 계층을 확립할 수 있다. 1225 단계는 이러한 목적들을 달성하도록 변환 계층을 구현할 수 있다.
도 13a ~ 도 13c는 본 발명의 실시 예에 따른, 수신된 애플리케이션의 요구사항들에 응답하여 도 4의 저장 장치 어레이(410)를 구현하는 도 2의 TASTE(225)를 위한 예시적인 과정에 대한 흐름도를 보여준다. 도 13a을 참조하면, 1303 단계에서, 도 5의 수신 로직(505)은 도 2의 터넌트들(145 및 230)로부터 도 4의 클러스터 크기(430)를 수신할 수 있다. 1306 단계에서, 도 6의 클러스터 선택 로직(605)은 도 4의 클러스터 크기(430)를 만족하는 도 4의 저장 장치 어레이(410)의 부분집합을 선택할 수 있다.
선택적으로, 1309 단계에서, 도 5의 수신 로직(505)은 도 2의 터넌트들(145 및 230)로부터 도 4의 지속성 요구사항(450)을 수신할 수 있다. 1312 단계에서, 도 6의 지속성 로직(620)은 도 4의 지속성 요구사항(450)을 만족하도록 도 4의 저장 장치 어레이(410)에서 저장 장치들을 구성할 수 있다.
선택적으로, 1315 단계에서, 도 5의 수신 로직(505)은 도 2의 터넌트들(145 및 230)로부터 도 4의 분리 요구사항(455)을 수신할 수 있다. 1318 단계에서, 도 6의 분리 로직(625)은 도 4의 분리 요구사항(455)을 만족하는 도 4의 저장 장치 어레이(410)의 부분집합을 선택할 수 있다.
선택적으로, 1321 단계에서(도 13b), 도 5의 수신 로직(505)은 도 2의 터넌트들(145 및 230)로부터 도 4의 복제 인자(440)를 수신할 수 있다. 1324 단계에서, 도 6의 클러스터 선택 로직(605)은 도 4의 복제 인자(440)를 만족하는 도 4의 저장 장치 어레이(410)의 부분집합을 선택할 수 있다. 1327 단계에서, 도 2의 TASTE(225)는 노드 내의 저장 장치들 사이의 데이터 복제를 관리할 수 있다. 1330 단계에서, 도 2의 TASTE(225)는 도 1의 데이터 센서(105)에서 노드들 사이의 데이터 복제를 관리할 수 있다.
선택적으로, 1333 단계에서, 도 5의 수신 로직(505)은 도 2의 터넌트들(145 및 230)로부터 도 4의 페이지 크기(들)(435)를 수신할 수 있다. 1336 단계에서, 도 6의 클러스터 선택 로직(605)은 도 4의 저장 장치 어레이(410)의 부분집합을 선택할 수 있다. 1339 단계에서, 도 6의 구성 로직(610)은 도 4의 페이지 크기(들)(435)를 사용하도록 도 4의 저장 장치 어레이(410)에서 저장 장치들을 구성할 수 있다.
선택적으로, 1342 단계에서(도 13c), 도 5의 수신 로직(505)은 도 2의 터넌트들(145 및 230)로부터 도 4의 레이턴시(425)를 수신할 수 있다. 1345 단계에서, 도 6의 클러스터 선택 로직(605)은 도 4의 레이턴시(425)를 만족하는 도 4의 저장 장치 어레이(410)의 부분집합을 선택할 수 있다.
선택적으로, 1348 단계에서, 도 5의 수신 로직(505)은 도 2의 터넌트들(145 및 230)로부터 도 4의 대역폭(420)을 수신할 수 있다. 1351 단계에서, 도 6의 클러스터 선택 로직(605)은 도 4의 대역폭(420)을 만족하는 도 4의 저장 장치 어레이(410)의 부분집합을 선택할 수 있다.
선택적으로, 1354 단계에서, 도 5의 수신 로직(505)은 도 2의 터넌트들(145 및 230(혹은 도 2의 TASTE(225) 그 자체로부터)로부터 도 4의 이동(460)을 수신할 수 있다. 1357 단계에서, 도 2의 TASTE(225)은 이동될 데이터가 존재하는 저장 장치를 식별할 수 있다. 1360 단계에서, 도 2의 TASTE(225)는 데이터가 이동되어야 할 제 2 저장 장치를 선택할 수 있다. 그 후에 1363 단계에서, 도 6의 이동 로직(630)은 제 1 저장 장치로부터 제 2 저장 장치로 데이터를 이동할 수 있다.
도 12 및 도 13c에서 본 발명의 일부 실시 예들이 도시된다. 하지만 당업자는 단계(block)의 순서를 변경하거나, 단계를 생략하거나, 혹은 도면에 도시되지 않은 링크들(links)을 포함함으로써, 본 발명의 다른 실시 예들도 가능하다는 것을 인식할 것이다. 흐름도들의 이러한 모든 변형들은 명시적으로 기술되었든 그렇지 않든지 본 발명의 개념의 실시 예들인 것으로 간주된다.
아래의 설명은 본 발명의 기술적 사상의 일부 측면들이 구현되는 적절한 머신 혹은 머신들의 짧고 일반적인 설명을 제공하고자 한다. 머신 혹은 머신들은 적어도 일부는 다른 머신으로부터 수신되는 지시들, 가상현실(VR) 환경과의 상호 작용, 생체 피드백, 혹은 다른 입력 신호뿐 아니라 키보드, 마우스 등과 같은 통상적인 입력 장치들로부터의 입력에 의해 제어될 수 있다. 여기에서 사용되는 바와 같이, "머신"의 용어는 단일 머신, 가상 머신, 혹은 머신들, 가상 머신들 혹은 함께 동작하는 장치들과 통신하도록 결합된 시스템을 넓게 포함하는 것으로 의도된다. 예시적인 머신들은 예를 들어 자동차, 기차, 택시 등과 같은 개인용 혹은 공공 수송과 같은 수송 장치들뿐 아니라 개인용 컴퓨터들, 워크스테이션들, 서버들, 포터블 컴퓨터들, 핸드헬드 장치들, 전화들, 태블릿들 등과 같은 컴퓨팅 장치들을 포함할 수 있다.
머신 혹은 머신들은 프로그램 가능한 혹은 프로그램 불가능한 논리 장치들 혹은 어레이들, ASIC (Application Specific Integrated Circuit), 임베디드 컴퓨터들, 스마트카드들 등과 같은 임베디드 컨트롤러들을 포함할 수 있다. 머신 혹은 머신들은 네트워크 인터페이스, 모뎀, 혹은 다른 통신 결합들을 통해서, 하나 이상의 원격 머신들에 대한 하나 이상의 연결들을 활용할 수 있다. 머신들은 인트라넷, 인터넷, LAN (local area networks), WAN (wide area networks) 등과 같은 물리적 그리고/혹은 논리적 네트워크의 수단으로 서로 연결될 수 있다. 이 분야에 숙련된 자는 네트워크 통신이 다양한 유선 그리고/혹은 무선 근거리 혹은 원거리 캐리어들 및 무선 주파수(RF), 위성, 마이크로파, IEEE 802.11, 블루투스, 광학, 적외선, 케이블, 레이저 등을 포함하는 프로토콜을 활용함을 이해할 것이다.
본 발명의 기술적 사상의 실시 예들은, 머신에 의해 액세스되는 때에 머신가 작업들을 수행하거나 혹은 추상적인 데이터 타입들 혹은 저레벨 하드웨어 콘텍스트들을 정의하는 것을 유발하는 함수들, 절차들, 데이터 구조들, 응용 프로그램들 등을 포함하는 연관된 데이터를 참조하여 혹은 협력하여 설명될 수 있다. 연관된 데이터는, 예를 들어 RAM, ROM 등과 같은 휘발성 그리고/혹은 불휘발성 메모리, 혹은 다른 스토리지 장치들, 그리고 하드 드라이브, 플로피 디스크, 광학 스토리지, 테이프들, 플래시 메모리, 메모리 스틱들, 디지털 비디오 디스크들, 생체 스토리지 등을 포함하는 연관된 스토리지 매체에 저장될 수 있다. 연관된 데이터는 물리적 그리고/혹은 논리적 네트워크를 포함하는 전송 환경들을 거쳐 패킷들, 직렬 데이터, 병렬 데이터, 전송신호들 등의 형태로 전달되고, 압축된 혹은 암호화된 포맷으로 이용될 수 있다. 연관된 데이터는 분산 환경에서 사용될 수 있으며, 머신 액세스에 대해 지역적 그리고/혹은 원격으로 저장될 수 있다.
본 발명의 기술적 사상의 실시 예들은 하나 이상의 프로세서들에 의해 실행 가능하며 여기에 설명된 바와 같이 본 발명의 기술적 사상의 원소들을 수행하게 하는 명령들을 포함하는 실재하는 비일시적 머신 독출 매체를 포함할 수 있다.
도시된 실시 예들을 참조하여 설명된 본 발명의 기술적 사상의 원칙들을 가지면, 도시된 실시 예들이 이러한 원칙들로부터 멀어지지 않으면서 배열 및 상세에서 수정될 수 있고 필요한 임의의 방법으로 조합될 수 있음이 이해될 것이다. 앞선 설명이 구체적인 실시 예들에 집중하였지만, 다른 구성들 또한 고려된다. 구체적으로, "본 발명의 기술적 사상의 실시 예에 따른"과 같은 설명들 혹은 여기에 사용된 유사한 것들에 불구하고, 이러한 문구들은 일반적으로 실시 예의 가능성들을 참조하며, 본 발명의 기술적 사상을 구체적인 실시 예의 구성들로 한정하는 것을 의도하지 않는다. 여기에 사용되는 바와 같이, 이러한 용어들은 다른 실시 예들로 조합 가능한 동일한 혹은 상이한 실시 예들을 참조할 수 있다.
본 발명의 실시 예들은 제한 없이 다음의 진술들로 확장될 수 있다.
진술 1. 본 발명의 실시 예는 터넌트-어웨어 스토리지-쉐어링(tenant-aware storage-sharing engine; TASTE)을 포함하고, 상기 TASTE는,
가용한 저장 장치들의 집합에 대한 정보를 저장하는 스토리지;
애플리케이션으로부터 저장 장치 요구사항들을 수신하는 수신 로직; 및
상기 저장 장치 요구사항들을 만족하는 상기 가용한 저장 장치들의 집합에서 부분집합을 선택하는 선택 로직을 포함한다.
진술 2. 본 발명의 실시 예는 진술 1에 따른 TASTE를 포함하고,
상기 저장 장치 요구사항들은 상기 애플리케이션을 위한 클러스터 크기를 포함하고; 및
상기 선택 로직은 상기 가용한 저장 장치들의 집합의 상기 부분집합을 선택하는 클러스터 선택 로직을 포함하고, 상기 가용한 저장 장치들의 집합의 상기 부분집합에서 저장 장치들의 개수는 상기 클러스터 크기와 동일하다.
진술 3. 본 발명의 실시 예는 진술 2에 따른 TASTE를 포함하고, 상기 TASTE는 논리 블록 어드레스들을 상기 가용한 저장 장치들의 집합의 상기 부분집합 상의 물리 어드레스들로 맵핑하도록 상기 가용한 저장 장치들의 상기 부분집합을 위한 변환 로직을 더 포함한다.
진술 4. 본 발명의 실시 예는 진술 3에 따른 TASTE를 포함하고, 상기 TASTE는 논리 블록 어드레스들을 상기 가용한 저장 장치들의 집합의 상기 부분집합에서 복수의 저장 장치들로부터 가상 저장 장치를 위한 변환 로직을 더 포함한다.
진술 5. 본 발명의 실시 예는 진술 1에 따른 TASTE를 포함하고,
상기 저장 장치 요구사항들은 상기 애플리케이션을 위한 페이지 크기를 포함하고; 및
상기 선택 로직은 상기 페이지 크기를 사용하기 위하여 상기 가용한 저장 장치들의 집합의 상기 부분집합을 구성하기 위한 구성 로직을 포함한다.
진술 6. 본 발명의 실시 예는 진술 5에 따른 TASTE를 포함하고, 상기 TASTE는 상기 페이지의 크기에 따라 논리 블록 어드레스들을 물리 블록 어드레스들로 맵핑하도록 상기 가용한 저장 장치들의 집합의 상기 부분집합을 위한 변환 계층을 확립하는 변환 계층 로직을 더 포함한다.
진술 7. 본 발명의 실시 예는 진술 5에 따른 TASTE를 포함하고,
상기 저장 장치 요구사항들은 상기 애플리케이션을 위한 복수의 페이지 크기들을 포함하고; 및
상기 선택 로직은 상기 복수의 페이지 크기들을 사용하도록 상기 가용한 저장 장치들의 집합의 상기 부분집합을 구성하는 구성 로직을 포함한다.
진술 8. 본 발명의 실시 예는 진술 7에 따른 TASTE를 포함하고, 상기 TASTE 는 제 1 페이지 크기에 따라 제 1 논리 블록 어드레스를 상기 가용한 저장 장치들의 집합의 제 1 부분집합 상의 제 1 물리 블록 어드레스로 맵핑하고, 제 2 페이지 크기에 따라 제 2 논리 블록 어드레스를 상기 가용한 저장 장치들의 집합의 제 2 부분집합 상의 제 2 물리 블록 어드레스로 맵핑하도록 상기 가용한 저장 장치들의 집하의 상기 부분집합을 위한 변환 계층을 확립하는 변환 계층 로직을 더 포함한다.
진술 9. 본 발명의 실시 예는 진술 1에 따른 TASTE를 포함하고,
상기 저장 장치 요구사항들은 상기 애플리케이션을 위한 복제 인자를 포함하고; 및
상기 선택 로직은 상기 가용한 저장 장치들의 집합의 상기 부분집합의 개수에 걸쳐서 데이터를 복제하는 복제 로직을 포함하고, 상기 개수는 상기 복제 인자와 동일하다.
진술 10. 본 발명의 실시 예는 진술 9에 따른 TASTE를 포함하고, 상기 TASTE는 상기 가용한 저장 장치들의 집합의 상기 부분집합에서 제 1 저장 장치를 상기 가용한 저장 장치들의 집합의 상기 부분집합에서 제 2 저장 장치의 복사본(replica)으로 관리하도록 상기 가용한 저장 장치들의 집합의 상기 부분집합을 위한 변환 계층을 확립하는 변환 계층 로직을 더 포함한다.
진술 11. 본 발명의 실시 예는 진술 9에 따른 TASTE를 포함하고, 상기 복제 로직은 하나의 노드 내의 저장 장치들에 걸쳐 데이터를 복제하도록 동작한다.
진술 12. 본 발명의 실시 예는 진술 11에 따른 TASTE를 포함하고, 상기 애플리케이션은 노드들에 걸쳐 데이터를 복제하도록 동작한다.
진술 13. 본 발명의 실시 예는 진술 1에 따른 TASTE를 포함하고,
상기 저장 장치 요구사항들은 상기 애플리케이션을 위한 지속성 요구사항을 포함하고; 및
상기 선택 로직은 상기 가용한 저장 장치들의 집합의 상기 부분집합 내에서 문턱 시간 동안 상기 애플리케이션로부터의 데이터를 유지하도록 보장하는 지속성 로직을 포함한다.
진술 14. 본 발명의 실시 예는 진술 13에 따른 TASTE를 포함하고, 상기 TASTE는 적어도 상기 문턱 시간 동안 상기 가용한 저장 장치들의 집합의 상기 부분집합 상의 데이터가 무효화 되지 않도록 상기 가용한 저장 장치들의 집합의 상기 부분집합을 위한 변환 계층을 확립하는 변환 계층 로직을 더 포함한다.
진술 15. 본 발명의 실시 예는 진술 1에 따른 TASTE를 포함하고,
상기 저장 장치 요구사항들은 상기 애플리케이션을 위한 지속성 요구사항을 포함하고; 및
상기 선택 로직은 전원 페일에 대하여 상기 가용한 저장 장치들의 집합의 상기 부분집합이 데이터를 보호할 수 있다는 것을 보장하는 지속성 로직을 포함한다.
진술 16. 본 발명의 실시 예는 진술 1에 따른 TASTE를 포함하고,
상기 저장 장치 요구사항들은 상기 애플리케이션을 위한 분리 요구사항을 포함하고; 및
상기 선택 로직은 상기 가용한 저장 장치들의 집합의 상기 부분집합이 상기 가용한 저장 장치들의 제 2 부분집합에 오버랩되지 않는다는 것을 보장하는 분리 로직을 포함하고, 상기 가용한 저장 장치들의 상기 제 2 부분집합은 제 2 애플리케이션에 의해 사용된다.
진술 17. 본 발명의 실시 예는 진술 1에 따른 TASTE를 포함하고,
상기 저장 장치 요구사항들은 상기 애플리케이션을 위한 이동 커맨드를 포함하고; 및
상기 선택 로직은 상기 가용한 저장 장치들의 집합의 상기 부분집합 내의 제 1 저장 장치로부터 상기 가용한 저장 장치들의 집합의 상기 부분집합 내의 제 2 저장 장치로 데이터를 이동시키는 이동 로직을 포함한다.
진술 18. 본 발명의 실시 예는 진술 13에 따른 TASTE를 포함하고, 상기 TASTE는 상기 가용한 저장 장치들의 집합의 상기 부분집합에서 복수의 저장 장치들로부터 가상 저장 장치를 발생시키는 가상 저장 장치 로직을 더 포함한다.
진술 19. 본 발명의 실시 예는 진술 18에 따른 TASTE를 포함하고, 상기 TASTE는 상기 가상 저장 장치를 위한 변환 계층을 확립하는 변환 계층 로직을 더 포함한다.
진술 20. 본 발명의 실시 예는 진술 1에 따른 TASTE를 포함하고,
상기 저장 장치 요구사항들은 상기 애플리케이션을 위한 대역폭 요구사항을 포함하고; 및
상기 선택 로직은 상기 대역폭 요구사항보다 좁지 않은 전체 대역폭을 제공하도록 상기 가용한 저장 장치들의 집합의 상기 부분집합을 선택하도록 동작한다.
진술 21. 본 발명의 실시 예는 진술 1에 따른 TASTE를 포함하고,
상기 저장 장치 요구사항들은 상기 애플리케이션을 위한 레이턴시 요구사항을 포함하고; 및
상기 선택 로직은 상기 레이턴시 요구사항보다 길지 않은 평균 레이턴시를 제공하도록 상기 가용한 저장 장치들의 집합의 상기 부분집합을 선택하도록 동작한다.
진술 22. 본 발명의 실시 예는 터넌트-어웨어 스토리지-쉐어링(tenant-aware storage-sharing engine; TASTE)에서 동작하는 방법을 포함하고, 상기 방법은,
상기 TASTE에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계;
가용한 저장 장치들의 집합을 식별하는 단계; 및
상기 애플리케이션으로부터의 상기 저장 장치 요구사항들의 집합을 만족하는 상기 가용한 저장 장치들의 집합의 부분집합을 선택하는 단계를 포함한다.
진술 23. 본 발명의 실시 예는 진술 22에 따른 방법을 포함하고,
상기 TASTE에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계는, 상기 애플리케이션을 위한 클러스터 크기를 수신하는 단계를 포함하고; 및
상기 애플리케이션으로부터의 상기 저장 장치 요구사항들의 집합을 만족하는 상기 가용한 저장 장치들의 집합의 부분집합을 선택하는 단계는, 상기 가용한 저장 장치들의 집합으로부터 저장 장치들을 선택하는 단계를 포함하고, 상기 가용한 저장 장치들의 집합의 상기 부분집합에서 상기 저장 장치들의 개수는 상기 애플리케이션을 위한 상기 클러스터의 크기와 동일하다.
진술 24. 본 발명의 실시 예는 진술 23에 따른 방법을 포함하고, 상기 방법은 논리 블록 어드레스들을 상기 가용한 저장 장치들의 집합의 상기 부분집합 상의 물리 어드레스들로 맵핑하도록 상기 가용한 저장 장치들의 상기 부분집합을 위한 변환 로직을 확립하는 단계를 더 포함한다.
진술 25. 본 발명의 실시 예는 진술 22에 따른 방법을 포함하고,
상기 TASTE에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계는, 상기 애플리케이션을 위한 페이지 크기를 수신하는 단계를 포함하고; 및
상기 애플리케이션으로부터의 상기 저장 장치 요구사항들의 집합을 만족하는 상기 가용한 저장 장치들의 집합의 부분집합을 선택하는 단계는: 상기 가용한 저장 장치들의 집합으로부터 저장 장치들을 선택하는 단계; 및
상기 애플리케이션을 위한 상기 페이지 크기를 사용하는 상기 선택된 저장 장치들을 구성하는 단계를 포함한다.
진술 26. 본 발명의 실시 예는 진술 25에 따른 방법을 포함하고, 상기 방법은, 상기 페이지의 크기에 따라 논리 블록 어드레스들을 물리 블록 어드레스들로 맵핑하도록 상기 가용한 저장 장치들의 집합의 상기 부분집합을 위한 변환 계층을 확립하는 단계를 더 포함한다.
진술 27. 본 발명의 실시 예는 진술 25에 따른 방법을 포함하고,
상기 TASTE에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계는, 상기 애플리케이션을 위한 복수의 페이지 크기들을 수신하는 단계를 포함하고; 및
상기 애플리케이션을 위한 상기 페이지 크기를 사용하는 상기 선택된 저장 장치들을 구성하는 단계는, 상기 복수의 페이지 크기들을 사용하도록 상기 선택된 저장 장치들을 구성하는 단계를 포함한다.
진술 28. 본 발명의 실시 예는 진술 27에 따른 방법을 포함하고, 상기 방법은, 상기 복수의 페이지 크기들에 따라 논리 블록 어드레스들을 물리 블록 어드레스들로 맵핑하도록 상기 가용한 저장 장치들의 집합의 상기 부분집합을 위한 변환 계층을 확립하는 단계를 더 포함한다.
진술 29. 본 발명의 실시 예는 진술 22에 따른 방법을 포함하고,
상기 TASTE에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계는, 상기 애플리케이션을 위한 복제 인자를 수신하는 단계를 포함하고; 및
상기 애플리케이션으로부터의 상기 저장 장치 요구사항들의 집합을 만족하는 상기 가용한 저장 장치들의 집합의 부분집합을 선택하는 단계는, 각각의 데이터가 저장 장치들의 개수에 저장되도록 상기 가용한 저장 장치들의 집합의 상기 부분집합으로부터 상기 저장 장치들을 선택하는 단계를 포함하고, 상기 저장 장치들의 개수는 상기 애플리케이션을 위한 상기 복제 인자보다 적어도 크다.
진술 30. 본 발명의 실시 예는 진술 29에 따른 방법을 포함하고, 상기 방법은 상기 가용한 저장 장치들의 집합의 상기 부분집합에서 제 1 저장 장치를 상기 가용한 저장 장치들의 집합의 상기 부분집합에서 제 2 저장 장치의 복사본(replica)으로 관리하도록 상기 가용한 저장 장치들의 집합의 상기 부분집합을 위한 변환 계층을 확립하는 단계를 더 포함한다.
진술 31. 본 발명의 실시 예는 진술 29에 따른 방법을 포함하고, 상기 방법은, 하나의 노드 내의 상기 가용한 저장 장치들의 집합의 상기 서브넷에서 저장 장치들 사이에서 복제를 관리하는 단계를 더 포함한다.
진술 32. 본 발명의 실시 예는 진술 31에 따른 방법을 포함하고, 상기 방법은, 상기 애플리케이션에 의해 노드들에 걸쳐 데이터를 복제하는 단계를 더 포함한다.
진술 33. 본 발명의 실시 예는 진술 22에 따른 방법을 포함하고,
상기 TASTE에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계는, 상기 애플리케이션을 위한 지속성 요구사항을 수신하는 단계를 포함하고; 및
상기 애플리케이션으로부터의 상기 저장 장치 요구사항들의 집합을 만족하는 상기 가용한 저장 장치들의 집합의 부분집합을 선택하는 단계는, 상기 애플리케이션을 위한 상기 지속성 요구사항에 따라 데이터가 문턱 시간 동안 저장 장치들에 저장되도록 상기 가용한 저장 장치들의 집합의 상기 부분집합으로부터 상기 저장 장치들을 구성하는 단계를 포함한다.
진술 34. 본 발명의 실시 예는 진술 33에 따른 방법을 포함하고, 상기 방법은, 적어도 상기 문턱 시간 동안 상기 가용한 저장 장치들의 집합의 상기 부분집합 상의 데이터가 무효화 되지 않도록 상기 가용한 저장 장치들의 집합의 상기 부분집합을 위한 변환 계층을 확립하는 단계를 더 포함한다.
진술 35. 본 발명의 실시 예는 진술 22에 따른 방법을 포함하고,
상기 TASTE에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계는, 상기 애플리케이션을 위한 지속성 요구사항을 수신하는 단계를 포함하고; 및
상기 애플리케이션으로부터의 상기 저장 장치 요구사항들의 집합을 만족하는 상기 가용한 저장 장치들의 집합의 부분집합을 선택하는 단계는, 전원 페일에 대하여 데이터를 포함하도록 상기 가용한 저장 장치들의 집합으로부터 저장 장치들을 선택하는 단계를 포함한다.
진술 36. 본 발명의 실시 예는 진술 22에 따른 방법을 포함하고,
상기 TASTE에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계는, 상기 애플리케이션이 제 2 애플리케이션으로부터 분리된다는 것을 명시하는 분리 요구사항을 수신하는 단계를 포함하고; 및
상기 애플리케이션으로부터의 상기 저장 장치 요구사항들의 집합을 만족하는 상기 가용한 저장 장치들의 집합의 부분집합을 선택하는 단계는, 상기 가용한 저장 장치들의 집합의 상기 부분집합의 어떠한 저장 장치도 상기 제 2 애플리케이션을 위한 데이터를 저장하지 않도록, 상기 가용한 저장 장치들의 집합으로부터 저장 장치들을 선택하는 단계를 포함한다.
진술 37. 본 발명의 실시 예는 진술 22에 따른 방법을 포함하고,
상기 TASTE에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계는, 상기 애플리케이션을 위한 이동 커맨드를 수신하는 단계를 포함하고; 및
상기 애플리케이션으로부터의 상기 저장 장치 요구사항들의 집합을 만족하는 상기 가용한 저장 장치들의 집합의 부분집합을 선택하는 단계는:
데이터가 이동될 저장 장치를 식별하는 단계;
상기 가용한 저장 장치들의 집합으로부터 제 2 저장 장치를 선택하는 단계; 및
상기 식별된 저장 장치로부터 상기 제 2 저장 장치로 데이터를 이동하는 단계를 포함한다.
진술 38. 본 발명의 실시 예는 진술 22에 따른 방법을 포함하고, 상기 애플리케이션으로부터의 상기 저장 장치 요구사항들의 집합을 만족하는 상기 가용한 저장 장치들의 집합의 부분집합을 선택하는 단계는, 적어도 하나의 저장 장치로부터 가상 저장 장치를 생성하는 단계를 포함한다.
진술 39. 본 발명의 실시 예는 진술 38에 따른 방법을 포함하고, 상기 방법은, 상기 가상 저장 장치를 위한 변환 계층을 확립하는 단계를 더 포함한다.
진술 40. 본 발명의 실시 예는 진술 22에 따른 방법을 포함하고,
상기 TASTE에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계는, 상기 애플리케이션을 위한 대역폭 요구사항을 수신하는 단계를 포함하고; 및
상기 애플리케이션으로부터의 상기 저장 장치 요구사항들의 집합을 만족하는 상기 가용한 저장 장치들의 집합의 부분집합을 선택하는 단계는, 상기 애플리케이션을 위한 상기 대역폭 요구사항보다 좁지 않은 전체 대역폭을 제공하도록 상기 가용한 저장 장치들의 집합의 상기 부분집합으로부터 저장 장치들을 선택하는 단계를 포함한다.
진술 41. 본 발명의 실시 예는 진술 22에 따른 방법을 포함하고,
상기 TASTE에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계는, 상기 애플리케이션을 위한 레이턴시 요구사항을 수신하는 단계를 포함하고; 및
상기 애플리케이션으로부터의 상기 저장 장치 요구사항들의 집합을 만족하는 상기 가용한 저장 장치들의 집합의 부분집합을 선택하는 단계는, 상기 애플리케이션을 위한 상기 레이턴시 요구사항보다 길지 않은 평균 레이턴시를 제공하도록 상기 가용한 저장 장치들의 집합으로부터 저장 장치들을 선택하는 단계를 포함한다.
진술 42. 본 발명의 실시 예는 물품을 포함하고, 상기 물품은 실체적인 저장 매체를 포함하고, 상기 실체적인 저장 매체는 머신에 의해 실행되는 일시적인 인스트럭션들을 저장하고, 상기 인스트럭션들이 실행됨으로써,
상기 터넌트-어웨어 스토리지-쉐어링(tenant-aware storage-sharing engine; TASTE)에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계;
가용한 저장 장치들의 집합을 식별하는 단계; 및
상기 애플리케이션으로부터의 상기 저장 장치 요구사항들의 집합을 만족하는 상기 가용한 저장 장치들의 집합의 부분집합을 선택하는 단계가 진행된다.
진술 43. 본 발명의 실시 예는 진술 42에 따른 물품을 포함하고,
상기 TASTE에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계는, 상기 애플리케이션을 위한 클러스터 크기를 수신하는 단계를 포함하고; 및
상기 애플리케이션으로부터의 상기 저장 장치 요구사항들의 집합을 만족하는 상기 가용한 저장 장치들의 집합의 부분집합을 선택하는 단계는, 상기 가용한 저장 장치들의 집합으로부터 저장 장치들을 선택하는 단계를 포함하고, 상기 가용한 저장 장치들의 집합의 상기 부분집합에서 상기 저장 장치들의 개수는 상기 애플리케이션을 위한 상기 클러스터의 크기와 동일하다.
진술 44. 본 발명의 실시 예는 진술 43에 따른 물품을 포함하고, 상기 물품은, 논리 블록 어드레스들을 상기 가용한 저장 장치들의 집합의 상기 부분집합 상의 물리 어드레스들로 맵핑하도록 상기 가용한 저장 장치들의 상기 부분집합을 위한 변환 로직을 확립하는 단계가 더 진행된다.
진술 45. 본 발명의 실시 예는 진술 42에 따른 물품을 포함하고,
상기 TASTE에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계는, 상기 애플리케이션을 위한 페이지 크기를 수신하는 단계를 포함하고; 및
상기 애플리케이션으로부터의 상기 저장 장치 요구사항들의 집합을 만족하는 상기 가용한 저장 장치들의 집합의 부분집합을 선택하는 단계는: 상기 가용한 저장 장치들의 집합으로부터 저장 장치들을 선택하는 단계; 및
상기 애플리케이션을 위한 상기 페이지 크기를 사용하는 상기 선택된 저장 장치들을 구성하는 단계를 포함한다.
진술 46. 본 발명의 실시 예는 진술 45에 따른 물품을 포함하고, 상기 물품은, 상기 페이지의 크기에 따라 논리 블록 어드레스들을 물리 블록 어드레스들로 맵핑하도록 상기 가용한 저장 장치들의 집합의 상기 부분집합을 위한 변환 계층을 확립하는 단계가 더 진행된다.
진술 47. 본 발명의 실시 예는 진술 45에 따른 물품을 포함하고,
상기 TASTE에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계는, 상기 애플리케이션을 위한 복수의 페이지 크기들을 수신하는 단계를 포함하고; 및
상기 애플리케이션을 위한 상기 페이지 크기를 사용하는 상기 선택된 저장 장치들을 구성하는 단계는, 상기 복수의 페이지 크기들을 사용하도록 상기 선택된 저장 장치들을 구성하는 단계를 포함한다.
진술 48. 본 발명의 실시 예는 진술 47에 따른 물품을 포함하고, 상기 물품은, 상기 복수의 페이지 크기들에 따라 논리 블록 어드레스들을 물리 블록 어드레스들로 맵핑하도록 상기 가용한 저장 장치들의 집합의 상기 부분집합을 위한 변환 계층을 확립하는 단계가 더 진행된다.
진술 49. 본 발명의 실시 예는 진술 42에 따른 물품을 포함하고,
상기 TASTE에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계는, 상기 애플리케이션을 위한 복제 인자를 수신하는 단계를 포함하고; 및
상기 애플리케이션으로부터의 상기 저장 장치 요구사항들의 집합을 만족하는 상기 가용한 저장 장치들의 집합의 부분집합을 선택하는 단계는, 각각의 데이터가 저장 장치들의 개수에 저장되도록 상기 가용한 저장 장치들의 집합의 상기 부분집합으로부터 상기 저장 장치들을 선택하는 단계를 포함하고, 상기 저장 장치들의 개수는 상기 애플리케이션을 위한 상기 복제 인자보다 적어도 크다.
진술 50. 본 발명의 실시 예는 진술 49에 따른 물품을 포함하고, 상기 물품은 상기 가용한 저장 장치들의 집합의 상기 부분집합에서 제 1 저장 장치를 상기 가용한 저장 장치들의 집합의 상기 부분집합에서 제 2 저장 장치의 복사본(replica)으로 관리하도록 상기 가용한 저장 장치들의 집합의 상기 부분집합을 위한 변환 계층을 확립하는 단계가 더 진행된다.
진술 51. 본 발명의 실시 예는 진술 49에 따른 물품을 포함하고, 상기 물품은, 하나의 노드 내의 상기 가용한 저장 장치들의 집합의 상기 서브넷에서 저장 장치들 사이에서 복제를 관리하는 단계가 더 진행된다.
진술 52. 본 발명의 실시 예는 진술 51에 따른 물품을 포함하고, 상기 물품은, 상기 애플리케이션에 의해 노드들에 걸쳐 데이터를 복제하는 단계가 더 진행된다.
진술 53. 본 발명의 실시 예는 진술 42에 따른 물품을 포함하고,
상기 TASTE에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계는, 상기 애플리케이션을 위한 지속성 요구사항을 수신하는 단계를 포함하고; 및
상기 애플리케이션으로부터의 상기 저장 장치 요구사항들의 집합을 만족하는 상기 가용한 저장 장치들의 집합의 부분집합을 선택하는 단계는, 상기 애플리케이션을 위한 상기 지속성 요구사항에 따라 데이터가 문턱 시간 동안 저장 장치들에 저장되도록 상기 가용한 저장 장치들의 집합의 상기 부분집합으로부터 상기 저장 장치들을 구성하는 단계를 포함한다.
진술 54. 본 발명의 실시 예는 진술 53에 따른 물품을 포함하고, 상기 물품은, 적어도 상기 문턱 시간 동안 상기 가용한 저장 장치들의 집합의 상기 부분집합 상의 데이터가 무효화 되지 않도록 상기 가용한 저장 장치들의 집합의 상기 부분집합을 위한 변환 계층을 확립하는 단계가 더 진행된다.
진술 55. 본 발명의 실시 예는 진술 42에 따른 물품을 포함하고,
상기 TASTE에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계는, 상기 애플리케이션을 위한 지속성 요구사항을 수신하는 단계를 포함하고; 및
상기 애플리케이션으로부터의 상기 저장 장치 요구사항들의 집합을 만족하는 상기 가용한 저장 장치들의 집합의 부분집합을 선택하는 단계는, 전원 페일에 대하여 데이터를 포함하도록 상기 가용한 저장 장치들의 집합으로부터 저장 장치들을 선택하는 단계를 포함한다.
진술 56. 본 발명의 실시 예는 진술 42에 따른 물품을 포함하고,
상기 TASTE에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계는, 상기 애플리케이션이 제 2 애플리케이션으로부터 분리된다는 것을 명시하는 분리 요구사항을 수신하는 단계를 포함하고; 및
상기 애플리케이션으로부터의 상기 저장 장치 요구사항들의 집합을 만족하는 상기 가용한 저장 장치들의 집합의 부분집합을 선택하는 단계는, 상기 가용한 저장 장치들의 집합의 상기 부분집합의 어떠한 저장 장치도 상기 제 2 애플리케이션을 위한 데이터를 저장하지 않도록, 상기 가용한 저장 장치들의 집합으로부터 저장 장치들을 선택하는 단계를 포함한다.
진술 57. 본 발명의 실시 예는 진술 52에 따른 물품을 포함하고,
상기 TASTE에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계는, 상기 애플리케이션을 위한 이동 커맨드를 수신하는 단계를 포함하고; 및
상기 애플리케이션으로부터의 상기 저장 장치 요구사항들의 집합을 만족하는 상기 가용한 저장 장치들의 집합의 부분집합을 선택하는 단계는:
데이터가 이동될 저장 장치를 식별하는 단계;
상기 가용한 저장 장치들의 집합으로부터 제 2 저장 장치를 선택하는 단계; 및
상기 식별된 저장 장치로부터 상기 제 2 저장 장치로 데이터를 이동하는 단계를 포함한다.
진술 58. 본 발명의 실시 예는 진술 42에 따른 물품을 포함하고, 상기 애플리케이션으로부터의 상기 저장 장치 요구사항들의 집합을 만족하는 상기 가용한 저장 장치들의 집합의 부분집합을 선택하는 단계는, 적어도 하나의 저장 장치로부터 가상 저장 장치를 생성하는 단계를 포함한다.
진술 59. 본 발명의 실시 예는 진술 58에 따른 물품을 포함하고, 상기 물품은, 상기 가상 저장 장치를 위한 변환 계층을 확립하는 단계가 더 진행된다.
진술 60. 본 발명의 실시 예는 진술 42에 따른 물품을 포함하고,
상기 TASTE에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계는, 상기 애플리케이션을 위한 대역폭 요구사항을 수신하는 단계를 포함하고; 및
상기 애플리케이션으로부터의 상기 저장 장치 요구사항들의 집합을 만족하는 상기 가용한 저장 장치들의 집합의 부분집합을 선택하는 단계는, 상기 애플리케이션을 위한 상기 대역폭 요구사항보다 좁지 않은 전체 대역폭을 제공하도록 상기 가용한 저장 장치들의 집합의 상기 부분집합으로부터 저장 장치들을 선택하는 단계를 포함한다.
진술 61. 본 발명의 실시 예는 진술 42에 따른 물품을 포함하고,
상기 TASTE에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계는, 상기 애플리케이션을 위한 레이턴시 요구사항을 수신하는 단계를 포함하고; 및
상기 애플리케이션으로부터의 상기 저장 장치 요구사항들의 집합을 만족하는 상기 가용한 저장 장치들의 집합의 부분집합을 선택하는 단계는, 상기 애플리케이션을 위한 상기 레이턴시 요구사항보다 길지 않은 평균 레이턴시를 제공하도록 상기 가용한 저장 장치들의 집합으로부터 저장 장치들을 선택하는 단계를 포함한다.
결론적으로, 본 명세서에 설명된 실시 예들에 대한 다양한 변경들의 관점에서, 상세한 설명 및 첨부된 자료는 단지 예시적인 것들로 의도되며, 본 발명의 개념의 범위를 제한하는 것으로 간주 되지 않아야 한다. 따라서, 본 발명의 개념으로서 청구되는 것은, 다음의 청구 범위 및 그것의 균등물의 범위 및 사상 내에 있을 수 있는 모든 변형들이다.
105: 데이터 센터
110, 115, 120, 125, 130: 호스트 머신
145: 애플리케이션
135: 네트워크
140: 클라이언트 머신
225: TASTE
145, 230: 터넌트
220: 저장 장치
505: 수신 로직
510: 스토리지
515: 선택 로직
520: 가상 저장 장치 로직
525: 변환 계층 로직
605: 클러스터 선택 로직
610: 구성 로직
615: 복제 로직
620: 지속성 로직
625: 분리 로직
630: 이동 로직

Claims (20)

  1. 터넌트-어웨어 스토리지-쉐어링 엔진(tenant-aware storage-sharing engine, TASTE)에 있어서:
    가용한 저장 장치들의 집합에 대한 정보를 위한 스토리지;
    애플리케이션으로부터 저장 장치 요구사항들을 수신하기 위한 수신 로직, 상기 저장 장치 요구사항들은 원하는 용량, 원하는 대역폭, 원하는 레이턴시, 원하는 클러스터 크기, 원하는 페이지 크기, 원하는 이중화, 원하는 병렬화, 원하는 지속성, 및 원하는 보안을 포함하는 집합에서 도출되고;
    상기 가용한 저장 장치들의 집합에 대한 정보를 사용하여 상기 저장 장치 요구사항들을 만족하는 상기 가용한 저장 장치들의 집합의 부분집합(subset)을 선택하기 위한 선택 로직; 및
    상기 저장 장치 요구 사항들을 충족하는 상기 가용한 저장 장치들의 집합의 선택된 상기 부분집합을 사용하여 상기 애플리케이션에 대한 스토리지를 할당하는 로직, 을 포함하고,
    상기 가용한 저장 장치들의 집합은 적어도 두 개의 물리적 저장 장치들을 포함하고,
    상기 원하는 용량은 상기 애플리케이션으로부터 요구된 용량을 포함하며,
    상기 원하는 대역폭은 상기 애플리케이션으로부터 요구되는 최소 대역폭을 포함하고,
    상기 원하는 레이턴시는 상기 애플리케이션이 허용하는 최대 레이턴시를 포함하고,
    상기 원하는 클러스터 크기는 상기 애플리케이션에 할당된 상기 저장 장치들의 클러스터 수를 포함하고,
    상기 원하는 페이지 크기는 상기 애플리케이션에 할당된 상기 저장 장치들의 각 페이지의 크기를 포함하고,
    상기 원하는 이중화는 상기 가용한 저장 장치들의 집합에 저장되어야 하는 상기 애플리케이션에 의해 저장된 각 데이터의 복사본 수를 나타내는 이중화 수를 포함하고,
    상기 원하는 병렬화는 상기 애플리케이션에 할당된 가상 저장 장치에 결합할 수 있는 저장 장치들의 수를 나타내는 병렬 수를 포함하고,
    상기 원하는 지속성은 상기 애플리케이션에 대한 데이터가 삭제되기 전에 상기 애플리케이션에 할당된 상기 저장 장치들에 저장될 수 있는 최소 시간을 포함하고,
    상기 원하는 보안은 상기 애플리케이션에 대한 데이터가 제2 애플리케이션에 대한 제2 데이터와 함께 공통 저장 장치에 저장되지 않도록 상기 제2 애플리케이션의 식별자를 포함하는 TASTE.
  2. 제 1 항에 있어서,
    상기 저장 장치 요구사항들은 상기 애플리케이션을 위한 상기 원하는 클러스터 크기를 포함하고; 및
    상기 선택 로직은 상기 가용한 저장 장치들의 집합의 상기 부분집합을 선택하기 위한 클러스터 선택 로직을 포함하고,
    상기 가용한 저장 장치들의 상기 부분집합에서 저장 장치들의 개수는 상기 애플리케이션을 위한 상기 원하는 클러스터 크기와 동일하고,
    상기 원하는 클러스터 크기는 적어도 두개인 TASTE.
  3. 제 2 항에 있어서,
    상기 가용한 저장 장치들의 집합의 상기 부분집합 상에서 논리 블록 어드레스들을 물리 블록 어드레스들로 맵핑하도록 상기 가용한 저장 장치들의 집합의 상기 부분집합을 위한 변환 계층을 확립하는 변환 계층 로직을 더 포함하는 TASTE.
  4. 제 1 항에 있어서,
    상기 저장 장치 요구사항들은 상기 애플리케이션을 위한 상기 원하는 페이지 크기를 포함하고; 및
    상기 선택 로직은 상기 원하는 페이지 크기를 사용하도록 상기 가용한 저장 장치들의 집합의 부분집합을 구성하기 위한 구성 로직을 포함하는 TASTE.
  5. 제 4 항에 있어서,
    상기 원하는 페이지의 크기에 따라 논리 블록 어드레스들을 물리 블록 어드레스들로 맵핑하도록 상기 가용한 저장 장치들의 집합의 상기 부분집합을 위한 변환 계층을 확립하는 변환 계층 로직을 더 포함하는 TASTE.
  6. 제 1 항에 있어서,
    상기 저장 장치 요구사항들은 상기 애플리케이션을 위한 상기 원하는 이중화를 포함하고; 및
    상기 선택 로직은 상기 원하는 이중화와 동일한 수의 상기 가용한 저장 장치들의 집합의 상기 부분집합의 저장 장치들에 걸쳐서 데이터를 복제하는 복제 로직을 포함하는 TASTE.
  7. 제 6 항에 있어서,
    상기 가용한 저장 장치들의 집합의 상기 부분집합에서 제 1 저장 장치를 상기 가용한 저장 장치들의 집합의 상기 부분집합에서 제 2 저장 장치의 복사본으로 관리하기 위한 상기 가용한 저장 장치들의 집합의 상기 부분집합을 위한 변환 계층을 확립하는 변환 계층 로직을 더 포함하는 TASTE.
  8. 제 1 항에 있어서,
    상기 저장 장치 요구사항들은 상기 애플리케이션을 위한 상기 원하는 지속성을 포함하고; 및
    상기 선택 로직은, 상기 애플리케이션로부터의 데이터가 상기 가용한 저장 장치들의 집합의 상기 부분집합 내에서 상기 최소 시간 동안 지속되도록 하는 지속성 로직(persistency logic)을 포함하는 TASTE.
  9. 제 8 항에 있어서,
    상기 가용한 저장 장치들의 집합의 상기 부분집합 상의 데이터가 적어도 상기 최소 시간 동안 무효화되지 않도록 하기 위하여, 상기 가용한 저장 장치들의 집합의 상기 부분집합을 위한 변환 계층을 확립하는 변환 계층 로직을 더 포함하는 TASTE.
  10. 제 1 항에 있어서,
    상기 저장 장치 요구사항들은 상기 애플리케이션을 위한 제2 원하는 지속성을 포함하고; 및
    상기 선택 로직은, 상기 가용한 저장 장치들의 집합의 상기 부분집합이 전력 페일에 대하여 데이터를 보호하는 것을 보장하기 위한 지속성 로직(persistency logic)을 포함하는 TASTE.
  11. 제 1 항에 있어서,
    상기 저장 장치 요구사항들은 상기 애플리케이션을 위한 상기 원하는 보안을 포함하고;
    상기 선택 로직은, 상기 가용한 저장 장치들의 집합의 상기 부분집합이 상기 가용한 저장 장치들의 집합의 제 2 부분집합에 오버랩되지 않는 것을 보장하기 위한 분리 로직(isolation logic)을 포함하고,
    상기 가용한 저장 장치들의 집합의 상기 제2 부분집합은 상기 제2 애플리케이션에 의해 사용되는 TASTE.
  12. 제 1 항에 있어서,
    상기 저장 장치 요구사항들은 상기 애플리케이션을 위한 이동 커맨드(migration command)를 포함하고;
    상기 선택 로직은, 상기 가용한 저장 장치들의 집합의 상기 부분집합의 내부의 제 1 저장 장치로부터 상기 가용한 저장 장치들의 집합의 상기 부분집합의 내부의 제 2 저장 장치로 데이터를 이동시키기 위한 이동 로직(migration logic)을 포함하는 TASTE.
  13. 제 1 항에 있어서,
    상기 가용한 저장 장치들의 집합의 상기 부분집합에서 복수의 저장 장치들로부터 가상 저장 장치를 생성하기 위한 가상 저장 장치 로직을 더 포함하는 TASTE.
  14. 제 13 항에 있어서,
    상기 가상 저장 장치를 위한 변환 계층을 확립하는 변환 계층 로직을 더 포함하는 TASTE.
  15. 터넌트-어웨어 스토리지-쉐어링(tenant-aware storage-sharing)의 방법에 있어서:
    TASTE(tenant-aware storage-sharing engine)에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계, 상기 저장 장치 요구사항들은 원하는 용량, 원하는 대역폭, 원하는 레이턴시, 원하는 클러스터 크기, 원하는 페이지 크기, 원하는 이중화, 원하는 병렬화, 원하는 지속성, 및 원하는 보안을 포함하는 집합에서 도출되고;
    가용한 저장 장치들의 집합을 식별하는 단계;
    상기 가용한 저장 장치들의 집합에 대한 정보를 사용하여 상기 애플리케이션으로부터의 상기 저장 장치 요구사항들의 집합을 만족하도록 상기 가용한 저장 장치들의 집합의 부분집합을 선택하는 단계; 및
    상기 저장 장치 요구사항들을 충족하는 상기 가용한 저장 장치들의 집합의 상기 선택된 부분집합을 사용하여 상기 애플리케이션을 위한 스토리지를 할당하는 단계를 포함하고,
    상기 가용한 저장 장치들의 집합은 적어도 두 개의 물리적 저장 장치들을 포함하고,
    상기 원하는 용량은 상기 애플리케이션으로부터 요구된 용량을 포함하며,
    상기 원하는 대역폭은 상기 애플리케이션으로부터 요구되는 최소 대역폭을 포함하고,
    상기 원하는 레이턴시는 상기 애플리케이션이 허용하는 최대 레이턴시를 포함하고,
    상기 원하는 클러스터 크기는 상기 애플리케이션에 할당된 상기 저장 장치들의 클러스터 수를 포함하고,
    상기 원하는 페이지 크기는 상기 애플리케이션에 할당된 상기 저장 장치들의 각 페이지의 크기를 포함하고,
    상기 원하는 이중화는 상기 가용한 저장 장치들의 집합에 저장되어야 하는 상기 애플리케이션에 의해 저장된 각 데이터의 복사본 수를 나타내는 이중화 수를 포함하고,
    상기 원하는 병렬화는 상기 애플리케이션에 할당된 가상 저장 장치에 결합할 수 있는 저장 장치들의 수를 나타내는 병렬 수를 포함하고,
    상기 원하는 지속성은 상기 애플리케이션에 대한 데이터가 삭제되기 전에 상기 애플리케이션에 할당된 상기 저장 장치들에 저장될 수 있는 최소 시간을 포함하고,
    상기 원하는 보안은 상기 애플리케이션에 대한 데이터가 제2 애플리케이션에 대한 제2 데이터와 함께 공통 저장 장치에 저장되지 않도록 상기 제2 애플리케이션의 식별자를 포함하는 방법.
  16. 제 15 항에 있어서,
    상기 TASTE에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계는, 상기 애플리케이션을 위한 상기 원하는 클러스터 크기를 수신하는 단계를 포함하고; 및
    상기 애플리케이션으로부터 상기 저장 장치 요구사항들의 집합을 만족하도록 상기 가용한 저장 장치들의 집합의 부분집합을 선택하는 단계는, 상기 가용한 저장 장치들의 집합으로부터 저장 장치들을 선택하는 단계를 포함하고,
    상기 가용한 저장 장치들의 부분집합에서 저장 장치들의 개수는 상기 애플리케이션을 위한 상기 원하는 클러스터 크기와 동일하고, 상기 원하는 클러스터 크기는 적어도 두개인 방법.
  17. 제 16 항에 있어서,
    상기 가용한 저장 장치들의 집합의 상기 부분집합 상에서 논리 블록 어드레스들을 물리 블록 어드레스들로 맵핑하도록 상기 가용한 저장 장치들의 집합의 상기 부분집합을 위한 변환 계층을 확립하는 단계를 더 포함하는 방법.
  18. 제 15 항에 있어서,
    상기 TASTE에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계는, 상기 애플리케이션을 위한 상기 원하는 페이지의 크기를 수신하는 단계를 포함하고; 및
    상기 애플리케이션으로부터 상기 저장 장치 요구사항들의 집합을 만족하도록 상기 가용한 저장 장치들의 집합의 부분집합을 선택하는 단계는, 상기 가용한 저장 장치들의 집합으로부터 저장 장치들을 선택하는 단계; 및 상기 애플리케이션을 위한 상기 원하는 페이지 크기를 사용하도록 상기 선택된 저장 장치들을 구성하는 단계를 포함하는 방법.
  19. 제 18 항에 있어서,
    상기 원하는 페이지의 크기에 따라 논리 블록 어드레스들을 물리 블록 어드레스들로 맵핑하도록 상기 가용한 저장 장치들의 집합의 상기 부분집합을 위한 변환 계층을 확립하는 단계를 더 포함하는 방법.
  20. 제 15 항에 있어서,
    상기 TASTE에서 애플리케이션으로부터 저장 장치 요구사항들의 집합을 수신하는 단계는, 상기 애플리케이션을 위한 상기 원하는 이중화를 수신하는 단계를 포함하고; 및
    상기 애플리케이션으로부터 상기 저장 장치 요구사항들의 집합을 만족하도록 상기 가용한 저장 장치들의 집합의 부분집합을 선택하는 단계는, 각 데이터가 각 저장 장치마다 저장되도록 상기 가용한 저장 장치들의 집합으로부터 저장 장치들을 선택하는 단계를 포함하고,
    상기 선택된 저장 장치의 개수는 상기 애플리케이션에 대해 적어도 상기 원하는 이중화만큼 큰 방법.
KR1020170017666A 2016-05-24 2017-02-08 터넌트-어웨어 스토리지 쉐어링 플랫폼을 위한 방법 및 장치 KR102457611B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662341063P 2016-05-24 2016-05-24
US62/341,063 2016-05-24
US15/227,955 US10437486B2 (en) 2016-05-24 2016-08-03 Method and apparatus for tenant-aware storage sharing platform
US15/227,955 2016-08-03

Publications (2)

Publication Number Publication Date
KR20170132651A KR20170132651A (ko) 2017-12-04
KR102457611B1 true KR102457611B1 (ko) 2022-10-21

Family

ID=60417918

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170017666A KR102457611B1 (ko) 2016-05-24 2017-02-08 터넌트-어웨어 스토리지 쉐어링 플랫폼을 위한 방법 및 장치

Country Status (5)

Country Link
US (1) US10437486B2 (ko)
JP (1) JP6734807B2 (ko)
KR (1) KR102457611B1 (ko)
CN (1) CN107422983B (ko)
TW (1) TWI699654B (ko)

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10642497B2 (en) * 2016-08-31 2020-05-05 International Business Machines Corporation System, method and computer program product for instantiating blocks of a solid-state disk to include different flash characteristics
US10484015B2 (en) 2016-12-28 2019-11-19 Amazon Technologies, Inc. Data storage system with enforced fencing
US10771550B2 (en) 2016-12-28 2020-09-08 Amazon Technologies, Inc. Data storage system with redundant internal networks
US11301144B2 (en) 2016-12-28 2022-04-12 Amazon Technologies, Inc. Data storage system
US10514847B2 (en) * 2016-12-28 2019-12-24 Amazon Technologies, Inc. Data storage system with multiple durability levels
US10073640B1 (en) * 2017-03-10 2018-09-11 Toshiba Memory Corporation Large scale implementation of a plurality of open channel solid state drives
US10542089B2 (en) * 2017-03-10 2020-01-21 Toshiba Memory Corporation Large scale implementation of a plurality of open channel solid state drives
US20180300253A1 (en) * 2017-04-13 2018-10-18 Advanced Micro Devices, Inc. Translate further mechanism
US10761743B1 (en) 2017-07-17 2020-09-01 EMC IP Holding Company LLC Establishing data reliability groups within a geographically distributed data storage environment
US10880040B1 (en) 2017-10-23 2020-12-29 EMC IP Holding Company LLC Scale-out distributed erasure coding
US10992967B2 (en) * 2017-12-05 2021-04-27 Sony Interactive Entertainment LLC Ultra high-speed low-latency network storage
US10423361B2 (en) * 2017-12-21 2019-09-24 Microsoft Technology Licensing, Llc Virtualized OCSSDs spanning physical OCSSD channels
US10382554B1 (en) 2018-01-04 2019-08-13 Emc Corporation Handling deletes with distributed erasure coding
US11029879B2 (en) * 2018-01-29 2021-06-08 Samsung Electronics Co., Ltd Page size synchronization and page size aware scheduling method for non-volatile memory dual in-line memory module (NVDIMM) over memory channel
US10579297B2 (en) 2018-04-27 2020-03-03 EMC IP Holding Company LLC Scaling-in for geographically diverse storage
US10936196B2 (en) 2018-06-15 2021-03-02 EMC IP Holding Company LLC Data convolution for geographically diverse storage
US11023130B2 (en) 2018-06-15 2021-06-01 EMC IP Holding Company LLC Deleting data in a geographically diverse storage construct
CN109445684B (zh) * 2018-09-20 2021-11-26 华为技术有限公司 一种分布式存储系统中硬盘的资源分配方法及设备
US11436203B2 (en) 2018-11-02 2022-09-06 EMC IP Holding Company LLC Scaling out geographically diverse storage
US10901635B2 (en) 2018-12-04 2021-01-26 EMC IP Holding Company LLC Mapped redundant array of independent nodes for data storage with high performance using logical columns of the nodes with different widths and different positioning patterns
US10931777B2 (en) 2018-12-20 2021-02-23 EMC IP Holding Company LLC Network efficient geographically diverse data storage system employing degraded chunks
US11119683B2 (en) 2018-12-20 2021-09-14 EMC IP Holding Company LLC Logical compaction of a degraded chunk in a geographically diverse data storage system
US10892782B2 (en) 2018-12-21 2021-01-12 EMC IP Holding Company LLC Flexible system and method for combining erasure-coded protection sets
US11023331B2 (en) 2019-01-04 2021-06-01 EMC IP Holding Company LLC Fast recovery of data in a geographically distributed storage environment
US10942827B2 (en) 2019-01-22 2021-03-09 EMC IP Holding Company LLC Replication of data in a geographically distributed storage environment
US10936239B2 (en) 2019-01-29 2021-03-02 EMC IP Holding Company LLC Cluster contraction of a mapped redundant array of independent nodes
US10942825B2 (en) 2019-01-29 2021-03-09 EMC IP Holding Company LLC Mitigating real node failure in a mapped redundant array of independent nodes
US10846003B2 (en) 2019-01-29 2020-11-24 EMC IP Holding Company LLC Doubly mapped redundant array of independent nodes for data storage
US10866766B2 (en) 2019-01-29 2020-12-15 EMC IP Holding Company LLC Affinity sensitive data convolution for data storage systems
US11029865B2 (en) 2019-04-03 2021-06-08 EMC IP Holding Company LLC Affinity sensitive storage of data corresponding to a mapped redundant array of independent nodes
US10944826B2 (en) 2019-04-03 2021-03-09 EMC IP Holding Company LLC Selective instantiation of a storage service for a mapped redundant array of independent nodes
US11121727B2 (en) 2019-04-30 2021-09-14 EMC IP Holding Company LLC Adaptive data storing for data storage systems employing erasure coding
US11113146B2 (en) 2019-04-30 2021-09-07 EMC IP Holding Company LLC Chunk segment recovery via hierarchical erasure coding in a geographically diverse data storage system
US11119686B2 (en) 2019-04-30 2021-09-14 EMC IP Holding Company LLC Preservation of data during scaling of a geographically diverse data storage system
US11748004B2 (en) 2019-05-03 2023-09-05 EMC IP Holding Company LLC Data replication using active and passive data storage modes
US11438414B2 (en) * 2019-05-28 2022-09-06 Micron Technology, Inc. Inter operating system memory services over communication network connections
US11169723B2 (en) 2019-06-28 2021-11-09 Amazon Technologies, Inc. Data storage system with metadata check-pointing
US11209996B2 (en) 2019-07-15 2021-12-28 EMC IP Holding Company LLC Mapped cluster stretching for increasing workload in a data storage system
US11449399B2 (en) 2019-07-30 2022-09-20 EMC IP Holding Company LLC Mitigating real node failure of a doubly mapped redundant array of independent nodes
US11023145B2 (en) 2019-07-30 2021-06-01 EMC IP Holding Company LLC Hybrid mapped clusters for data storage
US11228322B2 (en) 2019-09-13 2022-01-18 EMC IP Holding Company LLC Rebalancing in a geographically diverse storage system employing erasure coding
US11449248B2 (en) 2019-09-26 2022-09-20 EMC IP Holding Company LLC Mapped redundant array of independent data storage regions
US11288139B2 (en) 2019-10-31 2022-03-29 EMC IP Holding Company LLC Two-step recovery employing erasure coding in a geographically diverse data storage system
US11435910B2 (en) 2019-10-31 2022-09-06 EMC IP Holding Company LLC Heterogeneous mapped redundant array of independent nodes for data storage
US11119690B2 (en) 2019-10-31 2021-09-14 EMC IP Holding Company LLC Consolidation of protection sets in a geographically diverse data storage environment
US11435957B2 (en) 2019-11-27 2022-09-06 EMC IP Holding Company LLC Selective instantiation of a storage service for a doubly mapped redundant array of independent nodes
US11144220B2 (en) 2019-12-24 2021-10-12 EMC IP Holding Company LLC Affinity sensitive storage of data corresponding to a doubly mapped redundant array of independent nodes
US11231860B2 (en) 2020-01-17 2022-01-25 EMC IP Holding Company LLC Doubly mapped redundant array of independent nodes for data storage with high performance
US11507308B2 (en) 2020-03-30 2022-11-22 EMC IP Holding Company LLC Disk access event control for mapped nodes supported by a real cluster storage system
US11288229B2 (en) 2020-05-29 2022-03-29 EMC IP Holding Company LLC Verifiable intra-cluster migration for a chunk storage system
US11693983B2 (en) 2020-10-28 2023-07-04 EMC IP Holding Company LLC Data protection via commutative erasure coding in a geographically diverse data storage system
US11416180B2 (en) * 2020-11-05 2022-08-16 International Business Machines Corporation Temporary data storage in data node of distributed file system
US11620068B2 (en) * 2021-01-06 2023-04-04 EMC IP Holding Company LLC Data transfer optimizations
US11593035B2 (en) * 2021-01-06 2023-02-28 Red Hat, Inc. Managing client devices associated with storage nodes in a scale-out storage system
US11847141B2 (en) 2021-01-19 2023-12-19 EMC IP Holding Company LLC Mapped redundant array of independent nodes employing mapped reliability groups for data storage
US11625174B2 (en) 2021-01-20 2023-04-11 EMC IP Holding Company LLC Parity allocation for a virtual redundant array of independent disks
US11354191B1 (en) 2021-05-28 2022-06-07 EMC IP Holding Company LLC Erasure coding in a large geographically diverse data storage system
US11449234B1 (en) 2021-05-28 2022-09-20 EMC IP Holding Company LLC Efficient data access operations via a mapping layer instance for a doubly mapped redundant array of independent nodes
US20230289084A1 (en) * 2022-03-11 2023-09-14 Samsung Electronics Co., Ltd. Systems and methods for checking data alignment between applications, file systems, and computational storage devices

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040117580A1 (en) 2002-12-13 2004-06-17 Wu Chia Y. System and method for efficiently and reliably performing write cache mirroring
US20130297907A1 (en) 2012-01-18 2013-11-07 Samsung Electronics Co., Ltd. Reconfigurable storage device
US20160378356A1 (en) 2015-06-23 2016-12-29 Pure Storage, Inc. Aligning memory access operations to a geometry of a storage device

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6493656B1 (en) 1999-02-26 2002-12-10 Compaq Computer Corporation, Inc. Drive error logging
US8296467B2 (en) * 2000-01-06 2012-10-23 Super Talent Electronics Inc. Single-chip flash device with boot code transfer capability
US6836821B2 (en) 2002-04-23 2004-12-28 Lsi Logic Corporation System and method for providing graph structuring for layered virtual volumes
US7120651B2 (en) * 2003-08-01 2006-10-10 Oracle International Corporation Maintaining a shared cache that has partitions allocated among multiple nodes and a data-to-partition mapping
US7418568B2 (en) * 2005-01-05 2008-08-26 Sap Ag Memory management technique
JP4473175B2 (ja) 2005-05-13 2010-06-02 富士通株式会社 記憶制御方法、プログラム及び装置
KR20090026941A (ko) 2007-09-11 2009-03-16 삼성전자주식회사 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의가상 파일 시스템에서 어드레스 맵핑을 수행하는 방법 및그 장치
US7856499B2 (en) 2008-03-20 2010-12-21 Sap Ag Autonomic provisioning of hosted applications with level of isolation terms
WO2011145138A1 (ja) * 2010-05-18 2011-11-24 株式会社日立製作所 ストレージ装置及びデータ管理方法
US8667171B2 (en) 2010-05-28 2014-03-04 Microsoft Corporation Virtual data center allocation with bandwidth guarantees
US8880558B2 (en) 2010-07-01 2014-11-04 International Business Machines Corporation Cloud services creation based on graph mapping
US20120188249A1 (en) 2011-01-26 2012-07-26 Raytheon Company Distributed graph system and method
KR101800444B1 (ko) 2011-03-28 2017-12-20 삼성전자주식회사 불휘발성 메모리의 제어 방법 및 그것을 포함하는 메모리 시스템
US9317336B2 (en) 2011-07-27 2016-04-19 Alcatel Lucent Method and apparatus for assignment of virtual resources within a cloud environment
US9026717B2 (en) * 2011-09-30 2015-05-05 SanDisk Technologies, Inc. Apparatus, system, and method for a persistent object store
CN103036930B (zh) * 2011-09-30 2015-06-03 国际商业机器公司 用于管理存储设备的方法和设备
US9720668B2 (en) 2012-02-29 2017-08-01 Red Hat, Inc. Creating and maintaining multi-tenant applications in a platform-as-a-service (PaaS) environment of a cloud computing system
US10095705B2 (en) 2012-09-24 2018-10-09 Microsoft Technology Licensing, Llc Integrated data retention policy for solid state and asymmetric access
CN104380259B (zh) * 2012-10-17 2018-09-21 华为技术有限公司 降低内存系统功耗的方法和内存控制器
US20140181595A1 (en) 2012-12-20 2014-06-26 Virtium Technology, Inc. Estimating lifespan of solid-state drive using real usage model
US9065734B2 (en) 2013-03-08 2015-06-23 Telefonaktiebolaget L M Ericsson (Publ) Network bandwidth allocation in multi-tenancy cloud computing networks
US20140351505A1 (en) * 2013-05-21 2014-11-27 International Business Machines Corporation Providing data attributes to a storage manager to use to select a storage tier to use for a data set management operation
US9152684B2 (en) * 2013-11-12 2015-10-06 Netapp, Inc. Snapshots and clones of volumes in a storage system
US9619381B2 (en) 2013-12-24 2017-04-11 International Business Machines Corporation Collaborative health management in a storage system
US10222988B2 (en) * 2014-04-22 2019-03-05 Hitachi, Ltd. Efficient management storage system via defining of several size units in advance
US9864749B2 (en) 2014-06-27 2018-01-09 Netapp, Inc. Methods for provisioning workloads in a storage system using machine learning and devices thereof
US9798489B2 (en) 2014-07-02 2017-10-24 Hedvig, Inc. Cloning a virtual disk in a storage platform
US9524103B2 (en) * 2014-09-10 2016-12-20 Netapp, Inc. Technique for quantifying logical space trapped in an extent store
US10013196B2 (en) 2014-09-26 2018-07-03 EMC IP Holding Company LLC Policy based provisioning of storage system resources
US9836229B2 (en) * 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US9954799B2 (en) 2015-05-14 2018-04-24 International Business Machines Corporation Adaptive service chain management
US10235473B2 (en) 2015-10-28 2019-03-19 Vmware, Inc. Methods and systems to allocate logical disk costs to virtual machines in a virtual data center

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040117580A1 (en) 2002-12-13 2004-06-17 Wu Chia Y. System and method for efficiently and reliably performing write cache mirroring
US20130297907A1 (en) 2012-01-18 2013-11-07 Samsung Electronics Co., Ltd. Reconfigurable storage device
US20160378356A1 (en) 2015-06-23 2016-12-29 Pure Storage, Inc. Aligning memory access operations to a geometry of a storage device

Also Published As

Publication number Publication date
KR20170132651A (ko) 2017-12-04
JP2017211983A (ja) 2017-11-30
US10437486B2 (en) 2019-10-08
CN107422983A (zh) 2017-12-01
US20170344285A1 (en) 2017-11-30
TW201741889A (zh) 2017-12-01
JP6734807B2 (ja) 2020-08-05
CN107422983B (zh) 2022-04-05
TWI699654B (zh) 2020-07-21

Similar Documents

Publication Publication Date Title
KR102457611B1 (ko) 터넌트-어웨어 스토리지 쉐어링 플랫폼을 위한 방법 및 장치
US11954002B1 (en) Automatically provisioning mediation services for a storage system
CN109799951B (zh) 使用分布式的和虚拟的命名空间管理的按需存储供应
US10331370B2 (en) Tuning a storage system in dependence upon workload access patterns
US9760497B2 (en) Hierarchy memory management
US11157457B2 (en) File management in thin provisioning storage environments
US20200387479A1 (en) Using data characteristics to optimize grouping of similar data for garbage collection
US10572175B2 (en) Method and apparatus of shared storage between multiple cloud environments
US11579790B1 (en) Servicing input/output (‘I/O’) operations during data migration
CN107046563A (zh) 一种分布式高效云盘的实现方法、系统及云平台
US11409454B1 (en) Container ownership protocol for independent node flushing
EP3739440A1 (en) Distributed storage system, data processing method and storage node
US11842051B2 (en) Intelligent defragmentation in a storage system
US11477280B1 (en) Integrating cloud storage services
US10671439B1 (en) Workload planning with quality-of-service (‘QOS’) integration
US10671494B1 (en) Consistent selection of replicated datasets during storage system recovery
US10656862B1 (en) Systems and methods for implementing space consolidation and space expansion in a horizontally federated cluster
KR20120063946A (ko) 대용량 통합 메모리를 위한 메모리 장치 및 이의 메타데이터 관리 방법
US10789211B1 (en) Feature-based deduplication
US20230376238A1 (en) Computing system for managing distributed storage devices, and method of operating the same
CN118227259A (zh) 虚拟机迁移方法、装置、计算机设备和存储介质

Legal Events

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