KR20130095194A - 데이터의 저장 및 전송의 최적화 - Google Patents

데이터의 저장 및 전송의 최적화 Download PDF

Info

Publication number
KR20130095194A
KR20130095194A KR1020127032957A KR20127032957A KR20130095194A KR 20130095194 A KR20130095194 A KR 20130095194A KR 1020127032957 A KR1020127032957 A KR 1020127032957A KR 20127032957 A KR20127032957 A KR 20127032957A KR 20130095194 A KR20130095194 A KR 20130095194A
Authority
KR
South Korea
Prior art keywords
data
file
storage server
storage
file data
Prior art date
Application number
KR1020127032957A
Other languages
English (en)
Inventor
에일린 씨 브라운
토마스 이 졸리
조그-토마스 페닝
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20130095194A publication Critical patent/KR20130095194A/ko

Links

Images

Classifications

    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/173Customisation support for file systems, e.g. localisation, multi-language support, personalisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 발명은 데이터 저장 및 전송의 엔드-투-엔드(end-to-end) 최적화를 위한 방법, 시스템, 디바이스 및 컴퓨터 프로그램 제품에 관한 것이다. 데이터가 어떻게 데이터 스토어 내에 저장되었는지에 대한 세부사항이 클라이언트 및 애플리케이션에 노출된다. 클라이언트 및 애플리케이션은 요청된 데이터의 중복 프로세싱을 제거하도록 데이터 스토어 내에 실제로 저장된 것과 같은 데이터를 획득하고자 데이터 스토어에 대한 요청을 만들 수 있다. 데이터 스토어 내에서의 데이터 압축 및 중복제거는 LAN 또는 WAN 상에서 전송되는 데이터의 대기를 감소시키고 효율성을 증가시키도록 레버리지된다.

Description

데이터의 저장 및 전송의 최적화{OPTIMIZATION OF STORAGE AND TRANSMISSION OF DATA}
스토리지 최적화 기능은 파일 서버 및 데이터 스토리지 시장에서 경쟁력을 갖기 위해 점점 더 중요해지고 있다. 네트워크 트래픽 최적화 또한 현존하는 네트워크 인프라구조에 통합되는 어플라이언스(appliance) 및 컴퓨터 및 네트워크 환경에서 중요하며, 네트워크 트래픽의 실시간 최적화를 수행하면 유용한 이점들이 제공될 수 있다.
컴퓨터 상에서 생성, 전송 및 저장되는 데이터의 양은 빠른 속도로 계속 증가하고 있다. 고객과 경쟁사들은 미사용 데이터에 요구되는 스토리지를 감소시키도록 데이터 최적화 기술을 사용하는 것을 트렌드화 하고 있다. 예를 들어, 데이터를 저장하는데 필요한 공간을 감소시키도록 데이터가 압축될 수 있으며 저장된 데이터 내의 리던던시(redundancy)가 감소될 수 있다. 유사한 기술들 또한 네트워크 상에서 전송되는 데이터량을 감소시키며, 따라서 LAN 및 WAN 대역폭 비용을 감소시키고 애플리케이션 대기(latency)를 줄이도록 적용된다. 그러나, 데이터 저장과 데이터 전송에 대한 현재의 솔루션은 대체로 분리되어 있고 별개이며, 통합된 솔루션은 알려지지 않았다. 저장 및 전송 기술이 분리되어 있기 때문에, 데이터 저장과 데이터 전송을 함께 고려할 경우 리던던시, 비호환성 및 불필요한 오버헤드(overhead)가 존재한다.
예시로서, 서버(즉, 데이터 스토어) 상에 저장된 파일은 데이터 스토리지 서버 상에 저장될 때 별개의 세그먼트들(예컨대, 청크(chunk))로 압축 및 저장될 수 있다. 클라이언트가 파일이 서버로부터 클라이언트로 전송될 것을 요청하면, 서버는 파일을 클라이언트에게 전송하기 전에 파일을 재구성하기 위해서 파일 청크들을 재조립하고 파일을 압축해제해야 한다.
유사하게, (예컨대, 네트워크 상의) 전송 대역폭, 대기, 또는 전송 비용을 감소시키기 위해서, 네트워크 에이전트는 파일을 전송하기 전에 파일을 획득하여 다시 압축하고, 압축된 파일을 다른 엔드포인트로 전송하며, 그 다음 전송 경로의 다른 엔드에서 압축된 파일을 압축해제할 수 있다.
스토리지, 전송 프로토콜, 파일 시스템 API, 데이터 스토어, 서버, 클라이언트, 애플리케이션 및 클라우드(cloud)를 포함하는 기술들과 통합된 데이터 최적화 툴(tool)이 유용할 수 있다. 이러한 툴과 기술들은 데이터 이동 및 전송 프로토콜에 의해 레버리지(leverage)될 수 있는 미사용 데이터에 대해 최적화된 스토리지를 전달함으로써 현존하는 단편적이고 개별적인 데이터 저장 및 데이터 전송 솔루션들을 확장 및 개선할 수 있다.
본 발명은 데이터 저장 및 전송의 엔드-투-엔드(end-to-end) 최적화를 위한 방법, 시스템, 디바이스 및 컴퓨터 프로그램 제품에 관한 것이다. 예를 들어, 본 명세서에서 기술된 실시예들은 데이터 저장 및 데이터 전송 모두에 대한 최적화 및 효율의 레버리지 및 증가를 제공한다.
일 예시적인 실시예는 데이터 스토리지 서버 내의 스토리지 최적화의 세부사항을 클라이언트에게 노출시키는 방법을 제공한다. 이 방법은 데이터 스토리지 서버 상의 파일 데이터의 저장을 기술하는 메타데이터에 액세스하는 단계를 포함하며, 이때 파일 데이터는 데이터 스토리지 서버 상에 파일 데이터의 본래 형태(native form)와는 구별되는 형태로 저장된다. 메타데이터는 데이터 스토리지 서버 상에 저장된 파일 데이터의 저장 형태를 노출시킨다.
클라이언트는 스토리지 서버에 파일 데이터에 대한 요청을 전송할 수 있고, 클라이언트는 데이터 스토리지 서버로부터 파일 데이터, 데이터 스토리지 서버 상의 파일 데이터의 저장을 기술하는 추가적인 메타데이터, 및/또는 파일 데이터의 적어도 일부분을 나타내는 데이터를 포함하는 정보를 수신할 수 있다.
다른 예시적인 실시예는 데이터 스토리지 서버 내의 스토리지 최적화의 세부사항을 클라이언트에 노출시키는 것을 제공한다. 이 방법은 데이터 스토리지 서버 상의 파일 데이터의 저장을 기술하는 메타데이터를 전송하는 단계를 포함한다. 이 파일 데이터는 파일 데이터의 본래 형태와는 구별되는 형태로 데이터 스토리지 서버 상에 저장되며, 메타데이터는 데이터 스토리지 서버 상에 저장된 파일 데이터의 저장 형태를 노출시킨다.
데이터 스토리지 서버는 컴퓨팅 시스템으로부터 파일 데이터에 대한 요청을 수신하며, 데이터 스토리지 서버는 파일 데이터, 데이터 스토리지 서버 상의 파일 데이터의 저장을 기술하는 추가적인 메타데이터, 및/또는 파일 데이터의 적어도 일부분을 나타내는 데이터를 포함하는 정보를 전송한다.
다른 예시적인 실시예는 데이터 스토리지 서버 내의 스토리지 최적화의 세부사항을 클라이언트에 노출시키는 컴퓨터 프로그램 제품을 제공한다. 이러한 컴퓨터 프로그램 제품은, 그 중에서도, 컴퓨터 시스템으로부터 파일 데이터에 대한 요청을 데이터 스토리지 서버로 전송하고, 데이터 스토리지 서버 정보로부터 데이터 스토리지 서버 상의 파일 데이터의 저장을 기술하는 정보를 포함하는 정보를 수신하기 위한 컴퓨터 실행가능한 명령어들을 포함한다.
본 발명의 추가적인 특징들 및 장점들이 아래의 설명에서 기술되거나 부분적으로는 설명으로부터 명확해질 것이며, 또는 본 발명을 실시함으로써 알 수 있게 될 것이다. 본 발명의 특징들 및 장점들은 첨부된 특허청구범위에서 특별히 개시된 수단 및 조합을 통해서 인식되고 획득될 수 있다. 본 발명의 이러한 특징들과 다른 특징들이 아래의 설명과 첨부된 특허청구범위로부터 보다 명백해질 것이며, 또는 아래에 개시된 바와 같이 본 발명을 실시함으로써 알 수 있게 될 것이다.
본 요약부는 아래의 상세한 설명에서 추가로 기술된 개념들의 선택을 간략화된 형태로 소개하고자 제공된 것이다. 본 요약부는 청구사항의 중요 특징 및 기본 특징을 식별하기 위한 것이 아니며, 청구사항의 범주를 결정하는 것을 돕고자 사용되는 것도 아니다.
본 발명의 전술된 장점들 및 다른 장점들이 획득될 수 있는 방식을 기술하기 위해서, 앞서 간략하게 설명된 본 발명에 대한 보다 구체적인 설명이 본 발명의 특정한 실시예들을 참조로 하여 주어질 것이며, 이러한 실시예들은 첨부된 도면에 도시되었다. 이러한 도면들은 단지 본 발명의 전형적인 실시예들을 도시한 것으로, 본 발명의 범주를 제한하는 것으로 간주되서는 안되며, 본 발명은 첨부된 도면들을 사용하여 더욱 특별하고 구체적으로 기술 및 설명될 것이다.
도 1은 데이터의 저장 및 전송의 엔드-투-엔드 최적화의 예시를 도시한 도면.
도 2는 데이터의 저장 및 전송의 엔드-투-엔드 최적화를 위한 예시적인 아키텍처를 도시한 도면.
도 3은 클라이언트의 관점에서 본, 데이터 스토리지 서버 내에서의 스토리지 최적화의 세부사항을 클라이언트에게 노출하는 예시적인 방법을 도시한 도면.
도 4는 서버의 관점에서 본, 데이터 스토리지 서버 내에서의 스토리지 최적화의 세부사항을 클라이언트에게 노출하는 예시적인 방법을 도시한 도면.
본 발명은 데이터의 저장 및 전송의 엔드-투-엔드 최적화를 위한 방법, 시스템, 디바이스 및 컴퓨터 프로그램 제품에 걸친 것이다. 예를 들어, 본 발명에 기술된 실시예들은 데이터의 저장 및 전송 모두에 대한 최적화 및 효율의 레버리지(leverage)를 위해 제공된다. 본 발명은 데이터 스토리지 서버 내에서의 스토리지 최적화의 세부사항을 클라이언트에게 노출하기 위한 방법, 시스템 및 컴퓨터 프로그램 제품에 걸친다. 본 발명의 실시예들은 다양한 컴퓨터 하드웨어 또는 모듈을 포함하는 범용 컴퓨터 또는 전용 컴퓨터를 포함할 수 있으며, 이는 아래에서 보다 상세하게 기술될 것이다.
일 예시적인 실시예는 데이터 스토리지 서버 내의 스토리지 최적화의 세부사항을 클라이언트에게 노출하는 방법을 제공한다. 이 방법은 데이터 스토리지 서버 상의 파일 데이터의 저장을 기술하는 메타데이터에 액세스하는 단계를 포함하며, 이때 파일 데이터는 데이터 스토리지 서버 상에 파일 데이터의 본래 형태와는 구별되는 형태로 저장된다. 메타데이터는 데이터 스토리지 서버 상에 저장된 파일 데이터의 저장 형태를 노출시킨다.
클라이언트는 스토리지 서버에 파일 데이터에 대한 요청을 전송할 수 있고, 클라이언트는 데이터 스토리지 서버로부터 파일 데이터, 데이터 스토리지 서버 상의 파일 데이터의 저장을 기술하는 추가적인 메타데이터, 및/또는 파일 데이터의 적어도 일부분을 나타내는 데이터를 포함하는 정보를 수신할 수 있다.
다른 예시적인 실시예는 데이터 스토리지 서버 내의 스토리지 최적화의 세부사항을 클라이언트에 노출시키는 것을 제공한다. 이 방법은 데이터 스토리지 서버 상의 파일 데이터의 저장을 기술하는 메타데이터를 전송하는 단계를 포함한다. 이 파일 데이터는 파일 데이터의 본래 형태와는 구별되는 형태로 데이터 스토리지 서버 상에 저장되며, 메타데이터는 데이터 스토리지 서버 상에 저장된 파일 데이터의 저장 형태를 노출시킨다.
데이터 스토리지 서버는 컴퓨팅 시스템으로부터 파일 데이터에 대한 요청을 수신하며, 데이터 스토리지 서버는 파일 데이터, 데이터 스토리지 서버 상의 파일 데이터의 저장을 기술하는 추가적인 메타데이터, 및/또는 파일 데이터의 적어도 일부분을 나타내는 데이터를 포함하는 정보를 전송한다.
다른 예시적인 실시예는 데이터 스토리지 서버 내에서의 스토리지 최적화의 세부사항을 클라이언트에 노출시키는 컴퓨터 프로그램 제품을 제공한다. 이러한 컴퓨터 프로그램 제품은, 그 중에서도, 컴퓨터 시스템으로부터 파일 데이터에 대한 요청을 데이터 스토리지 서버로 전송하고, 데이터 스토리지 서버 정보로부터 데이터 스토리지 서버 상의 파일 데이터의 저장을 기술하는 정보를 포함하는 정보를 수신하기 위한 컴퓨터 실행가능한 명령어들을 포함한다.
본 발명의 실시예들은 예컨대 하나 이상의 프로세서 및 시스템 메모리와 같은 컴퓨터 하드웨어를 포함하는 전용 또는 범용 컴퓨터를 포함 또는 활용할 수 있으며, 이는 아래에서 보다 자세하게 개시되었다. 본 발명의 범주 내의 실시예들은 또한 컴퓨터 실행가능한 명령어들 및/또는 데이터 구조들을 실행 또는 저장하는 물리적인 컴퓨터 판독가능한 매체 및 그 외의 컴퓨터 판독가능한 매체를 포함한다. 이러한 컴퓨터 판독가능한 매체는 범용 또는 전용 컴퓨터 시스템에 의해 액세스될 수 있는 임의의 입수가능한 매체일 수 있다. 컴퓨터 실행가능한 명령어들을 저장하는 컴퓨터 판독가능한 매체는 물리적 스토리지 매체일 수 있다. 컴퓨터 실행가능한 명령어들을 실행하는 컴퓨터 판독가능한 매체는 전송매체일 수 있다. 따라서, 본 발명의 실시예들은 컴퓨터 스토리지 매체 및 전송 매체라는 적어도 두 개의 구별되는 서로 다른 유형의 컴퓨터 판독가능한 매체를 포함할 수 있으며, 이는 단지 예시적인 것으로, 이로써 제한하기 위한 것은 아니다.
컴퓨터 스토리지 매체는, RAM, ROM, EEPROM, CD-ROM 또는 다른 광디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스, 또는 컴퓨터 실행가능한 명령어 또는 데이터 구조의 형태로 원하는 프로그램 코드 수단을 저장하는데에 사용될 수 있으며 범용 또는 전용 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다.
컴퓨터 프로그램 제품은 컴퓨터 실행가능한 명령어들이 인코딩된 하나 이상의 컴퓨터 판독가능한 스토리지 매체를 포함할 수 있으며, 이러한 컴퓨터 실행가능한 명령어들이 하나 이상의 컴퓨터 프로세서 상에서 실행되면, 전술된 바와 같은 방법, 단계들 및 작업들을 수행한다.
본 명세서에서 "네트워크"라는 용어는 컴퓨터 시스템 및/또는 모듈 및/또는 다른 전자 디바이스 사이에서 전자 데이터의 전송을 가능케 하는 하나 이상의 데이터 링크로서 정의된다. 네트워크 또는 다른 통신 접속(유선, 무선, 또는 유선 또는 무선의 조합) 상에서 정보가 컴퓨터로 전송 또는 제공될 때, 컴퓨터는 이러한 접속을 적절하게 전송 매체로서 보게 된다. 전송 매체는 컴퓨터 실행가능한 명령어 또는 데이터 구조의 형태로 원하는 프로그램 코드 수단을 실행하는데에 사용될 수 있으며 범용 또는 전용 컴퓨터에 의해 액세스될 수 있는 데이터 링크 및/또는 네트워크를 포함할 수 있다. 이들의 조합 역시 컴퓨터 판독가능한 매체의 범주 내에 포함되어야만 한다.
또한, 컴퓨터 실행가능한 명령어 또는 데이터 구조의 형태인 프로그램 코드 수단이 다양한 컴퓨터 시스템 구성요소들에 도달하면, 자동으로 전송 매체로부터 컴퓨터 스토리지 매체로 (또는 역방향으로) 전송될 수 있다. 예를 들어, 네트워크 또는 데이터 링크 상에서 수신된 컴퓨터 실행가능한 명령어 또는 데이터 구조는 네트워크 인터페이스 모듈(예컨대, "NIC") 내의 RAM에서 버퍼링될 수 있으며, 결과적으로 컴퓨터 시스템 RAM 및/또는 컴퓨터 시스템에서 보다 덜 휘발성인 컴퓨터 스토리지 매체로 전송된다. 따라서, 컴퓨터 스토리지 매체가 전송 매체도 활용하는 (또는 전송 매체를 주로 활용하는) 컴퓨터 시스템 구성요소 내에 포함될 수 있음이 이해되어야 한다.
컴퓨터 실행가능한 명령어들은 예를 들어 프로세서에서 실행되었을 때 범용 컴퓨터, 전용 컴퓨터, 또는 전용 프로세싱 디바이스로 하여금 소정의 기능 또는 기능들의 그룹을 수행하게 하는 명령어들 및 데이터를 포함한다. 컴퓨터 실행가능한 명령어들은, 예를 들어 어셈블리 언어, 또는 소스 코드와 같은 이진의 중간 포맷 명령어(binaries, intermediate format instructions)일 수 있다. 청구사항이 구조적 특성 및/또는 방법론적 작업들에 대해 특정하게 기술되었지만, 첨부된 특허청구범위에서 정의되는 청구사항이 반드시 기술된 특성들 또는 전술된 작업들로 한정되는 것은 아님을 이해해야 한다. 오히려, 기술된 특성들 및 작업들은 특허청구범위를 구현하는 예시적인 형태로 개시된 것이다.
당업자는 본 발명이 개인 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨터, 메시지 프로세서, 휴대용 디바이스, 멀티 프로세서 시스템, 마이크로프로세서 기반의 또는 프로그램가능한 소비자 전자기기, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 휴대폰, PDA, 삐삐, 라우터, 스위치 등을 포함하는 다수의 유형의 컴퓨터 시스템 구성을 갖는 네트워크 컴퓨팅 환경에서 실시될 수 있음을 이해할 것이다. 본 발명은 또한 (유선 데이터 링크, 무선 데이터 링크, 또는 유선과 무선 데이터 링크들의 조합에 의해) 네트워크를 통해 링크된 로컬 및 원거리 컴퓨터 시스템 모두에서 태스크를 수행하는 분산 시스템 환경에서도 실시될 수 있다. 분산 시스템 환경에서, 프로그램 모듈은 로컬 및 원거리 메모리 스토리지 디바이스 모두에 위치될 수 있다.
본 명세서에서 사용되는 "모듈" 또는 "구성요소"라는 용어는 컴퓨팅 시스템 상에서 실행하는 소프트웨어 객체 또는 루틴을 지칭할 수 있다. 본 명세서에서 기술되는 서로 다른 구성요소, 모듈, 엔진 및 서비스는 (예컨대, 개별적인 스레드로서) 컴퓨팅 시스템 상에서 실행하는 객체 또는 프로세스로서 구현될 수 있다. 본 명세서에 기술된 시스템 및 방법이 바람직하게는 소프트웨어에서 구현되지만, 하드웨어 또는 소프트웨어와 하드웨어의 조합에서의 구현 역시 가능하며 고려될 수 있다. 본 설명부에서, "컴퓨팅 엔티티"는 본 명세서에서 앞서 정의된 바와 같은 임의의 컴퓨팅 시스템이거나, 또는 컴퓨팅 시스템 상에서 작동하는 임의의 모듈 또는 모듈들의 조합일 수도 있다.
도 1은 본 발명이 동작할 수 있는 예시적인 환경을 도시한다. 도 1은 클라이언트(110), 데이터 스토어(120) 및 클라이언트(110)와 데이터 스토어(120) 사이의 데이터 전송(130)을 도시한다. 데이터는 다수의 서로 다른 형태로 데이터 스토어(120) 상에 저장될 수 있다.
본 명세서에서 제시되는 실시예들은 도 1에 도시된 것과 같은 환경에서의 데이터의 저장(140) 및 전송(130)을 통합 및 최적화하기 위한 방법, 시스템 및 컴퓨터 프로그램 제품을 기술한다.
파일은 자신의 본래 형태(native form)로, 인접한 파일로서 데이터 스토어 내에 저장될 수 있다. 예를 들면, 파일 A(150)는 애플리케이션에 의해 제시되거나 기대될 수 있는 파일의 모든 비트, 바이트 및 데이터를 포함하는 본래의 포맷 또는 변하지 않은 포맷으로 데이터 스토어(120) 내에 저장된다. 데이터는 또한 다양한 다른 포맷으로 저장될 수도 있다. 예를 들어, 데이터는 필요한 저장 공간을 감소시키도록 압축된 형태로 저장될 수 있고 데이터는 데이터 스토어 상에 저장된 데이터를 중복제거(de-duplicate)하고 리던던시(redundancy)를 감소시키는 기술을 사용하여 저장될 수 있다.
데이터는 파일이 개별적이고 구별되는 데이터의 서브셋들로 나뉘어진 청크(chunk) 또는 블록으로 데이터 스토어 상에 저장될 수 있다. 예를 들어, 파일은 데이터 스토어 내에 청크(160)(C1 내지 Cn)로서 저장될 수 있다. 파일로부터의 데이터의 서브셋인 청크는, 때때로 블록으로도 지칭될 수 있으며, 본 명세서에서는 청크와 블록이라는 두 가지 용어가 상호교환가능하게 사용되었다. (본 명세서에서 사용되는 "파일(file)"이라는 용어는 임의의 논리적으로 관련된 데이터의 그룹 또는 데이터량을 나타낸다.)
데이터 스토어는 데이터의 저장을 최적화하기 위해 파일을 청크들로 나누기 위한 알고리즘을 구비할 수 있다. 예를 들어, 파일을 데이터 스토어 내에 보다 효율적이고 조밀한 방식으로 저장하기 위해서 파일은 청크(160)(C1 내지 Cn)로 나뉘어질 수 있다. 청크들로 나뉘어진 파일은 또한 파일 내의 리던던시를 감소시킴으로써 보다 효율적으로 저장될 수도 있다. 예를 들어, 청크(C1)는 파일 내에서 1회 이상 발생할 수 있다. 파일을 청크들로 분리함으로써, 청크(C1)는 데이터 스토어 내에 오직 한 번만 기록되면 되고, 파일 내에서의 청크(C1)의 각 반복적인 발생은 청크(C1)에 대한 참조 또는 포인터에 의해 대체될 수 있다.
청크 또는 블록들이 반드시 임의의 고정된 길이를 가질 필요는 없으며, 하나의 전체 파일을 포함하는 임의의 길이, 임의의 데이터량, 또는 파일의 임의의 일부분일 수 있음을 이해할 수 있을 것이다. 파일의 청크 또는 블록들은 파일 내에서 임의의 길이 및/또는 오프셋일 수 있다. 파일을 청크 또는 블록들로 분할하는 것은 임의의 알고리즘 또는 기술에 따를 수 있으며, 청크들의 크기는 데이터가 지속될 또는 데이터가 전송될 전송 경로가 있는 데이터 스토어의 구체적인 고려사항들에 의해 영향을 받거나 지시될 수 있다.
데이터는 또한 압축된 포맷으로 데이터 스토어 내에 저장될 수도 있다. 예를 들어, 파일 C(170)는 압축된 포맷으로 저장되었으며, 이것은 압축되지 않은 오리지널 파일 데이터보다는 데이터 스토어 내에서 적은 저장 공간을 차지하는 파일 C(170)와 같은 파일을 생성하기 위한 압축 알고리즘을 이용하여 오리지널 파일이 압축된 것이다. 파일 및 데이터의 압축은 Lempel-Ziv(LZ), Lempel-Ziv-Welch(LZW) 및 MPEG 압축과 같이 당업계에서 잘 알려진 기술에 의해 수행될 수 있다.
압축과 청크화(또는 블록화)의 조합 또한 데이터 스토어 상에서 이용될 수 있다. 예를 들어, 파일은 청크들로 나뉘어질 수 있고 그 다음 압축되어 압축된 청크(180)(CH1 내지 CHn)로서 저장된다.
다른 최적화가 데이터 스토어 내에 저장된 데이터 및 파일들을 중복제거(de-duplicate)함으로써 얻어질 수 있다. 중복제거는 데이터 스토어 내에 저장되는 별개의 파일들 내에서 발생할 수 있는 동일한 파일들 또는 데이터의 동일한 부분들을 식별하고, 중복된 파일들 또는 데이터 부분들 중 하나를 제외한 전부를 파일 또는 데이터의 일부의 참조 카피에 대한 참조로 대체한다. 파일들을 중복제거함으로써, 특정한 파일 또는 데이터의 일부 중 오직 하나의 카피만이 데이터 스토어에 저장될 것이고, 그에 따라 복수의 중복 파일들 또는 데이터 부분들이 차지할 수 있는 저장 공간을 절약하게 된다.
중복제거는 또한 파일 청크 레벨에서도 수행될 수 있다. 예를 들어, 만약 둘 이상의 파일들이 데이터 청크들로 청크화되었을 때, 복제 청크들이 데이터 스토어에서 중복 청크들의 카피에 대한 참조로 대체될 수 있다. 예를 들어, 파일이 데이터 스토어(120) 상에서 청크(C1)로서 저장되고 다른 청크들에 대한 참조들이 데이터 스토어(120) 내에서 청크 포맷으로 저장된 다른 파일들과 연관하여 이미 저장되었을 수 있다. 예를 들어, 파일 X가 청크(C1 내지 Cn)에 대한 참조로서 저장되었을 수 있고, 파일 Y가 청크(CH1, C1, C2)에 대한 참조로서 저장되었을 수 있으며, 파일 Z는 청크(C1) 및 압축된 청크(CH2 내지 CHn)에 대한 참조들의 리스트로서 저장될 수 있다.
파일 데이터의 중복제거, 청크화 및 압축은 조합으로 수행될 수도 있다. 예를 들어, 파일은 각각이 압축되어 있는 하나 이상의 청크들로서 데이터 스토어 상에 저장될 수 있다. 파일 데이터는 또한 일부 파일들은 압축되지 않은 채 저장되고, 일부 파일들은 압축된 채 저장되고, 일부 파일들은 청크화된 포맷으로 저장되며, 일부 파일들은 일부 청크들이 압축되고 일부 청크들은 압축되지 않은 상태로서 저장되는 임의의 조합으로 저장될 수 있다.
일반적으로, 클라이언트가 데이터 스토어로부터 데이터를 요청하면, 클라이언트는 전체 파일 또는 파일의 일부 논리적 부분에 대한 데이터를 요청할 것이다. 예를 들어, 클라이언트는 파일 시스템을 통해 get(fileX)를 요청할 수 있거나 또는 파일 시스템을 통해 getFileBytes(fileX; bytes=100-1000)를 요청할 수 있다. 파일 또는 파일의 일부가 데이터 스토어(120)로부터 클라이언트(110)로 전송되면(130), 클라이언트 또는 애플리케이션에 의해 기대되는 포맷으로 요청된 데이터를 재조립하고 클라이언트에게 전송하기 위해서 압축된 데이터를 압축해제하거나 데이터의 청크들을 재조립하기 위한 책임이 데이터 스토어에 지워진다.
본 명세서에 기술된 실시예들은 데이터 스토어 상에 저장된 데이터의 저장 세부사항과 관련된 정보를 클라이언트에게 제공함으로써 효율성과 최적화를 획득할 수 있도록 클라이언트가 데이터 스토어 상의 파일 데이터의 저장과 관련된 정보를 요청하거나 정보에 액세스할 수 있게 한다. 예를 들어, 클라이언트(110)는 데이터 스토어(120)에게 클라이언트에게 fileX가 데이터 스토어 상에서 어떻게 저장되었는지를 알려줄 것을 요청할 수 있다. 데이터 스토어는 클라이언트에게 fileX가 압축된 청크(CH1, CH3)로서 저장되었다고 알려줄 수 있다. 압축된 청크를 클라이언트에게 압축된 형태로 전송하는 것이 보다 효율적일 수 있기 때문에, 클라이언트는 데이터 스토어가 클라이언트에게 파일을 전송하기 전에 청크(CH1, CH3)를 압축해제하고 파일을 재조립해야만 하는 get(fileX) 대신 클라이언트에게 청크(CH1, CH3)를 전송할 것을 데이터 스토어에 요청할 수 있다.
또한 실시예들은 데이터 스토어 상에 저장된 데이터의 저장 세부사항들과 관련된 정보를 클라이언트에게 제공함으로써 효율성과 최적화를 획득할 수 있도록 클라이언트가 데이터 스토어 상의 파일 데이터의 저장과 관련된 정보에 액세스할 수 있게 한다. 예를 들어, 클라이언트(110)는 데이터 스토어 상에 fileX가 어떻게 저장되었는지를 식별하는 국부적으로 캐싱(cached) 또는 저장된 정보에 액세스할 수 있다. 이러한 정보는 이전의 요청들에 의해서 획득되었을 수 있거나 또는 클라이언트와 데이터 스토어 사이의 이전의 거래들의 코스에 걸쳐 캐싱되었을 수 있다.
만약 클라이언트가 데이터 스토어(120)보다 낮은 대기 또는 전송 비용을 갖는 저장 위치로부터 입수가능하거나 국부적으로 저장된 청크(CH1)의 카피를 이미 가지고 있다면 추가적인 효율성이 획득될 수 있다. 이러한 경우에, 클라이언트는 데이터 스토어로부터 오직 getChunk(CH3)만을 요청할 수 있다.
본 명세서에 기술된 실시예들은 클라이언트와 데이터 스토어 및/또는 중앙 서버 사이의 중복 LAN 및/또는 WAN 트래픽을 감소시킨다. 본 명세서의 실시예들은 다양한 네트워크 파일 시스템 프로토콜에 대한 저장 및 전송 최적화를 가능케 한다. 예를 들어, SMB 및 HTTP 프로토콜 모두가 기술된 디바이스 및 기술들에 의해서 확장 및 개선될 수 있다.
표준 파일 시스템 프로토콜(예컨대, SMB 및 HTTP)은 클라이언트가 데이터 스토어로부터 데이터를 요청하는 것을 가능케 하는 API를 제공하도록 확장될 수 있으며, 데이터 스토어에 의해 데이터가 제공되면 파일 또는 데이터 부분이 데이터 스토어 상에 어떻게 저장되었는지에 대한 세부사항을 노출시킨다. 예를 들어, 클라이언트(110)는 fileX가 데이터 스토어(120) 상에 어떻게 저장되었는지와 관련하여 데이터 스토어(120)로부터 데이터를 요청할 수 있다. 예를 들어, 클라이언트(110)는 getStoreageDetails(fileX)와 같은 파일 시스템 확장을 호출할 수 있고, 데이터 스토어는 {fileX:= chunks CH1, CH3}로 응답할 수 있다. fileX가 데이터 스토어 상에 어떻게 저장되었는지에 대한 세부사항에 대해 인지하면, 클라이언트는 데이터 스토어로부터 fileX와 연관된 데이터를 어떻게 요청할 것인지를 결정할 수 있다. 클라이언트는 표준 방식으로 전체 파일을 가공되지 않은 또는 본래의 포맷으로 요청할 수 있다. 본 명세서의 실시예들은, 그에 상반되게 클라이언트들이 데이터 스토어에 압축된 청크(CH3)를 클라이언트에게 전송하도록 요청하는 것을 가능케 한다.
일 실시예에서, 도 3에 도시된 바와 같이, 클라이언트는 데이터 스토리지 서버 상의 파일 데이터 저장을 기술하는 메타데이터에 액세스할 수 있으며(310), 이때 파일 데이터는 파일 데이터의 본래 형태와는 구별되는 형태로 데이터 스토리지 서버 상에 저장되고, 메타데이터는 데이터 스토리지 서버 상에 저장된 파일 데이터의 저장 형태를 노출시킨다. 데이터 스토리지 서버 상의 파일 데이터의 저장을 기술하는 메타데이터는 파일 데이터가 데이터 스토어 상에서 어떻게 청크화되었는지, 파일 데이터가 데이터 스토어 상에서 어떻게 압축되었는지, 또는 파일 데이터가 데이터 스토어 상에서 어떻게 청크화 및 압축되었는지를 기술하는 정보일 수 있다.
파일이 어떻게 청크화되었는지에 대한 세부사항은 파일의 어느 부분이 서버 상에 저장된 각 청크에 상응하는지를 포함할 수 있다. 청크화에 대한 세부사항은 또한 하나의 파일을 구성하는 청크들 각각의 암호화 해시(hash)를 포함할 수 있다. 청크들의 암호화 해시는 클라이언트, 애플리케이션 및 데이터 스토어가 각 청크를 고유하게 식별할 수 있게 한다. 이러한 정보를 이용하여, 클라이언트, 애플리케이션 또는 다른 데이터 스토어는 자신의 암호화 해시에 의해 식별되는 것과 동일한 청크를 이미 가지고 있는지를 식별할 수 있다.
파일 또는 데이터의 일부(예컨대, 청크)가 어떻게 압축되었는지에 대한 세부사항은 데이터를 고유하기 식별하기 위해 원래의 압축되지 않은 데이터의 암호화 해시를 포함할 수 있다. 이것은 또한 압축된 데이터를 고유하게 식별하기 위해서 압축된 데이터의 암호화 해시도 포함할 수 있다. 세부사항은 (압축된 데이터를 데이터 스토어로부터 다른 엔드포인트로 전송한 후에 압축해제하기 위해 필요할 수 있는) 압축을 수행하는데에 사용되는 압축의 유형 또한 포함할 수 있다. 압축의 유형들은 예를 들어 LZ, LZW, MPEG 등을 포함할 수 있다.
메타데이터에 액세스함으로써, 클라이언트는 데이터 스토어 상에 저장된 데이터의 세부사항들을 인지하게 될 수 있다. 클라이언트가 데이터 스토어 상의 데이터 저장에 대한 세부사항들을 인지하면, 클라이언트는 스토리지 서버에 파일 데이터에 대한 요청을 전송할 수 있다(320). 본 명세서에 기술된 실시예들을 사용함으로써, 클라이언트는 전체 파일을 요청할 필요가 없으며, 클라이언트는 오직 자신이 필요한 파일의 청크들만을 요청할 수 있거나 또는 파일의 압축된 버전 또는 파일의 청크의 압축된 버전을 요청할 수 있다. 파일 데이터에 대한 요청을 전송한 후에(320), 클라이언트는 스토리지 서버로부터 요청된 파일 데이터, 스토리지 서버 상의 파일 데이터의 저장을 기술하는 추가적인 메타데이터, 및/또는 파일 데이터의 적어도 일부분을 나타내는 데이터를 포함하는 정보를 수신할 수 있다(330).
파일 데이터 정보의 수신(330)은 파일 데이터, 데이터 스토리지 서버 상의 파일 데이터의 저장을 기술하는 추가적인 메타데이터, 및/또는 파일 데이터의 적어도 일부분을 나타내는 데이터 중 적어도 하나를 포함할 수 있다. 이러한 정보는 클라이언트 측의 레거시 애플리케이션이 기대할 수 있기 때문에, 표준 포맷의 파일 데이터를 포함할 수 있다. 이 정보는 데이터 스토어 상의 파일 데이터의 저장을 기술하는 정보를 포함할 수 있다. 이 정보는 파일 데이터의 적어도 일부분을 나타내는 데이터를 포함할 수 있다.
파일 데이터의 저장을 기술하는 메타데이터에 액세스하는 것(310)은 파일 데이터의 저장을 기술하는 정보에 대한 요청을 서버에 전송하는 것을 포함할 수 있다. 이러한 요청은 클라이언트가 파일, 파일 데이터, 또는 데이터의 일부분이 데이터 스토어 상에 어떻게 저장되었는지에 대한 세부사항을 요청하기 위해 파일 시스템(또는 네트워크 파일 시스템)을 호출하는 것을 가능케 하는 파일 시스템 확장의 형태일 수 있다.
이와 달리, 파일 데이터의 저장을 기술하는 메타데이터에 액세스하는 것(310)은, 파일 데이터의 저장을 기술하는 정보를 위해 로컬 스토어에 액세스하는 것을 포함할 수 있다. 로컬 스토어 내의 정보는 이전의 요청에 응답하여 앞서 파일 서버로부터 수신되었을 수 있거나 또는 진행중인 일련의 파일 시스템 거래의 일부로서 국부적으로 캐싱되었을 수 있다. 파일 데이터의 저장을 기술하는 메타데이터에 액세스하는 것(310)은 (정상 파일 시스템 API의 확장에 의해 소개되는) 파일 시스템 호출을 포함할 수 있으며, 이는 데이터 스토리지 서버 상에 저장된 파일 데이터의 저장 형태를 노출하거나 어떻게 국부적으로 캐싱된 카피들이 클라이언트에게 국부적으로 저장되는지에 대한 세부사항을 반환한다.
예를 들어, 데이터 스토리지 서버 상의 파일 데이터의 저장을 기술하는 메타데이터는 데이터 스토리지 서버 상의 파일 데이터의 중복제거의 결과로 얻어진 파일 데이터의 저장을 기술하는 데이터를 포함할 수 있다. 메타데이터는 파일을 구성하는 청크들의 청크 리스트를 포함할 수 있으며, 파일을 구성하는 청크들 각각의 암호화 해시들의 해시 리스트를 포함할 수 있다. 그 다음 클라이언트는 반환된 청크 리스트 또는 해시 리스트를 하나 이상의 청크가 전송되기 위한 요청을 만드는데에 사용할 수 있거나 또는 어떠한 청크가 데이터 스토어로부터 요청되어야 할지를 결정하기 위해서 해시 리스트를 이미 수신되거나 국부적으로 캐싱된 청크들의 리스트와 비교하는데에 사용할 수 있다.
예를 들어, 파일을 다운로드할 때, 클라이언트는 파일 서버로부터 해시 리스트를 요청할 수 있고 또한 피어(peer) 클라이언트 및/또는 피어 파일 서버에게 원하는 데이터에 대해 질문할 수 있다. 클라이언트는 질문에 대한 응답으로서 해시 리스트를 포함하는 정보를 수신할 수 있다(330). 해시 리스트는 데이터가 데이터 스토어 상에 저장된 것처럼 나타낼 수 있고, 클라이언트는 자신이 필요로 하는 데이터의 일부분(예컨대, 청크)만을 요청하는 것이 가능할 수 있다. 데이터는 또한 피어가 원하는 데이터를 구비하며, 피어와 클라이언트 사이의 데이터 전송을 위한 전송 비용 또는 대기가 클라이언트와 데이터 스토어 사이의 전송 비용 또는 대기보다 더 낮은 경우에 피어로부터 판독될 수 있다.
데이터 스토리지 서버 상의 파일 데이터의 저장을 기술하는 메타데이터는 또한 파일 데이터의 압축된 버전을 기술하는 데이터 또는 파일 데이터의 압축된 서브셋을 기술하는 데이터를 포함할 수 있다. 이러한 정보를 이용하여, 클라이언트는 파일 데이터의 압축된 서브셋에 대한 요청을 만들 수 있거나 또는 파일 데이터의 압축된 버전에 대한 요청을 만들 수 있다. 이것은 파일 데이터에 대한 요청에 응답하여 데이터를 전송하기 전에 파일 데이터 또는 파일 데이터의 서브셋을 압축해제할 필요가 없는 데이터 스토어의 효율성을 제공할 것이다.
일 실시예에서, 클라이언트는 전체 파일 또는 파일의 일부분에 대한 요청을 포함할 수 있는 파일 데이터에 대한 요청을 전송할 수 있다(320). 예를 들어, 파일 get(fileX)에 대한 요청 또는 파일 getFileBytes(fileX; bytes=100-1000)의 일부분에 대한 요청이 파일 시스템을 통해 데이터 스토리지 서버로 전송될 수 있다. 이에 응답하여, 데이터 스토리지 서버는 파일 또는 파일의 일부분을 전송하는 것이 아니라, 요청된 파일 또는 파일의 일부분을 포함하는 아마도 서로 다른 형태의 데이터를 전송함으로써 응답할 수 있다.
예를 들어, 데이터 스토리지 서버는 요청된 파일 또는 요청된 파일의 일부분을 완전히 커버하는 압축된 청크들의 범위를 포함하는 파일 데이터를 반환할 수 있다. 또한, 데이터 스토리지 서버는 반환된 청크들이 요청된 데이터를 (그리고 아마도 요청된 것보다 더 많은 데이터를) 포함하는지를 식별하는 청크들에 따른 파일 스토리지 메타데이터를 반환할 수 있다.
또한, 만약 반환된 청크들이 압축되었다면, 데이터 스토리지 서버는 반환된 데이터(또는 데이터의 청크들이) 압축되었는지를 식별하고 어떤 압축 기술 또는 알고리즘이 데이터를 압축하는데에 사용되었는지 또는 어떤 압축해제 기술 또는 알고리즘이 데이터를 압축해제하는데에 사용되어야만 하는지를 식별할 수 있는 파일 스토리지 메타데이터를 반환할 수 있다. 특정한 압축 또는 압축해제 기술을 식별하는 메타데이터를 반환하지 않고 압축된 데이터 및/또는 압축된 청크들이 반환되는 경우에서 가정될 수 있는 디폴트 압축 또는 압축해제 기술들이 존재할 수 있음을 이해할 수 있을 것이다.
그 다음 클라이언트는 이러한 데이터 및/또는 메타데이터를 데이터 스토리지 서버로부터 수신할 수 있고(330), 요청된 데이터의 재구성을 위해 클라이언트 측에서 적절한 압축해제 및/또는 청크 재조립을 수행할 수 있다. 이것은 클라이언트로의 전송 및/또는 클라이언트에 의한 수신에 앞서 데이터 스토리지 서버가 클라이언트에 의해 실제로 요청되는 구체적인 데이터를 압축해제 및/또는 조립해야 하는 것보다 데이터 전송 비용 또는 전송 대기 측면에서 더욱 효율적일 수 있음을 이해할 수 있을 것이다.
파일 스토리지 메타데이터는 청크들 또는 압축된 청크들의 암호화 해시 리스트 및 어느 청크가 파일 데이터의 어느 부분을 포함하는지와 관련된 식별을 포함할 수 있다. 청크들 또는 압축된 청크들의 암호화 해시 리스트 및 어느 청크가 파일 데이터의 어느 부분을 포함하는지와 관련된 식별을 이용함으로써, 클라이언트는 압축된 데이터를 적절하게 압축해제할 수 있고/있거나 클라이언트가 원하는 또는 클라이언트에 의해 요청된 데이터의 범위 전체를 포함하거나 또는 더 많은 범위를 포함하는 청크들을 재조립할 수 있다.
파일 저장 및 전송에 대한 통합된 접근법을 위한 예시적인 아키텍처가 도 2에 도시되었다. 클라이언트 및 서버(210)는 최적화 인식 애플리케이션 또는 서비스를 포함할 수 있다. 클라이언트 및 서버는 파일 시스템 애플리케이션 프로그래밍 인터페이스를 포함할 수 있는 파일 시스템 인터페이스(API)(250)와 통신할 수 있고, 또한 최적화 API를 포함할 수 있다. 파일 시스템 API는 모든 정상 호출과 정상 파일 시스템 및/또는 네트워크 파일 시스템의 기능들을 포함할 수 있다. 최적화 API는 데이터 스토어 상에 저장된 데이터(260, 270, 280)의 저장 세부사항들을 노출시키는 확장된 API 요소(예컨대, 기능 호출 및 인터페이스)를 포함한다.
파일 시스템 인터페이스(250)는 클라이언트가 데이터 스토리지 서버 상의 파일 데이터의 저장을 기술하는 메타데이터를 요청하는 것을 가능케 한다. 파일 시스템 인터페이스(250)는 또한 클라이언트가 데이터 스토리지 서버로부터 다수의 포맷으로 데이터를 요청하는 것을 가능케 한다. 클라이언트는 파일을 가공하지 않은 또는 본래의 포맷으로 온전하게 획득하기 위해서 정상 파일 시스템 API(예컨대, 표준 또는 레거시 파일 시스템 API)를 이용하여 데이터를 요청할 수 있다. 클라이언트는 또한 오직 서버 상에 저장된 것과 같은 파일의 압축된 형태로, 파일의 특정한 청크만을 요청하기 위해서 최적화 API를 이용하여 데이터를 요청할 수 있으며, 서버 상에 저장된 것과 같은 파일의 압축된 청크를 요청할 수 있다.
개선된 및/또는 확장된 파일 시스템 인터페이스(250)를 인식하지 못하는 클라이언트, 애플리케이션 및 서비스(220)는 레거시 파일 시스템 API의 모든 기능을 보존하는 파일 시스템 API을 호출함으로써 여전히 정상적으로, 변하지 않고 어떤 제약도 받지 않은 채로 동작할 수 있다.
최적화를 인식하는 클라이언트, 애플리케이션 및 서비스(230)는 본 명세서에서 기술된 실시예들의 모든 기능을 적용하도록 최적화 API를 호출할 수 있다. 최적화 인식 클라이언트, 애플리케이션 및 서비스는 데이터 스토어 또는 서버로부터 해시 리스트, 청크 리스트, 압축된 데이터 등을 요청할 수 있다. 예를 들어, 파일 foo.vhd는 청크 스토어/인덱스(270)를 포인팅하는 청크 리스트로서 데이터 스토어 상에 저장될 수 있다. 청크 스토어/인덱스는 청크(예컨대, 청크(160)(C1-Cn))를 포함할 수 있고, 압축된 청크(예컨대, 청크(180)(CH1-CHn))를 포함할 수 있으며, 중복제거 및 다른 파일 및 데이터 스토리지 최적화를 가능케 하는 저장된 청크들에 대한 참조, 포인터 및 인덱스를 포함할 수 있다.
클라이언트는 foo.vhd의 저장을 기술하는 최적화 API 메타데이터를 요청할 수 있고 foo.vhd이 어떻게 저장되었는지를 기술하는 메타데이터를 데이터 스토어로부터 수신할 수 있다. 클라이언트가 메타데이터에 액세스하면, 최적화 API를 통해서 스토리지 서버에 파일 데이터에 대한 요청을 전송할 수 있다. 요청은 파일의 본래 포맷으로 전체 파일에 대한 것일 수 있거나 또는 요청은 오직 청크 스토어/인덱스(270) 내에 저장된 파일의 하나 이상의 청크 또는 압축된 청크에 대한 것일 수 있다.
그 다음 클라이언트는 하나 이상의 파일 데이터, 데이터 스토리지 서버 상의 파일 데이터의 저장을 기술하는 추가적인 메타데이터 및 파일 데이터의 적어도 일부분을 나타내는 데이터를 포함하는 정보를 데이터 스토리지 서버로부터 수신할 수 있다. 클라이언트는 전체 파일을 그 본래 포맷으로 수신할 수 있다. 클라이언트는 데이터 스토어 내에서 압축된 전체 파일을 수신할 수 있다. 클라이언트는 파일의 청크를 수신할 수 있다. 클라이언트는 파일의 압축된 청크를 수신할 수 있다. 클라이언트는 파일 데이터의 저장을 기술하는 추가적인 메타데이터를 수신할 수 있으며, 파일 데이터의 일부를 포함하는 데이터를 수신할 수 있다. 클라이언트에 의해 수신된 응답은 클라이언트 및 애플리케이션이 데이터 스토어 내의 데이터의 저장에 대한 세부사항을 인식하는 요청을 만드는 것을 가능케 하는 확장된 최적화 API를 통해 만들어진 요청에 상응할 수 있다.
다른 예시에서, 파일 bar.doc은 최적화 서비스(240)에 의해 압축되고, 청크화되며 중복제거되었을 수 있고, 청크 스토어/인덱스(270)로의 포인터로서 저장되었을 수 있다. 본 명세서의 실시예에서, 클라이언트는 데이터 스토어 상의 bar.doc 저장을 기술하는 메타데이터를 요청할 수 있고, 데이터 스토어 상의 bar.doc 저장을 기술하는 정보를 수신한 후에 청크 스토어/인덱스(270) 내에 저장된 bar.doc의 하나 이상의 압축된 청크들에 대한 요청을 전송할 수 있다. 압축된 청크들이 클라이언트에 의해서 요청되면, 데이터 스토어는 bar.doc의 청크들을 압축해제할 필요가 없으며, 데이터 스토어는 bar.doc에 대한 클라이언트로부터의 요청에 응답하기 위해서 bar.doc의 청크들을 재조립할 필요도 없다.
다른 실시예에서, 데이터 스토리지 서버 내의 스토리지 최적화에 대한 세부사항을 클라이언트에게 노출하는 방법이 제공된다. 이 방법은 데이터 스토리지 서버 상의 파일 데이터의 저장을 기술하는 메타데이터를 전송하는 것을 포함하며, 이때 파일 데이터는 데이터 스토리지 서버 상에 파일 데이터의 본래의 형태와는 구별되는 형태로 저장되며, 메타데이터는 데이터 스토리지 서버 상에 저장된 파일 데이터의 저장 형태를 노출시킨다. 이 방법은 또한 컴퓨팅 시스템으로부터의 파일 데이터에 대한 요청을 데이터 스토리지 서버에서 수신하는 것을 포함한다. 이 방법은 또한 적어도 하나의 파일 데이터, 데이터 스토리지 서버 상의 파일 데이터의 저장을 기술하는 추가적인 메타데이터 및 파일 데이터의 적어도 일부분을 나타내는 데이터를 포함하는 정보를 데이터 스토리지 서버로부터 전송하는 것을 포함한다.
도 4에 도시된 바와 같이, 서버 또는 데이터 스토어는 데이터 스토리지 서버 또는 데이터 스토어 상의 파일 데이터의 저장을 기술하는 메타데이터를 전송할 수 있다(410). 파일 데이터는 파일 데이터의 본래의 형태와는 구별되는 형태로 데이터 스토리지 서버 상에 저장된다. 예를 들어, 파일 데이터는 청크화된 포맷, 압축된 포맷, 또는 압축 및 청크된 포맷의 조합으로 스토리지 서버 상에 저장될 수 있다.
전송된 메타데이터는 파일 데이터가 데이터 스토리지 서버 상에 저장된 저장 형태를 노출시키는 정보를 제공한다. 예를 들어, 메타데이터는 파일 데이터가 청크화된 포맷, 압축된 포맷, 또는 압축 및 청크된 포맷의 조합으로 저장되었음을 노출하는 정보를 포함할 수 있다. 메타데이터는 데이터 스토어 상에 저장된 파일 데이터를 구성하는 청크들의 해시 리스트를 포함하는 정보를 포함할 수 있다. 데이터 스토어 상에 저장된 청크들은 스토리지 서버 상에 저장된 파일 데이터 (및 다른 파일 데이터)의 중복제거의 결과로 얻어진 청크들일 수 있다.
메타데이터는 파일 데이터의 서브셋의 암호화 해시를 포함하는 정보를 포함할 수 있다. 데이터의 서브셋의 암호화 해시는 청크가 다른 청크와 동일한지를 식별하기 위해서 클라이언트, 전송 디바이스, 또는 다른 데이터 스토어에 의해 사용될 수 있다. 파일 데이터의 서브셋의 암호화 해시를 사용함으로써, 클라이언트, 전송 디바이스 및 다른 데이터 스토어들이 데이터의 특정한 서브셋이 국부적으로 입수가능하거나 더 낮은 대기 또는 전송 비용을 갖는 소스로부터 입수가능한지를 판정할 수 있다. 데이터의 동일한 서브셋들을 식별함으로써, 데이터의 특정한 서브셋이 요청 또는 전송되는 것이 필요한지가 판정될 수 있다.
파일 데이터의 서브셋은 전체 파일 또는 파일 데이터일 수 있다. 데이터의 서브셋은 또한 스토리지 최적화 또는 중복제거 체제의 일부로서 데이터 스토어에 의해 청크되었던 파일 데이터의 하나 이상의 청크일 수 있다.
데이터 스토리지 서버 또는 데이터 스토어 상의 파일 데이터의 저장을 기술하는 메타데이터는 또한 데이터 스토리지 서버 또는 데이터 스토어 상에서 파일 데이터의 일부 또는 전부가 압축되었음을 기술하는 데이터를 포함할 수 있다. 메타데이터는 파일 데이터의 청크화된 포맷의 하나 이상의 청크가 압축되었다는 정보를 포함할 수 있다. 파일 데이터의 일부분이 압축되었음을 나타내는 정보를 이용함으로써, 클라이언트는 클라이언트에 응답하여 파일 또는 파일의 하나 이상의 청크가 데이터 스토어 내에 저장된 것과 같은 청크화된 또는 압축된 포맷으로 반환될 것을 요청할 수 있다. 파일의 특정한 청크 또는 압축된 청크를 요청함으로써, 데이터 스토어가 요청한 클라이언트에게 파일 또는 파일의 청크를 전송하기 전에 파일 또는 파일의 청크를 압축해제할 필요가 없기 때문에 오버헤드가 감소된다.
도 4는 또한 컴퓨팅 시스템으로부터 파일 데이터에 대한 요청을 수신하는 것(420)을 도시한다. 요청은 클라이언트, 다른 스토리지 서버, 원격 컴퓨팅 시스템 상에서 실행하는 애플리케이션 등으로부터 수신될 수 있다. 이 요청은 표준 네트워크 파일 시스템 API를 확장 및/또는 개선하는 최적화 API에 상응하는 프로토콜을 이용하여 포맷화될 수 있다.
파일 데이터에 대한 요청은 요청된 파일의 특정한 청크를 식별하는 정보를 포함할 수 있다. 이 요청은 또한 요청된 파일 데이터가 압축된 포맷으로 전송되어야 하는지 압축해제된 포맷으로 전송되어야 하는지 여부를 식별하는 정보를 포함할 수 있다. 이 요청은 다른 청크들이 이미 국부적으로 입수가능하기 때문에 파일의 청크들의 서브셋만이 전송되어야만 한다는 정보를 포함할 수 있다.
도 4는 또한 적어도 하나의 파일 데이터, 데이터 스토리지 서버 상의 파일 데이터의 저장을 기술하는 추가적인 메타데이터 및 파일 데이터의 적어도 일부를 나타내는 데이터를 포함하는 파일 데이터 정보를 전송하는 것(430)을 도시한다. 파일 데이터 정보의 전송(430)은 파일 데이터에 대한 요청을 수신하는 것(420)에 응답한 것일 수 있다. 전술된 바와 같이, 파일 데이터에 대한 요청은 데이터 스토어에 청크로서 저장된 파일 데이터, 데이터 스토어에 압축된 포맷으로 저장된 파일 데이터, 또는 그 조합으로서 저장된 파일 데이터에 대한 것일 수 있다.
파일 데이터 정보의 전송(430)은 적어도 하나의 파일 데이터, 데이터 스토리지 서버 상의 파일 데이터의 저장을 기술하는 추가적인 메타데이터 및 파일 데이터의 적어도 일부분을 나타내는 데이터를 포함할 수 있다. 이 정보는 클라이언트에서의 레거시 애플리케이션이 기대할 수 있기 때문에 표준 포맷의 파일 데이터를 포함할 수 있다. 이 정보는 데이터 스토어 상의 파일 데이터의 저장을 기술하는 정보를 포함할 수 있다. 이 정보는 파일 데이터의 적어도 일부분을 나타내는 데이터를 포함할 수 있다.
수신된 요청은 클라이언트가 원하는 데이터의 식별된 특정한 청크를 가질 수 있다. 이러한 요청에 응답하여, 데이터 스토어는 요청 클라이언트에게 데이터의 요청된 청크를 전송할 수 있다. 수신된 요청은 클라이언트가 원하는 데이터의 식별된 특정한 압축된 서브셋들을 가질 수 있다. 이러한 요청에 응답하여, 데이터 스토어는 요청 클라이언트에게 요청된 데이터의 압축된 서브셋을 전송할 수 있다. 수신된 요청은 클라이언트가 원하는 데이터의 청크를 식별하는 식별된 특정한 암호화 해시를 가질 수 있다. 이러한 요청에 응답하여, 데이터 스토어는 요청 클라이언트에게 암호화 해시에 의해서 식별되는 특정한 데이터의 청크를 전송할 수 있다.
일 실시예에서, 데이터 스토어는 파일 또는 파일의 일부에 대한 요청을 수신(420)할 수 있다. 예를 들어, 데이터 스토어는 파일에 대한 get(fileX) 요청을 수신할 수 있거나 또는 파일의 일부에 대한 getFileBytes(fileX; bytes=100-1000) 요청을 수신할 수 있다. 데이터 스토어는 요청에 대한 응답을 구성할 수 있고 데이터 스토어 상에 저장된 파일 데이터를 포함하며 저장된 파일 데이터의 저장 세부사항을 식별하는 메타데이터를 포함하는 파일 데이터 정보를 전송할 수 있다. 예를 들어, 데이터 스토어는 청크 및 어느 청크가 요청된 데이터의 어느 부분을 포함하는지를 식별하는 메타데이터의 세트를 반환할 수 있다. 또한, 데이터 스토어는 압축된 포맷으로 반환된 데이터를 압축해제하기에 적절할 수 있는 압축해제 정보 및/또는 압축 정보를 포함하는 메타데이터를 반환할 수 있다.
일부 실시예에서, 메타데이터를 전송하는 이전 단계(410)를 수행하지 않고 요청이 수신될 수 있고(420) 파일 데이터 정보가 전송될 수 있다(430). 예를 들어, 최적화 인식 클라이언트는 간단하게 파일 데이터를 요청할 수 있고, 데이터 스토어는 요청을 수신할 수 있으며(420), 클라이언트가 반환된 파일 데이터 및/또는 메타데이터를 적절하게 다룰 수 있고 청크 및/또는 압축해제 데이터를 필요에 따라 적절하게 재조립할 수 있다고 가정했을 때 데이터 스토어는 응답을 구성하여 응답을 클라이언트에게 전송할 수 있다.
실시예들은 또한 데이터의 전송 및 저장에 대한 기록 경로 최적화를 도울 수 있다. 예를 들어, 파일에 대한 로컬 수정사항을 갖는 클라이언트는 수정된 파일의 해시 리스트 표현을 생성할 수 있다. 이러한 해시 리스트는 그 다음 데이터 스토리지 서버로 전송될 수 있다. 데이터 스토리지 서버는 그 다음 수정된 파일을 나타내는 수신된 해시 리스트를 식별된 파일 청크들이 저장된 데이터 스토리지 서버 상에서 유지되는 포괄적인 해시 리스트와 비교할 수 있다.
이러한 비교에 기초하여, 데이터 스토리지 서버는 이미 데이터 스토리지 서버 상에 저장된 청크들의 리스트를 클라이언트에게 반환할 수 있다. 데이터 스토리지 서버는 또한 데이터 스토리지 서버 상에 저장되지 않은 청크들의 리스트도 클라이언트에게 반환할 수 있다. 반환된 데이터 스토리지 서버 상에 저장된 청크들의 리스트(또는 저장되지 않은 청크들의 리스트)에 기초하여, 클라이언트는 데이터 스토리지 서버 상에 이미 저장되어 있지 않은 청크들을 데이터 스토리지 서버에 전송할 수 있다.
데이터 스토리지 서버 상에 이미 저장되어 있지 않은 수정된 파일을 나타내는 해시 리스트를 수신하고 수정된 파일의 청크들을 수신하면, 데이터 스토리지 서버는 이제 (서버 상에 이미 저장된 일부 청크와, 서버에 의해 새롭게 수신된 일부 청크 및 완전한 수정 파일을 나타내는 해시 리스트(또는 청크 리스트)로 구성되는) 완전한 수정 파일을 저장할 수 있다. 완전한 파일을 나타내는 해시 리스트(또는 청크 리스트)를 전송하고 데이터 스토리지 서버 상에 이미 저장되어 있지 않은 청크들만을 전송함으로써, 클라이언트로부터 데이터 스토어로의 데이터 전송의 최적화가 실현될 수 있다.
예를 들어, 데이터 스토리지 서버는 클라이언트로부터 해시 리스트를 수신할 수 있으며, 파일을 나타내는 전송된 해시 리스트를 데이터 스토리지 서버 상에 저장된 청크 및 데이터 스토리지 서버 상에 저장된 청크에 대한 암호화 해시들의 인덱스를 포함하는 청크 스토어/인덱스(270) 내에 저장된 해시 리스트와 비교할 수 있다. 그 다음 데이터 스토어는 클라이언트에게 청크 스토어 및 인덱스(270) 내에 이미 저장되어 있지 않은 청크들을 나타내는 해시 리스트를 반환할 수 있다. 그 다음 클라이언트는 데이터 스토어에 청크 스토어에 이미 저장되어 있지 않은 청크들을 전송할 수 있다. 그 다음 데이터 스토어는 완전한 수정 파일을 나타내는 해시 리스트에 따라 청크 스토어(270) 내에 수신된 파일을 저장할 수 있다. 이러한 방식으로, 데이터 스토리지 서버는 이제 파일을 구성하는 모든 청크들을 클라이언트에게 전송할 필요 없이, 수정된 파일의 완전한 표현을 (파일 및 상응하는 청크들을 나타내는 청크 리스트로서) 저장할 수 있다.
다른 예시에서, 5개의 청크(C1-C5)로 구성된 파일은 클라이언트에 의해 청크(C4)만이 수정될 수 있다(그 결과 수정된 청크 Cm4를 얻음). 클라이언트는 청크(C1-C3, Cm4, C5)를 나타내는 해시 리스트를 데이터 스토리지 서버에 전송할 수 있다. 이러한 해시 리스트는 이제 완전한 수정 파일을 나타낸다. 그 다음 데이터 스토리지 서버는 서버 상에 저장된 청크(C1-C3, C5)를 이미 가지고 있지만 청크(Cm4)는 가지고 있지 않다고 클라이언트에 응답할 수 있다. 클라이언트는 데이터 스토리지 서버에 청크(Cm4)를 전송할 수 있다. 그 다음 데이터 스토리지 서버는 데이터 스토리지 서버 상에 청크(C1-C3, Cm4, C5)를 나타내는 수신된 해시 리스트, 이미 저장된 청크(C1-C3, C5)와 함께 청크(Cm4)를 저장할 수 있고, 이제 데이터 스토어 상에 저장된 완전한 수정 파일을 갖게 된다.
이러한 기록 경로 실시예는 수정 파일에 대해서 뿐 아니라 새롭게 생성되는 파일에 대해서도 유사한 방식으로 가능할 것임을 이해할 수 있을 것이다. 클라이언트는 수정 파일이거나 새롭게 생성되는 파일인 임의의 파일에 대한 청크 리스트를 생성할 수 있으며, 데이터 스토리지 서버가 수신된 청크 리스트를 이미 서버 상에 저장된 청크들의 리스트와 비교할 수 있도록 청크 리스트를 데이터 스토리지 서버에 전송할 수 있다. 추가적으로, 청크 리스트는 파일을 구성하는 청크들 각각을 고유하게 식별하는 암호화 해시 리스트일 수 있다. 본 명세서에 개시된 청크 자체는 압축된 청크이거나, 가공되지 않은 데이터 포맷의 청크이거나, 또는 암호화 또는 다른 일부 방식으로 변형된 청크일 수 있다.
청크가 전송될 때는 가공되지 않은 데이터 포맷, 압축된 포맷, 또는 다른 포맷으로 전송될 수 있다. 파일 데이터 부분이 압축된 포맷으로 전송되면, 전송 인프라구조가 전송에서의 효율성을 획득하기 위해서 데이터를 압축해야할 필요가 없고 데이터 스토리지 서버가 데이터 스토리지 서버 상의 스토리지를 최적화하기 위해서 데이터를 압축해야할 필요가 없는 최적화를 얻을 수 있다. 전송의 수신단에 이미 저장되어 있거나 이미 존재하고 있지 않은 압축된 청크만을 전송함으로써, 파일 데이터의 전송 및 저장 모두에서의 최적화가 실현될 수 있다.
본 발명은 본 발명의 사상 또는 기본적인 특징으로부터 벗어나지 않고 다른 특정한 형태들로 구현될 수 있다. 기술된 실시예들은 단지 예시적인 것이며, 제한적인 것으로 간주되어서는 안된다. 따라서 본 발명의 범주는 전술된 설명에 의해서가 아닌 첨부된 특허청구범위에 의해 정의된다. 특허청구범위의 동등물의 의미 및 범주 내에 포함되는 모든 변경사항들이 본 발명의 범주에 포함된다.

Claims (15)

  1. 클라이언트 및 데이터 스토리지 서버를 포함하는 컴퓨팅 환경에서, 상기 데이터 스토리지 서버 내의 저장 최적화(storage optimization)의 세부사항을 상기 클라이언트에게 노출하는 방법으로서,
    상기 데이터 스토리지 서버 상의 파일 데이터의 저장에 대해 기술하는 메타데이터(metadata)에 액세스하는 단계 -상기 파일 데이터는 상기 파일 데이터의 본래 형태(native form)와는 구별되는 형태로 상기 데이터 스토리지 서버 상에 저장되고, 상기 메타데이터는 상기 데이터 스토리지 서버 상에 저장된 상기 파일 데이터의 상기 저장 형태를 노출시킴- 와,
    상기 클라이언트가 파일 데이터에 대한 요청을 상기 데이터 스토리지 서버에 전송하는 단계와,
    상기 데이터 스토리지 서버로부터 하나 이상의 파일 데이터, 상기 데이터 스토리지 서버 상의 상기 파일 데이터의 저장을 기술하는 추가적인 메타데이터 및 상기 파일 데이터의 적어도 일부분을 나타내는 데이터를 포함하는 정보를 수신하는 단계를 포함하는
    컴퓨팅 환경에서의 방법.
  2. 제 1 항에 있어서,
    상기 데이터 스토리지 서버 상의 상기 파일 데이터의 저장을 기술하는 상기 메타데이터는, 상기 데이터 스토리지 서버 상의 상기 파일 데이터의 중복제거(de-duplication)의 결과로 얻어진 상기 파일 데이터의 저장에 대해 기술하는 데이터를 포함하는
    컴퓨팅 환경에서의 방법.
  3. 제 1 항에 있어서,
    상기 데이터 스토리지 서버 상의 상기 파일 데이터의 저장을 기술하는 상기 메타데이터는 상기 파일 데이터의 서브셋의 암호화 해시(cryptographic hash)를 포함하는
    컴퓨팅 환경에서의 방법.
  4. 제 1 항에 있어서,
    상기 데이터 스토리지 서버 상의 상기 파일 데이터의 저장을 기술하는 상기 메타데이터는 상기 파일 데이터의 복수의 서브셋의 각각에 대한 암호화 해시를 포함하는
    컴퓨팅 환경에서의 방법.
  5. 제 1 항에 있어서,
    상기 데이터 스토리지 서버 상의 상기 파일 데이터의 저장을 기술하는 상기 메타데이터는 상기 파일 데이터의 압축된 서브셋을 기술하는 데이터를 포함하는
    컴퓨팅 환경에서의 방법.
  6. 클라이언트 및 데이터 스토리지 서버를 포함하는 컴퓨팅 환경에서, 상기 데이터 스토리지 서버 내의 저장 최적화의 세부사항을 상기 클라이언트에게 노출하는 방법으로서,
    상기 데이터 스토리지 서버 상의 파일 데이터의 저장에 대해 기술하는 메타데이터를 전송하는 단계 -상기 파일 데이터는 상기 파일 데이터의 본래 형태와는 구별되는 형태로 상기 데이터 스토리지 서버 상에 저장되고, 상기 메타데이터는 상기 데이터 스토리지 서버 상에 저장된 상기 파일 데이터의 상기 저장 형태를 노출시킴- 와,
    상기 데이터 스토리지 서버에서 컴퓨팅 시스템으로부터 파일 데이터에 대한 요청을 수신하는 단계와,
    상기 데이터 스토리지 서버에서 적어도 하나의 파일 데이터, 상기 데이터 스토리지 서버 상의 상기 파일 데이터의 저장을 기술하는 추가적인 메타데이터 및 상기 파일 데이터의 적어도 일부분을 나타내는 데이터를 포함하는 정보를 전송하는 단계를 포함하는
    컴퓨팅 환경에서의 방법.
  7. 제 6 항에 있어서,
    상기 데이터 스토리지 서버 상의 상기 파일 데이터의 저장을 기술하는 상기 메타데이터는, 상기 데이터 스토리지 서버 상의 상기 파일 데이터의 중복제거의 결과로 얻어진 상기 파일 데이터의 저장에 대해 기술하는 데이터를 포함하는
    컴퓨팅 환경에서의 방법.
  8. 제 6 항에 있어서,
    상기 데이터 스토리지 서버 상의 상기 파일 데이터의 저장을 기술하는 상기 메타데이터는 상기 파일 데이터의 서브셋의 암호화 해시를 포함하는
    컴퓨팅 환경에서의 방법.
  9. 제 6 항에 있어서,
    상기 데이터 스토리지 서버 상의 상기 파일 데이터의 저장을 기술하는 상기 메타데이터는 상기 파일 데이터의 복수의 서브셋의 각각에 대한 암호화 해시를 포함하는
    컴퓨팅 환경에서의 방법.
  10. 제 6 항에 있어서,
    상기 데이터 스토리지 서버 상의 상기 파일 데이터의 저장을 기술하는 상기 메타데이터는 상기 파일 데이터의 압축된 서브셋을 기술하는 데이터를 포함하는
    컴퓨팅 환경에서의 방법.
  11. 컴퓨터 실행가능한 명령어들이 인코딩된 하나 이상의 컴퓨터 판독가능한 스토리지 매체를 포함하는 컴퓨터 프로그램 제품으로서,
    상기 컴퓨터 실행가능한 명령어들이 하나 이상의 컴퓨터 프로세서 상에서 실행되면 데이터 스토리지 서버 내의 저장 최적화의 세부사항을 클라이언트에게 노출하는 방법을 수행하되, 상기 방법은,
    컴퓨팅 시스템에서 상기 데이터 스토리지 서버에 파일 데이터에 대한 요청을 전송하는 단계와,
    상기 데이터 스토리지 서버로부터 상기 데이터 스토리지 서버 상의 상기 파일 데이터의 저장을 기술하는 정보를 포함하는 정보를 수신하는 단계를 포함하는
    컴퓨터 프로그램 제품.
  12. 제 11 항에 있어서,
    상기 데이터 스토리지 서버 상의 상기 파일 데이터의 저장을 기술하는 정보를 포함하는 상기 정보는, 상기 데이터 스토리지 서버 상의 상기 파일 데이터의 중복제거의 결과로 얻어진 상기 파일 데이터의 저장에 대해 기술하는 데이터를 포함하는
    컴퓨터 프로그램 제품.
  13. 제 11 항에 있어서,
    상기 데이터 스토리지 서버 상의 상기 파일 데이터의 저장을 기술하는 정보를 포함하는 상기 정보는 상기 파일 데이터의 서브셋의 암호화 해시를 포함하는
    컴퓨터 프로그램 제품.
  14. 제 11 항에 있어서,
    상기 데이터 스토리지 서버 상의 상기 파일 데이터의 저장을 기술하는 정보를 포함하는 상기 정보는 상기 파일 데이터의 복수의 서브셋의 각각에 대한 암호화 해시를 포함하는
    컴퓨터 프로그램 제품.
  15. 제 11 항에 있어서,
    상기 데이터 스토리지 서버 상의 상기 파일 데이터의 저장을 기술하는 정보를 포함하는 상기 정보는 상기 파일 데이터의 압축된 서브셋을 기술하는 데이터를 포함하는
    컴퓨터 프로그램 제품.
