KR20160004285A - 플레이스홀더에 의한 파일 관리 기법 - Google Patents

플레이스홀더에 의한 파일 관리 기법 Download PDF

Info

Publication number
KR20160004285A
KR20160004285A KR1020157031225A KR20157031225A KR20160004285A KR 20160004285 A KR20160004285 A KR 20160004285A KR 1020157031225 A KR1020157031225 A KR 1020157031225A KR 20157031225 A KR20157031225 A KR 20157031225A KR 20160004285 A KR20160004285 A KR 20160004285A
Authority
KR
South Korea
Prior art keywords
file system
client
placeholder
local
metadata
Prior art date
Application number
KR1020157031225A
Other languages
English (en)
Other versions
KR102128139B1 (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 KR20160004285A publication Critical patent/KR20160004285A/ko
Application granted granted Critical
Publication of KR102128139B1 publication Critical patent/KR102128139B1/ko

Links

Images

Classifications

    • G06F17/30174
    • 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/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • G06F17/30153

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)
  • Information Transfer Between Computers (AREA)

Abstract

본 명세서에 기술된 발명대상은 파일 시스템 플레이스홀더(placeholder)에 관한 것이다. 어떤 면에서, 플레이스홀더는 원격 파일 시스템 객체를 나타내기 위해 클라이언트에 의해 사용될 수 있다. 플레이스홀더는 메타데이터를 포함할 수 있으며, 또한 표현된 원격 파일 시스템 객체의 콘텐츠 전부 또는 일부를 포함할 수도 있고 하나도 포함하지 않을 수도 있다. 플레이스홀더는 로컬 파일 시스템 메타데이터와 함께 파일 시스템 네임스페이스가 내비게이트되게 할 수 있으며, 또한 클라이언트가 원격 파일 시스템에 대해 오프라인 상태인 경우에도 파일 시스템 객체에 대해 다른 동작들이 수행되게 할 수 있다. 플레이스홀더는 원격 파일 시스템과의 접속이 재확립된 후에, 변경사항을 동기화하는데 사용될 수도 있다.

Description

플레이스홀더에 의한 파일 관리 기법{FILE MANAGEMENT WITH PLACEHOLDERS}
요즘에는, 가족이나 또는 심지어 한 개인이 데스크탑 컴퓨터, 랩탑, 스마트폰, 인터넷 가능 텔레비전, 셋탑 박스, 게임 장치, 리딩 태블릿(reading tablet) 등과 같은 복수의 컴퓨팅 장치를 갖는 것이 특별하지 않다. 게다가, 한 사용자가 클라우드나 또는 그 밖의 다른 장소에 저장되어 있는 사진, 오디오, 문서 등을 포함하는 수천 개의 파일을 가질 수도 있다. 사용자는 자신이 이용할 수 있는 컴퓨팅 장치들 중 하나 이상에서 이들 파일에 액세스하기를 원할 수도 있다.
사용자 장치들 중 일부는 매우 제한된 저장 공간을 가질 수 있기 때문에, 사용자의 콘텐츠 전부를 자신의 장치들 각각에 다운로드하는 것은 가능하지 않을 수도 있다. 게다가, 한 컴퓨팅 장치가 막대한 저장 공간을 가질 경우에도, 콘텐츠를 그 컴퓨팅 장치에 다운로드하는 것은 상당한 대역폭을 소모할 수 있고 비용이 많이 들 수 있으며, 또한 시간이 많이 걸릴 수 있다.
본원의 청구항의 청구대상은 어떠한 문제점을 해결하거나 전술한 바와 같은 환경에서만 동작하는 실시예들로 한정되지 않는다. 오히려, 이 배경기술은 본 명세서에 기술된 일부 실시예들이 실시될 수 있는 하나의 예시적인 기술분야를 예시하기 위해 제공될 뿐이다.
요컨대, 본 명세서에 기술된 발명대상은 파일 시스템 플레이스홀더(placeholder)에 관한 것이다. 어떤 면에서, 플레이스홀더는 원격 파일 시스템 객체를 나타내기 위해 클라이언트에 의해 사용될 수 있다. 플레이스홀더는 메타데이터를 포함할 수 있으며, 또한 표현된 원격 파일 시스템 객체의 콘텐츠 중 전부 또는 일부를 포함할 수도 있고 하나도 포함하지 않을 수도 있다. 플레이스홀더는 로컬 파일 시스템 메타데이터와 함께 파일 시스템 네임스페이스가 내비게이트되게 할 수 있으며, 또한 클라이언트가 원격 파일 시스템에 대해 오프라인인 경우에도 파일 시스템 객체에 대해 다른 동작들이 수행되게 할 수 있다. 플레이스홀더는 원격 파일 시스템과의 접속이 재확립된 후에, 변경사항을 동기화하는데 사용될 수도 있다.
본 개요는 후속하여 발명의 상세한 설명 부분에서 설명되는 개념들 중 선택된 것들을 단순화된 형태로 소개하고자 제공되는 것이다. 본 개요는 청구항의 청구대상의 핵심적인 특징이나 필수적인 특징들을 밝히고자 함이 아니며, 청구항의 청구대상의 범위를 결정하는 데 도움이 되고자 함도 아니다.
"본 명세서에 기술된 발명대상"이란 말은 문맥상 다른 의미를 분명하게 나타내지 않는 한 상세한 설명에 기술된 발명대상을 지칭한다. "특징(aspect)"은 "적어도 하나의 특징"으로 이해해야 한다. 상세한 설명에 기술되어 있는 발명대상의 특징을 밝히는 것은 청구항의 청구대상의 핵심적인 특징이나 필수적인 특징을 밝히고자 함이 아니다.
전술한 특징들 및 본 명세서에 기술되어 있는 다른 특징들은 예로서 설명되며 첨부 도면으로 한정되지 않으며, 도면에서 유사 참조번호는 유사한 구성요소를 나타낸다.
도 1은 본 명세서에 기술된 발명대상의 특징이 구체화될 수 있는 예시적인 범용 컴퓨팅 환경을 나타내는 블록도이다.
도 2 내지 3은 본 명세서에 기술된 발명대상의 특징에 따른, 플레이스홀더를 사용하도록 구성된 예시적인 시스템 컴포넌트를 일반적으로 나타내는 블록도이다.
도 4는 본 명세서에 기술된 발명대상의 특징에 따른 클라이언트 입장에서 발생할 수 있는 예시적인 동작들을 일반적으로 나타내는 흐름도이다.
도 5는 본 명세서에 기술된 발명대상의 특징에 따른, 클라우드 저장 시스템 입장에서 발생할 수 있는 예시적인 동작들을 일반적으로 나타내는 흐름도이다.
본 명세서에서 사용된 바와 같이, "포함" 및 그 변형어들은 "포함하지만, 이들로 한정되지는 않는"다는 것을 의미하는 제한이 없는 용어로서 이해되어야 한다. "또는"이란 용어는 문맥이 명확하게 달리 지시하지 않는 한 "및/또는"으로 이해되어야 한다. "기초하여"란 용어는 "적어도 부분적으로 기초하여"로 이해되어야 한다. "일실시예"란 용어는 "적어도 하나의 실시예"로서 이해되어야 한다. "다른 실시예"란 용어는 "적어도 하나의 다른 실시예"로서 이해되어야 한다.
본 명세서에서 사용된 단수형은 하나 이상의 지시된 항목 또는 동작을 포괄한다. 특히, 청구항들에서 한 항목에 대한 참조는 일반적으로 적어도 하나의 그러한 항목이 존재하며 동작에 대한 참조는 동작의 적어도 한 예가 수행됨을 의미한다.
때론, 본 명세서에서 "제1", "제2", "제3" 등의 용어가 사용될 수 있다. 추가적인 컨텍스트가 없다면, 청구범위에서의 이들 용어의 사용은 어떠한 순서를 의미하고자 하는 것이 아니라 오히려 식별 목적을 위해 사용된다. 예를 들어, "제1 버전" 및 "제2 버전"이란 용어는 반드시 제1 버전이 첫 번째 버전이라거나 또는 제2 버전 이전에 생성되었다거나 또는 제1 버전이 제2 버전 이전에 요청되었거나 조작되었다는 것을 의미하지는 않는다. 오히려 이들 용어는 상이한 버전을 식별하는데 사용된다.
표제는 단지 편의를 위한 것으로, 주어진 주제에 대한 정보는 표제가 그 주제를 나타내는 섹션 밖에 있을 수도 있다.
명시적 및 암시적인 다른 정의들이 아래에 포함될 수도 있다.
예시적인 운영 환경
도 1은 본 명세서에 기술된 발명 대상의 특징이 구현될 수 있는 적절한 컴퓨팅 시스템 환경(100)의 일실시예를 도시한 것이다. 컴퓨팅 시스템 환경(100)은 단지 하나의 적절한 컴퓨팅 환경의 일례일 뿐이며 본 명세서에 기술된 발명대상의 사용 또는 기능의 범위에 대한 어떠한 제한을 암시하기 위한 것은 아니다. 컴퓨팅 환경(100)은 예시적인 운영 환경(100)으로 도시된 컴포넌트들 중 어느 하나 또는 조합과 관련하여 어떠한 의존성 또는 요건을 갖는 것으로 해석되어서는 안 된다.
본 명세서에 기술된 발명대상의 특징은 수많은 다른 범용 또는 특수목적 컴퓨팅 시스템 환경 또는 구성과 함께 사용가능하다. 본 명세서에 기술된 발명대상의 특징과 함께 사용하기에 적절할 수 있는 잘 알려진 컴퓨팅 시스템, 환경, 또는 구성의 예로는, 개인용 컴퓨터, (베어 메탈(bare metal)로의 또는 가상 머신으로서의) 서버 컴퓨터, 핸드헬드 또는 랩탑 장치, 멀티프로세서 시스템, 마이크로컨트롤러 기반 시스템, 셋탑 박스, 프로그램가능 및 프로그램불가능 가전, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, PDA(personal digital assistant), 게이밍 장치, 프린터, 셋탑, 미디어 센터, 또는 기타 어플라이언스들을 포함하는 어플라이언스, 자동차 내장 또는 부착 컴퓨팅 장치, 기타 모바일 장치, 셀 폰, 무선 전화기, 및 유선 전화기를 포함하는 전화 장치, 전술한 시스템 또는 장치 중 어느 하나를 포함하는 분산 컴퓨팅 환경 등을 들 수 있다.
본 명세서에 기술된 발명대상의 특징은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어의 일반적인 맥락에서 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정한 태스크를 수행하거나 특정한 추상화 데이터 타입을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 본 명세서에 기술된 발명대상의 특징들은 또한 통신망을 통해 링크되는 원격 처리 장치에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함한 로컬 및 원격 컴퓨터 저장 매체에 위치할 수 있다.
이에 더하여 또는 이에 갈음하여, 본 명세서에 기술된 기능은 적어도 부분적으로 하나 이상의 하드웨어 로직 컴포넌트에 의해 수행될 수 있다. 예를 들어, 제한적인 것은 아니지만, 사용될 수 있는 예시적인 유형의 하드웨어 로직은 FPGA(Field-programmable Gate Array), ASIC(Program-specific Integrated Circuit), ASSP(Program-specific Standard Product), SOC(System-on-a-chip) system), CPLD(Complex Programmable Logic Device) 등을 포함한다.
도 1을 참고하면, 본 명세서에 기술된 발명대상의 특징들을 구현하는 예시적인 시스템은 컴퓨터(110) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터는 명령어를 실행할 수 있는 임의의 전자 장치를 포함할 수 있다. 컴퓨터(110)의 컴포넌트는 제한적인 것은 아니지만 프로세싱 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함한 다양한 시스템 컴포넌트를 프로세싱 유닛(120)에 연결하는 하나 이상의 시스템 버스(시스템 버스(121)로 표현됨)를 포함할 수 있다. 시스템 버스(121)는 메모리 버스 또는 메모리 컨트롤러, 주변 버스, 및 다양한 버스 아키텍처 중 어느 하나를 이용하는 로컬 버스를 포함하는 몇몇 유형의 버스 구조들 중 임의의 버스 구조일 수 있다. 예를 들어, 이러한 아키텍처는 제한적인 것은 아니지만 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 메자닌(Mezzanine) 버스로도 알려져 있는 PCI(Peripheral Component Interconnect) 버스, PCI-X(Peripheral Component Interconnect Extended) 버스, AGP(Advanced Graphics Port), 및 PCIe(PCI express)를 포함한다.
프로세싱 유닛(120)이 하드웨어 보안 장치(122)에 연결될 수 있다. 보안 장치(122)는 컴퓨터(110)의 다양한 특징들을 보호하는데 사용될 수 있는 암호 키를 저장하고 생성할 수 있다. 일실시예에서, 보안 장치(122)는 TPM(Trusted Platform Module) 칩, TPM 보안 장치 등을 포함할 수 있다.
컴퓨터(110)는 통상적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있으며 휘발성 및 비휘발성 매체, 및 착탈식 및 비착탈식 매체를 포함한다. 예를 들어, 제한적인 것은 아니지만, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다.
컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위해 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 착탈식 및 비착탈식 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 고체 상태 저장부, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 다른 광학 디스크 저장부, 자기 카세트, 자기 테이프, 자기 디스크 저장부 또는 다른 자기 저장 장치, 또는 원하는 정보를 저장하는데 사용될 수 있으며 컴퓨터(110)에 의해 액세스될 수 있는 임의의 다른 매체를 포함한다. 컴퓨터 저장 매체는 통신 매체는 포함하지 않는다.
통신 매체는 통상적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터를 반송파나 기타 전송 메커니즘과 같은 변조된 데이터 신호로 구현하며 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"란 용어는 신호 내에 정보를 인코딩하기 위한 방식으로 설정 또는 변경된 특징들 중 하나 이상을 갖는 신호를 의미한다. 예를 들어, 제한적인 것은 아니지만, 통신 매체는 유선 네트워크 또는 직접 유선 접속과 같은 유선 매체, 음향, RF, 적외선 및 기타 무선 매체와 같은 무선 매체를 포함한다. 또한 이들의 임의의 조합 역시 컴퓨터 판독 가능 매체의 범위 내에 포함되어져야 한다.
시스템 메모리(130)는 판독 전용 메모리(ROM)(131) 및 RAM(132)과 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 시동(start-up) 중과 같은 컴퓨터(110) 내의 구성 요소 사이에서의 정보 전달을 돕는 기본 루틴을 포함하는 기본 입력/출력 시스템(133)(BIOS)은 전형적으로 ROM(131)에 저장된다. RAM(132)은 전형적으로 프로세싱 유닛(120)에 의해 즉시 액세스가능한 및/또는 현재 동작되고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 예를 들어, 도 1은 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)를 도시하고 있으나, 이에 한정되지는 않는다.
컴퓨터(110)는 또한 다른 착탈식/비착탈식의 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 예를 들어, 도 1은 비착탈식, 비휘발성 자기 매체에 대해 판독 또는 기록하는 하드 디스크 드라이브(141), 비착탈식 비휘발성 자기 디스크(152)에 대해 판독 또는 기록하는 자기 디스크 드라이브(151), 및 CD ROM, DVD 또는 기타 광학 매체와 같은 비착탈식 비휘발성 광학 디스크(156)에 대해 판독 또는 기록하는 광학 디스크 드라이브(155)를 도시하고 있다. 예시적인 동작 환경에 사용될 수 있는 다른 착탈식/비착탈식의 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래시 메모리 카드 및 다른 고체 상태 저장 장치, 디지털 다용도 디스크(DVD), 기타 광학 장치, 디지털 비디오 테이프, 솔리드 스테이트 RAM, 솔리드 스테이트 ROM 등을 포함하지만, 이에 한정되지는 않는다. 하드 디스크 드라이브(141)는 통상적으로 인터페이스(140)를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광학 디스크 드라이브(155)는 통상적으로 인터페이스(150)와 같은 착탈식 메모리 인터페이스에 의해 시스템 버스(121)에 접속될 수 있다.
도 1에 도시된 전술한 드라이브 및 이들과 관련된 컴퓨터 저장 매체는 컴퓨터(110)의 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 저장을 제공한다. 도 1에 있어서, 예를 들면, 하드 디스크 드라이브(141)는 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)를 저장하고 있는 것으로 도시되어 있다. 이들 컴포넌트는 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)와 동일하거나 또는 다를 수 있다는 점에 주의하라. 본 명세서에서 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)에는 상이한 도면 부호가 주어지며, 이는, 최소한, 이들이 다른 구성 요소임을 나타낸다.
사용자는 키보드(162) 및 일반적으로 마우스, 트랙볼 또는 터치 패드로 지칭되는 포인팅 장치(161)와 같은 입력 장치를 통해 커맨드 및 정보를 컴퓨터(110)에 입력할 수 있다. 다른 입력 장치(도시되어 있지 않음)는 (예컨대, 음성 또는 다른 오디오 입력을 위한)마이크, 조이스틱, 게임 패드, 위성 접시, 스캐너, 터치 감지 스크린, 기록 태블릿, (제스처 또는 다른 비주얼 입력을 위한)카메라 등을 포함할 수 있다. 이들 및 다른 입력 장치는 흔히 시스템 버스에 연결되어 있는 사용자 입력 인터페이스(160)를 통해 프로세싱 유닛(120)에 연결되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus)와 같은 버스 구조 및 다른 인터페이스에 의해 연결될 수도 있다.
앞에서 확인된 입력 장치들 중 하나 이상을 사용하여 NUI(Natural User Interface)가 확립될 수도 있다. NUI는 음성 인식, 터치 및 스타일러스 인식, 스크린 상에서 그리고 스크린 인근에서의 제스처 인식, 머리와 안구 추적, 음성 및 말(voice and speech), 비전(vision), 터치, 제스처, 머신 지능 등에 의존할 수 있다. 사용자와 인터랙트하도록 채용될 수 있는 일부 예시적인 NUI 기법은 터치 감지 디스플레이, 음성 및 말 인식, 의도 및 목적 이해, (입체 카메라 시스템, 적외선 카메라 시스템, RGB 카메라 시스템, 및 이들의 조합과 같이)깊이 카메라를 이용한 모션 제스처 검출, 가속도계/자이로스코프를 이용한 모션 제스처 검출, 얼굴 인식, 3D 디스플레이, 머리, 눈, 및 시선 추적, 몰입형 증강 현실 및 가상 현실 시스템 뿐만 아니라, 전기장 감지 전극을 이용하는 뇌 활동 감지를 위한 기술(EEG 및 관련 방법)을 포함한다.
모니터(191)나 또는 다른 타입의 디스플레이 장치가 비디오 인터페이스(190)와 같은 인터페이스를 통해 시스템 버스(121)에 연결된다. 모니터 외에, 컴퓨터는 또한 출력 주변 인터페이스(195)를 통해 연결될 수 있는 스피커(197) 및 프린터(196)와 같은 다른 주변 출력 장치를 포함할 수도 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터에 대한 논리 접속을 이용하여 네트워킹된 환경에서 동작할 수 있다. 메모리 저장 장치(181)만이 도 1에 도시되어 있지만, 원격 컴퓨터(180)는 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타 공통 네트워크 노드일 수 있으며, 통상적으로 컴퓨터(110)와 관련하여 전술한 요소들 전부 또는 대다수를 포함한다. 도 1에 도시된 논리 접속부는 LAN(171) 및 WAN(173)을 포함하지만, 전화망, 니어 필드 네트워크, 및 기타 네트워크들을 포함할 수도 있다. 이들 네트워킹 환경은 사무실, 기업향 컴퓨터 네트워크, 인트라넷 및 인터넷에서 흔히 볼 수 있다.
LAN 네트워킹 환경에서 사용될 경우, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용될 경우, 컴퓨터(110)는 통상적으로 모뎀(172)이나, 또는 인터넷과 같은 WAN(173)을 통해 통신을 확립하는 기타 수단을 포함한다. 모뎀(172)은 내부 또는 외부에 있을 수 있으며, 사용자 입력 인터페이스(160) 또는 기타 적절한 메커니즘을 통해 시스템 버스(121)에 연결될 수 있다. 네트워킹된 환경에서, 컴퓨터(110)에 대해 도시된 프로그램 모듈 또는 그 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 예를 들어, 제한적인 것은 아니지만, 도 1은 원격 애플리케이션 프로그램(185)을 메모리 장치(181) 상에 존재하는 것으로 도시하고 있다. 도시된 네트워크 접속은 예시적인 것이며 컴퓨터들 사이에 통신 링크를 확립하는 다른 수단이 사용될 수도 있음을 알 수 있을 것이다.
플레이스홀더 (Placeholder)
본 명세서에 기술된 발명대상의 일 특징에 따르면, 플레이스홀더가 사용될 수 있다. 플레이스홀더는 파일 시스템 객체를 나타내는 데이터 구조를 포함할 수 있다. 파일 시스템 객체는 파일 또는 디렉토리일 수 있다. 디렉토리는 0개 이상의 파일을 포함하며, 통상의 파일 디렉토리나 또는 일부 다른 파일 집합 또는 파일들의 컨테이너일 수 있다. 간략화를 위해, 파일이란 용어가 본 명세서에서 자주 사용되지만, 본 명세서의 내용은 본 명세서에 기술된 발명대상의 특징들의 사상 또는 범위로부터 벗어나지 않고 디렉토리에 적용될 수도 있다.
플레이스홀더는 머신의 로컬 저장 장치에 저장될 수 있다. 일 구현예에서, 플레이스홀더는 그 플레이스홀더와 연관된 콘텐츠가 머신의 파일 시스템(이하에서는 로컬 파일 시스템 또는 클라이언트 파일 시스템이라고도 함)과 다른 장소에서 이용가능함을 나타낼 수 있다. 예를 들어, 플레이스홀더는 플레이스홀더와 연관된 콘텐츠가 도 3에 도시된 클라우드 저장 시스템들 중 하나에 저장됨을 나타낼 수 있다.
다른 구현예에서, 플레이스홀더는, 머신 상에 존재하는 애플리케이션을 통해 콘텐츠가 액세스가능함을 나타낼 수 있다. 이 애플리케이션은 메모리, 로컬 파일 시스템 또는 원격 파일 시스템에 콘텐츠를 저장할 수도 있고, 콘텐츠를 생성할 수도 있고, 이들의 조합을 수행하거나 할 수도 있다. 파일 시스템이 콘텐츠를 직접 획득할 수 없는 경우에도, 파일 시스템은 파일의 콘텐츠에 액세스하기 위해 애플리케이션에 여전히 의존할 수 있다.
일실시예에서, 관련 콘텐츠가 비교적 작은 (예컨대 사전결정된, 구성가능한, 또는 계산된 임계치보다 작은) 플레이스홀드의 경우, 플레이스홀더와 연관된 전체 콘텐츠의 사본이 또한 플레이스홀더에 저장될 수 있다. "플레이스홀더 내에" 데이터를 저장하는 것은 플레이스홀더의 데이터 구조 내에 데이터를 저장하는 것 및/또는 플레이스홀더에 의해 표시된 로컬 저장 위치에 데이터를 저장하는 것을 포함함을 의미한다.
구현예에 따라서, 플레이스홀더는 다양한 수준의 파일에 대한 세부사항을 포함할 수 있다. 최소한, 플레이스홀더는 원격 저장 시스템에서 파일을 식별하는 데이터를 포함한다. 예를 들어, 플레이스홀더는 특정 클라우드 저장 시스템을 나타낼 수 있는데, 이 특정 클라우드 저장 시스템에서 클라우드 저장 시스템에 파일을 식별하는 정보와 함께 콘텐츠가 발견될 수 있다.
플레이스홀더는 파일의 외인성 메타데이터(extrinsic metadata) 및/또는 진성 메타데이터(intrinsic metadata)를 포함할 수 있다. 외인성 메타데이터는 파일의 콘텐츠의 외부에 저장되는 임의의 메타데이터이다. 예를 들어, 외인성 메타데이터는 이름, 크기, 수정된 데이터, 생성 날짜, 최종 액세스 날짜, 파일의 속성, 버전, 파일 시스템에 의해 유지되는 기타 메타데이터 등을 포함할 수 있다.
진성 메타데이터는 파일의 콘텐츠 내부에 저장되는 임의의 메타데이터이다. 예를 들어, 오디오 파일의 경우, 진성 메타데이터는 아티스트 이름, 앨범 이름, 년도, 노래 제목, 순위(rating), 태그, 논평, 장르, 길이, 비트 레이트 등을 포함할 수 있다. 카메라 사진과 같은 이미지의 경우, 진성 메타데이터는, 예컨대, 작가, 찍은 날짜, 프로그램명 획득, 차원, 해상도, 비트 깊이, 압축, 카메라 제조사, 카메라 모델, f-스톱, 노출 시간, 기타 정보 등을 포함할 수 있다.
전술한 진성 및 외인성 메타데이터의 예는 진성 및 외인성 메타데이터의 타입을 모두 포함하거나 이들만 포함하고자 하는 것은 아니다. 사실, 본 명세서의 개시내용에 기초하여 당업자는, 본 명세서에 기술된 발명대상의 특징들의 사상 또는 범주로부터 벗어나지 않고 본 명세서의 개시내용에 따라 사용될 수 있는 다른 외인성 및 진성 메타데이터를 쉽게 알 수 있을 것이다.
일실시예에서, 플레이스홀더는 파일의 이름, 파일의 크기, 파일이 수정된 날짜, 및 파일이 생성된 날짜와 같은 파일의 외인성 메타데이터를 포함할 수 있다. 다른 구현예에서는, 이들 외에, 플레이스홀더가 파일의 속성을 포함할 수도 있다.
다른 구현예에서는, 플레이스홀더가 파일의 진성 메타데이터 중 일부 또는 전부를 포함할 수 있다.
일 구현예에서, 플레이스홀더는 파일의 검색가능한 텍스트의 일부 또는 전부를 포함할 수 있다. 예를 들어, 워드 프로세싱 문서는 텍스트 및 포매팅을 포함하는 콘텐츠를 가질 수 있다. 플레이스홀더는 포매팅 없이 워드 프로세싱 문서의 텍스트의 처음 N개의 문자, 단어, 문단, 페이지 등을 포함할 수 있는데, 여기서 N은 사전결정되거나, 구성가능하거나 또는 온더플라이(on the fly)로 결정된다.
일 구현예에서, 플레이스홀더는 검색가능한 텍스트의 언어의 표시를 포함할 수 있다. 예를 들어, 플레이스홀더는 검색가능한 텍스트가 영어로 기록됨을 나타내는 데이터를 포함할 수 있다. 다른 예로서, 플레이스홀더는 텍스트의 일부분이 영어로 기록됨을 나타내는 데이터(예컨대, 태그 또는 기타 데이터) 및 텍스트의 다른 부분이 스페인어로 기록됨을 나타내는 데이터(예컨대, 다른 태그 또는 다른 데이터)를 포함할 수 있다.
다른 예로서, 프리젠테이션 프로그램은 프리젠테이션에 사용된 다른 데이터에 비해 상대적으로 적은 텍스트를 가질 수 있다. 이 예에서, 플레이스홀더는 프리젠테이션의 모든 텍스트를 포함하는 반면에 프리젠테이션에 사용된 다른 데이터는 생략할 수 있다.
일 구현예에서, 플레이스홀드는 이미지의 섬네일을 포함할 수 있다. 이미지는 플레이스홀더와 연관된 파일의 콘텐츠에 포함될 수 있는 반면에 섬네일은 이미지로부터 생성되거나 또는 파일의 콘텐츠에 포함될 수 있다. 일실시예에서, 플레이스홀더에 포함된 섬네일은, 사전정의되거나, 구성가능하거나 또는 온더플라이로 결정될 수 있는 비교적 작은 크기일 수 있다.
일 구현예에서, 플레이스홀더는 플레이스홀더와 연관된 콘텐츠의 보다 큰 섬네일을 획득하는 방법을 밝히는 데이터를 포함할 수 있다. 예를 들어, 플레이스홀더는 파일의 보다 큰 섬네일이 요청될 수 있는 서비스의 주소를 포함할 수 있다. 이 서비스는 제공될 섬네일의 크기를 나타내는 입력을 받아들일 수 있다.
마찬가지로, 일 구현예에서, 플레이스홀더는 플레이스홀더와 연관된 파일의 콘텐츠의 보다 낮은 충실도(lower fidelity)의 샘플(또는 샘플을 획득하는 방법을 밝히는 데이터)을 포함할 수 있다. 예를 들어, 플레이스홀더는 음악, 비디오, 또는 다른 타입의 파일의 보다 낮은 충실도의 샘플(또는 서비스에 대한 링크)을 포함할 수 있다.
일 구현예에서, 플레이스홀더는 관련 콘텐츠의 어느 부분이 로컬 파일 시스템에 위치하는지를 나타내는 데이터 구조(예컨대, 비트맵, 연결 리스트(linked list), 또는 기타 데이터 구조)를 포함할 수 있다. 이 데이터 구조는 프로그램이 콘텐츠에 액세스하고자 할 때 참고될 수 있다. 데이터 구조가 요청된 콘텐츠가 로컬로 이용가능함을 나타내면, 요청된 콘텐츠가 로컬 저장부로부터 획득될 수 있다. 만약 그렇지 않으면, 프로그램에 콘텐츠를 제공하기 전에 요청된 콘텐츠를 원격 저장소로부터 획득하기 위해 다른 액션이 취해질 수 있다.
일실시예에서, 플레이스홀더는 파일의 콘텐츠가 오프라인일 때 이용가능하게 되어야 하는지 여부를 나타내는 플래그를 가질 수 있다. 전술한 바와 같이, 클라이언트는 플레이스홀더와 연관된 콘텐츠가 발견되는 원격 저장소에 대한 접속을 주기적으로 잃는다. 만약 플래그가 설정되면, 클라이언트가 온라인일 때, 플레이스홀더의 콘텐츠는 로컬 저장부에 다운로드될 수 있고 원격 저장소가 이용가능하지 않을 때에도 콘텐츠가 이용가능하도록 로컬 저장부에 유지될 수 있다.
다양한 실시예들이 전술한 데이터 중 하나 이상을 포함하는 플레이스홀더를 가질 수 있다.
플레이스홀더는 파일의 콘텐츠가 원격지에 있는 경우에도 파일이 로컬 파일 시스템에 존재하는 착각(illusion)을 주도록 사용될 수 있다. 이 착각은 원격 파일 시스템이 도달할 수 없는 경우에도 유지될 수 있다. 이것은 플레이스홀더를 로컬 파일 시스템의 네임스페이스에 삽입함으로써 행해질 수 있다. 이 파일 시스템은, 플레이스홀더를 인식하고 플레이스홀더에 의해 표현된 파일에 대한 정보를 적절히 디스플레이하도록 수정될 수 있다. 예를 들어, 파일 시스템은 사용자가 로컬 파일 시스템의 네임스페이스를 통해 탐색할 때 플레이스홀더에 대한 관련 메타데이터 및 이름을 디스플레이할 수 있다.
플레이스홀더는 사용된 저장 공간의 양을 상당히 줄이기 위해 사용될 수 있다. 예를 들어, 대형 비디오에 대한 콘텐츠를 로컬로 저장하는 대신에 플레이스홀더는 비디오가 이용가능함을 나타내기 위해 사용될 수 있다. 플레이스홀더는 비디오의 실제 콘텐츠보다 훨씬 더 적은 양의 공간을 사용할 수 있기 때문에, 비교적 작은 로컬 저장 장치가 상당 량의 콘텐츠를 포함하는 큰 파일들의 집합을 위한 플레이스홀더를 포함할 수 있다.
플레이스홀더는 원격 저장 시스템이 이용불가능할 때 사용될 수 있다. 예를 들어, 네트워크 접속이 소실되거나 이용가능하지 않을 때, 머신은 파일 시스템의 네임스페이스 상에서 다른 동작들을 탐색하고 수행하도록 로컬로 저장된 플레이스홀더를 사용할 수 있다.
플레이스홀더는 클라이언트 머신이 정지되는 경우에도 유지된다. 따라서, 플레이스홀더는 클라이언트 머신이 재개될 때 여전히 이용가능하다. 이 지속성 동작은 클라이언트의 로컬 저장부에 플레이스홀더를 저장함으로써 구현될 수 있다.
도 2 및 3은 본 명세서에 기술된 발명대상의 특징에 따라 플레이스홀더를 사용하도록 구성된 시스템의 예시적인 컴포넌트를 일반적으로 나타내는 블록도이다. 도 2 및 3에 도시된 컴포넌트는 예시적인 것이며 필요하거나 포함될 수 있는 컴포넌트를 망라하는 것을 의미하지는 않는다. 또한, 컴포넌트의 수는 본 명세서에 기술된 발명대상의 특징들의 사상 또는 범주로부터 벗어나지 않으면서 다른 실시예에서는 상이할 수도 있다. 일부 실시예에서는, 도 2 및 3과 관련하여 기술된 컴포넌트가 (도시된 또는 도시되지 않은) 다른 컴포넌트에 포함될 수도 있고 본 명세서에 기술된 발명대상의 특징들의 사상 또는 범주로부터 벗어나지 않고 서브컴포넌트에 위치할 수도 있다. 일부 실시예에서는, 도 2 및 3과 관련하여 기술된 컴포넌트 및/또는 기능이 복수의 장치에 걸쳐 분산될 수도 있다.
본 명세서에서 사용되는 컴포넌트란 용어는 장치의 일부 또는 전부, 하나 이상의 소프트웨어 모듈의 집합 또는 그 일부분, 하나 이상의 소프트웨어 모듈 또는 그 일부분과 하나 이상의 장치 또는 그 일부분의 일부 조합 등과 같은 하드웨어를 포함하는 것으로 해석되어야 한다.
예를 들어, 도 2 및 3에 도시된 컴포넌트들은 하나 이상의 컴퓨팅 장치를 사용하여 구현될 수 있다. 그러한 장치는, 예를 들어 개인용 컴퓨터, 서버 컴퓨터, 핸드헬드 또는 랩탑 장치, 멀티프로세서 시스템, 마이크로컨트롤러 기반 시스템, 셋탑 박스, 프로그램가능 가전, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 셀 폰, PDA, 개임 장치, 프린터, 셋탑, 미디어 센터 또는 기타 어플라이언스를 포함하는 어플라이언스, 자동차 내장 또는 부착 컴퓨팅 장치, 기타 모바일 장치, 이상의 시스템 또는 장치 중 어느 하나를 포함하는 분산 컴퓨팅 환경 등을 들 수 있다.
도 2 및 3의 컴포넌트 중 하나 이상을 구현하도록 구성될 수 있는 예시적인 장치는 도 1의 컴퓨터(110)를 포함한다.
컴포넌트는 코드를 포함하거나 또는 코드로 표현될 수 있다. 코드는 컴퓨터가 취할 액션을 나타내는 명령어를 포함한다. 코드는 또한 데이터, 자원, 변수, 정의, 관계, 연관 등과 같은, 컴퓨터가 취하는 액션 이외의 정보를 포함할 수 있다.
코드는 컴퓨터에 의해 실행될 수 있다. 코드가 컴퓨터에 의해 실행될 경우, 이것을 프로세스라고 할 수 있다. 본 명세서에서 사용되는 "프로세스(process)" 및 그 변형어는 태스크를 수행하는 하나 이상의 전형적인 프로세스, 스레드, 컴포넌트, 라이브러리, 객체 등을 포함할 수 있다. 프로세스는 하드웨어, 소프트웨어 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 일실시예에서, 프로세스는 액션을 수행할 수 있거나 액션을 수행하는데 사용되는 임의의 메커니즘이다. 프로세스는 복수의 장치들 또는 단일 장치에 걸쳐 분산될 수 있다. 코드는 사용자 모드, 커널 모드, 몇몇 기타 모드, 이들의 조합 등에서 실행될 수 있다.
도 2로 돌아가서, 시스템(200)은 클라이언트(205), 원격 저장 시스템(210), 로컬 저장부(215), 플레이스홀더(220)를 포함할 수 있고, 다른 컴포넌트들(도시되지 않음)을 포함할 수 있다. 클라이언트(205)는 로컬 저장부(215)에 직접 액세스할 수도 있고 클라우드 네트워크의 사용을 통해 원격 저장 시스템(210)에 접속될 수도 있다.
"클라이언트" 및 "서버"란 용어가 본 명세서에서 사용되지만, 클라이언트는 하드웨어를 갖는 머신 및/또는 통상적으로 서버와 연관되는 소프트웨어 등으로 구현될 수도 있고, 서버는 하드웨어를 갖는 머신 및/또는 통상적으로 데스크탑, 개인용, 또는 모바일 컴퓨터와 연관되는 소프트웨어 등으로 구현될 수도 있다. 또한, 클라이언트가 때론 서버 역할을 할 수도 있고 그 역도 가능하다. 때론, 빈번하게 클라이언트 또는 서버 역할을 하는 둘 이상의 개체가 동시에 피어, 서버, 또는 클라이언트가 될 수도 있다. 일실시예에서, 클라이언트 및 서버가 동일 물리적 머신 상에서 구현될 수도 있다.
또한, 본 명세서에서 사용되는 바와 같이, "서버" 및 "클라이언트"라는 용어 각각은 하나 이상의 물리적 또는 가상 개체, 하나 이상의 물리적 또는 가상 개체 상에서 실행되는 하나 이상의 프로세스 등을 지칭할 수도 있다. 따라서, 서버는 하나 이상의 프로세스가 실행되는 실제 물리적 노드, 하나 이상의 프로세스가 실행되는 가상 노드, 하나 이상의 노드 상에서 실행되는 서비스, 서비스를 함께 제공하는 노드들의 그룹 등을 포함할 수 있다. 서비스는 하나 이상의 물리적 또는 가상 개체 상에서 실행되는 하나 이상의 프로세스를 포함할 수 있다. 또한, 단일 프로세스가 하나 이상의 서버를 구현할 수도 있다.
로컬 저장부(215)는 데이터를 저장할 수 있는 임의의 저장 매체를 포함할 수 있다. 예를 들어, 로컬 저장부(215)는 휘발성 메모리(예컨대, 캐시) 및 비휘발성 메모리(예컨대, 영구 저장부)를 포함할 수 있다. 데이터란 용어는 하나 이상의 컴퓨터 저장 요소에 의해 표현될 수 있는 어떠한 것도 포함하도록 넓게 이해되어야 한다. 논리적으로, 데이터는 휘발성 또는 비휘발성 메모리에 일련의 1과 0으로 표현될 수 있다. 이진수가 넌바이너리(non-binary) 저장 매체를 갖는 컴퓨터에서, 데이터는 저장 매체의 능력에 따라 표현될 수 있다. 데이터는 숫자, 문자 등과 같은 단순한 데이터 타입, 계층, 링크, 또는 다른 관련 데이터 타입, 복수의 다른 데이터 구조 또는 단순한 데이터 타입 등을 포함하는 데이터 구조를 포함하는 상이한 유형의 데이터 구조로 조직될 수 있다. 데이터의 예로는 정보, 프로그램 코드, 프로그램 상태, 프로그램 데이터, 기타 데이터 등을 들 수 있다.
로컬 저장부(215)는 클라이언트(205)에 대해 외부에 있을 수도 있고 내부에 있을 수도 있으며, 또는 내부에 있는 일부 컴포넌트와 외부에 있는 일부 컴포넌트를 포함할 수도 있다. 일 구현예에서, 로컬 저장부(215)는 클라이언트(205)를 호스팅하는 머신 내에 하우징되는 임의의 저장부를 포함할 수 있다. 다른 구현예에서는, 로컬 저장부(215)가 클라이언트(205)를 호스팅하는 머신에 직접 연결되는 저장부를 포함할 수도 있다. 예를 들어, 로컬 저장부(215)는 USB 링크, IEEE 1394 링크, 광학 링크, 다른 하드와이어드 링크 등을 통해 머신에 연결될 수 있다.
원격 저장 시스템(210)은 데이터에 대한 액세스를 저장하고 제공하도록 구성되는 하나 이상의 컴퓨터를 포함할 수 있다. 본 명세서에서 사용된 액세스는 데이터 판독, 데이터 기록, 데이터 삭제, 데이터 업데이트, 이들 중 둘 이상을 포함하는 조합 등을 포함할 수 있다. 원격 저장 시스템(210)은 클라우드와 같은 네트워크를 통해 클라이언트(205)에 연결될 수 있다. 클라우드는 인터넷에 대한 메타포어(metaphor)로서 흔히 사용되는 용어이다. 이것은, 사용자가 이들 자원을 전달하는 컴퓨팅 인프라에 대한 위치 또는 다른 세부사항을 알 필요없이 계산, 소프트웨어, 데이터 액세스, 저장, 및 기타 자원이 인터넷에 연결된 개체들에 의해 제공될 수 있다는 생각을 이용한다.
일실시예에서, 원격 저장 시스템(210)은 컴퓨팅 장치들이 하나의 물리적 위치에 위치하는 데이터 센터를 포함할 수 있다. 다른 예에서, 원격 저장 시스템(210)은 상이한 위치에 있는 클라우드에 소속되는 컴퓨팅 장치 및 저장부를 포함할 수 있다. 일례에서, 원격 저장 시스템(210)은 하나 이상의 저장 장치에 대한 액세스를 제공하는 단일 서버 또는 기타 컴퓨팅 장치를 포함할 수 있다. 일례에서, 원격 저장 시스템(210)은 클라이언트(205)의 LAN(local area network)에 없는 컴퓨팅 장치를 포함할 수 있다. 다른 예에서, 원격 저장 시스템(210)은 클라이언트(205) 내에 있지 않거나 또는 클라이언트(205)에 직접 연결되지 않는 임의의 저장부를 포함할 수 있다. 다른 예에서, 원격 저장 시스템(210)은 클라이언트가 저장부에 액세스가능하게 하는 네트워크에 접속되지 않은 경우에 클라이언트(205)에 이용가능하지 않은 저장부를 포함할 수 있다.
때론, 클라우드 저장 시스템이란 용어가 본 명세서에서 사용된다. 이것은 본 명세서에서의 개시내용이 적용될 수 있는 원격 저장 시스템에 대해 제한을 두기 위한 것이 아니라, 본 명세서에 기술된 발명대상의 특징들의 사상 또는 범주로부터 벗어나지 않고 사용될 수 있는 원격 저장 시스템의 일례를 제공하기 위한 것이다. 클라우드 저장 시스템이란 용어가 본 명세서에서 사용되는 경우, 다른 실시예에서는 다른 유형의 원격 저장 시스템이 본 명세서에 기술된 발명대상의 특징들의 사상 또는 범주로부터 벗어나지 않고 사용될 수도 있다.
로컬 저장부(215)는 대부분 클라이언트(205)에게 계속 이용가능할 수 있거나 사용자에게 이용가능한 수단에 의해 (예컨대, 커넥터를 플러그인함으로써) 쉽게 이용가능하게 될 수 있지만, 원격 저장 시스템(210)은 때로는 클라이언트(205)에게 이용불가능하게 될 수도 있다. 예를 들어, 클라이언트(205)가 랩탑에서 호스팅되면, 랩탑이 인터넷 액세스를 갖지 않는 위치로 이동될 수 있다. 다른 예로서, 네트워크의 작동불능으로 인해 원격 저장 시스템(210)에 대한 클라이언트(205)의 접속이 끊어질 수 있다. 다른 예로서, 유지보수 또는 다른 이유로 원격 저장 시스템(210)이 작동하지 않거나 정지되거나 또는 접속해제될 수 있다. 플레이스홀더 없이, 원격 저장 시스템(210)과의 접속이 소실되면, 클라이언트(205)는 네임스페이스를 탐색할 수 없거나 전체 파일 콘텐츠가 로컬 저장부(215)에서 이용가능하지 않은 파일에 대해 동작을 수행할 수 없을 수 있다.
플레이스홀더(220)는 로컬 저장부(215)에 저장된 플레이스홀더에 저장될 수 있는 다양한 예시적인 데이터 필드를 나타낸다. 하나의 플레이스홀더만이 도 2에 도시되어 있지만, 더욱 빈번하게 로컬 저장부(215)에 저장된 복수의 플레이스홀더가 존재할 수 있다. 예를 들어, 주어진 네임스페이스에 있어서, 원격 파일 시스템 객체의 콘텐츠가 로컬 저장부(215)에 완전하게 존재하지 않으면 각각의 원격 파일 시스템 객체에 대해 하나의 플레이스홀더가 존재할 수 있다. 다른 예로서, 주어진 네임스페이스에 있어서, 원격 파일 시스템 객체의 전체 콘텐츠가 로컬 저장부(215) 상에 존재하는 경우에도 원격 파일 시스템 객체들에 대한 플레이스홀더들이 존재할 수 있다. 이 제2 세트의 플레이스홀더는 또한 전술한 주어진 임계치보다 더 작은 크기의 콘텐츠를 갖는 파일에 대해 로컬 저장부(215)에 저장될 수도 있다.
네임스페이스는 파일에 대한 계층 정보와 함께 파일 시스템의 각 파일에 대한 식별자(예컨대, 이름 또는 다른 식별자)를 포함할 수 있다. 예를 들어, 네임스페이스는 D:\DIR1\FILE1.TXT에 대응하는 네임스페이스 엔트리를 포함할 수 있다. 이 네임스페이스 엔트리는 파일명(예컨대, FILE1.TXT)을 나타내고 이 파일이 디렉토리(예컨대, DIR1)에 존재함을 나타낸다. 네임스페이스는 또한 다른 메타데이터를 포함한다. 네임스페이스는 파일 시스템 정보와 일대일 또는 몇몇 다른 맵핑을 가질 수 있고 가상 폴더 계층을 나타낼 수도 있다.
도 3으로 돌아가서, 시스템(300)은 클라이언트(305), 클라우드(310), 클라우드 저장 시스템(315-317), 로컬 저장부(320), 오퍼레이션 로그(operation log)(321), 및 다른 컴포넌트들(도시되지 않음)을 포함할 수 있다. 클라이언트(305)는 파일 관리자(325), 동기화 관리자(326), 플레이스홀더 관리자(327) 및 기타 컴포넌트들(도시되지 않음)을 포함할 수 있다.
도 3의 컴포넌트들은 전술한 하나 이상의 컴퓨팅 장치의 하드웨어 및/또는 소프트웨어를 사용하여 구현될 수 있다. 로컬 저장부(320) 및 오퍼레이션 로그(321)를 구현하는 저장 장치는 도 2의 로컬 저장부(215)와 유사한 방식으로 구현될 수도 있고, 클라이언트(305) 내부나 외부에 있을 수도 있으며, 클라이언트 내부에 있는 일부 컴포넌트 및 클라이언트 외부에 있는 일부 컴포넌트를 포함할 수 있다.
로컬 저장부(320)는 클라이언트의 로컬 파일 시스템의 로컬 파일 시스템 객체에 대한 파일 시스템 메타데이터 및 클라우드 저장 시스템의 원격 파일 시스템 객체에 대한 플레이스홀더를 유지하는 컴퓨터 저장 요소를 가질 수 있다. 전술한 바와 같이, 플레이스홀더는 원격 파일 시스템 객체의 콘텐츠가 로컬 저장소(320)에 존재할 것을 요구하지 않고 원격 파일 시스템 객체의 메타데이터를 포함할 수 있다.
오퍼레이션 로그(321)는 로컬 파일 시스템에서 발생하는 변경에 관한 데이터를 유지하는 컴퓨터 저장 요소를 가질 수 있다. 오퍼레이션 로그(321)로부터의 데이터는 이들 변경을 클라우드 저장 시스템과 동기화하는데 사용될 수 있다. 일 구현예에서, 오퍼레이션 로그(321)는 생략될 수 있으며 로컬 파일 시스템에 대한 변경은 로컬 파일 시스템의 변경전 상태 및 변경후 상태를 비교함으로써 밝혀질 수 있다.
파일 관리자(325)는, 파일 시스템 메타데이터 및 플레이스홀더를 통해, 로컬 파일 시스템 객체 및 원격 파일 시스템 객체를 포함하는 네임스페이스를 생성하도록 구성될 수 있다. 파일 관리자(325)는 또한, 인터페이스를 통해, 클라우드 저장 시스템에 대한 접속이 존재하는지의 여부에 관계없이 로컬 파일 시스템 객체 및 원격 파일 시스템 객체에 대한 메타데이터를 제공하도록 구성될 수 있다.
클라우드 저장 시스템에 대한 접속 없이, 파일 관리자(325)는 여전히 로컬로 존재하는 파일과 플레이스홀더에 의해 표현된 파일 모두에 대해 동작이 진행되도록 할 수 있다. 예를 들어, 파일 관리자는 파일 시스템 객체의 콘텐츠가 로컬 저장부에 완전히 존재하지 않는 경우에도 플레이스홀더에 의해 표현된 파일 시스템 객체에 대해 수행된 동작을 나타내도록 로컬 파일 시스템의 파일 시스템 데이터 구조를 업데이트할 수 있다. 다른 예로서, 파일 관리자(325)는 이름바꾸기, 이동, 삭제, 복원, 생성, 복사 동작 등과 같은 동작을 반영하도록 네임스페이스를 업데이트할 수 있다.
동기화 관리자(326)는 클라우드 저장 시스템에 대한 접속 없이 파일 시스템 객체에 발생된 변경들(예컨대, 콘텐츠 변경, 진성, 외인성 및 네임스페이스 변경을 포함하는 메타데이터 변경, 기타 변경 등)을 발견하고 클라우드 저장 시스템과의 접속이 재확립될 때 이들 변경을 클라우드 저장 시스템과 동기화하도록 구성될 수 있다.
다른 구현예에서, 동기화 관리자(326)는 변경들을 발견하기 위한 다양한 방법들을 이용할 수 있다. 예를 들어, 일 구현예에서, 동기화 관리자(326)가 오퍼레이션 로그(321)를 검사함으로써 변경들을 발견할 수 있다. 다른 예로서, 다른 구현예에서는, 동기화 관리자(326)가 변경 전의 파일 시스템 및 파일 시스템 객체들의 상태를 변경 후의 파일 시스템 및 파일 시스템 객체들의 상태와 비교함으로써 변경들을 발견할 수 있다.
플레이스홀더 관리자(327)는, 적어도 원격 파일 시스템 객체의 콘텐츠가 로컬 저장부(320) 상에 완전히 존재하지 않으면 네임스페이스 내의 각각의 원격 파일 시스템 객체에 대한 플레이스홀더가 존재하도록 보장하기 위해 플레이스홀더를 생성하고, 파퓰레이트하고 유지하도록 구성될 수 있다. 전술한 바와 같이, 플레이스홀더는 또한 원격 파일 시스템 객체의 콘텐츠가 로컬 저장부(320) 상에 완전히 존재할 경우에 로컬 파일 시스템 상에 유지될 수 있다.
클라우드 저장 시스템(315-317)은 하나 이상의 저장 장치와 이들 저장 장치에 대한 액세스를 제공하는 하나 이상의 컴퓨팅 장치를 함께 포함할 수 있다. 일실시예에서, 클라우드 저장 시스템은 컴퓨팅 장치가 단일의 물리적 위치에 위치해 있는 데이터 센터를 포함할 수 있다. 다른 실시예에서, 클라우드 저장 시스템은 상이한 위치에 있는 클라우드에 부속된 저장부 및 컴퓨터 장치를 포함할 수 있다. 일실시예에서, 클라우드 저장 시스템은 하나 이상의 저장 장치에 대한 액세스를 제공하는 단일 서버를 포함할 수 있다. 일실시예에서, 클라우드 저장 시스템은 클라이언트의 LAN 상에 없는 컴퓨팅 장치를 포함할 수 있다. 다른 실시예에서, 클라우드 저장 시스템은 클라이언트에 수용되어 있지 않거나 또는 직접 접속되지 않는 임의의 저장부를 포함할 수 있다.
3개의 클라우드 저장 시스템이 도 3에 도시되어 있지만, 다른 구현예들에서는 임의의 수의 클라우드 저장 시스템이 존재할 수 있다.
도 4 및 5는 본 명세서에 기술된 발명대상의 특징에 따라 발생할 수 있는 예시적인 액션을 일반적으로 나타내는 흐름도이다. 설명을 간단히 하기 위해, 도 4 및 5와 함께 기술되는 방법은 일련의 동작으로 묘사되고 기술된다. 본 명세서에 기술된 발명대상의 특징들은 예시된 동작 및/또는 동작의 순서에 한정되지 않는 다는 것을 이해해야 한다. 일실시예에서, 동작들은 후술하는 순서로 일어난다. 그러나, 다른 실시예에서는 이들 동작이 동시에 일어날 수도 있고, 하나씩 일어날 수도 있으며, 또는 본명세서에 제시되고 기술되지 않은 다른 동작들과 함께 일어날 수도 있다. 또한, 도시된 모든 동작들이 본 명세서에 기술된 발명대상의 특징에 따른 방법을 구현하도록 요구되는 것은 아니다. 또한, 당업자는 이 방법이 상태도를 통해 또는 이벤트로서 일련의 상호관련된 상태로서 택일적으로 나타날 수 있음을 이해할 수 있을 것이다.
도 4는 본 명세서에 기술된 발명대상의 특징에 따른 클라이언트 입장에서 발생하는 예시적인 동작을 일반적으로 나타내는 흐름도이다. 블록(405)에서 동작들이 시작된다.
블록(407)에서, 클라이언트가 클라우드 저장 시스템에 대해 오프라인 상태인지의 여부에 대한 판정이 이루어진다. 클라이언트가 현재 클라우드 저장 시스템과 통신할 수 없으면 그 클라이언트는 클라우드 저장 시스템에 대해 오프라인 상태이다.
블록(410)에서, 클라이언트의 로컬 파일 시스템의 파일의 표시가 수신된다. 예를 들어, 도 3을 참조하면, 파일 관리자(325)가 내비게이션 애플리케이션(도시되지 않음)으로부터 파일의 표시를 수신할 수 있다.
블록(415)에서, 파일이 플레이스홀더에 의해 표현되는 것으로 검출된다. 플레이스홀더는 로컬 파일 시스템에 저장되어 있다. 플레이스홀더는 적어도 파일 시스템 객체의 콘텐츠가 클라우드 저장 시스템에 존재함을 나타낸다(콘텐츠가 로컬 파일 시스템에 존재하는 경우에도). 예를 들어, 도 3을 참조하면, 파일 관리자(325)가 파일이 로컬 저장부(320)에 저장되는 플레이스홀더에 의해 표현됨을 검출한다.
로컬 파일 시스템의 파일에 대해 유지된 메타데이터와 유사하게, 플레이스홀더는 로컬 파일 시스템의 네임스페이스에 의해 삽입되거나 아니면 참조될 수 있다. 일 구현예에서, 플레이스홀더를 참조하는 네임스페이스 레코드는 네임스페이스 레코드의 플래그에 의해 결정될 수 있다. 다른 구현예에서, 플레이스홀더를 참조하는 네임스페이스 레코더는 네임스페이스 레코더에 의해 포함되거나 또는 참조된 메타데이터를 검사함으로써 결정될 수 있다.
블록(420)에서, 파일에 대해 요청되는 동작에 따라 파일 시스템 데이터 구조가 업데이트될 수 있다. 예를 들어, 동작이 이름바꾸기, 이동, 삭제, 복원, 생성, 복사 동작 등이면, 로컬 파일 시스템의 네임스페이스는 이 동작을 반영하도록 업데이트될 수 있다. 예를 들어, 이동 동작에서, 로컬 파일 시스템의 네임스페이스는 파일이 이제 네임스페이스 내 새로운 위치에 있음을 나타내도록 업데이트될 수 있다. 다른 예로서, 삭제 동작에서, 로컬 파일 시스템의 네임스페이스는 로컬 파일 시스템의 삭제 컨테이너(예컨대, 파일 시스템 "휴지통")에 저장되어 있는 삭제된 파일의 레코드를 가지고 파일이 삭제되었음을 나타내도록 업데이트될 수 있다. 또 다른 예로서, 복원 동작에서, 로컬 파일 시스템의 네임스페이스는 파일이 삭제 컨테이너로부터 복원되었음을 나타내도록 업데이트될 수 있다.
다른 예에서, 이 동작은 파일의 진성 또는 외인성 메타데이터를 업데이트해야할 수도 있다. 이 예에서, 플레이스홀더는 변경된 메타데이터로 업데이트될 수 있다. 파일의 진성 또는 외인성 메타데이터가 변경될 경우, 로컬 파일 시스템의 네임스페이스는 동일하게 유지된 수 있다.
또 다른 예로서, 동작은 파일의 콘텐츠를 업데이트해야 할 수 있다. 이 예에서, 플레이스홀더가, 콘텐츠가 로컬로 이용가능함을 나타내면, 콘텐츠는 업데이트될 수 있다.
다른 예에서, 파일 시스템 데이터 구조를 업데이트할 필요가 없을 수 있다. 예를 들어, 이 동작이 파일명 읽기 동작이면, 파일명이 플레이스홀더로부터 판독될 수 있고 판독 동작의 요청자에게 제공될 수 있다. 이 유형의 동작은 파일 시스템 데이터 구조를 변경하는 것과 관련이 없으며 따라서 블록(420)의 액션은 이 예에서 생략될 수 있다.
블록(425)에서, 클라이언트가 여전히 오프라인 상태인지에 대한 판정이 이루어진다. 예를 들어, 도 3을 참고하면, 클라이언트가 플레이스홀더의 콘텐츠를 포함하는 클라우드 저장 시스템과 여전히 통신할 수 없으면, 클라이언트는 클라우드 저장 시스템에 대해 오프라인 상태에 있는 것으로 고려될 수 있다.
블록(430)에서, 클라이언트가 클라우드 저장 시스템에 대해 여전히 오프라인 상태이면, 액션은 블록(410)으로 진행하며, 여기서 클라이언트는 다른 파일의 표시를 수신할 수 있고, 그렇지 않으면 액션은 블록(435)으로 진행한다.
블록(435)에서, 클라이언트가 오프라인 상태인 동안 로컬 저장 시스템에 대해 이루어진 변경이 발견된다. 전술한 바와 같이, 이 발견은 오퍼레이션 로그를 읽는 것, 변경 전 시간으로부터의 파일 시스템 상태를 변경 후의 시간에서의 파일 시스템 상태와 비교하는 것 등의 형태를 취할 수 있다.
블록(440)에서, 이들 변경은 클라우드 저장 시스템과 동기화된다. 예를 들어, 도 3을 참고하면, 동기화 관리자(326)가 변경들을 클라우드 저장 시스템들(315-317) 중 하나 이상과 동기화할 수 있다. 예를 들어, 오프라인 변경이 파일의 진성 메타데이터와 관련이 있으면, 동기화는 플레이스홀더로부터의 메타데이터를 클라우드 저장 시스템 상에 존재하는 파일 시스템 객체의 대응하는 진성 메타데이터를 업데이트하기 위한 클라우드 저장 시스템에 제공하는 것을 포함한다.
다른 예로서, 오프라인 변경이 삭제 컨테이너로부터 파일을 복원하는 것과 관련될 경우, 동기화는 클라우드 저장 시스템에 대해, 클라우드 저장 시스템에 대한 파일 시스템 객체를 식별하는 식별자를 클라우드 저장 시스템의 삭제 컨테이너로부터 파일 시스템 객체를 복원하기 위한 명령어와 함께 클라우드 저장 시스템에 제공하는 것을 포함할 수 있다.
블록(445)에서, 만약 다른 액션들이 존재하면 이들 액션들이 수행될 수 있다. 예를 들어 클라이언트가 내비게이션 애플리케이션과 상호작용할 경우, 클라이언트는 로컬 파일 시스템의 네임스페이스 내의 파일 시스템 객체에 대한 메타데이터 요청을 수신할 수 있다. 클라우드 저장 시스템 상에서 이용가능한 콘텐츠가 없는 파일(예컨대, 플레이스홀더에 의해 표현되는 파일)과 관련된 요청에 응답하여 그리고 플레이스홀더에서 이용가능한 전체 콘텐츠를 갖는 파일과 관련된 요청에 응답하여, 클라이언트는 플레이스홀더로부터 내비게이션 애플리케이션에 제공할 메타데이터를 획득할 수 있다.
다른 예로서, 주기적으로 또는 다른 지정된 시간에, 플레이스홀더는 콘텐츠가 로컬 파일 시스템에 완전히 저장되지 않은 로컬 파일 시스템의 네임스페이스의 파일에 대해 생성될 수 있다. 접속이 이용가능한 경우, 로컬 파일 시스템의 네임스페이스가 네임스페이스에 의해 표시된 각각의 파일 시스템 객체에 대한 로컬로 저장된 메타데이터를 갖도록, 플레이스홀더에 대한 메타데이터 및 기타 데이터가 클라우드 저장 시스템으로부터 다운로드될 수 있다.
다른 예로서, 클라이언트는, 클라이언트가 오프라인 상태인 경우 동작(예컨대, 열기, 편집 등)이 허용되지 않음을 검출할 수 있고 클라이언트가 오프라인 상태이면 동작을 허용하지 않을 수 있다. 오프라인 동안 동작을 불허하는 것의 예외는 파일 시스템 객체의 콘텐츠가 로컬 파일 시스템에 저장됨을 플레이스홀더가 나타내는 경우에 발생할 수 있다.
도 5는 본 명세서에 기술된 발명대상의 특징에 따른 클라우드 저장 시스템의 입장에서 발생하는 예시적인 액션들을 일반적으로 나타내는 흐름도이다. 블록(505)에서, 액션이 시작된다.
블록(510)에서, 클라우드 저장 시스템과 클라이언트 간에 접속이 소실된다. 예를 들어, 도 3을 참고하면, 클라이언트(305)는 클라우드 저장 시스템(315)에 대한 접속을 잃는다(예컨대, 통신할 수 없다). 클라이언트는 클라이언트에 대해 로컬로 저장된 클라이언트 파일 시스템을 (예컨대 로컬 저장부(320)에) 가질 수 있다. 클라이언트 파일 시스템은, 모든 콘텐츠가 클라이언트 파일 시스템에 위치하는 파일 및 모든 콘텐츠보다 적은 콘텐츠가 클라이언트 파일 시스템에 위치하는 파일을 가질 수 있다. 클라이언트는 적어도 모든 콘텐츠보다 적은 콘텐츠가 클라이언트 파일 시스템에 위치하는 파일을 나타내는 플레이스홀더를 갖는다. 클라이언트는 클라이언트가 클라우드 저장 시스템에 대해 오프라인 상태인 기간 동안 플레이스홀더에 의해 표현된 파일에 대해 제1 동작 세트(예컨대, 이름바꾸기, 이동, 보기, 삭제, 복원, 생성, 메타데이터 보기, 메타데이터 업데이트 등)가 진행되도록 허용할 수 있다. 클라이언트는 클라이언트가 오프라인 상태인 기간 동안 파일에 대해 제2 동작 세트(예컨대, 이름바꾸기, 네임스페이스를 따른 이동, 복사, 열기 편집 등)가 진행되는 것을 불허할 수 있다.
블록(515)에서, 클라이언트와 클라우드 저장 시스템 사이에 접속이 다시 얻어진다. 예를 들어, 도 3을 참고하면, 클라우드 저장 시스템(315)이 클라이언트(305)에 대한 접속을 재획득할 수 있다(예컨대 통신할 수 있다).
블록(520)에서, 동기화가 시작될 수 있다. 예를 들어, 도 3을 참조하면, 클라이언트(305) 및 클라우드 저장 시스템(315)은 클라이언트가 오프라인 상태인 동안 발생하는 업데이트의 동기화를 시작할 수 있다.
블록(525)에서, 클라이언트의 파일 시스템에 저장된 플레이스홀더에 의해 표현되는 파일에 발생된 변경이 수신된다. 이 변경은 클라이언트와의 접속을 잃은 후 그리고 클라이언트와 다시 접속하기 전에 발생했을 수 있다. 이 변경은 접속을 잃은 기간 동안 플레이스홀더를 통해 적어도 부분적으로 클라이언트 파일 시스템에서 반영될 수 있다. 예를 들어, 도 3을 참고하면, 클라우드 저장 시스템(315)은 클라이언트(305)의 동기화 관리자(326)로부터 변경을 수신한다.
블록(530)에서, 클라우드 저장 시스템은 변경을 반영하도록 적절히 업데이트된다. 예를 들어, 도 3을 참고하면, 클라우드 저장 시스템(315)은 하나 이상의 파일과 연관된 메타데이터 및/또는 파일 시스템 메타데이터를 업데이트할 수 있다. 일부 경우에, 클라우드 저장 시스템에 대한 변경은 클라이언트로부터 수신된 변경이 무시되게 할 수 있다. 예를 들어, 클라이언트 상에서 삭제된 파일이 접속이 없는 기간 동안 클라우드 저장 시스템에서도 삭제되었을 수도 있다.
블록(535)에서, 다른 액션들이 있다면 이들 액션이 수행될 수 있다.
전술한 상세한 설명으로부터 알 수 있듯이, 파일 시스템 플레이스홀더와 관련된 특징들을 기술하였다. 본 명세서에 기술된 발명대상의 특징은 다양한 수정 및 대안적인 구성을 허용하지만, 소정의 예시된 실시예들은 도면에 도시되고 위에서 상세히 설명되었다. 그러나, 청구항의 청구대상의 특징들을 개시된 특정한 형태로 제한하고자 하는 것은 아니며, 오히려, 본 명세서에 기술된 발명대상의 다양한 특징의 사상 및 범주 내에 있는 모든 수정, 대안적인 구성 및 균등물을 커버하고자 한다.

Claims (10)

  1. 컴퓨터에 의해 적어도 부분적으로 구현되는 방법으로서,
    클라이언트의 로컬 파일 시스템의 파일 시스템 객체의 표시를 수신하는 단계와,
    상기 파일 시스템 객체가 상기 로컬 파일 시스템에 저장된 플레이스홀더에 의해 표현됨을 검출하는 단계 -상기 플레이스홀더는 적어도 상기 파일 시스템 객체의 콘텐츠가 원격 저장 시스템에 존재함을 나타냄- 와,
    상기 클라이언트가 상기 원격 저장 시스템에 대해 오프라인 상태인지 여부를 판정하는 단계 -상기 클라이언트는 상기 클라이언트가 현재 상기 원격 저장 시스템과 통신할 수 없으면 상기 원격 저장 시스템에 대해 오프라인 상태임- 와,
    상기 클라이언트가 오프라인 상태일 경우,
    상기 클라이언트가 오프라인 상태인 동안, 상기 파일 시스템 객체에 대해 수행된 동작을 나타내도록 상기 로컬 파일 시스템의 파일 시스템 데이터 구조를 업데이트하는 단계와,
    상기 원격 저장 시스템에 대해 상기 클라이언트가 더 이상 오프라인 상태가 아님을 결정하는 단계와,
    상기 클라이언트가 오프라인 상태였을 동안 상기 파일 시스템 객체에 발생된 변경(change)을 발견하는 단계 -상기 변경은 상기 동작의 결과로서 발생함- 와,
    상기 변경을 상기 원격 저장 시스템과 동기화하는 단계
    를 포함하는 액션을 수행하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 파일 시스템 객체에 대해 수행된 동작을 나타내도록 상기 로컬 파일 시스템의 파일 시스템 데이터 구조를 업데이트하는 단계는 상기 플레이스홀더의 메타데이터 -상기 플레이스홀더의 메타데이터는 상기 파일 시스템 객체의 진성(intrinsic) 메타데이터에 대응함- 를 업데이트하는 단계를 포함하고,
    상기 변경을 상기 원격 저장 시스템과 동기화하는 단계는 상기 메타데이터를 상기 원격 저장 시스템에 제공하여 상기 원격 저장 시스템 상에 존재하는 상기 파일 시스템 객체의 대응하는 진성 메타데이터를 업데이트하는 단계를 포함하는
    방법.
  3. 제1항에 있어서,
    상기 클라이언트에서, 상기 로컬 파일 시스템의 파일 시스템 네임스페이스(namespace) 내의 파일 시스템 객체에 대한 메타데이터를 요청하는 내비게이션 애플리케이션(navigation application)과 상호작용하는 단계와,
    상기 로컬 파일 시스템에 저장된 플레이스홀더를 사용하여, 상기 로컬 파일 시스템에서 상기 원격 저장 시스템에서 이용가능한 콘텐츠가 없는 상기 파일 시스템 네임스페이스 내의 파일 시스템 객체와 관련된 내비게이션 요청에 대한 메타데이터를 제공하는 단계
    를 더 포함하는 방법.
  4. 제1항에 있어서,
    콘텐츠가 상기 로컬 파일 시스템에 완전히 저장되지 않은 상기 로컬 파일 시스템의 네임스페이스의 파일 시스템 객체에 대한 플레이스홀더를 생성하는 단계와,
    상기 원격 저장 시스템으로부터, 상기 로컬 파일 시스템의 상기 네임스페이스가 상기 네임스페이스에 의해 표시된 각각의 파일 시스템에 대한 메타데이터를 로컬로 저장하도록, 상기 플레이스홀더에 대한 메타데이터를 다운로드하고 저장하는 단계와,
    상기 원격 저장 시스템으로부터, 하나 이상의 상기 플레이스홀더 각각에 대한 섬네일 데이터를 획득하고 대응하는 플레이스홀더 내에 각각의 섬네일 데이터를 저장하는 단계 -상기 섬네일 데이터는 섬네일 이미지에 대응하는 데이터가 획득되는 서비스를 나타냄-
    를 포함하는 방법.
  5. 제1항에 있어서,
    상기 파일 시스템 객체에 대해 수행된 동작을 나타내도록 상기 로컬 파일 시스템의 파일 시스템 데이터 구조를 업데이트하는 단계는, 상기 동작이 이름바꾸기, 이동, 삭제, 복원, 생성, 또는 복사 동작인 경우에 상기 로컬 파일 시스템의 네임스페이스를 업데이트하는 단계를 포함하고,
    상기 변경을 상기 원격 저장 시스템과 동기화하는 단계는 상기 로컬 파일 시스템의 업데이트된 네임스페이스에 따라 상기 원격 저장 시스템의 상기 네임스페이스를 업데이트하는 단계를 포함하는
    방법.
  6. 컴퓨팅 환경에서의 시스템으로서,
    로컬 파일 시스템의 로컬 파일 시스템 객체에 대한 파일 시스템 메타데이터를 유지하며 원격 저장 시스템의 원격 파일 시스템 객체에 대한 플레이스홀더를 유지하는 컴퓨터 저장 요소를 갖는 저장부 -상기 플레이스홀더는 상기 원격 파일 시스템 객체의 콘텐츠가 상기 저장부에 존재할 것을 요구함 없이 상기 원격 파일 시스템 객체의 메타데이터를 포함함- 와,
    적어도 상기 원격 파일 시스템 객체의 콘텐츠가 상기 저장부에 완전히 존재하지 않으면 각각의 원격 파일 시스템 객체에 대한 플레이스홀더가 상기 네임스페이스에 존재함을 보장하기 위해, 상기 플레이스홀더를 생성하고, 파퓰레이트(populate)하고, 유지하도록 구성된 플레이스홀더 관리자와,
    상기 파일 시스템 메타데이터 및 상기 플레이스홀더를 통해 상기 로컬 파일 시스템 객체 및 상기 원격 파일 시스템 객체를 포함하는 네임스페이스를 생성하고, 인터페이스를 통해 상기 원격 저장 시스템에 대한 접속이 존재하는지 여부에 관계없이 상기 로컬 파일 시스템 객체 및 상기 원격 파일 시스쳄 객체에 대한 메타데이터를 제공하도록 구성된 파일 관리자
    를 포함하는 시스템.
  7. 제6항에 있어서,
    상기 파일 관리자는, 상기 원격 저장 시스템에 대한 접속이 없을 경우에, 플레이스홀더에 의해 표현된 파일 시스템 객체 -상기 파일 시스템 객체의 콘텐츠는 상기 저장부에 완전히 존재하지 않음- 에 대해 수행된 동작을 나타내도록 상기 로컬 파일 시스템의 파일 시스템 데이터 구조를 업데이트하도록 더 구성되는
    시스템.
  8. 제7항에 있어서,
    상기 파일 관리자가 상기 파일 시스템 데이터 구조를 업데이트하도록 더 구성되는 것은, 상기 동작이 이름바꾸기, 이동, 삭제, 복원, 생성 또는 복사 동작인 경우 상기 파일 관리자가 상기 원격 저장 시스템에 대한 접속이 없는 동안에 상기 동작을 반영하도록 상기 네임스페이스를 업데이트하도록 구성되는 것을 포함하는
    시스템.
  9. 컴퓨터 실행가능 명령어를 포함하는 컴퓨터 저장 매체로서,
    상기 컴퓨터 실행가능 명령어는, 실행될 경우에
    클라이언트 파일 시스템을 갖는 클라이언트와의 접속을 잃는 단계 -상기 클라이언트 파일 시스템은 모든 콘텐츠가 상기 클라이언트 파일 시스템에 위치해 있는 파일 시스템 객체와 모든 콘텐츠보다 적은 콘텐츠가 상기 클라이언트 파일 시스템에 위치해 있는 파일 시스템 객체를 가지며, 상기 클라이언트는 적어도 모든 콘텐츠보다 적은 콘텐츠가 상기 클라이언트 파일 시스템에 위치해 있는 상기 파일 시스템 객체를 나타내는 플레이스홀더를 가지며, 상기 클라이언트는 상기 클라이언트가 상기 원격 저장 시스템에 대해 오프라인 상태인 기간 동안 상기 플레이스홀더에 의해 표현된 상기 파일 시스템 객체에 대해 제1 동작 세트가 진행되도록 허용하고, 상기 클라이언트는 상기 오프라인 상태인 기간 동안 상기 파일 시스템 객체에 대해 제2 동작 세트가 진행되는 것을 불허함- 와,
    상기 클라이언트와의 접속을 재획득하는 단계와,
    동기화 동안,
    클라이언트의 파일 시스템에 저장된 플레이스홀더에 의해 표현되는 파일 시스템 객체에 발생된 변경을 수신하는 단계 -상기 변경은 상기 클라이언트와의 접속을 잃은 후 그리고 상기 클라이언트와의 접속을 다시 얻기 전에 발생하고, 상기 변경은 접속을 잃은 기간 동안 상기 플레이스홀더를 통해 적어도 부분적으로 상기 클라이언트 파일 시스템에 반영됨- 와,
    상기 변경을 반영하도록 상기 원격 저장 시스템을 업데이트하는 단계
    를 수행하는 컴퓨터 저장 매체.
  10. 제9항에 있어서,
    상기 변경은 상기 클라이언트 파일 시스템의 네임스페이스에 영향을 미치고, 상기 변경은 상기 접속을 잃은 기간 동안 상기 플레이스홀더를 통해 상기 클라이언트 파일 시스템에 반영되는
    컴퓨터 저장 매체.
