KR20220060155A - 스토리지 서버, 상기 스토리지의 서버 구동 방법 및 상기 스토리지 서버를 포함하는 데이터 센터 - Google Patents

스토리지 서버, 상기 스토리지의 서버 구동 방법 및 상기 스토리지 서버를 포함하는 데이터 센터 Download PDF

Info

Publication number
KR20220060155A
KR20220060155A KR1020200145767A KR20200145767A KR20220060155A KR 20220060155 A KR20220060155 A KR 20220060155A KR 1020200145767 A KR1020200145767 A KR 1020200145767A KR 20200145767 A KR20200145767 A KR 20200145767A KR 20220060155 A KR20220060155 A KR 20220060155A
Authority
KR
South Korea
Prior art keywords
write command
flush
command
offset
write
Prior art date
Application number
KR1020200145767A
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 삼성전자주식회사
Priority to KR1020200145767A priority Critical patent/KR20220060155A/ko
Priority to US17/353,138 priority patent/US11662949B2/en
Priority to EP21198059.4A priority patent/EP3995968B1/en
Priority to CN202111277019.7A priority patent/CN114443755A/zh
Publication of KR20220060155A publication Critical patent/KR20220060155A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • 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
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1724Details of de-fragmentation performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1737Details of further file system functions for reducing power consumption or coping with limited storage space, e.g. in mobile devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • 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/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/225Hybrid cache memory, e.g. having both volatile and non-volatile portions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/285Redundant cache memory
    • G06F2212/286Mirrored cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/311In host system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms

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

Abstract

스토리지 서버가 제공된다. 상기 스토리지 서버는, 호스트로부터 제공되는 제1 데이터에 대한 라이트 커맨드에 대응하여 복수의 플러시(flush) 라이트 커맨드를 생성하고, 라이트 커맨드에 대응하는 복제 커맨드를 후속 스토리지 서버로 제공하고, 후속 스토리지 서버로부터 복제 커맨드에 대한 동작 완료 신호를 제공받는 프로세서, 복수의 플러시 라이트 커맨드가 로그되는 로그 파일에 대한 프로그램이 수행되는 메모리 및 로그 파일에 로그된 복수의 플러시 라이트 커맨드 중 적어도 일부에 대해 하나의 멀티 오프셋 라이트 커맨드로 제공받고, 멀티 오프셋 라이트 커맨드에 대하여 플러시 동작을 수행하는 스토리지 장치를 포함하되, 프로세서는 동작 완료 신호를 제공받은 후, 로그 파일을 기초로 스토리지 장치에 멀티 오프셋 라이트 커맨드를 제공한다.

Description

스토리지 서버, 상기 스토리지의 서버 구동 방법 및 상기 스토리지 서버를 포함하는 데이터 센터{A STORAGE SERVER, A METHOD OF OPERATING THE SAME STORAGE SERVER AND A DATA CENTER INCLUDING THE SAME STORAGE SERVER}
본 발명은 스토리지 서버, 상기 스토리지 서버의 구동 방법 및 상기 스토리지 서버를 포함하는 데이터 센터에 관한 것이다.
Virtual Machine 및 데이터 센터 등에서 분산 환경으로 블록 서비스를 사용하고 있다. 하지만 블록 서비스는 로컬 블록 서비스를 가정하므로, 리드시 최신 라이트 데이터를 빠르게 읽을 수 있어야 하는 강일치성(Strong Consistency) 특징이 필요하다. 이러한 일치성 수준은, 고도의 신뢰성이 요구되는 데이터베이스와 같은 분야의 응용에서도 나타나는데, 상기 강일치성 특징은 약일치성(Weak Consistency) 특징에 비해 더 많은 라이트를 요구한다.
특히, 분산 환경에서 라이트시 서버/노드 간 복제(Replication) 과정이 필요하기 때문에 라이트 동작과 함께 문맥 교환(Context Switch)이 필요하며 이는 CPU 같은 프로세서에서의 처리 시간(latency) 및 비효율성 증가를 초래해 전체적인 분산 환경의 성능 열화를 발생시킨다.
본 발명이 해결하고자 하는 기술적 과제는, 문맥 교환을 줄여 CPU 효율을 증가시킨 스토리지 서버를 제공하는 것이다.
본 발명이 해결하고자 하는 기술적 과제는, 복수의 라이트 동작을 한번에 요청하는 멀티 오프셋 라이트 커맨드와 관련된 동작을 수행하는 스토리지 서버를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 해당 기술 분야의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 몇몇 실시 예에 따른 스토리지 서버는, 호스트로부터 제공되는 제1 데이터에 대한 라이트 커맨드에 대응하여 복수의 플러시(flush) 라이트 커맨드를 생성하고, 라이트 커맨드에 대응하는 복제 커맨드를 후속 스토리지 서버로 제공하고, 후속 스토리지 서버로부터 복제 커맨드에 대한 동작 완료 신호를 제공받는 프로세서, 복수의 플러시 라이트 커맨드가 로그되는 로그 파일에 대한 프로그램이 수행되는 메모리 및 로그 파일에 로그된 복수의 플러시 라이트 커맨드 중 적어도 일부에 대해 하나의 멀티 오프셋 라이트 커맨드로 제공받고, 멀티 오프셋 라이트 커맨드에 대하여 플러시 동작을 수행하는 스토리지 장치를 포함하되, 프로세서는 동작 완료 신호를 제공받은 후, 로그 파일을 기초로 스토리지 장치에 멀티 오프셋 라이트 커맨드를 제공한다.
상기 기술적 과제를 달성하기 위한 몇몇 실시 예에 따른 스토리지 서버 구동 방법은 호스트로부터 제공되는 제1 데이터에 대한 라이트 커맨드에 대응하여 복수의 플러시 라이트 커맨드를 생성하고, 복수의 플러시 라이트 커맨드를 로그 파일에 로그하고, 로그 동작 이후, 후속 스토리지 서버에 라이트 커맨드에 대응하는 복제 커맨드를 제공하고, 후속 스토리지 서버로부터 복제 커맨드에 대한 동작 완료 신호를 제공받고, 동작 완료 신호를 제공받은 후, 복수의 플러시 라이트 커맨드 중 적어도 일부에 대하여 하나의 멀티 오프셋 라이트 커맨드를 스토리지 장치에 제공하는 것을 포함한다.
상기 기술적 과제를 달성하기 위한 몇몇 실시 예에 따른 데이터 센터(Data Center)는 제1 데이터에 대한 라이트 커맨드를 제공하는 애플리케이션 서버, 라이트 커맨드에 대응하여 복수의 제1 플러시(flush) 라이트 커맨드를 생성하고, 라이트 커맨드에 대응하는 복제 커맨드를 제공하는 제1 프로세서, 복수의 제1 플러시 라이트 커맨드가 로그되는 제1 로그 파일에 대해 프로그램을 수행하는 제1 메모리 및 복수의 제1 플러시 라이트 커맨드 중 적어도 일부에 대한 하나의 제1 멀티 오프셋 라이트 커맨드로 제공받고, 제1 멀티 오프셋 라이트 커맨드에 대하여 제1 플러시 동작을 수행하는 제1 스토리지 장치를 포함하는 제1 스토리지 서버 및 제1 스토리지 서버에서 제공되는 복제 커맨드에 대응하여 복수의 제2 플러시 라이트 커맨드를 생성하고, 제1 스토리지 서버에 동작 완료 신호를 제공하는 제2 프로세서, 복수의 제2 플러시 라이트 커맨드가 로그되는 제2 로그 파일에 대한 프로그램이 수행되는 제2 메모리 및 복수의 제2 플러시 라이트 커맨드 중 적어도 일부에 대해 하나의 제2 멀티 오프셋 라이트 커맨드로 제공받고, 제2 멀티 오프셋 라이트 커맨드에 대하여 제2 플러시 동작을 수행하는 제2 스토리지 장치를 포함하는 제2 스토리지 서버를 포함하되, 제1 프로세서는 동작 완료 신호를 제공받은 후, 제1 로그 파일을 기초로 제1 스토리지 장치에 제1 멀티 오프셋 라이트 커맨드를 제공하고, 제2 프로세서는 동작 완료 신호를 제공한 후, 제2 로그 파일을 기초로 제2 스토리지 장치에 제2 멀티 오프셋 라이트 커맨드를 제공한다.
도 1은 본 발명의 몇몇 실시예들에 따른 데이터 센터를 설명하기 위한 블록도이다.
도 2는 본 발명의 몇몇 실시예들에 따른 스토리지 서버를 설명하기 위한 블록도이다.
도 3은 본 발명의 몇몇 실시예들에 따른 스토리지 서버의 동작을 설명하기 위한 순서도이다.
도 4는 본 발명의 몇몇 실시예들에 따른 데이터 센터의 동작을 설명하기 위한 레더 다이어그램이다.
도 5 내지 도 13은 본 발명의 몇몇 실시예들에 따른 스토리지 서버의 동작을 설명하기 위한 도면들이다.
도 14는 본 발명의 또 다른 몇몇 실시예들에 따른 데이터 센터 내 스토리지 서버를 설명하기 위한 블록도이다.
도 15은 도 14의 실시예의 동작을 설명하기 위한 도면이다.
도 16 내지 도 18은 본 발명의 몇몇 실시예에 따른 데이터 센터의 효과를 설명하기 위한 도면들이다.
이하, 첨부된 도면을 참조하여 본 발명의 기술적 사상에 따른 실시예들에 대해 설명한다. 도 1 내지 도 18의 설명에서 실질적으로 동일한 구성 요소에 대해서는 동일한 도면 부호 사용하며, 해당 구성요소에 대한 중복된 설명은 생략하기로 한다. 또한 본 발명의 여러 도면에 걸쳐서, 유사한 구성요소에 대해서는 유사한 도면 부호가 사용된다.
도 1은 본 발명의 몇몇 실시예들에 따른 데이터 센터를 설명하기 위한 블록도이다.
도 1을 참조하면, 데이터 센터(10)는 각종 데이터를 모아두고 서비스를 제공하는 시설로서, 데이터 스토리지 센터라고 지칭될 수도 있다. 데이터 센터(10)는 검색 엔진 및 데이터 베이스 운용을 위한 시스템일 수 있으며, 은행 등의 기업 또는 정부기관에서 사용되는 컴퓨팅 시스템이고 분산 스토리지 시스템일 수 있다. 데이터 센터(10)는 어플리케이션 서버들(100 내지 100n) 및 스토리지 서버들(200 내지 200m)을 포함할 수 있다. 어플리케이션 서버들(100 내지 100n)의 개수 및 스토리지 서버들(200 내지 200m)의 개수는 실시예에 따라 다양하게 선택될 수 있고, 어플리케이션 서버들(100 내지 100n)의 개수 및 스토리지 서버들(200 내지 200m)의 개수는 서로 다를 수 있다. 복수의 스토리지 서버들(200 내지 200m)는 하나의 클러스터(C)에 포함되어 각각의 어플리케이션 서버들(100 내지 100n)에 의해 구동될 수 있다.
어플리케이션 서버(100) 또는 스토리지 서버(200)는 프로세서(110, 210) 및 메모리(120, 220) 중 적어도 하나를 포함할 수 있다. 스토리지 서버(200)를 예시로 설명하면, 프로세서(210)는 스토리지 서버(200)의 전반적인 동작을 제어할 수 있다. 본원 발명의 몇몇 실시예들에 따른 프로세서(210)들의 구체적인 동작은 후술한다.
프로세서(210)는 메모리(220)에 액세스하여 메모리(220)에 로딩된 명령어 및/또는 데이터를 실행할 수 있다. 메모리(220)는 DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 또는 NVMDIMM(Non-Volatile DIMM)일 수 있다. 마찬가지로, 본원 발명의 몇몇 실시예들에 따른 메모리(220)들의 구체적인 동작은 후술한다.
실시예에 따라, 스토리지 서버(200)에 포함되는 프로세서(210)의 개수 및 메모리(220)의 개수는 다양하게 선택될 수 있다. 일 실시예에서, 프로세서(210)와 메모리(220)는 프로세서-메모리 페어를 제공할 수 있다. 일 실시예에서, 프로세서(210)와 메모리(220)의 개수는 서로 다를 수도 있다. 프로세서(210)는 단일 코어 프로세서 또는 다중 코어 프로세서를 포함할 수 있다. 스토리지 서버(200)에 대한 상기 설명은, 어플리케이션 서버(100)에도 유사하게 적용될 수 있다. 실시예에 따라, 어플리케이션 서버(100)는 스토리지 장치(150)를 포함하지 않을 수도 있다. 스토리지 서버(200)는 적어도 하나 이상의 스토리지 장치(250)를 포함할 수 있다. 스토리지 서버(200)에 포함되는 스토리지 장치(250)의 개수는 실시예에 따라 다양하게 선택될 수 있다.
어플리케이션 서버들(100 내지 100n) 및 스토리지 서버들(200 내지 200m)은 네트워크(300)를 통해 서로 통신할 수 있다. 네트워크(300)는 FC(Fibre Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(300)의 액세스 방식에 따라 스토리지 서버들(200 내지 200m)은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.
일 실시예에서, 네트워크(300)는 SAN(Storage Area Network)와 같은 스토리지 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 이용하고 FCP(FC Protocol)에 따라 구현된 FC-SAN일 수 있다. 다른 예를 들어, SAN은 TCP/IP 네트워크를 이용하고 iSCSI(SCSI over TCP/IP 또는 Internet SCSI) 프로토콜에 따라 구현된 IP-SAN일 수 있다. 다른 실시예에서, 네트워크(300)는 TCP/IP 네트워크와 같은 일반 네트워크일 수 있다. 예를 들어, 네트워크(300)는 FCoE(FC over Ethernet), NAS(Network Attached Storage), NVMe-oF(NVMe over Fabrics) 등의 프로토콜에 따라 구현될 수 있다.
이하에서는, 어플리케이션 서버(100) 및 스토리지 서버(200)를 중심으로 설명하기로 한다. 어플리케이션 서버(100)에 대한 설명은 다른 어플리케이션 서버(100n)에도 적용될 수 있고, 스토리지 서버(200)에 대한 설명은 다른 스토리지 서버(200m)에도 적용될 수 있다.
어플리케이션 서버(100)는 사용자 또는 클라이언트가 저장 요청한 데이터를 네트워크(300)를 통해 스토리지 서버들(200 내지 200m) 중 하나에 저장할 수 있다. 또한, 어플리케이션 서버(100)는 사용자 또는 클라이언트가 리드 요청한 데이터를 스토리지 서버들(200 내지 200m) 중 하나로부터 네트워크(300)를 통해 획득할 수 있다. 예를 들어, 어플리케이션 서버(100)는 웹 서버 또는 DBMS(Database Management System) 등으로 구현될 수 있다.
어플리케이션 서버(100)는 스토리지 서버들(200 내지 200m) 등에 대하여 호스트로서 동작할 수 있다. 어플리케이션 서버(100)는 네트워크(300)를 통해 다른 어플리케이션 서버(100n)에 포함된 메모리(120n) 또는 스토리지 장치(150n)에 액세스할 수 있고, 또는 네트워크(300)를 통해 스토리지 서버(200-200m)에 포함된 메모리(220-220m) 또는 스토리지 장치(250-250m)에 액세스할 수 있다. 이로써, 어플리케이션 서버(100)는 어플리케이션 서버들(100-100n) 및/또는 스토리지 서버들(200-200m)에 저장된 데이터에 대해 다양한 동작들을 수행할 수 있다. 예를 들어, 어플리케이션 서버(100)는 어플리케이션 서버들(100-100n) 및/또는 스토리지 서버들(200-200m) 사이에서 데이터를 이동 또는 복제(Replication)하기 위한 명령어를 실행할 수 있다. 이 때 데이터는 스토리지 서버들(200-200m)의 스토리지 장치로(250-250m)부터 스토리지 서버들(200-200m)의 메모리들(220-220m)을 거쳐서, 또는 바로 어플리케이션 서버들(100-100n)의 메모리(120-120n)로 이동될 수 있다. 네트워크(300)를 통해 이동하는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
스토리지 서버(200)를 예시로 설명하면, 인터페이스(254)는 프로세서(210)와 컨트롤러(251)의 물리적 연결 및 NIC(240)와 컨트롤러(251)의 물리적 연결을 제공할 수 있다. 예를 들어, 인터페이스(254)는 스토리지 장치(250)를 전용 케이블로 직접 접속하는 DAS(Direct Attached Storage) 방식으로 구현될 수 있다. 또한, 예를 들어, 인터페이스(254)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS(Universal Flash Storage), eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
스토리지 서버(200)는 스위치(230) 및 NIC(240)을 더 포함할 수 있다. 스위치(230)는 프로세서(210)의 제어에 따라 프로세서(210)와 스토리지 장치(250)를 선택적으로 연결시키거나, NIC(240)과 스토리지 장치(250)를 선택적으로 연결시킬 수 있다.
일 실시예에서 NIC(240)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(240)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(300)에 연결될 수 있다. NIC(240)는 내부 메모리, DSP, 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(210) 및/또는 스위치(230) 등과 연결될 수 있다. 호스트 버스 인터페이스는, 앞서 설명한 인터페이스(254)의 예시들 중 하나로 구현될 수도 있다. 일 실시예에서, NIC(240)는 프로세서(210), 스위치(230), 스토리지 장치(250) 중 적어도 하나와 통합될 수도 있다.
스토리지 서버(200-200m) 또는 어플리케이션 서버(100-100n)에서 프로세서(110-110n, 210-210m)는 스토리지 장치(130-130n, 250-250m) 또는 메모리(120-120n, 220-220m)로 커맨드를 전송하여 데이터를 프로그램하거나 리드할 수 있다. 이 때 데이터는 ECC(Error Correction Code) 엔진을 통해 에러 정정된 데이터일 수 있다. 데이터는 데이터 버스 변환(Data Bus Inversion: DBI) 또는 데이터 마스킹(Data Masking: DM) 처리된 데이터로서, CRC(Cyclic Redundancy Code) 정보를 포함할 수 있다. 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
스토리지 장치(150-150m, 250-250m)는 프로세서로부터 수신된 리드 커맨드에 응답하여, 제어 신호 및 커맨드/어드레스 신호를 NAND 플래시 메모리 장치(252-252m)로 전송할 수 있다. 이에 따라 NAND 플래시 메모리 장치(252-252m)로부터 데이터를 리드하는 경우, RE(Read Enable) 신호는 데이터 출력 제어 신호로 입력되어, 데이터를 DQ 버스로 출력하는 역할을 할 수 있다. RE 신호를 이용하여 DQS(Data Strobe)를 생성할 수 있다. 커맨드와 어드레스 신호는 WE(Write Enable) 신호의 상승 엣지 또는 하강 엣지에 따라 페이지 버퍼에 래치될 수 있다.
컨트롤러(251)는 스토리지 장치(250)의 동작을 전반적으로 제어할 수 있다. 일 실시예에서, 컨트롤러(251)는 SRAM(Static Random Access Memory)을 포함할 수 있다. 컨트롤러(251)는 라이트 커맨드에 응답하여 낸드 플래시(252)에 데이터를 라이트할 수 있고, 또는 리드 커맨드에 응답하여 낸드 플래시(252)로부터 데이터를 리드할 수 있다. 예를 들어, 라이트 커맨드 및/또는 리드 커맨드는 스토리지 서버(200) 내의 프로세서(210), 다른 스토리지 서버(200m) 내의 프로세서(210m) 또는 어플리케이션 서버(100-100n) 내의 프로세서(110-110n)로부터 제공될 수 있다. DRAM(253)은 낸드 플래시(252)에 라이트될 데이터 또는 낸드 플래시(252)로부터 리드된 데이터를 임시 저장(버퍼링)할 수 있다. 또한, DRAM(253)은 메타 데이터를 저장할 수 있다. 여기서, 메타데이터는 사용자 데이터 또는 낸드 플래시(252)를 관리하기 위한 데이터이다.
스토리지 장치(250)는 보안 또는 프라이버시를 위해 SE(Secure Element)를 포함할 수 있다. 스토리지 장치(250)는 데이터 센터(10a)가 저장하는 저장 데이터에 대한 데이터 베이스 기능을 수행할 수 있다.
도 2는 본 발명의 몇몇 실시예들에 따른 스토리지 서버(200p, 200s)를 설명하기 위한 블록도이다.
본원 발명의 몇몇 실시예에 따른 데이터 센터(10a)는 호스트 애플리케이션 서버(100a), 제1 스토리지 서버(200p) 및 제2 스토리지 서버(200s)를 포함한다.
호스트 애플리케이션 서버(100a)는 사용자 또는 클라이언트가 저장 요청한 데이터(Data)를 기초로 네트워크(300, 도 1 참조)를 통해 스토리지 서버(200p)에 데이터(Data)와 함께 커맨드(CMD)를 제공할 수 있다. 호스트 애플리케이션 서버(100a)는 도 1의 애플리케이션 서버(100-100n) 중 적어도 하나에 대응될 수 있다.
제1 스토리지 서버(200p)는 제1 프로세서(210p), 제1 NVDIMM(220p) 및 제1 스토리지 장치(250p)를 포함할 수 있다. 제2 스토리지 서버(200s)는 제1 프로세서(210s), 제2 NVDIMM(220s) 및 제2 스토리지 장치(250s)를 포함할 수 있다.
본원 발명의 몇몇 실시예들에서, 제1 스토리지 서버(200p) 및 제2 스토리지 서버(200s)는 도 1의 스토리지 서버(200-200m)에 대응한다. 제1 프로세서(210p)와 제2 프로세서(210s)는 도 1의 프로세서(210-210m)에 대응하고, 제1 NVDIMM(220p) 및 제2 NVDIMM(220s)는 도 1의 메모리(220-220m)에 대응하고, 제1 스토리지 장치(250p) 및 제2 스토리지 장치(250s)는 도 1의 스토리지 장치(250-250m)에 대응한다. 제1 스토리지 서버(200p) 및 제2 스토리지 서버(200s)는 동일한 구성을 포함할 수 있고, 제2 스토리지 서버(200s)의 구성은 제1 스토리지 서버(200p)의 구성 설명으로 대체될 수 있다. 또한, 제2 스토리지 서버(200s)는 호스트 애플리케이션 서버(100a)의 관점에서 제1 스토리지 서버(200p)에 대한 후속 스토리지 서버에 해당한다.
제1 프로세서(210p)는 제1 스토리지 서버(200p)로부터 데이터(Data)와 데이터(Data)에 대한 커맨드(CMD) 및 커맨드(CMD)와 관련된 리턴 신호(Return)를 제공받는다. 제1 프로세서(210p)는 제공받은 커맨드(CMD)에 대응하여 추가적인 커맨드(CMD)를 발생하여 외부로 제공할 수 있고, 리턴 신호(Return)를 제공받아 외부로 리턴 신호(Return)를 제공할 수 있다.
제1 NVDIMM(220p)는 제1 버퍼(221p) 및 제1 비휘발성 메모리 장치(222p)를 포함할 수 있고, 제1 비휘발성 메모리 장치(222p)는 제1 로그 파일(223p) 및 제1 펌웨어(224p)를 저장 및 로드하여 제1 로그 파일(223p) 및 제1 펌웨어(224p)에 대해 프로그램을 수행할 수 있다. 상기 제1 비휘발성 메모리 장치(222p)는 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시(flash) 메모리, MRAM(Magnetic RAM), 핀전달토크 MRAM (Spin-Transfer Torque MRAM), FeRAM(Ferroelectric RAM), PRAM(Phase change RAM), 또는 저항 메모리(Resistive RAM(RRAM))일 수 있다.
제1 버퍼(221p)는 재구동(Re-driving) 버퍼로 동작하며, 제1 프로세서(210p)로부터 입력되는 신호/커맨드에 대해 재구동하여 제1 NVDIMM(220p) 내 제1 비휘발성 메모리 장치(222p)에 재구동된 신호/커맨드들을 제공할 수 있다.
제1 로그 파일(223p)에서 제1 스토리지 장치(250p)에 대한 커맨드가 로그될 수 있다. 제1 펌웨어(224p)는 제1 로그 파일(223p)들을 기초로 제1 프로세서(210p)가 멀티 오프셋 라이트 커맨드를 스토리지 장치(250p)에 제공하게 한다. 이외에 제1 펌웨어(224p)는 소프트웨어로 제1 프로세서(210p)를 통해 제1 스토리지 장치(250p)에 동작에 대한 커맨드를 제공한다.
제1 스토리지 장치(250p)는 제1 프로세서(210p)에서 커맨드를 제공받고, 제공받은 커맨드에서 따라 리드/라이트 동작을 수행할 수 있다. 제1 스토리지 장치(250p)에서 프로그램되는 데이터의 종류는 외부에서 입력되는 데이터(Data)와 함께 상기 데이터(Data)에 대한 메타데이터(metadata) 및 할당자(allocator) 등 스토리지 장치에 의해 프로그램될 수 있는 데이터일 수 있고, 상기 데이터 종류의 예시는 본원의 기술적 사상을 제한하지 않는다.
도 3은 본 발명의 몇몇 실시예들에 따른 스토리지 서버의 동작을 설명하기 위한 순서도이다. 도 4는 본 발명의 몇몇 실시예들에 따른 데이터 센터의 동작을 설명하기 위한 레더 다이어그램이다. 도 5 내지 도 13은 본 발명의 몇몇 실시예들에 따른 스토리지 서버의 동작을 설명하기 위한 도면들이다.
도 3 내지 도 5를 참조하면, 제1 스토리지 장치(200p)의 제1 프로세서(210p)는 호스트 애플리케이션 서버(100a)로 부터 제1 데이터(Data A)에 대한 라이트 커맨드(WCMD)를 제공받는다(S110).
제1 프로세서(210p)는 제1 데이터(Data A)에 대한 라이트 커맨드(WCMD)를 수신하고, 상기 라이트 커맨드(WCMD)에 대한 제1 내지 제3 플러시(flush) 라이트 커맨드(1st flush WCMD-3rd flush WCMD)를 제1 로그 파일(223p)에 로그한다(S120).
도 6을 추가적으로 참조하면, 제1 플러시 라이트 커맨드(1st flush WCMD)는 제1 데이터(Data A)에 대한 라이트 커맨드이다. 제1 데이터(Data A)는 제1 데이터 레이아웃(DL_a)에서 호스트가 라이트 요청하는 데이터이다.
제2 플러시 라이트 커맨드(2nd flush WCMD)는 제1 데이터(Data A)에 대한 제1 할당자(Allocator A)의 라이트 커맨드이다. 제3 플러시 라이트 커맨드(3rd flush WCMD)는 제1 데이터(Data A)에 대한 제1 메타데이터(Metadata A)의 라이트 커맨드이다. 제1 할당자(Allocator A)는 제1 데이터(Data A)의 리소스 할당을 구현하기 위한 데이터이다. 제1 메타데이터(Metadata A)는 제1 데이터(Data A)를 관리하기 위한 데이터이다.
제1 프로세서(210p)는 제1 로그 파일(223p)에 제1 플러시 라이트 커맨드(1st flush WCMD)를 로그하고(S121), 제1 로그 파일(223p)에 제2 플러시 라이트 커맨드(2nd flush WCMD)를 로그하고(S122), 제1 로그 파일(223p)에 제3 플러시 라이트 커맨드(3rd flush WCMD)를 로그한다(S123). 상기 로그 동작의 순서는 본원 발명의 동작을 설명하기 위한 일 예시로, 본원의 기술적 사상은 상기 순서에 제한되지 않는다.
도 7을 추가적으로 참조하면, 제1 프로세서(210p)는 제1 로그 파일(223p)에 대한 상기 로그 동작(S120) 완료 후에 제2 스토리지 서버(200s)에 라이트 커맨드(WCMD)에 대한 복제 커맨드(RepCMD)를 제공한다(S130).
제2 프로세서(210s)는 제1 데이터(Data A)에 대한 복제 커맨드(RepCMD)를 수신하고, 상기 복제 커맨드(RepCMD)에 대한 제1 내지 제3 플러시 라이트 커맨드(1st flush WCMD-3rd flush WCMD)를 제2 로그 파일(223s)에 로그한다(S140). 실시예에 따라 제1 내지 제3 플러시 라이트 커맨드(1st flush WCMD-3rd flush WCMD)는 제1 로그 파일(223p)에 로그된 제1 내지 제3 플러시 라이트 커맨드(1st flush WCMD-3rd flush WCMD)와 동일할 수 있다.
제2 프로세서(210s)는 제2 로그 파일(223s)에 제1 플러시 라이트 커맨드(1st flush WCMD)를 로그하고(S141), 제2 로그 파일(223s)에 제2 플러시 라이트 커맨드(2nd flush WCMD)를 로그하고(S142), 제2 로그 파일(223s)에 제3 플러시 라이트 커맨드(3rd flush WCMD)를 로그한다(S143). 상기 로그 동작의 순서는 본원 발명의 동작을 설명하기 위한 일 예시로, 본원의 기술적 사상은 상기 순서에 제한되지 않는다.
도 8을 추가적으로 참조하면, 제2 프로세서(210s)는 제2 로그 파일(223s)에 대한 상기 로그 동작(S140) 완료 후에 제1 스토리지 서버(200p)에 복제 커맨드(RepCMD) 대한 동작 완료 신호(notification signal)를 제공한다(S150).
몇몇 실시예에 따른 제2 프로세서(210s)의 동작 완료 신호(notification signal)는 제1 스토리지 서버(200p)가 제공한 복제 커맨드(RepCMD)에 대한 동작이 완료됨을 의미하고, 이는 제1 스토리지 서버(200p)에 대한 리턴 신호일 수 있다.
제1 프로세서(210p)는 동작 완료 신호(notification signal)의 수신 후에 호스트 애플리케이션 서버(100a)에 라이트 커맨드(WCMD) 대한 리턴 신호를 제공한다(S160). 상기 라이트 커맨드(WCMD) 대한 리턴 신호는 호스트 애플리케이션 서버(100a)가 제공한 라이트 커맨드(WCMD)의 동작이 완료됨을 의미한다.
도 9 및 도 10을 추가적으로 참조하면, 제1 펌웨어(224p)는 제1 로그 파일(223p)에 로그된 커맨드들을 리드한다(S170). 리드된 커맨드에 대응하는 멀티 오프셋 라이트 커맨드를 수행하여, 제1 스토리지 장치(250p)에 대하여 멀티 오프셋 라이트 커맨드에 대응하는 플러시 동작을 수행한다(S180).
제1 로그 파일(223p)은 제1 멀티 오프셋 라이트 커맨드는 라이트 커맨드(WCMD)에 대응하는 도 6의 제1 데이터(Data A), 제1 할당자(Allocator A) 및 제1 메타데이터(Metadata A)가 로그된다.
로그된 커맨드와 관련하여, 로그 시퀀스 넘버(LSN), 동작(operation)의 종류, 논리주소(address), 데이터가 로그될 수 있다. 몇몇 실시예에 따라 로그 시퀀스 넘버(LSN)는 제1 로그 파일(223p)로 로그되는 커맨드의 순서를 의미할 수 있고, 실시예에 따라 커맨드에 대한 인덱스 기능으로 수행될 수 있다.
로그된 커맨드의 동작의 종류에는 입력(Insert), 변경(Update), 삭제(Delete) 등이 있고, 실시예에 따라 동작의 종류가 다양해질 수 있다. 본원 발명의 제1 내지 제3 라이트 커맨드(1st Flush WCMD-3rd Flush WCMD)는 입력 또는 변경 동작에 대응될 수 있다.
논리주소(address)에는 커맨드가 수행되는 데이터가 저장될 논리 주소가 입력될 수 있고 실시예에 따라 각각의 커맨드는 논리 페이지 넘버(LPN)로 로그될 수 있다. 예시적으로, 제1 데이터(Data A)와 제a 논리 페이지 넘버(LPNa)가 함께 로그되고, 제1 할당자(Allocator A)와 제b 논리 페이지 넘버(LPNb)가 함께 로그되고, 제1 메타데이터(Metadata A)와 제c 논리 페이지 넘버(LPNc)가 함께 로그된다.
도 10에서 각각의 커맨드마다 별개의 논리 페이지 넘버(LPN) 단위로 입력되었으나, 실시예를 달리하여 복수의 커맨드에 대하여 하나의 논리 페이지 넘버(LPN) 단위의 데이터가 프로그램될 수 있다.
제1 펌웨어(224p)는, 제1 프로세서(210p)가 제1 내지 제 16 로그 시퀀스 넘버(LSN1-LSN16)에 대응하는 커맨드에 대하여 하나의 제1 멀티 오프셋 라이트 커맨드(1st MO_WCMD)를 발행하도록 제어할 수 있다. 단지 멀티 오프셋 라이트 커맨드가 발행되기 위해 로그되는 커맨드의 수는 실시예에 따라 달라질 수 있고, 미리 지정된 임계값보다 크거나 같은 수의 커맨드가 로그될 경우 멀티 오프셋 라이트 커맨드가 발행될 수 있다(S181).
제1 멀티 오프셋 라이트 커맨드(1st MO_WCMD)는 라이트 커맨드(WCMD)에 대응하는 도 6의 제1 데이터(Data A), 제1 할당자(Allocator A) 및 제1 메타데이터(Metadata A)를 기초로 발행되어 제1 스토리지 장치(250p)에 제공될 수 있다.
도 11은 도 10의 실시예와 다른 실시예의 동작을 설명하는 도면이다. 도 11를 추가적으로 참조하면, 멀티 오프셋 라이트 커맨드가 발행되기 위해 로그되는 커맨드의 수와 관계없이, 제1 펌웨어(224p)는 이전 멀티 오프셋 라이트 커맨드 발행 혹은 라이트 커맨드(WCMD)의 수신 이후, 미리 지정된 임계 시간(T)이 경과된 후 제1 프로세서(210p)가 제2 멀티 오프셋 라이트 커맨드(2nd MO_WCMD)를 발행하도록 제어할 수 있다(S181).
제1 펌웨어(224p)는 도 10과 달리, 제1 프로세서(210p)가 제1 내지 제 12 로그 시퀀스 넘버(LSN1-LSN12)에 대응하는 커맨드에 대하여 하나의 제2 멀티 오프셋 라이트 커맨드(2nd MO_WCMD)를 발행하도록 제어하며, 제1 프로세서(210p)는도 6의 제1 데이터(Data A) 및 제1 할당자(Allocator A)을 기초로 멀티 오프셋 라이트 커맨드를 발행한다.
도 12를 추가적으로 참조하면, 제1 펌웨어(224p)는 제1 스토리지 장치(250p)에 논리주소와 함께 제1 멀티 오프셋 라이트 커맨드(1st MO_WCMD)를 제공할 있다. 제1 스토리지 장치(250p)는 제공된 논리주소를 기초로 멀티 오프셋 라이트 커맨드에 대하여 플러시 동작을 수행한다(S183).
제1 스토리지 장치(250p)의 플러시 동작(S183)은 제1 멀티 오프셋 라이트 커맨드(1st MO_WCMD)에 대응하는 제1 내지 제3 플러시 라이트 커맨드((1st Flush WCMD-3rd Flush WCMD)의 동작을 동시에 수행한다.
몇몇 실시예들에 따른 제1 스토리지 장치(250p)는 멀티 오프셋 라이트 커맨드를 효율적으로 수행하기 위해, 논리주소와 물리주소를 대응시키는 맵핑 정보에 대해 업데이트를 수행하지 않는다. 예시적으로 제a 물리 페이지 넘버(PPNa)에서 제a 논리 페이지 넘버(LPNa)에 대한 제1 데이터(Data A, 도 10 참조)의 프로그램이 수행되고, 이후 제1 프로세서(210p)나 제1 펌웨어(224p)의 맵핑 정보의 업데이트 요청이 없다면 제a 논리 페이지 넘버(LPNa)와 제a 물리 페이지 넘버(PPNa)에 대한 맵핑 정보는 업데이트되지 않는다.
마찬가지로, 제b 물리 페이지 넘버(PPNb)에서 제b 논리 페이지 넘버(LPNb)에 대한 제1 할당자(Allocator A, 도 10 참조)의 프로그램이 수행되고, 이후 제1 프로세서(210p)나 제1 펌웨어(224p)의 맵핑 정보의 업데이트 요청이 없다면 제b 논리 페이지 넘버(LPNb)와 제b 물리 페이지 넘버(PPNb)에 대한 맵핑 정보는 업데이트되지 않는다.
마찬가지로, 제c 물리 페이지 넘버(PPNc)에서 제c 논리 페이지 넘버(LPNc)에 대한 제1 메타데이터(Metadat A, 도 10 참조)의 프로그램이 수행되고, 이후 제1 프로세서(210p)나 제1 펌웨어(224p)의 맵핑 정보의 업데이트 요청이 없다면 제c 논리 페이지 넘버(LPNc)와 제c 물리 페이지 넘버(PPNc)에 대한 맵핑 정보는 업데이트되지 않는다.
따라서, 몇몇 실시예에 따른 제1 스토리지 서버(200p)에서 제1 프로세서(210p)가 처리할 수 있는 논리주소(LBN0-LBNx)와 제1 스토리지 장치(PBN0-PBNy)의 물리주소에 대한 맵핑 정보는 별도의 요청이 없다면 업데이트 되지 않는다.
몇몇 실시예에 따른 제1 스토리지 장치(250p)에서, 제a 물리 페이지 넘버(PPNa)는 제1 스토리지 장치(250p) 내 데이터 페이지 영역에 배치되고, 제b 물리 페이지 넘버(PPNb)는 제1 스토리지 장치(250p) 내 할당자 페이지 영역에 배치되고, 제c 물리 페이지 넘버(PPNc)는 제1 스토리지 장치(250p) 내 메타데이터 페이지 영역에 배치될 수 있다.
도 13을 추가적으로 참조하면, 프로세서는 로그 파일에서 멀티 오프셋 라이트 커맨드에 대응되는 커맨드의 로그를 제거한다(S190). 제1 프로세서(210p)는 제1 로그 파일(223p)에서 제1 멀티 오프셋 라이트 커맨드(1st MO_WCMD)에 대응되는 제1 내지 제3 플러시 라이트 커맨드(1st Flush WCMD-3rd Flush WCMD)의 로그를 제거한다(S191).
도 9 내지 도 13에서, 제1 펌웨어(210p)의 리드 동작(S171) 및 멀티 오프셋 라이트 커맨드(MO_WCMD)의 발행(S181), 제1 스토리지 장치(250p)의 플러시 동작(S183) 및 제1 로그 파일(223p)의 제거 동작(S191)을 도시하지만, 제1 스토리지 서버(210p)의 동작과 대응되면서 제2 스토리지 서버(210s)에서 제2 펌웨어(210s)의 리드 동작(S172) 및 멀티 오프셋 라이트 커맨드(MO_WCMD)의 발행(S182), 제2 스토리지 장치(250s)의 플러시 동작(S184) 및 제2 로그 파일(223s)의 제거 동작(S192)이 수행된다.
따라서, 제2 스토리지 서버(210s)에서 제2 펌웨어(210s)의 리드 동작(S172) 및 멀티 오프셋 라이트 커맨드(MO_WCMD)의 발행(S182), 제2 스토리지 장치(250s)의 플러시 동작(S184) 및 제2 로그 파일(223s)의 제거 동작(S192)은 제1 스토리지 서버(210p)로 대체될 수 있다.
다만, 각각의 제2 펌웨어(210s)의 리드 동작(S172) 및 멀티 오프셋 라이트 커맨드(MO_WCMD)의 발행(S182), 제2 스토리지 장치(250s)의 플러시 동작(S184) 및 제2 로그 파일(223s)의 제거 동작(S192)은 각각의 제1 펌웨어(210p)의 리드 동작(S171) 및 멀티 오프셋 라이트 커맨드(MO_WCMD)의 발행(S181), 제1 스토리지 장치(250p)의 플러시 동작(S183) 및 제1 로그 파일(223p)의 제거 동작(S191)과 독립적으로 수행될 수 있다.
도 14는 본 발명의 또 다른 몇몇 실시예들에 따른 데이터 센터(10b) 스토리지 서버(220p', 220s')를 설명하기 위한 블록도이다.
이하에서, 도 14를 참조하여 본 발명의 또 다른 몇몇 실시예에 따른 데이터 센터(10b) 내 스토리지 서버(200p', 200s')를 설명한다. 도 2에 도시된 스토리지 서버(200p, 200s)들과의 차이점을 중심으로 설명한다.
제1 스토리지 서버(200p')는 제1 DIMM(220p') 및 상기 제1 DIMM(220p')과 분리된 제1 비휘발성 메모리 장치(240p)를 포함한다. 제1 DIMM(220p')는 휘발성 메모리를 포함하고, 상기 휘발성 메모리는 RAM(random access memory), DRAM(dynamic RAM), SRAM(static RAM), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), 또는 TTRAM(Twin Transistor RAM)일 수 있다.
제1 DIMM(220p')는 제1 로그 파일(241p) 및 제1 펌웨어(242p)가 로드되고, 제1 로그 파일(241p) 및 제1 펌웨어(242p)에 대한 프로그램이 수행될 수 있다. 제1 DIMM(220p')은 도 2의 제1 NVDIMM(220p)에 대응될 수 있다.
제1 비휘발성 메모리 장치(240p)는 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시(flash) 메모리, MRAM(Magnetic RAM), 핀전달토크 MRAM (Spin-Transfer Torque MRAM), FeRAM(Ferroelectric RAM), PRAM(Phase change RAM), 또는 저항 메모리(Resistive RAM(RRAM))일 수 있다.
제1 비휘발성 메모리 장치(240p)는 제1 로그 파일(241p) 및 제1 펌웨어(242p)가 저장되고, 제1 비휘발성 메모리 장치(240p)에 저장된 제1 로그 파일(241p) 및 제1 펌웨어(242p)는 제1 DIMM(220p')로 로드될 수 있다. 제1 비휘발성 메모리 장치(240p)는 제1 로그 파일(241p) 및 제1 펌웨어(242p)가 저장된다는 측면에서 도 2의 제1 비휘발성 메모리 장치(222p)에 대응될 수 있다.
제2 스토리지 서버(200s')는 제2 DIMM(220s') 및 상기 제2 DIMM(220s')과 분리된 제2 비휘발성 메모리 장치(240s)를 포함한다. 각각의 제2 DIMM(220s')과 제2 비휘발성 메모리 장치(240s)는 제1 DIMM(220p') 및 제1 비휘발성 메모리 장치(240p)와 대응될 수 있다. 따라서, 제2 DIMM(220s')과 제2 비휘발성 메모리 장치(240s)의 설명은 제1 DIMM(220p') 및 제1 비휘발성 메모리 장치(240p)의 설명으로 대체되는 것은 자명하다.
도 15은 도 14의 실시예의 동작을 설명하기 위한 도면이다. 도 15의 동작은, 도 2의 실시예에서 호스트 애플리케이션 서버(100a)의 라이트 커맨드(WCMD) 제공(도 5 참조) 이전에 수행될 있다.
제1 비휘발성 메모리 장치(240p)에 저장된 제1 로그 파일(241p) 및 제1 펌웨어(242p)는 제1 DIMM(220p')로 로드될 수 있다. 제1 DIMM(220p')에서 로드된 제1 로그 파일(241p) 및 제1 펌웨어(242p)에 대한 프로그램이 수행될 수 있다. 따라서, 제1 DIMM(220p')에서 제1 로그 파일(241p) 및 제1 펌웨어(242p)에 대한 프로그램 수행 전에, 제1 로그 파일(241p) 및 제1 펌웨어(242p)는 제1 DIMM(220p')로 로드된다.
도 16 내지 도 18은 본 발명의 몇몇 실시예에 따른 데이터 센터(10)의 효과를 설명하기 위한 도면들이다.
도 2 및 도 16 내지 도 18를 참조하면, 몇몇 실시예에 따른 제1 및 제2 스토리지 서버(200p, 200s)는 라이트 커맨드(WCMD)에 대하여, 멀티 오프셋 라이트 동작을 수행할 수 있다. 즉, 라이트 커맨드(WCMD)에 대한 플러시 동작을 수행할 수 있다.
도 16을 참조하면, 멀티 오프셋 라이트 동작을 수행하지 못하는 스토리지 서버는 x IOPS(I/O per second)의 동작을 수행하나, 본원 발명의 몇몇 실시예에 따른 제1 및 제2 스토리지 서버(200p, 200s)는 4.54 x IOPS를 수행할 수 있다.
도 17을 참조하면, 멀티 오프셋 라이트 동작을 수행하지 못하는 스토리지 서버는 하나의 I/O 동작을 수행하는데 y초의 시간이 요구되나, 본원 발명의 몇몇 실시예에 따른 제1 및 제2 스토리지 서버(200p, 200s)는 하나의 I/O 동작을 수행하는데 0.3 y초의 시간이 요구된다.
도 17을 참조하면, 멀티 오프셋 라이트 동작을 수행하지 못하는 스토리지 서버의 프로세서는, 48개의 코어로 동작을 수행하는 기준으로, z%의 효율을 보여주나, 본원 발명의 실시예에 따른 제1 및 제2 스토리지 서버(200p, 200s)의 프로세서(210p, 210s)는 1.25z%의 효율을 보여준다.
본원 발명의 몇몇 실시예에 따른 제1 및 제2 스토리지 서버(200p, 200s)는 복수의 플러시 라이트 동작을 동시에 수행하는 멀티 오프셋 라이트 동작을 수행함으로써, 프로세서의 효율을 높일 수 있고 I/O 동작을 수행하는데 필요한 지연 시간을 줄이고, 시간당 I/O 동작의 수행횟수를 높일 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
10: 데이터 센터 100a: 호스트 애플리케이션 서버
200p: 제1 스토리지 서버 200s: 제2 스토리지 서버
210p: 제1 프로세서 210s: 제2 프로세서
220p: 제1 NVDIMM 220s: 제2 NVDIMM
250p: 제1 스토리지 장치 250s: 제2 스토리지 장치

Claims (10)

  1. 호스트로부터 제공되는 제1 데이터에 대한 라이트 커맨드에 대응하여 복수의 플러시(flush) 라이트 커맨드를 생성하고, 상기 라이트 커맨드에 대응하는 복제 커맨드를 후속 스토리지 서버로 제공하고, 상기 후속 스토리지 서버로부터 상기 복제 커맨드에 대한 동작 완료 신호를 제공받는 프로세서;
    상기 복수의 플러시 라이트 커맨드가 로그되는 로그 파일에 대한 프로그램이 수행되는 메모리; 및
    상기 로그 파일에 로그된 상기 복수의 플러시 라이트 커맨드 중 적어도 일부에 대해 하나의 멀티 오프셋 라이트 커맨드로 제공받고, 상기 멀티 오프셋 라이트 커맨드에 대하여 플러시 동작을 수행하는 스토리지 장치를 포함하되,
    상기 프로세서는 상기 동작 완료 신호를 제공받은 후, 상기 로그 파일을 기초로 상기 스토리지 장치에 상기 멀티 오프셋 라이트 커맨드를 제공하는 스토리지 서버.
  2. 제1항에 있어서,
    상기 프로세서는 상기 동작 완료 신호를 제공받은 후에, 상기 호스트에 상기 라이트 커맨드에 대한 리턴 신호를 제공하고,
    상기 프로세서는 상기 리턴 신호의 제공 후에 상기 스토리지 장치에 상기 멀티 오프셋 라이트 커맨드를 제공하는 스토리지 서버.
  3. 제1항에 있어서,
    상기 스토리지 장치는 상기 멀티 오프셋 라이트 커맨드를 제공받고, 상기 멀티 오프셋 라이트 커맨드에 대응하는 복수의 라이트 동작들을 동시에 수행하는 스토리지 서버.
  4. 제1항에 있어서,
    상기 메모리는 비휘발성 메모리이고,
    상기 로그 파일은 상기 메모리에 저장되는 스토리지 서버.
  5. 제1항에 있어서,
    상기 메모리는 휘발성 메모리이고,
    상기 로그 파일은 상기 메모리와 분리된 비휘발성 메모리 장치에 저장되는 스토리지 서버.
  6. 제1항에 있어서,
    상기 복수의 플러시 라이트 커맨드는 제1 플러시 라이트 커맨드 및 제2 플러시 라이트 커맨드를 포함하고,
    상기 제1 플러시 라이트 커맨드는 상기 제1 데이터에 대한 라이트 커맨드이고,
    상기 제2 플러시 라이트 커맨드는 상기 제1 데이터의 메타데이터(metadata)에 대한 라이트 커맨드인 스토리지 서버.
  7. 제1항에 대하여
    상기 로그 파일에 로그된 라이트 커맨드 수가 미리 지정된 임계 로그값보다 크거나 같을 경우, 상기 프로세서는 상기 로그 파일을 기초로 상기 스토리지 장치에 상기 멀티 오프셋 라이트 커맨드를 제공하는 스토리지 서버.
  8. 호스트로부터 제공되는 제1 데이터에 대한 라이트 커맨드에 대응하여 복수의 플러시 라이트 커맨드를 생성하고,
    상기 복수의 플러시 라이트 커맨드를 로그 파일에 로그하고,
    상기 로그 동작 이후, 후속 스토리지 서버에 상기 라이트 커맨드에 대응하는 복제 커맨드를 제공하고,
    상기 후속 스토리지 서버로부터 상기 복제 커맨드에 대한 동작 완료 신호를 제공받고,
    상기 동작 완료 신호를 제공받은 후, 상기 복수의 플러시 라이트 커맨드 중 적어도 일부에 대하여 하나의 멀티 오프셋 라이트 커맨드를 스토리지 장치에 제공하는 것을 포함하는 스토리지 서버 구동 방법.
  9. 제1 데이터에 대한 라이트 커맨드를 제공하는 애플리케이션 서버;
    상기 라이트 커맨드에 대응하여 복수의 제1 플러시(flush) 라이트 커맨드를 생성하고, 상기 라이트 커맨드에 대응하는 복제 커맨드를 제공하는 제1 프로세서,
    상기 복수의 제1 플러시 라이트 커맨드가 로그되는 제1 로그 파일에 대해 프로그램을 수행하는 제1 메모리 및
    상기 복수의 제1 플러시 라이트 커맨드 중 적어도 일부에 대한 하나의 제1 멀티 오프셋 라이트 커맨드로 제공받고, 상기 제1 멀티 오프셋 라이트 커맨드에 대하여 제1 플러시 동작을 수행하는 제1 스토리지 장치를 포함하는 제1 스토리지 서버; 및
    상기 제1 스토리지 서버에서 제공되는 상기 복제 커맨드에 대응하여 복수의 제2 플러시 라이트 커맨드를 생성하고, 상기 제1 스토리지 서버에 동작 완료 신호를 제공하는 제2 프로세서,
    상기 복수의 제2 플러시 라이트 커맨드가 로그되는 제2 로그 파일에 대한 프로그램이 수행되는 제2 메모리 및
    상기 복수의 제2 플러시 라이트 커맨드 중 적어도 일부에 대해 하나의 제2 멀티 오프셋 라이트 커맨드로 제공받고, 상기 제2 멀티 오프셋 라이트 커맨드에 대하여 제2 플러시 동작을 수행하는 제2 스토리지 장치를 포함하는 제2 스토리지 서버를 포함하되.
    상기 제1 프로세서는 상기 동작 완료 신호를 제공받은 후, 상기 제1 로그 파일을 기초로 상기 제1 스토리지 장치에 상기 제1 멀티 오프셋 라이트 커맨드를 제공하고,
    상기 제2 프로세서는 상기 동작 완료 신호를 제공한 후, 상기 제2 로그 파일을 기초로 상기 제2 스토리지 장치에 상기 제2 멀티 오프셋 라이트 커맨드를 제공하는 데이터 센터.
  10. 제9항에 있어서,
    상기 제1 프로세서는 상기 동작 완료 신호를 제공받은 후에, 상기 애플리케이션 서버에 상기 라이트 커맨드에 대한 리턴 신호를 제공하고,
    상기 제1 프로세서는 상기 리턴 신호의 제공 후에 상기 제1 스토리지 장치에 상기 제1 멀티 오프셋 라이트 커맨드를 제공하고,
    상기 제2 프로세서는 상기 리턴 신호의 제공 후에 상기 제2 스토리지 장치에 상기 제2 멀티 오프셋 라이트 커맨드를 제공하는 데이터 센터.
KR1020200145767A 2020-11-04 2020-11-04 스토리지 서버, 상기 스토리지의 서버 구동 방법 및 상기 스토리지 서버를 포함하는 데이터 센터 KR20220060155A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020200145767A KR20220060155A (ko) 2020-11-04 2020-11-04 스토리지 서버, 상기 스토리지의 서버 구동 방법 및 상기 스토리지 서버를 포함하는 데이터 센터
US17/353,138 US11662949B2 (en) 2020-11-04 2021-06-21 Storage server, a method of operating the same storage server and a data center including the same storage server
EP21198059.4A EP3995968B1 (en) 2020-11-04 2021-09-21 A storage server, a method of operating the same storage server and a data center including the same storage server
CN202111277019.7A CN114443755A (zh) 2020-11-04 2021-10-29 存储服务器及其操作方法以及包括存储服务器的数据中心

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200145767A KR20220060155A (ko) 2020-11-04 2020-11-04 스토리지 서버, 상기 스토리지의 서버 구동 방법 및 상기 스토리지 서버를 포함하는 데이터 센터

Publications (1)

Publication Number Publication Date
KR20220060155A true KR20220060155A (ko) 2022-05-11

Family

ID=77989739

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200145767A KR20220060155A (ko) 2020-11-04 2020-11-04 스토리지 서버, 상기 스토리지의 서버 구동 방법 및 상기 스토리지 서버를 포함하는 데이터 센터

Country Status (4)

Country Link
US (1) US11662949B2 (ko)
EP (1) EP3995968B1 (ko)
KR (1) KR20220060155A (ko)
CN (1) CN114443755A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240040507A (ko) * 2022-09-21 2024-03-28 삼성전자주식회사 스토리지 시스템 및 스토리지 시스템의 동작 방법

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7475207B2 (en) 2005-07-14 2009-01-06 Emc Corporation Maintaining write order fidelity on a multi-writer system
US7752173B1 (en) 2005-12-16 2010-07-06 Network Appliance, Inc. Method and apparatus for improving data processing system performance by reducing wasted disk writes
US7778972B1 (en) 2005-12-29 2010-08-17 Amazon Technologies, Inc. Dynamic object replication within a distributed storage system
KR100954603B1 (ko) 2008-05-16 2010-04-26 주식회사 휴원 파일 시스템의 로그 파일 및 상기 파일 시스템의 오류 복구방법
US8862617B2 (en) 2010-02-09 2014-10-14 Google Inc. System and method for replicating objects in a distributed storage system
US8700842B2 (en) 2010-04-12 2014-04-15 Sandisk Enterprise Ip Llc Minimizing write operations to a flash memory-based object store
US9477557B2 (en) 2013-03-28 2016-10-25 Microsoft Technology Licensing, Llc Transaction processing using torn write detection
KR101694980B1 (ko) 2014-01-20 2017-01-23 한국전자통신연구원 데이터 분산 처리 장치 및 방법, 그리고 스토리지 서버
US9292389B2 (en) 2014-01-31 2016-03-22 Google Inc. Prioritizing data reconstruction in distributed storage systems
US11210009B1 (en) * 2018-03-15 2021-12-28 Pure Storage, Inc. Staging data in a cloud-based storage system
KR102197379B1 (ko) 2018-11-14 2020-12-31 인하대학교 산학협력단 분산스토리지 어플리케이션의 저전력 raid 스케쥴링 기법
US11347428B2 (en) * 2019-01-16 2022-05-31 EMC IP Holding Company LLC Solid state tier optimization using a content addressable caching layer
US11392614B2 (en) * 2020-01-15 2022-07-19 EMC IP Holding Company LLC Techniques for performing offload copy operations

Also Published As

Publication number Publication date
US11662949B2 (en) 2023-05-30
CN114443755A (zh) 2022-05-06
EP3995968A1 (en) 2022-05-11
US20220137879A1 (en) 2022-05-05
EP3995968B1 (en) 2024-02-28

Similar Documents

Publication Publication Date Title
US11467739B2 (en) Storage device and operation method thereof
US11741034B2 (en) Memory device including direct memory access engine, system including the memory device, and method of operating the memory device
US11762572B2 (en) Method of operating storage device and method of operating storage system using the same
US11775183B2 (en) Storage device and operation method thereof
US20230153019A1 (en) Operation methods of storage devices, and operation methods of storage systems including hosts and storage devices
US11556279B2 (en) System device, and method for memory interface including reconfigurable channel
US11625193B2 (en) RAID storage device, host, and RAID system
EP3995968A1 (en) A storage server, a method of operating the same storage server and a data center including the same storage server
US11157198B2 (en) Generating merge-friendly sequential IO patterns in shared logger page descriptor tiers
CN117112219A (zh) 主机内存数据访问的方法和装置
US10372347B2 (en) Selectively limiting throughput of test objects that share system resources with production objects
US11200210B2 (en) Method of efficient backup of distributed file system files with transparent data access
US11907568B2 (en) Storage controller, storage device, and operation method of storage device
KR102435910B1 (ko) 스토리지 장치 및 그것의 동작 방법
US11809341B2 (en) System, device and method for indirect addressing
US12008270B2 (en) System, device, and method for memory interface including reconfigurable channel
KR102482116B1 (ko) 연산 스토리지 장치의 메모리 할당 및 보호 방법 및 이를 수행하는 연산 스토리지 장치
US20230084539A1 (en) Computational storage device and storage system including the computational storage device
EP4246330A1 (en) Storage device and operating method thereof
US20240045597A1 (en) Storage device and operation method thereof
EP4318249A1 (en) Storage device and operation method thereof
EP4180935A1 (en) Operation methods of storage devices, and operation methods of storage systems including hosts and storage devices
KR20230069800A (ko) 서든 파워 오프 시 데이터를 백업하기 위한 메모리 시스템 및 그 동작 방법
KR20230172729A (ko) 스토리지 장치 및 이의 동작 방법
KR20220127559A (ko) 다중-스트림을 지원하도록 구성된 스토리지 장치의 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination