KR20170052441A - 중앙 집중 분산 시스템 및 그것의 동작 방법 - Google Patents

중앙 집중 분산 시스템 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20170052441A
KR20170052441A KR1020160067575A KR20160067575A KR20170052441A KR 20170052441 A KR20170052441 A KR 20170052441A KR 1020160067575 A KR1020160067575 A KR 1020160067575A KR 20160067575 A KR20160067575 A KR 20160067575A KR 20170052441 A KR20170052441 A KR 20170052441A
Authority
KR
South Korea
Prior art keywords
node
server
nodes
data storage
time
Prior art date
Application number
KR1020160067575A
Other languages
English (en)
Inventor
데릭 쳉
최창호
수라지 프라브하카르 와굴데
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20170052441A publication Critical patent/KR20170052441A/ko

Links

Images

Classifications

    • 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
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0269Incremental or concurrent garbage collection, e.g. in real-time systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F17/30194
    • 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
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • 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/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • 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/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • 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/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]
    • 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/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket

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)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 서버를 포함하는 시스템에 관한 것이다. 서버는 복수의 노드들에 연결되고, 유지 동작을 수행하기 위해 노드들 중에서 하나의 노드를 선택하고, 선택된 노드가 유지 동작을 수행하도록 지시하고, 선택된 노드를 기반으로 요청들(requests)을 액세스하도록 응답하고, 선택된 노드에 의해 수행되는 유지 동작은 선택된 노드의 성능을 감소시킨다.

Description

