[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR101795087B1 - 블랍으로서 가상 하드 드라이브의 관리 - Google Patents

블랍으로서 가상 하드 드라이브의 관리 Download PDF

Info

Publication number
KR101795087B1
KR101795087B1 KR1020127012547A KR20127012547A KR101795087B1 KR 101795087 B1 KR101795087 B1 KR 101795087B1 KR 1020127012547 A KR1020127012547 A KR 1020127012547A KR 20127012547 A KR20127012547 A KR 20127012547A KR 101795087 B1 KR101795087 B1 KR 101795087B1
Authority
KR
South Korea
Prior art keywords
blob
hard drive
application
virtual hard
driver
Prior art date
Application number
KR1020127012547A
Other languages
English (en)
Other versions
KR20120104209A (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 KR20120104209A publication Critical patent/KR20120104209A/ko
Application granted granted Critical
Publication of KR101795087B1 publication Critical patent/KR101795087B1/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/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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0686Libraries, e.g. tape libraries, jukebox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • 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

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)
  • Library & Information Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

블랍으로서 가상 하드 드라이브를 관리하는 방법을 수행하는 컴퓨터 판독가능 매체를 갖는 클라우드 컴퓨팅 플랫폼이 제공된다. 클라우드 컴퓨팅 플랫폼은 패브릭 컴퓨터 및 블랍 저장소를 포함한다. 패브릭 컴퓨터는 가상 하드 드라이브에 액세스하는 하나 이상의 애플리케이션을 구현하는 가상 머신을 실행한다. 가상 하드 드라이브의 데이터는 블랍 저장소의 블랍으로부터 블랍 인터페이스를 통해 액세스된다. 블랍 저장소는 가상 하드 드라이브의 데이터에 액세스할 때 가상 하드 드라이브에 예정된 어떤 애플리케이션 입력/출력(I/O) 요청을 블랍 명령으로 번역하는 드라이버와 인터페이스한다.

Description

블랍으로서 가상 하드 드라이브의 관리{MANAGING VIRTUAL HARD DRIVES AS BLOBS}
통상적으로 클라우드 컴퓨팅 플랫폼은 인터넷 액세스 가능 가상 환경에서 소프트웨어 애플리케이션을 호스트한다. 클라우드 컴퓨팅 플랫폼은 조직체(organization)가 제 3 자에 의해 설계되며 유지되는 데이터센터를 사용하는 것을 허용한다. 종래의 가상 환경은 요청된 하드웨어 자원, 소프트웨어 애플리케이션 자원, 네트워크 자원, 및 스토리지 자원을 소형 또는 대형 조직체에 제공한다. 또한, 가상 환경은 애플리케이션 보안, 애플리케이션 신뢰성, 애플리케이션 확장성, 및 이용 가능성을 제공한다.
종래의 데이터센터는 물리적 컴퓨팅 자원, 물리적 스토리지 자원, 및 물리적 네트워크 자원을 제공한다. 데이터센터의 물리적 자원은 애플리케이션 프로그래밍 인터페이스 세트로서 조직체에 가상화되어 노출된다. 조직체는 자신의 하드웨어 자원 또는 소프트웨어 자원을 유지하거나, 신뢰성과 확장성이 있는 데이터센터를 유지할 필요가 없다.
그 조직체는 소프트웨어 또는 기초 물리적 하드웨어의 상세를 알지 않고서도 가상 환경을 통해 이러한 물리적 자원에 효율적으로 액세스할 수 있다.
본 발명의 실시예는 하나의 측면에서 클라우드 컴퓨팅 플랫폼, 컴퓨터 판독가능 매체, 및 클라우드 컴퓨팅 플랫폼에서 가상 하드 드라이브를 관리하는 컴퓨터 구현 방법에 관한 것이다. 클라우드 컴퓨팅 플랫폼은 가상 하드 드라이브에 액세스하기 위해 사용되는 패브릭 컴퓨터 및 블랍(blob) 저장소를 포함한다. 블랍 저장소는 저장된 블랍이 이용 가능하며 견고하다는(durable) 것을 보증하기 위해 각 블랍의 수 개의 카피를 보유하도록 복제를 사용하는 견고한 클라우드 스토리지 시스템이다.
패브릭 컴퓨터는 애플리케이션을 구현하는 가상 머신을 실행하도록 구성되며, 그것은 입력/출력(I/O) 요청을 통해 데이터를 판독 및 기록하기 위해 가상 하드 드라이브에 액세스한다. 패브릭 컴퓨터는 구동 라이브러리, 드라이버, 로컬 캐시, 및 블랍 저장소에 대한 인터페이스를 포함한다. 애플리케이션은 I/O 요청을 생성한다. 이어서, I/O 요청은 I/O 요청을 블랍 명령으로 번역하는 드라이버로 재지정된다. 드라이버는 로컬 캐시에 저장된 데이터로 I/O 요청을 완료시키거나, 드라이버는 I/O 요청에 의해 액세스되는 가상 하드 드라이브와 관련된 블랍에 저장된 데이터를 획득하기 위해 블랍 저장소에 액세스할 수 있다. 블랍 명령은 블랍 저장소에 액세스하기 위해 사용된다. 블랍 저장소는 애플리케이션에 대한 가상 하드 드라이브로서 노출되는 블랍을 저장하도록 구성된다. 블랍으로의 액세스를 가능하게 하는 애플리케이션 프로그래밍 인터페이스 및 시맨틱스는 애플리케이션이 가상 하드 드라이브로 액세스하기 위해 실행하는 애플리케이션 프로그래밍 인터페이스 및 시맨틱스와 다르다.
본 요약은 이하 상세한 설명에 더 설명되는 개념의 선택을 간략화된 형태로 소개하기 위해 제공된다. 본 요약은 청구된 발명 대상의 중요 특징 또는 본질적 특징을 식별하도록 의도되지 않으며, 청구된 발명 대상의 범위를 결정하는 것을 지원하는 것으로 분리되어 사용되도록 의도되지 않는다.
도 1은 본 발명의 실시예에 따른 예시적 클라우드 컴퓨팅 플랫폼을 도시하는 네트워크도이다.
도 2는 예시적 클라우드 컴퓨팅 플랫폼에서 예시적 패브릭 컴퓨터 및 예시적 블랍 저장소를 도시하는 블록도이다.
도 3은 가상 하드 드라이브로서 노출되는 블랍을 생성하기 위한 예시적 방법을 도시하는 논리 다이어그램이다.
도 4는 가상 하드 드라이브에 대한 I/O 요청을 관리하기 위한 예시적 방법을 도시하는 논리 다이어그램이다.
본 특허는 법정 요건을 만족시키기 위해 특이성을 가진 특허를 위한 발명의 대상을 설명한다. 그러나, 설명 그 자체는 본 특허의 범위를 한정하도록 의도되지 않는다. 오히려, 본 발명자들은 다른 현재의 또는 장래의 기술과 함께, 본 특허에 기재된 것과 유사한 다른 단계 또는 단계의 조합을 포함하도록 청구된 발명 대상이 다른 방식으로도 구체화될 수 있다는 것을 숙고하였다. 더욱이, 용어 "단계" 및 "블록"이 사용된 방법의 다른 요소를 내포하기 위해 여기서 사용될 수 있을지라도, 그 용어는 개별 단계의 순서가 명시적으로 기재되지 않는 한 그리고 기재된 경우를 제외하고 여기에 개시된 각종 단계 중에서 또는 사이에서 어떤 특정 순서를 암시하는 것으로 해석되지 않아야 한다. 또한, 실시예는 여기에 참조로 그 전체가 포함되어 있는 첨부 도면과 관련하여 이하에 상세히 기재된다.
여기에 사용되는 바와 같이, 용어 "블랍(blob)"은 이진 대용량 객체를 지칭한다.
일부 실시예에 있어서, 클라우드 컴퓨팅 플랫폼에서 실행되는 애플리케이션은 영속적으로 이용 가능한 가상 하드 드라이브에 저장된 파일 시스템의 데이터에 액세스한다. 가상 하드 드라이브의 데이터는 소프트웨어 또는 하드웨어 고장(예를 들어, 드라이브 고장, 노드 고장, 랙 고장, 비트 결함(bit rot) 등)의 경우에 이용 가능하다. 애플리케이션은 가상 하드 드라이브에 저장된 데이터에 액세스하기 위해 Windows® NTFS API와 같은 애플리케이션 프로그래밍 인터페이스(API) 및 시맨틱스를 사용할 수 있다.
일 실시예에 있어서, 가상 하드 드라이브는 장착 가능 블록 레벨 가상 장치이다. 가상 하드 드라이브는 클라우드 컴퓨팅 플랫폼 내의 가상 머신 상에서 실행되는 애플리케이션이 애플리케이션을 위한 스토리지와 인터페이스되는 어떤 파일 시스템 API를 사용해서 가상 하드 드라이브 내의 데이터에 액세스할 수 있도록 한다. 가상 하드 드라이브는 영속성이 있으며, 블랍 저장소에 기록을 커밋팅(committing)함으로써 모든 기록에 있어서 데이터의 손실을 방지한다. 가상 하드 드라이브는 블랍이다. 가상 하드 드라이브의 콘텐츠 및 가상 하드 드라이브와 관련된 메타데이터는 블랍에 저장되어 있다. 블랍은 블랍 인터페이스를 통해 블랍 저장소로부터 업로드되거나 블랍 저장소로 다운로드될 수 있다. 게다가, 블랍 인터페이스는 애플리케이션이 블랍과 관련된 가상 하드 드라이브를 장착하며 가상 하드 드라이브에 저장된 데이터에 액세스하게 할 수 있다.
가상 하드 드라이브는 일부 실시예에 있어 애플리케이션에 의해 볼륨(volume)으로서 장착된다. 애플리케이션 I/O 요청은 블랍 저장소에 저장된 블랍에 재지정된다. 일 실시예에 있어서, 블랍으로의 기록은 기록된 데이터를 블랍 저장소에 저장함으로써 영속적으로 되며, 그것은 기록이 블랍 저장소에서 영속적으로 된 후 애플리케이션으로 성공 기록을 확인해준다. 가상 하드 드라이브가 장착되지 않거나 드라이브를 장착한 가상 머신이 작동되지 않을 때, 가상 하드 드라이브와 관련된 블랍은 영속적인 블랍 저장소에 존속한다. 따라서, 다른 가상 머신은 가상 하드 드라이브와 관련된 동일 블랍을 장착하고 블랍에 저장된 데이터에 액세스할 수 있다.
클라우드 컴퓨팅 플랫폼은 그 중에서도 특히 스토리지 자원을 사용할 수 있는 관계 데이터베이스를 포함하는 레거시 애플리케이션의 이주와 실행; 고장 또는 중단 동안 가상 머신 상의 데이터의 생존; 다른 가상 머신에 의해 사용되는 데이터의 기록; 및 다수의 가상 머신 중에서의 동시 데이터 공유를 가능하게 한다. 레거시 애플리케이션의 이주와 실행은 가상 머신이 Windows® NTFS 파일 시스템을 통해 I/O 요청을 개시하도록 구성된 애플리케이션을 실행하게 한다. 또한, 가상 머신은 추가적인 데이터베이스 미러링을 수행하지 않고 mySQL과 같은 구조화 쿼리 언어(SQL), 또는 오라클을 사용하는 관계 데이터베이스를 실행한다. 가상 머신은 데이터를 가상 하드 드라이브에 저장하며, 가상 하드 드라이브에 저장된 데이터는 현재의 가상 머신이 고장나면 추가적인 가상 머신에 이용 가능하다. 스냅샷은 가상 하드 드라이브와 관련된 블랍의 현재 상태를 기록한다. 스냅샷은 가상 머신에 의해 액세스 가능한 읽기 전용 가상 하드 드라이브를 생성하기 위해 사용될 수 있다. 가상 하드 드라이브에 저장된 데이터는 동시에 다수의 가상 머신에 이용 가능할 수 있다. 일 실시예에 있어서, 클라우드 컴퓨팅 플랫폼은 가상 하드 드라이브를 업데이트하며, 스냅샷을 생성한 다음 스냅샷을 다른 가상 머신에 공유시킨다.
일 실시예에 있어서, 클라우드 컴퓨팅 플랫폼은 물리적 기계를 가상 머신으로서 노출시킬 수 있다. 물리적 기계는 가상 머신에 의해 사용되는 명령을 통하여 액세스될 수 있다.
당업자가 인식하는 바와 같이, 클라우드 컴퓨팅 플랫폼은 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합을 포함할 수 있다. 하드웨어는 메모리에 기억된 명령어를 실행하도록 구성된 프로세서 및 메모리를 포함한다. 일 실시예에 있어서, 메모리는 컴퓨터 구현 방법을 위한 컴퓨터 사용 가능 명령어를 갖는 컴퓨터 프로그램 제품을 저장한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 휘발성과 비휘발성 매체, 제거 가능과 제거 불가능 매체, 및 데이터베이스, 스위치, 및 다른 네트워크 장치에 의해 판독가능한 매체 모두를 포함한다. 예지만 제한이 아닌 것으로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체를 포함한다. 네트워크 스위치, 라우터, 및 관련 구성요소는 동일한 통신 수단으로서 본래 종래의 것이다. 컴퓨터 저장 매체, 또는 기계 판독가능 매체는 정보를 저장하기 위해 어떤 방법 또는 기술로 구현되는 매체를 포함한다. 저장된 정보의 예는 컴퓨터 사용 가능 명령어, 데이터 구조, 프로그램 모듈, 및 다른 데이터 표현을 포함한다. 컴퓨터 저장 매체는 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 전기적 소거 프로그램가능 읽기 전용 메모리(EEPROM), 플래시 메모리나 다른 메모리 기술, 콤팩트 디스크 읽기 전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 홀로그래프 매체나 다른 광 디스크 스토리지, 자기 카세트, 자기 테이프, 자기 디스크 스토리지, 및 다른 자기 스토리지 장치를 포함하지만, 이들에 한정되지 않는다. 이 메모리 기술은 데이터를 순간적으로, 일시적으로, 또는 영구적으로(permanently) 저장할 수 있다.
실시예에 있어서, 클라우드 컴퓨팅 플랫폼은 클라이언트 장치에 이용 가능한 클라우드 애플리케이션을 포함한다. 클라이언트 장치는 클라우드 애플리케이션을 실행하기 위해 클라우드 컴퓨팅 플랫폼에 액세스한다. 클라우드 애플리케이션은 클라우드 컴퓨팅 플랫폼에서 이용 가능한 스토리지 및 처리 자원을 사용하여 구현된다.
도 1은 본 발명의 실시예에 따른 예시적 컴퓨팅 시스템(100)을 도시하는 네트워크도이다. 도 1에 도시된 컴퓨팅 시스템(100)은 단지 예시적이며 범위 또는 기능성에 관해 어떤 한정을 암시하도록 의도되지 않는다. 본 발명의 실시예는 다수의 다른 구성으로 실시가능하다. 도 1을 참조하면, 컴퓨팅 시스템(100)은 클라우드 컴퓨팅 플랫폼(110), 클라우드 애플리케이션(120), 및 클라이언트 장치(130)를 포함한다.
클라우드 컴퓨팅 플랫폼(110)은 클라이언트 장치(130)에 의해 요청되는 클라우드 애플리케이션(120)을 실행하도록 구성된다. 클라우드 컴퓨팅 플랫폼(110)은 블랍 저장소를 유지한다. 블랍 저장소는 클라우드 애플리케이션(120)에 의해 액세스되는 데이터를 저장한 블랍을 제공한다. 클라우드 컴퓨팅 플랫폼(110)은 무선 네트워크, 근거리 통신망, 유선 네트워크, 또는 인터넷과 같은 통신 네트워크를 통해 클라이언트 장치(130)에 접속된다.
클라우드 애플리케이션(120)은 클라이언트 장치(130)에 이용 가능하다. 클라우드 컴퓨팅 플랫폼(110) 상에 실행되는 소프트웨어는 클라우드 애플리케이션(120)을 구현한다. 일 실시예에 있어서, 클라우드 컴퓨팅 플랫폼(110)의 가상 머신은 클라우드 애플리케이션(120)을 실행한다. 클라우드 애플리케이션(120)은 편집 애플리케이션, 네트워크 관리 애플리케이션, 금융 애플리케이션, 또는 클라이언트 장치(130)에 의해 요청되거나 개발되는 어떠한 애플리케이션도 포함할 수 있다. 어떤 실시예에 있어서, 클라우드 애플리케이션(130)의 일부 기능은 클라이언트 장치(130) 상에서 실행될 수 있다.
클라이언트 장치(130)는 클라우드 컴퓨팅 플랫폼(110)에 의해 제공되는 클라우드 애플리케이션(120)과 상호작용하도록 사용자에 의해 이용된다. 클라이언트 장치(130)는, 일부 실시예에 있어서, 클라우드 애플리케이션(120)에 액세스하기 위해 클라우드 컴퓨팅 플랫폼(110)에 등록해야 한다. 클라우드 컴퓨팅 플랫폼(110)으로부터의 계정을 갖는 임의의 클라이언트 장치(130)는 클라우드 컴퓨팅 플랫폼(110)에 제공되는 클라우드 애플리케이션(120) 및 다른 자원에 액세스할 수 있다. 클라이언트 장치(130)는 개인 정보 단말기, 스마트폰, 랩톱, 개인용 컴퓨터, 게임 시스템, 셋톱 박스, 또는 어떤 다른 적당한 클라이언트 컴퓨팅 장치를 제한없이 포함한다. 클라이언트 장치(130)는 사용자 및 시스템 정보를 클라이언트 장치(130) 상에 저장하는 사용자 및 시스템 정보 스토리지를 포함한다. 사용자 정보는 검색 이력, 쿠키, 및 패스워드를 포함할 수 있다. 시스템 정보는 인터넷 프로토콜 어드레스, 캐시 웹 페이지, 및 시스템 이용을 포함할 수 있다. 클라이언트 장치(130)는 클라우드 애플리케이션(120)으로부터 결과를 수신하도록 클라우드 컴퓨팅 플랫폼(110)과 통신한다.
따라서, 컴퓨팅 시스템(100)은 클라우드 애플리케이션(120)을 클라이언트 장치(130)에 제공하는 클라우드 컴퓨팅 플랫폼(110)으로 구성된다. 클라우드 애플리케이션(120)은 다수의 국부 클라이언트 애플리케이션을 클라이언트 장치(130) 상에서 업데이트하고 관리하는 부담을 제거한다.
어떤 실시예에 있어서, 클라우드 컴퓨팅 플랫폼은 패브릭 컴퓨터 및 블랍 저장소를 제공한다. 패브릭 컴퓨터는 클라우드 애플리케이션을 하나 이상의 가상 머신에서 실행한다. 블랍 저장소는 데이터 사용을 클라우드 애플리케이션에 의해 저장한다. 이어서, 클라우드 애플리케이션은 클라우드 애플리케이션 I/O 요청을 블랍 명령으로 번역하는 드라이버를 통해 가상 하드 드라이브로서의 블랍과 인터페이스한다.
도 2는 예시적 클라우드 컴퓨팅 플랫폼에서 예시적 패브릭 컴퓨터(210) 및 예시적 블랍 저장소(230)를 도시하는 블록도이다. 패브릭 컴퓨터(210)는 클라우드 애플리케이션(221)을 구현하는 가상 머신(220)을 실행한다. 블랍 저장소(230)는 인터넷 프로토콜(IP) 어드레스를 통해 패브릭 컴퓨터(210)에 의해 액세스 가능하다. 일 실시예에 있어서, 클라우드 애플리케이션(221)은 패브릭 컴퓨터(210)에 의해 실행될 수 있으며, 그것은 클라우드 애플리케이션(221)에 의해 사용되는 가상 하드 드라이브를 구현하는 블랍을 획득하기 위해 블랍 저장소에 이어서 액세스한다.
가상 머신(220)은 드라이브 라이브러리(222), I/O 리디렉션(223), 드라이버(224), 및 로컬 캐시(225)를 포함한다. 드라이브 라이브러리(222)는 드라이브 관리를 제공할 수 있고, I/O 리디렉션(223)은 드라이브 명령을 드라이버(224)에 재지정함으로써 가상 하드 드라이브에 저장된 콘텐츠에 액세스를 가능하게 할 수 있으며, 그것은 드라이브 명령을 블랍 명령으로 번역한다. 일 실시예에 있어서, 가상 머신(220)은 드라이브 라이브러리(222)에 저장된 생성 드라이브, 삭제 드라이브, 리스트 드라이브, 장착 드라이브, 탈착 드라이브, 및 스냅샷 드라이브와 같은 드라이브 명령을 사용하여 가상 하드 드라이브(VHD)에 대응하는 블랍내의 데이터에 액세스할 수 있다. 일 실시예에 있어서, 드라이브 라이브러리(222)는 드라이브 명령을 찾기 위한 블랍 네임스페이스를 가상 머신(220)에 제공할 수 있다. 예컨대, 가상 머신(220)은 드라이브 라이브러리(222)내의 URL, 예를 들어 http://<accountname>.blob.core.windows.net/<containername>/<blobname>에 액세스함으로써 블랍 네임스페이스를 찾아낼 수 있으며, 여기서 accountname은 클라우드 컴퓨팅 플랫폼의 사용자에 의해 등록되는 계정의 네임이고, containername은 블랍 저장소의 네임이며, blobname은 블랍의 네임이다.
이어서, 가상 머신(220)은 I/O 요청을 VHD에 발행할 수 있다. I/O 요청은 드라이버(224)에 의해 블랍 명령으로 번역된다. 블랍 저장소(230)의 블랍은 가상 머신(220) 상에서 실행되는 클라우드 애플리케이션(221)에 가상 하드 드라이브(VHD)로서 노출될 수 있다. 실시예에 있어서, VHD는 블랍(예를 들어, 페이지 블랍)의 특별한 종류일 수 있으며, 그것은 시간 제한 리스를 갖는 클라우드 애플리케이션(221)에 의해 장착될 수 있다. VHD는 드라이브 라이브러리(222)에 포함된 파일 시스템 시맨틱스, 예를 들어 Windows® NTFS 시맨틱스 또는 드라이브 명령을 사용하여 어떤 클라우드 애플리케이션(221)에 의해 액세스될 수 있다.
VHD에 발행된 I/O 요청은 I/O 리디렉션(223)에 의해 수신된다. I/O 리디렉션(223)은 VHD로 예정되어 있는 클라우드 애플리케이션 I/O 요청을 드라이버(224)에 전송하도록 구성된 구성요소이다.
어떤 실시예에 있어서, 드라이버(224)는 수신된 드라이브 명령을 클라우드 애플리케이션으로부터 리스 블랍(LeaseBlob), 스냅샷 블랍(SnapShotBlob), 풋 페이지(PutPage), 클리어 페이지(ClearPage), 겟 블랍(GetBlob) 등과 같은 블랍 명령으로 번역하기 위해 클라우드 애플리케이션에 의해 사용되는 인터페이스를 제공 및/또는 구현한다. 또한, 드라이버(224)는 장착된 가상 하드 드라이브로 예정되어 있는 클라우드 애플리케이션 I/O 요청을 블랍 저장소(230)에 송신되며 이 저장소에 의해 처리되는 블랍 명령으로 번역한다. 드라이버(224)는 가상 하드 드라이브에 대응하는 블랍에 저장된 데이터를 저장하기 위해 가상 하드 드라이브에 대한 로컬 캐시(225)를 관리할 수 있다. 드라이버(224)는 클라우드 애플리케이션(221)으로부터의 판독 연산에 대응하는 데이터를 검색하기 위해 로컬 캐시(225)를 사용할 수 있다. 클라우드 애플리케이션(221)으로부터의 기록 연산은 로컬 캐시(225) 및 블랍 저장소(230)의 블랍 둘 다에 송신될 수 있다. 다른 실시예에 있어서, 드라이버(224)는 리스가 만료될 때 클라우드 애플리케이션이 로컬 캐시(225) 또는 블랍 저장소에서 데이터에 액세스하지 못하게 하도록 가상 하드 드라이브에 대응하는 리스를 관리할 수 있다.
각 로컬 캐시(225)는 단일 VHD와 관련된다. 장착된 VHD에 대한 로컬 캐시(225)는 동일 패브릭 컴퓨터(210) 상에 위치될 수 있거나 또는 로컬 캐시(225)는 VHD를 장착한 패브릭 컴퓨터(210)의 동일 랙 내의 컴퓨팅 자원 상에 위치될 수 있다. 이 구성은 네트워크 대역폭을 절약할 수 있다. 일부 실시예에 있어서, 가상 머신(220)은 요청 다수의 VHD를 요청할 수 있다. 각 VHD에 대해서는, 가상 머신은 로컬 캐시(225)로 사용하기 위해 패브릭 컴퓨터 상에 디스크 드라이브 공간의 양을 지정할 수 있다. 로컬 캐시(225)에 저장된 데이터는 가상 머신(220)이 에러를 포함하는 데이터를 사용하지 못하게 하도록 순환 중복 검사(CRC)될 수 있다.
어떤 실시예에 있어서, 로컬 캐시(225)는 VHD의 대응하는 블랍과 동기된다. 드라이버(224)는 로컬 캐시(225)를 관리할 수 있다. 드라이버(224)는 확인 응답이 블랍 저장소(230)의 블랍으로부터 수신될 때까지 로컬 캐시(225)에 기록을 미루도록 구성될 수 있다. 대안으로, 드라이버(224)는 로컬 캐시(225) 및 블랍 저장소(230) 둘 다에 병렬로 기록될 수 있다. 가상 머신(220)이 블랍 저장소(230)에 병렬로 기록되는 동안 충돌 및 재설정되면, 가상 머신(220)은 가상 하드 드라이브를 재장착하고 대응하는 로컬 캐시(225)를 재사용하려고 할 수 있다. 가상 머신(220)은 어느 데이터 블록이 블랍 저장소(230)으로부터의 확인 응답없이 로컬 캐시(225)에 추론적으로 기록되는지를 판단하기 위해 로컬 캐시(225)를 검사할 수 있다. 이어서, 가상 머신(220)은 확인 응답되지 않은 데이터 블록의 로컬 캐시(225)를 비울(flush) 수 있다. 다른 실시예에 있어서, 가상 머신(220)은 전체 로컬 캐시(225) 또는 로컬 캐시(225)의 선택된 부분을 비울 수 있다. 로컬 캐시(225)는 패브릭 컴퓨터(210) 상에 가상 머신(220)에 의해 빈번히 사용되는 데이터를 저장한다. 로컬 캐시(225)는 블랍 저장소(230)로부터 요청된 판독의 수를 감소시키며, 그것은 네트워크 대역폭을 절약하고 네트워크 경쟁을 감소시킨다. 게다가, 가상 머신(220)은 로컬 캐시(225)로부터 데이터 판독을 검색함으로써 획득되는 감소된 레이턴시로 인해 성능 개선을 경험할 수 있다. 일부 실시예에 있어서, 블랍 저장소(230)에 대한 높은 접속성(예를 들어, 1OGbps)을 경험하는 가상 머신은 로컬 캐시(225)를 사용할 수 없다.
블랍 저장소(230)는 패브릭 컴퓨터(210)에 접속된다. 패브릭 컴퓨터(210)는 IP 어드레스를 통해 블랍 저장소(230)에 액세스한다. 블랍 저장소(230)는 블랍 서버(233)를 포함한다. 블랍 서버(233)는 패브릭 컴퓨터(210)와 인터페이스되고, 블랍에 대한 액세스를 제어하며, 블랍 상에 블랍 명령을 구현한다. 블랍 서버(233)는 복제 블랍 스토리지 시스템의 일부이며, 저장된 블랍은 드라이브, 노드, 또는 랙 고장이 존재하는 경우에 개별적으로 유지되는 블랍의 카피를 생성하기 위해 수 개의 서버에 걸쳐 복제된다. 이것은 블랍이 고장에도 불구하고 이용 가능하고 영구적인 것을 보증한다.
드라이버(224), 또는 클라우드 애플리케이션(221)으로부터 수신된 블랍 명령은 블랍에 액세스할 때 리스 블랍, 스냅샷 블랍, 풋 페이지, 클리어 페이지, 및 겟 블랍을 포함한다.
리스 블랍 명령은 블랍 저장소(230)가 블랍 저장소(230) 상에 저장된 블랍에 대한 리스를 생성하게 한다. 일부 실시예에 있어서, 리스는 배타적 기록 리스이며, 그것은 1개의 클라우드 애플리케이션(221)만이 블랍에 기록되게 한다. 배타적 기록 리스를 획득할 때, 리스 식별자(ID)가 블랍 서버(233)에 의해 생성되어 클라우드 애플리케이션(221)으로 리턴된다. 드라이버(224)는 리스 ID를 저장하고 블랍 저장소(230)에 송신되는 어떤 기록을 갖는 리스 ID를 포함한다. 또한, 리스 블랍 명령은 배타적 판독 기록 및 다른 종류의 리스를 지원한다. 일부 실시예에 있어서, 리스 블랍 명령은 드라이버(224)가 리스의 지속시간을 지정하게 한다. 리스 블랍 명령은 리스를 갱신하거나 리스를 종결시키기 위해 드라이버(224)에 의해 사용될 수 있다.
스냅샷 블랍 명령은 블랍 저장소가 블랍에서 데이터의 스냅샷을 생성하게 한다. 스냅샷은 읽기 전용이다. 드라이버(224)는 블랍의 콘텐츠에 대한 동시 액세스를 가능하게 하기 위해 이 명령을 사용할 수 있다. 동일 블랍의 하나 이상의 스냅샷은 2개 이상의 클라우드 애플리케이션에 의해 동시에 액세스될 수 있다. 스냅샷은 블랍을 위한 버저닝을 제공할 수 있다. 블랍에 대한 스냅샷은 블랍의 네임 및 블랍 서버(233)에 의해 자동 생성되는(다수 버전의 경우에) 버전 타임스탬프에 기초해서 액세스된다. 다시 말하면, 블랍이 업데이트될 때 블랍 업데이트 전에 생성된 스냅샷은 다른 버전 타임스탬프를 포함한다. 어떤 실시예에 있어서, 클라우드 애플리케이션은 드라이버(224)가 메타데이터의 스냅샷의 블랍 저장소에 송신하게 할 수 있다. 메타데이터는 스냅샷을 설명하거나 스냅샷을 신속히 위치시키기 위해 사용될 수 있다.
풋 페이지 명령은 블랍 서버(233)가 블랍 저장소(230)의 지정된 어드레스에서 페이지의 범위를 저장하게 한다. 각 페이지는 1차 스토리지 장치에서 메모리 블록의 범위로 이루어질 수 있다. 풋 페이지 명령은 데이터를 블랍 저장소에 기록하기 위하여 드라이버(224)에 의해 사용될 수 있다. 오프셋은 블랍 저장소(230)의 어떤 유효 어드레스 내에 스토리지를 허용하기 위해 지정될 수 있다. 페이지는 순서 있게 기록되지 않아도 되고 블랍의 어드레스 공간에 갭(예를 들어, 빈 블록)이 존재할 수 있다. 예컨대, 드라이버(224)는 블랍 저장소(230)에서 오프셋 0에 4KB 페이지를 두며, 오프셋 4KB * 백만에 다른 것을 둘 수 있다. 블랍 저장소(230)는 지정된 어드레스에 2 페이지를 저장할 수 있다. 이 페이지는 성공한 풋 페이지 명령 후 블랍 저장소(230)에 기록된다. 이어서, 블랍 저장소(230)는 드라이버(224)에 대한 성공을 확인한다. 풋 페이지 명령은 블랍 서버(233)가 블랍을 업데이트하기 전에 리스 ID를 검사하게 한다. 배타적 기록 리스가 블랍에 대해 지정될 때, 풋 페이지 명령은 블랍에 업데이트를 요청하는 동안 유효 리스 ID가 드라이버에 의해 지정되면 성공한다. 리스가 만료되면, 풋 페이지 명령은 성공하지 못할 것이고 블랍 서버(233)는 만료된 리스 ID를 제거할 수 있다.
클리어 페이지 명령은 블랍 서버(233)가 블랍 저장소(230)로부터 특정 페이지 또는 페이지의 범위를 소거하게 한다. 드라이버(224)는 가상 하드 드라이브로부터 데이터를 삭제하기 위해 클라우드 애플리케이션(221) 요청에 응답하여 블랍으로부터 페이지를 제거하기 위한 클리어 페이지 명령을 송신한다. 클리어 페이지 명령은 블랍 서버(233)로 하여금 삭제 요청의 대상인 데이터를 갖는 페이지를 제거하기 전에 유효 리스 ID가 VHD와 관련된 블랍에 대해 지정되는 것을 보증하게 한다. 리스가 만료될 때, 클리어 페이지 명령은 성공하지 못할 것이고 블랍 서버(233)는 만료된 리스 ID를 소거할 수 있다.
겟 블랍 명령은 블랍 서버(233)가 지정된 블랍에 대한 전체 블랍 또는 페이지의 범위(예를 들어, 바이트)를 검색하게 한다. 드라이버(224)는 가상 하드 드라이브로부터 데이터를 획득하기 위해 클라우드 애플리케이션(221) 요청에 응답하여 겟 블랍 명령을 송신한다. 겟 블랍 명령은 블랍 서버(233)로 하여금 페이지를 획득하기 전에 유효 리스 ID가 VHD와 관련된 블랍에 대해 지정되는 것을 보증하게 한다. 리스가 만료될 때, 겟 블랍 명령은 성공하지 못할 것이고 블랍 서버(233)는 만료된 리스 ID를 소거할 수 있다.
드라이버(224)는 클라우드 애플리케이션(221)으로부터 드라이브 명령 및 I/O 요청을 수신한다. 이어서, 드라이버(224)는 클라우드 명령 및 I/O 요청을 블랍 명령으로 번역한다. 드라이브 명령은 VHD를 관리하기 위하여 클라우드 애플리케이션에 의해 사용되며, I/O 요청은 VHD에 저장된 데이터에 액세스하기 위해 사용된다. 드라이브 명령은 그 중에서도 특히 생성 드라이브, 장착 드라이브, 탈착 드라이브, 삭제 드라이브, 리스트 드라이브, 및 스냅샷 드라이브를 포함한다.
생성 드라이브 명령은 가상 하드 드라이브를 생성하기 위하여 클라우드 애플리케이션(221)에 의해 사용된다. 클라우드 애플리케이션(221)은 가상 하드 드라이브에 대한 사이즈 및 포맷을 지정한다. 예컨대, 클라우드 애플리케이션(221)은 Windows® NTFS 파일 시스템을 사용하여 단일 분할 단일 볼륨으로 가상 하드 드라이브를 포맷할 수 있다. 이어서, 드라이버(224)는 드라이브 명령을 블랍 네임스페이스에 이용 가능한 적절한 블랍 명령으로 번역한다. 드라이버는 이때 블랍 저장소(230)에 블랍 명령, 예를 들어 풋 페이지, 리스 블랍 등을 송신할 수 있으며, 그것은 VHD에 대한 블랍을 생성한다.
장착 드라이브 명령은 VHD를 장착하기 위하여 클라우드 애플리케이션(221)에 의해 사용된다. VHD를 장착할 때, 클라우드 애플리케이션(221)은 장착된 VHD에 대한 로컬 캐시(225)로 사용하기 위해 로컬 디스크 공간의 양을 사용할 수 있다. 또한, 클라우드 애플리케이션(221)은 배타적 기록 VHD, 기록 VHD, 공유된 읽기 전용 VHD 등을 요청할 수 있다. 배타적 기록 VHD는 클라우드 애플리케이션(221)만이 VHD를 업데이트할 수 있는 것을 의미한다. 기록 VHD는 이어서 클라우드 애플리케이션(221)이 VHD를 업데이트할 수 있으며 다른 클라우드 애플리케이션이 VHD를 업데이트할 수 있다는 것을 의미한다. 공유된 읽기 전용 VHD는 VHD가 읽기 전용인 것을 의미하며, 다른 가상 머신(220)은 동일 VHD로부터 동시에 판독될 수 있다. 드라이버(224)는 리스 ID가 VHD의 대응하는 블랍과 관련될 수 없기 때문에 읽기 전용 VHD에 대한 기록을 방지할 수 있다. 이어서, 드라이버(224)는 장착 드라이브 명령을 적절한 블랍 명령으로 번역한다. 예컨대, 드라이버(224)는 VHD에 대응하는 블랍 상에서 리스를 획득하고 유지하기 위한 리스 블랍 명령을 블랍 저장소(230)에 송신할 수 있다. 게다가, 드라이버는 VHD에 대한 액세스를 클라우드 애플리케이션(221)에 계속해서 제공하기 위해 블랍에 관한 리스를 정기적으로 갱신할 수 있다. 리스가 갱신되지 않으면, 클라우드 애플리케이션은 요청(221)이 성공하지 못할 수 있는 것을 기록한다.
탈착 드라이브 명령은 지정된 VHD를 탈착하기 위하여 클라우드 애플리케이션(221)에 의해 사용된다. 탈착 드라이브 명령은 드라이버(224)가 지정된 VHD와 관련된 블랍에 대한 리스를 종결시키게 할 수 있다. 패브릭 컴퓨터(210) 또는 가상 머신(220)이 작동하지 않을 때, 드라이버(224)는 패브릭 컴퓨터(210) 또는 가상 머신(220)에 의해 사용되는 블랍에 대한 어떤 리스를 종결시키기 위해 탈착 드라이브 명령을 자동적으로 발생할 수 있다.
삭제 드라이브 명령은 지정된 VHD를 삭제하기 위하여 클라우드 애플리케이션(221)에 의해 사용된다. 삭제 드라이브 명령은 드라이버(224)가 지정된 VHD와 관련된 블랍에 대한 리스를 종결시키는 블랍 명령을 송신하게 할 수 있다. 일부 실시예에 있어서, 드라이버(224)는 지정된 VHD와 관련된 블랍에 대한 모든 페이지를 제거하기 위해 클리어 페이지 명령을 송신할 수 있다. VHD를 삭제한 후, 블랍의 데이터는 클라우드 컴퓨팅 플랫폼 또는 클라우드 애플리케이션(221)에 이용 가능하지 않다.
리스트 드라이브 명령은 클라우드 애플리케이션(221)와 관련된 모든 VHD를 리스트하기 위하여 클라우드 애플리케이션(221)에 의해 사용된다. 리스트 드라이브 명령은 드라이버(224)가 클라우드 애플리케이션(221)과 관련된 각 리스 ID를 위치시키게 할 수 있다. 일부 실시예에 있어서, 드라이버(224)는 클라우드 애플리케이션(221)에 이용 가능한 각 리스 ID에 대응하는 문자 또는 숫자를 클라우드 애플리케이션(221)에 송신할 수 있다. 또한, 드라이버(224)는 리스 ID없이 스냅샷 또는 다른 드라이브와 관련된 숫자 또는 문자를 수신할 수 있다.
스냅샷 드라이브 명령은 클라우드 애플리케이션(221)과 관련된 각 VHD의 스냅샷을 획득하기 위하여 클라우드 애플리케이션(221)에 의해 사용된다. 스냅샷 드라이브 명령은 드라이버(224)가 VHD와 관련된 블랍을 위치시키고 스냅샷 블랍 명령을 블랍 저장소에 송신하게 할 수 있다. 이어서, 드라이버(224)는 스냅샷의 문자, 숫자, 또는 타임스탬프, 예를 들어 날짜 및 시간을 클라우드 애플리케이션(221)으로 리턴시킬 수 있다. 블랍의 스냅샷은 클라우드 애플리케이션(221)에 의해 VHD로 액세스될 수 있다.
어떤 실시예에 있어서, 클라우드 애플리케이션(221)으로부터의 I/O 요청은 드라이버(224)에 의해 처리된다. 클라우드 애플리케이션(221)에 의해 장착된 VHD는 저장된 데이터 상에 I/O 요청을 수행하기 위해 액세스된다. I/O 요청은 그 중에서도 특히 판독 및 기록 요청을 포함할 수 있다.
예컨대, VHD는 클라우드 애플리케이션(221)으로부터 판독 요청을 수신할 수 있다. I/O 리디렉션(223)은 판독 요청을 드라이버(224)로 라우팅할 수 있다. 이어서, 드라이버(221)는 클라우드 애플리케이션(221)으로부터 수신된 어떤 중복 전 기록 요청과 판독 요청을 명령할 수 있다. 이것은 기록 요청이 블랍 저장소(230)에 저장된 후에만 판독이 미정 업데이트를 리턴시키는 것을 보증한다. 드라이버(224)는 요청된 데이터에 대한 최근에 기록된 데이터의 버퍼를 검사한다. 버퍼가 요청된 데이터를 포함하지 않으면, 로컬 캐시(225)가 검사된다. 데이터가 로컬 캐시(225)에 이용 가능하고 로컬 캐시(225)로부터 판독될 때, 블록에 대한 CRC는 데이터의 보전을 보증하기 위해 검사된다. CRC 불일치가 존재하면, 이때 데이터는 캐시로부터 제거되며, 그것은 블랍 저장소(230)로부터 검색된다.
데이터가 로컬 캐시(225)에서 발견되지 않으면, 드라이버(224)는 블랍 저장소(230)로부터 데이터를 판독한다. 블랍 저장소(230)로부터 데이터를 판독하기 위해, 드라이버(224)는 요청된 데이터와 대응하는 페이지에 액세스하기 위해 겟 블랍 명령을 송신한다. 어떤 실시예에 있어서, 블랍 저장소(230)로부터 데이터를 판독하는 것은 유효 리스 ID를 가짐에 따라 결정된다. 데이터가 판독되어 유효화되면, 데이터는 클라우드 애플리케이션(221)으로 리턴된다. 데이터가 블랍 저장소(230)로부터 검색될 때, 드라이버(224)는 로컬 캐시(225)의 사이즈, 캐시 교체 정책 등에 기초해서 데이터를 캐시에 입력하는지를 판단한다. 데이터가 로컬 캐시(225)에 저장되어야 한다면, 데이터가 저장되고 CRC 코드가 계산되어 저장된다. CRC는 데이터와 함게 저장될 수 있거나, 패브릭 컴퓨터(210) 상의 다른 위치에 나중에 기록될 수 있다.
클라우드 애플리케이션(221)은 데이터를 VHD에 기록한다. I/O 리디렉션은 기록 요청을 드라이버(224)로 라우팅할 수 있다. 이어서, 드라이버(224)는 미정 판독 및 기록 요청에 대해 착신 I/O 요청을 명령할 수 있다. 드라이버(224)는 기록 요청을 블랍 저장소(230)에 송신한다. 실시예에 있어서, 드라이버(224)는 모든 중복 기록 요청을 블랍 저장소에 명령하며, 블랍 저장소(230)와 병행해서 비중복 기록 요청만을 송신한다. 미정 중복 판독 또는 기록 요청이 존재할 때, 착신 기록 요청은 명령되어 중복 I/O 요청이 블랍 저장소(230)에 송신되어 확인될 때까지 대기해야 한다.
중복 요청이 명령된 후에, 착신 기록은 블랍 저장소(230)에 송신된다. 그 기록은 장착된 VHD에 대응하는 블랍에 대한 유효 리스 ID에 기초해서 결정된다. 리스가 만료되면, 기록 요청은 실패한다. 이 경우에, 드라이버(224)는 리스를 다시 획득하려고 할 수 있다; 그것이 불가능하다면 기록은 여전히 실패한다. 기록 요청이 성공할 때, 그것은 원래의 클라우드 애플리케이션(221)에 대한 성공을 확인하기 전에 블랍 저장소(230)에 기록 요청을 저장하고 기록을 복제함으로써 영구적으로 된다.
기록 요청이 타임아웃되면(예를 들어, 어떤 확인 응답도 블랍 저장소(230)로부터 수신되면) 이때 드라이버(224)는 기록 요청을 재시도한다. 또한, 드라이버(224)는 블랍 저장소가 "타임아웃" 또는 "서버 사용 중"을 송신할 때 기록 요청을 재시도할 수 있다. 드라이버(224)는 재시도가 블랍 저장소(230)에서 성공하면 성공을 리턴시킨다. 다른 실시예에 있어서, 드라이버는 오래된 기록(예를 들어, 블랍 저장소(230)에 송신된 확인되지 않은 기록 요청)이 후속 재시도를 복사하지 못하는 것을 보증한다. 오래된 기록은 블랍 서버 타임아웃 메시지를 획득하기 위해 대기하거나 블랍 서버 타임아웃 기간을 대기함으로써 폐기될 수 있다. 따라서, 기록 재시도 범위에 중복 기록 요청을 수행하기 전에, 드라이버(224)는 통과하기 위해 블랍 서버 타임아웃 기간을 대기함으로써 오래된 기록이 시스템을 통해 제거되는 것을 보증한다. 블랍 서버(233)는 소정량의 시간이 경과되기 전에 오래된 기록을 폐기한다. 대안으로, 드라이버(224)는 리스 또는 블랍과 관련된 일련 번호를 재설정할 수 있다. 리스 ID의 변경은 만료된 리스 ID를 갖는 오래된 기록이 블랍 저장소(230)를 업데이트하는 것을 못하게 할 수 있다. 선택적으로, 블랍과 관련된 일련 번호는 각각의 성공한 기록 요청 후에 증대될 수 있다. 드라이버(224)가 블랍 저장소(230)로부터 확인 응답을 획득하지 못할 때, 드라이버(224)는 이전 일련 번호를 갖는 어떤 이전 기록이 폐기되어야 하는 것을 블랍 저장소(230)에 통지하기 위해 일련 번호를 증가시킨다. 따라서, 블랍 저장소(230)는 모든 오래된 기록을 무시하고 드라이버(224)로부터의 모든 장래의 기록은 새로운 리스 ID 또는 일련 번호를 사용한다.
블랍 서버(233)는 블랍 저장소(230)에 블랍에 대한 일련 번호를 저장한다. 일련 번호는 블랍 서버가 오래된 기록을 수신할 때 블랍에 대한 액세스를 거부하기 위하여 블랍 서버(233)에 의해 사용된다. 일련 번호를 사용할 때, 모든 페이지 풋 또는 페이지 클리어 명령은 일련 번호로 통과되고, 명령에 포함된 일련 번호는 그것이 블랍 저장소의 블랍과 저장된 일련 번호 이상인지를 판단하기 위해 검사된다. 명령은 명령에 포함된 일련 번호가 블랍 저장소의 블랍과 함께 저장된 일련 번호 이상일 때 성공적일 수 있다. 그렇지 않으면, 명령은 실패한다.
일 실시예에 있어서, VHD를 장착할 때 대응하는 블랍에 대한 일련 번호는 0으로 설정된다. VHD 및 그 대응하는 블랍에 대한 모든 기록은 일련 번호 0으로 통과된다. 결과로서, 통과된 일련 번호가 블랍에 대해 저장된 것과 일치하므로 블랍 서버(233)는 기록을 받아들인다. 기록 중 하나가 타임아웃되면, 드라이버(224)는 기록이 실행하기 위해 대기하는 큐에 위치하는지를 알지 못한다. 타임아웃 기간, 예를 들어 10초 후에, 드라이버(224)는 우수한 기록을 갖는 블랍과 관련된 일련 번호를 증분시키기 위해 요청을 블랍 서버(233)에 송신한다. 블랍 서버(233)는 블랍의 일련 번호를 1로 증분시킨다. 그 후에, 드라이버(224)는 1의 일련 번호를 갖는 VHD에 대한 기록을 블랍 서버(233)에 송신하며, 그것은 블랍에서 수신된 기록을 성공적으로 구현한다. 일련 번호가 업데이트된 후에 0의 일련 번호를 갖는 오래된 기록이 블랍 서버(233)에 도달하면, 블랍 서버(233)는 통과된 일련 번호가 블랍에 대해 저장된 것보다 작으므로 기록을 폐기한다.
일 실시예에 있어서, 클라우드 컴퓨팅 플랫폼은 VHD를 생성하는 클라우드 애플리케이션을 실행한다. VHD는 클라우드 애플리케이션에 의해 사용되는 데이터를 저장한다. 이어서, VHD를 나타내는 블랍 저장소는 원시 클라우드 애플리케이션 명령 및 I/O 요청을 VHD에 대응하는 블랍에 대한 블랍 명령으로 해석하기 위해 드라이버에 의해 관리된다.
도 3은 가상 하드 드라이브(VHD)로서 노출되는 블랍을 생성하기 위해 예시적 방법을 도시하는 논리 다이어그램이다. 상기 방법은 단계 310에서 초기화된다. 클라우드 컴퓨팅 플랫폼은 단계 320에서 VHD로서 노출되는 블랍을 블랍 저장소에서 생성한다. 실시예에 있어서, 클라우드 컴퓨팅 플랫폼은 VHD를 N-T-F-S 파일 시스템 또는 F-A-T 파일 시스템 중 하나로 포맷할 수 있다. 이어서, VHD는 단계 330에서 클라우드 컴퓨팅 플랫폼에서 가상 머신 상에 실행되는 하나 이상의 애플리케이션에 의해 장착된다. 단계 340에서, 드라이버는 VHD에 대한 판독 및 기록 요청을 관리한다. 드라이버는 VHD에 대한 모든 I/O를 인터셉트하며 I/O를 블랍 저장소의 블랍으로 재라우팅한다. I/O 요청의 기록은 애플리케이션에게 성공을 알려주기 전에 블랍 저장소에 남겨진다. 배타적 기록 액세스는 지정된 기간 후에 만료하는 블랍 리스를 통해 클라우드 애플리케이션에 대한 블랍에 제공될 수 있다. 드라이버는 애플리케이션이 실행되고 있고 그것을 사용하기를 원하는 한 VHD가 장착된 채로 있도록 리스를 연속적으로 갱신하는 스레드를 실행할 수 있다. 다른 실시예에 있어서, 리스는 블랍의 성공한 업데이트가 존재할 때마다 갱신될 수 있다. 이어서, 클라우드 애플리케이션은 리스의 유효성에 기초해서 블랍에 조건부로 기록되는 한편 다른 클라우드 애플리케이션은 블랍으로부터 판독되도록 허용된다.
블랍은 드라이버에 이용 가능한 블랍 인터페이스를 통해 액세스되며 조작된다. 블랍의 스냅샷은 추가적인 애플리케이션이 블랍에 저장된 데이터를 동시에 판독되게 하도록 블랍 인터페이스를 통해 생성될 수 있다. 어떤 실시예에 있어서, 블랍은 클라우드 컴퓨팅 플랫폼에 의해 실행되는 어떤 클라우드 애플리케이션에 이용 가능한 블랍 인터페이스를 통해 업로드, 다운로드, 또는 디버그될 수도 있다. 클라우드 애플리케이션은 데이터의 일관된 스토리지를 검사하기 위해 디버거를 실행할 수 있다. 상기 방법은 단계 350에서 종결된다.
일부 실시예에 있어서, 드라이버는 클라우드 애플리케이션에 대한 I/O 요청을 관리한다. 드라이버는 VHD에 예정되어 있는 I/O 요청을 블랍 저장소에서 대응하는 블랍에 송신되는 적절한 블랍 명령으로 번역한다. 이어서, 블랍 저장소는 블랍 명령을 구현하기 위해 블랍에 액세스한다.
도 4는 가상 하드 드라이브에 대한 I/O 요청을 관리하기 위한 예시적 방법을 도시하는 논리 다이어그램이다. 상기 방법은 단계 410에 초기화된다. 단계 420에서, 클라우드 컴퓨팅 플랫폼에서 가상 머신 상에 실행되는 클라우드 애플리케이션으로부터 VHD에 대한 I/O 요청이 수신된다. 실시예에 있어서, 드라이버는 동일 데이터에 대한 최근 기록 요청과 이전 기록 요청을 중복 기록하는 것을 방지하기 위해 일련 번호와 I/O 요청을 관련시킨다. 또한, 일련 번호는 오래된 기록이 최근 기록 요청을 중복 기록하는 것을 못하게 한다. 일부 실시예에 있어서, 드라이버는 오래된 순서를 갖는 이전 기록 요청을 무시하기 위해 블랍에 대한 일련 번호 및 블랍 명령으로 통과되는 일련 번호를 증가시킬 수 있으며, 이전 기록 요청은 블랍 저장소에 의해 확인되지 않는다. 단계 430에서, 드라이버는 VHD에 대한 I/O 요청을 관리한다. 드라이버는 블랍 저장소의 블랍에 대한 모든 중복 I/O 요청을 명령하고 블랍 저장소에서 VHD와 병행해서 비중복 I/O 요청을 송신한다. 다른 실시예에 있어서, 가상 머신 상의 로컬 캐시는 기록 요청을 갖는 드라이버에 의해 업데이트되며, 로컬 캐시의 업데이트는 확인 응답이 블랍 저장소로부터, 또는 블랍 저장소의 업데이트와 병렬로 수신된 후 어느 쪽이든 발생한다. 그러나 로컬 캐시의 업데이트는 확인 응답이 블랍 저장소로부터 수신된 후에만 이용 가능하다. 로컬 캐시의 모두 또는 일부는 클라우드 애플리케이션 또는 가상 머신을 재시작할 시에 일치하지 않을 경우에 클라우드 애플리케이션 고장 또는 가상 머신 고장 후 드라이버에 의해 비워질 수 있다. 상기 방법은 단계 440에서 종결된다.
요약하면, 클라우드 컴퓨팅 플랫폼은 블랍 저장소의 블랍을 사용하여 VHD를 제공한다. 예컨대, 데이터베이스 애플리케이션은 클라우드 컴퓨팅 플랫폼 상에서 실행될 수 있다. 데이터베이스 애플리케이션에서, 로그는 순차적인 방식으로 기록된다. 로그는 아주 많은 기록, 예를 들어, 리두/언도 리코드, 비트리(BTree) 변경 리코드, 및 커밋 리코드를 위해 사용된다. 전용 "로그 드라이브"는 로그 액세스와 데이터 액세스 사이에서 경쟁을 방지한다. 전용 "데이터베이스 드라이브"는 데이터베이스의 데이터에 액세스(기록 및 판독)하기 위해 사용된다. "로그 드라이브" 판독의 비율은 매우 작으며, 데이터베이스 드라이브는 높은 판독 및 기록 비율을 갖는다.
클라우드 컴퓨팅 플랫폼을 실행하는 데이터베이스 애플리케이션은 2개의 VHD를 생성할 수 있다: "로그 드라이브" 및 "데이터베이스 드라이브". 결국, 블랍 저장소는 "로그 드라이브" 및 "데이터베이스 드라이브" 둘 다에 대응하는 2개의 블랍을 생성한다. 데이터베이스 애플리케이션은 대부분의 로그 트래픽이 로그 기록이기 때문에 "로그 드라이브"를 장착하고 어떤 캐싱도 설정하지 않는다. 이어서, 클라우드 애플리케이션은 "데이터베이스 드라이브"를 장착하고 100% 캐싱을 설정해서 대부분의 판독 요청이 로컬 캐시에 의해 서빙되게 한다.
본 발명의 실시예의 이전 설명은 예시적이고, 구성 및 구현의 수정은 현재의 설명의 범위 내에 있다. 예컨대, 본 발명의 실시예가 통상 도 1-4를 참조하여 설명될지라도, 이 설명은 예시적이다. 주제가 구조적 특징 또는 방법적 동작에 특정한 언어로 설명되었을지라도, 첨부된 청구범위에 규정된 주제가 상술한 구체적인 특징 또는 동작에 반드시 한정될 필요는 없다는 것이 이해된다. 오히려, 상술한 구체적인 특징 및 동작은 청구범위를 구현하는 예시적 형태로 개시된다. 따라서, 본 발명의 실시예의 범위는 이하의 청구범위에 의해서만 한정되도록 의도된다.

Claims (15)

  1. 클라우드 컴퓨팅 플랫폼에서 블랍(blob)으로서 가상 하드 드라이브를 관리하는 컴퓨터 구현 방법으로서,
    하나 이상의 애플리케이션에 가상 하드 드라이브로서 노출되는 블랍을 블랍 저장소에서 생성하는 단계 -지정된 기간 후에 만료되는 블랍 리스(blob lease)를 통해 상기 블랍에 애플리케이션을 위한 배타적 기록 액세스가 제공됨- 와,
    상기 가상 하드 드라이브를 장착하는 단계와,
    상기 가상 하드 드라이브에 대한 판독 및 기록 요청을 관리하는 단계 -드라이버가 상기 가상 하드 드라이브에 대한 모든 I/O 요청을 인터셉트하고 상기 I/O 요청을 상기 블랍 저장소의 상기 블랍으로 재라우팅하며, 추가 애플리케이션들이 상기 블랍에 저장된 데이터를 동시 판독할 수 있도록 하기 위해 상기 블랍의 스냅샷이 블랍 인터페이스를 통해 생성되고, 상기 I/O 요청 내의 애플리케이션 기록은 상기 애플리케이션에게 성공을 알려주기 전에 상기 블랍 저장소에 알려짐(committed)-
    를 포함하는 컴퓨터 구현 방법.
  2. 제 1 항에 있어서,
    상기 하나 이상의 애플리케이션은 가상 머신 상에서 실행되고, 상기 판독 및 기록 요청은 상기 클라우드 컴퓨팅 플랫폼에서 드라이버에 의해 관리되는
    컴퓨터 구현 방법.
  3. 제 1 항에 있어서,
    상기 가상 하드 드라이브를 N-T-F-S 파일 시스템 또는 F-A-T 파일 시스템 중 하나로서 포맷하는 단계를 더 포함하는
    컴퓨터 구현 방법.
  4. 제 1 항에 있어서,
    상기 드라이버에 이용 가능한 블랍 인터페이스를 통해 블랍이 액세스되고 조작되는
    컴퓨터 구현 방법.
  5. 제 1 항에 있어서,
    소정 애플리케이션에 이용 가능한 블랍 인터페이스를 통해 블랍이 업로드, 다운로드, 또는 디버그되는
    컴퓨터 구현 방법.
  6. 제 1 항에 있어서,
    상기 애플리케이션은, 다른 애플리케이션이 상기 블랍으로부터 판독하도록 허용되는 동안, 상기 리스의 유효성에 기초해서 조건부로 상기 블랍에 기록하는
    컴퓨터 구현 방법.
  7. 클라우드 컴퓨팅 플랫폼에서 블랍으로서 가상 하드 드라이브를 관리하는 방법을 수행하기 위한 명령어를 저장하는 하나 이상의 컴퓨터 판독가능 저장 매체로서,
    상기 방법은
    상기 클라우드 컴퓨팅 플랫폼에서 가상 머신 상에서 실행되는 애플리케이션으로부터 가상 하드 드라이브에 대한 I/O 요청을 수신하는 단계와,
    드라이버에 의해 상기 가상 하드 드라이브에 대한 I/O 요청을 관리하는 단계 -상기 드라이버는 블랍 저장소 내의 블랍에 대한 중복 I/O 요청을 정리하여, 비중복 I/O 요청을 상기 블랍 저장소 내의 상기 블랍에 동시에(in parallel) 송신함- 와,
    상기 가상 머신 상의 로컬 캐시를 기록 요청으로 업데이트하는 단계 -상기 로컬 캐시에 대한 상기 업데이트는 확인 응답이 상기 블랍 저장소로부터 수신된 후 또는 상기 블랍 저장소에 대한 기록과 동시에 발생하지만, 상기 업데이트는 상기 확인 응답이 상기 블랍 저장소로부터 수신된 후 이용 가능함-
    를 포함하는 컴퓨터 판독가능 저장 매체.
  8. 제 7 항에 있어서,
    상기 클라우드 컴퓨팅 플랫폼에 여전히 존재하는 동일 데이터에 대한 더 오래된 스테일 기록(stale writes)과 이전 기록을 중복 기록하는 것을 방지하기 위해 일련 번호가 상기 I/O 요청과 관련되는
    컴퓨터 판독가능 저장 매체.
  9. 제 8 항에 있어서,
    상기 드라이버는 상기 블랍 저장소에 의해 확인되지 않은 이전 기록을 무시하기 위해 상기 일련 번호를 증가시키는
    컴퓨터 판독가능 저장 매체.
  10. 제 7 항에 있어서,
    상기 로컬 캐시의 전부 또는 일부는 상기 캐시 및 블랍이 일치하지 않을 경우에 애플리케이션 또는 가상 머신 고장 후 비워지는
    컴퓨터 판독가능 저장 매체.
  11. 블랍으로서 가상 하드 드라이브를 관리하는 클라우드 컴퓨팅 플랫폼으로서,
    애플리케이션을 구현하는 가상 머신을 실행하도록 구성되며, 데이터를 판독 및 기록하기 위해 가상 하드 드라이브에 액세스하는 패브릭 컴퓨터와,
    상기 애플리케이션에 가상 하드 드라이브로서 노출되는 블랍을 저장하도록 구성되는 블랍 저장소 -상기 블랍은 상기 애플리케이션에 의해 지정된 기간 동안 리스되고, 상기 애플리케이션은 상기 블랍에 대응하는 상기 가상 하드 드라이브에 대한 액세스를 유지하기 위해 상기 리스를 연속적으로 갱신하도록 구성되며, 다른 애플리케이션 프로그래밍 인터페이스 및 시맨틱스가 상기 블랍 및 가상 하드 드라이브로의 액세스를 가능하게 함-
    를 포함하는 클라우드 컴퓨팅 플랫폼.
  12. 제 11 항에 있어서,
    상기 패브릭 컴퓨터는 블랍 데이터를 캐시하는 로컬 캐시, 블랍 명령을 저장하는 블랍 라이브러리, 및 가상 하드 드라이브 I/O 명령어를 블랍 명령으로 번역하는 드라이버를 포함하는
    클라우드 컴퓨팅 플랫폼.
  13. 제 12 항에 있어서,
    상기 로컬 캐시는 각 데이터 블록을 사용하기 전에 에러가 상기 데이터 블록에 존재하는지를 판단하기 위해 각 데이터 블록에 대한 순환 중복 검사 코드를 저장하는
    클라우드 컴퓨팅 플랫폼.
  14. 제 13 항에 있어서,
    상기 로컬 캐시 및 상기 블랍은 상기 애플리케이션이 상기 로컬 캐시에 저장된 상기 데이터를 사용하여 요청을 완료할 수 있도록 동기화되는
    클라우드 컴퓨팅 플랫폼.
  15. 삭제
KR1020127012547A 2009-11-16 2010-10-29 블랍으로서 가상 하드 드라이브의 관리 KR101795087B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/619,307 US8516137B2 (en) 2009-11-16 2009-11-16 Managing virtual hard drives as blobs
US12/619,307 2009-11-16
PCT/US2010/054701 WO2011059811A2 (en) 2009-11-16 2010-10-29 Managing virtual hard drives as blobs

Publications (2)

Publication Number Publication Date
KR20120104209A KR20120104209A (ko) 2012-09-20
KR101795087B1 true KR101795087B1 (ko) 2017-11-07

Family

ID=43992327

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127012547A KR101795087B1 (ko) 2009-11-16 2010-10-29 블랍으로서 가상 하드 드라이브의 관리

Country Status (7)

Country Link
US (3) US8516137B2 (ko)
EP (1) EP2502149B1 (ko)
JP (1) JP5632010B2 (ko)
KR (1) KR101795087B1 (ko)
CN (1) CN102612686B (ko)
HK (1) HK1173527A1 (ko)
WO (1) WO2011059811A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220071493A (ko) 2020-11-24 2022-05-31 삼성에스디에스 주식회사 로컬 캐시를 이용한 네트워크 드라이브 관리 방법 및 장치

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9842006B2 (en) * 2009-12-01 2017-12-12 International Business Machines Corporation Application processing allocation in a computing system
US8429651B2 (en) * 2010-01-20 2013-04-23 International Business Machines Corporation Enablement and acceleration of live and near-live migration of virtual machines and their associated storage across networks
US8392838B2 (en) * 2010-01-27 2013-03-05 Vmware, Inc. Accessing virtual disk content of a virtual machine using a control virtual machine
US9274821B2 (en) 2010-01-27 2016-03-01 Vmware, Inc. Independent access to virtual machine desktop content
US9009219B2 (en) 2010-01-27 2015-04-14 Vmware, Inc. Native viewer use for service results from a remote desktop
US9477531B2 (en) * 2010-01-27 2016-10-25 Vmware, Inc. Accessing virtual disk content of a virtual machine without running a virtual desktop
US8671265B2 (en) 2010-03-05 2014-03-11 Solidfire, Inc. Distributed data storage system providing de-duplication of data using block identifiers
US8122282B2 (en) * 2010-03-12 2012-02-21 International Business Machines Corporation Starting virtual instances within a cloud computing environment
US8306948B2 (en) * 2010-05-03 2012-11-06 Panzura, Inc. Global deduplication file system
US8477610B2 (en) * 2010-05-31 2013-07-02 Microsoft Corporation Applying policies to schedule network bandwidth among virtual machines
US8863117B2 (en) * 2010-07-19 2014-10-14 International Business Machines Corporation Optimizing a file system interface in a virtualized computing environment
CN103621145B (zh) 2011-04-20 2017-03-29 英派尔科技开发有限公司 移动内容体验质量的实时全参考计算方法、装置
US9208201B2 (en) * 2011-06-03 2015-12-08 Apple Inc. Cloud storage
US10983747B2 (en) 2011-07-15 2021-04-20 Vmware, Inc. Remote desktop mirroring
US10976981B2 (en) 2011-07-15 2021-04-13 Vmware, Inc. Remote desktop exporting
US9002790B2 (en) 2011-09-14 2015-04-07 Google Inc. Hosted storage locking
US8468138B1 (en) * 2011-12-02 2013-06-18 International Business Machines Corporation Managing redundant immutable files using deduplication in storage clouds
US9270736B2 (en) 2011-12-14 2016-02-23 Empire Technology Development Llc Semantic cache cloud services for connected devices
US8694986B2 (en) 2011-12-15 2014-04-08 Microsoft Corporation Providing update notifications on distributed application objects
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9158568B2 (en) 2012-01-30 2015-10-13 Hewlett-Packard Development Company, L.P. Input/output operations at a virtual block device of a storage server
US20130219069A1 (en) * 2012-02-22 2013-08-22 Computer Associates Think, Inc. System and method for managing virtual hard disks in cloud environments
US9098325B2 (en) 2012-02-28 2015-08-04 Hewlett-Packard Development Company, L.P. Persistent volume at an offset of a virtual block device of a storage server
US9112935B2 (en) 2012-03-05 2015-08-18 Microsoft Technology Licensing, Llc Manipulating binary large objects
US9471591B2 (en) 2012-05-02 2016-10-18 Microsoft Technology Licensing, Llc Iterative disk upload based on differencing disk format
US8924969B2 (en) * 2012-06-07 2014-12-30 Microsoft Corporation Virtual machine image write leasing
US9830271B2 (en) * 2012-07-25 2017-11-28 Vmware, Inc. Transparent virtualization of cloud storage
US10002001B1 (en) * 2013-02-19 2018-06-19 Amazon Technologies, Inc. Importing a virtual disk image into a compute service environment
US9032402B2 (en) 2013-03-14 2015-05-12 Vmware, Inc. Managing an independent virtual disk
US9436494B2 (en) * 2013-03-14 2016-09-06 Vmware, Inc. Preserving an independent virtual disk
WO2014147657A1 (en) 2013-03-18 2014-09-25 Hitachi, Ltd. Compound storage system and storage control method
US9747314B2 (en) * 2013-07-25 2017-08-29 Rackspace Us, Inc. Normalized searchable cloud layer
US9619248B2 (en) * 2013-08-30 2017-04-11 Bluedata Software, Inc. Configuration manager and method for configuring a host system for processing a processing job in a virtual data-processing environment
US9542216B2 (en) 2013-10-15 2017-01-10 At&T Intellectual Property I, L.P. Richer model of cloud app markets
WO2015094367A1 (en) * 2013-12-20 2015-06-25 Halliburton Energy Services Inc. Dynamic determination of a single equivalent circulating density ("ecd") using multiple ecds along a wellbore
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US11094015B2 (en) 2014-07-11 2021-08-17 BMLL Technologies, Ltd. Data access and processing system
CN104219290B (zh) * 2014-08-19 2017-05-31 南京邮电大学 一种多模块云应用弹性配置方法
JP2016057876A (ja) * 2014-09-10 2016-04-21 富士通株式会社 情報処理装置、入出力制御プログラム、及び入出力制御方法
US10248705B2 (en) 2015-01-30 2019-04-02 Dropbox, Inc. Storage constrained synchronization of shared content items
US10831715B2 (en) 2015-01-30 2020-11-10 Dropbox, Inc. Selective downloading of shared content items in a constrained synchronization system
US9563638B2 (en) 2015-01-30 2017-02-07 Dropbox, Inc. Selective downloading of shared content items in a constrained synchronization system
US9361349B1 (en) 2015-01-30 2016-06-07 Dropbox, Inc. Storage constrained synchronization of shared content items
US9413824B1 (en) 2015-01-30 2016-08-09 Dropbox, Inc. Storage constrained synchronization of content items based on predicted user access to shared content items using retention scoring
US9185164B1 (en) * 2015-01-30 2015-11-10 Dropbox, Inc. Idle state triggered constrained synchronization of shared content items
US9891938B2 (en) 2015-06-26 2018-02-13 Vmware, Inc. Modifying an instance catalog to perform operations
CN105183382B (zh) * 2015-09-09 2018-06-12 浪潮(北京)电子信息产业有限公司 一种数据块保护方法及装置
US10282092B1 (en) * 2015-09-09 2019-05-07 Citigroup Technology, Inc. Methods and systems for creating and maintaining a library of virtual hard disks
US20170220592A1 (en) * 2016-02-01 2017-08-03 Microsoft Technology Licensing, Llc Modular data operations system
US10095506B2 (en) 2016-02-12 2018-10-09 Nutanix, Inc. Virtualized file server data sharing
US10719532B2 (en) 2016-04-25 2020-07-21 Dropbox, Inc. Storage constrained synchronization engine
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US10049145B2 (en) 2016-04-25 2018-08-14 Dropbox, Inc. Storage constrained synchronization engine
US11218418B2 (en) 2016-05-20 2022-01-04 Nutanix, Inc. Scalable leadership election in a multi-processing computing environment
US10178173B2 (en) * 2016-08-02 2019-01-08 International Business Machines Corporation Cloud service utilization
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US10360057B1 (en) * 2016-09-22 2019-07-23 Amazon Technologies, Inc. Network-accessible volume creation and leasing
US11562034B2 (en) * 2016-12-02 2023-01-24 Nutanix, Inc. Transparent referrals for distributed file servers
US11568073B2 (en) 2016-12-02 2023-01-31 Nutanix, Inc. Handling permissions for virtualized file servers
US11294777B2 (en) 2016-12-05 2022-04-05 Nutanix, Inc. Disaster recovery for distributed file servers, including metadata fixers
US11281484B2 (en) 2016-12-06 2022-03-22 Nutanix, Inc. Virtualized server systems and methods including scaling of file system virtual machines
US11288239B2 (en) 2016-12-06 2022-03-29 Nutanix, Inc. Cloning virtualized file servers
US10366104B2 (en) * 2017-06-21 2019-07-30 Microsoft Technology Licensing, Llc Providing instant and distributed access to a source blob via copy-on-read blobs and link blobs
US10372371B2 (en) * 2017-09-14 2019-08-06 International Business Machines Corporation Dynamic data relocation using cloud based ranks
US10789135B2 (en) * 2018-02-07 2020-09-29 Microsoft Technology Licensing, Llc Protection of infrastructure-as-a-service workloads in public cloud
US11086826B2 (en) 2018-04-30 2021-08-10 Nutanix, Inc. Virtualized server systems and methods including domain joining techniques
US11221796B2 (en) * 2018-05-01 2022-01-11 Microsoft Technology Licensing, Llc Redirection of I/O requests from local to remote storage locations to improve network performance and data redundancy
US10802715B2 (en) 2018-09-21 2020-10-13 Microsoft Technology Licensing, Llc Mounting a drive to multiple computing systems
US11770447B2 (en) 2018-10-31 2023-09-26 Nutanix, Inc. Managing high-availability file servers
US10990315B2 (en) 2018-12-03 2021-04-27 International Business Machines Corporation Write transfer resource management in a data storage system
US11768809B2 (en) 2020-05-08 2023-09-26 Nutanix, Inc. Managing incremental snapshots for fast leader node bring-up
US11397545B1 (en) 2021-01-20 2022-07-26 Pure Storage, Inc. Emulating persistent reservations in a cloud-based storage system
US12131192B2 (en) 2021-03-18 2024-10-29 Nutanix, Inc. Scope-based distributed lock infrastructure for virtualized file server
CN113946286A (zh) * 2021-08-17 2022-01-18 丝路信息港云计算科技有限公司 一种云节点块级缓存方法,存储装置及服务器
US20230066137A1 (en) 2021-08-19 2023-03-02 Nutanix, Inc. User interfaces for disaster recovery of distributed file servers
US12117972B2 (en) 2021-08-19 2024-10-15 Nutanix, Inc. File server managers and systems for managing virtualized file servers

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040133544A1 (en) 2002-12-19 2004-07-08 Rick Kiessig System and method for managing content with event driven actions to facilitate workflow and other features
US20050256972A1 (en) 2004-05-11 2005-11-17 Hewlett-Packard Development Company, L.P. Mirroring storage interface
US20080317068A1 (en) 2007-06-22 2008-12-25 Microsoft Corporation Server-assisted and peer-to-peer synchronization

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3269849B2 (ja) 1992-05-29 2002-04-02 株式会社日立製作所 並列データベース処理システムとその検索方法
US6181837B1 (en) 1994-11-18 2001-01-30 The Chase Manhattan Bank, N.A. Electronic check image storage and retrieval system
JP3703874B2 (ja) * 1995-03-17 2005-10-05 富士通株式会社 ファイル管理方法及びファイル管理装置
JPH10124437A (ja) * 1996-10-24 1998-05-15 Iiguruzu Kk インタフェース制御装置
US5999943A (en) 1997-10-31 1999-12-07 Oracle Corporation Lob locators
US6061690A (en) 1997-10-31 2000-05-09 Oracle Corporation Apparatus and method for storage of object collections in a database system
US6119123A (en) 1997-12-02 2000-09-12 U.S. Philips Corporation Apparatus and method for optimizing keyframe and blob retrieval and storage
US6275831B1 (en) 1997-12-16 2001-08-14 Starfish Software, Inc. Data processing environment with methods providing contemporaneous synchronization of two or more clients
US6415373B1 (en) 1997-12-24 2002-07-02 Avid Technology, Inc. Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner
US6484161B1 (en) 1999-03-31 2002-11-19 Verizon Laboratories Inc. Method and system for performing online data queries in a distributed computer system
US6393415B1 (en) 1999-03-31 2002-05-21 Verizon Laboratories Inc. Adaptive partitioning techniques in performing query requests and request routing
WO2001011486A2 (en) 1999-08-05 2001-02-15 Oracle Corporation Internet file system
US6571282B1 (en) 1999-08-31 2003-05-27 Accenture Llp Block-based communication in a communication services patterns environment
US6615219B1 (en) 1999-12-29 2003-09-02 Unisys Corporation Database management system and method for databases having large objects
US6714968B1 (en) 2000-02-09 2004-03-30 Mitch Prust Method and system for seamless access to a remote storage server utilizing multiple access interfaces executing on the remote server
US6735623B1 (en) 2000-02-09 2004-05-11 Mitch Prust Method and system for accessing a remote storage area
CA2374073A1 (en) * 2000-03-20 2001-09-27 Curagen Corporation Novel polypeptides and nucleic acids encoding same
US6523036B1 (en) 2000-08-01 2003-02-18 Dantz Development Corporation Internet database system
JP4087072B2 (ja) 2001-01-25 2008-05-14 株式会社日立製作所 ストレージシステム及び仮想プライベートボリューム制御方法
US7330717B2 (en) 2001-02-23 2008-02-12 Lucent Technologies Inc. Rule-based system and method for managing the provisioning of user applications on limited-resource and/or wireless devices
US7139280B2 (en) 2001-07-30 2006-11-21 Yishay Mansour Buffer management policy for shared memory switches
US20030028640A1 (en) 2001-07-30 2003-02-06 Vishal Malik Peer-to-peer distributed mechanism
US7127507B1 (en) 2001-09-27 2006-10-24 Sprint Communications Company L.P. Method and apparatus for network-level monitoring of queue-based messaging systems
US7158964B2 (en) 2001-12-12 2007-01-02 Intel Corporation Queue management
US7046687B1 (en) 2002-01-16 2006-05-16 Tau Networks Configurable virtual output queues in a scalable switching system
JP4036661B2 (ja) * 2002-03-01 2008-01-23 日本電信電話株式会社 複製データ管理方法、ノード、プログラム、記録媒体
US7082455B2 (en) 2002-04-23 2006-07-25 International Business Machines Corporation Method and apparatus of parameter passing of structured data for stored procedures in a content management system
US7673000B2 (en) 2003-04-28 2010-03-02 Microsoft Corporation Email service
US20040215724A1 (en) 2003-04-28 2004-10-28 Microsoft Corporation Email service error recovery
US6973654B1 (en) 2003-05-27 2005-12-06 Microsoft Corporation Systems and methods for the repartitioning of data
US20060241968A1 (en) 2003-06-04 2006-10-26 Hollebeek Robert J Ndma scalable archive hardware/software architecture for load balancing, independent processing, and querying of records
JP2005070965A (ja) * 2003-08-21 2005-03-17 Fujitsu Ltd 情報処理方法、情報処理システム及び情報処理装置
US7199725B2 (en) 2003-11-06 2007-04-03 International Business Machines Corporation Radio frequency identification aiding the visually impaired with synchronous sound skins
US9075851B2 (en) 2003-12-09 2015-07-07 Emc Corporation Method and apparatus for data retention in a storage system
US7484210B2 (en) 2004-02-17 2009-01-27 Intel Corporation Apparatus and method for a generic, extensible and efficient data manager for virtual peripheral component interconnect devices (VPCIDs)
US7366735B2 (en) 2004-04-09 2008-04-29 Oracle International Corporation Efficient extraction of XML content stored in a LOB
JP2005346426A (ja) * 2004-06-03 2005-12-15 Hitachi Ltd データ共有ディスク装置
US20060155781A1 (en) 2005-01-10 2006-07-13 Microsoft Corporation Systems and methods for structuring distributed fault-tolerant systems
US7814129B2 (en) 2005-03-11 2010-10-12 Ross Neil Williams Method and apparatus for storing data with reduced redundancy using data clusters
US7730101B2 (en) 2005-06-10 2010-06-01 Microsoft Corporation Implementing a tree data storage structure in a distributed environment
US20070011147A1 (en) 2005-06-22 2007-01-11 Affiniti, Inc. Systems and methods for retrieving data
US8270410B2 (en) 2005-08-04 2012-09-18 Microsoft Corporation Sampling techniques
US7730099B2 (en) 2005-08-19 2010-06-01 Opnet Technologies, Inc. Storage and retrieval of richly typed hierarchical network models
US8429630B2 (en) * 2005-09-15 2013-04-23 Ca, Inc. Globally distributed utility computing cloud
US7558859B2 (en) 2005-10-17 2009-07-07 Microsoft Corporation Peer-to-peer auction based data distribution
JP2007219609A (ja) 2006-02-14 2007-08-30 Hitachi Ltd スナップショット管理装置及び方法
JP4240062B2 (ja) 2006-05-31 2009-03-18 日本電気株式会社 計算機システムおよび性能計測方法ならびに管理サーバ装置
US7698258B2 (en) 2006-06-02 2010-04-13 Microsoft Corporation Searchable storage system
US7441113B2 (en) 2006-07-10 2008-10-21 Devicevm, Inc. Method and apparatus for virtualization of appliances
US20080021865A1 (en) 2006-07-20 2008-01-24 International Business Machines Corporation Method, system, and computer program product for dynamically determining data placement
US7552130B2 (en) * 2006-10-17 2009-06-23 International Business Machines Corporation Optimal data storage and access for clustered data in a relational database
US7945786B2 (en) 2007-03-30 2011-05-17 Intel Corporation Method and apparatus to re-create trust model after sleep state
US7730044B2 (en) 2007-04-02 2010-06-01 Bmc Software, Inc. Log data store and assembler for large objects in database system
US8706914B2 (en) * 2007-04-23 2014-04-22 David D. Duchesneau Computing infrastructure
US7849354B2 (en) 2007-06-12 2010-12-07 Microsoft Corporation Gracefully degradable versioned storage systems
JP2009134601A (ja) * 2007-11-30 2009-06-18 Fujitsu Ltd ディスクアクセス方式切替装置
US7991740B2 (en) * 2008-03-04 2011-08-02 Apple Inc. Synchronization server process
WO2009123630A1 (en) 2008-04-02 2009-10-08 Hewlett-Packard Development Company, L.P. Disk drive data encryption
CN101272221B (zh) * 2008-05-04 2010-08-18 中兴通讯股份有限公司 一种文件数据的传输、接收方法及装置
KR20110063819A (ko) 2008-09-04 2011-06-14 파워웨이브 코그니션, 인크. 모바일, 브로드밴드 라우팅가능 인터넷용 애플리케이션
US8307177B2 (en) * 2008-09-05 2012-11-06 Commvault Systems, Inc. Systems and methods for management of virtualization data
US8620884B2 (en) 2008-10-24 2013-12-31 Microsoft Corporation Scalable blob storage integrated with scalable structured storage
US8495036B2 (en) 2008-10-24 2013-07-23 Microsoft Corporation Blob manipulation in an integrated structured storage system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040133544A1 (en) 2002-12-19 2004-07-08 Rick Kiessig System and method for managing content with event driven actions to facilitate workflow and other features
US20050256972A1 (en) 2004-05-11 2005-11-17 Hewlett-Packard Development Company, L.P. Mirroring storage interface
US20080317068A1 (en) 2007-06-22 2008-12-25 Microsoft Corporation Server-assisted and peer-to-peer synchronization

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220071493A (ko) 2020-11-24 2022-05-31 삼성에스디에스 주식회사 로컬 캐시를 이용한 네트워크 드라이브 관리 방법 및 장치

Also Published As

Publication number Publication date
JP5632010B2 (ja) 2014-11-26
US10628086B2 (en) 2020-04-21
US20110119668A1 (en) 2011-05-19
US9639299B2 (en) 2017-05-02
WO2011059811A3 (en) 2011-08-18
CN102612686A (zh) 2012-07-25
US20130305005A1 (en) 2013-11-14
US8516137B2 (en) 2013-08-20
WO2011059811A2 (en) 2011-05-19
CN102612686B (zh) 2015-04-01
EP2502149B1 (en) 2021-02-17
US20170235525A1 (en) 2017-08-17
KR20120104209A (ko) 2012-09-20
JP2013511104A (ja) 2013-03-28
HK1173527A1 (en) 2013-05-16
EP2502149A2 (en) 2012-09-26
EP2502149A4 (en) 2014-06-11

Similar Documents

Publication Publication Date Title
KR101795087B1 (ko) 블랍으로서 가상 하드 드라이브의 관리
US11061865B2 (en) Block allocation for low latency file systems
CN114341792B (zh) 存储集群之间的数据分区切换
US11537482B2 (en) Method and apparatus for reading and writing committed data
US10802921B2 (en) Systems and methods including committing a note to master and slave copies of a data volume based on sequential operation numbers
US8484161B2 (en) Live file system migration
US10831720B2 (en) Cloud storage distributed file system
US10545927B2 (en) File system mode switching in a distributed storage service
US10630772B2 (en) Maintaining global namespace consistency for a distributed filesystem
US10817498B2 (en) Distributed transactions in cloud storage with hierarchical namespace
US10140312B2 (en) Low latency distributed storage service
JP2020527264A (ja) 異種ターゲットに対して使用するために分散型データソースからの変更データをキャプチャするためのシステムおよび方法
US20180089223A1 (en) Quick initialization of data regions in a distributed storage system
US20190132415A1 (en) Active data management by flexible routing system and methods of an accelerated application-oriented middleware layer
US9934110B2 (en) Methods for detecting out-of-order sequencing during journal recovery and devices thereof
US10303562B2 (en) Using metadata extracted from proxy files to access data stored in secondary storage
US11038960B1 (en) Stream-based shared storage system

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant