KR20210152365A - 데이터 저장 장치, 및 패브릭-부착 저장 장치를 가상화를 위한 시스템 및 방법 - Google Patents

데이터 저장 장치, 및 패브릭-부착 저장 장치를 가상화를 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20210152365A
KR20210152365A KR1020210003870A KR20210003870A KR20210152365A KR 20210152365 A KR20210152365 A KR 20210152365A KR 1020210003870 A KR1020210003870 A KR 1020210003870A KR 20210003870 A KR20210003870 A KR 20210003870A KR 20210152365 A KR20210152365 A KR 20210152365A
Authority
KR
South Korea
Prior art keywords
fabric
data
attached storage
storage device
group
Prior art date
Application number
KR1020210003870A
Other languages
English (en)
Inventor
로날드 창우 이
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20210152365A publication Critical patent/KR20210152365A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2514Translation of Internet protocol [IP] addresses between local and global IP addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9078Intermediate storage in different physical parts of a node or terminal using an external memory or storage device
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2517Translation of Internet protocol [IP] addresses using port numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/60Types of network addresses
    • H04L2101/618Details of network addresses
    • H04L2101/663Transport layer addresses, e.g. aspects of transmission control protocol [TCP] or user datagram protocol [UDP] ports

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

가상화 된 저장소를 제공하는 방법으로서, 상기 방법은 로드 밸런서(load balancer)를 통해 장치와 패브릭-부착 저장 장치 그룹 간의 전송 연결을 설정하는 것, 및 전송 프로토콜을 사용한 전송 연결을 통해 상기 장치와 상기 패브릭-부착 저장 장치 그룹 간에 데이터를 전송하는 것을 포함하되, 상기 패브릭-부착 저장 장치 그룹은 둘 이상의 패브릭-부착 저장 장치를 포함하고 논리적 저장 장치로서 상기 장치에 의해 액세스된다.

Description

