KR20190104876A - 스토리지 디바이스들 사이의 개선된 데이터 배포의 방법 - Google Patents

스토리지 디바이스들 사이의 개선된 데이터 배포의 방법 Download PDF

Info

Publication number
KR20190104876A
KR20190104876A KR1020190011082A KR20190011082A KR20190104876A KR 20190104876 A KR20190104876 A KR 20190104876A KR 1020190011082 A KR1020190011082 A KR 1020190011082A KR 20190011082 A KR20190011082 A KR 20190011082A KR 20190104876 A KR20190104876 A KR 20190104876A
Authority
KR
South Korea
Prior art keywords
storage
storage device
pool
weights
memory
Prior art date
Application number
KR1020190011082A
Other languages
English (en)
Inventor
안자니야 알. 차감 레디
모한 제이. 쿠마르
수조이 센
무루가사미 케이. 나치무투
가밀 카인
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20190104876A publication Critical patent/KR20190104876A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

예들은 하나 이상의 스토리지 노드를 갖는 컴퓨팅 시스템에서 데이터를 저장하기 위한 스토리지 정책을 결정하기 위한 기술들을 포함하고, 각각의 스토리지 노드는 하나 이상의 스토리지 디바이스를 포함한다. 하나의 기술은 스토리지 노드의 스토리지 디바이스로부터 등급 정보를 취득하는 단계; 등급 정보에 적어도 부분적으로 기초하여 스토리지 풀에 스토리지 디바이스를 배정하는 단계; 및 배정되는 스토리지 풀 및 등급 정보에 적어도 부분적으로 기초하여 컴퓨팅 시스템에 대한 스토리지 정책을 자동으로 결정하는 단계를 포함한다.

Description

