KR101700667B1 - 스토리지 네트워크 데이터 할당 - Google Patents

스토리지 네트워크 데이터 할당 Download PDF

Info

Publication number
KR101700667B1
KR101700667B1 KR1020157021377A KR20157021377A KR101700667B1 KR 101700667 B1 KR101700667 B1 KR 101700667B1 KR 1020157021377 A KR1020157021377 A KR 1020157021377A KR 20157021377 A KR20157021377 A KR 20157021377A KR 101700667 B1 KR101700667 B1 KR 101700667B1
Authority
KR
South Korea
Prior art keywords
storage
data
storage block
block
network
Prior art date
Application number
KR1020157021377A
Other languages
English (en)
Other versions
KR20150110577A (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 KR20150110577A publication Critical patent/KR20150110577A/ko
Application granted granted Critical
Publication of KR101700667B1 publication Critical patent/KR101700667B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • G06F17/30174
    • G06F17/30581
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

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

Abstract

데이터를 스토리지 네트워크 내에 포함된 스토리지 블록에 할당하는 방법은 스토리지 네트워크 내에 포함된 스토리지 블록과 관련된 다수의 특성을 결정하는 단계를 포함할 수 있다. 상기 다수의 특성은 상기 스토리지 블록의 스토리지 용량(storage capacity), 상기 스토리지 블록의 이용가능한 스토리지 공간, 상기 스토리지 블록상에 저장된 데이터의 손실 가능성, 상기 스토리지 네트워크에 대한 스토리지 블록의 가용성(availability) 및 상기 스토리지 블록의 이용성(use)을 포함할 수 있다. 상기 방법은 상기 다수의 특성을 기초로 상기 데이터를 상기 스토리지 블록에 할당하는 단계를 더 포함할 수 있다.

Description

스토리지 네트워크 데이터 할당{STORAGE NETWORK DATA ALLOCATION}
본 명세서에서 논의되는 실시예들은 스토리지 네트워크 내의 데이터 할당에 관한 것이다.
개인 데이터(예를 들어, 사진들, 비디오, 문서들, 등등)의 양이 점점 증가함에 따라, 개인 데이터를 저장하기 위한 서로 다른 방법들 및 시스템들 역시 증가하고 있다. 그러나, 개인 데이터를 저장하는 많은 방법들 및 시스템들은 현재, 예를 들어, 크고 복잡(cumbersome)해지거나 시간이 소비되는 것, 부적당한 리던던시(inadequate redundancy)의 제공, 및 서로 다른 장치들 상에서 데이터의 쉬운 접근성의 불허용 등과 같은 것들에 도전하고 있다. 본 명세서의 주요 사상(subject matter)은 앞서 기술된 것들과 같은 환경들 내에서만 동작하거나 어떠한 불이익을 해결하기 위한 실시예에 한정되지 않는다. 또한, 본 배경기술은 오직, 본 명세서에서 기술되는 일부 실시예들이 구현되는 하나의 예시적인 기술 영역을 도시하기 위해 제공된다.
실시예의 일 측면에 따르면, 데이터를 스토리지 네트워크 내에 포함된 스토리지 블록에 할당하는 단계는 스토리지 네트워크 내에 포함된 스토리지 블록과 관련있는 다수의 특성을 결정하는 단계를 포함할 수 있다. 상기 다수의 특성은 상기 스토리지 블록의 타입, 상기 스토리지 블록의 상태(health), 상기 스토리지 블록과 관련있는 장치의 장치 타입, 상기 장치의 이용성, 상기 장치의 손실 가능성, 상기 장치의 상태, 상기 장치의 위치, 상기 장치의 상기 스토리지 네트워크와의 연결성(connectivity), 상기 장치의 상기 스토리지 네트워크와의 연결 비용(cost of connectivity) 및 상기 장치의 신뢰성을 포함할 수 있다. 상기 방법은 상기 다수의 특성을 기초로 상기 데이터를 상기 스토리지 블록에 할당하는 단계를 더 포함할 수 있다. 상기 실시예들의 목적 및 이점들은 구성요소들, 특징들 및 청구항들 내에서 특별하게 지적된 조합들에 의해 적어도 달성되거나 현실화될 수 있다. 전술한 일반적인 설명 및 후술할 구체적인 설명들 모두 모범적이고 예시적인 것이며, 청구항과 같이, 본 발명을 한정하지 않는 것으로 이해된다.
예시적인 실시예들은 이하의 수반하는 도면들을 이용하여 보다 명확하고 구체적으로 기술되고 설명된다.
도 1a는 스토리지 네트워크 내에 포함되는 스토리지 블록들에 데이터를 할당하는 예시적인 저장 시스템을 도시한다.
도 1b는 스토리니 네트워크 내에 포함된 스토리지 블록들에 데이터를 분배하기 위한 분배 전략을 결정하는 예시적인 스토리지 시스템을 도시한다.
도 2는 스토리지 네트워크의 스토리지 블록에 데이터를 할당하는 예시적인 방법의 동작 흐름도이다.
도 3은 스토리지 네트워크의 스토리지 블록상에 데이터를 저장하는 예시적인 방법의 동작 흐름도이다.
도 4는 스토리지 네트워크의 스토리지 블록에 데이터를 분배하기 위한 분배 전략을 결정하는 예시적인 방법의 동작 흐름도이다.
이하에서 보다 상세하게 기술될 바와 같이, 스토리지 시스템은 스토리지 네트워크 내에 포함된 스토리지 블록들 중에 데이터를 할당할 수 있고, 스토리지 네트워크의 스토리지 에이전트들에 의해 관리될 수 있다. 스토리지 시스템은 스토리지 에이전트들과 관련된 장치들, 특히, 장치들의 타입 및 장치들의 타입들과 관련된 장치 특성들을 기초로 데이터를 할당할 수 있다.
일 실시예에서, 상기 할당은 또는 상기 할당된 데이터의 특성들에 기초될 수 있다. 아래 설명될 데이터의 할당은 스토리지 블록들 중 데이터의 분배(distribution)를 향상시키는데 도움이 될 수 있다. 데이터의 분배를 향상시키는 것은 데이터의 리던던시(redundancy) 및 접근의 용이성을 증가시킬 수 있다. 대안적 또는 추가적으로, 일 실시예에서, 스토리지 시스템은 스토리지 네트워크 내에 포함된 장치들의 하나 이상의 장치 특성들을 기초로 데이터를 스토리지 블록들에 분배하기 위한 분배 전략을 결정할 수 있다. 본 발명의 실시예들은 수반하는 도면들을 참조로 하여 설명될 수 있다.
도 1a는 본 발명의 적어도 하나의 실시예에 따른, 스토리지 네트워크(102a) 내에 포함된 스토리지 블록들(110a)에 데이터를 할당하는 예시적인 스토리지 시스템(100a)의 블록도이다. 스토리지 네트워크(102a)는 전자 장치들(106a 내지 106c)(또한, "장치들(106)"이라 언급됨)에 각각에 포함된 스토리지 블록들 (110a 내지 110c)를 포함할 수 있다.
스토리지 블록들(110) 상의 데이터의 스토리지 관리는 하나 이상의 스토리지 에이전트들(104)에 의해 수행될 수 있다. 도시되는 실시예에서, 스토리지 시스템(100a)은 스토리지 에이전트(104a 내지 104c)를 포함하는 것으로 도시되고, 장치들(106a 내지 106c)은 각각 스토리지 에이전트(104a 내지 104c)를 포함한다. 스토리지 시스템(100a)이 3개의 서로 다른 스토리지 블록들(110)과 이에 관련된 스토리지 에이전트들(104) 및 장치들(106)을 갖는 단일 스토리지 네트워크(a single storage network)(102a)를 포함하는 것으로 도시되었음도 불구하고, 시스템(100a)은 복수의 스토리지 네트워크를 포함할 수도 있고, 스토리지 네트워크는 복수의 스토리지 블록들(110), 복수의 스토리지 에이전트들(104) 및 복수의 장치들(106)을 포함할 수 있다. 게다가, 일 실시예에서, 하나 이상의 장치들(106)은 하나 이상의 스토리지 에이전트(104) 및/또는 스토리지 블록(110)을 포함할 수 있다.
일 실시예에서, 스토리지 시스템(100a)는 사진들, 비디오들, 문서들 등과 같은 데이터 파일들을 저장, 조직(organize) 및/또는 관리할 수 있다. 일 실시예에서, 데이터 파일들은 데이터 파일들에 대한 정보를 제공하는 메타데이터를 포함하는 데이터 객체들(data objects) 내에 포함될 수 있다. 본 발명에서, 용어 "데이터"는 스토리지 블록(110)에 의해 저장되는 어떠한 적절한 정보를 나타낼 수 있고, 하나 이상의 데이터 파일, 메타데이터 또는 그들의 어떠한 조합을 포함할 수 있다.
스토리지 시스템(100a)은 사용자에 의해 요구되는 입력량을 감소시킬 수 있는 자동화된 방식으로 스토리지 블록들(110a 내지 110c)에 걸쳐 저장된 데이터를 조직하고 관리할 수 있다. 게다가, 스토리지 시스템(100a)은 특정 스토리지 블록(110)상에 저장된 데이터를 특정 스토리지 블록(100)을 포함하지 않는 장치들(106)에 의해 접근되거나 사용되게 할 수 있다. 예를 들어, 스토리지 시스템(100a)은 데이터가 특정 장치(106)에 국한된 스토리지 블록(100)상에 저장되었는지 여부에 관계없이, 데이터에 대한 접근을 제공할 뿐만 아니라, 스토리지 네트워크(102a) 내의 스토리지 에이전트(140)에 의해 관리되고 스토리지 블록들(110)에 의해 저장되는 데이터의 조직을 용이하게 할 수 있다.
장치(106)는 하나 이상의 스토리지 블록(110)을 포함하는 어떠한 전자 장치일 수 있다.
장치(106)는 장치(106)와 관련된 스토리지 블록들(110)에 데이터를 저장하거나, 장치(106)와 관련된 스토리지 블록들(110)로부터 데이터를 접근할 수 있다. 예로서, 장치(106)는 클라우드 스토리지 서버(cloud storage server), 모바일 폰(mobile phone), 태블릿 컴퓨터(tablet computer), 데스크탑 컴퓨터(desktop computer), 랩탑 컴퓨터(laptop computer), 카메라(camera), 개인용 디지털 단말기 a personal digital assistant(PDA), 스마트 폰(smartphone), 뮤직 플레이어(music player), 비디오 플레이어(video player), 외부 하드 드라이브(external hard drive) 등 중 하나일 수 있다. 일 실시예에서, 장치들(106)은 컨트롤러(120)를 포함할 수 있고, 컨트롤러(120) 각각은 프로세서(150), 메모리(120) 및 스토리지 블록(110)을 포함할 수 있다. 게다가, 컨트롤러(120)는 하나 이상의 스토리지 에이전트들(104)을 포함할 수 있고, 스토리지 에이전트들(104)은 스토리지 블록(110)상의 데이터의 저장을 관리하고, 장치들(106) 및 스토리지 블록들(110)과 스토리지 네트워크(102) 간의 상호작용(interaction)을 관리할 수 있다. 예를 들어, 도시된 실시예에서, 장치(106a)는 컨트롤러(120a)를 포함하고, 컨트롤러(120a)는 스토리지 에이전트(104a), 프로세서(150a), 메모리(152a) 및 스토리지 블록(110a)을 포함할 수 있고, 장치(106b)는 컨트롤러(120b)를 포함하고, 컨트롤러(120b)는 스토리지 에이전트(104b), 프로세서(150b), 메모리(152b) 및 스토리지 블록(110b)을 포함할 수 있고, 장치(106c)는 컨트롤러(120)를 포함하고, 컨트롤러(120)는 스토리지 에이전트(104c), 프로세서(150c), 메모리(152c) 및 스토리지 블록(110c)을 포함할 수 있다. 프로세서들(150)은 예를 들어, 마이크로 프로세서(microprocessor), 마이크로 컨트롤러(microcontroller), 디지털 시그널 프로세서(digital signal processor)(DSP), 응용 -주문형 집적 회로(application-specific integrated circuit)(ASIC), 필드-프로그래머블 게이트 어레이(Field-Programmable Gate Array)(FPGA), 또는 데이터 처리 및/또는 프로그램 명령어들의 실행 및/또는 인터프리트(interpret)하는 어떠한 다른 디지털 또는 아날로그 회로망을 포함할 수 있다. 일 실시예에서, 프로세서(150)는 프로세서(150)에 관련된 메모리(152) 및/또는 하나 이상의 스토리지 블록들(110)내에 저장된 데이터의 처리 및/또는 프로그램 명령어들의 실행 및/또는 인터프리트(interpret)할 수 있다. 메모리들(152)은 일정 기간동안의 데이터 및/또는 프로그램 명령어들을 보유하는 임의의 적절한 컴퓨터로 판독가능한 매체를 포함할 수 있다. 예를 들어, 그러한 컴퓨터로 판독가능한 매체는 랜덤 억세스 메모리(Random Access Memory)(RAM), 읽기 전용 메모리(Read-Only Memory)(ROM), 전기적 소거가 가능한 프로그래머블 읽기 전용 메모리(Electrically Erasable Programmable Read-Only Memory)(EEPROM), 컴팩트 디스크 읽기 전용 메모리(Compact Disk Read-Only Memory)(CD-ROM) 또는 다른 광학적 디스크 스토리지, 마그네틱 디스크 스토리지 또는 다른 마그네틱 스토리지 장치들, 플래시 메모리 장치들(예를 들어, 솔리드 스테이트 메모리 장치들(solid state memory devices), 특정한 분자 시퀀스(specific molecular sequence)(예를 들어, DNA or RNA), 또는 컴퓨터로 실현가능한 명령어들의 형태의 목적 프로그램 코드 또는 데이터 구조들 를 이동하거나 저장하는데 이용되고, 프로세서(150)에 의해 억세스되는 임의의 다른 스토리지 미디엄을 포함할 수 있다. 또한 이들의 조합들은 컴퓨터로 판독가능한 매체의 범위내에 포함될 수 있다. 컴퓨터로 실행가능한 명령어들은 예를 들어, 범용 컴퓨터, 특수 목적 컴퓨터 또는 특수 목적의 프로세싱 장치(예를 들어, 프로세서(150))가 특정한 기능 또는 기능들의 그룹을 수행하게 하는 명령어들 또는 데이터를 포함할 수 있다. 일 실시예에서, 스토리지 에이전트(104)는 각각의 장치(106)의 메모리(152)의 내부에서 컴퓨터로 실행가능한 명령어로써 저장될 수 있다.
스토리지 블록들(110)은 또한 데이터를 저장하는 임의의 적절한 컴퓨터로 판독가능한 미디엄일 수 있다. 스토리지 블록들(110)은 서로 다른 스토리지 블록들(110)에 걸쳐 실질적으로 동일한 데이터를 저장할 수 있고, 또한, 특정 스토리지 블록(110)상에서만 발견될 수 있는 데이터를 저장할 수도 있다. 각 장치(106)가 단일 스토리지 블록(110)을 포함한 것으로 도시되었음에도 불구하고, 장치들(106)은 임의의 적절한 타입의 컴퓨터로 판독가능한 미디엄의 임의의 수의 스토리지 블록들(110)을 포함할 수 있다. 예를 들어, 장치(106)는 하드 디스크 드라이브인 제1 스토리지 블록(110) 및 플래시 디스크 드라이브인 제2 스토리지 블록(110)을 포함할 수 있다. 또한, 스토리지 블록(110)은 한가지 타입 이상의 컴퓨터로 판독가능한 미디엄을 포함할 수 있다. 예를 들어, 스토리지 블록(110)은 하드 디스크 드라이브 및 플래시 디스크 드라이브를 포함할 수 있다. 게다가, 스토리지 블록(110)은 장치(106)에서 제거될 수 있고, 이에 따라, 스토리지 블록(110)은 서로 다른 시간에 하나 이상의 장치(106)에 포함될 수 있다. 예를 들어, 스토리지 블록(110)은 서로 다른 시간에 서로 다른 장치(106)와 연결될 수 있는 시큐어 디지털(Secure Digital)(SD) 카드 또는 유니버셜 시리얼 버스(Universal Serial Bus(USB)) 스토리지 장치일 수 있다. 전술한 바와 같이, 스토리지 에이전트들(104)은 스토리지 네트워크(102a)에 대한 스토리지 블록들(110) 상의 데이터의 저장을 관리할 수 있다. 일 실시예 및 전술한 바와 같이, 하나 이상의 스토리지 에이전트들(104)은 임의의 적절한 장치(106)에 포함될 수 있다. 또한, 일 실시예에서, 장치(106)는 스토리지 에이전트(104)를 포함하지 않을 수 있다. 이러한 실시예 및 다른 실시예에서, 하나 이상의 스토리지 에이전트들(104)은 스토리지 에이전트를 포함하지 않는 장치(106)의 스토리지 블록(110) 상의 데이터를 관리할 수 있는 하나 이상의 다른 장치(106)에 포함된다. 예를 들어, 일 실시예에서, 특정 스토리지 블록(110)은 제3자(third party)에 의해 관리되는 클라우드 서버인 특정 장치(106)에 포함될 수 있다. 이러한 예들의 실시예에서, 다른 장치들(106)의 하나 이상의 스토리지 에이전트들(104)은 특정 장치(106)의 일부인 특정 스토리지 블록(110)상의 데이터의 저장을 관리할 수 있다. 또한, 특정 스토리지 블록(110)은 서로 다른 시간에 서로 다른 장치들(106)과 연결될 수 있는 USB 메모리 스틱과 같은 휴대용 스토리지 소자일 수 있고, 이에 따라, 서로 다른 에이전트들(104)은 서로 다른 시간에 특정 스토리지 블록(110)을 관리할 수 있다. 예를 들어, 어떠한 경우에는 특정 스토리지 블록(110)은 하나의 시점에서 장치(106a)와 연결될 수 있고, 이에 따라, 스토리지 에이전트(104a)는 특정 스토리지 블록(110)을 관리할 수 있다. 또한, 다른 시간에서, 특정 스토리지 블록(110)은 장치(106b)와 연결될 수 있고, 이에 따라, 스토리지 블록(104b)은 특정 스토리지 블록(110)을 관리할 수 있다.
장치들(106)은 스토리지 에이전트들(104)과 스토리지 블록들(110) 사이에서 데이터의 통신을 허용하기 위하여, 장치들(106)간의 연결을 제공하는 통신 모듈(116)을 포함할 수 있다. 예를 들어, 장치(106a)가 통신 모듈(116a)을 포함할 수 있고, 장치(106b)가 통신 모듈(116b)을 포함할 수 있고, 장치(106c)가 통신 모듈(116c)을 포함할 수 있다.
통신 모듈들(116)은 장치들(106) 사이에서 임의의 적절한 형태의 통신 기능을 제공할 수 있다. 한정되지 않는 예로서, 통신 모듈들(116)은 유선 및/또는 무선 메커니즘(wireless mechanisms), 인터넷 연결(Internet connectivity), 로컬 에어리어 네트워크(Local Area Network(LAN)) 연결, 와이드 에어리어 네트워크(Wide Area Network)(WAN) 연결, 블루투스(Bluetooth) 연결, 3G 연결, 4G 연결, LTE 연결, 와이파이(Wireless Fidelity (Wi-Fi)) 연결, 기계간(Machine-to-Machine)(M2M), 연결, 장치간(Device-to-Device (D2D)) 연결, 임의의 다른 적절한 통신 기능, 또는 그들의 임의의 적절한 조합을 제공할 수 있다.
도시된 실시예에서, 통신 모듈들(116)은 통신 네트워크(112)(이하, 네트워크(112))를 통하여 장치들(106) 사이의 연결을 제공하는 것으로 도시되어 있다. 일 실시예에서, 네트워크(112)는 단독으로 또는 임의의 적절한 조합으로, 인터넷(Internet), 인트라넷(Intranet), 로컬 와이파이 네트워크(local Wi-Fi network), 무선 LAN(wireless LAN), 모바일 네트워크(mobile network)(예를 들어, 3G, 4G 및/또는 LTE 네트워크), LAN, WAN 또는 임의의 다른 적절한 통신 네트워크를 포함할 수 있다. 도 1에서는 명확하게 기술되지 않았음에도 불구하고, 이러한 실시예 또는 다른 실시예에서, 통신 모듈들(116)은 장치들(106) 사이의 직접 연결(direct connectivity)을 제공할 수 있다. 따라서, 장치들(106) 사이의 스토리지 블록들(110) 상에 저장된 데이터의 통신은 장치들(106)이 관련된 스토리지 블록(110) 상에 로컬로 저장되지 않은 데이터를 억세스하고 이용하게 할 수 있다. 스토리지 에이전트들(104)은 장치들(106) 사이에서 데이터의 통신 및 코디네이션(coordination) 등을 용이하게 할 수 있다. 이와 같이, 스토리지 네트워크(102a), 장치들(106), 스토리지 에이전트들(104) 및 스토리지 블록들(110)은 데이터를 저장할 수 있게 하고, 또한, 장치들(106)이 데이터가 특정 장치들(106) 내에 포함된 스토리지 블록들(110) 상에 로컬로 저장되지 않을 경우에도 저장된 데이터에 억세스하게 할 수 있다. 또한, 장치들(106) 사이의 데이터의 통신 및 스토리지 에이전트들(104)의 관련된 코디네이션(coordination)은 데이터의 리던던시를 용이하게 제공할 수 있고, 이에 따라, 스토리지 블록들은 스토리지 네트워크(102a)내의 데이터의 손실이 거의 발생하지 않게 스토리지 네트워크(102a)에서 제거되거나 추가될 수 있다.
일 실시예에서, 장치들(106)은 객체-기반 파일 시스템(object-based file system) 내에 포함된 서버 또는 클라이언트와 유사하게 동작할 수 있다. 예를 들어, 다른 장치들(106)은 다양한 데이터 객체들과 관련된 실제 데이터(actual data) 및 메타 데이터를 저장할 수 있는 반면, 일부 장치들(106)은 다양한 데이터 객체들과 관련된 메타데이터만을 저장할 수 있다.
일 실시예에서, 스토리지 네트워크(102a) 내의 데이터의 저장과 관련된 정보를 제공하고 관리하기 위하여, 스토리지 네트워크(102a)를 위한 데이터의 카탈로그가 생성되고 관리될 수 있다. 예를 들어, 일 실시예에서, 카탈로그는 어떤 스토리지 블록들(110)이 데이터 객체들, 개별 데이터 파일들 및/또는 메타데이터를 로컬로 저장하고 있는지와 같은 정보를 포함할 수 있다.
일 실시예에서, 카탈로그는 스토리지 네트워크(102a) 내에 저장된 데이터 객체들의 모든 메타데이터의 컬렉션(collection)을 포함할 수 있다. 따라서, 카탈로그는 어떤 스토리지 블록(110)이 그 위에 저장된 특정 데이터를 갖고 있는지를 결정하는데 이용될 수 있다. 이와 같이, 장치들(106)은 만약 데이터가 각각의 스토리지 블록들(110) 상에 로컬로 저장되지 않은 경우, 해당 데이터를 억세스할 수 있는 위치를 알 수 있다. 일 실시예에서, 카탈로그는 스토리지 에이전트들(104)에 의해 관리될 수 있는 동기화를 기초로 각각의 스토리지 블록들(110) 사이에서 동기화되고 저장될 수 있다.
일 실시예에서, 스토리지 에이전트들(104)은 하나 이상의 스토리지 네트워크 컨트롤러들과 통신할 수 있고, 하나 이상의 스토리지 네트워크 컨트롤러들은 개별적으로 또는 집합적으로, 스토리지 네트워크 매니저(114)로 지칭될 수 있다. 스토리지 네트워크 매니저(114)는 분배형 스토리지 시스템 내의 중앙 서비스와 유사하게 동작할 수 있다. 스토리지 네트워크 매니저(114)는 스토리지 관리 서비스를 제공하는 제3자에 의해 운용되는 서버와 관련될 수 있고, 스토리지 네트워크(102a) 내에 저장되는 데이터의 사용자에 의해 소유 및/또는 관리되는 장치(106) 상에 로컬로 저장될 수 있다.
스토리지 네트워크 매니저(114)는 스토리지 에이전트(104)의 동작들을 코디네이션하는 것과 같이, 스토리지 시스템(100a) 내의 다수의 기능들을 수행할 수 있다. 예를 들어, 스토리지 네트워크 매니저(114)의 기능들은 스토리지 네트워크(102a)의 스토리지 블록들(110) 사이의 데이터 파일들을 로케이팅(locating)하는 기능, 스토리지 에이전트들(104)에 의해 수행되는 스토리지 블록들(110) 사이의 데이터의 동기화를 코디네이팅하는 기능, 스토리지 블록들(110) 상의 데이터의 저장 영역을 할당하는 기능 및 데이터의 스토리지 블록들(110)로의 분배를 코디네이팅하는 기능을 포함할 수 있다. 다만, 스토리지 네트워크 매니저(114)의 기능들은 이에 한정되지 않는다. 스토리지 블록들(110) 사이의 데이터의 할당 및 분배는 아래에서 자세하게 설명된다.
일 실시예에서, 스토리지 네트워크 매니저(114)는 스토리지 네트워크(102a)의 사용자의 로컬 장치인 장치(106)에 포함될 수 있고, 다른 실시예에서, 스토리지 네트워크 매니저(114)는 제3자에 의해 관리되는 장치(106)에 포함될 수 있다. 일 실시예에서, 스토리지 네트워크 매니저(114)는 스토리지 에이전트가 되고, 스토리지 에이전트로 행동할 수 있는 동작들을 수행할 수 있다. 예를 들어, 스토리지 네트워크 매니저(114)는 스토리지 네트워크(102a)와 관련된 다른 메타데이터 및/또는 카탈로그와 같은 데이터를 관리할 수 있고, 이러한 데이터와 다른 스토리지 에이전트들(104)을 동기화할 수 있고, 이에 따라 스토리지 네트워크 매니저(114)는 그러한 데이터에 대한 스토리지 에이전트로써 동작할 수 있다.
일 실시예에서 스토리지 네트워크 매니저(114)는 네트워크(112)(도 1a에 도시됨)를 통하여 스토리지 에이전트들(104)와 통신할 수 있다. 또한, 스토리지 네트워크 매니저(114)는 직접 통신(도 1에 도시되지 않음)을 통하여 하나 이상의 스토리지 에이전트들(104)과 통신할 수 있다.
스토리지 네트워크(102a) 내에 포함된 데이터와 관련된 메타데이터(예를 들어, 전술한 카탈로그)는 다른 것들 중에서, 할당된 데이터를 위한 분배 전략을 결정하는 것, 스토리지 블록들(110) 가운데 데이터를 할당하는 것, 데이터의 동기화를 코디네이트하는 것 및 데이터 파일들의 위치를 찾는 것에 도움이 될 수 있는 데이터의 상태에 대한 정보를 포함할 수 있다.
데이터의 상태는 어떤 데이터 파일들이 어떤 스토리지 블록들(110)에 할당되었는지를 나타내고, 서로 다른 데이터 파일들에 관련된 분배 전략을 나타내고, 스토리지 블록들(110) 사이의 데이터의 전송이 시작되는 시점을 나타내고, 스토리지 블록들(110) 사이의 데이터의 전송이 계속 진행 중인 것을 나타내고, 데이터가 완전하게 전송되기 전에 스토리지 블록들(110) 사이의 데이터의 전송이 중단되는 것을 나타내고, 특정 데이터가 여전히 스토리지 블록(110)에 저장되어 있는지 여부를 나타낼 수 있다.
일 실시예에서, 스토리지 네트워크 매니저(114)는 스토리지 블록들(110)에 대한 데이터의 분배 및 할당과 같은 데이터의 저장에 대하여 스토리지 에이전트(104)와 명령어들을 통신할 수 있다. 스토리지 에이전트(104)는 스토리지 네트워크 매니저(114)로부터 통신된 명령어들에 응답하여 동작할 수 있고, 이에 따라, 데이터는 할당 및 분배에 따라 스토리지 블록들(110) 상에 저장될 수 있다. 또한, 일 실시예에서, 메타데이터는 스토리지 네트워크 매니저(1140)에 의해 사용되고 통신되며, 이에 따라, 스토리지 네트워크 매니저(114)는 스토리지 네트워크(102a)에 저장된 관련 데이터 파일들(예를 들어, 사이즈, 타입, 고유 식별자(unique identifiers), 위치 등)에 대한 정보를 인지할 수 있으나, 스토리지 네트워크(102a)에 저장된 데이터 파일들의 실제 컨텐츠(actual content)에 대한 정보는 인지할 수 없다.
스토리지 에이전트(104)는 스토리지 에이전트(104) 각각에 저장될 수 있는 메타데이터에 따라서 스토리지 네트워크(102a) 내의 데이터 파일들을 찾을 수 있다. 일 실시예에서, 그러한 메타데이터는 전술한 카탈로그로서 저장될 수 있다. 예를 들어, 스토리지 에이전트(104a)는 스토리지 에이전트(104a)에 의해 관리되고 스토리지 블록(110a) 상에 저장되는 카탈로그를 이용하여 스토리지 블록(110b)상에 저장되는 데이터 파일을 찾을 수 있다. 스토리지 네트워크(102a) 상에 저장된 데이터 파일들을 찾기 위하여 스토리지 에이전트들(104)을 위한 정보의 전부 또는 일부는 스토리지 에이전트들(104) 및/또는 특정한 스토리지 에이전트(104) 및 스토리지 네트워크 매니저(114)에 의해 수행되는 메타데이터의 동기화 동안 통신될 수 있다. 부가적 또는 대안적으로, 스토리지 에이전트들(104)은 스토리지 네트워크(102a) 상에 저장된 데이터 파일들을 찾기 위하여 스토리지 네트워크 매니저(114)와 통신을 수행할 수 있다. 또한, 스토리지 네트워크 매니저(114)는 다른 스토리지 에이전트(104)와 신뢰할 수 없거나, 존재하지 않거나, 간헐적인 연결을 갖는 하나 이상의 스토리지 에이전트(104)와 통신할 수 있다. 이에 따라, 스토리지 네트워크 매니저(114)는 스토리지 에이전트들(104) 사이의 데이터의 통신을 유지하기 위하여 하나의 스토리지 에이전트(104)로부터 수신된 정보를 다른 스토리지 에이전트(104)에 중계할 수 있다. 예를 들어, 스토리지 에이전트(104c)는 신뢰할 수 없거나 간헐적인 연결을 이용하여 스토리지 에이전트(104b) 및/또는 스토리지 에이전트(104a)와 통신적으로 연결될 수 있다. 이에 따라, 스토리지 네트워크 매니저(114)는 통신 네트워크(112)를 통하여 스토리지 에이전트(104c)와 통신할 수 있고, 이후, 스토리지 에이전트(104c)로부터의 정보를 스토리지 에이전트(104b) 및/또는 스토리지 에이전트(104a)에 중계할 수 있다. 또한, 스토리지 네트워크 매니저(114)는 스토리지 네트워크(102a) 내의 장치들(106) 및/또는 스토리지 블록들(110)의 존재를 결정할 수 있다. 장치들(106) 또는 스토리지 블록들(110)의 존재는 어떤 장치들(106)이 스토리지 네트워크(102a)의 다른 장치(106) 및/또는 스토리지 네트워크 매니저(114)를 갖는 다른 장치(106)와 통신적으로 연결되어 있는지를 지시할 수 있고, 이에 따라, 어떤 장치들(106) 및 관련된 스토리지 블록들(110)이 스토리지 네트워크(102a) 내에 "존재"하는지 또는 스토리지 네트워크(102a)와 연결되는지를 지시할 수 있다. 장치들(106) 및 그들과 관련된 스토리지 블록들(110)의 존재는 아래에서 상세하게 설명할 데이터 할당 및 분배 결정들을 위하여 이용될 수 있는 스토리지 네트워크에 대한 스토리지 블록들(110)의 가용성을 지시할 수 있다. 전술한 바와 같이, 스토리지 네트워크 매니저(114)는 스토리지 블록들(110) 상의 저장을 위한 데이터 파일들의 할당을 결정할 수 있다. 일 실시예에서, 스토리지 네트워크 매니저(114)는 데이터 파일들을 위한 목적 리던던시(desired redundancy) 및/또는 데이터 파일들의 목적 가용성(desired availability)에 따라서 스토리지 블록들(110) 상의 저장을 위한 데이터 파일들의 할당을 결정할 수 있다. 일 실시예에서, 스토리지 네트워크 매니저(114)는 특정 스토리지 블록(110)과 관련된 다수의 특성들을 기초로 특정 스토리지 블록(110)에의 할당을 결정할 수 있다. 특성들은 특정 스토리지 블록(110)과 직접적으로 관련될 수 있다(스토리지 블록 특성이라 함). 그리고/또는 특성들은 연관될 수 있는 특정 스토리지 블록(110)을 갖는 장치(들)(106)과 관련될 수 있다(장치 특성이라 함). 예를 들어, 스토리지 네트워크 매니저(114)는 특정 스토리지 블록(110)의 스토리지 용량, 특정 스토리지 블록(110)의 가용할 수 있는 스토리지 공간 특정 스토리지 블록(110)의 스토리지 요소 타입(storage element type)(이하, "스토리지 블록 타입" 이라 함), 특정 스토리지 블록(110)의 손실 가능성(likelihood of loss), 스토리지 네트워크(102a)에 대한 특정 스토리지 블록(110)의 가용성, 관련된 특정 스토리지 블록(110)을 갖는 장치(106), 스토리지 블록의 상태(health) 및/또는 특정 스토리지 블록(110)의 이용성(use)을 기초로 할당을 결정할 수 있다.
스토리지 블록 타입은 하나 이상의 다른 스토리지 블록 특성에 영향을 미칠 수 있다. 예를 들어, 스토리지 블록(110)은 USB 메모리 스틱과 같은 휴대가능하고 제거가능한 스토리지 블록이고, 스토리지 블록(110)은 상대적으로 잃어버리기가 쉽기 때문에 상대적으로 높은 스토리지 블록(110)의 데이터의 손실 가능성을 가질 수 있다. 또한, 휴대가능하고 제거가능한 스토리지 블록의 스토리지 사용은 데스크탑 컴퓨터의 하드 디스크 드라이브와 같이 영구적으로 고정되는 스토리지 블록의 스토리지 사용과 다를 수 있다. 또한, 때때로 휴대가능하고 제거가능한 스토리지 블록은 임의의 장치(106)와 관련될 수 없고, 이에 따라 데이터가 스토리지 네트워크(102a)의 장치들(106)에 가용될 수 없는 곳에 데이터가 저장될 수 있으므로, 휴대가능하고 제거가능한 스토리지 블록은 스토리지 네트워크(102a)에 대한 가용성이 떨어질 수 있다. 또한, 후술할 바와 같이, 특정 스토리지 블록(110)을 갖는 특정 장치(106)는 후술할 바와 같이, 특정 스토리지 블록(110)과 관련된 하나 이상의 특성에 영향을 미칠 수 있다. 따라서, 장치 특성들은 후술할 바와 같이, 데이터의 할당 및 분배에 영향을 미칠 수 있다. 일 실시예에서, 스토리지 네트워크 매니저(114)는 데이터 파일의 가용성 및/또는 목적 리던던시와 관련된 스토리지 블록들(110)과 관련된 특성으로 할당을 수행할 수 있다.
장치 타입은 데이터 할당에 영향을 미칠 수 있는 스토리지 블록들(110)과 관련된 다른 특성들에 영향을 미칠 수 있는 장치 특성이다. 장치 타입은 동일한 일반적인 카테고리내에 포함될 수 있는 특정 타입들 또는 모델들뿐만 아니라, 장치들의 일반적인 카테고리들을 참조할 수 있다. 예로서, 도시된 실시예에서, 장치(106a)는 제1 장치 타입(예를 들어, 스마트폰)일 수 있고, 장치(106b)는 제2 장치 타입(예를 들어, 외장 하드 드라이브)일 수 있고, 장치(106c)는 제3 장치 타입(예를 들어, 태블릿)일 수 있다. 또한, 장치 타입은 보다 일반적인 장치 타입의 서로 다른 모델들을 참조할 수 있다. 예를 들어, 스마트폰들과 같이 일반적으로 특성화될 수 있음에 불구하고, 하나의 장치 타입은 iPhone® 일 수 있고, 다른 장치 타입은 Android®일 수 있다. 일 실시예에서, 하나의 장치 타입이 iPhone® 4이고 다른 장치 타입이 iPhone® 5 인 것과 같이, 장치 타입은 보다 세부적으로 특정될 수 있다.
상술한 바와 같이, 장치들(106)의 타입들은 장치들(106)의 하나 이상의 장치 특성들과 관련될 수 있고, 이는 스토리지 블록 특성들과 관련 및/또는 겹칠 수 있다. 예를 들어, 장치 특성들은 각각의 스토리지 블록들(110)의 스토리지 용량, 각각의 스토리지 블록들(110)의 이용가능한 스토리지 공간, 각각의 스토리지 블록들(110)의 제거성(removability) 각각의 스토리지 블록들(110)에 저장된 데이터의 손실 가능성, 신뢰성, 장치들(106)의(그리고, 결과적으로, 각각의 스토리지 블록들(110)의) 이용성, 장치들(106)의 물리적 위치, 서로에 대한 장치들(106)의 위치, (현재 및/또는 과거의) 장치들(106)의 온/오프(on/off) 상태 및 장치들(106)의 상태(health)를 포함할 수 있고, 이에 한정되지 않는다.
또한, 장치 특성들은 각 연결의 대역폭, 네트워크(112)뿐만 아니라 다른 장치들(106)과의 연결에 사용되는 네트워크 타입(예를 들어, Wi-Fi, 셀룰러, LAN), 연결 타입(예를 들어, 무선, 유선), 다른 장치들(106)과의 연결, 데이터의 전송에 대한 장치들(106)의 (현재 및/또는 과거의) 대기시간(latency), 장치들(106)에 의한 데이터의 전송의 (현재 및/또는 과거의) 속도, 연결의 금전적 비용 등과 같은 장치들(106)의 연결성을 포함할 수 있다. 상술한 바와 같이, 다수의 장치 특성들 및/또는 스토리지 블록 특성들은 장치들(106)의 타입들과 관련될 수 있다. 예를 들어, 일부 장치들(106)은 장치 타입에 따라서 다른 장치들(106)보다 빠르게 데이터의 읽기, 쓰기, 및/또는 억세스를 수행할 수 있다. 장치 특성들은 보다 일반적인 장치 타입(예를 들어, 스마트폰 대(versus) 태블릿) 또는 보다 특정된 장치 타입(예를 들어, iPhone® 4 대(versus) iPhone® 5)과 관련될 수 있다.
예를 들어, 일 실시예에서, 장치(106a)는 스마트폰이 될 수 있고, 장치(106c)는 외장 하드 드라이브가 될 수 있다. 그 결과, 스토리지 블록(110a)의 스토리지 용량은 스토리지 블록(110c)의 스토리지 용량보다 적을 수 있다. 또한, 이 경우, 장치(106a)의 스토리지 블록(110a)은 플래시 메모리를 포함할 수 있고, 장치(106c)의 스토리지 블록(110c)은 솔리드 스테이트 메모리(solid state memory)와 비교하여 신뢰성의 레벨이 다른 하드 디스크 드라이브를 포함할 수 있다. 또한, 장치(106a)를 분실하거나, 두고 오거나, 떨어뜨리거나, 도난당하거나, 물에 의해 손상당하는 등의 경우, 스마트폰과 같은 장치(106a)의 손실 가능성은 외장 하드 드라이브와 같은 장치(106c)의 손실 가능성보다 커질 수 있다. 또한, 외장 하드 드라이브와 같은 장치(106c)가 사용자에 의해 데이터의 백업에 주로 이용되고, 데이터의 억세스에 종종 이용되지 못하는 반면, 스마트폰과 같은 장치(106a)는 사용자에 의해 사진들, 음악 및 비디오와 같은 미디어 타입의 억세스에 이용될 수 있다. 따라서, 장치들(106a, 104c) 및 그들 각각의 스토리지 블록들(110a, 110c)의 이용 또한 장치들(106 a, 104c)의 장치 타입들에 기초할 수 있다.
또한, 스마트폰과 같은 장치(106a)는 장치(106a)의 사용자에 의해 운반될 수 있고, 이 경우, 장치(106a)(그리고, 장치(106a와 관련된 스토리지 에이전트(104a) 및 스토리지 블록(110a)와 같은 구성요소들(components))는 스토리지 네트워크(102a)의 다른 장치들(106)(및 그들의 관련된 구성요소들)과 불일치한 연결, 저속 연결 및/또는 고비용의 연결성을 가질 수 있다. 대조적으로, 외장 하드 드라이브와 같은 장치(106c)(그리고, 그것과 관련된 구성요소들)는 장치(106c)가 적어도 네트워크(112)에 지속적으로 연결될 경우, 보다 일관된 연결성을 가질 수 있다. 다른 예로서, 장치 타입들은 또한 장치들(106)의 위치에 영향을 미칠 수 있다. 예를 들어, 데스크탑 컴퓨터는 동일한 위치에 존재하는 태블릿 또는 스마트폰보다 훨씬 더 많이 동일한 위치에 존재할 수 있다. 또한, 사용자의 집에 있는 데스크탑 컴퓨터는 일 시점 또는 다른 시점에서 사용자의 집안에 존재하기 쉬운 적어도 많은 다른 장치들(106)으로 인하여, 상당히 지속적으로 스토리지 네트워크(102a)의 다른 장치들(106)(예를 들어, 스마트폰, 태블릿 등)과 연결되기 쉬울 수 있다. 따라서, 장치 타입 또한 다른 장치(106)에 대한 특정 장치(106)의 위치와 관련될 수 있다.
스토리지 네트워크 매니저(114)는 스토리지 블록들(110)의 스토리지 블록 특성들을 결정할 수 있고, 스토리지 블록 특성들을 기초로 데이터를 스토리지 블록들(110)에 할당할 수 있다. 일 실시예에서, 스토리지 네트워크 매니저(114)는 스토리지 블록들(110)과 관련있는 장치들(106)을 기초로 스토리지 블록 특성들을 결정할 수 있다. 예를 들어, 스토리지 네트워크 매니저(114)는 장치들(106)의 장치 타입들을 결정할 수 있고, 장치 타입들을 기초로 하나 이상의 스토리지 블록 특성들 및 장치 특성들을 결정할 수 있다. 결정된 특성들을 기초로, 스토리지 네트워크 매니저(114)
는 데이터를 관련된 스토리지 블록들(110)에 할당할 수 있다.
예를 들어, 장치(106a)는 스마트폰일 수 있고, 이는 스토리지 네트워크 매니저(114)에 의해 결정될 수 있다. 스토리지 네트워크 매니저(114)는 또한 스마트폰인 장치(106a)를 기초로 장치(106a)를 위한 스토리지 블록 및 장치 특성들을 결정할 수 있다. 예를 들어, 스토리지 네트워크 매니저(114)는 스토리지 블록 및 장치 특성들을 결정할 수 있고, 스토리지 블록 및 장치 특성들은 스토리지 블록(110a) 및 장치(106a)의 손실 가능성, 장치(106a)의 신뢰성, 스토리지 블록(110a)의 스토리지 용량, 스토리지 블록(110a) 상의 이용가능한 스토리지 용량, 장치(106a)의 장치(106b) 및 장치(106c)와의 연결, 장치(106a)의 이용성 등을 포함할 수 있으나, 이에 한정되지는 않는다. 따라서, 스토리지 네트워크 매니저(114)는 하나 이상의 장치(106a)의 장치 특성들 및 스토리지 블록(110a)의 스토리지 블록 특성들과 관련된 데이터를 스토리지 블록(110a)에 할당할 수 있다.
예를 들어, 전술한 바와 같이, 스마트폰과 같은 장치(106a)의 손실 가능성은 다른 장치 타입과 비교하여 상대적으로 높을 수 있다. 따라서, 스토리지 네트워크 매니저(114)는 데이터를 스토리지 블록(110a)에 할당할 수 있고, 또한, 데이터는 다른 장치들(106)과 관련된 다른 스토리지 블록들(110)에 할당될 수 있고, 이에 따라, 장치(106a)가 손실된 경우, 스토리지 블록(110a)상에 저장된 데이터는 손실되지 않을 수 있다. 또한, 스토리지 블록(110a)(및 장치(106a))의 스토리지 용량은 다소 제한될 수 있고, 이에 따라, 스토리지 네트워크 매니저(114)가 스토리지 네트워크(102a)에 저장된 데이터의 부분집합(subset)을 선택하여 선택된 데이터의 부분집합이 장치(106a)의 스토리지 블록(110a) 상에 저장될 수 있게 하기 위하여, 스토리지 블록(110a)(및 장치(106a))의 스토리지 용량이 다소 제한되는 반면, 다른 스토리지 블록들(110)의 스토리지 용량은 스토리지 네트워크(102a)에 저장된 전체 데이터가 저장되도록 할 수 있다. 또한, 사용자가 종종 음악을 듣기 위하여, 뿐만 아니라 그림들 및 비디오를 보기 위하여 스마트폰들을 사용하기 때문에, 이러한 실시예 및 다른 실시예에서, 스토리지 네트워크 매니저(114)는 스토리지 블록(110a) 및 장치(106a)의 사용에 기인하여, 이러한 타입의 데이터를 스토리지 블록(110a)상에 저장되도록 할당할 수 있다.
또한, 그 특성상, 스마트폰과 같은 장치(106a)(그리고 결론적으로 스토리지 에이전트(104a))는 다른 장치들(106) 및 그들의 관련된 스토리지 네트워크(102a)의 스토리지 블록들(110)과의 산발적 연결, 느린 연결 및/또는 고비용(예를 들어, 셀룰러 네트워크 및 관련된 데이터 플랜을 통한)의 연결성을 가질 수 있다. 이에 따라, 스토리지 블록(110a)의 가용성 및 그와 관련된 스토리지 네트워크(102a)에 대한 데이터는 다소 제한될 수 있다. 따라서, 스토리지 네트워크 매니저(114)는 데이터를 장치(106a)에 의해 보다 자주 사용될 수 있는 스토리지 블록(110a)에 할당할 수 있고, 이에 따라, 장치(106a)는 데이터를 억세스하기 위하여 다른 장치들(106) 및 그들과 관련된 스토리지 블록들(110)과의 연결에 의존할 필요가 없을 수 있다. 또한, 스토리지 네트워크 매니저(114)는 스토리지 블록(110a)의 감소된 가용성에 따라, 스토리지 블록(110a)으로부터 데이터를 억세스하는 것을 의존할 수 있는 다른 장치들(106)에 있는 스토리지 블록(110)에 할당하지 않을 수 있다. 다른 예로서, 일 실시예에서, 장치(106c) 및 스토리지 블록(110c)는 글레이셜 스토리지 시스템(glacial storage system)과 관련될 수 있다. 글레이셜 스토리지 시스템은 스토리지 스킴(storage scheme)의 임의의 타입과 관련될 수 있고, 그 위에 저장된 데이터의 억세스 및/또는 저장에 관한 상당한 대기시간(significant latencies)(예를 들어, 수분 또는 수시간의 순서로)을 가질 수 있으나, 신뢰성이 상당히 높을 수 있다. 수 차례 글레이셜 스토리지 시스템은 클라우드 스토리지 서비스의 일부분일 수 있고, 오프라인(전원이 꺼지거나, 컴퓨팅 장치로부터 분리되어 저장됨)이 되는 글레이셜 스토리지 시스템의 스토리지 블록들은, 데이터가 저장되거나 억세스되기 전에 온라인이 될 필요가 있을 수 있다.
스토리지 네트워크 매니저(114)는 종종 억세스되지 않는 데이터를 글레이셜 스토리지 시스템과 관련된 스토리지 블록(110c)에 할당할 수 있고, 이에 따라, 데이터가 보다 자주 억세스되는 경우보다 대기시간(latency)이 적을 수 있고, 또한 그러한 대기시간들을 가지지 않을 수 있는 스토리지 블록들(110)상에 스토리지 공간을 확보할 수 있다. 또한, 스토리지 네트워크 매니저(114)는 스토리지 네트워크(102a)에 저장된 데이터의 많은 부분(전부는 아님)을 스토리지 블록(110c)에 할당할 수 있고, 이에 따라, 스토리지 블록(110c)은 글레이셜 스토리지 시스템의 신뢰할 수 있는 특성으로 인하여 데이터에 대한 백업으로서 사용될 수 있다. 다른 예로서, 특정 장치(106)는 네트워크(112) 및/또는 다른 장치들(106)과의 연결의 대역폭으로 인하여 상대적으로 높은 속도로 데이터를 다운로드 및/또는 업로드할 수 있다. 따라서, 높은 사용 가능성을 갖는 데이터는 높은 대역폭 연결을 갖는 특정 장치(106)와 관련된 스토리지 블록(110)에 할당될 수 있고, 이에 따라, 데이터는 특정 장치(106) 및 이와 관련된 스토리지 블록(110)으로부터 다른 장치들(106)에 의해 보다 쉽게 억세스 및/또는 전송될 수 있다.
다른 예로서, 특정 장치(106) 및 관련된 스토리지 블록(110)은 관련된 스토리지 블록(110)이 특정 장치(106)로부터 제거되도록 구성될 수 있다. 예를 들어, 특정 장치(106)의 관련된 스토리지 블록(110)은 다른 장치(106)에 의해 전달될 수 있는 제거가능한 SD 카드일 수 있다. SD카드의 제거가능한 특성으로 인하여, 제거가능한 SD 카드는 상대적으로 높은 손실 가능성을 가질 수 있고/있거나, 스토리지 네트워크(102a)에 대한 낮은 가용 가능성을 가질 수 있다. 그러므로, 스토리지 네트워크 매니저(114)는 데이터를 제거가능한 SD 카드인 스토리지 블록(110)에 할당할 수 있다. 예를 들어, 스토리지 네트워크 매니저(114)는 오직 다른 스토리지 블록(110)에 저장된 데이터 및/또는 손실되더라도 중요하지 않은 데이터를 제거가능한 SD 카드인 스토리지 블록(110)에 할당할 수 있다.
장치들(106)의 위치는 또한 데이터의 할당에 있어 중요한 역할을 할 수 있다. 예를 들어, 중심 위치(예를 들어, 사용자의 집에 있는 데스크탑 컴퓨터)에 항상 존재할 것 같은 장치 타입을 갖는 특정 장치(106)는 다른 장치들(106)와의 보다 일관된 연결을 갖도록 도달할 수 있도록 접근 가능할 수 있고, 높은 가능성을 가질 수 있다. 이에 따라, 일정한 경우에 특정 장치(106)의 위치와 관련될 수 있는, 낮은 손실 가능성뿐만 아니라 접근 가능한 스토리지 블록(110)의 높은 가능성으로 인하여, 중요한 데이터의 특정 장치(106)의 스토리지 블록(110)으로의 할당은 우선적으로 처리될 수 있다. 스토리지 블록(110)의 상태(health) 및/또는 장치(106)은 일정한 경우에서 데이터의 할당에 중요한 역할을 수행할 수 있다. 스토리지 블록(110) 및/또는 장치(106)가 열화됨에 따라, 스토리지 블록(110) 및/또는 장치(106)의 상태가 시간이 지나면서 나빠질 수 있다. 일 실시예에서, 스토리지 네트워크 매니저(114)는 스토리지 블록들(110) 및/또는 장치들(106) 의 상태를 모니터링할 수 있고(예를 들어, 사용, 퍼포먼스(performance) 및/또는 스토리지 블록들(110) 및 장치들(106)과 관련된 진단 정보를 기초로), 이에 따라 데이터를 할당할 수 있다. 예를 들어, 스토리지 네트워크 매니저(114)는 데이터의 목적 리던던시를 위하여 상태가 나빠지는 스토리지 블록(110) 또는 상태가 나빠지는 장치(106)과 관련된 스토리지 블록(110)에 의존하지 않고 상태를 나빠지게 할 수 있고, 이에 따라 목적 리던던시에 대하여 나빠지는 상태를 갖는 장치(106)의 기여를 줄일 수있다.
일 실시예에서, 스토리지 네트워크 매니저(114)는 장치들(106) 및/또는 스토리지 블록(110)의 실제 사용을 모니터링할 수 있고, 장치들(106) 및/또는 스토리지 블록(110)의 실제 사용을 기초로 할당을 조정할 수 있고, 이는 스토리지 네트워크 매니저(114)에 의해 만들어진 초기 가정들(initial assumptions)과 다를 수 있다. 일 실시예에서, 스토리지 네트워크 매니저(114)는 특정 장치 타입들의 사용 패턴을 찾을 수 있고, 이에 따라, 스토리지 네트워크 매니저(114)는 사용 패턴을 기초로 유사한 장치 타입에 대하여 데이터를 할당하는 방법을 다르게 할 수 있다.
예를 들어, 특정 스토리지 블록(110)은 휴대가능할 수 있고(예를 들어, 특정 스토리지 블록(110)은 SD 카드이거나 또는 랩탑 컴퓨터에 포함될 수 있음), 이에 따라, 특정 스토리지 블록(110)에 대한 초기 가정들은 산발적 가용성(sporadic availability) 및/또는 높은 손실 가능성을 가정할 수 있다. 그러나, 특정 스토리지 블록(110)(및/또는 이와 관련된 장치(106))의 실제 사용은 특정 스토리지 블록(110)이 종종 지속적으로 이용 가능하지 않고/않거나, 전송 가능하지 않게 될 수 있다. 따라서, 특정 스토리지 블록(110)으로의 데이터의 할당은 특정 스토리지 블록(110)의 실제 사용을 기초로 수정될 수 있다.
일 실시예에서, 스토리지 에이전트(104)는 하나 이상의 장치 및 스토리지 블록 특성들을 스토리지 네트워크 매니저(114)에 리포트할 수 있고, 이에 따라, 스토리지 네트워크 매니저(114)는 리포트된 특성들을 기초로 데이터를 스토리지 블록들(110)에 할당할 수 있다. 예를 들어, 스토리지 네트워크 매니저(114)가 데이터를 스토리지 블록(110a)에 할당하는 방법을 평가하도록 하기 위하여, 스토리지 에이전트(104a)는 스토리지 블록(110a)의 이용가능한 스토리지 공간을 리포트할 수 있다.
또한, 일 실시예에서, 스토리지 에이전트(104a)는 장치(106a) 및/또는 스토리지 블록(110a)의 특정한 사용과 관련하여 스토리지 네트워크 매니저(114)에 정보를 리포트할 수 있고, 이에 따라, 스토리지 네트워크 매니저(114)는 특정한 사용에 따라 데이터를 할당할 수 있다. 이 경우 및 다른 실시예에서, 스토리지 네트워크 매니저(114)는 장치(106a)에 의해 자주 호출되거나 억세스되는 스토리지 블록(110a) 이외의 스토리지 네트워크(102a)의 스토리지 블록들(110) 상에 저장된 데이터를 추적(track)할 수 있다. 따라서, 스토리지 네트워크 매니저(114)는 스토리지 블록(110a)에 데이터 및/또는 이와 유사한 데이터를 할당할 수 있고, 이에 따라, 데이터는 다른 장치(106)과 관련된 다른 스토리지 블록(110)으로부터 억세스되는 대신에 보다 빠르고 강건한 억세스를 위한 스토리지 블록(110a)에 로컬로 저장될 수 있다. 이에 따라, 할당은 장치(106a)에 의해 억세스되는 데이터가 장치(106a)로부터 떨어진 스토리지 블록(110) 대신에 스토리지 블록(110a) 상에 로컬로 저장될 가능성을 증가시킬 수 있다.
일 실시예에서, 장치 타입들 및/또는 장치 특성들을 기초로, 스토리지 네트워크 매니저(114)는 스토리지 블록들(110)을 위한 리던던시 값을 결정하고, 이는 손실될 가능성에 기초될 수 있다. 예를 들어, 스마트폰과 관련된 스토리지 블록(110)은 외장 하드 드라이브와 비교하여 스마트폰의 손실 가능성을 기초로 외장 하드 드라이브와 관련된 스토리지 블록(110)보다 작은 리던던시 값을 가질 수 있다. 이러한 실시예 또는 다른 실시예에서, 스토리지 네트워크 매니저(114)는 스토리지 블록 특성들, 장치 타입들 및/또는 장치 특성들을 기초로 스토리지 블록들(110)을 위한 가용성 값(availability value)을 결정할 수 있다. 리던던시 및/또는 가용성 값은 목적 리던던시 및/또는 가용성 스킴에서의 그들의 롤(role)에 따라 스토리지 블록들(110)을 가중(weight)하고/하거나 랭크(rank)하기 위해 이용될 수 있다.
특정 장치(106) 또는 스토리지 블록(110)의 신뢰성 및/또는 가용성은 그들 각각의 특성에서의 변화에 의해 나타내는 바와 같이, 시간에 따라 변할 수 있다. 스토리지 네트워크 매니저(114)는 이러한 변화를 모니터링할 수 있고, 이에 따라 특정 장치 또는 (106) 또는 스토리지 블록(110)의 특성들을 조정할 수 있다. 일 실시예에서, 스토리지 네트워크 매니저(114)는 특성들의 변화에 따라 데이터의 할당을 조정할 수 있다.
스토리지 네트워크 매니저(114)는 데이터 자체의 하나 이상의 데이터 특성들을 기초로 데이터를 스토리지 블록들(110)에 할당할 수 있다. 데이터 특성들은 데이터 타입, 데이터를 위한 목적 리던던시, 데이터의 이용 빈도, 데이터에 대한 사용자 설정(preference), 데이터에 포함된 정보, 데이터의 스토리지 네트워크(102a)로의 추가 시간 및/또는 스토리지 에이전트(104), 데이터의 출처(origination) 등을 포함할 수 있으나, 이에 한정되지 않는다. 예를 들어, 데이터 타입은 데이터 파일이 사진 파일, 비디오 파일, 오디오 파일 또는 문서 파일인지 아닌지 여부에 관련될 수 있다. 일 실시예에서, 스토리지 네트워크 매니저(114)는 데이터 타입들을 기초로 특정 데이터 타입들의 데이터를 서로 다른 스토리지 블록들(110)에 할당할 수 있다. 예를 들어, 스토리지 네트워크 매니저(114)는 오디오 파일들을 오디오 파일들을 위한 저장소로 동작하는 특정 스토리지 블록(110)에 할당할 수 있다.
또한, 스토리지 네트워크 매니저(114)는 높은 이용 빈도를 갖는 데이터를 스토리지 네트워크(102a) 내의 많은 스토리지 블록들(110) 및 경우에 따라서는 모든 스토리지 블록들(110)에 할당되도록 지시할 수 있고, 이에 따라, 높은 이용 빈도를 갖는 데이터는 관련된 장치들(106)에 의해 쉽게 억세스될 수 있다. 마찬가지로, 일 실시예에서, 데이터는 그것과 관련된 목적 가용성(예를 들어, 데이터의 예상된 사용 빈도를 기초로)을 갖고, 스토리지 네트워크 매니저(114)는 목적 가용성을 획득하는데 있어 스토리지 에이전트들(104)의 롤(role)을 기초로 데이터를 스토리지 에이전트(104)에 할당할 수 있다. 예를 들어, 스토리지 네트워크 매니저(114)는 높은 수준의 목적 가용성을 획득하기 위하여, 높은 수준의 목적 가용성을 갖는 데이터가 다수의 스토리지 블록들(110) 또는 모든 스토리지 블록들(110)에 저장되도록 지시할 수 있다. 다른 예로서, 스토리지 네트워크 매니저(114)는 높은 수준의 목적 가용성을 갖는 데이터가 네트워크(112) 및/또는 스토리지 네트워크(102a)의 다른 장치들(106)과 상대적으로 일관된 연결을 갖는 장치(106)에 관련된 스토리지 블록(110)에 저장되도록 지시할 수 있다. 따라서, 장치(106)에서 데이터가 이용될 수 있는 가능성이 증가될 수 있다. 전술한 바와 같이, 일 실시예에서, 스토리지 네트워크 매니저(114)는 사용자 편의성을 기초로 데이터를 스토리지 블록들(110)에 할당할 수 있다. 예를 들어, 사용자가 특정 데이터를 스토리지 블록(110a) 상에 저장되는 것을 원하는 것을 나타내기 위하여, 사용자는 특정 데이터를 스토리지 블록(110a)에 "핀(pin)"할 수 있다. 따라서, 특정 데이터의 "피닝(pinning)"을 기초로, 스토리지 네트워크 매니저(114)는 특정 데이터를 스토리지 블록(110a)에 할당할 수 있다. 사용자 설정의 다른 예시는 특정 데이터 타입(예를 들어, 비디오들, 사진들, 음악 등), 최근에 생성된 데이터 및/또는 특정 스토리지 블록(110) 상에 저장되고 특정 장치(106)으로부터 유래되는 데이터를 명확하게 나타내는 것을 포함할 수 있다.
일 실시예에서, 스토리지 네트워크 매니저(114)는 장치 특성들 및/또는 스토리지 블록 특성들과 관련있는 데이터 특성들로써의 데이터 특성들을 기초로 데이터를 스토리지 블록들(110)에 할당할 수 있다. 예를 들어, 스토리지 네트워크 매니저(114)는 특정 사이즈의 데이터를 스토리지 블록(110a)에 할당하는지 여부를 결정하기 위하여, 스토리지 블록(110a) 상에서 이용가능한 스토리지 공간 및 데이터 사이즈를 확인할 수 있다.
다른 예로서, 장치(106a)의 장치 특성들은 장치(106a)상에서 사용자에 의해 많이 사용되는 음악 파일들을 나타낼 수 있고, 이에 따라, 스토리지 네트워크 매니저(114)는 음악과 관련된 파일 타입을 갖는 데이터를 스토리지 블록(110a)에 할당할 수 있다. 이러한 실시예 또는 다른 실시예에서, 데이터를 할당할 스토리지 블록들(110)의 결정 및/또는 데이터를 할당할 스토리지 블록들(110)의 수의 결정에 있어서, 스토리지 네트워크 매니저(114)는 데이터의 목적 리던던시 및 손실 가능성 및/또는 장치(106)의 신뢰성을 확인할 수 있다.
마찬가지로, 일 실시예에서, 스토리지 네트워크 매니저(114)는 데이터를 할당할 스토리지 블록들(110)의 결정 및/또는 스토리지 블록들(110)의 수의 결정에 있어서, 데이터의 목적 가용성 및 장치(106)의 연결성을 확인할 수 있다.
다른 예로서, 사용자는 종종 이전 시간에 생성된 데이터(오래된 데이터) 보다 최근에 생성된 데이터(새로운 데이터)를 억세스할 수 있다. 따라서, 스토리지 네트워크 매니저(114)는 사용자가 보다 자주 억세스할 수 있는 데이터 타입의 장치(106)와 관련된 스토리지 블록들(110)에 새로운 데이터를 할당할 수 있다.
이러한 실시예 또는 다른 실시예에서, 스토리지 네트워크 매니저(114)는 네트워크(112) 및/또는 다른 장치들(106)과의 높은 수준의 연결성을 갖는 장치들(106)과 관련된 스토리지 블록들(110)에 새로운 데이터를 할당할 수 있고, 이에 따라, 새로운 데이터는 장치들(106)에 저장되지 않은 경우에도, 장치들(106)에 의해 쉽게 억세스될 수 있다.
반대로, 스토리지 네트워크 매니저(114)는 백업 목적으로 저장할 수 있는 장치들(106)과 관련된 스토리지 블록들(110)에 오래된 데이터를 할당할 수 있으나, 이러한 데이터는 쉽게 억세스되지 못할 수 있다. 예를 들어, 스마트폰들, 태블릿들, 개인 컴퓨터들 등이 될 수 있는 장치들(106)에 관련된 스토리지 블록들(110)에 할당될 수 있고, 오래된 데이터는 제한된 연결성을 갖는 외장 하드 드라이브들, 클라우드 스토리지 서버들, 글레이셜 스토리지 장치들 등이 될 수 있는 장치들(106)에 관련된 스토리지 블록들(110)에 할당될 수 있다.
또한, 스토리지 네트워크 매니저(114)는 데이터가 스토리지 블록들(110)에 할당될 동안 데이터의 출처를 고려할 수 있다. 예를 들어, 사용자가 장치(106a)에서 유래된 데이터를 기초로 장치(106a)의 데이터를 억세스하고자 할 가능성이 높기 ‹š문에, 스토리지 네트워크 매니저(114)는 장치(106a)에 의해 생성된 데이터를 스토리지 블록(110a)에 할당할 수 있다.
일 실시예에서, 스토리지 네트워크 매니저(114)는 데이터 특성들, 장치 특성들 및/또는 스토리지 블록 특성들을 기초로 데이터를 랭크(rank)하고 할당할 수 있다. 예를 들어, 스토리지 네트워크 매니저(114)는 장치들의 데이터의 목적 가용성에 대한 데이터의 가용성 순위(availability rank)를 결정할 수 있다.
가용성 순위는 그들이 전술한 장치 및 스토리지 블록 특성들과 관련이 있음에 따라, 데이터를 위한 하나 이상의 데이터 특성들에 기초할 수 있다. 예로서, 특정 장치(106)에 대한 특정 데이터 파일의 가용성 순위는 특정 데이터 파일의 타입에 대한 특정 장치(106)의 이용, 특정 장치(106)에 대한 특정 데이터 파일의 타입 또는 특정 데이터 파일의 사용자 설정, 특정 데이터 파일에 대한 특정 장치(106)의 사용 빈도, 특정 데이터 파일의 출처, 데이터 파일이 생성된 시점 등에 기초할 수 있다.
서로 다른 스토리지 에이전트 특성들, 장치 특성들 및 데이터 특성들은 그들이 어떻게 순위(ranking)와 관련있는지에 대하여 서로 다른 가중치가 부여될 수 있다. 예를 들어, 특정 스토리지 블록(110)상의 특정 데이터 파일의 저장에 대한 사용자 설정은 장치의 위치보다 높은 가중치가 부여될 수 있다.
장치들(106) 에 관한 데이터 파일들을 위한 가용성 순위를 결정한 후, 스토리지 네트워크 매니저(114)는 스토리지 블록들(110)상의 이용가능한 스토리지 공간들 및 데이터 파일들 위한 가용성 순위들을 기초로 데이터 파일들을 장치들(106)의 관련된 스토리지 블록들(110)에 초기에 할당할 수 있다.
가용성 순위들에 기초한 초기 할당에 이어, 스토리지 네트워크 매니저(114)는 초기 할당이 데이터 파일들을 위한 목적 리던던시를 만족하는지 여부를 판단할 수 있다. 만약 목적 리던던시가 만족되지 않는다면, 스토리지 네트워크 매니저(114)는 목적 리던던시가 만족될 수 있도록 할당을 조정할 수 있고, 이는 가용성 순위들로 나타난 바와 같은 목적 가용성의 희생이 될 수 있다.
예를 들어, 가용성 순위를 기초로, 데이터 파일 "A"는 스토리지 블록(110a)상에서 최우선 순위가 될 수 있고, 뒤이어 데이터 파일 "B", "C", "D" 및 "E"의 순서가 될 수 있다. 스토리지 블록(110b)을 위하여, 데이터 파일 "C"가 가장 높은 순위가 될 수 있고, 뒤이어 데이터 파일 "E", "B", "A" 및 "D"의 순서가 될 수 있다. 또한, 스토리지 블록(110c)을 위하여, 데이터 파일 "A"가 가장 높은 순위가 될 수 있고, 뒤이어 데이터 파일 "C", "E", "D" 및 "B"의 순서가 될 수 있다.
스토리지 블록(110a)은 데이터 파일들 "A", "B", "C" 및 "D"를 저장하기에 충분한 스토리지 용량을 가질 수 있지만, "E"에 대해서는 그렇지 않다. 따라서 "E"가 스토리지 블록(110a)에 대한 가장 낮은 순위를 가지기 때문에, "E"는 초기에 스토리지 블록(110a)에 할당될 수 없다. 스토리지 블록(110b)은 데이터 파일들 "C", "E" 및 "B"를 저장하기에 충분한 스토리지 용량을 가질 수 있지만, "A" 및 "D"에 대해서는 그렇지 않다. 따라서 "A" 및 "D"가 스토리지 블록(110b)에 대한 가장 낮은 순위의 데이터 파일들이기 때문에, "A" 및 "D"는 초기에 스토리지 블록(110b)에 할당될 수 없다. 스토리지 블록(110c)은 데이터 파일들 "A", "C" 및 "E"를 저장하기에 충분한 스토리지 용량을 가질 수 있지만, "D" 및 "B"에 대해서는 그렇지 않다. 따라서 "D" 및 "B"가 스토리지 블록(110c)에 대한 가장 낮은 순위의 데이터 파일들이기 때문에, "A" 및 "D"는 초기에 스토리지 블록(110c)에 할당될 수 없다.
데이터 파일들 "A", "B", "C", "D" 및 "E"의 초기 할당에 이어, 스토리지 네트워크 컨트롤러(114)는 데이터 파일들 "A", "B", "C", "D" 및 "E"에 대한 목적 리던던시가 만족되었는지 여부를 결정할 수 있다. 이 예에서, 목적 리던던시는 데이터 파일들 "A", "B", "C", "D" 및 "E"가 적어도 두 개의 스토리지 블록들(110) 상에 저장되도록 할 수 있다. 그러나, 만약 이 예의 초기 할당에 따라야 할 경우, 데이터 파일 "D"는 오직 스토리지 블록(110a)에 저장될 수 있다. 따라서, 스토리지 네트워크 컨트롤러(114)는 데이터 파일 "D"를 위한 목적 리던던시를 획득하기 위하여 재할당(reallocation)이 수행되어야 하는지 여부를 결정할 수 있다.
예를 들어, 본 실시예에서, 데이터 파일"C"는 데이터 블록들(110a, 110b, 110c)에 초기 할당될 수 있다. 따라서, 데이터 파일 "C"의 스토리지 블록(110b) 또는 스토리지 블록(110c)로의 할당은 데이터 파일 "D"의 목적 리던던시를 만족하기 위하여, 데이터 파일 "D"의 할당으로 대체될 수 있다. 데이터 파일 "D"의 저장을 위한 스토리지 블록(110b) 또는 스토리지 블록(110c)의 선택은 데이터 파일 "D"의 목적 리던던시와 관련된 것으로써, 장치들(106b, 106c)의 장치 특성들 및/또는 스토리지 블록들(110b, 110c)의 임의의 다른 적용가능한 스토리지 블록 특성들 또는 스토리지 블록들(110b, 110c)상의 이용가능한 스토리지 공간, 스토리지 블록(110b) 및 스토리지 블록(110c)에 대한 데이터 파일 "D"의 상대적인 순위에 기초될 수 있다.
일 실시예에서, 스토리지 네트워크 매니저(114)는 또한 특정 스토리지 블록(110)의 하나 이상의 스토리지 블록 특성들, 특정 스토리지 블록(110)과 관련된 장치(106)의 장치 특성들에 기초하고, 그리고/또한 하나 이상의 데이터 특성들을 기초로 데이터의 주 저장소(primary repository) 또는 부 저장소(secondary repository)로 특정 스토리지 블록(110)을 지정할 수 있다. 특정 데이터의 주 저장소로 동작하는 스토리지 블록(110)은 특정 데이터의 "주" 사본들("primary" copies)을 저장할 수 있고, 이는 특정 데이터의 주 저장소로서 동작하는 스토리지 블록(110)이 특정 데이터를 위한 리던던시를 제공하는 것으로 신뢰될 수 있다는 것을 나타낼 수 있다. 반대로, 부 저장소로 동작하는 스토리지 블록(110)은 특정 데이터의 "부" 사본들("secondary" copies)을 저장할 수 있고, 이는 특정 데이터의 부 저장소로서 동작하는 스토리지 블록(110)이 특정 데이터를 위한 리던던시를 제공하는 것으로 신뢰될 수 없다는 것을 나타낼 수 있다. 스토리지 블록(110)은 다른 데이터의 부 사본들을 저장할 동안 일부 데이터의 주 사본들을 저장할 수 있다. 스토리지 블록(110)이 데이터를 위하여 주 저장소 또는 부 저장소로 동작하는지 여부는 일부 예시에서, 스토리지 블록(110) 또는 그와 관련된 장치(106)의 상태(health)에 의존할 수 있다.
또한 스토리지 에이전트들(104)는 스토리지 블록들(110)로부터 데이터를 제거하고 그리고/또는 스토리지 네트워크 매니저(114)는 스토리지 블록 특성들, 장치 특성들 및/또는 데이터 특성들을 기초로 스토리지 에이전트들(104)가 데이터를 제거하도록 지시할 수 있다. 예를 들어, 스토리지 블록(110)의 이용가능한 스토리지 공간이 스토리지의 용량 또는 스토리지의 용량에 근접할 경우, 스토리지 블록(110)은 보다 높은 순위를 갖는 다른 데이터를 위한 공간을 만들기 위해, 낮은 순위(예를 들어, 가용성 순위)를 갖는 데이터를 삭제할 수 있다.
다른 예로서, 일 실시예에서, 사용자가 특정 데이터의 영구적 손실이 가능하다는 통지를 받은 후에, 스토리지 네트워크 매니저(114) 또는 사용자로부터 명시적인 허가(express permission)가 없이 특정 스토리지 블록이 특정 데이터를 위한 주 저장소로 지정될 경우, 스토리지 에이전트(104)는 특정 스토리지 블록(110)로부터 특정 데이터를 삭제할 수 없다. 반대로, 일 실시예에서, 스토리지 네트워크 매니저(114)로부터 명령(instruction)또는 허가 없이 스토리지 에이전트들(104)에 의해 필요하다고 판단할 때 마다 스토리지 에이전트들(104)는 부 사본들로서 특정 스토리지 블록(110)에 저장된 데이터를 삭제할 수 있다. 또한, 일 실시예에서, 사용자는 특정 장치(106) 및/또는 스토리지 블록(110)로부터 데이터를 "언핀(unpin)"할 수 있고, 이에 따라, 특정 장치(106) 및/또는 스토리지 블록(110)상에서 데이터 유지의 우선순위(a priority of maintaining the data)가 낮아질 수 있다. 특정 장치(106) 및/또는 스토리지 블록(110) 상의 낮아진 데이터 유지의 우선순위는 언핀된 데이터(unpinned data)가 특정 장치(106) 및/또는 스토리지 블록(110)으로부터 제거되도록 할 수 있다.
일 실시예에서, 스토리지 네트워크 매니저(114)는 스토리지 네트워크(102a) 및 개별 장치들(106)에 걸친 데이터의 할당을 기초로 스토리지 네트워크(102a)의 전반적인 상태(overall health)를 결정할 수 있다. 예를 들어, 상대적으로 높은 손실 가능성 및/또는 상대적으로 낮은 건강 순위를 갖는 장치들(1006) 및 스토리지 블록들(110) 상에 데이터가 주 데이터로 저장된다면, 스토리지 네트워크(102a)의 상태는 데이터가 상대적으로 낮은 손실 가능성 및/또는 상대적으로 높은 건강 순위를 갖는 스토리지 블록들 장치들(106) 및 관련된 스토리지 블록들(110) 상에 주 데이터로 저장되는 경우와 비교할 때 낮은 것으로 간주될 수 있다. 다른 예로서, 스토리지 네트워크(102a)가 데이터를 위한 가용성 및/또는 목적 리던던시를 만족하지 못하는 경우, 스토리지 네트워크(102a)의 상태는 스토리지 네트워크(102a)가 데이터를 위한 가용성 및/또는 목적 리던던시를 만족하는 경우와 비교할 때, 낮은 것으로 간주될 수 있다.
스토리지 네트워크 매니저(114)는 지속적으로 장치 타입들, 장치 특성들, 장치 상태, 장치 특성들 등을 모니터링할 수 있고, 모니터링에 의해 나타나는 변화들을 기초로 전술한 방식으로 할당을 수행할 수 있다. 따라서, 스토리지 네트워크 매니저(114)는 스토리지 에이전트들(104)를 위한 할당이 변하는 동적 할당(dynamic allocation)을 수행할 수 있다. 또한, 하나의 스토리지 에이전트(104)와 관련된 변화들은 다른 스토리지 에이전트(104)와 관련된 데이터의 할당에 영향을 미칠 수 있다.
예를 들어, 일 실시예에서, 특정 데이터 파일을 위한 주 저장소로 동작하는 스토리지 에이전트(104)를 갖는 특정 장치(106)는 고장(fail)날 수 있고, 이에 따라, 특정 데이터 파일을 위한 목적 리던던시가 만족되지 않을 수 있다. 따라서, 스토리지 네트워크 매니저(114)는 특정 데이터 파일을 다른 스토리지 에이전트(104)에 할당할 수 있고, 특정 데이터 파일의 목적 리던던시 및 특정 장치(106)의 고장(failure)을 기초로 다른 스토리지 에이전트(104)를 특정 데이터 파일을 위한 주 저장소로 지정할 수 있다.
다른 예로서, 특정 스토리지 에이전트(104)는 이전보다 스토리지 네트워크(102a)와의 연결성이 훨씬 더 제한되는 장치(106)와 관련된 수 있다. 스토리지 네트워크 매니저(114)는 리던던시 및/또는 가용성만큼 특정 스토리지 에이전트(104)에 의존하지 않을 수 있고, 따라서, 특정 스토리지 에이전트(104)상에 저장된 데이터를 할당할 수 있다.
전술한 바와 같이, 스토리지 네트워크 매니저(114)는 또한 특정 데이터를 특정 데이터가 할당된 스토리지 블록들(110)에 분배하기 위한 분배 전략을 결정할 수 있다. 도 1b는 본 발명의 적어도 하나의 일 실시예에 따라, 데이터를 스토리지 블록들(110)에 분배하기 위한 분배 전략을 결정하는 스토리지 시스템(100b)의 일 예를 도시한다.
스토리지 시스템(100b)는 도 1a의 스토리지 시스템(100a)의 일 예가 확장될 수 있다. 예를 들어, 스토리지 시스템(100b)는 네트워크(112), 스토리지 네트워크 매니저(114) 및 관련된 스토리지 에이전트들(104a 내지 104c) 및 스토리지 블록들(110a 내지 110c)을 갖는 장치들(106a 내지 106c)을 포함할 수 있다.
그러나, 스토리지 시스템(100b)의 스토리지 네트워크(102b)가 스토리지 시스템(100a)의 스토리지 네트워크(102a)보다 장치들(106), 관련된 스토리지 에이전트들(104) 및 스토리지 블록들(110)을 보다 많이 갖는 것으로 설명될 수 있는 점에서 스토리지 시스템(100b)는 스토리지 시스템(100a)는와 다를 수 있다. 예를 들어, 스토리지 네트워크(102b)는 관련된 스토리지 에이전트들(104d, 104e, 104f) 각각 및 스토리지 블록들(110d, 110e, 110f) 각각을 갖는 장치들(106d, 106e, 106f)을 포함하는 것으로 설명될 수 있고, 이는 도 1a의 스토리지 네트워크(102a)에서 설명되지 못한다.
도 1b에서는 장치들(106a 내지 106f)은 모든 구성요소들(예를 들어, 컨트롤러, 프로세서, 메모리 및 통신 모듈)을 갖는 것으로 도시되지 않았지만, 그럼에도 불구하고, 이러한 구성요소들은 장치들(106a 내지 106f)에 포함될 수 있고, 이는 단지 도 1b에 도시되지 않을 뿐이다. 또한, 스토리지 네트워크(102a)에 대한 스토리지 네트워크(102b)의 확장은 분배 전략의 결정을 설명하기에 용이할 수 있고, 이는 스토리지 네트워크가 스토리지 네트워크(102b)와 동일한 개수의 장치들(106) 및 스토리지 에이전트들(104)만을 갖는 것으로 한정되지 않는다.
스토리지 네트워크 매니저(114)는 스토리지 블록들(110), 장치들(106), 및/또는 스토리지 블록들(110)에 할당된 데이터의 데이터 특성들을 기초로 할당된 데이터를 스토리지 블록들(110)에 분배하기 위한 분배 전략들을 결정할 수 있다. 이러한 실시예 또는 다른 실시예에서, 스토리지 네트워크 매니저(114)는 데이터 특성들을 기초로, 그리고/또는 특정 데이터가 할당된 다른 스토리지 블록들(110)뿐만 아니라 다른 데이터의 할당을 기초로 특정 데이터를 위한 분배 전략을 결정할 수 있다.
예를 들어, 일 실시예에서, 스토리지 블록(110a)은 스토리지 블록(110f)상에 저장하기 위해 할당된 저장된 데이터(121)를 포함할 수 있고, 이에 따라, 데이터(121)에 대하여 스토리지 블록(110f)은 타겟 스토리지 블록(target storage block)이 될 수 있고, 스토리지 블록(110a)은 호스트 스토리지 블록(host storage block)이 될 수 있다.
스토리지 네트워크 매니저(114)는 장치들(106a 내지 106f) 및/또는 스토리지 블록들(110a 내지 110f)와 관련된 하나 이상의 특성들을 기초로, 데이터(121)를 스토리지 블록(110a)로부터 스토리지 블록(110f)에 분배하기 위한 분배 전략을 결정할 수 있다. 이러한 실시예 또는 다른 실시예에서, 하나 이상의 다른 스토리지 블록들(110)은 데이터(121)의 타겟 스토리지 블록들 또는 호스트 스토리지 블록들이 될 수 있다. 일단 분배 전략이 결정되면, 하나 이상의 스토리지 에이전트들(104)는 분배 전략을 실행할 수 있다.
일 실시예에서, 분배 전략을 결정하기 위하여 스토리지 네트워크 매니저(114)에 의해 사용되는 특성들은 스토리지 네트워크(102b)(예를 들어, 장치들(106a 내지 106f)의 서로간의 연결성)에 대한 장치들(106a 내지 106f)의 연결이 될 수 있다.
예를 들어, 장치들(106a, 106f)은 서로간에 통신을 하지 않을 수 있지만, 장치(106b)는 장치들(106a, 106f) 모두와 통신을 할 수 있다. 예를 들어, 장치들(106a, 106b)이(예를 들어, 무선 또는 유선 연결을 통하여) 네트워크(112)에 모두 연결되고, 장치(106f)가 네트워크(112)에 연결되지 못하고, 장치(106b)에 연결되는 상황이 발생될 수 있다. 이와 같은 예에서, 스토리지 네트워크 매니저(114)는, 스토리지 에이전트(104a)가 데이터(121) 또는 데이터(121)의 사본을 스토리지 에이전트(104b)에 중계하고, 이후 데이터(121)를 스토리지 에이전트(104f)에 중계하고, 데이터(121)가 스토리지 블록(110f)에 저장되는 것을 지시하는, 스토리지 블록(110a)에서 스토리지 블록(110f)로의 스토리지 전략을 결정할 수 있다.
분배 전략을 결정하기 위하여 스토리지 네트워크 매니저(114)에 의해 사용될 수 있는 다른 특성들은 서로에 대한 장치들(106a 내지 106f)간의 연결 타입(types of connections)이 될 수 있다. 예를 들어, 장치들(106a, 106f)는 네트워크(112)를 통하여 상호간에 연결될 수 있다. 또한, 장치(106f)가 셀룰러 네트워크 연결을 통하여 네트워크(112)에 연결되는 동안, 장치(106a)는 비-셀룰러(non-cellular) 무선 인터넷 연결(예를 들어, Wi-Fi)을 통해 네트워크(112)와 연결될 수 있다.
그러므로, 네트워크(112)를 통한 장치(106a)의 스토리지 블록(110a)로부터 장치(106f)의 스토리지 블록(110f)로의 데이터(121)의 분배는 관련된 셀룰러 데이터 플랜(cellular data plan)에서의 데이터를 사용할 수 있고, 이는, 비-셀룰러 연결이 사용되는 경우에 비하여 보다 높은 비용을 가질 수 있다.
그러나, 장치(106b)는 장치(106f)와 직접적으로 연결될 수 있고, 또한, 비-셀룰러 무선 인터넷 연결을 통해 네트워크(112)와 연결될 수 있다. 따라서, 일 실시예에서, 스토리지 네트워크 매니저(114)는 스토리지 블록(110f)상의 저장을 위하여, 데이터(121)가 스토리지 에이전트(104a)에 의해 스토리지 블록(110a)으로부터 스토리지 에이전트(104b)로 중계되고, 이후, 스토리지 에이전트(104b)로부터 스토리지 에이전트(104f)로 중계되는 분배 전략을 결정할 수 있다. 이에 따라, 전송 비용은 네트워크(112)를 통한 장치(106a)로부터 장치(106f)로의 전송이 사용되는 경우보다 적을 수 있다.
다른 예로서, 스토리지 네트워크 매니저(114)는 장치들(106a, 106f)가 상호간 및 장치(106b)에 연결되고(예를 들어, 직접 또는 네트워크(112)를 통하여), 장치들(106a, 106f) 각각의 장치(106b)와의 연결의 대역폭이 장치들(106a, 106f) 사이의 연결의 대역폭보다 큰 경우, 유사한 분배 전략을 결정할 수 있다.
분배 전략을 결정하기 위한 스토리지 네트워크 매니저(114)에 의해 사용되는 다른 장치 특성은 장치들(106a 내지106f)의 연결 빈도일 수 있다. 예를 들어, 장치(106e)는 장치(106e)가 장치(106a)에 연결되는 것 보다 자주 장치(106f)에 연결될 수 있다. 이 경우 및 다른 실시예에서, 장치(106f)가 스토리지 네트워크(102b)의 임의의 다른 장치(106)에 연결되지 않고, 또한 장치(106a)에 연결되고, 장치(106a) 및 장치(106e)가 서로 연결되는 경우, 스토리지 네트워크 매니저(114)는 스토리지 에이전트(104a)가 데이터(121)를 스토리지 에이전트(104e)에 분배하는 분배 전략을 결정할 수 있다. 이후, 분배 전략은 장치들(106e, 106f)가 연결될 경우, 스토리지 에이전트(104e)가 데이터(121)를 스토리지 에이전트(104f)에 분배하는 것을 지시할 수 있고, 이는 장치(106a)가 장치(106f)에 연결되는 것 보다 빠를 수 있다.
일 실시예에서, 장치들(106) 사이의 연결 빈도 및/또는 연결 품질은 장치들(106)이 얼마나 자주 서로 동일한 주변에 있는지와 관련될 수 있다. 따라서, 일 실시예에서, 스토리지 네트워크 매니저(114)는 분배 전략을 결정할 경우의 장치 특성으로 서로에 대한 장치들(106)의 위치를 고려할 수 있다.
일 실시예에서, 분배 전략은 장치들(106) 및 그들의 대응하는 스토리지 블록들(110)에 의해 제공되는 리던던시 또는 가용성뿐만 아니라, 장치들(106)의 일반적인 연결성과 같은 특성에 기초될 수 있다. 예를 들어, 스토리지 블록(110a)는 그 위에 저장된 데이터(121) 그 이외의 다른 데이터를 가질 수 있고, 다른 데이터는 다른 스토리지 블록들(110)상의 저장을 위해 할당될 수 있다.
또한, 스토리지 에이전트(104a)에 의해 스토리지 블록(110a)로부터 다른 스토리지 에이전트들(104) 및 스토리지 블록들(110)로 분배될 수 있는 데이터의 양은 스토리지 네트워크(102b)를 갖는 장치(106a)의 연결성으로 인하여(예를 들어, 그것의 대역폭으로 인한) 임의의 시간에서 제한될 수 있다. 따라서, 일 실시예에서, 스토리지 네트워크 매니저(114)는 스토리지 블록(110a)에 저장된 다른 데이터에 대한 다른 타겟 스토리지 블록의 할당 순위(assigned rank)와 비교한 데이터(121)에 대한 스토리지 블록(110f)의 할당 순위에 따라서 데이터(121) 및 스토리지 블록(110a)에 저장된 다른 데이터의 분배 전략을 결정할 수 있다.
예로서, 스토리지 블록(110a)에 저장된 다른 데이터는 스토리지 블록(110b)에 할당될 수 있고, 스토리지 블록(110a)에 저장된 데이터(121)는 스토리지 블록(110f)에 할당될 수 있다. 또한, 연결 제한(connectivity limitations)으로 인하여, 스토리지 에이전트(104a)는 데이터(121)를 스토리지 에이전트(104f) 및 스토리지 블록(110f)에 동시에 전송할 수 있는 반면, 다른 데이터를 스토리지 에이전트(104b) 및 스토리지 블록(110b)에 전송할 수 없다. 또한, 다른 데이터는 스토리지 블록(110f)상의 저장을 위한 데이터(121)보다 스토리지 블록(110b) 상의 저장을 위한 높은 순위를 가질 수 있다. 띠라서, 분배 전략은 스토리지 블록(110f)으로의 데이터(121)의 분배 전에 스토리지 블록(110b)으로의 다른 데이터의 분배를 요청할 수 있다.
스토리지 네트워크 매니저(114)는 위에서 열거된 장치 및 스토리지 블록 특성들뿐만 아니라 다른 장치들 상의 데이터의 할당을 기초로 분배 전략을 결정할 수 있다. 예를 들어, 스토리지 블록(110a)은 데이터(121)을 포함하여, 많은 수의 타겟 스토리지 블록들을 위해 할당되어 저장되는 상대적으로 많은 양의 데이터를 포함할 수 있다. 또한, 스토리지 블록(110d)은 데이터(121)을 포함하여(스토리지 블록(110d) 상에 저장되는 것으로 명확하게는 설명되지 않음), 상대적으로 적은 수의 타겟 스토리지 블록들을 위해 할당되어 저장되는 상대적으로 적은 양의 데이터를 포함할 수 있다. 따라서, 스토리지 네트워크 매니저(114)는
데이터(121)가 스토리지 블록(110a) 대신에 스토리지 블록(110d)로부터 스토리지 블록(110f)로 분배되는 분배 전략을 결정할 수 있고, 이에 따라, 스토리지 에이전트(104a)는 데이터(121)를 분배하지 않고, 스토리지 블록(110a)상에 저장된 다른 데이터를 분배할 수 있다.
마찬가지로, 일 실시예에서, 데이터(121)는 타겟 스토리지 블록들로써 스토리지 블록(110e) 및 스토리지 블록(110f)에 할당될 수 있으나, 초기에는 오직 스토리지 블록(110a)에 저장될 수 있다. 또한, 스토리지 블록(110a)은 많은 수의 타겟 스토리지 블록들 각각으로 할당되어 저장된 상대적으로 많은 양의 데이터를 가질 수 있다. 따라서, 스토리지 네트워크 매니저(114)는, 데이터(121)가 스토리지 블록(110a)에서 스토리지 에이전트(104e)(스토리지 블록(110e) 상에 데이터(121)를 저장하는)로 분배되고 이후 스토리지 에이전트(104e)에서 스토리지 에이전트(104f)(스토리지 블록(110f) 상에 데이터(121)를 저장하는)로 분배되거나, 스토리지 블록(110a)에서 스토리지 에이전트(104f)(스토리지 블록(110f) 상에 데이터(121)를 저장하는)로 분배되고, 스토리지 에이전트(104f)에서 스토리지 에이전트(104e)(스토리지 블록(110e) 상에 데이터(121)를 저장하는)로 분배되는 분배 전략을 결정할 수 있다.
따라서, 스토리지 에이전트(104a)는 다른 데이터를 분배하기 전 데이터(121)를 여러 번 분배하는 것 대신에, 데이터(121)를 한번 분배한 후 다른 데이터를 다른 스토리지 블록들에 분배할 수 있다.
게다가, 스토리지 네트워크 매니저(114)는 장치들(106)의 전력 상태(power status)를 기초로 분배 전략을 결정할 수 있다. 전력 상태는 특정 장치(106)가 플러그인 되어 있는지 또는 배터리 전력을 소모하고 있는지 여부를 나타낼 수 있다.
또한, 전력 상태는 배터리 내에서 얼마나 많은 전하가 유지되고 있는지를 나타낼 수 있다. 일 실시예에서, 스토리지 네트워크 매니저(114)는 배터리 전력의 보존에 도움이 되기 위하여, 플러그 인 되는 장치들(106)이 배터리 전력을 소모하는 장치들보다 데이터의 전송에 우선순위를 갖는 분배 전력을 결정할 수 있다. 또한, 이 경우 또는 일 실시예에서, 다른 장치들(106) 보다 배터리 수명이 긴 장치들(106)은 배터리 수명이 짧은 다른 장치들보다 데이터 전송에 우선순위를 가질 수 있다.
또한, 스토리지 네트워크 매니저(114)는 분배된 데이터의 데이터 특성들을 기초로 분배 전략을 결정할 수 있다. 예를 들어, 스토리지 네트워크 매니저(114)는 다른 데이터 타입보다 분배 우선 순위가 높은 특정 데이터 타입을 결정할 수 있다. 따라서, 스토리지 네트워크 매니저(114)는 분배 전략을 개발할 수 있고, 이에 따라, 보다 높은 우선 순위의 데이터 타입을 갖는 데이터는 타겟 스토리지 블록에 낮은 우선 순위의 데이터 타입의 데이터 전에 분배될 수 있다.
다른 예로서, 스토리지 네트워크 매니저(114)는 보다 높은 목적 리던던시 및/또는 가용성을 갖는 데이터가 그것의 타겟 스토리지 블록에 보다 낮은 목적 리던던시 및/또는 가용성을 갖는 데이터 전에 분배되는 분배 전략을 개발할 수 있다. 예를 들어, 스토리지 네트워크 매니저(114)는 타겟 스토리지 블록들 상에 주 사본들으로써 저장된 데이터 파일들의 분배를 그들의 부 타겟 스토리지 블록들 상에 부 사본으로써 저장된 데이터 파일의 분배보다 우선적으로 수행할 수 있다.
또한, 일 실시예에서, 스토리지 네트워크 매니저(114)는 데이터 특성들 및 그들이 어떻게 데이터 특성과 관련될 수 있는지를 기초로 분배 전략을 결정할 수 있다.
예를 들어, 일 실시예에서, 데이터(121)는 스토리지 에이전트들(104e, 104f) 상에 주 사본으로써 저장을 위해 할당될 수 있다. 또한, 장치(106e)는 스마트폰일 수 있고, 장치(106f)는 데스크탑 컴퓨터일 수 있다. 따라서, 스토리지 네트워크 매니저(114)는 장치(106e)보다 장치(106f)가 보다 신뢰성이 높으므로, 데이터(121)가 스토리지 블록(110e)보다 스토리지 블록(110f)으로 우선적으로 분배되는 분배 전략을 결정할 수 있다.
다른 실시예로서, 데이터(121)는 데이터 블록들(110e, 110f)에 할당되는 음악 파일일 수 있다. 스토리지 네트워크 매니저(114)는장치(106f)보다 장치(106e)가 보다 자주 음악에 억세스하는 것을 확인할 수 있다. 따라서, 일 실시예에서, 스토리지 네트워크 매니저(114)는 데이터 타입(예를 들어, 음악 파일) 및 장치 이용(예를 들어, 자주 음악에 억세스하는 것)을 기초로 분배 전략을 결정할 수 있고, 이에 따라, 장치(106f)와 비교하여 장치(106e)가 음악 청취에 많이 사용됨을 이유로, 데이터(121)의 스토리지 블록(110e)로의 분배는 스토리지 블록(110f)로의 분배보다 우선될 수 있다.
또한, 일 실시예에서, 스토리지 네트워크 매니저(114)는 사용자 설정을 기초로 분배 전략을 결정할 수 있다. 예를 들어, 일 실시예에서, 사용자는 스토리지 블록(110f) 상에 저장된 데이터(121)를 원한다는 것을 나타낼 수 있다. 따라서, 스토리지 네트워크 매니저(114)는 데이터(121)를 스토리지 에이전트 블록(110f)에 분배하는 것을, 다른 스토리지 에이전트(110)가 데이터(121)를 위해 타겟 스토리지 에이전트가 되는 것 보다 우선으로 하는 분배 전략을 개발할 수 있다.
또한, 일 실시예에서, 스토리지 네트워크 매니저(114)는 데이터(121)의 사이즈를 기초로 데이터(121)를 위한 분배 전략을 결정할 수 있다. 예를 들어, 데이터(121)가 상대적으로 크고 상대적으로 많은 양의 대역폭을 이용하는 경우, 스토리지 네트워크 매니저(114)는 늦은 밤과 같이, 통신 자원들의 상대적으로 적게 사용되는 시간에서 데이터(121)의 분배를 계획하는, 데이터(121)를 위한 분배 전력을 결정할 수 있다. 이러한 실시예 또는 다른 실시예에서, 스토리지 네트워크 매니저(114)는 데이터(121)가 스토리지 네트워크(102b)에 부가되는 때의 시간을 기초로 분배 전략을 결정할 수 있다. 예를 들어, 데이터(121)가 상대적으로 새로운 데이터인 경우, 데이터(121)는 데이터(121)가 상대적으로 오래된 데이터인 경우보다 많이 억세스될 가능성이 있다. 따라서, 분배 전략은 새로운 데이터가 아닌 오래된 데이터보다 데이터(121)의 분배를 우선할 수 있다.
수정, 추가 또는 누락은 본 발명의 범위에서 벗어나지 않고, 스토리지 시스템들(100a, 100b)에 의해 발생될 수 있다. 예를 들어, 스토리지 시스템들(100a 및 100b)는 임의의 수의 장치들(106), 스토리지 블록들(110) 및/또는 스토리지 에이전트들(104)를 포함할 수 있다. 또한, 장치들(106) 내의 구성요소들의 위치는 설명을 목적으로 한 것이고, 이에 한정되지 않는다.
또한, 데이터의 할당 및 분배가 스토리지 네트워크(102a, 102b)에 관하여 스토리지 네트워크 매니저(114)에 의해 수행되는 것으로 설명되는 것에 불구하고, 데이터의 할당 및/또는 분배에 대한 원칙들(principles) 및 교시들(teachings)은 임의의 적용가능한 스토리지 네트워크 및/또는 스토리지 시스템의 임의의 적절한 구성요소에 의해 적용될 수 있다.
도 2는 본 명세서에서 설명되는 적어도 하나의 실시예에 따른, 스토리지 네트워크의 스토리지 블록에 데이터를 할당하는 예시적인 방법(200)의 동작 흐름도이다. 일 실시예에서, 방법(200)의 하나 이상의 단계들은 스토리지 네트워크 매니저(114), 스토리지 에이전트들(104) 또는 장치들(106) 과 같은 도 1a 및 도 1b의 스토리지 시스템들(100a 및/또는 100b)의 하나 이상의 구성요소들에 의해 구현될 수 있다. 도시된 개별 블록들에 불구하고, 원하는 구현 형태에 의존하여, 다양한 블록들이 추가적인 블록들로 분할될 수도 있고, 더 적은 블록들로 결합되거나, 제거될 수 있다.
방법(200)은 스토리지 네트워크에 포함된 스토리지 블록과 관련된 다수의 특성들이 결정되는 블록(202)에서 시작할 수 있다. 다수의 특성은 스토리지 블록의 스토리지 용량, 스토리지 블록의 이용가능한 스토리지 공간, 스토리지 블록에 저장된 데이터의 손실 가능성, 스토리지 네트워크에 대한 스토리지 블록의 가용성 및 스토리지 블록의 이용성을 포함할 수 있다.
블록(204)에서, 데이터는 다수의 특성을 기초로 스토리지 블록에 할당될 수 있다. 일 실시예에서, 할당은 스토리지 블록의 타입, 스토리지 블록의 상태, 스토리지 블록과 관련된 장치의 장치 타입, 장치의 사용, 장치의 손실 가능성, 장치의 상태, 장치의 위치, 장치의 스토리지 네트워크와의 연결, 장치의 스토리지 네트워크와의 연결 비용 및 장치의 신뢰성에 기초할 수 있다.
따라서, 방법(200)은 스토리지 블록들과 관련된 특성들을 기초로 데이터를 스토리지 네트워크의 하나 이상의 스토리지 블록들에 할당하기 위해 수행될 수 있다. 이러한 방식에서의 데이터의 할당은 기존의 데이터 스토리지 스킴들보다 스토리지 네트워크 내의 리던던시 및 사용자 경험을 향상시킬 수 있다.
해당 분야의 통상의 기술자에게, 방법(200) 및 본 명세서에서 기술되는 프로세스들 및 방법들을 위한, 프로세스들 및 방법들에서 수행되는 기능들이 서로 다른 순서로 구현될 수 있음은 자명할 수 있다. 또한, 설명된 단계 및 동작들은 오직 예시로서 제공되고, 단계들 및 동작들의 일부는 선택적으로, 기술된 실시예들의 본질을 손상시키지 않으면서, 추가적인 단계들 및 동작들로 확장되거나, 더 적은 단계들 및 동작들로 결합될 수 있다. 예를 들어, 일 실시예에서, 방법들(200)은 다수의 특성들을 기초로 데이터를 위한 스토리지 블록의 리던던시 롤(redundancy role)을 결정하는 것 및 데이터의 목적 리던던시를 결정하는 것과 관련된 단계들을 더 포함할 수 있다. 이 경우 및 다른 실시예에서, 방법(200)은 스토리지 에이전트의 리던던시 롤을 기초로 데이터를 스토리지 블록에 할당하는 단계를 더 포함할 수 있다.
또한, 방법(200)은 다수의 특성을 기초로 데이터의 주 저장소 또는 부 저장소로 스토리지 에이전트를 지정하는 것과 관련있는 단계를 더 포함할 수 있다. 방법(200)은 또한 데이터의 데이터 특성을 기초로 스토리지 블록상의 저장을 위한 데이터를 할당하는 것과 관련있는 단계를 더 포함할 수 있다. 데이터 특성은 임의의 하나 이상의 데이터 타입, 데이터의 사용 빈도, 데이터를 위한 목적 리던던시, 데이터의 사이즈, 데이터의 순위, 데이터에 포함된 정보, 데이터에 대한 사용자 설정, 스토리지 네트워크 및/또는 스토리지 에이전트로의 데이터 추가 시간, 데이터의 출처 등을 포함할 수 있다. 일 실시예에서, 할당은 어떻게 데이터 특성이 다수의 특성 중 하나 이상과 관련있는지에 기초할 수 있다.
도 3은 본 명세서에서 설명되는 적어도 하나의 실시예에 따른, 스토리지 네트워크의 스토리지 블록상에 데이터를 저장하는 예시적인 방법(300)의 동작 흐름도이다. 일 실시예에서, 방법(300)의 하나 이상의 단계들은 스토리지 네트워크 매니저(114), 스토리지 에이전트들(104) 또는 장치들(106) 과 같은 도 1a 및 도 1b의 스토리지 시스템들(100a 및/또는 100b)의 하나 이상의 구성요소들에 의해 구현될 수 있다. 도시된 개별 블록들에 불구하고, 원하는 구현 형태에 의존하여, 다양한 블록들이 추가적인 블록들로 분할될 수도 있고, 더 적은 블록들로 결합되거나, 제거될 수 있다.
방법(300)은 스토리지 네트워크에 포함된 스토리지 블록과 관련된 다수의 특성은 도 1a 및 도 1b의 스토리지 네트워크 매니저(114)와 같은 스토리지 네트워크 매니저와 통신되는 블록(302)에서 시작할 수 있다. 다수의 특성은 스토리지 블록의 스토리지 용량, 스토리지 블록의 이용가능한 스토리지 공간, 스토리지 블록에 저장된 데이터의 손실 가능성, 스토리지 네트워크에 대한 스토리지 블록의 가용성 및 스토리지 블록의 이용성을 포함할 수 있다.
블록(304)에서, 스토리지 블록상의 스토리지 데이터를 위한 스토리지 명령(storage instruction)들은 스토리지 네트워크 컨트롤러로부터 수신될 수 있다. 스토리지 명령(storage command)은 다수의 특성에 기초될 수 있다. 블록(306)에서, 데이터는 스토리지 명령에 응답하여 스토리지 블록상에 저장될 수 있다. 따라서, 방법(300)은 스토리지 블록들 및 그들과 관련된 장치들과 관련된 특성들을 기초로 스토리지 네트워크의 스토리지 블록상에 데이터를 저장하기 위해 수행될 수 있다. 이러한 방식에서의 데이터의 할당은 기존의 데이터 스토리지 스킴들보다 스토리지 네트워크 내의 리던던시 및 사용자 경험을 향상시킬 수 있다.
해당 분야의 통상의 기술자에게, 방법(300) 및 본 명세서에서 기술되는 프로세스들 및 방법들을 위한, 프로세스들 및 방법들에서 수행되는 기능들이 서로 다른 순서로 구현될 수 있음은 자명할 수 있다. 또한, 설명된 단계 및 동작들은 오직 예시로서 제공되고, 단계들 및 동작들의 일부는 선택적으로, 기술된 실시예들의 본질을 손상시키지 않으면서, 추가적인 단계들 및 동작들로 확장되거나, 더 적은 단계들 및 동작들로 결합될 수 있다.
일 실시예에서, 예를 들어, 방법(300)은 데이터의 데이터 특성을 기초로 스토리지 블록 상에 데이터를 저장하는 것과 관련있는 단계를 포함할 수 있다. 데이터 특성은 임의의 하나 이상의 데이터 타입, 데이터의 사용 빈도, 데이터를 위한 목적 리던던시, 데이터의 사이즈, 데이터의 순위, 데이터에 포함된 정보, 데이터에 대한 사용자 설정, 스토리지 네트워크 및/또는 스토리지 에이전트로의 데이터 추가 시간, 데이터의 출처 등을 포함할 수 있다.
도 4는 본 명세서에서 설명되는 적어도 하나의 실시예에 따른, 스토리지 네트워크의 스토리지 블록에 데이터를 분배하기 위한 분배 전략을 결정하는 예시적인 방법(400)의 동작 흐름도이다. 일 실시예에서, 방법(400)의 하나 이상의 단계들은 스토리지 네트워크 매니저(114), 스토리지 에이전트들(104) 또는 장치들(106) 과 같은 도 1a 및 도 1b의 스토리지 시스템들(100a 및/또는 100b)의 하나 이상의 구성요소들에 의해 구현될 수 있다. 도시된 개별 블록들에 불구하고, 원하는 구현 형태에 의존하여, 다양한 블록들이 추가적인 블록들로 분할될 수도 있고, 더 적은 블록들로 결합되거나, 제거될 수 있다.
방법(400)은 호스트 스토리지 블록 상에 저장된 데이터가 타겟 스토리지 블록 상의 저장을 위하여 할당되는 블록(402)에서 시작할 수 있다. 호스트 스토리지 블록 및 타겟 스토리지 블록은 스토리지 네트워크에 포함될 수 있고, 스토리지 네트워크는 또한 도 1a 및 도 1b의 스토리지 네트워크들(102a, 102b)와 같은, 하나 이상의 다른 스토리지 블록들을 포함할 수 있다. 일 실시예에서, 할당은 전술된 할당에 따라 수행될 수 있다.
예를 들어, 일 실시예에서, 할당은 타겟 스토리지 블록과 관련된 다수의 특성들에 기초하여 수행될 수 있고, 다수의 특성은 스토리지 블록의 스토리지 용량, 스토리지 블록의 이용가능한 스토리지 공간, 스토리지 블록에 저장된 데이터의 손실 가능성, 스토리지 네트워크에 대한 스토리지 블록의 가용성 및 스토리지 블록의 이용성을 포함할 수 있다. 이러한 실시예 또는 다른 실시예에서, 할당은 데이터의 데이터 특성에 기초될 수 있다.
블록(404)에서, 다른 스토리지 에이전트들 및/또는 다른 스토리지 에이전트들과 관련된 하나 이상의 장치들의 특성들이 결정될 수 있다. 특성들은 하나 이상의 장치들과 스토리지 네트워크와의 연결성, 하나 이상의 장치들의 전력 상태, 장치들의 이용성, 하나 이상의 장치들의 위치를 포함할 수 있다. 전술한 바와 같이, 장치들의 연결성은 연결 비용, 연결 빈도, 연결 대역폭 및 연결 타입(type of connection)을 포함할 수 있다.
블록(406)에서, 데이터를 호스트 스토리지 블록에서 타겟 스토리지 블록으로 분배하는 분배 전략은 블록(404)에서 결정된 특성들을 기초로 결정될 수 있다. 일 실시예에서, 분배 전략은 데이터에 대한 타겟 스토리지 블록의 순위에 기초될 수 있다. 이 경우, 또는 다른 실시예에서, 분배 전략은 다른 스토리지 블록들에 대한 데이터의 할당 및/또는 호스트 스토리지 블록에 저장된 다른 데이터의 할당을 기초로 결정될 수 있다.
또한, 일 실시예에서, 분배 전략은 데이터 타입, 데이터의 목적 리던던시, 데이터의 목적 가용성, 데이터의 사이즈, 데이터의 스토리지 네트워크로의 데이터 추가 시간, 데이터에 대한 사용자 선호도와 같은 데이터의 하나 이상의 데이터 특성을 기초로 결정될 수 있다. 이러한 실시예 또는 다른 실시예에서, 분배 전략은 어떻게 데이터 특성들이 다른 스토리지 블록들, 타겟 스토리지 블록 및/또는 호스트 스토리지 블록과 관련된 특성과 관련있는지에 기초하여 결정될 수 있다.
따라서, 방법(400)은 데이터를 위한 분배 전력을 결정하기 위해 수행될 수 있다. 이러한 방식에서의 데이터의 분배는 기존의 데이터 스토리지 스킴들보다 스토리지 네트워크 내의 리던던시 및 사용자 경험을 향상시킬 수 있다.
해당 분야의 통상의 기술자에게, 방법(400) 및 본 명세서에서 기술되는 프로세스들 및 방법들을 위한, 프로세스들 및 방법들에서 수행되는 기능들이 서로 다른 순서로 구현될 수 있음은 자명할 수 있다. 또한, 설명된 단계 및 동작들은 오직 예시로서 제공되고, 단계들 및 동작들의 일부는 선택적으로, 기술된 실시예들의 본질을 손상시키지 않으면서, 추가적인 단계들 및 동작들로 확장되거나, 더 적은 단계들 및 동작들로 결합될 수 있다.
전술한 바와 같이, 본 명세서에서 설명되는 실시예들은 아래에서 상세하게 논의되는 다양한 컴퓨터 하드웨어 또는 소프트웨어 모듈들을 포함하는 특수 목적 또는 범용 컴퓨터(예를 들어, 프로세서(150))의 이용을 포함할 수 있다. 특수 목적 또는 일반적인 목적의 컴퓨터는 컴퓨터로 판독가능한 매체(예를 들어, 도 1의 스토리지 블록들(110) 및/또는 메모리들(152))상에 저장된 컴퓨터로 실행가능한 명령어들을 실행할 수 있다.
컴퓨터로 실행가능한 명령어들은 예를 들어, 특정 기능 또는 기능들의 그룹을 수행하기 위하여, 범용 컴퓨터, 특수 목적 컴퓨터, 특수 목적 프로세싱 장치(예를 들어, 하나 이상의 프로세서)를 동작시키는 명령어 및 데이터를 포함할 수 있다. 주요 사상들이 구조적 특징들 및/또는 방법론적인 행동들에 따라 특정한 언어로 기술되고 있음에도 불구하고, 첨부되는 청구항들에서 정의되는 주요 사상들은 전술한 구조적 특징들 또는 행동들에 필수적으로 제한되지 않는 것으로 이해된다. 오히려, 전술한 특정 특징들 및 행동들은 청구항들을 구현할 수 있는 예시적인 양식으로서 개시된다.
본 명세서에서 사용된 바와 같이, 용어 "모듈" 또는 "컴포넌트"는 모듈 또는 컴포넌트 및/또는 컴퓨팅 시스템의 범용 하드웨어(예를 들어, 컴퓨터로 판독가능한 매체, 프로세싱, 장치들, 등)에 의해 실행 및/또는 범용 하드웨어 상에 저장되는 소프트웨어 루틴들(software routines) 또는 소프트웨어 객체들의 동작을 수행하기 위한 특정한 하드웨어 구현으로 지칭될 수 있다.
일 실시예에서, 본 명세서에서 기술된 다른 컴포넌트들, 모듈들, 엔진들 및 서비스들은 컴퓨팅 시스템 상에서 실행되는 프로세스들 또는 객체들로(예를 들어, 별도의 스레드들(separate threads)로) 구현될 수 있다. 본 명세서에서 기술된 시스템 또는 방법들 중 일부가 일반적으로 소프트웨어 내에서 구현되는(범용 하드웨어에 의해 실행 및/또는 범용 하드웨어 상에서 저장되는) 것으로 기술되었음에도 불구하고, 특정 하드웨어 구현들 또는 소프트웨어 및 특정 하드웨어 구현들의 조합 역시 가능하고 고려될 수 있다. 본 명세서에서, "컴퓨팅 개체(computing entity)"는 본 명세서에서 이전에 정의된 임의의 컴퓨터 시스템 또는 임의의 모듈 또는 컴퓨팅 시스템에서 실행되는 모듈레이트들의 조합이 될 수 있다.
본 명세서에서 언급된 모든 예시들 및 조건부 언어는 해당 분야의 발전을 위해 발명자에 의해 기고되는 본 발명 및 개념들을 읽는 사람이 이해하는데 도움이 되기 위하여 교육적 목적들을 위해 의도되고, 그러한 구체적으로 언급된 예시들 및 조건들에 대한 한정없이 해석될 수 있다. 본 발명의 실시예들이 구체적으로 기술되었음에 불구하고, 본 발명의 범위 및 본질로부터 벗어나지 않으면서, 다양한 변화들(changes), 대체들(substitutions) 및 변경들(alterations)이 발생될 수 있다.

Claims (20)

  1. 데이터를 스토리지 네트워크 내에 포함된 스토리지 블록에 할당하는 방법에 있어서,
    스토리지 네트워크 내에 포함된 스토리지 블록과 관련된 다수의 특성(characteristics) - 상기 다수의 특성은 상기 스토리지 블록의 스토리지 용량(storage capacity), 상기 스토리지 블록의 이용가능한 스토리지 공간(available storage space), 상기 스토리지 블록상에 저장된 데이터의 손실 가능성(likelihood of loss), 상기 스토리지 블록의 이용성(use) 및 상기 스토리지 네트워크에 대한 스토리지 블록의 가용 빈도(frequency of availability)를 포함함 - 을 결정하는 단계; 및
    상기 다수의 특성을 기초로 데이터를 상기 스토리지 블록에 할당하는 단계
    를 포함하고,
    상기 스토리지 블록의 가용 빈도는 상기 스토리지 블록과 관련있는 장치의 상기 스토리지 네트워크와의 연결 빈도(frequency of connectivity)에 기초하는,
    데이터를 스토리지 네트워크 내에 포함된 스토리지 블록에 할당하는 방법.
  2. 제1항에 있어서,
    상기 스토리지 블록의 타입, 상기 스토리지 블록의 상태(health), 상기 스토리지 블록과 관련있는 상기 장치의 장치 타입, 상기 장치의 이용성, 상기 장치의 손실 가능성, 상기 장치의 상태, 상기 장치의 위치, 상기 장치의 상기 스토리지 네트워크와의 연결성(connectivity), 상기 장치의 상기 스토리지 네트워크와의 연결 비용(cost of connectivity) 및 상기 장치의 신뢰성 중 하나 이상을 기초로 상기 데이터를 상기 스토리지 블록에 할당하는 단계
    를 더 포함하는,
    데이터를 스토리지 네트워크 내에 포함된 스토리지 블록에 할당하는 방법.
  3. 제1항에 있어서,
    상기 데이터의 목적 리던던시(desired redundancy)를 결정하는 단계;
    상기 다수의 특성을 기초로 상기 데이터를 위한 스토리지 블록의 리던던시 롤(redundancy role)을 결정하는 단계; 및
    상기 스토리지 블록의 상기 리던던시 롤을 기초로 상기 데이터를 상기 스토리지 블록에 할당하는 단계
    를 더 포함하는,
    데이터를 스토리지 네트워크 내에 포함된 스토리지 블록에 할당하는 방법.
  4. 제1항에 있어서,
    상기 다수의 특성을 기초로 상기 스토리지 블록을 상기 데이터의 주 저장소(primary repository)로 지정하는 단계
    를 더 포함하는,
    데이터를 스토리지 네트워크 내에 포함된 스토리지 블록에 할당하는 방법.
  5. 제1항에 있어서,
    상기 다수의 특성을 기초로 상기 스토리지 블록을 상기 데이터의 부 저장소(secondary repository)로 지정하는 단계
    를 더 포함하는,
    데이터를 스토리지 네트워크 내에 포함된 스토리지 블록에 할당하는 방법.
  6. 제1항에 있어서,
    상기 데이터의 데이터 특성을 기초로 상기 데이터를 상기 스토리지 블록에 할당하는 단계
    를 더 포함하는,
    데이터를 스토리지 네트워크 내에 포함된 스토리지 블록에 할당하는 방법.
  7. 제6항에 있어서,
    상기 데이터 특성은,
    데이터 타입, 상기 데이터의 이용 빈도(frequency of use), 상기 데이터를 위한 목적 리던던시, 상기 데이터의 사이즈, 상기 데이터에 포함된 정보, 상기 데이터의 상기 스토리지 블록으로의 추가 시간(time of addition), 상기 데이터의 상기 스토리지 네트워크로의 추가 시간, 상기 데이터의 출처(origination) 및 상기 데이터에 대한 사용자 설정(user preference) 중 하나 이상을 포함하는,
    데이터를 스토리지 네트워크 내에 포함된 스토리지 블록에 할당하는 방법.
  8. 제6항에 있어서,
    상기 다수의 특성 중 하나 이상과 관련있는 상기 데이터 특성과 같은 상기 데이터 특성을 기초로 상기 데이터를 상기 스토리지 블록에 할당하는 단계
    를 더 포함하는,
    데이터를 스토리지 네트워크 내에 포함된 스토리지 블록에 할당하는 방법.
  9. 스토리지 네트워크의 스토리지 에이전트 상에 데이터를 저장하는 방법에 있어서,
    스토리지 네트워크 매니저(storage network manager)와 스토리지 네트워크 내에 포함된 스토리지 블록과 관련된 다수의 특성 - 상기 다수의 특성은 상기 스토리지 블록의 스토리지 용량(storage capacity), 상기 스토리지 블록의 이용가능한 스토리지 공간, 상기 스토리지 블록상에 저장된 데이터의 손실 가능성, 상기 스토리지 네트워크에 대한 스토리지 블록의 가용성(availability) 및 다른 데이터에 대한 상기 스토리지 블록과 관련있는 장치의 확인된 이용성(observed use)을 포함하고, 상기 다른 데이터는 상기 스토리지 블록상에 저장되고, 상기 장치에 억세스되고, 데이터 타입을 가짐 - 을 통신하는 단계;
    상기 스토리지 네트워크 매니저로부터, 상기 다른 데이터의 상기 데이터 타입을 갖는 할당된 데이터를 상기 스토리지 블록상에 저장하기 위한 스토리지 명령(storage command)을 수신하는 단계 - 상기 스토리지 명령은 상기 다수의 특성에 기초하고, 상기 다른 데이터의 상기 데이터 타입을 갖는 상기 할당된 데이터에 기초함 - ; 및
    상기 스토리지 명령에 응답하여 상기 할당된 데이터를 상기 스토리지 블록에 저장하는 단계
    를 포함하는,
    스토리지 네트워크의 스토리지 에이전트 상에 데이터를 저장하는 방법.
  10. 제9항에 있어서,
    상기 다수의 특성 중 하나 이상을 기초로 상기 스토리지 블록으로부터 상기 할당된 데이터를 제거하는 단계
    를 더 포함하는,
    스토리지 네트워크의 스토리지 에이전트 상에 데이터를 저장하는 방법.
  11. 제9항에 있어서,
    상기 할당된 데이터의 데이터 특성을 기초로 상기 할당된 데이터를 상기 스토리지 블록에 저장하는 단계
    를 더 포함하는,
    스토리지 네트워크의 스토리지 에이전트 상에 데이터를 저장하는 방법.
  12. 제11항에 있어서,
    상기 데이터 특성은,
    데이터 타입, 상기 데이터의 이용 빈도(frequency of use), 상기 데이터를 위한 목적 리던던시, 상기 데이터의 사이즈, 상기 데이터의 순위(ranking), 상기 데이터에 포함된 정보, 상기 데이터의 상기 스토리지 블록으로의 추가 시간(time of addition), 상기 데이터의 상기 스토리지 네트워크로의 추가 시간, 상기 데이터의 출처(origination) 및 상기 데이터에 대한 사용자 설정(user preference) 중 하나 이상을 포함하는,
    스토리지 네트워크의 스토리지 에이전트 상에 데이터를 저장하는 방법.
  13. 시스템이 스토리지 네트워크의 스토리지 에이전트에 데이터를 할당하는 동작(operations)을 수행하기 위한 명령어들을 포함하는 컴퓨터로 판독 가능한 저장 매체(computer-readable storage medium)에 있어서,
    상기 동작은,
    스토리지 네트워크 내에 포함된 스토리지 블록과 관련된 다수의 특성(characteristics) - 상기 다수의 특성은 상기 스토리지 블록의 스토리지 용량(storage capacity), 상기 스토리지 블록의 이용가능한 스토리지 공간, 상기 스토리지 블록상에 저장된 데이터의 손실 가능성, 상기 스토리지 네트워크에 대한 스토리지 블록의 가용 빈도(frequency of availability) 및 다른 데이터에 대한 상기 스토리지 블록과 관련있는 장치의 확인된 이용성을 포함하고, 상기 다른 데이터는 상기 스토리지 블록상에 저장되고, 상기 장치에 억세스됨 - 을 결정하는 단계 - 상기 스토리지 블록의 상기 가용 빈도는 상기 스토리지 블록과 관련있는 상기 장치의 연결 빈도(frequency of connectivity)에 기초하고, 상기 다른 데이터는 데이터 타입을 가짐 - ; 및
    상기 다수의 특성 및 상기 다른 데이터의 상기 데이터 타입을 갖는 상기 할당된 데이터를 기초로 데이터를 상기 스토리지 블록에 할당하는 단계
    를 포함하는,
    컴퓨터로 판독 가능한 저장 매체.
  14. 제13항에 있어서,
    상기 동작은,
    상기 스토리지 블록의 타입, 상기 스토리지 블록의 상태(health), 상기 스토리지 블록과 관련있는 장치의 장치 타입, 상기 장치의 이용성, 상기 장치의 손실 가능성, 상기 장치의 상태, 상기 장치의 위치, 상기 장치의 상기 스토리지 네트워크와의 연결성(connectivity), 상기 장치의 상기 스토리지 네트워크와의 연결 비용(cost of connectivity) 및 상기 장치의 신뢰성 중 하나 이상을 기초로 상기 데이터를 상기 스토리지 블록에 할당하는 단계
    를 더 포함하는,
    컴퓨터로 판독 가능한 저장 매체.
  15. 제13항에 있어
    상기 동작은,
    상기 데이터의 목적 리던던시(desired redundancy)를 결정하는 단계;
    상기 다수의 특성을 기초로 상기 데이터를 위한 스토리지 블록의 리던던시 롤(redundancy role)을 결정하는 단계; 및
    상기 스토리지 블록의 상기 리던던시 롤을 기초로 상기 데이터를 상기 스토리지 블록에 할당하는 단계
    를 더 포함하는,
    컴퓨터로 판독 가능한 저장 매체.
  16. 제13항에 있어서,
    상기 동작은,
    상기 다수의 특성을 기초로 상기 스토리지 블록을 상기 데이터의 주 저장소(primary repository)로 지정하는 단계
    를 더 포함하는,
    컴퓨터로 판독 가능한 저장 매체.
  17. 제13항에 있어서,
    상기 다수의 특성을 기초로 상기 스토리지 블록을 상기 데이터의 부 저장소(secondary repository)로 지정하는 단계
    를 더 포함하는,
    컴퓨터로 판독 가능한 저장 매체.
  18. 제13항에 있어서,
    상기 데이터의 데이터 특성을 기초로 상기 데이터를 상기 스토리지 블록에 할당하는 단계
    를 더 포함하는,
    컴퓨터로 판독 가능한 저장 매체.
  19. 제18항에 있어서,
    상기 데이터 특성은,
    데이터 타입, 상기 데이터의 이용 빈도(frequency of use), 상기 데이터를 위한 목적 리던던시, 상기 데이터의 사이즈, 상기 데이터에 포함된 정보, 상기 데이터의 상기 스토리지 블록으로의 추가 시간(time of addition), 상기 데이터의 상기 스토리지 네트워크로의 추가 시간, 상기 데이터의 출처(origination) 및 상기 데이터에 대한 사용자 설정(user preference) 중 하나 이상을 포함하는,
    컴퓨터로 판독 가능한 저장 매체.
  20. 제18항에 있어서,
    상기 동작은,
    상기 다수의 특성 중 하나 이상과 관련있는 상기 데이터 특성과 같은 상기 데이터 특성을 기초로 상기 데이터를 상기 스토리지 블록에 할당하는 단계
    를 더 포함하는,
    컴퓨터로 판독 가능한 저장 매체.
KR1020157021377A 2013-01-08 2014-01-08 스토리지 네트워크 데이터 할당 KR101700667B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201361750324P 2013-01-08 2013-01-08
US201361750319P 2013-01-08 2013-01-08
US61/750,324 2013-01-08
US61/750,319 2013-01-08
US14/137,654 US8880838B2 (en) 2013-01-08 2013-12-20 Storage network data allocation
US14/137,654 2013-12-20
PCT/US2014/010694 WO2014110140A1 (en) 2013-01-08 2014-01-08 Storage network data allocation

Publications (2)

Publication Number Publication Date
KR20150110577A KR20150110577A (ko) 2015-10-02
KR101700667B1 true KR101700667B1 (ko) 2017-01-31

Family

ID=51061780

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020157021377A KR101700667B1 (ko) 2013-01-08 2014-01-08 스토리지 네트워크 데이터 할당
KR1020167019712A KR101791594B1 (ko) 2013-01-08 2014-12-20 저장 네트워크 내의 저장 관리

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020167019712A KR101791594B1 (ko) 2013-01-08 2014-12-20 저장 네트워크 내의 저장 관리

Country Status (8)

Country Link
US (8) US9727268B2 (ko)
EP (3) EP2943888A4 (ko)
JP (1) JP2016511862A (ko)
KR (2) KR101700667B1 (ko)
CN (2) CN105164661A (ko)
CA (1) CA2900966A1 (ko)
TW (4) TWI555359B (ko)
WO (4) WO2014110140A1 (ko)

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9495194B1 (en) * 2008-10-17 2016-11-15 Dispersive Networks, Inc. Dispersive storage area networks
US8881256B1 (en) * 2011-12-21 2014-11-04 Amazon Technologies, Inc. Portable access to auditing information
US9239781B2 (en) 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
US9671962B2 (en) 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
US9727268B2 (en) 2013-01-08 2017-08-08 Lyve Minds, Inc. Management of storage in a storage network
US20140229695A1 (en) * 2013-02-13 2014-08-14 Dell Products L.P. Systems and methods for backup in scale-out storage clusters
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
US10546648B2 (en) 2013-04-12 2020-01-28 Sandisk Technologies Llc Storage control system with data management mechanism and method of operation thereof
US9244519B1 (en) 2013-06-25 2016-01-26 Smart Storage Systems. Inc. Storage system with data transfer rate adjustment for power throttling
US9367353B1 (en) 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
US9037762B2 (en) * 2013-07-31 2015-05-19 Dropbox, Inc. Balancing data distribution in a fault-tolerant storage system based on the movements of the replicated copies of data
US9431113B2 (en) * 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US9448946B2 (en) 2013-08-07 2016-09-20 Sandisk Technologies Llc Data storage system with stale data mechanism and method of operation thereof
US9361222B2 (en) 2013-08-07 2016-06-07 SMART Storage Systems, Inc. Electronic system with storage drive life estimation mechanism and method of operation thereof
US9747157B2 (en) 2013-11-08 2017-08-29 Sandisk Technologies Llc Method and system for improving error correction in data storage
US9678678B2 (en) 2013-12-20 2017-06-13 Lyve Minds, Inc. Storage network data retrieval
US9626376B1 (en) * 2014-02-14 2017-04-18 Western Digital Technologies, Inc. Local area network distributed storage
US9531610B2 (en) * 2014-05-09 2016-12-27 Lyve Minds, Inc. Computation of storage network robustness
CN104461914A (zh) * 2014-11-10 2015-03-25 浪潮电子信息产业股份有限公司 一种自动精简配置的自适应优化方法
US10165040B2 (en) 2015-06-05 2018-12-25 Apple Inc. Small disk support for large cloud-based storage systems
CN105095796A (zh) * 2015-07-15 2015-11-25 柳州首光科技有限公司 采用虹膜加密的数据存储系统
CN105069367A (zh) * 2015-07-15 2015-11-18 柳州首光科技有限公司 具有隐私保护功能的数据存储系统
CN105022679A (zh) * 2015-07-15 2015-11-04 柳州首光科技有限公司 数据存储系统
CN105069338A (zh) * 2015-07-16 2015-11-18 柳州首光科技有限公司 采用虹膜加密的信息存储方法
CN105045682A (zh) * 2015-07-16 2015-11-11 柳州首光科技有限公司 基于网络的信息存储方法
CN105005745A (zh) * 2015-07-16 2015-10-28 柳州首光科技有限公司 信息存储方法
CN105069368A (zh) * 2015-07-16 2015-11-18 柳州首光科技有限公司 具有隐私保护功能的信息存储方法
US11226987B2 (en) * 2015-10-23 2022-01-18 Oracle International Corporation System and method for in-place data writes to reduce fragmentation in a multidimensional database environment
US9946642B2 (en) * 2015-11-13 2018-04-17 Samsung Electronics Co., Ltd Distributed multimode storage management
US9996473B2 (en) 2015-11-13 2018-06-12 Samsung Electronics., Ltd Selective underlying exposure storage mapping
US9990304B2 (en) * 2015-11-13 2018-06-05 Samsung Electronics Co., Ltd Multimode storage management system
US9940028B2 (en) * 2015-11-13 2018-04-10 Samsung Electronics Co., Ltd Multimode storage device
CN105677240B (zh) * 2015-12-30 2019-04-23 上海联影医疗科技有限公司 数据删除方法及系统
US20170222886A1 (en) * 2016-01-28 2017-08-03 Hewlett Packard Enterprise Development Lp Metering storage usage
US11287973B2 (en) 2016-02-02 2022-03-29 Samsung Electronics Co., Ltd. Polymorphic storage devices
CN105786777B (zh) * 2016-02-22 2018-09-28 中国移动通信集团广东有限公司 基于文本解析器的存储容量集中处理方法
US10235060B1 (en) 2016-04-14 2019-03-19 EMC IP Holding Company, LLC Multilevel snapshot replication for hot and cold regions of a storage system
US10228886B2 (en) 2016-04-20 2019-03-12 International Business Machines Corporation Storage device volume selection for improved space allocation
US10572247B2 (en) * 2016-06-01 2020-02-25 Dell Products L.P. Prototype management system
US10467102B1 (en) 2016-12-15 2019-11-05 EMC IP Holding Company LLC I/O score-based hybrid replication in a storage system
US10140039B1 (en) 2016-12-15 2018-11-27 EMC IP Holding Company LLC I/O alignment for continuous replication in a storage system
US10346057B1 (en) * 2016-12-30 2019-07-09 EMC IP Holding Company LLC Probability-based allocation of storage from storage pools
TWI740884B (zh) * 2017-01-20 2021-10-01 香港商阿里巴巴集團服務有限公司 分散式檔案系統中的資料寫入方法和裝置
US10209914B2 (en) 2017-01-31 2019-02-19 Sandisk Technologies Llc System and method for dynamic folding or direct write based on block health in a non-volatile memory system
CN106934034B (zh) * 2017-03-14 2019-11-12 杭州火剧科技有限公司 分析影视作品发行特征的方法和服务器
JP6489144B2 (ja) * 2017-03-23 2019-03-27 日本電気株式会社 情報処理装置
US11782875B2 (en) * 2017-11-13 2023-10-10 Weka.IO Ltd. Directory structure for a distributed storage system
US10700974B2 (en) * 2018-01-30 2020-06-30 Marvell Israel (M.I.S.L) Ltd. Dynamic allocation of memory for packet processing instruction tables in a network device
US11171671B2 (en) * 2019-02-25 2021-11-09 Samsung Electronics Co., Ltd. Reducing vulnerability window in key value storage server without sacrificing usable capacity
US10892938B1 (en) * 2019-07-31 2021-01-12 Abb Power Grids Switzerland Ag Autonomous semantic data discovery for distributed networked systems
TWI751580B (zh) 2020-06-10 2022-01-01 財團法人工業技術研究院 儲存空間暫存檔案的管理方法及用於儲存多個暫存檔案的記錄裝置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004013547A (ja) * 2002-06-07 2004-01-15 Hitachi Ltd データ割当方法、情報処理システム

Family Cites Families (87)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5881311A (en) 1996-06-05 1999-03-09 Fastor Technologies, Inc. Data storage subsystem with block based data management
US6708221B1 (en) * 1996-12-13 2004-03-16 Visto Corporation System and method for globally and securely accessing unified information in a computer network
US6085192A (en) 1997-04-11 2000-07-04 Roampage, Inc. System and method for securely synchronizing multiple copies of a workspace element in a network
FR2759517B1 (fr) 1997-01-24 1999-03-05 Bull Sa Systeme informatique a stockage de donnees distribue
US6094672A (en) 1997-05-19 2000-07-25 Novell, Inc. Method and system for time synchronization management
JP3233071B2 (ja) 1997-07-02 2001-11-26 日本電気株式会社 マネージャ・エージェント間同期装置及びマネージャ・エージェント間同期方法並びにマネージャ・エージェント間同期制御プログラムを記録した記録媒体
EP0986225A1 (en) 1998-09-11 2000-03-15 Visto Corporation System and method for securely synchronizing multiple copies of a workspace element in a network
US20020108025A1 (en) 1998-10-21 2002-08-08 Nicholas Shaylor Memory management unit for java environment computers
US6757847B1 (en) * 1998-12-29 2004-06-29 International Business Machines Corporation Synchronization for system analysis
JP3953243B2 (ja) 1998-12-29 2007-08-08 インターナショナル・ビジネス・マシーンズ・コーポレーション システム分析のためにバス・アービトレーション制御を使用する同期方法及び装置
US6401104B1 (en) 1999-07-03 2002-06-04 Starfish Software, Inc. System and methods for synchronizing datasets using cooperation among multiple synchronization engines
US7509420B2 (en) 2000-02-18 2009-03-24 Emc Corporation System and method for intelligent, globally distributed network storage
US20010039497A1 (en) 2000-03-30 2001-11-08 Hubbard Edward A. System and method for monitizing network connected user bases utilizing distributed processing systems
US6789258B1 (en) * 2000-05-11 2004-09-07 Sun Microsystems, Inc. System and method for performing a synchronization operation for multiple devices in a computer system
US6664891B2 (en) 2000-06-26 2003-12-16 Koninklijke Philips Electronics N.V. Data delivery through portable devices
US6470329B1 (en) 2000-07-11 2002-10-22 Sun Microsystems, Inc. One-way hash functions for distributed data synchronization
KR100516794B1 (ko) 2000-07-31 2005-09-26 가부시끼가이샤 도시바 에이전트 시스템
US20020078461A1 (en) 2000-12-14 2002-06-20 Boykin Patrict Oscar Incasting for downloading files on distributed networks
US7177912B1 (en) 2000-12-22 2007-02-13 Datacore Software Corporation SCSI transport protocol via TCP/IP using existing network hardware and software
DE50111406D1 (de) * 2001-01-26 2006-12-21 Siemens Ag Verfahren, Programm und Anordnung zur Synchronisierung von einem Network Manager mit einem Network Agenten
US20020129290A1 (en) 2001-03-06 2002-09-12 Bruno Couillard Method and system for time synchronization
US20020161911A1 (en) 2001-04-19 2002-10-31 Thomas Pinckney Systems and methods for efficient memory allocation for streaming of multimedia files
US7685126B2 (en) 2001-08-03 2010-03-23 Isilon Systems, Inc. System and methods for providing a distributed file system utilizing metadata to track information about data stored throughout the system
US6721871B2 (en) 2002-04-02 2004-04-13 Nokia Corporation Method and apparatus for synchronizing data stores with respect to changes in folders
US7707175B1 (en) 2002-05-02 2010-04-27 Palmsource Inc. Single ended synchronization agents
US7139748B1 (en) 2002-05-02 2006-11-21 Palmsource, Inc. N-way synchronization of computer databases
US6904498B2 (en) 2002-10-08 2005-06-07 Netcell Corp. Raid controller disk write mask
US20040127242A1 (en) * 2002-12-31 2004-07-01 Dashevsky Jane Y. Apparatus and associated methods for the synchronization of shared content
JP4265245B2 (ja) * 2003-03-17 2009-05-20 株式会社日立製作所 計算機システム
US20040199740A1 (en) * 2003-04-07 2004-10-07 Nokia Corporation Adaptive and recursive compression of lossily compressible files
US7275073B2 (en) * 2003-05-07 2007-09-25 Good Technology, Inc. System and method for notifying mobile devices based on device type and network capabilities
US20040230317A1 (en) * 2003-05-15 2004-11-18 Sun Microsystems, Inc. Method, system, and program for allocating storage resources
US20050050142A1 (en) * 2003-08-28 2005-03-03 Aligo Inc. Method and framework for transaction synchronization
US7076622B2 (en) 2003-09-30 2006-07-11 International Business Machines Corporation System and method for detecting and sharing common blocks in an object storage system
JP2005115438A (ja) * 2003-10-03 2005-04-28 Mitsubishi Electric Corp データ管理装置
US7734701B2 (en) 2003-11-14 2010-06-08 International Business Machines Corporation Method to write information to an information storage medium using a network attached storage device
US7149866B2 (en) 2004-06-04 2006-12-12 International Business Machines Corporation Free item distribution among multiple free lists during garbage collection for more efficient object allocation
US7567988B2 (en) * 2004-07-16 2009-07-28 Sap Ag Synchronizing agent for multiple clients/applications on a computer system
US7584220B2 (en) 2004-10-01 2009-09-01 Microsoft Corporation System and method for determining target failback and target priority for a distributed file system
WO2006047650A2 (en) 2004-10-25 2006-05-04 Empower Technologies, Inc. System and method for global data synchronization
US7809914B2 (en) 2004-11-05 2010-10-05 Commvault Systems, Inc. Methods and system of pooling storage devices
US7600125B1 (en) 2004-12-23 2009-10-06 Symantec Corporation Hash-based data block processing with intermittently-connected systems
US7933936B2 (en) * 2005-06-10 2011-04-26 Network Appliance, Inc. Method and system for automatic management of storage space
JP4784854B2 (ja) * 2005-06-13 2011-10-05 独立行政法人産業技術総合研究所 データ管理装置および方法
US7523146B2 (en) * 2005-06-21 2009-04-21 Apple Inc. Apparatus and method for peer-to-peer N-way synchronization in a decentralized environment
KR100654462B1 (ko) 2005-08-24 2006-12-06 삼성전자주식회사 캐쉬 메모리를 메모리 블록으로 나누어 파일의 데이터를저장하는 캐쉬 방법 및 캐쉬 시스템
TW200723093A (en) 2005-12-14 2007-06-16 Inventec Corp Method for establishing mirror storage equipment and synchronously storing equipment update data
TWI312112B (en) 2005-12-30 2009-07-11 Ind Tech Res Inst Data managing method, method and apparatus to snapshot data for multiple volumes to a single snapshot volume in a data processing system
US8533409B2 (en) 2006-01-26 2013-09-10 Infortrend Technology, Inc. Method of managing data snapshot images in a storage system
DE602006013405D1 (de) 2006-02-21 2010-05-20 Microsoft Corp Topologieverwaltung in Peer-to-peer Datenverteilungswolken
US9047310B2 (en) * 2006-02-22 2015-06-02 Microsoft Technology Licensing, Llc Reliable, efficient peer-to-peer storage
US8085891B2 (en) 2006-05-29 2011-12-27 Research In Motion Limited System and method for management of mobile device communication
US20090132621A1 (en) 2006-07-28 2009-05-21 Craig Jensen Selecting storage location for file storage based on storage longevity and speed
JPWO2008026262A1 (ja) 2006-08-30 2010-01-14 パイオニア株式会社 記録媒体再生装置、記録媒体再生方法、記録媒体再生プログラムおよび記録媒体
US20080077638A1 (en) * 2006-09-21 2008-03-27 Microsoft Corporation Distributed storage in a computing environment
US20080077628A1 (en) 2006-09-22 2008-03-27 International Business Machines Corporation Conflict resolution for distributed processing systems
WO2008070803A1 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for managing data from a requesting device with an empty data token directive
US7760767B2 (en) 2007-01-05 2010-07-20 Apple Inc. Wide area peer-to-peer synching in a decentralized environment
KR100932642B1 (ko) 2007-01-09 2009-12-21 포항공과대학교 산학협력단 유비쿼터스 환경에서 데이터 통합관리를 위한 분산 파일서비스 방법 및 시스템
JP4696089B2 (ja) 2007-03-30 2011-06-08 三菱電機インフォメーションシステムズ株式会社 分散ストレージシステム
US20080294769A1 (en) 2007-05-25 2008-11-27 Kenshi Doi Efficient synchronization of agents starting a task where the agents poll a server to learn the task start time
US20080307094A1 (en) * 2007-06-11 2008-12-11 Olli Karonen Association of peer-to-peer contribution credits with multiple devices
US20090228669A1 (en) 2008-03-10 2009-09-10 Microsoft Corporation Storage Device Optimization Using File Characteristics
US7849180B2 (en) * 2008-04-29 2010-12-07 Network Appliance, Inc. Load balanced storage provisioning
US8103621B2 (en) 2008-10-03 2012-01-24 International Business Machines Corporation HSM two-way orphan reconciliation for extremely large file systems
US7974314B2 (en) 2009-01-16 2011-07-05 Microsoft Corporation Synchronization of multiple data source to a common time base
EP2411918B1 (en) 2009-03-23 2018-07-11 Riverbed Technology, Inc. Virtualized data storage system architecture
US8560639B2 (en) 2009-04-24 2013-10-15 Microsoft Corporation Dynamic placement of replica data
EP2497250B1 (en) 2009-11-03 2018-02-28 Telecom Italia S.p.A. Sharing of digital contents in p2p networks exploiting localization data
US8234464B2 (en) * 2009-11-05 2012-07-31 International Business Machines Corporation Hybrid storage data migration by selective data removal
US8527749B2 (en) 2009-11-11 2013-09-03 International Business Machines Corporation User device, computer program product and computer system for system for secure network storage
US8504670B2 (en) 2010-03-23 2013-08-06 Riverbed Technology, Inc. Virtualized data storage applications and optimizations
US8566354B2 (en) 2010-04-26 2013-10-22 Cleversafe, Inc. Storage and retrieval of required slices in a dispersed storage network
US8861727B2 (en) 2010-05-19 2014-10-14 Cleversafe, Inc. Storage of sensitive data in a dispersed storage network
US8930618B2 (en) * 2010-08-24 2015-01-06 Futurewei Technologies, Inc. Smart memory
US20120173900A1 (en) 2010-11-03 2012-07-05 Broadcom Corporation Providing power over ethernet within a vehicular communication network
WO2012141687A1 (en) 2011-04-12 2012-10-18 Empire Technology Development, Llc A service associated with persistent storage
US8812454B2 (en) 2012-01-12 2014-08-19 Alcatel Lucent Apparatus and method for managing storage of data blocks
US20130232215A1 (en) 2012-03-05 2013-09-05 Riverbed Technology, Inc. Virtualized data storage system architecture using prefetching agent
US8977672B2 (en) 2012-06-08 2015-03-10 Commvault Systems, Inc. Intelligent scheduling for remote computers
TWM441275U (en) 2012-06-15 2012-11-11 zheng-dao Lin Distributed wireless network data storage system
TWI470999B (zh) 2012-06-19 2015-01-21 Wistron Corp 編輯與儲存串流的方法、裝置、系統
US9015212B2 (en) 2012-10-16 2015-04-21 Rackspace Us, Inc. System and method for exposing cloud stored data to a content delivery network
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9727268B2 (en) 2013-01-08 2017-08-08 Lyve Minds, Inc. Management of storage in a storage network
US9265935B2 (en) 2013-06-28 2016-02-23 Nevro Corporation Neurological stimulation lead anchors and associated systems and methods
US9678678B2 (en) 2013-12-20 2017-06-13 Lyve Minds, Inc. Storage network data retrieval

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004013547A (ja) * 2002-06-07 2004-01-15 Hitachi Ltd データ割当方法、情報処理システム

Also Published As

Publication number Publication date
EP2943888A4 (en) 2016-10-26
US20140195769A1 (en) 2014-07-10
US20140195640A1 (en) 2014-07-10
TW201442465A (zh) 2014-11-01
KR20150110577A (ko) 2015-10-02
CA2900966A1 (en) 2014-07-17
US20150058590A1 (en) 2015-02-26
US20160132267A1 (en) 2016-05-12
US20170161297A1 (en) 2017-06-08
WO2015095852A1 (en) 2015-06-25
US20150058591A1 (en) 2015-02-26
EP3084631A1 (en) 2016-10-26
US8903959B2 (en) 2014-12-02
US20140195757A1 (en) 2014-07-10
US9910614B2 (en) 2018-03-06
WO2014110140A1 (en) 2014-07-17
KR20160124085A (ko) 2016-10-26
WO2015095851A1 (en) 2015-06-25
TWI555359B (zh) 2016-10-21
CN105164661A (zh) 2015-12-16
US20140195482A1 (en) 2014-07-10
US9727268B2 (en) 2017-08-08
EP3084613A1 (en) 2016-10-26
TW201447601A (zh) 2014-12-16
CN106537358A (zh) 2017-03-22
US8880838B2 (en) 2014-11-04
TW201531863A (zh) 2015-08-16
KR101791594B1 (ko) 2017-10-30
JP2016511862A (ja) 2016-04-21
TW201535105A (zh) 2015-09-16
EP2943888A1 (en) 2015-11-18
TWI514161B (zh) 2015-12-21
EP3084613A4 (en) 2017-09-06
US9274707B2 (en) 2016-03-01
WO2014110142A1 (en) 2014-07-17
EP3084631A4 (en) 2017-08-30

Similar Documents

Publication Publication Date Title
KR101700667B1 (ko) 스토리지 네트워크 데이터 할당
TWI552065B (zh) 用於儲存網路資料擷取的方法、裝置與電腦可讀取媒體
US9781206B2 (en) Blended storage allocation on a storage agent
TW201545117A (zh) 縮圖影像建立
US20190332491A1 (en) Systems and Processes for Data Backup and Recovery
US20150288783A1 (en) Storage agent status
US20170230455A1 (en) Computation of storage network robustness
TW201606746A (zh) 照片分享裝置顯示器上之影像捲動

Legal Events

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

Payment date: 20191204

Year of fee payment: 4