KR20190027812A - 컴퓨팅 시스템을 위한 애플리케이션 구동형 스토리지 시스템 - Google Patents
컴퓨팅 시스템을 위한 애플리케이션 구동형 스토리지 시스템 Download PDFInfo
- Publication number
- KR20190027812A KR20190027812A KR1020197000355A KR20197000355A KR20190027812A KR 20190027812 A KR20190027812 A KR 20190027812A KR 1020197000355 A KR1020197000355 A KR 1020197000355A KR 20197000355 A KR20197000355 A KR 20197000355A KR 20190027812 A KR20190027812 A KR 20190027812A
- Authority
- KR
- South Korea
- Prior art keywords
- computing
- storage
- data
- mode
- component
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/154—Networked environment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
클라우드 기반 컴퓨팅 시스템의 스토리지 디바이스에서 보안 애플리케이션 구동형 임의의 컴퓨팅을 가능하게 시스템 및 방법이 제공된다. (1) 컴퓨팅 시스템에 대응하는 복수의 호스트 컴퓨팅 자원에 대한 액세스를 제공하고, (2) 제 1 모드 또는 제 2 모드 중 적어도 하나로 동작하도록 구성되는 컴퓨팅 제어기를 포함하는 컴퓨팅 시스템이 제공된다. 컴퓨팅 시스템은 스토리지 컴포넌트, 적어도 하나의 컴퓨팅 컴포넌트 및 적어도 하나의 암호화 컴포넌트를 포함하는 스토리지 시스템에 대한 액세스를 제공하도록 구성된 스토리지 제어기를 더 포함할 수 있다. 제 1 모드에서, 호스트 컴퓨팅 자원은 스토리지 컴포넌트 중 적어도 하나에 저장된 적어도 제 1 데이터 세트에 대해 적어도 제 1 동작을 실행하도록 구성될 수 있다. 제 2 모드에서, 적어도 하나의 컴퓨팅 컴포넌트는 적어도 제 2 데이터 세트에 대해 적어도 제 2 동작을 실행하도록 구성될 수 있다.
Description
클라우드 기반 컴퓨팅 시스템과 같은 컴퓨팅 시스템은 다양한 컴퓨팅 및 스토리지 요구에 따라 다양한 사용자 및 테넌트(tenants)에게 서비스한다. 이러한 클라우드 기반 컴퓨팅 시스템은 데이터 집약적인 컴퓨팅을 포함한다. 이러한 클라우드 기반 컴퓨팅 시스템의 데이터는 일반적으로 SATA 호환 자기 하드 드라이브 또는 솔리드 스테이트 드라이브(Solid-State Drive; SSD)에 저장된다. SSD 및 SSD를 제어하는 펌웨어는 SSD 공급업체에 의해 제공된다. SSD 및 해당 펌웨어에 대한 하드웨어 리프레쉬 사이클은 흔히 3 내지 5 년이며, 이 기간 동안 SSD 내부의 펌웨어는 변경되지 않고 유지된다. 이 기간 동안 클라우드 기반 컴퓨팅 시스템 운영자는 오래된 하드웨어 및 펌웨어로 작업할 수밖에 없다. 오래된 하드웨어 및 펌웨어는 이러한 클라우드 기반 컴퓨팅 시스템의 운영자가 혁신적인 소프트웨어를 배치하는 것을 방해한다.
또한, 클라우드 기반 컴퓨팅 시스템의 데이터는 인가받지 않은 사람들이 데이터에 액세스할 수 있게 하는 불법 행위를 겪을 수 있다. 이러한 데이터가 평문 텍스트 형식이고 암호화되지 않은 경우, 비인가 액세스(unauthorized access)로 인해 클라우드 기반 컴퓨팅 시스템 운영자에게 문제가 발생할 수 있다.
일 예에서, 본 개시는 (1) 컴퓨팅 시스템에 대응하는 복수의 호스트 컴퓨팅 자원에 대한 액세스를 제공하고, (2) 제 1 모드 또는 제 2 모드 중 적어도 하나로 동작하도록 구성된 컴퓨팅 제어기를 포함하는 컴퓨팅 시스템에 관한 것이다. 컴퓨팅 시스템은 컴퓨팅 시스템에 대응하는 복수의 스토리지 시스템에 대한 액세스를 제공하도록 구성된 스토리지 제어기를 더 포함할 수 있으며, 여기서, 복수의 스토리지 시스템 중 적어도 하나는 복수의 스토리지 컴포넌트, 적어도 하나의 컴퓨팅 컴포넌트 및 적어도 하나의 암호화 컴포넌트를 포함한다. 제 1 모드에서, 상기 호스트 컴퓨팅 자원 중 적어도 하나는 적어도 제 1 데이터 세트에 대해 적어도 제 1 동작을 실행하도록 구성될 수 있고, 여기서, 제 1 데이터 세트는 복수의 스토리지 컴포넌트 중 적어도 하나에 저장된다. 제 2 모드에서, 적어도 하나의 컴퓨팅 컴포넌트는 적어도 제 2 데이터 세트에 대해 적어도 제 2 동작을 실행하도록 구성될 수 있으며, 여기서, 제 2 데이터 세트의 암호화된 버전은 복수의 스토리지 컴포넌트 중 상기 적어도 하나에 저장되며, 상기 적어도 하나의 암호화 컴포넌트는 상기 적어도 제 2 데이터 세트의 상기 암호화된 버전을 해독하고 상기 적어도 하나의 컴퓨팅 컴포넌트에 상기 제 2 데이터 세트의 암호화되지 않은 버전을 제공하도록 구성된다. 상기 적어도 하나의 컴퓨팅 컴포넌트는, 상기 제 2 데이터 세트의 암호화되지 않은 버전을 처리함으로써 적어도 상기 제 2 동작을 실행하고 상기 처리에 기초하여 적어도 하나의 결과를 생성하도록 더 구성될 수 있다.
또 다른 양태에서, 본 개시는 (1) 컴퓨팅 시스템에 대응하는 복수의 호스트 컴퓨팅 자원에 대한 액세스를 제공하고, (2) 제 1 모드 또는 제 2 모드 중 적어도 하나로 동작하도록 구성되는 컴퓨팅 제어기를 포함하는 컴퓨팅 시스템에 관한 것으로, 상기 복수의 호스트 컴퓨팅 자원은 제 1 애플리케이션 및 제 2 애플리케이션에 액세스 가능하고, 상기 제 1 애플리케이션은 적어도 대기 시간에 민감한 저장 동작을 수행하도록 구성되고, 상기 제 2 애플리케이션은 적어도 처리량에 민감한 저장 동작을 수행하도록 구성된다. 컴퓨팅 시스템은 컴퓨팅 시스템에 대응하는 복수의 스토리지 시스템에 대한 액세스를 제공하도록 구성된 스토리지 제어기를 더 포함할 수 있으며, 여기서, 복수의 스토리지 시스템 중 적어도 하나는 복수의 스토리지 컴포넌트 및 적어도 하나의 컴퓨팅 컴포넌트를 포함한다. 제 1 모드에서, 호스트 컴퓨팅 자원 중 적어도 하나는, 제 1 애플리케이션 또는 제 2 애플리케이션으로부터의 요청에 기초하여, 적어도 제 1 데이터 세트에 대해 적어도 제 1 동작을 실행하도록 구성될 수 있고, 적어도 상기 제 1 데이터 세트는 상기 복수의 스토리지 컴포넌트 중 적어도 하나에 저장되고, 상기 적어도 하나의 컴퓨팅 컴포넌트는 적어도 상기 제 1 데이터 세트에 대해 상기 처리량에 민감한 저장 동작을 수행하는 것보다 상기 대기 시간에 민감한 저장 동작을 수행하기 위한 더 높은 우선 순위의 액세스를 가능하도록 구성될 수 있다. 제 2 모드에서, 상기 적어도 하나의 컴퓨팅 컴포넌트는 (1) 상기 제 1 애플리케이션 또는 상기 제 2 애플리케이션으로부터의 요청에 기초하여, 적어도 제 2 데이터 세트에 대해 적어도 제 2 동작을 실행하고 - 여기서, 상기 적어도 하나의 제 2 데이터 세트는 상기 복수의 스토리지 컴포넌트 중 적어도 하나에 저장됨 - , (2) 적어도 상기 제 2 데이터 세트에 대해 상기 처리량에 민감한 저장 동작을 수행하는 것보다 상기 대기 시간에 민감한 저장 동작을 수행하기 위한 더 높은 우선 순위의 액세스를 가능하도록 구성될 수 있다.
또 다른 양태에서, 본 개시는 (1) 컴퓨팅 시스템에 대응하는 복수의 호스트 컴퓨팅 자원에 대한 액세스를 제공하고, (2) 제 1 모드 또는 제 2 모드 중 적어도 하나로 동작하도록 구성되는 컴퓨팅 제어기, 및 상기 컴퓨팅 시스템에 대응하는 복수의 스토리지 시스템에 대한 액세스를 제공하도록 구성될 수 있는 스토리지 제어기를 포함하는 컴퓨팅 시스템에서의 방법에 관한 것으로, 상기 복수의 스토리지 시스템 중 적어도 하나는 복수의 스토리지 컴포넌트 및 적어도 하나의 컴퓨팅 컴포넌트를 포함한다. 상기 방법은, 상기 제 1 모드에서, 상기 호스트 컴퓨팅 자원 중 적어도 하나를 사용하여, 상기 복수의 스토리지 컴포넌트 중 적어도 하나에 저장된 적어도 제 1 데이터 세트에 대해 적어도 제 1 동작을 실행하는 것을 포함할 수 있다. 상기 방법은, 제 2 모드에서, 상기 적어도 하나의 컴퓨팅 컴포넌트만을 사용하여, 상기 복수의 스토리지 컴포넌트 중 적어도 하나에 저장된 적어도 제 2 데이터 세트에 대해 적어도 제 2 동작을 실행하는 것을 더 포함할 수 있고, 상기 제 2 동작은 상기 제 2 데이터 세트에 대해 필터 동작을 수행하는 것에 대응한다.
이 개요는 아래의 상세한 설명에서 더 기술되는 단순화된 형태의 개념의 선택을 소개하기 위해 제공된다. 이 개요는 청구된 발명의 대상의 핵심 특징 또는 필수 특징을 식별하기 위한 것도 아니고 청구된 발명의 대상의 범위를 제한하는 데 사용되는 것도 아니다.
본 개시는 예시로서 도시되며, 유사한 참조 부호가 유사한 요소를 나타내는 첨부된 도면에 의해 제한되지 않는다. 도면의 요소는 간략화 및 명료성을 위해 도시되며, 반드시 축척대로 그려진 것은 아니다.
도 1은 일 예에 따른 클라우드 기반 컴퓨팅 시스템의 블록도이다.
도 2는 다른 예에 따른 스토리지 시스템의 블록도이다.
도 3은 일 예에 따른 SSD 제어기의 블록도이다.
도 4는 일 예에 따른 방법의 흐름도이다.
도 1은 일 예에 따른 클라우드 기반 컴퓨팅 시스템의 블록도이다.
도 2는 다른 예에 따른 스토리지 시스템의 블록도이다.
도 3은 일 예에 따른 SSD 제어기의 블록도이다.
도 4는 일 예에 따른 방법의 흐름도이다.
본 개시에 설명된 예는 클라우드 기반 컴퓨팅 시스템의 스토리지 디바이스에서 애플리케이션 구동형 임의의 컴퓨팅을 가능하게 하는 시스템 및 방법에 관한 것이다. 다른 예는 클라우드 기반 컴퓨팅 시스템의 스토리지 디바이스에서 보안 애플리케이션 구동형 임의의 컴퓨팅을 가능하게 시스템 및 방법에 관한 것이다. 애플리케이션 구동형 임의의 컴퓨팅은 기존 클라우드 컴퓨팅 플랫폼에 비해 몇 가지 이점을 제공할 수 있다. 예를 들어, 클라우드 기반 컴퓨팅 시스템과 관련된 스토리지 시스템에 사용자 지정 기능(custom capabilities)이 추가될 수 있다. 이러한 사용자 지정 기능은 이 기능을 통해 시스템에서 실행되는 애플리케이션의 요구와 SSD와 같은 스토리지 시스템의 한계 사이의 격차를 해소하는 데 도움이 될 수 있다. 또한, 클라우드 기반 컴퓨팅 시스템의 운영자는 차세대 SSD 하드웨어를 기다리지 않고도 혁신적인 기능을 클라우드에 배치할 수 있다. 컴퓨팅을 SSD 내부로 이동하면, 컴퓨팅 중심 프로세싱과는 달리, 데이터 중심 프로세싱의 속도를 높이는 데 도움을 줄 수 있다. 일 예로서, 데이터 중심 프로세싱에서는 컴퓨팅을 위해 스토리지, 메모리(예를 들어, DRAM) 및 CPU 간에 인터페이스를 통해 데이터를 이동하는 것이 매우 비효율적이다. SSD 내부로 컴퓨팅을 이동시키는 것의 추가적인 이점으로는 보다 높은 처리량, 낮은 대기 시간 및 낮은 에너지 소비에 있다. 일 예로서, 스토리지 시스템 내부의 컴퓨팅 컴포넌트에 다수의 독립 플래시 채널을 통해 연결된, 플래시 칩과 같은, 다수의 스토리지 컴포넌트를 구비한 스토리지 시스템은 보다 높은 처리량을 가질 수 있다. 보다 낮은 대기 시간과 관련하여, 데이터 중심 프로세싱은 데이터 세트에 대한 액세스가 다른 데이터 세트에 대한 이전 액세스에 의존하는 데이터 종속성 액세스(data-dependent access)를 포함한다. 스토리지 시스템 내부의 컴퓨팅 컴포넌트로 인해, 플래시 칩과 같은 다수의 스토리지 컴포넌트를 구비한 스토리지 시스템에 대한 데이터 종속성 액세스는 호스트(CPU) 메모리 및 호스트 소프트웨어 스택과 관련된 대기 시간 오버헤드를 발생시키지 않는다. 에너지 소비량은 또한 많은 양의 데이터를 컴퓨팅을 위해 호스트 메모리와 호스트 CPU로 이동시킬 필요를 없앰으로써 낮아질 수 있다. 다양한 온라인 서비스와 같은 사용자 대면 애플리케이션에는 낮은 대기 시간이 요구된다.
온라인 서비스에서 낮은 대기 시간의 응답 시간을 제공하기 위해서는, 많은 애플리케이션이 SSD 판독(예를 들어, 웹 검색 인덱스와 관련된 판독)에 대한 예측 가능한 낮은 대기 시간을 얻는 것이 필요하다. 이러한 애플리케이션은 제공하는 데이터를 주기적으로 업데이트해야 하지만, 사용자 대면 판독과 동시에 백그라운드에서 동시 기입이 발생할 수 있다. 기입의 대기 시간은 판독의 대기 시간보다 수 배 더 길며, 기입을 실행하는 동안 개별 플래시 칩이 판독을 제공할 수 없기 때문에, 기입이 사용자 판독에 미치는 간섭으로 인해 판독 대기 시간이 예기치 않게 증가할 수 있다. 이것은 온라인 서비스 애플리케이션의 주요 문제이며, 프로그래밍 가능한 SSD로 해결될 수 있다.
또한, 클라우드 기반 컴퓨팅 시스템에서, 데이터의 보안이 중요하다. 클라우드 기반 데이터 스토리지에서 데이터 침해(data breaches)는 소비자 신뢰도를 떨어 뜨린다. 데이터 침해의 영향을 개선하는 한 가지 방법은 데이터를 암호화한 다음 컴퓨팅하는 것이다. 그러나, 암호화된 데이터에 대한 컴퓨팅은 쉽지가 않다. 동형적 암호화(homomorphic encryption)가 사용될 수 있지만, 이는 계산 집약적이며 특정 클래스의 컴퓨팅에서만 작동된다. 본 발명의 목적 중 하나는 임의의 컴퓨팅을 가능하게 하고 데이터 침해로부터 데이터를 여전히 보호하는 것이다. 클라우드 기반 컴퓨팅 시스템에서, 다수의 고객 복제본(예를 들어, 특정 데이터베이스의 복사본)이 동일한 머신에서 실행된다. 데이터가 암호 해독되면, 그 데이터는 컴퓨팅 노드의 메모리 내의 평문 텍스트가 된다. 복제본 중 하나에 대한 관련없는 프로세스는 평문 텍스트 데이터에 액세스할 수 있다. 한 가지 구현예는 SSD를 신뢰할 수 있는 플랫폼으로 만들고 컴퓨팅을 SSD로 이동시키는 것이며, 이 구현예에서는 SSD 외부로 평문 텍스트를 가져올 필요는 없다. 암호화/암호 해독을 위한 키는 SSD 내에 저장될 수 있다. 암호화 엔진은 SSD 내부에 존재할 것이다. 따라서, 다수의 테라바이트의 SSD는 임의의 컴퓨팅을 제공할 수 있다. 이러한 프로그래밍 가능한 SSD를 사용하면, 애플리케이션은 컴퓨팅 요청을 SSD로 전송하여 응답을 입수할 수 있다. 호스트(예를 들어, 클라우드 기반 컴퓨팅 시스템의 범용 컴퓨팅 자원)는 데이터를 절대 볼 수 없다. 프로그래밍 가능한 SSD는 암호화되지 않은 데이터나 평문 텍스트가 SSD에서 나오도록 구성될 수 있다. 일부의 경우에, 암호화된 데이터는 SSD에서 나가 호스트로 이동할 수 있을 뿐이다. 임의의 컴퓨팅은 SSD 내부에서 수행될 수 있다. 코드는 로딩되기 전에 암호로 서명될 수 있고, SSD는 이 서명을 검사할 것이다.
도 1은 일 예에 따른 클라우드 기반 컴퓨팅 시스템(CCS)의 블록도이다. 이 예에서, CCS(100)는 컴퓨팅 제어기(130), 스토리지 제어기(140), 컴퓨팅 자원(150) 및 스토리지 자원(160)을 포함할 수 있다. 컴퓨팅 제어기(130) 및 스토리지 제어기(140)는 네트워크(120)를 통해 결합될 수 있다. CCS(100)에서 사용자에 의해 실행되는 다양한 애플리케이션과 관련된 컴퓨팅 작업은 네트워크(120)를 통해 제출될 수 있다. 컴퓨팅 제어기(130)는 컴퓨팅 자원(150)에 대한 액세스를 제어할 수 있다. 컴퓨팅 자원(150)은 다수의 컴퓨팅 노드를 포함할 수 있으며, 각 컴퓨팅 노드는 적어도 하나의 CPU(멀티 코어일 수 있음) 및 컴퓨팅 노드에서 실행 중인 가상 머신을 관리하기 위한 가상 머신 관리자를 포함할 수 있다. 일 예에서, 하이퍼바이저는 가상 머신 관리자에 대응하는 소프트웨어를 제공할 수 있다. 네트워크(130)는 유선 네트워크, 무선 네트워크 또는 이들의 조합일 수 있다. 네트워크(130)는 또한 CCS(100)가 사설 클라우드일 수 있는 사설 네트워크일 수 있다. 스토리지 제어기(140)는 스토리지 자원(160)에 대한 액세스를 제어할 수 있다. 스토리지 제어기(140)는 사용자 및 애플리케이션이 파일 시스템을 탑재하고 스토리지 시스템에 대한 액세스를 관리할 수 있게 하는 파일 시스템 서비스를 제공함으로써 이러한 제어를 수행할 수 있다. 스토리지 자원(160)은 영구 스토리지를 포함하는 다른 유형의 스토리지를 제공할 수 있는 스토리지 시스템을 포함할 수 있다. 일 예에서, 스토리지 자원(160)은 애플리케이션 프로그래밍 인터페이스(API)를 통해 애플리케이션이 액세스할 수 있는 2 진 객체(binary objects)에 대한 스토리지를 포함할 수 있다. 애플리케이션은 이러한 유형의 스토리지를 사용하여 데이터베이스를 저장할 수 있다. 데이터베이스는, 동일한 데이터의 여러 복제본이 다른 스토리지 시스템에 저장될 수 있도록 복제될 수 있다. 스토리지 자원(160)은 또한 사용자가 그들의 가상 머신을 볼륨에 부착할 수 있게 하는 볼륨 스토리지(volume storage)를 포함할 수 있다. 도 1은 특정 방식으로 배열된 CCS(100)의 특정 개수의 컴포넌트를 도시하지만, 더 많거나 적은 개수의 컴포넌트가 상이하게 배열될 수도 있다.
도 2는 일 예에 따른 스토리지 시스템(200)의 블록도이다. 이 예에서, 스토리지 시스템(200)은 플래시 메모리 칩과 같은 비휘발성 메모리(NVM) 컴포넌트(202, 204, 206, 208, 210 및 212), SSD 제어기(220), 애플리케이션 프로세서(230), 메모리(예를 들어, RAM(240)), 암호화 모듈(250), 압축 모듈(260) 및 네트워크 제어기(270)를 포함할 수 있다. SSD 제어기(220)는 NVM 컴포넌트를 제어하여 NVM 컴포넌트에 저장된 데이터와 관련된 판독, 기입 또는 삭제 동작을 수행할 수 있다. SSD 제어기(220)는 하나 이상의 FPGA(Field-Programmable Gate Arrays), ASIC(Application-Specific Integrated Circuit), ASSP(Application-Specific Standard Products), SOC(System-on-a-Chip) 시스템, 또는 CPLD(Complex Programmable Logic Devices)를 사용하여 구현될 수 있다. SSD 제어기(220)는 에러 정정 및 직접 메모리 액세스(DMA)와 같은 기능을 제공할 수 있다. SSD 제어기(220)는 독립 채널(203, 205 및 207) 또는 유사한 부가 채널을 사용하여, NVM 컴포넌트 상에서 다양한 유형의 동작을 병렬로 수행할 수 있다. 도 2에 도시된 바와 같이, 각 채널은 채널(203) 내의 202 및 204, 채널(205) 내의 206 및 208, 채널(207) 내의 210 및 212와 같은 다수의 NVM 컴포넌트를 가질 수 있다. SSD 제어기(220)는 NVM 컴포넌트를 포함하는 원시 플래시 칩의 기하학적 구조를 탐색할 수 있는 원시 플래시 인터페이스를 노출시킬 수 있다. SSD 제어기(220)는 NVM 컴포넌트와 호스트 컴퓨팅 자원 및 호스트 컴퓨팅 자원과 연관된 메모리 간의 데이터 전송을 가능하게 할 수 있다. SSD 제어기는 또한 데이터를 캐싱하고 플래시 메모리와 관련된 FTL에 대한 메타데이터를 저장할 수 있다. SSD 제어기(220)는 칩 레벨 인터리빙 및 채널 레벨 인터리빙과 같은 기술을 사용하여 병렬 데이터 전송을 가능하게 할 수 있다. 대안으로 또는 부가적으로, SSD 제어기(220)는 플래시 변환 계층(FTL)의 상부에 논리 블록 어드레스 공간을 제공할 수 있다. 대안으로 또는 부가적으로, SSD 제어기(220)는 파일 시스템 서비스를 제공하여, CCS(100)에 액세스하는 애플리케이션 또는 사용자가 NVM 컴포넌트에 저장된 파일 기반 데이터를 저장, 검색 및 업데이트하는 것을 포함하는 파일 시스템 관련 동작을 수행할 수 있게 한다. 대안으로 또는 부가적으로, SSD 제어기(220)는 또한 CCS(100)에서 실행되는 애플리케이션에 애플리케이션 프로그램 프레임워크를 제공할 수 있다. 이렇게 하면 애플리케이션은 임의의 다른 애플리케이션 프로그래밍 인터페이스에 의존하지 않고 NVM 컴포넌트에 저장된 데이터에 대해 직접 다양한 동작을 수행할 수 있다.
계속해서 도 2를 참조하면, 애플리케이션 프로세서(230)는 스토리지 시스템(200)에 대한 적어도 하나의 컴퓨팅 엘리먼트에 관련된 기능을 제공할 수 있다. 애플리케이션 프로세서(230)는 하나 이상의 FPGA(Field-Programmable Gate Arrays), ASIC(Application-Specific Integrated Circuit), ASSP(Application-Specific Standard Products), SOC(System-on-a-Chip) 시스템, 또는 CPLD(Complex Programmable Logic Devices)를 사용하여 구현될 수 있다. 애플리케이션 프로세서(230)의 기능은 소프트웨어를 통해 프로그래밍 가능하거나 하드웨어로 구성 가능할 수 있다. 이러한 방식으로, 애플리케이션 프로세서(230)의 기능은 CCS(100)의 사용자에 의해 실행되는 애플리케이션에 기초하여 맞춤화 또는 커스터마이징될 수 있다. 애플리케이션 프로세서(230)는 SSD 제어기(220)를 통해 NVM 컴포넌트에 저장된 데이터에 액세스할 수 있다. 애플리케이션 프로세서(230)는 또한 RAM(240)을 판독 또는 기입할 수 있다. 이는 애플리케이션 프로세서(230)가 NVM 컴포넌트에 저장된 데이터에 대해 다양한 컴퓨팅 동작을 수행하고 컴퓨팅의 결과를 CCS(100)에서 실행되는 애플리케이션에 제공할 수 있게 한다. 병렬 독립 채널을 통한 NVM 컴포넌트(202-212)에 대한 애플리케이션 프로세서(230)의 근접성은 유리하게도 스토리지에 대한 높은 대역폭 및 낮은 대기 시간의 액세스를 가능하게 할 수 있다. 일 예에서, 애플리케이션 프로세서(230) 및 NVM 컴포넌트(202-212)는 물리적으로 동일한 카드 상에 위치될 수 있다. 다른 예에서, 애플리케이션 프로세서(230) 및 NVM 컴포넌트(202-212)는 동일한 하우징 내에 위치될 수 있다. 또 다른 예에서, 애플리케이션 프로세서(230) 및 NVM 컴포넌트(202-212)는 물리적으로 동일한 섀시 내에 위치될 수 있다. 다른 예에서, 애플리케이션 프로세서(230) 및 NVM 컴포넌트(202-212)는 물리적으로 동일한 랙에 위치될 수 있다. 스토리지 시스템(200)의 다른 컴포넌트는 또한 전술한 예 중 임의의 것에 포함될 수도 있다. 애플리케이션 프로세서(230)는 스토리지 시스템(200)에 의해 사용되는 통신 프로토콜(예를 들어, SATA, SAS, PCI Express 또는 NVM Express)에 더해져 구현되는 애플리케이션 프레임워크를 사용함으로써 CCS(100)에서 실행되는 애플리케이션 및 호스트 컴퓨팅 자원과 통신할 수 있다.
여전히 도 2를 참조하면, 암호화 모듈(250)은 스토리지 시스템(200)의 일부로서 암호화/암호 해독 기능을 제공할 수 있다. 일 예에서, CCS(100)의 일부로서 사용되는 애플리케이션에 관련된 암호화된 데이터는 NVM 컴포넌트에 저장될 수 있다. 암호화된 데이터는 NVM 컴포넌트 중 임의의 것으로부터 SSD 제어기(220)에 의해 검색되어, 암호화 모듈(250)에 제공될 수 있으며, 그 후 암호화 모듈(250)은 데이터를 해독하여 애플리케이션 프로세서(230)에 의해 사용하기 위해 제공할 수 있다. 이 예에서, 애플리케이션 프로세서(230)는 CCS(100)의 일부로서 실행되는 애플리케이션으로부터의 요청에 기반하여 동작을 수행할 수 있다. 이 동작의 결과는 애플리케이션에 제공될 수 있다. 이러한 방식으로, 임의의 컴퓨팅은 스토리지 시스템(200)으로부터 나오는 임의의 평문 텍스트 또는 암호화되지 않은 데이터없이 스토리지 시스템(100)을 사용하여 수행될 수 있다. 암호화 모듈(250)은 또한 CCS(100)의 다른 부분으로부터 수신된 임의의 암호화되지 않은 또는 평문의 텍스트 데이터를 NVM 컴포넌트에 저장하기 전에 이 데이터를 암호화하는 데 사용될 수 있다. 도 2는 특정 방식으로 배열된 스토리지 시스템(200)의 특정 개수의 컴포넌트를 도시하지만, 더 많거나 적은 개수의 컴포넌트가 상이하게 배열될 수도 있다. 일 예로서, 스토리지 시스템(200)은 암호화 모듈을 포함하지 않을 수 있다.
계속해서 도 2를 참조하면, 스토리지 시스템(200)은 압축 모듈(260)을 포함할 수 있다. 압축 모듈(260)은 데이터를 NVM 컴포넌트(202-212) 중 임의의 것에 기입하기 전에 압축할 수 있다. 또한, 압축 모듈(260)은 데이터를 NVM 컴포넌트(202-212) 중 임의의 것으로부터 판독한 후에 압축 해제할 수 있다. 일 예에서, 애플리케이션 프로세서(230)는 데이터를 저장하기 전에 압축될 필요가 있는지의 여부를 지정할 수 있다. 특정 애플리케이션은 NVM 컴포넌트(202-212)에 저장된 데이터에 대한 더 빠른 액세스를 요구할 수 있다. 이러한 애플리케이션은 압축 또는 압축 해제를 요구하지 않고 데이터를 저장할 수 있는 애플리케이션 프로세서(230)를 사용하여 실행될 수 있다.
계속해서 도 2를 참조하면, 스토리지 시스템(200)은 네트워크 제어기(270)를 포함할 수 있다. 일 예에서, 클라우드 기반 컴퓨팅 시스템의 다수의 스토리지 시스템의 각각은 네트워크 제어기(270)를 포함할 수 있다. 이러한 방식으로, 각각의 스토리지 시스템은 도 1의 컴퓨팅 자원(150)과 같은 호스트 컴퓨팅 자원과 관련된 네트워크 제어기를 수반하지 않고 서로 직접 통신할 수 있다. 또한, 이러한 통신은 도 1의 컴퓨팅 제어기(130)의 임의의 조정이나 개입없이 발생할 수 있다. 이 예에서, 네트워크 제어기(270)는 스토리지 시스템(200) 간에 독립적인 데이터 교환을 가능하게 할 수 있다. 이것은 애플리케이션 프로세서(230)가 호스트 컴퓨팅 자원(예를 들어, 도 1의 150) 또는 컴퓨팅 제어기(130)를 수반하지 않고 분산형 컴퓨팅을 구현하게 할 수 있다. 따라서, 각각의 네트워크 제어기(270)는 연관된 MAC 어드레스 또는 유사한 어드레스를 가질 수 있어서, 스토리지 시스템으로 하여금 분산된 방식으로 애플리케이션 또는 다른 컴퓨팅을 실행하는 데 있어서 서로 협력할 수 있게 한다. 일 예에서, 스토리지 제어기(140)는 스위치와 같은 추가적인 네트워킹 자원을 포함할 수 있어서, 동일한 호스트 컴퓨팅 자원과 관련되지 않은 스토리지 시스템으로 하여금, 호스트 컴퓨팅 자원에 의해 사용되는 네트워킹 자원을 사용하여 서로 통신하지 않고도, 서로 통신가능하게 할 수 있다.
일 예에서, 임의의 컴퓨팅은 데이터 세트에 대한 선택, 프로젝션 및 집계 유형의 동작을 수행하는 것과 관련될 수 있다. 이 예에서, 데이터는 컬럼 스토어 인덱스(column-store index)를 사용하여 저장되고 인덱스될 수 있다. 컬럼 스토어 인덱스 테이블은 기존의 로우 기반 인덱스(row-based indexes)처럼 행 방식(row-wise)이 아닌 열 방식(column-wise)으로 데이터를 저장한다. 전체 행이 메모리로부터 판독될 필요는 없다. 대신, 열 1은 한 블록의 데이터일 수 있고, 열 2는 제 2 데이터 블록일 수 있다. 이 예에서, 사용 가능한 데이터는 상이한 행 그룹(예를 들어, 세그먼트)으로 분할될 수 있다. 각 세그먼트는 1 백만 행으로 구성될 수 있으며, 행은 여러 알고리즘을 사용하여 인코딩 및 압축될 수 있다. 이 예에서, 각 열은 자체의 세그먼트로 분리될 수 있다. 데이터가 인코딩되고 압축된 후, 세그먼트는 스토리지 디스크에 저장될 수 있다. 각 세그먼트에는 행의 수, 데이터의 크기 및 최소/최대 값에 대한 메타데이터가 포함될 수도 있다.
일 예에서, 데이터 웨어하우스(data-warehouse) 쿼리는 프레디킷(predicates)(예를 들어, 필터) 및 집계(aggregations)(예를 들어, 합계, 평균 등)를 포함할 수 있다. 따라서, 하나의 예는 특정 고객에 의해 만들어진 분기 별 구매를 결정하는 것과 관련될 수 있다. 이러한 유형의 쿼리 작업 부하의 경우, 세그먼트 메타데이터(예를 들어, 최소값 및 최대 값)를 사용하여 일부 세그먼트를 효과적으로 건너 뛸 수 있다. 그러나, 이는 여전히 비효율적일 수 있다. 예를 들어, 세그먼트에서 실제로 필요한 행 수에 관계없이, 세그먼트에서 대부분의 데이터를 필터링 아웃하는 프레디킷이 존재하는 경우, 전체 세그먼트는 저장된 데이터를 갖는 디스크로부터 인출될 필요가 있다. 최악의 시나리오에서, 오직 하나의 행만 사용하려면, 스토리지 디스크에서 1 백만개의 행이 로딩될 필요가 있다. 행의 평균 크기가 100 비트이면, 이 예에서, 한 행으로부터 단지 100 비트의 데이터를 사용하기 위해서는 100 비트 * 100 만 = 100 MB의 세그먼트 데이터를 로드해야 한다는 요구 사항이 있을 수 있다. 이 문제를 해결할 수 있는 방법 중 하나는 보다 작은 개수의 행(예를 들어, 100 또는 1000)을 갖는 세그먼트를 생성하는 것일 수 있다. 그러나, 이렇게 하면 호스트와 스토리지 간에 작은 크기의 I/O 요청이 대량으로 발생하여 비효율적일 수 있다. 이 예에서, 그 성능을 향상시키기 위해, 스토리지 시스템(200)을 사용하여 필터 동작이 수행될 수 있다. 이는 필터 동작이 컴퓨팅 집약적이지 않기 때문에, 이는 도 2의 애플리케이션 프로세서(200)에 의해 효율적으로 구현/처리될 수 있기 때문이다. 작은 크기의 세그먼트를 가지며 스토리지 시스템(200) 내에서 프레디킷을 처리함으로써, I/O 대역폭뿐만 아니라 호스트 메모리 소비 및 불필요한 데이터를 압축 해제/디코딩하는 데 필요한 호스트 CPU 사이클을 유리하게 절약할 수 있다. 전술한 바와 같이, 스토리지 시스템(200)에서 다수의 독립 채널을 사용함으로써, (스토리지 시스템(200) 내로의 데이터 전송에 관한) 대역폭은 호스트 컴퓨팅 자원과 관련된 메모리(예를 들어, DRAM)의 대역폭과 같거나 이를 초과할 수 있다. 이러한 방식으로, 순차 스캔 코드가 스토리지 시스템(200)에 전송될 수 있고, 스캐닝이 스토리지 시스템(200) 내에서 수행될 수 있다. 필터링 동작 외에도 집계 처리 비용이 또한 절감될 수 있다. 따라서, 프로그램 가능 SSD는 스토리지 시스템(200)과 같은 SSD 내에서 집계 동작을 처리함으로써 유리하게도 더 많은 이점을 가져올 수 있다.
CCS(100)와 같은 클라우드 기반 컴퓨팅 시스템에서의 성능 관련 문제는 동일한 서버 및 동일한 SSD 상에 함께 배치된 상이한 유형의 서비스에 걸쳐 자원 거버넌스(resource governance)를 제공하고 있다. 일 예에서, CPU 사용률을 높이고 서비스 밀도를 높이며 COGS(상품 및 서비스의 비용)를 줄이기 위해, 대기 시간에 민감한 애플리케이션(예를 들어, 사용자 대면 온라인 서비스)과 처리량을 많이 필요로 하는 배치 분석 작업(batch analytic jobs)이 동일한 서버에 함께 배치될 수 있다. 대기 시간에 민감한 서비스에 대한 I/O 요청은, SSD 내부에서 처리량을 많이 필요로 하는 작업보다 지연될 수 있으므로, 대기 시간에 민감한 서비스의 I/O 완료 대기 시간이 허용치를 초과하여 증가할 수 있다. 처리량을 많이 필요로 하는 작업보다 대기 시간에 민감한 서비스에 대한 I/O 요청을 우선 순위화하기 위한 CCS(100)의 호스트 컴퓨팅 자원의 소프트웨어는 문제를 해결하기 위한 그 능력에서 제한을 받을 수 있는데, 그 이유는 호스트 컴퓨팅 자원이 디바이스 사용률을 증가시키기 위해 SSD 디바이스에 대한 미처리된 I/O 요청의 수를 충분히 높게 유지할 필요가 있기 때문이다. 이 문제를 해결하는 한 가지 방법은, 대기 시간에 민감한 서비스로부터의 I/O 요청에 대해 처리량을 많이 필요로 하는 작업에 대한 요청을 "뛰어 넘을" 수 있는 능력을 제공하도록 SSD 디바이스 내부에서 우선 순위에 기반한 I/O 요청 처리를 구현하는 것이다.
도 3은 일 예에 따른 SSD 제어기(300)의 블록도이다. SSD 제어기(300)는 프로세서(310), RAM(320), I/O 스케줄러(330), 플래시 변환 계층(FTL)(340) 및 I/O 큐(350)를 포함할 수 있다. 도 2와 관련하여 전술한 바와 같이, SSD 제어기(310)는 다양한 NVM 컴포넌트를 제어하여 NVM 컴포넌트에 저장된 데이터와 관련된 판독, 기입 또는 삭제 동작을 수행할 수 있다. 또한 도 2와 관련하여 전술한 바와 같이, SSD 제어기(310)는 하나 이상의 FPGA, ASIC, ASSP, SOC 시스템, 또는 CPLD를 사용하여 구현될 수 있다. SSD 제어기(310)는 도 2에 도시된 바와 같은 독립 채널 채널을 사용하여, NVM 컴포넌트 상에서 다양한 유형의 동작을 병렬로 수행할 수 있다. 또한, 도 2에 도시된 바와 같이, 각 채널은 채널(203) 내의 202 및 204, 채널(205) 내의 206 및 208, 채널(207) 내의 210 및 212와 같은 다수의 NVM 컴포넌트를 가질 수 있다. RAM(320)은 SSD 제어기(310)와 관련된 명령어를 저장하는 데 사용될 수 있다. 나중에 보다 상세히 기술되는 바와 같이, I/O 스케줄러(330)는 NVM 컴포넌트에 대한 I/O 요청을 우선 순위화하는 데 사용될 수 있다. FTL은 펌웨어로 구현될 수 있으며, 호스트 컴퓨팅 자원 상에서 실행되는 운영 체제에 대응하는 논리 블록 어드레스(LBA)를 NVM 컴포넌트의 물리 블록 어드레스(PBA)에 매핑하는 것을 포함하여, 플래시 변환 계층 기능을 제공할 수 있다. 나중에 보다 상세히 기술되는 바와 같이, I/O 큐(350)는 NVM 컴포넌트에 대한 I/O 요청을 저장하는 데 사용될 수 있다.
계속해서 도 3을 참조하면, 일 예에서, I/O 스케줄러는 NVM 컴포넌트에 대한 각 I/O 요청과 관련된 우선 순위 값을 처리할 수 있다. 우선 순위 값은 CCS(100)에서 실행되는 다양한 애플리케이션에서 발행되는 데이터 요청의 일부로서 삽입될 수 있다. 전술한 바와 같이, 애플리케이션은 CCS(100) 내의 가상 머신에 의해 실행될 수 있다. 대기 시간에 민감한 애플리케이션은 더 높은 우선 순위에 해당하는 우선 순위 값을 제공함으로써 더 높은 우선 순위의 I/O 요청을 요청할 수 있다. 마찬가지로, 처리량에 민감한 애플리케이션은 더 낮은 우선 순위에 해당하는 우선 순위 값을 제공하여 더 낮은 우선 순위의 I/O 요청을 요청할 수 있다. I/O 스케줄러(330)는 우선 순위 값을 분석하고 데이터 요청을 I/O 큐(350)에 큐잉할 수 있다. I/O 큐(350)는, 높은 우선 순위 큐에 더 높은 우선 순위 I/O에 대한 요청을 저장하고, 낮은 우선 순위 큐에 더 낮은 우선 순위 I/O에 대한 요청을 저장하는 데 사용될 수 있는 메모리(예를 들어, 버퍼)로 구현될 수 있다. I/O 스케줄러(330)는 우선 순위 스케줄링 알고리즘 또는 다중 레벨 스케줄링 알고리즘을 사용하여 스케줄링을 수행할 수 있다. 우선 순위 값은 또한 I/O 요청을 행하는 애플리케이션의 유형에 기초하여 호스트 컴퓨팅 자원에 의해 삽입될 수도 있다. 따라서, 룩업 테이블 또는 다른 유형의 데이터 구조가 대기 시간에 민감한 애플리케이션을 보다 높은 우선 순위의 I/O에 관련시키고, 처리량에 민감한 애플리케이션을 보다 낮은 우선 순위의 I/O에 관련시키는 데 사용될 수 있다. 스토리지 시스템(200) 내의 I/O 요청의 우선 순위에 따라, NVM 컴포넌트는 I/O 요청에 대한 응답을 지연시키지 않으면서 대기 시간에 민감한 애플리케이션을 서비스하는 데 더 잘 사용될 수 있다.
다른 예에서, SSD 제어기(300)는 SSD 내부의 데이터 단편화(data fragmentation)를 관리하는 것을 도울 수 있다. SSD는 기입시 복사(copy-on-write) 디바이스이다. 일반적으로, 삭제 블록은 32-64 페이지를 포함한다. 블록 내의 페이지는 순차적으로 기록될 수 있다. 데이터를 업데이트하기 위해서는, 페이지가 삭제될 수 없기 때문에 전체 블록이 삭제되어야 한다. 유효한 페이지가 다른 곳에 복사되어야 하며 그 후 전체 블록이 삭제될 수 있다. 일반적으로, 데이터는 단일 기입 스트림(single write stream)을 통해 순차적으로 기입된다. CCS(100)의 멀티 테넌시(Multi-tenancy)는 상이한 속도로 실행될 수 있으며, 동일한 스토리지에 액세스 중인 다수의 복제본, 예를 들어, 데이터베이스 복제본을 생성한다. I/O 요청이 SSD 디바이스(예를 들어, 스토리지 시스템(200))에 도달하게 되면, 그 디바이스는 어떤 기입물이 어느 테넌트(tenant)에 속하는지 알지 못한다. 복제본은 서로 관련이 없을 수 있고, 상이한 속도로 실행되며, 상이한 시간에 가비지 콜렉션(garbage collection)을 수행한다. 동일한 삭제 블록이 다수의 복제본으로부터의 데이터를 가지면, 그 스트림 객체의 수명은 달라지게 된다. 일반적으로, 동일한 삭제 블록 내에 있는 객체/페이지가 동일한 수명을 가지도록 하는 것이 좋다. 이렇게 하면, 전체 블록이 효율적으로 교체될 수 있다. 따라서, 스트림을 믹싱(mix)하고 매칭(match)시키는 것은 좋은 생각이 아니다. 스트림을 믹싱하고 매칭하는 것을 피하는 한 방식은 스트림 ID로 기입물을 태깅(tag)하는 것인데, 이러한 방식으로 스토리지 시스템(200)은 동일한 스트림 ID를 갖는 기입물을 블록에 저장하고, 상이한 스트림 ID를 갖는 기입물은 그 동일한 블록에 저장하지 않을 것이다. 일 예에서, 각각의 복제본은 대응하는 스트림 ID를 가질 수 있다. 복제본은 이어서 CCS(100)의 테넌트 또는 사용자에게 대응할 수 있다. 모든 테넌트가 스토리지 시스템(200)에 액세스할 수 있는 것은 아니다. 따라서, 일 예에서, 호스트 컴퓨팅 자원은 기입물이 스토리지 시스템(200)을 위한 것인지 또는 다른 유형의 스토리지를 위한 것인지에 기초하여 기입물 스트림에 선택적으로 스트림 ID를 삽입할 수 있다. 호스트 컴퓨팅 자원은 SSD 제어기(220)에 의해 제공되는 애플리케이션 프로그램 인터페이스를 사용하여 스트림을 열 수 있다.
도 4는 일 예에 따른 방법(400)의 흐름도이다. 방법(400)은 CCS(100)의 다양한 컴포넌트에 의해 실행될 수 있다. 단계(402)는 동작이 제 1 모드에 대응하는지 또는 제 2 모드에 대응하는지를 결정하는 단계를 포함할 수 있다. 일 예에서, 이 단계는 도 1의 컴퓨팅 제어기(130)에 의해 수행될 수 있다. 전술한 바와 같이, 컴퓨팅 제어기(130)는 호스트 컴퓨팅 자원(예를 들어, 도 1의 컴퓨팅 자원(150))에 대한 액세스를 제공할 수 있다. 동작은 스토리지 시스템에서 임의의 호스트 컴퓨팅 자원 또는 임의의 컴퓨팅 컴포넌트(예를 들어, 도 2의 애플리케이션 프로세서(230))를 사용하여 수행될 수 있는 임의의 프로세스와 관련될 수 있다. 동작은 필터 동작, 선택 동작, 프로젝트 동작 또는 집계 동작을 포함할 수 있지만, 이에 제한되지는 않는다. 동작 모드는 CCS(100)에서 실행되는 애플리케이션에 의해 지정될 수 있다. 대안으로, 동작 모드는 호스트 컴퓨팅 자원 상에서 실행되는 운영 체제에 의해 지정될 수 있다. 동작 모드는 명시적으로 지정되지 않을 수도 있고; 그 대신에, 상이한 데이터 세트와 다른 데이터 세트에 대한 임의의 동작이 스토리지 시스템에서 임의의 호스트 컴퓨팅 자원 또는 임의의 컴퓨팅 컴포넌트(예를 들어, 도 2의 애플리케이션 프로세서(230))를 사용하여 수행될 수 있다면, 다른 동작 모드가 암시될 수 있다. 단계(404)의 일부로서, 제 1 모드에서, 호스트 컴퓨팅 자원 중 적어도 하나는 적어도 제 1 데이터 세트에 대해 적어도 하나의 동작을 실행하는 데 사용될 수 있다. 제 1 데이터 세트는 스토리지 시스템(200) 또는 CCS(100)에 대응하는 다른 스토리지 디바이스에 저장될 수 있다. 대안으로, 단계(406)의 일부로서, 제 2 모드에서, 스토리지 시스템(200)의 컴퓨팅 컴포넌트 중 적어도 하나는 적어도 제 2 데이터 세트에 대해 적어도 하나의 동작을 실행하는 데 사용될 수 있다. 일 예에서, 제 2 데이터 세트는 스토리지 시스템(200)에만 저장될 수 있다. 대안으로, 제 2 데이터 세트는 스토리지 시스템(200) 또는 CCS(100)에 대응하는 다른 스토리지 디바이스에 저장될 수 있다.
결론적으로, 본 개시는 (1) 컴퓨팅 시스템에 대응하는 복수의 호스트 컴퓨팅 자원에 대한 액세스를 제공하고, (2) 제 1 모드 또는 제 2 모드 중 적어도 하나로 동작하도록 구성된 컴퓨팅 제어기를 포함하는 컴퓨팅 시스템에 관한 것이다. 컴퓨팅 시스템은 컴퓨팅 시스템에 대응하는 복수의 스토리지 시스템에 대한 액세스를 제공하도록 구성된 스토리지 제어기를 더 포함할 수 있으며, 여기서, 복수의 스토리지 시스템 중 적어도 하나는 복수의 스토리지 컴포넌트, 적어도 하나의 컴퓨팅 컴포넌트 및 적어도 하나의 암호화 컴포넌트를 포함한다. 제 1 모드에서, 상기 호스트 컴퓨팅 자원 중 적어도 하나는 적어도 제 1 데이터 세트에 대해 적어도 제 1 동작을 실행하도록 구성될 수 있고, 여기서, 제 1 데이터 세트는 복수의 스토리지 컴포넌트 중 적어도 하나에 저장된다. 제 2 모드에서, 적어도 하나의 컴퓨팅 컴포넌트는 적어도 제 2 데이터 세트에 대해 적어도 제 2 동작을 실행하도록 구성될 수 있으며, 여기서, 제 2 데이터 세트의 암호화된 버전은 복수의 스토리지 컴포넌트 중 상기 적어도 하나에 저장되며, 상기 적어도 하나의 암호화 컴포넌트는 상기 적어도 제 2 데이터 세트의 상기 암호화된 버전을 해독하고 상기 적어도 하나의 컴퓨팅 컴포넌트에 상기 제 2 데이터 세트의 암호화되지 않은 버전을 제공하도록 구성된다. 상기 적어도 하나의 컴퓨팅 컴포넌트는, 상기 제 2 데이터 세트의 암호화되지 않은 버전을 처리함으로써, 적어도 상기 제 2 동작을 실행하고, 상기 처리에 기초하여 적어도 하나의 결과를 생성하도록 더 구성될 수 있다. 호스트 컴퓨팅 자원은 제 1 애플리케이션 및 제 2 애플리케이션에 액세스 가능할 수 있고, 제 1 애플리케이션은 적어도 상기 제 1 동작을 포함할 수 있고, 제 2 애플리케이션은 적어도 상기 제 2 동작을 포함할 수 있다. 상기 복수의 스토리지 시스템의 각각은 상기 컴퓨팅 제어기를 수반하지 않고 상기 복수의 스토리지 시스템 간의 통신을 가능하게 하도록 구성된 네트워크 제어기를 더 포함할 수 있다. 스토리지 제어기는 신뢰 도메인(trusted domain)으로 구성될 수 있어서, 제 2 데이터 세트의 암호화되지 않은 버전은 그 신뢰 도메인의 외부에서는 허용되지 않는다. 암호화 컴포넌트는 적어도 하나의 암호화 키 및 적어도 하나의 암호 해독 키를 저장하도록 구성될 수 있다. 상기 복수의 스토리지 컴포넌트의 각각은 비휘발성 메모리 디바이스를 포함할 수 있다. 상기 복수의 스토리지 시스템의 각각은 적어도 하나의 솔리드 스테이트 디바이스 제어기, 복수의 플래시 메모리 디바이스, 및 복수의 플래시 디바이스를 상기 솔리드 스테이트 디바이스 제어기에 연결하는 복수의 병렬 독립 채널을 포함할 수 있다.
또 다른 양태에서, 본 개시는 (1) 컴퓨팅 시스템에 대응하는 복수의 호스트 컴퓨팅 자원에 대한 액세스를 제공하고, (2) 제 1 모드 또는 제 2 모드 중 적어도 하나로 동작하도록 구성되는 컴퓨팅 제어기를 포함하는 컴퓨팅 시스템에 관한 것으로, 상기 복수의 호스트 컴퓨팅 자원은 제 1 애플리케이션 및 제 2 애플리케이션에 액세스 가능하고, 상기 제 1 애플리케이션은 적어도 대기 시간에 민감한 저장 동작을 수행하도록 구성되고, 상기 제 2 애플리케이션은 적어도 처리량에 민감한 저장 동작을 수행하도록 구성된다. 컴퓨팅 시스템은 컴퓨팅 시스템에 대응하는 복수의 스토리지 시스템에 대한 액세스를 제공하도록 구성된 스토리지 제어기를 더 포함할 수 있으며, 여기서, 복수의 스토리지 시스템 중 적어도 하나는 복수의 스토리지 컴포넌트 및 적어도 하나의 컴퓨팅 컴포넌트를 포함한다. 제 1 모드에서, 호스트 컴퓨팅 자원 중 적어도 하나는 제 1 애플리케이션 또는 제 2 애플리케이션으로부터의 요청에 기초하여, 적어도 제 1 데이터 세트에 대해 적어도 제 1 동작을 실행하도록 구성될 수 있고, 적어도 상기 제 1 데이터 세트는 상기 복수의 스토리지 컴포넌트 중 적어도 하나에 저장되고, 상기 적어도 하나의 컴퓨팅 컴포넌트는 적어도 상기 제 1 데이터 세트에 대해 상기 처리량에 민감한 저장 동작을 수행하는 것보다 상기 대기 시간에 민감한 저장 동작을 수행하기 위한 더 높은 우선 순위의 액세스를 가능하도록 구성될 수 있다. 제 2 모드에서, 상기 적어도 하나의 컴퓨팅 컴포넌트는 (1) 상기 제 1 애플리케이션 또는 상기 제 2 애플리케이션으로부터의 요청에 기초하여, 적어도 제 2 데이터 세트에 대해 적어도 제 2 동작을 실행하고 - 여기서, 상기 적어도 하나의 제 2 데이터 세트는 상기 복수의 스토리지 컴포넌트 중 적어도 하나에 저장됨 - , (2) 적어도 상기 제 2 데이터 세트에 대해 상기 처리량에 민감한 저장 동작을 수행하는 것보다 상기 대기 시간에 민감한 저장 동작을 수행하기 위한 더 높은 우선 순위의 액세스를 가능하도록 구성될 수 있다. 제 1 우선 순위 값은 각각의 대기 시간에 민감한 동작을 식별할 수 있고, 제 2 우선 순위 값은 각각의 처리량에 민감한 동작을 식별할 수 있다. 컴퓨팅 컴포넌트는, 제 1 우선 순위 값 및 제 2 우선 순위 값에 기초하여, 적어도 제 1 데이터 세트 또는 적어도 제 2 데이터 세트에 대해 처리량에 민감한 동작을 수행하는 것보다 대기 시간에 민감한 동작을 수행하기 위해 더 높은 우선 순위 액세스를 가능하게 하도록 구성될 수 있다. 스토리지 제어기는 적어도 하나의 암호화 컴포넌트를 더 포함할 수 있다. 제 2 데이터 세트의 암호화된 버전은 복수의 스토리지 컴포넌트 중 상기 적어도 하나에 저장될 수 있고, 상기 적어도 하나의 암호화 컴포넌트는 상기 적어도 제 2 데이터 세트의 상기 암호화된 버전을 해독하고 상기 적어도 하나의 컴퓨팅 컴포넌트에 상기 제 2 데이터 세트의 암호화되지 않은 버전을 제공하도록 구성될 수 있다. 스토리지 제어기는 신뢰 도메인으로 구성될 수 있어서, 제 2 데이트 세트의 암호화되지 않은 버전은 그 신뢰 도메인의 외부에서는 허용되지 않는다. 상기 복수의 스토리지 시스템의 각각은 상기 컴퓨팅 제어기를 수반하지 않고 상기 복수의 스토리지 시스템 간의 통신을 가능하게 하도록 구성된 네트워크 제어기를 더 포함할 수 있다. 암호화 컴포넌트는 적어도 하나의 암호화 키 및 적어도 하나의 암호 해독 키를 저장하도록 구성될 수 있다. 상기 복수의 스토리지 컴포넌트의 각각은 비휘발성 메모리 디바이스를 포함할 수 있다. 상기 복수의 스토리지 시스템의 각각은 적어도 하나의 솔리드 스테이트 디바이스 제어기, 복수의 플래시 메모리 디바이스, 및 복수의 플래시 디바이스를 상기 솔리드 스테이트 디바이스 제어기에 연결하는 복수의 병렬 독립 채널을 포함할 수 있다.
또 다른 양태에서, 본 개시는 (1) 컴퓨팅 시스템에 대응하는 복수의 호스트 컴퓨팅 자원에 대한 액세스를 제공하고, (2) 제 1 모드 또는 제 2 모드 중 적어도 하나로 동작하도록 구성되는 컴퓨팅 제어기 및 상기 컴퓨팅 시스템에 대응하는 복수의 스토리지 시스템에 대한 액세스를 제공하도록 구성될 수 있는 스토리지 제어기를 포함하는 컴퓨팅 시스템에서의 방법에 관한 것으로, 상기 복수의 스토리지 시스템 중 적어도 하나는 복수의 스토리지 컴포넌트 및 적어도 하나의 컴퓨팅 컴포넌트를 포함한다. 상기 방법은, 상기 제 1 모드에서, 상기 호스트 컴퓨팅 자원 중 적어도 하나를 사용하여, 상기 복수의 스토리지 컴포넌트 중 적어도 하나에 저장된 적어도 제 1 데이터 세트에 대해 적어도 제 1 동작을 실행하는 것을 포함할 수 있다. 상기 방법은, 제 2 모드에서, 상기 적어도 하나의 컴퓨팅 컴포넌트만을 사용하여, 상기 복수의 스토리지 컴포넌트 중 적어도 하나에 저장된 적어도 제 2 데이터 세트에 대해 적어도 제 2 동작을 실행하는 것을 더 포함할 수 있고, 상기 제 2 동작은 상기 제 2 데이터 세트에 대해 제 1 동작을 수행하는 것에 대응한다. 제 2 데이터 세트는 복수의 스토리지 시스템 중 하나에만 저장될 수 있다. 상기 복수의 스토리지 시스템의 각각은 적어도 하나의 솔리드 스테이트 디바이스 제어기, 복수의 플래시 메모리 디바이스, 및 복수의 플래시 디바이스를 상기 솔리드 스테이트 디바이스 제어기에 연결하는 복수의 병렬 독립 채널을 포함할 수 있다.
본 명세서에 예시된 방법, 모듈 및 컴포넌트는 단지 예시적인 것에 불과하다는 것을 이해해야 한다. 대안으로, 또는 부가적으로, 본 명세서에서 설명된 기능은 적어도 부분적으로, 하나 이상의 하드웨어 로직 컴포넌트에 의해 수행될 수 있다. 예를 들어, 제한없이 사용될 수 있는 예시적인 유형의 하드웨어 로직 컴포넌트는 FPGA, ASIC, ASSP, SOC, CPLD 등을 포함한다. 추상적이지만 여전히 명확한 의미에서, 동일한 기능을 달성하기 위한 컴포넌트의 임의의 배열체는 원하는 기능이 달성되도록 효과적으로 "관련"된다. 따라서, 특정 기능을 달성하기 위해 결합된 임의의 두 개의 컴포넌트는 아키텍처 또는 중간의 컴포넌트와는 관계없이 원하는 기능이 달성되도록 서로 "관련된다"고 간주될 수 있다. 마찬가지로, 이와 같이 연관된 임의의 두 컴포넌트는 원하는 기능을 달성하기 위해 서로에 대해 "작동 가능하게 연결된" 또는 "결합된" 것으로 간주될 수 있다.
본 개시에서 설명된 예와 관련된 기능은 또한 비일시적 매체, 예를 들어, RAM(240) 또는 다른 유형의 비일시적 매체에 저장된 명령어를 포함할 수 있다. 본 명세서에서 사용된 용어 "비일시적 매체"는 본 개시에서 설명된 임의의 프로세서 또는 제어기와 같은 머신으로 하여금 특정 방식으로 동작하게 하는 데이터 및/또는 명령어를 저장하는 임의의 매체를 지칭한다. 예시적인 비일시적 매체는 비휘발성 매체 및/또는 휘발성 매체를 포함한다. 비휘발성 매체는, 예를 들어, 하드 디스크, 솔리드 스테이트 드라이브(SSD), 자기 디스크 또는 테이프, 광 디스크 또는 테이프, 플래시 메모리, EPROM, NVRAM, PRAM 또는 다른 그러한 매체, 또는 그러한 매체의 네트워크화된 버전을 포함한다. 휘발성 매체는, 예를 들어, DRAM, SRAM, 캐시 또는 다른 그러한 매체와 같은 동적 메모리를 포함한다. 비일시적 매체는 전송 매체와 구별되지만, 전송 매체와 함께 사용될 수 있다. 전송 매체는 프로세서(100)와 같은 머신으로 또는 머신으로부터 데이터 및/또는 명령어를 전송하기 위해 사용된다. 예시적인 전송 매체는 동축 케이블, 광섬유 케이블, 구리선 및 전파와 같은 무선 매체를 포함한다.
또한, 당업자는 전술한 동작의 기능 간의 경계가 단지 예시적인 것에 불과하다는 것을 인식할 것이다. 다수의 동작의 기능은 단일 동작으로 결합될 수 있고, 및/또는 단일 동작의 기능은 추가의 동작으로 분산될 수 있다. 또한, 대안의 실시예는 특정 동작의 다수의 인스턴스를 포함할 수 있고, 동작의 순서는 다양한 다른 실시예에서 변경될 수 있다.
본 개시가 특정예를 제공하지만, 아래의 청구범위에 열거된 바와 같은 개시의 범위를 벗어나지 않으면서 다양한 변형 및 변경이 이루어질 수 있다. 따라서, 본 명세서 및 도면은 제한적인 의미라기보다는 예시적인 것으로 간주되어야 하며, 이러한 모든 수정은 본 발명의 범위 내에 포함되는 것으로 의도된다. 특정예와 관련하여 본 명세서에 기술된 문제점에 대한 임의의 이익, 이점 또는 해결책은 임의의 또는 모든 청구항의 중요한, 필요한 또는 필수적인 특징 또는 요소로 해석되도록 의도되지 않는다.
또한, 본원에 사용된 단수의 용어는 단수 이외의 복수의 개념으로 정의된다. 또한, 청구범위에서 "적어도 하나" 및 "하나 이상"과 같은 도입 문구의 사용은, 불특정 사물에 의한 다른 청구항 요소의 도입이 그러한 청구항 요소를 포함한 임의의 특정 청구항을 그러한 하나의 요소만을 포함한 발명에 제한한다는 것을 의미하도록 해석되어서는 아니되며, 심지어는 그러한 청구항이 "적어도 하나" 및 "하나 이상"과 같은 도입 문구 및 불특정 사물을 포함하는 경우에도 마찬가지이다. 특정 사물의 사용에 대해서도 마찬가지이다.
달리 언급되지 않는 한, "제 1" 및 "제 2"와 같은 용어는 이러한 용어가 설명하는 요소를 임의로 구별하기 위해 사용된다. 따라서, 이들 용어는 그러한 요소의 시간적 또는 다른 우선 순위를 나타내도록 반드시 의도되지는 않는다.
Claims (10)
- 컴퓨팅 시스템으로서,
(1) 상기 컴퓨팅 시스템에 대응하는 복수의 호스트 컴퓨팅 자원에 대한 액세스를 제공하고, (2) 제 1 모드 또는 제 2 모드 중 적어도 하나로 동작하도록 구성되는 컴퓨팅 제어기와,
상기 컴퓨팅 시스템에 대응하는 복수의 스토리지 시스템에 대한 액세스를 제공하도록 구성되는 스토리지 제어기를 포함하고,
상기 복수의 스토리지 시스템 중 적어도 하나는 복수의 스토리지 컴포넌트, 적어도 하나의 컴퓨팅 컴포넌트 및 적어도 하나의 암호화 컴포넌트를 포함하며,
(1) 상기 제 1 모드에서, 상기 호스트 컴퓨팅 자원 중 적어도 하나는 적어도 제 1 데이터 세트에 대해 적어도 제 1 동작을 실행하도록 구성되고, 상기 제 1 데이터 세트는 상기 복수의 스토리지 컴포넌트 중 적어도 하나에 저장되며,
(2) 상기 제 2 모드에서, 상기 적어도 하나의 컴퓨팅 컴포넌트는 적어도 제 2 데이터 세트에 대해 적어도 제 2 동작을 실행하도록 구성되고, 상기 제 2 데이터 세트의 암호화된 버전은 상기 복수의 스토리지 컴포넌트 중 적어도 하나에 저장되며, 상기 적어도 하나의 암호화 컴포넌트는 상기 적어도 제 2 데이터 세트의 상기 암호화된 버전을 해독하고 상기 적어도 하나의 컴퓨팅 컴포넌트에 상기 제 2 데이터 세트의 암호화되지 않은 버전을 제공하도록 구성되며, 상기 적어도 하나의 컴퓨팅 컴포넌트는 상기 제 2 데이터 세트의 상기 암호화되지 않은 버전을 처리함으로써 상기 적어도 제 2 동작을 실행하고 상기 처리에 기초하여 적어도 하나의 결과를 생성하도록 더 구성되는
컴퓨팅 시스템. - 제 1 항에 있어서,
상기 복수의 호스트 컴퓨팅 자원은 제 1 애플리케이션 및 제 2 애플리케이션에 액세스 가능하고, 상기 제 1 애플리케이션은 적어도 상기 제 1 동작을 포함하고, 상기 제 2 애플리케이션은 적어도 상기 제 2 동작을 포함하는
컴퓨팅 시스템. - 제 1 항에 있어서,
상기 복수의 스토리지 시스템의 각각은 상기 컴퓨팅 제어기를 수반하지 않고 상기 복수의 스토리지 시스템 간의 통신을 가능하게 하도록 구성된 네트워크 제어기를 더 포함하는
컴퓨팅 시스템. - 제 1 항에 있어서,
상기 스토리지 제어기는 신뢰 도메인(trusted domain)으로 구성되어, 상기 제 2 데이트 세트의 암호화되지 않은 버전이 상기 신뢰 도메인의 외부에서는 허용되지 않는
컴퓨팅 시스템. - 제 1 항에 있어서,
상기 적어도 하나의 암호화 컴포넌트는 적어도 하나의 암호 키 및 적어도 하나의 암호 해독 키를 저장하도록 구성되는
컴퓨팅 시스템. - 제 1 항에 있어서,
상기 복수의 스토리지 컴포넌트의 각각은 비휘발성 메모리 디바이스를 포함하는
컴퓨팅 시스템. - 제 6 항에 있어서,
상기 복수의 스토리지 시스템의 각각은 적어도 하나의 솔리드 스테이트 디바이스 제어기, 복수의 플래시 메모리 디바이스 및 복수의 플래시 디바이스를 상기 솔리드 스테이트 디바이스 제어기에 연결하는 복수의 병렬 독립 채널을 포함하는
컴퓨팅 시스템. - (1) 컴퓨팅 시스템에 대응하는 복수의 호스트 컴퓨팅 자원에 대한 액세스를 제공하고, (2) 제 1 모드 또는 제 2 모드 중 적어도 하나로 동작하도록 구성되는 컴퓨팅 제어기, 및 상기 컴퓨팅 시스템에 대응하는 복수의 스토리지 시스템에 대한 액세스를 제공하도록 구성되는 스토리지 제어기를 포함하는 컴퓨팅 시스템에서의 방법으로서,
상기 복수의 스토리지 시스템 중 적어도 하나는 복수의 스토리지 컴포넌트 및 적어도 하나의 컴퓨팅 컴포넌트를 포함하며,
상기 방법은,
상기 제 1 모드에서, 상기 호스트 컴퓨팅 자원 중 적어도 하나를 사용하여, 상기 복수의 스토리지 컴포넌트 중 적어도 하나에 저장된 적어도 제 1 데이터 세트에 대해 적어도 제 1 동작을 실행하는 것과;
상기 제 2 모드에서, 상기 적어도 하나의 컴퓨팅 컴포넌트만을 사용하여, 상기 복수의 스토리지 컴포넌트 중 적어도 하나에 저장된 적어도 제 2 데이터 세트에 대해 적어도 제 2 동작을 실행하는 것을 포함하고,
상기 제 2 동작은 상기 제 2 데이터 세트에 대해 필터 동작을 수행하는 것에 대응하는
방법. - 제 8 항에 있어서,
상기 제 2 데이터 세트는 상기 복수의 스토리지 시스템 중 하나에만 저장되는
방법. - 제 9 항에 있어서,
상기 복수의 스토리지 시스템의 각각은 적어도 하나의 솔리드 스테이트 디바이스 제어기, 복수의 플래시 메모리 디바이스 및 복수의 플래시 디바이스를 상기 솔리드 스테이트 디바이스 제어기에 연결하는 복수의 병렬 독립 채널을 포함하는
방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/204,787 | 2016-07-07 | ||
US15/204,787 US10289568B2 (en) | 2016-07-07 | 2016-07-07 | Application-driven storage systems for a computing system |
PCT/US2017/040157 WO2018009421A1 (en) | 2016-07-07 | 2017-06-30 | Application-driven storage systems for a computing system |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20190027812A true KR20190027812A (ko) | 2019-03-15 |
Family
ID=59384220
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197000355A KR20190027812A (ko) | 2016-07-07 | 2017-06-30 | 컴퓨팅 시스템을 위한 애플리케이션 구동형 스토리지 시스템 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10289568B2 (ko) |
EP (1) | EP3482555A1 (ko) |
KR (1) | KR20190027812A (ko) |
CN (1) | CN109417573A (ko) |
WO (1) | WO2018009421A1 (ko) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180067848A1 (en) * | 2015-07-30 | 2018-03-08 | Hewlett Packard Enterprise Development Lp | Memory access control method and system |
US10599479B2 (en) * | 2016-09-21 | 2020-03-24 | International Business Machines Corporation | Resource sharing management of a field programmable device |
US10572310B2 (en) | 2016-09-21 | 2020-02-25 | International Business Machines Corporation | Deploying and utilizing a software library and corresponding field programmable device binary |
US10355945B2 (en) | 2016-09-21 | 2019-07-16 | International Business Machines Corporation | Service level management of a workload defined environment |
US10417012B2 (en) | 2016-09-21 | 2019-09-17 | International Business Machines Corporation | Reprogramming a field programmable device on-demand |
CN107256363B (zh) * | 2017-06-13 | 2020-03-06 | 杭州华澜微电子股份有限公司 | 一种由加解密模块阵列组成的高速加解密装置 |
US10725941B2 (en) | 2018-06-30 | 2020-07-28 | Western Digital Technologies, Inc. | Multi-device storage system with hosted services on peer storage devices |
US10877810B2 (en) * | 2018-09-29 | 2020-12-29 | Western Digital Technologies, Inc. | Object storage system with metadata operation priority processing |
US12099997B1 (en) | 2020-01-31 | 2024-09-24 | Steven Mark Hoffberg | Tokenized fungible liabilities |
US11106365B1 (en) | 2020-02-10 | 2021-08-31 | EMC IP Holding Company LLC | Flow control of input/output (IO) in a synchronous replication session |
US11061835B1 (en) * | 2020-02-12 | 2021-07-13 | EMC IP Holding Company LLC | Sensitivity matrix for system load indication and overload prevention |
CN113590416B (zh) * | 2021-06-30 | 2023-09-15 | 郑州云海信息技术有限公司 | Cpu系统固件断言处理方法、装置、设备及存储介质 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7293136B1 (en) * | 2005-08-19 | 2007-11-06 | Emc Corporation | Management of two-queue request structure for quality of service in disk storage systems |
US20080162735A1 (en) | 2006-12-29 | 2008-07-03 | Doug Voigt | Methods and systems for prioritizing input/outputs to storage devices |
US8412878B2 (en) | 2008-07-14 | 2013-04-02 | Marvell World Trade Ltd. | Combined mobile device and solid state disk with a shared memory architecture |
US9055556B2 (en) * | 2010-04-01 | 2015-06-09 | Qualcomm Incorporated | Method and apparatus for selecting radios and mapping applications to radios on a wireless device |
JP5938968B2 (ja) * | 2012-03-19 | 2016-06-22 | 富士通株式会社 | 情報処理装置、情報処理プログラム及び情報処理方法 |
EP2672672A1 (en) * | 2012-06-07 | 2013-12-11 | Alcatel-Lucent | Secure data processing |
US9122401B2 (en) | 2012-08-23 | 2015-09-01 | Apple Inc. | Efficient enforcement of command execution order in solid state drives |
US20140281516A1 (en) | 2013-03-12 | 2014-09-18 | Commvault Systems, Inc. | Automatic file decryption |
US20140282032A1 (en) * | 2013-03-15 | 2014-09-18 | Microsoft Corporation | Dynamically configuring user experiences with action uniform resource identifiers |
US9021189B2 (en) | 2013-07-24 | 2015-04-28 | NXGN Data, Inc. | System and method for performing efficient processing of data stored in a storage node |
US8819335B1 (en) | 2013-08-30 | 2014-08-26 | NXGN Data, Inc. | System and method for executing map-reduce tasks in a storage device |
US8935463B1 (en) | 2014-01-03 | 2015-01-13 | Fastor Systems, Inc. | Compute engine in a smart SSD exploiting locality of data |
US9514211B2 (en) | 2014-07-20 | 2016-12-06 | Microsoft Technology Licensing, Llc | High throughput data modifications using blind update operations |
-
2016
- 2016-07-07 US US15/204,787 patent/US10289568B2/en active Active
-
2017
- 2017-06-30 EP EP17742886.9A patent/EP3482555A1/en not_active Withdrawn
- 2017-06-30 CN CN201780041788.2A patent/CN109417573A/zh active Pending
- 2017-06-30 KR KR1020197000355A patent/KR20190027812A/ko not_active Application Discontinuation
- 2017-06-30 WO PCT/US2017/040157 patent/WO2018009421A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
WO2018009421A1 (en) | 2018-01-11 |
CN109417573A (zh) | 2019-03-01 |
US20180011801A1 (en) | 2018-01-11 |
US10289568B2 (en) | 2019-05-14 |
EP3482555A1 (en) | 2019-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10289568B2 (en) | Application-driven storage systems for a computing system | |
US11256431B1 (en) | Storage system having a field programmable gate array | |
US11809584B2 (en) | File system metadata protection | |
US9760502B2 (en) | Encrypted transport solid-state disk controller | |
US9021189B2 (en) | System and method for performing efficient processing of data stored in a storage node | |
JP2017021804A (ja) | 不揮発性メモリ装置におけるデータ特性基盤データ配置を活用するためのインターフェイス提供方法及びシステム並びに不揮発性メモリ装置とそのデータ特性基盤データ配置方法 | |
US10135928B2 (en) | Network interface device having general-purpose computing capability | |
US11848965B2 (en) | Secure software defined storage | |
US11966343B2 (en) | Universal mechanism to access and control a computational device | |
US10275175B2 (en) | System and method to provide file system functionality over a PCIe interface | |
CN113420308A (zh) | 用于加密存储器的数据访问控制方法及控制系统 | |
US20170286325A1 (en) | Method and system for defining logical block addressing (lba) access permission in storage devices | |
Nakashima et al. | I/o performance improvement of secure big data analyses with application support on ssd cache | |
US20150106884A1 (en) | Memcached multi-tenancy offload | |
KR20220085031A (ko) | 데이터베이스 임시 테이블 프로세싱을 가속화하기 위한 스토리지 장치 어댑터 | |
US20240129282A1 (en) | Systems, methods, and apparatus for protection for device data transfers | |
US20240129305A1 (en) | Systems, methods, and apparatus for namespace identification for devices | |
EP2930607A1 (en) | Method and apparatus for increasing available portable memory storage space |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITB | Written withdrawal of application |