데이터 저장 장치, 및 패브릭-부착 저장 장치를 가상화를 위한 시스템 및 방법{DATA STORAGE DEVICES, SYSTEMS, AND METHODS FOR VIRTUALIZING FABRIC-ATTACHED STORAGE DEVICES}
본 개시는 일반적으로 저장 장치에 관한 것이고, 특히 패브릭 부착(fabric-attached) 저장 장치를 가상화하기 위한 시스템 및 방법에 관한 것이다.
패브릭-부착 저장 장치는 저장 장치가 이더넷과 같은 네트워크 패브릭을 통해 호스트와 직접 통신할 수 있게 하는 네트워크 인터페이스를 포함할 수 있다. 패브릭 부착 솔리드 스테이트 드라이브(SSD)는 NVMe-oF(Nonvolatile Memory Express Over Fabric)와 같은 저장 프로토콜을 사용하여 네트워크 패브릭을 통해 데이터를 전송할 수 있다.
이 배경 부분에 개시된 상기 정보는 본 발명의 배경에 대한 이해를 높이기 위한 것일 뿐이므로, 종래 기술을 구성하지 않는 정보를 포함할 수 있다.
본 개시의 실시예들에 따른 과제는 여러 패브릭-부착 장치에 데이터를 배포하는 방법 및 장치를 제공하고자 하는 것이다.
상기 과제를 해결하기 위한 본 개시의 일 실시예에 따른 방법은, 가상화 된 저장소를 제공하는 방법으로서, 로드 밸런서(load balancer)를 통해 장치와 패브릭-부착 저장 장치 그룹 간의 전송 연결을 설정하는 것, 및 전송 프로토콜을 사용한 전송 연결을 통해 상기 장치와 상기 패브릭-부착 저장 장치 그룹 간에 데이터를 전송하는 것을 포함하되, 상기 패브릭-부착 저장 장치 그룹은 둘 이상의 패브릭-부착 저장 장치를 포함하고 논리적 저장 장치로서 상기 장치에 의해 액세스된다.
상기 과제를 해결하기 위한 본 개시의 일 실시예에 따른 저장 시스템은, 제1 패브릭-부착 저장 장치, 제2 패브릭-부착 저장 장치, 및 네트워크 패브릭을 통해 상기 제1 패브릭-부착 저장 장치 및 상기 제2 패브릭-부착 저장 장치에 연결된 로드 밸런서, 상기 로드 밸런서는 상기 제1 패브릭-부착 저장 장치와 상기 제2 패브릭-부착 저장 장치 사이에서 공유되는 전송 연결을 사용하여 장치와 상기 제1 패브릭-부착 저장 장치 및 상기 제2 패브릭-부착 저장 장치 사이에서 데이터를 전송하도록 구성된다.
상기 과제를 해결하기 위한 본 개시의 일 실시예에 따른 데이터 저장 장치는, 데이터 저장 장치에 있어서, 저장 매체, 네트워크 패브릭 인터페이스, 및 상기 네트워크 패브릭 인터페이스를 통해 전송 연결을 지나도록 상기 저장 매체와 장치 사이에서 데이터를 전송하도록 구성된 저장 제어기를 포함하되, 상기 저장 제어기는 패브릭-부착된 다른 데이터 저장 장치와 상기 전송 연결을 공유하도록 구성된다.
본 개시의 실시예들에 따르면, 호스트 CPU에 의해 단일 로직 장치로서 다중 패브릭-부착 저장 장치가 액세스되는 것을 가능하게 할 수 있다.
또한, 패브릭-부착 저장 장치가 TCP 및/또는 RDMA와 같은 전송 프로토콜을 변경하지 않고 집계된 볼륨과 같이 가상화 되도록 할 수 있다.
도면은 반드시 일정한 비율로 그려진 것은 아니며 유사한 구조 또는 기능의 요소는 일반적으로 도면 전체에 걸쳐 예시를 위해 유사한 참조 번호로 표시된다. 도면은 본 명세서에 설명된 다양한 실시 예의 설명을 용이하게 하기 위한 것일 뿐이다. 도면은 본 명세서에 개시된 교시의 모든 측면을 설명하지 않으며 청구항의 범위를 제한하지 않는다. 도면이 흐려지는 것을 방지하기 위해 모든 구성 요소, 연결부 등이 표시되지 않을 수 있으며 모든 구성 요소가 참조 번호를 갖지 않을 수 있다. 그러나, 구성 요소 구성의 패턴은 도면에서 쉽게 알 수 있다. 명세서와 함께 첨부된 도면은 본 개시의 예시적인 실시예들을 예시하고, 상세한 설명과 함께 본 개시의 원리를 설명하는 역할을 한다.
도 1은 본 개시에 따른 하나 이상의 호스트와 패브릭-부착 저장 장치 그룹 사이에 배열된 하나 이상의 로드 밸런서를 포함하는 저장 시스템의 실시예를 도시한다.
도 2는 본 개시에 따른 하나 이상의 호스트와 이에 따라 섀시, 랙 등에 위치하는 패브릭-부착 저장 장치 그룹 사이에 배열된 하나 이상의 로드 밸런서를 포함하는 저장 시스템의 예시적인 실시예를 도시한다.
도 3은 본 개시에 따른 코어 데이터 센터, 에지 데이터 센터, 및/또는 모바일 에지 데이터 센터 등의 2개 이상의 섀시에 걸쳐 분배된 하나 이상의 호스트와 패브릭-부착 저장 장치 그룹 사이에 배열된 하나 이상의 로드 밸런서를 포함하는 저장 시스템을 도시한다.
도 4는 본 개시에 따른 하나 이상의 개시자와 둘 이상의 패브릭-부착 저장 장치 사이의 전송 연결을 분배하기 위한 방법의 예시적인 실시 예에 대한 시퀀스 다이어그램을 도시한다.
도 5는 패브릭-부착 저장 장치들의 그룹으로부터의 데이터가 본 개시에 따른 개시자에게 전송될 수 있는 읽기(read) 동작의 예시적인 실시예에 대한 시퀀스 다이어그램을 도시한다.
도 6은 개시자로부터의 데이터가 본 개시에 따른 로드 밸런서에 의해 패브릭-부착 저장 장치들의 그룹에 분배될 수 있는 쓰기(write) 동작의 예시적인 실시예에 대한 시퀀스 다이어그램을 도시한다.
도 7은 개시자로부터의 데이터가 본 개시에 따른 그룹 내의 디바이스들 중 하나에 의해 패브릭-부착 저장 장치들의 그룹에 분배될 수 있는 쓰기 동작의 다른 예시적인 실시예에 대한 시퀀스 다이어그램을 예시한다.
도 8은 본 개시에 따른 로드 밸런서의 예시적인 실시예를 도시한다.
도 9는 본 개시에 따른 패브릭-부착 저장 장치의 예시적인 실시예를 도시한다.
도 10은 본 개시에 따른 가상화된 저장소를 제공하기위한 방법의 예시적인 실시예의 흐름도를 도시한다.
일부 실시예에서, 패브릭-부착(fabric-attached) 저장 장치는 호스트와(host) 다중 저장 장치들(multiple storage devices) 사이의 개별 연결만을 제공할 수 있는 하나 이상의 전송 프로토콜을 사용할 수 있다. 즉, 호스트와 각 저장 장치 간에 1:1 매핑이 있을 수 있다. 따라서 여러 패브릭-부착 장치에 데이터를 배포하려면 호스트가 여러 저장 장치를 사용하여 여러 전송 연결(transport connection)을 관리해야 할 수 있다. 더욱이, 여러 저장 장치에 걸쳐있는 볼륨의 관리는 호스트의 소프트웨어 스택에서 구현될 수 있다. 이러한 관리 작업들은 입/출력(I/O) 작업 수의 증가와 함께, 호스트가 중앙 처리 장치(CPU) 전력, CPU 오버 헤드, 메모리 등과 같은 더 많은 리소스를 소비하게 할 수 있다.
본 개시에 따른 일부 실시예에서, 패브릭-부착 저장 장치의 그룹은 통합된 볼륨으로 가상화 될 수 있고 따라서 호스트가 단일 논리 저장 장치로서 상기 그룹에 액세스 할 수 있게 한다. 이 투명한 가상화는 예를 들어, 로드 밸런서(load balancer)를 사용하여 네트워크 주소를 공유하고 및/또는 저장 장치 그룹을 통해 전송 연결을 분배함으로써 달성될 수 있다. 일부 실시 예에서, 데이터는 집합된 그룹 내의 저장 장치 사이의 피어-투-피어(peer-to-peer) 데이터 전송없이 호스트와 하나 이상의 개별 패브릭-부착 저장 장치 사이에서 전송될 수 있다.
일부 실시 예에서, 하나 이상의 패브릭-부착 저장 장치는 이더넷(Ethernet), 파이버 채널(Fibre Channel), 인피니밴드(InfiniBand) 등과 같은 네트워크 패브릭을 통해 데이터를 전송할 수 있다. 일부 실시예에서, 로드 밸런서의 사용은 패브릭-부착 저장 장치 그룹이 네트워크 주소, 예를 들어 인터넷 프로토콜(IP) 주소를 공유하도록 할 수 있다. 예를 들어, 그룹의 각 저장 장치에 대해 동일한 IP 주소를 사용하지만, 다른 포트 번호를 사용할 수 있다. 공유 IP 또는 다른 네트워크 주소는 TCP(Transmission Control Protocol), RoCE(Remote Direct Memory Access)를 통한 RDMA(Remote Direct Memory Access) 등과 같은 하나 이상의 전송 프로토콜과 함께 사용될 수 있다. 일부 실시 예에서, 호스트 및 패브릭-부착 저장 장치 그룹은 NVMe-oF(Nonvolatile Memory Express Over Fabric) 프로토콜 또는 로드 밸런서 및 저장 장치에서 사용하는 하나 이상의 전송 프로토콜과 함께 동작할 수 있는 기타 저장 프로토콜을 사용할 수 있다.
일부 실시예에서, 로드 밸런서의 사용은 예를 들어, 전송 창 공간(transport window space)을 분배(distributing)함으로써, 및/또는 전송 프로토콜에 대한 시퀀스 번호, 승인, 전송 요청, 완료 응답 등을 관리함으로써, 패브릭-부착 저장 장치 그룹이 전송 연결을 공유 또는 분배할 수 있도록 할 수 있다. 예를 들어, 호스트에서 그룹에 있는 하나 이상의 패브릭-부착 저장 장치로 쓰기 데이터를 배포하기 위해, 분배 전송 연결을 사용할 수 있다. 예를 들어, 그룹에 있는 하나 이상의 패브릭-부착 저장 장치에서 호스트로 읽기 데이터를 전송하기 위해, 분배 전송 연결을 사용할 수도 있다.
일부 실시 예에서, 전송 연결(transport connection)은 그룹에 대한 1차 저장 장치로 동작할 수 있는 패브릭-부착 저장 장치 중 하나에서 종료될 수 있다. 주 저장 장치는 자신과 호스트 사이, 그리고 그룹의 다른 저장 장치와 호스트 사이의 데이터 전송을 제어 및/또는 관리할 수 있다. 일부 실시예에서, 로드 밸런서는 호스트로부터 그룹 내의 하나 이상의 저장 장치로 직접 쓰기 데이터를 전송할 수 있다. 일부 실시예에서, 그룹 내의 하나 이상의 저장 장치로 직접 전송되는 데이터는 그룹 내의 다른 저장 장치를 통해 전송되지 않을 수 있다. 일부 실시예에서, 로드 밸런서는 호스트에서 1차 저장 장치로 쓰기 데이터를 전송할 수 있으며, 그 다음 쓰기 데이터의 일부 또는 전부를 그룹의 다른 저장 장치 중 하나 이상으로 전달할 수 있다. 일부 실시예는 직접 및 전달된 쓰기 데이터 전송의 조합(combination)을 사용할 수 있다.
도 1은 본 개시에 따른 하나 이상의 호스트와 패브릭-부착 저장 장치 그룹 사이에 배열된 하나 이상의 로드 밸런서를 포함하는 저장 시스템의 실시예를 도시한다. 도 1에 예시된 시스템(100)은 예를 들어, 본 개시에 설명된 방법, 장치, 특징, 기술 등 중 임의의 것을 구현하기 위해 사용될 수 있다. 시스템(100)은 로드 밸런서(104), 및 단일 논리적 저장 장치로서 협력적으로 동작할 수 있는 장치 그룹(106)으로 구성된 2개 이상의 패브릭-부착 저장 장치(108)를 포함할 수 있다. 하나 이상의 호스트(102)로부터의 데이터는 예를 들어, 후술하는 바와 같이 하나 이상의 공유 전송 연결(110)의 동작에 의해 패브릭-부착 저장 장치(108)를 통해 분배될 수 있다. 패브릭-부착 저장 장치(108)는 각각 하나 이상의 네트워크 패브릭 인터페이스를 갖는 하드 디스크 드라이브(HDD), 솔리드 스테이트 드라이브(SSD) 등 또는 이들의 조합과 같은 임의의 유형의 저장 장치를 포함할 수 있다. 예를 들어, 일부 실시 예에서, 하나 이상의 패브릭-부착 저장 장치(108)는 이더넷 인터페이스를 가질 수 있는 이더넷 SSD(ESSD)로서 구현될 수 있다. 일부 실시 예에서, 하나 이상의 패브릭-부착 저장 장치(108)는 NVMe-oF 프로토콜, 또는 로드 밸런서와 저장 장치에 의해 사용되는 하나 이상의 전송 프로토콜과 함께 동작할 수 있는 임의의 다른 저장 프로토콜을 사용할 수 있다.
패브릭-부착 저장 장치(108)는 물리적으로 단일 섀시(chassis), 랙(rack), 데이터 센터(data center) 등에 위치하거나, 섀시, 랙, 데이터 센터 등의 임의의 조합 사이에 분배될 수 있다. 데이터 센터는 에지 데이터 센터, 모바일 에지 데이터 센터, 애드혹 네트워크, 사물 인터넷(IoT; Internet-of-Things) 기반 네트워크 등을 포함한 다양한 위치를 포함할 수 있다. 일부 실시예에서, 패브릭-부착 저장 장치(108)는 섀시, 랙, 데이터 센터 등의 하나 이상의 계층, 또는 이들의 임의의 조합에 걸쳐 분배될 수 있다. 더욱이, 네트워크의 하나 이상의 서브 세트(subsets)(예, 코어 데이터 센터(core datacenter))는 계층 구조(hierarchy)에서 하나 이상의 서브 네트워크(sub-networks)(예, 에지 네트워크(edge network))의 측면을 제어할 수 있다.
패브릭-부착 저장 장치(108)는 하나 이상의 공유 전송 연결(110)을 통해 로드 밸런서(104)에 연결될 수 있다. 로드 밸런서(104)는 하나 이상의 전송 연결(112)을 통해 하나 이상의 호스트(102)에 연결될 수 있다. 하나 이상의 공유 전송 연결(110) 및/또는 전송 연결(112)은 예를 들어 TCP, RoCE 등으로 구현될 수 있다. 하나 이상의 공유 전송 연결(110) 및/또는 전송 연결(112)은 예를 들어 이더넷, 파이버 채널, 인피니 밴드 등 또는 이들의 조합, 및 임의의 수 및/또는 스위치, 라우터 등의 구성을 포함하여 구현될 수 있는 임의의 네트워크 패브릭(114 및/또는 116)을 통해 전달될 수 있다.
일부 실시예에서, 로드 밸런서(104)는 하나 이상의 공유 전송 연결(110) 및/또는 전송 연결(112)을 설정 및/또는 유지할 수 있다. 일부 실시 예에서, 호스트(102)로부터의 전송 연결(112)은 종료없이 로드 밸런서(104)를 통과할 수 있고, 공유 전송 연결(110)로서 계속될 수 있다. 일부 실시예에서, 호스트(102)로부터의 전송 연결(112)은 호스트(102)와 패브릭-부착 저장 장치(108) 사이의 전송 연결을 완료하기 위해 별도의 공유 전송 연결(110)을 설정 및/또는 유지할 수 있는 로드 밸런서(104)에서 종료될 수 있다.
일부 실시예에서, 로드 밸런서(104)는 하드웨어 및/또는 소프트웨어에 대한 수정이 거의 또는 전혀 없이 하나 이상의 상업적으로 이용 가능한 로드 밸런서로 구현될 수 있다. 일부 실시예에서, 로드 밸런서(104)는 본 명세서에 설명되어 있는 하나 이상의 방법, 장치, 특징, 기술 등을 구현하도록 특별히 적응될 수 있는 하드웨어 및/또는 소프트웨어를 포함할 수 있는 하나 이상의 로드 밸런서로 구현될 수 있다.
일부 실시예에서, 로드 밸런서(104), 패브릭-부착 저장 장치(108), 공유 전송 연결(110) 및/또는 전송 연결(112)은 OSI(Open Systems Interconnect) 모델과 같은 네트워크 모델을 적어도 부분적으로 준수할 수 있는 시스템의 계층 4(예, 전송 계층)에서 동작할 수 있다. 일부 실시예에서, 로드 밸런서(104) 중 하나 이상은 TCP/IP 모델과 같은 네트워크 모델에 적어도 부분적으로 부합할 수 있는 시스템의 전송 계층에서 동작할 수 있다. 일부 실시 예에서, 본 개시에 따른 시스템은 하나 이상의 네트워크 모델에 적어도 부분적으로 부합할 수 있거나 임의의 네트워크 모델에 부합하지 않을 수 있다.
본 개시에 따른 일부 가능한 구현 세부 사항을 예시하는 시스템, 프로세스, 방법, 특징, 기술 등의 일부 예시적인 실시예가 아래에 설명된다. 이들 예는 본 개시의 원리를 설명하기위한 목적으로 제공되지만, 원리는 이러한 구현 세부 사항에 제한되지 않는다. 예를 들어, 일부 실시예는 NVMe-oF, TCP, 이더넷, ESSD 등을 사용할 수 있는 시스템의 맥락에서 설명될 수 있지만, 본 개시에 따른 다른 실시예는 다른 유형의 저장, 전송, 및/또는 네트워크 프로토콜, 저장 장치 및/또는 이와 유사한 것으로 구현될 수 있다. 더욱이, 일부 예시적인 실시예는 컴포넌트, 장치 그룹, 장치 그룹 내의 장치 등의 특정 수 및/또는 배열로 예시될 수 있지만, 다른 실시예는 상이한 수 및/또는 배열을 사용할 수 있다.
도 2는 본 개시에 따른 하나 이상의 호스트와 이에 따라 섀시, 랙 등에 위치하는 패브릭-부착 저장 장치 그룹 사이에 배열된 하나 이상의 로드 밸런서를 포함하는 저장 시스템의 예시적인 실시예를 도시한다. 도 2에 예시된 시스템(120)은 하나 이상의 이더넷 스위치(130) 및 임의의 개수의 이더넷 연결(132)을 포함할 수 있는 네트워크 패브릭을 통해 상호 연결될 수 있는 하나 이상의 로드 밸런서(122) 및 둘 이상의 ESSD(126)를 포함할 수 있다. 도 2에 예시된 예에서, 하나 이상의 로드 밸런서(122)는 섀시(128)에 위치할 수 있는 이더넷 스위치(130) 및 ESSD(126)와 별개의 위치에 있을 수 있다. 그러나, 일부 실시예에서, 로드 밸런서(122) 중 하나 이상이 섀시(128)에 위치할 수 있다. 다른 실시예에서, 컴포넌트는 임의의 다른 물리적 구성으로 배열될 수 있다.
하나 이상의 개시자(134)(initiator)는 예를 들어 이더넷, 파이버 채널, 인피니밴드 등 또는 이들의 임의의 조합에 기반한 공용 및/또는 사설 인터넷을 포함할 수 있는 임의의 유형의 네트워크 인프라(136)를 통해 하나 이상의 로드 밸런서(122)에 연결될 수 있다. 호스트라고도 하는 개시자(134)는 데이터를 저장하기 위해 시스템(120)을 사용할 수 있는 임의의 장치, 시스템, 프로세스, 애플리케이션 등을 포함할 수 있다.
둘 이상의 ESSD(126)는 하나 이상의 개시자(134)가 단일 논리 저장 장치로서 그룹(124)에 액세스 할 수 있도록 협력적으로 동작할 수 있는 장치 그룹(124)으로 구성될 수 있다. 따라서, 개시자(134)로부터의 데이터는 개시자(134)에 투명한(transparent) 방식으로 둘 이상의 ESSD(126)에 걸쳐 분배될 수 있다.
개시자(134)로부터의 데이터는 예를 들어 그룹(124)을 통해 공유될 수 있는 하나 이상의 TCP 연결의 동작에 의해 ESSD(126)의 그룹(124)을 통해 분배될 수 있다. 예를 들어, 로드 밸런서(122)는 개시자(134)와 ESSD의 그룹(124) 사이에 TCP 연결을 설정 및/또는 유지하여 개시자(134)가 TCP 연결이 하나 이상의 ESSD(126)에 의해 공유된다는 것을 인식하지 못하도록 할 수 있다. 이는, 예를 들어, 그룹(124)의 모든 ESSD(126)에 대해 동일한 IP 주소를 사용하지만 ESSD(126) 각각에 대해 서로 다른 포트 번호를 사용함으로써 달성될 수 있다. 공유 또는 분배 TCP 연결은 예를 들어 TCP 창 공간을 배포함으로써, 입력 및/또는 출력(I/O) 작업을 위한 TCP 시퀀스 번호(TCP sequence numbers), 승인(acknowledgments), 전송 요청(requests to transmit), 완료 응답(completion responses) 등을 관리함으로써, 일관된 방식으로 관리될 수 있다.
일부 실시예에서, NVMe-oF는 하나 이상의 개시자(134)와 ESSD(126)의 그룹(124) 사이의 데이터 전송을 위한 저장 프로토콜로서 사용될 수 있다. 즉, 데이터는 NVMe 저장 프로토콜을 사용하여 전송될 수 있으며, 이는 TCP 전송 프로토콜을 통해 전달될 수 있으며, IP 네트워크 프로토콜을 사용하여 이더넷 패브릭을 통해 전송될 수 있다. 그러나, 다른 실시예에서, 임의의 다른 프로토콜 및/또는 네트워크 패브릭이 상기 설명된 것들을 대신하거나 그에 추가하여 사용될 수 있다.
도 3은 본 개시에 따른 코어 데이터 센터, 에지 데이터 센터, 및/또는 모바일 에지 데이터 센터 등의 2개 이상의 섀시에 걸쳐 분배된 하나 이상의 호스트와 패브릭-부착 저장 장치 그룹 사이에 배열된 하나 이상의 로드 밸런서를 포함하는 저장 시스템을 도시한다. 도 3에 예시된 시스템(140)은 도 2에 예시된 시스템(120)에 예시된 것과 유사한 구성 요소를 포함할 수 있다. 그러나, 도 3에 도시 된 시스템(140)에서, ESSD(126)의 장치 그룹(124)(예, 동일한 IP 주소를 공유할 수 있음)은 코어 데이터 센터(129)의 섀시(128)에 걸쳐 분배될 수 있다. 다른 장치 그룹(142)은 섀시(128), 에지 데이터 센터(144) 및 모바일 에지 데이터 센터(146) 중 하나에 걸쳐 분배될 수 있다. 네트워크 패브릭은 서브-네트워크 패브릭 (141, 143 및 145)을 포함하도록 계층적으로 확장될 수 있다. 다른 실시예에서, 장치 그룹은 섀시, 랙, 임의 유형의 데이터 센터 등의 임의 조합 사이에 분배될 수 있으며, 임의의 수의 장치 그룹이 사용될 수 있다.
도 4는 본 개시에 따른 하나 이상의 개시자와 둘 이상의 패브릭-부착 저장 장치 사이의 전송 연결을 분배하기 위한 방법의 예시적인 실시 예에 대한 시퀀스 다이어그램을 도시한다. 도 4에 예시된 방법은 예를 들어, 도 1 내지 도 3, 도 8, 및 도 9에 예시된 것과 같은 본 개시에 기재된 임의의 시스템 및/또는 구성 요소와 함께 사용될 수 있다.
도 4에 예시된 실시 예에서, 로드 밸런서(150)는 개시자들(152)과 패브릭-부착 저장 장치(예를 들어, ESSD(154))사이에 전송 연결, 예를 들어 TCP 연결을 분배할 수 있다. 이 방법은 로드 밸런서(150)가 동작401에서 개시자-2로부터 연결 요청 연결(Connect) A를 수신하는 것, 동작402에서 개시자-1로부터 연결 요청 연결 B를 수신하는 것, 동작403에서 개시자-2로부터 연결 요청 연결 C를 수신하는 것, 및 동작404에서 개시자-1로부터 연결 요청 연결 D를 수신하는 것으로 시작할 수 있다. 로드 밸런서(150)가 연결 요청을 ESSD(154)에 분배하는 방법을 결정하는 동안 연결 요청은 버퍼(156)에 큐잉(queued) 될 수 있다.
로드 밸런서(150)는 다양한 요인에 기초하여 연결 요청을 분배할 수 있다. 예를 들어, 일부 실시예에서, 로드 밸런서(150)는 라운드 로빈(round robin), 최소 연결(least connections), 랜덤 분배(random distribution) 등 및/또는 이들의 임의의 조합과 같은 다양한 로드 밸런싱 알고리즘(connection-type load balancing algorithm)을 적어도 부분적으로 연결의 분배를 기반으로 할 수 있다. 일부 실시예에서, 로드 밸런서(150)는 다양한 ESSD(154)에서 이용 가능한 저장의 양에 적어도 부분적으로 연결의 분배를 기반으로 할 수 있다. 일부 실시예에서, ESSD(154)(예, ESSD-1, ESSD-2, ESSD-3 및 ESSD-4)는 단일 논리 장치로서 액세스될 수 있는 장치 그룹을 형성할 수 있다. 일부 실시예에서, 하나 이상의 ESSD(154)는 도 4에 도시되지 않았지만, ESSD(154) 중 대응하는 하나와 함께 단일 논리 장치로서 액세스 될 수 있는 장치 그룹을 형성할 수 있는 하나 이상의 추가 ESSD와 연관 될 수 있다. 일부 실시예에서, 로드 밸런서(150)는 하나 이상의 ESSD(154)와 연관된 장치 그룹에서 이용 가능한 저장의 양을 기반으로 연결의 분배를 기반으로 할 수 있다. 일부 실시예에서, 로드 밸런서(150)는 상기 설명된 요소 및/또는 다른 요소의 임의의 조합에 기초한 연결 분배를 기반으로 할 수 있다.
연결 요청을 배포하는 방법을 결정한 후, 로드 밸런서(150)는 도 4에 도시된 바와 같이 연결 요청을 ESSD(154)로 전달할 수 있다. 구체적으로, 개시자-1의 연결 요청인 연결 B는 동작405에서 ESSD-3로 전달될 수 있고, 연결 요청 개시자-2의 연결 C는 동작406에서 ESSD-1로 전달될 수 있고, 연결 요청 개시자-1의 연결 D는 동작407에서 ESSD-4로 전달될 수 있고, 및 연결 요청 개시자-2의 연결 A는 동작408에서 ESSD-2로 전달될 수 있다.
로드 밸런서(150)는 연결이 설정(established)되었다는 ESSD(154)로부터의 확인(confirmation)을 기다릴 수 있고, 예를 들어 확인이 ESSD(154)로부터 수신된 순서대로 대응되는 개시자(152)에게 확인을 전달할 수 있다. 예를 들어, 연결 요청(연결 A)에 응답하여, ESSD-2는 동작40에서 로드 밸런서(150)에 확인(확인(Established) A)를 전송할 수 있으며, 그러면 동작410에서 확인을 개시자-2에게 전달할 수 있다. 프로세스는 4개의 모든 연결 요청의 확인(확인 A~D)이 개시자(152)에 대해 확인될 때까지 계속될 수 있다.
따라서, 개시자(152)에 의해 요청된 전송 연결은 로드 밸런서(150)에 의해 결정된 바와 같이 ESSD(154)로 확인될 수 있다. 일부 실시예에서, 전송 연결은 통과(pass-through) 구성으로 설정되고 대응하는 ESSD(154)에서 종료될 수 있다.
도 4에 예시된 실시예에서, 동작(operation)은 예시적인 동작이고, 명시 적으로 설명되지 않은 다양한 추가 동작을 포함할 수 있다. 일부 실시예에서, 예시된 동작 중 일부는 생략될 수 있다. 일부 실시예에서, 하나 이상의 동작은 도 4에 예시된 것과 다른 컴포넌트에 의해 수행될 수 있다. 추가적으로, 일부 실시예에서, 동작의 시간적 순서는 변경될 수 있다. 또한 위에서 언급했듯이 도면은 반드시 일정한 비율로 그려진 것은 아니고, 따라서, 요소(elements), 이벤트(events), 시간 간격(time intervals) 등 간의 임의의 비율 및/또는 관계는 네트워크 지연(network delays), 계산 지연(computational delays) 등에 기초하여 더 길거나 더 짧을 수 있다.
도 5는 패브릭-부착 저장 장치들의 그룹으로부터의 데이터가 본 개시에 따른 개시자에게 전송될 수 있는 읽기(read) 동작의 예시적인 실시예에 대한 시퀀스 다이어그램을 도시한다. 도 5에 예시된 방법은 예를 들어, 도 1 내지 도 3, 도 8, 및 도 9에 예시된 것과 같은 본 개시에 기재된 임의의 시스템 및/또는 구성 요소와 함께 사용될 수 있다.
도 5에 예시된 실시예에서, 로드 밸런서(160)는 예를 들어, 개시자(162)와 패브릭-부착 저장 장치(164)(예, ESSD)의 장치 그룹(166) 사이의 TCP 연결과 같이, 공유 전송 연결을 분배할 수 있다. 장치 그룹(166)은 개시자(162)에 대해 투명하게 단일 논리 저장 장치로서 동작하도록 구성될 수 있다.
방법은 개시자(162)가 로드 밸런서(160)에 연결 요청을 전송하는 때인 동작500에서 시작할 수 있다. 로드 밸런서(160)는 동작501에서 ESSD-1로 연결 요청을 전달할 수 있다. 이 예시적인 실시 예에서, ESSD-1은 ESSD-1, ESSD-2, ESSD-3 및 ESSD-4를 포함할 수 있는 장치 그룹에 대한 주 장치(primary device)로 동작할 수 있다. 동작502에서 ESSD-1은 TCP 연결이 설정(Established)되었음을 나타내는 확인(confirmation)을 로드 밸런서(160)로 전송할 수 있다. 로드 밸런서(160)는 그 후 동작503에서 개시자(162)에 확인을 전달할 수 있다. 이 예시적인 실시예에서, TCP 연결은 ESSD-1에서 종료될 수 있지만 분배 포트 공간을 갖는 통과 구성으로 로드 밸런서(160)를 통해 설정될 수 있다. 즉, 그룹의 ESSD(164) 4개 모두 TCP 연결을 통해 수신 및/또는 전송할 때 ESSD 간의 충돌을 피하기 위해 동일한 IP 주소를 사용하지만 다른 포트 번호를 사용할 수 있다.
읽기 동작은 개시자(162)가 동작504에서 읽기 명령(read command)을 전송할 때 시작될 수 있으며, 로드 밸런서(160)는 동작505에서 ESSD-1로 전달할 수 있다. 읽기 명령은 논리 블록 주소(LBA), 읽을 블록 수(LEN), 수신 창 크기(RCV WIN) 등과 같은 하나 이상의 매개 변수를 포함할 수 있다. 이 예에서, 개시자(162)로부터의 읽기 명령은 32개의 블록(LEN=32)의 데이터 읽기를 지정할 수 있으며, 여기서 각 블록은 예를 들어 LBA 0에서 시작하는 512 바이트(bytes)일 수 있다.
읽기 명령에 응답하여, ESSD-1은 예를 들어 매핑 테이블(mapping table), 어레이(array) 및/또는 다른 데이터 구조(data structure)를 참조하여 요청된 읽기 데이터가 ESSD 그룹(166)에서 저장되는 위치를 결정할 수 있다. 매핑 데이터 구조는, 예를 들어, 주 장치 ESSD-1에서 및/또는 주 장치 ESSD-1에 의해서 유지될 수 있다. 일부 실시 예에서, 사본(copies)은 또한 로드 밸런서(160)에서, 및/또는 로드 밸런서(160) 및/또는 장치 그룹(166) 내의 다른 ESSD 중 임의의 것에 의해서 유지될 수 있다.
이 예에서, 읽기 명령에 의해 요청된 데이터는 장치 그룹(166)에 있는 4개의 ESSD 모두에 걸쳐 분배될 수 있다. ESSD(164)로부터 개시자(162)로 데이터를 전송하는 프로세스를 시작하기 위해, ESSD-1은 읽기 명령에 응답하는 데이터를 가질 수 있는 각각의 ESSD(164)에 하나 이상의 읽기 메시지를 전송할 수 있다. 읽기 메시지에는 읽기 논리 블록 주소(RD LBA), 읽을 블록 수(LEN), TCP 시퀀스 번호(Seq), 목적지 IP 주소(DST IP) 및/또는 이와 같은 하나 이상의 매개 변수가 포함될 수 있다. 도 5는 각각 동작506, 동작507 및 동작508에서 ESSD-2, ESSD-3 및 ESSD-4로 전송될 수 있는 읽기 메시지 매개 변수의 예를 예시한다.
일부 실시 예에서, ESSD에 대한 읽기 메시지에 포함된 RD LBA는 ESSD에 대한 로컬 LBA일 수 있다. 즉, 매핑 데이터 구조는 ESSD-1(Primary ESSD)이 요청된 데이터가 자신의 저장 매체에 위치하는 그룹(166)의 다른 ESSD들 각각에게 알려주도록 할 수 있다. 예를 들어, 매핑 데이터 구조의 사본이 각각의 ESSD(164)에서 유지될 수 있는 일부 실시 예에서, ESSD는 그룹(166)에 대한 글로벌 LBA에 기초하여 로컬 LBA를 결정할 수 있다.
읽은 메시지와 함께 전송된 TCP 시퀀스 번호 및 목적지 IP 주소와 같은 매개 변수를 사용하여, 그룹(166)의 각각의 ESSD는 자신의 저장 매체로부터 요청된 데이터를 읽고 로드 밸런서(160)를 통한 분산 TCP 연결을 사용하여 읽기 데이터(read data)를 개시자(162)로 직접 전송할 수 있다. 이것은 예를 들어 ESSD-1이 TCP 시퀀스 0을 사용하여 대략 4096 바이트의 데이터(약 512바이트의 8개 블록)를 로드 밸런서(160)로 전송할 수 있는 동작509에서 예시되는데, 이는 그 다음 동작510에서 개시자(162)로 데이터를 전달할 수 있다. 일부 실시예에서, 읽기 데이터는, 예를 들어, TCP와 함께 NVMe-oF와 같은 저장 프로토콜을 사용하여 전송될 수 있다.
이 예에서, ESSD-3, ESSD-2 및 ESSD-4는 각각 TCP 시퀀스 8192, 4096 및 12,288을 사용하여 동작511, 동작515 및 동작519에서 8개의 데이터 블록을 전송할 수 있다. 그 다음, 데이터 블록은 각각 동작512, 동작516 및 동작520에서 로드 밸런서(160)에 의해 개시자(162)로 전달될 수 있다. 따라서 TCP 수신 창 공간은 서로 다른 ESSD(164)간에 분배될 수 있다. 개시자(162)로부터의 원래 읽기 명령은 대략 32개의 블록(LEN=32)의 데이터 읽기를 지정할 수 있으며, 여기서 각 블록은 대략 총 16K 바이트에 대해 대략 512 바이트일 수 있다. 따라서, 그룹(166)의 각각의 ESSD로부터 약 4096 바이트(Len-4096)의 결과적인 4개의 데이터 전송은 총 약 16K 바이트를 전송할 수 있다.
개시자(162)가 ESSD로부터 읽기 데이터를 수신함에 따라, 동작513, 동작517 및 동작521에 도시된 바와 같이 ESSD-1로 확인 응답(ACK)을 다시 보낼 수 있고, 이는 각각 동작514, 동작518 및 동작522에서 전달될 수 있다. ESSD-1은 최종 ACK를 수신한 후, 동작523에서 읽기 완료 응답(READ Complete Response)을 전송할 수 있으며, 동작524에서 개시자(162)로 전달되어 읽기 동작을 완료할 수 있다.
ESSD(164)가 읽기 데이터를 전송한 순서에 따라 개시자(162)는 TCP 시퀀스 번호를 이용하여 수신된 데이터를 재배열하여 데이터를 원래 순서로 복원할 수 있다.
일부 실시 예에서, I/O 명령 컨텍스트(command context)는, 예를 들어, 로드 밸런서(160) 및/또는 ESSD-1에서 생성 및/또는 유지될 수 있다. 예를 들어, 읽기 작업의 시작 부분에 읽기 명령이 수신된 후 읽기 명령 완료 후 폐기되는 경우 명령 컨텍스트가 생성될 수 있다. 명령 컨텍스트는 ESSD(164) 중 어느 것이 읽기 명령에 응답하는 데이터를 포함하는지, 어느 ESSD(164)가 개시자(162)로부터 수신된 확인 응답 등 읽기 데이터를 전송했는지 추적할 수 있는 정보를 포함할 수 있다.
일부 실시예에서, 읽기 데이터의 적어도 일부는 개시자(162) 이외의 위치로 전송될 수 있다. 예를 들어, 일부 실시예에서, 개시자(162)로부터의 읽기 명령은 개시자(162)와 상이한 제3자에 대한 것일 수 있는 목적지 IP 주소를 포함할 수 있다. 이러한 실시예에서, 제3자 목적지 IP 주소는 읽기 메시지에서 ESSD(164)로 전달될 수 있고, ESSD(164)는 로드 밸런서(160)를 통해 제3자 목적지 IP로 읽기 데이터를 직접 전송할 수 있다. 예를 들어, 이러한 실시예는 개시자(162)가 제3자 사용자로의 스트리밍 데이터(streaming data) 흐름을 관리하기 위해 메타 데이터 서버로서 동작할 수 있는 비디오 스트리밍 및/또는 게임 애플리케이션에서 유용하다.
도 5에 예시된 실시 예에서, 동작은 예시적인 동작이고, 명시적으로 설명되지 않은 다양한 추가 동작을 포함할 수있다. 일부 실시예에서, 예시된 동작 중 일부는 생략될 수 있다. 일부 실시예에서, 하나 이상의 동작은 도 5에 예시된 것과 다른 컴포넌트에 의해 수행될 수 있다. 예를 들어, 일부 실시예에서, 하나 이상의 읽기 메시지가 1차 ESSD 대신에 또는 이에 추가하여 로드 밸런서(160)로부터 전송될 수 있다. 다른 예로서, 일부 실시예에서, 응답 중 적어도 일부는 1차 ESSD 대신에 또는 이에 추가하여 로드 밸런서(160)에 의해 축적될 수 있다. 추가적으로, 일부 실시예에서, 동작의 시간적 순서는 변경될 수 있다. 또한 위에서 언급했듯이 도면은 반드시 일정한 비율로 그려진 것은 아니고, 따라서, 요소(elements), 이벤트(events), 시간 간격(time intervals) 등 간의 임의의 비율 및/또는 관계는 네트워크 지연(network delays), 계산 지연(computational delays) 등에 기초하여 더 길거나 더 짧을 수 있다.
도 6은 개시자로부터의 데이터가 본 개시에 따른 로드 밸런서에 의해 패브릭-부착 저장 장치들의 그룹에 분배될 수 있는 쓰기(write) 동작의 예시적인 실시예에 대한 시퀀스 다이어그램을 도시한다. 도 6에 예시된 방법은 예를 들어, 도 1 내지 도 3, 도 8, 및 도 9에 예시된 것과 같은 본 개시에 기재된 임의의 시스템 및/또는 구성 요소와 함께 사용될 수 있다.
도 6에 도시된 실시예에서, 도 5에 예시된 실시예에서 설명된 것과 유사한 방식으로, 분배 전송 연결은(distributed transport connection) 로드 밸런서(170)를 통해 패브릭-부착 저장 장치(예를 들어, ESSD(174))의 개시자(172)와 장치 그룹(176) 사이에 설정될 수 있다. 또한 도 5에 예시된 실시예와 유사하게, 도 6에 예시된 장치 그룹(176)은 개시자(172)에 대해 투명하게 단일 논리 저장 장치로서 동작하도록 구성될 수 있으며, ESSD-1은 ESSD-1, ESSD-2, ESSD-3 및 ESSD-4를 포함할 수 있는 장치 그룹(176)에 대한 주 장치로 동작할 수 있다.
쓰기 동작(write operation)은 개시자(172)가 동작604에서 쓰기 명령(write command)을 전송할 때 시작될 수 있으며, 동작605에서 로드 밸런서(170)는 ESSD-1로 전달할 수 있다. 쓰기 명령은 논리 블록 주소(LBA), 읽을 블록 수(LEN), 수신 창 크기(RCV WIN) 등과 같은 하나 이상의 매개 변수를 포함할 수 있다. 이 예에서, 개시자(172)로부터의 쓰기 명령은 약 32개의 블록(LEN=32)의 데이터 쓰기를 지정할 수 있으며, 여기서 각 블록은, 예를 들어, LBA 0에서 시작하는 약 512 바이트일 수 있다.
일부 실시예들에서, ESSD-1은 동작606, 동작607 및 동작608에서 각각 ESSD-2, ESSD-3 및 ESSD-4에 수신한 통지에 관한 하나 이상의 데이터(data coming notifications)를 전송할 수 있다.
동작609에서, ESSD-1은 동작610에서 개시자(172)로 전달될 수 있는 로드 밸런서(170)에 R2T (ready-to-transfer) 통지를 전송할 수 있다. R2T 통지는 ESSD의 그룹(176)이 RAID-0(1 스트라이프(Stripe)), 수신창 크기(RCV WIN) 등에 대해 구성될 수 있다는 표시기(indicator)와 같은 하나 이상의 매개 변수를 포함할 수 있다.
동작611에서 개시자(172)는 헤더 및 데이터 부분을 포함할 수 있는 쓰기 데이터(178)를 버퍼(180)에 저장할 수 있는 로드 밸런서(170)로 전송할 수 있다. 쓰기 데이터는 쓰기 데이터 길이(WR DATA LEN) 및/또는 다른 매개 변수와 같은 하나 이상의 매개 변수를 동반할 수 있다. 일부 실시예에서, 쓰기 데이터는, 예를 들어, TCP와 함께 NVMe-oF와 같은 저장 프로토콜을 사용하여 전송될 수 있다.
동작612에서, 로드 밸런서(170)는 ESSD(174) 사이의 쓰기 데이터의 경계(demarcation) 및/또는 분배(distribution)를 결정할 수 있다. 경계 및/또는 분배는 다양한 요인을 기반으로 할 수 있다. 예를 들어, 일부 실시예에서, 로드 밸런서(170)는 각각의 ESSD(174)에서 이용 가능한 스토리지의 양에 적어도 부분적으로 경계 및/또는 분배를 기초로 할 수 있다. 일부 실시예에서, 로드 밸런서(170)는 라운드 로빈(round robin), 최소 연결(least connections), 랜덤 분배(random distribution) 등 및/또는 이들의 임의의 조합과 같은 다양한 로드 밸런싱 알고리즘(connection-type load balancing algorithm)을 적어도 부분적으로 연결의 분배를 기반으로 할 수 있다. 일부 실시예에서, 로드 밸런서(170)는 전술한 인자 및/또는 다른 인자의 임의의 조합에 근거하여 경계 및/또는 분배를 기반으로 할 수 있다.
쓰기 데이터의 경계 및/또는 분배를 결정한 후, 로드 밸런서(170)는 쓰기 데이터 부분(182, 184, 186, 188)을 ESSD-1, ESSD-2, ESSD-3 및 ESSD-4는 분배 전송 연결을 통해 각각 동작613, 동작614, 동작615 및 동작616에서 수행된다. 쓰기 데이터 부분(182, 184, 186, 188) 각각은 대응하는 헤더 및 데이터 부분을 포함할 수 있다. 이 예에서, 기록 데이터는 그룹(176)의 모든 4개의 ESSD(174) 사이에 분배되지만, 다른 상황에서 기록 데이터는 임의의 수의 ESSD(174) 사이에 임의의 방식으로 분배될 수 있다.
일부 실시예에서, ESSD-1은 동작617, 동작618 및 동작619 버퍼(189)로에서 수신될 수 있는 데이터 수신 확인을 축적할 수 있다. ESSD-1은 그 다음 동작620에서 로드 밸런서(170)에 쓰기 완료 응답(WRITE Complete Response)을 전송할 수 있으며, 이는 동작621에서 개시자(172)로 전달될 수 있으며, 이에 의해 데이터 쓰기 동작을 완료할 수 있다.
도 6에 예시된 실시예에서, 동작은 예시적인 동작이고, 명시 적으로 설명되지 않은 다양한 추가 동작을 포함할 수 있다. 도 5에 예시된 실시 예에서, 동작은 예시적인 동작이고, 명시적으로 설명되지 않은 다양한 추가 동작을 포함할 수있다. 일부 실시예에서, 예시된 동작 중 일부는 생략될 수 있다. 일부 실시예에서, 하나 이상의 동작은 도 5에 예시된 것과 다른 컴포넌트에 의해 수행될 수 있다. 예를 들어, 일부 실시예에서, 데이터 수신 통지가 생략될 수 있다. 다른 예로서, 일부 실시예에서, 수신된 확인 응답 데이터는 ESSD-1 대신에 또는 이에 추가하여 로드 밸런서(170)에 축적될 수 있다. 추가적으로, 일부 실시예에서, 동작의 시간적 순서는 변경될 수 있다. 또한 위에서 언급했듯이 도면은 반드시 일정한 비율로 그려진 것은 아니고, 따라서, 요소(elements), 이벤트(events), 시간 간격(time intervals) 등 간의 임의의 비율 및/또는 관계는 네트워크 지연(network delays), 계산 지연(computational delays) 등에 기초하여 더 길거나 더 짧을 수 있다.
도 7은 개시자로부터의 데이터가 본 개시에 따른 그룹 내의 디바이스들 중 하나에 의해 패브릭-부착 저장 장치들의 그룹에 분배될 수 있는 쓰기 동작의 다른 예시적인 실시예에 대한 시퀀스 다이어그램을 예시한다. 도 7에 예시된 방법은 예를 들어, 도 1 내지 도 3, 도 8, 및 도 9에 예시된 것과 같은 본 개시에 기재된 임의의 시스템 및/또는 구성 요소와 함께 사용될 수 있다.
도 7에 예시된 실시예에서, 분배 전송 연결(distributed transport connection)은 도 5 및 도 6에 예시된 실시예에 대해 설명된 것과 유사한 방식으로, 로드 밸런서(190)를 통해 개시자(192)와 패브릭-부착 저장 장치(194)(예, ESSD)의 장치 그룹(196) 사이에 설정될 수 있다. 또한, 도 5 및 도 6에 예시된 실시 예와 유사하게, 도 7에 도시된 장치 그룹(196)은 개시자(192)에 투명하게 단일 논리 저장 장치로서 동작하도록 구성될 수 있으며, ESSD-1은 ESSD-1, ESSD-2, ESSD-3 및 ESSD-4를 포함할 수 있는 장치 그룹(196)에 대한 주 장치로 동작할 수 있다.
도 7에 도시된 실시예에서, 쓰기 동작(write operation)은 개시자(192)가 동작704에서 쓰기 명령(write command)을 전송할 때 시작될 수 있고, 로드 밸런서(190)는 동작705에서 ESSD-1로 전달할 수 있다. 쓰기 명령은 논리 블록 주소(LBA), 읽을 블록 수(LEN), 수신 창 크기(RCV WIN) 등과 같은 하나 이상의 매개 변수를 포함할 수 있다. 이 예에서, 개시자(192)로부터의 쓰기 명령은 대략 32개의 블록(LEN=32)의 데이터 쓰기를 지정할 수 있으며, 여기서 각 블록은, 예를 들어, LBA 0에서 시작하는 대략 512 바이트일 수 있다. 일부 실시예에서, 쓰기 데이터는 예를 들어 TCP와 함께 NVMe-oF와 같은 저장 프로토콜을 사용하여 전송될 수 있다.
동작706에서, ESSD-1은 개시자(192)로부터 쓰기 데이터를 수신하기 위해 이용 가능한 버퍼 공간이 얼마나 많은지를 결정할 수 있다. 동작707에서, ESSD-1은 동작708에서 개시자(192)로 전달될 수 있는 로드 밸런서(190)에 R2T(ready-to-transfer) 통지를 전송할 수 있다. R2T 통지는 ESSD 그룹(196)이 RAID-0(1 스트라이프(Stripe)), 수신 창 크기(RCV WIN) 등에 대해 구성될 수 있다는 표시기(indicator)와 같은 하나 이상의 매개 변수를 포함할 수 있다. 일부 실시예에서, 하나 이상의 매개 변수는 ESSD-1이 얼마나 많은 버퍼 공간을 이용할 수 있는지에 대한 정보를 포함할 수 있다.
동작709에서 개시자(192)는 헤더 및 데이터 부분을 포함할 수 있는 쓰기 데이터(197)를 동작710에서 ESSD-1로 전달할 수 있는 로드 밸런서(190)로 전송할 수 있다. 쓰기 데이터는 쓰기 데이터 길이(WR DATA LEN) 및/또는 다른 매개 변수와 같은 하나 이상의 매개 변수를 동반할 수 있다. 주 저장 장치 ESSD-1은 버퍼(189)에 쓰기 데이터를 저장할 수 있고, ESSD(174) 사이의 쓰기 데이터의 경계 및/또는 분배를 결정할 수 있다.
ESSD-1은 도 6에 예시된 실시예에서 로드 밸런서(170)에 의해 사용된 것과 유사한 다양한 인자에 기초하여 경계 및/또는 분배를 결정할 수 있다. 쓰기 데이터의 경계 및/또는 분배를 결정한 후, 주 드라이브 ESSD-1은 자신의 저장 매체를 사용하여 저장을 위해 쓰기 데이터의 일부를 유지, 및/또는 쓰기 데이터를 동작711, 동작712 및 동작713 각각에서 ESSD-2, ESSD-3 및/또는 ESSD-4으로 부분적으로 전송할 수 있다. 일부 실시예에서, ESSD-1은 버퍼(199)의 동작714, 동작715 및 동작716)에서 수신될 수 있는 쓰기 완료 확인(write Completion Acknowledgments)을 축적할 수 있다. ESSD-1은 그 후 동작717에서 로드 밸런서(190)에 쓰기 완료 응답(write Completion Response)을 전송할 수 있으며, 그 후 동작718에서 개시자(192)로 전달되어 데이터 쓰기 동작을 완료할 수 있다.
도 7에 예시된 실시예에서, 동작은 예시적인 동작이고, 명시 적으로 설명되지 않은 다양한 추가 동작을 포함할 수 있다. 일부 실시예에서, 예시된 동작 중 일부는 생략될 수 있다. 일부 실시예에서, 하나 이상의 동작은 도 7에 예시된 것과 다른 컴포넌트에 의해 수행될 수 있다. 예를 들어, 일부 실시예에서, 쓰기 완료 확인은 ESSD-1 대신에 또는 이에 추가하여 로드 밸런서(190)에 축적될 수 있다. 추가적으로, 일부 실시예에서, 동작의 시간적 순서는 변경될 수 있다. 또한 위에서 언급했듯이 도면은 반드시 일정한 비율로 그려진 것은 아니고, 따라서, 요소(elements), 이벤트(events), 시간 간격(time intervals) 등 간의 임의의 비율 및/또는 관계는 네트워크 지연(network delays), 계산 지연(computational delays) 등에 기초하여 더 길거나 더 짧을 수 있다.
일부 실시 예에서, 통지(notifications), 쓰기 데이터(write data), 읽기 데이터(read data), 읽기 메시지(read messages), 확인 응답(acknowledgments), 완료(completions) 등과 같은 정보의 전송은 임의의 적절한 통신 채널을 통해 수행될 수 있다. 예를 들어, 일부 실시예에서, 하나 이상의 개별 프로토콜이 그룹의 저장 장치에 대한 하나 이상의 가상 근거리 통신망(VLANs; virtual local area networks)을 구현하는데 사용될 수 있다. 이러한 하나 이상의 프로토콜은 그룹의 저장 장치를 상호 연결하고 공유 전송 연결을 전달하는 네트워크 패브릭 및/또는 예를 들어 별도의 물리적 네트워크와 같은 임의의 다른 통신 채널에 의해 전달될 수 있다. 일부 실시예에서, 이러한 하나 이상의 추가 프로토콜은 장치 그룹에 예약된 대역폭을 할당하는 데 사용될 수 있다.
일부 실시예에서, eRPC(embedded remote procedure call)와 같은 저 지연 통신 프로토콜을 사용하여 그룹의 저장 장치 간에 명령 및/또는 응답 정보를 전송할 수 있다. 이것은, 예를 들어, 도 5에 예시된 읽기 메시지, 및/또는 도 6 및 도 7에 예시된 데이터 수신 통지 및/또는 완료 확인에 대해 사용될 수 있다. 읽기 메시지의 구현 예에는 예를 들어, VLAN 식별자, 소스 IP 주소, 대상 IP 주소, TCP 시퀀스 번호, 전송 길이, 읽기 블록(예, 네임 스페이스, 블록 주소, 길이 포함), 다른 TCP 및/또는 주 장치 등에 의해 요청된 IP 플래그 등의 소정의 개수의 매개 변수를 포함할 수 있다.
일부 실시예에서, 그룹 내의 저장 장치들 사이의 읽기 및/또는 쓰기 데이터의 전송은, 예를 들어, RDMA(예, RoCE)와 같은 프로토콜을 사용할 수 있는 VLAN에 의해 수행될 수 있다. 일부 실시예에서, 잠재적인 성능 문제를 피하기 위해 서비스 품질(QoS) 환경이 설정될 수 있다.
도 8은 본 개시에 따른 로드 밸런서의 예시적인 실시예를 도시한다. 도 8에 도시된 로드 밸런서(200)는 예를 들어, 본 개시에서 설명된 방법, 장치, 특징 및/또는 그와 유사한 것 중 임의의 것을 구현하기 위해 사용될 수 있다. 로드 밸런서(200)는, 예를 들어, 임의의 수의 개시자, 스위치, 패브릭-부착 저장 장치 등 사이의 네트워크 연결을 설정하기 위해 사용될 수 있는 하나 이상의 네트워크 인터페이스 컨트롤러(202)(NIC; network interface controller)를 포함할 수 있다. 스위치 패브릭(204)은 NIC(202)에 연결된 네트워크 장치 사이의 네트워크 연결을 설정하고 유지할 수 있다. 연결 관리 모듈(206)은 네트워크 계층, 전송 계층 등에서 네트워크 장치들 사이의 연결 설정, 유지, 종료, 매핑 등을 제어할 수 있다. 저장 관리 로직(208)은 본 개시에 따른 저장 관련 기능 및/또는 특징 중 임의의 것을 구현할 수 있다. 예를 들어, 로드 밸런서(200)가 도 6에 예시된 방법을 구현하기 위해 사용되는 경우, 저장 관리 로직(208)은 장치그룹 내의 ESSD들 사이의 쓰기 데이터의 경계 및/또는 분배를 결정하는데 사용될 수 있다.
도 8에 예시된 실시예의 임의의 구성 요소 및/또는 기능은 하드웨어, 펌웨어, 소프트웨어 또는 이들의 임의의 조합으로 구현될 수 있다. 더욱이, 다양한 구성 요소 중 임의의 것은 별도의 구성 요소로서 구현되거나, 함께 통합되거나, 임의의 다른 적절한 구성으로 배열될 수 있다. 예를 들어, 일부 실시예에서, 스위치 패브릭(204)은 하드웨어 스위치로 구현될 수 있는 반면, 다른 실시예에서 스위치 패브릭의 일부 또는 전부는 소프트웨어로 구현될 수 있다. 일부 실시예에서, 로드 밸런서(200)는 기존 네트워크 로드 밸런서에 저장 관리 로직(208)을 추가함으로써 구현될 수 있다.
도 9는 본 개시에 따른 패브릭-부착 저장 장치의 예시적인 실시예를 도시한다. 도 9에 도시된 저장 장치(210)는 예를 들어, 본 개시에서 설명된 방법, 장치, 특징 및/또는 그와 유사한 것 중 임의의 것을 구현하기 위해 사용될 수 있다. 저장 장치(210)는 하나 이상의 네트워크 인터페이스(212), 저장 제어기(214) 및 저장 매체(218)를 포함할 수 있다. 저장 매체(218)는 자기, 고체 상태, 광학 또는 임의의 다른 유형의 데이터 저장 기술로 구현될 수 있다. 하나 이상의 네트워크 인터페이스(212)는 저장 장치가 예를 들어 이더넷, 파이버 채널, 인피니밴드 등에 기초하여 네트워크 패브릭에 연결하는 것을 가능하게 할 수 있다. 저장 제어기(214)는 저장 장치(210)의 전반적인 동작을 제어할 수 있다. 저장 제어기(214)는 본 개시에 따른 임의의 기능 및/또는 특징을 구현하는 데 사용될 수 있는 로직(216)을 포함할 수 있다. 예를 들어, 저장 장치(210)가 도 5에 도시 된 장치 그룹의 저장 장치 중 임의의 것을 구현하는데 사용되는 경우, 로직(216)은 읽기 메시지를 전송하도록 지시하는 다른 장치에 읽기 메시지를 전송하는 1차 ESSD에 대한 기능을 포함할 수 있다. 데이터를 개시자에 전송하거나 다른 ESSD가 읽기 메시지를 수신하고 그에 따라 응답하도록 한다. 다른 예로서, 저장 장치(210)가 도 6에 도시된 장치 그룹의 저장 장치 중 임의의 것을 구현하는 데 사용되는 경우, 로직(216)은 장치 그룹의 ESSD 간 쓰기 데이터의 경계 및/또는 배포를 결정하기 위해, 주 ESSD에 대한 기능을 포함할 수 있다.
네트워크 인터페이스(212) 및 저장 제어기(214)는 별도의 구성 요소로서 구현되거나 하드웨어, 소프트웨어 또는 이들의 임의의 조합을 사용하여 하나 이상의 구성 요소에 통합될 수 있다. 예를 들어, 저장 제어기(214)는 시스템 온 칩(SOC), 필드 프로그래밍 가능 게이트 어레이(FPGA; field programmable gate array), 표준 및/또는 맞춤형 집적 회로(IC)의 조합, 주문형 집적 회로(ASIC)로 구현되는 마이크로 프로세서, 마이크로 컨트롤러 등 또는 이들의 임의의 조합을 포함하는 임의의 적절한 데이터 처리 장치로 구현될 수 있다.
도 10은 본 개시에 따른 가상화된 저장소를 제공하기위한 방법의 예시적인 실시예의 흐름도를 도시한다. 도 10에 예시된 방법(220)은 동작222에서 시작할 수 있다. 동작224에서, 로드 밸런서를 통해 장치와 패브릭-부착 저장 장치 그룹 사이의 전송 연결이 설정될 수 있다. 동작226에서, 데이터는 전송 프로토콜을 사용하는 전송 연결을 통해 장치와 패브릭-부착 저장 장치 그룹 사이에서 전송될 수 있다. 일부 실시예에서, 패브릭-부착 저장 장치 그룹은 2개 이상의 패브릭-부착 저장 장치를 포함할 수 있고, 논리적 저장 장치로서 상기 장치에 의해 액세스될 수 있다. 방법은 동작228에서 끝날 수 있다.
도 10에 예시된 실시예에서, 동작은 예시적인 동작이고, 명시 적으로 설명되지 않은 다양한 추가 동작을 포함할 수 있다. 일부 실시예에서, 예시된 동작 중 일부는 생략될 수 있다. 일부 실시예에서, 하나 이상의 동작은 도 10에 설명된 것과 다른 구성 요소에 의해 수행될 수 있다. 추가적으로, 일부 실시예에서, 동작의 시간적 순서는 변경될 수 있다.
일부 실시예에서, 그리고 구현 세부 사항에 따라, 본 개시에 따른 하나 이상의 시스템, 방법 및/또는 장치는 패브릭-부착 저장 장치에 대한 하나 이상의 잠재적인 문제를 극복할 수 있다. 예를 들어, 일부 프로토콜은 장치/드라이버 쌍 당 하나의 전송 연결만 제공할 수 있다. 따라서, 여러 패브릭-부착 장치에 저장소를 분산하기 위해 호스트 중앙 처리 장치(CPU)가 여러 장치에 걸쳐있는 볼륨 관리와 관련된 처리를 핸들링할 수 있다. 이로 인해 호스트 CPU에서 처리하는 I/O 작업 수가 증가할 수도 있다. 그러나 일부 실시예에서, 그리고 구현 세부 사항에 따라, 본 개시에 따른 하나 이상의 시스템, 방법 및/또는 장치는 호스트 CPU에 의해 단일 로직 장치로서 다중 패브릭-부착 저장 장치가 액세스되는 것을 가능하게 할 수 있다. 더욱이, 일부 실시예에서, 그리고 구현 세부 사항에 따라, 본 개시에 따른 하나 이상의 시스템, 방법 및/또는 장치는 패브릭-부착 저장 장치가 TCP 및/또는 RDMA와 같은 전송 프로토콜을 변경하지 않고 집계된 볼륨과 같이 가상화 되도록 할 수 있다.
본 명세서에 개시된 실시예는 다양한 구현 세부 사항의 맥락에서 설명될 수 있지만, 본 개시의 원리는 이들 또는 임의의 다른 특정 세부 사항으로 제한되지 않는다. 일부 기능은 특정 구성 요소에 의해 구현되는 것으로 설명되었지만, 다른 실시예에서, 기능은 서로 다른 위치에 있고 다양한 사용자 인터페이스를 갖는 서로 다른 시스템 및 구성 요소 간에 분배될 수 있다. 특정 실시예는 특정 프로세스, 단계, 이들의 조합 등을 갖는 것으로 설명되었지만, 이러한 용어는 특정 프로세스, 단계, 이들의 조합 등이 다수의 프로세스, 단계, 이들의 조합 등으로 구현될 수있는 경우, 또는 여기서 다수의 프로세스, 단계, 이들의 조합 등이 단일 프로세스, 단계, 이들의 조합 등으로 통합될 수 있는 실시예를 포함할 수도 있다. 구성 요소 또는 요소에 대한 참조는 구성 요소 또는 요소의 일부만 참조할 수 있다. 본 개시 및 청구 범위에서 "제1" 및 "제2"와 같은 용어의 사용은 그들이 수정하는 것을 구별하기위한 목적일 뿐이며 문맥에서 달리 명백하지 않는 한 어떤 공간적 또는 시간적 순서를 나타내지 않을 수 있다. 제1 물건에 대한 언급은 제2 물건의 존재를 의미하지 않을 수 있다. 일부 실시예에서, 패브릭-부착 저장 장치는 장치 그룹에서 집합을 위해 장치의 저장 매체의 파티션 또는 다른 부분만 사용할 수 있다. 따라서, 일부 실시예에서, 저장 장치는 또한 장치 내의 파티션 또는 다른 부분을 지칭할 수 있다. 더욱이, 위에서 설명된 다양한 세부 사항 및 실시예는 본 발명의 원리에 따른 추가 실시예를 생성하기 위해 결합될 수 있다.
본 특허 개시의 발명 원리는 본 개시의 개념을 벗어나지 않고 배열 및 세부적으로 수정될 수 있기 때문에, 그러한 변경 및 수정은 다음의 청구 범위에 속하는 것으로 간주된다.
100: 시스템 102: 호스트
104: 로드 밸런서 106: 장치 그룹
108: 패브릭-부착 저장 장치 110: 공유 전송 연결
112: 전송 연결 120: 시스템
122: 로드 밸런서 124: ESSD의 그룹
126: ESSD 128: 섀시
129: 코어 데이터 센터 130: 이더넷 스위치
132: 이더넷 연결 134: 개시자
136: 네트워크 인프라 140: 시스템
142: 다른 장치 그룹 144: 에지 데이터 센터
146: 모바일 에지 데이터 센터 150: 로드 밸런서
152: 개시자 154: ESSD
156: 버퍼 160: 로드 밸런서
162: 개시자 164: ESSD
166: ESSD 그룹 170: 로드 밸런서
172: 개시자 174: ESSD
176: ESSD 그룹 178: 쓰기 데이터
180: 버퍼 189: 버퍼
190: 로드 밸런서 192: 개시자
194: 패브릭-부착 저장 장치 196: 그룹
197: 쓰기 데이터 200: 로드 밸런서
202: NIC 204: 스위치 패브릭
206: 연결 관리 모듈 208: 저장 관리 로직
210: 저장 장치 212: 네트워크 인터페이스
214: 저장 제어기 216: 로직
218: 저장 매체

Claims (21)

  1. 가상화 된 저장소를 제공하는 방법으로서,
    로드 밸런서(load balancer)를 통해 장치와 패브릭-부착 저장 장치 그룹 간의 전송 연결을 설정하는 것; 및
    전송 프로토콜을 사용한 전송 연결을 통해 상기 장치와 상기 패브릭-부착 저장 장치 그룹 간에 데이터를 전송하는 것을 포함하되,
    상기 패브릭-부착 저장 장치 그룹은 둘 이상의 패브릭-부착 저장 장치를 포함하고 논리적 저장 장치로서 상기 장치에 의해 액세스되는,
    방법.
  2. 제1 항에 있어서,
    상기 패브릭-부착 저장 장치 그룹은 네트워크 주소를 공유하는,
    방법.
  3. 제2 항에 있어서,
    상기 패브릭-부착 저장 장치 그룹 중 적어도 2개는 상기 네트워크 주소에 대해 상이한 네트워크 포트를 사용하는,
    방법.
  4. 제3 항에 있어서,
    상기 네트워크 주소는 인터넷 프로토콜(IP) 주소를 포함하는,
    방법.
  5. 제1 항에 있어서,
    상기 전송 프로토콜은 전송 제어 프로토콜(TCP)을 포함하는,
    방법.
  6. 제1 항에 있어서,
    상기 장치 및 상기 패브릭-부착 저장 장치 그룹은 NVMe-oF(Nonvolatile Memory Express Over Fabric) 프로토콜을 사용하여 데이터를 교환하는,
    방법.
  7. 제1 항에 있어서,
    상기 전송 연결의 수신 창 공간은 상기 패브릭-부착 저장 장치 그룹 중 적어도 2개 사이에서 공유되는,
    방법.
  8. 제1 항에 있어서,
    상기 패브릭-부착 저장 장치 그룹 중 적어도 2 개는 읽기 명령에 응답하여 상기 전송 연결 내에서 적어도 제1 전송 프로토콜 시퀀스 번호 및 제2 전송 프로토콜 시퀀스를 사용하여 상기 데이터를 상기 장치로 전송하는,
    방법.
  9. 제1 항에 있어서,
    상기 패브릭-부착 저장 장치 그룹 내 하나는 상기 장치가 읽기 데이터를 수신하는 것에 응답하여 상기 장치로부터 하나 이상의 확인을 축적하는,
    방법.
  10. 제1 항에 있어서,
    상기 로드 밸런서는 쓰기 동작을 위한 상기 전송 연결을 사용하여 상기 장치로부터 패브릭-부착 저장 장치 그룹 내 하나 이상으로 직접 데이터를 전송하는,
    방법.
  11. 제1 항에 있어서,
    쓰기 동작의 경우:
    상기 로드 밸런서는 상기 장치로부터의 쓰기 데이터를 패브릭-부착 저장 장치 그룹 내 하나로 전송하고; 및
    상기 패브릭-부착 저장 장치 그룹 내 상기 하나는 상기 장치로부터 상기 쓰기 데이터의 적어도 일부를 상기 패브릭-부착 저장 장치 그룹 내 다른 하나로 전송하는,
    방법.
  12. 제11 항에 있어서,
    상기 패브릭-부착 저장 장치 그룹 내 상기 하나는 상기 패브릭 부착 저장 장치 그룹 사이의 상기 쓰기 데이터의 분포를 결정하는,
    방법.
  13. 제1 패브릭-부착 저장 장치;
    제2 패브릭-부착 저장 장치; 및
    네트워크 패브릭을 통해 상기 제1 패브릭-부착 저장 장치 및 상기 제2 패브릭-부착 저장 장치에 연결된 로드 밸런서;
    상기 로드 밸런서는 상기 제1 패브릭-부착 저장 장치와 상기 제2 패브릭-부착 저장 장치 사이에서 공유되는 전송 연결을 사용하여 장치와 상기 제1 패브릭-부착 저장 장치 및 상기 제2 패브릭-부착 저장 장치 사이에서 데이터를 전송하도록 구성되는,
    저장 시스템.
  14. 제13 항에 있어서,
    상기 로드 밸런서는 상기 전송 연결의 공유 창 공간을 사용하여 상기 장치와 상기 제1 패브릭-부착 저장 장치 및 상기 제2 패브릭-부착 저장 장치 사이에서 데이터를 전송하도록 구성되는,
    저장 시스템.
  15. 제13 항에 있어서,
    상기 제1 패브릭-부착 저장 장치 및 상기 제2 패브릭-부착 저장 장치는 논리적 저장 장치로서 동작하도록 구성되는,
    저장 시스템.
  16. 제13 항에 있어서,
    상기 로드 밸런서, 상기 제1 패브릭-부착 저장 장치 및 상기 제2 패브릭-부착 저장 장치는 상기 제1 패브릭-부착 저장 장치와 상기 제2 패브릭-부착 저장 장치 사이에서 네트워크 주소를 공유하도록 구성되는 저장 시스템.
  17. 데이터 저장 장치에 있어서,
    저장 매체;
    네트워크 패브릭 인터페이스; 및
    상기 네트워크 패브릭 인터페이스를 통해 전송 연결을 지나도록 상기 저장 매체와 장치 사이에서 데이터를 전송하도록 구성된 저장 제어기를 포함하되,
    상기 저장 제어기는 패브릭-부착된 다른 데이터 저장 장치와 상기 전송 연결을 공유하도록 구성되는,
    데이터 저장 장치.
  18. 제17 항에 있어서,
    상기 저장 제어기는 상기 장치로부터의 읽기 명령에 응답하여 다른 데이터 저장 장치에 메시지를 전송하도록 구성된 로직을 포함하고,
    상기 메시지에는 상기 다른 데이터 저장 장치가 상기 전송 연결을 사용하여 읽기 데이터를 상기 장치로 전송할 수 있도록 하는 정보가 포함되는,
    데이터 저장 장치.
  19. 제17 항에 있어서,
    상기 저장 제어기는 상기 다른 데이터 저장 장치로부터 메시지를 수신하도록 구성된 로직을 포함하고,
    상기 메시지에는 상기 다른 데이터 저장 장치가 상기 전송 연결을 사용하여 읽기 데이터를 상기 장치로 전송할 수 있도록 하는 정보가 포함되는,
    데이터 저장 장치.
  20. 제17 항에 있어서,
    상기 저장 제어기는 상기 데이터 저장 장치와 상기 다른 데이터 저장 장치 사이의 쓰기 데이터의 분배를 결정하도록 구성된 로직을 포함하는,
    데이터 저장 장치.
  21. 제17 항에 있어서,
    상기 저장 제어기는 상기 장치로부터의 읽기 명령에 응답하여 읽기 데이터를 제3의(third-party) 장치로 전송하도록 구성된 로직을 포함하는,
    데이터 저장 장치.
KR1020210003870A 2020-06-08 2021-01-12 데이터 저장 장치, 및 패브릭-부착 저장 장치를 가상화를 위한 시스템 및 방법 KR20210152365A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/896,201 2020-06-08
US16/896,201 US11720413B2 (en) 2020-06-08 2020-06-08 Systems and methods for virtualizing fabric-attached storage devices

Publications (1)

Publication Number Publication Date
KR20210152365A true KR20210152365A (ko) 2021-12-15

Family

ID=78817429

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210003870A KR20210152365A (ko) 2020-06-08 2021-01-12 데이터 저장 장치, 및 패브릭-부착 저장 장치를 가상화를 위한 시스템 및 방법

Country Status (4)

Country Link
US (1) US11720413B2 (ko)
KR (1) KR20210152365A (ko)
CN (1) CN113835618A (ko)
TW (1) TW202147122A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11606429B2 (en) * 2020-10-14 2023-03-14 EMC IP Holding Company LLC Direct response to IO request in storage system having an intermediary target apparatus
US11444790B1 (en) * 2021-07-09 2022-09-13 International Business Machines Corporation Dynamic exclusion of RDMA-based shared memory communication based on performance-related data

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7500069B2 (en) * 2001-09-17 2009-03-03 Hewlett-Packard Development Company, L.P. System and method for providing secure access to network logical storage partitions
US11048410B2 (en) 2011-08-24 2021-06-29 Rambus Inc. Distributed procedure execution and file systems on a memory interface
US8966164B1 (en) 2013-09-27 2015-02-24 Avalanche Technology, Inc. Storage processor managing NVME logically addressed solid state disk array
US9483431B2 (en) 2013-04-17 2016-11-01 Apeiron Data Systems Method and apparatus for accessing multiple storage devices from multiple hosts without use of remote direct memory access (RDMA)
US9430412B2 (en) 2013-06-26 2016-08-30 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over Ethernet-type networks
US9430437B1 (en) 2013-08-09 2016-08-30 Inphi Corporation PCIE lane aggregation over a high speed link
US10635316B2 (en) * 2014-03-08 2020-04-28 Diamanti, Inc. Methods and systems for data storage using solid state drives
EP3117583A4 (en) * 2014-03-08 2017-11-01 Diamanti, Inc. Methods and systems for converged networking and storage
WO2016196766A2 (en) 2015-06-03 2016-12-08 Diamanti, Inc. Enabling use of non-volatile media - express (nvme) over a network
US10628353B2 (en) * 2014-03-08 2020-04-21 Diamanti, Inc. Enabling use of non-volatile media-express (NVMe) over a network
US9565269B2 (en) * 2014-11-04 2017-02-07 Pavilion Data Systems, Inc. Non-volatile memory express over ethernet
US9712619B2 (en) * 2014-11-04 2017-07-18 Pavilion Data Systems, Inc. Virtual non-volatile memory express drive
US20160188528A1 (en) * 2014-12-31 2016-06-30 Samsung Electronics Co., Ltd. Electronic system with storage control mechanism and method of operation thereof
US9973432B2 (en) * 2015-07-10 2018-05-15 International Business Machines Corporation Load balancing in a virtualized computing environment based on a fabric limit
US10481799B2 (en) * 2016-03-25 2019-11-19 Samsung Electronics Co., Ltd. Data storage device and method including receiving an external multi-access command and generating first and second access commands for first and second nonvolatile memories
US10372659B2 (en) * 2016-07-26 2019-08-06 Samsung Electronics Co., Ltd. Multi-mode NMVE over fabrics devices
US10311008B2 (en) * 2016-08-12 2019-06-04 Samsung Electronics Co., Ltd. Storage device with network access
US10365981B2 (en) * 2016-08-19 2019-07-30 Samsung Electronics Co., Ltd. Adaptive multipath fabric for balanced performance and high availability
US10853233B2 (en) * 2016-10-18 2020-12-01 Toshiba Memory Corporation Reconstruction of address mapping in a host of a storage system
WO2018119843A1 (en) * 2016-12-29 2018-07-05 Intel Corporation Network interface controller with non-volatile random access memory write packet log
CN108701004A (zh) * 2017-01-25 2018-10-23 华为技术有限公司 一种数据处理的系统、方法及对应装置
US10282094B2 (en) 2017-03-31 2019-05-07 Samsung Electronics Co., Ltd. Method for aggregated NVME-over-fabrics ESSD
US10733137B2 (en) * 2017-04-25 2020-08-04 Samsung Electronics Co., Ltd. Low latency direct access block storage in NVME-of ethernet SSD
US10958729B2 (en) * 2017-05-18 2021-03-23 Intel Corporation Non-volatile memory express over fabric (NVMeOF) using volume management device
US10425473B1 (en) * 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10545921B2 (en) * 2017-08-07 2020-01-28 Weka.IO Ltd. Metadata control in a load-balanced distributed storage system
US10992967B2 (en) * 2017-12-05 2021-04-27 Sony Interactive Entertainment LLC Ultra high-speed low-latency network storage
US11656775B2 (en) * 2018-08-07 2023-05-23 Marvell Asia Pte, Ltd. Virtualizing isolation areas of solid-state storage media
US10855596B2 (en) * 2018-11-20 2020-12-01 Microsoft Technology Licensing, Llc Load balancing among multiple endpoint computing systems of a domain
US11003539B2 (en) * 2019-01-15 2021-05-11 EMC IP Holding Company LLC Offload processing using a storage slot
US11095547B2 (en) * 2019-01-31 2021-08-17 EMC IP Holding Company LLC Determining zoned but inactive I/O paths
US11379374B2 (en) * 2019-02-12 2022-07-05 Samsung Electronics Co., Ltd. Systems and methods for streaming storage device content
US10790036B1 (en) * 2019-08-28 2020-09-29 Micron Technology, Inc. Adjustment of read and write voltages using a space between threshold voltage distributions
US11262925B2 (en) * 2020-01-08 2022-03-01 EMC IP Holding Company LLC Performance partitioning leveraging dynamic masking change
US11231861B2 (en) * 2020-01-15 2022-01-25 EMC IP Holding Company LLC Host device with active-active storage aware path selection
US20200177660A1 (en) * 2020-02-03 2020-06-04 Intel Corporation Offload of streaming protocol packet formation
US11163716B2 (en) * 2020-03-16 2021-11-02 Dell Products L.P. Discovery controller registration of non-volatile memory express (NVMe) elements in an NVMe-over-fabrics (NVMe-oF) system
US11388135B2 (en) * 2020-03-31 2022-07-12 EMC IP Holding Company LLC Automated management server discovery
US20200241927A1 (en) * 2020-04-15 2020-07-30 Intel Corporation Storage transactions with predictable latency

Also Published As

Publication number Publication date
US11720413B2 (en) 2023-08-08
TW202147122A (zh) 2021-12-16
CN113835618A (zh) 2021-12-24
US20210382663A1 (en) 2021-12-09

Similar Documents

Publication Publication Date Title
US10880235B2 (en) Remote shared server peripherals over an ethernet network for resource virtualization
CN108476208B (zh) 多路径传输设计
US11489919B2 (en) Method, apparatus, and data processing system including controller to manage storage nodes and host operations
US10764180B1 (en) System and method for storing data using software defined networks
KR102349208B1 (ko) 서브넷 관리(sa) 쿼리 캐싱을 통한 동적 클라우드 제공을 위한 시스템 및 방법
US8625595B2 (en) Fiber channel identifier mobility for fiber channel and fiber channel over ethernet networks
US8032730B2 (en) Method and apparatus for I/O priority control in storage systems
US9219683B2 (en) Unified infrastructure over ethernet
US7502884B1 (en) Resource virtualization switch
US9509615B2 (en) Managing link aggregation traffic in a virtual environment
JP2023503274A (ja) 高性能コンピューティング環境においてプライベートファブリックにおける順方向および逆方向輻輳通知の使用をサポートするためのシステムおよび方法
US6748559B1 (en) Method and system for reliably defining and determining timeout values in unreliable datagrams
TWI515572B (zh) 分散式虛擬橋接器環境中暫存器存取之系統及方法
US8560631B2 (en) Storage system
US9007909B2 (en) Link layer reservation of switch queue capacity
US20130138758A1 (en) Efficient data transfer between servers and remote peripherals
US10389550B1 (en) Priority tagging based solutions in FC SANs independent of target priority tagging capability
US20030018828A1 (en) Infiniband mixed semantic ethernet I/O path
US9350666B2 (en) Managing link aggregation traffic in a virtual environment
JP2015521779A (ja) 入力/出力仮想化のためのシステムおよび方法
KR20210152365A (ko) 데이터 저장 장치, 및 패브릭-부착 저장 장치를 가상화를 위한 시스템 및 방법
CN110471627B (zh) 一种共享存储的方法、系统及装置
WO2014124557A1 (zh) 光纤通道中实现节点端口虚拟化的方法,装置和系统
JP2015115630A (ja) 計算機システム、アドレス管理装置およびエッジノード