KR1020127032957A 2010-06-18 2011-06-06 데이터의 저장 및 전송의 최적화 KR20130095194A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/818,515 US20110314070A1 (en) 2010-06-18 2010-06-18 Optimization of storage and transmission of data
US12/818,515 2010-06-18
PCT/US2011/039318 WO2011159517A2 (en) 2010-06-18 2011-06-06 Optimization of storage and transmission of data

Publications (1)

Publication Number Publication Date
KR20130095194A true KR20130095194A (ko) 2013-08-27

Family

ID=45329631

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127032957A KR20130095194A (ko) 2010-06-18 2011-06-06 데이터의 저장 및 전송의 최적화

Country Status (12)

Country Link
US (1) US20110314070A1 (ko)
EP (1) EP2583186A2 (ko)
JP (1) JP5819416B2 (ko)
KR (1) KR20130095194A (ko)
CN (1) CN102947815B (ko)
AU (1) AU2011268033A1 (ko)
BR (1) BR112012032407A2 (ko)
CA (1) CA2799976A1 (ko)
HK (1) HK1182493A1 (ko)
MX (1) MX2012014730A (ko)
RU (1) RU2581551C2 (ko)
WO (1) WO2011159517A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150064593A (ko) * 2013-12-03 2015-06-11 삼성전자주식회사 데이터 연관정보를 이용한 중복제거 방법 및 시스템
KR101588976B1 (ko) 2014-10-22 2016-01-27 삼성에스디에스 주식회사 파일 송신 장치 및 방법

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8484162B2 (en) 2008-06-24 2013-07-09 Commvault Systems, Inc. De-duplication systems and methods for application-specific data
US8930306B1 (en) 2009-07-08 2015-01-06 Commvault Systems, Inc. Synchronized data deduplication
US8578109B2 (en) * 2010-09-30 2013-11-05 Commvault Systems, Inc. Systems and methods for retaining and using data block signatures in data protection operations
US8577851B2 (en) 2010-09-30 2013-11-05 Commvault Systems, Inc. Content aligned block-based deduplication
US9020900B2 (en) 2010-12-14 2015-04-28 Commvault Systems, Inc. Distributed deduplicated storage system
US20120150818A1 (en) 2010-12-14 2012-06-14 Commvault Systems, Inc. Client-side repository in a networked deduplicated storage system
US8856368B2 (en) * 2011-04-01 2014-10-07 International Business Machines Corporation Method for distributing a plurality of data portions
KR101904482B1 (ko) * 2011-12-26 2018-10-08 에스케이텔레콤 주식회사 콘텐트 전송 시스템, 그 시스템에서의 네트워크 중복 전송 트래픽 최적화 방법, 중앙 제어 장치 및 로컬 캐싱 장치
KR20130093806A (ko) * 2012-01-10 2013-08-23 한국전자통신연구원 클라우드 컴퓨팅 환경에서의 개인 정보 유출 알림 시스템 및 방법
CN102546817B (zh) * 2012-02-02 2014-08-20 清华大学 集中式数据中心数据冗余消除方法
CN102571974B (zh) * 2012-02-02 2014-06-11 清华大学 分布式数据中心数据冗余消除方法
US9251186B2 (en) 2012-06-13 2016-02-02 Commvault Systems, Inc. Backup using a client-side signature repository in a networked storage system
US9665591B2 (en) 2013-01-11 2017-05-30 Commvault Systems, Inc. High availability distributed deduplicated storage system
US20160070737A1 (en) * 2013-03-18 2016-03-10 Ge Intelligent Platforms, Inc. Apparatus and method for optimizing time series data store usage
US10015012B2 (en) * 2013-07-03 2018-07-03 Red Hat, Inc. Precalculating hashes to support data distribution
EP3022664A1 (en) * 2013-07-18 2016-05-25 Hewlett Packard Enterprise Development LP Remote storage
US9633056B2 (en) 2014-03-17 2017-04-25 Commvault Systems, Inc. Maintaining a deduplication database
US10380072B2 (en) 2014-03-17 2019-08-13 Commvault Systems, Inc. Managing deletions from a deduplication database
JP6326913B2 (ja) 2014-03-31 2018-05-23 富士通株式会社 制御プログラムおよび制御方法
SG11201609471TA (en) * 2014-05-13 2016-12-29 Cloud Crowding Corp Distributed secure data storage and transmission of streaming media content
US11249858B2 (en) 2014-08-06 2022-02-15 Commvault Systems, Inc. Point-in-time backups of a production application made accessible over fibre channel and/or ISCSI as data sources to a remote application by representing the backups as pseudo-disks operating apart from the production application and its host
US9852026B2 (en) 2014-08-06 2017-12-26 Commvault Systems, Inc. Efficient application recovery in an information management system based on a pseudo-storage-device driver
US9575673B2 (en) 2014-10-29 2017-02-21 Commvault Systems, Inc. Accessing a file system using tiered deduplication
US10146752B2 (en) 2014-12-31 2018-12-04 Quantum Metric, LLC Accurate and efficient recording of user experience, GUI changes and user interaction events on a remote web document
US10339106B2 (en) 2015-04-09 2019-07-02 Commvault Systems, Inc. Highly reusable deduplication database after disaster recovery
US20160350391A1 (en) 2015-05-26 2016-12-01 Commvault Systems, Inc. Replication using deduplicated secondary copy data
US11461456B1 (en) * 2015-06-19 2022-10-04 Stanley Kevin Miles Multi-transfer resource allocation using modified instances of corresponding records in memory
WO2017011829A1 (en) * 2015-07-16 2017-01-19 Quantum Metric, LLC Document capture using client-based delta encoding with server
US9766825B2 (en) 2015-07-22 2017-09-19 Commvault Systems, Inc. Browse and restore for block-level backups
WO2017022034A1 (ja) * 2015-07-31 2017-02-09 富士通株式会社 情報処理装置、情報処理方法、及び、情報処理プログラム
RU2625611C2 (ru) * 2015-12-07 2017-07-17 Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Оренбургский государственный университет" Способ преобразования документов для минимизации их объёма при хранении электронных документов с квазиструктурированным информационным наполнением
US10061663B2 (en) 2015-12-30 2018-08-28 Commvault Systems, Inc. Rebuilding deduplication data in a distributed deduplication data storage system
US10296368B2 (en) 2016-03-09 2019-05-21 Commvault Systems, Inc. Hypervisor-independent block-level live browse for access to backed up virtual machine (VM) data and hypervisor-free file-level recovery (block-level pseudo-mount)
US10165088B2 (en) * 2016-08-02 2018-12-25 International Business Machines Corporation Providing unit of work continuity in the event initiating client fails over
US10740193B2 (en) 2017-02-27 2020-08-11 Commvault Systems, Inc. Hypervisor-independent reference copies of virtual machine payload data based on block-level pseudo-mount
US10664352B2 (en) 2017-06-14 2020-05-26 Commvault Systems, Inc. Live browsing of backed up data residing on cloned disks
RU2714219C1 (ru) 2018-09-14 2020-02-13 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для планирования передачи операций ввода/вывода
RU2731321C2 (ru) 2018-09-14 2020-09-01 Общество С Ограниченной Ответственностью "Яндекс" Способ определения потенциальной неисправности запоминающего устройства
RU2718215C2 (ru) 2018-09-14 2020-03-31 Общество С Ограниченной Ответственностью "Яндекс" Система обработки данных и способ обнаружения затора в системе обработки данных
RU2721235C2 (ru) 2018-10-09 2020-05-18 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для маршрутизации и выполнения транзакций
RU2714602C1 (ru) 2018-10-09 2020-02-18 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для обработки данных
RU2711348C1 (ru) 2018-10-15 2020-01-16 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для обработки запросов в распределенной базе данных
US11010258B2 (en) 2018-11-27 2021-05-18 Commvault Systems, Inc. Generating backup copies through interoperability between components of a data storage management system and appliances for data storage and deduplication
RU2714373C1 (ru) 2018-12-13 2020-02-14 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для планирования выполнения операций ввода/вывода
US11698727B2 (en) 2018-12-14 2023-07-11 Commvault Systems, Inc. Performing secondary copy operations based on deduplication performance
RU2749649C2 (ru) 2018-12-21 2021-06-16 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для планирования обработки операций ввода/вывода
RU2720951C1 (ru) * 2018-12-29 2020-05-15 Общество С Ограниченной Ответственностью "Яндекс" Способ и распределенная компьютерная система для обработки данных
RU2746042C1 (ru) 2019-02-06 2021-04-06 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для передачи сообщения
US20200327017A1 (en) 2019-04-10 2020-10-15 Commvault Systems, Inc. Restore using deduplicated secondary copy data
US11463264B2 (en) 2019-05-08 2022-10-04 Commvault Systems, Inc. Use of data block signatures for monitoring in an information management system
US11064055B2 (en) * 2019-07-22 2021-07-13 Anacode Labs, Inc. Accelerated data center transfers
US20210173811A1 (en) 2019-12-04 2021-06-10 Commvault Systems, Inc. Optimizing the restoration of deduplicated data stored in multi-node replicated file systems
US11687424B2 (en) 2020-05-28 2023-06-27 Commvault Systems, Inc. Automated media agent state management
CN113641434A (zh) * 2021-08-12 2021-11-12 上海酷栈科技有限公司 一种云桌面数据压缩自适应编码方法、系统及存储设备
US11914983B2 (en) * 2022-06-03 2024-02-27 Apple Inc. Virtual restructuring for patching compressed disk images

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5920700A (en) * 1996-09-06 1999-07-06 Time Warner Cable System for managing the addition/deletion of media assets within a network based on usage and media asset metadata
JP3171160B2 (ja) * 1998-03-20 2001-05-28 日本電気株式会社 圧縮ファイルサーバ方式
WO2000045274A1 (fr) * 1999-01-29 2000-08-03 Digitaldesign, Co., Ltd. Procede de transmission de donnees, support lisible par un ordinateur et appareil de transmission de donnees
JP3598495B2 (ja) * 1999-01-29 2004-12-08 株式会社 デジタルデザイン データ転送方法、コンピュータ読み取り可能な記録媒体及びデータ転送システム
JP4846156B2 (ja) * 2000-02-18 2011-12-28 イーエムシー コーポレイション 共通性ファクタリングシステムに用いられるハッシュファイルシステムおよび方法
US6990547B2 (en) * 2001-01-29 2006-01-24 Adaptec, Inc. Replacing file system processors by hot swapping
US7054927B2 (en) * 2001-01-29 2006-05-30 Adaptec, Inc. File system metadata describing server directory information
US6944740B2 (en) * 2002-03-27 2005-09-13 International Business Machines Corporation Method for performing compressed I/O with memory expansion technology
JP3979183B2 (ja) * 2002-05-27 2007-09-19 日本電気株式会社 データ共有システム及びディスク装置へのアクセス方法並びにプログラム
US7181578B1 (en) * 2002-09-12 2007-02-20 Copan Systems, Inc. Method and apparatus for efficient scalable storage management
US20040107242A1 (en) * 2002-12-02 2004-06-03 Microsoft Corporation Peer-to-peer content broadcast transfer mechanism
US20050138011A1 (en) * 2003-12-23 2005-06-23 Royer Robert J.Jr. Meta-data storage and access techniques
US7130956B2 (en) * 2004-02-10 2006-10-31 Sun Microsystems, Inc. Storage system including hierarchical cache metadata
US7243110B2 (en) * 2004-02-20 2007-07-10 Sand Technology Inc. Searchable archive
US7533181B2 (en) * 2004-02-26 2009-05-12 International Business Machines Corporation Apparatus, system, and method for data access management
US7383382B2 (en) * 2004-04-14 2008-06-03 Microsoft Corporation System and method for storage power, thermal and acoustic management in server systems
US7346751B2 (en) * 2004-04-30 2008-03-18 Commvault Systems, Inc. Systems and methods for generating a storage-related metric
CN1697327A (zh) * 2004-05-13 2005-11-16 皇家飞利浦电子股份有限公司 一种顺序压缩/解压缩数据的方法及装置
US7386566B2 (en) * 2004-07-15 2008-06-10 Microsoft Corporation External metadata processing
US7657581B2 (en) * 2004-07-29 2010-02-02 Archivas, Inc. Metadata management for fixed content distributed data storage
US7594075B2 (en) * 2004-10-20 2009-09-22 Seagate Technology Llc Metadata for a grid based data storage system
US7320008B1 (en) * 2004-12-20 2008-01-15 Veritas Operating Corporation Data protection mechanism
US7548657B2 (en) * 2005-06-25 2009-06-16 General Electric Company Adaptive video compression of graphical user interfaces using application metadata
AU2006286320A1 (en) * 2005-09-01 2007-03-08 Astragroup As (A Norwegian Company) Post- recording data analysis and retrieval
US7555715B2 (en) * 2005-10-25 2009-06-30 Sonic Solutions Methods and systems for use in maintaining media data quality upon conversion to a different data format
US7587569B2 (en) * 2005-12-19 2009-09-08 Yahoo! Inc. System and method for removing a storage server in a distributed column chunk data store
EP1816822B1 (en) * 2006-02-03 2008-03-26 Research In Motion Limited System and method for controlling data communications between a server and a client device
US7747831B2 (en) * 2006-03-20 2010-06-29 Emc Corporation High efficiency portable archive and data protection using a virtualization layer
US8412682B2 (en) * 2006-06-29 2013-04-02 Netapp, Inc. System and method for retrieving and using block fingerprints for data deduplication
US20080052328A1 (en) * 2006-07-10 2008-02-28 Elephantdrive, Inc. Abstracted and optimized online backup and digital asset management service
US20080243769A1 (en) * 2007-03-30 2008-10-02 Symantec Corporation System and method for exporting data directly from deduplication storage to non-deduplication storage
JP5061797B2 (ja) * 2007-08-31 2012-10-31 ソニー株式会社 伝送システムおよび方法、伝送装置および方法、受信装置および方法、プログラム、並びに記録媒体
US7941409B2 (en) * 2007-09-11 2011-05-10 Hitachi, Ltd. Method and apparatus for managing data compression and integrity in a computer storage system
US7797279B1 (en) * 2007-12-31 2010-09-14 Emc Corporation Merging of incremental data streams with prior backed-up data
US8300823B2 (en) * 2008-01-28 2012-10-30 Netapp, Inc. Encryption and compression of data for storage
US8176269B2 (en) * 2008-06-30 2012-05-08 International Business Machines Corporation Managing metadata for data blocks used in a deduplication system
US20100082700A1 (en) * 2008-09-22 2010-04-01 Riverbed Technology, Inc. Storage system for data virtualization and deduplication
US8738621B2 (en) * 2009-01-27 2014-05-27 EchoStar Technologies, L.L.C. Systems and methods for managing files on a storage device
US7987162B2 (en) * 2009-03-06 2011-07-26 Bluearc Uk Limited Data compression in a file storage system
US8205065B2 (en) * 2009-03-30 2012-06-19 Exar Corporation System and method for data deduplication
CN101582076A (zh) * 2009-06-24 2009-11-18 浪潮电子信息产业股份有限公司 一种基于数据库的重复数据删除方法
US9191437B2 (en) * 2009-12-09 2015-11-17 International Business Machines Corporation Optimizing data storage among a plurality of data storage repositories
US8370297B2 (en) * 2010-03-08 2013-02-05 International Business Machines Corporation Approach for optimizing restores of deduplicated data

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150064593A (ko) * 2013-12-03 2015-06-11 삼성전자주식회사 데이터 연관정보를 이용한 중복제거 방법 및 시스템
KR101588976B1 (ko) 2014-10-22 2016-01-27 삼성에스디에스 주식회사 파일 송신 장치 및 방법