스토리지 디바이스들 사이의 개선된 데이터 배포의 방법{METHOD OF IMPROVED DATA DISTRIBUTION AMONG STORAGE DEVICES}
본 명세서에 설명되는 예들은 일반적으로 컴퓨팅 시스템들에서 스토리지 디바이스들에 데이터를 저장하고 액세스하는 성능을 개선하기 위한 기술들에 관한 것이다.
스토리지 디바이스는 하나 이상의 타입의 메모리를 포함한다. MLC(multi-level cell)는, 메모리 엘리먼트 당 하나의 비트만을 저장할 수 있는 SLC(single-level cell)에 비해, 단일 비트보다 많은 정보를 저장할 수 있는 메모리 엘리먼트이다. TLC(triple-level cells) 및 QLC(quad-level cells)는 MLC 메모리의 버전들이고, 이들은 셀 당 3 비트 및 4 비트를 각각 저장할 수 있다. (관례로 인해, "멀티-레벨 셀(multi-level cell)"이라는 명칭은 "2-레벨 셀(two-level cell)"을 지칭하는데 구체적으로 때때로 사용된다는 점에 주목한다). 전반적으로, 메모리들은 SLC(셀 당 1 비트 - 가장 빠르고, 최고 비용); MLC(셀 당 2 비트); TLC(셀 당 3 비트); 및 QLC(셀 당 4 비트 - 가장 느리고, 최소 비용)라고 일반적으로 지칭된다. MLC 메모리의 일 예는 QLC NAND 플래시 메모리이다.
일부 컴퓨팅 시스템들은 상이한 타입들의 스토리지 디바이스를 사용하여 데이터 객체들의 크기들, 데이터 객체들의 액세스의 빈도들, 원하는 액세스 시간들 등에 의존하여 데이터 객체들을 저장한다. 일부 컴퓨팅 시스템들은 하나 이상의 스토리지 노드를 포함할 수 있고, 각각의 스토리지 노드는 하나 이상의 스토리지 디바이스를 포함한다. 컴퓨팅 시스템은, 다양한 동작 특성 및 능력들이 있는, 다양한 타입들의 메모리의 스토리지 디바이스들을 가질 수 있다. 일부 컴퓨팅 시스템들에서는, 컴퓨팅 시스템에서의 스토리지 노드들의 전체 세트에 걸쳐 데이터 객체들을 배포 및 위치시키기 위한 결정론적 방식을 제공하는데 해싱 기술들이 사용된다. 하나의 알려진 해싱 알고리즘은 스토리지 노드들의 상대적 가중치들을 사용하여, 핫 스폿들을 생성하지 않고, 데이터 객체들이 스토리지 노드들의 클러스터에 균일하게 배포되는 방법을 식별한다.
데이터 센터 관리자들은 현재 시스템 콘솔에 있는 명령 라인 툴들을 사용하여 스토리지 디바이스들의 타입들을 식별하고, 그룹 스토리지 디바이스들을 논리 풀들로 그룹화하고, 문서화된 스토리지 디바이스 사양들에 기초하여 가중치들을 수동으로 배정한다. (일부 경우들에서 맞춤화된 명령 라인 스크립트들로서 구현되는) 이러한 수동 스토리지 셋업은 스토리지 풀 프로비저닝 단계 동안 일관된 해싱에 대해 스토리지 노드 가중치들을 자동화하는 알려진 참조 구성들에 기초한다.
현재 사용되는 해결책들은 수동이고 스토리지 디바이스 속성들에 기초하여 스토리지 풀에서의 스토리지 노드들에 가중치들을 배정하는 명확한 방식의 결핍으로 인해 에러이기 쉽다. 추가로, 스토리지 디바이스 사양들은 이용 가능하지 않을 수 있거나, 또는 부정확하거나 또는 구식일 수 있고, 이는 이러한 정보를 스토리지 디바이스 성능을 평가하는데 신뢰할 수 없는 소스로 만든다. 데이터 센터 관리자는 통상적으로 몇몇 합성(예를 들어, 인공의 또는 부자연스러운) 벤치마크들을 실행하여 스토리지 디바이스 성능 특성을 식별하고, 다음으로 스토리지 디바이스들 및 스토리지 노드들에 대해 가중치들을 수동으로 배정한다. 현대의 컴퓨터 서버 팜들에서 점점 더 많은 수의 스토리지 디바이스들이 주어지면, 이러한 접근법은 문제가 있다.
도 1은 예시적인 컴퓨팅 시스템을 도시한다.
도 2는 예시적인 스토리지 노드를 도시한다.
도 3은 예시적인 서버 컴퓨팅 시스템을 도시한다.
도 4는 스토리지 디바이스 등급을 취득하는 예를 도시한다.
도 5는 스토리지 관리 동작의 논리 흐름의 예를 도시한다.
도 6은 풀에 스토리지 디바이스를 배정하는 논리 흐름의 예를 도시한다.
도 7은 예시적인 스토리지 매체를 도시한다.
본 개시 내용에서 고려되는 바와 같이, 스토리지 디바이스는 스토리지 관리 컴포넌트에 의해 컴퓨팅 시스템에 대한 스토리지 관리 정책을 결정하는데 사용되는 성능 특성 정보(예를 들어, 등급 정보)를 노출시킬 수 있다. 실시예에서, 스토리지 관리 정책은 자동화된 메모리 그룹화(또한 풀링 또는 계층화를 호출함)에 기초할 수 있고, 스토리지 디바이스 성능 특성 정보에 기초하여 상대적 가중치들을 배정 받아서 컴퓨팅 시스템 내의 해싱 기반 데이터 배포를 개선할 수 있다.
도 1은 예시적인 컴퓨팅 시스템을 도시한다. 컴퓨팅 시스템(100)은, 데이터 센터 영역 1(102), 데이터 센터 영역 2(104), ... 데이터 센터 영역 N(106)과 같은 하나 이상의 데이터 센터 영역을 포함하고, 여기서 N은 자연수이다. 컴퓨팅 시스템(100)에서의 각각의 데이터 센터 영역은 적어도 하나의 스토리지 관리 컴포넌트(108)를 포함한다. 본 발명의 실시예들에서, 스토리지 관리 컴포넌트(108)는 데이터 센터 영역에서 스토리지 디바이스들로부터 성능 특성 정보를 획득하고, 각각의 스토리지 디바이스에 대한 하나 이상의 스토리지 디바이스 가중치 값들을 결정한다. 스토리지 관리 컴포넌트(108)는 스토리지 노드에 속하는 스토리지 디바이스들의 스토리지 디바이스 가중치 값들에 적어도 부분적으로 기초하여 각각의 스토리지 노드에 대한 스토리지 노드 가중치 값을 결정한다. 스토리지 관리 컴포넌트는 스토리지 노드 가중치 값들 및 스토리지 디바이스 가중치 값들에 적어도 부분적으로 기초하여 컴퓨팅 시스템에서 데이터 센터 영역들에 대한 스토리지 관리 정책을 결정한다. 스토리지 관리 컴포넌트(108)는 결정된 스토리지 디바이스 가중치 값들을 사용하여 스토리지 디바이스들을 스토리지 풀들로 그룹화할 수 있다. 컴퓨팅 시스템(100)은 다음으로 컴퓨팅 시스템에서 데이터를 저장할 곳을 결정할 때 스토리지 관리 정책을 사용할 수 있다.
컴퓨팅 시스템(100)에서의 각각의 데이터 센터 영역은 하나 이상의 스토리지 노드를 포함할 수 있다. 예를 들어, 데이터 센터 영역 1(102)은, 스토리지 노드 1-1(110), 스토리지 노드 1-2(112), ... 스토리지 노드 1-J(114)로 표기되는, "J"개의 스토리지 노드들을 포함하고, 여기서 J는 자연수이다. 예를 들어, 데이터 센터 영역 2(104)는, 스토리지 노드 2-1(116), 스토리지 노드 2-2(118), ... 스토리지 노드 2-K(120)로 표기되는, "K"개의 스토리지 노드들을 포함하고, 여기서 K는 자연수이다. 예를 들어, 데이터 센터 영역 N(106)은, 스토리지 노드 N-1(122), 스토리지 노드 N-2(124), ... 스토리지 노드 N-L(120)로 표기되는, "L"개의 스토리지 노드들을 포함하고, 여기서 L은 자연수이다.
도 2는 예시적인 스토리지 노드를 도시한다. 스토리지 노드(200)는 도 1에 도시되는 임의의 스토리지 노드를 나타낼 수 있다. 예를 들어, 스토리지 노드 A(202)는 스토리지 디바이스 A-1(204), 스토리지 디바이스 A-2(206), ... 스토리지 디바이스 A-M(208)과 같은, 도시되는 바와 같은 하나 이상의 스토리지 디바이스를 포함할 수 있고, 여기서 M은 자연수이다.
따라서, 일부 예들에서, 컴퓨팅 시스템(100)에 대한 전체 스토리지 요건들에 의존하여, 컴퓨팅 시스템은 많은 스토리지 노드들을 포함할 수 있고, 각각의 스토리지 노드는 가능하게는 많은 스토리지 디바이스들을 포함할 수 있다. 추가로, 각각의 스토리지 디바이스는 하나 이상의 메모리를 포함할 수 있다. 각각의 스토리지 디바이스(204, 206, ... 208)는 스토리지 관리 컴포넌트(108)에 의해 발견 가능한 성능 특성 정보를 가질 수 있다.
도 3은 데이터 센터 영역에서의 예시적인 서버 컴퓨팅 시스템(300)을 도시한다. 일부 예들에서, 도 3에 도시되는 바와 같이, 시스템(300)은 I/O 인터페이스(303) 및 I/O 인터페이스(323)를 통해 하나 이상의 스토리지 디바이스(320)에 연결되는 서버(310)를 포함한다. 스토리지 디바이스(320)는 도 2의 스토리지 디바이스 A-1(204), 스토리지 디바이스 A-2(206), 내지 스토리지 디바이스 A-M(208) 중 임의의 하나 이상을 나타낸다. 도 3에 도시되는 바와 같이, 서버(310)는 OS(operating system)(311), 하나 이상의 시스템 메모리 디바이스(들)(312), 회로(316) 및 스토리지 관리 컴포넌트(108)를 포함할 수 있다. 이러한 예들에 대해, 회로(316)는 시스템 메모리 디바이스(들)(312) 내에, 적어도 부분적으로, 유지될 수 있는 OS(311) 및 스토리지 관리 컴포넌트(108)와 같은 서버(310)의 다양한 기능 엘리먼트들을 실행할 수 있다. 회로(316)는 하나 이상의 CPU(central processing units)(도시되지 않음) 및 연관된 칩셋 및/또는 제어기를 포함하는 호스트 처리 회로를 포함할 수 있다.
일부 예들에 따르면, 도 3에 도시되는 바와 같이, OS(311)는 파일 시스템(313) 및 하나 이상의 스토리지 디바이스 드라이버(315)를 포함할 수 있고, 하나 이상의 스토리지 디바이스(320)는 스토리지 제어기(324), 하나 이상의 스토리지 메모리 디바이스(들)(322) 및 메모리(326)를 포함할 수 있다. OS(311)는 파일들(313-1 내지 313-n)(여기서 "n" 은 임의의 전체 양의 정수 > 1임) 중에서 스토리지 메모리 디바이스(들)(322)로의 파일에 대한 데이터의 적어도 일시적 저장을 조정하도록 스토리지 디바이스 드라이버(315)를 구현하도록 배열될 수 있다. 데이터는, 예를 들어, OS(311) 또는 애플리케이션 프로그램들(도 3에 도시되지 않음)의 적어도 일부들로부터 유래될 수 있거나 또는 이들을 실행하는 것과 연관될 수 있다. 아래에 보다 상세히 설명되는 바와 같이, OS(311)는 하나 이상의 명령 및 트랜잭션을 스토리지 디바이스(320)와 통신하여 스토리지 디바이스(320)에 데이터를 기입하거나 또는 이로부터 데이터를 판독한다. 이러한 명령들 및 트랜잭션들은 스토리지 디바이스(320)에 있는 로직 및/또는 피처들에 의해 조직화되고 처리되어 스토리지 디바이스(320)에 데이터를 기입하거나 이로부터 데이터를 판독할 수 있다.
일부 예들에서, 스토리지 제어기(324)는 스토리지 디바이스(320)에 있는 스토리지 메모리 디바이스(들)(322)에 대한 트랜잭션 요청들을 수신하는 로직 및/또는 피처들을 포함할 수 있다. 이러한 예들에 대해, 트랜잭션 요청들은, 일부 실시예들에서, 파일 시스템(313)을 이용하여 I/O(input/output) 인터페이스들(303 및 323)을 통해 스토리지 디바이스(320)에/로부터 데이터를 기입/판독할 수 있는 OS(311)에 의해 착수되거나 또는 이로부터 공급될 수 있다.
일부 예들에서, 메모리(326)는, 이에 제한되는 것은 아니지만, RAM, D-RAM, DDR SDRAM, SRAM, T-RAM 또는 Z-RAM을 포함하는 휘발성 타입들의 메모리를 포함할 수 있다. 휘발성 메모리의 일 예는 DRAM, 또는 SDRAM과 같은 일부 변형을 포함한다. 본 명세서에서 설명되는 바와 같은 메모리 서브시스템은, DDR4(DDR 버전 4, JEDEC에 의해 2012년 9월에 공개된 초기 사양), LPDDR4(LOW POWER DOUBLE DATA RATE (LPDDR) 버전 4, JESD209-4, 2014년 8월에 JEDEC에 의해 처음 공개됨), WIO2 (Wide I/O 2 (WideIO2), JESD229-2, 2014년 8월에 JEDEC에 의해 처음 공개됨), HBM (HIGH BANDWIDTH MEMORY DRAM, JESD235, 2013년 10월에 JEDEC에 의해 처음 공개됨), DDR5(DDR 버전 5, 현재 JEDEC에 의해 논의중임), LPDDR5(LPDDR 버전 5, 현재 JEDEC에 의해 논의중임), HBM2(HBM 버전 2, 현재 JEDEC에 의해 논의중임), 및/또는 다른 것들과 같은, 다수의 메모리 기술들, 및 이러한 사양들의 파생물들 또는 확장물들에 기초하는 기술들과 호환 가능할 수 있다.
그러나, 예들은 이러한 방식으로 제한되지 않고, 일부 경우들에서, 메모리(326)는, 메모리(326)에 전력이 중단되더라도 상태가 결정되는, 비-휘발성 타입들의 메모리를 포함할 수 있다. 일부 예들에서, 메모리(326)는, NAND 또는 NOR 기술들에 대해서와 같이, 블록 어드레싱 가능한 비-휘발성 타입들의 메모리를 포함할 수 있다. 따라서, 메모리(326)는, 3-차원 크로스-포인트 메모리(Intel Corporation으로부터 상업적으로 이용 가능한 3D XPointTM), 또는 다른 바이트 어드레싱 가능한 비-휘발성 타입들의 메모리와 같은, 비-휘발성 메모리의 타입들의 향후 세대를 또한 포함할 수 있다. 일부 예들에 따르면, 메모리(126)는 칼코게나이드 유리, 멀티-임계 레벨 NAND 플래시 메모리, NOR 플래시 메모리, 단일 또는 다중-레벨 PCM(Phase Change Memory), 저항성 메모리, 나노와이어 메모리, FeTRAM, 멤리스터 기술을 포함하는 MRAM, 또는 STT-MRAM, 또는 위 또는 다른 메모리 중 임의의 것의 조합을 포함하는 비-휘발성 메모리의 타입들을 포함할 수 있다.
일부 예들에서, 스토리지 메모리 디바이스(들)(322)는 기입 트랜잭션들 및/또는 기입 동작들로부터 데이터를 저장하는 디바이스일 수 있다. 스토리지 메모리 디바이스(들)(322)는, 이에 제한되는 것은 아니지만, NAND 플래시 메모리, NOR 플래시 메모리, 3-D 크로스-포인트 메모리(3D XPointTM), 강유전체 메모리, SONOS 메모리, 강유전체 폴리머 메모리, FeTRAM, FeRAM, 오보닉 메모리, 나노와이어, EEPROM, 상 변화 메모리, 멤리스터들 또는 STT-MRAM을 포함하는 하나 이상의 타입의 비-휘발성 메모리를 개별적으로 포함할 수 있는 게이트들을 갖는 하나 이상의 칩 또는 다이를 포함할 수 있다. 이러한 예들에 대해, 스토리지 디바이스(320)는 SSD(solid-state drive)로서 배열되거나 또는 구성될 수 있다. 데이터는 블록들로 판독 및 기입될 수 있고 이러한 블록들에 대한 매핑 또는 위치 정보가 메모리(326)에 유지될 수 있다.
일부 예들에 따르면, 스토리지 메모리 디바이스들(들)(322)에 저장되고 파일들(313-1 내지 313-n)을 통해 액세스되는 데이터에 대한 스토리지 디바이스 드라이버(315)와 스토리지 제어기(324) 사이의 통신들은 I/O 인터페이스(303) 및 I/O 인터페이스(323)를 통해 라우팅될 수 있다. I/O 인터페이스들(303 및 323)은 서버(310)의 엘리먼트들을 스토리지 디바이스(320)에 연결하는 SATA(Serial Advanced Technology Attachment) 인터페이스로서 배열될 수 있다. 다른 예에서, I/O 인터페이스들(303 및 323)은 서버(310)의 엘리먼트들을 스토리지 디바이스(320)에 연결하는 SCSI(Serial Attached Small Computer System Interface)(또는 간단히 SAS) 인터페이스로서 배열될 수 있다. 다른 예에서, I/O 인터페이스들(303 및 323)은 서버(310)의 엘리먼트들을 스토리지 디바이스(320)에 연결하는 PCIe(Peripheral Component Interconnect Express) 인터페이스로서 배열될 수 있다. 다른 예에서, I/O 인터페이스들(303 및 323)은 서버(310)의 엘리먼트들을 스토리지 디바이스(320)에 연결하는 NVMe(Non-Volatile Memory Express) 인터페이스로서 배열될 수 있다. 이러한 다른 예에 대해, 통신 프로토콜들은, 2014년 11월에 공개된 Peripheral Component Interconnect (PCI) Express Base Specification, 개정판 3.1("PCI Express specification" 또는 "PCIe specification") 또는 이후 개정판들, 및/또는 2014년 11월에 또한 공개된 Non-Volatile Memory Express (NVMe) Specification, 개정판 1.2("NVMe specification") 또는 이후 개정판들과 같은 산업 표준들 및 사양들(후세대들 및 변형들을 포함함)에서 설명되는 바와 같이 I/O 인터페이스들(303 및 323)을 통해 통신하는데 이용될 수 있다.
일부 예들에서, 시스템 메모리 디바이스(들)(312)는 정보를 처리하기 위해 회로(316)에 의해 사용될 수 있는 정보 및 명령들을 저장할 수 있다. 또한, 도 3에 도시되는 바와 같이, 회로(316)는 메모리 제어기(318)를 포함할 수 있다. 메모리 제어기(318)는 스토리지 디바이스(320)에 있는 스토리지 메모리 디바이스(들)(322)로의 궁극적 저장을 위해 시스템 메모리 디바이스(들)(312)에 적어도 일시적으로 저장되는 데이터에 대한 액세스를 제어하도록 배열될 수 있다.
일부 예들에서, 스토리지 디바이스 드라이버(315)는 OS(311)로부터 유래하는 하나 이상의 판독 또는 기입 트랜잭션들 및/또는 판독 또는 기입 동작들과 연관된 명령들을 전달하는 로직 및/또는 피처들을 포함할 수 있다. 예를 들어, 스토리지 디바이스 드라이버(315)는 데이터로 하여금 스토리지 디바이스(320)에 있는 스토리지 메모리 디바이스(들)(322)에 저장되게 할 수 있도록 기입 트랜잭션들과 연관된 명령들을 전달할 수 있다.
시스템 메모리 디바이스(들)(312)는 RAM, D-RAM, DDR SDRAM, SRAM, T-RAM 또는 Z-RAM과 같은 휘발성 타입들의 메모리를 갖는 하나 이상의 칩 또는 다이를 포함할 수 있다. 그러나, 예들은 이러한 방식으로 제한되지 않고, 일부 경우들에서, 시스템 메모리 디바이스(들)(312)는, 이에 제한되는 것은 아니지만, NAND 플래시 메모리, NOR 플래시 메모리, 3-D 크로스-포인트 메모리(3D XPointTM), 강유전체 메모리, SONOS 메모리, 강유전체 폴리머 메모리, FeTRAM, FeRAM, 오보닉 메모리, 나노와이어, EEPROM, 상 변화 메모리, 멤리스터들 또는 STT-MRAM을 포함하는, 비-휘발성 타입들의 메모리를 포함할 수 있다.
영구 메모리(319)는, 이에 제한되는 것은 아니지만, NAND 플래시 메모리, NOR 플래시 메모리, 3-D 크로스-포인트 메모리(3D XPointTM), 강유전체 메모리, SONOS 메모리, 강유전체 폴리머 메모리, FeTRAM, FeRAM, 오보닉 메모리, 나노와이어, EEPROM, 상 변화 메모리, 멤리스터들 또는 STT-MRAM을 포함하는 비-휘발성 타입들의 메모리를 갖는 하나 이상의 칩 또는 다이를 포함할 수 있다.
일부 예들에 따르면, 서버(310)는, 이에 제한되는 것은 아니지만, 데이터 센터 영역에서, 서버, 서버 어레이 또는 서버 팜, 웹 서버, 네트워크 서버, Internet 서버, 워크 스테이션, 미니-컴퓨터, 메인 프레임 컴퓨터, 슈퍼컴퓨터, 네트워크 어플라이언스, 웹 어플라이언스, 분산형 컴퓨팅 시스템, 개인용 컴퓨터, 태블릿 컴퓨터, 스마트 폰, 멀티프로세서 시스템들, 프로세서-기반 시스템들, 또는 이들의 조합을 포함할 수 있다.
도 4는 스토리지 디바이스 등급을 취득하는 예를 도시한다. 실시예에서, 스토리지 디바이스(320)가 NVMe 사양을 지원할 때, 스토리지 관리 컴포넌트(108)는 스토리지 디바이스(320) 내의 스토리지 제어기(324)에 명령을 전송하여 스토리지 디바이스에 관한 성능 특성 정보(402)를 획득할 수 있다. 실시예에서, 성능 특성 정보는 또한 스토리지 디바이스 등급, 또는 등급 정보로서 알려질 수 있다. 실시예에서, 이러한 명령은 스토리지 디바이스 등급 취득 명령(400), 또는 유사한 명령일 수 있다. 다른 실시예들에서는, 다른 스토리지 디바이스 사양들 및 연관된 명령들이 사용될 수 있다. 도 4에 도시되는 일 예에서, 성능 특성 정보(402)는 하나 이상의 데이터 필드를 포함할 수 있다. 성능 특성 정보(402)에 포함될 수 있는 데이터 필드들은, 스토리지 디바이스의 메모리 타입을 포함하는, 스토리지 디바이스의 타입, 버전 번호, I/O 능력들, 저장 용량, 전력 사용, 액세스 속도 등과 같은, 많은 인자들에 의존할 수 있다. 예를 들어, 성능 특성 정보(402)는 메모리 타입 필드(404)를 포함할 수 있고, 이는 어느 타입의 메모리가 스토리지 디바이스에 존재하는지 명시할 수 있다(예를 들어, 3D XPointTM, SLC NAND, MLC NAND, TLC NAND, QLC NAND, 3D NAND 등). 예를 들어, 성능 특성 정보(402)는 랜덤 4K 판독 필드(406)를 포함할 수 있고, 이는 스토리지 디바이스로부터 4K 비트의 랜덤 100% 판독에 대한 성능 등급을 IOPS(input/output (IO) per second)로 명시할 수 있다. 예를 들어, 성능 특성 정보(402)는 랜덤 4K 기입 필드(408)를 포함할 수 있고, 이는 스토리지 디바이스로의 4K 비트의 랜덤 100% 기입에 대한 성능 등급을 IOPS(input/output (IO) per second)로 명시할 수 있다. 예를 들어, 성능 특성 정보(402)는 랜덤한 4K 70/30 필드(4010)를 포함할 수 있고, 이는 스토리지 디바이스로부터의 70% 판독들 그리고 스토리지 디바이스로의 30% 기입들이 있는 4K 비트를 갖는 블록의 랜덤 액세스에 대한 성능 등급을 IOPS(input/output (IO) per second)로 명시할 수 있다. 예를 들어, 성능 특성 정보(402)는 순차적 판독 필드(412)를 포함할 수 있고, 이는 스토리지 디바이스로부터의 순차적 판독에 대한 성능 등급을 MB/S(megabytes per second)로 명시할 수 있다. 예를 들어, 성능 특성 정보(402)는 순차적 기입 필드(414)를 포함할 수 있고, 이는 스토리지 디바이스로의 순차적 기입에 대한 성능 등급을 MB/S(megabytes per second)로 명시할 수 있다. 예를 들어, 성능 특성 정보(402)는 평균 활성 R/W(read/write) 전력 필드(416)를 포함할 수 있고, 이는 스토리지 디바이스의 평균 전력 소비를 와트들로 명시할 수 있다. 예를 들어, 성능 특성 정보(402)는 유휴 전력 필드(418)를 포함할 수 있고, 이는 스토리지 디바이스의 유휴 전력 소비의 성능 등급을 와트들로 명시할 수 있다. 예를 들어, 성능 특성 정보(402)는 내구성 필드(420)를 포함할 수 있고, 이는 스토리지 디바이스가 고장 없이 수행할 것으로 예상되는 DWPD(drive writes per day)를 명시할 수 있다. 예를 들어, 성능 특성 정보(402)는 용량 필드(422)를 포함할 수 있고, 이는 스토리지 디바이스에서의 메모리의 크기를 GB들(gigabytes)로 명시할 수 있다.
도 5는 스토리지 관리 동작의 논리 흐름을 도시한다. 이러한 예들에서, 이러한 프로세스들은 스토리지 관리 컴포넌트(108), OS(311), 회로(316), 영구 메모리(319), 시스템 메모리 디바이스(들)(312), 스토리지 디바이스(320), 스토리지 제어기(324), 메모리(326), 및/또는 스토리지 메모리 디바이스(들)(322)와 같은 도 3에 도시되는 시스템(300)의 컴포넌트들 또는 엘리먼트들에 의해 구현되거나 또는 이들을 사용할 수 있다. 그러나, 이러한 프로세스가 시스템(300)의 이러한 컴포넌트들 또는 엘리먼트들만에 의해 구현되거나 또는 이들만을 사용하는 것으로 제한되는 것은 아니다. 논리 흐름(500)은 본 명세서에 설명되는 하나 이상의 로직, 피처, 또는 디바이스에 의해 실행되는 동작들의 일부 또는 전부를 나타낼 수 있다.
실시예에서, 흐름(500)은 도 1에 도시되는 시스템(100)의 스토리지 관리 컴포넌트(108), 또는 도 3의 시스템(300)의 스토리지 관리 컴포넌트(108)에서 구현될 수 있다. 다른 실시예에서, 흐름(500)은 도 3에 도시되는 시스템(300)의 회로(316)에서 구현될 수 있다. 예에서, 스토리지 관리 컴포넌트(108)는 하나 이상의 소프트웨어 또는 펌웨어 구현된 컴포넌트들 또는 모듈들을 실행하도록 배열될 수 있다.
개시되는 아키텍처의 신규한 양태들을 수행하기 위한 예시적인 방법론들을 나타내는 논리 흐름들의 세트가 본 명세서에 포함된다. 설명의 간략성의 목적들을 위해, 본 명세서에 도시되는 하나 이상의 방법론들은 일련의 행위들로서 도시되고 설명되지만, 해당 분야에서의 기술자들은 이러한 방법론들이 행위들의 순서에 의해 제한되는 것은 아니라는 점을 이해하고 인식할 것이다. 일부 행위들은 그에 따라, 본 명세서에 도시되고 설명되는 것과 상이한 순서로 및/또는 다른 행위들과 동시에 발생할 수 있다. 예를 들어, 해당 분야에서의 기술자들은 방법론이, 상태도에서와 같이, 일련의 상관된 상태들 또는 이벤트들로서 대안적으로 표현될 수 있다는 점을 이해하고 인식할 것이다. 더욱이, 방법론에서 예시되는 모든 행위들이 신규한 구현에 대해 요구되는 것은 아닐 수 있다.
논리 흐름은 소프트웨어, 펌웨어, 및/또는 하드웨어로 구현될 수 있다. 소프트웨어 및 펌웨어 실시예들에서, 논리 흐름은, 광학, 자기, 또는 반도체 스토리지와 같은, 적어도 하나의 비-일시적 컴퓨터 판독 가능 매체 또는 머신 판독 가능 매체 상에 저장되는 컴퓨터 실행 가능 명령어들에 의해 구현될 수 있다. 이러한 실시예들이 이러한 맥락에서 제한되는 것은 아니다.
스토리지 관리 컴포넌트(108)는, 시스템에서의 하나 이상의 스토리지 노드의 특성 및 성능 등급들, 및 각각의 스토리지 노드에서의 하나 이상의 스토리지 디바이스를 고려하여, 시스템(100)에 대한 스토리지 정책을 자동으로 결정하도록 실행될 수 있다. 스토리지 정책은 전체 시스템 성능에 가장 적합할 수 있는 스토리지 노드(들) 및 스토리지 노드에서의 스토리지 디바이스(들)에 저장될 데이터를 할당하기 위한 결정들을 행하기 위해 시스템(100)에 의해 사용될 수 있다. 실시예에서, 스토리지 관리 컴포넌트(108)는 시스템(100)의 기동 시에 실행될 수 있다. 실시예에서, 스토리지 관리 컴포넌트(108)는 시스템 관리자에 의한 요구에 따라(예를 들어, 수동으로) 실행될 수 있거나 또는 주기적으로 실행되도록 스케줄링될 수 있다. 다른 실시예에서, 스토리지 관리 컴포넌트(108)는 스토리지 노드가 시스템에서 활성화 또는 비활성화될 때마다 실행될 수 있다. 다른 실시예에서, 스토리지 관리 컴포넌트(108)는 스토리지 디바이스가 시스템에서 활성화 또는 비활성화될 때마다 실행될 수 있다. 실시예에서, 스토리지 관리 컴포넌트(108)는 시스템(100)의 하나 이상의 스토리지 노드에서의 하나 이상의 스토리지 디바이스의 분석에 기초하여 스토리지 정책을 자동으로 결정할 수 있다.
스토리지 노드들 및 이들의 스토리지 디바이스들을 처리하기 이전에, 스토리지 관리 컴포넌트(108)는 추가의 계산들에서 사용될 변수들을 초기화할 수 있다. 실시예에서, 스토리지 관리 컴포넌트(108)는 IOPS 분모(IOPS Denominator), 처리량 분모(Throughput Denominator), 용량 분모(Capacity Denominator), IOPS 상대적 가중치(IOPS Relative Weight), 용량 상대적 가중치(Capacity Relative Weight), 및 처리량 상대적 가중치(Throughput Relative Weight)를 초기화할 수 있다. 처리는 블록 502에서 시스템(100)의 제1 스토리지 노드 내의 제1 스토리지 디바이스로 시작할 수 있다. 스토리지 관리 컴포넌트(108)는 스토리지 디바이스에 대한 스토리지 디바이스 등급을 취득할 수 있다. 블록 504에서, 스토리지 관리 컴포넌트(108)는 스토리지 디바이스를 스토리지 풀에 배정할 수 있다. 실시예에서, 스토리지 풀은 유사한 동작 특성을 갖는 스토리지 디바이스들의 그룹 또는 집합일 수 있다.
도 6은 스토리지 디바이스를 스토리지 풀에 배정하는 논리 흐름의 예를 도시한다. 메모리의 타입은 스토리지 디바이스가 보다 우수한 성능 또는 보다 우수한 처리량을 요구하는 작업 부하들에 대해 의미되는지 분리하는데 사용될 수 있다. 처리는 블록 602에서 시작할 수 있다. 블록 604에서, 스토리지 관리 컴포넌트(108)는 스토리지 디바이스에서의 하나 이상의 메모리의 메모리 타입을 결정한다. 메모리 타입이 3-D 크로스-포인트 메모리(3D XPointTM)이면, 블록 608에서 메모리의 용량의 결정이 이루어질 수 있다. 스토리지 디바이스의 메모리가 (<X GB들과 같은, GB들(gigabytes)의 수로 측정되는 바와 같은) 미리 정의된 임계 값 미만이면, 스토리지 디바이스는 캐시 풀(610)에 배정될 수 있다. 캐시 풀(610)은 최고 성능 액세스들 및 데이터에 대한 가장 빈번한 액세스들에 대해 사용될 수 있지만, 캐시 풀은 더 작고 더 비쌀 수 있다. 스토리지 디바이스의 메모리가 미리 정의된 임계 값 이상이면(예를 들어, >= X GB들), 스토리지 디바이스는 낮은 레이턴시 풀(612)에 배정될 수 있다. 낮은 레이턴시 풀은 최고 성능 액세스들(예를 들어, 낮은 레이턴시를 요구하는 것들) 및 데이터에 대한 빈번한 액세스들에 대해 사용될 수 있지만, 낮은 레이턴시 풀은 캐시 풀보다 더 클 수 있다. 낮은 레이턴시 풀이 캐시 풀보다 더 크기 때문에, 낮은 레이턴시 풀은 캐시 풀보다 더 비쌀 수 있다.
블록 604에서 메모리 타입이 SLC NAND이면, 스토리지 디바이스는 저널링 풀(614)에 배정될 수 있다. 실시예에서, 저널링 풀은 데이터에 대한 변경들의 로그 파일들을 저장하는데 사용될 수 있다. SLC NAND가 사용되기 때문에, 저널링 풀에 대해, 높은 내구성을 갖지만 3-D 크로스-포인트보다 낮은 비용을 갖는 더 높은 레벨의 NAND 성능이 제공될 수 있다. 실시예에서, 저널링 풀에서의 데이터에 대한 업데이트들은 기입 집약적일 수 있다. 블록에서의 메모리 타입이 TLC 3D NAND이면, 스토리지 디바이스는 성능 풀(616)에 배정될 수 있다. 성능 풀은 매우 낮은 레이턴시 요건들을 갖지 않는 성능-지향 작업 부하들에 대해 사용될 수 있다. 블록 604에서 메모리 타입이 QLC 3D NAND이면, 실시예에서 스토리지 관리 컴포넌트(108)는 블록 618에서 스토리지 디바이스의 판독/기입 처리량 비율을 체크할 수 있다. QLC 3D NAND는 SLC NAND 또는 TLC 3D NAND보다, 그러나 더 높은 용량 및 더 낮은 비용으로, 더 낮은 내구성 및 더 낮은 기입 대역폭 성능을 제공할 수 있다. 실시예에서, 판독/기입 처리량 비율은 스토리지 드라이브 등급 취득 명령을 수행하는 것에 의해 획득될 수 있다. 일 실시예에서, 비율이 8:2와 같은 미리 정의된 값보다 더 크면, 스토리지 관리 컴포넌트(108)는 스토리지 디바이스에 대한 DWPD(drive writes per day) 내구성 메트릭을 체크할 수 있다. 실시예에서, DPWD 메트릭은 스토리지 드라이브 등급 취득 명령을 수행하는 것에 의해 획득될 수 있다. 실시예에서, 스토리지 디바이스의 DWPD가 0.3과 같은 미리 정의된 값보다 더 크면, 스토리지 디바이스는 처리량 풀(622)에 배정될 수 있다. 실시예에서, 처리량 풀(622)은, 하루 당 더 높은 기입들을 요구하는 애플리케이션들에 대해, 예를 들어, 스트리밍 데이터를 저장하는데 사용될 수 있다. 실시예에서, 스토리지 디바이스의 DWPD가 0.3과 같은 미리 정의된 값 이하이거나 또는 8:2와 같은 미리 정의된 판독/기입 처리량 비율 이하이면, 스토리지 디바이스는 용량 풀(624)에 배정될 수 있다. 실시예에서, 용량 풀(624)은, 예를 들어, 덜 빈번한 액세스를 갖는 더 긴 주기들의 시간 동안 보관될 데이터를 저장하는데 사용될 수 있다.
6개의 상이한 스토리지 풀 타입들이 도 6에 도시되지만, 다른 실시예들에서는 다른 풀 타입들이 또한 사용될 수 있다. 예를 들어, 저 전력 애플리케이션들에 대해 스토리지 풀이 정의될 수 있다. 다른 예에서는, 고 보안 애플리케이션들에 대해 스토리지 풀이 정의될 수 있다. 실시예에서, 시스템 관리자는 스토리지 디바이스에 프로그램적으로 배정되는 스토리지 풀을 오버라이드하고 스토리지 디바이스를 다른 스토리지 풀에 수동으로 배정할 수 있다.
이제 도 5를 다시 돌아가서, 처리는 블록 506으로 계속되며, 여기서 스토리지 관리 컴포넌트(108)는 스토리지 디바이스 등급 정보에 적어도 부분적으로 기초하여 스토리지 디바이스에 대해 개별 스토리지 디바이스 가중치들을 계산할 수 있다. 실시예에서, 다음의 개별 스토리지 디바이스 가중치들이 계산될 수 있다:
드라이브 IOPS 가중치(Drive IOPS Weight) = 드라이브 IOPS(Drive IOPS) / IOPS 분모(IOPS Denominator);
드라이브 용량 가중치(Drive Capacity Weight) = 드라이브 용량(Drive Capacity) / 용량 분모(Capacity Denominator);
처리량 가중치(Throughput Weight) = 드라이브 처리량(Drive Throughput) / 처리량 분모(Throughput Denominator); 드라이브 IOPS, 드라이브 용량, 및 드라이브 처리량에 대한 값들이 스토리지 디바이스로부터 획득될 수 있음.
다른 실시예들에서는, 다른 또는 추가적인 개별 스토리지 디바이스 가중치들이 사용될 수 있다.
다음으로, 블록 508에서 스토리지 관리 컴포넌트(108)는 개별 스토리지 디바이스 가중치들에 적어도 부분적으로 기초하여 상대적 스토리지 디바이스 가중치들을 계산할 수 있다. 실시예에서, 상대적 스토리지 디바이스 가중치는 다음과 같이 계산될 수 있다:
Relative Storage Device Weight = (IOPS Relative Weight * Drive IOPS Weight) + (Capacity Relative Weight * Drive Capacity Weight) + (Throughput Relative Weight * Throughput Weight).
블록 510에서, 스토리지 관리 컴포넌트(108)는 현재 스토리지 노드에 대한 더 많은 스토리지 디바이스들이 처리될 필요가 있는지 결정한다. 그렇다면, 처리는 블록 502에서 현재 스토리지 노드에 대한 다음 스토리지 디바이스로 계속된다. 그렇지 않다면, 처리는 블록 512로 계속되고, 여기서 스토리지 노드 가중치가 상대적 스토리지 디바이스 가중치들에 적어도 부분적으로 계산될 수 있다. 실시예에서, 스토리지 노드 가중치는 그 스토리지 노드의 스토리지 디바이스들의 집성된 가중치를 나타낸다. 실시예에서, 스토리지 노드 가중치는 다음과 같이 계산될 수 있다:
Storage Node Weight = □ Relative Storage Device Weights
블록 514에서, 스토리지 관리 컴포넌트(108)는 더 많은 스토리지 노드들이 처리될 필요가 있는지를 결정한다. 그렇다면, 처리는 블록 502에서 시스템(100)에서의 다음 스토리지 노드의 제1 스토리지 디바이스로 계속된다. 그렇지 않다면, 모든 스토리지 노드들에서의 모든 스토리지 디바이스들이 이제 처리되었다. 블록 516에서, 스토리지 관리 컴포넌트(108)는 각각의 스토리지 노드에 대한 스토리지 노드 가중치 및 풀들에 적어도 부분적으로 기초하여 시스템(100)에 대한 스토리지 정책을 자동으로 결정할 수 있다. 스토리지 정책은 시스템 관리자에 의한 수동 개입 또는 활성화 없이 결정될 수 있다. 스토리지 정책은 어느 스토리지 노드들 및 스토리지 노드들 내의 스토리지 디바이스들이 데이터를 저장하는데 사용될 것인지 자동으로 결정하기 위해 시스템(100)에 의해 사용될 수 있다.
도 7은 스토리지 매체의 예를 도시한다. 스토리지 매체(700)는 제조 물품을 포함할 수 있다. 일부 예들에서, 스토리지 매체(700)는, 광학, 자기 또는 반도체 스토리지와 같은, 임의의 비-일시적 컴퓨터 판독 가능 매체 또는 머신 판독 가능 매체를 포함할 수 있다. 스토리지 매체(700)는, 위에 설명된 논리 흐름들을 구현하는 명령어들과 같은, 다양한 타입들의 컴퓨터 실행 가능 명령어들을 저장할 수 있다. 컴퓨터 판독 가능 또는 머신-판독 가능 스토리지 매체의 예들은, 휘발성 메모리 또는 비-휘발성 메모리, 이동식 또는 비-이동식 메모리, 소거 가능 또는 소거 불가능 메모리, 기입 가능 또는 재기입 가능 메모리 등을 포함하는, 전자 데이터를 저장할 수 있는 임의의 유형의 매체를 포함할 수 있다. 컴퓨터 실행 가능 명령어들의 예들은, 소스 코드, 컴파일된 코드, 해석된 코드, 실행 가능 코드, 정적 코드, 동적 코드, 객체-지향 코드, 비주얼 코드 등과 같은, 임의의 적합한 타입의 코드를 포함할 수 있다. 이러한 예들이 이러한 맥락에 제한되는 것은 아니다.
일부 예들에 따르면, 도 3의 회로(316)라고 불리는 컴포넌트는 스토리지 관리 컴포넌트(108) 및/또는 스토리지 매체(700)에 대한 처리 동작들 또는 로직을 실행할 수 있다. 회로(316)는 다양한 하드웨어 엘리먼트들, 소프트웨어 엘리먼트들, 또는 양자 모두의 조합을 포함할 수 있다. 하드웨어 엘리먼트들의 예들은 디바이스들, 로직 디바이스들, 컴포넌트들, 프로세서들, 마이크로프로세서들, 회로들, 프로세서 회로들, 회로 엘리먼트들(예를 들어, 트랜지스터들, 저항기들, 커패시터들, 인덕터들 등), 집적 회로들, ASIC, PLD(programmable logic devices), DSP(digital signal processors), FPGA/프로그래밍 가능 로직, 메모리 유닛들, 로직 게이트들, 레지스터들, 반도체 디바이스, 칩들, 마이크로칩들, 칩 세트들 등을 포함할 수 있다. 소프트웨어 엘리먼트들의 예들은 소프트웨어 컴포넌트들, 프로그램들, 애플리케이션들, 컴퓨터 프로그램들, 애플리케이션 프로그램들, 디바이스 드라이버들, 시스템 프로그램들, 소프트웨어 개발 프로그램들, 머신 프로그램들, 운영 체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 컴포넌트들, 루틴들, 서브루틴들, 함수들, 메소드들, 프로시저들, 소프트웨어 인터페이스들, API(application program interfaces), 명령어 세트들, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트들, 컴퓨터 코드 세그먼트들, 워드들, 값들, 심볼들, 또는 이들의 임의의 조합을 포함할 수 있다. 예가 하드웨어 엘리먼트들 및/또는 소프트웨어 엘리먼트들을 사용하여 구현되는지 결정하는 것은, 주어진 예에 대해 요구되는 바와 같이, 원하는 계산 레이트, 전력 레벨들, 내열성, 처리 사이클 예산, 입력 데이터 레이트들, 출력 데이터 레이트들, 메모리 리소스들, 데이터 버스 속도들 및 다른 설계 또는 성능 제약들과 같은, 임의 수의 인자들에 따라 변할 수 있다.
서버(310)는, 예를 들어, 사용자 장비, 컴퓨터, PC(personal computer), 데스크톱 컴퓨터, 랩톱 컴퓨터, 노트북 컴퓨터, 넷북 컴퓨터, 태블릿, 스마트 폰, 내장형 전자기기, 게이밍 콘솔, 서버 어레이 또는 서버 팜, 웹 서버, 네트워크 서버, Internet 서버, 워크 스테이션, 미니-컴퓨터, 메인 프레임 컴퓨터, 슈퍼컴퓨터, 네트워크 어플라이언스, 웹 어플라이언스, 분산형 컴퓨팅 시스템, 멀티프로세서 시스템들, 프로세서-기반 시스템들, 또는 이들의 조합일 수 있는 컴퓨팅 디바이스의 일부일 수 있다. 따라서, 본 명세서에 설명되는 서버(310)의 기능들 및/또는 구체적인 구성들은, 적합하게 요구되는 바와 같이, 서버(310)의 다양한 실시예들에서 포함되거나 생략될 수 있다.
서버(310)의 컴포넌트들 및 피처들은 이산 회로, ASIC들, 로직 게이트들 및/또는 단일 칩 아키텍처들의 임의의 조합을 사용하여 구현될 수 있다. 추가로, 서버(310)의 피처들은 마이크로제어기들, 프로그램 가능 로직 어레이들 및/또는 마이크로프로세서들 또는 적합하게 적절하다면 전술한 것의 임의의 조합을 사용하여 구현될 수 있다. 하드웨어, 펌웨어 및/또는 소프트웨어 엘리먼트들은 집합적으로 또는 개별적으로 본 명세서에서 "로직(logic)", " 회로(circuit)" 또는 "회로(circuitry)"라고 지칭될 수 있다는 점이 주목된다.
일부 예들은 "일 예에서(in one example)" 또는 "예(an example)"라는 표현을 그들의 파생어들과 함께 사용하여 설명될 수 있다. 이러한 용어들은 그 예와 관련하여 설명되는 특정 피처, 구조, 또는 특성이 적어도 하나의 예에 포함된다는 점을 의미한다. 명세서의 다양한 위치들에서 "일 예에서(in one example)"라는 구문의 출현 모두가 반드시 동일한 예를 지칭하는 것은 아니다.
일부 예들은 "연결되는(coupled)" 및 "접속되는(connected)"이라는 표현을 그들의 파생어들과 함께 사용하여 설명될 수 있다. 이러한 용어들이 반드시 서로에 대한 동의어들로서 의도되는 것은 아니다. 예를 들어, "접속되는(connected)" 및/또는" 연결되는(coupled)"이라는 용어들을 사용하는 설명들은 2개 이상의 엘리먼트들이 서로 직접 물리적으로 또는 전기적으로 접촉하는 것을 표시할 수 있다. "연결되는(coupled)"이라는 용어는, 그러나, 2개 이상의 엘리먼트들이 서로 직접 접촉하고 있지는 않지만, 여전히 서로 협력하거나 상호 작용하는 것을 또한 의미할 수 있다.
본 개시 내용의 요약서는 독자가 기술적 개시 내용의 본질을 재빨리 확인할 수 있게 할 요약서를 요구하는, 37 C.F.R. Section 1.72(b)를 준수하도록 제공된다는 점이 강조된다. 이것은 청구항들의 범위 또는 의미를 해석하거나 또는 제한하는데 사용되지는 않을 것이라는 이해 하에 제시된다. 또한, 전술한 상세한 설명에서, 본 개시 내용을 간소화할 목적으로, 다양한 피처들이 단일 예에 함께 그룹화되는 점을 알 수 있다. 개시 내용의 이 방법은 청구되는 예들이 각각의 청구항에서 명백하게 나열되는 것보다 더 많은 피처들을 요구한다는 의도를 반영하는 것으로서 해석되지 않는다. 오히려, 다음의 청구항들이 반영하는 바와 같이, 발명 대상은 개시되는 단일 예의 모든 피처들 미만이다. 따라서, 다음의 청구항들은 발명의 상세한 설명에 이로써 포함되고, 각각의 청구항은 별개의 예로서 자립한다. 첨부된 청구항들에서, "포함하는(including)" 및 "여기서(in which)"라는 용어들은 "포함하는(comprising)" 및 "여기서(wherein)"라는 각각의 용어들의 평이한 영어 등가물들로서 각각 사용된다. 더욱이, "제1(first)", "제2(second)", "제3(third)" 등이라는 용어들은 단지 레이블들로서 사용되고, 자신들의 객체들에 대한 수치적 요건들을 부과하도록 의도되는 것은 아니다.
발명 대상이 구조적 피처들 및/또는 방법론적 행위들에 구체적인 언어로 설명되었더라도, 첨부된 청구항들에서 정의되는 발명 대상이 반드시 위에 설명된 구체적인 피처들 또는 행위들로 제한되는 것은 아니라는 점이 이해되어야 한다. 오히려, 위에 설명된 구체적인 피처들 및 행위들은 청구항들을 구현하는 예시적인 형태들로서 개시된다.

