KR102168958B1 - 스토리지 거리를 예측하기 위한 방법 및 장치 - Google Patents

스토리지 거리를 예측하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR102168958B1
KR102168958B1 KR1020170035311A KR20170035311A KR102168958B1 KR 102168958 B1 KR102168958 B1 KR 102168958B1 KR 1020170035311 A KR1020170035311 A KR 1020170035311A KR 20170035311 A KR20170035311 A KR 20170035311A KR 102168958 B1 KR102168958 B1 KR 102168958B1
Authority
KR
South Korea
Prior art keywords
storage
nodes
sentence
graph
edge
Prior art date
Application number
KR1020170035311A
Other languages
English (en)
Other versions
KR20170132660A (ko
Inventor
스티븐 최인석
기양석
안병영
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20170132660A publication Critical patent/KR20170132660A/ko
Application granted granted Critical
Publication of KR102168958B1 publication Critical patent/KR102168958B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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
    • 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
    • G06F16/1827Management specifically adapted to NAS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0888Throughput
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or 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/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • 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

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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

시스템은 머신으로부터 쿼리를 수신하기 위한 수신 로직, 쿼리에 대한 응답을 머신으로 전송하기 위한 전송 로직, 복수의 노드 및 적어도 하나의 다중 가중치 에지(multi-weight edge)를 포함하기 위한 스토리지 그래프, 및 스토리지 그래프를 사용하여 머신으로부터 쿼리에 대한 응답을 생성하기 위한 스토리지 거리 예측기를 포함한다.

Description

스토리지 거리를 예측하기 위한 방법 및 장치{METHOD AND APPARATUS FOR PREDICTING STORAGE DISTANCE}
본 발명은 스토리지 장치들에 관한 것으로, 좀 더 구체적으로는 데이터 센터의 스토리지 장치들의 어떤 하위 집합이 애플리케이션(application)을 가장 잘 지원할 수 있는지를 결정하는 것에 관한 것이다.
스토리지 장치들, 특히 솔리드 스테이트 드라이브(Solid State Drives, SSD)들은 시간이 지남에 따라 지속적으로 변화하는 특성들을 나타낸다. SSD들은 SSD 내부의 근본적인 소프트웨어(예로서, 펌웨어) 및/또는 하드웨어 때문에 예측할 수 없는 레이턴시(latency) 및/또는 대역폭을 가질 수 있다. 웨어 레벨링(wear leveling)으로 인한 연장된 액세스(access) 레이턴시(읽기/프로그램/소거)는 또한 레이턴시 및/또는 대역폭에 영향을 미칠 수 있다. 가상 추상화(Virtual abstraction)-즉, 폴리모픽(polymorphic) SSD들, 오픈-채널(open-channel) SSD들, 및 경량 NVM(light Nonvolatile Memory)(오픈-채널 SSD들을 지원하는 서브 시스템), 등과 같은 상이한 접근법들-는 SSD의 성능 특성들을 예측하기 어렵게 만든다. 마지막으로, 상이한 셀 밀도(cell densities)- 싱글 레벨 셀(Single Level Cell, SLC), 멀티 레벨 셀(Multi- Level Cell, MLC), 트리플 레벨 셀(Triple Level Cell, TLC), 및 쿼드루플 레벨 셀(Quadruple Level Cell) 등- 는 매우 상이한 특성들을 야기한다.
그러나, 스토리지 장치가 자체 성능 특성들-레이턴시, 및 대역폭 등-을 알고 있을 수도 있지만, 스토리지 장치들 전반적인 성능 특성들은 더 복잡한 문제이다. 즉, 장치당 성능은 알려졌지만, 두 개 이상의 장치들(가상 장치들 포함) 사이의 성능을 예측하는 것이 훨씬 더 큰 문제이다. 스토리지 장치들의 한 쌍은 하나의 계산된 레이턴시 및/또는 대역폭을 포함하지만, 스토리지 장치들의 다른 쌍은- 첫 번째 쌍과 제조 업체, 및 모델이 동일하더라도- 다른 성능 특성들을 포함할 수 있다.
여러 스토리지 장치들 사이의 성능을 예측하기 위한 방법이 필요하다.
본 발명은 상술된 기술적 과제를 해결하기 위한 것으로써, 본 발명은 스토리지 거리를 예측하기 위한 방법 및 장치를 제공할 수 있다.
본 발명의 실시 예에 따른 시스템은 머신(machine)으로부터 쿼리(query)를 수신하기 위한 수신 로직(reception logic), 쿼리에 대한 응답을 머신으로 전송하기 위한 전송 로직(transmission logic), 복수의 노드 및 적어도 하나의 다중 가중치 에지(multi-weight edge)를 포함하는 스토리지 그래프(storage graph)를 저장하는 스토리지(storage) 및 스토리지 그래프를 사용하여 머신으로부터 쿼리에 대한 응답을 생성하기 위한 스토리지 거리 예측기(storage distance predictor)를 포함한다.
몇몇 실시 예로서, 복수의 노드는 루트 노드(root node) 및 물리적 스토리지 장치(physical storage device) 또는 가상 스토리지 장치(virtual storage device) 중 하나를 나타내는 적어도 하나의 노드를 포함하고, 적어도 하나의 다중 가중치 에지의 에지는 복수의 노드에서 두 개의 노드들 사이에 관련된다.
본 발명의 실시 예에 따른 시스템은 데이터 센터(data center)에 대한 적어도 부분적인 시스템 토폴로지(system topology) 및 호스트 머신(host machine)에 대한 로컬 스토리지 정보(local storage information)를 수신하는 수신 로직(reception logic) 및 적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보를 이용하여 스토리지 그래프(storage graph)를 생성하기 위한 스토리지 그래프 생성기(storage graph generator)를 포함한다.
몇몇 실시 예로서, 스토리지 그래프는 복수의 노드 및 적어도 하나의 다중 가중치 에지(multi-weight edge)를 포함하고, 복수의 노드는 루트 노드(root node) 및 물리적 스토리지 장치(physical storage device) 또는 가상 스토리지 장치(virtual storage device) 중 하나를 나타내는 적어도 하나의 노드를 포함하고, 적어도 하나의 다중 가중치 에지의 에지는 복수의 노드에서 두 개의 노드들 사이에 관련된다.
본 발명의 실시 예에 따른 시스템의 동작 방법은 머신(machine)으로부터 쿼리(query)를 수신하는 단계, 쿼리에 대한 응답을 결정하기 위해 스토리지 그래프(storage graph)를 이용하는 단계, 및 쿼리에 대한 응답을 머신으로 전송하는 단계를 포함한다.
몇몇 실시 예로서, 스토리지 그래프는 복수의 노드 및 적어도 하나의 다중 가중치 에지(multi-weight edge)를 포함하고, 복수의 노드는 루트 노드(root node) 및 물리적 스토리지 장치(physical storage device) 또는 가상 스토리지 장치(virtual storage device) 중 하나를 나타내는 적어도 하나의 노드를 포함하고, 적어도 하나의 다중 가중치 에지의 에지는 복수의 노드에서 두 개의 노드들 사이에 연관된다.
본 발명은 장치들 사이의 성능을 예측함으로써, 향상된 동작 속도를 갖는 장치를 제공할 수 있다.
도 1은 클라이언트 머신(client machine)과 통신하는 다양한 호스트 머신들의 데이터 센터를 보여준다.
도 2는 본 발명의 실시 예에 따라, 도 1의 호스트 머신을 자세히 보여주기 위한 블록도이다.
도 3은 도 1의 호스트 머신을 추가적으로 자세히 보여주기 위한 블록도이다.
도 4 및 도 5는 가상 스토리지 장치들을 지원할 수 있는 물리 스토리지 장치들을 여러 방법들로 보여주기 위한 블록도이다.
도 6은 도 1의 데이터 센터를 위한 예시적인 시스템 토폴로지(topology)를 보여주기 위한 블록도이다.
도 7은 본 발명의 실시 예에 따라, 도 6의 예시적인 시스템 토폴로지를 나타내는 스토리지 그래프를 보여준다.
도 8은 본 발명의 실시 예에 따라, 다중 가중치 에지(edge)를 도시하고, 가상 스토리지 장치들을 보여주기 위해 증가된 도 7의 스토리지 그래프를 보여준다.
도 9는 도 8의 스토리지 그래프에서 다수의 물리적 스토리지 장치에 걸쳐있는 병합된 가상 스토리지 장치에 대한 다중 가중치 에지들 및 노드들의 집합을 보여준다.
도 10은 도 7 내지 도 9의 스토리지 그래프를 저장하기 위한 데이터 구조를 보여준다.
도 11은 도 2의 스토리지 그래프 생성기를 보여주기 위한 블록도이다.
도 12는 도 11의 다중 가중치 에지 생성기를 보여주기 위한 블록도이다.
도 13은 도 2의 스토리지 거리 예측기를 보여주기 위한 블록도이다.
도 14는 도 2의 스토리지 거리 예측기로 제공될 수 있는 다양한 쿼리(query)들을 보여준다.
도 15a 및 도 15b는 원하는 복제 계수 및 레이턴시 제약을 만족시키기 위한 도 8의 스토리지 그래프에 가상 스토리지 장치들의 부분 집합의 예시적인 선택을 보여준다.
도 16a 및 도 16b는 원하는 고립 요구 사항을 만족시키기 위한 도 8의 스토리지 그래프에 가상 스토리지 장치들의 부분 집합의 예시적인 선택을 보여준다.
도 17은 본 발명의 실시 예에 따라, 로컬 스토리지 정보 및 도 6의 시스템 토폴로지로부터 도 7 내지 도 9의 스토리지 그래프를 생성하기 위한 예시적인 과정을 보여주기 위한 순서도이다.
도 18a 내지 도 18c는 본 발명의 실시 예에 따라, 도 7 내지 도 9의 스토리지 그래프에 다중 가중치 에지들 및 노드들을 식별하기 위한 예시적인 과정을 보여주기 위한 순서도이다.
도 19는 본 발명의 실시 예에 따라, 도 7 내지 도 9의 스토리지 그래프를 기반으로 하는 쿼리에 응답하기 위한 예시적인 절차를 보여주기 위한 순서도이다.
도 20은 본 발명의 실시 예에 따라, 쿼리에 대답하기 위해 도 7 내지 도 9의 스토리지 그래프를 이용하기 위한 예시적인 절차를 보여주는 순서도이다.
본 발명의 개념의 구체적인 실시 예에 대한 예들은 첨부된 도면에 도시될 것이다. 후속하는 상세한 설명에서, 본 발명의 개념에 대한 완전한 이해가 가능해지도록 수많은 구체적인 사항들이 제공될 것이다. 그러나, 당업자는 이러한 상세한 설명이 없이도 본 발명의 개념을 실시할 수 있다는 것을 이해하여야 한다. 다른 예에서, 공지 또는 공용의 방법들, 단계들, 구성들, 회로들, 및 네트워크들은 본 발명의 실시예의 양태를 불필요하게 모호하게 하지 않기 위해 상세하게 기재되지 않았다.
본 명세서에서 제1 및 제2 등이 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 이러한 구성 요소는 이러한 용어에 의해 한정되지 않는 것으로 이해 될 것이다. 상기 용어들은 하나의 구성 요소를 다른 것과 구별하기 위해 사용된다. 예를 들어, 제1 논리 단계는 제 2 논리 단계로 명명될 수 있으며, 이와 유사하게 본 발명의 개념의 범위를 벗어나지 않은 상태에서, 제2 논리 스테이지는 제1 논리 스테이지로 명명될 수 있다.
본 발명의 개념의 발명의 설명에 사용된 용어들은 특정한 실시 예들을 기술하기 위한 목적으로만 사용되는 것이며, 본 발명의 개념을 한정하는 의도로는 사용되지 않는다. 문맥상 명백히 다르게 지시하지 않는 한 단수 형태는 본 발명의 개념의 설명 및 부가된 청구항에 사용될 때, 복수의 형태를 포함하는 의도로 사용된 것으로 이해되어야 한다. 또한, 본 명세서에 사용된 “및/또는” 용어는 하나 또는 그 이상의 관련된 나열된 사항의 모든 가능한 조합을 지시하거나 포함하는 것으로 이해되어야 한다. “포함하는” 용어가 본 명세서에 사용되는 경우, 기술된 특징, 숫자, 단계, 동작, 구성, 및/또는 부품들의 존재를 명기하는 것이며, 이들의 하나 또는 그 이상의 다른 특징, 숫자, 단계, 동작, 구성, 부품, 및/또는 그룹의 존재 또는 부가를 배제하지 않는 것으로 더 이해되어야 한다. 구성 및 특징의 도시는 일정한 비례로 그려진 것은 아니며, 일부 구성 및 특징은 확대/축소하여 그려질 수도 있다.
대규모 데이터 센터 스토리지 인프라 시스템(Large-scale data center storage infrastructure system)들은 모든 호스트 및 스토리지 쌍(또는 스토리지 대 스토리지) 사이의 레이턴시 및 대역폭을 예측할 수 있는 이점이 있다. 대규모 데이터 센터들은 병렬 처리, 복제, 및 격리 등을 포함하는 데이터 스토리지의 다양한 측면들을 결정하고 관리해야 하므로, 더 많은 정보에 대한 요구가 증가하고 있다. 이러한 예측기들은 온-디맨드(on-demand) 및 쌍 당(per-pair) 측정들을 기반으로 해서는 안 되는데, 이러한 접근법들은 확장 가능하지(scale) 않기 때문이다.
불행히도, 사양(specification)들이나 프로파일링(profiling)을 기반으로 하는 기존의 스토리지 모델링(modeling)은 이러한 요구들을 만족하지 못할 수 있다. 이는, 스토리지 장치들 자체가 동일한 제조물이고, 심지어 동일한 물리적 나이임에도 불구하고, 플래시 변환 계층(Flash Translation Layer, FTL)과 같은 숨겨진 특성들 및 에이징(aging)/웨어링 아웃(wearing-out) 으로 인해, 스토리지 장치들이 서로 다른 레이턴시/대역폭 및 시간 가변성(time-varying) 특성들을 보이기 때문이다.
스토리지 거리를 예측하기 위한 다른 장애물은-즉, 데이터 센터에 스토리지 장치들의 쌍 사이의 거리와 관련된 성능 특성들-페어 와이즈(pair-wise) 예측이 너무 많은 측정들(모두에서 모두의 연결들을 고려함)을 필요로 한다는 것이다. 거리는 스토리지 장치들의 쌍들 사이의 통신의 어려움을 아우를 수 있는 추상적인 개념이다. 거리는 물리적인 거리와 같은 요소들(예로서, 라인 레이턴시(line-latency) 및/또는 대역폭)로부터 파생된 부분들을 포함할 수 있지만, 전적으로 물리적인 거리로 정의될 필요는 없다. 넓은 의미에서, (하나 이상의 에지를 사용하고, 스토리지 그래프에 두 개의 스토리지 장치들 사이에서 측정된)"거리"는 개입(intervening) 스위치들 및 노드들의 수 및 동작, 다른 네트워킹 구성 요소들, 및 장치 레이턴시들 그 자체와 같은 추가 요소들의 영향들을 포함할 수 있다.
주어진 스토리지 쌍들의 레이턴시/대역폭을 이해하는 것 또한 중요하다. 하지만, 장치 당 성능을 알더라도, 복수의 장치(가상 장치들 포함) 사이의 성능을 예측하는 것이 더 큰 문제이다.
스토리지 거리 그래프/트리는 스토리지 장치당 성능들과 토폴로지(topology) 그래프/트리를 결합하여 구축될 수 있다. 일반적으로, 시스템 토폴로지들은, 스토리지 장치들의 성능의 변형/변화와 비교하여 드물게 변화한다. 아래 설명은 그러한 스토리지 그래프를 어떻게 생성하는지를 설명한다.
스토리지 그래프/트리 생성기와 결합된, 스토리지 거리 예측기(storage distance predictor)는 이러한 문제점의 기술적 해결 방안을 제공할 수 있다. 스토리지 거리 예측기는 스토리지 그래프 생성기에 의해 생성된 그래프/트리를 기반으로 한다. 첫 번째로, 스토리지 그래프 생성기는 (물리적, 가상적, 또는 둘 다인)시스템 토폴로지 및 로컬 스토리지 정보의 입력들을 취한다. 이후, 스토리지 그래프 생성기는 다중 가중치(multi-weighted) 스토리지 그래프/트리를 출력할 수 있다. 이러한 스토리지 그래프에 기초하여, 스토리지 저장 예측기는 대규모 데이터 센터 스토리지 인프라 시스템들을 위한 매트릭스(metrics, 지표들)를 제공할 수 있다.
P2P와는 다르게, 그리드 애플리케이션(grid application)들, 또는 웹 토폴로지(web topology)들, 대규모 데이터 센터들은 일반적으로 구조적 그리고 계층적 조직을 나타낸다. 그리고 실패 또는 시스템 확장을 금할 경우, 데이터 센터들의 구조 및 계층적 조직은 변하지 않을 가능성이 커다.
데이터 센터 환경은 또한 가상화된 스토리지 인터페이스(virtualized storage interface)들을 포함할 수 있다. 스토리지 그래프/트리는 따라서 가상 스토리지 장치들을 반영하도록 확장될 수 있다. 가상 스토리지 장치들은 일대일, 일대다, 다대일, 또는 다대다 주 어떠한 조합으로 물리적 스토리지 장치들과 인터페이스할 수 있다. 스토리지 그래프/트리가 가상 스토리지 장치들을 포함하도록 확장되는 경우, 특히, 하나의 가상 스토리지 장치가 복수의 물리적 스토리지 장치들에 걸쳐있을 수 있는 경우, 집계된 정점(vertex)들 및 집계된 다중 가중치 에지(multi-weight edge)들이 생성될 수 있다.
스토리지 그래프/트리에 각 에지는 복수의 가중치들을 포함할 수 있다. 이러한 가중치들은 튜플(tuple)에서 거리, 레이턴시, 대역폭 또는 다양한 식별자들을 나타낼 수 있다.
각 가상 스토리지 장치의 성능은, 모든 목적을 위해 본원에서 참조로 인용되는 2016년 5월 24일에 가출원된 미국출원번호 62/341,059에 우선권을 주장하는 2016년 08월 01일에 출원된 미국출원번호 15/225,811에 기술된 시스템 및 방법을 포함하는 다양한 방법들로 측정될 수 있다.
생성된 스토리지 거리 트리/그래프에 기초하여, 스토리지 거리 예측기는 쿼리(query)들에 의존하는 해결책들을 제공할 수 있다. 스토리지 거리 예측기는 타겟 병렬화 정도(target degree of parallelism)를 제공하면서 레이턴시 제약을 갖는 최소 대역폭을 만족하는 가상 스토리지 장치들의 세트(set)를 제공할 수 있다. 불완전한 정점들을 제거하기 위해 가지치기 휴리스틱(pruning heuristic)이 사용된다고 가정하면, 부분적인 트리들은 표시된 요구 사항들을 만족하는 트리를 검색하기 위해 확장될 수 있다.
스토리지 거리 예측기는 또한 하나의 특정 어플리케이션이 다른 식별된 어플리케이션들과 스토리지 노드를 공유하지 않도록 보장하는 가상 스토리지 장치들의 세트를 제공할 수 있다.
도 1은 클라이언트 머신(client machine)과 통신하는 다양한 호스트 머신들의 데이터 센터를 보여준다. 도 1에서, 데이터 센터(105)는 호스트 머신들(110, 115, 120, 125, 및 130)을 포함하는 것으로 도시된다. 호스트 머신들(110, 115, 120, 125, 및 130)에 대한 세부 사항은 도 2 및 도 3을 참조하여 도시된다. 데이터 센터(105)는 호스트 머신들(110, 115, 120, 125, 및 130)의 서로 통신, 그리고 클라이언트 머신들(140)과 통신할 수 있게 하는 네트워크(135)를 포함할 수 있다. 네트워크(135)는 근거리 통신망(Local Area Network, LAN) 또는 광대역 네트워크(Wide Area Network, WAN)를 포함하는 다양한 네트워크가 될 수 있다. 네트워크(130)는 이더넷(Ethernet)과 같은 유선 기술, IEEE 802.11 a/b/g/n/ac 또는 동급 또는 대체 기술들과 같은 무선 기술, 또는 이들의 조합을 사용할 수 있다. 추가로, 도 1은 하나의 지리적인 영역 내에 위치하는 호스트 머신들(110, 115, 120, 125, 및 130)에 대해 제안하였지만, 본 발명의 다른 실시 예들에 따른 호스트 머신들(110, 115, 120, 125, 및 130)은 (아마도 가상 사설 통신망(Virtual Private Network, VPN)과 같은 오버레이 네트워크(overlay network)를 사용하는)인터넷(Internet)과 같은 글로벌 네트워크(global network)를 사용하여 지리적으로 분산되고 상호 연결될 수 있다.
도 1은 호스트 머신들(110, 115, 120, 125, 및 130)이 동일하고 모두 타워 컴퓨터(tower computer)들인 것으로 도시하였지만, 본 발명의 실시 예들은 호스트 머신들(110, 115, 120, 125, 및 130)에 대한 임의의 원하는 포맷(format)들을 지원할 수 있고, 이들은 모두 다를 수 있다. 예로서, 몇몇 호스트 머신들(110, 115, 120, 125, 및 130)은 다양한 모델들 및 제조사의 타워 컴퓨터들일 수 있고, 다른 호스트 머신들(110, 115, 120, 125, 및 130)은 다양한 모델들 및 제조사의 랙 마운트 서버(rack-mounted server)일 수 있다. 상이한 호스트 머신들(110, 115, 120, 125, 및 130)은 프로세서 성능, 가용 메모리 및 가용 스토리지에 관련하여 상이한 성능들을 가질 수 있으며, 이들 모두 다양한 포맷들일 수 있다. 예로서, 몇몇 호스트 머신들(110, 115, 120, 125, 및 130)은 다이나믹 랜덤 액세스 메모리(Dynamic Random Access Memory, DRAM)를 사용할 수 있고, 다른 것들은 영구 랜덤 액세스 메모리(Persistent Random Access Memory, PRAM), 정적 랜덤 액세스 메모리(Static Random Access Memory, SRAM), 강유전체 랜덤 액세스 메모리(Ferroelectric Random Access Memory, FRAM), 또는 자기저항 랜덤 액세스 메모리(Magneto resistive Random Access Memory, MRAM)와 같은 불휘발성 랜덤 액세스 메모리(Non-Volatile Random Access Memory, NVRAM)를 사용할 수 있다. 유사하게, 몇몇 호스트 머신들(110, 115, 120, 125, 및 130)은 저장을 위한 일반적인 하드 디스크(hard disk) 드라이버들을 사용할 수 있고, 다른 것들은 플래시 메모리(다양한 NVRAM) 또는 MRAM을 사용할 수 있다. 여기에 열거되든 아니든 다른 가능성도 본 발명의 범위 내에 있다.
상술한 바와 같이, 호스트 머신들(110, 115, 120, 125, 및 130)은 모두 근본적으로 동등하고 상호 교환 가능하다. 따라서, 아래에서 호스트 머신(110)에 대한 임의의 참조는 호스트 머신들(110, 115, 120, 125, 및 130) 중 임의의 것 그리고 모든 것을 제한 없이 포함할 수 있다.
도 1에서 클라이언트 머신들(140)은 모니터, 키보드 및 마우스를 갖는 일반적인 미니타워(minitower) 컴퓨터 시스템으로 도시되었지만, 클라이언트 머신들(140)은 랩탑(laptop) 컴퓨터, 태블릿(tablet) 컴퓨터, 스마트폰(smartphone) 및 기타 원하는 기술 형식을 포함하는 임의의 원하는 형식을 취할 수 있다. 추가로, 도 1에서 하나의 클라이언트 머신(140)이 도시되었지만, 본 발명의 실시 예들은 동시에 임의의 개수의 클라이언트 머신들(140)을 지원할 수 있다.
도 2는 본 발명의 실시 예에 따라, 도 1의 호스트 머신(110)을 자세히 보여주기 위한 블록도이다. 도 2에서, 호스트 머신(110)은 프로세서(205)(또는 중앙 처리 유닛(Central Processing Unit, CPU)), 메모리(210), 네트워크 커넥터(network connector)(215), 및 스토리지 장치(220)를 포함하는 것으로 도시된다. 프로세서(205)는 예로서, 인텔 제온(Intel Xeon), 셀러론(Celeron), 아이타니엄(Itanium), 또는 아톰 프로세서(Atom processor), AMD 옵테론(Opteron) 프로세서, ARM 프로세서 등과 같은 임의의 다양한 프로세서일 수 있다. 상술한 바와 같이, 메모리(210)는 플래시 메모리, SRAM, PRAM 등과 같은 임의의 다양한 메모리일 수 있지만 일반적으로 DRAM이다. 메모리(210)는 (도 7 내지 도 10을 참조하여 설명되는) 스토리지 그래프에 대한 데이터 구조를 저장할 수 있는 스토리지(225)를 포함할 수 있다. 네트워크 커넥터(215)는 예로서 이더넷 인터페이스 또는 무선 인터페이스와 같은, 호스트 머신(110)과 도 1의 네트워크(135)를 연결할 수 있는 임의의 다양한 커넥터일 수 있다. 스토리지 장치(220)는 데이터 센터에 의해 사용될 수 있는 임의의 다양한 스토리지 장치일 수 있다. 솔리드 스테이트 드라이브(Solid State Drive)들은 스토리지 장치(220)에 대한 하나의 가능성이지만, 스토리지 장치(220)는 하드 디스크 드라이브들 또는 다른 장기적인 스토리지 장치들과 같은 다른 스토리지 형태들을 포함할 수 있다.
호스트 머신(110)은 또한 수신 로직(reception logic)(230), 전송 로직(transmission logic)(235), 스토리지 그래프 생성기(storage graph generator)(240), 및 스토리지 거리 예측기(storage distance predictor)(245)를 포함할 수 있다. 수신 로직(230) 및 전송 로직(235)은 각각 호스트 머신(110)에서 데이터를 수신하고, 호스트 머신(110)으로부터 데이터를 전송하기 위해 사용될 수 있다. 수신 로직(230) 및 전송 로직(235)은 도 1의 네트워크 또는 다른 네트워크들을 통해 다른 머신들과 통신하기 위해 네트워크 커넥터(215)와 인터페이스할 수 있다. 수신 로직(230)은 머신들간의 통신을 가능하게 하는 하드웨어 및 이러한 통신을 지원하는 소프트웨어를 모두 포함할 수 있다. 예로서, 클라이언트 머신(140)은 시큐어 셀(Secure Shell, SSH), 웹 인터페이스 또는 어플리케이션 프로그램 인터페이스(Application Program Interface, API)을 통해 요청들을 발행할 수 있다.
스토리지 그래프 생성기(240)는 시스템 토폴로지(system topology) 및 로컬 스토리지 정보(local storage information)로부터 스토리지 그래프(storage graph)를 생성할 수 있다. 스토리지 거리 예측기(245)는 스토리지 그래프 생성기(240)로부터 생성되는 스토리지 그래프를 취할 수 있고, 스토리지 그래프와 관련되는 쿼리들(queries)에 응답할 수 있다. 스토리지 그래프 생성기(240) 및 스토리지 거리 예측기(245)는 도 11 내지 도 14를 참조하여 더 설명된다.
스토리지 그래프를 이용하여, 스토리지 거리 예측기(245)는 시스템 토폴로지 및 로컬 스토리지 정보와 관한 쿼리들에 응답할 수 있다. 이러한 응답들은, 상이한 어플리케이션들의 다양한 요구 사항들과 시스템 토폴리지 및 로컬 스토리지 정보의 이기종(heterogeneous) 특성을 감안하였을 때, 특정 어플리케이션을 지원하기 위해 스토리지 장치들을 선택하는 기술적인 문제를 해결할 수 있다.
도 3은 도 1의 호스트 머신(110)을 추가적으로 자세히 보여주기 위한 블록도이다. 도 3을 참조하면, 일반적으로, 머신 또는 머신들(110)은, 머신 또는 머신들(110)의 구성 요소들의 동작들을 조정하는데 사용될 수 있는 메모리 컨트롤러(305), 및 클록(clock)(310)을 포함하는 하나 이상의 프로세서(205)를 포함한다. 프로세서(205)는 또한 RAM, 읽기 전용 메모리(Read-Only Memory, ROM), 또는 다른 상태의 보존 매체(preserving media)를 포함하는 메모리(210)와 연결될 수 있다. 프로세서(205)는 또한 스토리지 장치(220) 및 예를 들어 이더넷 커넥터 또는 무선 커넥터일 수 있는 네트워크 커넥터(215)와 연결될 수 있다. 프로세서(205)는 또한, 사용자 인터페이스(320) 및 입/출력 엔진(325)을 사용하여 관리되는 입/출력 포트들이 부착될 수 있는 버스(315)에 연결될 수 있다.
스토리지 그래프/트리의 세부사항으로 들어가기 전에, 물리적 스토리지 장치들 및 가상 스토리지 장치들 사이의 가능한 관계를 조사하는 것이 의미가 있다. (이하에서, 용어 "스토리지 그래프"가 사용되는데, 수학적으로 "트리"는 어떤 특정 요구 사항들을 만족하는 그래프이므로, 특정 요구 사항들 중 일부는 본 발명의 모든 실시 예들에 존재하지 않을 수 있다. 하지만, 용어 "스토리지 트리"는 "트리"의 엄격한 수학적 의미가 충족되지 않을 수도 있다는 이해와 함께 사용될 수 있다.) 도 4 및 도 5는, 물리적 스토리지 장치(physical storage device)들이 가상 스토리지 장치(virtual storage device)들을 지원할 수 있는 다른 방법들을 보여주기 위한 블록도이다.
도 4에서, 물리적 스토리지 장치(220)는 세 개의 가상 스토리지 장치들(405, 410, 및 415)을 포함하는 것으로 도시된다. 사실상, 물리적 스토리지 장치(220)는 각 부분이 가상 스토리지 장치들 중 하나에 할당된 세 개의 부분들로 "나누어"진다(동일한 크기일 필요는 없다). 각 가상 스토리지 장치(405, 410, 및 415)는 서로 독립적으로 동작 할 수 있다(그러나, 가상 스토리지 장치들(405, 410, 및 415)이 동일한 물리적 스토리지 장치(220)를 공유하고, 따라서 물리적 스토리지 장치(220)의 물리적인 자원들을 공유해야 만 한다는 사실에 의해 분명히 제약된다). 가상 스토리지 장치들(405, 410, 및 415) 각각은 따라서 고유한 스토리지 장치로서 도 1의 호스트 머신(110)에 나타날 수 있고, 임의의 어플리케이션들에 나타날 수 있다.
도 4에서 물리적 스토리지 장치(220)는 세 개의 가상 스토리지 장치들(405, 410, 및 415)을 포함하는 것으로 도시되었지만, 본 발명의 실시 예들은 임의의 개수의 가상 스토리지 장치들을 지원할 수 있다. 이 개념은 구체적으로는 하나의 가상 스토리지 장치를 포함할 수 있고, 물리적 스토리지 장치(220) 전체는 하나의 가상 스토리지 장치를 저장하기 위해 사용된다. 하나의 가상 스토리지 장치를 관리하기 위해 하나의 물리적 스토리지 장치를 포함하는 것이 불필요한 것처럼 보이겠지만, 그렇게 하는 이점은, 앞으로, 물리적 스토리지 장치가 추가 가상 스토리지 장치들을 관리하기 위해 수정될 수 있는 것이다.
도 4와는 대조적으로, 도 5에서, 하나의 가상 스토리지 장치(510)를 관리하는 두 개의 물리적 스토리지 장치들(220, 및 505)이 도시된다. 도 5에 도시된 아이디어는 저스트 번치 오브 디스크(Just a Bunch of Disks, JBOD) 또는 저스트 번치 오브 플래시(Just a Bunch of Flash, JBOF)로써 동작하는 스토리지 장치들의 어레이에 대한 가상 아날로그(virtual analog)로써 생각될 수 있다. 데이터가 독출 또는 기록될 때, 데이터의 어드레스는 물리적 스토리지 장치들(220, 및 505) 중 하나로 먼저 변환될 수 있고, 다음에, 해당 장치의 물리적 블록 어드레스로 변환될 수 있다. 가상 스토리지 장치(510)가 다수의 물리적 스토리지 장치(220, 및 505)에 걸쳐있게 함으로써, 가상 스토리지 장치(510)는 물리적 스토리지 장치들(220, 및 505) 각각보다 더 많은 스토리지를 갖는 것처럼 보일 수 있다.
도 5에서 하나의 가상 스토리지 장치(510)를 관리하는 두 개의 물리적 스토리지 장치들(220, 및 505)이 도시되었지만, 본 발명의 실시 예들은 하나의 가상 스토리지 장치를 관리하는 임의의 개수의 물리적 스토리지 장치들을 지원할 수 있다. 추가로, 본 발명의 실시 예들은 다대다로써 설명될 수 있는 도 4 및 도 5의 조합들을 지원할 수 있다. 예로서, 도 5에서, 물리적 스토리지 장치들(220, 및 505)은 또한 각각 (두 개의 물리적 스토리지 장치들(220, 및 505)을 통해 총합 세 개의 가상 스토리지 장치들을 제공하는)개별 가상 스토리지 장치들을 관리할 수 있다
도 6은 도 1의 데이터 센서(105)를 위한 예시적인 시스템 토폴로지를 보여주기 위한 블록도이다. 도 6에서, 데이터 센터(105)는 두 개의 스위치들(605 및 610), 및 세 개의 컴퓨터들(110, 115, 및 120)을 포함한다(용어 "노드"는 스토리지 그래프에서 "노드"라는 용어 사용과 충돌 할 수 있지만 세 개의 컴퓨터들(110, 115, 및 120)은 또한 "노드"라고도 한다). 세 개의 컴퓨터들(110, 115, 및 120) 각각은 두 개의 스토리지 장치들을 포함할 수 있다.
시스템 토폴로지에 추가로, 로컬 스토리지 정보는, 어떤 스토리지 장치들이 시스템 토폴로지에 주어진 컴퓨터 내에서 이용 가능한지에 대해 명시할 수 있다. 예로서, 로컬 스토리지 정보는 스토리지 장치들(220 및 505)을 포함하는 컴퓨터(110), 스토리지 장치들(615 및 620)을 포함하는 컴퓨터(115), 및 스토리지 장치들(625 및 630)을 포함하는 컴퓨터(120)를 명시할 수 있다. 로컬 스토리지 정보는 또한 다양한 스토리 장치들에 의해 사용되는 인터페이스들과 같은 추가적인 정보를 제공할 수 있다. 예로서, 로컬 스토리지 정보는, 스토리지 장치들(505, 620, 및 630)은 직렬 연결 소형 컴퓨터 시스템 인터페이스(Serial Attached Small Computer System Interface, SAS)를 사용하는 반면에, 스토리지 장치들(220, 615, 및 625)은 주변 구성 요소 상호 연결 익스프레스(Peripheral Component Interconnect Express, PCIe) 인터페이스를 사용하는 것을 명시할 수 있다.
도 6에서, 스토리지 장치들(220, 505, 615, 620, 625, 및 630)은 솔리드 스테이트 드라이브(SSD)들로서 도시되었지만, 본 발명의 실시 예들은 하드 디스크 드라이브들 및 테이프 드라이브(tape drive)들을 포함하는 임의의 원하는 다양한 스토리지 장치들을 지원할 수 있다. 추가로, 본 발명의 실시 예들은 혼합된 스토리지장치 형태들을 지원할 수 있다. 예로서, 하나의 컴퓨터는 단지 SSD들만 포함할 수 있고, 다른 컴퓨터는 단지 하드 디스크 드라이브들만 포함할 수 있고, 세 번째 컴퓨터는 일부 SSD들 및 일부 하드 디스크 드라이브들을 포함할 수 있다. 장치 유형들의 모든 조합들은 본 발명의 개념의 실시 예들의 범위 내에 있다.
도 6은 두 개의 스위치들, 세 개의 컴퓨터들, 및 각 컴퓨터 내에 있는 두 개의 스토리지 장치들을 도시한다. 하지만, 본 발명의 실시 예들은 장치 유형들의 임의의 수 및 혼합을 지원할 수 있다. 예로서, 상이한 시스템 토폴로지는 단지 하나의 스위치와 여덟 개의 컴퓨터들을 포함할 수 있고, 각 컴퓨터는 한 개에서 네 개 사이의 스토리지 장치들을 가질 수 있다. 또 다른 시스템 토폴로지에는 게이트웨이(gateway), 네 개의 스위치들, 열두 개의 컴퓨터들, 및 총 서른 개의 스토리지 장치들이 있을 수 있다. 시스템 토폴로지의 모든 변형들은 본 발명의 실시 예들에 포함된다. 스위치들(605, 및 610), 및 컴퓨터들(110, 115, 및 120)을 제외하고, 시스템 토폴로지에 포함될 수 있는 다른 구성 요소들은 라우터(router)들, 게이트웨이들, 모뎀(modem)들, 케이블 모뎀(cable modem)들, 허브(hub)들, 브릿지(bridge)들, 리피터(repeater)들, 무선 액세스 포인트(Wireless Access Point, WAP)들, 및 네트워크 부착 스토리지(Network Attached Storage, NAS)이다. 시스템 토폴로지에 다양한 요소들 사이의 링크(link)들은 또한 시스템 토폴로지의 일부분으로 간주 된다.
시스템 토폴로지의 각 구성요소에는 장치 물리적 식별자(device physical identifier)가 할당될 수 있다. 예로서, 스위치들(605, 및 610)은 각각 식별자들(s0, 및 s1)을 할당 받을 수 있고, 노드들(110, 115, 및 120)은 각각 식별자들(n0, n1, 및 n2)을 할당 받을 수 있다. 이 예에서 간단하게 하기 위해, 구성 요소들에는 (장치의 유형을 나타내는)문자(letter), 및 순차적으로 번호가 할당된 (하나의 구성 요소를 다른 유사한 구성 요소로부터 구분하는)번호를 이용하는 장치 물리적 식별자들이 할당된다. 하지만, 식별자들은 임의의 원하는 방법으로 할당될 수 있다. 도 6은 구성 요소들을 식별하기 위한 하나의 예시적인 접근만을 도시한다. 이러한 식별자들은 도 8에 도시된 복수의 가중치 에지들에 사용될 수 있다.
도 7은 본 발명의 실시 예에 따라, 도 6의 데이터 센터에 대한 예시적인 시스템 토폴로지를 나타내는 스토리지 그래프를 보여준다. 도 7에서, 스토리지 그래프(705)가 도시된다. 시스템 토폴로지의 각 구성 요소는 스토리지 그래프(705)에서 노드로써 표현되고, 시스템 토폴로지에 구성 요소들 사이의 각 링크는 에지로써 표현된다. 이와 같이, 예로서, 노드들(710, 및 715)은 스위치들(605, 및 610)과 대응하고, 노드들(720, 725, 및 730)은 컴퓨터들(110, 115, 120)과 대응하고, 그리고 노드들(735, 740, 745, 750, 755, 및 760)은 스토리지 장치들(220, 505, 615, 620, 625, 및 630)과 대응한다. 이런 식으로, 스토리지 그래프(705)는 데이터 센터(105)의 시스템 토폴로지의 레이아웃(layout)을 모델링한다. 시스템 토폴로지가 변화함에 따라, 스토리지 그래프(705) 역시 변화할 것이다.
스토리지 그래프(705)에 노드들에는 노드들을 기술하는 용어들이 할당될 수 있다. 노드(710)는 스토리지 그래프(705)의 루트 노드(root node)라고 할 수 있다. 노드들(715~730)은 스토리지 그래프(705)의 내부 노드(internal node)들이라 할 수 있고 노드들(735~760)은 리프 노드(leaf node)들이라 할 수 있다. 이러한 개념들은 일반적인 그래프들보다 트리들에 일반적으로 더 연관 있지만, 더 일반적인 그래프의 맥락에서 이러한 사용은 여전히 이해할 수 있다. 루트 노드는 그래프의 "정상"에 있는 노드이다. 리프 노드들은 그래프의 "최하위"에 있는 노드들이고, 내부 노드들은 루트 노드 및 리프 노드들 사이에 있는 노드들이다. 위에서부터 아래로 정보의 흐름을 보면(물론, 데이터는 다른 방향으로 흐를 수 있지만, 이 사실은 잠시 무시될 수 있다.), 루트 노드 (710)는 이를 통해 모든 데이터가 시스템으로 들어가는 시스템 토폴로지의 구성 요소이고, 리프 노드들(735~760)은 이러한 데이터의 최종적인 목적지들이다.
스토리지 그래프(705)는, 그래프 이론에서 그래프에 임의의 두 노드들 사이에 정확하게 하나의 경로가 있는 그래프로써 정의되는 실제 트리이다. 하지만, 시스템 토폴로지가 트리 구조를 갖는 요구 사항은 없다. 예로서, 도 6의 컴퓨터(120)가 도 6의 양쪽 스위치들(605, 및 610)과 연결된 경우, 도 7의 스토리지 그래프(705)에 노드들(715, 및 730) 또한 링크될 수 있다. 하지만, 이러한 추가 연결은 루트 노드(710) 및 내부 노드(730) 사이의 두 경로들이 있다는 것을 의미한다(두 노드들 사이의 직접적인 경로 및 내부 노드(715)를 통과해서 가는 간접 경로). 이러한 변경으로 인해, 스토리지 그래프(705)는 더 이상 트리의 수학적 정의와 만족하지 않는다. 이것이, 기술적인 관점에서, "그래프"라는 용어가 본 발명의 실시 예들에 더 잘 맞는 이유이다.
도 7이 하나의 루트 노드(710)만 도시하는 반면에, 본 발명의 실시 예들은 다수의 루트 노드들을 지원할 수 있다. 즉, 주어진 데이터 센터는 각각이 스토리지 그래프(705)에 루트 노드인 하나 이상의 엔트리(entry) 포인트를 가질 수 있다. 그래프 이론에 트리들은 하나의 루트 노드만을 갖는 것으로써 생각되기 때문에, 이러한 상황은 용어 "그래프"가 "트리"보다 더 잘 맞는지에 대한 다른 이유를 제공한다.
스토리지 그래프(705)에서, 모든 리프 노드들(735~760)은 스토리지 장치들이다. 이는 우연의 일치가 아니다. 스토리지 장치들(220, 505, 615, 620, 625, 및 630)은 임의의 요청들에 대한 최종적인 목적지들이기 때문에(스토리지 장치들은 요청되거나 변경되는 어떠한 데이터라도 저장하기 때문에), 데이터는 일반적으로, 리프 노드들(735~760)보다 스토리지 그래프(705)의 더 "아래"로 진행되지 않는다. (데이터가 스토리지 장치들 사이에서 이동할 필요가 있을 수 있는데, 이는 스토리지 그래프(705) 내에서 데이터가 다시 위아래로 진행할 수 있는 것을 의미 하지만, 그 상황은 데이터가 더 아래로 진행한다는 개념과는 다르다.)
도 8은 본 발명의 실시 예에 따라, 다중 가중치 에지(edge)를 도시하고, 가상 스토리지 장치들을 보여주기 위해 증가된 도 7의 스토리지 그래프(705)를 보여준다. 도 8에서, 스토리지 그래프(705)의 에지들(805, 810, 815, 820, 및 825) (에지들을 식별하기 위해)과 같은 에지들은 튜플들(tuples)로 표현된 가중치들로 할당되며, 이는 이하에서 더 설명된다. 이러한 가중치들은, 모든 목적을 위해 본원에서 참조로 인용되는 2016년 5월 24일에 가 출원된 미국출원번호 62/341,059에 우선권을 주장하는 2016년 08월 01일에 출원된 미국출원번호 15/225,811에 기술된 방법 및 시스템을 포함하지만 이에 한정되지는 않는 다양한 방법들로 결정될 수 있다. 각 튜플에 값들은 에지를 평가하기 위한 다양한 방법들을 제공하기 때문에, 에지들(805, 810, 815, 820, 및 825)은 “다중 가중치(multi-weight)” 에지들이라 불린다. 예로서, 각 다중 가중치 에지(805, 810, 815, 820, 및 825)는 각각이 에지에 가중치를 부여하는 상이한 방법을 나타내는 거리, 레이턴시, 및 대역폭을 포함한다. 예로서, 쿼리가 대역폭과 관련된 경우, 다중 가중치 에지들(805, 810, 815, 820, 및 825)에 대역폭 척도(measure)가 고려될 수 있는 반면에, 쿼리가 레이턴시와 관련된 경우 다중 가중치 에지들(805, 810, 815, 820, 및 825)에 레이턴시 척도가 고려될 수 있다.
다중 가중치 에지들(805, 810, 815, 820, 및 825)에서의 거리 값은 다중 가중치 에지들(805, 810, 815, 820, 및 825)의 가중치를 측정하기 위한 대체 매커니즘을 제공한다. 하지만, 도 6의 데이터 센터(105)에 구성 요소들 사이의 물리적 거리를 나타내기 보다는, “거리”는 좀 더 추상적인 개념이다. 레이턴시 및 거리는 직접적으로 상관될 수 있다. 즉, 거리 값과 대응하는 레이턴시 값을 매핑하는 기능이 있을 수 있다. 또한, 대역폭과 같은 다중 가중치 에지들(805, 810, 815, 820, 및 825)의 다른 좌표들과 거리 사이에 상관 관계가 있을 수 있다.
이와 같이, 예를 들어, 다중 가중치 에지들(805, 및 810)은 거리 5, 레이턴시3 및 대역폭 10을 갖고, 다중 가중치 에지(815)는 거리 3, 레이턴시 2, 및 대역폭 20 등을 가질 수 있다. 모든 규모의 단위들이 사용될 수 있기 때문에 (비록 다중 가중치 에지들에 대응하는 모든 값들이 같은 단위들을 사용하더라도)이러한 값들은 단위들 없이 나타낸다. 예를 들어, 레이턴시는 읽기 요청 후 데이터가 반환되는데 걸리는 시간의 척도일 수 있고, 밀리세컨드(milliseconds), 마이크로세컨드(microseconds), 나노세컨드(nanoseconds) 또는 다른 원하는 시간 단위로 측정될 수 있다. 유사하게, 대역폭은 얼마나 많은 데이터가 단위 시간 내에 전송될 수 있는지의 척도일 수 있고, 초당 킬로바이트(kilobytes), 초당 메가바이트(megabytes), 초당 기가바이트(gigabytes) 또는 다른 원하는 측정으로 측정할 수 있다.
다중 가중치 에지들(805, 810, 815, 820, 및 825)은 또한 장치 물리적 식별자(device physical identifier)들 및/또는 장치 인터페이스 식별자(device interface identifier)들과 같은 식별자들을 포함할 수 있다. 이러한 식별자들은 해당 에지에 의해 연결되는 도 6의 데이터 센터(105)에 구성 요소들을 정확하게 식별하는 것을 도울 수 있다. 예로서, 간단히 도 6을 다시 참조한다. 스위치(605) 및 스위치(610) 사이와 스위치(610) 및 컴퓨터(110) 사이에는 케이블링(cabling)이 있다. 추가로, 컴퓨터(110)는 스토리지 장치들(220, 및 505)을 포함한다.
에지가 구성 요소들 사이의 물리적 케이블링을 나타내는 경우, 장치 물리적 식별자들은 에지를 고유하게 식별할 수 있을 정도로 충분하다. 예로서, 에지 연결 스위치(605, 및 610)는 이러한 구성 요소들의 장치 물리적 식별자들에 의해 고유하게 식별될 수 있다. 하지만, 스토리지 장치들(220, 및 505)이 스토리지 그래프(705) 내의 그들 자신의 노드들로 할당되는 반면에, 스토리지 장치들(220, 및 505)은 도 6의 데이터 센터(105)에서 분리된 구성 요소들이 아니다. 두 구성요소들 모두 컴퓨터(110)의 일부이다. 이와 같이, 장치 물리적 식별자들에만 전적으로 의존하는 것은 혼란을 남긴다: 컴퓨터(110)에 대한 장치 물리적 식별자가 컴퓨터 그 자체를 식별하는가 또는 스토리지 장치들(220, 및 505) 중 하나를 식별하는 가?
장치 물리적 식별자 및 장치 인터페이스 식별자 모두를 사용함으로써, 모호함은 해결될 수 있다. 물리적 구성 요소들과 마찬가지로, 장치 인터페이스들에는 고유한 식별자들이 할당될 수 있다. 도 8로 돌아가서, 장치 인터페이스들은 식별자가 장치 인터페이스를 위한 것임을 나타내는 문자 및 장치 인터페이스를 고유하게 식별하기 위한 숫자를 이용하여 식별될 수 있다. 예로서, 도 6을 참조하여 상술된 것과 일치하는, 장치 인터페이스들(i0, i2, 및 i4)은 PCIe 인터페이스들일 수 있는 반면에, 장치 인터페이스들(i1, i3, 및 i5)은 SAS 장치 인터페이스들일 수 있다.
상술된 논의는 상이한 노드의 동일한 장치 인터페이스에 는 상이한 장치 인터페이스 식별자가 할당될 수 있음을 제안한다. 이러한 스킴(scheme)은 장치 인터페이스를 고유하게 식별하기 위한 빠른 방법을 제공한다. 특정 노드는 임의의 특정 장치 인터페이스를 통해 연결되는 하나의 스토리지 장치를 오직 갖는 것으로 보장될 수 있다면, 동일한 장치 인터페이스 식별자들은 다른 노드들을 통해 사용될 수 있다. 하지만, 노드는 동일한 장치 인터페이스를 사용하는 다중 스토리지 장치들을 포함할 수 있기 때문에, 식별자들을 장치 인터페이스들로 할당하기 위한 이러한 스킴은 고유한 장치 인터페이스 식별자를 제공하지 못할 수 있다. 예를 들어, SAS는 128개의 상이한 스토리지 장치들을 지원할 수 있다. 모든 스토리지 장치들에 동일한 장치 인터페이스가 할당되는 경우, 시스템은 식별되는 스토리지 장치를 정확하게 결정하기 위한 방법을 가질 수 없다.
이와 같이, 다중 가중치 에지(805)는, 다중 가중치 에지(805)가 도 6의 스위치들(605, 및 610)과 연결되는 것을 나타내는 식별자들(s0, 및 s1)을 포함할 수 있다. 유사하게, 다중 가중치 에지(810)는, 다중 가중치 에지(810)가 도 6의 스위치(605) 및 컴퓨터(120)와 연결되는 것을 나타내는 식별자들(s0, 및 n2)을 포함할 수 있다. 반대로, 다중 가중치 에지(820)는 n0-도 6의 컴퓨터(110)를 위한 장치 물리적 식별자- 및 i0-도 2의 스토리지 장치(220)에 의해 사용되는 인터페이스를 위한 장치 인터페이스 식별자-를 사용할 수 있다. 장치 물리적 식별자 및 장치 인터페이스 식별자의 이러한 조합은 스토리지 그래프(705)에서 논의가 되고 있는 에지에 의해 연결되는 도 6에 데이터 센터(105)의 시스템 토폴로지에 요소들을 고유하게 식별할 수 있다. 유사하게, 다중 가중치 에지(825)는 n2-도 6의 컴퓨터(120)를 위한 장치 물리적 식별자- 및 i5-도 6의 스토리지 장치(630)을 위한 장치 인터페이스 식별자-를 사용할 수 있다. 이하 기타 등등.
도 8은 또한 가상 스토리지 장치들을 나타내는 복수의 노드들을 도시한다. 구체적으로, 스토리지 그래프(705)는 노드들(830, 835, 840, 845, 850, 855, 860, 및 865)을 포함하는 것으로써 도시된다. 이러한 리프 노드들(이들의 포함은 노드들(735~760)을 내부 노드들로 만드는 부수적인 효과를 갖는다)은 상이한 가상 스토리지 장치들을 나타낼 수 있다. 노드(735)는 두 개의 자식 노드(child node)들(830, 및 835)를 갖고, 노드(740)는 하나의 자식 노드(840)를 갖고, 노드들(745, 및 750)은 하나의 자식 노드(845)를 공유하고, 노드(755)는 두 개의 자식 노드들(850, 및 855)을 갖고, 노드(760)는 두 개의 자식 노드들(860, 및 865)을 갖는다. (노드(845)에 의해 나타나는 병합된 가상 스토리지 머신의 포함은 스토리지 그래프(705)가 트리의 수학적 정의와 일치하지 않음을 의미한다.) 결과적으로, 도 8의 스토리지 그래프(705)는 도 4 및 도 5를 참조하여 상술된 바와 같이, 물리적 스토리지 장치들 및 가상 스토리지 장치들 사이에서 가능한 네 가지 관계들 중 세 가지를 도시한다.
물리적 스토리지 장치(740)는 오직 하나의 가상 스토리지 장치(840)를 포함한다. 왜 물리적 스토리지 장치가 오직 하나의 가상 스토리지 장치를 포함할 수 있는지, 물리적 스토리지 장치에 그냥 직접적으로 액세스하는 것이 더 간단하지 않은지? 에 대한 질문이 발생할 수 있다. 대답은 가상 스토리지 장치의 사용 없이, 물리적 스토리지 장치가 직접적으로 액세스될 수 있다는 것이다. 하지만, 온전한 물리적 스토리지 장치가 사용되는 경우에도 가상 스토리지 장치를 포함함으로써 가상 스토리지 장치와 일대일 관계가 아닌 다른 물리적 스토리지 장치들과 일관성을 유지할 수 있다. 추가로, 나중에 어떤 시점에서, 하나 이상의 가상 스토리지 장치와 어떤 다른 관계로 물리적 스토리지 장치를 사용하는 것이 바람직할 수도 있을 것이다.
도 7은 리프 노드들로써 오직 물리적 스토리지 장치들을 도시하고, 도 8은 리프 노드들로써 오직 가상 스토리지 장치들을 도시한다. 본 발명의 실시 예들은 두 가지 경우를 모두 지원할 뿐만 아니라 혼합된 경우들도 지원할 수 있다. 즉, 스토리지 그래프들은 경우에 따라, 물리적 스토리지 장치들 및 가상 스토리지 장치들 모두를 리프 노드들로써 사용될 수 있다.
도 1의 클라이언트 머신(140)은 도 1의 데이터 센터(105)가 가상 스토리지 장치들을 사용하는지 여부를 모르거나 신경 쓰지 않는다. 이와 같이, 도 1의 클라이언트 머신(140)의 관점에서, 가상 스토리지 장치들이 사용되고, 좀 더 구체적으로, 병합된 가상 스토리지 장치(merged virtual storage device)들(노드(845)로써 나타나는 것과 같이)이 사용되는 경우, 병합된 가상 스토리지 장치는 임의의 다른 스토리지 장치처럼 보이게 된다. 그러면 도 1의 클라이언트 머신(140)은 병합된 가상 스토리지 장치의 레이턴시, 대역폭, 및 다른 속성들에 관심을 갖게 된다.
병합된 가상 스토리지 장치의 속성들을 결정하기 위해서, 병합된 가상 스토리지 장치에 노드들로 이어지는 다중 가중치 에지들은 종합(aggregation)될 수 있다. 도 9는 도 8의 스토리지 그래프(705)에서 다수의 물리적 스토리지 장치들에 걸쳐있는 병합된 가상 스토리지 장치에 대한 다중 가중치 에지들 및 노드들의 종합을 보여준다. 노드들(745, 및 750)은 병합된 노드(905)로 대체될 수 있고, 다중 가중치 에지들(910, 및 915)은 종합 다중 가중치 에지(aggregate multi-weight edge)(920)를 형성하기 위해 종합될 수 있다. 종합 다중 가중치 에지(920)에서, 거리는 다중 가중치 에지들(910, 및 915)에 거리들의 산술 평균으로써 계산될 수 있다. 유사하게, 종합 다중 가중치 에지(920)에 레이턴시는 다중 가중치 에지들(910, 및 915)에 레이턴시들의 산술 평균으로써 계산될 수 있다. 마지막으로 종합 다중 가중치 에지(920)의 대역폭은 다중 가중치 에지들(910, 및 915)에 대역폭들의 합계로써 계산될 수 있다. 종합 다중 가중치 에지(920)에서의 거리, 레이턴시, 및 대역폭은 다중 가중치 에지들(910, 및 915)로부터의 다양한 값들의 직접적인(straight) 합계들 및 평균들로써 계산될 수 있다. 또는 이들은 가중된 평균들 및 합계들로써 계산될 수 있다. 가중 평균들 및 합계들을 사용하는 것은 다양한 스토리지 장치들(가상 또는 물리적)이 불균형한 로드(load)들을 갖는 경우보다 더 정확한 상황을 제공할 수 있다. 더 높은 로드를 갖는 스토리지 장치들에 대한 값들에 가중치를 부여하는 것은 병합된 가상 스토리지 장치의 효과적인 동작을 더 정확하게 반영할 수 있다.
종합 다중 가중치 에지(920)에 대한 장치 물리적 식별자는 다중 가중치 에지들(910, 및 915)에 대한 장치 물리적 식별자들과 동일할 수 있다. 하지만, 병합된 가상 스토리지 장치를 나타내는 노드(845)는 많은 상이한 인터페이스들을 갖는 장치들을 포함할 수 있고, 새로운 인터페이스(가상 인터페이스)가 종합 다중 가중치 에지(920)에 장치 인터페이스 식별자를 위해 사용될 수 있다. 이와 같이, 종합 다중 가중치 에지(920)는 노드(845)를 위한 특정 가상 인터페이스를 식별하는, ⅳ0의 장치 인터페이스 식별자를 사용한다.
도 10은 도 7 내지 도 9의 스토리지 그래프(705)를 저장하기 위한 데이터 구조를 보여준다. 도 10에서, 데이터 구조(1005)는 연결 리스트(linked list)들을 이용하여 도시되지만, 본 발명의 실시 예들은 도 7 내지 도 9의 스토리지 그래프(705)를 저장하기 위한 임의의 데이터 구조(예로서, 어레이 데이터 구조들)를(을) 지원할 수 있다. 데이터 구조(1005)는, 예를 들어, 도 2의 스토리지(225)에 저장될 수 있다.
데이터 구조(1005)는 노드 연결 리스트(1010)를 포함할 수 있다. 노드 연결 리스트(1010)는 노드(1020)를 가리킬 수 있는 헤더 포인터(header pointer)(1015)를 포함할 수 있다. 다른 포인터(1025)는 다른 노드(1030), 등등을 가리킬 수 있다. 도 10은 오직 두 개의 노드들을 포함하는 노드 링크 리스트(1010)를 보여주지만, 본 발명의 실시 예들은 노드 링크 리스트(1010)에 임의의 개수의 노드들을 지원할 수 있다.
노드 링크 리스트(1010)에 각 노드는 노드 유형(node type)(1035), 노드 식별자(node identifier)(1040) 및 인터페이스들(1045)과 같은 정보를 저장할 수 있다. 노드 유형(1035)은 논의 대상인 노드가 시스템 토폴로지에서 스위치, 컴퓨터, 스토리지 장치 또는 임의의 다른 구성 요소를 나타내는지에 대해 명시할 수 있다. 노드 식별자(1040)는 도 7 내지 도 9의 시스템 그래프(705)에서 노드를 위한 고유한 식별자를 명시할 수 있다. 그리고, 인터페이스들(1045)은 다른 구성 요소들이 접속하기 위해, 어떤 인터페이스들이 노드 내에서 이용 가능한지에 대해 명시할 수 있다. 인터페이스들(1045) 자체는 다른 가능한 데이터 구조들 중에서 어레이 또는 다른 링크 리스트로써 저장될 수 있다.
데이터 구조(1005)는 또한 다중 가중치 에지 링크 리스트(multi-weight edge linked list)(1050)를 포함할 수 있다. 다중 가중치 에지 링크 리스트(1050)는 다중 가중치 에지(1055)를 가리킬 수 있는 헤더 포인터(1015)를 포함할 수 있다. 다른 포인터(1025)는 다른 다중 가중치 에지(1060) 등등을 가리킬 수 있다. 도 10은 오직 두 개의 다중 가중치 에지들을 포함하는 다중 가중치 에지 링크 리스트(1050)를 도시하지만, 본 발명의 실시 예들은 다중 가중치 에지 링크 리스트(1050)에 임의의 개수의 다중 가중치 에지들을 지원할 수 있다.
다중 가중치 에지 링크 리스트(1050)에 각 다중 가중치 에지는 도 8을 참조하여 상술된, 거리(1065), 레이턴시(1070), 대역폭(1075) 장치 물리적 식별자(1080), 및 장치 인터페이스 식별자(1085)와 같은 정보를 저장할 수 있다.
도 11은 도 2의 스토리지 그래프 생성기(240)를 보여주기 위한 블록도이다. 도 11에서, 스토리지 그래프 생성기(240)는 입력들로써 시스템 토폴로지(1105), 및 로컬 스토리지 정보(1110)를 수신할 수 있다. 시스템 토폴로지(1105)는 도 1의 데이터 센터(105)를 위한 완전한 시스템 토폴로지 또는 부분적인 시스템 토폴로지(부분적인 정보 조차도 유용할 수 있기 때문에)일 수 있다. 유사하게, 로컬 스토리지 정보(1110)는 완전하거나 또는 부분적일 수 있다. 그러면 스토리지 그래프 생성기(240)는 출력으로써 시스템 그래프(705)를 생성할 수 있다.
스토리지 그래프 생성기(240)는 루트 노드 식별자(root node identifier)(1115), 내부 노드 식별자(internal node identifier)(1120), 스토리지 노드 식별자(storage node identifier)(1125), 및 다중 가중치 에지 생성기(multi-weight edge generator)(1130)를 포함할 수 있다. 루트 노드 식별자(1115), 내부 노드 식별자(1120), 및 스토리지 노드 식별자(1125)는 시스템 토폴로지(1105) 및 로컬 스토리지 정보(1110) 내의 어떤 구성 요소들이 스토리지 그래프(705)에서 루트 노드들, 내부 노드들, 및 스토리지 장치들(물리적 또는 가상)을 나타내는 노드들을 나타내는지를 식별할 수 있다. 스토리지 그래프(705)에 리프 노드들은 일반적으로 스토리지 장치들이지만, 스토리지 장치들은 또한 스토리지 그래프(705)에 내부 노드들일 수 있다. 예로서, 가상 스토리지 장치들이 스토리지 그래프(705)에 리프 노드들인 경우, 가상 스토리지 장치를 구현하는 물리적 스토리지 장치는 비록 스토리지 장치이지만, 스토리지 그래프(705)에 내부 노드이다.
다중 가중치 에지 생성기(1130)는 다중 가중치 에지 튜플들에 저장된 값들을 결정할 수 있다. 예로서, 모든 목적을 위해 본원에서 참조로 인용되는 2016년 5월 24일에 가 출원된 미국출원번호 62/341,059에 우선권을 주장하는 2016년 08월 01일에 출원된 미국출원번호 15/225,811에 기술된 시스템 및 방법을 사용하여, 다중 가중치 에지 튜플들에서의, 도 10의, 거리들(1065), 레이턴시들(1070), 및 대역폭들(1075), 모든 것들은 임의의 원하는 방식으로 결정될 수 있다. 도 10의 장치 물리적 식별자(1080) 및 장치 인터페이스 식별자(1085), 모든 것들은 시스템 토폴로지(1105) 및 로컬 스토리지 정보(1110)로부터 결정될 수 있다.
도 12는 도 11의 다중 가중치 에지 생성기(1130)를 보여주기 위한 블록도이다. 도 12에서, 다중 가중치 에지 생성기(1130)는 거리 결정기(distance determiner)(1205), 레이턴시 결정기(latency determiner)(1210), 대역폭 결정기(bandwidth determiner)(1215) 및 식별자 결정기(identifier determiner)(1220)를 포함할 수 있다. 거리 결정기(1205)는 다중 가중치 에지에 의해 연결된 두 개의 노드들 사이의 거리를 결정할 수 있다. 레이턴시 결정기(1210)는 다중 가중치 에지에 의해 연결된 두 개의 노드들 사이의 레이턴시를 결정할 수 있다. 그리고 대역폭 결정기(1215)는 다중 가중치 에지에 의해 연결된 두 개의 노드들 사이의 대역폭을 결정할 수 있다. 거리 결정기(1205), 레이턴시 결정기(1210), 대역폭 결정기(1215)는 도 10의 거리(1065), 레이턴시(1070), 및 대역폭(1075), 모든 것들을 결정하기 위해 임의의 원하는 방법으로 동작할 수 있다. 예로서, 레이턴시 결정기(1210)는 요청이 부모 노드(parent node)에서 자식 노드(child node)로 전송되는 때에서 자식 노드가 요청이 완료되었다고 응답하는 때 사이의 시간 간격을 측정할 수 있다. 또는, 대역폭 결정기(1215)는 자식 노드에서 부모 노드로 전송되는 데이터의 대형 블록(large block)을 요청할 수 있고, 부모 노드가 데이터를 수신하기까지 소요되는 시간을 측정할 수 있고, 그리고 데이터를 전송하는데 필요한 시간과 관련된 블록의 크기의 비율로써 대역폭을 계산할 수 있다. 본 발명의 다른 실시 예들에서, 거리 결정기(1205), 레이턴시 결정기(1210), 및 대역폭 결정기(1215)는 모든 목적을 위해 본원에서 참조로 인용되는 2016년 5월 24일에 가 출원된 미국출원번호 62/341,059에 우선권을 주장하는 2016년 08월 01일에 출원된 미국출원번호 15/225,811에 기술된 시스템 및 방법을 사용할 수 있다. 식별자 결정기(1220)는 도 11의 시스템 토폴로지(1105) 및/또는 로컬 스토리지 정보(1110)의 검사로부터 도 10의 장치 물리적 식별자(1080) 및 장치 인터페이스 식별자(1085)를 결정할 수 있다.
도 13은 도 2의 스토리지 거리 예측기(245)를 보여주기 위한 블록도이다. 도 13에서, 스토리지 거리 예측기(245)는 입력으로써 시스템 그래프(705) 및 쿼리(1305)를 수신할 수 있고, 출력으로써 응답(1310)을 생성할 수 있다. 스토리지 거리 예측기(245)는 쿼리(1305)를 만족시킬 수 있는 스토리지 그래프(705)에 리프 노드들의 부분집합을 선택할 수 있는 부분집합 선택기(subset selector)(1315)를 포함할 수 있다. 하지만, 부분집합 선택기(1315)가 어떻게 동작하는지 다루기 전에, 어떤 쿼리들(1305)이 스토리지 거리 예측기(245)로 전달될 수 있는지를 이해하는 것이 도움이 된다.
도 14는 도 2의 스토리지 거리 예측기(245)로 제공될 수 있는 다양한 쿼리(query)들(1305)을 보여준다. 이러한 쿼리들(1305)은 원하는 복제 계수(replication factor)(1405), 레이턴시 제약(latency constraint)(1410), 및 고립 요구 사항(isolation requirement)(1415)을 포함할 수 있다. 원하는 복제 계수(1405)는 어플리케이션에 의해서 사용되기 위한 원하는 복제 정도를 명시할 수 있다. 원하는 복제 계수(1405)는 또한 병렬화 정도라 할 수 있다. 예로서, 어플리케이션은 어플리케이션의 데이터를 저장하기 위해 도 7 내지 도 9의 스토리지 그래프(705)에 적어도 세 개의 상이한 리프 노드들이 사용되어야만 한다는 것을 명시할 수 있다. 레이턴시 제약(1410)은 어플리케이션이 허용하는 최대 레이턴시를 명시할 수 있다. 고립 요구 사항(1415)은, 어플리케이션이 하나 이상의 다른 명시된 어플리케이션들로부터 자신의 데이터가 고립될 것으로 기대하는 것을 명시할 수 있다. 대역폭 요구 사항(1420)은 선택된 가상 스토리지 장치들을 위한 최소 종합 대역폭을 명시할 수 있다.
쿼리들(1305)은 개별적으로 또는 조합으로 지정될 수 있다. 예로서, 어플리케이션은 지정된 다른 어플리케이션으로부터 고립과 함께, 10의 레이턴시 제약(1410) 및 3의 원하는 복제 계수(1405)를 원할 수 있다. 본 발명의 실시 예들은 쿼리들(1305)의 다른 조합들을 또한 지원할 수 있다.
다시 도 13으로 돌아와서, 쿼리들(1305)에 대한 구체적인 사항들은 설명되었으므로, 부분집합 선택기(1315)의 동작이 설명될 수 있다. 부분집합 선택기(1315)의 동작은 쿼리(1305)에 의존할 수 있다. 쿼리(1305)가 도 14의 원하는 복제 계수(1405)를 명시하는 경우, 부분집합 선택기(1315)는 도 14의 원하는 복제 계수(1405)를 제공하는 물리적 및/또는 가상 스토리지 장치들의 부분집합을 선택할 수 있다. 쿼리(1305)가 도 14의 레이턴시 제약(1410)을 명시하는 경우, 부분집합 선택기(1315)는 물리적 및/또는 가상 스토리지 장치들 사이의 임의의 두 쌍 사이에, 도 14의 레이턴시 제약(1410)보다 크지 않은 최대 전체 레이턴시를 제공하는 물리적 및/또는 가상 스토리지 장치들의 부분 집합을 선택할 수 있다. 쿼리(1305)가 도 14의 고립 요구 사항(1415)를 명시하는 경우, 부분집합 선택기(1315)는 선택된 물리적 및/또는 가상 스토리지 장치가 하나 이상의 다른 명시된 어플리케이션들과 물리적 스토리지 장치를 공유하지 않도록 물리적 및/또는 가상 스토리지 장치들의 부분집합을 선택할 수 있다. 그리고 쿼리(1305)가 도 14의 대역폭 요구 사항(1420)을 명시하는 경우, 부분집합 선택기(1315)는 그들의 종합 대역폭이 대역폭 요구 사항(1420)을 초과하도록 물리적 및/또는 가상 스토리지 장치들의 부분집합을 선택할 수 있다. 도 15a 및 도 15b, 및 도 16a 및 도 16b는 이러한 상황들의 예시들을 도시할 수 있다.
도 15a 및 도 15b는 원하는 복제 계수 및 레이턴시 제약을 만족시키기 위한 도 8의 스토리지 그래프(705)에서의 가상 스토리지 장치들의 부분 집합의 예시적인 선택을 보여준다. 도 15a에서, 13의 쿼리(1305)가 7의 도 14의 레이턴시 제약(1410)과 3의 도 14의 원하는 복제 계수(1405)를 요청한 것으로 가정한다. 임의의 원하는 알고리즘은 도 13의 쿼리(1305)가 만족될 때까지 스토리지 장치들의 조합들을 임의적으로 시도하는 것과 같이, 가상 스토리지 장치들의 부분집합을 선택하기 위해 사용될 수 있다. 하지만, 더 고려된 접근법들도 또한 가능하다.
예로서, 가상 스토리지 장치들의 초기 선택이 도 15a의 부분집합(1505)으로서 도시된 것으로 가정한다. 부분집합(1505)은 가상 스토리지 장치들(830, 835, 845, 850, 및 855)을 포함한다. 하지만 가상 스토리지 장치(830, 및 855) 사이의 레이턴시들을 합산함으로써, 도 13의 부분집합 선택기(1315)는 노드(710)의 양쪽에서 가상 스토리지 장치들을 결정하는 것이 불가능하다고 결정할 수 있다. 그러므로, 오직 노드(715)에 뿌리를 둔 서브트리(subtree)만이 도 14의 레이턴시 요구 사항(1410)을 만족시키기 위해 고려될 수 있다. 노드(710)를 통해 노드(715)와 연결되는 모든 다른 서브트리들은 정리될 수 있다. 결과적으로, 마지막 부분집합 선택은 도 15b에 도시된 것처럼 부분집합(1510)일 수 있다. 세 개의 스토리지 장치들(830, 835, 및 845)은, 도 14의 원하는 복제 계수(1405)를 만족시키면서 선택되고, 그리고 도 14의 레이턴시 제약(1410)을 만족시키기는, 가상 스토리지 장치들의 임의의 쌍들 사이의 최대 레이턴시는 6.5이다.
도 16a 및 도 16b는 원하는 고립 요구 사항을 만족시키기 위한 도 8의 스토리지 그래프(705)에서의 가상 스토리지 장치들의 부분 집합의 예시적인 선택을 보여준다. 도 16a에서, 어플리케이션(a1)은 가상 스토리지 장치들(830 및 835)을 포함하는 부분집합(1605)에 할당되고, 어플리케이션(a2)은 가상 스토리지 장치(840)를 포함하는 부분집합(1610)에 할당되고, 어플리케이션(a3)은 가상 스토리지 장치들(850, 및 855)을 포함하는 부분집합(1615)에 할당될 수 있다. 쿼리(1305)는 이제 어플리케이션(a2)이 스토리지 노드를 어플리케이션(a1)과 공유하지 않음을 나타내는 도 14의 고립 요구 사항(1415)을 명시할 수 있다. 부분집합들(1605, 및 1610)이 모두 노드(720)내에 있기 때문에, 부분 집합들(1605, 및 1610)은 현재 스토리지 노드를 공유한다. 이는 도 14의 고립 요구 사항(1415)과 반대되기 때문에, 가상 스토리지 장치들의 새로운 부분집합이 어플리케이션(a2)을 위해 선택될 필요가 있다.
도 13의 부분집합 선택기(1315)는 현재 임의의 어플리케이션들을 위한 스토리지를 제공하지 않는 노드(725)를 결정할 수 있다. 노드(725)가 스토리지를 어플리케이션(a1)과 공유하지 않기 때문에, 도 13의 부분집합 선택기(1315)는 어플리케이션(a2)을 위한 스토리지를 제공하기 위해 가상 스토리지 장치(845)를 선택할 수 있고, 그러면 어플리케이션(a2)의 데이터는 부분집합(1620)으로 이동될 수 있다.
이 예에서, 도 14의 고립 요구 사항(1415)은 어플리케이션(a2)이 어플리케이션(a1)으로부터 고립되어야 한다는 것만을 오직 명시한다. 그러므로, 이론 상으로는 노드(730) 상의 임의의 가상 스토리지 장치들이 또한 선택될 수 있다. 하지만 도 14의 고립 요구 사항(1415)이 어플리케이션(a2)이 두 어플리케이션들(a1 및 a3) 모두로부터 고립되는 것으로 명시할 경우, 노드(725)(그리고 가상 스토리지 장치(845))만이 유일한 이용 가능한 선택일 것이다.
도 17은 본 발명의 실시 예에 따라, 도 6 및 도 11의 로컬 스토리지 정보(1110) 및 도 6 및 도 11의 시스템 토폴로지(1105)로부터 도 7 내지 도 9의 스토리지 그래프(705)를 생성하기 위한 예시적인 과정을 보여주기 위한 순서도이다. 도 17에서, 블록(1705)에서, 도 2의 스토리지 그래프 생성기(240)는 도 11의 시스템 토폴로지(1105)를 수신할 수 있다. 블록(1710)에서, 도 2의 스토리지 그래프 생성기(240)는 도 11의 로컬 스토리지 정보(1110)를 수신할 수 있다. 블록(1715)에서, 스토리지 그래프 생성기(240)는 도 11의 시스템 토폴로지(1105) 및 도 11의 로컬 스토리지 정보(1110)로부터 도 7 내지 도 9의 스토리지 그래프(705)를 생성할 수 있다.
도 18a 내지 도 18c는 본 발명의 실시 예에 따라, 도 7 내지 도 9의 스토리지 그래프(705)에서의 다중 가중치 에지 및 노드들을 식별하기 위한 예시적인 과정을 보여주기 위한 순서도이다. 도 18a에서, 블록(1805)에서, 도 11의 루트 노드 식별자(1115)는 도 11의 시스템 토폴로지(1105) 및 도 11의 로컬 스토리지 정보(1110)의 하나 이상의 루트 노드들을 식별할 수 있다. 종종, 루트 노드들은 도 1의 데이터 센터(105)와 (도 1의 클라이언트 머신(140)과 같은) 외부를 연결하는 노드들일 수 있다. 블록(1810)에서, 도 11의 내부 노트 식별자(1120)는 도 11의 시스템 토폴로지(1105) 및 도 11의 로컬 스토리지 정보(1110)에 하나 이상의 내부 노드들을 식별할 수 있다. 실제로는, 루트 노드들 또는 리프 노드들이 아닌 임의의 노드들은 내부 노드들일 것이므로, 리프 노드들을 첫 번째로 식별하는 것이 더 쉬울 것이다. 하지만 대부분의 경우에서, 외부와 연결되지 않고 (리프 노드들로 간주되는 것에 따라 물리적 또는 가상) 스토리지 장치들이 아닌 모든 구성 요소들은 내부 노드들이다. 블록(1815)에서, 도 11의 스토리지 노드 식별자(1125)는 (물리적 또는 가상)스토리지 장치들을 나타내는 도 11의 시스템 토폴로지(1105) 및 도 11의 로컬 스토리지 정보(1110)에 하나 이상의 노드들을 식별할 수 있다.
이 시점에서, 도 7 내지 도 9의 스토리지 그래프(705)에서의 노드들은 모두 식별될 수 있고, 프로세스는 다중 가중치 에지들을 생성하는 것으로 전환된다. 블록(1820)에서, 도 11의 다중 가중치 에지 생성기(1130)는 도 7 내지 도 9의 스토리지 그래프(705)에 두 개의 노드들 사이의 에지를 식별할 수 있다. 블록(1825)에서, 도 11의 다중 가중치 에지 생성기(1130)는 다중 가중치 에지가 병합된 가상 스토리지 장치에 연결되는지에 대해 결정할 수 있다.
다중 가중치 에지가 병합된 가상 스토리지 노드와 연결되는 경우, 블록(1830)(도 18b)에서, 도 12의 거리 결정기(1205)는 병합된 가상 스토리지 장치를 합성하는 다양한 스토리지 장치들에 대한 링크들로부터, 병합된 가상 스토리지 장치에 대한 도 10의 병합된 거리(1065)를 결정할 수 있다. 블록(1835)에서, 도 12의 레이턴시 결정기(1210)는 병합된 가상 스토리지 장치를 합성하는 다양한 스토리지 장치들에 대한 링크들로부터, 병합된 가상 스토리지 장치에 대한 도 10의 병합된 레이턴시(1070)를 결정할 수 있다. 블록(1840)에서, 도 12의 대역폭 결정기(1215)는 병합된 가상 스토리지 장치를 합성하는 다양한 스토리지 장치들에 대한 링크들로부터, 병합된 가상 스토리지 장치에 대한 도 10의 병합된 대역폭(1075)을 결정할 수 있다. 그리고 블록(1845)에서, 도 11의 다중 가중치 에지 생성기(1130)는 도 10의 병합된 거리(1065), 도 10의 병합된 레이턴시(1070), 및 도 10의 병합된 대역폭(1085)를 다중 가중치 에지에 저장할 수 있다.
반대로, 다중 가중치 에지가 병합된 가상 스토리지 장치와 연결되지 않은 경우, 블록(1850)에서, 도 12의 거리 결정기(1205)는 해당 노드에 대한 도 10의 거리(1065)를 결정할 수 있다. 블록(1855)에서, 도 12의 레이턴시 결정기(1210)는 해당 노드에 대한 도 10의 레이턴시(1070)를 결정할 수 있다. 블록(1860)에서, 도 12의 대역폭 결정기(1215)는 해당 노드에 대한 도 10의 대역폭(1075)을 결정할 수 있다. 블록(1865)에서, 도 11의 다중 가중치 에지 생성기(1130)는 도 10의 거리(1065), 도 10의 레이턴시(1070), 및 도 10의 대역폭(1085)을 다중 가중치 에지에 저장할 수 있다.
다중 가중치 에지가 병합된 스토리지 장치에 연결되는지 아닌지 여부에 상관없이, 블록(1870)에서(도 18c), 도 12의 식별자 결정기(1220)는 다중 가중치 에지에 대한 도 10의 장치 물리적 식별자(1080)를 결정할 수 있다. 블록(1875)에서, 도 12의 식별자 결정기(1220)는 다중 가중치 에지에 대한 도 10의 장치 인터페이스 식별자(1085)를 결정할 수 있다. 블록(1880)에서, 도 11의 다중 가중치 에지 생성기(1130)는 도 10의 장치 물리적 식별자(1080) 및 도 10의 장치 인터페이스 식별자(1085)를 다중 가중치 에지에 저장할 수 있다. 블록(1090)에서, 도 11의 다중 가중치 에지 생성기(1130)는 추가적인 다중 가중치 에지들에 대해 고려해야 하는지에 대해 결정할 수 있다. 만약 그렇다면, 프로세싱은 도 18a의 블록(1820)으로 되돌아가고, 그렇지 않으면, 프로세싱은 완료된다.
도 19는 본 발명의 실시 예에 따라, 도 7 내지 도 9의 스토리지 그래프(705)를 기반으로 하는 도 13의 쿼리(1305)에 응답하기 위한 예시적인 절차를 보여주기 위한 순서도이다. 도 19에서, 블록(1905)에서, 도 2의 스토리지 거리 예측기(245)는 도 1의 호스트 머신(110) 또는 도 1의 클라이언트 머신(140)과 같은 머신으로부터 쿼리(1305)를 수신할 수 있다. 블록(1910)에서, 도 2의 스토리지 거리 예측기(245)는 도 13의 쿼리(1305)에 대한 도 13의 응답(1310)을 생성하기 위해 도 7 내지 도 9의 스토리지 그래프(705)를 사용할 수 있다. 그리고 블록(1915)에서, 도 2의 스토리지 거리 생성기(245)는 도 13의 쿼리(1305)를 보낸 머신으로 다시 도 13의 응답(1310)을 보낼 수 있다.
도 20은 본 발명의 실시 예에 따라, 도 13의 쿼리(1305)에 대답하기 위해 도 7 내지 도 9의 스토리지 그래프(705)를 이용하기 위한 예시적인 절차를 보여주는 순서도이다. 도 20에서, 블록(2005)에서, 도 2의 스토리지 거리 생성기(245)는 머신으로부터 도 14의 원하는 복제 계수(1405)를 수신할 수 있다. 블록(2010)에서, 도 13의 부분집합 선택기(1315)는 도 14의 원하는 복제 계수(1405)를 만족하는 리프 노드들의 부분집합을 선택할 수 있다.
그 대신에, 블록(2015)에서, 도 2의 스토리지 거리 생성기(245)는 머신으로부터 도 14의 레이턴시 제약(1410)을 수신할 수 있다. 블록(2020)에서, 도 13의 부분집합 선택기(1315)는 도 14의 레이턴시 제약(1410)을 만족하는 리프 노드들의 부분집합을 선택할 수 있다.
그 대신에, 블록(2025)에서, 도 2의 스토리지 거리 생성기(245)는 머신으로부터 도 14의 고립 요구 사항(1415)을 수신할 수 있다. 블록(2030)에서, 도 13의 부분집합 선택기(1315)는 도 14의 고립 요구 사항(1415)을 만족하는 리프 노드들의 부분집합을 선택할 수 있다.
그 대신에, 블록(2035)에서, 도 2의 스토리지 거리 생성기(245)는 머신으로부터 도 14의 대역폭 요구 사항(1420)을 수신할 수 있다. 블록(2040)에서, 도 13의 부분집합 선택기(1315)는 도 14의 대역폭 요구 사항(1420)을 만족하는 리프 노드들의 부분집합을 선택할 수 있다.
도 17 내지 도 20에서, 본 발명의 일부 실시 예들이 도시된다. 하지만, 당업자는 블록들의 순서를 변경함으로써, 블록들을 생략함으로써, 또는 도면들에 도시되지 않은 링크들을 포함함으로써 본 발명의 다른 실시 예들 또한 가능한 것을 알 수 있다. 순서도들의 모든 이러한 변형들은 명백한 설명 여부에 관계없이, 본 발명의 실시 예들로 간주된다.
다음의 설명은 본 발명의 특정 양상들이 구현될 수 있는 적합한 기계 또는 기계들의 간략한, 일반적인 설명을 제공하도록 의도된다. 기계 또는 기계들은 키보드(keyboard)들, 마우스들, 등과 같은 일반적인 입력 장치들뿐만 아니라, 가상 현실(virtual reality, VR) 환경, 생체 측정 피드백, 또는 다른 입력 신호들과의 상호작용하는 다른 기계들로부터의 입력에 의해 제어될 수 있다. 본원에서 사용되는 바와 같이, “기계”는 단일 기계, 가상 기계 또는 기계들, 가상 기계들 또는 함께 동작하는 장치들과 통신 연결되는 시스템을 광범위하게 포함하기 위한 용어이다. 예시적인 기계들은 개인용 컴퓨터들, 워크스테이션(workstation)들, 서버들, 휴대용 컴퓨터들, 핸드 헬드 장치(handheld device)등 뿐만 아니라, 자동차들, 기차들 기차들 등과 같은 대중 교통들 또는 개인 교통와 같은 교통 장치들을 포함한다.
기계 또는 기계들은 프로그램할 수 있는 또는 프로그램할 수 없는 로직 장치들 또는 어레이들과 같은 임베디드(embedded) 컨트롤러들, 애플리케이션 주문형 집적 회로(Application Specific Integrated Circuits, ASICs), 임베디드 컴퓨터들, 스마트 카드들 등을 포함할 수 있다. 기계 또는 기계들은 네트워크 인터페이스, 모뎀(modem) 또는 다른 통신 커플링과 같은, 하나 이상의 원격 장치들로의 하나 이상의 연결들을 활용할 수 있다. 기계들은 물리적 연결 및/또는 인트라넷(intranet), 인터넷(Internet), 근거리 통신망, 광역 통신망 등과 같은 논리 네트워크의 방법에 의해 상호 접속될 수 있다. 당업자는 네트워크 통신이 무선 주파수(radio frequency, RF), 위성, 마이크로파(microwave), 미국 전기 전자 학회(Institute of Electrical and Electronics Engineers, IEEE) 802.11, 블루투스®(Bluetooth®), 광, 적외선, 케이블, 레이저 등을 포함하는 다양한 유선 및/또는 무선 장거리 또는 단거리 케리어(carrier)들 및 프로토콜들을 활용하는 것을 이해할 수 있다.
본 발명의 실시 예는 업무들을 수행하거나 추상 데이터 유형들 및/또는 로우-레벨 하드웨어 컨텍스트들을 정의한 기계에서 기계 결과에 의해 액세스될 때 기능들, 과정들 데이터 구조들, 어플리케이션 프로그램들 등을 포함하는 관련된 데이터와 함께 또는 관련된 데이터를 참조하여 설명될 수 있다. 관련 데이터는 휘발성 및/또는 RAM, ROM등과 같은 불휘발성 메모리, 또는 다른 스토리지 장치들 및 하드-드라이브들, 플로피 디스크(floppy disk)들, 광 기억 장치, 테이프들, 플래시 메모리, 메모리 스틱들, 디지털 비디오 디스크들, 생물 디스크 등을 포함하는 그들의 관련 저장 매체에 저장될 수 있다. 관련 데이터는 물리적 및/또는 논리적 네트워크, 패킷(packet)들, 시리얼 데이터, 병렬 데이터, 전파 신호들의 형태를 포함하는 전송 환경들을 통해 전달될 수 있고, 압축된 또는 암호화된 포맷으로 사용될 수 있다. 관련 데이터는 분산 환경에서 사용될 수 있고, 머신 액세스를 위해 국부적 및/또는 원격으로 저장될 수 있다.
본 발명의 실시 예는 하나 이상의 프로세서들에 의해 실행 가능한 명령어들로 구성되는 불휘발성 머신 판독 가능한 매체를 포함할 수 있고, 명령어들은 기재된 바와 같이 본 발명의 요소들을 수행하기 위한 명령어들로 구성된다.
본 발명의 실시 예들은 제한 없이, 다음의 문장들로 확장될 수 있다.
문장 1. 본 발명의 실시 예는 시스템을 포함하고, 시스템은:
머신으로부터 쿼리를 수신하는 수신 로직;
쿼리에 대한 응답을 머신으로 전송하기 위한 전송 로직;
복수의 노드 및 적어도 하나의 다중 가중치 에지를 포함하는 스토리지 그래프, 복수의 노드는 루트 노드 및 물리적 스토리지 장치 또는 가상 스토리지 장치 중 하나를 나타내는 적어도 하나의 노드를 포함하고, 적어도 하나의 다중 가중치 에지의 에지는 복수의 노드에 두 개의 노드들 사이에 있고, 그리고
스토리지 그래프를 사용하여 머신에서 쿼리에 대한 응답을 생성하기 위한 스토리지 거리 생성기를 포함한다.
문장 2. 문장 1에 따른 시스템을 포함하는 본 발명의 실시 예에서, 수신 로직은 머신의 어플리케이션으로부터 쿼리를 수신하기 위해 동작한다.
문장 3. 문장 1에 따른 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 하나의 다중 가중치 에지의 레이턴시 및 대역폭을 포함한다.
문장 4. 문장 3에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 하나의 다중 가중치 에지의 에지는 거리를 더 포함한다.
문장 5. 문장 4에 따른 시스템을 포함하는 본 발명의 실시 예에서, 레이턴시는 거리로부터 유도(derived)된다.
문장 6. 문장 3에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 하나의 다중 가중치 에지의 에지는 에지가 연결되는 노드에 대한 적어도 하나의 식별자(ID)를 더 포함한다.
문장 7. 문장 6에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 하나의 식별자(ID)는 장치 물리적 식별자(ID)를 포함한다.
문장 8. 문장 6에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 하나의 식별자(ID)는 장치 인터페이스 식별자(ID)를 포함한다.
문장 9. 문장 1에 따른 시스템을 포함하는 본 발명의 실시 예에서, 복수의 노드는 호스트 머신 및 네트워크 부착 스토리지(NAS) 중 하나를 나타내는 내부 노드를 포함한다.
문장 10. 문장 1에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 하나의 노드는 가상 스토리지 장치를 나타내는 노드를 포함한다.
문장 11. 문장 1에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 하나의 노드는 병합된 가상 스토리지 장치를 포함하고, 병합된 가상 스토리지 장치는 적어도 두 개의 물리적 스토리지 장치들을 가상으로 결합한다.
문장 12. 문장 11에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 하나의 다중 가중치 에지는 병합된 가상 스토리지 장치에 연결되는 종합 다중 가중치 에지를 포함한다.
문장 13. 문장 12에 따른 시스템을 포함하는 본 발명의 실시 예에서, 종합 다중 가중치 에지는 병합된 레이턴시 및 병합된 대역폭을 포함하고, 병합된 레이턴시는 적어도 두 개의 가상 스토리지 장치들 중 하나에 접속하는 적어도 하나의 다중 가중치 에지의 에지들에서의 복수의 레이턴시의 평균을 나타내고, 병합된 대역폭은 적어도 두 개의 가상 스토리지 장치들 중 하나에 접속하는 적어도 하나의 다중 가중치 에지의 에지들에서의 복수의 대역폭의 합을 나타낸다.
문장 14. 문장 13에 따른 시스템을 포함하는 본 발명의 실시 예에서,
병합된 레이턴시는 적어도 두 개의 가상 스토리지 장치들 중 하나에 접속하는 적어도 하나의 다중 가중치 에지의 에지들에서의 복수의 레이턴시의 가중 평균을 나타내고,
병합된 대역폭은 적어도 두 개의 가상 스토리지 장치들 중 하나에 접속하는 적어도 하나의 다중 가중치 에지의 에지들에서의 복수의 대역폭의 가중 합을 나타낸다.
문장 15. 문장 12에 따른 시스템을 포함하는 본 발명의 실시 예에서, 종합 다중 가중치 에지는 적어도 두 개의 가상 스토리지 장치들 중 하나에 접속하는 적어도 하나의 다중 가중치 에지의 에지들에서의 복수의 거리의 평균을 나타내는 병합된 거리를 더 포함한다.
문장 16. 문장 15에 따른 시스템을 포함하는 본 발명의 실시 예에서, 병합된 거리는 적어도 두 개의 가상 스토리지 장치들 중 하나에 접속하는 적어도 하나의 다중 가중치 에지의 에지들에서의 복수의 거리의 가중 평균을 나타낸다.
문장 17. 문장 1에 따른 시스템을 포함하는 본 발명의 실시 예에서, 가상 스토리지 장치 및 제2 가상 스토리지 장치는 단일 물리적 스토리지 장치 내에 저장된다.
문장 18. 문장 1에 따른 시스템을 포함하는 본 발명의 실시 예에서,
쿼리는 원하는 복제 계수를 포함하고;
스토리지 거리 예측기는 원하는 복제 계수를 만족하는 노드들의 부분집합을 선택하기 위한 부분집합 선택기를 포함한다.
문장 19. 문장 18에 따른 시스템을 포함하는 본 발명의 실시 예에서, 부분집합 선택기는 대역폭을 최대화하면서 원하는 복제 계수를 만족하는 노드들의 부분집합을 선택하기 위해 동작한다.
문장 20. 문장 18에 따른 시스템을 포함하는 본 발명의 실시 예에서,
쿼리는 레이턴시 제약을 더 포함하고;
부분집합 선택기는 원하는 복제 계수 및 레이턴시 제약을 만족하는 노드들의 부분집합을 선택하기 위해 동작한다.
문장 21. 문장 20에 따른 시스템을 포함하는 본 발명의 실시 예에서, 부분집합 선택기는 원하는 복제 계수를 만족하는 노드들의 부분집합을 선택하기 위해 동작하고, 원하는 복제 계수를 만족하는 노드들의 부분집합에서의 두 개의 노드들 사이의 레이턴시는 레이턴시 제약보다 크지 않다.
문장 22. 문장 20에 따른 시스템을 포함하는 본 발명의 실시 예에서, 부분집합 선택기는 대역폭을 최대화하면서 원하는 복제 계수 및 레이턴시 제약을 만족하는 노드들의 부분집합을 선택하기 위해 동작한다.
문장 23. 문장 1에 따른 시스템을 포함하는 본 발명의 실시 예에서,
쿼리는 레이턴시 제약을 포함하고;
부분집합 선택기는 레이턴시 제약을 만족하는 노드들의 부분집합을 선택하기 위해 동작한다.
문장 24. 문장 23에 따른 시스템을 포함하는 본 발명의 실시 예에서, 부분집합 선택기는 노드들의 부분집합을 선택하기 위해 동작하고, 노드들의 부분집합에서의 임의의 두 노드들 사이의 레이턴시는 레이턴시 제약보다 크지 않다.
문장 25. 문장 1에 따른 시스템을 포함하는 본 발명의 실시 예에서,
쿼리는 대역폭 요구 사항을 포함하고;
스토리지 거리 예측기는 대역폭 요구 사항을 만족하는 노드들의 부분집합을 선택하기 위한 부분집합 선택기를 포함한다.
문장 26. 문장 1에 따른 시스템을 포함하는 본 발명의 실시 예에서,
쿼리는 타깃 어플리케이션으로부터 고립을 명시하는 고립 요구 사항을 포함하고;
스토리지 거리 예측기는 고립 요구 사항을 만족하는 노드들의 부분집합을 선택하기 위한 부분집합 선택기를 포함한다.
문장 27. 문장 26에 따른 시스템을 포함하는 본 발명의 실시 예에서, 부분집합 선택기는 타깃 어플리케이션에 의해 사용되는 노드들의 부분집합에 노드가 없도록 노드들의 부분집합을 선택하기 위해 동작한다.
문장 28. 문장 1에 따른 시스템을 포함하는 본 발명의 실시 예에서, 수신 로직은 시큐어 셀(SSH), 웹 인터페이스, 및 어플리케이션 프로그램 인터페이스(API) 중 하나를 통해 쿼리를 수신하도록 동작할 수 있다.
문장 29. 문장 1에 따른 시스템을 포함하는 본 발명의 실시 예에서,
수신 로직은 데이터 센터에 대해 적어도 부분적인 시스템 토폴로지 및 호스트 머신에 대한 로컬 스토리지 정보를 수신하도록 동작하고;
시스템은 적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보를 사용하는 스토리지 그래프를 생성하기 위한 스토리지 그래프 생성기를 더 포함한다.
문장 30. 문장 29에 따른 시스템을 포함하는 본 발명의 실시 예에서, (1105) 스토리지 그래프 생성기는:
적어도 부분적인 시스템 토폴로지에서의 노드를 루트 노드로써 식별하기 위한 루트 노드 식별자;
적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보에 적어도 하나의 내부 노드를 식별하기 위한 내부 노드 식별자, 적어도 하나의 내부 노드는 스위치, 라우터, 게이트웨이, 호스트 머신, 및 물리적 스토리지 장치 중 적어도 하나를 나타내고;
적어도 하나의 노드를 식별하기 위한 스토리지 노드 식별자를 포함하되, 노드는 적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보 내의 물리적 스토리지 장치 및 가상 스토리지 장치 중 하나를 나타낸다.
문장 31. 문장 30에 따른 시스템을 포함하는 본 발명의 실시 예에서, (1105) 스토리지 그래프 생성기는 적어도 하나의 다중 가중치 에지를 생성하기 위한 다중 가중치 에지 생성기를 더 포함한다.
문장 32. 문장 31에 따른 시스템을 포함하는 본 발명의 실시 예에서, (1105)
다중 가중치 에지 생성기는:
복수의 노드에서의 두 개의 노드들 사이의 레이턴시를 결정하기 위한 레이턴시 결정기; 및
복수의 노드에서의 두 개의 노드들 사이의 대역폭을 결정하기 위한 대역폭 결정기를 포함하고,
다중 가중치 에지 생성기는 적어도 하나의 다중 가중치 에지에서의 레이턴시 및 거리를 포함하도록 동작한다.
문장 33. 문장 32에 따른 시스템을 포함하는 본 발명의 실시 예에서, (1105)
다중 가중치 에지 생성기는 복수의 노드에서의 두 개의 노드들 사이의 거리를 결정하기 위한 거리 결정기를 포함하고;
다중 가중치 에지 생성기는 적어도 하나의 다중 가중치 에지에서의 거리를 포함하도록 동작한다.
문장 34. 문장 33에 따른 시스템을 포함하는 본 발명의 실시 예에서, (1105) 레이턴시는 거리로부터 유도될 수 있다.
문장 35. 문장 31에 따른 시스템을 포함하는 본 발명의 실시 예에서, (1105)
다중 가중치 에지 생성기는 복수의 노드에서의 두 개의 노드들 중 하나의 식별자(ID)를 식별하기 위한 식별자(ID) 결정기를 포함하고,
다중 가중치 에지 생성기는 적어도 하나의 다중 가중치 에지에서의 두 개의 노드들 중 하나의 식별자(ID)를 포함하도록 동작한다.
문장 36. 문장 35에 따른 시스템을 포함하는 본 발명의 실시 예에서, 식별자(ID)는 호스트 머신의 장치 물리적 식별자(ID)를 포함한다.
문장 37. 문장 35에 따른 시스템을 포함하는 본 발명의 실시 예에서, 식별자(ID)는 호스트 머신에서의 물리적 스토리지 장치의 장치 인터페이스 식별자(ID)를 포함한다.
문장 38. 문장 31에 따른 시스템을 포함하는 본 발명의 실시 예에서, 가상 스토리지 장치는 병합된 가상 스토리지 장치를 포함하고, 병합된 가상 스토리지 장치는 두 개의 물리적 스토리지 장치들을 가상으로 결합한다.
문장 39. 문장 38에 따른 시스템을 포함하는 본 발명의 실시 예에서, 다중 가중치 에지 생성기는 병합된 가상 스토리지 장치가 연결되는 종합 다중 가중치 에지를 생성하도록 동작한다.
문장 40. 문장 39에 따른 시스템을 포함하는 본 발명의 실시 예에서, 종합다중 가중치 에지는 병합된 레이턴시 및 병합된 대역폭을 포함하고, 병합된 레이턴시는 병합된 레이턴시는 적어도 두 개의 가상 스토리지 장치들 중 하나에 접속하는 적어도 하나의 다중 가중치 에지의 에지들에서의 복수의 레이턴시의 평균을 나타내고, 병합된 대역폭은 적어도 두 개의 가상 스토리지 장치들 중 하나에 접속하는 적어도 하나의 다중 가중치 에지의 에지들에서의 복수의 대역폭의 합을 나타낸다.
문장 41. 문장 40에 따른 시스템을 포함하는 본 발명의 실시 예에서,
병합된 레이턴시는 적어도 두 개의 가상 스토리지 장치들 중 하나에 접속하는 적어도 하나의 다중 가중치 에지의 에지들에서의 복수의 레이턴시의 가중 평균을 나타내고,
병합된 대역폭은 적어도 두 개의 가상 스토리지 장치들 중 하나에 접속하는 적어도 하나의 다중 가중치 에지의 에지들에서의 복수의 대역폭의 가중 합을 나타낸다.
문장 42. 문장 40에 따른 시스템을 포함하는 본 발명의 실시 예에서, 종합 다중 가중치 에지는 적어도 두 개의 가상 스토리지 장치들 중 하나에 접속하는 적어도 하나의 다중 가중치 에지의 에지들에서의 복수의 거리의 평균을 나타내는 병합된 거리를 더 포함한다.
문장 43. 문장 42에 따른 시스템을 포함하는 본 발명의 실시 예에서, 병합된 거리는 적어도 두 개의 가상 스토리지 장치들 중 하나에 접속하는 적어도 하나의 다중 가중치 에지의 에지들에서의 복수의 거리의 가중 평균을 나타낸다.
문장 44. 본 발명의 실시 예는 스토리지 거리 예측기에서 사용하기 위한 스토리지 그래프를 저장하기 위한 메모리를 포함하고,
메모리에 저장되는 데이터 구조를 포함하고, 데이터 구조는:
루트 노드 및 물리적 스토리지 장치 및 가상 스토리지 장치 중 하나를 나타내는 적어도 하나의 노드를 포함하는 복수의 노드; 및
사이의 적어도 하나의 다중 가중치 에지를 포함하고, 적어도 하나의 다중 가중치 에지는 복수의 노드에서 두 노드들 사이에 있다.
문장 45. 문장 44에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 하나의 다중 가중치 에지는 레이턴시와 대역폭을 포함한다.
문장 46. 문장 45에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 하나의 다중 가중치 에지의 에지는 거리를 더 포함한다.
문장 47. 문장 46에 따른 시스템을 포함하는 본 발명의 실시 예에서, 레이턴시는 거리로부터 유도된다.
문장 48. 문장 45에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 하나의 다중 가중치 에지의 에지는 에지가 연결되는 노드에 대한 적어도 하나의 식별자(ID)를 더 포함한다.
문장 49. 문장 48에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 하나의 식별자(ID)는 장치 물리적 식별자(ID)를 포함한다.
문장 50. 문장 48에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 하나의 식별자(ID)는 장치 인터페이스 식별자(ID)를 포함한다.
문장 51. 문장 44에 따른 시스템을 포함하는 본 발명의 실시 예에서, 복수의 노드는 호스트 머신 및 네트워크 부착 스토리지(NAS) 중 하나를 나타내는 내부 노드를 포함한다.
문장 52. 문장 44에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 하나의 노드는 가상 스토리지 장치를 나타내는 리프 노드를 포함한다.
문장 53. 문장 52에 따른 시스템을 포함하는 본 발명의 실시 예에서, 가상 스토리지 장치 및 제2 가상 스토리지 장치는 단일 물리적 스토리지 장치 내에 저장된다.
문장 54. 문장 52에 따른 시스템을 포함하는 본 발명의 실시 예에서, 가상 스토리지 장치는 병합된 가상 스토리지 장치를 포함하고, 병합된 가상 스토리지 장치는 적어도 두 개의 물리적 스토리지 장치들을 가상으로 결합한다.
문장 55. 문장 54에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 하나의 다중 가중치 에지는 병합된 가상 스토리지 장치에 연결되는 종합 다중 가중치 에지를 포함한다.
문장 56. 문장 55에 따른 시스템을 포함하는 본 발명의 실시 예에서, 종합 다중 가중치 에지는 병합된 레이턴시 및 병합된 대역폭을 포함하고, 병합된 레이턴시는 적어도 두 개의 가상 스토리지 장치들 중 하나에 접속하는 적어도 하나의 다중 가중치 에지의 에지들에서의 복수의 레이턴시의 평균을 나타내고, 병합된 대역폭은 적어도 두 개의 가상 스토리지 장치들 중 하나에 접속하는 적어도 하나의 다중 가중치 에지의 에지들에서의 복수의 대역폭의 합을 나타낸다.
문장 57. 문장 56에 따른 시스템을 포함하는 본 발명의 실시 예에서,
병합된 레이턴시는 적어도 두 개의 가상 스토리지 장치들 중 하나에 접속하는 적어도 하나의 다중 가중치 에지의 에지들에서의 복수의 레이턴시의 가중 평균을 나타내고,
병합된 대역폭은 적어도 두 개의 가상 스토리지 장치들 중 하나에 접속하는 적어도 하나의 다중 가중치 에지의 에지들에서의 복수의 대역폭의 가중 합을 나타낸다.
문장 58. 문장 55에 따른 시스템을 포함하는 본 발명의 실시 예에서, 종합 다중 가중치 에지는 적어도 두 개의 가상 스토리지 장치들 중 하나에 접속하는 적어도 하나의 다중 가중치 에지의 에지들에서의 복수의 거리의 평균을 나타내는 병합된 거리를 더 포함한다.
문장 59. 문장 58에 따른 시스템을 포함하는 본 발명의 실시 예에서, 병합된 거리는 적어도 두 개의 가상 스토리지 장치들 중 하나에 접속하는 적어도 하나의 다중 가중치 에지의 에지들에서의 복수의 거리의 가중 평균을 나타낸다.
문장 60. 본 발명의 실시 예는 스토리지 거리 예측기에서 사용하기 위한 스토리지 그래프를 저장하기 위한 메모리를 포함하고,
메모리에 저장되는 데이터 구조를 포함하고, 데이터 구조는:
루트 노드 및 적어도 두 개의 노드들을 포함하는 복수의 노드를 포함하고,, 적어도 두 개의 노드들의 제1 노드는 물리적 스토리지 장치를 나타내고, 적어도 두 개의 노드들의 제2 노드는 가상 스토리지 장치를 나타내고,
적어도 하나의 에지를 포함하고, 적어도 하나의 에지의 에지는 복수의 노드에서 두 개의 노드들 사이에 있다.
문장 61. 문장 60에 따른 시스템을 포함하는 본 발명의 실시 예에서, 복수의 노드는 호스트 머신 및 네트워크 부착 스토리지(NAS) 중 하나를 나타내는 내부 노드를 포함한다.
문장 62. 문장 60에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 하나의 노드는 가상 스토리지 장치를 나타내는 리프 노드를 포함한다.
문장 63. 문장 62에 따른 시스템을 포함하는 본 발명의 실시 예에서, 가상 스토리지 장치 및 제2 가상 스토리지 장치는 단일 물리적 스토리지 장치 내에 저장된다.
문장 64. 문장 62에 따른 시스템을 포함하는 본 발명의 실시 예에서, 가상 스토리지 장치는 병합된 가상 스토리지 장치를 포함하고, 병합된 가상 스토리지 장치는 적어도 두 개의 물리적 스토리지 장치들을 가상으로 결합한다.
문장 65. 본 발명의 실시 예는 시스템을 포함하고, 시스템은”
데이터 센터에 대한 적어도 부분적인 시스템 토폴로지 및 호스트 머신에 대한 로컬 스토리지 정보를 수신하는 수신 로직; 및
적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보를 이용하는 스토리지 그래프를 생성하기 위한 스토리지 그래프 생성기를 포함하되, 스토리지 그래프는 복수의 노드 및 적어도 하나의 다중 가중치 에지를 포함하고, 복수의 노드는 루트 노드 및 물리적 스토리지 장치 또는 가상 스토리지 장치를 중 하나를 나타내는 적어도 하나의 노드를 포함하고, 적어도 하나의 다중 가중치 에지의 에지는 복수의 노드에서 두 개의 노드들 사이에 있다.
문장 66. 문장 65에 따른 시스템을 포함하는 본 발명의 실시 예에서, 스토리지 그래프 생성기는:
적어도 부분적인 시스템 토폴로지에서의 노드를 루트 노드로써 식별하기 위한 루트 노드 식별자;
적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보에 적어도 하나의 내부 노드를 식별하기 위한 내부 노드 식별자, 적어도 하나의 내부 노드는 스위치, 라우터, 게이트웨이, 호스트 머신, 및 물리적 스토리지 장치 중 적어도 하나를 나타내고;
적어도 하나의 노드를 식별하기 위한 스토리지 노드 식별자를 포함하되, 노드는 적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보 내의 물리적 스토리지 장치 및 가상 스토리지 장치 중 하나를 나타낸다.
문장 67. 문장 66에 따른 시스템을 포함하는 본 발명의 실시 예에서, 스토리지 그래프 생성기는 적어도 하나의 다중 가중치 에지를 생성하기 위한 다중 가중치 에지 생성기를 더 포함한다.
문장 68. 문장 67에 따른 시스템을 포함하는 본 발명의 실시 예에서,
다중 가중치 에지 생성기는:
복수의 노드에서의 두 개의 노드들 사이의 레이턴시를 결정하기 위한 레이턴시 결정기; 및
복수의 노드에서의 두 개의 노드들 사이의 대역폭을 결정하기 위한 대역폭 결정기를 포함하고,
다중 가중치 에지 생성기는 적어도 하나의 다중 가중치 에지에서의 레이턴시 및 거리를 포함하도록 동작한다.
문장 69. 문장 68에 따른 시스템을 포함하는 본 발명의 실시 예에서,
가중치 에지 생성기는 복수의 노드에서의 두 개의 노드들 사이의 거리를 결정하기 위한 거리 결정기를 포함하고;
다중 가중치 에지 생성기는 적어도 하나의 다중 가중치 에지에서의 거리를 포함하도록 동작한다.
문장 70. 문장 69에 따른 시스템을 포함하는 본 발명의 실시 예에서, 레이턴시는 거리로부터 유도될 수 있다.
문장 71. 문장 67에 따른 시스템을 포함하는 본 발명의 실시 예에서,
다중 가중치 에지 생성기는 복수의 노드에서의 두 개의 노드들 중 하나의 식별자(ID)를 식별하기 위한 식별자(ID) 결정기를 포함하고,
다중 가중치 에지 생성기는 적어도 하나의 다중 가중치 에지에서의 두 개의 노드들 중 하나의 식별자(ID)를 포함하도록 동작한다.
문장 72. 문장 71에 따른 시스템을 포함하는 본 발명의 실시 예에서, 식별자(ID)는 호스트 머신의 장치 물리적 식별자(ID)를 포함한다.
문장 73. 문장 71에 따른 시스템을 포함하는 본 발명의 실시 예에서, 식별자(ID)는 호스트 머신에서의 물리적 스토리지 장치의 장치 인터페이스 식별자(ID)를 포함한다.
문장 74. 문장 67에 따른 시스템을 포함하는 본 발명의 실시 예에서, 가상 스토리지 장치는 병합된 가상 스토리지 장치를 포함하고, 병합된 가상 스토리지 장치는 두 개의 물리적 스토리지 장치들을 가상으로 결합한다.
문장 75. 문장 74에 따른 시스템을 포함하는 본 발명의 실시 예에서, 다중 가중치 에지 생성기는 병합된 가상 스토리지 장치가 연결되는 종합 다중 가중치 에지를 생성하도록 동작한다.
문장 76. 문장 75에 따른 시스템을 포함하는 본 발명의 실시 예에서, 종합 다중 가중치 에지는 병합된 레이턴시 및 병합된 대역폭을 포함하고, 병합된 레이턴시는 병합된 레이턴시는 적어도 두 개의 가상 스토리지 장치들 중 하나에 접속하는 적어도 하나의 다중 가중치 에지의 에지들에서의 복수의 레이턴시의 평균을 나타내고, 병합된 대역폭은 적어도 두 개의 가상 스토리지 장치들 중 하나에 접속하는 적어도 하나의 다중 가중치 에지의 에지들에서의 복수의 대역폭의 합을 나타낸다.
문장 77. 문장 76에 따른 시스템을 포함하는 본 발명의 실시 예에서,
병합된 레이턴시는 적어도 두 개의 가상 스토리지 장치들 중 하나에 접속하는 적어도 하나의 다중 가중치 에지의 에지들에서의 복수의 레이턴시의 가중 평균을 나타내고,
병합된 대역폭은 적어도 두 개의 가상 스토리지 장치들 중 하나에 접속하는 적어도 하나의 다중 가중치 에지의 에지들에서의 복수의 대역폭의 가중 합을 나타낸다.
문장 78. 문장 76에 따른 시스템을 포함하는 본 발명의 실시 예에서, 종합 다중 가중치 에지는 적어도 두 개의 가상 스토리지 장치들 중 하나에 접속하는 적어도 하나의 다중 가중치 에지의 에지들에서의 복수의 거리의 평균을 나타내는 병합된 거리를 더 포함한다.
문장 79. 문장 78에 따른 시스템을 포함하는 본 발명의 실시 예에서, 병합된 거리는 적어도 두 개의 가상 스토리지 장치들 중 하나에 접속하는 적어도 하나의 다중 가중치 에지의 에지들에서의 복수의 거리의 가중 평균을 나타낸다.
문장 80. 본 발명의 실시 예는 시스템을 포함하고, 시스템은:
적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보를 이용하는 스토리지 그래프를 생성하기 위한 스토리지 그래프 생성기를 포함하되, 스토리지 그래프는 복수의 노드 및 적어도 하나의 에지를 포함하고, 복수의 노드는 루트 노드를 포함하고, 제1 노드는 물리적 스토리지 장치를 나타내고, 제2 노드는 가상 스토리지 장치를 나타내고, 적어도 하나의 에지의 에지는 복수의 노드에서 두 개의 노드들 사이에 있다.
문장 81. 문장 80에 따른 시스템을 포함하는 본 발명의 실시 예에서, 스토리지 그래프 생성기는:
적어도 부분적인 시스템 토폴로지에서의 노드를 루트 노드로써 식별하기 위한 루트 노드 식별자;
적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보에 적어도 하나의 내부 노드를 식별하기 위한 내부 노드 식별자, 적어도 하나의 내부 노드는 스위치, 라우터, 게이트웨이, 호스트 머신, 및 물리적 스토리지 장치 중 적어도 하나를 나타내고;
적어도 하나의 노드를 식별하기 위한 스토리지 노드 식별자를 포함하되, 노드는 적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보 내의 물리적 스토리지 장치 및 가상 스토리지 장치 중 하나를 나타낸다.
문장 82. 본 발명의 실시 예는 방법을 포함하고, 방법은:
머신으로부터 쿼리를 수신하는 단계;
쿼리에 대한 응답을 결정하기 위해 스토리지 그래프를 이용하는 단계; 및
쿼리에 대한 응답을 머신으로 전송하는 단계를 포함하되,
스토리지 그래프는 복수의 노드 및 적어도 하나의 다중 가중치 에지를 포함하고, 복수의 노드는 루트 노드 및 물리적 스토리지 장치 또는 가상 스토리지 장치 중 하나를 나타내는 적어도 하나의 노드를 포함하고, 적어도 하나의 다중 가중치 에지의 에지는 복수의 노드에서 두 개의 노드 사이에 있다.
문장 83. 문장 82에 따른 시스템을 포함하는 본 발명의 실시 예에서,
머신으로부터 쿼리를 수신하는 단계는 머신의 어플리케이션으로부터 쿼리를 수신하는 단계를 포함하고,
쿼리에 대한 응답을 머신으로 전송하는 단계는 머신의 어플리케이션으로 쿼리에 대한 응답을 전송하는 단계를 포함한다.
문장 84. 문장 82에 따른 시스템을 포함하는 본 발명의 실시 예에서,
머신으로부터 쿼리를 수신하는 단계는 머신으로부터 원하는 복제 계수를 수신하는 단계를 포함하고,
쿼리에 대한 응답을 결정하기 위해 스토리지 그래프를 이용하는 단계는 원하는 복제 계수를 만족하는 노드들의 부분집합을 선택하는 단계를 포함한다.
문장 85. 문장 84에 따른 시스템을 포함하는 본 발명의 실시 예에서, 원하는 복제 계수를 만족하는 노드들의 부분집합을 선택하는 단계는 대역폭을 최대화하면서 원하는 복제 계수를 만족하는 노드들의 부분집합을 선택하는 단계를 포함한다.
문장 86. 문장 84에 따른 시스템을 포함하는 본 발명의 실시 예에서,
머신으로부터 쿼리를 수신하는 단계는 머신으로부터 레이턴시 제약을 수신하는 단계를 더 포함하고,
원하는 복제 계수를 만족하는 노드들의 부분집합을 선택하는 단계는 원하는 복제 계수 및 레이턴시 제약을 만족하는 노드들의 부분집합을 선택하는 단계를 포함한다.
문장 87. 문장 86에 따른 시스템을 포함하는 본 발명의 실시 예에서, 원하는 복제 계수 및 레이턴시 제약을 만족하는 노드들의 부분집합을 선택하는 단계는 원하는 복제 계수를 만족하는 노드들의 부분집합을 선택하는 단계를 포함하고, 원하는 복제 계수를 만족하는 노드들의 부분집합에서의 두 개의 노드들 사이의 레이턴시는 레이턴시 제약보다 크지 않다.
문장 88. 문장 86에 따른 시스템을 포함하는 본 발명의 실시 예에서, 원하는 복제 계수 및 레이턴시 제약을 만족하는 노드들의 부분집합을 선택하는 단계는 대역폭을 최대화하면서 원하는 복제 계수 및 레이턴시 제약을 만족하는 노드들의 부분집합을 선택하는 단계를 포함한다.
문장 89. 문장 82에 따른 시스템을 포함하는 본 발명의 실시 예에서,
머신으로부터 쿼리를 수신하는 단계는 머신으로부터 레이턴시 제약을 수신하는 단계를 포함하고,
쿼리에 대한 응답을 결정하기 위해 스토리지 그래프를 이용하는 단계는 레이턴시 제약을 만족하는 노드들의 부분집합을 선택하는 단계를 포함한다.
문장 90. 문장 89에 따른 시스템을 포함하는 본 발명의 실시 예에서, 레이턴시 제약을 만족하는 노드들의 부분집합을 선택하는 단계는 두 개의 노드들의 부분집합을 선택하는 단계를 포함하고, 노드들의 부분집합에서의 임의의 두 노드들 사이의 레이턴시는 레이턴시 제약보다 크지 않다.
문장 91. 문장 82에 따른 시스템을 포함하는 본 발명의 실시 예에서,
머신으로부터 쿼리를 수신하는 단계는 머신으로부터 대역폭 요구 사항을 수신하는 단계를 포함하고,
쿼리에 대한 응답을 결정하기 위해 스토리지 그래프를 이용하는 단계는 대역폭 요구 사항을 만족하는 노드들의 부분집합을 선택하는 단계를 포함한다.
문장 92. 문장 82에 따른 시스템을 포함하는 본 발명의 실시 예에서,
머신으로부터 쿼리를 수신하는 단계는 고립 요구 사항을 수신하는 단계를 포함하고, 고립 요구 사항은 타깃 어플리케이션으로부터 고립을 명시하고,
쿼리에 대한 응답을 결정하기 위해 스토리지 그래프를 이용하는 단계는 고립 요구 사항을 만족하는 노드들의 부분집합을 선택하는 단계를 포함한다.
문장 93. 문장 92에 따른 시스템을 포함하는 본 발명의 실시 예에서, 고립 요구 사항을 만족하는 노드들의 부분집합을 선택하는 단계는 타깃 어플리케이션에 의해 사용되는 노드들의 부분집합에 노드가 없도록 노드들의 부분집합을 선택하는 단계를 포함한다.
문장 94. 본 발명의 실시 예는 방법을 포함하고, 방법은:
데이터 센터에 대한 적어도 부분적인 시스템 토폴로지를 수신하는 단계;
호스트 머신에 대한 로컬 스토리지 정보를 수신하는 단계; 및
적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보로부터 스토리지 그래프를 생성하는 단계를 포함하되, 스토리지 그래프는 복수의 노드 및 적어도 하나의 다중 가중치 에지를 포함하고, 복수의 노드는 루트 노드 및 물리적 스토리지 장치 또는 가상 스토리지 장치 중 하나를 나타내는 적어도 하나의 노드를 포함하고, 다중 가중치 에지의 에지는 복수의 노드에서 두 개의 노드들 사이에 있다.
문장 95. 문장 94에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보로부터 스토리지 그래프를 생성하는 단계는:
적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보에서 루트 노드를 식별하는 단계;
적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보에 적어도 하나의 내부 노드를 식별하는 단계;
적어도 하나의 노드를 식별하는 단계를 포함하되,
적어도 하나의 내부 노드는 스위치, 라우터, 게이트웨이, 호스트 머신, 및 물리적 스토리지 장치를 나타내고, 적어도 하나의 노드는 노드는 적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보 내의 적어도 하나의 물리적 스토리지 장치 내에 있는 가상 스토리지 장치를 나타낸다.
문장 96. 문장 95에 따른 시스템을 포함하는 본 발명의 실시 예에서, 가상 스토리지 장치는 병합된 가상 스토리지 장치를 포함하고, 병합된 가상 스토리지 장치는 두 개의 물리적 스토리지 장치들을 가상으로 결합한다.
문장 97. 문장 96에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보로부터 스토리지 그래프를 생성하는 단계는:
적어도 두 개의 물리적 스토리지 장치들에 대한 병합된 레이턴시를 결정하는 단계;
적어도 두 개의 물리적 스토리지 장치들에 대한 병합된 대역폭을 결정하는 단계; 및
적어도 하나의 다중 가중치 에지에서의 병합된 레이턴시 및 병합된 대역폭을 저장하는 단계를 포함한다.
문장 98. 문장 97에 따른 시스템을 포함하는 본 발명의 실시 예에서,
적어도 두 개의 물리적 스토리지 장치들에 대한 병합된 레이턴시를 결정하는 단계는 적어도 두 개의 물리적 스토리지 장치들에 대한 가중 병합된 레이턴시를 결정하는 단계를 포함하고,
적어도 두 개의 물리적 스토리지 장치들에 대한 병합된 대역폭을 결정하는 단계는 적어도 두 개의 물리적 스토리지 장치들에 대한 가중 병합된 대역폭을 결정하는 단계를 포함한다.
문장 99. 문장 97에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보로부터 스토리지 그래프를 생성하는 단계는:
적어도 두 개의 물리적 스토리지 장치들에 대한 병합된 거리를 결정하는 단계; 및
적어도 하나의 다중 가중치 에지에서 병합된 거리를 저장하는 단계를 더 포함한다.
문장 100. 문장 99에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 두 개의 물리적 스토리지 장치들에 대한 병합된 거리를 결정하는 단계는 적어도 두 개의 물리적 스토리지 장치들에 대한 가중 병합된 거리를 결정하는 단계를 포함한다.
문장 101. 문장 94에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보로부터 스토리지 그래프를 생성하는 단계는:
복수의 노드에서 두 개의 노드들 사이의 레이턴시를 결정하는 단계;
복수의 노드에서 두 개의 노드들 사이의 대역폭을 결정하는 단계; 및
적어도 하나의 다중 가중치 에지에 레이턴시 및 대역폭을 저장하는 단계를 포함한다.
문장 102. 문장 101에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보로부터 스토리지 그래프를 생성하는 단계는:
복수의 노드에서 두 개의 노드들 사이의 거리를 결정하는 단계; 및
적어도 하나의 다중 가중치 에지에 거리를 저장하는 단계를 더 포함한다.
문장 103. 문장 101에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보로부터 스토리지 그래프를 생성하는 단계는:
복수의 노드에서 두 개의 노드들 의 식별자(ID)를 결정하는 단계; 및
적어도 하나의 다중 가중치 에지에 식별자(ID)를 저장하는 단계를 더 포함한다.
문장 104. 문장 103에 따른 시스템을 포함하는 본 발명의 실시 예에서, 복수의 노드에서 두 개의 노드들 의 식별자(ID)를 결정하는 단계는 호스트 머신의 장치 물리적 식별자(ID)를 결정하는 단계를 포함한다.
문장 105. 문장 103에 따른 시스템을 포함하는 본 발명의 실시 예에서, 복수의 노드에서 두 개의 노드들 의 식별자(ID)를 결정하는 단계는 호스트 머신에서의 물리적 스토리지 장치의 장치 인터페이스 식별자(ID)를 결정하는 단계를 포함한다.
문장 106. 본 발명의 실시 예는 방법을 포함하고, 방법은:
데이터 센터에 대한 적어도 부분적인 시스템 토폴로지를 수신하는 단계;
호스트 머신에 대한 로컬 스토리지 정보를 수신하는 단계; 및
적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보로부터 스토리지 그래프를 생성하는 단계를 포함하되, 스토리지 그래프는 복수의 노드 및 적어도 하나의 에지를 포함하고, 복수의 노드는 루트 노드를 포함하고, 제1 노드는 물리적 스토리지 장치를 나타내고, 제2 노드는 가상 스토리지 장치를 나타내고, 적어도 하나의 에지의 에지는 복수의 노드에서 두 개의 노드 들 사이에 있다.
문장 107. 문장 106에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보로부터 스토리지 그래프를 생성하는 단계는
적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보에서 루트 노드를 식별하는 단계;
적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보에서 적어도 하나의 내부 노드를 식별하는 단계; 및
적어도 하나의 노드를 식별하는 단계를 포함하되,
적어도 하나의 내부 노드는 스위치, 라우터, 게이트웨이, 호스트 머신 및 물리적 스토리지 장치 중 적어도 하나를 나타내고, 적어도 하나의 노드는 적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보 내의 적어도 하나의 물리적 스토리지 장치 내의 가상 스토리지 장치를 나타낸다.
문장 108. 문장 107에 따른 시스템을 포함하는 본 발명의 실시 예에서, 가상 스토리지 장치는 병합된 가상 스토리지 장치를 포함하고, 병합된 가상 스토리지 장치는 두 개의 물리적 스토리지 장치들을 가상으로 결합한다.
문장 109. 본 발명의 실시 예는 구체적인 저장 매체로 구성되는 제품을 포함하고, 구체적인 저장 매체는 그것에 대해 저장된 비일시적인 명령들을 갖고, 기계에 의해 실행되는 경우, 그 결과는:
머신으로부터 쿼리를 수신하는 단계;
쿼리에 대한 응답을 결정하기 위해 스토리지 그래프를 이용하는 단계; 및
쿼리에 대한 응답을 머신으로 전송하는 단계를 포함하되,
스토리지 그래프는 복수의 노드 및 적어도 하나의 다중 가중치 에지를 포함하고, 복수의 노드는 루트 노드 및 물리적 스토리지 장치 또는 가상 스토리지 장치 중 하나를 나타내는 적어도 하나의 노드를 포함하고, 적어도 하나의 다중 가중치 에지의 에지는 복수의 노드에서 두 개의 노드 사이에 있다.
문장 110. 문장 109에 따른 시스템을 포함하는 본 발명의 실시 예에서, 머신으로부터 쿼리를 수신하는 단계는 머신의 어플리케이션으로부터 쿼리를 수신하는 단계를 포함하고,
쿼리에 대한 응답을 머신으로 전송하는 단계는 머신의 어플리케이션으로 쿼리에 대한 응답을 전송하는 단계를 포함한다.
문장 111. 문장 109에 따른 시스템을 포함하는 본 발명의 실시 예에서, 머신으로부터 쿼리를 수신하는 단계는 머신으로부터 원하는 복제 계수를 수신하는 단계를 포함하고,
쿼리에 대한 응답을 결정하기 위해 스토리지 그래프를 이용하는 단계는 원하는 복제 계수를 만족하는 노드들의 부분집합을 선택하는 단계를 포함한다.
문장 112. 문장 111에 따른 시스템을 포함하는 본 발명의 실시 예에서, 원하는 복제 계수를 만족하는 노드들의 부분집합을 선택하는 단계는 대역폭을 최대화하면서 원하는 복제 계수를 만족하는 노드들의 부분집합을 선택하는 단계를 포함한다.
문장 113. 문장 111에 따른 시스템을 포함하는 본 발명의 실시 예에서, 머신으로부터 쿼리를 수신하는 단계는 머신으로부터 레이턴시 제약을 수신하는 단계를 더 포함하고,
원하는 복제 계수를 만족하는 노드들의 부분집합을 선택하는 단계는 원하는 복제 계수 및 레이턴시 제약을 만족하는 노드들의 부분집합을 선택하는 단계를 포함한다.
문장 114. 문장 113에 따른 시스템을 포함하는 본 발명의 실시 예에서, 원하는 복제 계수 및 레이턴시 제약을 만족하는 노드들의 부분집합을 선택하는 단계는 원하는 복제 계수를 만족하는 노드들의 부분집합을 선택하는 단계를 포함하고, 원하는 복제 계수를 만족하는 노드들의 부분집합에서의 두 개의 노드들 사이의 레이턴시는 레이턴시 제약보다 크지 않다.
문장 115. 문장 113에 따른 시스템을 포함하는 본 발명의 실시 예에서, 원하는 복제 계수 및 레이턴시 제약을 만족하는 노드들의 부분집합을 선택하는 단계는 대역폭을 최대화하면서 원하는 복제 계수 및 레이턴시 제약을 만족하는 노드들의 부분집합을 선택하는 단계를 포함한다.
문장 116. 문장 109에 따른 시스템을 포함하는 본 발명의 실시 예에서, 머신으로부터 쿼리를 수신하는 단계는 머신으로부터 레이턴시 제약을 수신하는 단계를 포함하고,
쿼리에 대한 응답을 결정하기 위해 스토리지 그래프를 이용하는 단계는 레이턴시 제약을 만족하는 노드들의 부분집합을 선택하는 단계를 포함한다.
문장 117. 문장 116에 따른 시스템을 포함하는 본 발명의 실시 예에서, 레이턴시 제약을 만족하는 노드들의 부분집합을 선택하는 단계는 두 개의 노드들의 부분집합을 선택하는 단계를 포함하고, 노드들의 부분집합에서의 임의의 두 노드들 사이의 레이턴시는 레이턴시 제약보다 크지 않다.
문장 118. 문장 109에 따른 시스템을 포함하는 본 발명의 실시 예에서, 머신으로부터 쿼리를 수신하는 단계는 머신으로부터 대역폭 요구 사항을 수신하는 단계를 포함하고,
쿼리에 대한 응답을 결정하기 위해 스토리지 그래프를 이용하는 단계는 대역폭 요구 사항을 만족하는 노드들의 부분집합을 선택하는 단계를 포함한다.
문장 119. 문장 109에 따른 시스템을 포함하는 본 발명의 실시 예에서, 머신으로부터 쿼리를 수신하는 단계는 고립 요구 사항을 수신하는 단계를 포함하고, 고립 요구 사항은 타깃 어플리케이션으로부터 고립을 명시하고,
쿼리에 대한 응답을 결정하기 위해 스토리지 그래프를 이용하는 단계는 고립 요구 사항을 만족하는 노드들의 부분집합을 선택하는 단계를 포함한다.
문장 120. 문장 119에 따른 시스템을 포함하는 본 발명의 실시 예에서, 고립 요구 사항을 만족하는 노드들의 부분집합을 선택하는 단계는 타깃 어플리케이션에 의해 사용되는 노드들의 부분집합에 노드가 없도록 노드들의 부분집합을 선택하는 단계를 포함한다.
문장 121. 본 발명의 실시 예는 구체적인 저장 매체로 구성되는 제품을 포함하고, 구체적인 저장 매체는 그것에 대해 저장된 비일시적인 명령들을 갖고, 기계에 의해 실행되는 경우, 그 결과는:
데이터 센터에 대한 적어도 부분적인 시스템 토폴로지를 수신하는 단계;
호스트 머신에 대한 로컬 스토리지 정보를 수신하는 단계; 및
적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보로부터 스토리지 그래프를 생성하는 단계를 포함하되, 스토리지 그래프는 복수의 노드 및 적어도 하나의 다중 가중치 에지를 포함하고, 복수의 노드는 루트 노드 및 물리적 스토리지 장치 또는 가상 스토리지 장치 중 하나를 나타내는 적어도 하나의 노드를 포함하고, 다중 가중치 에지의 에지는 복수의 노드에서 두 개의 노드들 사이에 있다.
문장 122. 문장 121에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보로부터 스토리지 그래프를 생성하는 단계는:
적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보에서 루트 노드를 식별하는 단계;
적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보에 적어도 하나의 내부 노드를 식별하는 단계;
적어도 하나의 노드를 식별하는 단계를 포함하되,
적어도 하나의 내부부 노드는 스위치, 라우터, 게이트웨이, 호스트 머신, 및 물리적 스토리지 장치를 나타내고, 적어도 하나의 노드는 노드는 적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보 내의 적어도 하나의 물리적 스토리지 장치 내에 있는 가상 스토리지 장치를 나타낸다.
문장 123. 문장 122에 따른 시스템을 포함하는 본 발명의 실시 예에서, 가상 스토리지 장치는 병합된 가상 스토리지 장치를 포함하고, 병합된 가상 스토리지 장치는 두 개의 물리적 스토리지 장치들을 가상으로 결합한다.
문장 124. 문장 123에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보로부터 스토리지 그래프를 생성하는 단계는:
적어도 두 개의 물리적 스토리지 장치들에 대한 병합된 레이턴시를 결정하는 단계;
적어도 두 개의 물리적 스토리지 장치들에 대한 병합된 대역폭을 결정하는 단계; 및
적어도 하나의 다중 가중치 에지에서의 병합된 레이턴시 및 병합된 대역폭을 저장하는 단계를 포함한다.
문장 125. 문장 124에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 두 개의 물리적 스토리지 장치들에 대한 병합된 레이턴시를 결정하는 단계는 적어도 두 개의 물리적 스토리지 장치들에 대한 가중 병합된 레이턴시를 결정하는 단계를 포함하고,
적어도 두 개의 물리적 스토리지 장치들에 대한 병합된 대역폭을 결정하는 단계는 적어도 두 개의 물리적 스토리지 장치들에 대한 가중 병합된 대역폭을 결정하는 단계를 포함한다.
문장 126. 문장 124에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보로부터 스토리지 그래프를 생성하는 단계는:
적어도 두 개의 물리적 스토리지 장치들에 대한 병합된 거리를 결정하는 단계; 및
적어도 하나의 다중 가중치 에지에서 병합된 거리를 저장하는 단계를 더 포함한다.
문장 127. 문장 126에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 두 개의 물리적 스토리지 장치들에 대한 병합된 거리를 결정하는 단계는 적어도 두 개의 물리적 스토리지 장치들에 대한 가중 병합된 거리를 결정하는 단계를 포함한다.
문장 128. 문장 121에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보로부터 스토리지 그래프를 생성하는 단계는:
복수의 노드에서 두 개의 노드들 사이의 레이턴시를 결정하는 단계;
복수의 노드에서 두 개의 노드들 사이의 대역폭을 결정하는 단계; 및
적어도 하나의 다중 가중치 에지에 레이턴시 및 대역폭을 저장하는 단곌를 포함한다.
문장 129. 문장 128에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보로부터 스토리지 그래프를 생성하는 단계는:
복수의 노드에서 두 개의 노드들 사이의 거리를 결정하는 단계; 및
적어도 하나의 다중 가중치 에지에 거리를 저장하는 단계를 더 포함한다.
문장 130. 문장 128에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보로부터 스토리지 그래프를 생성하는 단계는:
복수의 노드에서 두 개의 노드들 의 식별자(ID)를 결정하는 단계; 및
적어도 하나의 다중 가중치 에지에 식별자(ID)를 저장하는 단계를 더 포함한다.
문장 131. 문장 130에 따른 시스템을 포함하는 본 발명의 실시 예에서, 복수의 노드에서 두 개의 노드들 의 식별자(ID)를 결정하는 단계는 호스트 머신의 장치 물리적 식별자(ID)를 결정하는 단계를 포함한다.
문장 132. 문장 130에 따른 시스템을 포함하는 본 발명의 실시 예에서, 복수의 노드에서 두 개의 노드들 의 식별자(ID)를 결정하는 단계는 호스트 머신에서의 물리적 스토리지 장치의 장치 인터페이스 식별자(ID)를 결정하는 단계를 포함한다.
문장 133. 본 발명의 실시 예는 구체적인 저장 매체로 구성되는 제품을 포함하고, 구체적인 저장 매체는 그것에 대해 저장된 비일시적인 명령들을 갖고, 기계에 의해 실행되는 경우, 그 결과는:
데이터 센터에 대한 적어도 부분적인 시스템 토폴로지를 수신하는 단계;
호스트 머신에 대한 로컬 스토리지 정보를 수신하는 단계; 및
적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보로부터 스토리지 그래프를 생성하는 단계를 포함하되, 스토리지 그래프는 복수의 노드 및 적어도 하나의 에지를 포함하고, 복수의 노드는 루트 노드를 포함하고, 제1 노드는 물리적 스토리지 장치를 나타내고, 제2 노드는 가상 스토리지 장치를 나타내고, 적어도 하나의 에지의 에지는 복수의 노드에서 두 개의 노드 들 사이에 있다.
문장 134. 문장 133에 따른 시스템을 포함하는 본 발명의 실시 예에서, 적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보로부터 스토리지 그래프를 생성하는 단계는
적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보에서 루트 노드를 식별하는 단계;
적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보에서 적어도 하나의 내부 노드를 식별하는 단계; 및
적어도 하나의 노드를 식별하는 단계를 포함하되,
적어도 하나의 내부 노드는 스위치, 라우터, 게이트웨이, 호스트 머신 및 물리적 스토리지 장치 중 적어도 하나를 나타내고, 적어도 하나의 노드는 적어도 부분적인 시스템 토폴로지 및 로컬 스토리지 정보 내의 적어도 하나의 물리적 스토리지 장치 내의 가상 스토리지 장치를 나타낸다.
문장 135. 문장 134에 따른 시스템을 포함하는 본 발명의 실시 예에서, 가상 스토리지 장치는 병합된 가상 스토리지 장치를 포함하고, 병합된 가상 스토리지 장치는 두 개의 물리적 스토리지 장치들을 가상으로 결합한다.

Claims (10)

  1. 머신(machine)으로부터 쿼리(query)를 수신하기 위한 수신 로직(reception logic);
    상기 쿼리에 대한 응답을 상기 머신으로 전송하기 위한 전송 로직(transmission logic);
    복수의 노드 및 적어도 하나의 다중 가중치 에지(multi-weight edge)를 포함하는 스토리지 그래프(storage graph)를 저장하는 스토리지(storage); 및
    상기 스토리지 그래프를 사용하여 상기 머신으로부터 상기 쿼리에 대한 상기 응답을 생성하기 위한 스토리지 거리 예측기(storage distance predictor)를 포함하되,
    상기 복수의 노드는 루트 노드(root node) 및 물리적 스토리지 장치(physical storage device) 또는 가상 스토리지 장치(virtual storage device) 중 하나를 나타내는 적어도 하나의 노드를 포함하고,
    상기 적어도 하나의 다중 가중치 에지의 에지는 상기 복수의 노드에서 두 개의 노드들 사이에 관련 되고,
    상기 쿼리에 대한 상기 응답은 상기 스토리지 그래프에서 애플리케이션에 상기 스토리지를 할당하기 위한 노드들을 결정하기 위하여 사용되고,
    상기 적어도 하나의 다중 가중치 에지는 대역폭과 레이턴시(latency)를 포함하는 적어도 2개의 상이한 가중치 기준을 사용하여 상기 다중 가중치 에지의 가중치에 관한 정보를 제공하는 시스템.
  2. 제 1항에 있어서,
    상기 적어도 하나의 노드는 병합된 가상 스토리지 장치(merged virtual device)를 포함하고,
    상기 병합된 가상 스토리지 장치는 적어도 두 개의 물리적 스토리지 장치들을 가상으로 결합하는 시스템.
  3. 데이터 센터(data center)에 대한 적어도 부분적인 시스템 토폴로지(system topology) 및 호스트 머신(host machine)에 대한 로컬 스토리지 정보(local storage information)를 수신하는 수신 로직(reception logic); 및
    상기 적어도 부분적인 시스템 토폴로지 및 상기 로컬 스토리지 정보를 이용하여 스토리지 그래프(storage graph)를 생성하기 위한 스토리지 그래프 생성기(storage graph generator)를 포함하되,
    상기 스토리지 그래프는 복수의 노드 및 적어도 하나의 다중 가중치 에지(multi-weight edge)를 포함하고,
    상기 복수의 노드는 루트 노드(root node) 및 물리적 스토리지 장치(physical storage device) 또는 가상 스토리지 장치(virtual storage device) 중 하나를 나타내는 적어도 하나의 노드를 포함하고,
    상기 적어도 하나의 다중 가중치 에지의 에지는 상기 복수의 노드에서 두 개의 노드들 사이에 관련되고,
    상기 스토리지 그래프는 쿼리(query)에 대한 응답을 생성하기 위하여 이용되고,
    상기 쿼리에 대한 응답은 상기 스토리지 그래프에서 애플리케이션에 스토리지를 할당하기 위한 노드들을 결정하기 위하여 사용되고,
    상기 적어도 하나의 다중 가중치 에지는 대역폭과 레이턴시(latency)를 포함하는 적어도 2개의 상이한 가중치 기준을 사용하여 상기 다중 가중치 에지의 가중치에 관한 정보를 제공하는 시스템.
  4. 제 3 항에 있어서,
    상기 적어도 부분적인 시스템 토폴로지에서의 노드를 상기 루트 노드로서 식별하기 위한 루트 노드 식별기(root node identifier);
    상기 적어도 부분적인 시스템 토폴로지 및 상기 로컬 스토리지 정보에 적어도 하나의 내부 노드(internal node)를 식별하기 위한 내부 노드 식별기(internal node identifier); 및
    상기 적어도 하나의 노드를 식별하기 위한 스토리지 노드 식별기(storage node identifier)를 포함하되,
    상기 적어도 하나의 내부 노드는 스위치, 라우터, 게이트웨이, 상기 호스트 머신, 및 상기 물리적 스토리지 장치 중 적어도 하나를 나타내고,
    상기 노드는 상기 적어도 부분적인 시스템 토폴로지 및 상기 로컬 스토리지 정보 내의 적어도 하나의 물리적 스토리지 장치 내의 상기 물리적 스토리지 장치 및 상기 가상 스토리지 장치 중 하나를 나타내는 시스템.
  5. 제 4 항에 있어서,
    상기 스토리지 그래프 생성기는 상기 적어도 하나의 다중 가중치 에지를 생성하기 위한 다중 가중치 에지 생성기(multi-weight edge generator)를 더 포함하는 시스템.
  6. 제 5 항에 있어서,
    상기 다중 가중치 에지 생성기는
    상기 복수의 노드에서의 두 개의 노드들 사이의 레이턴시를 결정하기 위한 레이턴시 결정기(latency determiner); 및
    상기 복수의 노드에서의 상기 두 개의 노드들 사이의 대역폭을 결정하기 위한 대역폭 결정기(bandwidth determiner)를 포함하고,
    상기 다중 가중치 에지 생성기는 상기 적어도 하나의 다중 가중치 에지의 상기 레이턴시 및 거리를 포함하도록 동작하는 시스템.
  7. 제 5 항에 있어서,
    상기 가상 스토리지 장치는 병합된 가상 스토리지 장치(merged virtual storage device)를 포함하고,
    상기 병합된 가상 스토리지 장치는 적어도 두 개의 물리적 스토리지 장치들을 가상으로 결합하는 시스템.
  8. 제 7 항에 있어서,
    상기 다중 가중치 에지 생성기는 상기 병합된 가상 스토리지 장치에 연결되는 종합 다중 가중치 에지(aggregate multi-weight edge)를 생성하도록 동작하는 시스템.
  9. 제 8 항에 있어서,
    상기 종합 다중 가중치 에지는 병합된 레이턴시(merged latency) 및 병합된 대역폭(merged bandwidth)을 포함하고,
    상기 병합된 레이턴시는 적어도 두 개의 가상 스토리지 장치들 중 하나에 접속하는 상기 적어도 하나의 다중 가중치 에지의 에지들에서의 복수의 레이턴시의 평균을 나타내고,
    상기 병합된 대역폭은 상기 적어도 두 개의 가상 스토리지 장치들 중 하나에 접속하는 상기 적어도 하나의 다중 가중치 에지의 에지들에서의 복수의 대역폭의 합을 나타내는 시스템.
  10. 수신 로직에 의해 머신(machine)으로부터 쿼리(query)를 수신하는 단계;
    스토리지 거리 예측기에 의해 상기 쿼리에 대한 응답을 결정하기 위하여 스토리지 그래프(storage graph)를 사용하는 단계; 및
    전송 로직에 의해 상기 쿼리에 대한 상기 응답을 상기 머신으로 전송하는 단계를 포함하되,
    상기 스토리지 그래프는 복수의 노드 및 적어도 하나의 다중 가중치 에지(multi-weight edge)를 포함하고,
    상기 복수의 노드는 루트 노드(root node) 및 물리적 스토리지 장치(physical storage device) 또는 가상 스토리지 장치(virtual storage device) 중 하나를 나타내는 적어도 하나의 노드를 포함하고,
    상기 적어도 하나의 다중 가중치 에지의 에지는 상기 복수의 노드에서 두 개의 노드들 사이에 관련되고,
    상기 쿼리에 대한 상기 응답은 상기 스토리지 그래프에서 애플리케이션에 상기 스토리지를 할당하기 위한 노드들을 결정하기 위하여 사용되고,
    상기 적어도 하나의 다중 가중치 에지는 대역폭과 레이턴시(latency)를 포함하는 적어도 2개의 상이한 가중치 기준을 사용하여 상기 다중 가중치 에지의 가중치에 관한 정보를 제공하는 스토리지 장치의 동작 방법.
KR1020170035311A 2016-05-24 2017-03-21 스토리지 거리를 예측하기 위한 방법 및 장치 KR102168958B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662341057P 2016-05-24 2016-05-24
US62/341,057 2016-05-24
US15/222,938 2016-07-28
US15/222,938 US10439881B2 (en) 2016-05-24 2016-07-28 Method and apparatus for predicting storage distance

Publications (2)

Publication Number Publication Date
KR20170132660A KR20170132660A (ko) 2017-12-04
KR102168958B1 true KR102168958B1 (ko) 2020-10-22

Family

ID=60418450

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170035311A KR102168958B1 (ko) 2016-05-24 2017-03-21 스토리지 거리를 예측하기 위한 방법 및 장치

Country Status (2)

Country Link
US (1) US10439881B2 (ko)
KR (1) KR102168958B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11314772B2 (en) * 2017-04-26 2022-04-26 Telefonaktiebolaget Lm Ericsson (Publ) Robust data replication among data centers
US20200042216A1 (en) * 2018-08-03 2020-02-06 Alibaba Group Holding Limited Storage-based graph for enabling computation graph optimization
US11729080B2 (en) * 2021-05-12 2023-08-15 Vmware, Inc. Agentless method to automatically detect low latency groups in containerized infrastructures

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030200390A1 (en) 2002-04-23 2003-10-23 Moore Joseph G. System and method for providing graph structuring for layered virtual volumes
KR101431530B1 (ko) 2010-12-07 2014-08-22 에스케이텔레콤 주식회사 수학문장의 시맨틱거리 추출 및 시맨틱거리에 의한 수학문장의 분류방법과 그를 위한 장치 및 컴퓨터로 읽을 수 있는 기록매체
US20140258535A1 (en) 2013-03-08 2014-09-11 Telefonaktiebolaget L M Ericsson (Publ) Network bandwidth allocation in multi-tenancy cloud computing networks
JP2015204623A (ja) 2014-04-10 2015-11-16 富士通株式会社 Nタプル分離光経路の階層的誘導検索
US20150379420A1 (en) 2014-06-27 2015-12-31 Netapp, Inc. Methods for provisioning workloads in a storage system using machine learning and devices thereof

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6493656B1 (en) 1999-02-26 2002-12-10 Compaq Computer Corporation, Inc. Drive error logging
US8296467B2 (en) 2000-01-06 2012-10-23 Super Talent Electronics Inc. Single-chip flash device with boot code transfer capability
US7028147B2 (en) 2002-12-13 2006-04-11 Sun Microsystems, Inc. System and method for efficiently and reliably performing write cache mirroring
US7120651B2 (en) 2003-08-01 2006-10-10 Oracle International Corporation Maintaining a shared cache that has partitions allocated among multiple nodes and a data-to-partition mapping
JP4473175B2 (ja) 2005-05-13 2010-06-02 富士通株式会社 記憶制御方法、プログラム及び装置
KR20090026941A (ko) 2007-09-11 2009-03-16 삼성전자주식회사 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의가상 파일 시스템에서 어드레스 맵핑을 수행하는 방법 및그 장치
US7856499B2 (en) * 2008-03-20 2010-12-21 Sap Ag Autonomic provisioning of hosted applications with level of isolation terms
US8667171B2 (en) 2010-05-28 2014-03-04 Microsoft Corporation Virtual data center allocation with bandwidth guarantees
US8880558B2 (en) * 2010-07-01 2014-11-04 International Business Machines Corporation Cloud services creation based on graph mapping
US20120188249A1 (en) * 2011-01-26 2012-07-26 Raytheon Company Distributed graph system and method
KR101800444B1 (ko) 2011-03-28 2017-12-20 삼성전자주식회사 불휘발성 메모리의 제어 방법 및 그것을 포함하는 메모리 시스템
EP2541679A1 (en) * 2011-06-30 2013-01-02 Sony Corporation Wideband beam forming device, wideband beam steering device and corresponding methods
US9317336B2 (en) 2011-07-27 2016-04-19 Alcatel Lucent Method and apparatus for assignment of virtual resources within a cloud environment
US9026717B2 (en) 2011-09-30 2015-05-05 SanDisk Technologies, Inc. Apparatus, system, and method for a persistent object store
US9239786B2 (en) 2012-01-18 2016-01-19 Samsung Electronics Co., Ltd. Reconfigurable storage device
US9720668B2 (en) 2012-02-29 2017-08-01 Red Hat, Inc. Creating and maintaining multi-tenant applications in a platform-as-a-service (PaaS) environment of a cloud computing system
US10095705B2 (en) 2012-09-24 2018-10-09 Microsoft Technology Licensing, Llc Integrated data retention policy for solid state and asymmetric access
US20140181595A1 (en) 2012-12-20 2014-06-26 Virtium Technology, Inc. Estimating lifespan of solid-state drive using real usage model
US9152684B2 (en) 2013-11-12 2015-10-06 Netapp, Inc. Snapshots and clones of volumes in a storage system
US9619381B2 (en) 2013-12-24 2017-04-11 International Business Machines Corporation Collaborative health management in a storage system
US9798489B2 (en) * 2014-07-02 2017-10-24 Hedvig, Inc. Cloning a virtual disk in a storage platform
US9524103B2 (en) 2014-09-10 2016-12-20 Netapp, Inc. Technique for quantifying logical space trapped in an extent store
WO2016048185A1 (en) 2014-09-26 2016-03-31 Emc Corporation Policy based provisioning of storage system resources
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US9954799B2 (en) * 2015-05-14 2018-04-24 International Business Machines Corporation Adaptive service chain management
US10310740B2 (en) 2015-06-23 2019-06-04 Pure Storage, Inc. Aligning memory access operations to a geometry of a storage device
US10235473B2 (en) * 2015-10-28 2019-03-19 Vmware, Inc. Methods and systems to allocate logical disk costs to virtual machines in a virtual data center

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030200390A1 (en) 2002-04-23 2003-10-23 Moore Joseph G. System and method for providing graph structuring for layered virtual volumes
KR101431530B1 (ko) 2010-12-07 2014-08-22 에스케이텔레콤 주식회사 수학문장의 시맨틱거리 추출 및 시맨틱거리에 의한 수학문장의 분류방법과 그를 위한 장치 및 컴퓨터로 읽을 수 있는 기록매체
US20140258535A1 (en) 2013-03-08 2014-09-11 Telefonaktiebolaget L M Ericsson (Publ) Network bandwidth allocation in multi-tenancy cloud computing networks
JP2015204623A (ja) 2014-04-10 2015-11-16 富士通株式会社 Nタプル分離光経路の階層的誘導検索
US20150379420A1 (en) 2014-06-27 2015-12-31 Netapp, Inc. Methods for provisioning workloads in a storage system using machine learning and devices thereof

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Pongsakorn U-chupala 외 8인."Application-Oriented Bandwidth and Latency Aware Routing with Open Flow Network".2014 IEEE 6th International Conference on Cloud Computing Technology and Science.2014.12.15.
Sandeep Kumar Singh 외 2인."A Survey on Internet Multipath Routing and Provisioning".IEEE COMMUNICATION SURVEYS & TUTORIALS,2015.07.23.,VOL.17.NO.4.(제2157면 내지 제2175면)
Sanli Hu. 외 2인."Weighting Approach in Zigbee Network Performance Index Based on Correlation".2013 Third International Conference on IMCCC.2013.10.21.(제1367면 내지 제1370면)
Xiaoronga, C. 외 2인."Study on Clustering of Wireless Sensor Network in Distribution Network Monitoring System".IEEE Transactions on Consumer Electronics.2011.05.01.,vol.57,no.2,(제477면 내지 제483면)

Also Published As

Publication number Publication date
US10439881B2 (en) 2019-10-08
KR20170132660A (ko) 2017-12-04
US20170346699A1 (en) 2017-11-30

Similar Documents

Publication Publication Date Title
KR102457611B1 (ko) 터넌트-어웨어 스토리지 쉐어링 플랫폼을 위한 방법 및 장치
US20160349993A1 (en) Data-driven ceph performance optimizations
US10140066B2 (en) Smart partitioning of storage access paths in shared storage services
US7921185B2 (en) System and method for managing switch and information handling system SAS protocol communication
US11146626B2 (en) Cloud computing environment with replication system configured to reduce latency of data read access
CN104603739A (zh) 对并行存储的块级访问
US10171382B2 (en) Mechanism of identifying available memory resources in a network of multi-level memory modules
US10534541B2 (en) Asynchronous discovery of initiators and targets in a storage fabric
US20190044806A1 (en) Systems and methods for managing a cloud deployed service
US11595474B2 (en) Accelerating data replication using multicast and non-volatile memory enabled nodes
KR102168958B1 (ko) 스토리지 거리를 예측하기 위한 방법 및 장치
WO2019001319A1 (en) CLOUD RESOURCE MANAGEMENT WITHOUT ANY AGENT
US9736046B1 (en) Path analytics using codebook correlation
CN105138281B (zh) 一种物理磁盘的共享方法及装置
US9319350B2 (en) Virtual address for virtual port
US11956313B2 (en) Dynamic storage sharing across network devices
CN111247508A (zh) 网络存储架构
Liu et al. Towards a community cloud storage
US11340950B2 (en) Service band management system
JP2004258747A (ja) 接続先ピア選択装置及びその方法
De La Bastida et al. Extending IoT/M2M system scalability by network slicing
US20240272795A1 (en) Dynamic metro configuration using storage area network (san) response time hints from host computer
US12032830B2 (en) Host path selection utilizing address range distribution obtained from storage nodes for distributed logical volume
CN110213337B (zh) 分布式存储系统及穿透方法
US12067248B2 (en) Tiered memory fabric workload performance optimization system

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right