Also Published As

Publication number Publication date
JP5819416B2 (ja) 2015-11-24
RU2012154625A (ru) 2014-06-27
AU2011268033A1 (en) 2012-12-20
RU2581551C2 (ru) 2016-04-20
HK1182493A1 (zh) 2013-11-29
CN102947815A (zh) 2013-02-27
CN102947815B (zh) 2016-01-20
EP2583186A2 (en) 2013-04-24
MX2012014730A (es) 2013-01-22
WO2011159517A2 (en) 2011-12-22
JP2013534007A (ja) 2013-08-29
BR112012032407A2 (pt) 2019-09-24
WO2011159517A3 (en) 2012-04-05
US20110314070A1 (en) 2011-12-22
CA2799976A1 (en) 2011-12-22

Similar Documents

Publication Publication Date Title
KR20130095194A (ko) 데이터의 저장 및 전송의 최적화
KR102007070B1 (ko) 메모리 관리 시의 중복 제거를 위해서 기준 세트로 기준 블록을 취합하는 기법
US9984093B2 (en) Technique selection in a deduplication aware client environment
US20120089579A1 (en) Compression pipeline for storing data in a storage cloud
US11829624B2 (en) Method, device, and computer readable medium for data deduplication
US20150006475A1 (en) Data deduplication in a file system
US8650162B1 (en) Method and apparatus for integrating data duplication with block level incremental data backup
US20120089775A1 (en) Method and apparatus for selecting references to use in data compression
US11221992B2 (en) Storing data files in a file system
US20180357217A1 (en) Chunk compression in a deduplication aware client environment
US8326811B2 (en) File management method and computer system
US11797488B2 (en) Methods for managing storage in a distributed de-duplication system and devices thereof
Upadhyay et al. Deduplication and compression techniques in cloud design
US20170124107A1 (en) Data deduplication storage system and process
US11994957B1 (en) Adaptive compression to improve reads on a deduplication file system
WO2018102392A1 (en) Garbage collection system and process
Kandula et al. Software Data Strategies for Network Optimization supporting AI workloads

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination