KR20190112626A - 어레이 내에서 솔리드 스테이트 드라이브들을 자율적으로 관리하는 메커니즘 - Google Patents

어레이 내에서 솔리드 스테이트 드라이브들을 자율적으로 관리하는 메커니즘 Download PDF

Info

Publication number
KR20190112626A
KR20190112626A KR1020180154812A KR20180154812A KR20190112626A KR 20190112626 A KR20190112626 A KR 20190112626A KR 1020180154812 A KR1020180154812 A KR 1020180154812A KR 20180154812 A KR20180154812 A KR 20180154812A KR 20190112626 A KR20190112626 A KR 20190112626A
Authority
KR
South Korea
Prior art keywords
drive
host
peer
memory
storage
Prior art date
Application number
KR1020180154812A
Other languages
English (en)
Other versions
KR102705791B1 (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 KR20190112626A publication Critical patent/KR20190112626A/ko
Application granted granted Critical
Publication of KR102705791B1 publication Critical patent/KR102705791B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/0626Reducing size or complexity 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/0646Horizontal data movement in storage systems, i.e. moving data in between 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/0656Data buffering arrangements
    • 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/0658Controller construction arrangements
    • 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
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)
  • Automatic Disk Changers (AREA)
  • Vehicle Body Suspensions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명의 실시 예들은 호스트 CPU 및 호스트 저장 드라이브를 포함하는 호스트 서버, 하나 또는 그보다 많은 원격 저장 드라이브들, 그리고 호스트 드라이브를 하나 또는 그보다 많은 원격 저장 드라이브들에 연결하는 피어-투-피어 링크를 포함하는 드라이브-대-드라이브 저장 시스템을 포함한다. 호스트 저장 드라이브는 프로세서 및 메모리를 포함하고, 메모리는, 프로세서에 의해 실행될 때에, 호스트 CPU가 발행하는 쓰기 명령의 적어도 일부에 기반하여, 프로세서가 데이터를 호스트 저장 드라이브로부터 피어-투-피어 링크를 통해 하나 또는 그보다 많은 원격 저장 드라이브들로 전송하게 하며 메모리에 저장된 명령들을 포함한다.

Description

어레이 내에서 솔리드 스테이트 드라이브들을 자율적으로 관리하는 메커니즘{MECHANISM TO AUTONOMOUSLY MANAGE SSDS IN AN ARRAY}
본 발명은 어레이를 형성하는 솔리드 스테이트 드라이브들에 관한 것으로, 더 상세하게는 어레이 내에서 솔리드 스테이트 드라이브들을 자율적으로 관리하는 메커니즘에 관한 것이다.
최신 엔터프라이즈 데이터 저장 시스템들은 상당한 양의 중요한 데이터를 저장한다. 이러한 데이터는 저장 장치 실패들의 결과로서 데이터 손실을 방지하는 보호적인 조치들을 필요로 한다. 보통, 하나 또는 그보다 많은 제어 엔티티들이 이러한 목표를 달성하는 다수의 보호 방법들을 수행한다. 이러한 엔티티들은 보통 저장 서버 유닛 중앙 처리부들(CPU들)이다.
저장 장치 관점으로부터, 저장 서버 CPU들은 감독하는 방식으로 저장 및 보호 방법들을 수행하고 저장 장치들은 엄격하게 종속된 장치들로 참여한다. 예시적으로, 제어 엔티티들은 통상적으로 정책 기반 기준(criteria)을 이용하여 어떤 데이터가 그들의 제어 하에 어떤 종속된 저장 장치들에 저장될지 판단한다.
CPU 및 저장 장치들 사이의 전송 활동들은 네트워크 자원들의 사용뿐 아니라, 데이터 전송 경로를 따른 적어도 국부 CPU 개시들 및 동적 랜덤 액세스 메모리(DRAM)를 수반한다. 따라서, 이러한 CPU-제어 데이터 보호 방법들을 수행하는 것은 통상적으로 다수의 저장 서버 자원들을 소비한다. 데이터 전송들에서의 CPU 참여는 CPU 캐시 오염, 중대한 DRAM 사용, 동기화 소프트웨어 업무 부하들, 그리고 추가적인 프로세싱의 결과로 레이턴시를 유발할 수 있다.
한편, 저장 장치들은 종종 가용하고 사용되지 않는 자원들 및 능력들을 갖는다. 예를 들어, 솔리드 스테이트 드라이브들(SSD들), 특히 불휘발성 메모리 익스프레스(NVMe) SSD들은 다른 기능들을 위해 사용되는 상대적으로 대량의 DRAM을 갖는다. 예를 들어, NVMe SSD들을 위한 DRAM은 읽기/쓰기 버퍼들을 제공하는 데에 사용되고, 내부적 SSD 메타데이터 저장을 위해 사용되고, 그리고 제어 메모리 버퍼를 제공하는 데에 사용된다. 제어 메모리 버퍼는 입력/출력(I/O) 메모리 대기열들, 데이터 버퍼들 등을 위해 SSD가 호스트들에 노출하는 SSD의 DRAM의 부분이다.
CPU 또는 다른 제어 엔티티를 수반하지 않고 자율적 데이터 저장 및 데이터 보호 서비스들을 수행할 수 있는 개선된 저장 장치 및 드라이브-대-드라이브(drive-to-drive) 저장 방법이 요구된다. 또한, 저장 장치의 사용되지 않는 자원들 및 능력들을 이용할 수 있는 개선된 저장 장치 및 드라이브-대-드라이브(drive-to-drive) 저장 방법이 요구된다. 이러한 개선된 저장 장치들 및 방법들은 데이터 보호 및 백업에 필요한 호스트 자원들의 양을 줄일 수 있다.
이 배경 기술 섹션에 기술된 위의 정보는 본 기재의 배경의 이해를 증진하기 위한 것일 뿐이며, 따라서 이는 선행 기술을 구성하는 정보를 포함하지 않을 수 있다.
본 발명의 목적은 CPU 또는 다른 제어 엔티티를 수반하지 않고 자율적으로 데이터 저장 및 데이터 보호 서비스들을 수행할 수 있는 개선된 저장 장치 및 드라이브-대-드라이브(drive-to-drive) 저장 방법을 제공하는 것이다. 본 발명의 다른 목적은 저장 장치의 사용되지 않는 자원들 및 능력들의 장점을 취할 수 있는 개선된 저장 장치 및 드라이브-대-드라이브(drive-to-drive) 저장 방법을 제공하는 것이다.
본 발명의 실시 예들은 호스트 CPU 및 호스트 저장 드라이브를 포함하는 호스트 서버, 하나 또는 그보다 많은 원격 저장 드라이브들, 그리고 호스트 드라이브를 하나 또는 그보다 많은 원격 저장 드라이브들에 연결하는 피어-투-피어 링크를 포함하는 드라이브-대-드라이브 저장 시스템을 포함한다. 호스트 저장 드라이브는 프로세서 및 메모리를 포함하고, 메모리는, 프로세서에 의해 실행될 때에, 호스트 CPU가 발행하는 쓰기 명령의 적어도 일부에 기반하여, 프로세서가 데이터를 호스트 저장 드라이브로부터 피어-투-피어 링크를 통해 하나 또는 그보다 많은 원격 저장 드라이브들로 전송하게 하며 메모리에 저장된 명령들을 포함한다.
본 발명의 추가적인 실시 예들은 호스트 저장 드라이브를 하나 또는 그보다 많은 원격 저장 드라이브들에 연결하는 피어-투-피어 링크, 그리고 프로세서 및 메모리를 포함하는 호스트 저장 드라이브를 포함하고, 메모리는, 프로세서에 의해 실행된 때에, 프로세서가 데이터를 호스트 저장 드라이브로부터 피어-투-피어 링크를 통해 하나 또는 그보다 많은 원격 저장 드라이브들로 전송하게 하며 메모리에 저장된 명령들을 포함한다.
추가적인 실시 예들은 드라이브-대-드라이브 저장 시스템을 이용하여 데이터를 저장하는 방법을 포함하고, 드라이브-대-드라이브 저장 시스템은 호스트 CPU 및 호스트 저장 드라이브를 포함하는 호스트 서버, 하나 또는 그보다 많은 원격 저장 드라이브들, 그리고 호스트 드라이브를 하나 또는 그보다 많은 원격 저장 드라이브들에 연결하는 피어-투-피어 링크를 포함하고, 호스트 저장 드라이브는 프로세서 및 메모리를 포함한다. 방법은 데이터를 호스트 저장 드라이브에 기입하기 위한 쓰기 명령을 개시하는 단계, 직접 메모리 액세스를 이용하여 데이터를 호스트 저장 드라이브의 메모리로 전송하는 단계, 그리고 데이터를 호스트 저장 드라이브의 메모리로부터 피어-투-피어 링크를 통해 하나 또는 그보다 많은 원격 드라이브들로 전송하는 단계를 포함한다.
본 발명에 따르면, 데이터 보호 및 백업에 필요한 호스트 자원들의 양을 줄이는 개선된 저장 장치들 및 방법들이 제공된다.
추가적인 특성들 및 측면들이 도면들과 함께 검토되는 다음의 상세한 설명을 참조하여 가장 잘 이해되고 명백해질 것이다.
도 1은 데이터 보호를 위한 CPU 제어 시스템의 개략도이다.
도 2는 본 발명의 실시 예에 따른 드라이브-대-드라이브 저장 시스템의 개략도이다.
도 3은 저장 시스템 내의 저장 장치들이 전용 포트 또는 재프로그램된 스위치 포트를 통해 연결된 도 2의 예의 개략도이다.
도 4는 본 발명의 실시 예에 따른 호스트 저장 장치의 개략도이다.
도 5는 도 2 또는 도 3의 드라이브-대-드라이브 저장 시스템을 이용하여 데이터를 저장하기 위한 방법을 보여주는 순서도이다.
이하에서, 예시적인 실시 예들이 첨부된 도면들을 참조하여 더 상세히 설명될 것이며, 유사한 참조 번호들은 전체적으로 유사한 요소들을 가리킨다. 그러나 본 발명은 다양한 다른 형태들로 구현될 수 있고, 여기에 설명된 실시 예들로만 한정되는 것으로 여겨지지 않아야 한다. 반면, 이러한 실시 예들은 이 기재가 더 철저하고 완전해지는 그리고 본 발명의 측면들 및 특색들을 이 분야에 숙련된 자들에게 완전하게 전달하는 예들로 제공된다. 따라서, 본 발명의 측면들 및 특색들의 완전한 이해를 위해 이 분야에 통상적인 기술을 가진 자들에게 필수적이지 않은 프로세스들, 요소들, 그리고 기술들은 설명되지 않을 수 있다. 다르게 언급되지 않으면, 첨부된 도면들 및 기재된 설명 전체에서 유사한 참조 번호들은 유사한 요소들을 가리키며, 따라서 그들의 설명들은 반복되지 않을 것이다. 도면들에서, 요소들, 계층들 및 영역들의 상대적인 사이즈들은 명확성을 위해 강조될 수 있다.
하나의 요소 또는 계층이 다른 하나의 요소 또는 계층의 "위에 있거나", "연결된" 또는 "결합된" 것으로 참조될 때, 하나의 요소 또는 계층은 다른 요소 또는 계층의 직접 위에 있거나 직접 연결되거나 또는 직접 결합될 수 있으며, 또는 하나 또는 그보다 많은 끼어드는 요소들 또는 계층들이 존재할 수 있다. 또한, 하나의 요소 또는 계층이 두 개의 요소들 또는 계층들의 사이에 있는 것으로 참조될 때, 하나의 요소는 두 요소들 또는 계층들 사이의 유일한 요소 또는 계층일 수 있고, 또는 하나 또는 그보다 많은 끼어드는 요소들 또는 계층들 또한 존재할 수 있다.
여기에 사용되는 용어는 특정한 실시 예들만을 설명하는 목적을 위한 것이며, 본 발명을 제한하는 것을 의도하지 않는다. 여기에서 사용되는 바와 같이, 문맥이 명확히 다르게 가리키지 않으면, 단수 형태들은 복수 형태들 또한 포함하는 것을 의도한다. 상세한 설명에서 사용될 때에, "포함한다", "포함하는"의 용어들은 언급된 특색들, 정수들, 단계들, 동작들, 요소들, 그리고/또는 구성 요소들의 존재를 명시하며, 하나 또는 그보다 많은 특색들, 정수들, 단계들, 동작들, 요소들, 구성 요소들, 그리고/또는 이들의 그룹들의 존재 또는 추가를 배제하지 않는다. 여기에서 사용되는 바와 같이, "그리고/또는"의 용어는 하나 또는 그보다 많은 연관되어 나열된 항목들의 임의의 그리고 모든 조합들을 포함한다. 요소들의 목록에 선행할 때에, "적어도 하나의"와 같은 표현들은 요소들의 전체 목록을 구식하며, 목록의 개별 요소들을 수식하지 않는다.
본 발명의 실시 예들을 설명할 때에, "수 있다"의 사용은 "본 발명의 하나 또는 그보다 많은 실시 예들"을 참조한다. 여기에서 사용되는 바와 같이, "사용하다", "사용하는", 그리고 "사용된"의 용어들은 "활용하다", "활용하는", 그리고 "활용된"의 용어와 유의어로 여겨질 수 있다. 또한, "모범적인"의 용어는 예 또는 사례를 참조하는 것을 의도한다.
여기에 기술된 본 발명의 실시 예들에 따른 전자 또는 전기 장치들 그리고/또는 임의의 다른 연관된 장치들 또는 구성 요소들은 적절한 하드웨어, 펌웨어(예를 들어, 응용-특화 집적 회로), 소프트웨어 또는 소프트웨어, 펌웨어, 그리고 하드웨어의 조합을 이용하여 구현될 수 있다. 예를 들어, 이러한 장치들의 다양한 구성 요소들은 하나의 집적 회로(IC) 칩 또는 별도의 IC 칩들에 형성될 수 있다. 또한, 이러한 장치들의 다양한 구성 요소들은 유연 인쇄 회로 필름, 테이프 캐리어 패키지(TCP), 인쇄 회로 기판(PCB)에 구현되거나 또는 하나의 기판의 위에 형성될 수 있다. 또한, 이러한 장치들의 다양한 구성 요소들은 하나 또는 그보다 많은 컴퓨팅 장치들에서 컴퓨터 프로그램 명령들을 실행하고 그리고 여기에 기술된 다양한 기능들을 수행하기 위해 다른 시스템 구성 요소들과 상호 작용하는 하나 또는 그보다 많은 프로세서들에 의해 실행되는 프로세스 또는 쓰레드일 수 있다. 컴퓨터 프로그램 명령들은, 예를 들어 랜덤 액세스 메모리(RAM)와 같은 표준 메모리 장치를 이용하여 컴퓨팅 장치에 구현될 수 있는 메모리에 저장된다. 컴퓨터 프로그램 명령들은 또한, 예를 들어 CD-ROM, 플래시 드라이브 등과 같은 다른 비임시의(non-transitory) 컴퓨터 독출 가능 매체에 저장될 수 있다. 또한, 이 분야에 숙련된 자는, 본 발명의 모범적인 실시 예들의 사상 및 범위로부터 멀어지지 않으면서, 다양한 컴퓨팅 장치들의 기능이 단일 컴퓨팅 장치로 조합 또는 집적될 수 있고, 또는 특정한 컴퓨팅 장치의 기능이 하나 또는 그보다 많은 컴퓨팅 장치들에 걸쳐 분산될 수 있음을 이해하여야 한다.
다르게 정의되지 않으면, 여기에서 사용되는 모든 용어들(기술적 그리고 과학적 용어들을 포함하여)은 본 발명이 속한 분야에 통상적인 기술을 가진 자에 의해 공통으로 이해되는 것과 동일한 의미를 갖는다. 공통으로 사용되는 사전들에 정의된 것과 같은 용어들은 연관된 분야 그리고/또는 본 명세서의 맥락에서 그들의 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 여기에 그렇게 명백히 정의되지 않으면 이상화되거나 과도하게 형식적인 의미로 해석되지 않아야 함이 이해될 것이다.
본 발명의 실시 예들은 저장 장치로서 호스트 CPU에 대한 자신의 연결성을 인식하고 그리고 하나 또는 그보다 많은 저장 장치(들)에 대한 자신의 연결성을 인식하는 저장 장치(예를 들어, 호스트 저장 장치)를 포함한다. 호스트 저장 장치의 실시 예들은 하나 또는 그보다 많은 저장 장치들로의 데이터의 직접 피어-투-피어 전송을 개시하여, 정책-기반 자율 데이터 전송 서비스들을 제공할 수 있다. 이는 호스트 CPU가 추가적인 I/O를 수행하여 복제(replication) 및 다른 데이터 보호 서비스들을 호스트 저장 장치에 제공하는 것을 효과적으로 없애고(offload), 호스트 CPU 연산 요구들을 줄이고 그리고 데이터 전송들에서 감소된 저장 서버 CPU 참여로 인한 저장 시스템 레이턴시를 낮춘다. 일부 실시 예들은 특정한 저장 프로토콜들을 CPU-대-SSD 방법으로부터 저장 장치의 SSD-대-SSD 방법으로 넘긴다. 추가적인 실시 예들은 원래의 저장 장치를 저장 장치 판매자-정의(vendor-defined)(사설) 방법들로 정의하는 기회를 제공한다. 또한, 추가적인 실시 예들은 푸시 또는 풀 모델이 데이터 보호 목적들을 위한 저장 장치들 사이의 쓰기 트래픽을 동기화할 수 있게 하는 저장 장치를 포함한다.
도 1은 저장 서버들의 CPU들이 데이터의 저장을 제어하는 데이터 보호를 위한 시스템이다. 도 1에서, 노드들(10, 20, 30)은 저장 서버들이다. 각 노드(10, 20, 30)는 CPU(11, 21, 31), DRAM(13, 23, 33), 그리고 하나 또는 그보다 많은 저장 드라이브들(12, 22, 32)을 포함한다. 하나 또는 그보다 많은 저장 드라이브들(12, 22, 32)이 듀얼 포트 저장 장치이면, 하나 또는 그보다 많은 저장 드라이브들(12, 22, 32)은 PCIe 스위치 패브릭, 네트워크 패브릭, 또는 다른 적절한 커넥터와 같은 2차 포트를 통해 그들 각각의 CPU(11, 21, 31)와 연결될 수 있다.
데이터를 저장하기 위해, 노드(10)의 CPU(11)는 노드(10)의 국부 드라이브(12)에 쓰기 명령을 발행할 수 있다. 저장될 데이터는 국부 드라이브(12)에 저장되기 전에 노드(10)의 국부 DRAM(13)에 우선 캐시된다.
국부 드라이브(12)에의 저장과 동시에, 노드(10)의 CPU(11)는 동일한 데이터로 노드(20)의 원격 드라이브(22)로의 쓰기를 개시하여 정책-기반 복제 요구들을 만족시킬 수 있다. 노드(10)의 CPU(11)는 노드(20)의 CPU(21)를 초기화하여 데이터를 저장한다. CPU(21)는 CPU(21)를 통해 드라이브(22)에 쓰기 명령을 발행한다. 데이터는 국부 드라이브(22)에 저장되기 전에 노드(20)의 국부 DRAM(23)에 우선 캐시된다. 다른 실시 예들에서, 2차 쓰기는 노드(20)의 CPU(21)가 관여되지 않는 듀얼 포트 드라이브(들)로 구성될 수 있다.
또한, 노드(10)의 CPU(11)는 데이터를 노드(30)의 추가 드라이브들에 맡길 수 있다. CPU(11)는 노드(30)의 CPU(31)를 개시할 수 있으며, CPU(31)는 노드(20)에 대한 것과 동일한 프로세스에 따라 데이터를 국부 드라이브(32)에 기입한다.
도 1에 따른 프로세스에서, 서버 CPU들(11, 21, 31)은 데이터 전송을 조정한다. 따라서, 전송 활동들은 데이터 전송 경로를 따라 국부 CPU 캐시들 및 DRAM을 관여시키며, 다양한 국부 드라이브들에 걸친 저장을 위한 CPU 능력 사용을 필요로 한다. 또한, 다양한 노드들에 걸친 데이터의 저장을 동기화하기 위해 추가적인 소프트웨어가 필요할 수 있다. 예를 들어, 저장 서버 소프트웨어는 동기식 및 비동기식 기능을 제공하기 위해 복제 프로세스의 양 끝을 조정할 수 있다.
도 2는 본 발명의 실시 예에 따른 드라이브-대-드라이브 저장 시스템의 개략도이다. 도 2에서, 노드들(100, 200, 300)은 저장 서버들이다. 각 노드(100, 200, 300)는 CPU(110, 210, 310), DRAM(130, 230, 330), 그리고 하나 또는 그보다 많은 저장 드라이브들(120, 220, 330)을 포함한다. 일부 실시 예들에서, 하나 또는 그보다 많은 저장 드라이브들(120, 220, 320)은 SSD들일 수 있다. 추가적인 실시 예들에서, 하나 또는 그보다 많은 저장 드라이브들(120, 220, 320)은 NVMe SSD들일 수 있다. 일부 실시 예들에서, CPU들(210, 310) 및 DRAM(230, 330)은 배제될 수 있고, 노드들(200, 300)은 저장 드라이브들(220, 320)만을 포함할 수 있다.
하나 또는 그보다 많은 저장 드라이브들(120, 220, 320)은, 예를 들어, 저장 드라이브(120, 220, 320)가 듀얼-포트 저장 장치이면, PCIe 스위치 패브릭, 네트워크 패브릭, 또는 다른 적절한 커넥터와 같은 2차 포트를 통해 그들 각각의 CPU(110, 210, 310)와 연결될 수 있다. 또한, 저장 드라이브들(120, 220, 320)은 저장 장치(120, 220, 320)가 피어-투-피어로 연결되는 PCIe 직접 구성, 스위치 패브릭 구성 또는 임의의 다른 구성에서 서로 연결될 수 있다. 일부 실시 예들에서, 저장 드라이브들(120, 220, 320)은 전용 포트 또는 재프로그램된 스위치 포트를 통해 서로 연결될 수 있다. 저장 드라이브들(120, 220, 320)은 현존하는 프로토콜들 또는 판매자 특화 구현들을 이용하여 통신할 수 있다.
아래에 설명되는 바와 같이, 피어-투-피어 구성의 일부로서 이러한 연결들 및 통신 프로토콜들은 직접 메모리 액세스(DMA) 요청들 및 저장 장치들(120, 220, 320) 사이의 동기화를 구동할 수 있다. 저장 드라이브들(120, 220, 320)은 피어-투-피어 연결성을 위해 구성된 추가적인 구성 옵션들을 노출할 수 있다. 이러한 구성 제어 경로의 예들은 겟(get) 또는 셋(set) 로그_페이지(log_page)(peer_config)이다. 이는 피어-투-피어 로직을 위해 특별히 정의된 새로운 로그 페이지일 것이다. 일부 실시 예들에서, 현존하는, 잘 알려지고 표준화된 로그 페이지인, SMART 로그 페이지가 사용될 수 있다. 피어-투-피어 구성의 일부로서 연결들 및 통신 프로토콜들은 저장 드라이브들(120, 220, 320)이 서로 통신하게 하고, 듀얼 모드로 구성되게 하고, 데이터 전송들을 가능하게 하는 하드웨어 자원들을 공유하게 하고, 그리고, 일부 실시 예들에서, 판매자 특화일 수 있는 전송(transport) 및 시그널링(signaling) 메커니즘을 제공하게 할 수 있다.
도 3은 저장 드라이브들(120, 220, 320)이 전용 포트 또는 재프로그램된 스위치 포트를 통해 연결된 도 2의 실시 예의 개략도이다. 이 구성에서, 원격 드라이브들(220, 320)은 별도의 CPU들(예를 들어, 210, 310)에 연결될 수 있으나, 도 3에 도시된 바와 같이, 별도의 CPU들을 가져야 할 필요는 없다(드라이브들(220, 320)은 호스트 CPU에 직접 연결되지 않고, 대신 그들 각각의 CPU들(220, 320)을 통해 또는 저장 드라이브(120)와 같은 다른 저장 드라이브를 통해 호스트 CPU(110)와 연결되므로, 드라이브들(220, 320)은 원격 드라이브들로 불린다). 이 실시 예에서, 저장 서버(100)는 저장 서버(100)를 호스트 저장 드라이브(120)와 연결된 스위치(150)에 연결하는 루트 컴플렉스 장치(140)를 포함한다. 스위치(150)는 또한 저장 드라이브들(220, 320)에 각각 연결된 스위치들(250, 350)에 연결된다. 스위치들(150, 250, 350)은 PCIe 스위치들 또는 다른 적절한 전용의 또는 재프로그램된 스위치 포트들일 수 있다. 스위치들(150, 250, 350)은, 예를 들어 PCIe 스위치들이 사용되면, 액세스 제어 서비스들(ACS) 또는 적절한 통신 프로토콜을 지원하여 저장 드라이브들(120, 220, 320)이 서로 통신하고 그리고 데이터 전송들을 위한 하드웨어 자원들을 공유하게 한다. 예를 들어, 스위치들(150, 250, 350)이 네트워크 패브릭 구성 내의 네트워크 스위치들이면, 드라이브들(120, 220, 320)은 PCIe 대신에 네트워크 프로토콜을 통해 서로 직접 부착된 네트워크일 수 있다. 이러한 실시 예에서, 동기화를 위한 메모리 액세스들은 사상된(mapped) 네트워크 메모리일 것이다.
일단 피어-투-피어 링크에 연결되면, 도 2 및 도 3의 저장 드라이브들(120, 220, 320)은 통신하여 정책-기반 데이터 전송들을 수행할 수 있다. 저장 드라이브들(120, 220, 320)이 데이터를 서로 직접 전송하므로, 이는, 본질적으로, 저장 드라이브들(120, 220, 320) 사이의 서비스 품질(QoS) 채널을 생성한다.
일 실시 예에서, CPU들(110, 210, 310)은 톱-다운 구성에서 저장 드라이브들(120, 220, 320) 사이의 피어-투-피어 연결을 관리할 수 있다. 예를 들어, 각각의 저장 드라이브들(120, 220, 320)을 위한 CPU(110, 210, 310)는 페어링(pairing)을 위해 드라이브의 피어 액세스를 관리할 수 있다. CPU(110, 210, 310)는 또한 저장 드라이브들(120, 220, 320) 사이의 연관된 스위치들(150, 250, 350)을 프로그램하여, 사용된 통신 프로토콜(예를 들어 PCIe 스위치들이 사용되면 ACS)을 통해 피어-투-피어 연결을 하게 할 수 있다. 또는, 저장 드라이브들(120, 220, 320)이 네트워크(예를 들어, 스위치 패브릭 구성에서)에 있으면, CPU(110, 210, 310)는 네트워크 스위치들을 프로그램하여 피어-투-피어 연결을 하게 할 수 있다. 일부 실시 예들에서, CPU(110)는 셋(set) 로그_페이지(log_page)(peer_config) 명령을 저장 드라이브들(120, 220, 320)에 사용하여, 저장 드라이브들(120, 220, 320)의 피어 연결성 및 보호 그룹에 대해 저장 드라이브들(120, 220, 320)에 지시할 수 있다. 이 명령은 호스트 CPU(110)에 의해 관리되고, 드라이브에서 구현되고, 톱-다운 구성에서만 필요할 수 있다. 각각의 저장 드라이브(120, 220, 320)에 대한 CPU(110, 210, 310)는 또한 에러 경로들을 관리할 수 있다.
대안적인 실시 예에서, 저장 드라이브들(120, 220, 320)은 바텀-업(bottom-up) 구성에서 저장 드라이브들(120, 220, 320) 사이의 피어-투-피어 연결을 관리할 수 있다. 저장 드라이브들(120, 220, 320)은 종속적인 원격 드라이브들의 마스터 제어기를 선출하거나 그렇지 않으면 제공하여, 예를 들어 RAID 대형으로 자기-관리(self-managed) 클러스터를 형성할 수 있다. 일부 실시 예들에서, 저장 드라이브(120)(이하에서 호스트 드라이브(120)로 지칭됨)는 종속된 저장 드라이브들(220, 320)에 대해 마스터 제어기로 활동할 수 있다. 호스트 드라이브(120)는 하나의 관리 시야(view), 그리고 필요하면 하나의 주소 범위를 제공하는 저장 풀 자원들(storage pool resources)을 통합 할 수 있다. 호스트 드라이브(120)가 클러스터 체인에 위치하면, CPU(110) 상의 소프트웨어는 호스트 드라이브(120)를 프로그램할 수 있다. 일부 실시 예들에서, 로그_페이지 명령은 어느 드라이브가 호스트 드라이브(120)인지 그리고 어느 것이 원격 저장 드라이브들(220, 320)인지 명시하고 식별할 수 있다.
바텀-업 구성의 일부 실시 예들에서, 호스트 드라이브(120)는 데이터 흐름을 제어할 수 있고, 그리고 자신의 국부 경로에 데이터를 포함하거나 또는 CPU(110)로부터의 데이터를 말단 저장 장치들(220, 320)에 직접 넘길(push) 수 있다. 넘김 모델의 실시 예는 RAID 구성을 사용할 수 있다. 이러한 실시 예에서, CPU(110)에 연결된 호스트 드라이브(120)는 LBA 공간 및 데이터 이동을 끌어내는 마스터 제어기로 활동한다. EC/RAID0/5에서, 일부 LBA 공간은 호스트 드라이브(120)에 국부적이고 다른 LAB 공간은 원격 저장 드라이브들(220, 320)에 있을 것이다. 국부적인 데이터는 호스트 드라이브(120)에 기입되고, 원격 저장 드라이브들(220, 320)에 있는 LBA 범위들의 데이터는 이들에 넘겨질 수 있다. 여기에서 호스트 드라이브(120)는 데이터 이동을 조정한다.
다른 실시 예들에서, 원격 드라이브들(220, 320)은 데이터를 자신들에게 당길(pull) 수 있다. 이 당김 모델의 실시 예는 제어 메시지들이 저장 드라이브들(120, 220, 320)로 넘겨지고 그리고 데이터가 원격 저장 드라이브들(220, 320)에 의해 당겨지는 RAID1(복제) 구성을 이용할 수 있다.
넘김 및 당김 모델들 모두는 쓰기 트래픽을 호스트 CPU(110)로부터의 데이터 흐름에 따라 동기화한다.
바텀-업 구성의 일부 실시 예들에서, 호스트 드라이브(120)는 논리 블록 주소(LBA) 정보를 제어하고 그리고 호스트 드라이브의 제어 메모리 버퍼(121)(CMB)(도 4 참조)의 메모리 버퍼들을 제어할 수 있다. 추가적인 실시 예들에서, 호스트 드라이브(120)는 에러 및 대체(alternate) 경로들을 관리할 수 있고, 그리고 CPU(110)는 호스트 드라이브(120)에 의해 관리되는 에러 흐름 통지들에 가입할 수 있다. 일부 실시 예들에서, 호스트 드라이브(120)는 가시적인(visible) 드라이브들만의 에러들을 정상 에러 흐름들로서 호스트 CPU(110)에 노출할 수 있다. 다른 실시 예들에서, 호스트 드라이브(120)는 이러한 드라이브들의 에러들을 비가시적으로 하고, 그리고 추가적인 소프트웨어를 필요로 할 수 있는 특별한 통지들을 통해 호스트 CPU(110)에만 알릴 수 있다.
바텀-업 구성에서, 저장 드라이브들(120, 220, 320)이 정책-기반 데이터 보호 스킴을 위한 피어-투-피어 구성에 놓여지면, 이들은 호스트 CPU(110)에 독립적이게(그리고 일부 케이스들에서 투명하게) 자율적으로 구동될 것이다. 저장 드라이브들(120, 220, 320)이 호스트 CPU(110)에 투명한 후자의 경우에, 보호 스킴을 발견하고, 구성하고 그리고 수정하기 위한 외부 메커니즘이 필요하다. 이는, 몇몇의 예를 들어, 별도의 제어 플레인, BMC, 또는 스위치 관리 포트를 통해 달성될 수 있다.
탑-다운 또는 바텀-업 구성에 의해 피어-투-피어 연결이 설립되면, 호스트 드라이브(120)는 호스트 드라이브(120)를 알고 있는 다른 저장 서버들(200, 300)의 하나 또는 그보다 많은 원격 저장 드라이브들(220, 320)에 명령할 수 있는 소프트웨어를 포함한다. 소프트웨어는 도 4에 도시된 바와 같이 호스트 저장 드라이브(120)의 DRAM(121)의 제어 메모리 버퍼(122)에 저장될 수 있다. 제어 메모리 버퍼(122)는 본 발명의 실시 예들의 데이터 전송 메커니즘들을 위해 호스트 CPU(110)에 노출될 수 있는 호스트 드라이브의 DRAM(121) 메모리의 부분인 NVMe 드라이브 정의(definition)이다. CMB는 제어 및 데이터 페이로드 패킷들을 공유하는 데에 사용될 수 있다. 통지 자체는 전송 특화, 예를 들어 PCIe를 위한 TLP들이다. 이 구조는 호스트 드라이브(120)의 제어 메모리 버퍼(122)의 부분이 복제 및 데이터 전송 집결 지역(staging area)으로 수행하게 한다. 제어 메모리 버퍼(122)는 호스트 드라이브(120)에 의해 데이터 페이로드 및 동기화 메모리 포인터들을 노출하는 데에 사용될 수 있다. 호스트 드라이브(120)는 그들의 버퍼 관리 옵션들 및 제어와 함께 하나 또는 그보다 많은 원격 저장 드라이브들(220, 320)을 조정할 것이고, 하나 또는 그보다 많은 원격 저장 드라이브들(220, 320)은 유사하게 응답할 것이다. 호스트 드라이브(120)는 자신의 버퍼 관리 스킴 및 동기화 방법을 이 방식으로 노출하여, 효과적인 버퍼 관리를 구현할 것이다. 그러나 이러한 메커니즘들은 NVMe와 같은 현존하는 프로토콜들의 명세들을 엄격하게 준수하지 않을 수 있으며, 따라서 사설 또는 판매자 특화 프로토콜들로 구현될 수 있다.
이 피어-투-피어 연결은 호스트 CPU들(110, 210, 310)의 작업 부하들을 효과적으로 떠넘김으로써 호스트 CPU 연산 요구들을 줄이고, 그리고 데이터 전송들에서 저장 서버 CPU 연관을 줄이는 결과 저장 시스템 레이턴시를 줄이는데 도움이 된다.
도 5는 도 2 또는 도 3의 드라이브-대-드라이브 저장 시스템을 이용하여 데이터를 저장하기 위한 방법을 보여주는 순서도이다. 데이터를 국부적으로 백업하기 위해, 노드(100)의 CPU(110)는 위에서 도 1에 대해 설명된 것과 유사한 방법으로 데이터를 호스트 드라이브(120)에 저장한다. CPU(110)는 호스트 드라이브(120)에 쓰기 명령을 발행(S1)한다. 저장될 데이터는 호스트 드라이브(120)에 저장되기 전에 우선 노드(100)의 국부 DRAM(130)에 캐시된다.
데이터를 원격으로 저장하기 위해(즉, 데이터를 저장 드라이브들(220, 320)에 저장하기 위해), CPU(110)가 호스트 드라이브(120)에 쓰기 명령을 발행(S1)할 때, 호스트 드라이브(120)는 호스트 CPU(110)에 직접 메모리 액세스(DMA) 요청을 이용하여 기입될 데이터를 DRAM(121)에 전송(S2)하게 하고, 따라서 현재 호스트 서버의 DRAM(130)의 데이터가 호스트 드라이브의 DRAM(121)의 제어 메모리 버퍼(122)에 기입되게 한다. 호스트 드라이브(120)는 또한 기입될 데이터, 그것의 제어 메모리 버퍼(112) 내에서의 위치 및 오프셋, 그리고 명칭공간/LUN, LBA 오프셋, 바이트들의 수, 그리고/또는 저장을 개시하기 위해 필요할 수 있는 데이터에 대한 임의의 다른 정보와 같은 추가적인 상세들에 관한 정보를 하나 또는 그보다 많은 원격 드라이브들(220, 230)에 통지(S3, S4)한다. 통지 자체는 호스트 드라이브(120) 및 원격 드라이브들(220, 320) 사이의 유선 메시지일 수 있다. 호스트 드라이브(120)는 또한 연관된 메모리 블록(들)이 참조되었고 그리고 자신의 추적을 위해 이르게 참조 해제되지 않아야 함을 가리키는 플래그를 설정(예를 들어, 호스트 드라이브(120)는 각 원격 드라이브(220, 320)에 대한 참조 카운트를 증가시킬 수 있고, 정책-기반 데이터 보호 스킴에 따라 데이터를 기입할 수 있다)할 수 있다.
하나 또는 그보다 많은 원격 드라이브들(220, 320)은 수신된 정보를 이용하여, 호스트 드라이브 제어 메모리 버퍼(121)로부터 그들 각각의 메모리(221, 331)로의 DMA 요청을 주어진 정보를 이용하여 구성하고 발행한다. 제공된 정보(예를 들어, 명칭공간/LUN, LBA, 바이트들의 수 등)은 또한 데이터 버퍼 이전의 헤더로서 DMA 요청들에 제공될 수 있다.
개별 DMA가 완료되고, 따라서 원격 저장이 완료되면, 연관된 하나 또는 그보다 많은 원격 드라이브들(220, 320)은 호스트 드라이브(120)에 완료의 신호를 보내고(S7, S8), 호스트 드라이브(120)가 제어 메모리 버퍼(122)의 참조 카운트를 줄이게 한다. 이는 별도의 호출(call)을 이용하여 또는 호스트 드라이브 메모리 포인터들을 원자적으로(atomically) 직접 조종하는 DMA 동작들에 의해 발생할 수 있다.
도 5에 대해 위에서 기술된 바와 같이 전체 프로세스는 저장 서버 노드들(100, 200, 300)에 동일하게 진행될 수 있다.
위의 실시 예들에서, 원격 드라이브들(220, 320)은 활성화된 CMB를 가질 필요가 없다. 그러나 원격 드라이브들(220, 302)이 CMB들을 갖고 그리고 이들이 활성화되면, 이러한 각각의 CMB들은 위에 기술된 넘김 모델에서 사용되어 호스트 드라이브(120)에 의해 페이로드를 복제할 수 있다.
다른 실시 예들에서, 데이터 분산은 호스트 드라이브 대 하나 또는 그보다 많은 원격 드라이브들 대신에 데이지-체인(daisy-chain) 또는 토러스(torus) 방식과 같은 다른 방법들에서 달성될 수 있다. 데이지-체인 및 토러스 토폴로지들 모두는 스위치 없는 상호 연결들이다. 데이지-체인 모델에서, 시스템에 포함된 임의의 수의 저장 드라이브에 대해 드라이브들은 직렬로 연결되고, 호스트 드라이브(120)는 제1 원격 저장 드라이브(예를 들어, 원격 드라이브(220))에 연결되고, 제1 원격 저장 드라이브는 다음 원격 저장 드라이브(예를 들어, 원격 드라이브(320))에 연결된다. 드라이브-대-드라이브 통신은 직접적이고, 표준들 기반 프로토콜을 따를 필요는 없다. USB, 파이어와이어, 썬더볼트, 이더넷과 같은 연결들은 데이지-체인에서 사용되는 다른 예들이다.
토러스 토폴로지에서, 각 저장 드라이브는 드라이브들 사이(1D, 2D, 3D, ND)의 스위치 없이, 병렬 시스템 구성에서 하나보다 많은 다른 저장 드라이브들 과 직접 연결된다. 예를 들어, 이 구성의 실시 예에서, 호스트 드라이브(120)는 원격 저장 드라이브들(220, 320) 모두와 연결되고, 저장 드라이브(220)는 호스트 드라이브(120) 및 원격 저장 드라이브(320)와 연결되고, 원격 저장 드라이브(320)는 호스트 드라이브(120) 및 원격 저장 드라이브(220) 모두에 연결된다. 각 드라이브에서 가용한 데이터 보호 클러스터의 충분한 구성 및 말단(end-point) 정보를 갖고, 데이터는 더 효과적은 방식으로 이들 사이에 흩어질 수 있다. 비용 또한 감소된 하드웨어 요구로 인해 이러한 토폴로지에서 감소될 수 있다. 또한, 이 구성에서 드라이브들의 가까운 근접성은 감소된 레이턴시 및 스케일링(scaling) 장점들을 유도할 수 있다.
추가적인 실시 예들에서, 드라이브들(120, 220, 320)은 제어 밖, 심지어 저장 서버 CPU들(110, 210, 310)의 시야 밖의 사설 네트워크를 추가적으로 구성할 수 있다. 현존하는 통신 프로토콜을 선택하는 것은 호스트 드라이브에 추가적인 하드웨어/펌웨어 자원들을 필요로 할 수 있는 코너 케이스들 및 에러 조건들을 포함하는 현존하는 프로토콜의 모든 요구들을 지키는 것을 필요로 할 수 있다. 그러나 호스트 드라이브 및 하나 또는 그보다 많은 원격 저장 드라이브들이 하나의 판매자로부터인 것이면, 현존하는 프로토콜 제한들의 일부는 강요되지 않는 판매자-특화 방법을 이용하여 완화될 수 있다. 이러한 사설 정의들의 예들은 이더넷 상의 NVMe 및 네트워크 상의 NVMe 판매자 특화 구현들과 같은 패브릭들 상의 공용 NVMe(NVMe-oF) 정의들 및 NVMe의 판매자 특화 구현들이다. PCIe에 대해, DMFT 특화 정의들 및 그것의 필요한 호환성 및 시간 사양들을 제거함으로써, PCI 익스프레스 상의 MCTP가 판매자 특화 구현들로 재정의될 수 있다. 이는 본 발명의 실시 예들과 사용되기 위해 맞추어진 원래 정의들의 골자만 남긴 버전으로 만든다. 다른 실시 예들에서, 호스트 드라이브가 대등한 원격 드라이브(들)와 직접 대화하는 것을 가능하게 하기 위해 네트워크 인터커넥트가 사용될 수 있다. 이 사설 네트워크는 마찬가지로 판매자 특화 정의들로 간결해질 수 있다.
따라서, 위의 예들에 보여진 사설 장치 연결성은, 현재 사용되는 프로토콜 전송들과 비교하여 저장 장치들 사이에서 정보를 더 효율적으로 전달하는 판매자-특화 구동 방법들을 허용하는 공공 사양들(specifications)에 의해 판매자 특화로 그리고 제한되지 않게 만들어질 수 있어서 일관된 성능을 제공한다.
또한, 피어 저장 드라이브들 사이의 판매자 특화 전송 정의로, 드라이브는 자신의 원자성을 SSD의 FTL 계층 및 논리-대-물리 매핑(L2P) 커밋(commit)에 노출할 수 있다. 복제를 위해, 샘플 페이로드가 호스트 드라이브에 도달한 때에, 이는 모든 대등한(peered) 원격 드라이브들이 해당 쓰기 요청에 동기화될 때까지 매핑의 갱신을 지연할 수 있다. 피어들 모두가 성공적으로 쓰기를 커밋하면 피어들로 되돌아가는 플래시 L2P 매핑을 갱신하는 추가적인 동기화 연관 메시지가 있을 것이다. 드라이브가 내부적 구성 정의를 외부 소프트웨어에 노출하지 않고 피어들 및 판매자 피어들 사이에서 드라이브 레이아웃을 온전히 숨기므로, 이것이 가능하다. 이는 원자성이 달성될 수 있는 하나의 방법이다. 또한, 위의 실시 예들은 복제 샘플 세트들과 같은 데이터 보호 샘플 세트들 사이에서 원자성을 제공한다.
위의 실시 예들은 저장 장치들이 CPU의 개입 없이 서로 직접 통신하게 하는 호스트 저장 장치 및 방법을 제공하며, 따라서 통상적으로 서버 CPU가 관여하는 데이터 이동 활동들을 없앤다. 저장 서버 CPU들을 없앰으로써, 저장 서버들은 잠재적으로 더 큰 수의 저장 장치들을 지원할 수 있고, 또는 여전히 동일한 수의 저장 장치들을 지원하면서 CPU들의 전력이 감소될 수 있다. 위의 실시 예들은 또한 다수의 드라이브들 사이를 조정하는 호스트 소프트웨어를 단순화하고, 저장 드라이브들이 호스트 시스템을 더 이상 사용하지 않고도 데이터 전송들을 수행할 수 있으므로 저장 장치 동기화가 일단 수립되면 호스트 소프트웨어는 I/O 성능 및 레이턴시 메트릭들에 영향을 주지 않는다.
본 발명의 실시 예들의 가능한 사용들은, 이에 한정되지 않지만, 데이터 복제, 직접 데이터(direct data)를 위한 스냅샷들, 그리고 간접 데이터(indirect data)를 위한 키 값 타입 사용들을 포함한다.
본 발명의 모범적인 실시 예들이 설명되었지만, 본 발명은 이러한 실시 예들로 한정되지 않아야 하고, 첨부된 청구항들 및 그것들의 등가물들에 의해 아래에서 청구되는 바와 같이, 본 발명의 사상 및 범위 내에서 이 분야에 숙련된 자에 의해 다양한 변경들 및 수정들이 행해질 수 있다.
100, 200, 300: 저장 서버들
110, 210, 310: CPU
120, 220, 320: 저장 드라이브들
130, 230, 330: DRAM
140: 루트 콤플렉스
150, 250, 350: 스위치

