KR20150013191A - 클라우드-기반 파일 시스템 내에서의 파일 핸들링 - Google Patents

클라우드-기반 파일 시스템 내에서의 파일 핸들링 Download PDF

Info

Publication number
KR20150013191A
KR20150013191A KR1020147032838A KR20147032838A KR20150013191A KR 20150013191 A KR20150013191 A KR 20150013191A KR 1020147032838 A KR1020147032838 A KR 1020147032838A KR 20147032838 A KR20147032838 A KR 20147032838A KR 20150013191 A KR20150013191 A KR 20150013191A
Authority
KR
South Korea
Prior art keywords
file
files
computing device
cached
priority
Prior art date
Application number
KR1020147032838A
Other languages
English (en)
Other versions
KR102097300B1 (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 KR20150013191A publication Critical patent/KR20150013191A/ko
Application granted granted Critical
Publication of KR102097300B1 publication Critical patent/KR102097300B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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/172Caching, prefetching or hoarding of files
    • 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
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/183Provision of network file services by network file servers, e.g. by using NFS, CIFS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/463File
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

일 일반적인 양상에서, 컴퓨터-판독 가능한 저장 매체는 실행될 때 하나 이상의 프로세서들로 하여금 프로세스를 수행하게 하는 지시들을 저장하도록 구성될 수 있다. 프로세스는 컴퓨팅 디바이스 및 클라우드 환경 내에서 동작하는 저장 시스템 사이에 통신 링크의 적어도 일 부분을 수립하는 것을 포함할 수 있다. 프로세스는 복수의 파일들을 표현한 파일들의 목록을 포함한 사용자 인터페이스를 액세스하는 것을 포함할 수 있으며 복수의 파일들의 적어도 제 1 부분은 컴퓨팅 디바이스의 로컬 메모리에 저장되며 복수의 파일들의 제 2 부분은 저장 시스템에 저장된다.

Description

클라우드-기반 파일 시스템 내에서의 파일 핸들링 {FILE HANDLING WITHIN A CLOUD-BASED FILE SYSTEM}
관련 출원에 관한 참조
본 출원은 결과적으로, “클라우드-기반 파일 시스템 내에서의 파일 핸들링”이라는 제목의, 2012년 5월 5일에 출원된, 미국 가 특허 출원 번호 제61/643,279호, 및 “클라우드-기반 파일 시스템 내에서의 파일 핸들링”이라는 제목의, 2012년 12월 13일에 출원된, 미국 특허 출원 번호 제61/736,722호에 대한 우선권을 주장하는, “클라우드-기반 파일 시스템 내에서의 파일 핸들링”이라는 제목의, 2013년 3월 15일에 출원된 미국 정규 특허 출원 번호 제13/841,368호에 대한 우선권을 주장하고, 그에 대한 계속 출원이며, 그 모두는 여기에 전체적으로 참조로서 통합된다.
기술분야
본 설명은 클라우드-기반 파일 시스템 내에서의 파일 핸들링에 관한 것이다.
다양한 원격 저장 시스템들이 컴퓨팅 디바이스에 의해 액세스될 수 있는 파일들을 저장하기 위해 개발되어 왔다. 종종, 이들 알려진 원격 저장 시스템들은 컴퓨팅 디바이스에 저장된 로컬 파일들을 백업하기 위해 파일들을 저장한다. 이들 원격 저장 시스템들은 네트워크를 통해 액세스될 수 있고, 신뢰성 있게 정보를 저장할 수 있지만, 많은 이들 알려진 원격 저장 시스템들은 특히 상이한 소스들을 사용하여 생성될 수 있는 다양한 파일들을 핸들링할 때 유연성 및 통합성이 부족하다. 따라서, 본 기술의 부족들을 해결하기 위해 및 다른 새로운 및 혁신적인 피처들을 제공하기 위해 시스템들, 방법들, 및 장치에 대한 요구가 존재한다.
하나의 일반적인 양상에서, 비-일시적 컴퓨터-판독 가능한 저장 매체는 실행될 때 하나 이상의 프로세서들로 하여금 프로세스를 수행하게 하는 지시들을 저장하도록 구성될 수 있다. 상기 프로세스는 컴퓨팅 디바이스 및 클라우드 환경 내에서 동작하는 저장 시스템 사이에 통신 링크의 적어도 일 부분을 수립하는 것을 포함할 수 있으며, 복수의 파일들의 적어도 제 1 부분이 컴퓨팅 디바이스의 로컬 메모리에 저장되며 상기 복수의 파일들의 제 2 부분이 상기 저장 시스템에 저장되는, 상기 복수의 파일들을 나타내는 파일들의 목록을 저장하는 것을 포함할 수 있다. 상기 프로세스는 상기 파일들의 목록에서의 상기 파일과 연관된 파일 카테고리에 기초하여 오프라인 가용성에 대해 상기 파일들의 목록에서의 파일을 지정하는 것을 포함할 수 있다.
예시적인 구현들은 다음의 특징들 중 하나 이상을 포함할 수 있다. 예를 들면, 상기 저장 시스템은 컴퓨팅 디바이스를 위한 1차 저장 시스템으로서 동작할 수 있으며, 상기 컴퓨팅 디바이스의 로컬 메모리는 상기 저장 시스템의 캐시로서 동작할 수 있다.
상기 파일들의 목록은 웹 애플리케이션을 사용하여 상기 저장 시스템에 생성 및 저장된 웹 파일에 대한 조회, 상기 컴퓨팅 디바이스에 설치된 로컬 애플리케이션을 사용하여 생성된 클라이언트 파일에 대한 조회, 및/또는 클라우드 환경의 밖에서 동작하는 원격 소스로부터의 원격 소스 파일에 대한 조회를 포함할 수 있다. 상기 파일들의 목록으로부터의 파일은 상기 파일들의 목록에서의 제 1 파일일 수 있으며, 상기 파일 카테고리는 웹 파일 카테고리일 수 있다. 상기 프로세스는 상기 컴퓨팅 디바이스로부터 수신된 제 1 지시에 응답하여 오프라인 가용성을 위해 상기 파일들의 목록에서 적어도 제 2 파일을 지정하는 것으로서, 상기 제 2 파일이 캐시되지 않은 파일인, 상기 제 2 파일 지정하기, 및 오프라인 가용성을 위해 상기 로컬 메모리에 캐시되는 파일들의 목록으로부터의 적어도 제 3 파일을 지정하는 것을 더 포함할 수 있다.
상기 파일들의 목록은 상기 컴퓨팅 디바이스에 할당된 저장 시스템의 일 부분 및 컴퓨팅 디바이스의 로컬 메모리를 스패닝(spanning)하는 파일들의 단일 목록일 수 있다.
상기 컴퓨팅 디바이스는 클라우드 환경에 원격으로 연결된 제 1 컴퓨팅 디바이스일 수 있으며, 상기 프로세스는 상기 클라우드 환경에 원격으로 연결된 제 2 컴퓨팅 디바이스에서의 파일들의 목록을 액세스하는 것을 더 포함할 수 있으며, 상기 제 2 컴퓨팅 디바이스에서 액세스될 때의 상기 파일들의 목록은 상기 제 1 컴퓨팅 디바이스에서 액세스될 때의 파일들의 목록과 동일하다.
상기 파일을 지정하는 것은 상기 컴퓨팅 디바이스로부터 수신된 명시적인 지시 없이 상기 파일 카테고리에 기초하여 오프라인의 이용 가능성을 위해 파일들의 목록에서 상기 파일을 지정하는 것을 포함할 수 있다.
상기 파일들의 목록에서의 상기 파일은 상기 파일 카테고리에 기초하여 오프라인 이용 가능 상태에 있는 것으로서 지정된 제 1 파일일 수 있다. 상기 파일들의 목록은 상기 컴퓨팅 디바이스의 로컬 메모리에서 최근에 액세스되는 제 2 파일에 기초하여 상기 오프라인 이용 가능 상태에 있는 것으로서 지정된 제 2 파일을 포함할 수 있다. 상기 파일들의 목록은 상기 컴퓨팅 디바이스로부터의 지시에 응답하여 상기 오프라인 이용 가능 상태에 있는 것으로서 지정된 제 3 파일을 포함할 수 있다. 상기 파일들의 목록은 온라인 이용 가능 상태에 있는 것으로서 지정된 제 4 파일을 포함할 수 있다.
또 다른 일반적인 양상에서, 비-일시적 컴퓨터-판독 가능한 저장 매체는 실행될 때 하나 이상의 프로세서들로 하여금 프로세스를 수행하게 하는 지시들을 저장하도록 구성될 수 있다. 프로세스는 컴퓨팅 디바이스 및 클라우드 환경 내에서 동작하는 저장 시스템 사이에 통신 링크의 적어도 일 부분을 수립하는 것을 포함할 수 있다. 상기 프로세스는 또한 상기 저장 시스템 상에 저장된 제 1 파일을 개방하기 위한 요청을 수신하는 것, 및 상기 제 1 파일을 개방하기 위한 상기 요청에 응답하여, 상기 컴퓨팅 디바이스의 로컬 메모리에 상기 제 1 파일을 캐시하는 것으로서, 상기 제 1 파일은 제 1 우선순위를 갖고 캐시되는, 상기 제 1 파일을 캐시하는 것을 포함할 수 있다. 상기 프로세스는 상기 저장 시스템 상에 저장된 제 2 파일이 오프라인으로 이용 가능한 요청을 수신하는 것, 및 상기 제 2 파일이 오프라인으로 이용 가능하게 하려는 상기 요청에 응답하여, 상기 컴퓨팅 디바이스의 상기 로컬 메모리에 상기 제 2 파일을 캐시하는 것으로서, 상기 제 2 파일은 상기 제 1 우선순위보다 낮은 제 2 우선순위를 갖고 캐시되는, 상기 제 2 파일을 캐시하는 것을 더 포함할 수 있다. 상기 프로세스는 컴퓨팅 디바이스의 로컬 메모리에, 상기 저장 시스템에 저장된 제 3 파일을 예측적으로 캐시하는 것을 더 포함할 수 있으며, 상기 제 3 파일은 상기 제 3 파일의 하나 이상의 속성들에 기초하여 선택되며, 상기 제 3 파일은 상기 제 2 우선순위보다 낮은 제 3 우선순위를 갖고 캐시된다.
예시적인 구현들은 다음의 특징들 중 하나 이상을 포함할 수 있다. 예를 들면, 상기 제 1 파일, 상기 제 2 파일, 및 상기 제 3 파일은 그것들의 각각의 우선순위들에 기초하여 및 상기 컴퓨팅 디바이스의 로컬 메모리에서의 이용 가능한 파일 캐시 저장 용량의 양에 기초하여 상기 컴퓨팅 디바이스의 상기 로컬 메모리에 캐시될 수 있다.
상기 프로세스는 상기 저장 시스템 상에 저장된 제 4 파일을 개방하기 위한 요청을 수신하는 것을 더 포함할 수 있으며 상기 제 4 파일을 개방하기 위한 상기 요청을 수신하는 것에 응답하여, 상기 컴퓨팅 디바이스의 로컬 메모리에 상기 제 4 파일을 캐시하는 것이 파일 캐시 임계치를 초과한다면, 상기 프로세스는 상기 컴퓨팅 디바이스의 로컬 메모리로부터 상기 제 3 파일을 축출하는 것 및 상기 제 1 우선순위를 갖고 상기 컴퓨팅 디바이스의 로컬 메모리에 상기 제 4 파일을 캐시하는 것을 포함할 수 있다.
상기 제 1 파일은 상기 제 1 우선순위를 갖고 캐시되는 복수의 파일들 중 하나일 수 있으며, 여기에서 상기 복수의 파일들은 상기 복수의 파일들의 각각을 개방하기 위한 각각의 요청들에 응답하여 상기 컴퓨팅 디바이스의 상기 로컬 메모리에 캐시될 수 있다. 상기 제 2 파일은 상기 제 2 우선순위를 갖고 캐시되는 복수의 파일들 중 하나일 수 있으며, 여기에서 상기 복수의 파일들은 상기 복수의 파일들의 각각이 오프라인으로 이용 가능한 각각의 요청들에 응답하여 상기 컴퓨팅 디바이스의 로컬 메모리에 캐시될 수 있다. 상기 제 3 파일은 상기 제 3 우선순위를 갖고 캐시되는 복수의 파일들 중 하나일 수 있으며, 여기에서 상기 제 3 우선순위를 갖고 상기 복수의 파일들을 캐시하는 것은 각각의 마지막 수정된 날짜들에 기초하여 제 1 미리 결정된 수의 파일들을 캐시하는 것, 각각의 최근 시청된 날짜들에 기초하여 제 2 미리 결정된 수의 파일들을 캐시하는 것 및 각각의 공유 날짜들에 기초하여 제 3 미리 결정된 수의 파일들을 캐시하는 것을 포함할 수 있다.
상기 제 3 우선순위를 갖고 상기 복수의 파일들을 캐시하는 것은 하나 이상의 이전 캐시되는 파일들에 대한 상기 저장 시스템에서의 그것들의 관계에 기초하여 제 4 미리 결정된 수의 파일들을 캐시하는 것을 더 포함할 수 있다.
상기 제 3 파일은 상기 제 3 우선순위를 갖고 캐시되는 복수의 파일들 중 하나일 수 있으며, 여기에서 상기 제 3 우선순위를 갖고 상기 복수의 파일들을 캐시하는 것은 각각의 마지막 수정된 날짜들에 기초하여 파일들을 캐시하는 것 및 각각의 최근 시청된 날짜들에 기초하여 파일들을 캐시하는 것 사이에서 반복함으로써 미리 결정된 수의 파일들을 캐시하는 것을 포함할 수 있다.
상기 프로세스는 상기 컴퓨팅 디바이스의 로컬 메모리로부터 상기 제 3 파일을 개방하기 위한 요청을 수신하는 것, 상기 제 3 우선순위에서 상기 제 1 우선순위로 상기 제 3 파일을 변경하는 것 및 상기 제 3 파일의 최근 시청된 날짜를 변경하는 것을 더 포함할 수 있다.
또 다른 일반적인 양상에서, 비-일시적 컴퓨터-판독 가능한 저장 매체가 실행될 때 하나 이상의 프로세서들로 하여금 프로세스를 수행하게 하는 지시들을 저장하도록 구성될 수 있다. 상기 프로세스는 컴퓨팅 디바이스 및 클라우드 환경 내에서 동작하는 저장 시스템 사이에 통신 링크의 적어도 일 부분을 수립하는 것을 포함할 수 있으며, 상기 컴퓨팅 디바이스는 상기 저장 시스템으로부터 파일들을 캐시하도록 구성되는 로컬 메모리를 포함한다. 상기 프로세스는 또한 상기 컴퓨팅 디바이스의 로컬 메모리의 파일 캐시 임계치가 충족되었거나 또는 초과되었다는 표시를 수신하는 것을 포함할 수 있다. 상기 프로세스는, 상기 표시에 응답하여, 축출 임계치가 충족될 때까지, 상기 컴퓨팅 디바이스의 로컬 메모리로부터 캐시된 파일들의 세트의 적어도 일 부분을 추출하는 것을 더 포함할 수 있으며, 상기 캐시된 파일들의 세트의 적어도 일 부분은 상기 캐시된 파일들의 세트의 각각의 파일의 각각의 시간스탬프들에 기초하여 최저 캐시 우선순위로부터 최고 캐시 우선순위로 축출된다.
예시적인 구현들은 다음의 특징들 중 하나 이상을 포함할 수 있다. 예를 들면, 상기 캐시된 파일들의 세트는 제 1 캐시 우선순위를 가진 제 1 파일로서, 상기 제 1 파일이 상기 제 1 파일을 개방하기 위한 요청에 응답하여 캐시되는, 상기 제 1 파일; 제 2 캐시 우선순위를 가진 제 2 파일로서, 상기 제 2 파일은 상기 제 2 파일이 오프라인으로 이용 가능한 요청에 응답하여 캐시되었고, 상기 제 2 우선순위는 상기 제 1 우선순위보다 낮은, 상기 제 2 파일; 제 3 캐시 우선순위를 가진 제 3 파일로서, 상기 제 3 파일은 마지막 수정된 날짜 및 최근 시청된 날짜 중 적어도 하나에 기초하여 캐시되고, 상기 제 3 캐시 우선순위는 상기 제 2 캐시 우선순위보다 낮은, 상기 제 3 파일; 제 4 캐시 우선순위를 가진 제 4 파일로서, 상기 제 4 파일은 상기 파일이 공유된 날짜에 기초하여 캐시되며, 상기 제 4 캐시 우선순위는 상기 제 3 캐시 우선순위보다 낮은, 상기 제 4 파일; 및/또는 제 5 캐시 우선순위를 가진 제 5 파일로서, 상기 제 5 캐시 우선순위는 상기 제 4 캐시 우선순위보다 낮고, 상기 제 5 파일은 상기 제 1 파일, 상기 제 2 파일, 상기 제 3 파일 및 상기 제 4 파일 중 적어도 하나에 대한 상기 저장 시스템에서의 그것의 관계에 기초하여 캐시되는, 상기 제 5 파일을 포함할 수 있다.
상기 프로세스는 상기 제 1 캐시 우선순위 또는 상기 제 2 캐시 우선순위를 가진 파일들을 축출하기 전에 사용자로부터의 확인을 요청하는 것을 더 포함할 수 있다.
상기 프로세스는 상기 캐시된 파일들의 세트의 파일을 액세스하기 위한 요청을 수신하는 것으로서, 액세스가 요청되는 상기 파일은 상기 최고 캐시 우선순위보다 낮은 캐시 우선순위를 갖는, 상기 요청 수신하기, 및 상기 요청에 응답하여, 액세스가 요청되는 상기 파일의 상기 캐시 우선순위를 상기 최고 캐시 우선순위로 변경하는 것을 더 포함할 수 있다.
하나 이상의 구현들의 세부사항들은 첨부한 도면들 및 이하의 설명에 제시된다. 다른 특징들은 설명 및 도면들로부터, 및 청구항들로부터 명백해질 것이다.
도 1은 클라우드 환경 내에서 동작하는 클라우드-기반 저장 시스템으로부터의 파일들을 액세스하도록 구성된 컴퓨팅 디바이스들을 예시하는 다이어그램이다.
도 2는 구현에 따른 컴퓨팅 디바이스 및 저장 시스템을 예시하는 다이어그램이다.
도 3은 파일 관리기에 의해 컴퓨팅 디바이스에 제공될 수 있는 사용자 인터페이스를 예시하는 다이어그램이다.
도 4는 예가 로컬 메모리에서의 저장을 위해 클라우드-기반 저장 시스템으로부터 파일들을 인출(캐시)하기 위해 및 로컬 메모리(캐시)로부터 파일들을 축출(제거)하기 위해 접근하는 파일 시스템을 예시하는 다이어그램이다.
도 5는 파일 핸들링과 관련 있는 방법을 예시하는 흐름도이다.
도 6a 내지 도 6c는 파일 캐시과 관련 있는 방법들을 예시하는 흐름도들이다.
도 7은 캐시된 파일들의 축출과 관련 있는 방법을 예시하는 흐름도이다.
도 1은 클라우드 환경(100) 내에서 동작하는 저장 시스템(150)으로부터의 파일들(19)을 액세스하도록 구성된 컴퓨팅 디바이스들(110, 120)을 예시하는 다이어그램이다. 저장 시스템(150)이 클라우드 환경(100)에서 동작하기 때문에, 저장 시스템(150)은, 몇몇 구현들에서, 클라우드-기반 저장 시스템으로서 불리울 수 있다. 또한, 저장 시스템(150)은 컴퓨팅 디바이스들(110, 120)에 의해 원격으로 액세스되는 원격(예로서, 비-로컬) 저장 시스템일 수 있다. 클라우드 환경(100)은 서버들(예로서, 애플리케이션 서버들), 데이터베이스들 등을 포함한 다양한 하드웨어 및/또는 소프트웨어 구성요소들을 포함할 수 있다. 클라우드 환경(100)의 구성요소들은 리소스들을 공유하고(예로서, 동적으로 할당) 및/또는 컴퓨팅 디바이스들(110, 120)을 포함한 다양한 엔드포인트들을 서비스하도록 구성된 컴퓨팅 기반 시설로 통합될 수 있다.
컴퓨팅 디바이스들(110, 120)은 클라우드 환경(100) 내에서 동작하는 저장 시스템(150)을 액세스하도록 구성된 임의의 유형의 디바이스일 수 있다. 몇몇 구현들에서, 컴퓨팅 디바이스들(110, 120)은 각각 예를 들면 유선 디바이스 및/또는 무선 디바이스(예로서, Wi-Fi 가능 디바이스)일 수 있으며, 예를 들면, 컴퓨팅 엔티티(예로서, 개인용 컴퓨팅 디바이스), 서버 디바이스(예로서, 웹 서버), 이동 전화기, 터치스크린 디바이스, 개인용 디지털 보조기(PDA), 랩탑, 하나 이상의 프로세서들을 포함하거나 또는 그것과 연관된 텔레비전, 태블릿 디바이스, e-판독기, 및/또는 기타일 수 있다. 컴퓨팅 디바이스(들)는 하나 이상의 유형들의 하드웨어, 소프트웨어, 펌웨어, 운영 시스템들, 런타임 라이브러리들, 및/또는 기타를 포함할 수 있는 하나 이상의 플랫폼들(예로서, 하나 이상의 유사한 또는 상이한 플랫폼들)에 기초하여 동작하도록 구성될 수 있다.
몇몇 구현들에서, 컴퓨팅 디바이스들(110, 120)은 클라우드 환경(100)과 비교하여 비교적 적은 컴퓨팅 리소스들(예로서, 프로세싱 리소스들, 저장 리소스들)을 가질 수 있다. 따라서, 컴퓨팅 디바이스들(110, 120) 및 클라우드 환경(100)은 컴퓨팅 디바이스들(110, 120)이 클라우드 환경(100)의 컴퓨팅 리소스들을 레버리징할 수 있도록 총괄하여 구성될 수 있다. 구체적으로, 클라우드 환경(100) 및 및 컴퓨팅 디바이스(110, 120)의 저장 시스템(150)은 저장 시스템(150)이 컴퓨팅 디바이스들(110, 120)을 위한 1차 저장 시스템으로서 동작하도록 구성될 수 있다. 도 1에 도시된 바와 같이, 컴퓨팅 디바이스(110) 및 컴퓨팅 디바이스(120) 각각은 로컬 메모리(112) 및 로컬 메모리(122)를 포함한다. 컴퓨팅 디바이스들(110, 120)이 로컬 메모리들(112, 122)을 포함할지라도, 로컬 메모리들(112, 122)은 저장 시스템(150)의 캐시(예로서, 임시 캐시, 그에 대한 임시 저장 위치)로서 동작하도록 구성된다. 따라서, 로컬 메모리들(112, 122)은 저장 시스템(150)의 1차 저장 장치에 대한 1차 저장 장치로서 기능할 수 있다. 몇몇 실시예들에서, 예를 들면, 컴퓨팅 디바이스(110)에 할당된(예로서, 그에 의한 사용을 위해 지정된) 저장 시스템(150)의 저장 용량의 일 부분은 컴퓨팅 디바이스(110)의 로컬 메모리(112)의 저장 용량보다 10배 이상 더(예로서, 100배 더, 1000배 더) 클 수 있다.
각각의 컴퓨팅 디바이스들(110, 120)의 로컬 메모리들(112, 122)이 저장 시스템(150)에 대한 캐시(또는 2차 저장 장치)로서 기능할지라도, 로컬 메모리들(112, 122) 중 하나 이상에 및 저장 시스템(150)에 저장되는 파일들은 단일 또는 단 한 개의 세트의 파일들로서 핸들링될 수 있다. 다시 말해서, 로컬 메모리들(112, 122) 중 하나 이상, 및 저장 시스템(150)은 단일 저장 시스템(예로서, 단일 가상 저장 시스템, 단일 가상 하드 드라이브)으로서 기능할 수 있다. 예를 들면, 로컬 메모리들(112, 122) 중 하나 이상에 저장된 및 저장 시스템(150)에 저장된 파일들은 저장 위치들이 쉽게 구별되지 않을 수 있는 그러한 방식으로 파일들을 액세스하는 사용자에게 제공될 수 있다(예로서, 사용자 인터페이스를 통해 사용자에게 제공된다). 따라서, 사용자가 컴퓨팅 디바이스(110) 또는 컴퓨팅 디바이스(120)를 통해 파일들을 액세스하는지 여부에 관계없이, 로컬 메모리들(112, 122) 중 하나 이상, 및 저장 시스템(150)에 저장된 파일들과 연관된 파일 목록은 동일할 것이다(또는 실질적으로 동일할 것이다). 파일 핸들링과 관련 있는 보다 많은 세부사항들이 이하에 설명된다.
도 1에 도시된 바와 같이, 저장 시스템(150)은 호스팅된 파일들, 클라이언트 파일들, 원격 소스 파일들 등을 포함한 하나 이상의 카테고리들로 지정될 수 있는 파일들을 파일들(19)을 저장하도록 구성된다. 이러한 구현에서, 파일들(19)의 대부분은 파일들(19)의 각각이 연관되는 카테고리에 기초하여 라벨링된다. 따라서, 파일들(19)은 웹 파일(10)(또한 호스팅된 파일로서 불리울 수 있는), 클라이언트 파일(11), 및 원격 소스 파일(12)을 포함한다. 웹 파일(10)은 웹 파일 카테고리에 포함될 수 있고, 클라이언트 파일(11)은 클라이언트 파일 카테고리에 포함될 수 있으며, 원격 소스 파일(12)은 원격 소스 파일 카테고리에 포함될 수 있다. 몇몇 구현들에서, 파일들(19)의 각각은 예를 들면, 텍스트-기반 파일(예로서, 문서 파일), 스프레드시트 파일, 이미지 파일(예로서, 공동 사진 전문가 그룹(JPEG) 파일), 비디오 파일(예로서, 동화상 전문가 그룹(MPEG) 파일), 음악 파일(예로서, MPEG 오디오 계층 III(MP3) 파일) 등과 같은, 다양한 유형들의 파일들일 수 있다.
웹 파일(10)은 도 1에 도시된 것과 같은 웹 애플리케이션(140)을 사용하여 생성된 파일일 수 있다. 웹 애플리케이션(140)은 예를 들면, 클라우드 환경(100) 내에 호스팅될 수 있는 임의의 유형의 애플리케이션일 수 있다. 몇몇 구현들에서, 웹 애플리케이션(140)은 호스팅된 애플리케이션일 수 있다. 몇몇 구현들에서, 웹 애플리케이션(140)은 그것이 컴퓨팅 디바이스들(110, 120) 중 하나 이상에 의해 클라우드 환경(100) 내에서 동작하기 때문에 원격으로 제어될 수 있다. 웹 애플리케이션들 및 호스트 애플리케이션들과 관련 있는 보다 많은 세부사항들이 이러한 상세한 설명에서 나중에 설명된다.
클라이언트 파일(11)은 컴퓨팅 디바이스들(110, 120) 중 하나 이상으로부터 저장 시스템(150)에 저장되는 파일일 수 있다. 예를 들면, 클라이언트 파일(11)은 컴퓨팅 디바이스들(110, 120) 중 하나 이상으로부터 저장 시스템(150)에 저장되는 파일일 수 있다. 예를 들면, 클라이언트 파일(11)은 컴퓨팅 디바이스(120)에서 동작하는 애플리케이션(126)을 사용하여 생성된 파일일 수 있다. 애플리케이션(126)은 컴퓨팅 디바이스(120)에 설치되며 그것에서 동작하는 로컬 애플리케이션일 수 있다. 몇몇 구현들에서, 애플리케이션(126)은 클라우드 환경 내에서 동작하지 않을 수 있다.
원격 소스 파일(12)은 원격 소스(160)로부터 저장 시스템(150)에 저장되는 파일일 수 있다. 몇몇 구현들에서, 원격 소스(160)는 클라우드 환경(100)의 밖에서(예로서, 클라우드 환경(100)으로부터 및 컴퓨터 디바이스들(110, 120)로부터 독립적인) 동작하는 소스일 수 있다. 몇몇 구현들에서, 원격 소스(160)는 컴퓨팅 디바이스들(110, 120)로부터 분리된(또는 독립적인) 컴퓨팅 디바이스일 수 있다. 몇몇 구현들에서, 원격 소스(160)는 클라우드 환경(100)에 독립적으로 동작하는 제 3 자 소스일 수 있다. 몇몇 구현들에서, 원격 소스(160)는 컴퓨팅 디바이스들(110, 120) 증 하나 이상에 의해 트리거된 하나 이상의 지시들에 응답하여 저장 시스템(150)으로 이동될 수 있다.
도 1에 도시된 바와 같이, 파일들(19)의 적어도 일 부분이 컴퓨팅 디바이스(120)의 로컬 메모리(122)에 적어도 임시로 저장(예로서, 캐시)될 수 있다. 구체적으로, 파일들(19)에 포함된 파일(18)은 컴퓨팅 디바이스(120)의 로컬 메모리(122)에 저장된다. 파일(18)은 저장 시스템(150)에 저장된 파일들 중 임의의 것의 섀도잉되고, 미러링되거나, 또는 동기화된 사본일 수 있다. 예를 들면, 파일(18)은 저장 시스템(150)에 저장된 웹 파일(10)의 새도잉되거나 또는 미러링된 사본일 수 있다. 파일(18)은, 몇몇 구현들에서, 저장 시스템(150)에서 미러링되지 않고 로컬 메모리(122)에 저장되는 파일일 수 있다. 예를 들면, 파일(18)은 클라이언트 파일(11)로부터 분리되고, 로컬 메모리(122)에 생성되며 그것에 저장된, 또 다른 클라이언트 파일일 수 있다. 몇몇 구현들에서, 파일(18)이 컴퓨팅 디바이스(120)에서 쉽게 액세스(예로서, 조작)될 수 있도록 파일(18)은 로컬 메모리(122)에 저장되는(예로서, 임시로 저장되는) 파일일 수 있다. 도 1에 도시되지 않지만, 파일들(19)의 적어도 일 부분은 컴퓨팅 디바이스(110)의 로컬 메모리(112)에 적어도 임시로 저장될 수 있다.
저장 시스템(150)은 파일 관리기(155)를 포함한다. 몇몇 구현들에서, 파일 관리기(155)는 웹 애플리케이션으로서 기능할 수 있다. 파일 관리기(155)는 컴퓨팅 디바이스들(110, 120)이 저장 시스템(150)에 및/또는 컴퓨팅 디바이스들(110, 120) 중 하나 이상에 저장된 파일들(19)을 액세스할 수 있는 사용자 인터페이스를 제공하도록 구성된다. 몇몇 구현들에서, 파일 관리기(155)에 의해 제공된 사용자 인터페이스는 파일 시스템 사용자 인터페이스를 포함할 수 있다. 몇몇 구현들에서, 파일 관리기(155)에 의해 제공된 사용자 인터페이스는 파일들(19)의 목록(예로서, 계층, 폴더 시스템, 열거, 기록, 재고) 및/또는 파일들(19)에 대한 다른 메타데이터(예로서, 소유자, 생성 날짜, 파일명, 파일 이용 가능성/상태)를 표현할 수 있다. 파일들(19)의 목록은 파일들(19) 중 하나 이상에 대한 참조들(예로서, 그것에 대한 포인터들, 그것의 표시자들)을 포함할 수 있다. 파일들(19)을 액세스하는 것은 시청, 삭제, 편집, 다운로딩, 업로딩, 및/또는 기타를 포함할 수 있다.
예를 들면, 웹 파일(10)은 컴퓨팅 디바이스(120)로부터의 입력에 응답하여 웹 애플리케이션(140)을 사용하여 저장 시스템(150)에 생성되며 저장될 수 있다. 웹 파일(10)(또는 그것의 식별자)은 나중에 컴퓨팅 디바이스(110)의 디스플레이(114)에서 파일 관리기(155)에 의해 제공된 사용자 인터페이스에서 시청될 수 있다. 웹 파일(10)은 웹 애플리케이션(140)을 통해 컴퓨팅 디바이스(110)를 사용하여 선택되며 편집될 수 있다. 파일들(19) 중 하나 이상이 액세스될 수 있는 사용자 인터페이스의 일 예는 도 3에 예시되며 도 3과 관련되어 보다 상세히 논의된다.
파일들(19)은 파일 관리기(155)에 의해 사용자 인터페이스 내에서 컴퓨팅 디바이스(110) 또는 컴퓨팅 디바이스(120)에 제공된 파일들(19)의 목록이 사용자가 컴퓨팅 디바이스(110) 또는 컴퓨팅 디바이스(120)로 로그 인하는지 여부에 관계없이 동일하도록 사용자 계정과 연관될 수 있다. 다시 말해서, 파일들(19)의 목록은 파일들(19)의 목록이 액세스되는 컴퓨팅 디바이스에 관계없이 동기화될 수 있다. 파일 관리기(155)에 의해 사용자 인터페이스 내에 제공된 파일들(19)의 목록은 파일들의 다양한 카테고리들이 웹 애플리케이션 파일들, 컴퓨팅 디바이스로부터 제공된 클라이언트 파일들, 또는 원격 소스와 연관된 파일들로서 카테고리화된 파일들과 같은 파일들(19)에 포함될 수 있을지라도 동일할 수 있다(예로서, 동기화되고, 동적으로 동기화될 수 있다). 파일 관리기(155)에 의해 사용자 인터페이스 내에 제공된 파일들(19)의 목록은 파일들(19)이 저장 시스템(150) 및/또는 컴퓨팅 디바이스들(110, 120) 사이에 분배될 수 있을지라도 동일할 수 있다. 몇몇 구현들에서, 파일들(19)의 목록은 파일들이 파일들(19)에 포함되는 열거일 수 있다.
예를 들면, 몇몇 구현들에서, 사용자는 컴퓨팅 디바이스(110)로 로그 인할 수 있으며 파일들(19) 중 하나 이상을 액세스 및/또는 조작할 수 있다. 사용자가 컴퓨팅 디바이스(110)로부터 로그 아웃한 후, 사용자는 나중에 하나 이상의 파일들(19)을 액세스 및 조작하기 위해 컴퓨팅 디바이스(120)로 로그 인할 수 있다. 사용자가 컴퓨팅 디바이스(120)로 로그 인할 때, 제 1 로그인 후(컴퓨팅 디바이스(110)를 사용하여) 파일들(19)의 목록은 컴퓨팅 디바이스(120)를 통해 사용자에게 제공될 수 있다. 따라서, 파일들(19)의 목록은 사용자가 파일들(19)을 액세스하는 컴퓨팅 디바이스에 관계없이 끊김 없이 유지(또는 동기화)될 수 있다. 따라서, 파일 관리기(155)는 사용자가 컴퓨팅 디바이스(110) 또는 컴퓨팅 디바이스(120)로 로깅하는지 여부에 관계없이 파일들(19)의 동일한(또는 동기화된) 목록을 제공하도록 구성될 수 있다. 몇몇 구현들에서, 파일들(19)의 목록이 컴퓨팅 디바이스들(110, 120) 사이에 유지될 수 있을지라도, 몇몇 구현들에서, 파일들(19) 중 하나 이상의 상태들은 변경할 수 있다. 몇몇 실시예들에서, 상태들은 파일의 오프라인(예로서, 비-네트워크) 또는 온라인 이용 가능성과 관련될 수 있다. 파일들의 상태들과 관련 있는 보다 많은 세부사항들이 도 3과 관련되어 논의된다.
몇몇 구현들에서, 파일(18)은 사용자에 의해 컴퓨팅 디바이스(120)에서의 사용을 위해 컴퓨팅 디바이스(120)로 다운로딩되는(예로서, 이를 위해 인출되는) 파일일 수 있다(이미 컴퓨팅 디바이스(120)의 로컬 메모리(122)에서 이용 가능하지 않다면). 몇몇 구현들에서, 파일(예로서, 파일(18))의 현재 버전은 컴퓨팅 디바이스(120)의 로컬 메모리(122)에서 이미 이용 가능할 수 있으며, 저장 시스템(150)으로부터 다운로딩되지 않을 것이다. 몇몇 구현들에서, 파일이 저장 시스템(150)으로부터 다운로딩되기 전에, 로컬 메모리(122)는 파일이 이미 로컬 메모리(122)에 캐시되었는지 여부를 결정하기 위해 감사될 수 있다.
몇몇 구현들에서, 파일(18)은 컴퓨팅 디바이스(120)의 사용자에 의해(예로서, 사용자에 의해 트리거된 지시에 응답하여) 요구 시 로컬 메모리(122)로 다운로딩될 수 있다. 몇몇 구현들에서, 로컬 메모리(122)에 저장된 파일(18)은 컴퓨팅 디바이스(120)에서 오프라인 액세스를 위해 이용 가능할 수 있다. 컴퓨팅 디바이스(120)는 오프라인일 때 임의의 네트워크 또는 저장 시스템(150)이 액세스될 수 있는 네트워크에 대한 액세스를 갖지 않을 수 있다. 예를 들면, 컴퓨팅 디바이스(120)의 사용자는 저장 시스템(150)에 저장된 원격 소스 파일(12)에 대한 액세스를 요청할 수 있다. 요청들에 응답하여, 원격 저장 파일(12)의 사본이 파일(18)로서 컴퓨팅 디바이스(120)의 로컬 메모리(122)로 다운로딩될 수 있다. 파일(18)은 컴퓨팅 디바이스(120)에서 사용자에 의해 사용(예로서, 편집, 조작, 액세스)될 수 있다. 몇몇 구현들에서, 파일(18)에 대한 임의의 변화들은 저장 시스템(150)에 저장된 원격 소스 파일(12)에 미러링될 수 있다(예로서, 그것 내에서 동기화될 수 있다).
몇몇 구현들에서, 파일(18)은 컴퓨팅 디바이스(120)의 사용자에 의해 명확하게 요청되지 않고 사용을 위해 컴퓨팅 디바이스(120)로 인출(예로서, 사전-인출)되며 다운로딩될 수 있다. 다시 말해서, 하나 이상의 파일들은 사용자에 의한 사용을 위해 컴퓨팅 디바이스(120)에서 자동으로 캐시될 수 있다. 예를 들면, 사용자가 컴퓨팅 디바이스(120)로 로그 인할 때, 파일(18)이 컴퓨팅 디바이스(120)의 로컬 메모리(122)로 자동으로 다운로딩될 수 있다. 몇몇 구현들에서, 파일은 하나 이상의 기준들에 기초하여 자동으로 다운로딩될 수 있다. 가준들은 파일(18)이 컴퓨팅 디바이스(120)의 사용자에 의해 액세스될 수 있는지 여부에 대한 예측에 관련될 수 있다. 몇몇 구현들에서, 기준들은 파일(18)의 최근 액세싱, 다른 최근에 액세스된 파일들(18)에 대한 파일의 관계 및/또는 사용자에 의해 통상적으로 액세스된 파일 유형들, 및/또는 기타와 관련 있는 기준들을 포함할 수 있다. 로컬 메모리(예로서, 클라우드-기반 저장 시스템으로부터)에서의 저장을 위해 파일들을 다운로딩(인출)하기 위한 예시적인 접근법이 도 4에 예시되며 도 4에 대하여 이하에 보다 상세히 설명된다.
몇몇 구현들에서, 파일(18)은 컴퓨팅 디바이스(120)의 로컬 메모리(122)로부터 제거될 수 있다(예로서, 그로부터 삭제, 그로부터 임시로 제거, 그로부터 플러싱). 몇몇 구현들에서, 파일(18)은 예를 들면, 파일(18)의 날짜시간 스탬프, 파일(18)의 크기, 및/또는 기타를 포함한 하나 이상의 기준들에 기초하여 컴퓨팅 디바이스(120)의 로컬 메모리(122)로부터 제거될 수 있다. 몇몇 구현들에서, 파일(18)은 컴퓨팅 디바이스(120)의 다른 동작들을 위해 재-할당되는 컴퓨팅 디바이스(120)(또는 컴퓨팅 디바이스(120)의 다른 구성요소들)의 로컬 메모리(122)의 리소스들에 응답하여 컴퓨팅 디바이스(120)의 로컬 메모리(122)로부터 제거될 수 있다. 몇몇 구현들에서, 파일(18)은 로컬 메모리(122)에 저장될 수 있는 다른 파일들과 함께 컴퓨팅 디바이스(120)의 로컬 메모리(122)로부터 제거될 수 있다. 로컬 메모리로부터(예로서, 클라우드-기반 저장 시스템으로부터) 파일들을 축출(제거)하기 위한 예시적인 접근법이 또한 도 4에 예시되며 도 4에 대하여 이하에 추가로 상세히 설명된다.
도 1에 도시되지 않았지만, 몇몇 구현들에서, 파일들(19) 중 하나 이상이 컴퓨팅 디바이스들(110, 120)에 캐시되지 않고 컴퓨팅 디바이스들(110, 120) 중 하나 이상의 애플리케이션에 의해 직접 프로세싱될 수 있다. 다시 말해서, 파일들(19) 중 하나 이상의 캐시은 프로세싱이 컴퓨팅 디바이스들(110, 120) 중 하나 이상을 사용하여 수행될 때 바이패스될 수 있다. 예를 들면, 웹 파일(10) 및/또는 그것의 일 부분의 프로세싱은 클라우드 환경(100) 내에서 동작하고 및/또는 컴퓨팅 디바이스(120)에서 애플리케이션(126)을 사용하는 웹 애플리케이션(140)에 의해 핸들링될 수 있다. 이러한 구현들에서, 컴퓨팅 디바이스(120)의 로컬 메모리(122)에서의 웹 파일(10)의 분명한 캐시이 바이패스될 수 있다. 몇몇 구현들에서, 단지 웹 파일(10)의 일 부분만이 로컬 메모리(122)로부터 분리된 컴퓨팅 디바이스(120) 내에서의 임시 메모리 위치에 저장될 수 있다.
몇몇 구현들에서, 로컬 메모리들(112, 122)은 랜덤-액세스 메모리, 디스크 드라이브 메모리(예로서, 고체-상태 드라이브(SSD)), 플래시 메모리, 및/또는 기타와 같은 임의의 유형의 메모리일 수 있다. 몇몇 구현들에서, 로컬 메모리들(112, 122)은 컴퓨팅 디바이스들(110, 120)에 포함된 다른 메모리와 비교하여 비교적 장기 저장 메모리일 수 있다. 몇몇 구현들에서, 로컬 메모리들(112, 122)은 컴퓨팅 디바이스들(110, 120)에 포함된 최장기 메모리 구성요소들일 수 있다. 몇몇 구현들에서, 로컬 메모리들(112, 122)은 프로세서와 연관되며 RAM 형 메모리로부터 분리된 캐시 메모리로부터 분리될 수 있다. 몇몇 구현들에서, 로컬 메모리들(112, 122)은 컴퓨팅 디바이스들(110, 120)의 구성요소들과 연관된 하나 이상의 메모리 구성요소(예로서, 하나 이상의 랜덤-액세스 메모리(RAM) 구성요소 또는 디스크 드라이브 메모리)로서 구현될 수 있다.
몇몇 구현들에서, 웹 애플리케이션(140)은 웹 브라우저(도시되지 않음)에 의해 실행되거나 또는 해석되도록 구성될 수 있다. 이것은 기계 실행 가능한 코드를 포함할 수 있으며 프로세서에 의해 또는 컴퓨팅 디바이스의 운영 시스템을 통해 직접 실행되도록 구성될 수 있는 네이티브 애플리케이션과 대조가 될 수 있는 반면, 웹 애플리케이션(140)은 몇몇 구현에서, 웹 브라우저의 도움 없이 실행 또는 디스플레이가 가능하지 않을 수 있다. 따라서, 웹 애플리케이션(140)은 전용 사용자 인터페이스를 갖고 브라우저 내에서 동작될 수 있으며(예로서, 그것 내로부터 실행될 수 있으며), 통상적으로 독립형 웹사이트보다 더 풍부하며 상호작용적이지만 데스크탑 애플리케이션보다 덜 다루기 힘들며 모놀리식인 기능 및 경험을 제공할 수 있다. 웹 브라우저는 컴퓨팅 디바이스(예로서, 컴퓨팅 디바이스들(110, 120))에 의해 실행될 수 있고, 원격 서버(예로서, 웹사이트를 호스팅하는 원격 서버)로부터 코드(예로서, HTML 코드, 자바스크립트)를 수신할 수 있으며 컴퓨팅 디바이스의 사용자의 이득을 위해 컴퓨팅 디바이스 상에서 수신된 코드를 실행할 수 있다. 웹 애플리케이션들의 예들은 브라우저 내에서 실행되는 게임들, 사진 편집기들, 및 비디오 플레이어들을 포함할 수 있다.
몇몇 구현들에서, 웹 애플리케이션(140)은 호스팅된 애플리케이션 또는 패키징된 애플리케이션일 수 있다. 호스팅된 애플리케이션들은 그 자체가 웹 페이지들을 포함하는 웹 사이트의 적어도 일 부분, 더하기 웹 애플리케이션으로 하여금 사용자를 위한 몇몇 특정한 기능을 수행하도록 허용하기 위해 웹 애플리케이션의 사용자에 또는 웹 애플리케이션에 특히 적절할 수 있는 몇몇 메타데이터를 포함할 수 있다. 이러한 메타데이터는 예를 들면, 애플리케이션의 명칭, 애플리케이션의 기술, 애플리케이션의 버전, 및 애플리케이션을 위한 론칭 페이지(즉, 사용자가 호스팅된 애플리케이션의 아이콘을 클릭할 때 브라우저가 가는 웹 페이지)를 포함한, 애플리케이션이 사용하는 임의의 URL들을 포함할 수 있다. 메타데이터는 개발기의 서버 또는 디지털 시장의 서버 상에 호스팅된 매니페스트 파일(예로서, .crx 파일)에 포함될 수 있다.
패키징된 애플리케이션들은 그 코드가 번들링되는 웹 애플리케이션들이 고려될 수 있으며, 따라서 사용자는 브라우저에 의한 실행을 위해 웹 애플리케이션의 콘텐트의 적어도 일 부분을 다운로딩할 수 있다. 패키징된 웹 애플리케이션은 사용자에 대한 그것의 기능을 수행하기 위해 네트워크 액세스에 의존하지 않을 수 있으며, 오히려 네트워크로의 액세스 없이 컴퓨팅 디바이스 상에서 국소적으로 브라우저에 의해 성공적으로 실행될 수 있다. 패키징된 웹 애플리케이션들은, 패키징된 애플리케이션들로 하여금 브라우저가 행동하거나 또는 보는 방법을 변경하도록 허용하는, 확장 API들의 옵션을 가진다.
도 2는 구현에 따른 컴퓨팅 디바이스(210) 및 저장 시스템(250)을 예시하는 다이어그램이다. 컴퓨팅 디바이스(210)는 저장 시스템(250)과의 통신 링크(예로서, 단방향 통신 링크, 양방향 통신 링크)의 적어도 일 부분을 수립하도록 구성된다. 도 2에 도시되지 않았지만, 저장 시스템(250)은 클라우드 환경 내에서 동작하도록 구성될 수 있다. 저장 시스템(250)은 파일들(29) 및 파일 관리기(255)를 포함한다. 도 2에 명확히 도시되지 않았지만, 이러한 구현에서, 파일들(29)은 컴퓨팅 디바이스(210)의 로컬 메모리(265)에 저장되는 파일들을 포함할 수 있다. 따라서, 파일 관리기(255)는 컴퓨팅 디바이스(210)에 국소적으로 저장되거나 또는 저장 시스템(250)에 원격으로 저장되는 파일들과 연관될 수 있다. 국소적으로 저장된 파일들은 저장 시스템(250)에 포함된 파일 관리기(255)와 동기화되며 그것에 의해 관리될 수 있다.
도 2에 도시된 바와 같이, 컴퓨팅 디바이스(210)는 파일 관리기 애플리케이션(230)을 포함한다. 파일 관리기 애플리케이션(230)은 저장 시스템(250)의 파일 관리기(255)와 상호 작용하도록(예로서, 그것의 액세스, 트리거 동작들) 구성될 수 있다. 파일 관리기 애플리케이션(230)은, 몇몇 구현들에서, 브라우저 내에서 동작하도록(브라우저-기반 운영 시스템 내에서 동작하도록) 구성된 웹 애플리케이션일 수 있다. 컴퓨팅 디바이스(210)는 로컬 메모리(265) 및 프로세서(267)를 포함한다. 프로세서(267)는 컴퓨팅 디바이스(210)의 구성요소들 중 임의의 것과 연관될 수 있으며, 컴퓨팅 디바이스(210)의 동작들 중 임의의 것의 실행을 위해 사용될 수 있다.
파일 관리기 애플리케이션(230)은 파일 관리기(255)에 의해 저장 시스템(250)으로부터 제공된 사용자 인터페이스와 관련 있는 프로세싱을 핸들링하도록 구성된 사용자 인터페이스 핸들러(236)를 포함한다. 파일 관리기 애플리케이션(230)은 저장 시스템(250)과 연관된 파일들(29) 중 하나 이상의 상태를 변경하기 위해 컴퓨팅 디바이스(210)의 사용자에 의해 사용될 수 있는 상태 관리기(232)를 포함한다(몇몇 구현들에서 브라우저-기반 운영 시스템일 수 있는, 사용자 인터페이스를 통해). 파일 관리기 애플리케이션(230)은 또한 (사용자 인터페이스를 통해) 파일들(29)과 연관된 하나 이상의 사용자 계정들을 핸들링하도록 구성된 로그인 모듈(234)을 포함한다.
컴퓨팅 디바이스(210)는 컴퓨팅 디바이스(210) 및 저장 시스템(250) 사이에서의 통신 링크의 적어도 일 부분을 수립하도록 구성된 클라이언트 연결 모듈(240)을 포함한다. 몇몇 구현들에서, 컴퓨팅 디바이스(210) 및 저장 시스템(250) 사이에서의 통신 링크는 무선 연결, 유선 연결, 피어-투-피어 연결, 네트워크 연결, 보안 연결, 암호화된 연결, 및/또는 등일 수 있다.
컴퓨팅 디바이스(210)는 또한 컴퓨팅 디바이스(210)의 하나 이상의 동작들을 트리거하도록 구성될 수 있는 입력 디바이스(280)를 포함한다. 몇몇 구현들에서, 입력 디바이스(280)는 예를 들면, 마우스 디바이스, 키보드 디바이스, 터치패드 디바이스, 마이크로폰, 및/또는 등일 수 있거나, 또는 이를 포함할 수 있다. 컴퓨팅 디바이스(210)는 예를 들면, 발광 다이오드(LED) 디스플레이, 정전식 터치 디바이스, 저항성 터치스크린 디바이스, 표면 음향파(SAW) 디바이스, 용량성 터치스크린 디바이스, 압력 민감 디바이스, 표면 정전용량 디바이스, 투영식 정전용량 터치(PCT) 디바이스, 및/또는 등과 같은, 임의의 유형의 디스플레이일 수 있는 디스플레이(270)를 포함한다. 디스플레이(270)가 터치 민감 디바이스이면, 디스플레이(270)는 입력 디바이스로서 기능할 수 있다. 예를 들면, 디스플레이(270)는 입력 디바이스로서 사용자에 의해 사용될 수 있는 가상 키보드(예로서, 키보드를 에뮬레이팅하는)를 디스플레이하도록 구성될 수 있다.
컴퓨팅 디바이스(210) 및/또는 저장 시스템(250)의 구성요소들(예로서, 모듈들, 프로세서들)은 하드웨어, 소프트웨어, 펌웨어, 운영 시스템들, 런타임 라이브러리들, 및/또는 기타 중 하나 이상의 유형들을 포함할 수 있는 하나 이상의 플랫폼들(예로서, 하나 이상의 유사한 또는 상이한 플랫폼들)에 기초하여 동작하도록 구성될 수 있다. 몇몇 구현들에서, 컴퓨팅 디바이스(210) 및/또는 저장 시스템(250)의 구성요소들은 디바이스들의 클러스터(예로서, 서버 팜) 내에서 동작하도록 구성될 수 있다. 이러한 구현에서, 컴퓨팅 디바이스(210) 및/또는 저장 시스템(250)의 구성요소들의 기능 및 프로세싱은 디바이스들의 클러스터의 여러 개의 디바이스들에 분배될 수 있다.
컴퓨팅 디바이스(210)의 구성요소들 및/또는 저장 시스템(250)의 구성요소들은 속성들을 프로세싱하도록 구성된 하드웨어 및/또는 소프트웨어 중 임의의 유형일 수 있거나, 또는 이를 포함할 수 있다. 몇몇 구현들에서, 도 3에서 컴퓨팅 디바이스(210)의 구성요소들 및/또는 저장 시스템(250)의 구성요소들에 도시된 구성요소들의 하나 이상의 부분들은 하드웨어-기반 모듈(예로서, 디지털 신호 프로세서(DSP), 필드 프로그램 가능한 게이트 어레이(FPGA), 메모리), 펌웨어 모듈, 및/또는 소프트웨어-기반 모듈(예로서, 컴퓨터 코드의 모듈, 컴퓨터에서 실행될 수 있는 컴퓨터-판독 가능한 지시들의 세트)일 수 있거나, 또는 이를 포함할 수 있다. 예를 들면, 몇몇 구현들에서, 컴퓨팅 디바이스(210)의 구성요소들 및/또는 저장 시스템(250)의 구성요소들의 하나 이상의 부분들은 적어도 하나의 프로세서(도시되지 않음)에 의한 실행을 위해 구성된 소프트웨어 모듈일 수 있거나, 또는 이를 포함할 수 있다. 몇몇 구현들에서, 구성요소들의 기능은 도 2에 도시된 것들과 상이한 모듈들 및/또는 상이한 구성요소들에 포함될 수 있다.
몇몇 구현들에서, 컴퓨팅 디바이스(210)의 구성요소들 및/또는 저장 시스템(250)의 구성요소들 중 하나 이상은 메모리(도시된 것들과 함께 또는 그것 외에)에 저장된 지시들을 프로세싱하도록 구성된 프로세서들일 수 있거나, 또는 이를 포함할 수 있다. 예를 들면, 파일 관리기 애플리케이션(230)(및/또는 그것의 일 부분)은 하나 이상의 기능들을 구현하기 위해 프로세스와 관련 있는 지시들을 실행하도록 구성된 프로세서 및 메모리의 조합일 수 있거나, 또는 이를 포함할 수 있다.
몇몇 구현들에서, 저장 시스템(250)은 원격 데이터베이스, 로컬 데이터베이스, 분산 데이터베이스, 관계 데이터베이스, 계층 데이터베이스, 및/또는 기타 등등일 수 있다. 몇몇 구현들에서, 저장 시스템(250)의 적어도 몇몇 부분들은 컴퓨팅 디바이스(210)의 메모리(도시되지 않음)(예로서, 로컬 메모리)에 저장될 수 있다. 몇몇 구현들에서, 저장 시스템(250)은 컴퓨팅 디바이스(210)와 같은 다수의 디바이스들에 의해 공유된 메모리일 수 있거나, 또는 이를 포함할 수 있다. 몇몇 구현들에서, 저장 시스템(250)은 네트워크 내에서의 서버 디바이스(도시되지 않음)와 연관되며 컴퓨팅 디바이스(210)의 구성요소들을 서비스하도록 구성될 수 있다.
도시되지 않았지만, 몇몇 구현들에서, 컴퓨팅 디바이스(210)의 구성요소들 및/또는 저장 시스템(250)의 구성요소들은 예를 들면, 데이터 센터(예로서, 클라우드 컴퓨팅 환경), 컴퓨터 시스템, 하나 이상의 서버/호스트 디바이스들, 및/또는 기타 등등 내에서 동작하도록 구성될 수 있다. 몇몇 구현들에서, 컴퓨팅 디바이스(210)의 구성요소들 및/또는 저장 시스템(250)의 구성요소들은 네트워크 내에서 동작하도록 구성될 수 있다. 따라서, 컴퓨팅 디바이스(210)의 구성요소들 및/또는 저장 시스템(250)의 구성요소들은 하나 이상의 디바이스들 및/또는 하나 이상의 서버 디바이스들을 포함할 수 있는 다양한 유형들의 네트워크 환경들 내에서 기능하도록 구성될 수 있다. 예를 들면, 네트워크는 근거리 네트워크(LAN), 광역 네트워크(WAN), 및/또는 기타 등등일 수 있거나, 또는 이를 포함할 수 있다. 네트워크는 무선 네트워크 및/또는 예를 들면, 게이트웨이 디바이스들, 브리지들, 스위치들, 및/또는 기타 등을 사용하여 구현된 무선 네트워크일 수 있거나, 또는 이를 포함할 수 있다. 네트워크는 하나 이상의 세그먼트들을 포함할 수 있고 및/또는 인터넷 프로토콜(IP) 및/또는 사유 프로토콜과 같은 다양한 프로토콜들에 기초한 부분들을 가질 수 있다. 네트워크는 인터넷의 적어도 일 부분을 포함할 수 있다.
도 3은 파일 관리기에 의해 컴퓨팅 디바이스에 제공될 수 있는 사용자 인터페이스(300)를 예시하는 다이어그램이다. 사용자 인터페이스(300)는 도 1에 도시된 파일 관리기(155) 및/또는 도 2에 도시된 파일 관리기(255)에 의해 제공될 수 있다. 사용자 인터페이스(300)는 도 1에 도시된 컴퓨팅 디바이스들(110, 120) 및/또는 도 2에 도시된 컴퓨팅 디바이스(210) 중 하나 이상에 의해 수신될 수 있다(예로서, 그것에서 제어될 수 있다).
도 3에 도시된 바와 같이, 파일들의 목록(320)은 사용자 인터페이스(300) 내에서 표현된다. 파일들의 목록(320)은 명칭들(컬럼(321)에 도시된)(파일 A 내지 파일 L)에 의해 표현된 파일들을 포함할 수 있다. 파일들의 목록(320)은 크기(컬럼(322)에 도시된), 날짜(컬럼(323)에 도시된), 유형(컬럼(324)에 도시된), 및 오프라인 가용성(컬럼(325)에 도시된)을 포함한 파일들의 각각에 대한 다양한 정보를 포함한다. 파일들의 목록(320) 내에 표현된 파일들은 예를 들면, 웹 파일들, 클라이언트 파일들, 원격 소스 파일들, 및/또는 기타 등등과 같은 카테고리들로 지정될 수 있다.
도 3에 도시된 바와 같이, 파일들의 목록(320)이 다양한 카테고리들에서 지정된 파일들을 포함할 수 있을지라도, 파일들은 단일 사용자 인터페이스(300) 내에서 및 “드라이브”로 라벨링된 단일 윈도우에서 표현된다. 몇몇 구현들에서, 외부 저장 디바이스(범용 직렬 버스(USB) 디바이스와 같은) 상에 저장된 파일들, 다운로딩된 파일들, 및/또는 기타를 포함한 다른 유형들의 파일들이 드라이브 윈도우에 열거될 수 있다.
이러한 구현에서, 파일들의 목록(320) 내에 표현된 파일들 중 여러 개가 오프라인에서 이용 가능한 것으로서 지정된 것으로 도시된다. 오프라인에서 이용 가능한 것으로 지정되는 파일들은 완전히 채워진 실선 박스 아이콘들(실선 박스 아이콘들로 토글링될 수 있는 개방 박스 아이콘들과 대조적으로)을 갖고 컬럼(325)에 도시된다. 몇몇 구현들에서, 파일들 중 하나 이상의 오프라인 가용성은 컴퓨팅 디바이스(예로서, 도 1에 도시된 컴퓨팅 디바이스(110))를 통해 사용자에 의해 지정될 수 있다. 이러한 구현들에서, 오프라인 가용성을 위해 지정되는 파일들은 컴퓨팅 디바이스의 로컬 메모리에 저장될 수 있다. 몇몇 구현들에서, 컴퓨팅 디바이스의 로컬 메모리가 충분한 공간을 갖지 않는다면, 부가적인 파일들은 오프라인 가용성을 위해 지정되지 않을 수 있다.
이러한 구현에서, 파일들의 목록(320) 내에 표현된 파일들은 여러 개의 상태들 중 하나에 있을 수 있다. 몇몇 구현들에서, 상태들 중 하나 이상은 파일의 카테고리에 기초하여 지정될 수 있다. 몇몇 구현들에서, 상태들 중 하나 이상은 파일이 컴퓨팅 디바이스의 로컬 메모리에 최근에(또는 현재) 캐시되었는지 또는 캐시되지 않았는지 여부에 기초하여 지정될 수 있다. 몇몇 구현들에서, 파일의 상태는 사용자(사용자의 컴퓨팅 디바이스로부터의 지시를 통해)에 의해 지정될 수 있다. 몇몇 구현들에서, 파일의 상태는 디폴트로(사용자의 컴퓨팅 디바이스로부터의 명백한 지시 없이) 지정될 수 있다. 몇몇 구현들에서, 파일의 상태는 파일과 연관된 메카데이터에 기초하여 지정될 수 있다. 다시 말해서, 파일의 상태는 카테고리 지정, 사용자로부터의 지시들, 디폴트로, 파일이 얼마나 최근에 국소적으로 캐시되었는지 또는 파일이 캐시되지 않았는지(국소적으로 캐시되지 않았는지), 및/또는 기타 등등의 임의의 조합에 기초할 수 있다. 몇몇 구현들에서, 특정한 상태에 있는 파일들의 목록(320) 내에 표현된 파일들은 사용자가 파일의 상태를 쉽게 식별할 수 있도록 아이콘, 컬러 기법, 폰트, 및/또는 또 다른 지정을 갖고 사용자 인터페이스(300) 내에 표현될 수 있다.
예를 들면, 파일 A는 그것이 오프라인 가용성을 위한 파일로서 지정(예로서, 그로서 피닝된)되기 때문에 오프라인 이용 가능 상태에 있을 수 있다. 이러한 구현에서, 파일 A는 실선 박스 아이콘에 의해 오프라인 프로세싱을 위해 이용 가능한 것으로서 쉽게 식별될 수 있다. 또 다른 예로서, 파일 H는 그것이 오프라인 가용성을 위해 지정되지 않았기 때문에 온라인 이용 가능 상태에 있을 수 있다. 따라서, 파일 H는 단지 컴퓨팅 디바이스가 저장 시스템과 통신할 때 저장 시스템(예로서, 저장 시스템(150)) 상에서 컴퓨팅 디바이스(예로서, 컴퓨팅 디바이스(110))에 의한 액세스를 위해서만 이용 가능할 수 있다. 이러한 구현에서, 고리 아이콘과 연관된 파일들은 웹 파일들이다. 예를 들면, 파일 G는 개방 원과 연관되며 웹 파일이다. 웹 파일들은 사용자에 의해 오프라인 가용성을 위해 명확히 지정되지 않을지라도 온라인 이용 가능 상태에 있을 수 있다. 몇몇 구현들에서, 웹 파일들에 대한 디폴트 상태는 온라인 이용 가능 상태일 수 있다. 몇몇 구현들에서, 웹 파일들은 오프라인에서 이용 가능한 웹 애플리케이션의 확장을 사용하여 액세스될 수 있다. 몇몇 구현들에서, 로컬 메모리에 캐시되는 파일들(그러나 웹 파일들이 아니거나 또는 오프라인 가용성을 위해 지정되지 않은)은 또한 도 4에 대하여 이하에 추가로 상세히 논의되는 것과 같이, 오프라인에서 이용 가능해질 수 있다(그것들이 캐시로부터 제거될 때까지).
몇몇 구현들에서, 로컬 메모리에 캐시되는 파일들은 임계 시간 기간 내에서 액세스되는 최근에 액세스된 파일들일 수 있다. 따라서, 명확하게 피닝된 적어도 몇몇 파일들은 임계 시간 기간의 밖에서 액세스되는 파일일 수 있으며 캐시되지 않을 수 있다(파일들이 최근에 액세스되지 않았기 때문에 컴퓨팅 디바이스의 로컬 메모리에 현재 캐시되지 않는다). 명확히 피닝될 때, 캐시되지 않은 파일들은 로컬 저장 장치로 이동되며 캐시될 수 있다.
도 3에 도시된 사용자 인터페이스(300), 또는 그것의 파생물은 컴퓨팅 디바이스(예로서, 도 1에 도시된 컴퓨팅 디바이스(110))에서의 하나 이상의 애플리케이션들(예로서, 웹 애플리케이션들, 네이티브 애플리케이션들)에 의해 사용될 수 있다. 예를 들면, 사용자 인터페이스(300)에 도시된 파일들의 목록(320) 내에 표현된 파일들 중 하나 이상은 이메일 애플리케이션을 통해 선택되며 메시지에 첨부될 수 있다. 몇몇 구현들에서, 사진 편집 애플리케이션 또는 워드-프로세싱 애플리케이션은 사용자 인터페이스(300)에 도시된 파일들의 목록(320) 내에 표현된 하나 이상의 파일들을 액세스하기 위해 사용될 수 있다.
도 4는 로컬 메모리(412)(예로서, 도 1에 도시된 로컬 메모리(112)와 같은)에서의 저장을 위해 클라우드-기반 저장 시스템(450)(예로서, 도 1에 도시된 저장 시스템(150)과 같은)으로부터 파일들을 인출(캐시)할 뿐만 아니라 로컬 메모리(412)로부터 캐시된 파일들을 축출하기 위한 예시적인 접근법들을 구현하는 파일 시스템(400)을 예시한 다이어그램이다. 도 4에 도시되며 이하에 설명되는 접근법들은 예로서 제공된다. 파일들을 인출 및/또는 축출하는 순서는 다양한 구현들에서 상이할 수 있다. 다음의 논의에서, 파일들을 인출(캐시)하기 위한 예시적인 접근법들이 설명될 것이며, 그 후 캐시된 파일들(로컬 메모리로부터)을 축출하기 위한 대응하는 접근법들이 설명될 것이다.
도 4에 도시된 접근법들은 도 1 내지 도 3에 대하여 상기 논의되었던 기술들 및/또는 장치들을 사용하여 구현될 수 있다. 뿐만 아니라, 도 4에 예시된 접근법들은 동적 방식으로 구현될 수 있다. 예를 들면, 파일들은 수정되는 파일, 삭제되는 파일, 개방되는 파일, 폐쇄되는 파일, 오프라인에서 이용 가능한 것으로서 지정된(피닝된) 파일, 오프라인에서 이용 가능한 것으로서 지정되지 않은(피닝되지 않은) 파일, 및/또는 기타와 같은, 다수의 인자들에 기초하여 동적으로(지속적으로) 인출(캐시)되고 및/또는 축출(제거)될 수 있다. 따라서, 로컬 메모리(412)에 캐시(저장)되는(예로서, 오프라인에서 이용 가능한) 특정 파일들은 방금 설명된 것들과 같은 인자들에 기초하여 계속해서 변할 수 있다. 또한, 로컬 메모리(412)에 포함된 파일 캐시로부터 파일들을 캐시 및/또는 축출하는 것은 얼마나 많은 로컬 메모리가 캐시된 파일들을 위해 사용되는지 및/또는 요청된 동작(예로서, 사용자에 의한 요청)을 수행하기 위해 요구되는 로컬 메모리(412)의 양에 기초할 수 있다. 몇몇 구현들에서, 파일 캐시은 로컬 메모리(412)를 포함하는 로컬 컴퓨팅 디바이스에 이용 가능한 데이터 네트워크 액세스의 유형에 기초하여, 수행되거나, 또는 수행되지 않을 수 있다. 예를 들면, 단지 셀룰러 데이터 네트워크 액세스만이 이용 가능하다면, 일 예로서, 파일 캐시은 유선 또는 WiFi 네트워크 액세스가 이용 가능할 때까지 중단될 수 있다.
도 4에 도시된 바와 같이, 파일들은 우선순위 계층에 따라 캐시(인출, 사전-인출)될 수 있다. 예를 들면, 파일 시스템(400)에서, 사용자에 의해 개방되는 파일들(개방 파일들)(420)은 최고 우선순위를 갖고 로컬 메모리(412)에 캐시될 수 있다. 따라서, 사용자가 로컬 메모리(412)를 포함하며 클라우드 저장 시스템(450) 상에서의 특정 파일이 개방될 것이라는 표시(예로서, 문서 파일이 워드 프로세서에 개방될 것이라는 표시)를 제공하는 컴퓨팅 시스템으로 로깅될 때, 상기 특정 파일은 클라우드 저장 시스템(450)으로부터 인출되며 로컬 메모리(412)에 캐시될 것이다. 그러나, 몇몇 구현들에서, 특정 파일 유형들은 사용자에 의해 개방될 때조차 로컬 메모리(412)에 캐시되지 않을 수 있다. 예를 들면, 파일 시스템(400)에서, 웹 파일들(웹 파일(10)과 같은)은, 이러한 파일들의 프로세싱이 클라우드 환경 내에서 웹 애플리케이션에 의해 핸들링될 수 있으며 이러한 파일들을 국소적으로 캐시하는 것에 대한 임의의 중요한 이점이 있지 않을 수 있기 때문에, 로컬 메모리(412)에 캐시되지 않을 수 있다.
또한 도 4에 도시된 바와 같이, 피닝된 파일들(420)은 제 2 최고 우선순위를 갖고 로컬 메모리(412)에 캐시될 수 있다(개방 파일들 후). 예시적인 구현에서, 개방 파일들(사용자 개방된 파일들)(420)의 캐시이 완료된 후, 파일 시스템(400)은 피닝된 파일들(430)(도 3에 대하여 논의된 바와 같이, 오프라인에서 이용 가능한 것으로서 사용자에 의해 지정되는 파일들)을 캐시하도록 진행할 수 있다. 몇몇 실시예들에서, 개방 파일들(420) 또는 피닝된 파일들(430)을 캐시하는 동안과 같이, 파일 캐시을 위해 이용 가능한 로컬 메모리(412)의 임계 양이 도달(또는 초과)된다면, 파일 시스템(400)(예로서, 로컬 메모리(412)를 포함한 컴퓨팅 디바이스)은 파일 사전 인출(캐시)을 계속하기 위해 로컬 메모리(412)에서의 저장 공간을 자유롭게 하도록 축출 프로세스(이하에 설명되는 바와 같이)를 수행할 수 있다. 대안적으로, 파일 시스템(400)은 파일 캐시을 (적어도 일시적으로) 중단할 수 있다. 다른 실시예들에서, 파일 캐시을 위해 이용 가능한 로컬 메모리(412)의 임계 양이 도달(또는 초과)된다면, 계속해서 파일 캐시을 허용하기 위해 하나 이상의 파일들이 폐쇄되어야 하고(폐쇄될 필요가 있고) 및/또는 하나 이상의 파일들이 피닝되지 않아야(피닝되지 않을 필요가 있는)(오프라인에서 이용 가능한 것으로 지정되지 않는) 함을 표시하는 통지가 사용자에게 제공될 수 있다.
도 4에 도시된 예에서, 표시가 파일을 피닝된 것으로서 지정하기 위해 수신되며 파일이 이전에 로컬 메모리(412)에 캐시된 것이라면, 파일은 재-캐시(재-인출)되지 않을 수 있다. 마찬가지로, 표시가 파일을 개방하기 위해 수신되며, 파일이 이전에 로컬 메모리(412)에 캐시된 것이라면, 파일은 재-캐시(재-인출)되지 않을 수 있다.
개방 파일들(420) 및 피닝된 파일들(430)의 캐시이 완료된 후, 파일 시스템(400)은 그 후 주어진(로그 인된) 사용자와 연관되는 파일들의 다양한 속성들에 기초하여 클라우드 저장 시스템(450)(로컬 메모리(412)에서의 저장을 위한)으로부터의 부가적인 파일들(440)을 사전 인출(캐시)할 수 있다. 파일 시스템(400)에서, 클라우드 저장 시스템(450)은 관련 있는 파일 속성들의 리스트를 구성하기 위해 주어진 사용자에 대한 디렉토리 구조를 순회할 수 있다. 이러한 순회는 사용자가 클라우드 저장 시스템(450) 상에서 그 또는 그녀의 파일들 중 임의의 것을 액세스하는 것에 응답하여 수행될 수 있거나, 또는 사용자를 위한 프로세스에서의 로그의 일부로서 수행될 수 있다.
예시적인 구현에서, 개방 파일들(420) 및 피닝된 파일들(430)을 캐시한 후, 파일 시스템(400)은 사용자에 의해 최근에 액세스되며(예로서, 사용자에 의해 시청되고 및/또는 사용자에 의해 수정된) 사용자와 연관되는(그것에 의해 소유된) 미리 결정된 수의 파일들(예로서, 50개의 파일들, 100개의 파일들 또는 200개의 파일들), 예로서, 최근에 시청된/수정된 (액세스된) 파일들(442)을 캐시할 수 있다. 어떤 최근에 액세스된 파일들(442)이 캐시(인출)되는지에 대한 결정은 클라우드 저장 시스템(450)에 포함되는 사용자의 저장된 파일들의 각각에 대한 하나 이상의 각각의 파일 속성들(예로서, 상기 논의된 파일 디렉토리 순회 동안 수집된)에 기초할 수 있다. 예를 들면, 어떤 파일들을 캐시할 지 결정하기 위해 검사되는 파일 속성들은 “lastViewedByMeDate” 속성 또는 “modifiedByMeDate” 속성을 포함할 수 있다.
예를 들면, 캐시될 미리 결정된 수의 최근에 액세스된 파일들(442)이 50개의 파일들이라면, 메모리 시스템(400)은 25개의 가장 최근에 수정된 파일들 및 25개의 가장 최근에 시청된 파일들(그러나 수정되지 않은 파일들)을 캐시할 것이다. 25개의 가장 최근에 수정된 파일들이 먼저 캐시될 수 있거나, 또는 25개의 가장 최근에 시청된 파일들과 교번하는 방식으로 캐시될 수 있다. 또 다른 구현에서, 메모리 시스템(400)은 최근에 수정된 파일들을 포함하거나 또는 포함하지 않을 수 있는, 50개이 가장 최근에 시청된 파일들을 캐시할 수 있다. 또 다른 실시예에서, 메모리 시스템(400)은 50개의 가장 최근에 수정된 파일들을 캐시할 수 있으며 단지 최근에 시청된(및 수정되지 않은) 파일들을 캐시하지 않을 수 있다. 이전에 논의된 바와 같이, 파일 캐시을 위해 이용 가능한 로컬 메모리(412)의 임계 양이 도달(또는 초과)된다면, 파일 시스템(400)은 파일 사전 인출(캐시)을 계속하도록 허용하기 위해 로컬 메모리(412)에서의 저장 공간을 자유롭게 하도록 축출 프로세스(이하에 설명되는 바와 같이)를 수행할 수 있거나, 또는 대안적으로, 파일 시스템(400)은 로컬 메모리(412)에서 파일들을 캐시하는 것을 정지할 수 있다. 저장의 임계 양은 로컬 메모리(412)에서 총 저장 공간의 퍼센티지로서 산출될 수 있거나, 또는 로컬 메모리(412)에서 고정된 양의 저장 공간으로서 특정될 수 있다. 또한, 파일 시스템(400)은 캐시된 파일들의 총 수가 허용된 캐시 파일들의 상한(예로서, 500, 1,000, 5,000 등)을 표시하는 임계 값에 도달한다면 파일들을 캐시하는 것을 정지할 수 있다.
상기 설명된 바와 같이, 최근에 액세스된 파일들(442)을 캐시한 후, 파일 시스템(400)은 그 후 주어진(로그 인된) 사용자와 연관된(그에 의해 소유된) 파일들, 예로서 최근에 공유된 파일들(444)의 각각의 “sharedWithMeDate” 파일 속성들을 사용함으로써와 같이, 주어진(로그 인된) 사용자와 최근에 공유된 미리 결정된 수의 파일들을 캐시할 수 있다. 예를 들면, 캐시될 미리 결정된 수의 최근에 공유된 파일들(444)이 25이면, 파일 시스템(400)은 주어진 사용자와 가장 최근에 공유된 25개의 파일들(및 개방되고, 피닝되거나, 또는 최근에 액세스된 파일로 인해 이전에 캐시되지 않은)을 캐시할 수 있다. 예시적인 구현에서, 파일 시스템(400)은 미리 결정된 수의 최근에 공유된 파일들(예로서, 25개의 파일들)이 캐시될 때까지 이러한 방식으로 가장 최근에 공유된 파일들(444)을 캐시할 수 있다. 다른 실시예들에서, 도 4에 도시된 바와 같이, 최근에 공유된 파일들(444)의 캐시은 최근에 액세스된 파일들(442)의 캐시과 병합될 수 있다. 예를 들면, 미리 결정된 수의 50개의 파일들이 캐시된다면, 파일 시스템(400)은 미리 결정된 수의 파일들(50개의 파일들)이 캐시될 때까지 주어진 사용자에 대한 가장 최근에 수정된 파일들, 가장 최근에 시청된 파일들 및/또는 가장 최근에 공유된 파일들 사이에서 교번할 수 있다. 대안적으로, 파일 시스템(400)은 캐시된 파일들을 위해 이용 가능한 저장 공간의 임계 양이 도달(또는 초과)된다면 파일들을 캐시하는 것을 정지할 수 있다.
방금 설명된 바와 같이, 미리 결정된 수의 최근에 공유된 파일들(444)의 캐시이 완료된 후, 파일 시스템(400)은 그 후 “관련 있는” 파일들(446)을 캐시할 수 있다. 관련 있는 파일들(446)은 하나 이상의 이전에 캐시된 파일들(예로서, 개방 파일들(420), 피닝된 파일들(430), 최근에 액세스된 파일들(442) 및/또는 최근에 공유된 파일들(444))과 관련 있는 파일들일 수 있다. 예를 들면, 관련 있는 파일(446)은 이전에 캐시된 파일과 동일한 디렉토리에 있는 파일일 수 있다. 다른 구현들에서, 관련 있는 파일(446)은 이전에 캐시된 파일과 동일한 파일 유형인 파일일 수 있다. 다른 구현들에서, 다른 기준들이 이전에 캐시된 파일들에 대한 하나 이상의 관련 있는 파일들을 결정하기 위해 사용될 수 있다.
파일 시스템(400)에서, 다수의 접근법들이 관련 있는 파일들(446)을 캐시하기 위해 가능하다. 일 구현에서, 관련 있는 파일들(446)의 모두는 각각의 이전에 캐시된 파일(이들 파일들이 캐시된 것과 동일한 순서로)에 대해 결정될 수 있으며 주어진 이전에 캐시된 파일에 대한 모든 관련 있는 파일들(446)은 다음 이전에 캐시된 파일에 대한 관련 있는 파일들(446)을 캐시하기 전에 캐시될 수 있다. 예를 들면, 3개의 파일들이 이전에 캐시되었다면, 파일 A가 첫 번째로, 파일 B가 두 번째로, 및 파일 C가 세 번째로, 이 구현에서, 파일 A에 대한 관련 있는 파일들의 모두는 파일 B 또는 파일 C에 대한 임의의 관련 있는 파일들(446)을 캐시하기 전에 캐시될 것이다. 마찬가지로, 파일 B에 대한 관련 있는 모든 파일들(446)은 파일 C에 대한 임의의 관련 있는 파일들을 캐시하기 전에 캐시될 것이다. 따라서, 파일 C에 대한 관련 있는 파일들(446)은 마지막, 즉 파일 B에 대한 관련 있는 파일들(446)에 앞서 파일 A에 대한 관련 있는 파일들(446)을 캐시한 후, 캐시될 것이다.
또 다른 구현에서, 관련 있는 파일들(446)은 각각의 이전에 캐시된 파일에 대한 하나의 관련 있는 파일을 차례로 캐시함으로써, 이전에 캐시된 파일들의 각각에 대한 관련 있는 파일들(446) 사이에서 교번함으로써 캐시될 수 있다. 다시 이전에 캐시된 파일들(파일 A, 파일 B, 및 파일 C)의 예시를 사용하여, 이 예에서, 파일 A에 대한 하나의 관련 있는 파일이 캐시되고, 이어서 파일 B에 대한 하나의 관련 있는 파일, 이어서 파일 C에 대한 하나의 관련 있는 파일이 캐시될 수 있으며, 그 후 시퀀스를 반복한다. 이러한 접근법에서, 주어진 이전에 캐시된 파일에 대한 관련 있는 파일들(446)이 캐시되는 순서(예로서, 각각의 반복에서)는 상기 설명된 것과 유사한 방식에서와 같이, “lastViewedByMeDate” 속성, “modifiedByMeDate” 속성 및/또는 “sharedWithMeDate” 속성과 같은 기준들을 사용하여 결정될 수 있다.
관련 있는 파일들(446)을 캐시할 때, 프로세스는 모든 관련 있는 파일들(446)이 캐시되고, 캐시된 파일들의 수가 캐시된 파일 임계치의 수에 도달하거나 도는 데이터 저장(로컬 메모리(412)에서)의 임계 양이 캐시된 파일들(개방 파일들(420), 피닝된 파일들(430), 최근에 액세스된 파일들(442), 최근에 공유된 파일들(444) 및 관련 있는 파일들(446))에 의해 사용될 때까지 계속될 수 있다. 또한, 관련 있는 파일들(446)이 설명된 교번 방식으로 캐시된다면, 일단 주어진 이전에 캐시된 파일에 대한 관련 있는 파일들(446)의 모두가 또한 캐시된다면, 주어진 이전에 캐시된 파일에 대한 관련 있는 파일 캐시은 그 다음의 반복들을 위해 건너뛰어질 수 있다.
몇몇 실시예들에서, 관련 있는 파일들(446)의 세트는 매우 클 수 있다(예로서, 로컬 메모리(412)에서의 이용 가능한 캐시 저장 공간에 비교하여). 다른 실시예들에서, 실제로 이전에 캐시된 파일들과 관련 있는 관련 있는 파일들(446)의 세트는 주어진 사용자의 파일 디렉토리 구조가 잘 정의되지 않기 때문에(예로서, 사용자의 파일들의 모두는 단일 디렉토리 또는 작은 수의 디렉토리들에 저장된다) 결정하기 어려울 수 있다(또는 불가능할 수 있다). 이러한 인스턴스들에서, 파일 시스템(400)은 관련 있는 파일들을 캐시하는 것을 앞서도록 구성될 수 있다.
다른 실시예들에서, 관련 있는 파일들(446)은 다른 방식들로 결정될 수 있다. 예를 들면, 주어진 이전에 캐시된 파일에 대한 관련 있는 파일들(446)은 이전에 캐시된 파일이 위치되는 디렉토리의 서브-디렉토리들 또는 부모 디렉토리들(예로서, 루트 디렉토리가 아닌)에 포함되는 파일들을 포함할 수 있다. 다른 구현들에서, 관련 있는 파일들(446)은 다른 방식들로 결정될 수 있다. 예를 들면, 관련 있는 파일들(446)은 사용자(로그 인된 사용자)에 의해 브라우징되는 디렉토리들에 위치된 파일들을 포함할 수 있다. 특정한 구현에 의존하여, 다수의 다른 접근법들이 관련 있는 파일들(446)을 결정하기 위해 사용될 수 있다.
상기 표시된 바와 같이, 로컬 메모리(412)에 캐시되는 파일들은 하나 이상의 제한들의 대상이 될 수 있다. 예를 들면, 캐시을 위해 이용 가능한 로컬 메모리(412)에서의 저장 공간의 양은 제한될 수 있다. 몇몇 구현들에서, 파일 캐시을 위해 이용 가능한 로컬 메모리(412)에서의 저장 공간의 양은 고정된 양의 저장 공간으로서 정의될 수 있다. 다른 실시예들에서, 파일 캐시을 위해 이용 가능한 로컬 메모리(412)에서의 저장 공간의 양은 로컬 메모리(412)에서의 총 저장 공간의 퍼센티지로서 정의될 수 있다. 다른 실시예들에서, 로컬 메모리(412)에 저장될 수 있는 캐시된 파일들의 수는 캐시된 파일들의 임계 수에 제한될 수 있다. 로컬 메모리(412)에서 파일 캐시을 위해 이용 가능한 공간의 양을 결정하기 위해 사용된 기준들에 관계 없이, 상황들은 캐시가 어떤 부가적인 파일들도 캐시될 수 없음를 표시하는, “가득 찬(full)” 것으로 결정될 때 발생할 것이다. 이러한 상황들에서, 축출 프로세스(도 4에서 화살표(460)에 의해 표시된)가 이하에 설명된 방식들로와 같이, 파일 시스템(400)에서 수행될 수 있다.
예시적인 구현에서, 로컬 메모리(412)에 포함된 파일 캐시가 가득 찬 것으로 결정될 때, 파일들은 실질적으로 파일 캐시에 포함되는 파일들을 캐시하기 위해 사용된 우선순위 계층의 역인 우선순위 계층을 사용하여 축출될 수 있다. 추출된 파일들의 수는 특정한 구현에 의존할 것이다. 예를 들면, 파일들은 캐시을 위해 이용 가능한 주어진 양의 저장 장치가 자유로워질 때까지 축출될 수 있다. 다른 실시예들에서, 파일들은 특정 퍼센티지의 총 파일 캐시 저장 공간이 자유로워질 때까지 축출될 수 있다. 다른 실시예들에서, 파일들은 특정 파일을 캐시하기 위해 요구된 파일 캐시 저장 공간의 양이 자유로워질 때까지 축출될 수 있다. 다른 실시예들에서, 파일들은 캐시된 파일들의 수가 축출 임계치 미만일 때까지 축출될 수 있다. 다수의 다른 접근법들이 축출할 파일들의 수(데이터의 양)를 결정하기 위해 사용될 수 있다.
파일들이 캐시로부터 축출되는 순서는 그것들 각각의 가장 최근의 시간스탬프들에 의해 추가로 결정될 수 있다. 예를 들면, 파일이 먼저 캐시될 때, 그것은 그것이 캐시될 때를 표시하는 시간스탬프(날짜/시간스탬프)를 제공받을 수 있다. 몇몇 실시예들에서, 캐시된 파일이 액세스될 때마다, 그것의 시간스탬프는 각각의 캐시된 파일의 마지막 액세스(시청 및/또는 수정)의 시간을 반영하기 위해 업데이트될 수 있다. 따라서, 축출 프로세스(460)는, 축출 프로세스가 가장 최근의 시간스탬프들(캐시된 시간으로부터의 시간스탬프 또는 가장 최근 액세스로부터의 시간스탬프)에 기초할 수 있기 때문에, 그것들이 캐시되는 정확한 역순으로 캐시된 파일들을 축출하지 않을 수 있다.
예시적인 실시예에서, 축출 프로세스(460)는 다음의 방식으로 로컬 메모리(412)에서의 파일 캐시로부터 파일들을 축출할 수 있다. 관련 있는 파일들(446)이 먼저 축출될 수 있으며, 여기에서 가장 오래된 시간스탬프를 가진 관련 있는 파일(446)은 첫 번째로 축출될 것이며 최신 시간스탬프를 가진 관련 있는 파일은 마지막으로 축출될 것이다. 상기 표시된 바와 같이, 파일 축출 프로세스(460)는 일단 미리 결정된 양의 파일 캐시 저장 공간이 해당된다면 중단될 수 있다. 이 예에서, 캐시된 관련 있는 파일들(446)의 모두가 축출된 후, 최근 공유된 파일(444)은 역순으로 가장 오래된 시간스탬프로 시작하여 최신 시간스탬프를 갖는 최근 공유된 파일(444)로 축출될 수 있다. 다시, 파일 축출 프로세스(460)는 미리 결정된 양의 파일 캐시 저장 공간이 해방된다면 중단될 수 있다. 일단 캐시된 최근에 공유된 파일들(444)의 모두가 축출된 후, 최근에 액세스된 파일들(442)은 가장 오래된 시간스탬프로 시작하여 역순으로 최신 시간스탬프를 갖는 최근에 액세스된 파일(442)로 진행되어 축출될 수 있다. 그러나 다시, 파일 축출 프로세스(460)는 일단 미리 결정된 양의 파일 캐시 저장 공간이 해방된다면 중단될 수 있다. 다른 구현들에서, 캐시된 최근에 공유된 파일들(444) 및 캐시된 최근에 액세스된 파일들(442)의 축출은 병합되며, 이들 두 개의 세트들의 캐시된 파일들은 가장 오래된 시간스탬프로부터 최신 시간스탬프로, 그것들의 시간스탬프들에 기초한 그룹으로서 축출된다. 상기 논의된 바와 유사한 방식으로, 일단 미리 결정된 양의 파일 캐시 저장 공간이 자유롭게 된다면, 파일 축출은 중단될 수 있다. 물론, 다수의 다른 접근법들이 파일 캐시로부터 파일들을 축출하기 위해 사용될 수 있다.
파일드(440)의 모두가 로컬 메모리(412)의 파일 캐시로부터 축출되며 요구된 파일 캐시 저장 공간의 양이 여전히 자유로워지지 않은 경우에, 파일 캐시이 진행되도록 허용하기 위해 사용자가 파일들을 언피닝하고 및/또는 파일들을 폐쇄하도록 요청하는 통지가 사용자(예로서, 로그 인된 사용자)에게 제공될 수 있다. 다른 구현들에서, 파일들은 파일 캐시로부터 파일들(440)을 추출하기 위해 사용된 것들과 유사한 기준들을 사용함으로써와 같이, 파일 시스템(400)에 의해 자동으로 언피닝될 수 있다. 예를 들면, 파일들은 그것들의 시간스탬프들에 기초하여(가장 오래된에서 최신으로) 자동으로 언피닝될 수 있다.
도 5는 파일 핸들링과 관련 있는 방법을 예시하는 흐름도이다. 도 5에 도시된 바와 같이, 컴퓨팅 디바이스 및 클라우드 환경 내에서 동작하는 저장 시스템 사이에 통신 링크의 적어도 일 부분이 수립된다(블록(500)).
도 5에 도시된 바와 같이, 복수의 파일들의 적어도 제 1 부분이 컴퓨팅 디바이스의 로컬 메모리에 저장되며 복수의 파일들의 제 2 부분이 저장 시스템에 저장되는 복수의 파일들을 표현한 파일들의 목록이 저장된다(블록(510)). 몇몇 실시예들에서, 파일들의 목록은 클라우드 환경에 저장되며 그로부터 액세스될 수 있다. 몇몇 실시예들에서, 파일들의 목록은 컴퓨팅 디바이스에 저장되며 그로부터 액세스될 수 있다.
파일들의 목록으로부터의 파일은 파일들의 목록으로부터의 파일과 연관된 파일 카테고리에 기초하여 오프라인 가용성을 위해 지정된다(블록(520)). 몇몇 실시예들에서, 파일은 파일과 연관된 카테고리에 기초하여 지정될 수 있다. 몇몇 실시예들에서, 파일은 컴퓨팅 디바이스를 통해 사용자에 의해 트리거된 지시들에 기초하여 지정될 수 있다. 몇몇 실시예들에서, 파일은 디폴트로 또는 파일의 캐시 상태에 기초하여 지정될 수 있다.
도 6a 내지 도 6c는 파일 캐시과 관련 있는 방법들을 예시하는 흐름도들이다. 도 6a 내지 도 6c에 도시된 방법들은 예를 들면 여기에 설명된 파일 핸들링 접근법들을 사용하여 서로와 함께 구현될 수 있다. 도 6a에 도시된 바와 같이, 컴퓨팅 디바이스 및 클라우드 환경 내에서 동작하는 저장 시스템 사이에서의 통신 링크의 적어도 일 부분이 수립된다(블록(600)).
도 6a에 도시된 바와 같이, 저장 시스템 상에 저장된 제 1 파일을 개방하기 위한 요청이 수신된다(블록(605)). 제 1 파일을 개방하기 위한 요청에 응답하여, 제 1 파일이 컴퓨팅 디바이스의 로컬 메모리에 캐시되며, 제 1 파일은 제 1 우선순위를 갖고 캐시된다(블록(610)). 몇몇 실시예들에서, 제 1 파일은 제 1 우선순위를 갖고 캐시된 복수의 파일들 중 하나일 수 있다. 복수의 파일들(제 1 우선순위를 가진)은 복수의 파일들의 각각을 개방하기 위한 각각의 요청들에 응답하여 컴퓨팅 디바이스의 로컬 메모리에 캐시될 수 있다.
도 6a에 또한 도시된 바와 같이, 저장 시스템 상에 저장된 제 2 파일이 오프라인에서 이용 가능한 요청이 수신된다(블록(615)). 제 2 파일이 오프라인에서 이용 가능하게 하려는 요청에 응답하여, 제 2 파일은 컴퓨팅 디바이스의 로컬 메모리에 캐시되며(블록(620)), 제 2 파일은 제 1 우선순위보다 낮은 제 2 우선순위를 갖고 캐시된다. 몇몇 실시예들에서, 제 2 파일은 제 2 우선순위를 갖고 캐시된 복수의 파일들 중 하나일 수 있다. 컴퓨팅 디바이스의 로컬 메모리에 캐시되는 복수의 파일들(제 2 우선순위를 갖고)은 복수의 파일들의 각각이 오프라인에서 이용 가능하다는 각각의 요청들에 응답하여 캐시될 수 있다.
도 6a에 추가로 도시된 바와 같이, 저장 시스템에 저장된 제 3 파일은 컴퓨팅 디바이스의 로컬 메모리에서 예측적으로 캐시된다(블록(625)). 제 3 파일은 제 3 파일의 하나 이상의 속성들에 기초하여 선택될 수 있으며, 제 3 파일은 제 2 우선순위보다 낮은 제 3 우선순위를 갖고 캐시될 수 있다.
제 3 파일(블록(625)에서)은 제 3 우선순위를 갖고 캐시된 복수의 파일들 중 하나일 수 있다. 몇몇 실시예들에서, 제 3 우선순위를 갖고 복수의 파일들을 캐시하는 것은, 각각의 마지막 수정된 날짜들에 기초하여 제 1 미리 결정된 수의 파일들을 캐시하는 것, 각각의 최근 시청된 날짜들에 기초하여 제 2 미리 결정된 수의 파일들을 캐시하는 것, 각각의 공유된 날짜들에 기초하여 제 3 미리 결정된 수의 파일들을 캐시하는 것 및/또는 저장 시스템에서, 하나 이상의 이전 캐시된 파일들에 대한 그것들의 관계에 기초한 제 4 미리 결정된 수의 파일들을 캐시하는 것을 포함할 수 있다. 다른 실시예들에서, 제 3 우선순위를 갖고 복수의 파일들을 캐시하는 것은 저장 시스템에 저장된 파일들의 각각의 마지막 수정된 날짜들 및 각각의 최근 시청된 날짜들에 기초하여 파일들을 캐시하는 것 사이에서 반복함으로써 미리 결정된 수의 파일들을 캐시하는 것을 포함할 수 있다.
특정한 실시예들에서, 제 1 파일, 제 2 파일 및 제 3 파일(도 6a의)은 그것들 각각의 우선순위들에 기초하여 및 컴퓨팅 디바이스의 로컬 메모리에서의 이용 가능한 파일 캐시 저장 용량의 양에 기초하여 컴퓨팅 디바이스의 로컬 메모리에 캐시될 수 있다. 예를 들면, 파일들은, 여기에 논의된 바와 같이, 파일 캐시 임계치(예로서, 파일들의 수, 데이터의 양 및/또는 기타)가 충족되거나 또는 초과될 때까지, 우선순위의 순서로(예로서, 동일한 캐시 우선순위의 파일들에 대한 날짜 스탬프들을 사용하여) 캐시될 수 있다.
상기 표시된 바와 같이, 도 6b에 예시된 방법은 도 6a의 방법과 함께 구현될 수 있으며, 예시를 위해, 이와 같이 설명될 것이다. 도 6b에 도시된 바와 같이, 저장 시스템 상에 저장된 제 4 파일을 개방하기 위한 요청이 수신된다(블록(630)). 제 4 파일을 개방하기 위한 요청을 수신하는 것에 응답하여, 컴퓨팅 디바이스의 로컬 메모리에 제 4 파일을 캐시하는 것이 파일 캐시 임계치를 초과한다면, 제 3 파일은 컴퓨팅 디바이스의 로컬 메모리로부터 축출(제거)된다(블록(635)). 제 4 파일은 제 1 우선순위를 갖고 컴퓨팅 디바이스의 로컬 메모리에 캐시된다(블록(640)).
상기 표시된 바와 같이, 도 6c에 예시된 방법은 도 6a의 방법과 함께 구현될 수 있으며(도 6b에 예시된 방법과 유사한 방식으로), 예시를 위해 이와 같이 설명될 것이다. 도 6c에 도시된 바와 같이, 컴퓨팅 디바이스의 로컬 메모리로부터 제 3 파일을 개방하기 위한 요청이 수신된다(블록(645)). 블록(645)의 요청에 응답하여, 제 3 파일의 캐시 우선순위는 제 3 우선순위로부터 제 1 우선순위로 변경되며 (블록(650)) 제 3 파일의 최근 시청된 날짜가 변경된다(655).
도 7은 캐시된 파일들의 축출과 관련 있는 방법을 예시한 흐름도이다. 도 7에 도시된 바와 같이, 컴퓨팅 디바이스 및 클라우드 환경 내에서 동작하는 저장 시스템 사이에서의 통신 링크의 적어도 일 부분이 수립된다(블록(700)). 컴퓨팅 디바이스는 저장 시스템으로부터 파일들을 캐시하도록 구성되는 로컬 메모리를 포함할 수 있다. 컴퓨팅 디바이스의 로컬 메모리의 파일 캐시 임계치가 충족되거나 또는 초과되었다는 표시가 수신된다(블록(710)). 블록(710)에서의 표시에 응답하여, 캐시된 파일들의 세트의 적어도 일 부분이 예로서 축출 임계치가 충족될 때까지, 컴퓨팅 디바이스의 로컬 메모리로부터 축출된다. 캐시된 파일들의 세트의 적어도 일 부분은 최저 캐시 우선순위로부터 최고 캐시 우선순위로 축출될 수 있으며 캐시된 파일들의 세트의 각각의 파일의 각각의 시간스탬프들에 기초하여 축출될 수 있다. 도 7에 도시된 바와 같이, 사용자로부터의 확인은 제 1 캐시 우선순위 또는 제 2 캐시 우선순위를 갖고 파일들을 추출하기 전에 요청된다. 몇몇 실시예들에서, 이러한 확인은 제 1 캐시 우선순위(개방 파일들) 또는 제 2 캐시 우선순위(피닝된 파일들)를 갖고 파일들을 축출하기 전에 요청되지 않을 수 있다.
몇몇 실시예들에서, 캐시된 파일들의 세트는 제 1 캐시 우선순위를 가진 제 1 파일을 포함할 수 있으며, 제 1 파일은 제 1 파일을 개방하기 위한 요청에 응답하여 캐시되었다. 캐시된 파일들의 세트는 또한 제 2 캐시 우선순위를 가진 제 2 파일을 포함할 수 있으며, 제 2 파일은 제 2 파일이 오프라인에서 이용 가능하게 하려는 요청에 응답하여 캐시되며, 제 2 우선순위는 제 1 우선순위보다 낮다. 캐시된 파일들의 세트는 제 3 캐시 우선순위를 가진 제 3 파일을 더 포함할 수 있으며, 제 3 파일은 마지막 수정된 날짜 및 최근 시청된 날짜 중 적어도 하나에 기초하여 캐시되며, 제 3 캐시 우선순위는 제 2 캐시 우선순위보다 낮다. 캐시된 파일들의 세트는 제 4 캐시 우선순위를 가진 제 4 파일을 더 포함할 수 있으며, 제 4 파일은 파일이 공유된 날짜에 기초하여 캐시되고, 제 4 캐시 우선순위는 제 3 캐시 우선순위보다 낮다. 캐시된 파일들의 세트는 또한 제 5 캐시 우선순위를 가진 제 5 파일을 더 포함할 수 있으며, 제 5 캐시 우선순위는 제 4 캐시 우선순위보다 더 낮고, 제 5 파일은 제 1 파일, 제 2 파일, 제 3 파일, 및/또는 제 4 파일 중 적어도 하나에 대한 저장 시스템에서의 그것의 관계에 기초하여 캐시된다.
도 6c에 대하여 상기 논의된 바와 유사한 방식으로, 블록(720)의 캐시된 파일들의 세트의 파일을 액세스하기 위한 요청이 수신될 수 있으며, 여기에서 액세스가 요청되는 파일은 최고 캐시 우선순위보다 낮은 캐시 우선순위를 가진다. 이러한 요청에 응답하여, 액세스가 요청되는 파일의 캐시 우선순위는 최고 캐시 우선순위(예로서, 제 1 캐시 우선순위)로 변경될 수 있다.
일반적인 양상에서, 컴퓨터-판독 가능한 저장 매체가 실행될 때 하나 이상의 프로세서들로 하여금 프로세스를 수행하게 하는 지시들을 저장하도록 구성될 수 있다. 프로세스는 컴퓨팅 디바이스 및 클라우드 환경 내에서 동작하는 저장 시스템 사이에 통신 링크의 적어도 일 부분을 수립하는 것을 포함할 수 있다. 프로세스는 복수의 파일들을 표현한 파일들의 목록을 포함한 사용자 인터페이스를 액세스하는 것을 포함할 수 있으며 복수의 파일들의 적어도 제 1 부분은 컴퓨팅 디바이스의 로컬 메모리에 저장되며 복수의 파일들의 제 2 부분은 저장 시스템에 저장된다.
또 다른 일반적인 양상에서, 컴퓨터-판독 가능한 저장 매체는 실행될 때 하나 이상의 프로세서들로 하여금 프로세스를 수행하게 하는 지시들을 저장하도록 구성될 수 있다. 프로세스는 컴퓨팅 디바이스 및 클라우드 환경 내에서 동작하는 저장 시스템 사이에 통신 링크의 적어도 일 부분을 수립하는 것을 포함할 수 있다. 프로세스는 복수의 파일들의 적어도 제 1 부분이 컴퓨팅 디바이스의 로컬 메모리에 저장되며 복수의 파일들의 제 2 부분이 저장 시스템에 저장되는 복수의 파일들을 표현한 파일들의 목록을 저장하는 것을 포함할 수 있으며, 컴퓨팅 디바이스로부터 수신된 지시 중 적어도 하나에 응답하여 또는 파일들의 목록의 부분과 연관된 파일 카테고리에 기초하여 오프라인에서의 가용성을 위한 파일들의 리스트의 적어도 일 부분을 지정하는 것을 포함할 수 있다.
또 다른 일반적인 양상에서, 장치는 클라우드 환경 내에서 동작하도록 구성되며 복수의 파일들을 저장하도록 구성되는 저장 시스템을 포함할 수 있다. 복수의 파일들의 적어도 제 1 부분은 저장 시스템에 저장되며, 복수의 파일들의 제 2 부분은 컴퓨팅 디바이스의 로컬 메모리에서 동기화된다. 몇몇 구현들에서, 저장 시스템은 복수의 파일들을 표현한 목록을 포함한 사용자 인터페이스를 컴퓨팅 디바이스에 제공하도록 구성된 파일 관리기를 포함한다.
또 다른 일반적인 양상에서, 컴퓨터-판독 가능한 저장 매체는 실행될 때 하나 이상의 프로세서들로 하여금 프로세스를 수행하게 하는 지시들을 저장하도록 구성될 수 있다. 프로세스는 제 1 컴퓨팅 디바이스 및 클라우드 환경 내에서 동작하는 저장 시스템 사이에 통신 링크의 적어도 일 부분을 수립하는 것을 포함할 수 있다. 프로세스는 복수의 파일들을 저장하는 것 및 제 1 컴퓨팅 디바이스로부터의 다운로드 요청에 응답하여, 제 1 컴퓨팅 디바이스에서의 캐시을 위한 복수의 파일들의 일 부분을 저장 시스템에서 제 1 컴퓨팅 디바이스로 전송하는 것을 포함할 수 있다. 복수의 파일들을 표현한 파일들의 목록을 포함하며 제 1 컴퓨팅 디바이스에서 캐시된 복수의 파일들의 부분을 포함하는 사용자 인터페이스를 제 2 컴퓨팅 디바이스로 전송하는 것.
여기에 설명된 다양한 기술들의 구현들은 디지털 전자 회로에, 또는 컴퓨터 하드웨어, 펌웨어, 소프트웨어에, 또는 그것들의 조합들로 구현될 수 있다. 구현들은 데이터 프로세싱 장치, 예로서 프로그램 가능한 프로세서, 컴퓨터, 또는 다수의 컴퓨터들의 동작에 의한 프로세싱을 위해, 또는 그것을 제어하기 위해, 정보 캐리어에, 예로서 기계-판독 가능한 저장 디바이스(컴퓨터-판독 가능한 매체)에 유형으로 구체화된 컴퓨터 프로그램 제품, 즉 컴퓨터 프로그램으로 구현될 수 있다. 따라서, 컴퓨터-판독 가능한 저장 매체는 실행될 때, 프로세서(예로서, 호스트 디바이스에서의 프로세서, 컴퓨팅 디바이스에서의 프로세서)로 하여금 프로세스를 수행하게 하는 지시들을 저장하도록 구성될 수 있다. 상기 설명된 컴퓨터 프로그램(들)과 같은, 컴퓨터 프로그램은 컴파일링되거나 또는 해석된 언어들을 포함하여, 임의의 형태의 프로그래밍 언어로 기록될 수 있으며, 독립형 프로그램으로서 또는 모듈, 구성요소, 서브루틴 또는 컴퓨팅 환경에서의 사용을 위해 적절한 다른 유닛으로서를 포함하여, 임의의 형태로 배치될 수 있다. 컴퓨터 프로그램은 하나의 사이트에서의 하나의 컴퓨터 상에 또는 다수의 컴퓨터들 상에서 프로세싱되도록 배치되거나 또는 다수의 사이트들에 걸쳐 분포될 수 있으며 통신 네트워크에 의해 상호 연결될 수 있다.
방법 단계들은 입력 데이터 상에서 동작하며 출력을 생성함으로써 기능들을 수행하기 위해 컴퓨터 프로그램을 실행하는 하나 이상의 프로그램 가능한 프로세서들에 의해 수행될 수 있다. 방법 단계들은 또한 특수 목적 논리 회로, 예로서 FPGA(필드 프로그램 가능한 게이트 어레이) 또는 ASIC(애플리케이션-특정 집적 회로)에 의해 수행될 수 있으며 장치는 그로서 구현될 수 있다.
컴퓨터 프로그램의 프로세싱에 적합한 프로세서들은 예로서, 일반 및 특수 목적 마이크로프로세서들 양쪽 모두, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 판독-전용 메모리 또는 랜덤 액세스 메모리 또는 양쪽 모두로부터 지시들 및 데이터를 수신할 것이다. 컴퓨터의 요소들은 지시들을 실행하기 위한 적어도 하나의 프로세서 및 지시들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들을 포함할 수 있다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대략 저장 디바이스들, 예로서, 작, 자기-광학 디스크들, 또는 광 디스크들을 포함할 수 있거나, 또는 그로부터 데이터를 수신하거나 또는 그것으로 데이터를 전송하거나, 또는 양쪽 모두를 하기 위해 동작적으로 결합될 수 있다. 컴퓨터 프로그램 지시들 및 데이터를 구체화하기에 적합한 정보 캐리어들은 예로서 반도체 메모리 디바이스, 예로서 EPROM, EEPROM, 및 플래시 메모리 디바이스들; 자기 디스크들, 예로서 내부 하드 디스크들 또는 착탈 가능한 디스크들; 자기-광학 디스크들; 및 CD-ROM 및 DVD-ROM 디스크들을 포함하여, 모든 형태들의 비-휘발성 메모리를 포함한다. 프로세스 및 메모리는 특수 목적 논리 회로에 의해 보완되거나 또는 그것에 통합될 수 있다.
사용자와의 상호작용을 위해 제공하기 위해, 구현들은 사용자에게 정보를 디스플레이하기 위해, 디스플레이 디바이스, 예로서 음극선관(CRT), 발광 다이오드(LED), 또는 액정 디스플레이(LCD) 모니터 및 사용자가 컴퓨터에 입력을 제공할 수 있는, 키보드 및 포인팅 디바이스, 예로서 마우스 또는 트랙볼을 가진 컴퓨터 상에 구현될 수 있다. 다른 종류들의 디바이스들이 또한 사용자와의 상호작용을 위해 제공하기 위해 사용될 수 있다; 예를 들면, 사용자에게 제공된 피드백은 임의의 형태의 감각 피드백, 예로서 시각 피드백, 청각 피드백, 또는 촉각 피드백일 수 있으며; 사용자로부터의 입력은 음향, 스피치, 또는 촉각 입력을 포함하여, 임의의 형태로 수신될 수 있다.
구현들은 백-엔드 구성요소, 예로서 데이터 서버로서 포함하거나, 또는 미들웨어 구성요소, 예로서 애플리케이션 서버를 포함하거나, 또는 프론트-엔트 구성요소, 예로서 사용자가 구현과 상호작용할 수 있는 그래픽 사용자 인터페이스 또는 웹 브라우저를 가진 클라이언트 컴퓨터, 또는 이러한 백-엔드, 미들웨어, 또는 프론트-엔드 구성요소들의 임의의 조합을 포함하는 컴퓨팅 시스템에 구현될 수 있다. 구성요소들은 임의의 형태 또는 매체의 디지털 데이터 통신, 예로서 통신 네트워크에 의해 상호 연결될 수 있다. 통신 네트워크들의 예들은 근거리 네트워크(LAN) 및 광역 네트워크(WAN), 예로서 인터넷을 포함한다.
“일 구현” 또는 “구현”에 대한 본 명세서 전체에 걸친 참조는 구현과 관련되어 설명된 특정한 특징, 구조, 또는 특성이 적어도 한의 구현에 포함된다는 것을 의미한다. 따라서, 본 명세서 전체에 걸친 다양한 곳들에서의 구절(“일 구현에서” 또는 “구현에서”)의 출현들은 반드시 모두 동일한 구현을 참조하는 것은 아니다. 또한, 용어(“또는”)는 배타적 “또는”이라기보다는 포괄적 “또는”을 의미하도록 의도된다.
설명된 구현들의 특정한 특징들이 여기에 설명된 바와 같이 예시되었지만, 많은 수정들, 대체들, 변화들 및 등가물들이 이제 이 기술분야의 숙련자들에게 발생할 것이다. 그러므로, 첨부된 청구항들은 구현들의 범위 내에 속하는 것으로서 모든 이러한 수정들 및 변화들을 커버하도록 의도된다는 것이 이해될 것이다. 그것들은 제한이 아닌 단지 예로서 제공되며 형태 및 세부사항들에서의 다양한 변화들이 이루어질 수 있다는 것이 이해되어야 한다. 여기에 설명된 장치 및/또는 방법들의 임의의 부분은 상호 배타적인 조합들을 제외하고, 임의의 조합으로 조합될 수 있다. 여기에 설명된 구현들은 설명된 상이한 구현들의 기능들, 구성요소들 및/또는 특징들의 다양한 조합들 및/또는 서브-조합들을 포함할 수 있다.

Claims (21)

  1. 실행될 때 하나 이상의 프로세서들로 하여금 프로세스를 수행하게 하는 지시들을 저장하도록 구성된 비-일시적 컴퓨터-판독 가능한 저장 매체에 있어서, 상기 프로세스는,
    컴퓨팅 디바이스 및 클라우드 환경 내에서 동작하는 저장 시스템 사이에 통신 링크의 적어도 일 부분을 수립하는 단계;
    복수의 파일들을 표현한 파일들의 목록을 저장하는 단계로서 상기 복수의 파일들의 적어도 제 1 부분은 상기 컴퓨팅 디바이스의 로컬 메모리에 저장되며 상기 복수의 파일들의 제 2 부분은 상기 저장 시스템에 저장되는, 상기 파일들의 목록을 저장하는 단계; 및
    상기 파일들의 목록에서의 파일과 연관된 파일 카테고리에 기초하여 오프라인 가용성에 대해 상기 파일들의 목록에서의 상기 파일을 지정하는 단계를 포함하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  2. 청구항 1에 있어서, 상기 저장 시스템은 상기 컴퓨팅 디바이스에 대하여 1차 저장 시스템으로서 동작하며, 상기 컴퓨팅 디바이스의 상기 로컬 메모리는 상기 저장 시스템의 캐시(cache)로서 동작하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  3. 청구항 1 또는 청구항 2에 있어서, 상기 파일들의 목록은:
    웹 애플리케이션을 사용하여 상기 저장 시스템에 생성 및 저장된 웹 파일에 대한 조회(reference),
    상기 컴퓨팅 디바이스에 설치된 로컬 애플리케이션을 사용하여 생성된 클라이언트 파일에 대한 조회, 및
    상기 클라우드 환경의 밖에서 동작하는 원격 소스로부터 원격 소스 파일에 대한 조회를 포함하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  4. 청구항 1 내지 청구항 3 중 어느 한 항에 있어서, 상기 파일들의 목록에서의 상기 파일은 상기 파일들의 목록에서의 제 1 파일이며, 상기 파일 카테고리는 웹 파일 카테고리이고,
    상기 프로세스는:
    상기 컴퓨팅 디바이스로부터 수신된 제 1 지시에 응답하여 오프라인 가용성에 대해 상기 파일들의 목록에서 적어도 제 2 파일을 지정하는 단계로서, 상기 제 2 파일은 캐시되지 않은 파일인, 상기 제 2 파일 지정 단계; 및
    오프라인에서의 가용성에 대해 상기 로컬 메모리에 캐시된 상기 파일들의 목록에서 적어도 제 3 파일을 지정하는 단계를 더 포함하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  5. 청구항 1 내지 청구항 4 중 어느 한 항에 있어서, 상기 파일들의 목록은 상기 컴퓨팅 디바이스에 할당된 상기 저장 시스템의 일 부분 및 상기 컴퓨팅 디바이스의 상기 로컬 메모리를 스패닝(spanning)하는 파일들의 단일 목록인, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  6. 청구항 1 내지 청구항 5 중 어느 한 항에 있어서, 상기 컴퓨팅 디바이스는 상기 클라우드 환경에 원격으로 연결된 제 1 컴퓨팅 디바이스이며,
    상기 프로세스는:
    상기 클라우드 환경에 원격으로 연결된 제 2 컴퓨팅 디바이스에서 상기 파일들의 목록을 액세스하는 단계로서, 상기 제 2 컴퓨팅 디바이스에서 액세스될 때의 상기 파일들의 목록은 상기 제 1 컴퓨팅 디바이스에서 액세스될 때의 상기 파일들의 목록과 동일한, 상기 액세스 단계를 더 포함하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  7. 청구항 1 내지 청구항 6 중 어느 한 항에 있어서, 상기 파일을 지정하는 단계는 상기 컴퓨팅 디바이스로부터 수신된 명시적인 지시 없이 상기 파일 카테고리에 기초하여 오프라인 가용성에 대해 상기 파일들의 목록에서 상기 파일을 지정하는 단계를 포함하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  8. 청구항 1, 청구항 2, 청구항 3, 청구항 5, 청구항 6 또는 청구항 7 중 어느 한 항에 있어서, 상기 파일들의 목록에서의 상기 파일은 상기 파일 카테고리에 기초하여 오프라인 이용 가능 상태에 있는 것으로서 지정된 제 1 파일이고, 상기 파일들의 목록은 상기 컴퓨팅 디바이스의 상기 로컬 메모리에서 최근에 액세스된 제 2 파일에 기초하여 상기 오프라인 이용 가능 상태에 있는 것으로서 지정된 상기 제 2 파일을 포함하고, 상기 파일들의 목록은 상기 컴퓨팅 디바이스로부터의 지시에 응답하여 상기 오프라인 이용 가능 상태에 있는 것으로서 지정된 제 3 파일을 포함하며, 상기 파일들의 목록은 온라인 이용 가능 상태에 있는 것으로서 지정된 제 4 파일을 포함하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  9. 실행될 때 하나 이상의 프로세서들로 하여금 프로세스를 수행하게 하는 지시들을 저장하도록 구성된 비-일시적 컴퓨터-판독 가능한 저장 매체에 있어서, 상기 프로세스는:
    컴퓨팅 디바이스 및 클라우드 환경 내에서 동작하는 저장 시스템 사이에 통신 링크의 적어도 일 부분을 수립하는 단계;
    상기 저장 시스템 상에 저장된 제 1 파일을 개방하기 위한 요청을 수신하는 단계;
    상기 제 1 파일을 개방하기 위한 상기 요청에 응답하여, 상기 컴퓨팅 디바이스의 로컬 메모리에 상기 제 1 파일을 캐시하는 단계로서, 상기 제 1 파일은 제 1 우선순위를 갖고 캐시되는, 상기 제 1 파일 캐시 단계;
    상기 저장 시스템 상에 저장된 제 2 파일이 오프라인에서 이용 가능하게 하려는 요청을 수신하는 단계;
    상기 제 2 파일이 오프라인에서 이용 가능하게 하려는 상기 요청에 응답하여, 상기 컴퓨팅 디바이스의 상기 로컬 메모리에 상기 제 2 파일을 캐시하는 단계로서, 상기 제 2 파일은 상기 제 1 우선순위보다 낮은 제 2 우선순위를 갖고 캐시되는, 상기 제 2 파일 캐시 단계; 및
    상기 컴퓨팅 디바이스의 상기 로컬 메모리에, 상기 저장 시스템에 저장된 제 3 파일을 예측적으로 캐시하는 단계로서, 상기 제 3 파일은 상기 제 3 파일의 하나 이상의 속성들에 기초하여 선택되고, 상기 제 3 파일은 상기 제 2 우선순위보다 낮은 제 3 우선순위를 갖고 캐시되는, 상기 제 3 파일을 예측적으로 캐시하는 단계를 포함하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  10. 청구항 9에 있어서, 상기 제 1 파일, 상기 제 2 파일, 및 상기 제 3 파일은 그것들 각각의 우선순위들에 기초하여 및 상기 컴퓨팅 디바이스의 상기 로컬 메모리에서의 이용 가능한 파일 캐시 저장 용량의 양에 기초하여 상기 컴퓨팅 디바이스의 상기 로컬 메모리에 캐시되는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  11. 청구항 9 또는 청구항 10에 있어서, 상기 프로세스는:
    상기 저장 시스템 상에 저장된 제 4 파일을 개방하기 위한 요청을 수신하는 단계; 및
    상기 제 4 파일을 개방하기 위한 상기 요청을 수신하는 것에 응답하여:
    상기 컴퓨팅 디바이스의 상기 로컬 메모리에 상기 제 4 파일을 캐시하는 것이 파일 캐시 임계치를 초과한다면, 상기 컴퓨팅 디바이스의 상기 로컬 메모리로부터 상기 제 3 파일을 축출하는 단계; 및
    상기 제 1 우선순위를 갖고 상기 컴퓨팅 디바이스의 상기 로컬 메모리에 상기 제 4 파일을 캐시하는 단계를 더 포함하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  12. 청구항 9 내지 청구항 11 중 어느 한 항에 있어서, 상기 제 1 파일은 상기 제 1 우선순위를 갖고 캐시되는 복수의 파일들 중 하나이며, 상기 복수의 파일들은 상기 복수의 파일들의 각각을 개방하기 위한 각각의 요청들에 응답하여 상기 컴퓨팅 디바이스의 상기 로컬 메모리에 캐시되는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  13. 청구항 9 내지 청구항 12 중 어느 한 항에 있어서, 상기 제 2 파일은 상기 제 2 우선순위를 갖고 캐시되는 복수의 파일들 중 하나이며, 상기 복수의 파일들은 상기 복수의 파일들의 각각이 오프라인에서 이용 가능하다는 각각의 요청들에 응답하여 상기 컴퓨팅 디바이스의 상기 로컬 메모리에 캐시되는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  14. 청구항 9 내지 청구항 13 중 어느 한 항에 있어서,
    상기 제 3 파일은 상기 제 3 우선순위를 갖고 캐시되는 복수의 파일들 중 하나이며;
    상기 제 3 우선순위를 갖고 상기 복수의 파일들을 캐시하는 단계는:
    각각의 마지막 수정된 날짜들에 기초하여 제 1 미리 결정된 수의 파일들을 캐시하는 단계;
    각각의 마지막 시청된 날짜들에 기초하여 제 2 미리 결정된 수의 파일들을 캐시하는 단계; 및
    각각의 공유된 날짜들에 기초하여 제 3 미리 결정된 수의 파일들을 캐시하는 단계를 포함하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  15. 청구항 14에 있어서, 상기 제 3 우선순위를 갖고 상기 복수의 파일들을 캐시하는 단계는 하나 이상의 이전에 캐시된 파일들에 대한 상기 저장 시스템에서의 그것들의 관계에 기초하여 제 4 미리 결정된 수의 파일들을 캐시하는 단계를 더 포함하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  16. 청구항 9 내지 청구항 13 중 어느 한 항에 있어서,
    상기 제 3 파일은 상기 제 3 우선순위를 갖고 캐시되는 복수의 파일들 중 하나이며;
    상기 제 3 우선순위를 갖고 상기 복수의 파일들을 캐시하는 단계는 각각의 마지막 수정된 날짜들에 기초하여 파일들을 캐시하는 단계 및 각각의 마지막 시청된 날짜들에 기초하여 파일들을 캐시하는 단계 사이에서 반복함으로써 미리 결정된 수의 파일들을 캐시하는 단계를 포함하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  17. 청구항 9 내지 청구항 16 중 어느 한 항에 있어서, 상기 프로세스는:
    상기 컴퓨팅 디바이스의 상기 로컬 메모리로부터 상기 제 3 파일을 개방하기 위한 요청을 수신하는 단계;
    상기 제 3 우선순위로부터 상기 제 1 우선순위로 상기 제 3 파일을 변경하는 단계; 및
    상기 제 3 파일의 마지막 시청된 날짜를 변경하는 단계를 더 포함하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  18. 실행될 때 하나 이상의 프로세서들로 하여금 프로세스를 수행하게 하는 지시들을 저장하도록 구성된 비-일시적 컴퓨터-판독 가능한 저장 매체에 있어서, 상기 프로세스는:
    컴퓨팅 디바이스 및 클라우드 환경 내에서 동작하는 저장 시스템 사이에 통신 링크의 적어도 일 부분을 수립하는 단계로서, 상기 컴퓨팅 디바이스는 상기 저장 시스템으로부터 파일들을 캐시하도록 구성되는 로컬 메모리를 포함하는, 상기 수립 단계;
    상기 컴퓨팅 디바이스의 상기 로컬 메모리의 파일 캐시 임계치가 충족되거나 또는 초과되었다는 표시를 수신하는 단계; 및
    상기 표시에 응답하여, 축출 임계치가 충족될 때까지, 상기 컴퓨팅 디바이스의 상기 로컬 메모리로부터의 캐시되는 파일들의 세트의 적어도 일 부분을 축출하는 단계로서, 상기 캐시되는 파일들의 세트의 적어도 일 부분은 최저 캐시 우선순위로부터 최고 캐시 우선순위로 그리고 상기 캐시되는 파일들의 세트의 각각의 파일의 각각의 시간스탬프들에 기초하여 축출되는, 상기 축출 단계를 포함하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  19. 청구항 18에 있어서, 상기 캐시되는 파일들의 세트는:
    제 1 캐시 우선순위를 가진 제 1 파일로서, 상기 제 1 파일은 상기 제 1 파일을 개방하기 위한 요청에 응답하여 캐시되는, 상기 제 1 파일;
    제 2 캐시 우선순위를 가진 제 2 파일로서, 상기 제 2 파일은 상기 제 2 파일이 오프라인에서 이용 가능하게 하려는 요청에 응답하여 캐시되며, 상기 제 2 우선순위는 상기 제 1 우선순위보다 낮은, 상기 제 2 파일;
    제 3 캐시 우선순위를 가진 제 3 파일로서, 상기 제 3 파일은 마지막 수정된 날짜 및 마지막 시청된 날짜 중 적어도 하나에 기초하여 캐시되며, 상기 제 3 캐시 우선순위는 상기 제 2 캐시 우선순위보다 낮은, 상기 제 3 파일;
    제 4 캐시 우선순위를 가진 제 4 파일로서, 상기 제 4 파일은 상기 파일이 공유된 날짜에 기초하여 캐시되며, 상기 제 4 캐시 우선순위는 상기 제 3 캐시 우선순위보다 낮은, 상기 제 4 파일; 및
    제 5 캐시 우선순위를 가진 제 5 파일로서, 상기 제 5 캐시 우선순위는 상기 제 4 캐시 우선순위보다 낮고, 상기 제 5 파일은 상기 제 1 파일, 상기 제 2 파일, 상기 제 3 파일, 및 상기 제 4 파일 중 적어도 하나에 대한 상기 저장 시스템에서의 그것의 관계에 기초하여 캐시되는, 상기 제 5 파일을 포함하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  20. 청구항 19에 있어서, 상기 프로세스는 상기 제 1 캐시 우선순위 또는 상기 제 2 캐시 우선순위를 가진 파일들을 축출하기 전에 사용자로부터 확인을 요청하는 단계를 더 포함하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  21. 청구항 18 내지 청구항 20 중 어느 한 항에 있어서, 상기 프로세스는:
    상기 캐시되는 파일들의 세트의 파일을 액세스하기 위한 요청을 수신하는 단계로서, 액세스가 요청된 상기 파일은 상기 최고 캐시 우선순위보다 낮은 캐시 우선순위를 갖는, 상기 요청 수신 단계; 및
    상기 요청에 응답하여, 액세스가 요청된 상기 파일의 상기 캐시 우선순위를 상기 최고 캐시 우선순위로 변경하는 단계를 더 포함하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
KR1020147032838A 2012-05-05 2013-05-03 클라우드-기반 파일 시스템 내에서의 파일 핸들링 KR102097300B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201261643279P 2012-05-05 2012-05-05
US61/643,279 2012-05-05
US201261736722P 2012-12-13 2012-12-13
US61/736,722 2012-12-13
US13/841,368 US9594686B2 (en) 2012-05-05 2013-03-15 File handling within a cloud-based file system
US13/841,368 2013-03-15
PCT/US2013/039411 WO2013169583A1 (en) 2012-05-05 2013-05-03 File handling within a cloud-based file system

Publications (2)

Publication Number Publication Date
KR20150013191A true KR20150013191A (ko) 2015-02-04
KR102097300B1 KR102097300B1 (ko) 2020-05-29

Family

ID=49513551

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147032838A KR102097300B1 (ko) 2012-05-05 2013-05-03 클라우드-기반 파일 시스템 내에서의 파일 핸들링

Country Status (4)

Country Link
US (1) US9594686B2 (ko)
KR (1) KR102097300B1 (ko)
CN (1) CN104412249B (ko)
WO (1) WO2013169583A1 (ko)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10409445B2 (en) 2012-01-09 2019-09-10 Activevideo Networks, Inc. Rendering of an interactive lean-backward user interface on a television
US9800945B2 (en) 2012-04-03 2017-10-24 Activevideo Networks, Inc. Class-based intelligent multiplexing over unmanaged networks
US9594686B2 (en) 2012-05-05 2017-03-14 Google Inc. File handling within a cloud-based file system
US20140136578A1 (en) * 2012-11-15 2014-05-15 Microsoft Corporation Techniques to manage virtual files
WO2014145921A1 (en) 2013-03-15 2014-09-18 Activevideo Networks, Inc. A multiple-mode system and method for providing user selectable video content
EP3005712A1 (en) 2013-06-06 2016-04-13 ActiveVideo Networks, Inc. Overlay rendering of user interface onto source video
US20150039659A1 (en) * 2013-07-30 2015-02-05 William F. Sauber Data location management agent using remote storage
US9549040B2 (en) 2014-03-12 2017-01-17 Instart Logic, Inc. First cache purge optimization handling of unavailable nodes
US10831731B2 (en) * 2014-03-12 2020-11-10 Dell Products L.P. Method for storing and accessing data into an indexed key/value pair for offline access
US9002990B1 (en) * 2014-03-12 2015-04-07 Instart Logic, Inc. Fast cache purge in content delivery network
US9788029B2 (en) 2014-04-25 2017-10-10 Activevideo Networks, Inc. Intelligent multiplexing using class-based, multi-dimensioned decision logic for managed networks
US9646010B2 (en) * 2014-08-27 2017-05-09 Mokhtarzada Holdings, Llc Method and system for expanding storage capacity of a drive using cloud storage systems
US10523985B2 (en) * 2014-12-24 2019-12-31 Activevideo Networks, Inc. Managing deep and shallow buffers in a thin-client device of a digital media distribution network
US10963430B2 (en) * 2015-04-01 2021-03-30 Dropbox, Inc. Shared workspaces with selective content item synchronization
US9922201B2 (en) 2015-04-01 2018-03-20 Dropbox, Inc. Nested namespaces for selective content sharing
US20160349967A1 (en) * 2015-05-28 2016-12-01 Rockwell Automation Technologies, Inc. Offline investigation in an industrial automation environment
US9851965B2 (en) * 2015-06-19 2017-12-26 Microsoft Technology Licensing, Llc Storing optimization for customization resources
US11892981B2 (en) * 2015-08-28 2024-02-06 Airwatch Llc On demand file sync
US11108883B2 (en) 2015-09-04 2021-08-31 Google Llc Systems and methods for remote network topology discovery
US9571573B1 (en) 2015-10-29 2017-02-14 Dropbox, Inc. Peer-to-peer synchronization protocol for multi-premises hosting of digital content items
TWI581112B (zh) * 2015-12-23 2017-05-01 南臺科技大學 雲端硬碟工具系統及操作方法
KR102222375B1 (ko) * 2015-12-23 2021-03-03 삼성전자주식회사 파일 관리 방법 및 그 전자 장치
US10305729B2 (en) * 2016-09-02 2019-05-28 Nokia Of America Corporation Systems and methods of providing an edge cloud storage and caching system operating over a local area network
US10341436B2 (en) * 2016-09-14 2019-07-02 Dell Products L.P. Using cloud storage as temporary cache for backup
CN106445467A (zh) * 2016-09-28 2017-02-22 广东芬尼克兹节能设备有限公司 一种操作变量同步方法及系统
US10248659B2 (en) * 2016-10-04 2019-04-02 International Business Machines Corporation Consistent hashing configurations supporting multi-site replication
US10891233B2 (en) * 2018-06-28 2021-01-12 Intel Corporation Intelligent prefetch disk-caching technology
US11290531B2 (en) 2019-12-04 2022-03-29 Dropbox, Inc. Immediate cloud content item creation from local file system interface
US11150840B2 (en) * 2020-02-09 2021-10-19 International Business Machines Corporation Pinning selected volumes within a heterogeneous cache
US11956156B2 (en) * 2020-09-10 2024-04-09 Intel Corporation Dynamic offline end-to-end packet processing based on traffic class

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060206896A1 (en) * 2003-04-14 2006-09-14 Fontijn Wilhelmus Franciscus J Allocation class selection for file storage
US20060230076A1 (en) * 2005-04-08 2006-10-12 Microsoft Corporation Virtually infinite reliable storage across multiple storage devices and storage services
KR20100013616A (ko) * 2008-07-31 2010-02-10 에스케이 텔레콤주식회사 웹 서비스 제공 시스템 및 웹 서비스 제공 방법
US20110113205A1 (en) * 2009-10-06 2011-05-12 Telefonica, S.A. Data storage device

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6345318B1 (en) * 1998-10-07 2002-02-05 International Business Machines Corporation System for maintaining a user-modifiable confirmation message configuration record that specifying with respect to a plurality of operations whether to communicate a confirmation message
WO2002079993A1 (en) * 2001-03-29 2002-10-10 Reallegal.Com Methods for synchronizing on-line and off-line transcript projects
US6687793B1 (en) * 2001-12-28 2004-02-03 Vignette Corporation Method and system for optimizing resources for cache management
EP1595259A1 (en) 2003-02-12 2005-11-16 Koninklijke Philips Electronics N.V. Storage medium with reserved area for file system data and application start-up data
US7802065B1 (en) * 2004-05-03 2010-09-21 Crimson Corporation Peer to peer based cache management
US20070220417A1 (en) * 2006-03-17 2007-09-20 Sonolink Communications Systems, Llc System and method for editing online documents
US7711890B2 (en) * 2006-06-06 2010-05-04 Sandisk Il Ltd Cache control in a non-volatile memory device
US7849267B2 (en) 2006-06-30 2010-12-07 Moka5, Inc. Network-extended storage
US8762642B2 (en) 2009-01-30 2014-06-24 Twinstrata Inc System and method for secure and reliable multi-cloud data replication
US8775544B2 (en) 2009-02-04 2014-07-08 Citrix Systems, Inc. Methods and systems for dynamically switching between communications protocols
WO2011023134A1 (en) 2009-08-28 2011-03-03 Beijing Innovation Works Technology Company Limited Method and system for managing distributed storage system through virtual file system
US8788628B1 (en) * 2011-11-14 2014-07-22 Panzura, Inc. Pre-fetching data for a distributed filesystem
US8996647B2 (en) 2010-06-09 2015-03-31 International Business Machines Corporation Optimizing storage between mobile devices and cloud storage providers
CN103180842B (zh) 2010-10-28 2016-03-09 Sk电信有限公司 云计算系统和用于该云计算系统的数据同步方法
CN101997929A (zh) 2010-11-29 2011-03-30 北京卓微天成科技咨询有限公司 一种云存储的数据存取的方法、装置及系统
US9361395B2 (en) * 2011-01-13 2016-06-07 Google Inc. System and method for providing offline access in a hosted document service
US20120185767A1 (en) * 2011-01-14 2012-07-19 Apple Inc. Modifying application behavior
US8924500B2 (en) * 2011-03-29 2014-12-30 Amazon Technologies, Inc. Local storage linked to networked storage system
US9355115B2 (en) * 2011-11-21 2016-05-31 Microsoft Technology Licensing, Llc Client application file access
GB2500152A (en) * 2011-11-29 2013-09-11 Box Inc Mobile platform file and folder selection functionalities for offline access and synchronization
US9594686B2 (en) 2012-05-05 2017-03-14 Google Inc. File handling within a cloud-based file system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060206896A1 (en) * 2003-04-14 2006-09-14 Fontijn Wilhelmus Franciscus J Allocation class selection for file storage
US20060230076A1 (en) * 2005-04-08 2006-10-12 Microsoft Corporation Virtually infinite reliable storage across multiple storage devices and storage services
KR20100013616A (ko) * 2008-07-31 2010-02-10 에스케이 텔레콤주식회사 웹 서비스 제공 시스템 및 웹 서비스 제공 방법
US20110113205A1 (en) * 2009-10-06 2011-05-12 Telefonica, S.A. Data storage device

Also Published As

Publication number Publication date
US20130297887A1 (en) 2013-11-07
CN104412249A (zh) 2015-03-11
CN104412249B (zh) 2017-10-24
US9594686B2 (en) 2017-03-14
KR102097300B1 (ko) 2020-05-29
WO2013169583A1 (en) 2013-11-14

Similar Documents

Publication Publication Date Title
US9594686B2 (en) File handling within a cloud-based file system
US8983911B2 (en) Storage media abstraction for uniform data storage
US8510499B1 (en) Solid state drive caching using memory structures to determine a storage space replacement candidate
US10210172B1 (en) File system integration and synchronization between client and server
US10191856B2 (en) Method of managing web browser cache size using logical relationships and clustering
US10423527B2 (en) Memory management and image display for mobile devices
US9600492B2 (en) Data processing performance enhancement in a distributed file system
CN108090078B (zh) 文档在线预览方法及装置、存储介质、电子设备
JP7062750B2 (ja) 分散ストレージ環境のための認知ファイルおよびオブジェクト管理のための方法、コンピュータ・プログラムおよびシステム
US20130346704A1 (en) Indicating Cached Content Status
US9075722B2 (en) Clustered and highly-available wide-area write-through file system cache
US20180239778A1 (en) User driven data pre-fetch
JP2019537097A (ja) Iノードのアクセスパターンの追跡及びiノードの先取り
US10678750B2 (en) On demand file sync
US10691750B1 (en) Browser configured to efficiently store browsing session state
US10146788B1 (en) Combined mirroring and caching network file system
US9213673B2 (en) Networked applications with client-caching of executable modules
CN114756509B (zh) 文件系统的操作方法、系统、设备以及存储介质
US7747627B1 (en) Method and system for file retrieval using image virtual file system
JP4952119B2 (ja) ファイルサーバを用いたコンテンツ管理システムと方法およびプログラム
CN113243008A (zh) 具有共享页面高速缓存的分布式vfs
US8171067B2 (en) Implementing an ephemeral file system backed by a NFS server
CN105046162B (zh) 在内容可寻址存储系统中维护并使用子对父映射的缓存
WO2018075009A1 (en) Response caching
US20110208927A1 (en) Virtual memory

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