중앙 집중 분산 시스템 및 그것의 동작 방법{CENTRALIZED DISTRIBUTED SYSTEMS AND METHODS FOR MANAGING OPERATIONS}
본 발명은 중앙 집중 분산 시스템에 관한 것으로, 더 구체적으로는 오퍼레이션들을 관리하기 위한 중앙 집중 분산 시스템에 관한 것이다.
분산 시스템들의 노드들은 유지 동작들, 파일 시스템 관리 동작들, 백그라운드 동작들 또는 이와 유사한 것과 같은 주기적인 동작들을 수행할 수 있다. 예를 들어, 가비지 콜렉션은 분산 스토리지 시스템에서 사용될 수 있는 솔리드 스테이트 드라이브(SSD)들에 대해 수행될 수 있다. 데이터가 솔리드 스테이트 드라이브(SSD)들에 채워질수록, 새로운 데이터를 저장하기 위해 새로운 블록들이 비워진다. 새로운 블록들을 비워내기 위해, 솔리드 스테이트 드라이브(SSD)는 “더티(dirty)” 페이지들을 갖는 최대 소거 블록들에 대한 매체를 스캔할 수 있다. 새로운 데이터를 저장하기 위해 소거 블록을 비워내면서, 솔리드 스테이트 드라이브(SSD)는 소거 블록 내에서 유효 페이지들을 읽고, 다른 곳에 데이터를 저장하고, 블록을 소거할 수 있다. 요청들이 처리됨에 따라, 가비지 콜렉션 테스크들(garbage collection tasks)은 백그라운드로 발생할 수 있다. 그러나, 가비지 콜렉션은 쓰기 및/또는 읽기 요청들을 처리하는 것을 느리게 할 수 있다.
본 발명의 목적은 유지 동작으로 인한 성능 감소의 영향을 적게 받는 중앙 집중 분산 시스템 및 그것의 동작 방법을 제공하는데 있다.
본 발명의 일 실시 예에 따른 서버를 포함하는 시스템은 복수의 노드들에 연결되고, 유지 동작을 수행하기 위해 노드들 중에서 하나의 노드를 선택하고, 선택된 노드가 유지 동작을 수행하도록 지시하고, 선택된 노드를 기반으로 요청들(requests)을 액세스하도록 응답하는 서버를 포함하되, 선택된 노드에 의해 수행되는 유지 동작은 선택된 노드의 성능을 감소시킨다.
본 발명의 일 실시 예에 따른 시스템의 동작 방법은 서버가 유지 동작을 수행하기 위해 복수의 노드들로부터 하나의 노드를 선택하는 단계, 서버가 선택된 노드에 유지 동작을 수행하도록 지시하는 단계 및 서버가 선택된 노드를 기반으로 액세스 요청들에 응답하는 단계를 포함하되, 선택된 노드에 의해 수행되는 유지 동작은 선택된 노드의 성능을 감소시킨다.
본 발명의 일 실시 예에 따른 시스템은 복수의 노드들에 연결되고, 액세스 요청을 수신하고, 복수의 노드들 중에서 유지 동작들 중 적어도 하나의 유지 동작을 수행하는 노드들을 식별하는 데이터 베이스를 액세스하고, 식별된 노드들을 기반으로 액세스 요청에 대한 응답을 생성하고, 응답에 따라 상기 액세스 요청에 응답하는 서버를 포함하되, 복수의 노드들 중 하나의 노드에 의해 적어도 하나의 유지 동작을 수행하는 것은 상기 노드의 성능을 감소시킨다.
본 발명의 실시 예에 따르면, 유지 동작으로 인한 성능 감소의 영향을 적게 받는 중앙 집중 분산 시스템 및 그것의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예들에 따른 시스템의 개략도를 보여준다.
도 2는 본 발명의 실시 예들에 따른 유지 동작을 시작하는 기술에 관한 순서도이다.
도 3은 다른 실시 예에 따른 유지 동작을 시작하는 기술에 관한 순서도이다.
도 4는 본 발명의 실시 예들에 따른 도 1의 시스템의 액세스 요청을 나타내는 개략도를 보여준다.
도 5는 일부 실시 예들에 따른 액세스 요청에 응답하는 기술에 관한 순서도이다.
도 6은 본 발명의 다른 실시 예에 따른 도 1의 시스템에서 액세스 요청을 보여주는 개략도이다.
도 7은 다른 실시 예에 따른 액세스 요청에 응답하는 기술에 관한 순서도이다.
도 8은 실시 예들에 따른 데이터 스토리지 시스템의 개략도이다.
도 9는 본 발명의 실시 예들에 따라 도 8의 시스템에서 읽기 액세스 요청을 도시하는 개략도이다.
도 10은 본 발명의 실시 예들에 따라 읽기 액세스 요청에 대응하는 기술에 관한 순서도이다.
도 11은 본 발명의 실시 예들에 따른 도 8의 시스템에서 쓰기 액세스 요청을 도시하는 개략도이다.
도 12는 본 발명의 실시 예들에 따른 쓰기 액세스 요청에 응답하는 기술에 관한 순서도이다.
도 13은 본 발명의 실시 예들에 따라 도 8의 시스템의 변경 쓰기 액세스 요청을 도시하는 개략도이다.
도 14는 본 발명의 실시 예들에 따라 변경 쓰기 액세스 요청에 응답하는 기술의 순서도이다.
도 15는 본 발명의 실시 예들에 따른 노드의 유지 동작을 예정하는 기술에 관한 순서도이다.
도 16은 본 발명의 다른 일 실시 예를 따른 노드의 유지 동작을 예정하는 기술에 관한 순서도이다.
본 발명의 실시 예들은 중앙 집중 분산 시스템들(centralized distributed systems)의 동작들을 관리하는 것에 관한 것이다. 하기의 설명은 통상의 기술자가 본 발명의 실시 예들을 만들고 사용하는 것을 가능하도록 서술된다. 그리고 하기의 설명은 특허 출원 및 그것의 요건의 측면에서 제공된다. 본 명세서에서 설명된 실시 예들 및 일반적인 원리들과 특징들에 대한 다양한 변형들은 쉽게 이해할 수 있을 것이다. 실시 예들은 주로 특정한 구현 예들을 통해 제공된 특정 방법들 및 시스템들의 관점에서 설명된다.
그러나, 방법들 및 시스템들은 다른 구현 예들에서 효과적으로 작동할 것이다. “실시 예”, “일 실시 예” 및 “다른 실시 예”와 같은 문구는 복수의 실시 예들뿐만 아니라 동일하거나 다른 실시 예들을 언급할 수 있다. 실시 예들은 특정한 구성 요소들을 포함하는 시스템들 및/또는 장치들의 관점에서 설명될 것이다. 그러나, 시스템 및/또는 장치들은 도시된 것보다 많거나 적은 구성 요소들을 포함할 수 있다. 그리고 구성 요소들의 배치 및 형태의 변경들은 본 발명의 범위를 벗어나지 않고 이루어질 수 있다. 또한, 실시 예들은 특정 단계들을 갖는 특정한 방법들의 관점에서 설명될 것이다. 그러나, 방법 및 시스템은 다른 및/또는 추가적인 단계들 그리고 본 발명의 실시 예들과 일치하는 다른 순서들의 단계들(steps in different orders)을 갖는 다른 방법들에 따라 동작할 수 있다. 그러므로, 실시 예들은 나타난 특정 실시 예들에 제한되도록 의도되는 것은 아니지만, 본 명세서에 기재된 원리들 및 특징들과 일치하는 가장 넓은 범위(the widest scope)가 부여되도록 한다.
실시 예들은 특정 구성 요소들을 갖는 특정 시스템들의 맥락에서 설명된다. 통상의 기술자는 실시 예들이 다른 및/또는 추가적인 구성요소들 및/또는 다른 특징들을 갖는 시스템들의 사용과 일치한다는 것을 쉽게 인식할 수 있을 것이다. 그러나, 통상의 기술자는 방법들 및 시스템들이 다른 구조들과 일치한다는 것을 쉽게 인식할 수 있을 것이다. 또한 방법들 및 시스템들은 단일 구성 요소들의 맥락에서 설명될 수 있다. 그러나, 통상의 기술자는 방법들 및 시스템들이 복수의 구성 요소들을 갖는 시스템들의 이용과 일치한다는 것을 쉽게 인식할 수 있을 것이다.
본 명세서, 특히 첨부된 청구항들에서 사용된 용어들은 일반적으로 “개방형” 용어들로 의도된다는 것은 통상의 기술자에 의해 이해될 수 있을 것이다. (예로, “포함하는”의 용어는 “포함하지만 ~에 제한되지 않는”, “갖는”의 용어는 “적어도 ~을 갖는”, “포함한다”의 용어는 “~에 제한되지 않지만 포함한다”로 해석되어야 한다.) 나아가, 특정한 개수의 도입 청구항 언급이 의도되면, 이러한 의도는 청구항 내에서 명시적으로 언급될 것이고, 이러한 언급의 부재시 이러한 의도는 존재하지 않음은 통상의 기술자에 의해 더 이해될 수 있을 것이다. 예를 들어, 이해를 돕기 위해, 하기의 첨부된 청구항들은 도입 문구들의 사용을 포함할 수 있다. 예를 들어, 도입 문구들은 청구항 언급들을 도입하기 위한 “적어도 하나” 그리고 “하나 이상”일 수 있다.
그러나, 동일한 청구항이 “하나 이상” 또는 “적어도 하나” 및 부정 관사들과 같은 소개 문구들(the introductory phrases)을 포함한다고 할지라도, 이러한 문구들의 사용은 부정 관사들(예로, “a” 또는 “an”)에 의한 청구항 언급의 도입이 임의의 특정 청구항을 제한하는 것으로 해석되어서는 안된다. 이 경우 특정 청구항은 오직 하나의 언급을 포함하는 예들에 대한 도입 청구항 언급을 포함한다. (예로, “a” 및/또는 “an”은 “적어도 하나” 또는 “하나 이상”을 의미하는 것으로 해석되어야 한다) 같은 논리가 청구항 언급들을 도입하기 위해 사용된 부정 관사들의 사용에 대하여도 적용된다. 더 나아가, 관습적으로 “A, B 또는 C 중 적어도 하나” 등이 사용되는 예들에서, 일반적으로 그러한 기재는 이러한 관습을 이해할 수 있는 통상의 기술자의 관점으로 의도된다. (예로, “A, B 또는 C 중 적어도 하나를 갖는 시스템”은 A만을 갖는 시스템, B만을 갖는 시스템, C만을 갖는 시스템, A 및 B를 함께 갖는 시스템, A 및 C를 함께 갖는 시스템, B와 C를 함께 갖는 시스템, 및/또는 A, B 및 C를 함께 갖는 시스템 등을 포함하나 이에 한정되는 것은 아니다)
두 개 또는 그 이상의 대체 용어들을 표현하는 사실상 모든 선언적인 단어 및/또는 문구는 용어들 중 어느 하나 또는 두 개의 용어들 전부를 포함하는 가능성들을 고려하여 이해되어야 한다는 점은 통상의 기술자에 의해 더 이해될 수 있을 것이다. 예를 들어, 문구 “A 또는 B”는 “A” 또는 “B” 또는 “A와B”의 가능성들을 포함하는 것으로 이해될 것이다.
도 1은 본 발명의 실시 예들에 따른 시스템의 개략도를 보여준다. 본 발명의 실시 예에서, 서버(100)는 네트워크(106)을 통해 복수의 노드들(102)에 연결된다. 본 명세서에서, 노드들(102)은 N개의 노드들이 102-1, 102-2 및 102-N들 이용하여 표현된다. 노드들(102)의 개수는 1이상의 모든 모든 수일 수 있다. 클라이언트(104)는 또한 서버(100) 및 노드들(102)에 연결된다.
서버(100) 및 노드들(102)은 분산 시스템(1)으로 구현된다. 예를 들어, 서버(100) 및 노드들(102)은 분산 데이터 스토리지 시스템, 분산 컴퓨팅 시스템 또는 이와 유사한 것으로 구현될 수 있다. 이러한 시스템(1)은 클라이언트(104)와 같은 고객들에게 서비스를 제공하도록 구현될 수 있다. 본 명세서에서, 하나의 클라이언트(104)가 도시되나, 임의의 개수의 클라이언트(104)가 분산 시스템(1)을 액세스하도록 구현될 수 있다.
서버(100) 및 노드들(102)은 임의의 분산 시스템(1)의 일부일 수 있다. 이 경우 노드(102)는 해당 노드(102)의 성능을 감소시키는 포그라운드(foreground) 또는 백그라운드(background)로 유지 동작들(maintenance operations)을 수행할 수 있다. 성능을 감소시키는 것은 노드(102)의 레이턴시의 증가, 노드(102)의 처리량의 감소 또는 이와 유사한 것을 포함한다. 즉, 유지 동작은 분산 스토리지 시스템의 데이터 스토리지 기능, 처리 기능과 또는 이와 유사한 것과 같은 노드(102)의 분산 기능들의 성능을 감소시킨다. 예를 들어, 성능을 감소시키는 것은 유지 동작이 완료될 때까지 반응하지 않는 노드(102)를 만드는 것을 포함할 수 있다. 하기에 설명되는 것과 같이, 가비지 콜렉션 동작(garbage collection operation)은 이러한 유지 동작의 한 예이다. 그러나, 다른 실시 예들에서, 리프레시 동작, 파일시스템 체크 동작, 웨어 레벨링 동작 또는 이와 유사한 것도 유지 동작일 수 있다. 나아가, 노드(102)에 의해 주기적으로 수행되거나, 노드(102)의 필요에 따라 수행되거나 노드(102)의 기능을 유지하고, 노드(102)의 수명을 증가시키고, 장래 성능을 증가시키는 임의의 동작은 유지 동작일 수 있다.
네트워크(106)는 임의의 형태의 통신 네트워크일 수 있다. 예를 들어, 네트워크(106)는 유선 네트워크, 무선 네트워크, 이들의 조합 또는 이와 유사한 것일 수 있다. 비록 네트워크(106)가 단일한 구성으로 도시되나, 네트워크(106)는 다양한 하위 네트워크들, 애드혹 네트워크, 메쉬 네트워크 또는 이와 유사한 것을 포함할 수 있다. 예를 들어, 네트워크(106)는 인터넷을 포함할 수 있다. 일부 실시 예들에서, 통신 네트워크는 SCSI(serial attached SCSI), SATA(serial ATA), NVMe(NVM Express), 파이버 채널(Fiber channel), 이더넷(Ethernet), RDMA(remote direct memory access), 인피니밴드(Infiniband) 또는 이와 유사한 것과 같은 통신 네트워크들을 포함할 수 있다.
서버(100)는 네트워크(106)를 통해 다른 장치들 및/또는 시스템들과 통신이 가능한 컴퓨팅 시스템일 수 있다. 예를 들어, 서버는 하나 이상의 프로세서들, 메모리들, 대용량 스토리지 장치들, 네트워크 인터페이스들, 유저 인터페이스들 또는 이와 유사한 것을 포함할 수 있다. 비록 서버(100)는 단일한 구성 요소로 도시되나, 서버(100)는 복수의 구성 요소들로 형성된 분산 시스템(a distributed system) 또는 집계 시스템(aggregate system)일 수 있다.
노드(102)는 분산 시스템에 의해 제공된 적어도 일부 측면의 서비스들을 수행하도록 구성된 시스템을 포함할 수 있다. 예를 들어, 노드(102)는 데이터 스토리지 노드일 수 있다. 실시 예들에서, 이러한 데이터 스토리지 노드는 플래시 메모리, 스핀 전달 토크 자기 저항 랜덤 액세스 메모리(STT-MRAM) 또는 상-변화 랜덤 액세스 메모리(Phase-Change RAM) 또는 이와 유사한 것과 같은 솔리드 스테이트 드라이브(SSD)일 수 있다. 다른 실시 예에서, 솔리드 스테이트 드라이브(SSD)는 노드(102)의 구성 요소일 수 있다. 또 다른 실시 예에서, 솔리드 스테이트 드라이브(SSD)는 이더넷(Ethernet) 또는 다른 통신 네트워크를 통해 노드(102)에 연결될 수 있다. 비록 솔리드 스테이트 드라이브(SSD)는 노드(102), 노드(102)의 일부 또는 노드(102)에 연결된 구성 요소로 사용되나, 다른 형태의 스토리지 장치가 사용될 수도 있다. 또 다른 실시 예에서, 노드(102)는 프로세싱 시스템일 수 있다. 비록 노드들(102)의 다른 예들이 주어지나, 다른 형태의 노드들(102)은 분산 시스템(1)으로 보여질 수 있다.
도 2는 본 발명의 실시 예들에 따른 유지 동작을 시작하는 기술에 관한 순서도이다. 도 1의 시스템은 일 실시 예로 이용된다. 도 1 및 도 2를 참조하면, S200 단계에서, 하나의 노드(102)는 유지 동작을 수행하기 위해 노드들(102) 중에서 서버(100)에 의해 선택된다. 본 명세서에서 설명되는 유지 동작(the maintenance operation)은 선택된 노드(102)에 의해 수행되며 선택된 노드(102)의 성능을 감소시키는 동작이다.
서버(100)는 다양한 방식으로 노드(102)를 선택할 수 있다. 실시 예들에서, 서버(100)는 노드들(102)에 대한 액세스 요청들을 감시(monitor)하도록 구성될 수 있다. 예를 들어, 서버(100)는 노드(102)를 선택하기 위하여 클라이언트(104)로부터 액세스 요청들에 대한 기록 데이터(historical data)를 이용하도록 구성될 수 있다. 예를 들어, 서버(100)는 노드(102)에 대한 액세스 요청들의 양이 임계 값 이하이거나 동등한지 여부를 결정하도록 구성될 수 있다. 또 다른 예로, 서버(100)는 노드(102)에 대한 과거 액세스 요청들(historical access requests)을 분석하도록 구성될 수 있다. 그리고 서버(100)는 액세스 요청들이 절대(absolute) 또는 극소(local minimum)에 있는 기간이 있는지를 판단하도록 구성될 수 있다. 다른 예에서, 서버(100)는 노드(102)와 관련된 액세스 요청들의 특정 시퀀스(particular sequence)의 종료를 식별하도록 구성될 수 있다. 시퀀스의 종료 이후, 서버(100)는 노드(102)를 선택하도록 구성될 수 있다.
다른 실시 예들에서, 서버에 의한 노드(102)의 선택은 미리 정해진 알고리즘에 따른 것일 수 있다. 예를 들어, 무작위 선택 또는 의사무작위 선택(pseudo-random selection)은 노드들(102) 사이에서 이뤄질 수 있다. 다른 예들에서, 라운드 로빈 선택(a round-robin selection)은 노드들(102) 사이에서 이뤄질 수 있다. 또 다른 예에서, 노드들(102)의 선택은 스케줄에 따라 수행될 수 있다. 몇몇 실시 예들에서, 서버(100)는 충분한 수의 노드들이 예측된 액세스 요청들(anticipated access requests)을 처리할 수 있는지를 판단하도록 구성될 수 있다. 만약 그런 경우라면, 서버(100)는 노드(102)를 선택할 수 있다. 비록 노드(102)를 선택하기 위한 다양한 기술들이 앞서 설명되었으나, 임의의 기술이 노드(102)를 선택하기 위해 이용될 수 있다.
서버(100)는 메모리 또는 다른 데이터 스토리지 장치를 포함할 수 있다. 그리고 주어진 노드(102)가 선택되었는지 여부를 판단하기 위해, 서버(100)는 노드들(102)에 대한 유지 동작들의 스케줄을 저장하고, 프로세서 또는 이와 유사한 것들에 의해 분석될 수 있는 액세스 요청들과 관련된 정보를 기록하도록 구성될 수 있다. 또한 서버(100)는 메모리 또는 다른 데이터 스토리지 장치에 선택 알고리즘의 상태(state)를 저장할 수 있다.
일단 노드(102)가 선택되면, S202 단계에서 유지 서버(100)는 선택된 노드(102)가 유지 동작을 하는 것을 지시하도록 구성될 수 있다. 예를 들어, 서버(100) 및 노드(102) 각각은 네트워크 인터페이스들을 포함할 수 있다. 서버(100)는 네트워크(106)를 통해 명령(instruction)을 선택된 노드(102)에 전송할 수 있다. 이 경우, 명령(instruction)에 의해 수행될 유지 동작, 유지 동작을 위한 시간 길이 또는 이와 유사한 것이 식별된다. 특정 예에서, 서버(100)는 선택된 노드(102)에 전송되는 하트 비트 메시지(heartbeat message)의 명령(instruction)을 포함할 수 있다.
S204 단계에서, 서버(100)는 선택된 노드(102)를 기반으로 액세스 요청들에 응답할 수 있다. 특히, 서버(100)는 액세스 요청들에 대한 우선 순위를 (prioritizing)두거나, 액세스 요청들을 재 라우팅(rerouting)하거나, 액세스 요청들에 대한 응답들을 재 구성(reorganizing)하거나, 액세스 요청들에 응답하여 선택된 노드(102) 이외의 노드들(102)을 지정(designating)하거나 이와 유사한 방식을 통해 액세스 요청들에 응답할 수 있다. 그 결과, 노드들(102)로 라우팅된 액세스 요청들로 인한 시스템(1)의 성능 저하는 감소될 수 있다. 다시 말해, 액세스 요청들이 다른 노드들(102)로 라우팅(routing)된다면, 액세스 요청의 처리는 유지 동작을 수행하는 선택된 노드로 인한 성능의 감소를 겪지 않을 것이다. 실시 예들에서, 서버(100)는 노드들에 의해 수행될 유지 동작들을 위한 명시적인 시간들을 생성할 수 있다. 그 결과, 시스템(1)의 표면적인 성능 측면에서 노드들(102)에 의한 유지 동작들의 성능의 영향은 감소된다.
실시 예들에서, 일단 노드(102)가 명령(instruction)에 따른 처리를 완료하면, 서버(100)는 일반적인 방식으로 선택된 노드(102)를 이용한 액세스 요청들에 응답하도록 구성될 수 있다. 예를 들어, 일단 노드(102)가 특정한 시간 길이 동안 유지 동작을 수행한다면, 노드(102)는 시스템(1)의 분산 기능들을 위해 이용 가능한 노드들(102)의 서버(100)에 의해 유지되는 노드들(102)의 집단(pool)으로 반환될 수 있다.
도 3은 다른 실시 예에 따른 유지 동작을 시작하는 기술에 관한 순서도이다. 도 1의 시스템은 예로 다시 사용될 수 있다. 도 1 및 도 3을 참조하면, S300 단계에서, 서버(100)는 노드(102)가 유지 동작을 수행하기 위한 시간을 결정하도록 구현될 수 있다. 예를 들어, 서버(100)는 스케줄에 따라 노드들(102)을 선택하도록 구현될 수 있다. 스케줄은 노드(102)가 유지 동작을 수행하는 시간으로 정의할 수 있다. S302 단계에서, 후보 노드(102)를 위한 시간이 발생할 때, 서버(100)는 후보 노드(102)를 선택된 노드(102)로 선택하도록 구현된다. 다른 실시 예에서, 서버(100)는 노드(102)가 유지 동작을 수행하기 위한 시간을 생성할 수 있다. 유지 동작이 수행될 때 비록 시간을 결정하는 특정 예들이 주어질 수 있으나, 유지 동작을 수행하기 위한 시간을 결정하는 다른 기술들이 사용될 수 있다.
그럼에도 불구하고, 다른 실시 예들에서, 서버(100)는 노드(102)에 유지 동작을 수행하기 위한 명시적 시간을 제공할 수 있다. 알려진 알고리즘 또는 유사한 것에 따라 시간이 예정될 때, 유지 동작의 수행에 의한 효과들(예로, 감소된 성능)은 클라이언트(104)로부터 숨겨질 수 있다. 특히, 노드들(102)에 대한 액세스들이 양적으로 혹은 크기적으로 감소한 시간 구간 동안, 유지 동작이 발생하도록 예정될 수도 있다. 그리고 나서 노드(102) 또는 노드들(102)이 유지 동작을 수행하는 동안, 시스템(1)의 추가적인 용량은 액세스 요청들을 수용할 수 있다.
게다가, 실시 예들에서, 서버(100)는 유지 동작이 수행 될 시간 길이를 결정하도록 구현될 수 있다. 그러므로, 서버(100)는 유지 동작이 노드(102)에 의해 수행되어야 할 시점뿐만 아니라 유지 동작이 수행될 방식도 관리할 수 있다. 그 결과, 서버(100)는 노드들(102)의 사용 가능성(the availability)을 관리할 수 있다.
일부 실시 예들에서, 서버(100)는 선택된 노드(102)가 유지 동작을 시간 길이 동안 수행하도록 지시하도록 구성될 수 있다. 이러한 시간 길이는 다양한 요소들을 기반으로 할 수 있다. 예를 들어, 시간 길이는 미리 결정된 시간의 양일 수 있다. 또 다른 예로, 시간 길이는 복수의 노드들(102)과 노드들(102) 전부에 대한 유지 동작을 수행할 바람직한 주기 시간(cycle time)을 기반으로 할 수 있다.
또 다른 예로, 시간 길이는 노드(102)가 충분하게 전반적인 시스템 성능의 영향을 받지 않고 감소된 성능을 갖는 시간의 양일 수도 있다. 다른 예로, 시간의 양은 노드(102)가 유지 동작을 완료하는데 소요되는 평균적인 시간의 양일 수 있다. 특히, 일부 실시 예들에서, 서버(100)는 유지 동작을 수행하는 노드들(102)에 의해 소요된 시간을 감시하도록 구성될 수 있다. 그리고 서버(100)는 유지 동작을 완료하기 위한 평균적인 시간, 시간들의 분배 또는 이와 유사한 것을 판단하기 위한 시간들을 분석하도록 구성될 수 있다. 이런 분석으로부터, 서버(100)는 노드들(102)이 유지 동작을 수행하는 시간 길이를 생성하도록 구성될 수 있다. 노드들(102)이 유지 동작을 수행하도록 지시된 시간 길이는 평균 시간, 유지 동작을 수행하기 위한 시간들의 분배 또는 이와 유사한 것을 기반으로 할 수 있다.
실시 예들에서, 비록 노드(102)는 특정 시간 길이에 대하여 유지 동작을 수행하도록 지시를 수신하지만, 노드(102)는 다른 조건이 발생할 때까지 유지 동작을 수행할 수 있다. 예를 들어, 원자 동작들의 특정한 양(a particular quantity of atomic operations)이 수행될 때까지, 노드(102)는 특정한 유지 동작을 수행할 수 있다. 그러한 원자 동작들은 블록을 소거, 파일 시스템의 이노드(inode) 처리 또는 이와 유사한 것을 포함할 수 있다.
실시 예들에서, 각 노드(102)가 유지 동작을 수행하도록 지시된 시간 길이는 다른 노드들(102)의 시간 길이와 다를 수 있다. 예를 들어, 시간 길이는 노드(102)의 하나 이상의 속성들, 노드(102)가 유지 동작을 수행하는 시간 길이, 노드(102)가 시간 구간 내 수행하는 복수의 원자 동작들 또는 이와 유사한 것에 기반할 수 있다. 그리고 이러한 것들은 노드들(102) 사이에서 다를 수 있다. 서버(100)는 이런 정보를 획득하기 위해 각 노드(102)를 조회하거나 노드들(102)의 성능을 감시하도록 구성될 수 있다.
실시 예들에서, 노드들(102) 각각은 원자 동작을 위한 시간 길이에 대한 정보에 응답하도록 구성될 수 있다. 시간 길이가 시간에 따라 증가하여 임계 값 보다 커지는 경우라면, 유지 동작은 더 느린 성능을 수용하기 위한 더 긴 시간의 구간 동안 수행될 필요가 있을 수 있다. 따라서, 서버(100)는 노드(102)가 다른 노드(102)보다 더 긴 시간 구간 동안 유지 동작을 수행하는 것을 예정하도록 구성될 수 있다.
다른 실시 예들에서, 노드들(102) 각각은 유지 동작을 수행할 것이 요구되는 시간을 양에 응답하도록 구성될 수 있다. 예를 들어, 노드(102)는 소를 위한 후보들인 복수의 블록들을 기록하기 위해 구성될 수 있다. 노드(102)는 복수의 블록들을 소거하기 위해 요구된 시간을 계산하도록 구성될 수 있다. 노드(102)는 그 시간을 갖는 서버에 응답할 수 있다. 시간의 양을 결정하는 것은 특정 기술에 제한되는 것이 아니라, 다양한 기술들이 사용될 수 있다.
다른 실시 예들에서, 시간의 길이는 유지 동작의 결과를 기반으로 할 수 있다. 예를 들어, 노드(102)는 유지 동작을 수행하고, 유지 동작의 결과들을 가리키는 서버(100)에 응답하도록 구성될 수 있다. 서버(100)에 의해 나타난 시간 길이 동안 유지 동작을 수행한 이후라면, 노드(102)는 서버(100)에 얼마나 많은 유지 동작의 원자 동작들이 완료되었는지를 통지할 수 있다. 만약 바람직한 개수가 완료되지 않은 경우라면, 서버(100)는 노드(102)가 유지 동작을 수행하도록 지시받는 다음 시간 동안 시간 길이를 증가시킬 수 있다. 비록 서버(100)가 유지 동작을 수행하기 위해 노드(102)에 대한 시간 길이를 사용자 정의하는데 사용될 수 있는 특정 기술들이 예들로서 이용되었으나, 다른 실시 예들에서, 다른 기술들 및/또는 기술들의 조합은 이용될 수 있다.
시간 길이가 동작들, 측정들 또는 이와 유사한 것의 결과들에 기반한 일부 실시 예들에서, 추가 시간의 양은 유지 동작들 또는 측정들에 의해 나타난 시간 길이에 더해질 수 있다. 예를 들어, 추가 시간의 양은 통신, 레이턴시, 유지 동작의 성능 또는 이와 유사한 것의 이용 가능성에 대한 일부 마진을 제공하기 위해 더해질 수 있다.
시간 길이는 유지 동작을 수행하는 노드(102)에 대한 조건의 예로서 사용될 수 있는 반면에, 유지 동작, 다른 조건들은 시간 길이를 대신하거나 시간 길이에 다하여 이용될 수 있다. 예를 들어, 유지 동작은 페이지들의 개수, 블록들, 원자 동작들(atomic operations) 또는 다른 측정 가능한 양과 관련될 수 있다. 도 2의 S202 단계에 제공된 서버(100)로부터의 명령은 양의 표시(an indication of the quantity)를 포함할 수 있다. 그러므로, S202 단계의 명령에 응답하여, 표시된 양이 달성될 때까지 노드(102)는 유지 동작을 수행하도록 구성될 수 있다.
실시 예들에서, 복수의 조건들은 함께 결합될 수 있다. 예를 들어, 도 2의 S202 단계에서 제공되는 서버(100)로부터 명령은 시간 길이(a length of time) 및 양의 표시(an indication of a quantity)를 모두 포함할 수 있다. 그러므로, S202 단계의 지시에 응답하여, 조건들이 모두 만족될 때까지 노드(102)는 유지 동작을 수행할 수 있다. 즉, 실시 예들에서, 시간이 경과하고 양이 달성될 때까지, 노드(102)는 유지 동작을 수행할 수 있다. 다른 실시 예들에서, 시간이 경과하거나 양을 달성하는 것과 같은 조건들 중 하나가 달성될 때까지, 노드(102)는 유지 동작을 수행할 수 있다.
실시 예들에서, 다른 조건들은 시간과 연관될 수 있다. 예를 들어, 상대적으로 알려지고/지거나 일정한 원자 동작(an atomic operation)은 시간 길이가 소요될 수 있다. 즉, 서버(100)가 노드(102)에 특정한 개수의 유지 동작의 단위들을 수행하도록 지시하더라도, 그러한 양은 시간의 양으로 변환될 수 있다.
실시 예들에서, 서버(100)가 노드들(102)에 시간 길이 동안 유지 동작을 수행할 것을 지시하기 때문에, 서버(100)는 유지 동작들의 발생을 예정할 수 있을 것이다. 만약 노드(102)에 제공된 조건이 시간으로 변환 가능한 경우, 서버(100)는 여전히 노드들(102)의 유지 동작들의 성능을 예정할 수 있을 것이다.
실시 예들에서, S304 단계에서, 서버(100)는 선택된 노드(102)가 유지 동작을 종료하도록 지시할 수 있다. 예를 들어, 분산 시스템(1)에 대한 로드(load)는 증가할 수 있다. 이에 응답하여, 노드가 유지 동작을 수행하는 것에 기인한 성능의 감소 없이 액세스 요청들에 응답할 수 있도록 하기 위해, 서버(100)는 선택된 노드(102)가 유지 동작을 종료하도록 지시할 수 있다. 다른 예로, 서버(100)는 노드(102)가 유지 동작을 수행하고 있는 중 시간의 양이 임계값 이상인지 여부를 판단하도록 구성될 수 있다. 만약 그렇다면, S304 단계에서, 서버(100)는 선택된 노드가 유지 동작을 종료하도록 지시할 수 있다.
실시 예들에서, 선택된 노드(102)에 전송된 명령은 유지 동작을 종료하는 명령 이상의 정보를 포함할 수 있다. 예를 들어, 명령은 노드(102)가 종료 전에 유지 동작을 계속 수행해야 하는 시간의 양을 포함할 수 있다. 다른 예로, 명령은 유지 동작을 종료 전에 수행할 복수의 원자 동작들(atomic operations)을 포함할 수 있다. 유지 동작의 종료 이전, 동안 및/또는 이후의 노드(102)의 동작에 관한 모든 정보는 명령에 포함될 수 있다.
도 4는 본 발명의 실시 예들에 따른 도 1의 시스템의 액세스 요청을 나타내는 개략도를 보여준다. 도 5는 일부 실시 예들에 따른 액세스 요청에 응답하는 기술에 관한 순서도이다. 도 4 및 도 5를 참조하면, 실시 예들에서, 클라이언트(104)는 액세스 요청(401)을 네트워크(106)를 통해 서버(100)에 전송할 수 있다. S500 단계에서, 서버(100)는 액세스 요청(401)을 수신한다. 본 명세서에서, 액세스 요청(401)은 “리소스 A”로 나타난다. “리소스 A”는 분산 시스템(1)의 일부로 노드들(102)에 의해 제공된 파일(file), 프로세싱 리소스(processing resource), 가상 서버(a virtual server), 스토리지 공간(storage space) 또는 이와 유사한 것을 나타낼 수 있다.
그러나, 노드(102-1)는 앞서 언급된 유지 동작을 수행하고 있다. 그러므로, 서버(100)가 노드(102-1)에 유지 동작을 수행할 것을 지시하였기 때문에, 노드(102-1)는 감소된 성능을 갖거나 또는 이용 불가능할 수 있다. 본 명세서에서, 액세스 요청(401)이 서버(100)에 의해 수신될 때, 노드(102-1)가 유지 동작을 수행하는 것을 나타내기 위해, 노드(102-1)는 다른 패턴을 갖는 것으로 도시된다.
서버(100)가 액세스 요청(401)을 수신한 때, 서버(100)는 유지 동작을 수행 중인 노드들(102)을 식별하는 데이터베이스를 액세스할 수 있다. 이러한 예에서, 데이터 베이스는 노드(102-1)를 식별할 수 있다. 즉, 서버(100)는 이전에 노드(102-1)가 유지 동작을 수행할 것을 지시하였고, 유지 동작을 수행하면서 노드(102-1)를 식별하는 데이터베이스를 업데이트하였고, 이러한 정보는 서버(100)의 데이터베이스에 보유된다.
서버(100)는 데이터베이스에서 식별된 노드들을 기반으로 액세스 요청(401)에 대한 응답(403)을 생성하고, 응답(403)을 갖고 액세스 요청(401)에 응답할 수 있다. 본 명세서에서, 액세스 요청(401)에 대한 응답(403)은 유지 동작을 수행하는 노드(102-1)의 식별(identification)을 포함하지 않는다. 대신, 응답(403)은 현재 유지 동작을 수행하지 않는 N2, N3 및 N6으로 각각 표현된 노드들(102-2, 102-3, 102-6)과 일치한다. 따라서, 서버(100)는 액세스 요청이 유지 동작을 수행하지 않고 있는 노드들(102) 쪽으로 향하도록 할 수 있다. 실시 예들에서, 유지 동작을 수행 중인 노드(102-1)는 액세스 요청(401)을 처리하는 것이 가능할 수 있다. 그러나, 노드(102-1)는 유지 동작을 수행 중이기 때문에, 노드(102-1)는 응답(403)로부터 생략된다.
도 6은 본 발명의 다른 실시 예에 따른 도 1의 시스템에서 액세스 요청을 보여주는 개략도이다. 도 7은 다른 실시 예에 따른 액세스 요청에 응답하는 기술에 관한 순서도이다. 도 6 및 도 7을 참조하면, 실시 예에서, 시스템은 도 4와 같은 유사한 상태에 있다. 즉, 노드(102-1)는 유지 동작을 수행할 것을 지시받는다. 다시 S700 단계에서, 서버(100)는 액세스 요청(601)을 수신한다. 도 4에 관하여 앞서 설명된 예와는 반대로, 실시 예에서, S702 단계에서, 서버(100)에 의해 제공된 응답(603)은 유지 동작을 수행하도록 지시된 노드(102-1)의 식별을 포함한다.
본 명세서에서, 응답(603)은 “N1”으로 표현된 노드(102-1)의 식별을 포함한다. 그러나, 노드들(102)은 응답(603)으로 우선 순위에 따라 리스트된다. 노드(102-1)는 더 낮은 우선 순위 위치에 있다. 클라이언트(104)가 리소스 A를 액세스하려고 시도할 때, 클라이언트(104)는 처음으로 노드(102-2), 그 액세스가 실패하면 노드(102-3), 노드들(102-2, 102-3) 모두에 대한 액세스가 실패하면 노드(102-1)을 액세스하려고 시도할 것이다. 그 결과, 만약 노드들(102-2, 102-3) 모두가 응답이 불가한 경우, 노드(102-1)에 의한 유지 동작의 성능은 클라이언트(104)에 의해 인식된 성능에 영향을 줄 수도 있다.
비록 단일 노드들을 액세스하는 것이 예로서 사용되더라도, 실시 예들에서, 응답(603)에서 복수의 노드들(102)은 액세스될 수 있다. 예를 들어, 클라이언트(104)는 응답에 따라 식별된 제 1 및 제 2 노드들(102)을 액세스할 수 있다. 그러므로, 클라이언트(104)는 노드들(102-2, 102-3) 모두를 액세스하도록 시도할 것이고, 노드들(102-2, 102-3) 중 하나가 실패한다면 노드(102-1)을 액세스하도록 시도할 것이다. 다시, 만약 노드들(102-2, 102-3) 중 하나가 응답하는 것이 불가능하지 않다면, 클라이언트(104)에 의해 인식된 성능은 영향받지 않을 수도 있다.
실시 예들에서, 클라이언트(104)는 우선 순위에 따른 응답에 따라 식별된 모든 노드들(102)을 액세스할 수 있다. 그 결과, 클라이언트(104)는 마지막으로 노드(102-1)를 액세스할 수 있다. 노드(102-1)를 액세스하는 것을 시도하기 전에, 유지 동작을 수행하는 노드(102-1)로 인한 클라언트(104)에 의해 인식된 성능 페널티(performance penalty)의 적어도 일부는 노드들(102-2, 102-3)을 액세스하는데 소요된 시간에 의해 가려질 수 있다. 예를 들어, 앞서 설명된 것처럼, 노드(102-1)는 시간 길이 동안 유지 동작을 수행하는 것을 지시받을 수 도 있다. 클라이언트(104)는 다른 노드들에 대한 액세스들로 인해 노드(102-1)를 액세스하는 것을 준비할 때까지, 그러한 시간 길이는 경과하거나 시간 길이는 감소된 나머지 양을 갖을 것이다. 따라서, 클라이언트(104)는 즉시 노드(102-1)에 액세스할 수 있거나, 감소된 시간의 양이 경과할 때까지 대기할 수 있다.
도 8은 실시 예들에 따른 데이터 스토리지 시스템의 개략도이다. 도 8에 나타난 시스템은 도 1의 시스템과 유사할 수 있다. 그러나, 실시 예들에서, 서버(100) 및 노드들(102)은 분산 스토리지 시스템(8)의 네임 서버(800) 및 데이터 스토리지 노드들(802)일 수 있다. 게다가, 실시 예들에서, 노드들(802)이 수행하도록 지시된 유지 동작은 가비지 콜렉션 동작을 포함할 수 있다.
실시 예들에서, 네임 서버(800)는 분산 스토리지 시스템(8)에 저장된 데이터 및/또는 파일들에 대한 액세스들을 관리하도록 구성될 수 있다. 예를 들어, 네임 서버(800)는 네트워크 인터페이스 및 메모리와 연결된 프로세서를 포함할 수 있다. 예를 들어, 메모리는 휘발성 또는 불휘발성 메모리, 대용량 스토리지 장치 또는 이와 유사한 것일 수 있다. 메모리는 데이터 및/또는 노드들(802)에 대한 파일들과 관련되는 데이터베이스를 저장하도록 구현될 수 있다. 게다가, 메모리는 어떤 노드들(802)이 가비지 콜렉션을 수행하도록 지시받았는지에 대한 표시(indication)를 저장할 뿐만 아니라 노드들(802)이 가비지 콜렉션을 수행할 시점 및/또는 수행 기간을 결정하는 알고리즘의 상태들을 저장하도록 구성될 수 있다.
실시 예들에서, 데이터 스토리지 노드들(802)은 솔리드 스테이트 드라이브(SSD)들을 포함할 수 있다. 솔리드 스테이트 드라이브(SSD)들에 수행된 가비지 콜렉션 동작은 읽기 또는 쓰기 동작들과 같은 다른 동작들에 비해 수행하는데 긴 시간이 소요되는 소거 동작들을 포함할 수 있다. 데이터 스토리지 노드(802)는 복수의 솔리드 스테이트 드라이브(SSD)들을 포함할 수 있다. 게다가,
데이터 스토리지 노드(802)의 성능을 감소시킬 수 있는 동작들을 수행하기 위해서, 데이터 스토리지 노드(802)는 네임 서버(800)에 의해 지시받을 수 있는 다른 장치들 및/또는 시스템들을 포함할 수 있다. 실시 예들에서, 시스템(8)은 솔리드 스테이트 드라이브(SSD)들이 클러스터들 내에 배치되는 엔터프라이즈 환경에 있을 수 있다. 본 명세서에서 설명된 것처럼 가비지 콜렉션의 성능은 클러스터들 내에 솔리드 스테이트 드라이브(SSD)들에 대한 전반적인 쓰기/읽기 성능을 증가시킬 수 있다.
앞서 설명된 서버(100)와 유사하게, 네임 서버(800)는 노드들(802)에 의한 가비지 콜렉션의 성능을 예정 및/또는 관리하도록 구성될 수 있다. 실시 예들에서, 네임 서버(800)는 데이터 스토리지 노드들(802)에 대해 쓰기/읽기 요청들의 잠재적 일시 중지들(potential pauses)을 결정하도록 구성될 수 있다. 네임 서버(800)는 노드들(802)이 가비지 콜렉션을 수행하는 것을 지시하도록 구성될 수 있다. 특히, 네임 서버(800)는 요청들에 일시 중지들 동안 데이터 스토리지 노드들(802)이 가비지 콜렉션을 시작하는 것을 지시하도록 구성될 수 있다. 그 결과, 비지(busy) 쓰기/읽기 명령 구간들 동안 백그라운드로 수행되는 가비지 콜렉션으로 인한 성능의 감소는 감소되거나 제거될 수 있다.
앞서 설명된 것처럼, 스케줄에 따라 동작들은 특정 시간들 동안 시작될 수 있다. 따라서, 실시 예들에서, 데이터 스토리지 노드들(802)에서 가비지 콜렉션은 비슷하게 시작될 수 있다. 특히, 솔리드 스테이트 드라이브(SSD)들에서, 많은 프리 소거 블록들이 감소되고 더 많이 요구됨에 따라, 가비지 콜렉션은 시작될 수 있고 성능이 감소될 수 있다. 가비지 콜렉션의 성능을 예정하거나 네임 서버(800)에 의해 가비지 콜렉션이 관리되도록 함으로써, 가비지 콜렉션이 더 일찍 수행되었기 때문에 시스템은 솔리드 스테이트 드라이브(SSD)의 성능을 증가시킬 수 있다. 하기에 더 자세히 설명될 것처럼, 네임 서버(800)는 데이터 스토리지 노드들(802)이 현재 가비지 콜렉션을 수행하는 중이란 것을 고려한 요청들을 액세스하는 것에 응답할 수 있다.
실시 예들에서, 네임 서버(800)는 데이터 스토리지 노드(802)에 라우팅된 트래픽(traffic)을 감소 및/또는 중지시키도록 구성될 수 있다. 그 결과, 데이터 스토리지 노드(802)는 감소되거나 제거된 액세스를 갖는 가비지 콜렉션을 수행할 수 있다. 특히, 데이터 스토리지 노드(802)는 추후 쓰기들에 대응한 프리 소거 블록들을 생성하기 위한 가비지 콜렉션을 수행함에 있어 상대적으로 방해받지 않을 수 있다. 따라서, 미래 쓰기 및 읽기들은 향상된 성능을 경험할 것이다.
일단 데이터 스토리지 노드(802)가 특정 시간 길이 동안 가비지 콜렉션을 수행하는 것과 같은 가비지 콜렉션을 수행하는 것을 종료하고, 복수의 블록들을 자유롭게 하고, 가능한 한 많은 블록들을 자유롭게 하거나 다른 특정 조건을 달성하고 나면, 네임 서버(800)는 데이터 스토리지 노드(802)를 클라이언트(804)로부터 데이터 요청들을 수신하기 위해 가능한 집단(pool)으로 다시 삽입할 수 있다.
도 9는 본 발명의 실시 예들에 따라 도 8의 시스템에서 읽기 액세스 요청을 도시하는 개략도이다. 도 10은 본 발명의 실시 예들에 따라 읽기 액세스 요청에 대응하는 기술의 순서도이다. 도 9 및 도 10을 참조하면, 일부 실시 예들에서, S1000단계에서, 읽기 파일 요청(901)은 클라이언트로부터 네임 서버(800)에 의해 수신될 수 있다. 클라이언트(804)는 어떤 데이터 스토리지 노드들(802)이 요청 파일을 형성하는 블록들을 갖는지를 가리키는 응답 (response)을 예측할 수 있다.
S1002 단계에서, 네임 서버(800)는 요청 파일의 블록들이 저장되는 데이터 스토리지 노드들(802)을 식별하는 응답(903)을 생성할 수 있다. S1004 단계에서, 네임 서버(800)는 응답(903)을 클라이언트(804)에 전송할 수 있다. 특정한 예에서, 네임 서버(800)는 현재 유지 동작들을 수행 중인 데이터 스토리지 노드들(802)의 식별들(identifications)을 저장하는 데이터 서버를 액세스할 수 있다. 현재 유지 동작을 수행 중인 데이터 스토리지 노드들(802)의 요청 파일 또는 데이터가 저장된 데이터 스토리지 노드들(802)의 우선 순위를 배제시키거나 감소시킴으로써, 네임 서버(800)는 응답을 생성할 수 있다. 또는 네임 서버(800)는 유지 동작들을 수행할 수 있다. 응답(903)을 수신한 이후, S1006 단계에서, 클라이언트(804)는 응답(903)을 기반으로 데이터 스토리지 노드들(802)을 액세스하도록 구성될 수 있다.
특히, 가비지 콜렉션을 수행하는 데이터 스토리지 노드들(802)은 응답(903)에서 다른 데이터 스토리지 노드들(802)보다 더 낮은 우선 순위를 갖는 응답(903)에 따라 배열된다. 이런 예에서, 데이터 스토리지 노드(802-1)는 가비지 콜렉션을 수행 중이다. 그러므로, 액세스된다면, 데이터 스토리지 노드(802-1)의 성능은 감소될 수 있다.
응답(903)은 읽기 파일 요청(901)과 연관된 파일의 3가지의 다른 블록들(A, B, C)를 식별한다. 블록 A는 DN1, DN3 및 DN4로 표현된 데이터 스토리지 노드들(802-1, 802-2, 802-3, 802-4)에 저장된다. 그러나, 데이터 스토리지 노드(802-1)가 가비지 콜렉션을 수행 중일 때, DN1으로 표현된 데이터 스토리지 노드(802-1)는 블록 A에 대한 응답(903)에서 더 낮은 우선 순위 위치에 놓이게 된다. 즉, 클라이언트(804)는 맨 처음 데이터 스토리지 노드(802-3), 두 번째로 데이터 스토리지 노드(802-4) 그리고 맨 마지막에 데이터 스토리지 노드(802-1)에 블록 A를 액세스하는 것을 시도할 수 있다. 그 결과, 제거되지 않는다면 데이터 스토리지 노드(802-1)에 의해 수행되는 가비지 콜렉션이 블록 A의 읽기 성능에 영향을 줄 가능성은 감소된다.
응답(903)은 데이터 스토리지 노드들(802-4, 802-5, 802-8)을 블록 B를 저장하는 데이터 스토리지 노드들(802)로 식별한다. 그러나, 데이터 스토리지 노드들(802-4, 802-5, 802-8)이 가비지 콜렉션을 수행하고 있지 않기 때문에, 데이터 스토리지 노드들(802-4, 802-5, 802-8)은 더 이상 우선 순위에 놓이지 않을 수 있다.
응답(903)은 데이터 스토리지 노드들(802-1, 802-5, 802-6)을 블록 C를 저장하는 데이터 스토리지 노드들(802)로 식별한다. 블록 A와 유사하게, 가비지 콜렉션을 수행하는 데이터 스토리지 노드(802-1)는 블록 C를 저장하는 데이터 스토리지 노드들 중 하나이다. 그 결과, 데이터 스토리지 노드(802-1)는 응답(903)으로 데이터 스토리지 노드들(802-5, 802-6)보다 더 낮은 우선 순위를 갖는다. 그러므로, 클라이언트(803)는 앞서 설명된 블록 A와 유사하게 응답 (903)으로 규정된 순서로 데이터 스토리지 노드(802)를 액세스하는 것을 시도할 수 있다. 예를 들어, 클라이언트(803)는 블록 C에 대한 리스트의 제 1 데이터 스토리지 노드(802-5)를 액세스하는 것을 시도할 수 있다. 만약 실패한다면, 클라이언트(803)는 리스트의 제 2 데이터 스토리지 노드(802-6)를 액세스하는 것을 시도할 수 있다. 결국, 클라이언트(803)는 마지막 데이터 스토리지 노드(802-1)를 액세스하는 것을 시도할 수 있다. 다시 말해, 데이터 스토리지 노드(802-1)의 감소된 우선 순위로 인한 블록 C를 읽는 클라이언트(804)에 대한 영향이 제거되지 않는다면, 가비지 콜렉션을 수행하는 데이터 스토리지 노드(802-1)의 영향은 감소될 수 있을 것이다.
비록 하나의 가바지 콜렉션을 수행하는 데이터 스토리지 노드(802-1)만이 도시되었으나, 읽기 요청(901)이 수신될 때, 다른 데이터 스토리지 노드들(802)은 가비지 콜렉션을 수행 중일 수 있다. 따라서, 만약 읽기 요청들(901)과 연관된 블록들이 가비지 콜렉션을 수행하는 임의의 데이터 스토리지 노드들(802)에 저장된다면, 이러한 데이터 스토리지 노드들(802)은 더 낮은 우선 순위를 갖는 응답(903)에 더해질 수 있다.
도 11은 본 발명의 실시 예들에 따른 도 8의 시스템에서 쓰기 액세스 요청을 도시하는 개략도이다. 도 12는 본 발명의 실시 예들에 따른 쓰기 액세스 요청에 응답하는 기술에 관한 순서도이다. 도 11 및 도 12를 참조하면, 실시 예들에서, S1200 단계에서, 네임 서버(800)는 클라이언트(804)로부터 쓰기 액세스 요청(1101)을 수신할 수 있다. 이러한 예에서, 데이터 스토리지 노드(802-1)는 다시 가비지 콜렉션을 수행하는 중이다.
쓰기 액세스 요청(1101)에 응답하여, S1202 단계에서, 네임 서버(800)는 응답을 생성하도록 구성될 수 있다. 이 경우 응답은 현재 가비지 콜렉션을 수행 중인 데이터 스토리지 노드(802)를 식별하지 않는다. 실시 예들에서, 현재 가비지 콜렉션을 수행 중인 데이터 스토리지 노드(802)가 없다는 것은 응답(1103)으로 반환될 것이다. 본 명세서에서, 응답(1103)은 블록 A가 데이터 스토리지 노드들(802-2, 802-3, 802-4)에 쓰여져야 하고, 블록 B가 데이터 스토리지 노드들(802-2, 802-4, 802-5)에 쓰여져야 하고, 블록 C가 데이터 스토리지 노드들(802-5, 802-6, 802-7)에 쓰여져야 한다는 것을 가리킨다. 응답(1103)은 데이터 스토리지 노드들(802)의 모든 리스트들 내 데이터 스토리지 노드(802-1)를 포함하지 않는다.
실시 예들에서, 네임 서버(800)는 블록들이 한정된 수의 데이터 스토리지 노드들(802)에 걸쳐 복제되는 것을 허용하도록 구성된다. 예를 들어, 블록 A가 복제되는 복수의 데이터 스토리지 노드들(802)은 최대 3개까지로 제한될 수 있다. 네임 서버(800)는 복수의 데이터 스토리지 노드들(802)이 남아 있는 데이터 스토리지 노드들(802)이, 예를 들어 주어진 블록의 복제를 위한 데이터 스토리지 노드들(802)의 개수의 한계(limit)보다 크거나 같은 임의의 시간에 가비지 콜렉션에 진입하도록 구성될 수 있다. 그 결과, 쓰기 액세스 요청(1101)에 응답하기 위해 필요한 복수의 데이터 스토리지 노드들(802)은 현재 가비지 콜렉션을 수행 중인 임의의 데이터 스토리지 노드(802)를 식별하지 않고 이용 가능할 수 있다. 예로 최대 3 개의 데이터 스토리지 노드들(802)을 이용하기 때문에, 네임 서버(800)는 데이터 스토리지 노드들(802)에 의해 가비지 콜렉션의 성능을 예정할 수 있다. 이 경우 가비지 콜렉션을 수행하지 않는 데이터 스토리지 노드들(802)의 개수는 3개 이상이거나 같게 된다.
실시 예들에서, 네임 서버(800)는 잠재적 가비지 콜렉션(potential garbage collection)에 대한 데이터 스토리지 노드들(802)의 식별에 근거하도록 구성될 수 있다. 예를 들어, 데이터 스토리지 노드(802-1)가 가비지 콜렉션을 완료한 이후 네임 서버(800)가 가비지 콜렉션이 예정된 데이터 스토리지 노드(802-2)를 갖는 경우, 네임 서버(800)는 응답(1103)으로부터 데이터 스토리지 노드(802-2)를 생략할 수 있다. 네임 서버(800)는 대신 최근 가비지 콜렉션을 완료한 데이터 스토리지 노드(802)와 같은 다른 데이터 스토리지 노드(802)를 이용할 수 있다.
다른 실시 예들에서, 응답(1103) 내 데이터 스토리지 노드들(802)의 배분(distribution)는 예정된 가비지 콜렉션을 기반으로 선택될 수 있다. 예를 들어, 이용 가능한 데이터 스토리지 노드들(802)은 응답(1103)으로 반환될 수 있다. 이 경우 응답(1103)은 이러한 데이터 스토리지 노드들(802) 중 하나가 가비지 콜렉션을 수행할 것을 지시받는 때, 가비지 콜렉션을 수행하는 데이터 스토리지 노드(802)에 의해 잠재적으로 영향받는 복수의 블록들이 최소화되는 것일 수 있다. 특별한 예로, 응답(1103)은 데이터 스토리지 노드(802)의 배분을 포함할 수 있다. 이러한 데이터 스토리지 노드(802)의 사용량의 개수는 실질적으로 동일하다.
일단 응답(1103)에 대한 데이터 스토리지 노드(802)가 결정되고 응답(1103)이 생성되면, S1204 단계에서, 네임 서버(800)는 클라이언트(804)에 응답할 수 있다. 그 결과, S1206 단계에서, 클라이언트(804)는 데이터 스토리지 노드들(802)에 응답(1103)을 기입할 수 있다. 이러한 예로, 응답(1103)으로 어떠한 데이터 스토리지 노드들(802)도 가비지 콜렉션을 수행하는 데이터 스토리지 노드(802-1)를 포함하진 않는다. 그 결과, 클라이언트(804)는 가비지 콜렉션을 수행하는 데이터 스토리지 노드(802-1)에 영향받지 않게 된다.
도 13은 본 발명의 실시 예들에 따라 도 8의 시스템의 변경 쓰기 액세스 요청을 도시하는 개략도이다. 도 14는 본 발명의 실시 예들에 따라 변경 쓰기 액세스 요청에 응답하는 기술의 순서도이다. 도 13 및 도 14를 참조하면, 실시 예들에서, S1400 단계에서, 네임 서버(800)는 클라이언트(804)로부터 변경 쓰기 액세스 요청(1301, a modify write access request)을 수신할 수 있다. 이런 실시 예에서, 데이터 스토리지 노드(802-1)는 다시 가비지 콜렉션을 수행 중일 수 있다. 본 명세서에서, 네임 서버(800)의 동작들 그리고 특히 도 14의 S1400, S1402, S1404 및 S1406 단계는 도 12의 관점에서 앞서 언급된 네임 서버(800)와 유사할 수 있다. 그러나, 실시 예에서 쓰기(write)는 존재하는 블록들을 변경하는 것이기 때문에, 네임 서버(800)는 현재(또는 아마도 곧) 가비지 콜렉션을 수행하는 데이터 스토리지 노드들(802)을 생략할 수 없다.
데이터 스토리지 노드(802-1)의 가비지 콜렉션이 클라이언트(804)의 쓰기에 대해 갖는 영향을 감소시키기 위해, 가비지 콜렉션을 수행 중인 데이터 스토리지 노드들(802)이 리스트에서 감소된 우선 순위를 가는 경우, 네임 서버(800)는 응답(1303)으로 데이터 스토리지 노드들(802)의 순서를 정하도록 구성될 수 있다. 데이터가 결국 블록 A 및 C에 대한 데이터 스토리지 노드(802-1)에 쓰여진 동안, 가비지 콜렉션으로 인한 지연은 이러한 블록들에 대한 더 높은 우선 순위의 데이트 스토리지 노드들(802)에 기입하기 위해 소요된 시간에 의해 가려질 수 있다.
실시 예들에서, 클라이언트(804)는 주어진 블록에 대한 응답(1303)으로 제 1 데이터 스토리지 노드(802)에만 기입하도록 구성될 수 있다. 데이터 스토리지 노드(802)는 쓰기 데이터를 리스트의 다른 데이터 스토리지 노드들(802)에 전달하도록 구성될 수 있다. 예를 들어, 응답(1303)의 블록 A에 대하여, 데이터 스토리지 노드(802-3)는 데이터를 데이터 스토리지 노드(802-4)에 기입할 수 있다. 그리고 데이터 스토리지 노드(802-4)는 데이터 스토리지 노드(802-1)에 기입할 수 있다. 데이터 스토리지 노드(802-4)가 쓰기를 시도할 때 데이터 스토리지 노드(802-1)는 여전히 가비지 콜렉션을 수행 중이기 때문에, 쓰기(a write)가 데이터 스토리지 노드(802-1)에 대해 수행될 때까지 하나 이상의 클라이언트(804), 데이터 스토리지 노드(802-3), 데이터 스토리지 노드(802-4) 및 데이터 스토리지 노드(802-1)는 데이터를 버퍼링(buffer)할 수 있다.
가비지 콜렉션이 분산 스토리지 시스템(8)과 관련한 유지 동작(the maintenance operation)의 예로 이용되는 동안, 노드에 의해 수행된 유지 동작은 다를 수 있거나 다른 동작들을 포함할 수 있다. 예를 들어, 유지 동작은 파일 시스템(filesystem)의 유지 동작을 포함할 수 있다.
도 15는 본 발명의 실시 예들에 따른 노드의 유지 동작을 예정하는 기술에 관한 순서도이다. 도 1의 시스템은 일 예로 이용될 수 있을 것이다. 도 1 및 도 15를 참조하면, S1500 단계에서, 노드(102)는 시간 길이(the length of time) 동안 유지 동작을 수행하기 위한 명령(a command)을 수신할 수 있다. 이에 대한 응답으로, S1502 단계에서, 노드는 시간 길이(the length of time) 동안 유지 동작을 수행할 수 있다. 도 8 및 도 15를 참조하면, 데이터 스토리지 노드(802)는 유사하게 시간 길이(the length of time) 동안 유지 동작을 수행하기 위한 명령을 수신할 수 있다. 그리고 나서 데이터 스토리지 노드(802)는 시간 길이(the length of time) 동안 유지 동작을 수행할 수 있다.
도 16은 본 발명의 다른 일 실시 예를 따른 노드의 유지 동작을 예정하는 기술에 관한 순서도이다. 도 16의 도시하는 기술은 도 15와 유사할 수 있고, 특히 앞서 설명된 도 15 및 도 1 또는 도 8과 관련하여 유사할 수 있다. 그러나, 이런 실시 예에서, 시간 길이가 경과하거나 조건(a condition)이 발생할 때까지, 도 1의 노드(102) 또는 도 8의 데이터 스토리지 노드(802)는 각각 유지 동작 또는 가비지 콜렉션을 수행하도록 구성될 수 있다. 앞서 언급된 것처럼, 조건은 유지 동작의 완료, 복수의 원자 동작들(atomic operations)의 완료, 복수의 블록들의 소거 또는 이와 유사한 것일 수 있다.
비록 구조들, 방법들 그리고 시스템들이 특정 실시 예들에 따라 설명되었으나, 통상의 기술자는 개시된 실시 예들에 많은 변형들이 가능하고, 이러한 변형들은 본 명세서에서 개시된 장치, 방법 및 시스템의 기술적 사상의 범위 내에서 고려되어야 한다는 것을 쉽게 이해할 수 있을 것이다. 따라서, 첨부된 청구항들의 사상 및 범위를 벗어나지 않으면서, 많은 변형들이 통상의 기술자에 의해 이루어질 수 있다.
1: 분산 시스템 100: 서버
102: 노드들 104: 클라이언트
106: 네트워크 401: 액세스 요청
403: 응답 601: 액세스 요청
603: 응답 800: 네임 서버
802: 노드들 804: 클라이언트
806: 네트워크 901: 읽기 파일 요청
903: 응답 1101: 쓰기 액세스 요청
1103: 응답 1301: 변경 쓰기 요청
1303: 응답