Claims (16)

  1. 하나 이상의 스토리지 노드- 각각의 스토리지 노드는 하나 이상의 스토리지 디바이스를 포함함 -를 포함하는 컴퓨팅 시스템에서, 방법으로서,
    스토리지 노드의 스토리지 디바이스로부터 등급 정보를 취득하는 단계;
    상기 등급 정보에 적어도 부분적으로 기초하여 상기 스토리지 디바이스를 스토리지 풀에 배정하는 단계; 및
    상기 배정되는 스토리지 풀 및 상기 등급 정보에 적어도 부분적으로 기초하여 상기 컴퓨팅 시스템에 대한 스토리지 정책을 자동으로 결정하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 스토리지 디바이스의 상기 등급 정보에 적어도 부분적으로 기초하여 상기 스토리지 디바이스에 대한 개별 스토리지 가중치들을 계산하는 단계를 포함하는 방법.
  3. 제2항에 있어서,
    상기 개별 스토리지 가중치들에 적어도 부분적으로 기초하여 상기 스토리지 디바이스에 대한 상대적 스토리지 가중치들을 계산하는 단계를 포함하는 방법.
  4. 제3항에 있어서,
    상기 상대적 스토리지 디바이스 가중치들에 적어도 부분적으로 기초하여 상기 스토리지 노드에 대한 스토리지 노드 가중치를 계산하는 단계를 포함하는 방법.
  5. 제4항에 있어서,
    상기 배정되는 스토리지 풀 및 상기 스토리지 노드 가중치에 적어도 부분적으로 기초하여 상기 컴퓨팅 시스템에 대한 스토리지 정책을 자동으로 결정하는 단계를 포함하는 방법.
  6. 제5항에 있어서,
    상기 스토리지 노드 가중치는 상기 스토리지 노드의 스토리지 디바이스들의 상대적 스토리지 디바이스 가중치들의 합을 포함하는 방법.
  7. 제1항에 있어서,
    상기 스토리지 정책에 따라, 어느 스토리지 노드들 및 스토리지 노드들 내의 어느 스토리지 디바이스들이 데이터를 저장하는데 사용되는지 자동으로 결정하는 단계를 포함하는 방법.
  8. 제1항에 있어서,
    상기 스토리지 풀의 타입은 캐시 풀, 낮은 레이턴시 풀, 저널링 풀, 성능 풀, 처리량 풀, 및 용량 풀 중 하나를 포함하는 방법.
  9. 제1항에 있어서,
    상기 스토리지 디바이스를 상기 스토리지 풀에 배정하는 단계는 상기 스토리지 디바이스 내의 메모리의 타입에 적어도 부분적으로 기초하여 상기 스토리지 디바이스를 상기 스토리지 풀에 배정하는 단계를 포함하는 방법.
  10. 시스템으로서,
    하나 이상의 스토리지 노드- 각각의 스토리지 노드는 하나 이상의 스토리지 디바이스를 포함함 -;
    상기 하나 이상의 스토리지 노드에 연결되는 서버- 상기 서버는 스토리지 노드의 스토리지 디바이스로부터 등급 정보를 취득하고; 상기 등급 정보에 적어도 부분적으로 기초하여 상기 스토리지 디바이스를 스토리지 풀에 배정하고; 상기 배정되는 스토리지 풀 및 상기 등급 정보에 적어도 부분적으로 기초하여 상기 시스템에 대한 스토리지 정책을 자동으로 결정하는 스토리지 관리 컴포넌트를 포함함 -
    를 포함하는 시스템.
  11. 제10항에 있어서,
    상기 스토리지 디바이스의 상기 등급 정보에 적어도 부분적으로 기초하여 각각의 스토리지 디바이스에 대한 개별 스토리지 가중치들을 계산하는 상기 스토리지 관리 컴포넌트를 포함하는 시스템.
  12. 제11항에 있어서,
    각각의 스토리지 디바이스의 상기 개별 스토리지 가중치들에 적어도 부분적으로 기초하여 각각의 스토리지 디바이스에 대한 상대적 스토리지 가중치들을 계산하는 상기 스토리지 관리 컴포넌트를 포함하는 시스템.
  13. 제12항에 있어서,
    상기 스토리지 노드에서의 스토리지 디바이스들의 상기 상대적 스토리지 디바이스 가중치들에 적어도 부분적으로 기초하여 각각의 스토리지 노드에 대한 스토리지 노드 가중치를 계산하는 상기 스토리지 관리 컴포넌트를 포함하는 시스템.
  14. 제13항에 있어서,
    상기 배정되는 스토리지 풀 및 상기 스토리지 노드 가중치에 적어도 부분적으로 기초하여 상기 시스템에 대한 스토리지 정책을 자동으로 결정하는 상기 스토리지 관리 컴포넌트를 포함하는 시스템.
  15. 적어도 하나의 머신 판독 가능 매체로서,
    시스템에 의해 실행되는 것에 응답하여 상기 시스템으로 하여금 제1항 내지 제9항 중 어느 한 항에 따른 방법을 수행하게 하는 복수의 명령어들을 포함하는 적어도 하나의 머신 판독 가능 매체.
  16. 장치로서, 제1항 내지 제9항 중 어느 한 항의 방법을 수행하기 위한 수단을 포함하는 장치.

KR1020190011082A 2018-03-02 2019-01-29 스토리지 디바이스들 사이의 개선된 데이터 배포의 방법 KR20190104876A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/910,933 2018-03-02
US15/910,933 US20190042089A1 (en) 2018-03-02 2018-03-02 Method of improved data distribution among storage devices

Publications (1)

Publication Number Publication Date
KR20190104876A true KR20190104876A (ko) 2019-09-11

Family

ID=65231636

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190011082A KR20190104876A (ko) 2018-03-02 2019-01-29 스토리지 디바이스들 사이의 개선된 데이터 배포의 방법

Country Status (4)

Country Link
US (1) US20190042089A1 (ko)
KR (1) KR20190104876A (ko)
CN (1) CN110221770A (ko)
DE (1) DE102019102317A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10726930B2 (en) * 2017-10-06 2020-07-28 Western Digital Technologies, Inc. Method and system for a storage (SSD) drive-level failure and health prediction leveraging machine learning on internal parametric data
CN109542352B (zh) * 2018-11-22 2020-05-08 北京百度网讯科技有限公司 用于存储数据的方法和装置
US11194473B1 (en) * 2019-01-23 2021-12-07 Pure Storage, Inc. Programming frequently read data to low latency portions of a solid-state storage array
CN112925472A (zh) * 2019-12-06 2021-06-08 阿里巴巴集团控股有限公司 请求处理方法、装置、电子设备及计算机存储介质
CN113419679B (zh) * 2021-06-18 2023-06-30 Oppo广东移动通信有限公司 存储装置、系统级芯片、电子设备及存储方法
CN113687782B (zh) * 2021-07-30 2023-12-22 济南浪潮数据技术有限公司 存储池时延确定方法、装置、电子设备及可读存储介质

