KR20140088834A - 가변구조형 메모리 디바이스 - Google Patents

가변구조형 메모리 디바이스 Download PDF

Info

Publication number
KR20140088834A
KR20140088834A KR1020130161733A KR20130161733A KR20140088834A KR 20140088834 A KR20140088834 A KR 20140088834A KR 1020130161733 A KR1020130161733 A KR 1020130161733A KR 20130161733 A KR20130161733 A KR 20130161733A KR 20140088834 A KR20140088834 A KR 20140088834A
Authority
KR
South Korea
Prior art keywords
storage device
storage
host
configuration
request information
Prior art date
Application number
KR1020130161733A
Other languages
English (en)
Other versions
KR102087612B1 (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
Priority claimed from US13/733,309 external-priority patent/US20130185482A1/en
Priority claimed from US13/936,992 external-priority patent/US9239786B2/en
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20140088834A publication Critical patent/KR20140088834A/ko
Application granted granted Critical
Publication of KR102087612B1 publication Critical patent/KR102087612B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation

Landscapes

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

Abstract

스토리지 시템을 재구성하기 위한 예시적인 실시 예들은 스토리지 다바이스를 위해 사용자 요구 정보를 수신하고 상기 사용자 요구 정보로부터 상기 스토리지 디바이스를 위한 특성 세팅들 및 상기 스토리지 디바이스를 위한 디바이스 프로파일을 자동적으로 생성하는 단계; 상기 스토리지 디바이스를, 독립적인 행동 특징들을 갖는 하나 또는 그 이상의 논리적 디바이스들로 자동적으로 재구성하기 위해, 상기 특성 세팅들을 사용하는 단계를 포함할 수 있다. 다른 예시적인 실시 예들은 상기 스토리지 디바이스 및 상기 논리적 디바이스들 중 적어도 하나의 런타임 성능 데이터에 관하여 상기 스토리지 디바이스로부터 피드백을 수신하는 단계; 그리고 상기 런타임 성능 데이터가 상기 사용자 요구 정보를 충족시키지 못하는 판단에 응답하여, 상기 사용자 요구 정보를 만족시키기 위한 하나 또는 그 이상의 논리적 디바이스들의 구성을 동적으로 조정하는 단계를 더 포함할 수 있다.

Description

가변구조형 메모리 디바이스{RECONFIGURABLE MEMORY DEVICE}
본 발명은 스토리지 시스템에 관한 것이다.
현대의 스토리지 시스템들은 일반적으로 정적이고, 그것의 동작 특성이 제조 단계에서 정해지는 복수의 스탠드얼론(standalone) 스토리지 디바이스들을 포함한다. 소프트웨어(펌웨어)를 실행하는 프로세서(예를 들어, RAID 컨트롤러)는 영리하지 못한 스토리지 디바이스가 유닛으로써 동작할 수 있도록 하는 지능을 부여하는 것이 필요하다. 솔리드 스테이드 드라이브(SSD)와 같은 스토리지 디바이스는 소프트웨어 또는 펌웨어를 통해 제어될 수 있기 때문에, 사용자 환경에 따른 솔리드 스테이트 드라이브의 동작 특성을 제어하기 위한 노력이 있어왔다.
사용자 인증 테스트를 충족시키기 위한 전통적인 접근법들은 생산자가 각각의 고객을 위한 스토리지 디바이스들을 주문 제작하기 위해 막판 엔지니어링 프로세스들을 제공하는 것을 필요로 한다. 스토리지 디바이스들의 특징은 폭넓게 다양한 종류들로 이루어져 있으므로, 고객들은 일반적으로 스토리지 디바이스들의 새로운 모델이 채택될 때마다 그들의 소프트웨어 시스템을 재측정하기를 원한다. 그러나, 하나의 스토리지 디바이스를 위한 가정들은 종종 다른 디바이스에는 유효하지 않다. 결과적으로, 생산자의 기술비는 수많은 스토리지 디바이스들 및 고객들이 요구하는 주문 제작과 함께 증가하기 때문에, 전통적인 주문 제작 접근법들은 부분적으로 지속 가능성이 없다.
따라서, 고객들을 대신하여 스토리지 시스템 쉽게 재구성(reconfiguration) 할 수 있는 체계가 중요하다. 예를 들어, 삼성 매지션TM과 같은 솔리드 스테이트 디스크(SSD) 최적화 소프트웨어는 고객들의 시스템을 위한 SSD의 실행을 조정한다. 그러나, 고객들은 매우 제한된 최적화 옵션들을 갖고, 최적화 메트릭(metric)들은 사용자-지향적인 것과는 대조되는 디바이스-지향적이고, 그리고, 최적화는 제어되거나 정량화할 수 없다. 게다가, 스토리지 디바이스 특징들은 마모(wearing) 및 피로(fatigue)와 같은 스토리지 매체의 열화로 인한 타임 듀(time due)를 변화시킬 수 있다. 이것은 고객이 가져야 하는, 오작동이 사용자 단계에서 발생할 때까지 쉽게 감지될 수 없는 초기 가정을 위반할 수 있다.
가변구조형 스토리지 디바이스 프로세스의 다른 형태는 고객이 스토리지 디바이스의 환경을 설정하기 위한 개인적인 특성들을 선택할 수 있도록 허락한다. 이 접근법에서, 고객의 시스템을 새로운 스토리지 디바이스로 조정하는 대신에, 가변구조형 스토리지 디바이스는 스토리지 디바이스들을 고객이 유지 및 업그레이드 과정을 단순화하는 그들의 시스템들로 조정하는 것을 허락한다.
비록 가변구조형 스토리지 디바이스들이 동작 최적화에 있어서 더 나은 유연성을 제공할 수 있고 고객들이 주문 제작을 할 수 있도록 허락할 수 있다 하더라도, 몇 가지 도전들이 남아있다. 하나의 도전은 재측정 과정(recalibration process)은 결합하는 문제(combinatory problem)를 이룬다는 것인데, 그들의 복잡성은 주문제작하기 위한 스토리지 디바이스들의 수많은 특성들과 함께 기하급수적으로 증가한다. 달리 말하면, 현재의 접근법들은 특성 선택을 위한 체계적인 구성(systematic configuration)을 제공하지 않는다. 예를 들어, 만일 고객이 세 개의 특성들의 값을 변화시키면, 고객은 특성들의 조합이 스토리지 디바이스의 동작에 어떤 영향을 미치는지 판단하기가 어려울 수 있다.
관련된 도전은 고객에 의한 특성들의 선택은 그것 안에서 고객이 수동으로 특성들을 선택하는 소프트웨어 유저 인터페이스를 통하여 이루어진다는 것이다. 체계적인 구성(systematic configuration) 방법이나 동작 가이드라인 결과들이 없는 특성들의 수동 선택은 근본적으로 시행착오 과정이다.
마지막으로, 일반적인 재구성 과정은 스토리지 매체의 성능 저하에 기인하는 시간을 변화시키는 스토리지 디바이스 특성들의 효과를 설명하지 못한다. 그러한 변화들은 더 이상 유효하지 않은 특정한 사용자 환경을 위한 특성들의 원래의 선택을 제공할 수 있다.
따라서, 그것 안에서 어플리케이션에 의해 요청되는 스토리지 리소스들이 소프트웨어에 의해 정의되고 제공될 수 있는 소프트웨어-정의 스토리지(software-defined storage; SDS)의 트렌드는 좀 더 유연한 개량된 재구성 가능한 스토리지 프로세스를 자동적으로 필요로 한다.
본 발명의 목적은 사용자 요구들마다 다른 스토리지 디바이스들을 구성하기 위해 호스트에서 구성 소프트웨어를 수정할 필요성을 제거하는 재구성 과정을 제공하는데 있다.
본 발명의 실시 예에 따라 스토리지 디바이스를 재구성하기 위한 방법들 및 시스템들이 제공된다. 실시 예는, 스토리지 디바이스를 위한 사용자 요구 정보를 수신하고 상기 사용자 요구 정보로부터 상기 스토리지 디바이스를 위한 특성 세팅들(feature settings) 및 상기 스토리지 디바이스를 위한 디바이스 프로파일(device profile)을 자동적으로 생성하는 단계; 그리고 상기 스토리지 디바이스를 독립적인 행동 특징(behavioral characteristic)들을 갖는 하나 또는 그 이상의 논리 디바이스들 안으로 자동적으로 재구성하는 단계를 포함한다. 다른 실시 예는, 상기 스토리지 디바이스 및 상기 논리 디바이스들 중 적어도 하나의 런타임 성능 데이터(runtime performance data)에 관하여 상기 스토리지 디바이스로부터 피드백을 수신하는 단계; 그리고 상기 런타임 성능 데이터가 상기 사용자 요구 정보를 만족시키지 못하는 판단에 응답하여, 상기 사용자 요구 정보를 충족시키는 상기 하나 또는 그 이상의 논리적 디바이스들의 구성을 동적으로 조정하는 단계를 포함한다.
본 명세서에서 설명되는 방법 및 시스템에 따라, 예시적인 실시 예들은 사용자 요구들마다 다른 스토리지 디바이스들을 구성하기 위해 호스트에서 구성 소프트웨어를 수정할 필요성을 제거하는 재구성 과정(reconfiguration process)을 제공한다. 예시적인 실시 예들은 일반적인 방법들과는 대조되는데, 그것에서는 호스트에서의 구성 소프트웨어는 다른 스토리지 디바이스들을 주문제작하기 위해 수정될 필요가 있다. 게다가, 예시적인 실시 예들은 사용자 요구 정보를 특성 세팅들로 자동적으로 전환시키기 때문에, 사용자가 특성의 조합들을 수동으로 선택할 필요성은 스토리지 디바이스를 재구성할 때 소멸된다.
본 발명의 실시 예에 따르면, 사용자 요구들마다 다른 스토리지 디바이스들을 구성하기 위해 호스트에서 구성 소프트웨어를 수정할 필요성을 제거할 수 있는 재구성 가능한 스토리지 시스템을 제공할 수 있다.
본 발명의 사상의 특징들 및 유용성이 수반되는 도면과 후술될 상세한 설명으로부터 명확하게 설명될 것이다.
도 1은 본 발명의 실시 예에 다른 가변구조형 스토리지 시스템을 보여주는 블록도이다.
도 2a 및 2b는 스토리지 시스템을 재구성하기 위한 과정의 일 실시 예를 보여주는 도면이다.
도 3은 재구성 가능한 스토리지 디바이스를 구성하기 위한 과정을 상세하게 보여주는 흐름도이다.
도 4는 플랜을 생성하는 구성 플래너에 의해 실행되는 전환 과정의 일 실시 예를 보여주는 흐름도이다.
도 5는 재구성 가능한 스토리지 디바이스에서 구성 요소들의 처리 과정을 보여주는 흐름도이다.
도 6은 본 발명의 실시 예에 따른 구성 어드바이저의 실행 과정을 보여주는 흐름도이다.
도 7은 재구성 가능한 스토리지 시스템의 실시 예를 보여주는 블록도이다.
도면과 함께 설명되는 본 발명의 사상에 따른 실시 예들이 참조 부호를 통하여 자세히 설명된다. 후술하는 상세한 설명에서, 다양한 실시 예들이 발명의 이해를 돕기 위해 설명된다. 그러나, 본 기술이 속하는 분야에서 통상의 지식을 지닌 자는 이 상세한 설명들 없이도 발명을 실시할 수 있을 것이다.
동일한 것을 성취하기 위한 본 발명의 이익 및 특성들은 후술될 상세한 설명 및 첨부된 도면을 참조하여 쉽게 이해될 수 있을 것이다. 그러나, 본 발명의 사상은 다양한 형태로써 구현될 수 있고, 본 명세서에서 설명된 것에 한정되지 않을 것이다. 차라리, 이들 실시 예들은 본 발명이 속하는 기술 분야에서 통상의 지식을 지닌 자가 본 발명의 사상을 완전히 이해하고 실행할 수 있도록 하기 위해 제공된다. 그리고, 본 발명의 사상은 단지 첨부된 청구항들에 의해서 정해지지 않는다. 도면에서, 층들 및 영역의 두께는 명확한 설명을 위해 과장되게 표현된 것이다.
명세서(특히 후술될 청구항들)에서 사용되는 "a", "an", "the", 및 이와 유사한 같은 용어는, 달리 특별히 언급된 것이 없으면, 단일의 그리고 복수의 경우를 모두 커버할 수 있도록 사용된다. "포함하는", "구성되는", 그리고 "갖는"과 같은 용어는, 달리 특별히 언급된 것이 없으면, 다른 요소도 포함할 수 있도록 제약을 두지 않도록(open-ended) 기재되며, 거기에 한정되지 않는다.
본 명세서에서 언급되는 "요소(component)" 또는 "모듈(module)"과 같은 용어는 필드 프로그래머블 게이트 어레이(Field Programmable Gate Array; FPGA) 또는 응용 주문형 집적 회로(Application Specific Integrated Circuit; ASIC)와 같은 것들에 한정되지는 않고, 특정한 작업들을 실행하는 소프트웨어 또는 하드웨어 요소를 의미할 수 있다. 요소 또는 모듈은 자체주소를 가진 스토리지 매체(addressable storage medium)에 있을 수 있도록 구성될 수 있고, 하나 또는 그 이상의 프로세서들을 실행하도록 유리하게 구성될 수 있다. 따라서, 실시 예들을 거쳐 요소 또는 모듈은 소프트웨어 요소들, 목적-중심 (object-oriented) 소프트웨어 요소들, 클래스 요소들 및 작업 요소들, 처리, 기능, 속성, 절차, 서브루틴(subroutine), 프로그램 코드의 세그먼트(segment), 드라이버, 펌웨어, 마이크로코드, 회로망, 데이터, 데이터 베이스, 데이터 구조, 테이블, 어레이, 그리고 그 변형들과 같은 요소들을 포함할 수 있다. 요소들 및 요소들 또는 모듈들을 위해 제공되는 기능은 더 적은 요소들 및 요소들 또는 모듈들로 조합되거나, 추가적인 요소들 및 요소들 또는 모듈들로 더 분리될 수 있다.
달리 정의되지 않으면, 본 명세서에서 사용되는 기술적, 과학적 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 지닌 자에 의해 공통적으로 이해될 수 있도록 동일한 의미를 갖는다. 본 명세서에서 사용되는 모든 예들 또는 예시적인 용어들은 단지 본 발명을 더 상세하게 설명할 수 있도록 의도된 것이고, 다른 특정한 것이 없으면 본 발명의 범위를 한정하는 것은 아니다. 나아가, 달리 정의되지 않으면, 일반적으로 사용되는 사전에 정의되는 모든 용어들은 과도하게 해석되지 않는다.
도 1은 본 발명의 실시 예에 다른 가변구조형 스토리지 시스템을 보여주는 블록도이다. 시스템(100)은 가변구조형 스토리지 디바이스(102)에 연결된다. 한 실시 예에서, 호스트(100)의 기본 요소는 적어도 하나의 프로세서(104), 메모리(106), 그리고 호스트 컨트롤러(108)를 포함할 수 있다. 한 실시 예에서, 가변구조형 스토리지 디바이스(102)의 기본 요소는 스토리지 컨트롤러(111), 메인 스토리지(1120), 적어도 하나의 프로세서(114), 그리고 메모리(116)를 포함할 수 있다.
메인 스토리지(112)는 본래의 스토리지 기능들을 구현하고, 가변구조형 디바이스(102)를 위한 스토리지 공간을 제공한다. 메인 스토리지(112)는 (예를 들어, 솔리드 스테이트 드라이브(SSD)로써 구현되는) 플래시, PCRAM, RRAM, STT-RAM, 및 그와 유사한 것들과 같은 불휘발성 메모리, 그리고 플래시 변환 계층(Flash Translation Layer; FTL), 가비지 콜렉터(Garbage Collector; GC), 및 그와 유사한 것들과 같은 스토리지 관리 펌웨어(미도시)를 포함할 수 있으나, 이에 한정되지 않는다. 하나 또는 그 이상의 논리적 디바이스들(121)은 메인 스토리지(112)의 일부분을 차지할 수 있다. 논리적 디바이스들(121)을 위해 할당되는 실제의 물리적 스토리지 공간은 공간 효율성 요구들에 의존한다. 씬-프로비져닝(thin provisioning)을 갖는 논리적 디바이스는 씨크-프로비져닝(thick provisioning)을 갖는 논리적 디바이스보다 더 적은 물리적 저장 공간을 차지할 수 있다.
일반적인 동작 동안, 호스트 컨트롤러(108)는, 읽기/쓰기 동작과 관련된 커맨드들(124)을, 호스트(100)가 메인 스토리지(112)에 저장된 콘텐츠를 처리하거나 새로운 콘텐츠를 메인 스토리지(112)에 저장할 수 있도록 허락하기 위해 스토리지 컨트롤러(111)로 출력할 수 있다. 여기서, 호스트(100)에서 콘텐츠를 처리하는 것은 이미지 및 문서의 형태로 콘텐츠를 표시하고, 오디오 및/또는 비디오의 형태로 콘텐츠를 실행하고, 그리고 프로세서(104)와 같은 기능적 유닛에 컴퓨터 프로그램과 같은 어플리케이션의 형태로 콘텐츠를 설치하거나 실행하는 것을 포함할 수 있다.
스토리지 컨트롤러(111)는 호스트 컨트롤러(108)로부터 콘텐츠와 관련된 명령을 수신하고, 수신된 명령에 따라 메인 스토리지(112)에 저장된 콘텐츠(126)를 제어한다. 예를 들어, 수신된 명령이 읽기 명령일 때, 스토리지 컨트롤러(111)는 메인 스토리지(112)에 저장된 콘텐츠(126)를 호스트(100)로 제공할 수 있고, 수신된 명령이 쓰기 명령일 때, 스토리지 컨트롤러(111)는 호스트(100)로부터 새로운 콘텐츠(126)를 수신하고 수신된 콘텐츠를 메인 스토리지(112)에 저장할 수 있다.
나아가, 비록 호스트 컨트롤러(108) 및 스토리지 컨트롤러(111)가 분리된 요소들로 도시되었다고 하더라도, 다른 실시 예에서, 호스트 컨트롤러(108) 및 스토리지 컨트롤러(111)는 하나의 집적된 유닛으로 구현될 수 있다.
전술된 바와 같이, 일반적인 스토리지 장치들이 갖는 문제점은 그들은 내장된 지능(built-in intelligence)을 갖는 고정된 디바이스들이라는 점이다. 결과적으로, 고객 요구를 위한 스토리지 디바이스를 주문제작하는 과정은 비용과 시간이 많이 들 수 있다.
본 발명의 실시 예에 따라, 가변구조형 스토리지 디바이스(102)가 구성 요소(configuration component)(118), 특성 셋(feature set)(120), 그리고 디바이스 프로파일(device profile)(122)과 함께 제공되는 반면, 호스트(100)는 구성 변형 요소(configuration translation component)(110)와 함께 제공될 수 있다. 일 실시 예에서, 호스트(100)에 있는 구성 변형 요소(110)는 가변구조형 스토리지 디바이스(102)를 위한 행동 특성들을 설명하는 사용자 요구들을 수신하고 이를 가변구조형 스토리지 디바이스(102)를 위한 행동 특성들을 위한 특성 세팅들(features settings)을 정의하는 구성 커맨드들(128)로 변환할 수 있다. 한 실시 예에서, 구성 변형 요소(110)는 구성 플래너(configuration planner)(136), 구성 어드바이저(configuration advisor)(138), 그리고 디바이스 프로그래머(device programmer)(140)와 같은 분리된 요소들에 의해 실행될 수 있다.
결과적으로, 가변구조형 스토리지 디바이스(102)에 있는 구성 요소(118)는 구성 커맨드들(128)을 수신하고 구성 커맨드들(128)에 대응하는 특성 세팅들을 실행하고, 그렇게 함으로써 가변구조형 스토리지 디바이스(102)의 행동 특성들을 자동적으로 구성할 수 있다. 그 후에, 메인 스토리지(112)가 세팅된 행동 특성들에 따라 구동되는 동안, 스토리지 컨트롤러(110)는 콘텐츠(126)를 호스트(100)로 전송하거나 호스트(100)로부터 수신할 수 있다.
본 발명의 다른 실시 예에서, 가변구조형 스토리지 디바이스(102)의 동작 동안, 구성 변형 요소(110)은 가변구조형 스토리지 디바이스(102)의 동작 특성들에 관하여 가변구조형 스토리지 디바이스(102)로부터 피드백(130)을 수신할 수 있고, 피드백(130)에 기초하여 구성 커맨드들(128)(그리고 결과적으로 특성 셋)을 조정할 수 있다.
한 실시 예에서, 구성 변형 요소(configuration translation component)(110) 및 구성 요소(configuration component)(118)는 소프트웨어 요소들로 구현될 수 있다. 다른 실시 예에서, 요소들은 하드웨어와 소프트웨어의 조합으로서 구현될 수 있다. 비록 구성 변환 요소(110)와 구성 요소(118)가 단일의 요소들로 도시되었다 하더라도, 각각의 기능은 그보다 적거나 많은 수의 모듈들/요소들로 결합될 수 있다. 예를 들어, 한 실시 예에서, 스토리지 컨트롤러(110) 및 호스트 컨트롤러(108)는 하나의 집적된 요소로써 또는 분리된 요소들로써 호스트(100)에 구현될 수 있다.
또한, 사용자 요구 정보(123)는 호스트(100)에 입력되는 것으로 도시되었으나, 다른 실시 예에서, 가변구조형 스토리지 디바이스(102)는 사용자 요구 정보(123)를 수신하고 사용자 요구 정보(123)를 호스트(100)로 제공하도록 채택될 수 있다.
본 발명의 실시 예에 따른 가변구조형 스토리지 시스템(reconfigurable storage system)은 고객부터 기업에 이르기까지 넓은 범위의 스토리지 마켓에 적용될 수 있는데, 이는 (데스크탑, 랩탑, 워크스테이션, 서버, 및 이와 유사한 것들과 같은) 단일의 스탠드얼론(standalone) 장비, 스토리지 어레이(storage array), 소프트웨어-정의 스토리지(Software-Define Storage; SDS), 어플리케이션-스페시픽 스토리지(application specific storage), 가장 장치(Virtual Machine; VM), 가상 데스크탑 인프라스트럭쳐(Virtual Desktop Infrastructure; VDI), 콘텐트 디스트리뷰션 네트워크(Content Distribution Network; CDN), 및 이와 유사한 것을 위한 디스크에 적용될 수 있다.
예를 들어, 한 실시 예에서, 가변구조형 스토리지 디바이스(102)는 PCMCIA(personal computer memory card international association), CF(compact flash), SM, SMC(smart media card), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMC-micro), SD 카드(SD, miniSD, microSD, SDHC), UFS(universal flash storage) 장치, 및 이와 유사한 것을 형성하기 위한 하나의 반도체 장치에 집적될 수 있다.
예를 들어, 한 실시 예에서, 메인 스토리지 파트(112)는 복수의 불휘발성 메모리 칩들(즉, 복수의 플래시 메모리들)로 구성될 수 있다. 다른 실시 예로써, 메인 스토리지 파트(112)는 플래시 메모리 칩들 대신에 다른 타입의 불휘발성 메모리 칩들(예를 들어, PRRAM, FRAM, MRAM 등)로 구성될 수 있다. 대신에, 메인 스토리지 파트(112)는 휘발성 메모리(즉, DRAM 또는 SRAM)들로 형성될 수 있고, 둘 또는 그 이상의 종류의 메모리들이 혼합된 형태를 가질 수 있다.
도 2a 및 2b는 스토리지 시스템을 재구성하기 위한 과정의 실시 예를 보여주는 흐름도이다. 도 2a는 사용자의 요구들마다 가변구조형 스토리지 디바이스(reconfigurable storage device)를 재구성하기 위한 구성 과정을 보여주는 흐름도이다. 도 2b는 가변구조형 스토리지 시스템(reconfigurable storage system)의 동작 동안 가변구조형 스토리지 디바이스(102)를 구성하기 위한 과정을 보여주는 흐름도이다.
도 2a를 참조하면, 과정은 구성 변형 요소(configuration translation component)(110)에 의해 스토리지 디바이스를 위한 사용자 요구 정보(123)를 수신하고, 사용자 요구 정보로부터 스토리지 디바이스를 위한 특성 세팅들 및 스토리지 디바이스를 위한 디바이스 프로파일을 자동적으로 생성함으로써 시작할 수 있다(단계 200). 그 후, 구성 요소(118)는 스토리지 디바이스를 독립적인 행동 특성들을 갖는 하나 또는 그 이상의 논리적 디바이스들(121) 안으로 자동적으로 재구성하기 위한 특성 세팅들을 사용한다(단계 202).
도 2b를 참조하면, 가변구조형 스토리지 시스템의 동작 동안 가변구조형 스토리지 디바이스(102)를 구성하기 위한 과정이 도시된다. 이 실시 예에서, 구성 변형 요소(110)는 스토리지 디바이스 및 논리적 디바이스들 중 적어도 하나의 런타임 성능 데이터(134)에 관하여 스토리지 디바이스로부터 피드백(130)을 수신한다(단계 204). 런타임 성능 데이터가 사용자 요구 정보를 만족시키지 못하는 판단에 응답하여, 구성 변형 요소(110)는 사용자 요구 정보를 만족시키기 위해 하나 또는 그 이상의 논리적 디바이스들의 구성을 동적으로 조정한다(단계 206).
가변구조형 스토리지 시스템의 한 이점은, 예시적인 실시 예들은 스토리지 디바이스들의 특이성들 및 재구성 복잡성을 추출할 수 있기 때문에, 새로운 가변구조형 디바이스들을 넘어서 구성 변경 요소(110)의 스토리지 관리(즉, 유저 소프트웨어)가 단순화될 수 있다는 것이다. 다른 이점은, 유저 소프트웨어는 사용자 요구들마다 가변구조형 스토리지 디바이스들로부터 그 자신의 논리적 디바이스를 동적으로 정의하고 생성할 수 있기 때문에, 새로운 가변구조형 스토리지 디바이스들을 사용하는 유저 소프트웨어는 스토리지 디바이스들의 모델에 상관없이 사실상 일정하게 머무를 수 있다는 것이다.
다시 도 1을 참조하여, 본 발명의 다른 실시 예에 따라, 사용자 요구 정보(123)는 다른 특성들을 위한 실제의 값들과는 대조적으로, 가변구조형 스토리지 디바이스(102)의 행동 특성들의 하이-레벨 디스크립션(high-level description)을 포함할 수 있다. 한 실시 예에 따라, 하이-레벨 디스크립션은 가변구조형 스토리지 디바이스(102)를 위한 서비스 레벨 동의(service level agreement; SLA)를 포함할 수 있다. SLA들은 고객과 생산자와 같은 두 당사자들 사이에서 공통으로 체결된 서비스 계약들이다.
다른 실시 예에 따라, 하이-레벨 디스크립션은 서비스 품질(Quality of Service; QoS) 요구들을 더 포함할 수 있는데, 그것은 한 실시 예에서 SLA의 일부분일 수 있다. 그러나, 다른 실시 예에서, 만일 사용자가 단지 성능 측면에만 관심이 있다면, QoS는 SLA과 분리되어 있을 수 있다. 실시 예들에서 QoS들은 사용자의 상세한 성능 기대를 정의할 예정인 레이턴시(latency), IOPS, 밴드위드스(bandwidth), 지터(jitter), WAF/RAF에 관한 스토리지 디바이스의 성능 특성들을 포함할 수 있다. 예를 들어, 가상의 디바이스가 생성된 후, 단지 새로운 논리적 디바이스를 생성하는 것 대신에 QoS를 조정하는 것이 바람직할 수 있다. 본 명세서에서 설명되는 바와 같이 SLA 및 QoS를 사용하여 가변구조형 스토리지 디바이스(102)를 자동적으로 구성하는 것은 정량적인 방법에 조예가 깊은 구성을 야기한다.
한 실시 예에서, SLA는 XML 포맷으로 표현되는 속성들의 어떠한 조합을 위한 스펙(specification)들을 포함할 수 있다. 속성은 레이턴시, IOPS, 또는 용량(capacity), 어드레싱 모드(addressing mode), 보호(protection)와 같은 비-성능 특성과 같은 스토리지 디바이스의 성능 특징들(QoS)일 수 있다. 커미트먼트(Commitment)는 동작들의 QoS 충족 비율의 평균 퍼센티지이다. 반응은 호스트가 QoS 위반의 경우에 예상하는 것이다. 용량 스펙(capacity specification)은 데이터 공간 및 공간 절약의 양을 명시할 수 있다. 용량은 디바이스에 할당된 실제의 스토리지 공간이 아닌, 사용자 공간에 있는 데이터의 양을 나타낼 수 있다. 이 경우에, 용량 스펙은 이것을 구현하기 위해 디바이스가 실제로 사용하는 메커니즘에 독립적이다. 그러나, 필요한 것은 데이터의 양이 사용자 레벨에 저장될 수 있다는 것을 보장하는 것이다. 예를 들어, 씨크 프로비져닝(thick provisioning) 기술을 채택한 디바이스는 리퀘스트가 허락되었을 때 실제의 공간을 할당한다. 반면에, 씬 프로비져닝(thin provisioning) 기술을 채택한 디바이스는 공간을 미리(up front) 할당하지 않을 수 있다. 마찬가지로, 오버-커미트먼트(over-commitment), 압축(compression), 디듀플리케이션(deduplication)과 같은 공간 절약 특성을 갖춘 디바이스가 할당하는 실제의 물리적 공간은, 사용자가 요청하는 데이터 공간에 비해 많이 작을 수 있다.
어드레싱 모드 스펙(addressing mode specification)은 방법을 명시할 수 있는데, 그 방법에서 데이터는 스토리지에 어드레스(바이트-어드레서블 (byte-addressable), 워드-어드레서블 (word-addressable), 그리고/또는 블록-어드레서블(block-addressable)) 될 수 있다. 예를 들어, PCIe (Peripheral Component Interconnect express) 디바이스는 블록-어드레서블 할 뿐만 아니라 바이트-어드레서블 일 수 있다. 유사하게, 시스템을 구동하는 단일의 어드레스 공간은 블록-어드레서블 디바이스를 넘어 바이트 어드레싱(byte addressing)을 에뮬레이트(emulate)할 수 있다. QoS는 특정한 어드레싱 모드의 맥락에서 이해될 수 있다.
보호 스펙(protection specification)은 보안 및 억세스 제어를 명시할 수 있다. 디바이스는 암호화를 지원할 수 있고, 사용자는 그것의 보안 요구들마다 특정한 암호화 알고리즘(예를 들어, 128 비트 RSA, 256 AES)을 사용할 수 있다. 사용자는, 데이터가 삭제되었을 때, 회복 불가한 사용자의 위험을 갖춘 데이터의 안전한 삭제를 필요로 할 수 있다. 게다가, 사용자는 디바이스 레벨에서 리드-온리(read-only), 라이터블(writable), 라이트-원스(write-once)와 같은 억세스 제어를 정의할 수 있다. 예를 들어, 시스템의 복구 이미지는 라이트-원스 논리적 디바이스에 저장될 수 있다.
성능 스펙(performance specification)은 사용자가 디바이스를 위한 자세한 성능 요구들을 가질 수 있도록 레이턴시(latency), 쓰루풋(throughput), 밴드위드쓰(bandwidth) 그리고/또는 IOPS(input/output operations per second) 측정을 명시할 수 있다. 예를 들어, 주문형 비디오(video-on-demand) 서버에 있는 비디오 칩들을 저장하기 위해 사용되는 스토리지 디바이스들은 높은 순차적인 읽기 성능을 필요로할 수 있다. 반면에, 메타데이터를 관리하기 위해 사용되는 스토리지 디바이스들은 높은 IOPS (그리고 낮은 레이턴시)를 필요로 할 수 있다.
예시적인 SLA들은 다음을 포함할 수 있다.
Example 1) <sla>
<device_name>vol1<1/device_name>
<device_type>logical</device_type>
<capacity>100GB</capacity>
<space_management>thick</space_management>
<address_mode>byte</address_mode>
<qos>
<latency>
<operation>read|write</operation>
<unit>4KB</unit>
<max>10ms</max>
</latency>
<commit>
<window>1h</window>
<threshold>99.9%</threshold>
</commit>
<react>notification</react>
</qos>
<qos>
<iops>
<ratio>50:50</ratio>
<unit>4KB</unit>
<min>1K</min>
</iops>
<commit>
<window>1h</window>
<threshold>99.9%</threshold>
</commit>
<react>notification</react>
</qos>
</sla>
전술된 예에서, 사용자는 바이트-어드레서블인 100GB 디바이스에 관심이 있을 수 있다. 게다가, 4KB 페이지 읽기 레이턴시는 10ms보다 작아야 하고, 4KB 쓰기 레이턴시도 10ms보다 작아야 한다. 마지막으로 디바이스의 IOPS는 적어도 1K이어야 한다.
Example 2) <sla>
<device_name>vol2</device_name>
<device_type>logical</device_type>
<capacity>200GB</capacity>
<protection>secure_erase</protection>
<qos>
<latency>
<operation>write</operation>
<unit>4KB</unit>
<max>50ms</max>
</latency>
</qos>
</sla>
Example 3) <qos>
<device_name>vol1</device_name>
<latency>
<operation>read</operation>
<average>1ms</average>
<error>5%</error>
</latency>
</qos>
가변구조형 스토리지 디바이스(102)는 본 명세서에서 특성 셋(feature set)(120)으로 언급된 복수의 동작 특성(operational feature)들을 더 포함할 수 있다. 한 실시 예에서, 특성 셋(120)은, 소모적이지 않은, 하드웨어 동작(예를 들어, 클럭 주파수, 오버-프로비져닝 비율(over-provisioning ratio)), 커맨드 스케쥴 정책(command scheduling policy)(예를 들어, 리드 오버 라이트(read over write), 랜덤 억세스 오버 시퀀셜 억세스(rnadom access over sequential access), 스몰 리퀘스트 오버 빅 리퀘스트(small request over big request), 스케쥴링 알고리즘(scheduling algorithm), 리드 오버(read over) GC, 논리적 디바이스 특성들(예를 들어, 용량, 큐(queue) 길이, 타임아웃 제어, 보호), 논리적 주소를 물리적 주소로 맵핑하는 정책(예를 들어, 페이지 맵핑, 블록 맵핑, 히이브리드 맵핑), 백그라운드 작업 실행 정책(background job execution policy)(예를 들어, 가비지 컬렉션 알고리즘(garbage collection algorithm), 가비지 컬렉션의 주기 및 빈도, 백그라운드 TRIM, 백그라운드 컴팩션(background compaction)) 등을 포함할 수 있다.
구성 변형 요소(configuration translation component)(110)는 사용자 요구 정보(123)를 수신할 수 있고, 구성 변형 요소(110)는 특정한 특성들을 위한 값들을 명시할 수 있을 뿐만 아니라, 사용자 요구 정보(123)를, 특성 셋(120)에서 특정한 특성들을 인에이블/디스에이블 시키는데 사용될 수 있는 특성 셋들로 전환시킬 수 있다. 특성의 효과는 모든 논리적 디바이스들(121)에 대해 전반적(global)이거나, 특정한 논리적 디바이스에 대해 국소적(local)일 수 있다. 예를 들어, 디바이스의 동작 주파수의 조정은 전반적일 수 있는데, 그것은 논리적 디바이스들의 큐(queue) 길이의 증가가 디바이스에 국한되는 동안 모든 논리적 디바이스들(121)의 동작을 변화시킬 수 있다.
본 발명의 실시 예에 따르면, 구성 변형 요소(110)는 사용자 요구 정보(123) 및 디바이스 프로파일(122) 모두에 기초하여 특성 세팅들을 발생시킬 수 있다. 한 실시 예에서, 디바이스 프로파일(122)은 스토리지 디바이스, 성능 모델들(132), 및 런타임 성능 데이터(134)에 특정한 성능 범위들(performance ranges)(131)(예를 들어, 조정가능한 클럭 주파수의 범위)을 포함할 수 있다. 런타임 성능 데이터(134)는 동작 동안 디바이스에 의해 측정되는 런타임 성능 통계를 포함할 수 있다.
본 발명의 한 실시 예에 따르면, 성능 모델들(performance models)(132)은 디바이스 성능과 연관성을 갖는 가변구조형 스토리지 디바이스(102)의 특성들로 생성되거나 이에 연관될 수 있다. 한 실시 예에서, 성능 모델들(132)은 개인적 특성들 및/또는 특성 세팅들의 조합들을 위한 수학적 모델들(예를 들어, 선형, 다항식, 로그, 익스포넨셜 또는 계단 함수), 및/또는 QoS를 측정하기 위해 제어되는 환경에서 측정된 이상적인 성능을 포함할 수 있다.
아래의 표 1은 예시적인 특성 셋(120) 및 관련된 성능 모델들을 보여준다. 본 발명에서의 모델들은 예시적이고 벤더(vendor)들 및 디바이스들에 의존한다.
특성 효과 성능 모델
클럭 주파수 IOPS 모델 W (예, 선형)
큐 사이즈 IOPS 모델 X (예, 로그)
IOPS/레이턴시 모델 Y (예, 반전 다항식)
오버-프로비져닝 레이턴시 모델 Z (예, 로그)
타임아웃 N/A 상수
한 실시 예에서, 디바이스의 성능 특징(characteristic)들을 변화시킬 수 있는 어떤 특성(feature)들은, 만일 모델이 실현 가능하지 않다면, 관련된 성능 모델(132) 및/또는 이상적인 성능 기준 표(performance reference table)들을 가질 수 있다. 한 실시 예에서, 구성 변형 요소(110) 또는 구성 요소(118) 중 어느 하나는 사용자 요구 정보(123)가 가변구조형 스토리지 디바이스(102)에 의해 만족될 수 있는지 여부를 판단하기 위한 디바이스 프로파일(122) 및/또는 성능 모델들(132)을 사용할 수 있다. 예를 들어, 사용자는 물리적 디바이스의 클럭율(clock rate)을 증가시킴으로써 동작 시간의 응답 시간을 개선할 수 있다. 그러나, 디바이스의 조정될 수 있는 클럭율은 제한되어 있다. 만일, 디바이스가 이미 최대의 클럭율에 도달하였다면, 클럭 조정 특성은 레이턴시 시간을 개선하기 위해 사용될 수 있다. 유사하게, 만일 클럭율로의 IOPS가 특정한 크기로 선형 함수로써 모델링 될 수 있다면, 예를 들어, 클럭율이 얼마나 많이 증가할 수 있는지 판단할 수 있다.
한 실시 예에서, 성능 모델들(132)를 포함하는 디바이스 프로파일(122)은, 예를 들어, 가변구조형 스토리지 디바이스(102)에 의해 구성 변형 요소(110)로 보고됨으로써, 구성 변형 요소(110)에 이용 가능하도록 만들어질 수 있다. 다른 실시 예에서, 디바이스 프로파일(122)은 호스트(100)에 저장되거나, 또는 호스트(100) 및/또는 가변구조형 스토리지 디바이스(102)에 의해 억세스 가능한 원격지에 저장될 수 있다. 다른 실시 예에서, 비록 성능 모델들(132)이 디바이스 프로파일(122)의 일부분으로써 저장되는 것으로 도시되었다 하더라도, 성능 모델들(132)은 디바이스 프로파일(122)로부터 분리되어 저장될 수 있다.
만일 가변구조형 스토리지 디바이스(102)의 벤더가 호스트(100)로 디바이스 프로파일(122)을 드러낼 수 있다면, 호스트(100)에 있는 구성 변형 요소(110)는 성능 범위들(131), 성능 모델들(132), 그리고 런타임 성능 데이터(134)에 영향을 줄 수 있다. 그렇지 않으면, 구성 변형 요소(110)는 가변구조형 스토리지 디바이스(102)의 각각의 타입을 위한 그 자신의 디바이스 프로파일(122)로의 억세스를 필요로 할 수 있다.
한 실시 예에서, 디바이스 프로파일(122)의 런타임 성능 데이터(134)는 ATA 스펙에 있는 SMART(Self-Monitoring, Analysis and Reporting Technology)와 같은 표준 인터페이스를 통하여 이용 가능한 전형적인 성능 지수(performance indices), 그리고 최소/최대/평균 읽기/쓰기 레이턴시, 최소/최대/평균 큐 길이 및 대기 시간, 최소/최대/평균 내부 IOPS, 읽기/쓰기 증폭비, 가비지 컬렉션(garbage collection) 시간, 타임아웃 횟수, 그리고 이와 유사한 것들과 같은 벤더 고유의 런타임 성능 지수(vendor-specific runtime performance metrics)를 포함할 수 있다.
한 실시 예에서, 런타임 성능 데이터(134)의 일부분으로써 저장되는 다른 정보는 디바이스 상태, 디바이스 백그라운드 작업 상태(job status), 그리고 호스트 백그라운드 작업 상태를 포함할 수 있으나, 이에 한정되지 않는다.
디바이스 상태는 가변구조형 스토리지 디바이스(102)의 하드웨어 및 소프트웨어에 관한 상태 정보를 포함할 수 있다. 이것은 스토리지 매체의 저하(웨어-레벨)의 정도, 수퍼 커패시터의 상태, 디바이스 온도, 오버-프로비져닝(over-provisioning) 비율 (또는 양), 그리고 이와 유사한 것들과 같은 전반적인 정보뿐만 아니라, 디바이스 크기, 디바이스 용량, 디바이스 이용, SLA, 특성 셋, 특성 세팅들, 데이터 단편화(fragmentation), 타임아웃, 보호, 어드레싱 모드, 등과 같은 국소적인 정보를 포함할 수 있다.
디바이스 백그라운드 작업 상태는 디바이스 정책들에 의해 판단되는 디바이스 백그라운드 작업들의 상태를 포함할 수 있으나, 백그라운드 TRIM, 백그라운드 가비지 컬렉션, 백그라운드 압축, 그리고 다른 것들과 같은 디바이스의 외부에 보이지 않는다.
호스트 백그라운드 작업 상태는 ATA 스펙에 있는 SMART 셀프-테스트 슈트(self-test suite)의 오프라인 테스트와 같은 호스트에 의해 트리거(trigger) 되는 디바이스 백그라운드 작업들의 상태를 포함할 수 있다.
도 1에 도시된 호스트(100)에 있는 구성 변환 요소(100)은 가변구조형 스토리지 디바이스(102)의 구성을 바꾸기 위해 SLA에 있는 하이-레벨 사용자 QoS 요구들을 디바이스-고유의 구성 커맨드들로 전환시킬 수 있다. 구성 변환 요소(110)는 디바이스-고유의 특성을 지닌(device-specific) 가변구조형 스토리지 디바이스(102)의 사용자 요구들(123)과 동작들/정책들 사이의 관계를 이해할 수 있다. 예를 들어, 스토리지 디바이스는 특정한 IOPS 요구를 만족시키기 위해 큰 큐 깊이를 갖춘 큐를 필요로 할 수 있다. 유사하게, 저가의 디바이스들은 짧은 읽기 레이턴시를 달성하기 위해 큰 큐 깊이 및 읽기 우선 순위를 갖춘 큐를 필요로 할 수 있다. 반면에 고가의 디바이스들이 읽기 우선 순위 없이 유사한 레이턴시를 달성할 수 있다.
도 3은 가변구조형 스토리지 디바이스(102)를 구성하기 위한 과정을 상세하게 보여주는 흐름도이다. 한 실시 예에서, 호스트(100)에서 실행되는 처리 단계들은 구성 변형 요소(110)에 의해 실행될 수 있고, 가변구조형 스토리지 디바이스(102)에서 실행되는 처리 단계들은 구성 요소(118)에 의해 실행될 수 있다.
과정은 디바이스 프로파일(122)을 수신함으로써 뿐만 아니라 SLA를 수신함으로써 호스트(100)에서 시작될 수 있다(블록 300). SLA의 각각의 QoS 요구를 위해, 가변구조형 특성 세팅들(configurable feature settings)이 가변구조형 스토리지 디바이스(102)의 디바이스 프로파일(122)에 기초하여 판단될 수 있고(블록 302), 특성 세팅들의 가능한 조합들이 SLA를 위해 판단될 수 있다(블록 304)(QoS). 특성 세팅들의 조합은 가변구조형 스토리지 디바이스(102)를 위한 디바이스 프로파일(122)에 기초하여 우선순위가 매겨질 수 있다(블록 306). 특성 세팅들의 각각의 조합을 위해, 플랜(plan)으로써 언급되는 한 세트의 구성 커맨드들이 생성될 수 있다(블록 308). 플랜 또는 플랜 각각의 구성 커맨드들은 트랜잭션 ID(transaction ID)와 함께 가변구조형 스토리지 디바이스(102)로 전송될 수 있다(블록 310). 플랜들이 생성되고 있는 동안 경쟁의 경우에 디바이스 상태가 변할 수 있기 때문에, 플랜은 디바이스에 있는 구성 요소에 의해 거절될 수 있다. 따라서, 호스트(100)는 플랜들 중 하나가 성공할 때 또는 아무것도 성공하지 못할 때까지 플랜들을 반복할 수 있다(블록 312).
과정은 호스트로부터 플랜을 수신함으로써 스토리지 디바이스(102)에서 시작될 수 있다(블록 320). 플랜은 디바이스 프로파일(122)에 기초하여 모든 특성의 이용가능성 및 적용가능성을 체크함으로써 인증될 수 있다(블록 322). 플랜의 모든 특성들은 세세하게 세팅되고, 그리고 실패의 경우에, 어떠한 변화들은 롤백(roll back) 될 수 있다(블록 324). 하나 또는 그 이상의 논리 디바이스들은 특성 세팅들에 기초하여 생성될 수 있다(블록 326). 디바이스 프로파일(122)은 플랜의 구성마다 업데이트 될 수 있다(블록 328). 그리고, 완료 응답은 호스트(100)로 전송될 수 있다(블록 330).
스토리지 디바이스(102)의 동작 동안, 플랜은 디바이스 프로파일, 특히 실시간 성능 통계(134)와 비교될 수 있다(블록 332). 디바이스 프로파일이 플랜을 충족시키지 못할 때, 통지가 피드백(130)으로써 호스트로 전송될 수 있다. 그 후, 구성 어드바이저(138)는 적당한 조정을 위해 구성을 안내하기 위해 피드백을 사용할 수 있다(도 6).
이하, 가변구조형 스토리지 디바이스(102)에 있는 구성 요소(118)뿐만 아니라, 도 1에 도시된 구성 변형 요소(110)를 이루는 세 개의 요소들 - 구성 플래너(configuration planner)(136), 구성 어드바이저(configuration advisor)(138), 그리고 디바이스 프로그래머(device programmer)(136)에 대해 상세하게 설명하기로 한다.
구성 플래너(136)는, 디바이스가 디바이스 프로파일(122)에 명시됨으로써 지원하고(예를 들어, 런타임 성능 데이터(134)) 권고로써 구성 플랜을 생성하는 정책들에 기초하여, 사용자 요구들(123)(예를 들어, SLA)을 수신하고 구성 커맨드들(128)을 포함하는 가능한 구성 플랜들을 분석할 수 있다. 특히, 구성 플래너(136)는 디바이스 프로파일(122)에 기초하여 SLA 스펙들을 특성 세팅들로 전환하는 전환 알고리즘(conversion algorithm)을 포함하고, 전환된 특성 세팅들을 벗어나 최적의 조합들을 판단하고, 그리고 최상의 조합들로부터 구성 커맨드들(128)을 포함하는 플랜을 생성할 수 있다.
예를 들어, 스토리지 디바이스가 다음과 같은 디바이스 프로파일을 갖는다고 가정하자: 리드 오버 라이트(read over write)를 우선순위 매기는 것은 읽기 레이턴시를 약 z% 향상시키고 큐의 깊이의 증가는 IOPS를 w% 비율까지 향상시키는 반면, 암호화 특성과 함께 레이턴시는 x% 증가하고 IOPS는 y% 감소한다. 만일 사용자가 암호와 옵션과 함께 동일한 성능까지 달성하기를 원한다면, 구성 플래너(136)는 읽기 우선순위를 인에이블하고, 그리고(또는) 암호화에 기인하는 레이턴시 증가를 상쇄(offset)하기 위한 큐 깊이를 증가시키는 것을 필요로 할 수 있다.
구성 플래너(136)는 사용자 요구들로부터 복수의 구성 플랜들을 생성할 수 있고, 구성 플래너(136)는 스토리지 디바이스(102)와 사용자 요구들의 성능 및 상태를 고려하는 최상의 플랜을 선택할 수 있다. 구성 플래너(136)는 가변구조형 스토리지 디바이스의 각각의 특성, 특성들 사이의 상관관계 및 반-상관관계(anti-correlation), 그리고 다른 것들 및 성능 모델들(132)을 평가하고 구성 플랜들을 생성하는 복수의 플래닝 알고리즘(planning algorithm)들과 관련된 복수의 성능 모델들(132)을 가질 수 있다. 만일 스토리지 디바이스(102)가 성능 프로파일들(132)로의 억세스를 제공한다면, 구성 플래너(136)는 성능 프로파일들(132)을 스토리지 디바이스(102)와 공유할 수 있다. 그렇지 않으면, 호스트(100)는 자신의 성능 프로파일들을 가질 수 있다.
일단 스토리지 디바이스(102)에 있는 구성 요소(configuration component)(118)가 플랜을 수신하면, 구성 요소(118)는 플랜이 디바이스가 지원할 수 있는 용량을 초과한다면 플랜을 거절할 수 있다. 예를 들어, 현재의 성능 특성들을 캡쳐할 때, 만일 디바이스가 성능 프로파일들을 제공하지 못하거나 디바이스가 어떤 딜레이나 레이스(delays or races)를 겪지 않는다면, 디바이스가 제공할 수 있는 성능 프로파일은 안정할 수 있다. 이 경우에, 디바이스는 비록 결정이 그것의 성능 프로파일(122)에 기초하였다고 하더라도 플랜을 이행하지 않을 수 있다. 그러나, 한 실시 예에서, 구성 요소(118)는 그 자신의 위험과 함께 플랜을 실행할 수 있다.
구성 플랜은 구성 커맨드들의 세트를 포함할 수 있는데, 그것들의 각각은 스토리지 디바이스(102)가 이해할 수 있는, 미리 정해진 벤더-고유의(vendor-unique) 커맨드 또는 표준 커맨드일 수 있다. 예를 들어, 구성 플래너(136)는 두 개의 커맨드들을 전송하는 것이 필요한데, 하나는 리드 오버 라이트(read over write)의 우선 순위를 부여하는 스케줄 정책을 위한 것이고, 다른 하나는 큐 사이즈를 증가시키는 큐 특성을 위한 것이다. 선택적으로, 구성 플래너(136)는 전체의 플랜을 위한 커맨드를 트랜잭션 ID와 함께 전송할 수 있다. 스토리지 디바이스(102)의 세팅들 및 상태에 의존하여, 구성 요소(118)는 구성 커맨드들 또는 플랜을 이행하거나 그러지 않을 수 있다.
도 4는 플랜을 생성하기 위한 구성 플래너(136)에 의해 실행되는 예시적인 전환 과정(conversion process)을 보여주는 도면이다. 과정은 블록들 300 내지 308에 대응한다. 일단 SLA가 수신되면(블록 400), 해결할 QoS 요구들이 더 있는지 여부가 판단될 수 있다(블록 402). 만일 그렇다면, 현재의 QoS 요구를 만족시킬 수 있는 특성 세팅들의 가능한 조합들이 확인된다(블록 404). 이 단계에서의 결정은 디바이스들에 의존하여 변화하지만 다음 단계들의 탐색 공간을 줄일 수 있는 고정된 정보들(static information) (또는 미리 정해진 지식)에 기초하는 일반적인 가이드라인이다. 그 후, 특성 세팅들의 조합이, 성능 프로파일에 기초하여, 흥미있는 특정한 디바이스와 함께 현재의 QoS 요구를 만족시킬 수 있는지 여부가 판단될 수 있다(블록 406). 만일 그렇지 않으면, 특성 세팅들의 다음의 조합이 얻어질 수 있다(블록 408). 그 후, 모든 가능한 조합들이 페일의 경우에 시도되는 것을 확인하기 위해 조합이 비어있는지 여부가 판단될 수 있다. 그리고, 만일 그렇다면, 에러가 발생한다(블록 412). 만일 조합이 비어있지 않다면, 과정은 블록 406에서 계속된다.
만일 특성 세팅들의 조합이 현재의 QoS 요구를 충족시키지 못한다면, 특성 세팅들의 조합은 이 디바이스의 모든 SLA들 및 QoS들을 위해 이미 선택된 구성들과 함께 조합될 수 있다(블록 414). 다시, 레이스의 경우에 디바이스 성능의 동적인 변화로 인하여, 조합은 작동하지 않을 수 있다. 만일 그렇다면, 특성 세팅들을 위한 구성 커맨드는 플랜에 더해지고(블록 416), SLA에서의 다음의 해결되지 않은 QoS가 얻어질 수 있다(블록 418). 더 이상 QoS 요구 과정이 없다고 판단되면(블록 402), 구성 플래너(136)는 가변구조형 스토리지 디바이스(102)에 있는 구성 요소(118)로 플랜을 출력할 수 있다(블록 420).
다시 도 1을 참조하여, 디바이스 프로그래머(140)는, 플랜 및 그에 맞춰서 스토리지 디바이스의 구성을 위한 구성 커맨드 채널(들)을 가로질러, 구성 플래너(136)에 의해 선택된 플랜을 수신하고 가변구조형 스토리지 디바이스(102)로 플랜을 전송할 수 있다. 디바이스 프로그래머(140)는 플랜의 실행에 관하여 가변구조형 스토리지 디바이스로부터 응답을 수신할 수 있다.
구성 플래너(136)는 (플랜 퀄리티에 의해 명령 받을 것 같은) 복수의 플랜들을 지시하기 때문에, 플랜이 가변구조형 스토리지 디바이스(102)와 함께 실제로 동작하는 것이 발견될 때까지, 디바이스 프로그래머(140)는 가변구조형 스토리지 디바이스(102)로부터의 부정 응답(negative response)의 경우에 플랜들을 반복할 필요가 있다. 만일 디바이스 프로그래머(140)가 (예를 들어, 구성 요소(118)로부터의 거절에 기인하는) 플랜 프로그래밍 동안 어떠한 에러들을 경험하면, 디바이스 프로그래머(140)는, 필요하다면, 플랜에 의해 만들어진 변화들을 롤백 시켜야 할 수 있다. 디바이스의 성능 프로파일 및 상태를 감시하고 수집하는 구성 커맨드들 및 피드백 채널(들)을 실행하는 구성 커맨드 채널(들)은 SATA, SAS, PCIe, 그리고 NVMe과 같은 표준 호스트 인터페이스일 수 있고, 또는 이 목적을 위해 고안된 특별한 인터페이스 일 수 있다.
도 5는 가변구조형 스토리지 디바이스(102)에 있는 구성 요소(118)의 처리 과정을 보여주는 흐름도이다. 이 과정은 도 2a의 블록 202에 대응하는데, 도 3의 블록들 320 내지 328뿐만 아니라 여기에서도, 가변구조형 스토리지 디바이스는 호스트(100)로부터의 특성 세팅들을 사용하도록 구성될 수 있다.
과정은, 구성 요소(118)가 특성 세팅들을 포함하는 적어도 하나의 구성 커맨드(128)를 포함하는 호스트(100)에서의 디바이스 프로그래머(140)로부터 플랜을 수신할 때, 시작될 수 있다(블록 500).
구성 요소(118)는 우선 디바이스 프로파일에 기초하여 플랜에 있는 특성 세팅들의 이용 가능성 및 적용 가능성을 체크할 수 있다(블록 502). 이용 가능성을 체크하는 것은, 스토리지 디바이스가 디바이스 프로파일(122)로의 플랜을 비교함으로써 특성 세팅들을 지원하는지 여부를 판단하는 것을 포함할 수 있다. 적용 가능성을 체크하는 것은, 디바이스 프로파일(122)에 기초하여 특성들의 조정의 척도를 측정하는 것을 포함할 수 있고, 그리고 디바이스 프로파일(122)에 기초하여 적용 가능한 경계 특성(applicable boundary feature)의 범위 내에서 특성들의 조정을 제어하는 것에 의할 수 있다.
플랜은 특성 세팅들의 이용 가능성 및 적용 가능성 모두 참(true)일 때, 인증될 수 있다(블록 504). 구성 요소(118)는 플랜을 실행할 수 있고(블록 506), 한 실시 예에서, 개별적인 구성 커맨드들을 실행하는 것을 포함하는 플랜들을 실행할 수 있다.
플랜이 유효하지 않을 때(블록 504), 구성 요소(118)는 플랜을 거절하고 플랜과 관련하여 만들어진 어떠한 변화들이라도 롤백 시키고, 그리고 통지(예를 들어, 에러 신호)를 구성 변형 요소(110)로 전송할 수 있다(블록 508). 예를 들어, 만일 현재의 클럭 주기가 최대의 클럭율로 이미 세팅되었다면, 클럭 스피드를 증가시키기 위해 시도하는 어떠한 플랜들이라도 거절될 것이다. 롤백은 레이스의 경우에 가변구조형 스토리지 디바이스의 성능 프로파일에 있어서 부정확의 근원이 될 수 있다.
만일 플랜의 실행이 성공하면(블록 510), 하나 또는 그 이상의 논리적 디바이스들이 스토리지 공간과 함께 관련된 플랜(즉, 실행된 구성 커맨드들)에 의해 가변구조형 스토리지 디바이스에 생성될 수 있다(블록 512). 마지막으로, 구성 요소(118)는 디바이스 프로파일(122)을 업데이트할 수 있다(블록 514).
예시적인 실시 예에 따라, 물리적 스토리지 디바이스는 복수의 논리적 디바이스들을 호스팅(host)할 수 있고, 그리고 각각의 논리적 디바이스(121)는 독립적으로 구성될 수 있고 그것 자신의 특징(characteristic)들을 가질 수 있다. 따라서, 예시적인 실시 예의 가변구조형 스토리지 시스템은 QoS-인식 논리적 디바이스들(121)을 생성할 수 있다. 논리적 디바이스들(121)은 장치-고유의 특성을 지닌 (일반적인 OS 파티션과 같은) 스페이스 파티션(space partition), (NVMe 표준과 같은) 멀티-큐(multi-queue), (Cloud PaaS와 같은) 멀티-테넌시(multi-tenancy), (SR-IOV과 같은) 가상화, 그리고 다른 것들과 같은 서로 다른 기술들에 응답할 수 있다.
예를 들어, 사용자가 단일의 디바이스에 두 개의 100GB 저장 공간들을 필요로 한다고 가정하자. 하나는 읽기-의도의 워크 로드(read-intensive workloads)를 위한 것이고, 나머지 하나는 쓰기-의도의 워크-로드(write-intensive workloads)를 위한 것이다. 멀티-큐들을 갖춘 스페이스 파티션 기능에 기초한 간단한 가변구조형 스토리지 디바이스와 함께, 사용자는 디바이스에 두 개의 파티션들(예를 들어, /dev/sda[1,2])을 생성할 수 있고, 그리고 읽기를 위한 논리적 디바이스로써 하나의 큐와 관련된 하나의 파티션(예를 들어, /dev/sda1)과 쓰기를 위한 논리적 디바이스로써 다른 큐와 관련된 다른 파티션(예를 들어, /dev/sda2)을 구성할 수 있다. 그 후, 디바이스는 쓰기에 기인하는 성능 감소 없는 읽기를 위해 논리적 디바이스를 통하여, 지속된 읽기 성능을 전달할 수 있다. 일반적인 스토리지 디바이스는 쓰기에 기인하는 가비지 컬렉션 때문에 이 시나리오를 갖는 긴 레이턴시를 드러낼 수 있다.
다시 도 1을 참조하여, 구성 어드바이저(configuration advisor)(138)는 피드백 채널(들)(미도시)을 통하여 피드백(130)으로써 디바이스 프로파일(122)을 수신할 수 있다. 데이터 전송 오버헤드를 감소시키기 위해, 호스트로 전송되는 실제의 정보는 변화할 수 있다. 구성 어드바이저(138)는 하나 또는 그 이상의 물리적 스토리지 디바이스들을 가로질러 하나 또는 그 이상의 논리적 디바이스들을 감시할 수 있고, 모든 사용자 요구(123)가 만족되는지 여부를 판단할 수 있다. 또한, 구성 어드바이저(138)는 SLA 위반의 경우에 디바이스 프로파일에 기초하여 플랜을 조정하기 위해 구성 플래너(136)를 알릴 수 있다.
도 6은 본 발명의 실시 예에 따라 구성 어드바이저(138)의 실행 과정을 보여주는 흐름도이다. 구성 어드바이저(138)는 피드백(130)으로써, 논리적 디바이스(121)의 런타임 성능 데이터(134)를 포함하는, 디바이스 프로파일(122)을 수집하고 전송하기 위한 구성 요소(118)를 기다릴 수 있다(블록 600). 한 실시 예에서, 호스트(100)는 가변구조형 스토리지 디바이스(102)에서 캡쳐된 입/출력 트레이스(input/output trace)들을 전송하기 위한 표준 인터페이스를 포함하는 하나 또는 그 이상의 피드백 채널(들)을 포함할 수 있다. 다른 실시 예에서, 피드백 채널(들)은 구성 어드바이저(138)가 가변구조형 스토리지 디바이스(102)의 성능을 감시하는 것을 허용하는 특별한 인터페이스를 포함할 수 있다.
디바이스 프로파일(122)을 수신하는 것에 응답하여, 구성 어드바이저(138)는 피드백(130)을 사용자 요구들(123)에 비교함으로써 가변구조형 스토리지 디바이스(102)의 성능을 감시할 수 있다(블록 602). 만일 구성 어드바이저(138)가 논리적 디바이스들의 런타임 성능 데이터(134) 중 어떠한 것도 사용자 요구(123)를 위반하지 않았다고 판단하면(블록 604), 가변구조형 스토리지 디바이스(102)의 프로그래밍은 완료된다(블록 606). 만일 논리적 디바이스들(121) 중 어느 것이 사용자 요구들(123)을 만족시키는데 실패하면, 구성 어드바이저(138)는 논리적 디바이스를 위한 새로운 구성 플랜을 제공하기 위해 구성 플래너(136)를 (예를 들어, 논리적 디바이스에 대응하는 런타임 성능 데이터(134)를 제공함으로써) 통지할 수 있다(블록 608). 그렇게 함으로써, 스토리지 디바이스(102)의 셋팅들 및 특징들을 동적으로 조정할 수 있다.
한 실시 예에서, 위반이 감지될 때, 통지는 단지 관심있는 논리적 디바이스들의 성능을 포함할 수 있기 때문에, 구성 어드바이저(138)는 새로운 플랜을 생성하기 위한 가장 최신의 그리고 종합적인 성능 데이터를 검색하기 위해 가변구조형 스토리지 디바이스(102)로부터 디바이스 프로파일(122)을 요청할 수 있다. 한 실시 예에서, 가변구조형 스토리지 디바이스(102)는 주기적으로 또는 런타임 성능 데이터(134)의 상태가 변할 때마다 디바이스 프로파일(122)을 능동적으로 보고할 수 있다. 예를 들어, 모든 읽기 요청들이 X 밀리 초 내에 제공되어야 하는 사용자 요청이 제공되면, 구성 어드바이저(138)가 읽기 동작들의 서비스 시간을 기록(log)하거나 또는 서비스 시간이 X 밀리 초를 초과하였을 때 레드 플래그(red flag)를 세팅할 수 있도록 지시할 수 있다. 가변구조형 스토리지 디바이스(102)로부터 전송될 디바이스 프로파일(122)을 기다리기보다는, 호스트(100)는 주기적으로 또는 요청에 기초하여 가변구조형 스토리지 디바이스(102)로부터 디바이스 프로파일(122)을 요청할 수 있다.
한 실시 예에서, 구성 어드바이저(138)는 후술되는 이벤트들에 의해 활성화 될 수 있다. 새로운 사용자 요구들(123)이 제출될 때; 존재하는 사용자 요청들(123)이 변할 때; 런타임 성능 데이터(134)가 업데이트 될 때; (타임아웃에 기인하는) 런타임 성능 데이터(134)가 요청될 때 언제라도; 그리고/또는 가변구조형 스토리지 디바이스(102)가 사용자 요구들(123)을 만족할 수 없는 때 언제라도.
도 7은 가변구조형 스토리지 시스템의 실시 예를 보여주는 블록도이다. 본 실시 예는 단일의 구성 변형 요소(700)가 하나의 물리적 가변구조형 스토리지 디바이스(702)에 있는 복수의 논리적 디바이스들을 관리할 수 있을 뿐만 아니라, 그것들 각각이 복수의 논리적 디바이스들을 포함할 수 있는 복수의 다른 물리적 가변구조형 스토리지 디바이스들(704,706, 및 708)을 관리할 수 있음을 보여준다.
가변구조형 스토리지 시스템을 위한 방법 및 시스템이 설명되었다. 본 발명은 보여진 실시 예들에 따라 설명되었으며, 다양한 실시 예들이 있을 수 있고, 어떠한 변형 예들도 본 발명의 사상 및 범위 내에서 있을 수 있다. 예를 들어, 예시적인 실시 예들은 프로그램 지시들을 포함하는 하드웨어, 소프트웨어, 컴퓨터 리더블 매체(computer readable medium), 또는 그들의 조합을 통해 구현될 수 있다. 본 발명의 실시 예에 따라 쓰여진 소프트웨어는 메모리, 하드 디스크, 또는 CD/DVD-ROM과 같은 컴퓨터 리더블 매체의 형태로 저장될 수 있고, 그리고 프로세서에 의해 실행될 수 있다. 그러한 이유로, 첨부된 청구항들의 사상 및 범위로부터 벗어나지 않는 범위 내에서 본 발명이 속하는 기술 분야에서 통상의 지식을 지닌 자들에 의해 많은 변형 예들이 만들어질 수 있다.
100: 호스트 102: 가변구조형 스토리지 디바이스
104: 프로세서 106: 메모리
108: 호스트 컨트롤러 110: 구성 변형 요소
111: 스토리지 컨트롤러 112: 메인 스토리지
114: 프로세서 116: 메모리
118: 구성 요소 120: 특성 셋
121: 논리적 디바이스들 122: 디바이스 프로파일
123: 사용자 요구 정보 124: 커맨드
126: 콘텐츠 128: 구성 커맨드
130: 피드백 131: 성능 범위들
132: 성능 모델들 134: 런타임 성능 데이터
136: 구성 플래너 138: 구성 어드바이저
140: 디바이스 프로그래머

Claims (41)

  1. 스토리지 시스템을 재구성하기 위한 방법에 있어서, 상기 방법은 적어도 하나의 프로세서에서 실행하는 적어도 하나의 소프트웨어 요소에 의해 실행되고, 상기 방법은:
    스토리지 디바이스를 위한 사용자 요구 정보를 수신하고 상기 사용자 요구 정보로부터 상기 스토리지 디바이스를 위한 특성 세팅들 및 상기 스토리지 디바이스를 위한 디바이스 프로파일을 자동적으로 생성하는 단계; 그리고
    상기 스토리지 디바이스를, 독립적인 행동 특징들을 갖는 하나 또는 그 이상의 논리적 디바이스들로 자동적으로 재구성하기 위해, 상기 특성 세팅들을 사용하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 스토리지 디바이스 및 상기 논리적 디바이스들 중 적어도 하나의 런타임 성능 데이터에 관하여 상기 스토리지 디바이스로부터 피드백을 수신하는 단계; 그리고
    상기 런타임 성능 데이터가 상기 사용자 요구 정보를 충족시키지 못하는 판단에 응답하여, 상기 사용자 요구 정보를 만족시키기 위한 하나 또는 그 이상의 논리적 디바이스들의 구성을 동적으로 조정하는 단계를 더 포함하는 방법.
  3. 제 1 항에 있어서,
    상기 사용자 요구 정보는 상기 스토리지 디바이스의 행동 특징들의 하이-레벨 디스크립션(high-level description)을 포함하는 방법.
  4. 제 2 항에 있어서,
    상기 하이-레벨 디스크립션은 서비스 레벨 동의(SLA) 및 서비스 품질(QoS) 요구들 중 적어도 하나를 포함하는 방법.
  5. 제 3 항에 있어서,
    상기 SLA는 용량, 어드레싱 모드, 보호, 및 성능을 포함하는 속성의 어떠한 조합을 위한 스펙들을 더 포함하는 방법.
  6. 제 1 항에 있어서,
    상기 사용자 요구 정보의 스펙이 상기 스토리지 디바이스에 의해 만족될 수 있는지 여부를 판단하기 위해 디바이스 프로파일을 사용하는 단계를 더 포함하는 방법.
  7. 제 6 항에 있어서,
    상기 디바이스 프로파일은 디바이스 성능과 상관관계를 갖는 상기 스토리지 디바이스의 특성들과 관련된 성능 모델들을 포함하는 방법.
  8. 제 6 항에 있어서,
    상기 스토리지 디바이스에 상기 디바이스 프로파일을 저장하고 호스트로 이용 가능한 상기 디바이스 프로파일을 만드는 단계를 더 포함하는 방법.
  9. 제 6 항에 있어서,
    상기 호스트, 및 상기 호스트 또는 상기 스토리지 디바이스에 의해 억세스 가능한 원격지, 중 적어도 하나에 상기 디바이스 프로파일을 저장하는 단계를 더 포함하는 방법.
  10. 제 1 항에 있어서,
    상기 특성 세팅들을 자동적으로 생성하는 단계는, 상기 스토리지 디바이스의 특정한 특성들을 인에이블 시키거나 디스에이블 시키기 위한, 그리고 상기 특정한 특성들을 위한 값들을 명시하기 위한 상기 특성 세팅들을 사용하는 단계를 더 포함하되,
    상기 특성들의 영향은 모든 논리적 디바이스들에 일반적이거나 또는 특정한 논리적 디바이스에 국소적인 방법.
  11. 제 2 항에 있어서,
    상기 런타임 성능 데이터는 상기 디바이스 프로파일의 일부분을 포함하고, 그리고 셀프-모니터링 분석 및 레포팅 기술(self-monitoring analysis and reporting technology; SMART) 인터페이스, 그리고 최소 (최대 또는 평균) 읽기 (또는 쓰기) 레이턴시, 최소 (최대 또는 평균) 큐 길이, 최소 (최대 또는 평균) 내부의 IOPS, 읽기 (또는 쓰기) 증폭비, 및 가비지 컬렉션 시간을 포함하는 벤더-고유의 런타임 성능 메트릭들을 통하여 이용 가능한 성능 지수들을 포함하는 방법.
  12. 제 11 항에 있어서,
    상기 런타임 성능 데이터는 디바이스 상태, 디바이스 백그라운드 작업 상태, 그리고 호스트 백그라운드 작업 상태를 더 포함하는 방법.
  13. 호스트에서, 스토리지 디바이스를 위한 사용자 요구 정보를 수신하고, 그리고 상기 스토리지 디바이스를 위한 상기 사용자 요구 정보 및 디바이스 프로파일로부터 상기 스토리지 디바이스를 위한 특성 세팅들을 자동적으로 생성하는 것을 실행하는 구성 변형 요소; 그리고
    상기 스토리지 디바이스에서, 상기 호스트로부터 상기 특성 세팅들을 수신하고, 그리고 상기 스토리지 디바이스를 독립적인 행동 즉징들을 갖는 하나 또는 그 이상의 논리적 디바이스들로 자동적으로 재구성하기 위해 상기 특성 세팅들을 사용하는 것을 실행하는 구성 요소를 포함하는 가변구조형 스토리지 시스템.
  14. 제 13 항에 있어서,
    상기 구성 변형 요소는:
    상기 스토리지 디바이스 및 상기 논리적 디바이스들 중 적어도 하나의 런타임 성능 데이터에 관하여 상기 스토리지 디바이스로부터 피드백을 수신하고; 그리고
    상기 런타임 성능 데이터가 상기 사용자 요구 정보를 충족시키지 못하는 판단에 응답하여, 상기 사용자 요구 정보를 만족시키기 위해 상기 하나 또는 그 이상의 논리적 디바이스들을 동적으로 조정하는 것을 더 수행하는 시스템.
  15. 제 13 항에 있어서,
    상기 사용자 요구 정보는 상기 스토리지 디바이스의 행동 특징들의 하이-레벨 디스크립션을 포함하는 시스템.
  16. 제 15 항에 있어서,
    상기 하이-레벨 디스크립션은 서비스 레벨 동의(SLA) 및 서비스 품질(QoS) 요구들 중 적어도 하나를 포함하는 시스템.
  17. 제 16 항에 있어서,
    상기 SLA는 용량, 어드레싱 모드, 보호, 및 성능을 포함하는 속성의 어떠한 조합을 위한 스펙들을 더 포함하는 시스템.
  18. 제 13 항에 있어서,
    상기 구성 변형 요소는 상기 사용자 요구 정보의 스펙이 상기 스토리지 디바이스에 의해 만족될 수 있는지 여부를 판단하기 위해 디바이스 프로파일을 사용하는 것을 더 수행하도록 구성되는 시스템.
  19. 제 18 항에 있어서,
    상기 디바이스 프로파일은 디바이스 성능과 상관관계를 갖는 상기 스토리지 디바이스의 특성들과 관련된 성능 모델들을 포함하는 시스템.
  20. 제 18 항에 있어서,
    상기 디바이스 프로파일은 상기 스토리지 디바이스에 저장되고 호스트로 이용 가능하도록 만들어지는 시스템.
  21. 제 18 항에 있어서,
    상기 디바이스 프로파일은 상기 호스트, 및 상기 호스트 또는 상기 스토리지 디바이스에 의해 억세스 가능한 원격지, 중 적어도 하나에 있는 시스템.
  22. 제 13 항에 있어서,
    상기 구성 변형 요소는 상기 스토리지 디바이스의 특정한 특성들을 인에이블 시키거나 디스에이블 시키기 위한 특성 세팅들을 사용하는 것, 그리고 상기 특정한 특성들을 위한 값들을 명시하는 것을 더 수행하도록 구성되고,
    상기 특성들의 영향은 모든 논리적 디바이스들에 일반적이거나 또는 특정한 논리적 디바이스에 국소적인 시스템.
  23. 제 22 항에 있어서,
    상기 런타임 성능 데이터는 상기 디바이스 프로파일의 일부분을 포함하고, 그리고 셀프-모니터링, 분석 및 레포팅 기술(SMART) 인터페이스, 그리고 최소 (최대 또는 평균) 읽기 (또는 쓰기) 레이턴시, 최소 (최대 또는 평균) 큐 길이 및 대기 시간, 최소 (최대 또는 평균) 내부의 IOPS, 읽기 (또는 쓰기) 증폭비, 가비지 컬렉션 시간, 및 타임아웃 카운트를 포함하는 벤더-고유의 런타임 성능 메트릭들을 통해 이용 가능한 성능 지수들을 포함하는 시스템.
  24. 제 23 항에 있어서,
    상기 런타임 성능 데이터는 디바이스 상태, 디바이스 백그라운드 작업 상태, 그리고 호스트 백그라운드 작업 상태를 더 포함하는 시스템.
  25. 스토리지 시스템을 재구성하기 위한 프로그램 명령들을 포함하는 컴퓨터-리더블 스토리지 매체에 저장된 실행가능한 소프트웨어 제품에 있어서,
    상기 프로그램 명령들은:
    스토리지 디바이스를 위한 사용자 요구 정보를 수신하고 상기 사용자 요구 정보로부터 상기 스토리지 디바이스를 위한 특성 세팅들 및 상기 스토리지 디바이스를 위한 디바이스 프로파일을 자동적으로 생성하는 것; 그리고
    상기 스토리지 디바이스를, 독립적인 행동 특징들을 갖는 하나 또는 그 이상의 논리적 디바이스들로 자동적으로 재구성하기 위해, 상기 특성 세팅들을 사용하는 것을 위한 것인 실행가능한 소프트웨어 제품.
  26. 제 25 항에 있어서,
    상기 스토리지 디바이스 및 상기 논리적 디바이스들 중 적어도 하나의 런타임 성능 데이터에 관하여 상기 스토리지 디바이스로부터 피드백을 수신하는 것; 그리고
    상기 런타임 성능 데이터가 상기 사용자 요구 정보를 충족시키지 못하는 판단에 응답하여, 상기 사용자 요구 정보를 만족시키기 위한 하나 또는 그 이상의 논리적 디바이스들의 구성을 동적으로 조정하는 것을 위한 프로그램 명령들 더 포함하는 실행가능한 소프트웨어 제품.
  27. 제 25 항에 있어서,
    상기 사용자 요구 정보는 상기 스토리지 디바이스의 행동 특징들의 하이-레벨 디스크립션(high-level description)을 포함하는 실행가능한 소프트웨어 제품.
  28. 제 27 항에 있어서,
    상기 하이-레벨 디스크립션은 서비스 레벨 동의(SLA) 및 서비스 품질(QoS) 요구들 중 적어도 하나를 포함하는 실행가능한 소프트웨어 제품.
  29. 제 28 항에 있어서,
    상기 SLA는 용량, 어드레싱 모드, 보호, 및 성능을 포함하는 속성의 어떠한 조합을 위한 스펙들을 더 포함하는 실행가능한 소프트웨어 제품.
  30. 제 25 항에 있어서,
    상기 사용자 요구 정보의 스펙이 상기 스토리지 디바이스에 의해 만족될 수 있는지 여부를 판단하기 위해 디바이스 프로파일을 사용하는 것을 위한 프로그램 명령들을 더 포함하는 실행가능한 소프트웨어 제품.
  31. 제 30 항에 있어서,
    상기 디바이스 프로파일은 디바이스 성능과 상관관계를 갖는 상기 스토리지 디바이스의 특성들과 관련된 성능 모델들을 포함하는 실행가능한 소프트웨어 제품.
  32. 제 30 항에 있어서,
    상기 스토리지 디바이스에 상기 디바이스 프로파일을 저장하는 것, 그리고 호스트로 이용 가능한 상기 디바이스 프로파일을 만드는 것을 위한 프로그램 명령들을 더 포함하는 실행가능한 소프트웨어 제품.
  33. 제 30 항에 있어서,
    상기 호스트, 및 상기 호스트 또는 상기 스토리지 디바이스에 의해 억세스 가능한 원격지, 중 적어도 하나에 상기 디바이스 프로파일을 저장하기 위한 프로그램 명령들을 더 포함하는 실행가능한 소프트웨어 제품.
  34. 제 25 항에 있어서,
    상기 특성 세팅들을 자동적으로 생성하는 것은, 상기 스토리지 디바이스의 특정한 특성들을 인에이블 시키거나 디스에이블 시키기 위한, 그리고 상기 특정한 특성들을 위한 값들을 명시하기 위한 상기 특성 세팅들을 사용하는 것을 위한 프로그램 명령들을 더 포함하되,
    상기 특성들의 영향은 모든 논리적 디바이스들에 일반적이거나 또는 특정한 논리적 디바이스에 국소적인 실행가능한 소프트웨어 제품.
  35. 제 34 항에 있어서,
    상기 런타임 성능 데이터는 상기 디바이스 프로파일의 일부분을 포함하고, 그리고 셀프-모니터링 분석 및 레포팅 기술(self-monitoring analysis and reporting technology; SMART) 인터페이스, 그리고 최소 (최대 또는 평균) 읽기 (또는 쓰기) 레이턴시, 최소 (최대 또는 평균) 큐 길이 및 대기 시간, 최소 (최대 또는 평균) 내부의 IOPS, 읽기 (또는 쓰기) 증폭비, 가비지 컬렉션 시간 및 타임아웃 카운트를 포함하는 벤더-고유의 런타임 성능 메트릭들을 통하여 이용 가능한 성능 지수들을 포함하는 실행가능한 소프트웨어 제품.
  36. 제 35 항에 있어서,
    상기 런타임 성능 데이터는 디바이스 상태, 디바이스 백그라운드 작업 상태, 그리고 호스트 백그라운드 작업 상태를 더 포함하는 실행가능한 소프트웨어 제품.
  37. 메모리;
    상기 메모리에 연결되는 프로세서;
    서비스 레벨 동의(SLA) 스펙들을 포함하는 사용자 요구들을 수신하고, 디바이스 프로파일에 기초하여 상기 SLA 스펙들을 특성 세팅들로 전환하고, 상기 특성 세팅들의 최상의 조합들을 판단하고, 상기 최상의 조합들로부터의 구성 커맨드들을 포함하는 복수의 플랜들을 생성하고, 그리고 상기 스토리지 디바이스 및 상기 사용자 요구들의 성능 및 상태를 고려하는 상기 플랜들 중 하나를 선택하도록 구성되는 프로세서에 의해 실행되는 제 1 소프트웨어 요소;
    상기 선택된 플랜을 수신하고, 구성 채널을 가로질러 상기 플랜을 상기 가변구조형 스토리지로 전송하고, 상기 스토리지 디바이스로부터 응답을 수신하고, 그리고 상기 스토리지 디바이스로부터의 부정 응답의 경우에 상기 플랜들을 반복하도록 구성되는 상기 프로세서에 의해 실행되는 제 2 소프트웨어 요소; 그리고
    상기 디바이스 프로파일을 수집하고 상기 디바이스 프로파일을 상기 구성 플래너로 전송하고, 상기 스토리지 디바이스에서 생성된 하나 또는 그 이상의 논리적 디바이스들을 감시하고 상기 모든 사용자 요구들이 만족되는지 여부를 판단하고, 그리고 SLA 위반의 경우에 상기 디바이스 프로파일에 기초하여 상기 플랜들을 조정하기 위해 상기 구성 플래너를 통지하도록 구성되는 상기 프로세서에 의해 실행되는 제 3 소프트웨어 요소를 포함하는 스토리지 디바이스를 재구성하는 호스트.
  38. 제 37 항에 있어서,
    상기 가변구조형 스토리지 디바이스의 각각의 특성과 관련된 복수의 성능 모델들, 특성들 사이의 상관관계 및 반-상관관계, 그리고 상기 성능 모델들을 평가하고 상기 구성 플랜들을 생성하는 플래닝 알고리즘들을 더 포함하는 호스트.
  39. 메인 스토리지;
    상기 메인 스토리지에 연결되는 프로세서; 그리고
    상기 프로세서에 의해 실행되는 소프트웨어 요소를 포함하되,
    상기 프로세서는:
    특성 세팅들을 포함하는 적어도 하나의 구성 커맨드를 포함하는 플랜을 수신하고;
    디바이스 프로파일에 기초한 상기 플랜에 있는 상기 특성 세팅들의 이용가능성 및 적용가능성을 체크하고;
    상기 플랜이 유효하지 않을 때, 상기 플랜들을 거절하고 상기 플랜에 의해 만들어진 어떤 변화들을 롤백 시키고;
    상기 특성 세팅들의 이용가능성 및 적용가능성 모두 참일 때, 상기 플랜들을 인증하고;
    상기 플랜들을 실행하고 상기 디바이스 프로파일을 업데이트하고; 그리고
    상기 실행된 플랜을 스토리지 공간에 연관시킴으로써 가변구조형 스토리지 디바이스에 하나 또는 그 이상의 논리적 디바이스들을 생성하도록 구성되는 가변구조형 스토리지 디바이스.
  40. 제 39 항에 있어서,
    상기 소프트웨어 요소는, 상기 가변구조형 스토리지 디바이스가 상기 플랜들을 상기 디바이스 프로파일에 비교함으로써 상기 특성 세팅들을 지원하는지 여부를 판단함으로써, 상기 특성 세팅들의 이용가능성을 체크하는 가변구조형 스토리지 디바이스.
  41. 제 40 항에 있어서,
    상기 소프트웨어 요소는, 상기 디바이스 프로파일에 기초한 특성들로의 조정의 척도를 측정하는 것, 그리고 상기 디바이스 프로파일에 기초한 적용가능한 경계 특성 내에서 상기 특성들의 조정을 제어하는 것에 의해, 상기 특성 세팅들의 적용가능성을 체크하는 가변구조형 스토리지 디바이스.
KR1020130161733A 2013-01-03 2013-12-23 가변구조형 메모리 디바이스 KR102087612B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US13/733,309 US20130185482A1 (en) 2012-01-18 2013-01-03 Memory system using a storage having firmware with a plurality of features
US13/733,309 2013-01-03
US13/936,992 US9239786B2 (en) 2012-01-18 2013-07-08 Reconfigurable storage device
US13/936,992 2013-07-08

Publications (2)

Publication Number Publication Date
KR20140088834A true KR20140088834A (ko) 2014-07-11
KR102087612B1 KR102087612B1 (ko) 2020-04-14

Family

ID=50928582

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130161733A KR102087612B1 (ko) 2013-01-03 2013-12-23 가변구조형 메모리 디바이스

Country Status (4)

Country Link
JP (1) JP6694665B2 (ko)
KR (1) KR102087612B1 (ko)
CN (1) CN103927127B (ko)
DE (1) DE102013114069A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160096279A (ko) * 2015-02-04 2016-08-16 삼성전자주식회사 가상화 기능을 지원하는 스토리지 장치 및 사용자 장치
WO2021138576A1 (en) * 2019-12-31 2021-07-08 Micron Technology, Inc. Quality of service control of logical devices for a memory sub-system
US12001676B2 (en) 2017-02-07 2024-06-04 Samsung Electronics Co., Ltd. Storage device and host for the same

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10282100B2 (en) 2014-08-19 2019-05-07 Samsung Electronics Co., Ltd. Data management scheme in virtualized hyperscale environments
DE102015113603B4 (de) * 2014-08-19 2024-04-04 Samsung Electronics Co., Ltd. Datenverwaltungsverfahren in virtualisierten Hyperscale-Umgebungen
CN104301430B (zh) * 2014-10-29 2016-04-13 北京麓柏科技有限公司 软件定义存储系统、方法及其集中控制设备
JP6394315B2 (ja) 2014-11-20 2018-09-26 富士通株式会社 ストレージ管理装置、性能調整方法及び性能調整プログラム
JP6428231B2 (ja) 2014-12-15 2018-11-28 富士通株式会社 ストレージ管理装置、性能調整方法及び性能調整プログラム
US9645922B2 (en) * 2015-09-10 2017-05-09 HoneycombData Inc. Garbage collection in SSD drives
US11287973B2 (en) 2016-02-02 2022-03-29 Samsung Electronics Co., Ltd. Polymorphic storage devices
US10423331B2 (en) * 2016-02-02 2019-09-24 Samsung Electronics Co., Ltd. Polymorphic storage devices
US10616050B2 (en) * 2017-05-05 2020-04-07 VCE IP Holding Company LLC Software defined storage (SDS) system with network tiering
CN109783000B (zh) * 2017-11-10 2022-08-26 成都华为技术有限公司 一种数据处理方法及设备
US10678439B2 (en) * 2018-04-02 2020-06-09 Micron Technology, Inc. Optimization of memory systems based on performance goals
CN109614035A (zh) * 2018-11-01 2019-04-12 郑州云海信息技术有限公司 一种支持解决服务器存储介质序列灵活配置的方法与系统
US11210215B2 (en) 2019-10-01 2021-12-28 Neuchips Corporation Computing device and operation method thereof
US10992299B1 (en) * 2020-03-09 2021-04-27 Gowin Semiconductor Corporation Method and system for providing word addressable nonvolatile memory in a programmable logic device
CN113657720B (zh) * 2021-07-21 2023-08-29 新浪技术(中国)有限公司 一种自动规划cdn服务器磁盘的方法、系统、介质和设备
CN115826886B (zh) * 2023-02-24 2023-05-12 浪潮电子信息产业股份有限公司 追加写模式的数据垃圾回收方法、装置、系统及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6487562B1 (en) * 1999-12-20 2002-11-26 Emc Corporation Dynamically modifying system parameters in data storage system
US20100287408A1 (en) * 2009-05-10 2010-11-11 Xsignnet Ltd. Mass storage system and method of operating thereof

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7010493B2 (en) * 2001-03-21 2006-03-07 Hitachi, Ltd. Method and system for time-based storage access services
US7159093B2 (en) * 2002-12-20 2007-01-02 Veritas Operating Corporation Development of a detailed logical volume configuration from high-level user requirements
US8416691B1 (en) * 2006-04-27 2013-04-09 Alcatel Lucent Associating hosts with subscriber and service based requirements
JP5745749B2 (ja) * 2008-01-15 2015-07-08 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 記憶インフラストラクチャを自動的に管理するための方法および適切な記憶インフラストラクチャ
US8095764B1 (en) * 2008-06-30 2012-01-10 Emc Corporation Dynamic application aware storage configuration
WO2010047989A1 (en) * 2008-10-20 2010-04-29 At & T Mobility Ii Llc Device network technology selection and display in multi-technology wireless environments
KR101297258B1 (ko) 2010-07-09 2013-08-16 삼성에스디아이 주식회사 염료 감응 태양 전지용 염료, 그 제조 방법 및 이를 채용한 태양 전지
KR101673622B1 (ko) * 2011-01-28 2016-11-08 삼성전자주식회사 무선통신 시스템에서 서비스품질에 따른 서비스 제공 방법 및 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6487562B1 (en) * 1999-12-20 2002-11-26 Emc Corporation Dynamically modifying system parameters in data storage system
US20100287408A1 (en) * 2009-05-10 2010-11-11 Xsignnet Ltd. Mass storage system and method of operating thereof

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160096279A (ko) * 2015-02-04 2016-08-16 삼성전자주식회사 가상화 기능을 지원하는 스토리지 장치 및 사용자 장치
US12001676B2 (en) 2017-02-07 2024-06-04 Samsung Electronics Co., Ltd. Storage device and host for the same
WO2021138576A1 (en) * 2019-12-31 2021-07-08 Micron Technology, Inc. Quality of service control of logical devices for a memory sub-system
US11321257B2 (en) 2019-12-31 2022-05-03 Micron Technology, Inc. Quality of service control of logical devices for a memory sub-system
US11698876B2 (en) 2019-12-31 2023-07-11 Micron Technology, Inc. Quality of service control of logical devices for a memory sub-system

Also Published As

Publication number Publication date
DE102013114069A1 (de) 2014-07-03
CN103927127B (zh) 2018-07-03
JP6694665B2 (ja) 2020-05-20
JP2014132457A (ja) 2014-07-17
KR102087612B1 (ko) 2020-04-14
CN103927127A (zh) 2014-07-16

Similar Documents

Publication Publication Date Title
US9239786B2 (en) Reconfigurable storage device
KR102087612B1 (ko) 가변구조형 메모리 디바이스
US10082972B2 (en) Method and system for pooling, partitioning, and sharing network storage resources
US10853139B2 (en) Dynamic workload management based on predictive modeling and recommendation engine for storage systems
US8688932B2 (en) Virtual computer system and method of controlling the same
US9342526B2 (en) Providing storage resources upon receipt of a storage service request
US8375180B2 (en) Storage application performance matching
US8095764B1 (en) Dynamic application aware storage configuration
US7757013B1 (en) Techniques for controlling data storage system performance
US8468299B2 (en) Virtualized storage performance controller
US20110066823A1 (en) Computer system performing capacity virtualization based on thin provisioning technology in both storage system and server computer
US8296543B2 (en) Computer system management apparatus and management method for the computer system
US20150317556A1 (en) Adaptive quick response controlling system for software defined storage system for improving performance parameter
US20070079060A1 (en) Method, apparatus and program storage device for providing virtual disk service (VDS) hints based storage
US10956084B2 (en) Drive utilization in multi-tiered systems with read-intensive flash
CN114925003B (zh) 控制nvme设备中的i/o q连接
US11003378B2 (en) Memory-fabric-based data-mover-enabled memory tiering system
US20210096771A1 (en) Storage system, path management method, and recording medium
US11740838B2 (en) Array-based copy utilizing one or more unique data blocks
US10788994B1 (en) Disaggregation of flash management
JP2015097006A (ja) ストレージ制御装置、制御方法、及びプログラム
CN116501239A (zh) 用于管理存储设备的方法和存储控制器
WO2017163322A1 (ja) 管理計算機、および計算機システムの管理方法

Legal Events

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