Claims (10)

  1. 서버를 포함하는 시스템에 있어서:
    상기 서버는 복수의 노드들에 연결되고, 유지 동작을 수행하기 위해 상기 노드들 중에서 하나의 노드를 선택하고, 상기 선택된 노드가 상기 유지 동작을 수행하도록 지시하고, 상기 선택된 노드를 기반으로 요청들을 액세스하도록 응답하는 시스템.
  2. 제 1 항에 있어서,
    상기 노드들은 데이터 스토리지 노드이고, 상기 유지 동작은 가비지 콜렉션을 포함하는 시스템.
  3. 제 1 항에 있어서,
    상기 서버는 상기 노드들 중 후보 노드의 예측 액세스들(predicted accesses)의 크기가 임계값 이하인 타임(time)을 판단하고, 상기 타임이 발생할 때 상기 후보 노드를 상기 선택된 노드로 선택하도록 구성된 시스템.
  4. 제 1 항에 있어서,
    상기 서버는 상기 선택된 노드가 시간 길이(a length of time) 동안 상기 유지 동작을 수행하는 것을 지시하도록 구성된 시스템.
  5. 제 4 항에 있어서,
    상기 서버는 상기 시간 길이를 결정하도록 구성된 시스템.
  6. 제 5 항에 있어서,
    상기 서버는 상기 선택된 노드의 성능을 기반으로 상기 시간 길이를 결정하도록 구성된 시스템.
  7. 제 5 항에 있어서,
    상기 서버는 프리 블록들의 양을 기반으로 상기 시간 길이를 결정하도록 구성된 시스템.
  8. 제 1 항에 있어서,
    상기 선택된 노드가 상기 유지 동작을 수행할 때, 상기 서버는 상기 선택된 노드가 상기 리스트 내 다른 노드들보다 낮은 우선 순위를 갖는 노드들의 리스트를 갖고 읽기 액세스 요청에 응답하도록 구성된 시스템.
  9. 시스템의 동작 방법에 있어서:
    서버가 유지 동작을 수행하기 위해 복수의 노드들로부터 하나의 노드를 선택하는 단계;
    상기 서버가 상기 선택된 노드에 유지 동작을 수행하도록 지시하는 단계; 및
    상기 서버가 상기 선택된 노드를 기반으로 액세스 요청들에 응답하는 단계를 포함하는 동작 방법.
  10. 제 9 항에 있어서,
    상기 서버가 상기 노드들 중 후보 노드의 예측 액세스들의 크기가 임계값 이하인 타임을 결정하는 단계; 및
    타임 주기(a time period)가 발생할 때, 상기 서버가 상기 후보 노드를 상기 선택된 노드로 선택하는 단계를 더 포함하는 방법.
KR1020160067575A 2015-11-03 2016-05-31 중앙 집중 분산 시스템 및 그것의 동작 방법 KR20170052441A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562250409P 2015-11-03 2015-11-03
US62/250,409 2015-11-03
US15/042,147 2016-02-11
US15/042,147 US20170123975A1 (en) 2015-11-03 2016-02-11 Centralized distributed systems and methods for managing operations

Publications (1)

Publication Number Publication Date
KR20170052441A true KR20170052441A (ko) 2017-05-12

Family

ID=58638415

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160067575A KR20170052441A (ko) 2015-11-03 2016-05-31 중앙 집중 분산 시스템 및 그것의 동작 방법

Country Status (2)

Country Link
US (1) US20170123975A1 (ko)
KR (1) KR20170052441A (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017107357A (ja) * 2015-12-09 2017-06-15 セイコーエプソン株式会社 制御装置、制御装置の制御方法、サーバー、及び、ネットワークシステム
US11422719B2 (en) * 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US10204075B2 (en) * 2016-10-25 2019-02-12 Zentific LLC Systems and methods for facilitating interactions with remote memory spaces
US10540247B2 (en) * 2016-11-10 2020-01-21 International Business Machines Corporation Handling degraded conditions using a redirect module
US10735540B1 (en) * 2017-04-22 2020-08-04 EMC IP Holding Company LLC Automated proxy selection and switchover
US10936452B2 (en) 2018-11-14 2021-03-02 International Business Machines Corporation Dispersed storage network failover units used to improve local reliability

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4428993B2 (ja) * 2003-11-27 2010-03-10 株式会社日立製作所 ディスクアレイ装置及びディスクアレイ装置の制御方法
US8248831B2 (en) * 2008-12-31 2012-08-21 Apple Inc. Rejuvenation of analog memory cells
US8856593B2 (en) * 2010-04-12 2014-10-07 Sandisk Enterprise Ip Llc Failure recovery using consensus replication in a distributed flash memory system
US9229773B1 (en) * 2010-06-30 2016-01-05 Crimson Corporation Determining when to perform a maintenance operation on a computing device based on status of a currently running process or application on the computing device
US8738846B2 (en) * 2010-10-15 2014-05-27 Arkologic Limited File system-aware solid-state storage management system
US8751546B1 (en) * 2012-01-06 2014-06-10 Google Inc. Systems and methods for minimizing the effects of garbage collection
US9467369B2 (en) * 2013-08-02 2016-10-11 Time Warner Cable Enterprises Llc Packetized content delivery apparatus and methods
US9785564B2 (en) * 2013-08-20 2017-10-10 Seagate Technology Llc Hybrid memory with associative cache
US9383926B2 (en) * 2014-05-27 2016-07-05 Kabushiki Kaisha Toshiba Host-controlled garbage collection
US9606915B2 (en) * 2015-08-11 2017-03-28 Toshiba Corporation Pool level garbage collection and wear leveling of solid state devices

Also Published As

Publication number Publication date
US20170123975A1 (en) 2017-05-04

Similar Documents

Publication Publication Date Title
KR20170052441A (ko) 중앙 집중 분산 시스템 및 그것의 동작 방법
JP5516744B2 (ja) スケジューラ、マルチコアプロセッサシステムおよびスケジューリング方法
US11704239B2 (en) Garbage collection method for storage medium, storage medium, and program product
US8909887B1 (en) Selective defragmentation based on IO hot spots
US9037828B2 (en) Transferring storage resources between snapshot storage pools and volume storage pools in a data storage system
US8762995B2 (en) Computing system, method of controlling the same, and system management unit which plan a data migration according to a computation job execution schedule
CN107870732B (zh) 从固态存储设备冲刷页面的方法和设备
CN104503703B (zh) 缓存的处理方法和装置
KR20110091421A (ko) QoS 기반 스토리지 계층화 및 이송을 제공하는 방법, 컴퓨터 프로그램 제품 및 스토리지 시스템
CN106331148A (zh) 一种客户端数据读取时的缓存管理方法及其装置
WO2013051154A1 (ja) メモリ割り当て制御方法、プログラムおよび情報処理装置
KR20170042593A (ko) 파일 시스템에서의 플러싱 기법
US20200034040A1 (en) Data Architecture Based on Sub-allocation and References from Fragmented Data Blocks
US20170003911A1 (en) Information processing device
CN109558456A (zh) 一种文件迁移方法、装置、设备及可读存储介质
CN108415962A (zh) 一种云存储系统
CN110287152A (zh) 一种数据管理的方法以及相关装置
CN108874324A (zh) 一种访问请求处理方法、装置、设备及可读存储介质
CN111459402B (zh) 磁盘可控缓冲写方法、控制器、混合io调度方法及调度器
KR101026634B1 (ko) 하이브리드 플래시 메모리의 데이터 저장 방법
JP5158576B2 (ja) 入出力制御システム、入出力制御方法、及び、入出力制御プログラム
US8019799B1 (en) Computer system operable to automatically reorganize files to avoid fragmentation
US9858204B2 (en) Cache device, cache system, and cache method
JP5776813B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法および制御プログラム
US10872015B2 (en) Data storage system with strategic contention avoidance