KR1020157031225A 2013-04-30 2013-09-18 플레이스홀더에 의한 파일 관리 기법 KR102128139B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/873,241 US9552363B2 (en) 2013-04-30 2013-04-30 File management with placeholders
US13/873,241 2013-04-30
PCT/US2013/060250 WO2014178896A1 (en) 2013-04-30 2013-09-18 File management with placeholders

Publications (2)

Publication Number Publication Date
KR20160004285A true KR20160004285A (ko) 2016-01-12
KR102128139B1 KR102128139B1 (ko) 2020-06-29

Family

ID=49382571

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157031225A KR102128139B1 (ko) 2013-04-30 2013-09-18 플레이스홀더에 의한 파일 관리 기법

Country Status (11)

Country Link
US (1) US9552363B2 (ko)
EP (1) EP2992455A1 (ko)
JP (1) JP6248182B2 (ko)
KR (1) KR102128139B1 (ko)
CN (1) CN105493077B (ko)
AU (1) AU2013388039B2 (ko)
BR (1) BR112015027040B1 (ko)
CA (1) CA2907990C (ko)
MX (1) MX352446B (ko)
RU (1) RU2646334C2 (ko)
WO (1) WO2014178896A1 (ko)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9405767B2 (en) 2013-05-01 2016-08-02 Microsoft Technology Licensing, Llc Streaming content and placeholders
US20160147788A1 (en) * 2014-11-20 2016-05-26 Ricoh Company, Ltd. Pre-synchronization analysis between local documents and an online document management system
US10831715B2 (en) 2015-01-30 2020-11-10 Dropbox, Inc. Selective downloading of shared content items in a constrained synchronization system
US9361349B1 (en) 2015-01-30 2016-06-07 Dropbox, Inc. Storage constrained synchronization of shared content items
US9753943B1 (en) * 2015-03-31 2017-09-05 EMC IP Holding Company LLC Techniques for distributing access to filesystems through multipe filesystem management nodes
US9479567B1 (en) * 2015-10-29 2016-10-25 Dropbox, Inc. Synchronization protocol for multi-premises hosting of digital content items
US10140461B2 (en) 2015-10-30 2018-11-27 Microsoft Technology Licensing, Llc Reducing resource consumption associated with storage and operation of containers
US10719532B2 (en) * 2016-04-25 2020-07-21 Dropbox, Inc. Storage constrained synchronization engine
US9934303B2 (en) * 2016-04-25 2018-04-03 Dropbox, Inc. Storage constrained synchronization engine
AU2017256162B2 (en) * 2016-04-25 2018-11-08 Dropbox, Inc. Storage constrained synchronization engine
US10049145B2 (en) 2016-04-25 2018-08-14 Dropbox, Inc. Storage constrained synchronization engine
US10762054B2 (en) 2016-07-22 2020-09-01 Microsoft Technology Licensing, Llc Cloud content states determination logic
US20180039652A1 (en) * 2016-08-02 2018-02-08 Microsoft Technology Licensing, Llc Symbolic link based placeholders
US10592470B2 (en) * 2016-08-10 2020-03-17 Microsoft Technology Licensing, Llc Discovery of calling application for control of file hydration behavior
US20180059990A1 (en) 2016-08-25 2018-03-01 Microsoft Technology Licensing, Llc Storage Virtualization For Files
CN107783854B (zh) * 2016-08-29 2021-08-20 华为技术有限公司 处理进程的方法及其装置
US10616327B2 (en) 2016-09-20 2020-04-07 Microsoft Technology Licensing, Llc Policy based hydration behavior in cloud storage synchronization
US11368528B2 (en) 2016-09-20 2022-06-21 Microsoft Technology Licensing, Llc Dynamic storage management in cloud storage synchronization
US10248659B2 (en) 2016-10-04 2019-04-02 International Business Machines Corporation Consistent hashing configurations supporting multi-site replication
US10572317B2 (en) * 2016-12-27 2020-02-25 Dropbox, Inc. Collaboration enhanced with kernel event triggers
US11507534B2 (en) * 2017-05-11 2022-11-22 Microsoft Technology Licensing, Llc Metadata storage for placeholders in a storage virtualization system
US10331623B2 (en) 2017-10-16 2019-06-25 Dropbox, Inc. Workflow functions of content management system enforced by client device
US10866963B2 (en) 2017-12-28 2020-12-15 Dropbox, Inc. File system authentication
US11010408B2 (en) 2018-06-01 2021-05-18 Microsoft Technology Licensing, Llc Hydration of a hierarchy of dehydrated files
US11445018B2 (en) * 2019-12-12 2022-09-13 Dropbox, Inc. Technologies for synchronizing content items across content management systems
US11334364B2 (en) 2019-12-16 2022-05-17 Microsoft Technology Licensing, Llc Layered composite boot device and file system for operating system booting in file system virtualization environments
CN111278010B (zh) * 2020-01-21 2022-12-27 北京佰才邦技术股份有限公司 一种备份信息方法、装置、存储介质和计算机设备
LU101624B1 (en) 2020-02-03 2021-08-03 Microsoft Technology Licensing Llc Reduce os imaging time using 'just in time' file delivery
US11532384B2 (en) * 2020-04-02 2022-12-20 International Business Machines Corporation Personalized offline retrieval of data
US11995582B2 (en) 2020-05-20 2024-05-28 XOEye Technologies, Inc. Automated generation of condition state information for one or more machines, devices, or systems associated with service or repair events
US11599506B1 (en) * 2021-10-28 2023-03-07 EMC IP Holding Company LLC Source namespace and file copying

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050198385A1 (en) * 2004-01-30 2005-09-08 Aust Brian S. System and method for generating a consistent user name-space on networked devices
JP2006236350A (ja) * 2005-02-22 2006-09-07 Microsoft Corp ゴースト化による同期
JP2013077079A (ja) * 2011-09-29 2013-04-25 Nec Biglobe Ltd ストレージシステム、ストレージサーバ、ユーザデータ共有方法、及びプログラム

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5537585A (en) 1994-02-25 1996-07-16 Avail Systems Corporation Data storage management for network interconnected processors
EP0713183A3 (en) 1994-11-18 1996-10-02 Microsoft Corp Network-independent shadow files
US20060129627A1 (en) * 1996-11-22 2006-06-15 Mangosoft Corp. Internet-based shared file service with native PC client access and semantics and distributed version control
US6011537A (en) * 1997-01-27 2000-01-04 Slotznick; Benjamin System for delivering and simultaneously displaying primary and secondary information, and for displaying only the secondary information during interstitial space
US7373391B2 (en) * 2000-10-24 2008-05-13 Seiko Epson Corporation System and method for digital content distribution
US6868424B2 (en) 2002-07-25 2005-03-15 Xerox Corporation Electronic filing system with file-placeholders
WO2004021225A1 (en) 2002-08-30 2004-03-11 Arkivio, Inc. Techniques for moving stub files without recalling data
US20040267812A1 (en) * 2003-06-26 2004-12-30 Microsoft Corporation Media platform
RU2412461C2 (ru) * 2003-08-21 2011-02-20 Майкрософт Корпорейшн Системы и способы сопряжения прикладных программ с платформой хранения на основе статей
RU2371757C2 (ru) * 2003-08-21 2009-10-27 Майкрософт Корпорейшн Системы и способы моделирования данных в основанной на предметах платформе хранения
US7441011B2 (en) * 2003-10-23 2008-10-21 Microsoft Corporation Truth on client persistent caching
US7568042B2 (en) 2004-03-18 2009-07-28 Sony Corporation Networked local media cache engine
US7698516B2 (en) * 2005-01-12 2010-04-13 Emc Corporation Methods and apparatus for managing deletion of data
US20060200570A1 (en) 2005-03-02 2006-09-07 Nokia Corporation Discovering and mounting network file systems via ad hoc, peer-to-peer networks
US7725837B2 (en) 2005-03-31 2010-05-25 Microsoft Corporation Digital image browser
US7634514B2 (en) * 2005-05-09 2009-12-15 Microsoft Corporation Synchronizing file system directories
US8020158B2 (en) * 2005-12-17 2011-09-13 Intel Corporation Installing and executing shared applications in shared folders
US8417746B1 (en) 2006-04-03 2013-04-09 F5 Networks, Inc. File system management with enhanced searchability
JP5082310B2 (ja) 2006-07-10 2012-11-28 日本電気株式会社 データ移行装置及びプログラム
CN100498781C (zh) * 2006-08-11 2009-06-10 中国科学院计算技术研究所 用附着属性存储逻辑文件系统元数据的方法
US7603397B1 (en) 2006-10-03 2009-10-13 Emc Corporation Detecting and managing missing parents between primary and secondary data stores
WO2008095237A1 (en) 2007-02-05 2008-08-14 Moonwalk Universal Pty Ltd Data management system
US8176409B2 (en) 2007-07-24 2012-05-08 De Novo Software System and method for electronic publication of scientific data and analysis
US8583878B2 (en) 2008-01-02 2013-11-12 Sandisk Il Ltd. Storage device having direct user access
US8065381B2 (en) 2008-01-25 2011-11-22 Microsoft Corporation Synchronizing for directory changes performed while offline
US7958167B2 (en) * 2008-03-05 2011-06-07 Microsoft Corporation Integration of unstructed data into a database
WO2010045456A1 (en) * 2008-10-15 2010-04-22 Workscape. Inc. Performance driven compensation for enterprise-level human capital management
US8468070B1 (en) 2009-04-16 2013-06-18 Amazon Technologies, Inc. Local rendering in lieu of streaming
BRPI1010897A2 (pt) 2009-05-19 2019-02-19 Nholdings Sa método e sistema para prover um dispositivo local com serviços de computador de um provedor remoto e método e sistema para anunciar um usuário de uma máquina virtual hospedada por um servido remoto
KR101626117B1 (ko) 2009-06-22 2016-05-31 삼성전자주식회사 클라우드 스토리지를 제공하는 클라이언트, 중개 서버 및 방법
US10496608B2 (en) * 2009-10-28 2019-12-03 Sandisk Il Ltd. Synchronizing changes in a file system which are initiated by a storage device and a host device
US8612423B2 (en) 2010-10-29 2013-12-17 Microsoft Corporation Search cache for document search
US9824091B2 (en) * 2010-12-03 2017-11-21 Microsoft Technology Licensing, Llc File system backup using change journal
US20120158891A1 (en) 2010-12-21 2012-06-21 Microsoft Corporation Techniques for universal representation of digital content
US8910149B2 (en) 2010-12-24 2014-12-09 Microsoft Corporation On-demand or incremental remote data copy
JP2012174113A (ja) 2011-02-23 2012-09-10 Hitachi Ltd ファイルストレージシステム及び記憶制御方法
US8812662B2 (en) 2011-06-29 2014-08-19 Sonic Ip, Inc. Systems and methods for estimating available bandwidth and performing initial stream selection when streaming content
US20130036135A1 (en) 2011-08-04 2013-02-07 Michael Brockey Cloud data storage
US10063430B2 (en) 2011-09-09 2018-08-28 Cloudon Ltd. Systems and methods for workspace interaction with cloud-based applications
US8331566B1 (en) 2011-11-16 2012-12-11 Google Inc. Media transmission and management
US20140250069A1 (en) 2013-03-01 2014-09-04 Appsense Limited Systems and methods for selectively synchronizing files

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050198385A1 (en) * 2004-01-30 2005-09-08 Aust Brian S. System and method for generating a consistent user name-space on networked devices
JP2006236350A (ja) * 2005-02-22 2006-09-07 Microsoft Corp ゴースト化による同期
JP2013077079A (ja) * 2011-09-29 2013-04-25 Nec Biglobe Ltd ストレージシステム、ストレージサーバ、ユーザデータ共有方法、及びプログラム