Claims (20)

  1. 드라이브-대-드라이브 저장 시스템에 있어서:
    호스트 CPU 및 호스트 저장 드라이브를 포함하는 호스트 서버;
    하나 또는 그보다 많은 원격 저장 드라이브들; 그리고
    상기 호스트 드라이브를 상기 하나 또는 그보다 많은 원격 저장 드라이브들에 연결하는 피어-투-피어 링크를 포함하고,
    상기 호스트 저장 드라이브는 프로세서 및 메모리를 포함하고,
    상기 메모리는, 상기 프로세서에 의해 실행될 때에, 쓰기 명령을 발행하는 상기 호스트 CPU의 적어도 일부에 기반하여, 상기 프로세서가 데이터를 상기 호스트 저장 드라이브로부터 상기 피어-투-피어 링크를 통해 상기 하나 또는 그보다 많은 원격 저장 드라이브들로 전송하게 하는 상기 메모리에 저장된 명령들을 포함하는 시스템.
  2. 제1항에 있어서,
    상기 메모리는 동적 랜덤 액세스 메모리인 시스템.
  3. 제2항에 있어서,
    상기 동적 랜덤 액세스 메모리는 제어 메모리 버퍼를 포함하고, 상기 명령들은 상기 제어 메모리 버퍼에 저장되는 시스템.
  4. 제1항에 있어서,
    상기 피어-투-피어 링크는 상기 호스트 저장 드라이브를 상기 하나 또는 그보다 많은 원격 저장 드라이브들에 연결하는 2차 포트, PCIe 스위치 패브릭, 또는 네트워크 패브릭을 포함하는 시스템.
  5. 제1항에 있어서,
    상기 피어-투-피어 링크는 상기 호스트 저장 드라이브를 상기 하나 또는 그보다 많은 원격 저장 드라이브들에 연결하는 전용 포트 또는 재프로그램된 스위치 포트를 포함하는 시스템.
  6. 제1항에 있어서,
    상기 피어-투-피어 링크는 하나 또는 그보다 많은 특정한 명령들을 통해 상기 메모리에 구성되는 시스템.
  7. 호스트 저장 드라이브에 있어서:
    상기 호스트 저장 드라이브를 하나 또는 그보다 많은 원격 저장 드라이브들에 연결하는 피어-투-피어 링크; 그리고
    프로세서 및 메모리를 포함하고,
    상기 메모리는, 상기 프로세서에 의해 실행된 때에, 상기 프로세서가 데이터를 상기 호스트 저장 드라이브로부터 상기 피어-투-피어 링크를 통해 상기 하나 또는 그보다 많은 원격 저장 드라이브들로 전송하게 하는 상기 메모리에 저장된 명령들을 포함하는 드라이브.
  8. 제7항에 있어서,
    상기 메모리는 동적 랜덤 액세스 메모리인 드라이브.
  9. 제8항에 있어서,
    상기 동적 랜덤 액세스 메모리는 제어 메모리 버퍼를 포함하고, 상기 명령들은 상기 제어 메모리 버퍼에 저장되는 드라이브.
  10. 제7항에 있어서,
    상기 피어-투-피어 링크는 상기 호스트 저장 드라이브를 상기 하나 또는 그보다 많은 원격 저장 드라이브들에 연결하는 2차 포트, PCIe 스위치 패브릭, 또는 네트워크 패브릭을 포함하는 시스템.
  11. 제7항에 있어서,
    상기 피어-투-피어 링크는 상기 호스트 저장 드라이브를 상기 하나 또는 그보다 많은 원격 저장 드라이브들에 연결하는 전용 포트 또는 재프로그램된 스위치 포트를 포함하는 시스템.
  12. 제7항에 있어서,
    상기 피어-투-피어 링크는 하나 또는 그보다 많은 특정한 명령들을 통해 상기 메모리에 구성되는 시스템.
  13. 드라이브-대-드라이브 저장 시스템을 이용하여 데이터를 저장하는 방법에 있어서:
    상기 드라이브-대-드라이브 저장 시스템은 호스트 CPU 및 호스트 저장 드라이브를 포함하는 호스트 서버, 프로세서 및 메모리를 포함하는 상기 호스트 저장 드라이브, 하나 또는 그보다 많은 원격 저장 드라이브들, 그리고 상기 호스트 드라이브를 상기 하나 또는 그보다 많은 원격 저장 드라이브들에 연결하는 피어-투-피어 링크를 포함하되,
    상기 방법은:
    데이터를 호스트 저장 드라이브에 기입하기 위한 쓰기 명령을 개시하는 단계;
    직접 메모리 액세스를 이용하여 상기 데이터를 상기 호스트 저장 드라이브의 상기 메모리로 전송하는 단계; 그리고
    상기 데이터를 상기 호스트 저장 드라이브의 상기 메모리로부터 상기 피어-투-피어 링크를 통해 상기 하나 또는 그보다 많은 원격 드라이브들로 전송하는 단계를 포함하는 방법.
  14. 제13항에 있어서,
    상기 피어-투-피어 링크를 통해 상기 호스트 저장 드라이브를 상기 하나 또는 그보다 많은 원격 저장 드라이브들에 연결하는 단계를 더 포함하는 방법.
  15. 제13항에 있어서,
    통지를 상기 하나 또는 그보다 많은 원격 저장 드라이브들에 트리거하여 상기 데이터에 대한 정보를 제공하는 단계를 더 포함하는 방법.
  16. 제15항에 있어서,
    상기 하나 또는 그보다 많은 원격 저장 드라이브들에서 상기 정보를 수신하고, 그리고 상기 정보에 응답하여 직접 메모리 액세스를 발행하는 단계를 더 포함하는 방법.
  17. 제16항에 있어서,
    상기 정보에 응답하여 상기 직접 메모리 액세스를 완료하고, 그리고 상기 완료를 상기 호스트 저장 드라이브에 알리는 단계를 더 포함하는 방법.
  18. 제13항에 있어서,
    상기 호스트 저장 드라이브의 상기 메모리는 동적 랜덤 액세스 메모리인 방법.
  19. 제18항에 있어서,
    상기 동적 랜덤 액세스 메모리는 제어 메모리 버퍼를 포함하고, 상기 데이터는 상기 제어 메모리 버퍼로부터 전송되는 방법.
  20. 제13항에 있어서,
    상기 피어-투-피어 링크는 상기 호스트 저장 드라이브를 상기 하나 또는 그보다 많은 원격 저장 드라이브들에 연결하는 전용 포트 또는 재프로그램된 스위치 포트를 포함하고, 상기 데이터는 상기 전용 포트 또는 상기 재프로그램된 스위치 포트를 통해 상기 하나 또는 그보다 많은 원격 저장 드라이브들로 각각 전송되는 방법.
KR1020180154812A 2018-03-26 2018-12-04 어레이 내에서 솔리드 스테이트 드라이브들을 자율적으로 관리하는 메커니즘 KR102705791B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862648292P 2018-03-26 2018-03-26
US62/648,292 2018-03-26
US15/957,773 US11321249B2 (en) 2018-03-26 2018-04-19 Mechanism to autonomously manage SSDS in an array
US15/957,773 2018-04-19

Publications (2)

Publication Number Publication Date
KR20190112626A true KR20190112626A (ko) 2019-10-07
KR102705791B1 KR102705791B1 (ko) 2024-09-12

Family

ID=

Also Published As

Publication number Publication date
US11775454B2 (en) 2023-10-03
CN110362515A (zh) 2019-10-22
US20190294565A1 (en) 2019-09-26
US11321249B2 (en) 2022-05-03
TW201945946A (zh) 2019-12-01
US20240020247A1 (en) 2024-01-18
JP2019175445A (ja) 2019-10-10
TWI795491B (zh) 2023-03-11
US20220327068A1 (en) 2022-10-13
JP7311280B2 (ja) 2023-07-19

Similar Documents

Publication Publication Date Title
US11775454B2 (en) Mechanism to autonomously manage SSDs in an array
CN113810312B (zh) 用于管理存储器资源的系统和方法
US11461263B2 (en) Disaggregated memory server
CN110941576B (zh) 具有多模pcie功能的存储控制器的系统、方法和设备
Sharma et al. An introduction to the compute express link (cxl) interconnect
CN107209725A (zh) 处理写请求的方法、处理器和计算机
KR102705791B1 (ko) 어레이 내에서 솔리드 스테이트 드라이브들을 자율적으로 관리하는 메커니즘
TWI850550B (zh) 管理記憶體資源的系統及實行遠端直接記憶體存取的方法
US20190303316A1 (en) Hardware based virtual memory management

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