Also Published As

Publication number Publication date
CN110221770A (zh) 2019-09-10
DE102019102317A1 (de) 2019-09-05
US20190042089A1 (en) 2019-02-07

Similar Documents

Publication Publication Date Title
KR20190104876A (ko) 스토리지 디바이스들 사이의 개선된 데이터 배포의 방법
US20240264938A1 (en) Address map caching for a memory system
GB2507410A (en) Storage class memory having low power, low latency, and high capacity
US10496533B1 (en) Allocation of overprovisioned blocks for minimizing write amplification in solid state drives
US20230088790A1 (en) Using a common pool of blocks for user data and a system data structure
CN116342365A (zh) 用于经由使用可用设备存储器扩展系统存储器的技术
US10929033B2 (en) Allocating variable media types of memory devices in a memory system
CN115905057A (zh) 存储器装置中用于媒体管理命令的高效缓冲器管理
CN113590023A (zh) 在多平面存储器装置的单独平面上存储区名称空间中的区
TWI617972B (zh) 記憶體裝置及方法
CN118511152A (zh) 存储器存取统计监测
CN115639951A (zh) 在存储器子系统中实施自动速率控制
KR20220132026A (ko) 메모리 디바이스의 다중 핀 구성
US20240028261A1 (en) Stack management in memory systems
US20230195350A1 (en) Resequencing data programmed to multiple level memory cells at a memory sub-system
US11693594B2 (en) Zone striped zone namespace memory
US11409599B2 (en) Managing probabilistic data integrity scans in workloads with localized read patterns
US11275680B2 (en) Profile and queue-based wear leveling of memory devices
EP4220414B1 (en) Storage controller managing different types of blocks, operating method thereof, and operating method of storage device including the same
US20230236737A1 (en) Storage Controller Managing Different Types Of Blocks, Operating Method Thereof, And Operating Method Of Storage Device Including The Same
US11861193B2 (en) Emulating memory sub-systems that have different performance characteristics
US12189943B2 (en) Cluster namespace for a memory device
US12073873B2 (en) Dynamic buffer limit for at-risk data
US11829618B2 (en) Memory sub-system QOS pool management
CN113946281A (zh) 存储器装置的基于温度的机载放置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application