Also Published As

Publication number Publication date
CA2907990A1 (en) 2014-11-06
JP2016520919A (ja) 2016-07-14
BR112015027040B1 (pt) 2022-01-25
BR112015027040A2 (pt) 2017-07-25
WO2014178896A1 (en) 2014-11-06
MX352446B (es) 2017-11-24
RU2646334C2 (ru) 2018-03-02
RU2015146741A (ru) 2017-05-10
CN105493077B (zh) 2019-03-19
MX2015015145A (es) 2016-02-18
AU2013388039A1 (en) 2015-10-22
JP6248182B2 (ja) 2017-12-13
US20140324776A1 (en) 2014-10-30
BR112015027040A8 (pt) 2020-01-14
CN105493077A (zh) 2016-04-13
CA2907990C (en) 2020-04-07
KR102128139B1 (ko) 2020-06-29
EP2992455A1 (en) 2016-03-09
US9552363B2 (en) 2017-01-24
AU2013388039B2 (en) 2019-01-31

Similar Documents

Publication Publication Date Title
KR102128139B1 (ko) 플레이스홀더에 의한 파일 관리 기법
US10264039B2 (en) Streaming content and placeholders
US9734158B2 (en) Searching and placeholders
KR102128138B1 (ko) 플레이스홀더에 의한 하이드레이션 및 디하이드레이션 기법
US9374326B2 (en) Providing information for shared content
JP2016529599A (ja) コンテンツクリップボードの同期
US20140359488A1 (en) Centralized Management of Link Data for Multiple Applications, Computers and Resources, through Operating Systems and Networked Storage Services
US9298797B2 (en) Preserving content item collection data across interfaces
KR20170012442A (ko) 사용자 생성 미디어 파일들의 자동 아카이빙

Legal Events

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