KR101631004B1 - 위치 독립적 파일 - Google Patents

위치 독립적 파일 Download PDF

Info

Publication number
KR101631004B1
KR101631004B1 KR1020147022841A KR20147022841A KR101631004B1 KR 101631004 B1 KR101631004 B1 KR 101631004B1 KR 1020147022841 A KR1020147022841 A KR 1020147022841A KR 20147022841 A KR20147022841 A KR 20147022841A KR 101631004 B1 KR101631004 B1 KR 101631004B1
Authority
KR
South Korea
Prior art keywords
data
data unit
data segments
segments
access file
Prior art date
Application number
KR1020147022841A
Other languages
English (en)
Other versions
KR20140114040A (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 KR20140114040A publication Critical patent/KR20140114040A/ko
Application granted granted Critical
Publication of KR101631004B1 publication Critical patent/KR101631004B1/ko

Links

Images

Classifications

    • 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/11File system administration, e.g. details of archiving or snapshots
    • G06F16/113Details of archiving
    • 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/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

데이터 단위들을 데이터 세그먼트들 및 액세스 파일들로 변환함으로써 데이터 단위를 관리하여 데이터 세그먼트들에 대한 해시 값들을 이용하여 데이터 세그먼트들을 어떻게 검색하는지를 설명한다. 데이터 저장 동작 시, 데이터 단위는 데이터 세그먼트들로 분할되고, 액세스 파일이 생성된다. 액세스 파일은 데이터 세그먼트들에 대한 세그먼트화 방식 정보, 해시 값들에 대한 해싱 방식 정보, 해시 값들을 설명하는 해시 식별 정보, 및 데이터 세그먼트들이 이용가능한 위치들을 식별하는 위치 정보를 포함한다. 데이터 검색 동작 시, 데이터 단위로부터의 데이터는 데이터 세그먼트들을 액세스하고 그로부터 데이터를 추출함으로써 검색되며, 데이터 세그먼트들은 데이터 단위에 대한 액세스 파일에 기초하여 검색된다.

Description

위치 독립적 파일{LOCATION INDEPENDENT FILES}
다음은 파일 시스템에 관한 것으로, 더 구체적으로는 위치 독립적 파일을 위한 시스템 및 방법에 관한 것이다.
전자 콘텐츠의 폭넓은 사용은 사용자가 그러한 전자 콘텐츠를 저장하기 위한 더 많은 양의 전자 저장소를 요구하게 하고 있다. 그러나, 사용자가 컴퓨팅 디바이스의 용량을 초과하는 양의 전자 콘텐츠를 축적하는 것은 일반적으로 드물지 않다. 예를 들어, 개인용 컴퓨터 상의 전자 저장소의 양은 휴대용 미디어 플레이어의 전자 저장소보다 실질적으로 더 클 수 있다. 따라서, 사용자는 개인용 컴퓨터로부터 휴대용 미디어 플레이어로 전송되는 전자 콘텐츠의 양을 제한할 필요가 있다. 유사하지 않은 저장 용량을 갖는 2개의 개별 컴퓨팅 디바이스 상의 전자 콘텐츠를 동기화하고자 하는 경우, 유사한 문제가 발생할 수 있다.
그러한 문제에 대한 한 가지 해법은 불충분한 디바이스에 추가 저장소가 추가되는 것을 허용하는 것이 일반적이었다. 그러나, 일부 유형의 디바이스에 저장소를 추가하는 것은 일반적으로 비실용적이거나 심지어 불가능하다. 예를 들어, 일부 유형의 휴대용 미디어 플레이어는 그들의 저장 용량이 확장되는 것을 허용하도록 구성되지 않을 수 있다. 다른 예에서, 휴대용 또는 랩톱 컴퓨터와 같은 일부 컴퓨팅 디바이스의 저장 용량은 외부의 하드 드라이브와 같은 외부 저장 디바이스를 연결하여 확장될 수 있다. 그러나, 이러한 해법은 비실용적일 수 있는데, 그 이유는 랩톱 컴퓨터의 휴대성이 제한적이 될 수 있기 때문이다.
그러한 문제에 대한 다른 해법은 네트워크 접속을 통한 추가 저장소로의 컴퓨팅 디바이스 액세스를 허용하도록 하는 것이 일반적이었다. 즉, 로컬 컴퓨팅 디바이스가 원격 컴퓨팅 디바이스의 저장 용량을 이용하는 것을 허용하도록 원격 컴퓨팅 디바이스가 구성된다. 동작 시, 전자 콘텐츠를 갖는 파일은 원격 컴퓨팅 디바이스 상에 저장될 수 있다. 이어서, 원격 컴퓨팅 디바이스로부터 로컬 컴퓨팅 디바이스로 파일을 전송하거나 복사함으로써 파일이 로컬 컴퓨팅 디바이스에 의해 이용될 수 있다. 파일은 로컬 컴퓨팅 디바이스 상에 영구적으로 또는 일시적으로 저장될 수 있다. 그러나, 이것은 액세스에 상당한 래그(lag) 시간을 초래할 수 있는데, 그 이유는 로컬 컴퓨팅 디바이스에서의 사용자가 액세스 전에 전체 파일이 전송되기를 기다려야만 하기 때문이다. 더욱이, 파일이 로컬 컴퓨팅 디바이스 상에 일시적으로만 저장되는 경우, 파일에 대한 임의의 업데이트와 함께 원격 컴퓨팅 시스템을 업데이트할 필요가 있을 것이다. 또한, 이것은, 일반적으로, 로컬 컴퓨팅 디바이스 상의 파일이 그 후에 로컬 컴퓨팅 디바이스로부터 원격 컴퓨팅 디바이스로 다시 전송되어야 하는 것을 요구하여, 추가 래그 시간을 더한다.
따라서, 본 기술은 다수의 위치에서 전자 콘텐츠를 관리 및 사용하기 위한 시스템 및 방법을 제공한다. 본 기술의 일 태양은 전자 콘텐츠의 데이터 저장소를 제공하는 것이다. 특히, 전자 콘텐츠의 하나 이상의 파일을 나타내는 데이터 단위는 하나 이상의 위치(로컬 또는 원격)에 저장되는 일련의 데이터 세그먼트(data segment)들 및 액세스 파일(access file)로 변환된다. 데이터 세그먼트들의 각각은 데이터 단위의 상이한 부분을 나타내고, 상이한 해시 값(hash value)과 관련되며, 통신 네트워크를 통한 그의 고속 송신을 허용하도록 구성될 수 있다.
액세스 파일은 데이터 단위 및 관련 데이터 세그먼트들에 관한 정보를 포함한다. 특히, 액세스 파일은 데이터 단위와 관련된 메타데이터, 데이터 세그먼트들에 대한 세그먼트화 방식 정보(segmenting scheme information), 해시 값들에 대한 해싱 방식 정보(hashing scheme information), 데이터 세그먼트들의 위치, 및 데이터 세그먼트들의 해시 값들을 결정하기 위한 하나 이상의 해시 식별 값을 포함한다. 하나 이상의 식별 값들은, 일부 구성에서, 데이터 세그먼트들의 해시 값들의 해시에 의해 생성될 수 있다. 대안적으로, 값들은 또한 해시 값들 자체일 수 있다.
이어서, 본 기술은 데이터 검색(retrieval)에 다음과 같이 이용될 수 있다. 로컬 시스템에서, 데이터 단위를 저장하는 대신, 전자 콘텐츠에 대한 액세스 파일이 그 대신에 저장되고, 로컬 시스템은 대응하는 액세스 파일을 이용하여 데이터 단위에 대한 임의의 요청을 서비스(service)하도록 구성된다. 따라서, 데이터 단위로의 액세스가 로컬 시스템에 의해 요청되는 때, 액세스 파일은 요청을 충족시키는 데 데이터 단위의 어떤 부분이 필요한지를 판정하고 데이터 세그먼트들 중 어느 것을 검색할 것인지를 판정하는 데 이용된다. 또한, 액세스 파일 내의 해싱 정보에 기초하여, 필요한 데이터 세그먼트들은 매칭하는 해시 값들을 제공하는 데이터 세그먼트들을 식별함으로써 검색된다.
데이터 세그먼트들에 의해 나타난 데이터 단위의 사용이 충분히 높은 경우에, 본 기술은 적어도 가장 빈번하게 사용되는 데이터 세그먼트들의 지속적인 저장을 허용한다. 대안적으로, 데이터 세그먼트들 및 액세스 파일은 로컬 시스템에서 데이터 단위를 리어셈블하는 데 사용될 수 있다.
본 기술은 또한 생성될 데이터 단위의 각각의 버전의 별도의 개별 사본들을 요구하지 않으면서 데이터 단위의 상이한 버전의 생성을 허용한다. 예를 들어, 데이터 세그먼트로의 액세스가 데이터 세그먼트의 업데이트를 초래하는 경우, 업데이트된 세그먼트에 대한 생성된 해시 값은 오리지널 데이터 세그먼트의 것과는 상이할 것이다. 따라서, 업데이트된 데이터 단위는, 간단히, 업데이트된 데이터 세그먼트에 기초하여 새로운 해시 식별 값들을 제공함으로써 데이터 단위의 업데이트된 버전을 나타내는 업데이트된 액세스 파일을 생성함으로써 "생성"될 수 있다.
본 기술은 또한 향상된 파일 시스템 및 그것에서의 방법을 제공할 수 있다. 일반적으로, 컴퓨팅 디바이스에서의 저장소는 일반적으로 사용된 부분 및 미사용된 부분으로 이루어진다. 사용된 부분은 파일 시스템에 의해 논리적으로 관리되어 로컬 디바이스 상에 저장되는 데이터 단위에 대한 로직 저장소를 제공한다. 본 기술에서, 파일 시스템은 미사용 부분을 원격 시스템으로부터 검색된 데이터 세그먼트에 대한 저장소로서 이용하도록 추가로 구성된다. 즉, 액세스 파일들은 로직 저장소에 저장되며, 전술된 바와 같이, 관련 데이터 단위에 대한 요청을 서비스하는 데 사용된다. 이어서, 데이터 세그먼트들은 미사용 공간에 저장되고, 그들의 해시 값들을 통해 액세스된다. 검색되는 데이터 세그먼트들에 대해 불충분한 공간이 이용가능한 경우에, 다른 데이터 세그먼트들은 우선순위 기준에 기초하여 삭제 또는 겹쳐쓰기될 수 있다. 더욱이, 파일 시스템은 일부 기준에 기초하여 데이터 세그먼트들로 그리고 그들로부터의 데이터 단위에 의해 로직 저장소를 관리하도록 구성될 수 있다.
<도 1>
도 1은 예시적인 컴퓨팅 디바이스를 도시한 도면이다.
<도 2>
도 2는 액세스 파일 및 관련 데이터 세그먼트들의 구성의 실시예의 개략도이다.
<도 3>
도 3은 컴퓨팅 시스템의 실시예의 개략도이다.
<도 4>
도 4는 데이터 단위를 액세스 파일 및 관련 세그먼트들로 변환하기 위한 방법의 실시예에서의 단계들의 플로우차트이다.
<도 5>
도 5는 데이터 단위를 액세스 파일 및 관련 세그먼트들로 변환하기 위한 시스템의 실시예의 개략도이다.
<도 6>
도 6은 액세스 파일 및 관련 세그먼트들을 이용하여 데이터 단위에 액세스하기 위한 방법의 실시예에서의 단계들의 플로우차트이다.
<도 7>
도 7은 액세스 파일 및 관련 세그먼트들을 데이터 단위로 변환하기 위한 방법의 실시예에서의 단계들의 플로우차트이다.
<도 8>
도 8은 상이한 버전의 데이터 단위를 생성하기 위한 방법의 실시예에서의 단계들의 플로우차트이다.
<도 9>
도 9는 컴퓨팅 시스템의 대안적인 실시예의 개략도이다.
개시되는 방법 및 장치의 다양한 실시예가 아래에서 상세히 논의된다. 특정 구현예들이 논의되지만, 이는 단지 예시의 목적을 위한 것임을 이해하여야 한다. 당업자라면, 다른 구성요소들, 구성들, 및 단계들이 본 발명의 사상 및 범주로부터 벗어나는 일 없이 이용될 수 있다는 것을 인식할 것이다.
도 1을 참조하면, 처리 유닛(CPU)(120)과, 읽기 전용 메모리(ROM)(140) 및 랜덤 액세스 메모리(RAM)(150)와 같은 시스템 메모리를 포함하는 다양한 시스템 구성요소를 처리 유닛(120)에 연결하는 시스템 버스(110)를 포함하는, 휴대가능하거나 고정될 수 있는 범용 컴퓨팅 디바이스(100)가 도시되어 있다. 다른 시스템 메모리(130)가 또한 사용을 위해 이용가능할 수 있다. 시스템이 하나 초과의 CPU(120)를 갖는 컴퓨팅 디바이스 상에서, 또는 더 큰 처리 용량을 제공하도록 함께 네트워킹된 컴퓨팅 디바이스들의 그룹 또는 클러스터 상에서 동작할 수 있다는 것이 인지될 수 있다. 시스템 버스(110)는 메모리 버스 또는 메모리 제어기, 주변 장치 버스, 및 다양한 버스 아키텍처들 중 임의의 것을 사용하는 로컬 버스를 비롯한 몇 가지 유형의 버스 구조들 중 임의의 것일 수 있다. ROM(140) 등에 저장된 기본 입/출력 시스템(BIOS)은, 예를 들어 시동 동안에, 컴퓨팅 디바이스(100) 내의 요소들 사이에서 정보를 전송하는 데 도움을 주는 기본 루틴을 제공할 수 있다. 컴퓨팅 디바이스(100)는 하드디스크 드라이브, 자기디스크 드라이브, 광디스크 드라이브, 테이프 드라이브, 솔리드 스테이트 드라이브(solid-state drive) 등과 같은 저장 디바이스(160)를 추가로 포함한다. 저장 디바이스(160)는 드라이브 인터페이스에 의해 시스템 버스(110)에 접속된다. 드라이브 및 관련 컴퓨터 판독가능 매체는 컴퓨팅 디바이스(100)에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 비휘발성 저장을 제공한다. 일 태양에서, 특정 기능을 수행하는 하드웨어 모듈은, 기능을 수행하기 위해 CPU, 버스, 디스플레이 등과 같은 필수적인 하드웨어 구성요소와 관련하는 유형적 컴퓨터 판독가능 매체에 저장되는 소프트웨어 구성요소를 포함한다. 기본적인 구성요소가 당업자에게 알려져 있고, 디바이스의 유형, 예를 들어 디바이스가 소형의 핸드헬드 컴퓨팅 디바이스인지, 데스크톱 컴퓨터인지, 또는 대형 컴퓨터 서버인지에 따라 적절한 변화가 고려된다.
본 명세서에 기술된 예시적인 환경은 하드 디스크를 채용하지만, 자기 카세트, 플래시 메모리 카드, 디지털 다기능 디스크, 카트리지, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 비트 스트림을 포함하는 케이블 또는 무선 신호 등과 같은, 컴퓨터에 의해 액세스가능한 데이터를 저장할 수 있는 다른 유형의 컴퓨터 판독가능 매체가 또한 예시적인 작동 환경에서 사용될 수 있음이 당업자에 의해 인식될 것이다.
컴퓨팅 디바이스(100)와의 사용자 상호작용을 가능하게 하기 위해, 입력 디바이스(190)는 말에 대한 마이크로폰, 제스처 또는 그래픽 입력에 대한 터치-감응 스크린, 키보드, 마우스, 모션 입력부, 말 등과 같은, 임의의 수의 입력 메커니즘을 나타낸다. 출력 디바이스(170)는 또한 당업자에게 공지되어 있는 다수의 출력 메커니즘 중 하나 이상일 수 있다. 예를 들어, 디스플레이 또는 스피커에 접속되거나 이들을 포함할 수 있는 비디오 출력 또는 오디오 출력 디바이스는 통상적인 것이다. 또한, 비디오 출력 및 오디오 출력 디바이스는 또한 이들 특화된 기능의 성능을 증강시키기 위한 특화된 프로세서를 포함할 수 있다. 일부 경우에, 다중 모드 시스템은 사용자가 컴퓨팅 디바이스(100)와 통신하도록 다수 유형의 입력을 제공하는 것을 가능하게 한다. 통신 인터페이스(180)는 일반적으로 사용자 입력 및 시스템 출력을 통제하고 관리한다. 임의의 특정 하드웨어 구성에서 동작하는 개시된 방법 및 디바이스에 대한 어떠한 제한도 없으며, 그에 따라 기본적인 특징부는 개선된 하드웨어 또는 펌웨어 구성이 개발될 때 그들로 용이하게 치환될 수 있다. 설명의 명료성을 위해, 예시적인 시스템은 개별적인 기능 블록들("프로세서"로 표기되는 기능 블록들을 포함함)을 포함하는 것으로 나타난다. 이들 블록이 나타내는 기능들은 소프트웨어를 실행시킬 수 있는 하드웨어를 포함하지만 이로 제한되지 않는 공유된 하드웨어 또는 전용 하드웨어의 사용을 통해 제공될 수 있다. 예를 들어, 도 1에 제시된 하나 이상의 프로세서의 기능은 단일의 공유된 프로세서 또는 다수의 프로세서에 의해 제공될 수 있다. (용어 "프로세서"의 사용은 소프트웨어를 실행시킬 수 있는 하드웨어만을 말하는 것으로 이해되어서는 안 된다.) 예시적인 실시예는 마이크로프로세서 및/또는 디지털 신호 프로세서(DSP) 하드웨어, 하기에 논의되는 동작을 수행하는 소프트웨어를 저장하기 위한 읽기 전용 메모리(ROM), 및 결과를 저장하기 위한 랜덤 액세스 메모리(RAM)를 포함할 수 있다. 초고밀도 집적회로(Very large scale integration: VLSI), 필드 프로그래밍가능 게이트 어레이(field-programmable gate array: FPGA), 및 주문형 집적 회로(application specific integrated circuit: ASIC) 하드웨어 실시예가 또한 제공될 수 있다.
다양한 실시예의 로직 동작은 (1) 범용 컴퓨터 내의 프로그래밍가능 회로 상에서 구동되는 컴퓨터 구현 단계, 동작, 또는 절차의 시퀀스, (2) 특정 용도 프로그래밍가능 회로 상에서 구동되는 컴퓨터 구현 단계, 동작, 또는 절차의 시퀀스; 및/또는 (3) 프로그래밍가능 회로 내의 상호접속되는 머신 모듈 또는 프로그램 엔진으로서 구현된다.
이제 도 2를 참조하면, 본 기술에 따른, 액세스 파일 및 관련 데이터 세그먼트들의 구성의 개략도가 도시되어 있다. 전술된 바와 같이, 본 기술의 일 태양은 전자 콘텐츠의 하나 이상의 아이템을 나타내는 데이터 단위를 저장하기 위한 대안적인 수단을 제공하는 것이다. 데이터 단위를 데이터 세그먼트들 및 액세스 파일로 변환하기 위한 프로세스는 도 3 및 도4와 관련하여 더 상세히 설명될 것이다. 도 2를 다시 참조하면, 데이터 단위의 변환 결과는 하나 이상의 위치들(206)에 저장되는 클라우드 또는 액세스 파일(202) 및 하나 이상의 데이터 세그먼트들(204)이다.
액세스 파일(202)은 데이터 세그먼트들(204)을 통해 데이터 단위에 어떻게 액세스하는지를 나타내는 데이터의 집합으로 이루어진 데이터 파일이다. 예를 들어, 도 2에 도시된 바와 같이, 액세스 파일(202)은 데이터 단위와 관련된 메타데이터(202A)를 저장하도록 구성될 수 있다. 도 2에 도시된 바와 같이, 메타데이터(202A)는 데이터 단위에 대한 확장된 로직 크기(logical size)를 포함할 수 있다. 그러나, 본 기술은 이와 관련하여 제한되지 않으며, 메타데이터(202A)는 또한 데이터 단위와 관련된 임의의 다른 유형의 메타데이터를 포함할 수 있다. 이러한 메타데이터는, 몇 가지만 예로 들면, 날짜 정보, 사용자 정보, 파일 유형 정보, 및 속성 정보를 포함할 수 있다. 그러나, 202A는 또한 임의의 다른 유형의 식별 정보 또는 전술된 것보다 적은 정보를 포함할 수 있다. 또한, 데이터 단위가 전자 콘텐츠의 하나 초과의 아이템을 나타내는 경우, 각각의 아이템에 대한 메타데이터는 또한 액세스 파일의 메타데이터(202A)에 포함될 수 있다.
메타데이터(202A) 외에도, 액세스 파일은 또한 세그먼트화 방식 정보(202B)를 포함할 수 있다. 즉, 데이터 세그먼트의 구성을 설명하는 임의의 정보. 예를 들어, 도 2에 도시된 바와 같이, 세그먼트화 방식 정보(202B)는 데이터 세그먼트들(204)의 크기일 수 있다. 도 2에서의 세그먼트화 방식 정보(202B)는 데이터 세그먼트들(204)이 모두 동일한 크기 64k라는 것을 나타내고 있지만, 본 기술은 이와 관련하여 제한되지 않는다. 일부 경우에 있어서, 전술된 바와 같이, 다양한 데이터 세그먼트들(204)의 크기는 변할 수 있다. 또한, 세그먼트화 방식 정보(202B)는 크기 정보만으로 제한되는 것은 아니다. 더 정확히 말하면, 일부 경우에 있어서, 세그먼트화 방식 정보(202B)는 데이터 세그먼트들(204)이 어떻게 구성되는지에 관한 추가 상세사항을 특정할 수 있다. 예를 들어, 데이터 세그먼트들(204)은 데이터 단위와 관련된 데이터로 이루어진 페이로드 부분 및 다른 부분들을 포함하는 패킷 또는 파일로서 구성될 수 있다. 다른 부분들은 에러 검사를 위한 부분, 데이터 세그먼트 내의 데이터의 데이터 단위 내에서의 시작 및 끝 위치를 나타내기 위한 부분, 다른 세그먼트들에 대한 데이터 세그먼트의 관계, 및 임의의 다른 정보를 포함할 수 있다. 따라서, 세그먼트화 방식 정보(202B)는 데이터 세그먼트들(204)의 구성을 특정할 수 있고, 그에 따라 데이터는 검색 시에 그것들로부터 정확하게 추출될 수 있다. 데이터 세그먼트들(204)의 구조 및 구성을 특정하는 임의의 다른 정보는 또한 세그먼트화 방식 정보(202B)에서 특정될 수 있다.
전술된 바와 같이, 데이터 세그먼트들의 사이징(sizing)은 변할 수 있다. 그러나, 많은 구성에서, 데이터 세그먼트들의 사이징은 데이터 세그먼트들에 대한 빠르고 효율적인 액세스를 제공하도록 선택될 수 있다. 즉, 데이터 세그먼트들은 그것들이 네트워킹된 디바이스들 사이에서 지연 또는 래그를 거의 또는 전혀 갖지 않은 채 전송될 수 있도록 사이징될 수 있다. 예를 들어, 전술된 64K 세그먼트들은 상대적으로 적은 대역폭 요건으로 전송될 수 있다. 또한, 세그먼트 사이징은 또한 특정 데이터 저장소 또는 데이터 패킷 구성을 이용하도록 선택될 수 있다. 즉, 많은 유형의 메모리 디바이스 및 데이터 패킷은 전형적으로 데이터에 개별적으로 액세스하도록 구성되는 것이 아니라, 그 대신에, 특정 양의 데이터를 포함하는 블록에 액세스하도록 구성된다. 따라서, 본 기술은 또한 그러한 블록이 최고의 가능한 처리율을 유지하도록 하는 구성을 이용하기 위해 데이터 세그먼트를 사이징하는 것을 허용한다.
본 기술의 일 태양은 데이터 세그먼트들(204)과 관련된 해시 값들을 이용하여 데이터 세그먼트들을 검색하는 것이다. 따라서, 해시 값들을 얼마나 정확하게 결정하는지를 판정하기 위해, 액세스 파일(202)은 또한 해싱 방식 정보(202C)를 포함할 수 있다. 도 2에서, 해싱 방식 정보(202C)는 SHA2의 해시 유형을 특정한다. 그러나, 본 기술은 이와 관련하여 제한되지 않으며, 임의의 다른 유형의 해싱 방식이 본 기술에 이용될 수 있다. 해싱 방식의 사용은 아래에서 더 상세히 논의될 것이다.
본 기술의 설명은 용어들 "해시", "해시 값", "해시 함수" 등을 언급할 것이지만, 이들 용어의 사용은 어떠한 방식으로든 제한하는 것으로 간주되어서는 안 된다. 예를 들어, 본 명세서에서 사용되는 바와 같이, "해시 함수"는 제1 크기의 제1 데이터 세트와 제1 크기보다 더 작은 제2 크기의 제2 데이터 세트 사이의 맵핑 또는 변환을 제공하는 임의의 서브루틴, 알고리즘, 프로세스, 방법 등을 지칭한다.
액세스 파일(202)의 추가 부분은 위치 정보(202D)이다. 위치 정보(202D)는 데이터 세그먼트들(204)이 위치되는 하나 이상의 위치들(206)을 특정할 수 있다. 도 2에서, 위치 정보(202D)는 신뢰되는 균일 리소스 위치자(uniform resource locator: URL) 스트링들의 리스트로서 나타나 있다. 그러나, 위치 정보(202D)는 임의의 포맷일 수 있고 데이터 세그먼트들(204)이 위치될 수 있는 임의의 유형의 리소스를 특정할 수 있다. 또한, 일부 구성에서, 위치 정보(202D)는 위치에 액세스하기 위한 특정 순서를 나타낼 수 있다. 예를 들어, 리던던트 버전(redundant version)의 데이터 세그먼트들이 일차 및 이차 위치에 저장될 경우, 위치 정보(202D)는 일차 위치에 먼저 액세스하는 것 그리고 데이터 세그먼트들이 일차 위치에 위치될 수 없는 때에만 이차 위치에 액세스하는 것을 특정할 수 있다.
위치 정보(202D)의 콘텐츠는 액세스 파일들의 생성 시간에 고정될 수 있지만, 일부 구성에서, 위치 정보(202D)는 시간에 따라 업데이트될 수 있다. 즉, 데이터 세그먼트들에 대한 저장 위치가 변경되거나 달리 조절되는 경우에, 액세스 파일(202)을 저장하는 컴퓨팅 시스템은 그러한 업데이트를 수신하고 액세스 파일(202)을 자동적으로 조절하도록 구성될 수 있다. 그러한 조절은 전역적(global)인 것 또는 파일 기반인 것일 수 있다. 또한, 업데이트는 액세스 파일(202)을 이용하여 컴퓨팅 디바이스의 위치를 역시 반영할 수 있다. 즉, 업데이트는 컴퓨팅 디바이스의 위치에 기초하여 저장 위치를 반영할 수 있는데, 이는 액세스 파일(202)과 관련된 데이터 세그먼트들로의 개선된 액세스를 초래할 것이다.
액세스 파일(202)은 또한 해시 식별(해시 ID) 정보(202E)를 포함할 수 있다. 즉, 정보는 데이터 세그먼트들(204)에 대한 해시 값들을 직접적으로 또는 간접적으로 특정한다. 일부 구성에서, 해시 ID 정보(202E)는 데이터 세그먼트들에 대한 해시 값들의 리스트를 특정할 수 있다. 대안적으로, 액세스 파일(202)에 대한 파일 크기를 제한하는 것 또는 실질적으로 동일한 크기 및 콘텐츠를 갖는 액세스 파일들을 제공하는 것이 바람직할 수 있다. 그러한 경우에 있어서, 상이한 데이터 단위들과 관련된 해시 값들의 수는 상이한 데이터 단위들의 크기에 기초하여 극적으로 변할 수 있다. 따라서, 일부 구성에서, 해시 ID 정보(202E)는 하나 이상의 합성 해시 값(composite hash value)들을 특정할 수 있다. 즉, 데이터 세그먼트들과 관련된 해시 값들로부터 하나의 해시 값을 계산하는 것. 예를 들어, 도 2에 도시된 바와 같이, 데이터 세그먼트들(204)과 관련된 해시 값들(208)에 대해, 합성 해시 값(210)은 해시 ID 정보(202E)로서 계산되고 사용될 수 있다. 따라서, 데이터의 검색 동안, 합성 해시 값(210)은 데이터 세그먼트들(204)을 검색하기 위해 해시 값들(208)을 계산하는 데 사용될 수 있다.
전술된 바와 같이, 데이터 세그먼트들(204)은 데이터 세그먼트들(204) 각각의 서로에 대한 관계 또는 데이터 단위에 대한 그의 관계를 특정하는 정보를 포함할 수 있었다. 그러나, 본 기술에서, 이러한 유형의 정보는 역시 또는 대안적으로 합성 해시 값(210)을 통해 저장될 수 있다. 즉, 합성 해시 값(210)은 데이터 세그먼트들(204)을 식별하는 데 뿐 아니라, 다양한 데이터 세그먼트들(204) 사이의 관계를 판정하는 데에도 사용될 수 있다. 예를 들어, 데이터 단위가 다양한 데이터 세그먼트들(204)을 생성하기 위해 세그먼트화 처리되는 경우, 다양한 데이터 세그먼트들의 콘텐츠가 데이터 단위 내에서 어떻게 배열되는지를 정의하는 특정 순서, 계층 등이 있다. 따라서, 합성 해시 값(210)을 생성하기 위해, 해시 값들(208)은 먼저 데이터 단위에서 데이터 세그먼트들(204) 사이의 관계에 대응하는 순서로 배열될 수 있다. 대안적으로, 그 관계를 나타내는 데이터가 또한 생성될 수 있다. 그 후, 합성 해시 값(210)은 이러한 구조의 해시 값들(208) 중의 해시 값을 획득하거나 또는 해시 값들(208)과 구조 데이터의 조합을 획득함으로써 생성될 수 있다. 결과적으로, 합성 해시 값(210)은 해시 값들(208)을 저장할 뿐 아니라, 다양한 데이터 세그먼트들(204)에 대한 관계 정보도 저장한다. 결과적으로, 데이터 세그먼트들(204) 사이의 관계에 관한 개별 정보는 액세스 파일(202) 또는 데이터 세그먼트들(204) 내에 저장될 필요가 있는데, 이는 데이터 세그먼트들(204) 및 액세스 파일(202)의 크기를 추가로 감소시킨다.
일부 구성에서, 액세스 파일이 다수의 합성 해시 값들(208)을 포함할 수 있다는 것은 주목할 가치가 있다. 합성 해시 값들(208)의 수는 다양한 인자에 기초할 수 있다. 예를 들어, 데이터 단위가 다수의 파일로 이루어지거나 명확한 경계를 따르는 부분들로 분할될 수 있다면, 이들 파일들 또는 부분들의 각각에 대해 개별 합성 해시 값(208)이 생성될 수 있다. 결과적으로, 이들 파일들 또는 부분들 중 단 하나만이 필요하다면, 합성 해시 값들(208) 중 대응하는 것만이 데이터 세그먼트들(204) 중 관련된 것을 판정하는 처리를 요구할 것이다.
전술된 저장소 구성은 데이터 단위를 관리하기 위한 새로운 유형의 파일 시스템을 가능하게 한다. 이것은 도 3과 관련하여 개략적으로 도시되어 있다. 도 3은 본 기술에 따라 구성된 컴퓨팅 디바이스(300)의 개략도이다.
도 3에 도시된 바와 같이, 컴퓨팅 디바이스(300)는 파일 시스템(302), 및 컴퓨팅 시스템(300)에 대한 데이터를 저장하고 파일 시스템(302)에 의해 관리되는 코어 저장소(304)를 포함한다. 도 3에서, 파일 시스템(302)은 계층적 파일 시스템 플러스(hierarchical file system plus: HFS+)로서 나타나 있지만, 본 기술은 이와 관련하여 제한되지 않으며, 임의의 다른 유형의 파일 시스템이 본 기술과 함께 제한 없이 사용될 수 있다.
동작 시, 파일 시스템(302)은 코어 저장소(304)를 2개 이상의 저장 영역으로서 관리한다. 특히, 코어 저장소(304)는 하나 이상의 로직 볼륨 부분(306)(해칭이 없는 부분) 및 다른 부분(308)(해칭이 있는 부분)으로서 관리될 수 있다. 파일 시스템(302)은 컴퓨팅 시스템에 저장된 데이터 단위를 관리하기 위한 로직 볼륨(310)을 정의하도록 로직 볼륨 부분(306)을 관리한다. 로직 볼륨(310)은 데이터 검색 및 데이터 저장을 수행하기 위해 실질적으로 통상적인 방식으로 파일 시스템(302)에 의해 관리될 수 있다.
다른 부분(308)은 컴퓨팅 디바이스(300)에서 데이터 세그먼트들을 관리 및 저장하기 위해 콘텐츠 어드레싱가능 저장소(content addressable storage, CAS)(312)를 정의하도록 파일 시스템(302)에 의해 사용된다. 데이터 검색 및 데이터 저장을 수행하기 위해, 파일 시스템(302) 및 CAS(312)는 다음과 같이 동작한다.
데이터 검색에 대해, 본 기술은, 전술된 바와 같이, 데이터 단위가 액세스 파일 및 하나 이상의 데이터 세그먼트들에 의해 나타나는 것을 허용한다. 따라서, 그러한 데이터 단위 또는 그의 부분들이 요청에 응답하여 컴퓨팅 디바이스에 의해 액세스될 필요가 있는 경우, 파일 시스템(302)은, 데이터 단위에 대한 액세스 파일을 처리하고 요청에 필요한 데이터 세그먼트들을 판정하도록 구성된다.
본 기술에서, 액세스 파일들의 위치는 변할 수 있다. 일부 구성에서, 액세스 파일들은 컴퓨팅 디바이스(300) 내에 저장될 수 있다. 또한, 컴퓨팅 디바이스(300) 내에서는, 액세스 파일들이 하나 이상의 위치에 저장될 수 있다. 예를 들어, 액세스 파일들은 하나 이상의 구성에서 로직 볼륨(310) 내에 저장될 수 있다. 일 구성에서, 액세스 파일들은 로직 볼륨(310)에 저장된 임의의 데이터 단위와 함께 추가 파일로서 로직 볼륨(310)에 저장된다. 다른 구성에서, 로직 볼륨(310)의 일부분 또는 심지어 별도의 로직 볼륨(도시되지 않음)은 액세스 파일들의 저장을 위해 별도로 설정될 수 있다. 그러나, 액세스 파일들은 로직 볼륨 내에 저장되지 않아도 된다. 더 정확히 말하면, 컴퓨팅 디바이스(300) 내의 다른 데이터 저장 위치가 대신 사용될 수 있다. 예를 들어, 파일 시스템(302)은 액세스 파일들을 저장하기 위한 전용 메모리 또는 캐시를 가질 수 있다.
그러면, 파일 시스템(302)은, 이러한 정보를 이용하여, 데이터 세그먼트가 파일 시스템 내에서 이용가능한지의 여부를 판정하기 위해 CAS(312)를 분석 또는 질의할 수 있다. 일부 구성에서, 분석은 CAS(312)의 스캔으로서, 액세스 파일에 기초하여 획득된 해시 값들을 포함하는 데이터 세그먼트들이 그에 저장되는지의 여부를 판정할 수 있다. 다른 구성에서, 파일 시스템(302)은 컴퓨팅 디바이스(300)에서 유지되는 테이블에 액세스할 수 있는데, 이는 데이터 세그먼트들이 저장되는 CAS(312) 내의 위치들 및 CAS(312) 내의 위치들 각각과 관련된 해시 값들의 리스트를 포함한다. 그 후, 데이터 세그먼트가 희망 해시 값과 관련되는 CAS(312) 내에 존재하는지의 여부가 판정된다.
액세스 파일로부터의 해시 값과 매칭하는 데이터 세그먼트가 CAS(312)에서 이용가능하지 않으면, 데이터 세그먼트는 대신에 원격 저장소(314)로부터 검색되어 CAS(312)에 배치될 수 있다. 원격 저장소(314) 내에서의 데이터 세그먼트들의 로케이팅(locating)은 CAS(312)에서의 데이터 세그먼트들의 로케이팅과 동일하거나 상이한 방식으로 수행될 수 있다. 일단 데이터 세그먼트가 CAS(312)에서 이용가능하다면, 데이터가 필요에 따라 데이터 세그먼트로부터 추출될 수 있다. 일단 CAS(312)가 데이터 세그먼트들로 충진되고 추가 데이터 세그먼트들이 검색될 필요가 있다면, 더 오래되거나 덜 빈번하게 사용되는 데이터 세그먼트들은 겹쳐쓰기될 수 있다. 유사하게, 데이터 단위가 로직 볼륨(310)에 추가될 필요가 있고 CAS(312)가 데이터 세그먼트들로 충진된다면, 더 오래되거나 덜 빈번하게 사용되는 데이터 세그먼트들은 로직 볼륨이 확장되는 것을 허용하도록 겹쳐쓰기될 수 있다. 데이터 세그먼트들을 검색하고 그에 액세스하기 위한 프로세스는 도 6과 관련하여 아래에서 더 상세히 설명될 것이다.
데이터 저장(즉, 로직 저장소(310) 내의 데이터 단위를 액세스 파일 및 데이터 세그먼트들로 변환하는 것)에 대해, 파일 시스템(302)은 액세스 파일 및 데이터 세그먼트들을 생성하기 위해 데이터 단위를 처리하도록 구성된다. 이어서, 데이터 세그먼트들은 적어도 CAS(312)에 복사될 수 있다. 또한, 데이터 세그먼트들은 원격 저장소(314)에 복사될 수 있다. 이어서, 로직 저장소(310) 내의 데이터 단위는 삭제될 수 있고, 그러면 컴퓨팅 시스템(300)은 데이터 액세스 파일 및 데이터 세그먼트들에 의해 정의되는 데이터 단위의 버전에 의존할 수 있다. 데이터 저장 프로세스는 도 4 및 도 5와 관련하여 아래에서 더 상세히 설명될 것이다.
이제, 도 4 내지 도 8을 참조하면, 전술된 바와 같이, 컴퓨팅 디바이스에 대한 파일 시스템의 다양한 특징부들을 구현하는 데 액세스 파일들 및 데이터 세그먼트들의 구조를 이용하기 위한 다양한 방법들이 제공된다.
먼저, 데이터 단위를 변환하기 위한 예시적인 방법 및 시스템이 도 4 및 도 5와 관련하여 설명될 것이다. 도 4는 본 기술에 따라 데이터 단위를 액세스 파일 및 관련 데이터 세그먼트들로 변환하기 위한 예시적인 방법(400)에서의 단계들의 플로우차트이다. 도 5는 데이터 단위를 액세스 파일 및 관련 데이터 세그먼트들로 변환하고 저장하기 위한 컴퓨팅 디바이스, 예컨대 도 3에서의 컴퓨팅 디바이스(300) 내의 예시적인 시스템(500)의 개략도이다. 도 5에 도시된 바와 같이, 제어기(502)는 명령어 또는 구성 정보(504)를 제어하고 시스템(500)의 구성요소에 제공하여 방법(400)을 수행하도록 제공될 수 있다. 구성 정보(504)는, 도 2와 관련하여 전술된 바와 같이, 세그먼트화 방식 정보, 해싱 방식 정보, 및 위치 정보를 포함할 수 있다.
방법(400)은 블록(402)에서 시작하여 블록(404)으로 진행한다. 블록(404)에서, 변환될 데이터 단위가 선택될 수 있다. 예를 들어, 도 5에 도시된 바와 같이, 제어기(502)는 로컬 저장소(508) 내의 특정 데이터 단위(506)가 액세스 파일 및 데이터 세그먼트들로 변환될 필요가 있다는 것을 판정할 수 있다. 일부 구성에서, 블록(404)에서의 선택은 하나 이상의 인자 또는 기준에 기초하는 자동적 선택일 수 있다. 그러한 기준은, 몇 가지만 예로 들면, 용도, 연식, 및 크기를 포함할 수 있다. 그러나, 본 기술은 이와 관련하여 제한되지 않으며, 제어기(502)는 임의의 다른 인자 또는 인자들의 조합을 분석하여 데이터 단위(506)를 식별하도록 구성될 수 있다. 다른 구성에서, 블록(404)에서의 선택은 수동적 선택일 수 있다. 즉, 사용자가 로컬 저장소(508) 내의 데이터 단위를 직접적으로 식별할 수 있다. 또 다른 구성에서는, 데이터 단위(506)의 자동적 및 수동적 식별의 조합이 제공될 수 있다.
일단 데이터 단위(506)가 블록(404)에서 선택되면, 방법(400)은 블록(406)에서 데이터 단위(506)를 데이터 세그먼트들로 분할하는 것으로 시작하는 데이터 단위의 처리를 계속한다. 예를 들어, 도 5에 도시된 바와 같이, 데이터 단위(506)는 구성 정보(504)에 기초하여 데이터 세그먼트들(514)을 생성하기 위해 세그먼트화 시스템(510)의 데이터 단위 프로세서(512) 내로 지향될 수 있다. 데이터 세그먼트들(514)로의 데이터 단위(506)의 세그먼트화는 다양한 기준에 따라 수행될 수 있다. 기준은 데이터 단위 프로세서(512)에 내재되거나 구성 정보(504)에서 제공되거나 또는 이들 양측 모두의 조합으로 될 수 있다. 예를 들어, 전술된 바와 같이, 기준은 데이터 세그먼트들(514)에 대한 크기를 특정할 수 있다. 기준은 또한 세그먼트화가 발생하는 데이터 단위(506) 내의 위치들을 특정할 수 있다. 예를 들어, 기준은 세그먼트화가 n개의 바이트 각각에서 발생하는 것을 특정할 수 있다. 대안적으로, 데이터 단위(506)는 기능성, 임계성, 또는 데이터 단위(506)의 상이한 부분들과 관련된 임의의 다른 특성에 기초하여 데이터 단위(504)에 대한 로직 세그먼트들 또는 세그먼트들의 그룹들을 판정하도록 분석될 수 있다. 또한, 기준은 데이터 세그먼트들(514)을 이용하고 이들과 상호작용하는 중일 시스템에 의존할 수 있다. 예를 들어, 특정 시스템 또는 통신 네트워크가 특정 크기의 또는 특정 구성을 갖는 데이터 세그먼트들로 더 효율적으로 동작한다면, 데이터 단위 프로세서(512)는 그러한 구성에 부합하도록 데이터 세그먼트들(514)을 구성하도록 구성될 수 있다. 그러나, 본 기술은 임의의 특정 세그먼트화 방식으로 제한되는 것은 아니며, 임의의 유형의 세그먼트화 방식이 사용될 수 있다.
데이터 세그먼트들(514)이 데이터 단위 프로세서(512)에 의해 블록(406)에서 생성된 후, 데이터 세그먼트들(514)에 대한 해시 값들이 블록(408)에서 생성될 수 있다. 예를 들어, 도 5에 도시된 바와 같이, 세그먼트화 시스템(510)은 또한 다양한 데이터 세그먼트들(514)에 대한 해시 값들(518)을 생성하기 위한 해싱 모듈(516)을 포함할 수 있다. 전술된 바와 같이, 임의의 유형의 해싱 방식이 본 기술에서 이용될 수 있지만, 충돌 위험을 회피시키기 위해, 실질적으로 고유한 해시 값들을 제공하는 해싱 방식이 사용될 수 있다. 그러한 목적을 위한 예시적인 해싱 방식이 SHA2이다.
일단 해시 값들(518)이 해싱 모듈(516)에 의해 블록(408)에서 계산되면, 액세스 파일은 블록(410)에서 생성 또는 어셈블될 수 있다. 특히, 세그먼트화 시스템(510)은 액세스 파일들을 생성하도록 액세스 파일 생성기(520)를 포함할 수 있다. 액세스 파일 생성기(520)는 데이터 단위(506)에 대한 메타데이터(522)와 함께 해시 값들(518)을 구성 정보(504)와 조합하여 데이터 단위(506)에 대한 액세스 파일(524) 및 데이터 세그먼트들(514)을 생성할 수 있다.
메타데이터(522)는 여러 방식으로 획득될 수 있다. 예를 들어, 도 5에 도시된 바와 같이, 데이터 단위 프로세서(512)는, 데이터 단위(506)로부터 메타데이터(522)를 추출하고 그리고 메타데이터(522)를 액세스 파일 생성기(520)로 포워드하도록 구성될 수 있다. 그러나, 본 기술은 이와 관련하여 제한되지 않으며, 세그먼트화 시스템(510)의 내부 또는 외부에서, 임의의 다른 방법이 메타데이터(522)를 획득하는 데 사용될 수 있다.
액세스 파일(524)에 포함될 해싱 방식 정보, 세그먼트화 방식 정보, 및 위치 정보에 대해, 이들은 구성 정보(504)로부터 액세스 파일 생성기(520)에 의해 획득될 수 있다. 대안적으로, 그러한 정보를 이용하는 세그먼트화 시스템(510) 내의 모듈 또는 유닛은 또한 이러한 정보를 액세스 파일 생성기(520)로 포워드할 수 있다.
블록들(408, 410)에 이어서 또는 그와 동시에, 블록(412)에서 데이터 세그먼트들(514)이 저장될 수 있다. 데이터 세그먼트들(514)이 저장되는 위치들은 로컬 저장소(508), 원격 저장소(526), 또는 이들 양측 모두의 조합을 포함할 수 있다. 일부 구성에서, 데이터 세그먼트들(514)은 항상 원격 저장소(526)에 저장되어, 도 3과 관련하여 전술된 바와 같이, 데이터 세그먼트들(514)을 겹쳐쓰기하는 것이 필요한 경우에 아카이빙 사본을 제공한다.
전술된 바와 같이, 블록(410)에서 생성된 액세스 파일(524)은 위치 정보를 포함할 것이다. 데이터 세그먼트들(514) 중 적어도 일부가 로컬 저장소(508)에 저장되는 구성에서, 로컬 저장소(508)는 액세스 파일(524)에서 식별될 수 있고, 그에 따라 로컬 시스템은 로컬 저장소(508)에서 데이터 세그먼트들(514)을 찾는다는 것을 알 것이다. 그러나, 일부 구성에서, 로컬 시스템(즉, 파일 시스템)은 데이터 세그먼트들(514)에 대한 로컬 저장소(508)를 검사하도록 구성될 수 있다. 따라서, 액세스 파일 생성기(520)는 액세스 파일 내의 위치들로부터 로컬 저장소(508)를 제외시켜 액세스 파일(524)의 크기를 더 감소시키도록 구성될 수 있다.
일단 데이터 세그먼트들(514)이 블록(412)에서 저장되고 액세스 파일(524)이 블록(410)에서 어셈블되면, 방법(400)은 블록(414)으로 진행할 수 있다. 블록(414)에서, 로컬 시스템은 액세스 파일(524)을 사용하여 데이터 단위(506)에 대한 임의의 요청을 서비스하도록 재구성될 수 있다. 이러한 프로세스는 로컬 시스템 내의 로컬 저장소(508) 또는 다른 저장소에 액세스 파일(524)을 저장하는 것 및 로컬 시스템이 액세스 파일(524)을 통해 데이터 단위에 대한 데이터에 액세스하도록 파일 시스템을 구성하는 것을 포함할 수 있다. 선택적으로, 데이터 단위(506)는 블록(416)에서 로컬 저장소(508)로부터 삭제 또는 퍼지(purge)될 수 있다. 그 후, 방법(400)은 블록(418)에서 이전 처리를 재개하는데, 이는 방법(400)을 반복하는 것을 포함할 수 있다.
도 6은 본 기술에 따라 액세스 파일 및 관련 데이터 세그먼트들을 사용하여 데이터 단위에 액세스하기 위한 예시적인 방법(600)에서의 단계들의 플로우차트이다. 방법(600)은 블록(602)에서 시작하여 블록(604)으로 계속된다. 블록(604)에서, 데이터 단위 중 적어도 선택된 부분에 액세스하라는 요청이 수신된다. 즉, 애플리케이션 또는 요청에 따라, 데이터 단위의 일부분만이 필요할 수 있다. 전형적인 컴퓨팅 디바이스에서, 로컬 시스템에서 데이터 단위에 대한 요청은 로컬 시스템에 대한 데이터 저장 디바이스를 관리하는 하나 이상의 파일 시스템에 의해 서비스된다. 따라서, 블록(604)은 파일 시스템으로의 데이터 단위의 선택된 부분에 대한 요청의 포워딩을 포함할 수 있다.
일단 요청이 블록(604)에서 파일 시스템에 의해 수신되면, 파일 시스템은 데이터 단위에 대한 요청이 블록(606)에서 어떻게 서비스되어야 하는지를 결정할 수 있다. 즉, 파일 시스템은 이 시스템이 블록(606)에서 액세스 파일 및 데이터 세그먼트들을 사용하여 데이터 단위와 관련된 요청을 서비스하도록 구성되어 있는지의 여부를 판정할 수 있다. 파일 시스템이 그와 같이 구성되어 있는 것이 아니면, 방법은 블록(608)으로 진행할 수 있고, 데이터 단위는 통상적인 방법을 이용하여 로컬 저장소로부터 검색될 수 있다. 그 후, 방법(600)은 블록(610)으로 진행할 수 있고, 방법(600)을 반복하는 것을 비롯한 이전의 처리를 재개할 수 있다.
블록(606)에서, 파일 시스템이 액세스 파일을 이용하여 데이터 단위에 대한 요청을 서비스하도록 구성된다는 것이 판정되면, 방법(600)은 블록(612)으로 진행할 수 있다. 블록(612)에서, 요청된 데이터 단위에 대한 액세스 파일은 획득되거나 액세스될 수 있다. 본 기술에서, 액세스 파일의 위치는 변할 수 있다. 일부 구성에서, 액세스 파일은 로컬 시스템의 로컬 저장소 내에, 전용 메모리 위치와 같은 특화된 위치에 또는 로컬 시스템 상에 상주하는 데이터 단위로 저장될 수 있다. 예를 들어, 로컬 시스템은 액세스 파일들을 저장하기 위한 캐시 또는 다른 예약된 메모리 영역을 포함할 수 있다. 대안적으로, 액세스 파일들은 또한 하나 이상의 원격 위치에 저장될 수 있다. 그러한 구성에서, 파일 시스템은 블록(612)에서 요청의 수신 시에 원격 위치에 액세스하고 요청을 서비스하기 위해 액세스 파일의 영구적 또는 일시적 사본을 생성하도록 구성될 수 있다.
일단 액세스 파일이 블록(612)에서 획득되면, 액세스 파일의 처리는 블록(614)에서 시작되어 요청을 서비스하는 데 필요한 데이터 세그먼트들을 획득하도록 할 수 있다. 예를 들어, 액세스 파일은 블록(614)에서 요청에 기초하여 요청에 응답할 특정 데이터 세그먼트들 및 그것들의 대응하는 해시 값들을 식별하도록 처리될 수 있다. 예를 들어, 액세스 파일 내의 메타데이터 정보 및 세그먼트화 방식 정보는 데이터 세그먼트들 중 어느 것이 요청과 관련되는지를 판정하는 데 이용될 수 있다. 이 후, 이어서, 세그먼트화 방식 정보 및 해시 ID 정보는 식별된 데이터 세그먼트들에 대한 해시 값들을 결정하는 데 사용될 수 있다. 전체 데이터 단위가 필요한 경우, 모든 데이터 단위에 대한 해시 값들이 획득된다. 그러나, 데이터 세그먼트들 중 일부만이 필요한 경우, 그들 세그먼트들에 대한 해시 값들만이 검색될 필요가 있다. 그러나, 본 기술은 이와 관련하여 제한되지 않는다. 즉, 임의의 수의 해시 값들이, 그들이 요청을 서비스하는 데 필요한 데이터 세그먼트들에 대한 해시 값들을 포함하는 한, 획득될 수 있다.
이러한 구성의 이점들 중 하나는, 여러 차례 사용자가 전형적으로 데이터 단위의 특정 부분으로의 액세스를 요구하고 완전한 데이터 단위로의 즉각적 액세스를 요구하지 않는다는 것이다. 예를 들어, 오디오 또는 비디오 콘텐츠로 이루어진 데이터 단위의 경우, 현재 디스플레이되고 있는 오디오 또는 비디오 콘텐츠의 부분과 더하여 일부 추가 부분(예컨대, 콘텐츠의 일부 버퍼링을 제공하기 위함)에 대응하는 데이터 단위의 부분들로의 액세스를 제공하는 것만이 필요할 수 있다. 따라서, 본 기술은 데이터 단위 및 관련 데이터 세그먼트들의 그러한 부분들의 식별을 허용한다.
블록(614)에서 데이터 세그먼트들이 식별되고 그들의 해시 값들이 획득된 후, 블록(616)에서 로컬 저장소는 식별된 데이터 세그먼트들로의 액세스를 제공하도록 구성될 수 있다. 이러한 블록은, 먼저, 식별된 데이터 세그먼트들의 위치들을 결정하기 위해 다양한 저장 위치에서의 검색을 수행하는 것을 포함할 수 있는데, 특히, 이것은 식별된 데이터 세그먼트들에 대한 해시 값들을 다양한 저장 위치들에서 이용가능한 데이터 세그먼트들에 대한 해시 값들과 비교하는 것을 포함한다. 일부 구성에서, 다양한 위치들에서의 데이터 세그먼트들의 해시 값들은 동적으로 계산될 수 있는데, 다른 구성에서는, 다양한 저장 위치들에서의 데이터 세그먼트들의 해시 값들이 미리 계산될 수 있다. 그러한 구성에서, 이들 해시 값들은 데이터 세그먼트들과는 이격되어 있거나 데이터 세그먼트들 내에 내장되는 데이터 파일에 저장될 수 있다.
검색되는 위치들과 관련하여, 위치들은 적어도 액세스 파일 내에 특정되는 위치를 포함할 수 있다. 그러나, 검색되는 위치들은 또한 다른 위치들을 포함할 수 있다. 예를 들어, 로컬 시스템 내의 저장 위치들이 또한 검색될 수 있다. 그러나, 본 기술은 이와 관련하여 제한되지 않으며, 방법(600)은 로컬 및 원격 위치들을 포함한 임의의 다른 검색용 디폴트 위치를 포함하도록 구성될 수 있다. 또한, 전술된 바와 같이, 액세스 파일 또는 로컬 시스템에서 특정되는 바와 같이, 위치들은 사전에 정의된 순서로 검색될 수 있다.
전술된 검색을 수행하는 것 외에도, 블록(616)은 또한 로컬 시스템 내의 식별된 세그먼트들의 사본을 영구적으로 또는 일시적으로 생성함으로써 식별된 세그먼트들을 포함하도록 로컬 저장소를 구성하는 것을 포함할 수 있다. 본 기술에서, 로컬 시스템에서 식별된 세그먼트들을 저장하기 위한 위치들은 변할 수 있다. 일부 구성에서, 식별된 세그먼트들은 로컬 시스템의 로컬 저장소 내에서, 전용 메모리 위치와 같은 특화된 위치에 또는 로컬 시스템 상에 상주하는 데이터 단위로 저장될 수 있다. 예를 들어, 로컬 시스템은 식별된 세그먼트들을 저장하기 위한 캐시 또는 다른 예약된 메모리 영역을 포함할 수 있다.
로컬 시스템이 블록(616)에서 식별된 데이터 세그먼트들을 포함하도록 구성된 후, 방법은 블록(618)으로 진행한다. 이어서, 블록(618)에서, 요청은 로컬 시스템 내의 데이터 세그먼트들을 이용하여 서비스될 수 있다. 즉, 데이터는 전체 데이터 단위를 이용가능하게 할 필요 없이 요청에 대한 데이터를 제공하기 위해 데이터 세그먼트들로부터 추출될 수 있다. 이어서, 방법(600)은 블록(610)으로 계속될 수 있고 방법(600)을 반복하는 것을 비롯한 이전의 처리를 재개할 수 있다.
도 6과 관련하여 전술된 바와 같이, 로컬 저장소 내의 데이터 세그먼트들을 이용하여 요청을 서비스하는 것이 가능하다. 그러나, 데이터 단위의 상당 부분이 데이터 세그먼트들을 통해 빈번하게 액세스되고 있는 경우, 로컬 시스템에서 데이터 단위를 리어셈블하는 것이 더 효율적일 수 있다. 이러한 프로세스는 도 7에 도시되어 있다. 도 7은 본 기술에 따라 액세스 파일 및 관련 데이터 세그먼트들을 데이터 단위로 변환하기 위한 예시적인 방법(700)에서의 단계들의 플로우차트이다. 방법(700)은 블록(702)에서 시작하여 블록(704)으로 계속된다.
블록(704)에서, 로컬 시스템에 저장될 데이터 단위가 선택된다. 전술된 바와 같이, 데이터 단위는 데이터 단위와 관련된 데이터 세그먼트들의 사용 빈도와 같은 사용 기준에 기초하여 선택될 수 있다. 그러나, 본 기술은 이와 관련하여 제한되지 않으며, 임의의 다른 기준이 데이터 단위를 선택하는 데 사용될 수 있다. 예를 들어, 추가 공간이 로컬 시스템에서 이용가능하면, 하나 이상의 데이터 단위가 데이터 세그먼트들을 통하는 대신에 국부적으로 저장될 수 있다. 다른 예에서, 데이터 단위가 아카이빙될 필요가 있거나 사본이 생성될 필요가 있으며, 데이터 단위를 어셈블하는 것이 필요할 수 있다. 데이터 단위를 선택하기 위한 임의의 다른 기준이 또한 본 기술에서 이용될 수 있다.
데이터 단위가 블록(704)에서 선택된 후, 데이터 단위에 대한 모든 데이터 세그먼트들이 블록(706)에서 검색될 수 있다. 이것은 도 6과 관련하여 전술된 바와 실질적으로 동일한 방식으로 수행될 수 있다. 그 후, 일단 모든 데이터 세그먼트들이 로컬 시스템에서 이용가능하면, 데이터 세그먼트들은 블록(708)에서 데이터 단위를 리어셈블하는 데 사용될 수 있다. 특히, 액세스 파일 내의 세그먼트화 방식 정보, 메타데이터, 및 다른 정보를 사용하여, 데이터 세그먼트들에 존재하는 임의의 정보와 조합하여, 데이터 단위를 리어셈블하도록 데이터 세그먼트들을 정확한 배열로 배치할 수 있다.
일단 데이터 단위가 블록(708)에서 로컬 시스템에서 리어셈블되면, 이어서, 로컬 시스템은 블록(710)에서 재구성될 수 있다. 즉, 리어셈블된 데이터 단위가 로컬 시스템에서 유지되는 것이라면, 로컬 시스템은 블록(710)에서 리어셈블된 데이터 단위를 사용하여 데이터 단위를 이용하기 위한 미래의 요청을 서비스하도록 재구성될 수 있다.
선택적으로, 로컬 시스템이 리어셈블된 데이터 단위를 이용하도록 블록(710)에서 재구성된 후, 액세스 파일 및 관련 데이터 청크(chunk)들이 블록(712)에서 삭제될 수 있다. 일부 경우에 있어서, 이것은 로컬 시스템에서의 액세스 파일 및 관련 데이터 청크들을 삭제하는 것을 포함할 수 있다. 따라서, 그러한 구성은 원격 시스템에 데이터 단위의 아카이빙 사본을 유지한다. 대안적으로, 블록(712)은 로컬 시스템 및 하나 이상의 원격 시스템 양측 모두에서의 액세스 파일 및 관련 데이터 청크들을 삭제하는 것을 포함할 수 있다. 결과적으로, 원격 시스템에서의 데이터 단위의 아카이빙 사본이 삭제될 수 있다. 그러나, 일부 경우에 있어서, 삭제는 데이터 단위가 로컬 시스템으로부터 부주의로 삭제되는 경우에 또는 데이터 단위의 "클린" 사본이 로컬 시스템에서 이후에 필요로 되는 경우에 파일의 백업 사본을 제공하기 위해 비-아카이빙 원격 시스템으로 제한될 수 있다.
전술된 바와 같이, 본 기술에 따라 구성된 파일 시스템은 통상의 방법에 비해 감소된 양의 공간을 이용하는 문서 버전 매김 시스템(document versioning system)을 제공한다. 이러한 버전 매김 시스템의 동작은 도 8과 관련하여 아래에 나타나 있다. 도 8은 본 기술에 따라 데이터 단위의 상이한 버전들을 생성하기 위한 예시적 방법(800)에서의 단계들의 플로우차트이다.
방법(800)은 블록(802)에서 시작하여 블록(804)으로 진행한다. 블록(804)에서, 파일 시스템은 로컬 시스템에 복사된 적어도 하나의 데이터 세그먼트가 업데이트되었다는 것을 검출한다. 예를 들어, 파일 시스템은 사용자가 데이터 세그먼트 내의 데이터를 변경하라는 커맨드를 발행했다는 것을 검출할 수 있다. 대안적으로, 파일 시스템은 데이터 세그먼트에 대한 해시 값이 액세스 파일에 따라 더 이상 해시 값과 매칭하지 않는다는 것을 검출할 수 있다. 데이터 세그먼트 내의 변화를 검출하기 위한 임의의 다른 방법이 또한 제한 없이 사용될 수 있다.
일단 데이터 세그먼트의 변화가 블록(804)에서 검출되면, 방법(800)은 블록(806)으로 진행하여 데이터 단위의 새로운 버전을 생성한다. 특히, 블록(806)에서, 파일 시스템은 업데이트된 데이터 세그먼트(들)를 이용하여 업데이트된 액세스 파일을 생성한다. 업데이트된 액세스 파일은 오리지널 데이터 세그먼트와 관련된 것과 실질적으로 유사하다. 그러나, 업데이트된 액세스 파일은 업데이트된 데이터 세그먼트(들)에 대한 해시 값에 관한 정보를 포함하도록 생성된다. 또한, 업데이트된 액세스 파일에 대한 메타데이터 또는 다른 정보는 업데이트된 액세스 파일이 오리지널 액세스 파일에서의 데이터 단위의 상이한 버전을 참조한다는 것을 반영하도록 조절될 수 있다. 예를 들어, 업데이트된 액세스 파일은 오리지널 액세스 파일을 다시 참조하는 정보를 추가로 포함할 수 있다.
일부 경우에 있어서, 업데이트된 데이터 세그먼트에 응답하여 완전한 액세스 파일을 생성하는 대신, 업데이트된 액세스 파일은 업데이트된 데이터 세그먼트(들) 및 오리지널 액세스 파일 내의 정보에 기초하여 데이터 단위의 새로운 버전을 어떻게 생성하는지를 나타내는 정보를 포함하도록 구성될 수 있다. 즉, 업데이트된 액세스 파일은 오리지널 액세스 파일을 식별하는 정보, 및 데이터 단위의 새로운 버전에 액세스하기 위한 데이터 세그먼트들을 획득하도록 오리지널 액세스 파일에 필요한 변화를 식별하는 정보를 포함하도록 구성될 수 있다.
업데이트된 액세스 파일의 구성과는 무관하게, 일단 업데이트된 액세스 파일이 블록(806)에서 생성되면, 방법(800)은 블록(808)으로 진행한다. 블록(808)에서, 업데이트된 데이터 세그먼트들은 미래의 액세스를 위해 액세스 파일과 관련된 저장 위치에 저장될 수 있다. 블록(808)은 또한 공유된 환경에서 원격 위치에 업데이트된 액세스 파일을 저장하는 것을 포함할 수 있다. 즉, 다른 사용자가 업데이트된 데이터 세그먼트들을 통해 업데이트된 데이터 단위에 액세스할 수 있도록 다른 사용자에 의해 액세스가능한 저장 위치에 액세스 파일을 저장하는 것.
블록(808)에 이어서 또는 그와 동시에, 방법(800)은 블록(810)을 수행할 수 있다. 블록(810)에서, 로컬 시스템은 로컬 시스템이 업데이트된 액세스 파일을 이용하여 데이터의 새로운 버전에 대한 요청을 서비스하도록 재구성될 수 있다. 블록들(808, 810)에 이어서, 방법(800)은 선택적으로 블록(812)으로 진행할 수 있다. 블록(812)에서, 오리지널 액세스 파일은 오리지널 데이터 단위가 로컬 시스템에서 추가로 사용되지 않을 경우에 로컬 시스템으로부터 삭제될 수 있다. 예를 들어, 로컬 시스템에서의 사용자의 의도가 오리지널 데이터를 겹쳐쓰기하는 것인 경우. 유사하게, 업데이트된 데이터 세그먼트(들)만이 사용될 경우, 오리지널 데이터 세그먼트들이 로컬 시스템으로부터 삭제될 수 있다. 마지막으로, 방법(800)은 블록(814)으로 진행할 수 있고, 방법(800)을 반복하는 것을 비롯한 이전의 처리를 재개할 수 있다.
전술된 데이터 세그먼트 방식들을 이용하여 로컬 저장소의 용량을 확장하기 위한 방법을 제공하는 다양한 실시예가 전술되어 있지만, 본 기술은 이와 관련하여 제한되지 않는다. 일부 실시예에서, 데이터 세그먼트들의 사용은 또한 로컬 시스템의 성능을 향상시키는 데 사용될 수 있다.
많은 경우에 있어서, 컴퓨팅 디바이스는 다양한 데이터 전송 속도, 액세스 속도, 또는 메모리 디바이스에 대해 데이터를 판독하거나 기록하는 것에 관한 다른 데이터 액세스 메트릭(metric)을 갖는 다양한 유형의 메모리 디바이스로 이루어질 수 있다. 예를 들어, 솔리드 스테이트 드라이브와 같은 솔리드 스테이트 저장 디바이스는 전형적으로, 자기 헤드를 구비한 하드디스크 드라이브와 같은 자기 저장 디바이스보다 현저히 더 높은 액세스 속도를 갖는다. 그러나, 솔리드 스테이트 드라이브의 메가바이트 당 비용은 전형적으로 자기 헤드를 구비한 하드디스크 드라이브의 메가바이트 당 비용보다 현저히 더 높다. 따라서, 자기 헤드를 구비한 하드디스크 드라이브는 여전히 많은 유형의 컴퓨팅 디바이스에서 주요 저장 매체로 남아 있다.
그러나, 많은 경우에, 컴퓨팅 디바이스에 의해 사용되는 데이터의 양이 전형적으로 자기 헤드를 구비한 하드디스크 드라이브의 총 저장 용량보다 현저히 적다는 것은 주목할 가치가 있다. 따라서, 본 기술의 일 태양은 효율적인 합성 저장소를 제공하기 위해 데이터 세그먼트들의 사용을 레버리지(leverage)하는 것이다. 그러한 합성 저장 디바이스의 동작 및 구성은 도 9와 관련하여 아래에서 설명된다.
도 9는 본 기술의 대안적인 실시예에 따라 구성된 컴퓨팅 디바이스(900)의 개략도이다. 전술된 바와 같이, 컴퓨팅 디바이스(900)는 제1 물리적 디바이스(904) 및 제2 물리적 디바이스(906)를 관리하는 파일 시스템(902)으로 이루어질 수 있다. 예시의 목적으로, 제1 물리적 디바이스(904)는 높은 액세스 속도 및 낮은 저장 용량을 갖는 저장 볼륨이고, 제2 물리적 디바이스(906)는 낮은 액세스 속도 및 높은 저장 용량을 갖는 저장 볼륨이다. 예를 들어, 제1 물리적 디바이스(904)는 자기 디스크 드라이브일 수 있고, 제2 물리적 디바이스(906)는 솔리드 스테이트 디스크 드라이브(solid-state disk drive)일 수 있다.
도 9의 예시적인 실시예가 파일 시스템과 관련하여 설명되지만, 이것은 단지 설명의 용이성을 위한 것이다. 그러나, 본 명세서에서 설명된 다수의 저장 디바이스의 제어는 파일 시스템 레벨, 볼륨 관리자 레벨, 또는 심지어 디바이스 드라이버 레벨에서 제한 없이 실질적으로 동일한 방식으로 구현될 수 있다.
동작 시, 데이터는 세그먼트화된 형태로 제2 물리적 디바이스(906)에서 컴퓨팅 디바이스(900)에 의해 국부적으로 저장될 수 있다. 그러한 데이터 세그먼트들의 생성 및 저장은 전술된 방법들 중 임의의 것에 따라 발생할 수 있는데, 여기서 제2 물리적 디바이스(906)는 전술된 원격 저장 디바이스와 실질적으로 동일한 방식으로 동작한다. 결과적으로, 파일 시스템(902)은 특정 데이터 단위를 제2 물리적 디바이스(906)에 저장된 특정한 일련의 데이터 세그먼트들과 관련시키도록 구성될 수 있다.
통상의 시스템에서, 컴퓨팅 디바이스(900)가 그 후에 데이터 단위의 적어도 일부를 요청한다면, 컴퓨팅 디바이스(900)는 제2 물리적 디바이스(906)에서 적절한 데이터 세그먼트들에 간단히 액세스할 것이다. 그러나, 다양한 실시예에서, 그러한 액세스를 제공하는 대신, 적절한 데이터 세그먼트들이 제1 물리적 디바이스(904)에 복사된다. 또한, 파일 시스템(902)은 복사된 데이터 세그먼트들에 대한 미래의 요청이 제1 물리적 디바이스(904)에 의해 서비스되도록 재구성된다. 결과적으로, 제1 및 제2 물리적 디바이스들(904, 906)은 단일의 로직 저장 디바이스(908)로서 동작하며, 여기서 데이터 세그먼트들은 데이터 세그먼트의 사본이 제1 물리적 디바이스(904)에서 생성되었는지의 여부에 따라 디바이스들(904, 906) 중 하나로부터 검색된다. 예를 들어, 파일 시스템(902)은, 제1 물리적 디바이스(904)로부터 데이터 단위들(910)과 관련된 데이터 세그먼트들에 액세스하고 그리고 제2 물리적 디바이스(906)로부터 데이터 단위들(912)과 관련된 데이터 세그먼트들에 액세스하도록 구성될 수 있다.
더 중요하게는, 컴퓨팅 디바이스가 전형적으로 다수의 데이터 단위들에 반복적으로 액세스하므로, 더 빠른 제1 물리적 디바이스(904)를 통한 대응하는 데이터 세그먼트들의 액세스는 또한 컴퓨팅 디바이스(900)에 대한 전반적으로 향상된 성능을 초래할 것이다.
제1 물리적 디바이스(904)의 저장 용량이 모두 사용되는 이벤트 시, 그에 저장된 데이터 세그먼트들은 겹쳐쓰기 또는 삭제될 수 있다. 전술된 바와 같이, 어느 데이터 세그먼트들이 삭제 또는 겹쳐쓰기될 수 있는지를 선택하는 데 임의의 유형의 방식이 이용될 수 있다. 그러한 경우에 있어서, 데이터 세그먼트의 어떠한 수정도 제1 물리적 디바이스(904)에서 발생하지 않았다면, 데이터 세그먼트는 간단히 겹쳐쓰기 또는 삭제될 수 있고, 파일 시스템(902)은 제2 물리적 디바이스(906)를 통한 데이터 세그먼트로의 액세스를 제공하도록 재구성될 수 있다. 데이터 세그먼트의 수정이 제1 물리적 디바이스(904)에서 발생했다면, 제1 물리적 디바이스(904)에서의 데이터 세그먼트는 제2 물리적 디바이스(906)에서의 대응하는 데이터 세그먼트를 겹쳐쓰기하는 데 이용될 수 있다. 데이터 세그먼트들을 제2 물리적 디바이스(906)에 역으로 복사하는 것이 성능에 영향을 미칠 수 있지만, 전형적인 컴퓨팅 디바이스에서, 액세스되고 있는 데이터의 상당한 부분(90% 이상)은 전형적으로 수정되지 않은 상태로 남아 있다. 따라서, 대부분의 경우에 있어서, 추가적인 복사 동작이 필요하지 않고, 데이터 세그먼트의 삭제/겹쳐쓰기는 일반적으로 파일 시스템을 업데이트하는 동작만으로 이루어질 것이다.
대안적으로, 제1 물리적 디바이스(904)로부터의 수정된 데이터 세그먼트 및 제2 물리적 디바이스(906)에서의 대응하는 데이터 세그먼트는 둘 모두가 제2 물리적 디바이스(906)에서 유지될 수 있다. 그러한 경우에 있어서, 이러한 배열은, 전술된 바와 같이, 데이터 단위의 상이한 버전을 저장하도록 파일 시스템(902)에 의해 이용될 수 있다. 본 발명은 제1 물리적 디바이스(904)에서의 데이터 세그먼트의 수정에 응답하여, 제1 물리적 디바이스(904)로부터 데이터 세그먼트를 삭제하는 일 없이 데이터 단위의 상이한 버전의 저장을 제공하도록, 수정된 데이터 세그먼트가 제2 물리적 디바이스(906)에 자동적으로 복사될 수 있다는 것도 또한 고려한다.
도 9의 예시적인 실시예가 액세스 속도에서의 차이와 관련하여 설명되지만, 본 기술에 따른 합성 저장 디바이스는 데이터 전송 속도, 액세스 속도, 또는 임의의 다른 관심 대상의 메트릭을 포함한 데이터 액세스 메트릭에서의 차이를 갖는 디바이스들에 기초할 수 있다.
본 발명은 도 9와 관련하여 전술된 합성 저장 방식이 독립적으로 또는 전술된 기법들 중 임의의 것과 결합하여 사용될 수 있다는 것을 고려한다. 즉, 데이터 세그먼트들은 로컬-로컬 기반으로, 원격-로컬 기반으로, 또는 둘 모두로 이용될 수 있다.
이들 예에 따른 다른 구현예는 컴퓨터 실행가능 명령어 또는 데이터 구조를 전달하거나 이것들이 저장되는 컴퓨터 판독가능 매체를 포함한다. 그러한 컴퓨터 판독가능 매체는 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 제한이 아닌 예로서, 그러한 유형적인 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장소, 자기 디스크 저장 디바이스 또는 다른 자기 저장 디바이스, 솔리드 스테이트 디스크 저장소, 또는 컴퓨터 실행가능 명령어 또는 데이터 구조의 형태인 희망 프로그램 코드 수단을 전달하거나 저장하는 데 사용될 수 있는 임의의 다른 매체를 포함할 수 있다.
컴퓨터 실행가능 명령어는, 예를 들어, 범용 컴퓨터, 특수 목적 컴퓨터, 또는 특수 목적 처리 디바이스로 하여금 소정의 기능 또는 일군의 기능들을 수행하게 하는 명령어 및 데이터를 포함한다. 컴퓨터 실행가능 명령어는 또한 독립형 또는 네트워크 환경에서 컴퓨터에 의해 실행되는 프로그램 모듈을 포함한다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상적 데이터 유형을 구현하는 루틴, 프로그램, 객체, 구성요소, 및 데이터 구조를 포함한다. 컴퓨터 실행가능 명령어, 연관된 데이터 구조, 및 프로그램 모듈은 본 명세서에 개시된 방법의 단계들을 실행하기 위한 프로그램 코드 수단의 예를 나타낸다. 그러한 실행가능 명령어의 특정 시퀀스 또는 관련 데이터 구조는 그러한 단계에서 설명되는 기능을 구현하기 위한 대응하는 작동의 예를 나타낸다.
당업자라면, 본 발명의 다른 실시예가 개인용 컴퓨터, 핸드헬드 디바이스, 멀티프로세서 시스템, 마이크로프로세서-기반 또는 프로그래밍가능 가전 제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터 등을 비롯한 많은 유형의 컴퓨터 시스템 구성을 갖는 네트워크 컴퓨팅 환경에서 실시될 수 있음을 인식할 것이다. 실시예는 또한 작업이 통신 네트워크를 통해 (유선 링크, 무선 링크, 또는 이들의 조합에 의해) 연결되어 있는 로컬 및 원격 처리 디바이스들에 의해 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서는, 프로그램 모듈이 로컬 메모리 저장 디바이스 및 원격 메모리 저장 디바이스 둘 모두에 위치될 수 있다.
설명된 시스템의 다양한 스테이지에서의 통신은 근거리 통신망, 토큰 링 네트워크, 인터넷, 회사 인트라넷, 802.11 시리즈 무선 신호, 광섬유 네트워크, 무선 또는 마이크로파 송신 등을 통해 수행될 수 있다. 기초 통신 기술이 변경될 수 있지만, 본 명세서에서 설명된 기본 원리는 여전히 응용가능하다.
전술된 다양한 실시예는 단지 예로서 제공되는 것이며, 제한하는 것으로 해석되어서는 안 된다. 당업자라면, 본 명세서에 예시되고 설명된 예시적인 실시예 및 응용을 따르면서 본 발명의 진실된 사상 및 범주로부터 벗어남이 없이, 이루어질 수 있는 다양한 수정 및 변경을 인식할 것이다.

Claims (28)

  1. 로컬 시스템에 저장된 데이터 유닛을, 상기 데이터 유닛과 연관된 액세스 파일(access file) 및 하나 이상의 데이터 세그먼트(data segment)들로 변환하기 위해, 선택하는 단계;
    상기 데이터 유닛과 연관된 상기 액세스 파일 및 상기 하나 이상의 데이터 세그먼트들을 생성하기 위하여 상기 로컬 시스템에 저장된 상기 데이터 유닛을 처리하는 단계 - 상기 하나 이상의 데이터 세그먼트들의 각각은 상기 데이터 유닛의 상이한 부분을 나타냄 -;
    상기 하나 이상의 데이터 세그먼트들을 하나 이상의 위치들에 저장하는 단계;
    상기 하나 이상의 데이터 세그먼트들의 각각에 대해 해시 값(hash value)을 계산하는 단계;
    상기 액세스 파일을 어셈블하는 단계 - 상기 액세스 파일은 상기 데이터 유닛에 대한 메타데이터, 상기 하나 이상의 데이터 세그먼트들의 구성(configuration)을 상술하는 세그먼트화 방식 정보(segmenting scheme information), 상기 하나 이상의 데이터 세그먼트들의 각각과 연관된 상기 해시 값에 대해 사용되는 해싱 방식의 타입을 상술하는 해싱 방식 정보(hashing scheme information), 상기 하나 이상의 데이터 세그먼트들의 각각과 연관된 상기 해시 값을 설명하는 해시 식별 정보, 및 상기 하나 이상의 데이터 세그먼트들이 위치한 하나 이상의 리소스들의 상기 하나 이상의 위치들을 식별하는 위치 정보를 포함하고, 상기 하나 이상의 위치들은 하나 이상의 신뢰되는 균일 리소스 위치자(uniform resource locator: URL) 스트링들에 의해 상술됨 -;
    상기 액세스 파일 및 상기 하나 이상의 데이터 세그먼트들을 이용함으로써, 상기 데이터 유닛에 대한 요청을 서비스(service)하도록 상기 로컬 시스템과 연관된 파일 시스템을 재구성하는 단계 - 상기 재구성하는 단계 전에, 상기 파일 시스템은 상기 액세스 파일을 이용하지 않고 상기 데이터 유닛에 대한 상기 요청을 서비스하도록 구성됨 -; 및
    상기 데이터 유닛을 상기 로컬 시스템으로부터 삭제하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서, 적어도 하나의 기준에 기초하여 상기 데이터 유닛을 선택하는 단계를 추가로 포함하는, 방법.
  3. 제1항에 있어서, 상기 위치 정보는 상기 하나 이상의 위치들을 액세스하기 위한 순서를 나타내는, 방법.
  4. 제1항에 있어서, 상기 하나 이상의 데이터 세그먼트들의 각각은 동일한 크기가 되도록 구성되는, 방법.
  5. 제1항에 있어서, 상기 해시 식별 정보는 상기 하나 이상의 데이터 세그먼트들의 각각과 연관된 상기 해시 값에 기초하여 계산되는 적어도 하나의 합성 해시 값(composite hash value)을 포함하는, 방법.
  6. 제5항에 있어서, 상기 적어도 하나의 합성 해시 값은 상기 하나 이상의 데이터 세그먼트들과 연관된 관계 정보를 저장하고, 상기 관계 정보는 상기 데이터 유닛 내의 상기 하나 이상의 데이터 세그먼트들의 배열을 기술하는, 방법.
  7. 파일 시스템을 포함하는 컴퓨팅 디바이스를 포함하는 시스템으로서, 상기 파일 시스템은 상기 컴퓨팅 디바이스가,
    상기 컴퓨팅 디바이스에 저장된 데이터 유닛을, 상기 데이터 유닛과 연관된 액세스 파일 및 하나 이상의 데이터 세그먼트들로 변환하기 위해, 선택하는 단계;
    상기 컴퓨팅 디바이스에 저장된 상기 데이터 유닛을 상기 데이터 유닛과 연관된 상기 액세스 파일 및 상기 하나 이상의 데이터 세그먼트들로 변환하는 단계;
    상기 하나 이상의 데이터 세그먼트들을 하나 이상의 위치들에 저장하는 단계;
    상기 하나 이상의 데이터 세그먼트들의 각각에 대해 해시 값을 계산하는 단계;
    상기 데이터 유닛에 대한 요청을 서비스하도록 상기 액세스 파일을 어셈블하는 단계 - 상기 액세스 파일은 상기 데이터 유닛에 대한 메타데이터, 상기 하나 이상의 데이터 세그먼트들의 구성을 상술하는 세그먼트화 방식 정보, 상기 하나 이상의 데이터 세그먼트들의 각각과 연관된 상기 해시 값에 대해 사용되는 해싱 방식의 타입을 상술하는 해싱 방식 정보, 상기 하나 이상의 데이터 세그먼트들의 각각과 연관된 상기 해시 값을 설명하는 해시 식별 정보, 및 상기 하나 이상의 데이터 세그먼트들이 위치한 하나 이상의 리소스들의 상기 하나 이상의 위치들을 식별하는 위치 정보를 포함하고, 상기 하나 이상의 위치들은 하나 이상의 신뢰되는 균일 리소스 위치자(uniform resource locator: URL) 스트링들에 의해 상술됨 -;
    상기 액세스 파일 및 상기 하나 이상의 데이터 세그먼트들을 이용함으로써, 상기 데이터 유닛에 대한 상기 요청을 서비스하도록 상기 파일 시스템을 재구성하는 단계 - 상기 재구성하는 단계 전에, 상기 파일 시스템은 상기 액세스 파일을 이용하지 않고 상기 데이터 유닛에 대한 상기 요청을 서비스하도록 구성됨 -; 및
    상기 데이터 유닛을 상기 컴퓨팅 디바이스로부터 삭제하는 단계
    를 포함하는 단계들을 수행하게끔 제어하도록 구성되는, 시스템.
  8. 제7항에 있어서, 상기 하나 이상의 위치들은 통신 링크를 통해 상기 컴퓨팅 디바이스에 의해 액세스가능한 하나 이상의 원격 저장 위치들을 포함하는, 시스템.
  9. 제7항에 있어서, 상기 컴퓨팅 디바이스는 상기 액세스 파일을 저장하기 위한, 상기 파일 시스템에 의해 관리되는 전용 저장소를 포함하는, 시스템.
  10. 삭제
  11. 삭제
  12. 제7항에 있어서, 상기 데이터 유닛은, 상기 하나 이상의 데이터 세그먼트들을 저장하는 단계 및 상기 액세스 파일을 어셈블하는 단계에 응답하여, 상기 컴퓨팅 디바이스로부터 삭제되는, 시스템.
  13. 명령어들을 저장하도록 구성되는 비일시적 컴퓨터 판독가능 매체로서, 상기 명령어들은 컴퓨팅 디바이스에 포함된 프로세서에 의해 실행될 때, 상기 컴퓨팅 디바이스가,
    적어도 데이터 유닛의 부분에 액세스하라는 상기 컴퓨팅 디바이스에서의 요청에 응답하여, 상기 컴퓨팅 디바이스로부터 상기 데이터 유닛을 검색(retrieve)하는 대신에, 상기 데이터 유닛에 대응하는 하나 이상의 데이터 세그먼트들 및 액세스 파일을 이용함으로써 상기 컴퓨팅 디바이스와 연관된 파일 시스템이 상기 데이터 유닛의 상기 부분에 대한 상기 요청을 서비스하도록 구성되었는지 여부를 판정하는 단계; 및
    상기 데이터 유닛에 대응하는 상기 하나 이상의 데이터 세그먼트들 및 상기 액세스 파일을 이용함으로써 상기 파일 시스템이 상기 데이터 유닛의 상기 부분에 대한 상기 요청을 서비스하도록 구성되었다는 판정에 응답하여:
    상기 데이터 유닛에 대응하는 상기 액세스 파일을 획득하고 - 상기 액세스 파일은 상기 데이터 유닛에 대한 메타데이터, 상기 하나 이상의 데이터 세그먼트들의 구성을 상술하는 세그먼트화 방식 정보, 상기 하나 이상의 데이터 세그먼트들의 각각과 연관된 해시 값에 대해 사용되는 해싱 방식의 타입을 상술하는 해싱 방식 정보, 상기 하나 이상의 데이터 세그먼트들의 각각과 연관된 상기 해시 값을 설명하는 해시 식별 정보, 및 상기 하나 이상의 데이터 세그먼트들이 위치한 하나 이상의 리소스들의 하나 이상의 위치들을 식별하는 위치 정보를 포함하고, 상기 하나 이상의 위치들은 하나 이상의 신뢰되는 균일 리소스 위치자(URL) 스트링들에 의해 상술됨 -,
    상기 하나 이상의 데이터 세그먼트들로부터 상기 데이터 유닛의 상기 부분에 대응하는 적어도 하나의 데이터 세그먼트를 식별하여 적어도 하나의 식별된 데이터 세그먼트를 산출하도록 상기 액세스 파일을 처리하고,
    상기 적어도 하나의 식별된 데이터 세그먼트와 연관된 상기 해시 값과 상기 액세스 파일 내의 상기 위치 정보에 기초하여, 상기 적어도 하나의 식별된 데이터 세그먼트를 포함하도록 상기 컴퓨팅 디바이스의 로컬 저장소를 구성하고,
    상기 로컬 저장소 내의 상기 적어도 하나의 식별된 데이터 세그먼트로부터 추출된 데이터를 이용하여 상기 요청을 서비스하는 단계 - 상기 액세스 파일 및 상기 하나 이상의 데이터 세그먼트들을 이용함으로써 상기 요청을 서비스하도록 구성되기 전에, 상기 파일 시스템은 상기 액세스 파일을 이용하지 않고 상기 요청을 서비스하도록 구성됨 -
    를 포함하는 단계들을 수행하게 하는,
    비일시적 컴퓨터 판독가능 매체.
  14. 제13항에 있어서, 상기 액세스 파일을 획득하는 것은 통신 링크를 통해 상기 컴퓨팅 디바이스에 의해 액세스가능한 원격 시스템으로부터 상기 액세스 파일을 검색(retrieving)하는 것을 추가로 포함하는, 비일시적 컴퓨터 판독가능 매체.
  15. 제13항에 있어서, 상기 액세스 파일을 처리하는 것은 상기 메타데이터 및 상기 세그먼트화 방식 정보에 기초하여 상기 적어도 하나의 식별된 데이터 세그먼트를 결정하는 것을 추가로 포함하는, 비일시적 컴퓨터 판독가능 매체.
  16. 제13항에 있어서, 상기 로컬 저장소를 구성하는 것은,
    획득된 해시 값을 산출하도록, 상기 해싱 방식 정보 및 상기 해시 식별 정보에 기초하여 상기 적어도 하나의 식별된 데이터 세그먼트에 대한 상기 해시 값을 획득하는 것;
    상기 획득된 해시 값에 기초하여 상기 적어도 하나의 식별된 데이터 세그먼트가 상기 로컬 저장소에 존재하는지 여부를 판정하는 것;
    상기 적어도 하나의 식별된 데이터 세그먼트가 상기 로컬 저장소에 존재하지 않는다는 판정에 응답하여, 상기 액세스 파일에서 상술되는 상기 하나 이상의 위치들 중 적어도 하나의 위치로부터 상기 적어도 하나의 식별된 데이터 세그먼트를 검색하는 것; 및
    상기 적어도 하나의 식별된 데이터 세그먼트를 상기 로컬 저장소에 저장하는 것을 추가로 포함하는, 비일시적 컴퓨터 판독가능 매체.
  17. 적어도 데이터 유닛의 부분에 대한 컴퓨팅 디바이스에서의 요청에 응답하여, 상기 컴퓨팅 디바이스로부터 상기 데이터 유닛을 검색하는 대신에, 상기 데이터 유닛에 대응하는 하나 이상의 데이터 세그먼트들 및 액세스 파일을 이용함으로써 상기 컴퓨팅 디바이스와 연관된 파일 시스템이 상기 데이터 유닛의 상기 부분에 대한 상기 요청을 서비스하도록 구성되었는지 여부를 판정하는 단계; 및
    상기 데이터 유닛에 대응하는 상기 하나 이상의 데이터 세그먼트들 및 상기 액세스 파일을 이용함으로써 상기 파일 시스템이 상기 데이터 유닛의 상기 부분에 대한 상기 요청을 서비스하도록 구성되었다는 판정에 응답하여:
    상기 데이터 유닛에 대응하는 상기 액세스 파일을 획득하고 - 상기 액세스 파일은 상기 데이터 유닛에 대한 메타데이터, 상기 데이터 유닛의 하나 이상의 상이한 부분들을 정의하는 상기 하나 이상의 데이터 세그먼트들을 저장하는 하나 이상의 위치들을 식별하는 위치 정보, 상기 하나 이상의 데이터 세그먼트들의 구성을 상술하는 세그먼트화 방식 정보, 상기 하나 이상의 데이터 세그먼트들의 각각과 연관된 해시 값에 대해 사용되는 해싱 방식의 타입을 상술하는 해싱 방식 정보, 및 상기 하나 이상의 데이터 세그먼트들의 각각과 연관된 상기 해시 값에 기초한 해시 식별 정보를 포함하고, 상기 하나 이상의 위치들은 하나 이상의 신뢰되는 균일 리소스 위치자(URL) 스트링들에 의해 상술됨 -,
    적어도 하나의 식별된 데이터 세그먼트를 산출하도록, 상기 하나 이상의 데이터 세그먼트들로부터 상기 데이터 유닛의 상기 부분에 대응하는 적어도 하나의 데이터 세그먼트를 식별하고,
    상기 적어도 하나의 식별된 데이터 세그먼트와 연관된 상기 해시 값과 상기 액세스 파일 내의 상기 위치 정보에 기초하여, 상기 적어도 하나의 식별된 데이터 세그먼트를 포함하도록 상기 컴퓨팅 디바이스의 로컬 저장소를 구성하고,
    상기 로컬 저장소 내의 상기 적어도 하나의 식별된 데이터 세그먼트로부터 추출된 데이터를 이용하여 상기 요청을 서비스하는 단계 - 상기 액세스 파일 및 상기 하나 이상의 데이터 세그먼트들을 이용함으로써 상기 요청을 서비스하도록 구성되기 전에, 상기 파일 시스템은 상기 액세스 파일을 이용하지 않고 상기 요청을 서비스하도록 구성됨 -
    를 포함하는 방법.
  18. 제17항에 있어서, 상기 로컬 저장소를 구성하는 것은 상기 로컬 저장소가 상기 적어도 하나의 식별된 데이터 세그먼트에 대해 불충분한 공간을 갖는 것에 응답하여, 현재 사용 중이 아닌 하나 이상의 다른 데이터 세그먼트들을 삭제하는 것을 추가로 포함하는, 방법.
  19. 제18항에 있어서, 상기 하나 이상의 다른 데이터 세그먼트들은 적어도 상기 컴퓨팅 디바이스에서의 상기 하나 이상의 다른 데이터 세그먼트들의 사용의 이력에 기초하여 삭제를 위해 선택되는, 방법.
  20. 제17항에 있어서,
    상기 적어도 하나의 식별된 데이터 세그먼트의 사용이 사용 기준을 충족시키는 경우:
    상기 컴퓨팅 디바이스에서 상기 데이터 유닛을 리어셈블하여 리어셈블된 데이터 유닛을 산출하고,
    상기 리어셈블된 데이터 유닛을 이용하여 상기 요청을 서비스하는 단계 - 상기 데이터 유닛은 상기 액세스 파일에 기초하여 리어셈블됨 -
    를 추가로 포함하는, 방법.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
KR1020147022841A 2012-01-17 2013-01-14 위치 독립적 파일 KR101631004B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/351,987 US9195666B2 (en) 2012-01-17 2012-01-17 Location independent files
US13/351,987 2012-01-17
PCT/US2013/021375 WO2013109490A1 (en) 2012-01-17 2013-01-14 Location independent files

Publications (2)

Publication Number Publication Date
KR20140114040A KR20140114040A (ko) 2014-09-25
KR101631004B1 true KR101631004B1 (ko) 2016-06-15

Family

ID=47599179

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147022841A KR101631004B1 (ko) 2012-01-17 2013-01-14 위치 독립적 파일

Country Status (8)

Country Link
US (1) US9195666B2 (ko)
EP (1) EP2805261A1 (ko)
JP (1) JP5886447B2 (ko)
KR (1) KR101631004B1 (ko)
CN (1) CN104160397B (ko)
AU (1) AU2013210018B2 (ko)
TW (1) TWI609277B (ko)
WO (1) WO2013109490A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8806499B2 (en) * 2008-05-15 2014-08-12 Novell, Inc. Mechanism to build dynamic locations to reduce brittleness in a team environment
US20140279933A1 (en) * 2013-03-14 2014-09-18 Konica Minolta Laboratory U.S.A., Inc. Hashing Schemes for Managing Digital Print Media
US10097431B1 (en) * 2014-06-06 2018-10-09 Amazon Technologies, Inc. Routing to tenant services utilizing a service directory
US10250455B1 (en) 2014-06-06 2019-04-02 Amazon Technologies, Inc. Deployment and management of tenant services
CN105389316A (zh) * 2014-09-05 2016-03-09 上海科泰世纪科技有限公司 文件管理系统和方法
JP6405831B2 (ja) * 2014-09-25 2018-10-17 富士ゼロックス株式会社 情報処理装置、通信システム及びプログラム
CN105528347B (zh) * 2014-09-28 2019-03-26 北京古盘创世科技发展有限公司 数据块储存方法、数据查询方法和数据修改方法
WO2016154918A1 (zh) * 2015-03-31 2016-10-06 华为技术有限公司 一种数据处理方法、装置及设备
CN106257450B (zh) * 2015-06-19 2019-09-17 杭州海康威视数字技术股份有限公司 集群系统的文件定位、存储方法和装置
DE102016214671B3 (de) 2016-08-08 2017-12-21 Audi Ag Verfahren zum Übertragen einer Datei zwischen einer Steuervorrichtung eines Kraftfahrzeugs und einer fahrzeugexternen Servervorrichtung, Steuervorrichtung und Kraftfahrzeug
US10552075B2 (en) * 2018-01-23 2020-02-04 Vmware, Inc. Disk-image deduplication with hash subset in memory
CA3109862A1 (en) * 2020-02-20 2021-08-20 Comcast Cable Communications, Llc Systems, methods, and apparatuses for storage management
CN111782632A (zh) * 2020-06-28 2020-10-16 百度在线网络技术(北京)有限公司 数据处理方法、装置、设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090271454A1 (en) * 2008-04-29 2009-10-29 International Business Machines Corporation Enhanced method and system for assuring integrity of deduplicated data
US20100138384A1 (en) * 2003-10-27 2010-06-03 Andres Rodriguez Policy-based management of a redundant array of independent nodes
US20110016132A1 (en) * 2009-07-14 2011-01-20 Fujitsu Limited Archive device

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6269382B1 (en) * 1998-08-31 2001-07-31 Microsoft Corporation Systems and methods for migration and recall of data from local and remote storage
AU3826901A (en) * 2000-02-18 2001-08-27 Undoo Inc Hash file system and method for use in a commonality factoring system
US20040030731A1 (en) 2002-04-03 2004-02-12 Liviu Iftode System and method for accessing files in a network
US20040117437A1 (en) 2002-12-16 2004-06-17 Exanet, Co. Method for efficient storing of sparse files in a distributed cache
JP4349301B2 (ja) * 2004-11-12 2009-10-21 日本電気株式会社 ストレージ管理システムと方法並びにプログラム
US7499586B2 (en) 2005-10-04 2009-03-03 Microsoft Corporation Photographing big things
US8161353B2 (en) * 2007-12-06 2012-04-17 Fusion-Io, Inc. Apparatus, system, and method for validating that a correct data segment is read from a data storage device
CN101546320B (zh) * 2008-03-27 2011-11-16 北京兴宇中科科技开发股份有限公司 一种基于滑动窗口的数据差异分析方法
US8909606B2 (en) * 2008-06-10 2014-12-09 Google Inc. Data block compression using coalescion
US8086634B2 (en) * 2008-10-07 2011-12-27 Hitachi, Ltd. Method and apparatus for improving file access performance of distributed storage system
CN101620618B (zh) * 2009-07-24 2011-11-30 中兴通讯股份有限公司 内存存储数据的维护方法与装置
US8464133B2 (en) * 2009-10-30 2013-06-11 Cleversafe, Inc. Media content distribution in a social network utilizing dispersed storage
JP5691229B2 (ja) * 2010-04-08 2015-04-01 日本電気株式会社 オンラインストレージシステム、及びオンラインストレージサービスの提供方法
US9063656B2 (en) * 2010-06-24 2015-06-23 Dell Gloval B.V.—Singapore Branch System and methods for digest-based storage
WO2012112121A1 (en) * 2011-02-17 2012-08-23 Jitcomm Networks Pte Ltd Parallel data partitioning

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100138384A1 (en) * 2003-10-27 2010-06-03 Andres Rodriguez Policy-based management of a redundant array of independent nodes
US20090271454A1 (en) * 2008-04-29 2009-10-29 International Business Machines Corporation Enhanced method and system for assuring integrity of deduplicated data
US20110016132A1 (en) * 2009-07-14 2011-01-20 Fujitsu Limited Archive device

Also Published As

Publication number Publication date
AU2013210018B2 (en) 2016-04-21
TWI609277B (zh) 2017-12-21
CN104160397B (zh) 2018-03-06
JP5886447B2 (ja) 2016-03-16
WO2013109490A1 (en) 2013-07-25
JP2015510174A (ja) 2015-04-02
TW201346601A (zh) 2013-11-16
KR20140114040A (ko) 2014-09-25
US9195666B2 (en) 2015-11-24
AU2013210018A1 (en) 2014-08-07
US20130185266A1 (en) 2013-07-18
CN104160397A (zh) 2014-11-19
EP2805261A1 (en) 2014-11-26

Similar Documents

Publication Publication Date Title
KR101631004B1 (ko) 위치 독립적 파일
US11599546B2 (en) Stream browser for data streams
CN107003935B (zh) 用于优化数据库去重的装置、方法和计算机介质
US11853334B2 (en) Systems and methods for generating and using aggregated search indices and non-aggregated value storage
JP5878548B2 (ja) 重複排除ストレージ・システム、その内部の合成バックアップを容易にする方法、及び、プログラム
US10740184B2 (en) Journal-less recovery for nested crash-consistent storage systems
KR20170008152A (ko) 불휘발성 메모리 장치에서의 데이터 특성 기반 데이터 배치
KR102187127B1 (ko) 데이터 연관정보를 이용한 중복제거 방법 및 시스템
JP6598996B2 (ja) データ準備のためのシグニチャベースのキャッシュ最適化
US20090063422A1 (en) Search engine system using snapshot function of storage system
KR20160003682A (ko) 플레이스홀더에 의한 하이드레이션 및 디하이드레이션 기법
US9696936B2 (en) Applying a maximum size bound on content defined segmentation of data
US9244830B2 (en) Hierarchical content defined segmentation of data
JP5160483B2 (ja) ストレージシステム及びデータマイグレーション対応検索システム
US20150302021A1 (en) Storage system
US10585802B1 (en) Method and system for caching directories in a storage system
US9483483B2 (en) Applying a minimum size bound on content defined segmentation of data
CN111930684A (zh) 基于hdfs的小文件处理方法、装置、设备及存储介质
US10664442B1 (en) Method and system for data consistency verification in a storage system
JP5441791B2 (ja) 検索機能付きファイルストレージ装置及びプログラム
JP2016139288A (ja) 検索装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190515

Year of fee payment: 4