KR20070111450A - 저장 시스템 상태 지시자 방법 및 저장 시스템 - Google Patents

저장 시스템 상태 지시자 방법 및 저장 시스템 Download PDF

Info

Publication number
KR20070111450A
KR20070111450A KR1020077012750A KR20077012750A KR20070111450A KR 20070111450 A KR20070111450 A KR 20070111450A KR 1020077012750 A KR1020077012750 A KR 1020077012750A KR 20077012750 A KR20077012750 A KR 20077012750A KR 20070111450 A KR20070111450 A KR 20070111450A
Authority
KR
South Korea
Prior art keywords
storage
state
data
indicator
slot
Prior art date
Application number
KR1020077012750A
Other languages
English (en)
Other versions
KR101146484B1 (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 KR20070111450A publication Critical patent/KR20070111450A/ko
Application granted granted Critical
Publication of KR101146484B1 publication Critical patent/KR101146484B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1084Degraded mode, e.g. caused by single or multiple storage removals or disk failures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • G06F11/1662Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2069Management of state, configuration or failover
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/324Display of status information
    • G06F11/325Display of status information by lamps or LED's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • 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
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • G11B27/11Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information not detectable on the record carrier
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • G11B27/19Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier
    • G11B27/28Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording
    • G11B27/32Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording on separate auxiliary tracks of the same or an auxiliary record carrier
    • G11B27/327Table of contents
    • G11B27/329Table of contents on a disc [VTOC]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2087Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring with a common controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1004Adaptive RAID, i.e. RAID system adapts to changing circumstances, e.g. RAID1 becomes RAID5 as disks fill up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1023Different size disks, i.e. non uniform size of disks in RAID systems with parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1028Distributed, i.e. distributed RAID systems with parity
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/40Combinations of multiple record carriers
    • G11B2220/41Flat as opposed to hierarchical combination, e.g. library of tapes or discs, CD changer, or groups of record carriers that together store one title
    • G11B2220/415Redundant array of inexpensive disks [RAID] systems
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/60Solid state media
    • G11B2220/65Solid state media wherein solid state memory is used for storing indexing information or metadata

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Hardware Redundancy (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Debugging And Monitoring (AREA)

Abstract

저장 시스템 상태 지시자 및 방법이 저장 디바이스들의 세트의 동작 상태를 나타내는 시각적 표시를 제공한다. 이용 가능한 저장 용량 및 데이터를 리던던트하게 저장하는 용량에 기초하여 각종 동작 상태들이 정의될 수 있다. 하나 이상의 지시자들이 저장 디바이스들의 세트의 동작 상태를 나타내기 위해 이용될 수 있다. 지시자(들)는 추가 저장 용량이 권장되는지 여부와, 저장 어레이에서, 어레이 내의 어느 슬롯이 추가 저장 용량으로 업데이트되어야 하는지를 지시하는 데 이용될 수 있다.
저장 시스템, 리던던시, 리던던트, 핫 스페어, 지시자

Description

저장 시스템 상태 지시자 방법 및 저장 시스템{STORAGE SYSTEM CONDITION INDICATOR AND METHOD}
본 발명은 디지털 데이터 저장 시스템들 및 방법들에 관한 것으로, 특히 내장애성(fault-tolerant) 저장을 제공하는 것들에 관한 것이다.
종래 기술에서는 RAID(Redundant Array of Independent Disks) 프로토콜들 중 어느 하나에 따른 패턴으로 리던던트 디스크 저장(redundant disk storage)을 제공하는 것이 알려져 있다. 전형적으로 RAID 패턴을 이용한 디스크 어레이들은 숙련된 정보 기술자들에 의한 관리를 필요로 하는 복잡한 구조들이다. 또한 RAID 패턴을 이용한 다수의 어레이 설계에서, 어레이 내의 디스크 드라이브들이 균일하지 않은 용량들로 되어 있으면, 설계는 어레이 내의 가장 작은 드라이브의 용량을 초과하는 어떠한 용량도 드라이브에 이용할 수 없을 수 있다.
표준 RAID 시스템과 관련된 하나의 문제점은 디스크 어레이의 드물게 사용되는 영역들에서 디스크 표면 훼손이 발생할 수 있다는 점이다. 다른 드라이브가 고장나는 경우에, 훼손이 발생하였음을 항상 결정할 수 있는 것은 아니다. 그 경우, 훼손된 데이터는 RAID 어레이가 고장난 드라이브를 재구성할 때 전파되어 보존될 수 있다.
다수의 저장 시스템들에서, 다른 저장 디바이스가 고장나는 경우에 이용될 수 있도록 여분의 저장 디바이스가 준비 상태로 유지될 것이다. 그러한 여분의 저장 디바이스는 종종 "핫 스페어(hot spare)"로 지칭된다. 핫 스페어는 저장 시스템의 정상 동작 중에는 데이터를 저장하기 위해 이용되지 않는다. 작동중인 저장 디바이스가 고장나는 경우, 그 고장난 저장 디바이스는 핫 스페어에 의해 논리적으로 교체되고, 데이터는 핫 스페어 상에 옮겨지거나 또는 다른 방법으로 재생성된다. 고장난 저장 디바이스가 수리 또는 교체되는 경우, 데이터는 전형적으로 (재)작동된 저장 디바이스 상에 옮겨지거나 또는 다른 방법으로 재생성되고, 핫 스페어는 또 다른 고장의 경우에 이용될 준비가 되도록 오프라인으로 된다. 핫 스페어 디스크의 유지관리는 일반적으로 복잡하고, 그래서 일반적으로 숙련된 관리자에 의해 핸들링된다. 핫 스페어 디스크는 또한 추가 비용을 나타낸다.
발명의 제1 실시예들에서는 시스템이 작동하고 모든 저장 디바이스들에 걸쳐서 새로이 저장된 오브젝트들에 대한 리던던시를 갖고 있는지를 판정하고, 만일 그렇다면, 저장이 양호한 레벨의 데이터 안전성을 제공하는 "고우(go)" 상태를 지시(indicate)하는 단계와; 시스템이 작동하고 전부가 아닌 일부 저장 디바이스들에 걸쳐서 새로이 저장된 오브젝트들에 대한 리던던시를 갖고 있는지를 판정하고, 만일 그렇다면, 안전성과 일관된 효율적인 데이터 저장을 위하여 더 많은 저장이 요구되는 "효율성을 위하여 더 많은 저장이 요구됨(more storage needed for efficiency)" 상태를 지시하는 단계와; 시스템이 작동하고 단 하나의 저장 디바이스에서만 새로이 저장된 오브젝트들에 대한 리던던시를 갖고 있는지를 판정하고, 만일 그렇다면, 데이터 안전성을 위하여 더 많은 저장이 요구되는 "안전성을 위해 더 많은 저장이 요구됨(more storage needed for safety)" 상태를 지시하는 단계를 수반하는 방법 및 저장 시스템 상태 지시자 방법이 제공된다.
관련 실시예들에서, 상기 지시하는 단계는, 각 색이 상이한 상태와 관련되는 다중색 라이트(multiple color light)와 같은, 단일 지시자를 이용하여 달성될 수도 있고, 각 지시자가 상이한 상태와 관련되는 복수의 지시자들을 이용하여 달성될 수도 있다.
다른 관련 실시예들에서, 상기 시스템이 하나의 상태에서 다른 상태로 전이(transition)중인지에 대한 판정이 행해질 수 있고, 만일 그렇다면, 그 전이의 사실이 지시될 수 있다. 전이의 사실은, 예를 들면, 상기 라이트를 오프 상태와 온 상태 간에 번쩍임(flashing)으로써 또는 상기 라이트를 2개의 상이한 색들 간에 번쩍임으로써 지시될 수 있다.
본 발명의 제2 실시예들에서는, 저장 디바이스들의 어레이의 상태를 지시하기 위한 방법 및 저장 시스템이 제공된다. 저장 시스템 상태는 저장 디바이스들의 어레이에서의 이용 가능한 저장의 양 및 리던던시의 레벨에 기초하여 결정된다. 저장 디바이스들의 어레이에서의 이용 가능한 저장의 양 및 리던던시의 레벨에 기초하여 추가 저장 용량이 권장되는지에 대한 또 다른 판정이 행해진다. 저장 시스템 상태는, 추가 저장 용량이 권장되는 경우에는, 어레이 내의 어느 슬롯이 추가 저장 용량으로 채워져야 하는지에 대한 지시를 포함하여 지시된다.
관련 실시예들에서, 어레이 내의 각 슬롯은 지시자와 관련될 수 있고, 그 경우 지시자들은 어레이 내의 어느 슬롯이 추가 저장 용량으로 채워져야 하는지를 지시하는 것을 포함하여 상기 저장 시스템 상태를 지시하기 위해 집합적으로 이용될 수 있다. 시스템 상태는, 주어진 슬롯과 관련된 지시자를, 상기 슬롯이 추가 저장 용량으로 채워지지 않아야 한다면, 제1 상태로 설정하고; 상기 시스템이 전부가 아닌 일부 저장 디바이스들에 걸쳐서 새로이 저장된 오브젝트들에 대한 리던던시를 갖고 있고 상기 슬롯이 추가 저장 용량으로 채워져야 한다면, 상기 슬롯과 관련된 지시자를 제2 상태로 설정하고; 상기 시스템이 단일 저장 디바이스에서만 새로이 저장된 오브젝트들에 대한 리던던시를 갖고 있고 상기 슬롯이 추가 저장 용량으로 채워져야 한다면, 상기 슬롯과 관련된 지시자를 제3 상태로 설정함으로써 지시될 수 있다. 각 지시자는 다중색 라이트일 수 있고, 각 상태는 상이한 색과 관련될 수 있다. 상기 제1 상태는 녹색 라이트와 관련될 수 있고, 상기 제2 상태는 노랑 또는 황색(amber) 라이트와 관련될 수 있고, 상기 제3 상태는 적색 라이트와 관련될 수 있다.
다른 관련 실시예들에서, 상기 시스템이 하나의 상태에서 다른 상태로 전이중인지에 대한 판정이 행해질 수 있고, 만일 그렇다면, 그 전이의 사실이 지시될 수 있다. 전이의 사실은, 예를 들면, 상기 라이트를 오프 상태와 온 상태 간에 번쩍임으로써 또는 상기 라이트를 2개의 상이한 색들 간에 번쩍임으로써 지시될 수 있다.
다른 관련 실시예들에서, 상기 지시자들은 상기 슬롯들 각각에 대한 전면 패널(front panel) 및 상기 어레이 내의 어느 슬롯이 추가 저장 용량으로 채워져야 하는지를 포함하여 상기 저장 시스템 상태를 지시하기 위해 상기 전면 패널들을 조명하기 위한 관련 라이트들을 포함할 수 있다.
전술한 발명의 특징들은 첨부 도면들을 참조하여 이하의 상세한 설명을 참조함으로써 더 잘 이해될 것이다.
도 1은 오브젝트가 저장을 위한 일련의 청크들로 파싱(parse)되는 본 발명의 실시예에 대한 예시이다.
도 2A 및 도 2B는 더 많은 저장의 추가의 결과로 청크에 대한 내장애성 저장을 위한 패턴이 어떻게 동적으로 변경될 수 있는지를 동일 실시예에서 예시한다.
도 3은 상이한 크기의 저장 디바이스들을 이용하여 구성된 저장 시스템에서 상이한 내장애성 패턴들로 청크들을 저장하는 것을 본 발명의 다른 실시예에서 예시한다.
도 4A, 도 4B, 및 도 4C는 비효율적인 저장 사용 및 낮은 레벨의 내장애성을 경고하기 위해 지시자 상태들이 이용되는 본 발명의 또 다른 실시예를 예시한다.
도 5는 본 발명의 실시예에 따른 데이터의 저장, 검색 및 재배치(re-layout)에 이용되는 기능적 모듈들의 블록도이다.
도 6은 3개 이상의 드라이브들을 포함하는 어레이에서 미러링(mirroring)이 이용되는 예를 도시한다.
도 7은 그들의 데이터를 저장하기 위해 상이한 레이아웃 방식들을 이용하는 몇몇 예시적인 존(zone)들을 도시한다.
도 8은 스파스 볼륨(sparse volume)들을 구현하기 위한 조회 테이블(lookup table)을 도시한다.
도 9는 본 발명의 예시적인 실시예에 따른, 이용 가능한 저장 공간을 갖고 내장애성 방식으로 동작하는 예시적인 어레이에 대한 상태 지시자들을 도시한다.
도 10은 본 발명의 예시적인 실시예에 따른, 리던던트 데이터 저장을 유지하기 위해 충분한 공간을 갖고 있지 않고 더 많은 공간이 추가되어야 하는 예시적인 어레이에 대한 상태 지시자들을 도시한다.
도 11은 본 발명의 예시적인 실시예에 따른, 고장의 경우에 리던던트 데이터를 유지할 수 없게 될 예시적인 어레이에 대한 상태 지시자들을 도시한다.
도 12는 본 발명의 예시적인 실시예에 따른, 저장 디바이스가 고장난 예시적인 어레이에 대한 상태 지시자들을 도시한다. 슬롯들 B, C, 및 D는 저장 디바이스들로 채워져 있다.
도 13은 예시적인 실시예의 상이한 소프트웨어 계층들 및 그들이 서로 어떻게 관련되는지를 나타내는 모듈 계층구조를 도시한다.
도 14는 본 발명의 예시적인 실시예에 따른, 존 내의 데이터 클러스터들에 액세스하기 위해 클러스터 액세스 테이블이 어떻게 이용되는지를 도시한다.
도 15는 본 발명의 예시적인 실시예에 따른 저널 테이블 업데이트를 도시한다.
도 16은 본 발명의 예시적인 실시예에 따른 드라이브 레이아웃을 도시한다.
도 17은 본 발명의 예시적인 실시예에 따른, 존 0(Zone 0)의 레이아웃 및 다른 존들이 어떻게 참조되는지를 설명한다.
도 18은 본 발명의 예시적인 실시예에 따른 판독 에러 핸들링을 설명한다.
도 19는 본 발명의 예시적인 실시예에 따른 기입 에러 핸들링을 설명한다.
도 20은 본 발명의 예시적인 실시예에 따른 에러 관리자(Error Manager)에 의한 불량 영역(bad Region)의 백업을 설명하는 논리 흐름도이다.
도 21은 본 발명의 예시적인 실시예에 따른 저장 어레이의 관련 컴포넌트들을 보여주는 개략 블록도이다.
도 22는 본 발명의 예시적인 실시예에 따른 가상 핫 스페어(virtual hot spare)를 관리하기 위한 예시적인 논리를 보여주는 논리 흐름도이다.
도 23은 본 발명의 예시적인 실시예에 따른, 도 22의 블록 2102에서와 같이, 각각의 가능한 디스크 고장에 대한 재배치 시나리오를 결정하기 위한 예시적인 논리를 보여주는 논리 흐름도이다.
도 24는 본 발명의 예시적인 실시예에 따른 가상 핫 스페어 기능을 호출(invoke)하기 위한 예시적인 논리를 보여주는 논리 흐름도이다.
도 25는 본 발명의 예시적인 실시예에 따른, 도 24의 블록 2306에서와 같이, 데이터의 내장애성을 복원하기 위해 하나 이상의 남아 있는 드라이브들을 자동으로 재구성하기 위한 예시적인 논리를 보여주는 논리 흐름도이다.
도 26은 본 발명의 예시적인 실시예에 따른, 저장 디바이스를 업데이트하기 위한 예시적인 논리를 보여주는 논리 흐름도이다.
정의. 이 설명 및 첨부 도면들에서 사용될 때, 다음의 용어들은 컨텍스트(context)가 달리 요구하지 않는 한, 지시된 의미들을 가질 것이다:
오브젝트의 "청크(chunk)"는, 사용되고 있는 임의의 물리적 저장과 무관하게 만들어진, 오브젝트의 추출 슬라이스(abstract slice)이고, 전형적으로 오브젝트의 일정한 수의 연속된 바이트들이다.
데이터 저장에 대한 내장애성 "패턴(pattern)"은 그에 의해 데이터가 하나 이상의 저장 디바이스들에 걸쳐서 리던던트하게 분배되는 특칭(particular)으로, 그 중에서도 특히, 미러링(예컨대, RAID1과 유사한 방식의), 스트라이핑(예컨대, RAID5와 유사한 방식의), RAID6, 이중 패리티(dual parity), 대각선 패리터(diagonal Parity), 저밀도 패리티 체크(Low Density Parity Check) 코드, 터보 코드, 또는 다른 리던던시 방식 또는 리던던시 방식들의 조합일 수 있다.
다른 청크가 주어진 청크와 동일한 데이터 콘텐츠를 갖는 경우를 제외하고, 그 주어진 청크가 임의의 다른 청크에 대한 해시 넘버와 일반적으로 다를 해시 넘버를 생성할 경우 주어진 청크에 대한 해시 넘버는 "유일(unique)"하다. 즉, 2개의 청크는 그들의 콘텐츠가 동일하지 않을 때는 언제나 일반적으로 상이한 해시 넘버들을 가질 것이다. 아래에서 더 상세히 설명되는 바와 같이, 이 컨텍스트에서 "유일"이라는 용어는, 이따금 동일하지 않은 청크들에 대하여 공통의 해시 넘버를 생성하는 해시 함수로부터 생성되는 해시 넘버를 포함하기 위해 사용된다. 왜냐하면 해시 함수들은 상이한 청크들에 대하여 상이한 넘버들을 생성하는 것에 일반적 으로 완벽하지 않기 때문이다.
"영역(Region)"은 저장 매체(예컨대, 하드 드라이브) 상의 연속된 물리적 블록들의 세트이다.
"존(Zone)"은 2 이상의 영역들로 구성된다. 존을 구성하는 영역들은 일반적으로 연속되어야 할 필요가 없다. 아래에서 설명되는 예시적 실시예들에서, 존은 1GB 상당의 데이터 또는 제어 정보를 저장한다.
"클러스터(Cluster)"는 존들 내의 단위 사이즈로 압축의 단위를 나타낸다(아래에서 설명됨). 아래에서 설명되는 예시적 실시예에서, 클러스터는 4KB(즉, 8개의 512바이트 섹터)이고 본질적으로 청크와 같다.
"리던던트 세트(Redundant set)"는 데이터의 세트에 대한 리던던시를 제공하는 섹터들/클러스터들의 세트이다.
"영역 백업(Backing up a Region)"은 하나의 영역의 콘텐츠를 다른 영역에 복사하는 것을 수반한다.
"제1 쌍(first pair)" 및 "제2 쌍(second pair)"의 저장 디바이스들은 공통 저장 디바이스를 포함할 수 있다.
"제1 복수(first plurality)" 및 "제2 복수(second plurality)"의 저장 디바이스들은 하나 이상의 공통 저장 디바이스들을 포함할 수 있다.
"제1 배열(first arrangement)" 및 "제2 배열(second arrangement)" 또는 "상이한 배열(different arrangement)"의 저장 디바이스들은 하나 이상의 공통 저장 디바이스들을 포함할 수 있다.
도 1은 오브젝트가, 이 예에서는, 파일이 저장을 위한 일련의 청크들로 파싱되는 발명의 실시예에 대한 예시이다. 처음에 파일(11)은 저장 소프트웨어로 전달되어 거기서 그것은 오브젝트(12)로 지정되고 유일한 오브젝트 식별 번호, 이 경우에는, #007을 할당받는다. 이 새로운 오브젝트에 대한 할당을 나타내기 위해 오브젝트 테이블(13) 내에 새로운 엔트리(131)가 만들어진다. 오브젝트는 이제 오브젝트의 일정 길이 세그먼트들인 데이터(121, 122, 및 123)의 "청크들"로 파싱된다. 각 청크는 해싱 알고리듬을 통하여 전달되고, 해싱 알고리듬은 청크에 대한 유일한 해시 넘버를 반환한다. 이 알고리듬은 나중에 검색된(retrived) 청크에 적용될 수 있고 그 결과는 최초의 해시와 비교되어 재시도된(retried) 청크가 저장된 것과 동일하다는 것을 보장하게 된다. 각 청크에 대한 해시 넘버들은 오브젝트 테이블(13)에서 해당 오브젝트에 대한 엔트리 행(132)에 저장되어, 나중에 청크들의 수집에 의해 완전한 오브젝트가 검색될 수 있게 된다.
또한 도 1에서, 청크 해시들은 이제 청크 테이블(14) 내의 기존의 엔트리들과 비교된다. 기존의 엔트리(141)와 일치하는 임의의 해시는 이미 저장되어 있어 아무런 조치(action)도 취해지지 않는다(즉, 데이터는 다시 저장되지 않고, 결국 오브젝트들이 자동 압축되게 된다). 새로운 해시(청크 테이블(14) 내에 대응하는 엔트리가 없는 것)가 청크 테이블(141) 내에 입력된다. 그 후 청크 내의 데이터는 이용 가능한 저장 디바이스들(151, 152, 및 153)에 내장애성 저장을 위한 가장 효율적인 방법으로 저장된다. 이 방법은 청크 데이터가 예를 들어 하나 또는 2개의 디바이스들로 구성된 저장 시스템에 미러 방식(mirrored fashion)으로 또는 3개 이 상의 저장 디바이스들을 갖는 시스템에 패리티 스트라이브 방식으로(parity striped) 저장되는 결과로 될 수 있다. 이 데이터는 저장 디바이스들에서 물리적 위치들(1511, 1521, 및 1531)에 저장될 것이고, 이 위치들 및 위치들의 수는 청크 테이블 열들(143 및 142)에 저장되어, 청크의 모든 물리적 부분들이 나중에 위치 확인되어 검색될 수 있을 것이다.
도 2A 및 도 2B는 더 많은 저장의 추가의 결과로 청크에 대한 내장애성 저장을 위한 패턴이 어떻게 동적으로 변경될 수 있는지를 동일 실시예에서 예시한다. 특히, 도 2A 및 도 2B는 일단 전체 시스템에 추가의 저장이 추가되면 저장 디바이스들 상에 물리적으로 저장된 청크가 어떻게 새로운 패턴으로 레이아웃될 수 있는지를 보여준다. 도 2A에서, 저장 시스템은 2개의 저장 디바이스들(221 및 222)을 포함하고 청크 데이터는 내장애성을 제공하기 위해 2개의 저장 디바이스들의 위치들(2211 및 2221)에 물리적으로 미러(mirror)되어 있다. 도 2B에서 제3의 저장 디바이스(223)이 추가되고, 미러 패턴(mirrored pattern)보다 더 저장 효율적인 패턴인 패리터 스트라이프 방식(parity striped manner)으로 청크를 저장하는 것이 가능하게 된다. 청크는 이 새로운 패턴으로 3개의 물리적 위치들(2311, 2321, 및 2331)에 레이아웃되어, 이용 가능한 저장의 훨씬 더 낮은 비율을 차지한다. 청크 테이블(21)은 새로운 레이아웃이 3개의 위치들에 있는 것을 나타내도록(212) 업데이트되고 또한 새로운 청크 물리적 위치들(2311, 2321, 및 2331)이 기록된다(213).
도 3은 얼마간의 시간 동안 기능하고 있는 본 발명의 실시예에 따른 성숙한 저장 시스템을 보여준다. 이것은 저장 용량들이 다른 저장 디바이스들에서 청크들 이 시간에 걸쳐 어떻게 물리적으로 저장될 수 있는지를 예시한다. 이 도면은 40GB 저장 디바이스(31), 80GB 저장 디바이스(32) 및 120GB 저장 디바이스(33)로 구성된 저장 시스템을 보여준다. 처음에 청크들은 40GB 저장 디바이스(31)가 찰 때까지 내장애성 스트라이프 패턴(34)으로 저장된다. 그 후, 저장 공간의 부족으로 인해, 새로운 데이터는 80GB 저장 디바이스(32) 및 120GB 저장 디바이스(33) 상의 이용 가능한 공간에 미러 패턴(36)으로 저장된다. 일단 80GB 저장 디바이스(32)가 차면, 새로운 데이터는 단일 디스크 내장애성 패턴(37)으로 레이아웃된다. 저장 디바이스가 데이터를 저장하기 위한 단일 풀(pool)을 포함한다 하더라도, 청크들에 저장된 데이터 자체는 각종의 별개의 패턴들로 저장되어 있다.
도 4A 및 도 4B는 비효율적인 저장 사용 및 낮은 레벨의 내장애성을 경고하기 위해 지시자 상태들이 이용되는 발명의 또 다른 실시예를 예시한다. 도 4A에서, 모든 3개의 저장 디바이스들(41, 42, 및 45)은 자유 공간을 갖고 있고 지시자 라이트(44)는 데이터가 효율적이고 내장애성 방식으로 저장되어 있음을 지시하도록 녹색이다. 도 4B에서 40GB 저장 디바이스(41)는 차게 되었고, 따라서 새로운 데이터는 남아 있는 자유 공간을 갖는 2개의 저장 디바이스들(42 및 43)에만 미러 패턴(46)으로 저장될 수 있다. 데이터가 여전히 충분히 리던던트하지만 효율적으로 저장되지 않은 것을 지시하기 위하여, 지시자 라이트(44)는 황색(amber)으로 변하였다. 도 4C에서는, 120GB 저장 디바이스(13)만이 남아 있는 자유 공간을 갖고 있어 모든 새로운 데이터는 이 하나의 디바이스(43) 상에 미러 패턴으로만 저장될 수 있다. 내장애성은 덜 견고하고 시스템은 위급하게 공간이 부족하기 때문에, 지시 자 라이트(44)는 적색으로 변하여 더 많은 저장의 추가가 필요함을 지시한다.
하나의 대안 실시예에서는, 어레이 내의 각 드라이브/슬롯마다, 예를 들어, 3색 라이트(예컨대, 녹색, 황색, 적색)의 형태로 지시자가 제공된다. 하나의 특정 실시예에서, 라이트들은 발광 효과(glowing effect)로 디스크 캐리어의 정면 전체를 비추기 위해 이용된다. 라이트들은 시스템의 전체 상태뿐만 아니라, 어느 드라이브/슬롯이 주의를 필요로 하는지(만일 있다면)도 지시하도록 제어된다. 각각의 3색 라이트는 적어도 4개의 상태, 구체적으로 오프, 녹색, 황색, 적색으로 놓일 수 있다. 특정 슬롯에 대한 라이트는 그 슬롯이 비어 있고 시스템이 충분한 저장 및 리던던시로 동작하고 있어 그 슬롯에 드라이브가 설치될 필요가 없다면 오프 상태로 놓일 수 있다. 특정 슬롯에 대한 라이트는 대응하는 드라이브가 충분하고 교체될 필요가 없다면 녹색 상태로 놓일 수 있다. 특정 슬롯에 대한 라이트는 시스템 동작이 열화되어 대응하는 드라이브의 보다 더 큰 드라이브로의 교체가 권장된다면 황색 상태로 놓일 수 있다. 특정 슬롯에 대한 라이트는 대응하는 드라이브가 설치 또는 교체되어야 한다면 적색 상태로 놓일 수 있다. 필요에 따라 또는 원하는 대로, 예를 들어, 라이트를 온 상태와 오프 상태 간에 번쩍이거나 또는 라이트를 2개의 상이한 색들 간에 번쩍임(예컨대, 드라이브가 교체된 후에 데이터의 재배치(re-layout)가 진행중일 때 적색과 녹색 간에 번쩍임)으로써, 추가 상태들이 지시될 수 있다.
물론, 시스템 상태 및 드라이브/슬롯 상태의 양쪽 모두를 지시하기 위해 다른 지시 기법들이 이용될 수 있다. 예를 들면, 시스템 상태 및, 필요하다면, 주의 를 필요로 하는 슬롯 번호를 지시하기 위해 단일 LCD 디스플레이가 이용될 수 있다. 또한, 다른 유형의 지시자들(예컨대, 슬롯 지시자 또는 각 슬롯에 대한 라이트와 함께 시스템에 대한 단일 상태 지시자(예컨대, 녹색/황색/적색)이 이용될 수 있다.
도 5는 도 1-3과 관련하여 위에서 논의된 것과 같은, 발명의 실시예에 따른 데이터의 저장, 검색 및 재배치에 이용되는 기능적 모듈들의 블록도이다. 통신을 위한 입구(entry) 및 출구(exit) 포인트는, 오브젝트들의 저장 또는 검색을 위해 오브젝트들을 시스템에 전달하기 위한 오브젝트 인터페이스(511), 저장 시스템이 하나의 대형 저장 디바이스인 것으로 보이게 하는 블록 인터페이스(512), 및 저장 시스템이 윈도즈 파일 시스템인 것으로 보이게 하는 CIFS 인터페이스(513)이다. 이들 인터페이스들이 데이터의 저장을 필요로 할 경우, 데이터는 청크 파서(Chunk Parser)(52)로 전달되고, 청크 파서(52)는 데이터의 청크들로의 분해를 수행하고 (도 1과 관련하여 위에서 논의된 바와 같이) 오브젝트 테이블(521) 내에 처음 엔트리를 생성한다. 그 후 이들 청크들은 해시 코드 생성기(53)에 전달되고, 해시 코드 생성기(53)는 각 청크에 대하여 관련 해시 코드들을 생성하고 이들을 오브젝트 테이블에 입력하여 (도 1과 관련하여 위에서 논의된 바와 같이) 각 오브젝트와 관련된 청크들이 리스트(512)되게 한다. 청크 해시 넘버들은 청크 테이블(531) 내의 엔트리들과 비교된다. 일치가 발견되는 경우에, 새로운 청크는 저장 시스템에 이미 저장된 청크와 동일할 것이므로 그 새로운 청크는 무시된다. 만일 청크가 새로운 것이면, 그에 대한 새로운 엔트리가 청크 테이블(531)에 만들어지고, 해싱된 청 크는 물리적 저장 관리자(physical storage manager)(54)에 전달된다. 물리적 저장 관리자는 이용 가능한 저장 디바이스들(571, 572, 및 573) 상에 가능한 가장 효율적인 패턴으로 청크를 저장하고 대응하는 엔트리를 청크 테이블(531)에 만들어 청크의 물리적 저장이 어디에 발생하였는지를 보여주어 (도 1과 관련하여 위에서 논의된 바와 같이) 청크의 콘텐츠가 나중에 검색(512)될 수 있게 한다.
오브젝트(511), 블록(512) 또는 CIFS(513) 인터페이스에 의한 도 5에서의 데이터의 검색은 검색 관리자(retrieval manager)(56)에의 요구에 의해 수행되고, 이 검색 관리자(56)는 오브젝트 테이블(521)을 참고(consult)하여 어느 청크들이 해당 오브젝트를 포함하는지를 결정한 다음 이들 청크들을 물리적 저장 관리자(54)에게 요구한다. 물리적 저장 관리자(54)는 청크 테이블(521)을 참고하여 요구된 청크들이 어디에 저장되어 있는지를 결정한 다음 그들을 검색하고 완성된 데이터(오브젝트)를 다시 검색 관리자(56)에 전달하고, 검색 관리자(56)는 그 데이터를 요구하는 인터페이스에 반환한다. 도 5에는 또한 내장애성 관리자(FTL : fault tolerant manager)(55)도 포함되어 있는데, 이것은 끊임없이 청크 테이블을 스캔하여 청크들이 가능한 가장 효율적인 방식으로 저장되어 있는지를 결정한다. (이것은 저장 디바이스들(571, 572, 및 573)이 추가 및 제거될 때 변할 수 있다.) 만일 청크가 가능한 가장 효율적인 방식으로 저장되어 있지 않다면, FTL은 물리적 저장 관리자(54)에게 청크에 대한 새로운 레이아웃 패턴을 생성하고 청크 데이블(531)을 업데이트하도록 요구할 것이다. 이런 식으로 모든 데이터는 (도 2 및 3과 관련하여 논의된 바와 같이) 어레이를 구성하는 저장 디바이스들의 수에 대하여 가능한 가장 효율적인 방식으로 저장된 상태로 계속 유지된다.
다음은 본 발명의 예시적 실시예에 대한 추가적인 상세들을 제공한다.
데이터 레이아웃 방식( Data Layout Scheme ) - 존( Zones )
그 중에서도 특히, 존은 디스크에 저장되어 있는 실제 데이터로부터 리던던시 및 디스크 재배치를 숨기는 효과를 갖는다. 존들은 존의 사용자에게 영향을 미치지 않고 추가 레이아웃 방법들이 추가 및 변경되도록 허용한다.
저장 어레이는 디스크 상에서 존이라 불리는 가상 섹션들에 데이터를 레이아웃한다. 존은 주어진 일정량의 데이터(예를 들어 1G 바이트)를 저장한다. 존은 단일 디스크 상에 존재하거나 또는 하나 이상의 드라이브들에 걸쳐 있을 수 있다. 존의 물리적 레이아웃은 해당 존에 대하여 특정된 형태로 리던던시를 제공한다.
도 6은 3개 이상의 드라이브들을 포함하는 어레이에서 미러링(mirroring)이 이용되는 예를 도시한다. 도 7은 그들의 데이터를 저장하기 위해 상이한 레이아웃 방식들을 이용하는 몇몇 예시적인 존들을 도시한다. 도면은 존이 1GB의 데이터를 저장한다고 가정한다. 다음 점들에 유의하자:
ⅰ) 다수의 드라이브들에 걸쳐 있는 존은 반드시 세트에 걸쳐서 드라이브 내에 동일한 오프셋을 이용하지는 않는다.
ⅱ) 단일 드라이브 미러는 1G의 데이터를 저장하기 위해 2G의 저장을 필요로 한다.
ⅲ) 2중 드라이브 미러는 1G의 데이터를 저장하기 위해 2G의 저장을 필요로 한다.
ⅳ) 3 드라이브 스트라이프는 1G의 데이터를 저장하기 위해 1.5G의 저장을 필요로 한다.
ⅴ) 4 드라이브 스트라이프는 1G의 데이터를 저장하기 위해 1.33G의 저장을 필요로 한다.
ⅵ) 존 A, 존 B 등은 임의의 존 명칭들이다. 실제 구현에서 각 존은 유일 번호로 식별될 것이다.
ⅶ) 도면에 의해 암시되기는 하지만, 존들은 반드시 디스크 상에서 연속되는 것은 아니다(나중에 영역들 참조).
ⅷ) 미러링이 2개의 드라이브에 제한되는 기술적 이유는 없다. 예를 들면, 3 드라이브 시스템에서 데이터의 1 사본은 1 드라이브에 저장될 수 있고 미러링된 데이터의 절반은 다른 2개의 드라이브의 각각에 저장될 수 있다. 마찬가지로, 데이터는 3개의 드라이브에 걸쳐서 미러링되어, 데이터의 절반은 2개의 드라이브의 각각에 그리고 미러의 절반은 다른 2개의 드라이브에 있을 수 있다.
데이터 레이아웃 방식 - 영역( Regions )
각 디스크는 동일 사이즈의 영역들의 세트로 분할된다. 영역의 사이즈는 존보다 훨씬 작고 존은 하나 이상의 디스크들로부터의 하나 이상의 영역들로 구성된다. 디스크 공간의 효율적인 사용을 위하여, 영역의 사이즈는 전형적으로 상이한 존 사이즈들 및 어레이에 의해 지지되는 상이한 수의 디스크들의 공통 인자(common factor)이다. 예시적인 실시예에서, 영역들은 존의 데이터 사이즈의 1/12이다. 다음의 표는 본 발명의 예시적 실시예에 따른, 각종 레이아웃에 대한 영역 수/존(number of Regions/Zone) 및 영역 수/디스크(number of Regions/disk)를 리스트한다.
레이아웃 방법 영역 수/존 영역 수/디스크
1 드라이브 미러 24 24
2 드라이브 미러 24 12
3 드라이브 스트라이프 18 6
4 드라이브 스트라이프 16 4
개개의 영역들은 사용(used), 자유(free) 또는 불량(bad)으로 표시(mark)될 수 있다. 존이 생성될 때, 적당한 디스크들로부터의 자유 영역들의 세트가 선택되어 테이블에 로그인된다. 이들 영역들은 임의의 순서로 있을 수 있고 디스크 상에서 연속될 필요는 없다. 데이터가 존에 기입되거나 존으로부터 판독될 때, 액세스는 적당한 영역으로 리다이렉트된다. 그 중에서도 특히, 이것은 데이터 재배치가 유연하고 효율적인 방식으로 발생하도록 허용한다. 시간에 걸쳐서, 상이한 사이즈의 존들이 조각화(fragmentation)를 일으켜서, 완전한 존을 유지하기에는 너무 작은 다수의 디스크 영역들(disk areas)을 남길 수 있을 것이다. 적당한 영역 사이즈를 이용함으로써, 조각화에 의해 남겨진 모든 갭들이 사이즈에서 적어도 하나의 영역이 되어, 전체 디스크를 조각 모음(de-fragment)하지 않고도 이들 작은 갭들의 용이한 재사용을 가능케 할 것이다.
데이터 레이아웃 방식 - 재배치( Re - Layout )
구현을 용이하게 하기 위하여, 일정한 시퀀스의 확장 및 수축이 실시될 수 있다. 예를 들면, 2개의 드라이브가 갑자기 추가되면, 존의 확장은 제2의 드라이브를 통합하기 위해 제2 확장이 수행되기 전에 마치 하나의 드라이브가 추가된 것처럼 중간 확장을 거칠 수 있다. 대안적으로, 다수의 드라이브를 수반하는 확장 및 수축은, 중간 단계 없이, 자동으로 핸들링될 수 있다.
임의의 재배치가 발생하기 전에, 요구되는 공간이 이용 가능해야 한다. 이것은 불필요한 재배치가 발생하지 않도록 하기 위해 재배치를 시작하기 전에 계산되어야 한다.
데이터 레이아웃 방식 - 드라이브 확장( Drive Expansion )
다음은 발명의 예시적인 실시예에 따라서 단일 드라이브 미러링으로부터 2중 드라이브 미러링으로 확장하는 일반적인 프로세스를 설명한다:
ⅰ) 단일 드라이브 미러가 데이터 'A' 및 미러 'B'를 갖는다고 가정하고
ⅱ) 'C' 상에 존을 확장하기 위해 드라이브 상의 12개 영역들을 할당하고
ⅲ) 미러 'B'를 영역 세트 'C'에 복사하고
ⅳ) 이미 복사된 데이터에 행해진 임의의 기입들은 'C' 내의 적당한 위치에 미러링되어야 하고
ⅴ) 복사가 완료될 때, 존 테이블을 새로운 레이아웃 타입으로 업데이트하고 'B'에의 포인터들을 'C'에의 포인터들로 교체하고
ⅵ) 'B'를 구성하는 영역들을 자유로 표시(mark)한다.
다음은 발명의 예시적인 실시예에 따라서 2중 드라이브 미러링을 3중 드라이브 패리티 스트라이핑(triple drive striping with parity)으로 확장하는 일반적인 프로세스를 설명한다:
ⅰ) 하나의 드라이브가 데이터 'A'를 갖고 제2 드라이브가 미러 'B'를 갖는다고 가정하고
ⅱ) 패리티 정보 'C'를 위하여 제3 드라이브 상의 6개의 영역들을 할당하고
ⅲ) 'A'의 처음 6개 영역들 및 'B'의 두 번째 6개 영역들을 이용하여 패리티 정보를 계산하고
ⅳ) 패리티 정보를 'C'에 배치하고
ⅴ) 이미 처리된 데이터에 행해진 임의의 기입들은 'C' 내의 적당한 위치에 패리티되어야 하고
ⅵ) 복사가 완료될 때, 존 테이블을 새로운 레이아웃 타입으로 업데이트하고 테이블을 'A'의 제1 절반, 'B'의 제2 절반 및 'C'에 포인팅하고
ⅶ) 'A'의 제2 절반 및 'B'의 제1 절반을 자유로 표시한다.
다음은 발명의 예시적인 실시예에 따라서 3중 드라이브 스트라이핑을 4중 드라이브 패리티 스트라이핑(quad drive striping with parity)으로 확장하는 일반적인 프로세스를 설명한다:
ⅰ) 하나의 드라이브가 데이터 'A'를 갖고, 제2 드라이브가 데이터 'B'를 갖고, 제3 드라이브가 패리터 'P'를 갖는다고 가정하고
ⅱ) 스트라이프 데이터 'C'를 위하여 제4 드라이브 상의 4개의 영역들을 할당하고
ⅲ) 'A'의 마지막 2개 영역들을 'C'의 처음 2개 영역들에 복사하고
ⅳ) 'B'의 처음 2개 영역들을 'C'의 영역들 마지막에 복사하고
ⅴ) 패리티 드라이브 'D' 상의 4개의 영역들을 할당하고
ⅵ) A의 처음 4개 영역들, 및 B의 마지막 4개 영역들을 이용하여 패리티 정보를 계산하고
ⅶ) 패리티 정보를 'D'에 배치하고
ⅷ) 이미 처리된 데이터에 행해진 임의의 기입들은 'D' 내의 적당한 위치에 패리티되어야 하고
ⅸ) 존 테이블을 새로운 레이아웃 타입으로 업데이트하고 테이블을 'A'의 처음 4개 영역들, 'C', 'B'의 두 번째 4개의 영역들 및 'D'에 포인팅하고
ⅹ) 'A'의 마지막 3개 영역들 및 'B'의 처음 2개 영역들을 자유로 표시한다.
데이터 레이아웃 방식 - 드라이브 수축( Drive Contraction )
드라이브 수축은 디스크가 제거되거나 고장났을 때 발생한다, 그러한 경우, 어레이는 가능하다면 모든 존들을 다시 리던던트 상태로 하기 위해 데이터를 수축시킨다. 드라이브 수축은 팽창보다 선택할 것이 더 많기 때문에 팽창보다 약간 더 복잡하다. 그러나, 레이아웃 방법들 간의 전이는 팽창과 유사한 방식으로, 다만 반대로 일어난다. 재생될 데이터의 양을 최소한도로 유지함으로써 되도록 신속히 리던던시가 달성될 수 있다. 일반적으로 드라이브 수축은 모든 존들이 재배치 될 때까지 공간이 이용 가능한 동안 하나의 존보다 앞서 일어난다. 일반적으로, 제거되거나 고장난 디스크 상에 존재하는 데이터만 재구성될 것이다.
수축 방법 선택
다음 표는 본 발명의 예시적인 실시예에 따른, 재배치될 필요가 있는 각 존에 대한 판정 트리(decision tree)를 설명한다:
존 타입 데이터 분실 상태 조치
무엇이든 존 재배치를 위해 이용 가능한 공간이 없음 새로운 디스크가 추가되거나 제거된 디스크가 교체될 때까지 존을 퇴화 상태로 놔둔다
단일 드라이브 미러 데이터 불일치 시스템을 록 다운(lock down)하고 리셋 또는 분실한 드라이브가 교체되기를 기다린다
2중 드라이브 미러 시스템에 1 디스크가 남겨짐 단일 드라이브 미러로 변환
남아 있는 데이터를 포함하는 드라이브에서만 공간이 이용 가능함
시스템에 2 또는 3 디스크가 남겨지고 공간이 이용 가능함 다른 드라이브 상에 미러를 재구성
3 드라이브 스트라이핑 시스템에 2 디스크가 남겨지고 공간이 이용 가능함 2중 드라이브 미러링으로 변환
시스템에 3 디스크가 남겨지고 공간이 이용 가능함 제3 드라이브 상에 분실한 스트라이프 세그먼트를 재구성
4 드라이브 스트라이핑 시스템에 3 디스크가 남겨지고 공간이 이용 가능함 3 드라이브 스트라이핑으로 변환
다음은 발명의 예시적인 실시예에 따라서 2중 드라이브 미러링으로부터 단일 드라이브 미러링으로 수축하는 일반적인 프로세스를 설명한다:
ⅰ) 단일 드라이브 미러가 데이터 'A'를 갖고 있고 미러 'B'를 분실하였거나 그 반대라고 가정하고
ⅱ) 'A'를 포함하는 드라이브 상의 12개 영역을 'C'로서 할당하고
ⅲ) 데이터 'A'를 영역 세트 'C'에 복사하고
ⅳ) 이미 복사된 데이터에 행해진 임의의 기입들은 'C' 내의 적당한 위치에 미러링되어야 하고
ⅴ) 복사가 완료될 때, 존 테이블을 새로운 레이아웃 타입으로 업데이트하고 'B'에의 포인터들을 'C'에의 포인터들로 교체한다.
다음은 발명의 예시적인 실시예에 따라서 3중 드라이브 스트라이프로부터 2중 드라이브 미러로 수축하는 일반적인 프로세스(패리티 분실)를 설명한다:
ⅰ) 스트라이프가 상이한 드라이브들 상의 데이터 블록들 'A', 'B' 및 'C'로 이루어져 있다고 가정한다. 패리티 'C'가 분실되었다.
ⅱ) 'A'를 존의 처음 절반을 포함하는 것으로 'B'를 존의 두 번째 절반을 포함하는 것으로 정의하고
ⅲ) 'A' 드라이브 상의 6개 영역들 'D' 및 'B' 드라이브 상의 6개 영역들 'E'를 할당하고
ⅳ) 'A'를 'E'에 복사하고
ⅴ) 'B'를 'D'에 복사하고
ⅵ) 이미 복사된 데이터에 행해진 임의의 기입들은 'D' 및 'E' 내의 적당한 위치에 미러링되어야 하고
ⅶ) 복사가 완료될 때, 존 테이블을 새로운 레이아웃 타입으로 업데이트하고 'A'/'D' 및 'E'/'B'에의 포인터들을 설정한다.
다음은 발명의 예시적인 실시예에 따라서 3중 드라이브 스트라이프로부터 2중 드라이브 미러로 수축하는 일반적인 프로세스(데이터 분실)를 설명한다:
ⅰ) 스트라이프가 상이한 드라이브들 상의 데이터 블록들 'A', 'B' 및 'C'로 이루어져 있다고 가정한다. 데이터 'C'가 분실되었다.
ⅱ) 'A'를 존의 처음 절반을 포함하는 것으로 'C'를 존의 두 번째 절반을 포함하는 것으로 정의하고
ⅲ) 'A' 드라이브 상의 6개 영역들 'D' 및 'B' 드라이브 상의 6개 영역들 'E'를 할당하고
ⅳ) 'A'를 'E'의 처음 절반에 복사하고
ⅴ) 'A' 및 'B'로부터 분실한 데이터를 재구성하고, 데이터를 'D'에 기입하고
ⅵ) 'D'를 'E'의 두 번째 절반에 복사하고
ⅶ) 이미 복사된 데이터에 행해진 임의의 기입들은 'D' 및 'E' 내의 적당한 위치에 미러링되어야 하고
ⅷ) 복사가 완료될 때, 존 테이블을 새로운 레이아웃 타입으로 업데이트하고 'A'/'D' 및 'E'에의 포인터들을 설정하고
ⅸ) 'B' 영역들을 자유로 표시한다.
다음은 발명의 예시적인 실시예에 따라서 4중 드라이브 스트라이프로부터 3중 드라이브 스트라이프로 수축하는 일반적인 프로세스(패리티 분실)를 설명한다:
ⅰ) 스트라이프가 상이한 드라이브들 상의 데이터 블록들 'A', 'B', 'C' 및 'D'로 이루어져 있다고 가정한다. 패리티 'D'가 분실되었다.
ⅱ) 'A'를 존의 처음 1/3을 포함하는 것으로 'B'를 존의 두 번째 1/3을 포함하는 것으로 'C'를 존의 세 번째 1/3을 포함하는 것으로 정의하고
ⅲ) 'A' 드라이브 상의 2개 영역들 'G', 'C' 드라이브 상의 2개 영역들 'E' 및 IB· 드라이브 상의 2개 영역들 'F'를 할당하고
ⅳ) 'B'의 처음 절반을 'G'에 복사하고
ⅴ) 'B'의 두 번째 절반을 'E'에 복사하고
ⅵ) 'A'/'G' 및 'E'/'C'로부터 패리티를 구성하여 'F'에 기입하고
ⅵ) 이미 복사된 데이터에 행해진 임의의 기입들은 'G', 'E' 및 'F' 내의 적당한 위치에 미러링되어야 하고
ⅶ) 복사가 완료될 때, 존 테이블을 새로운 레이아웃 타입으로 업데이트하고 'A'/'G', 'E'/'C' 및 'F'에의 포인터들을 설정하고
ⅸ) 'B' 영역들을 자유로 표시한다.
다음은 발명의 예시적인 실시예에 따라서 4중 드라이브 스트라이프로부터 3중 드라이브 스트라이프로 수축하는 일반적인 프로세스(처음 1/3 분실)를 설명한다:
ⅰ) 스트라이프가 상이한 드라이브들 상의 데이터 블록들 'A', 'B', 'C' 및 'D'로 이루어져 있다고 가정한다. 데이터 'A'가 분실되었다.
ⅱ) 'A'를 존의 처음 1/3을 포함하는 것으로 'B'를 존의 두 번째 1/3을 포함하는 것으로 'C'를 존의 세 번째 1/3을 포함하는 것으로 그리고 'D'를 패리터로서 정의 하고
ⅲ) 'B' 드라이브 상의 4개 영역들 'E', 'C' 드라이브 상의 2개 영역들 'F' 및 'D' 드라이브 상의 6개 영역들 'G'를 할당하고
ⅳ) 'B'의 두 번째 절반을 'F'에 복사하고
ⅴ) 'B', 'C' 및 'D'로부터 분실한 데이터를 구성하여 'E'에 기입하고
ⅵ) 'E'/'B'의 처음 절반 및 'F'/'C'로부터 새로운 패리티를 구성하여 'G'에 기입하고
ⅶ) 이미 복사된 데이터에 행해진 임의의 기입들은 'B', 'E', 'F' 및 'G' 내의 적당한 위치에 미러링되어야 하고
ⅷ) 복사가 완료될 때, 존 테이블을 새로운 레이아웃 타입으로 업데이트하고 'E'/'B'의 처음 절반 및 'F'/'C' 및 'G'에의 포인터들을 설정하고
ⅸ) 'B'의 두 번째 절반 및 'D' 영역들을 자유로 표시한다.
다음은 발명의 예시적인 실시예에 따라서 4중 드라이브 스트라이프로부터 3중 드라이브 스트라이프로 수축하는 일반적인 프로세스(두 번째 1/3 분실)를 설명한다:
ⅰ) 스트라이프가 상이한 드라이브들 상의 데이터 블록들 'A', 'B', 'C' 및 'D'로 이루어져 있다고 가정한다. 데이터 'B'가 분실되었다.
ⅱ) 'A'를 존의 처음 1/3을 포함하는 것으로 'B'를 존의 두 번째 1/3을 포함하는 것으로 'C'를 존의 세 번째 1/3을 포함하는 것으로 그리고 'D'를 패리터로서 정의하고
ⅲ) 'A' 드라이브 상의 2개 영역들 'E', 'C' 드라이브 상의 2개 영역들 'F' 및 'D' 드라이브 상의 6개 영역들 'G'를 할당하고
ⅳ) 'A'의 처음 절반, 'C'의 처음 절반 및 'D'의 처음 절반으로부터 분실한 데이터를 구성하여 'E'에 기입하고
ⅴ) 'A'의 두 번째 절반, 'C'의 두 번째 절반 및 'D'의 두 번째 절반으로부터 분실한 데이터를 구성하여 'F'에 기입하고
ⅵ) 'A'/'E' 및 'F'/'C'로부터 새로운 패리티를 구성하여 'G'에 기입하고
ⅶ) 이미 복사된 데이터에 행해진 임의의 기입들은 'E', 'F' 및 'G' 내의 적당한 위치에 미러링되어야 하고
ⅷ) 복사가 완료될 때, 존 테이블을 새로운 레이아웃 타입으로 업데이트하고 'E', 'F' 및 'G'에의 포인터들을 설정하고
ⅸ) 'D' 영역들을 자유로 표시한다.
다음은 발명의 예시적인 실시예에 따라서 4중 드라이브 스트라이프로부터 3중 드라이브 스트라이프로 수축하는 일반적인 프로세스(세 번째 1/3 분실)를 설명한다:
ⅰ) 스트라이프가 상이한 드라이브들 상의 데이터 블록들 'A', 'B', 'C' 및 'D'로 이루어져 있다고 가정한다. 데이터 'C'가 분실되었다.
ⅱ) 'A'를 존의 처음 1/3을 포함하는 것으로 'B'를 존의 두 번째 1/3을 포함하는 것으로 'C'를 존의 세 번째 1/3을 포함하는 것으로 그리고 'D'를 패리터로서 정의하고
ⅲ)'A' 드라이브 상의 2개 영역들 'E', 'B' 드라이브 상의 4개 영역들 'F' 및 'D' 드라이브 상의 6개 영역들 'G'를 할당하고
ⅳ) 'B'의 처음 절반을 'E'에 복사하고
ⅴ) 'A', 'B' 및 'D'로부터 분실한 데이터를 구성하여 'F'에 기입하고
ⅵ) 'A'/'E' 및 'B'의 두 번째 절반/'F'로부터 새로운 패리티를 구성하여 'G'에 기입하고
ⅶ) 이미 복사된 데이터에 행해진 임의의 기입들은 'E', 'F' 및 'G' 내의 적당한 위치에 미러링되어야 하고
ⅷ) 복사가 완료될 때, 존 테이블을 새로운 레이아웃 타입으로 업데이트하고 'A'/'E' 및 'B'의 두 번째 절반/'F' 및 'G'에의 포인터들을 설정하고
ⅸ) 'B'의 처음 절반 및 'D' 영역들을 자유로 표시한다.
예를 들면, 도 3을 다시 참조하여, 드라이브 2 상에 이용 가능한 충분한 공간이 있다는 것을 조건으로 하여, 드라이브 0 또는 드라이브 1이 분실되면 드라이브 2 상에 2중 드라이브 미러(존 B)가 재구성될 수 있다. 유사하게, 드라이브 3 상에 이용 가능한 충분한 공간이 있다는 것을 조건으로 하여, 드라이브 0-2 중 어느 하나가 분실되면 드라이브 3을 이용하여 3중 드라이브 스트라이프(존 C)가 재구성될 수 있다.
데이터 레이아웃 방식 - 존 재구성( Zone Reconstruction )
존 재구성은 드라이브가 제거되었고 이상적인 존 재배치를 위하여 남아 있는 드라이브들 상에 충분한 공간이 있거나 또는 드라이브가 보다 큰 사이즈의 새로운 드라이브로 교체된 경우에 발생한다.
다음은 발명의 예시적인 실시예에 따라서 2중 드라이브 미러 재구성의 일반적인 프로세스를 설명한다:
ⅰ) 단일 드라이브 미러가 데이터 'A'를 갖고 있고 미러 'B'를 분실하였다고 가정하고
ⅱ) 'A'를 포함하는 것 이외의 드라이브 상의 12개 영역 'C'를 할당하고
ⅲ) 데이터 'A'를 'C'에 복사하고
ⅳ) 이미 복사된 데이터에 행해진 임의의 기입들은 'C' 내의 적당한 위치에 미 러링되어야 하고
ⅴ) 복사가 완료될 때,'B'에의 존 테이블 포인터들을 'C'에의 포인터들로 업데 이트한다.
다음은 발명의 예시적인 실시예에 따라서 3중 드라이브 스트라이프 재구성의 일반적인 프로세스를 설명한다:
ⅰ) 하나의 드라이브가 데이터 'A'를 갖고 있고, 제2 드라이브가 데이터 'B'를 갖고 있고, 제3 드라이브가 패리티 'P'를 갖고 있다고 가정한다. 'B'는 분실되었다. 어느 부분이 분실되었는지는 중요하지 않고, 필요한 조치는 모든 경우에 동일하다는 것에 유의하자.
ⅱ) 'A' 및 'P'를 포함하는 것 이외의 드라이브 상의 6개 영역들 'D'를 할당하고
ⅲ) 'A' 및 'P'로부터 분실한 데이터를 구성하여, 데이터를 'D'에 기입하고
ⅳ) 이미 처리된 데이터에 행해진 임의의 기입들은 'D' 내의 적당한 위치에 패리티되어야 하고
ⅴ) 'B'에의 포인터들을 'D'에의 포인터들로 교체함으로써 존 테이블을 업데이트한다.
이 예시적인 실시예에서, 4-드라이브-재구성은 제거된 드라이브가 다른 드라이브로 교체된 경우에만 발생할 수 있다. 그 재구성은 새로운 드라이브 상의 6개 영역들을 할당하고 분실한 데이터를 다른 3개의 영역 세트들로부터 재구성하는 것으로 구성된다.
데이터 레이아웃 방식 - 일시적 드라이브 분실 문제
드라이브가 제거되고 재배치를 위한 공간이 없을 경우, 구 드라이브가 다시 플러그 접속되거나 그 드라이브가 새로운 드라이브로 교체될 때까지 어레이는 계속해서 퇴화된 모드에서 동작할 것이다. 새로운 드라이브가 플러그 접속되면, 드라이브 세트는 재구성되어야 한다. 이 경우, 데이터는 재배치될 것이다. 만일 구 디스크가 어레이로 다시 배치되면, 더 이상 현 디스크 세트의 일부가 아니고 새로운 디스크로 간주될 것이다. 그러나, 새로운 디스크가 어레이에 배치되지 않고 구 디스크가 다시 배치되면, 구 디스크는 비록 구식 멤버이긴 하지만 여전히 디스크 세트의 멤버로서 인식될 것이다. 이 경우, 이미 재배치된 임의의 존들은 그들의 새로운 구성을 유지할 것이고 구 디스크 상의 영역들은 자유롭게 될 것이다. 재배치되지 않은 임의의 존들은 여전히 구 디스크의 적당한 영역들을 가리킬 것이다. 그러나, 퇴화된 존들에 어떤 기입들이 수행되었을지도 모르므로, 이들 존들은 리프레시될 필요가 있다. 발생한 기입마다 모두 로깅(logging)하기보다는, 변경된 퇴화된 영역들이 표시(mark)될 수 있다. 이런 식으로, 디스크가 교체될 때, 변경된 영역들만 리프레시될 필요가 있다.
또한, 기입된 존들은 재배치를 위한 우선 순위 리스트에서 더 위에 배치될 수 있다. 이렇게 함으로써 디스크가 교체되면 리프레시될 필요가 있는 영역들의 수가 저감될 것이다. 타임아웃이 이용될 수도 있고, 그 시점 후에 디스크는, 교체되더라도, 지워질(wipe) 것이다. 그러나, 이 타임아웃은 수분이 아니라 어쩌면 수시간으로 매우 클 수 있다.
데이터 레이아웃 방식 - 데이터 무결성( Data Integrity )
위에서 논의된 바와 같이, 표준 RAID 시스템에서의 하나의 문제점은 디스크 어레이의 드물게 사용되는 영역들에서 디스크 표면 훼손이 발생할 수 있다는 점이다. 다른 드라이브가 고장나는 경우에, 훼손이 발생하였음을 항상 결정할 수 있는 것은 아니다. 그 경우, 훼손된 데이터는 RAID 어레이가 고장난 드라이브를 재구성할 때 전파되어 보존될 수 있다.
위에서 논의된 해시 메커니즘은 RAID 하에서 이용 가능한 것에 비하여 데이터 훼손 검출을 위한 추가 메커니즘을 제공한다. 다른 곳에 언급되어 있는 바와 같이, 청크가 저장될 때, 그 청크에 대하여 해시 값이 계산되어 저장된다. 청크가 판독될 때 언제라도, 검색된 청크에 대한 해시 값이 계산되고 저장된 해시 값과 비교될 수 있다. 만일 해시 값이 일치하지 않으면(훼손된 청크를 나타냄), 청크 데이터는 리던던트 데이터로부터 복구될 수 있다.
디스크 상의 데이터 훼손이 발생할 수 있는 시간 윈도(time window)를 최소화하기 위하여, 되도록 신속히 훼손된 데이터를 찾아 정정하기 위해 디스크들의 정기적인 스캔이 수행될 것이다. 그것은 또한, 선택적으로, 어레이로부터의 판독 시에 체크가 수행되도록 할 것이다.
데이터 레이아웃 방식 - 볼륨( Volume )
스파스 볼륨(sparse volume)에서는, 어레이 내의 디스크들 상에서 이용 가능한 저장 공간의 양에 관계없이, 어레이는 항상 일정한 사이즈 - 예컨대, M 테라바이트 - 임을 주장한다. 어레이가 S 바이트의 실제 저장 공간을 포함하고(S <= M), 데이터가 M 테라바이트 공간 내의 위치들 L1, L2, L3 등에 저장되도록 요구될 수 있다고 가정하자, 만일 요구된 위치 Ln > S이면, Ln에 대한 데이터는 위치 Pn < S에 저장되어야 한다. 이것은, 도 8에 도시된 바와 같이, Ln에 기초하여 Pn을 인덱싱하는 조회 테이블(lookup table)을 포함함으로써 관리된다. 이 특징은 어레이가 윈도즈(Windows), 리눅스(Linux), 및 애플(Apple) 운영 시스템들과 같은, 볼륨 확장을 지원하지 않는 운영 시스템과 함께 작동하도록 허용한다. 또한, 어레이는 모두가 동일 물리적 저장을 공유하는 다수의 스파스 볼륨들을 제공할 수 있다. 각 스파스 볼륨은 전용 조회 테이블을 갖겠지만, 데이터 저장을 위하여 동일 물리적 공간을 공유할 것이다
드라이브 슬롯 지시자( Drive slot indicators )
위에서 논의된 바와 같이, 저장 어레이는 하나 이상의 드라이브 슬롯들로 이루어진다. 각 드라이브 슬롯은 비어 있거나 하드 디스크 드라이브를 포함할 수 있다. 각 드라이브 슬롯은 4개의 상태, 오프(Off), OK, 퇴화(Degraded) 및 고장(Fail)을 지시할 수 있는 전용 지시자를 갖는다. 상태들은 일반적으로 다음과 같이 해석된다.
지시자 상태 어레이 사용자에 대한 의미
오프(Off) 드라이브 슬롯이 비어 있고 추가 드라이브가 삽입될 수 있음
OK 슬롯 내의 드라이브가 바르게 기능하고 있음
퇴화(Degraded) 사용자에 의한 조치가 권장됨: 슬롯이 비어 있으면, 이 슬롯에 드라이브를 추가하고; 슬롯이 드라이브를 포함하고 있으면, 드라이브를 다른 더 높은 용량의 드라이브로 교체한다.
고장(Fail) 사용자에 의한 조치가 가능한 빨리 요구됨: 슬롯이 비어 있으면, 이 슬롯에 드라이브를 추가하고; 슬롯이 드라이브를 포함하고 있으면, 드라이브를 다른 더 높은 용량의 드라이브로 교체한다.
이 예시적 실시예에서, 적색/황색/녹색 발광 다이오드(LED)들이 지시자들로서 사용된다. LED들은 일반적으로 다음과 같이 해석된다.
LED 상태 지시자 상태 상태들이 발생할 수 있는 상황 예 도면
오프 오프 슬롯이 비어 있다. 어레이가 이용 가능한 공간을 갖고 있다. 9,10,12
녹색 OK 드라이브가 바르게 기능하고 있고, 어레이 데이터가 리던던트하고 어레이가 이용 가능한 디스크 공간을 갖고 있다. 9,10,11,12
황색 퇴화 어레이가 고장 상태에 접근하고 있다; 디스크 고장의 경우에 리던던트 데이터를 유지하기 위해 충분한 공간이 없다. 11
적색 고장 이 슬롯 내의 디스크가 고장나서 교체되어야 한다; 어레이는 리던던트 데이터 저장을 유지하기 위해 충분한 공간을 갖고 있지 않고 더 많은 공간이 추가되어야 한다. 10,12
도 9는 본 발명의 예시적인 실시예에 따라서, 이용 가능한 저장 공간을 갖고 내장애성 방식으로 동작하는 예시적인 어레이를 도시한다. 슬롯들 B, C, 및 D는 저장 디바이스들로 채워져 있고, 추가 데이터를 리던던트하게 저장하기 위해 이용 가능한 충분한 저장 공간이 있다. 슬롯들 B, C, 및 D에 대한 지시자들은 녹색이고(이들 저장 디바이스들이 바르게 동작하고 있고, 어레이 데이터는 리던던트하고, 어레이는 이용 가능한 디스크 공간을 갖고 있음을 지시함), 슬롯 A에 대한 지시자는 오프이다(슬롯 A에 저장 디바이스가 채워질 필요가 없음을 지시함),
도 10은 본 발명의 예시적인 실시예에 따라서, 리던던트 데이터 저장을 유지하기 위해 충분한 공간을 갖고 있지 않고 더 많은 공간이 추가되어야 하는 예시적이 어레이를 도시한다. 슬롯들 B, C, 및 D는 저장 디바이스들로 채워져 있다. 슬롯 C 및 D 내의 저장 디바이스들은 차 있다. 슬롯들 B, C, 및 D에 대한 지시자들은 녹색이고(이들 저장 디바이스들이 바르게 동작하고 있음을 지시함), 슬롯 A에 대한 지시자는 적색이다(어레이가 리던던트 데이터 저장을 유지하기 위해 충분한 공간을 갖고 있지 않고 슬롯 A에 저장 디바이스가 채워져야 함을 지시함).
도 11은 본 발명의 예시적인 실시예에 따라서, 고장의 경우에 리던던트 데이터를 유지할 수 없게 될 예시적인 어레이를 도시한다. 슬롯들 A, B, C, 및 D는 저장 디바이스들로 채워져 있다. 슬롯들 C 및 D 내의 저장 디바이스들은 차 있다. 슬롯들 A, B, 및 C에 대한 지시자들은 녹색이고(이들 저장 디바이스들이 바르게 동작하고 있음을 지시함), 슬롯 D에 대한 지시자는 황색이다(슬롯 D 내의 저장 디바이스가 보다 큰 저장 웅량을 갖는 저장 디바이스로 교체되어야 함을 지시함).
도 12는 본 발명의 예시적인 실시예에 따라서, 저장 디바이스가 고장난 예시적인 어레이를 도시한다. 슬롯들 B, C, 및 D는 저장 디바이스들로 채워져 있다. 슬롯 C 내의 저장 디바이스는 고장났다. 슬롯들 B 및 D에 대한 지시자들은 녹색이고(이들 저장 디바이스들이 바르게 동작하고 있음을 지시함), 슬롯 C에 대한 지시자는 적색이고(슬롯 C 내의 저장 디바이스가 교체되어야 함을 지시함), 슬롯 A에 대한 지시자는 오프이다(슬롯 A에 저장 디바이스가 채워질 필요가 없음을 지시함).
다음은 본 발명의 예시적 실시예에 대한 소프트웨어 설계에 대한 설명이다. 소프트웨어 설계는 6개의 소프트웨어 계층들에 기초하고, 이 소프트웨어 계층들은 논리적 아키텍처가 물리적으로 디스크에 액세스하는 것으로부터 호스트 컴퓨팅 시스템과 통신하는 것까지 걸쳐 있다.
이 예시적 실시예에서, 파일 시스템은 윈도즈, 리눅스, 또는 애플 서버와 같은 호스트 서버 상에 존재하고, USB 또는 iSCSI 디바이스로서 저장 어레이에 액세스한다. 호스트 인터페이스를 통하여 착신되는 물리적 디스크 요구들은 호스트 요구 관리자(HRM : Host Request Manager)에 의해 처리된다. 호스트 1/0 인터페이스는 호스트 USB 또는 iSCSI 인터페이스를 호스트에 제공(presentation)하는 것을 코디네이트(coordinate)하고, HRM과 인터페이스한다. HRM은 호스트 1/0 인터페이스로부터의 데이터 판독/기입 요구들을 코디네이트하고, 판독 및 기입 요구들을 디스패치(dispatch)하고, 이들 요구들이 완료될 때 호스트로 다시 이들 요구들을 회수(retiring)하는 것을 코디네이트한다.
저장 어레이의 무엇보다 중요한 목적은 일단 데이터가 시스템에 의해 수취되면, 시스템이 현재 저장하는 최대량의 리던던시를 이용하여, 데이터가 신뢰할 만한 방식으로 저장되도록 하는 것이다. 어레이가 물리적 구성을 변경할 때, 데이터는 리던던시를 유지하도록(가능하다면 최대화하도록) 재편성된다. 또한, 이용되는 저장의 양을 저감시키기 위해 단순한 해시 기반 압축이 이용된다.
가장 기본적인 계층은 상이한 디스크들에 데이터를 저장하는 디스크 드라이버들로 이루어진다. 디스크들은 USB 인터페이스를 통하여 터널링되는 ATA와 같은 각종 인터페이스들을 통하여 부착된다.
디스크들 상의 섹터들은, 각각이 상이한 논리적 역할을 갖는, 영역들, 존들, 및 클러스터들로 편성된다.
영역들은 디스크 상의 연속된 물리적 블록들의 세트를 나타낸다. 4 드라이브 시스템에서, 각 영역은 사이즈가 1/12 GB이고, 리던던시의 최소 단위를 나타낸다. 만일 영역 내의 섹터가 물리적으로 손상된 것으로 확인되면, 전체 영역이 버려질 것이 다.
존들은 리던던시의 단위들을 나타낸다. 존은 적당한 양의 리던던시를 제공하기 위해 어쩌면 상이한 디스크들 상의 다수의 영역들로 이루어질 것이다. 존들은 1GB의 데이터 용량을 제공하겠지만, 리던던시를 제공하기 위하여 더 많은 영역들을 필요로 할 수 있다. 리던던시가 없는 1GB는 한 세트의 12 영역들(1GB)을 필요로 하고; 1GB 미러링된 존(mirrored zone)은 2 세트의 1GB 영역들(24 영역들)을 필요로 할 것이고; 1GB 3-디스크 스트라이프 존(stripped zone)은 3 세트의 0.5GB 영역들(18 영역들)을 필요로 할 것이다. 상이한 존들은 상이한 리던던시 특성들을 가질 것이다.
클러스터들은 압축의 기본 단위를 나타내고, 존들 내의 단위 사이즈이다 그것들은 현재 사이즈가 4KB: 8 × 512 바이트 섹터들이다. 디스크 상의 다수의 클러스터들이 아마도 동일 데이터를 포함할 것이다. 클러스터 액세스 테이블(CAT : cluster access table)은 해싱 함수를 통하여 클러스터들의 사용을 추적하기 위해 이용된다. CAT는 논리적 호스트 어드레스와 존 내의 적당한 클러스터의 위치 사이를 번역(translate)한다.
디스크에 기입할 때, 해시 함수는 데이터가 이미 디스크 상에 존재하는지를 확인하기 위해 이용된다. 만일 그렇다면, CAT 테이블 내의 적당한 엔트리는 기존의 클러스터를 가리키도록 설정된다.
CAT는 그 자신의 존 내에 존재한다. 만일 그것이 존의 사이즈를 초과한다면, 추가 존이 이용될 것이고, 논리적 어드레스를 CAT의 해당 부분에 대한 존에 맵핑하기 위한 테이블이 이용될 것이다. 대안적으로, 존들은 CAT 테이블을 포함하도록 미리 할당된다.
호스트 기입 레이턴시를 줄이고 데이터 신뢰도를 보장하기 위하여, 저널 관리자(journal manager)가 모든 기입 요구들을 기록할 것이다(디스크에 또는 NVRAM에). 만일 시스템이 재부팅되면, 저널 엔트리들은 재부팅 시에 커밋(commit)될 것이다.
디스크들이 오고 갈 수 있고, 영역들이 훼손(Corrupton)을 갖고 있는 것으로 확인되면 그 영역들이 회수(retire)될 수 있다. 이들 상황 중 어느 쪽이든, 레이아웃 관리자가 존의 리던던시 타입을 변경하거나, 또는 (영역이 훼손되면) 존의 영역 구성을 변경하기 위하여 존 내의 영역들을 재편성할 수 있을 것이다.
저장 어레이는 물리적 디스크 공간의 레벨들을 변경함으로써 지원되는 가상 디스크 어레이를 제공하므로, 그리고 그것은 블록 레벨 인터페이스를 제공(present)하기 때문에, 클러스터들이 더 이상 파일 시스템에 의해 사용되지 않는 때가 명백하지 않다. 그 결과, 사용되는 클러스터 공간은 계속해서 확장할 것이다. (호스트 상에 또는 펌웨어 내에 위치하는) 가비지 컬렉터(garbage collector)가 파일 시스템을 분석하여 어느 클러스터들이 자유롭게 되었는지를 결정하고, 그것들을 해시 테이블로부터 제거할 것이다.
다음 표는 발명의 예시적 실시예에 따른 6개의 소프트웨어 계층들을 보여준다.
계층 5: 가비지 컬렉터, 호스트 인터페이스(USB/iSCSI)
계층 4: 호스트 요구 관리자
계층 3: CAT, HASH, 저널 관리자
계층 2: 존 관리자. 존이라 불리는 섹터들의 청크들을 할당하고/자유롭게 한다. 에러 및 에러 복구를 처리하기 위해 SDM, DDM, SD3 등에 관하여 알고 있다. 레이아웃 관리자
계층 1: 물리적 클러스터들/섹터들을 판독/기입한다. 디스크마다 영역들을 할당한다.
계층 0: 디스크 액세스 드라이버들
도 13은 상이한 소프트웨어 계층들 및 그들이 서로 어떻게 관련되는지를 나타내는 모듈 계층구조를 도시한다. 소프트웨어 계층화(layering)는 명백한 API들 및 경계 식별(delineation)을 제공하기 위하여 바람직하게는 고정된다(rigid).
가비지 컬렉터는 호스트 파일 시스템에 의해 더 이상 사용되지 않는 클러스터들을 자유롭게 한다. 예를 들면, 파일이 삭제될 때, 그 파일을 포함하기 위해 사용되었던 클러스터들은 바람직하게는 자유롭게 된다.
저널 관리자는 정전 또는 다른 에러 상태의 경우에 미처리(pending) 기입들이 손실되지 않도록 기입들의 저널링(journaling)의 일종을 제공한다.
레이아웃 관리자는 그들의 영역들과 비교하여(vis-a-vis) 존들의 실행시간 재배치(run-time re-layout)를 제공한다. 이것은 디스크 삽입/제거 또는 고장의 결과로 일어날 수 있다.
클러스터 관리자는 데이터 존들의 세트 내에 클러스터들을 할당한다. 디스크 이용 디먼(Disk Utilization Daemon)은 주기적으로 자유 디스크 공간을 체크한다.
록 테이블(Lock Table)은 기입 후 판독 충돌(read after write collision) 문제들을 처리한다.
호스트 요구 관리자는 호스트 및 가비지 컬렉터로부터의 판독/기입 요구들을 처리한다. 기입들은 저널 관리자에 전달되는 반면, 판독들은 클러스터 액세스 테이블(CAT) 관리 계층을 통하여 처리된다.
위에서 논의된 바와 같이, 전형적인 파일 시스템들에서, 데이터의 얼마간의 양은 일반적으로 사실상 반복성일 것이다. 디스크 공간 이용을 줄이기 위하여, 이 데이터의 다수의 사본들이 디스크들에 기입되지 않는다. 대신, 하나의 인스턴스가 기입되고, 동일 데이터의 모든 다른 인스턴스들은 이 하나의 인스턴스에 참조된다.
이 예시적 실시예에서, 시스템은 언제나 데이터의 클러스터(예컨대, 8개의 물리적 섹터들)에 작용하고, 이것은 해싱되는 단위이다. SHA1 알고리듬은 160 비트 해시를 생성하기 위해 이용된다. 이것은 양호한 유일성(good uniqueness), 및 다수의 프로세서들에서 온칩으로 지원되는 것을 포함하여 다수의 이점들을 갖는다. 모든 160 비트는 해시 레코드에 저장되겠지만, 최하위 16 비트만이 해시 테이블에의 인덱스로서 이용될 것이다. 최저 16 비트와 일치하는 다른 인스턴스들은 링크된 리스트(linked-list)를 통하여 연쇄(chain)될 것이다.
이 예시적 실시예에서는, 한 번에 하나의 판독/기입 동작만 발생할 수 있다. 성능을 위하여, 해시 분석은 클러스터를 디스크에 기입할 때는 발생하도록 허용되지 않는다. 대신, 해시 분석은 해시 관리자에 의해 배경 활동(background activity)으로서 발생할 것이다.
기입 요구들은 저널의 큐(queue)로부터 판독되어, 완료까지 처리된다. 데이터 일관성을 보장하기 위하여, 기입 동작이 이미 클러스터 상에서 활성이면 기입들이 연기되어야 한다. 다른 클러스터들 상의 동작들은 방해받지 않고 처리될 수 있다.
전체 클러스터가 기입되지 않는 한, 기입되는 데이터는 클러스터에 저장된 기존의 데이터와 병합될 필요가 있을 것이다. 논리적 섹터 어드레스(LSA : logical sector address)에 기초하여, 클러스터에 대한 CAT 엔트리가 위치 확인(locate)된다. 해시 키, 존 및 클러스터 오프셋 정보가 이 레코드로부터 획득되고, 그 후 그것은 일치를 찾기 위해 해시 테이블을 검색하는 데 이용될 수 있다. 이것이 클러스터이다.
정확한 해시 엔트리의 조회 속도를 향상시키기 위해 한 번은 SHA1 다이제스트를 통하여, 그 후 존/클러스터 오프셋에 의해, 해시 테이블을 이중으로 해싱하는 것이 필요할 수도 있다. 만일 해시 레코드가 이미 이용되었다면, 참조 카운트가 감소된다. 만일 참조 카운트가 이제 제로이면, 해시 엔트리에 의해 참조되는 스냅숏(snapshot)이 없고, 해시 엔트리 및 클러스터는 다시 그들 각각의 자유 리스트들로 자유롭게 될 수 있다.
최초 클러스터 데이터는 이제 클러스터의 업데이트 섹션과 병합되고, 데이터는 다시 해싱된다. 새로운 클러스터가 자유 리스트로부터 제거되고, 병합된 데이터는 그 클러스터에 기입되고, 새로운 엔트리가 해시 테이블에 추가되고, CAT 테이블 내의 엔트리는 새로운 클러스터를 가리키도록 업데이트된다.
해시 테이블을 업데이트한 결과, 엔트리는 또한 배경 작업으로서 처리되도록 내부 큐(internal queue)에 추가된다. 이 작업은 새로이 추가된 클러스터 및 해시 엔트리를 해시 테이블 행 어드레스(table row address)와 일치하는 다른 해시 엔트리들과 비교할 것이고, 그것들이 복제(duplicate)들이라면 레코드들을 결합하여, 적절한 해시 엔트리들 및 CAT 테이블 엔트리들을 자유롭게 할 것이다. 만일 이 처리 중에 고장(예컨대, 전력 손실)이 발생하면, 각종 테이블들이 삭제되어, 결국 데이터가 손실될 수 있다. 테이블들은 최종 커밋이 원자적(atomic)이도록 또는 저널 엔트리가 완전히 완료하지 않았다면 그 저널 엔트리가 다시 실행될 수 있도록 관리된다.
다음은 기입 논리에 대한 의사 코드이다:
Figure 112007041153623-PCT00001
Figure 112007041153623-PCT00002
Figure 112007041153623-PCT00003
Figure 112007041153623-PCT00004
Figure 112007041153623-PCT00005
Figure 112007041153623-PCT00006
Figure 112007041153623-PCT00007
판독 요구들은 또한 한 번에 한 클러스터씩("섹터"와는 대조적으로) 처리된다. 판독 요구들은 위에서 요약 설명된 해시 관련 처리를 거치지 않는다. 대신, 호스트 논리적 섹터 어드레스는 CAT를 참조하고 존 번호 및 존에의 클러스터 오프셋을 획득하기 위해 이용된다. 판독 요구들은 CAT 캐시 내의 CAT 테이블 엔트리를 조회해야 하고, 진행중-기입(write-in-progress) 비트가 세트일 때 연기되어야 한다. 다른 판독/기입들은 방해받지 않고 처리될 수 있다. 데이터 무결성 체킹을 향상시키기 위하여, 클러스터가 판독될 때, 그것은 해싱될 것이고, 그 해시는 해시 레코드에 저장된 SHA1 해시 값과 비교될 것이다. 이것은 해시, 존 및 클러스터 오프셋을 해시 테이블 내로의 검색 키로서 이용하는 것을 필요로 할 것이다.
클러스터들은 되도록 적은 수의 존들을 이용하도록 할당된다. 이것은 존들이 디스크 드라이브 이용에 직접 대응하기 때문이다. 모든 존마다, 하드 드라이브 어레이 상에 2 이상의 영역들이 있다. 존의 수를 최소화함으로써, 물리적 영역의 수가 최소화되고 따라서 하드 드라이브 어레이 상의 공간의 소비가 저감된다.
클러스터 관리자는 데이터 존들의 세트로부터 클러스터를 할당한다. 링크된 리스트는 존 내의 자유 클러스터들을 추적(keep track of)하기 위해 이용된다. 그러나, 자유 클러스터 정보는 디스크 상에 비트맵(존마다 32KB)으로서 저장된다. 링크된 리스트는 이 비트맵으로부터 동적으로 구성된다. 처음에, 어느 일정한 수의 자유 클러스터들의 링크된 리스트가 메모리에 생성된다. 클러스터들이 할당되면, 리스트는 수축(shrink)한다. 소정의 낮은 워터 마크(low-water mark)에서, 자유 클러스터들을 나타내는 새로운 링크된 리스트 노드들이 디스크 상의 비트맵으로부터 추출된다. 이런 식으로, 할당을 위한 자유 클러스터를 찾기 위하여 비트맵이 파싱될 필요가 없다.
이 예시적 실시예에서, 해시 테이블은 (해시의 하위 16 비트에 의해 인덱싱된) 64K 레코드들의 테이블이고 다음의 포맷을 갖는다:
오프셋 비트 사이즈 이름 값/유효 범위 설명
0 160 sha1Hash 완전한 SHA1 해시 다이제스트
16 refCount 이 해시의 인스턴스들의 수; 16 비트를 넘으면 무엇을 하는가?
18 Cluster offset 존 내의 클러스터 오프셋
14 Zone # 이 클러스터를 포함하는 Zone #(존 번호)
8 snapshot 이 클러스터 엔트리가 해당 스냅숏에 의해 이용되는 것을 지시하기 위해 스냇숏 인스턴스당 하나의 비트. 이 모델은 8개 스냅숏을 지원한다(어쩌면 7개만)
전부 제로인 클러스터(cluster of all zeros)는 꽤 흔할 수 있어서, 전부 제로인 경우는 특별한 경우로서, 예를 들면, 그것은 결코 삭제될 수 없도록(따라서 카운트를 랩핑하는 것(wrapping the count)이 문제가 되지 않도록), 취급될 수 있다.
자유 해시 레코드의 링크된 리스트는 다수의 해시들이 동일한 최하위 해시(least significant hash)를 갖는 경우, 또는 2개의 해시 엔트리들이 상이한 데이터 클러스터들을 가리킬 경우에 이용된다. 어느 경우든, 자유 해시 레코드가 리스트로부터 제거되어, pNextHash 포인터를 통하여 링크될 것이다.
해시 관리자는 해시 테이블에 추가된 엔트리들을 정리(tidy up)하고, 디스크 상의 동일한 클러스터들을 결합할 것이다. 새로운 해시 레코드들이 해시 테이블에 추가될 때, 메시지가 해시 관리자에 포스트(post)될 것이다. 이것은 해시 관리자에 의해 자동으로 행해질 것이다. 배경 활동으로서, 해시 관리자는 그것의 큐 상의 엔트리들을 처리할 것이다. 그것은 전체 해시 값을 비교하여 그것이 임의의 기존의 해시 레코드들과 일치하는지를 확인할 것이다. 만일 그렇다면, 그것은 또한 완전한 클러스터 데이터를 비교할 것이다. 만일 클러스터들이 일치하면, 새로운 해시 레코드는 다시 자유 큐로 폐기될 수 있고, 해시 레코드 카운트는 증가될 것이고, 복제 클러스터는 클러스터 자유 큐로 반환될 것이다. 해시 관리자는 레코드들을 결합할 때 스냅숏 비트를 전방으로 주의해서 전파해야 한다.
클러스터 액세스 테이블(CAT)은 간접 포인터들을 포함한다. 이 포인터들은 존 내의 데이터 클러스터들을 가리킨다(0이 제1 데이터 클러스터임). 하나의 CAT 엔트리는 단일 데이터 클러스터(시험적으로 4KB 사이즈)를 참조한다. CAT들은 많은 반복성 데이터가 있을 경우 디스크 이용 요건들을 줄이기 위하여 (해싱과 관련하여) 사용된다. 단일 CAT는 항상 연속된 저장 블록을 나타낸다. CAT들은 비-데이터(non-data) 존들 내에 포함된다. 각 CAT 엔트리는 48 비트이다. 다음 표는 (각 데이터 존이 1GB의 데이터를 포함한다고 가정하여)각 엔트리가 어떻게 레이아웃되는지를 보여준다:
비트 0-17 비트 18-31 비트 32-47 비트 48-63[..]
존 내의 데이터 클러스터의 오프셋 데이터를 포함하는 존# 해시 키 예비. 후보들은 가비지 컬렉터 기입 비트; 스냅숏 비트; 스냅숏 테이블 해시 키를 포함한다
CAT는 64 비트에 합치하는 것이 바람직하지만, 이것은 필수적인 것은 아니다. 2TB 어레이에 대한 CAT 테이블은 현재 사이즈가 4GB까지이다. 각 CAT 엔트리는 데이터 및 존의 번호를 포함하는 존을 가리킨다.
도 14는 존 내의 데이터 클러스터들에 액세스하기 위해 CAT가 어떻게 이용되는지를 도시한다. 2개의 논리적 클러스터들이 동일 데이터를 포함하고, 따라서 그들의 CAT 엔트리들은 동일한 물리적 클러스터에 지시된다.
해시 키 엔트리는 전체 클러스터의 160 비트 SHA1 해시 값의 16 비트 추출을 포함한다. 이 엔트리는 기입 동작 동안에 해시 테이블을 업데이트하기 위해 이용된다.
16TB의 데이터를 참조하기 위해 CAT 내의 각 엔트리에는 충분한 비트들이 있다. 그러나, 각 데이터 클러스터마다 모두 다른 클러스터와 (콘텐츠 면에서) 다르다면, 2TB의 데이터를 참조하기 위해 3 존을 겨우 넘는 만큼의(just over 3 Zones' worth of) CAT 엔트리들이 요구된다(각 존은 사이즈가 1GB이고, 따라서 1GB/사이즈의 CAT 엔트리 엔트리들(1GB/size of CAT entry entries)을 저장할 수 있다. 6 바이트 CAT 엔트리들을 가정하면, 그것은 178956970 CAT 엔트리/존이다. 즉, 테이블은 각 클러스터가 4K이면 약 682 GB/존을 참조한다).
호스트 논리적 섹터 번역 테이블은 호스트 논리적 섹터 어드레스를 존 번호로 번역하기 위해 이용된다. 호스트 논리적 섹터 어드레스에 대응하는 CAT의 부분은 이 존 내에 존재할 것이다. 각 CAT 엔트리는 4096 바이트의 클러스터 사이즈를 대표한다는 것에 유의하자. 이것은 8개의 512 바이트 섹터들이다. 다음은 호스트 논리적 섹터 번역 테이블의 표현을 보여준다.
시작 호스트 논리적 섹터 어드레스 끝 호스트 논리적 섹터 어드레스 CAT의 존#
0(클러스터#0) 1431655759(클러스터#178956969)
1431655760(클러스터#178956970) ...
존들은 전체 CAT를 보유하도록 미리 할당될 수 있다. 대안적으로, 존들은 CAT에의 더 많은 엔트리들이 요구될 때 CAT에 대하여 할당될 수 있다. CAT는 2TB 가상 디스크를 호스트 섹터 어드레스 공간에 맵핑하므로, 호스트에 의한 하드 디스크 분할 또는 포맷팅 동안에 CAT의 대부분이 참조될 가능성이 있다. 이 때문에, 존들은 미리 할당될 수 있다.
CAT는 큰 1GB/존 테이블이다. 사용 중인 클러스터들의 작업 세트는 이 큰 테이블로부터의 스파스 세트일 것이다. 성능을 위하여, 활성 엔트리들은 항상 그것들을 디스크로부터 판독하기보다는 (아마도 일시적으로) 프로세서 메모리에 캐싱될 수 있다. 캐시를 채우기 위한 적어도 2개의 옵션 - CAT로부터의 개개의 엔트리들, 또는 CAT로부터의 전체 클러스터들 - 이 있다.
진행중-기입(write-in-progress)이 CAT 캐시 테이블과 결합되기 때문에, 모든 미처리(outstanding) 기입들이 캐시 내에 남아 있도록 할 필요가 있다. 따라서, 캐시는 적어도 미처리 기입 요구들의 최대 수만큼 클 필요가 있다.
캐시 내의 엔트리들은 클러스터 사이즈(즉, 4K)일 것이다. 클러스터 상에서 동작하는 진행중-기입이 있는지를 알 필요가 있다. 이 지시(indication)는 클러스터에 대한 캐시 엔트리 내에 플래그로서 저장될 수 있다. 다음 표는 CAT 캐시 엔트리의 포맷을 보여준다:
비트 0-17 비트 18-31 비트 32-47 비트 48-63
존 내의 데이터 클러스터의 오프셋 데이터를 포함하는 존# 해시 키 비트 48: 진행중-기입 비트 49: 더티(Dirty)
캐시 엔트리 내의 진행중-기입 플래그는 2개의 암시들을 갖는다. 첫째로, 그것은 기입이 진행중이고, 이 클러스터 상의 어떠한 판독들(또는 추가 기입들)도 그 기입이 완료할 때까지 연기되어야 한다는 것을 지시한다. 둘째로, 캐시 내의 이 엔트리는 그 비트가 세트인 동안에 플러시(flush)되어서는 안 된다. 이것은 부분적으로는 비트의 상태를 보호하기 위한 것이고, 또한 이 클러스터가 현재 사용 중이라는 사실을 반영하기 위한 것이다. 또한, 이것은 캐시의 사이즈가 적어도 미처리 기입 동작들의 수만큼 커야 한다는 것을 의미한다.
클러스터에 대한 캐시 엔트리에 진행중-기입 지시자를 저장하는 것의 하나의 이점은 그것은 동작이 현재 행해지고 있다는 사실을 반영하고, 또 다른 테이블을 갖는 것을 면하게 해주고, 또한 그것은 이 비트도 체크하기 위한 추가적인 해시 기반 조회, 또는 테이블 보행(table walk)을 면하게 해준다는 점이다. 캐시는 연기 기입(write-delayed) 캐시일 수 있다. 기입 동작이 완료되면 캐시 엔트리를 다시 디스크에 기입하기만 하면 된다. 비록 그것을 더 일찍 다시 기입되게 하는 것이 유익할 수는 있지만. 해싱될 수 있는 미처리 기입 엔트리들의 수를 증가시키기 위해 해시 함수 또는 다른 메커니즘이 이용될 수 있다.
대안적인 접근법은 CAT의 전체 클러스터들(즉, 엔트리들 중 4K 엔트리)을 캐싱하는 것이다. 이것은 일반적으로 양호한 공간적 액세스 위치(spatial locality of access)가 있다면 성능을 도울 것이다. CAT 엔트리들은 48 비트 폭이고, 따라서 캐시 내에 전체 수의 엔트리들이 있지 않을 것이기 때문에 주의할 필요가 있다. 다음 표는 클러스터된 CAT 캐시 엔트리의 예를 보여준다.
2 워드 2 워드 2 워드 2 워드
CAT 엔트리 1 (마지막 2 워드의 부분적 엔트리) CAT 엔트리 2
CAT 엔트리 3 CAT 엔트리 4
CAT 엔트리 4 CAT 엔트리 5
CAT 엔트리 5 CAT 엔트리 6
....
CAT 엔트리 682 CAT 엔트리 683 (처음 2 워드의 부분적 엔트리)
진행중-기입 비트 어레이[682 비트]: 비트 0-255
진행중-기입 비트 어레이 비트 256-511
진행중-기입 비트 어레이 512-682 + 스파스 비트들 더티 카운트 예비
테이블 사이즈는 4096 + 96(4192 바이트)이 될 것이다. 250 엔트리의 캐시 사이즈를 갖는 것이 필요하다고 가정하면, 캐시는 대략 1MB를 차지할 것이다.
논리적 CAT 엔트리 어드레스의 적절한 마스킹에 의해 처음과 마지막 엔트리가 불완전한지 여부를 추정하는 것이 가능하다. 캐싱 조회 루틴은 엔트리를 로딩하기 전에 이것을 해야 하고 요구되는 CAT 클러스터를 로딩해야 한다.
호스트가 섹터(또는 클러스터) 판독 요구를 송신할 때, 그것은 논리적 섹터 어드레스를 통하여 송신한다. 논리적 섹터 어드레스는 호스트에 의해 요구되는 실제 데이터를 포함하는 존 내의 클러스터의 오프셋을 얻기 위하여 CAT에 대한 오프셋으로서 이용된다. 결과는 존 번호 및 그 존에 대한 오프셋이다. 그 정보는 계층 2 소프트웨어에 전달되고, 그 후 계층 2 소프트웨어는 드라이브(들)로부터 원시(raw) 클러스터(들)를 추출한다.
호스트에 의해 기입된 적이 없는 클러스터들을 다루기 위하여, 모든 CAT 엔트리들은 전부 제로를 포함하는 "디폴트" 클러스터를 가리키도록 초기화된다.
저널 관리자는 바이레벨(bi-level) 저널링 시스템이다. 이 시스템의 목적은 호스트로부터 기입 요구들이 수취될 수 있도록 하고 데이터가 수취된 것을 신속히 호스트에게 지시함과 동시에 그것의 무결성을 보장하는 것이다. 또한, 이 시스템은 임의의 디스크 기입 동안에 시스템이 리셋되는 경우에 임의의 블록 레벨 데이터 또는 시스템 메타데이터(예컨대, CAT 및 해시 테이블 엔트리들)의 훼손 또는 분실이 일어나지 않도록 할 필요가 있다.
J1 저널 관리자는 호스트들로부터의 모든 기입 요구들을 되도록 신속히 디스크에 캐싱한다. 일단 기입이 성공적으로 완료하면(즉, 데이터가 어레이에 의해 수취되면), 호스트는 동작이 완료하였음을 지시하도록 신호를 받을 수 있다. 저널 엔트리는 고장으로부터 복구할 때 기입 요구들의 복구를 허용한다. 저널 레코드들은 디스크에 기입될 데이터, 및 기입 트랜잭션과 관련된 메타데이터로 이루어진다.
디스크 판독/기입들을 줄이기 위하여, 기입과 관련된 데이터는 자유 클러스터들에 기입될 것이다. 이것은 데이터를 자동으로 미러링할 것이다. 자유 클러스터들이 자유 클러스터 리스트로부터 제거될 것이다. 일단 데이터가 기입되면, 자유 클러스터 리스트는 다시 디스크에 기입되어야 한다.
저널 레코드는 미러링되지 않은(non-mirrored) 존 상의 저널 큐에 기입될 것이다. 각 레코드는 사이즈가 섹터일 것이고, 저널 기입 동안의 고장이 이전의 저널 엔트리를 훼손시킬 위험을 줄이기 위하여 섹터 경계에 정렬된다. 저널 엔트리들은 큐의 끝이 쉽게 식별될 수 있도록 레코드의 끝에 유일한, 증가하는 시퀀스 카운트(unique, incrementing sequence count)를 포함할 것이다.
저널 기입 동작들은 호스트 큐 처리 스레드와 동시에 일어날 것이다. 저널 기입들은, 디스크에 기입될 때, 언제든지 하나의 스레드만 저널을 기입할 수 있도록, 순서화되어야 한다. J1 테이블 내의 저널 엔트리의 어드레스는 J1 저널 엔트리가 J2 저널 내의 엔트리들과 상관될 수 있도록 유일 식별자로서 이용될 수 있다. 일단 저널 엔트리가 기입되면, 트랜잭션 완료 통지가 호스트 완료 큐에 포스트될 것이다. 이제 기입 동작이 실행될 수 있다. 저널 기입이 완료하기 전에 클러스터에 대한 임의의 후속 판독들이 연기되도록 하는 것이 중요하다.
다음 표는 J2 저널 레코드의 포맷을 보여준다:
비트 사이즈 이름 상세
32 LBA 논리적 블록 어드레스
14 Zone 관련 클러스터의 존#
18 Offset 관련 클러스터의 클러스터 오프셋
16 Size 데이터의 사이즈
16 SequenceNumber 큐의 끝을 쉽게 찾을 수 있도록 증가하는 시퀀스 번호
각 저널 레코드는 섹터 경계에 정렬될 것이다. 저널 레코드는 존/오프셋/사이즈 터플들(tuples)을 포함할 수 있다.
도 15는 본 발명의 예시적인 실시예에 따른 저널 테이블 업데이트를 도시한다. 구체적으로, 호스트 기입 요구가 수신되면, 저널 테이블이 업데이트되고, 하나 이상의 클러스터들이 할당되고, 데이터가 클러스터(들)에 기입된다.
호스트 저널 요구들이 처리된다. 이들은 클러스터들이 기입되게 하고, 또한 디스크에 다시 섀도우(shadow)되어야 하는 메타데이터 구조(예를 들면, CAT 테이블)에 대한 업데이트들을 일으킨다. 비록 시스템 리셋이 발생하더라도 이들 메타데이터 구조들이 디스크에 다시 정확하게 기입되도록 하는 것이 중요하다. 저레벨 I/O 기입(J2) 저널이 이를 위해 이용될 것이다.
호스트 인터페이스 저널 엔트리를 처리하기 위하여, 메타데이터 구조들의 적절한 조작(manipulation)이 결정되어야 한다. 변경들은 메모리에서 일어나야 하고 각종 디스크 블록들에 대한 변경들의 레코드가 생성되어야 한다. 이 레코드는 이루어져야 하는 디스크 상의 실제 변경들을 포함한다. 업데이트되는 각 데이터 구조는 J2 저널 관리자에 등록된다. 이 레코드는 디스크 기반 저널에 기록되고, 식별자로 스탬프되어야 한다. 레코드가 J1 저널 엔트리와 관계가 있는 경우, 식별자들은 링크되어야 한다. 일단 레코드가 저장되면, 디스크에 대한 변경들이 이루어질 수 있다(또는 배경 작업으로서 행해질 수 있다).
J2 저널은 계층 3에 논리적으로 존재한다. 그것은 존 관리자를 통한 기입들을 수반할 메타데이터 업데이트들을 저널링하는 데 이용된다. 저널 엔트리의 재생(playback)이 발생할 경우, 그것은 존 관리자 메소드들을 이용할 것이다. 저널 자체는 특화된 영역에 저장될 수 있다. 저널 엔트리들의 짧은 수명이 주어지면, 그것들은 미러링될 것이다. 모든 메타데이터 업데이트들이 J2 저널을 거칠 필요는 없다. 특히 구조들에 대한 업데이트들이 원자적일 경우 그러하다. 영역 관리자 구조는 J2 저널을 이용하지 않을 수 있다. 예를 들면, 무결성 체킹 배경 스레드(integrity checking background thread)에 의해, 영역 관리자 비트맵에서 불일치들을 검출하는 것이 가능할 것이다.
J2 저널에 대한 단순한 접근법은 단일 레코드를 포함하는 것이다. 레코드가 디스크에 커밋(commit)되자마자, 그것은 재생되어, 디스크 상의 구조들을 업데이트한다. 다수의 J2 레코드들을 갖고 또한 디스크들 상의 배경 작업 커밋팅 업데이팅 레코드들(background task committing updating records)을 갖는 것이 가능하다. 이 경우, 저널과 각종 데이터 구조들과 관련된 임의의 캐싱 알고리듬들 사이의 상호작용에 세심한 주의를 기울일 필요가 있다.
처음 접근법은 저널 엔트리가 디스크에 커밋되자마자 그것을 실행할 것이다. 원칙적으로 J2의 다수의 동시 사용자들이 있을 수 있지만, J2 저널은 한 번에 한 사용자에게 로크(lock)된다. 이 경우에도, 저널 엔트리들은 제시(submit)되자마자 커밋되어야 한다.
임의의 상위 레벨의 저널 활동이 발생하기 전에 메타데이터 구조들이 수리(repair)되도록 하는 것이 중요하다. 시스템 재부팅 시에, J2 저널은 분석되고, 임의의 레코드들이 재생될 것이다. 만일 저널 엔트리가 J1 저널 엔트리와 상관된다면, Jl 엔트리는 완료로 표시될 것이고, 제거될 수 있다. 일단 모든 J2 저널 엔트리들이 완료되면, 메타데이터는 신뢰할 만한 상태로 되고 남아 있는 J1 저널 엔트리들이 처리될 수 있다.
J2 저널 레코드는 다음 정보를 포함한다:
Figure 112007041153623-PCT00008
동작의 수
Figure 112007041153623-PCT00009
각 동작은 다음을 포함한다:
o Jl 레코드 지시자
o 기입할 존/데이터 오프셋
o 기입할 데이터
o 데이터의 사이즈
o 데이터 클러스터에 대한 오프셋
Figure 112007041153623-PCT00010
저널 레코드 식별자
Figure 112007041153623-PCT00011
엔드 마커(End Marker)
이 방식은 Jl 저널 방식과 유사하게 동작할 수 있다(예를 들면, 시퀀스 번호로 J2 저널 엔트리의 끝을 식별하고 J2 저널 엔트리들을 섹터 경계들에 배치하여).
만일 J1 데이터 포인터 지시자가 세트되면, 이 특정 동작은 Jl 저널 레코드를 가리킬 것이다. 호스트 공급 기입 데이터는 우리의 저널 엔트리에 복사되지 않아도 될 것이다. 동작 어레이는 저널 레코드 내의 동작들의 최대 수가 잘 이해되도록 기대되는 만큼 일정한 사이즈로서 정의될 수 있어야 한다.
(예컨대, 전력 손실로 인한) 저레벨 기입 동작 동안의 섹터의 훼손으로부터의 복구를 허용하기 위해, J2 저널은 기입된 전체 섹터를 저장할 수 있고, 따라서 필요하다면 이 정보로부터 섹터가 재기입될 수 있다. 대안적으로 또는 부가적으로, 각 수정된 섹터에 대하여 계산된 CRC는 J2 레코드에 저장되고 기입 동작의 재생이 요구되는지를 결정하기 위해 디스크 상의 섹터로부터 계산된 CRC와 비교될 수 있다(예컨대, 존 관리자에 의해).
상이한 저널들은 상이한 위치들에 저장될 수 있고, 따라서 저장을 지원하기 위해 기입 저널 레코드들에 제공된 인터페이스 계층이 있을 것이다. 위치는 불휘발성이어야 한다. 2개의 후보들은 하드 디스크 및 NVRAM이다. 만일 J1 저널이 하드 디스크에 저장된다면, 그것은 J1 저널 미러링되지 않은 존에 저장될 것이다. J1 저널은 NVRAM에 저장하기 위한 후보이다. J2 저널은 디스크에 저장되어야 하지만, 특화된 영역(즉, 그것은 짧은 수명을 갖기 때문에 리던던트하지 않은)에 저장될 수 있다. J2 저널을 디스크에 저장하는 것의 이점은, 내부 데이터 구조 업데이트 동안에 시스템 리셋이 있다면, (비록 그 장치가 장시간 동안 전력을 공급받지 못한 상태로 되더라도) 데이터 구조들은 일관된 상태로 복귀될 수 있다는 점이다.
존 관리자(ZM)는 상위 레벨 소프트웨어에 의해 요구되는 존들을 할당한다. ZM에의 요구들은 다음을 포함한다:
a. 존 할당
b. 존 할당 해제/자유롭게 함
c. L1(?)으로의 데이터 판독/기입 통과 제어
d. 존 내의 클러스터 판독/기입(클러스터의 오프셋 및 존 번호가 주어지면)
ZM은 (드라이브들의 수 및 그들의 관련 사이즈의 함수로서) 리던던시 메커니즘들을 관리하고 미러링, 스트라이핑, 및 데이터 판독/기입에 대한 다른 리던던시 방식 들을 처리한다.
ZM이 존을 할당할 필요가 있을 경우, 그것은 2 이상의 영역 세트들의 할당을 요구할 것이다. 예를 들면, 존은 1GB의 데이터에 대하여 할당될 수 있다. 이 존을 구성하는 영역들은 리던던시 데이터를 포함하여 1GB의 데이터를 포함할 수 있을 것이다. 미러링 메커니즘의 경우, 존은 각각 1GB인 영역들의 2 세트로 구성될 것이다. 다른 예로서, 3-디스크 스트라이핑 메커니즘은 각각 1/2 GB인 영역들의 3 세트를 이용한다.
ZM은 존을 구성하는 영역들의 각 세트의 위치(드라이브 번호 및 시작 영역 번호)를 찾아내기 위하여 ZR 번역 테이블(6)을 이용한다. 1/12GB 영역 사이즈를 가정하면, 최대 24 영역들이 요구될 것이다. 24 영역들은 2 x 1GB 존들을 구성한다. 따라서 ZR 번역 테이블은 드라이브/영역 데이터를 제공하는 24 컬럼들을 포함한다.
ZM은 일반적으로 다음과 같이 동작한다:
a. SDM(single drive mirroring)의 경우에, 24 컬럼들이 이용된다. 드라이브 번호들은 모든 컬럼들에서 동일하다. 각 엔트리는 존을 구성하는 물리적 드라이브 상의 물리적 영역에 대응한다. 처음 12 엔트리들은 데이터의 1 사본만 포함하는 영역들을 가리킨다. 마지막 12 엔트리들은 데이터의 제2 사본을 포함하는 영역들을 가리킨다.
b, DDM(dual drive mirroring)의 경우는 처음 12 엔트리들에서의 드라이브 번호가 마지막 12 엔트리들에서의 드라이브 번호와 다르다는 점을 제외하고 SDM과 동일하다.
c. 스트라이핑의 경우에, 3 이상의 컬럼들이 이용될 수 있다. 예를 들면, 3개의 드라이브에 걸쳐서 스트라이핑이 이용된다면, 3개의 상이한 드라이브들로부터 6개의 영역들이 요구될 수 있고(즉, 18 엔트리들이 이용된다), 이 경우 처음 6 엔트리들은 동일 드라이브 번호를 포함하고, 다음 6 엔트리들은 다른 드라이브 번호를 포함하고, 그 다음 6 엔트리들은 제3의 드라이브 번호를 포함하고, 미사용 엔트리들은 제로로 된다.
다음 표는 존 영역 번역 테이블의 표현을 보여준다:
존# 존의 사이즈 각 영역의 사이즈 사용 드라이브/영역(1) 드라이브/영역(2) ... 드라이브/영역(23) 드라이브/영역(24)
0 1GB 1/12 SDM 0,2000 0,1000 ... 0,10 0,2000
1 1GB 1/12 DDM 0,8000 0,3000 ... 1,2000 1,10
2 1GB 1/12 SD3 3,4000 3,3000 ... 4,2000 4,1000
...
N 자유
판독/기입 요구가 들어오면, ZM은 존 번호 및 그 존에 대한 오프셋을 제공받는다. ZM은 ZR 번역 테이블을 조회하여 해당 존에 대한 리던던시 메커니즘을 산정하고 오프셋을 이용하여 어느 드라이브/영역이 판독/기입되어야 하는 섹터를 포함하는지를 산출한다. 그 후 그 드라이브/영역 정보는 실제 판독/기입을 행하기 위해 L1 계층에 제공된다. 이용 컬럼 내의 추가적인 가능한 엔트리는 "자유(Free)"이다. "자유"는 존이 정의되어 있지만 현재 사용되지 않는 것을 나타낸다.
클러스터 관리자는 데이터 존들의 세트 내에 클러스터들을 할당 및 할당 해제한다.
레이아웃 관리자는 존들의 영역들과 비교하여(vis-a-vis) 존들의 실행시간 재배치(run-time re-layout)를 제공한다. 이것은 디스크 삽입/제거 또는 고장의 결과로 일어날 수 있다.
계층 1(L1) 소프트웨어는 물리적 드라이브들 및 물리적 섹터들에 관하여 알고 있다. 그 중에서도 특히, Ll 소프트웨어는 존 관리자에 의해 사용되는 물리적 드라이브들로부터 영역들을 할당한다. 이 예시적 실시예에서, 각 영역은 4-드라이브 어레이 시스템의 경우 1/12GB(즉, 174763 섹터)의 사이즈를 갖는다. 더 큰 최대 수의 드라이브들(8, 12 또는 16)을 갖는 시스템은 상이한 영역 사이즈를 가질 것이다.
SD3(3개의 드라이브에 걸친 스트라이핑, 2개 데이터에 패리티를 더한 것)에 의한 1GB의 데이터를 포함하는 존을 생성하기 위해서는, 3개의 드라이브 각각에 6개의 영역들을 이용하여 끝낼 것이다(6 × 1/12 = 드라이브당 1/2GB).
이 영역 방식의 이용은 존들이 제거되거나 또는, 예를 들어, 미러링으로부터 스트라이핑으로 재구성될 때 디스크 공간의 보다 나은 이용을 제공할 수 있게 한다. L1 소프트웨어는 영역들의 비트맵을 갖는 물리적 드라이브들 상의 이용 가능한 공간을 추적한다. 각 드라이브는 하나의 비트맵을 갖는다. 각 영역은 그 영역이 자유인지, 사용중인지, 불량인지를 추적하기 위하여 비트맵 내의 2 비트에 의해 표현된다. L2 소프트웨어(ZM)가 존을 생성할 필요가 있을 경우, 그것은 L1 계층으로부터 영역들의 세트를 획득한다. 존을 구성하는 영역들은 디스크 내에서 연속되지 않는다.
L1에의 요구들은 다음을 포함한다:
a. (영역들의 그룹 내의 클러스터에 대한) 데이터 판독/기입
b. 데이터 판독/기입 제어(테이블, 데이터 구조, DIC 등)
c. 영역에 대한 물리적 공간 할당(1 드라이브 내의 실제 물리적 섹터들)
d. 영역 할당 해제
e. 물리적 드라이브 내의 물리적 클러스터에 대한 로(raw) 판독/기입
f. 하나의 영역으로부터 다른 영역으로 데이터 복사
g. 영역을 불량으로 표시
자유 영역 비트맵은 클 수 있고, 따라서 자유 엔트리를 찾는 검색(최악의 경우는 자유 엔트리가 없는 경우이다)이 느릴 수 있다. 성능을 향상시키기 위하여, 비트맵의 일부가 메모리에 미리 로딩될 수 있고, 자유 영역들의 링크된 리스트가 메모리에 저장될 수 있다. 각 활성 존에 대한 리스트가 있다. 만일 리스트 상의 낮은 워터마크에 도달하면, 배경 활동으로서 디스크로부터 더 많은 자유 엔트리들이 판독될 수 있다.
디스크 관리자는 계층 0으로서 동작한다. 다음 표에 도시된 바와 같이, 2개의 하위 계층(sub-layer)들, 구체적으로 추상화 계층 및 물리적 저장 어레이와 통신하는 디바이스 드라이버들이 있다.
계층 0a : 추상화
계층 0b : 디바이스 드라이버들에 대한 OS 인터페이스 및 디바이스 드라이버들
물리적 저장 어레이 하드웨어
디바이스 드라이버 계층도 수 개의 계층들을 포함할 수 있다. 예를 들면, USB 드라이버들을 이용하는 저장 어레이의 경우, USB 전송 계층의 위에 ATA 또는 SCSI 스택이 있다. 추상화 계층은 저장 어레이에서 이용되는 드라이버들의 종류에 관계없는 기본 판독/기입 기능들을 제공한다.
디스크 액세스 요구들을 큐(queue)하기 위해 하나 이상의 디스크 액세스 큐들이 이용될 수 있다. 디스크 액세스 레이트들은 본 시스템에서 중요한 성능 병목 장애들 중 하나일 것이다. 일반적인 시스템 레이턴시를 줄이고 성능을 향상시키기 위하여 디스크 인터페이스가 언제든지 되도록 바쁜 상태에 있도록 하길 원할 것이다. 디스크 인터페이스에의 요구들은 디스크 동작이 끝났을 때 동작을 완료하기 위해 콜백 핸들러(callback handler)와 함께, 비동기 인터페이스를 가져야 한다. 하나의 디스크 요구의 완료는 자동으로 큐 상의 다음 요구를 개시할 것이다. 드라이브마다 하나의 큐 또는 모든 드라이버들에 대해 하나의 큐가 있을 수 있다.
계층 1은 논리적 드라이브 번호들로서 드라이브들을 참조할 것이다. 계층 0은 논리적 드라이브 번호들을 물리적 드라이브 참조번호들(예컨대, open() 호출의 결과로서 /dev/sda 또는 파일 디바이스 번호)로 번역할 것이다. 융통성(USB를 통한 확장)을 위하여, 각 논리적 드라이브마다 큐가 있어야 한다.
다음은 몇몇 예시적인 오브젝트 정의들 및 데이터 흐름(data flow)들이다:
MSG 오브젝트: 호스트로부터 입력(incoming)
Lba
Length
LUN
Data
REPLY 오브젝트: 호스트로 출력(outgoing)
Status
Host
Length
Data
데이터 판독( Data Read )
데이터 판독 흐름(Data read flow):
Figure 112007041153623-PCT00012
데이터 기입( Data Write )
데이터 기입 흐름(Data write flow):
Figure 112007041153623-PCT00013
Figure 112007041153623-PCT00014
다음은 물리적 디스크 레이아웃에 대한 설명이다. 위에서 논의된 바와 같이, 각 디스크는 일정한 사이즈의 영역들로 분할된다. 이 예시적 실시예에서, 각 영역은 4-드라이브 어레이 시스템의 경우 1/12GB(즉, 174763 섹터)의 사이즈를 갖는다. 더 큰 최대 수의 드라이브들(8, 12 또는 16)을 갖는 시스템은 상이한 영역 사이즈를 가질 것이다. 처음에, 영역 번호 0 및 1은 영역 관리자에 의해 사용되도록 예비되고 할당을 위해 이용되지 않는다. 영역 번호 1은 영역 번호 0의 미러이다. 주어진 하드 디스크에 대하여 영역 관리자에 의해 이용되는 모든 내부 데이터는 이 하드 디스크의 영역 번호 0 및 1에 저장된다. 이 정보는 다른 드라이버들에 복제(duplicate)(또는 미러링)되지 않는다. 영역 0 또는 1에 에러가 있다면, 그 데이터를 유지하기 위해 다른 영역들이 할당될 수 있다. 디스크 정보 구조는 이들 영역들을 가리킨다.
각 디스크는 그 디스크, 그것이 속하는 디스크 세트, 및 그 디스크에 대한 레이아웃 정보를 식별하는 DIS를 포함할 것이다. 하드 디스크 상의 제1 섹터는 예비된다. DIS는 제1 섹터 뒤에 첫 번째의 불량이 아닌 클러스터에 저장된다. DIS는 1KB 만큼의 데이터에 포함된다. DIS의 2개 사본이 있다. DIS의 사본들은 그것이 속하는 디스크에 저장될 것이다. 또한, 시스템 내의 어느 디스크나 다 시스템 내의 디스크들의 모든 DIS들의 사본을 포함할 것이다. 다음 표는 DIS 포맷을 보여준다:
오프셋 사이즈 이름 값/유효 범위 설명
0 32바이트 disStartSigniture "_DISC INFORMATION CLUSTER START_" 클러스터를 가능한 디스크 정보 클러스터인 것으로 식별. 클러스터는 그것이 유효한지를 체크하기 위해 CRC되어야 한다.
워드16 disVersion 제로가 아닌 이진수 구조 버전을 식별. 이 값은 펌웨어의 이전 버전들과 호환성이 없게 만드는 구조 레이아웃 또는 콘텐츠 의미에 실질적인 변경이 이루어질 때만 변경된다.
워드16 disClusterSize 제로가 아닌 이진수 이 디스크 상에 클러스터를 만드는 512 바이트 섹터들의 수
워드32 disCRC CRC-32 DSI 구조의 CRC
워드32 disSize DIS 클러스터의 사이즈(바이트)
워드32 disDiskSet 이 디스크가 속하는 디스크 세트
워드32 disDriveNumber 0 내지 15 디스크 세트 내의 드라이브 번호
워드32 disSystemUUID 이 디스크가 속하는 박스의 UUID
워드64 disDiskSize 섹터의 수로 나타낸 디스크의 사이즈
워드32 disRegionSize 섹터의 수로 나타낸 영역의 사이즈
워드64 disRegionsStart 디스크 상의 제1 영역의 시작에 대한 섹터 오프셋
워드64 disCopyOffset 이 DIS의 사본이 저장되는 곳에 대한 섹터 오프셋. 각 DIS의 disCopyOffset는 서로 참조한다.
워드64 disDISBackup 모든 디스크의 DIS들의 사본들을 포함하는 테이블에의 섹터 오프셋
워드32 disDISBackupSize DIS 백업 섹션 내의 DIS의 수
워드32 disRIS0Region RIS의 제1 사본이 저장되어 있는 곳의 영역 번호
워드32 disRIS0Offset 영역 정보 구조가 위치하는 섹터에 대하여 영역 내에 오프셋된 섹터들의 수
워드32 disRIS1Region RIS의 사본에 대한 것
워드32 disRIS1Offset RIS의 사본에 대한 것
워드32 disZIS0Region 존 정보 구조가 위치하는 영역의 영역 번호. 이것은 이 디스크 상에 ZTR이 있는 경우에만 사용된다. 그렇지 않으면, 그것은 제로이다.
워드32 disZIS0Offset 영역 내의 ZIS에 대한 오프셋
워드32 disZIS1Region ZIS의 사본이 위치하는 영역의 영역 번호. 이것은 단일 드라이브 시스템에서만 사용된다. 다른 경우에는, 이 엔트리는 0이다.
워드32 disZIS1Offset 영역 내의 ZIS에 대한 오프셋
영역 관리자는 그것의 내부 데이터를 영역 정보 구조로 저장한다. 다음은 영역 정보 구조 포맷을 보여준다:
오프셋 사이즈 이름 값/유효 범위 설명
0 워드64 risSignature 이것이 RIS임을 지시
워드32 risSize 이 구조의 사이즈(바이트)
워드32 risChecksum 체크섬
워드32 risVersion 이 테이블(및 비트맵)의 버전
워드32 risDrive 논리적 드라이브 번호
워드64 risStartSector 영역 이용 비트맵의 (디스크 내의) 절대 시작 섹터
워드32 risSectorOffset 현 영역 내의 영역 이용 비트맵의 섹터 오프셋
워드32 risSizeBitmap 비트맵의 사이즈(비트?)
워드64 risNumberRegions 이 디스크 상의 영역의 수(비트맵의 사이즈도 암시)
존 정보 구조는 존 관리자가 존 테이블을 어디에서 찾을 수 있는지에 대한 정보를 제공한다. 다음은 존 정보 구조 포맷을 보여준다:
오프셋 사이즈 이름 값/유효 범위 설명
0 워드64 zisSignature 이것이 ZIS임을 지시
8 워드32 zisSize 이 구조의 사이즈(바이트)
12 워드32 zisChecksum 체크섬
16 워드32 zisVersion 이 테이블(및 비트맵)의 버전
20 워드16 zisFlags 이 디스크가 존 정보를 포함하기 위해 이용된다면 비트 0 = 1 비트 14-15 : 리던던시 타입(SDM 또는 DDM만)
22 워드16 zisOtherDrive 존 테이블의 다른 사본을 포함하는 드라이브의 논리적 드라이브 번호
24 워드32 zisNumberRegions 존 테이블의 각 사본을 포함하기 위해 이용되는 영역의 수. 존 테이블 노드들의 수와 같다.
28 워드32 zisStartOffset 존 테이블을 포함하기 위해 이용되는 영역들의 링크된 리스트의 시작을 가리키는 바이트 오프셋. 링크된 리스트 내의 각 엔트리는 '존 테이블 노드'로 불린다.
워드32 zisNumberofZones 시스템 내의 존들(존 테이블 내의 엔트리들)의 수
워드32 zisZoneSize 바이트로 나타낸 존의 사이즈
상위 레벨 정보 존들은 존 테이블들 및 상위 레벨 관리자들에 의해 이용되는 다른 테이블들을 포함한다. 이것들은 미러링을 이용하여 보호될 것이다.
다음 표는 존 테이블 노드 포맷을 보여준다:
사이즈 이름 설명
워드32 ztNextEntry 링크된 리스트 내의 다음 엔트리에대한 포인터
워드32 ztCount 이 엔트리의 카운트
워드64 ztRegion 영역 번호
다음은 존 정보의 레이아웃에 대한 설명이다. 존 테이블 노드들의 링크된 리스트는 다음 방식으로 ZIS 뒤에 배치된다:
존 정보 구조
첫 번째 존 테이블 노드(16 바이트)
... 마지막 존 테이블 노드(16 바이트)
이 정보는 존 테이블 영역에 저장된다.
도 16은 발명의 예시적 실시예에 따른 드라이브 레이아웃을 보여준다. 처음 2개 영역들은 서로의 사본들이다. 세 번째(선택적임) 존 테이블 영역은 존 테이블들을 포함한다. 2 이상의 드라이브를 갖는 시스템에서는, 그 드라이브들 중 2개만 ZTR을 포함한다. 단 하나의 드라이브를 갖는 시스템에서는, ZTR의 2개의 (미러링된) 사본들을 유지하기 위해 2개의 영역들이 이용된다. DIS는 ZIS 및 RIS의 위치에 관한 정보를 포함한다. RIS의 제1 사본은 영역 0에 있을 필요가 없다(예컨대, 영역 0가 불량 섹터들을 포함한다면 다른 영역에 배치될 수도 있다)는 것에 유의하자.
존 관리자는 시스템 시동 시에 존들을 로딩할 필요가 있다. 그렇게 하기 위하여, 그것은 DIS들로부터 영역 번호 및 오프셋을 추출한다. 이것은 ZIS의 시작을 가리킬 것이다.
특정 모듈들(예컨대, CAT 관리자)은 그들의 제어 구조들 및 데이터 테이블들을 존들에 저장한다. 계층 3 및 그보다 상위 계층들 내의 모듈에 대한 모든 제어 구조들은 존 0에 저장되어 있는 구조들로부터 참조된다. 이것은, 예를 들면, 실제 CAT(Cluster Allocation Tables) 위치들은 존 0에 저장된 데이터 구조들로부터 참조된다는 것을 의미한다.
다음 표는 존 0 정보 테이블 포맷을 보여준다:
오프셋 사이즈 이름 값/유효 범위 설명
0 워드64 zitSignature 이것이 ZIT임을 지시
워드32 zitSize 이 구조의 사이즈(바이트)
워드32 zitChecksum 이 구조의 체크섬
워드32 zitVersion 이 구조의 버전
워드32 zitCATLStartOffset CAT 링크된 리스트의 시작의 (이 존 내의) 바이트 오프셋
워드32 zitCATSize CAT 링크된 리스트 내의 노드들의 수. CAT를 포함하는 존들의 수와 같다.
워드64 zitCATAddressable CAT에 의해 지원되는 최대 LBA. 유효하게는 CAT의 사이즈
워드32 zitHTStartOffset 해시 테이블 링크된 리스트의 시작의 (이 존 내의) 바이트
워드32 zitHITNumberNodes 해시 테이블 링크된 리스트 내의 노드들의 수
워드64 zitHTSize 바이트로 나타낸 해시 테이블 데이터의 사이즈
CAT 링크된 리스트는 CAT를 포함하는 존들을 기술하는 노드들의 링크된 리스트이다. 다음 표는 CAT 링크된 리스트 노드 포맷을 보여준다:
사이즈 이름 설명
워드32 cat1lNextEntry 링크된 리스트 내의 다음 엔트리에 대한 포인터
워드16 cat1lCount 이 엔트리의 카운트
워드16 cat1lZone CAT의 이 부분을 포함하는 존 번호
해시 테이블 링크된 리스트는 해시 테이블을 보유하는 존들을 기술하는 노드들의 링크된 리스트이다. 다음 표는 해시 테이블 링크된 리스트 노드 포맷을 보여준다:
사이즈 이름 설명
워드32 htllNextEntry 링크된 리스트 내의 다음 엔트리에 대한 포인터
워드16 htllCount 이 엔트리의 카운트
워드16 htllZone 해시 테이블의 이 부분을 포함하는 존 번호
도 17은 발명의 예시적 실시예에 따른, 존 0의 레이아웃 및 다른 존들이 어떻게 참조되는지를 설명한다.
위에서 논의된 바와 같이, 리던던트 세트는 데이터의 세트에 대한 리던던시를 제공하는 섹터들/클러스터들의 세트이다. 영역 백업은 영역의 콘텐츠를 다른 영역에 복사하는 것을 수반한다.
데이터 판독 에러의 경우에, 하위 레벨 소프트웨어(디스크 관리자 또는 디바이스 드라이버)는 최초 실패 시도 후에 2회 더 판독 요구를 재시도한다. 실패 상태는 존 관리자에게까지 전달된다. 그 후 존 관리자는 디스크 어레이 내의 리던던트 클러스터들로부터 (판독에 의해) 요구되는 데이터를 재구성하려고 시도한다. 리던던트 데이터는 미러링된 데이터(SDM, DDM의 경우) 또는 패리티를 포함하는 클러스터들의 세트(스트라이프 구현의 경우)일 수 있다. 그 후 재구성된 데이터는 호스트에 전달된다. 만일 ZM이 데이터를 재구성할 수 없다면, 판독 에러가 호스트에 전달된다. 존 관리자는 에러 통지 패킷을 에러 관리자에 송신한다. 도 18은 발명의 실시예에 따른 판독 에러 핸들링을 설명한다.
데이터 기입 에러의 경우에, 하위 레벨 소프트웨어(디스크 관리자 또는 디바이스 드라이버)는 최초 실패 시도 후에 2회 더 기입 요구를 재시도한다. 실패 상태는 존 관리자에게까지 전달된다. 존 관리자는 에러 통지 패킷을 에러 관리자에 송신한다.
이 레벨에서 데이터 기입이 수행되는 경우, 리던던시 정보도 디스크에 기입된다. 그 결과, 하나의 클러스터만 기입 에러를 갖는 한, 후속 기입이 데이터를 재구성할 수 있을 것이다. 만일 다수의 디스크 에러들이 있고 리던던시 정보가 판독 또는 기입될 수 없다면, 적어도 2가지의 가능한 접근법이 있다:
a. 기입 에러 상태를 호스트에 반환한다. 리던던트 세트와 관련된 모든 영역들을 불량 섹터들을 포함하지 않는 새로이 할당된 영역들에 백업한다.
b. 기입을 미룬다(hold off) 리던던트 세트와 관련된 모든 영역들을 불량 섹터들을 포함하지 않는 새로이 할당된 영역들에 백업한다. 그 후, 새로이 할당된 영역들 내의 적당한 클러스터에 기입을 행한다(모든 리던던시 부분들, 예컨대, 패리티 등과 함께). 미루어진 기입들을 포함하기 위해 별도의 기입 큐가 이용될 것이다.
접근법 (a)는 저널의 성공적인 기입의 결과로 아마도 기입 상태가 이미 호스트에 송신되었을 것이고, 따라서 호스트가 에러가 있다는 것을 모를 수 있기 때문에 문제가 된다. 대안은 판독에서의 실패(a failure with a read)를 보고하지만, 기입은 허용하는 것이다. 특정 LBA가 불량 판독을 반환해야 하는 것을 추적하기 위해 CAT 내의 비트가 이용될 수 있다.
도 19는 발명의 예시적 실시예에 따른 기입 에러 핸들링을 설명한다.
에러 관리자(EM)는 클러스터를 체크하여 그것이 실제로 불량인지를 확인한다. 만일 그렇다면, 전체 영역이 불량으로 간주된다. 영역의 콘텐츠는 동일 디스크 상의 새로이 할당된 영역에 복사된다. 그 후 현재 영역은 불량(BAD)으로 표시된다. 영역을 복사하는 동안, 에러 관리자는 불량 섹터들과 마주치면 필요할 경우 데이터를 재구성할 것이다. 도 20은 발명의 예시적 실시예에 따라서 에러 관리자에 의한 불량 영역의 백업을 설명하는 논리 흐름도이다.
만일 데이터 판독 에러가 있고 에러 관리자가 주어진 클러스터에 대한 데이터를 재구성할 수 없다면(예컨대, 리던던트 세트에 걸친 판독 에러의 결과로), 재구성될 수 없는 데이터 대신에 제로들이 이용될 것이다. 이 경우, 불량 섹터들을 포함하는 (바로 그 리던던트 세트와) 다른 영역들도 백업되어야 할 것이다. 다시, 재구성될 수 없는 데이터 대신에 제로들이 이용될 것이다.
일단 리던던트 세트의 복사가 이루어지면, EM은 존의 이 부분에 대응하는 클러스터들에의 액세스를 디스에이블한다. 그 후 그것은 새로이 할당된 영역들을 가리키도록 존 테이블을 업데이트한다. 그 후, 클러스터들에의 액세스가 다시 인에이블된다.
이 예시적 실시예는 8개의 스냅숏을 지원하도록 설계되어 있다(이는 해시/클러스터 엔트리들이 특정 스냅숏 인스턴스에 의해 이용되는지 여부를 지시하기 위해 1 바이트의 사용을 허용한다). 스냅숏들과 관련된 2개의 테이블이 있다:
1. 논리적 섹터 어드레스와 그 LSA에 대한 데이터를 포함하는 디스크 상의 클러스터 간의 관계를 획득하기 위해 스냅숏마다의 CAT 테이블(per-snapshot CAT table)이 존재할 필요가 있을 것이다. 궁극적으로 스냅숏마다의 CAT 테이블은 스냅숏이 취해진 순간의 CAT의 사본이어야 한다.
2, 해시 간들과 데이터 클러스터 간을 매핑하는 시스템 해시 테이블. 해시 함수는 어느 스냅숏 인스턴스가 이용되고 있는지에 관계없이 동일 결과를 반환하고, 그 결과 모든 스냅숏들에 걸쳐서 공통이다. 그 결과, 이 테이블은 어떤 스냅숏들에 의해서도 유일한 클러스터가 이용되고 있는지를 이해해야 한다. 해시 클러스터 엔트리는 그 해시 엔트리를 이용한 스냅숏들이 없다면 자유롭게 되거나, 새로운 데이터로 교체될 수 없다.
현재의 그리고 추가되고 있는 스냅숏이 항상 있을 것이다. 해시 엔트리가 생성되거나 업데이트되면, 그 해시 엔트리에 대한 현재의 스탭숏 번호를 적용할 필요가 있을 것이다. 스냅숏이 만들어지면, 현재의 스냅숏 번호는 증가될 것이다.
어떤 스냅숏에 의해서도 더 이상 요구되지 않는 클러스터들/엔트리들은, 해시 테이블을 통해 보행(walking through)하여 회수(retiring) 스냅숏 비트가 세트인 임의의 해시 엔트리들을 찾아 그 비트를 클리어시킴으로써 자유롭게 된다. 만일 스냅숏 바이트가 이제 제로이면, 해시 엔트리는 테이블로부터 제거될 수 있고 클러스터는 자유롭게 될 수 있다.
(새로운 스냅숏 번호가 회수 스냅숏 번호와 동일하기 때문에) 해시 트리에 추가되고 있는 임의의 새로운 엔트리들과의 충돌을 방지하기 위해, 7개의 스냅숏들만 취해질 수 있도록 하고, 최종(8번째) 스냅숏은 회수되고 있는 것으로 한다. 배경 활동으로서 해시 테이블을 보행할 수 있다.
스냅숏을 생성하기 위하여, 주(main) CAT가 업데이트 중일 때마다 제2 CAT 존이 기입될 수 있다. 이들 업데이트는 큐(queue)될 수 있고 섀도우 CAT는 또 다른 작업으로서 업데이트될 수 있다. 스냅숏하기 위하여, 섀도우 CAT는 스냅숏 CAT가 된다.
일단 스냅숏이 행해지면, 이 스냅숏 테이블을 새로운 존에 복사하여 새로운 스냅숏 CAT가 되도록 하기 위해 배경 처리가 킥오프(kick off)될 수 있다. CAT의 복사가 완료할 때까지 섀도우 CAT 큐가 처리되지 않도록 큐가 사용될 수 있다. 만일 섀도우 CAT를 업데이트하기 전에 고장이 발생한다면(그 경우 큐 내의 엔트리들이 분실될 수 있다). 어레이가 온라인 상태가 되기 전에 주(primary) CAT 테이블로부터의 리섀도우(re-shadow)가 수행될 수 있다.
대안적으로, 스냅숏이 요구될 경우, "델타들(deltas)"의 컬렉션에 초기 CAT 사본을 더한 것이 스냅숏을 구성할 수 있을 것이다. 그러면 배경 작업이 이 정보로부터 전체 스냅숏 CAT를 재구성할 수 있을 것이다. 이것은 스냅숏을 하기 위해 거의 또는 전혀 비가동 시간(downtime)을 필요로 하지 않을 것이다. 한편, 다음 스냅숏을 위하여 또 다른 델타들의 세트가 수집될 수 있을 것이다.
위에서 논의된 바와 같이, 소위 "가비지 컬렉터"는 (예컨대, 파일이 삭제될 때) 호스트 파일시스템에 의해 더 이상 사용되지 않는 클러스터들을 자유롭게 하기 위해 이용될 수 있다. 일반적으로, 가비지 컬렉터는 자유로운 블록들을 찾고, 그들의 호스트 LSA들을 계산하고, 이 LSA들에 기초하여 그들의 CAT 엔트리들을 찾아냄으로써 작업한다. 특정 LSA에 대하여 CAT 엔트리가 없다면, 클러스터는 이미 자유이다. 그러나, 만일 CAT 엔트리가 위치 확인되면, 참조 카운트는 감소되고, 그 카운트가 제로에 달하면 클러스터는 자유롭게 된다.
가비지 컬렉터에 있어서 하나의 문제점은 호스트 파일시스템이 사용중에 있는 블록을 이전에 사용된 적이 있고 어느 시점에 자유로 표시된 블록과 구별하기 어려울 수 있다는 점이다. 호스트 파일시스템이 블록을 기입할 때, 저장 시스템은 그 데이터에 대한 클러스터는 물론 그것을 기술하기 위한 CAT 엔트리를 할당한다. 그 시점부터, 호스트 시스템이 그 후에 그 블록을 사용하지 않게 되더라도, 클러스터는 일반적으로 사용중인 것으로 보일 것이다(즉, 클러스터는 유효 CAT 엔트리와 함께 여전히 사용중일 것이다).
예를 들면, 특정 호스트 파일시스템들은 그것의 사용되는 디스크 블록들을 추적하기 위해 비트맵을 이용한다. 처음에, 비트맵은 예를 들어 모든 비트들을 클리어시킴으로써 모든 블록들이 자유임을 나타낼 것이다. 파일시스템이 이용될 때, 호스트 파일시스템은 그것의 자유 블록 비트맵을 이용하여 블록들을 할당할 것이다. 저장 시스템은 앞에서 개설(outline)된 바와 같이 클러스터들 및 CAT 엔트리들을 할당함으로써 물리적 저장과 이들 파일시스템 할당들을 관련시킬 것이다. 호스트 파일시스템이 몇몇 블록들 다시 그것의 자유 풀로 해방할 때, 그것은 단지 그것의 자유 블록 비트맵 내의 대응하는 비트들을 클리어시킬 필요가 있다. 저장 시스템에서, 이것은 일반적으로, 호스트의 자유 블록 비트맵의 일부를 공교롭게도 포함하는 클러스터에의 기입으로서 명시될 것이고, 아마도 자유롭게 되어 있는 실제 클러스터 자체에 대한 I/O는 없을 것이다(자유롭게 된 클러스터에 대한 I/O가 있을 수 있지만, 예를 들어, 호스트 파일시스템이 어떤 향상된 보안 모드에서 작동 중이라면, 그 경우 그것은 아마도 상한(stale) 클러스터 콘텐츠가 공격자에 의해 판독될 수 있는 가능성을 줄이기 위하여 그 클러스터에 제로들 또는 랜덤 데이터의 강력 암호화 해시(crypto strong hash)를 기입할 것이다). 또한, 호스트 파일시스템이 새로운 할당 요구들을 만족시키고 있을 경우 이전에 자유롭게 된 블록들을 재사용할 것이라는 보장이 없다. 따라서, 만일 호스트 파일시스템이 저장 시스템의 관점에서 새로운 것, 즉, 이전에 사용되지 않은 블록들을 계속해서 할당한다면, 어떤 공간이든 압축을 통하여 재활용될 수 있다는 것을 가정하여, 저장 시스템은 곧 자유 클러스터들을 다 써버릴 것이다. 예를 들면, 파일시스템 블록이 4k라고 가정할 때, 호스트가 파일시스템 블록들 100 내지 500을 할당하고, 그 후 블록들 300 내지 500을 자유롭게 한 다음, 블록들 1000 내지 1100을 할당하면, 총 파일시스템 사용은 300 블록들일 것이지만, 어레이는 사용중인 500 블록을 가질 것이다.
본 발명의 예시적 실시예에서, 저장 시스템은 호스트 파일시스템에 액세스하고, 그것의 자유 블록 비트맵들을 파싱하고, 그 정보를 이용하여 파일시스템에 의해 더 이상 사용되고 있지 않은 클러스터들을 식별함으로써 호스트 파일시스템 디스크 자원들의 해방(release)을 검출할 수 있다. 저장 시스템이 이런 식으로 미사용 클러스터들을 식별할 수 있게 하기 위해서, 저장 시스템은 파일시스템의 자유 블록 비트맵들을 찾아내고 이해할 수 있어야 한다. 따라서, 저장 시스템은 일반적으로 자유 블록 비트맵들을 찾아내고 이용하기 위해 충분히 내부 작업(inner working)을 "이해하는" 소정의 파일시스템들의 세트를 지원할 것이다. 지원되지 않는 파일시스템들에 대해서는, 저장 시스템은 아마도 가비지 수집을 수행할 수 없을 것이고 따라서 과할당(overcommit)되는 것을 피하기 위하여 어레이의 실제 물리적 사이즈를 통지할 뿐일 것이다.
파일시스템 타입(예컨대, NTFS, FAT, ReiserFS, ext3)을 결정하기 위하여, 파일시스템의 슈퍼블록(또는 동등한 구조)을 찾아낼 필요가 있다. 슈퍼블록을 찾기 위하여, OS 분할을 찾아내려는 시도에서 분할 테이블이 파싱될 것이다. OS 분할을 찾아냈다고 가정할 때, 슈퍼블록을 찾아내고 그에 의해 파일시스템 타입을 식별하려는 시도에서 OS 분할이 파싱될 것이다. 일단 파일시스템 타입을 알게 되면, 자유 블록 비트맵들을 찾기 위해 레이아웃이 파싱될 수 있다.
자유 블록들의 검색을 용이하게 하기 위하여, 예를 들면, 전용의 비-리던던트 존(private, non-redundant zone)에 저장될 수 있는 자유 블록 비트맵의 사본을 만들고, 그 사본을 이용하여 검색을 수행함으로써 호스트 파일시스템 비트맵의 이력 데이터(historical data)가 유지될 수 있다. 비트맵의 사이즈가 주어지면, 전체 비트맵에 대해서가 아니라 한 번에 비교적 적은 수의 클러스터들에 대하여 정보가 유지될 수 있다. 가비지 수집이 수행될 때, 현재의 자유 블록 비트맵은 이력 사본과 한 클러스터씩 비교될 수 있다. 할당 상태로부터 자유 상태로 전이하는 임의의 비트맵 엔트리들이 식별될 수 있어, 정리 동작(scavenging operation)을 재활용(reclamation)을 위한 양호한 후보들인 클러스터들에 정확하게 향하게 할 수 있다. 각 비트맵 클러스터가 처리될 때, 이력 사본은 비트맵 동작들의 진행 이력(rolling history)을 유지하기 위해 현재의 사본으로 교체될 수 있다. 시간이 지나면서 자유 블록 비트맵의 사본은 시간적으로 흩어진 클러스터들의 잡동사니(a patchwork of temporally disjoint clusters)가 되겠지만, 자유 엔트리들을 찾아내기 위해 항상 현재의 사본이 이용될 것이므로, 이것은 어떤 문제도 일으키지 않는다.
특정한 상황 하에서, 예를 들어, 호스트 파일시스템이 그것의 자유 블록 비트맵을 이용하여 디스크 블록들을 할당한 후, 그것의 데이터 블록들을 기입한 후, 수정된 비트맵을 다시 디스크에 플러싱(flush)할 경우, 자유 블록 비트맵에 관하여 경쟁 상태(race condition)가 있을 수 있다. 그 경우, 가비지 컬렉터는 파일 시스템이 클러스터를 사용하고 있더라도 그 클러스터를 자유롭게 할 수도 있다. 이것은 파일시스템 훼손으로 이끌 수 있다. 저장 시스템은 그러한 상태를 피하거나 핸들링하도록 구현되어야 한다.
가비지 수집은 꽤 고비용의 동작일 수 있기 때문에, 또한 가벼운 정리(lightweight scavenging)조차도 백엔드 대역폭(back-end bandwidth)을 소비할 것이므로, 가비지 수집은 남용되어서는 안 된다. 가비지 컬렉터는 가벼운 배경의 굼뜬 정리로부터 공격적인 무거운 또는 높은 우선순위 정리까지에 걸쳐 있는 수 개의 모드들에서 실행될 수 있어야 한다. 예를 들면, 가비지 컬렉터는 30%의 공간이 이용될 때 또는 최소 일주일에 한 번 가볍게 실행되고, 50%의 공간이 이용될 때는 약간 더 무겁게 실행되고, 90% 이상의 디스크 공간이 이용될 때는 최고로 높은 우선순위 정리로 실행될 수 있다. 가비지 컬렉터의 공격성은 재활용할 클러스터들의 목표 개수 및 어쩌면 각 수집 실행에 대한 최대 허용가능한 I/O 카운트까지 그것을 제한함으로써 제어될 수 있다. 예를 들면, 가비지 컬렉터는 10,000 이하의 I/O들을 이용하여 1GB를 재활용하도록 구성될 수 있다. 재활용 요구를 달성하지 못한 것은 다음번에 컬렉터가 실행될 때 더욱 공격적으로 동작하도록 컬렉터에의 피드백으로서 이용될 수 있다. 또한 가비지 컬렉터에게 전체 호스트 파일시스템 자유 블록 비트맵을 파싱하고 그것이 가능한 한 할 수 있는 모든 블록들을 재활용하는 허가를 주는 "전부 재활용(reclaim everything)" 모드가 있을 수 있다. 이것은 어레이가 (거의) 완전히 차있을 때 클러스터들을 재활용하려는 최후의 시도로서 행해질 수 있을 것이다. 가비지 컬렉터는 그것의 규칙들을 적용하기 위해 주기적으로 실행될 수 있고 정리 동작을 수행하기로 결정할 수도 있고 안 할 수도 있다. 정리 동작은 또한 다른 모듈로부터, 예를 들면 영역 관리자가 영역을 형성할 클러스터들을 찾으려고 애쓰고 있을 때 그 영역 관리자로부터 명백히 요구될 수 있어야 한다.
가비지 수집 기능은 상태 지시자 메커니즘에 결합될 수 있다. 예를 들면, 어느 시점에서, 저장 시스템은 "적색" 상태에 있을 수 있다. 비록 진행중인 가비지 수집 동작이 "적색" 상태를 없앨 충분한 공간을 자유롭게 할지라도. 관련 상태 정보를 나타내기 위해 추가적인 지시자 상태들이 이용될 수 있을 것이다(예컨대, 적색 지시자 라이트는 가비지 수집 동작이 진행중임을 지시하기 위해 깜박이게 될 수 있다).
도 21은 본 발명의 예시적 실시예에 따른 저장 어레이의 관련 컴포넌트들을 보여주는 개략 블록도이다. 그 중에서도 특히, 저장 어레이는 섀시(2502)를 포함하고, 이를 통하여 저장 관리자(2504)가 복수의 저장 디바이스들(25081-2508N)과 통신하고, 이 복수의 저장 디바이스들은 각각 복수의 슬롯들(25061-2506N)을 통하여 섀시에 연결되어 있다. 각 슬롯(25061-2506N)은 하나 이상의 지시자들(25071-2507N)과 관련될 수 있다. 그 중에서도 특히, 저장 관리자(2504)는 전형적으로 상술한 기능을 구현하기 위한 각종 하드웨어 및 소프트웨어 컴포넌트들을 포함한다. 하드웨어 컴포넌트들은 전형적으로 프로그램 코드, 데이터 구조, 및 데이터와 같은 것들을 저장하기 위한 메모리는 물론 프로그램 코드를 실행하기 위한 마이크로프로세서 시스템을 포함한다.
가상 핫 스페어(VIRTURE HOT SPARE)
위에서 논의된 바와 같이, 많은 저장 시스템들에서, 가상 핫 스페어는 다른 저장 디바이스가 고장난 경우에 신속히 온라인으로 될 수 있도록 준비 상태로 유지될 것이다. 본 발명의 특정 실시예들에서는, 물리적으로 별도의 핫 스페어를 유지하는 것이 아니라, 복수의 저장 디바이스들에 걸쳐서 미사용 저장 용량으로부터 가상 핫 스페어가 생성된다. 물리적 핫 스페어와 달리, 이 미사용 저장 용량은 한 저장 디바이스가 나머지 저장 디바이스(들)로부터 복구된 데이터의 저장에 실패하는 경우에 이용 가능하다.
가상 핫 스페어 특징은 디스크 고장의 경우에 데이터가 리던던트하게 재배치될 수 있도록 어레이 상에 충분한 공간이 이용 가능할 것을 요구한다. 따라서, 진행중 체제로(on a ongoing basis), 저장 시스템은 전형적으로 가상 핫 스페어의 구현을 위해 요구될 미사용 저장 용량을 결정하고(예컨대, 저장 디바이스의 수, 각종 저장 디바이스들의 용량, 저장된 데이터의 양, 및 데이터가 저장되는 방식에 기초하여) 가상 핫 스페어를 위해 추가 저장 용량이 필요하다면 신호를 생성한다(예컨대, 위에서 설명된 바와 같이 사실상, 상태 및 슬롯을 지시하기 위해 녹색/황색/적색 라이트들을 이용하여). 존들이 할당될 때, 디스크마다 그 존을 재배치하기 위해 얼마나 많은 영역들이 요구되는지에 대한 레코드가 유지된다. 다음 표는 4개의 드라이브가 이용될 때의 가상 핫 스페어를 설명한다:
타입 디스크 상의 저장 설명(Comments) 디스크가 고장나면 요구되는 영역들
디스크 0 디스크 1 디스크 2 디스크 3
2 2중 드라이브 미러 0,1 0 또는 1이 고장나면 디스크 2 또는 3에 재구성 12 12 0 0
3 2중 드라이브 미러 0,3 1 또는 2가 고장나면 디스크 1 또는 2에 재구성 12 0 0 12
5 3중 드라이브 스트라이프 1,2,3 1, 2, 또는 3이 고장나면 디스크 0에 재구성 0 6 6 6
10 4중 드라이브 스트라이프 0,1,2,3 다른 3개의 드라이브에 걸쳐서 3중 드라이브 스트라이프로 변환 2,2,2 2,2,2 2,2,2 2,2,2
다음 표는 3개의 드라이브가 이용될 때의 가상 핫 스페어를 설명한다.
타입 디스크 상의 저장 설명 디스크가 고장나면 요구되는 영역들
디스크 0 디스크 1 디스크 2
2 2중 드라이브 미러 0,1 디스크 3에 재구성 12 12 0
3 2중 드라이브 미러 0,3 디스크 1에 재구성 12 0 12
5 3중 드라이브 스트라이프 1,2,3 2중 드라이브 미러로 변환 6,6 6,6 6,6
이 예시적 실시예에서, 가상 핫 스페어는 단지 1개 또는 2개 드라이브를 갖는 어레이에서는 이용 가능하지 않다. 어레이 내의 디스크들의 수 및 각 존에 대한 정보에 기초하여, 어레이는 각각의 가능한 디스크 고장에 대한 재배치 시나리오를 결정하고 각 시나리오에 대하여 각 드라이브에서 충분한 공간이 이용 가능하도록 한다. 생성된 정보는, 데이터가 데이터 저장과 핫 스페어 특징 사이에 정확히 균형이 잡힐 수 있도록 재배치 엔진 및 존 관리자에 피드백될 수 있다. 핫 스페어 특징은 재배치가 일어날 수 있도록 존 레이아웃 데이터로부터 계산된 영역들 외에 충분한 스페어 작업 공간 영역들을 필요로 한다는 것에 유의하자.
도 22는 본 발명의 예시적인 실시예에 따른 가상 핫 스페어를 관리하기 위한 예시적인 논리를 보여주는 논리 흐름도이다. 블록 2102에서, 논리는 각각의 가능한 디스크 고장에 대한 재배치 시나리오를 결정한다. 블록 2104에서, 논리는 최악의 경우 시나리오에서 리던던트하게 데이터를 재배치하기 위해 각 드라이브에서 요구되는 공간의 양을 결정한다. 블록 2106에서, 논리는 최악의 경우 시나리오에서 리던던트하게 데이터를 재배치하기 위해 요구되는 스페어 작업 공간 영역들의 양을 결정한다. 블록 2108에서, 논리는 최악의 경우 시나리오에서 리던던트하게 데이터를 재배치하는 것을 허용하기 위하여 각 드라이브에서 요구되는 공간의 총량을 결정한다(본질적으로 재배치를 위해 요구되는 공간의 양과 요구되는 스페어 작업 공간 영역들의 양의 합). 블록 2110에서, 논리는 저장 시스템이 충분한 양의 이용 가능한 저장을 포함하는지를 결정한다. 만일 충분한 양의 이용 가능한 저장이 있다면(블록 2112에서 '예'), 논리 반복은 블록 2199에서 종료한다. 그러나, 불충분한 양의 이용 가능한 저장이 있다면(블록 2112에서 '아니오'), 논리는 블록 2114에서 어느 드라이브/슬롯이 업그레이드를 필요로 하는지를 결정한다. 그 후, 블록 2116에서, 논리는 추가 저장 공간이 요구된다는 것을 신호하고 어느 드라이브/슬롯이 업그레이드를 필요로 하는지를 지시한다. 논리 반복은 블록 2199에서 종료한다.
도 23은 본 발명의 예시적인 실시예에 따른, 도 22의 블록 2102에서와 같이, 각각의 가능한 디스크 고장에 대한 재배치 시나리오를 결정하기 위한 예시적인 논리를 보여주는 논리 흐름도이다. 블록 2202에서, 논리는 존을 할당한다. 그 후, 블록 2204에서, 논리는 디스크마다 해당 존을 재배치하기 위해 얼마나 많은 영역들이 요구되는지를 결정한다. 논리 반복은 블록 2299에서 종료한다.
도 24는 본 발명의 예시적인 실시예에 따른 가상 핫 스페어 기능을 호출(invoke)하기 위한 예시적인 논리를 보여주는 논리 흐름도이다. 블록 2302에서, 논리는 최악의 경우 시나리오의 경우에 리던던트하게 데이터를 재배치하는 것을 허용하기 위해 충분한 양의 이용 가능한 저장을 유지한다. 블록 2304에서, 드라이브의 분실(예컨대, 제거 또는 고장)이 결정되면, 논리는 블록 2306에서 데이터에 대한 내장애성을 복원하기 위해 하나 이상의 남아 있는 드라이브들을 자동으로 재구성한다. 논리 반복은 블록 2399에서 종료한다.
도 25는 본 발명의 예시적인 실시예에 따른, 도 24의 블록 2306에서와 같이, 데이터의 내장애성을 복원하기 위해 하나 이상의 남아 있는 드라이브들을 자동으로 재구성하기 위한 예시적인 논리를 보여주는 논리 흐름도이다. 블록 2402에서, 논리는 4개 이상의 저장 디바이스들에 걸쳐 있는 제1 스트라이프 패턴(striped pattern)을 3개 이상의 남아 있는 저장 디바이스들에 걸쳐 있는 제2 스트라이프 패턴으로 변환할 수 있다. 블록 2404에서, 논리는 3개의 저장 디바이스들에 걸쳐 있는 스트라이프 패턴을 2개의 남아 있는 저장 디바이스들에 걸쳐 있는 미러 패턴(mirrored pattern)으로 변환할 수 있다. 물론, 논리는 드라이브의 분실에 이어서 리던던트하게 데이터를 재배치하기 위하여 다른 방식으로 패턴들을 변환할 수도 있다. 논리 반복은 블록 2499에서 종료한다.
다시 도 21을 참조하여, 저장 관리자(2504)는 전형적으로 상술한 바와 같이 가상 핫 스페어 기능을 구현하기 위한 적당한 컴포넌트들 및 논리를 포함한다.
동적인 업그레이드
저장의 동적인 확장 및 수축을 핸들링하기 위해 위에서 설명된 논리는 동적으로 업그레이드 가능한 저장 시스템을 제공하도록 확장될 수 있고, 이 동적으로 업그레이드 가능한 저장 시스템에서는 저장 디바이스들이 필요에 따라 더 큰 저장 디바이스들로 교체될 수 있고, 기존의 데이터는 리던던시가 유지되거나 향상되는 방식으로 저장 디바이스들에 걸쳐서 자동으로 재구성될 수 있고 더 큰 저장 디바이스들에 의해 제공된 추가 저장 공간은 복수의 저장 디바이스들에 걸쳐서 이용 가능한 저장 공간의 풀에 포함될 것이다. 따라서, 작은 저장 디바이스가 더 큰 저장 디바이스로 교체될 때, 추가 저장 공간은 이미 저장된 데이터에 대한 리던던시를 향상시킬 뿐만 아니라 추가 데이터를 저장하는 데 이용될 수 있다. 더 많은 저장 공간이 요구될 때마다, 적절한 신호가 사용자에게 제공되고(예컨대, 위에서 설명된 바와 같이 사실상 녹색/황색/적색 라이트들을 이용하여), 사용자는 단순히 저장 디바이스를 제거하고 그것을 더 큰 저장 디바이스로 교체할 수 있다.
도 26은 본 발명의 예시적인 실시예에 따른, 저장 디바이스를 업데이트하기 위한 예시적인 논리를 보여주는 논리 흐름도이다. 블록 2602에서, 논리는 제1 저장 디바이스에 저장된 데이터가 다른 저장 디바이스들에서 리던던트하게 보이도록 제1 저장 디바이스에 데이터를 저장한다. 블록 2604에서, 논리는 제1 저장 디바이스보다 더 큰 저장 용량을 갖는 교체 디바이스로의 제1 저장 디바이스의 교체를 검출한다. 블록 2606에서, 논리는 제1 디바이스에 저장되었던 데이터를 다른 디바이스들에 리던던트하게 저장된 데이터를 이용하여 교체 디바이스 상에 자동으로 복사(reproduce)한다. 블록 2608에서, 논리는 교체 디바이스 상의 추가 저장 공간을 새로운 데이터를 리던던트하게 저장하는 데 이용 가능하게 한다. 블록 2610에서, 논리는 새로운 데이터에 대한 리던던시를 제공하기 위해 충분한 양의 이용 가능한 저장 용량을 갖고 있는 다른 디바이스가 없다면 교체 디바이스 상의 추가 저장 공간 내에 리던던트하게 새로운 데이터를 저장할 수 있다. 블록 2612에서, 논리는 적어도 하나의 다른 디바이스가 새로운 데이터에 대한 리던던시를 제공하기 위해 충분한 양의 이용 가능한 저장 용량을 갖고 있다면 다수의 저장 디바이스들에 걸쳐서 리던던트하게 새로운 데이터를 저장할 수 있다.
다시 도 21을 참조하여, 저장 관리자(2504)는 전형적으로 상술한 바와 같이 동적인 업그레이드 기능을 구현하기 위한 적당한 컴포넌트들 및 논리를 포함한다.
기타
본 발명의 실시예들은 Geoffrey S. Barrall의 명의로 2004년 11월 5일에 출원되었고, 그 전체 내용이 본 명세서에 참조로 통합되는 미국 가 특허 출원 60/625,469호에 기술된 방식으로, 예컨대, 주변 접속 프로토콜을 이용하여 호스트 컴퓨터에 저장 용량을 제공하기 위해 이용될 수 있다.
해시 알고리듬은 엄격히 유일한 해시 값들을 생성하지 않을 수도 있다는 것에 유의해야 할 것이다. 따라서, 해시 알고리듬이 동일하지 않은 콘텐츠를 갖는 2개의 데이터 청크들에 대하여 동일한 해시 값을 생성하는 것을 생각할 수 있다. 해시 함수(일반적으로 해시 알고리듬을 통합함)는 전형적으로 유일성(uniqueness)을 확인하기 위한 메커니즘을 포함한다. 예를 들면, 위에서 설명된 발명의 예시적 실시예에서, 하나의 청크에 대한 해시 값이 다른 청크의 해시 값과 다르다면, 이들 청크들의 콘텐츠는 동일하지 않은 것으로 간주된다. 그러나, 만일 하나의 청크에 대한 해시 값이 다른 청크의 해시 값과 동일하다면, 해시 함수는 2개의 청크들의 콘텐츠를 비교하거나 또는 어떤 다른 메커니즘(예컨대, 상이한 해시 함수)을 이용하여 그 콘텐츠가 동일한지 동일하지 않은지를 결정할 수 있다.
본 명세서에서 논리 흐름도들은 발명의 각종 양태들을 설명하기 위해 사용되고 있고, 본 발명을 임의의 특정 논리 흐름 또는 논리 구현으로 제한하도록 해석되어서는 안 된다는 것에 유의해야 할 것이다. 설명된 논리는 전체 결과를 변경하거나 또는 다른 방법으로 본 발명의 진정한 범위에서 벗어나지 않고 상이한 논리 블록들(예컨대, 프로그램, 모듈, 함수, 또는 서브루틴들)로 분할될 수도 있다. 종종, 전체 결과를 변경하거나 또는 다른 방법으로 본 발명의 진정한 범위에서 벗어나지 않고 논리 소자들이 추가되거나, 변경되거나, 생략되거나, 상이한 순서로 수행되거나, 상이한 논리 구성들(예컨대, 논리 게이트, 루핑 프리미티브, 조건부 논리, 및 다른 논리 구성들)을 이용하여 구현될 수도 있다.
본 발명은 프로세서(예컨대, 마이크로프로세서, 마이크로컨트롤러, 디지털 신호 프로세서, 또는 범용 컴퓨터)와 함께 이용되는 컴퓨터 프로그램 논리, 프로그램 가능한 논리 디바이스(예컨대, FPGA(Field Programmable Gate Array) 또는 다른 PLD)와 함께 이용되는 프로그램 가능한 논리, 이산(discrete) 컴포넌트들, 집적 회로(예컨대, ASIC(Application Specific Integrated Circuit)), 또는 그것들의 임의의 조합을 포함하는 임의의 다른 수단을 포함하지만 결코 이들에 제한되지 않는 다수의 상이한 형태들로 구현될 수 있다.
본 명세서에서 앞에서 설명된 기능의 전부 또는 일부를 구현하는 컴퓨터 프로그램 논리는, 소스 코드 형태, 컴퓨터 실행 가능 형태, 및 각종 중간 형태(예컨대, 어셈블러, 컴파일러, 링커, 또는 로케이터에 의해 생성된 형태들)를 포함하지만 결코 이들에 제한되지 않는 다양한 형태들로 구현될 수 있다. 소스 코드는 각종 운영 시스템 또는 운영 환경과 함께 이용되는 각종 프로그램 언어들(예컨대, 오브젝트 코드, 어셈블리 언어, 또는 포트란(Fortran), C, C++, 자바(JAVA), 또는 HTML) 중의 임의의 프로그램 언어로 구현된 일련의 컴퓨터 프로그램 명령들을 포함할 수 있다. 소스 코드는 각종 데이터 구조 및 통신 메시지를 정의 및 사용할 수 있다. 소스 코드는 컴퓨터 실행 가능 형태로 되어 있을 수도 있고(예컨대, 인터프리터를 통하여), 또는 소스 코드는 컴퓨터 실행 가능 형태로 변환될 수도 있다(예컨대, 번역기(translator), 어셈블러, 또는 컴파일러를 통하여).
컴퓨터 프로그램은 반도체 메모리 디바이스(예컨대, RAM, ROM, PROM, EEPROM, 또는 플래시-프로그래머블 RAM), 자기 메모리 디바이스(예컨대, 디스켓 또는 고정된 디스크), 또는 광학 메모리 디바이스(예컨대, CD-ROM), PC 카드(예컨대, PCMCIA 카드), 또는 다른 메모리 디바이스와 같은 실체적인 저장 매체에 영구적으로 또는 일시적으로 임의의 형태(예컨대, 소스 코드 형태, 컴퓨터 실행 가능 형태, 또는 중간 형태)로 고정될 수 있다. 컴퓨터 프로그램은 아날로그 기술, 디지털 기술, 광학 기술, 무선 기술(예컨대, 블루투스), 네트워킹 기술, 및 인터네트워킹 기술을 포함하지만 결코 이들에 제한되지 않는 각종의 통신 기술들 중 임의의 통신 기술을 이용하여 컴퓨터에 전송 가능한 신호에 임의의 형태로 고정될 수 있다. 컴퓨터 프로그램은 동반하는 인쇄 또는 전자 문서와 함께 이동 가능한 저장 매체로서 임의의 형태로 배포되거나(예컨대, 수축 포장된(shrinked wrapped) 소프트웨어), 컴퓨터 시스템에 사전 로딩(preloaded)되거나(예컨대, 시스템 ROM 또는 고정된 디스크 상에), 또는 통신 시스템을 통하여 서버 또는 전자 게시판으로부터 배포될 수도 있다(예컨대, 인터넷 또는 월드 와이드 웹).
본 명세서에서 앞에서 설명된 기능의 전부 또는 일부를 구현하는 하드웨어 논리(프로그램 가능한 논리 디바이스와 함께 이용되는 프로그램 가능한 논리를 포함함)는 전통적인 수동식 방법을 이용하여 설계될 수도 있고, 또는 CAD(Computer Aided Design), 하드웨어 기술 언어(예컨대, VHDL 또는 AHDL), 또는 PLD 프로그래밍 언어(예컨대, PALASM, ABEL, 또는 CUPL)와 같은 각종 도구를 이용하여 전자적으로 설계, 캡처, 시뮬레이트, 또는 문서화될 수도 있다.
프로그램 가능한 논리는 반도체 메모리 디바이스(예컨대, RAM, ROM, PROM, EEPROM, 또는 플래시-프로그래머블 RAM), 자기 메모리 디바이스(예컨대, 디스켓 또는 고정된 디스크), 또는 광학 메모리 디바이스(예컨대, CD-ROM), 또는 다른 메모리 디바이스와 같은 실체적인 저장 매체에 영구적으로 또는 일시적으로 고정될 수 있다. 프로그램 가능한 논리는 아날로그 기술, 디지털 기술, 광학 기술, 무선 기술(예컨대, 블루투스), 네트워킹 기술, 및 인터네트워킹 기술을 포함하지만 결코 이들에 제한되지 않는 각종의 통신 기술들 중 임의의 통신 기술을 이용하여 컴퓨터에 전송 가능한 신호에 고정될 수 있다. 프로그램 가능한 논리는 동반하는 인쇄 또는 전자 문서와 함께 이동 가능한 저장 매체로서 배포되거나(예컨대, 수축 포장된 소프트웨어), 컴퓨터 시스템에 사전 로딩되거나(예컨대, 시스템 ROM 또는 고정된 디스크 상에), 또는 통신 시스템을 통하여 서버 또는 전자 게시판으로부터 배포될 수도 있다(예컨대, 인터넷 또는 월드 와이드 웹).
본 출원은 다음의 미국 특허 출원들에 관련되어 있는데, 이들은 본 출원과 동일 날짜에 출원되고 그 전체 내용이 본 명세서에 참조로 통합된다:
대리인 사건 번호 2950/103, 발명의 명칭 Dynamically Expandable and Contractible Fault-Tolerant Storage System Permitting Variously Sized Storage Devices and Method;
대리인 사건 번호 2950/104, 발명의 명칭 Dynamically Upgradeable Fault-Tolerant Storage System Permitting Variously Sized Storage Devices and Method; 및
대리인 사건 번호 2950/105, 발명의 명칭 Dynamically Expandable and Contractible Fault-Tolerant Storage System With Virtual Hot Spare.
본 발명은 발명의 진정한 범위에서 벗어나지 않고 다른 특정 형태로 구현될 수 있다. 설명된 실시예들은 모든 점에서 제한적인 것이 아니라 단지 예시적인 것으로서 간주되어야 할 것이다.

Claims (32)

  1. 저장 시스템 상태 지시자 방법으로서,
    상기 시스템이 작동하고 모든 저장 디바이스들에 걸쳐서 새로이 저장된 오브젝트들에 대한 리던던시를 갖고 있는지를 판정하고, 만일 그렇다면, 저장이 양호한 레벨의 데이터 안전성을 제공하는 "고우(go)" 상태를 지시(indicate)하는 단계와;
    상기 시스템이 작동하고 전부가 아닌 일부 저장 디바이스들에 걸쳐서 새로이 저장된 오브젝트들에 대한 리던던시를 갖고 있는지를 판정하고, 만일 그렇다면, 안전성과 일관된 효율적인 데이터 저장을 위하여 더 많은 저장이 요구되는 "효율성을 위하여 더 많은 저장이 요구됨(more storage needed for efficiency)" 상태를 지시하는 단계와;
    상기 시스템이 작동하고 단 하나의 저장 디바이스에서만 새로이 저장된 오브젝트들에 대한 리던던시를 갖고 있는지를 판정하고, 만일 그렇다면, 데이터 안전성을 위하여 더 많은 저장이 요구되는 "안전성을 위해 더 많은 저장이 요구됨(more storage needed for safety)" 상태를 지시하는 단계
    를 포함하는 저장 시스템 지시자 방법.
  2. 제1항에 있어서, 상기 지시하는 단계는 단일 지시자를 이용하여 달성되는 저장 시스템 상태 지시자 방법.
  3. 제2항에 있어서, 상기 단일 지시자는 다중색 라이트(multiple color light)를 포함하고, 각 색은 상이한 상태와 관련되는 저장 시스템 상태 지시자 방법.
  4. 제1항에 있어서, 상기 시스템이 하나의 상태에서 다른 상태로 전이(transition)중인지를 판정하고, 만일 그렇다면, 그 전이의 사실을 지시하는 단계를 더 포함하는 저장 시스템 상태 지시자 방법.
  5. 제4항에 있어서, 상기 전이의 사실을 지시하는 단계는 라이트를 오프 상태와 온 상태 간에 번쩍이는(flashing) 단계를 포함하는 저장 시스템 상태 지시자 방법.
  6. 제4항에 있어서, 상기 전이의 사실을 지시하는 단계는 라이트를 2개의 상이한 색들 간에 번쩍이는 단계를 포함하는 저장 시스템 상태 지시자 방법.
  7. 제1항에 있어서, 상기 지시하는 단계는 복수의 지시자를 이용하여 달성되고, 각 지시자는 상이한 상태와 관련되는 저장 시스템 상태 지시자 방법.
  8. 저장 디바이스들의 어레이를 지원하는 시스템에 적용 가능한 저장 시스템 상태 지시자 방법으로서,
    상기 저장 디바이스들의 어레이에서의 이용 가능한 저장의 양 및 리던던시의 레벨에 기초하여 저장 시스템 상태를 판정하는 단계와;
    상기 저장 디바이스들의 어레이에서의 이용 가능한 저장의 양 및 리던던시의 레벨에 기초하여 추가 저장 용량이 권장되는지를 판정하는 단계와;
    추가 저장 용량이 권장되는 경우에는, 어레이 내의 어느 슬롯이 추가 저장 용량으로 채워져야 하는지를 포함하는 상기 저장 시스템 상태를 지시하는 단계
    를 포함하는 저장 시스템 상태 지시자 방법.
  9. 제8항에 있어서, 상기 어레이 내의 각 슬롯은 지시자와 관련되고, 상기 지시자들은 상기 어레이 내의 어느 슬롯이 추가 저장 용량으로 채워져야 하는지를 지시하는 것을 포함하여 상기 저장 시스템 상태를 지시하기 위해 집합적으로 이용되는 저장 시스템 상태 지시자 방법.
  10. 제9항에 있어서, 상기 저장 시스템 상태를 지시하는 단계는,
    주어진 슬롯과 관련된 지시자를, 상기 슬롯이 추가 저장 용량으로 채워지지 않아야 한다면, 제1 상태로 설정하는 단계와;
    상기 시스템이 전부가 아닌 일부 저장 디바이스들에 걸쳐서 새로이 저장된 오브젝트들에 대한 리던던시를 갖고 있고 상기 슬롯이 추가 저장 용량으로 채워져야 한다면, 상기 슬롯과 관련된 지시자를 제2 상태로 설정하는 단계와;
    상기 시스템이 단일 저장 디바이스에서만 새로이 저장된 오브젝트들에 대한 리던던시를 갖고 있고 상기 슬롯이 추가 저장 용량으로 채워져야 한다면, 상기 슬롯과 관련된 지시자를 제3 상태로 설정하는 단계
    를 포함하는 저장 시스템 상태 지시자 방법.
  11. 제10항에 있어서, 각 지시자는 다중색 라이트일 수 있고, 각 상태는 상이한 색과 관련되는 저장 시스템 상태 지시자 방법.
  12. 제11항에 있어서, 상기 다중색 라이트는 3색 라이트이고,
    상기 제1 상태는 녹색이고;
    상기 제2 상태는 황색이고;
    상기 제3 상태는 적색인 저장 시스템 상태 지시자 방법.
  13. 제8항에 있어서, 상기 시스템이 하나의 상태에서 다른 상태로 전이중인지를 판정하고, 만일 그렇다면, 그 전이의 사실을 지시하는 단계를 더 포함하는 저장 시스템 상태 지시자 방법.
  14. 제13항에 있어서, 상기 전이의 사실을 지시하는 단계는 라이트를 오프 상태와 온 상태 간에 번쩍이는 단계를 포함하는 저장 시스템 상태 지시자 방법.
  15. 제13항에 있어서, 상기 전이의 사실을 지시하는 단계는 라이트를 2개의 상이한 색들 간에 번쩍이는 단계를 포함하는 저장 시스템 상태 지시자 방법.
  16. 제8항에 있어서, 상기 지시자들은 상기 슬롯들 각각에 대한 전면 패널(front panel) 및 상기 어레이 내의 어느 슬롯이 추가 저장 용량으로 채워져야 하는지를 포함하여 상기 저장 시스템 상태를 지시하기 위해 상기 전면 패널들을 조명하기 위한 관련 라이트들을 포함하는 저장 시스템 상태 지시자 방법.
  17. 저장 시스템으로서,
    다양한 저장 용량의 저장 디바이스들을 수용하기 위한 복수의 저장 디바이스 슬롯들과;
    저장 시스템 상태 정보를 제공하기 위한 적어도 하나의 상태 지시자와;
    상기 복수의 저장 디바이스 슬롯들 및 상기 적어도 하나의 상태 지시자에 동작 가능하게 연결되어 상기 저장 디바이스 슬롯들을 통하여 연결된 저장 디바이스들의 세트를 관리하기 위한 저장 관리자 - 상기 저장 관리자는 상기 시스템이 작동하고 모든 저장 디바이스들에 걸쳐서 새로이 저장된 오브젝트들에 대한 리던던시를 갖고 있는지를 판정하고, 만일 그렇다면, 저장이 양호한 레벨의 데이터 안전성을 제공하는 "고우(go)" 상태를 지시하고; 상기 시스템이 작동하고 전부가 아닌 일부 저장 디바이스들에 걸쳐서 새로이 저장된 오브젝트들에 대한 리던던시를 갖고 있는지를 판정하고, 만일 그렇다면, 안전성과 일관된 효율적인 데이터 저장을 위하여 더 많은 저장이 요구되는 "효율성을 위하여 더 많은 저장이 요구됨" 상태를 지시하고; 상기 시스템이 작동하고 단 하나의 저장 디바이스에서만 새로이 저장된 오브젝트들에 대한 리던던시를 갖고 있는지를 판정하고, 만일 그렇다면, 데이터 안전성을 위하여 더 많은 저장이 요구되는 "안전성을 위해 더 많은 저장이 요구됨" 상태를 지시함 -
    를 포함하는 저장 시스템.
  18. 제17항에 있어서, 상기 지시하는 것은 단일 지시자를 이용하여 달성되는 저장 시스템.
  19. 제18항에 있어서, 상기 단일 지시자는 다중색 라이트를 포함하고, 각 색은 상이한 상태와 관련되는 저장 시스템.
  20. 제17항에 있어서, 상기 저장 관리자는 또한 상기 시스템이 하나의 상태에서 다른 상태로 전이중인지를 판정하고, 만일 그렇다면, 그 전이의 사실을 지시하는 저장 시스템.
  21. 제20항에 있어서, 상기 저장 관리자는 라이트를 오프 상태와 온 상태 간에 번쩍임으로써 상기 전이의 사실을 지시하는 저장 시스템.
  22. 제20항에 있어서, 상기 저장 관리자는 라이트를 2개의 상이한 색들 간에 번쩍임으로써 상기 전이의 사실을 지시하는 저장 시스템.
  23. 제17항에 있어서, 상기 지시하는 것은 복수의 지시자를 이용하여 달성되고, 각 지시자는 상이한 상태와 관련되는 저장 시스템.
  24. 저장 시스템으로서,
    다양한 저장 용량의 저장 디바이스들을 수용하기 위한 복수의 저장 디바이스 슬롯들과;
    저장 시스템 상태 정보를 제공하기 위한 적어도 하나의 상태 지시자와;
    상기 복수의 저장 디바이스 슬롯들 및 상기 적어도 하나의 상태 지시자에 동작 가능하게 연결되어 상기 저장 디바이스 슬롯들을 통하여 연결된 저장 디바이스들의 세트를 관리하기 위한 저장 관리자 - 상기 저장 관리자는 상기 저장 디바이스들의 세트에서의 이용 가능한 저장의 양 및 리던던시의 레벨에 기초하여 저장 시스템 상태를 판정하고, 그에 의해 추가 저장 용량이 권장되는지를 판정하고, 상기 저장 관리자는, 추가 저장 용량이 권장되는 경우에는, 상기 저장 디바이스 슬롯들 중 어느 슬롯이 추가 저장 용량으로 채워져야 하는지를 포함하는 상기 저장 시스템 상태를 상기 적어도 하나의 상태 지시자를 통하여 지시함 -
    를 포함하는 저장 시스템.
  25. 제24항에 있어서, 각 슬롯은 지시자와 관련되고, 상기 지시자들은 어느 슬롯이 추가 저장 용량으로 채워져야 하는지를 지시하는 것을 포함하여 상기 저장 시스템 상태를 지시하기 위해 집합적으로 이용되는 저장 시스템.
  26. 제25항에 있어서,
    상기 저장 관리자는, 주어진 슬롯과 관련된 지시자를, 상기 슬롯이 추가 저장 용량으로 채워지지 않아야 한다면, 제1 상태로 설정하고;
    상기 저장 관리자는, 상기 시스템이 전부가 아닌 일부 저장 디바이스들에 걸쳐서 새로이 저장된 오브젝트들에 대한 리던던시를 갖고 있고 상기 슬롯이 추가 저장 용량으로 채워져야 한다면, 상기 슬롯과 관련된 지시자를 제2 상태로 설정하고;
    상기 저장 관리자는, 상기 시스템이 단일 저장 디바이스에서만 새로이 저장된 오브젝트들에 대한 리던던시를 갖고 있고 상기 슬롯이 추가 저장 용량으로 채워져야 한다면, 상기 슬롯과 관련된 지시자를 제3 상태로 설정하는 저장 시스템.
  27. 제26항에 있어서, 각 지시자는 다중색 라이트일 수 있고, 각 상태는 상이한 색과 관련되는 저장 시스템.
  28. 제27항에 있어서, 상기 다중색 라이트는 3색 라이트이고,
    상기 제1 상태는 녹색이고;
    상기 제2 상태는 황색이고;
    상기 제3 상태는 적색인 저장 시스템.
  29. 제24항에 있어서, 상기 저장 관리자는 상기 시스템이 하나의 상태에서 다른 상태로 전이중인지를 판정하고, 만일 그렇다면, 그 전이의 사실을 지시하는 저장 시스템.
  30. 제29항에 있어서, 상기 저장 관리자는 라이트를 오프 상태와 온 상태 간에 번쩍임으로써 상기 전이의 사실을 지시하는 저장 시스템.
  31. 제29항에 있어서, 상기 저장 관리자는 라이트를 2개의 상이한 색들 간에 번쩍임으로써 상기 전이의 사실을 지시하는 저장 시스템.
  32. 제25항에 있어서, 상기 지시자들은 상기 슬롯들 각각에 대한 전면 패널 및 상기 어레이 내의 어느 슬롯이 추가 저장 용량으로 채워져야 하는지를 포함하여 상기 저장 시스템 상태를 지시하기 위해 상기 전면 패널들을 조명하기 위한 관련 라이트들을 포함하는 저장 시스템.
KR1020077012750A 2004-11-05 2005-11-04 저장 시스템 상태 지시자 방법 및 저장 시스템 KR101146484B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US62549504P 2004-11-05 2004-11-05
US60/625,495 2004-11-05
US71876805P 2005-09-20 2005-09-20
US60/718,768 2005-09-20
PCT/US2005/040175 WO2006052830A2 (en) 2004-11-05 2005-11-04 Storage system condition indicator and method

Publications (2)

Publication Number Publication Date
KR20070111450A true KR20070111450A (ko) 2007-11-21
KR101146484B1 KR101146484B1 (ko) 2012-07-05

Family

ID=36203290

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077012750A KR101146484B1 (ko) 2004-11-05 2005-11-04 저장 시스템 상태 지시자 방법 및 저장 시스템

Country Status (8)

Country Link
US (5) US7814272B2 (ko)
EP (4) EP1825373A2 (ko)
JP (5) JP5116151B2 (ko)
KR (1) KR101146484B1 (ko)
CN (2) CN104699420A (ko)
AU (2) AU2005304759B2 (ko)
CA (2) CA2590875C (ko)
WO (4) WO2006052888A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150036018A (ko) * 2012-06-07 2015-04-07 바이올린 메모리 인코포레이티드 메모리 시스템 관리

Families Citing this family (322)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100611109B1 (ko) * 2000-01-14 2006-08-09 삼성전자주식회사 반도체 장치의 콘택홀 검사 방법
US8892878B2 (en) * 2003-05-09 2014-11-18 Oracle America, Inc. Fine-grained privileges in operating system partitions
US7966333B1 (en) 2003-06-17 2011-06-21 AudienceScience Inc. User segment population techniques
US8112458B1 (en) 2003-06-17 2012-02-07 AudienceScience Inc. User segmentation user interface
EP1825373A2 (en) 2004-11-05 2007-08-29 Data Robotics Incorporated Dynamically expandable and contractible fault-tolerant storage system with virtual hot spare
US7873782B2 (en) * 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
US8296271B1 (en) 2005-03-28 2012-10-23 Federal Home Loan Mortgage Corporation System and method for optimizing data recovery in a parallel database
US7809752B1 (en) 2005-04-14 2010-10-05 AudienceScience Inc. Representing user behavior information
US7676467B1 (en) 2005-04-14 2010-03-09 AudienceScience Inc. User segment population techniques
JP4723921B2 (ja) * 2005-06-13 2011-07-13 株式会社日立製作所 記憶制御装置及びその制御方法
US8838466B2 (en) * 2005-12-02 2014-09-16 Guard Insurance Group System and method to track the status, physical location, and logical location of workflow objects in a workflow cycle
US7620710B2 (en) * 2005-12-19 2009-11-17 Commvault Systems, Inc. System and method for performing multi-path storage operations
KR100725410B1 (ko) * 2006-01-20 2007-06-07 삼성전자주식회사 전원 상태에 따라 비휘발성 메모리의 블록 회수를 수행하는장치 및 그 방법
JP4577242B2 (ja) * 2006-03-10 2010-11-10 日本電気株式会社 データバックアップシステム、データバックアップ方法、及びその動作制御プログラム
US7617361B2 (en) * 2006-03-29 2009-11-10 International Business Machines Corporation Configureable redundant array of independent disks
JP5167243B2 (ja) * 2006-04-04 2013-03-21 パーマビット テクノロジー コーポレイション 拡張性及び耐障害性を有する記憶システムのための記憶領域割当て及び消去符号化技法
JP2008009767A (ja) 2006-06-29 2008-01-17 Hitachi Ltd データ処理システム及びその方法並びにストレージ装置
US8161353B2 (en) 2007-12-06 2012-04-17 Fusion-Io, Inc. Apparatus, system, and method for validating that a correct data segment is read from a data storage device
US8151082B2 (en) 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
WO2008070173A1 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for solid-state storage as cache for high-capacity, non-volatile storage
US7840537B2 (en) 2006-12-22 2010-11-23 Commvault Systems, Inc. System and method for storing redundant information
US20080162915A1 (en) * 2006-12-29 2008-07-03 Price Mark H Self-healing computing system
US20080228828A1 (en) * 2007-03-16 2008-09-18 Microsoft Corporation Management of collections within a data storage system
US8086652B1 (en) * 2007-04-27 2011-12-27 Netapp, Inc. Storage system-based hole punching for reclaiming unused space from a data container
US7797489B1 (en) 2007-06-01 2010-09-14 Netapp, Inc. System and method for providing space availability notification in a distributed striped volume set
US8201018B2 (en) * 2007-09-18 2012-06-12 Hewlett-Packard Development Company, L.P. Control of sparing in storage systems
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US7979635B2 (en) * 2008-02-14 2011-07-12 International Business Machines Corporation Apparatus and method to allocate resources in a data storage library
US20090228823A1 (en) * 2008-03-07 2009-09-10 Microsoft Corporation User interface for portable storage devices
US20090240717A1 (en) * 2008-03-20 2009-09-24 Hitachi, Ltd. Method and apparatus for verifying archived data integrity in integrated storage systems
EP2297742B1 (en) 2008-05-16 2013-07-24 Fusion-io, Inc. Apparatus, system, and method for detecting and replacing failed data storage
US8219524B2 (en) * 2008-06-24 2012-07-10 Commvault Systems, Inc. Application-aware and remote single instance data management
JP2010009442A (ja) * 2008-06-30 2010-01-14 Fujitsu Ltd ディスクアレイシステム、ディスク制御装置及びその再構築処理方法
US8239623B2 (en) * 2008-07-03 2012-08-07 Oracle America, Inc. Scheduling read operations during drive reconstruction in an array of redundant disk drives
GB2463078B (en) * 2008-09-02 2013-04-17 Extas Global Ltd Distributed storage
CA2729078C (en) 2008-09-26 2016-05-24 Commvault Systems, Inc. Systems and methods for managing single instancing data
US9015181B2 (en) 2008-09-26 2015-04-21 Commvault Systems, Inc. Systems and methods for managing single instancing data
US8412677B2 (en) 2008-11-26 2013-04-02 Commvault Systems, Inc. Systems and methods for byte-level or quasi byte-level single instancing
JP5637552B2 (ja) * 2009-02-17 2014-12-10 日本電気株式会社 ストレージシステム
JP5407430B2 (ja) * 2009-03-04 2014-02-05 日本電気株式会社 ストレージシステム
US8401996B2 (en) 2009-03-30 2013-03-19 Commvault Systems, Inc. Storing a variable number of instances of data objects
US8171202B2 (en) * 2009-04-21 2012-05-01 Google Inc. Asynchronous distributed object uploading for replicated content addressable storage clusters
US8281227B2 (en) 2009-05-18 2012-10-02 Fusion-10, Inc. Apparatus, system, and method to increase data integrity in a redundant storage system
US8307258B2 (en) 2009-05-18 2012-11-06 Fusion-10, Inc Apparatus, system, and method for reconfiguring an array to operate with less storage elements
US8578120B2 (en) 2009-05-22 2013-11-05 Commvault Systems, Inc. Block-level single instancing
US9009363B2 (en) * 2009-06-12 2015-04-14 Rasilient Systems, Inc. Methods for providing and indicating storage load indexes
CN101923441B (zh) * 2009-06-17 2012-08-22 成都市华为赛门铁克科技有限公司 混合磁盘冗余阵列的写请求处理方法、控制器和存储系统
KR101674015B1 (ko) 2009-06-23 2016-11-08 시게이트 테크놀로지 엘엘씨 데이터 저장 매체 액세스 방법과 그와 같은 기능을 갖는 데이터 저장 장치 및 기록 매체
US8225135B2 (en) * 2009-07-07 2012-07-17 Drobo, Inc. System and method for protecting users of data storage systems against known problems
JP5040970B2 (ja) 2009-07-24 2012-10-03 富士通株式会社 システム制御サーバ、ストレージシステム、設定方法および設定プログラム
US8838877B2 (en) * 2009-09-16 2014-09-16 Apple Inc. File system derived metadata for management of non-volatile memory
US20120143715A1 (en) * 2009-10-26 2012-06-07 Kave Eshghi Sparse index bidding and auction based storage
KR101656102B1 (ko) 2010-01-21 2016-09-23 삼성전자주식회사 컨텐츠 파일 생성/제공 장치 및 방법
US8751738B2 (en) 2010-02-08 2014-06-10 Microsoft Corporation Background migration of virtual storage
US8271731B2 (en) * 2010-02-26 2012-09-18 Red Hat, Inc. Non blocking rehashing
US8819208B2 (en) 2010-03-05 2014-08-26 Solidfire, Inc. Data deletion in a distributed data storage system
US9710294B2 (en) 2010-03-17 2017-07-18 Zerto Ltd. Methods and apparatus for providing hypervisor level data services for server virtualization
US10649799B2 (en) 2010-03-17 2020-05-12 Zerto Ltd. Hypervisor virtual server system, and method for providing data services within a hypervisor virtual server system
US9442748B2 (en) 2010-03-17 2016-09-13 Zerto, Ltd. Multi-RPO data protection
US11256529B2 (en) 2010-03-17 2022-02-22 Zerto Ltd. Methods and apparatus for providing hypervisor level data services for server virtualization
US9389892B2 (en) 2010-03-17 2016-07-12 Zerto Ltd. Multiple points in time disk images for disaster recovery
US8719307B2 (en) * 2010-04-23 2014-05-06 Red Hat, Inc. Concurrent linked hashed maps
US12008266B2 (en) 2010-09-15 2024-06-11 Pure Storage, Inc. Efficient read by reconstruction
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US8515915B2 (en) * 2010-09-24 2013-08-20 Hitachi Data Systems Corporation System and method for enhancing availability of a distributed object storage system during a partial database outage
JP5170794B2 (ja) * 2010-09-28 2013-03-27 株式会社バッファロー 記憶システム及びフェイルオーバ制御方法
US8935492B2 (en) 2010-09-30 2015-01-13 Commvault Systems, Inc. Archiving data objects using secondary copies
US8583599B2 (en) * 2010-11-29 2013-11-12 Ca, Inc. Reducing data duplication in cloud storage
US8849758B1 (en) 2010-12-28 2014-09-30 Amazon Technologies, Inc. Dynamic data set replica management
US10922225B2 (en) 2011-02-01 2021-02-16 Drobo, Inc. Fast cache reheat
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
WO2013070273A1 (en) * 2011-04-01 2013-05-16 Nexsan Corporation Journaling raid system
JP5494556B2 (ja) * 2011-04-19 2014-05-14 コニカミノルタ株式会社 画像形成方法および画像形成装置
CN102819480A (zh) * 2011-06-08 2012-12-12 联想(北京)有限公司 一种监控计算机存储器的方法和计算机
US20130024723A1 (en) * 2011-07-19 2013-01-24 Promise Technology, Inc. Disk storage system with two disks per slot and method of operation thereof
US8488779B2 (en) * 2011-07-25 2013-07-16 Grey Heron Technologies, Llc Method and system for conducting high speed, symmetric stream cipher encryption
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
KR101695991B1 (ko) * 2011-09-06 2017-01-12 한국전자통신연구원 파일 데이터 분산 저장 장치 및 방법
US10223375B2 (en) * 2011-09-20 2019-03-05 Netapp, Inc. Handling data extent size asymmetry during logical replication in a storage system
US8799523B2 (en) 2011-09-21 2014-08-05 Kevin Mark Klughart Data storage architecture extension system and method
US9460110B2 (en) 2011-09-21 2016-10-04 Kevin Mark Klughart File system extension system and method
US8943227B2 (en) 2011-09-21 2015-01-27 Kevin Mark Klughart Data storage architecture extension system and method
US8813165B2 (en) 2011-09-25 2014-08-19 Kevin Mark Klughart Audio/video storage/retrieval system and method
US9870373B2 (en) 2011-09-21 2018-01-16 Kevin Mark Klughart Daisy-chain storage synchronization system and method
US9652343B2 (en) 2011-09-21 2017-05-16 Kevin Mark Klughart Raid hot spare system and method
US8959389B2 (en) 2011-11-23 2015-02-17 International Business Machines Corporation Use of a virtual drive as a hot spare for a raid group
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9304912B1 (en) * 2012-01-06 2016-04-05 Marvell International Ltd. Systems and methods for building redundancy data in a RAID system
WO2013108746A1 (ja) * 2012-01-16 2013-07-25 日本電気株式会社 検索システム、その制御方法、及びプログラム
JPWO2013108745A1 (ja) * 2012-01-16 2015-05-11 日本電気株式会社 ストレージ装置、その制御方法、及びプログラム
US8782375B2 (en) 2012-01-17 2014-07-15 International Business Machines Corporation Hash-based managing of storage identifiers
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
CN103226518B (zh) * 2012-01-31 2016-06-22 国际商业机器公司 一种在存储管理系统中进行卷扩展的方法和装置
EP2810171B1 (en) 2012-02-02 2019-07-03 Hewlett-Packard Enterprise Development LP Systems and methods for data chunk deduplication
US11232093B2 (en) 2012-03-02 2022-01-25 Pure Storage, Inc. Slice migration in a dispersed storage network
US10402393B2 (en) * 2012-03-02 2019-09-03 Pure Storage, Inc. Slice migration in a dispersed storage network
GB2500597B (en) * 2012-03-26 2014-06-18 Streetcloud Ltd Data server
US8719320B1 (en) 2012-03-29 2014-05-06 Amazon Technologies, Inc. Server-side, variable drive health determination
US9037921B1 (en) * 2012-03-29 2015-05-19 Amazon Technologies, Inc. Variable drive health determination and data placement
US8972799B1 (en) 2012-03-29 2015-03-03 Amazon Technologies, Inc. Variable drive diagnostics
US9792192B1 (en) * 2012-03-29 2017-10-17 Amazon Technologies, Inc. Client-side, variable drive health determination
US9513845B2 (en) * 2012-03-30 2016-12-06 Violin Memory Inc. Memory module virtualization
US9020890B2 (en) 2012-03-30 2015-04-28 Commvault Systems, Inc. Smart archiving and data previewing for mobile devices
JP5857849B2 (ja) * 2012-03-30 2016-02-10 富士通株式会社 ストレージ装置、起動装置決定方法およびプログラム
JP2014056445A (ja) * 2012-09-12 2014-03-27 Fujitsu Ltd ストレージ装置、ストレージ制御プログラムおよびストレージ制御方法
US9936020B2 (en) * 2012-10-30 2018-04-03 International Business Machines Corporation Access control of data in a dispersed storage network
US9836492B1 (en) * 2012-11-01 2017-12-05 Amazon Technologies, Inc. Variable sized partitioning for distributed hash tables
US9633022B2 (en) 2012-12-28 2017-04-25 Commvault Systems, Inc. Backup and restoration for a deduplicated file system
US9703794B2 (en) * 2013-01-02 2017-07-11 International Business Machines Corporation Reducing fragmentation in compressed journal storage
CN103942112B (zh) * 2013-01-22 2018-06-15 深圳市腾讯计算机系统有限公司 磁盘容错方法、装置及系统
EP2951700A4 (en) 2013-01-30 2016-08-31 Hewlett Packard Entpr Dev Lp NONVOLATILE MEMORY WRITING MECHANISM
US9411736B2 (en) 2013-03-13 2016-08-09 Drobo, Inc. System and method for an accelerator cache based on memory availability and usage
US9417822B1 (en) * 2013-03-15 2016-08-16 Western Digital Technologies, Inc. Internal storage manager for RAID devices
US9542126B2 (en) * 2013-04-22 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Redundant array of independent disks systems that utilize spans with different storage device counts for a logical volume
JP6212934B2 (ja) * 2013-05-07 2017-10-18 富士通株式会社 ストレージシステム、情報処理装置の制御プログラム、およびストレージシステムの制御方法
US9760596B2 (en) * 2013-05-13 2017-09-12 Amazon Technologies, Inc. Transaction ordering
WO2014185916A1 (en) 2013-05-16 2014-11-20 Hewlett-Packard Development Company, L.P. Selecting a store for deduplicated data
US10592347B2 (en) 2013-05-16 2020-03-17 Hewlett Packard Enterprise Development Lp Selecting a store for deduplicated data
US9213611B2 (en) 2013-07-24 2015-12-15 Western Digital Technologies, Inc. Automatic raid mirroring when adding a second boot drive
US9514002B2 (en) * 2013-09-13 2016-12-06 Vmware, Inc. Incremental backups using retired snapshots
US9772907B2 (en) 2013-09-13 2017-09-26 Vmware, Inc. Incremental backups using retired snapshots
CN104572656B (zh) * 2013-10-12 2019-02-19 华为技术有限公司 一种磁盘镜像空间回收的方法及装置
US9495292B1 (en) * 2013-12-31 2016-11-15 EMC IP Holding Company, LLC Cache management
JP5954338B2 (ja) * 2014-01-14 2016-07-20 横河電機株式会社 計装システム及びその保守方法
US9454434B2 (en) 2014-01-17 2016-09-27 Netapp, Inc. File system driven raid rebuild technique
US10324897B2 (en) 2014-01-27 2019-06-18 Commvault Systems, Inc. Techniques for serving archived electronic mail
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
JP6244974B2 (ja) * 2014-02-24 2017-12-13 富士通株式会社 ストレージ装置、及びストレージ装置の制御方法
US9817721B1 (en) * 2014-03-14 2017-11-14 Sanmina Corporation High availability management techniques for cluster resources
US10496671B1 (en) * 2014-05-05 2019-12-03 EMC IP Holding Company LLC Zone consistency
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US9612952B2 (en) * 2014-06-04 2017-04-04 Pure Storage, Inc. Automatically reconfiguring a storage memory topology
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
GB2527529B (en) * 2014-06-24 2021-07-14 Advanced Risc Mach Ltd A device controller and method for performing a plurality of write transactions atomically within a non-volatile data storage device
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US10114757B2 (en) 2014-07-02 2018-10-30 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US10303570B2 (en) * 2014-10-17 2019-05-28 Hitachi, Ltd. Method and apparatus for managing data recovery of distributed storage system
US10922276B2 (en) * 2014-11-10 2021-02-16 Hewlett Packard Enterprise Development Lp Online file system check
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US10013359B2 (en) * 2014-12-24 2018-07-03 University Of New Hampshire Redundant disk array storage system and method using heterogeneous disks and a lookup table
AU2014415350B2 (en) * 2014-12-27 2019-02-21 Huawei Technologies Co., Ltd. Data processing method, apparatus and system
US10482008B2 (en) 2015-01-23 2019-11-19 Hewlett Packard Enterprise Development Lp Aligned variable reclamation
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
US9948615B1 (en) 2015-03-16 2018-04-17 Pure Storage, Inc. Increased storage unit encryption based on loss of trust
US11294893B2 (en) 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
US9762460B2 (en) 2015-03-24 2017-09-12 Netapp, Inc. Providing continuous context for operational information of a storage system
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US10324914B2 (en) 2015-05-20 2019-06-18 Commvalut Systems, Inc. Handling user queries against production and archive storage systems, such as for enterprise customers having large and/or numerous files
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US9690660B1 (en) * 2015-06-03 2017-06-27 EMC IP Holding Company LLC Spare selection in a declustered RAID system
US10097636B1 (en) 2015-06-15 2018-10-09 Western Digital Technologies, Inc. Data storage device docking station
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US11232079B2 (en) 2015-07-16 2022-01-25 Pure Storage, Inc. Efficient distribution of large directories
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US10289326B2 (en) 2015-09-14 2019-05-14 HGST Netherlands, B.V. Optimized data layout for object store system
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
US10073625B2 (en) * 2016-01-06 2018-09-11 HGST Netherlands B.V. Variable-RPM hard disk drive control
US10545681B2 (en) 2016-02-08 2020-01-28 International Business Machines Corporation Asymmetric storage data distribution
US10152497B2 (en) * 2016-02-24 2018-12-11 Salesforce.Com, Inc. Bulk deduplication detection
US10901996B2 (en) 2016-02-24 2021-01-26 Salesforce.Com, Inc. Optimized subset processing for de-duplication
US10956450B2 (en) 2016-03-28 2021-03-23 Salesforce.Com, Inc. Dense subset clustering
US10949395B2 (en) 2016-03-30 2021-03-16 Salesforce.Com, Inc. Cross objects de-duplication
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US10635344B2 (en) 2016-04-27 2020-04-28 International Business Machines Corporation Dynamic spare storage allocation by creating logical volumes from unused space allocated for user data of a raid storage
KR101734160B1 (ko) * 2016-04-28 2017-05-11 주식회사 디에이아이오 작업부하 편중을 완화하는 저장 장치
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US11231858B2 (en) 2016-05-19 2022-01-25 Pure Storage, Inc. Dynamically configuring a storage system to facilitate independent scaling of resources
US10691567B2 (en) 2016-06-03 2020-06-23 Pure Storage, Inc. Dynamically forming a failure domain in a storage system that includes a plurality of blades
US11706895B2 (en) 2016-07-19 2023-07-18 Pure Storage, Inc. Independent scaling of compute resources and storage resources in a storage system
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US10216420B1 (en) 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US10296498B2 (en) * 2016-08-23 2019-05-21 Oracle International Corporation Coordinated hash table indexes to facilitate reducing database reconfiguration time
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
US10387077B2 (en) * 2016-11-23 2019-08-20 Netflix, Inc. Techniques for efficiently accessing values spanning slabs of memory
US11475006B2 (en) 2016-12-02 2022-10-18 Oracle International Corporation Query and change propagation scheduling for heterogeneous database systems
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US10331902B2 (en) 2016-12-29 2019-06-25 Noblis, Inc. Data loss prevention
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
CN106934014B (zh) * 2017-03-10 2021-03-19 山东省科学院情报研究所 一种基于Hadoop的网络数据挖掘与分析平台及其方法
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
JP2018181213A (ja) * 2017-04-20 2018-11-15 富士通株式会社 ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
CN107180018B (zh) * 2017-05-17 2018-11-20 上海兆芯集成电路有限公司 基于散列的加速压缩方法以及使用此方法的装置
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US10459809B2 (en) * 2017-06-30 2019-10-29 Intel Corporation Stacked memory chip device with enhanced data protection capability
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
US10592478B1 (en) 2017-10-23 2020-03-17 EMC IP Holding Company LLC System and method for reverse replication
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10990566B1 (en) 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
US12001688B2 (en) 2019-04-29 2024-06-04 Pure Storage, Inc. Utilizing data views to optimize secure data access in a storage system
US11995336B2 (en) 2018-04-25 2024-05-28 Pure Storage, Inc. Bucket views
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
CN110413216B (zh) * 2018-04-28 2023-07-18 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机程序产品
US10817197B2 (en) * 2018-05-04 2020-10-27 Microsoft Technology Licensing, Llc Data partitioning in a distributed storage system
US11120046B2 (en) 2018-05-04 2021-09-14 Microsoft Technology Licensing Llc Data replication in a distributed storage system
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US11093444B2 (en) * 2018-07-02 2021-08-17 Weka.IO Ltd. Access redirection in a distributive file system
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US10454498B1 (en) 2018-10-18 2019-10-22 Pure Storage, Inc. Fully pipelined hardware engine design for fast and efficient inline lossless data compression
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
CN109783398B (zh) * 2019-01-18 2020-09-15 上海海事大学 一种基于相关感知页面级ftl固态硬盘性能优化方法
US11171671B2 (en) * 2019-02-25 2021-11-09 Samsung Electronics Co., Ltd. Reducing vulnerability window in key value storage server without sacrificing usable capacity
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
KR20210041655A (ko) 2019-10-07 2021-04-16 삼성전자주식회사 메모리 칩, 그것을 포함하는 메모리 시스템 및 그것의 동작 방법
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US12001684B2 (en) 2019-12-12 2024-06-04 Pure Storage, Inc. Optimizing dynamic power loss protection adjustment in a storage system
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11775378B2 (en) 2019-12-16 2023-10-03 Micron Technology, Inc. Memory health status reporting
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11256587B2 (en) 2020-04-17 2022-02-22 Pure Storage, Inc. Intelligent access to a storage device
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11481593B2 (en) * 2020-06-22 2022-10-25 Western Digital Technologies, Inc. Color changing storage device housing
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
US11474900B2 (en) * 2020-08-04 2022-10-18 International Business Machines Corporation Dynamic rebuild capability in redundant array of independent disks (RAID) arrays using compressing drives
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US11907068B2 (en) * 2021-02-16 2024-02-20 Nyriad, Inc. Read request response for reconstructed data in a degraded drive
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US11726879B2 (en) * 2021-07-12 2023-08-15 Dell Products L.P. Multiple block error correction in an information handling system
CN113284039B (zh) * 2021-07-16 2021-10-08 杭州安恒信息技术股份有限公司 一种位图管理方法、装置、设备及可读存储介质
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus
US11994723B2 (en) 2021-12-30 2024-05-28 Pure Storage, Inc. Ribbon cable alignment apparatus
CN115562595B (zh) * 2022-12-06 2023-02-28 苏州浪潮智能科技有限公司 一种卷创建方法及装置、卷读写方法及装置、电子设备
CN117931247A (zh) * 2024-03-25 2024-04-26 青岛国创智能家电研究院有限公司 基于泛终端os的智能家电交互方法

Family Cites Families (172)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3370604A (en) * 1964-12-16 1968-02-27 Hudson Eugineering Company Self-priming liquid pumping system and primer valve
US3766534A (en) 1972-11-15 1973-10-16 Ibm Shift register storage unit with multi-dimensional dynamic ordering
US4221003A (en) * 1978-05-04 1980-09-02 International Business Machines Corporation Bubble domain relational data base system
US4288860A (en) * 1979-08-02 1981-09-08 Sperry Corporation Dynamic storage synchronizer using variable oscillator and FIFO buffer
US4607346A (en) * 1983-03-28 1986-08-19 International Business Machines Corporation Apparatus and method for placing data on a partitioned direct access storage device
JP2569010B2 (ja) * 1986-05-21 1997-01-08 株式会社日立製作所 半導体メモリ
US4864511A (en) 1987-01-27 1989-09-05 Storage Technology Corporation Automated cartridge system
US4833554A (en) * 1987-02-25 1989-05-23 Tandon Corporation Hard disk drive module and receptacle therefor
US4914656A (en) 1988-06-28 1990-04-03 Storage Technology Corporation Disk drive memory
US4989205A (en) 1988-06-28 1991-01-29 Storage Technology Corporation Disk drive memory
US4989206A (en) * 1988-06-28 1991-01-29 Storage Technology Corporation Disk drive memory
US5077736A (en) * 1988-06-28 1991-12-31 Storage Technology Corporation Disk drive memory
US4989506A (en) * 1988-11-09 1991-02-05 Whirlpool Corporation Charcoal filter system for a trash compactor
DE3911806A1 (de) 1989-04-11 1990-10-18 Mayer Fa Karl Spulmaschine mit mehreren spulstellen
US5144692A (en) 1989-05-17 1992-09-01 International Business Machines Corporation System for controlling access by first system to portion of main memory dedicated exclusively to second system to facilitate input/output processing via first system
US5371885A (en) * 1989-08-29 1994-12-06 Microsoft Corporation High performance file system
US5101492A (en) 1989-11-03 1992-03-31 Compaq Computer Corporation Data redundancy and recovery protection
JPH03266039A (ja) 1990-03-16 1991-11-27 Fujitsu Ltd フリーフォーマットデータリンク処理方式
US5193184A (en) * 1990-06-18 1993-03-09 Storage Technology Corporation Deleted data file space release system for a dynamically mapped virtual data storage subsystem
JPH0495121A (ja) 1990-08-08 1992-03-27 Nec Corp ファイル二重化方式
US5317728A (en) 1990-09-07 1994-05-31 International Business Machines Corporation Storage management of a first file system using a second file system containing surrogate files and catalog management information
US5210866A (en) * 1990-09-12 1993-05-11 Storage Technology Corporation Incremental disk backup system for a dynamically mapped data storage subsystem
US5269011A (en) 1990-09-24 1993-12-07 Emc Corporation Dynamically reconfigurable data storage system with storage system controllers selectively operable as channel adapters on storage device adapters
US5390313A (en) 1990-09-24 1995-02-14 Emc Corporation Data storage system with data mirroring and reduced access time data retrieval
JP3098584B2 (ja) * 1990-09-28 2000-10-16 ゼロックス コーポレイション 電子複写システムにおける障害除去及び回復方法及び装置
US5155835A (en) 1990-11-19 1992-10-13 Storage Technology Corporation Multilevel, hierarchical, dynamically mapped data storage subsystem
US5345584A (en) * 1991-03-11 1994-09-06 Laclead Enterprises System for managing data storage based on vector-summed size-frequency vectors for data sets, devices, and residual storage on devices
US5239659A (en) 1991-06-19 1993-08-24 Storage Technology Corporation Phantom duplex copy group apparatus for a disk drive array data storge subsystem
JPH0512104A (ja) * 1991-07-04 1993-01-22 Seikosha Co Ltd データ記憶制御装置
EP0601068B1 (en) 1991-08-19 2002-10-16 Energy Conversion Devices, Inc. Electrically erasable, directly overwritable, multibit single cell memory elements and arrays fabricated therefrom
US5325505A (en) 1991-09-04 1994-06-28 Storage Technology Corporation Intelligent storage manager for data storage apparatus having simulation capability
US5257379A (en) 1991-09-04 1993-10-26 International Business Machines Corporation Establishing synchronization of hardware and software I/O configuration definitions
US5139184A (en) * 1991-10-31 1992-08-18 Product Development Partners Garment hanger shoulder guard
US5323489A (en) 1991-11-14 1994-06-21 Bird Peter L Method and apparatus employing lookahead to reduce memory bank contention for decoupled operand references
JP3160106B2 (ja) * 1991-12-23 2001-04-23 ヒュンダイ エレクトロニクス アメリカ ディスクアレーの区分け方法
US5454080A (en) 1992-02-10 1995-09-26 International Business Machines Corporation Removable hard disk drive system with circuit for hot insertion and removal responsive to contacts of zero-insertion-force connector on the lateral side of the drive
US5410737A (en) 1992-04-27 1995-04-25 American Pcs L.P. Frequency agile sharing technology (FAST) for a personal communications service system
US5381539A (en) * 1992-06-04 1995-01-10 Emc Corporation System and method for dynamically controlling cache management
US5596736A (en) * 1992-07-22 1997-01-21 Fujitsu Limited Data transfers to a backing store of a dynamically mapped data storage system in which data has nonsequential logical addresses
US5535335A (en) * 1992-12-22 1996-07-09 International Business Machines Corporation Method and system for reporting the status of an aggregate resource residing in a network of interconnected real resources
JPH06230903A (ja) 1993-01-31 1994-08-19 Hitachi Ltd ディスクアレイ装置の障害回復方法、およびディスクアレイ装置
EP0612015A1 (en) * 1993-02-16 1994-08-24 International Business Machines Corporation Improved disk array system having special parity groups for data blocks with high update activity
US5463772A (en) * 1993-04-23 1995-10-31 Hewlett-Packard Company Transparent peripheral file systems with on-board compression, decompression, and space management
US5392244A (en) * 1993-08-19 1995-02-21 Hewlett-Packard Company Memory systems with data storage redundancy management
JP2912802B2 (ja) * 1993-10-14 1999-06-28 富士通株式会社 ディスクアレイ装置の故障対処方法および装置
JPH07130139A (ja) 1993-11-01 1995-05-19 Fuji Electric Co Ltd ディスク記憶装置とそのデータ記録,再生方法
US5546558A (en) * 1994-06-07 1996-08-13 Hewlett-Packard Company Memory system with hierarchic disk array and memory map store for persistent storage of virtual mapping information
DE69533764T2 (de) 1994-06-22 2005-12-01 Hewlett-Packard Development Co., L.P., Houston Verfahren zum Gebrauch von Speicherplatten unterschiedlicher Inhalte in einem Einzelvolumen einer hierarchischen Speicherplattenanordnung
US5479653A (en) 1994-07-14 1995-12-26 Dellusa, L.P. Disk array apparatus and method which supports compound raid configurations and spareless hot sparing
JPH0863298A (ja) * 1994-08-18 1996-03-08 Hitachi Ltd ディスクアレイ装置
US5987528A (en) * 1994-09-09 1999-11-16 Compaq Computer Corporation Controlling the flow of electronic information through computer hardware
JP2953960B2 (ja) 1994-09-14 1999-09-27 株式会社ピーエフユー ディスクアレイ装置
US5463776A (en) 1994-09-22 1995-10-31 Hewlett-Packard Company Storage management system for concurrent generation and fair allocation of disk space among competing requests
US5615352A (en) * 1994-10-05 1997-03-25 Hewlett-Packard Company Methods for adding storage disks to a hierarchic disk array while maintaining data availability
US5664187A (en) 1994-10-26 1997-09-02 Hewlett-Packard Company Method and system for selecting data for migration in a hierarchic data storage system using frequency distribution tables
US5524204A (en) * 1994-11-03 1996-06-04 International Business Machines Corporation Method and apparatus for dynamically expanding a redundant array of disk drives
JPH08190461A (ja) 1995-01-10 1996-07-23 Hitachi Ltd ディスクアレイシステム
JP3547877B2 (ja) 1995-01-11 2004-07-28 株式会社東芝 磁気記録再生装置
US5548712A (en) * 1995-01-19 1996-08-20 Hewlett-Packard Company Data storage system and method for managing asynchronous attachment and detachment of storage disks
US5542065A (en) * 1995-02-10 1996-07-30 Hewlett-Packard Company Methods for using non-contiguously reserved storage space for data migration in a redundant hierarchic data storage system
US5666512A (en) * 1995-02-10 1997-09-09 Hewlett-Packard Company Disk array having hot spare resources and methods for using hot spare resources to store user data
US5537534A (en) * 1995-02-10 1996-07-16 Hewlett-Packard Company Disk array having redundant storage and methods for incrementally generating redundancy as data is written to the disk array
US5604902A (en) * 1995-02-16 1997-02-18 Hewlett-Packard Company Hole plugging garbage collection for a data storage system
JP3358687B2 (ja) 1995-03-13 2002-12-24 株式会社日立製作所 ディスクアレイ装置
US5875456A (en) * 1995-08-17 1999-02-23 Nstor Corporation Storage device array and methods for striping and unstriping data and for adding and removing disks online to/from a raid storage array
JPH0962460A (ja) 1995-08-23 1997-03-07 Hitachi Ltd 情報処理システム
JP4095121B2 (ja) 1995-08-31 2008-06-04 キヤノン株式会社 図形処理装置及び図形処理方法
US5809224A (en) * 1995-10-13 1998-09-15 Compaq Computer Corporation On-line disk array reconfiguration
JPH09219003A (ja) 1996-02-13 1997-08-19 Toshiba Corp ディスク記録再生装置及びそれに適用するマルチヘッド方式の磁気ヘッド装置
JPH09269871A (ja) 1996-03-29 1997-10-14 Mitsubishi Electric Corp ディスクアレイ装置におけるデータ再冗長化方式
JPH09288547A (ja) * 1996-04-22 1997-11-04 Hitachi Inf Technol:Kk アレイ型記憶装置
US5881311A (en) 1996-06-05 1999-03-09 Fastor Technologies, Inc. Data storage subsystem with block based data management
JPH1011906A (ja) 1996-06-24 1998-01-16 Hitachi Ltd 磁気ディスク装置
US5864655A (en) * 1996-09-09 1999-01-26 International Business Machines Corporation Managing removable media in raid and rail environments
US5896256A (en) * 1997-01-06 1999-04-20 Sony Corporation Visual capacity indicator for data recording systems
US5825616A (en) * 1997-01-21 1998-10-20 Dell Usa, L.P. Media module locking and ejecting mechanism
JPH10260788A (ja) 1997-03-19 1998-09-29 Toshiba Corp ディスクアレイシステム
US5832235A (en) * 1997-03-26 1998-11-03 Hewlett-Packard Co. System and method for pattern matching using checksums
US7389312B2 (en) 1997-04-28 2008-06-17 Emc Corporation Mirroring network data to establish virtual storage area network
JPH1139102A (ja) 1997-07-24 1999-02-12 Nec Eng Ltd 磁気ディスク装置
DE19882609T1 (de) * 1997-08-15 2000-08-24 Seagate Technology Ausbildung von Redundanz bei einer objektorientierten Datenspeichervorrichtung
US6253300B1 (en) * 1997-08-20 2001-06-26 Powerquest Corporation Computer partition manipulation during imaging
US6016553A (en) 1997-09-05 2000-01-18 Wild File, Inc. Method, software and apparatus for saving, using and recovering data
JPH1186452A (ja) 1997-09-09 1999-03-30 Toshiba Corp ディスク記憶装置
US6032148A (en) * 1997-09-15 2000-02-29 Hewlett-Packard Company Multilevel storage system with hybrid data compression
EP1213722A3 (en) 1997-09-17 2005-03-09 Matsushita Electric Industrial Co., Ltd. Optical disc recording apparatus, computer-readable recording medium recording a file management program, and optical disc
US6219693B1 (en) 1997-11-04 2001-04-17 Adaptec, Inc. File array storage architecture having file system distributed across a data processing platform
US6009478A (en) 1997-11-04 1999-12-28 Adaptec, Inc. File array communications interface for communicating between a host computer and an adapter
JP3618529B2 (ja) 1997-11-04 2005-02-09 富士通株式会社 ディスクアレイ装置
US5986881A (en) 1997-11-17 1999-11-16 Hon Hai Precision Ind. Co., Ltd. Disk driver cage assembly with locking device
US5953729A (en) 1997-12-23 1999-09-14 Microsoft Corporation Using sparse file technology to stage data that will then be stored in remote storage
JP3649011B2 (ja) * 1998-01-09 2005-05-18 株式会社日立製作所 コンピュータシステム
US6151685A (en) * 1998-05-15 2000-11-21 International Business Machines Corporation System and method for recovering a segment directory for a log structured array
JP2000020248A (ja) 1998-06-26 2000-01-21 Nippon Digital Kenkyusho:Kk ディスクの障害回復方法、ディスクドライバおよび記録媒体
JP4293648B2 (ja) 1998-06-26 2009-07-08 株式会社日本デジタル研究所 ディスク装置におけるデータ保護方法、ディスク装置、およびプログラムを記録したコンピュータに読み取り可能な記録媒体
WO2000017874A1 (fr) 1998-09-18 2000-03-30 Kabushiki Kaisha Toshiba Procede d'enregistrement d'informations, dispositif d'enregistrement d'informations et support d'informations
US6606585B1 (en) 1998-10-13 2003-08-12 Hewlett-Packard Development Company, L.P. Acceptability testing for capacity planning of data storage system
US6119174A (en) 1998-10-13 2000-09-12 Hewlett-Packard Company Methods and apparatus for implementing quality-of-service guarantees in data storage systems
US6321317B1 (en) 1998-12-16 2001-11-20 Hewlett-Packard Co Apparatus for and method of multi-dimensional constraint optimization in storage system configuration
US6542961B1 (en) * 1998-12-22 2003-04-01 Hitachi, Ltd. Disk storage system including a switch
WO2000058837A1 (fr) * 1999-03-26 2000-10-05 Sony Corporation Gestion de fichiers, enregistrement/reproduction de donnees et dispositifs a cet effet
US6591339B1 (en) 1999-05-03 2003-07-08 3Ware, Inc. Methods and systems for selecting block sizes for use with disk arrays
US6370604B1 (en) 1999-05-07 2002-04-09 Intel Corporation Hot replacement of storage device in serial array of storage devices
US6754664B1 (en) * 1999-07-02 2004-06-22 Microsoft Corporation Schema-based computer system health monitoring
US6477544B1 (en) 1999-07-16 2002-11-05 Microsoft Corporation Single instance store for file systems
JP4040797B2 (ja) 1999-07-19 2008-01-30 株式会社東芝 ディスク制御装置および記録媒体
JP2001043117A (ja) * 1999-07-28 2001-02-16 Sharp Corp ディスク媒体管理方法
US6546499B1 (en) * 1999-10-14 2003-04-08 International Business Machines Corporation Redundant array of inexpensive platters (RAIP)
WO2001040925A1 (fr) 1999-12-02 2001-06-07 Fujitsu Limited Batterie de disques et procede d'extension de sa capacite
US6418449B1 (en) * 2000-01-06 2002-07-09 Inventec Corporation Method of cloning the file system of a window web operating system by using a bitmap file
JP2001206098A (ja) 2000-01-21 2001-07-31 Toyota Motor Corp 車両走行制御装置
US6615365B1 (en) * 2000-03-11 2003-09-02 Powerquest Corporation Storing a computer disk image within an imaged partition
US7216251B2 (en) 2000-02-19 2007-05-08 Powerquest Corporation Computer imaging recovery without a working partition or a secondary medium
TW512318B (en) * 2000-03-01 2002-12-01 Matsushita Electric Ind Co Ltd AV data recorder and its method, disk recorded by AV data recorder and the method
US6606651B1 (en) * 2000-05-03 2003-08-12 Datacore Software Corporation Apparatus and method for providing direct local access to file level data in client disk images within storage area networks
US6606561B2 (en) * 2000-05-17 2003-08-12 Omega Patents, L.L.C. Vehicle tracker including input/output features and related methods
US6892221B2 (en) * 2000-05-19 2005-05-10 Centerbeam Data backup
US6711572B2 (en) * 2000-06-14 2004-03-23 Xosoft Inc. File system for distributing content in a data network and related methods
US6779094B2 (en) 2000-06-19 2004-08-17 Storage Technology Corporation Apparatus and method for instant copy of data by writing new data to an additional physical storage area
US6851024B1 (en) * 2000-08-17 2005-02-01 Hewlett-Packard Development Company, L.P. Exclusive caching in computer systems
US20040236798A1 (en) * 2001-09-11 2004-11-25 Sudhir Srinivasan Migration of control in a distributed segmented file system
US6693766B1 (en) * 2000-09-21 2004-02-17 Hewlett-Packard Development Company, L.P. Disk drive system with hybrid surface-based data mapping and method of operation thereof
JP2002100128A (ja) 2000-09-26 2002-04-05 Minebea Co Ltd 磁気ディスク装置
US6745284B1 (en) * 2000-10-02 2004-06-01 Sun Microsystems, Inc. Data storage subsystem including a storage disk array employing dynamic data striping
GB0025226D0 (en) * 2000-10-14 2000-11-29 Ibm Data storage system and method of storing data
US6862151B2 (en) * 2000-11-15 2005-03-01 Seagate Technologies Llc Method and apparatus for read error recovery
JP2002175157A (ja) 2000-12-08 2002-06-21 Toshiba Corp ディスクアレイ装置
US6865527B2 (en) * 2000-12-18 2005-03-08 Hewlett-Packard Development Company, L.P. Method and apparatus for computing data storage assignments
KR100388498B1 (ko) * 2000-12-30 2003-06-25 한국전자통신연구원 복수 개의 레이드를 구비한 계층적 레이드 시스템
US6990547B2 (en) * 2001-01-29 2006-01-24 Adaptec, Inc. Replacing file system processors by hot swapping
US20020174295A1 (en) 2001-01-29 2002-11-21 Ulrich Thomas R. Enhanced file system failure tolerance
US20020138559A1 (en) * 2001-01-29 2002-09-26 Ulrich Thomas R. Dynamically distributed file system
GB2407896B (en) * 2001-01-31 2005-06-22 Hewlett Packard Co Storage apparatus
US6795895B2 (en) * 2001-03-07 2004-09-21 Canopy Group Dual axis RAID systems for enhanced bandwidth and reliability
JP2002288014A (ja) 2001-03-27 2002-10-04 Fujitsu Ltd ファイル管理システム及びファイルデータ書込方法
US6865640B2 (en) * 2001-04-26 2005-03-08 International Business Machines Corporation Hard disk drive library
US6934673B2 (en) * 2001-05-25 2005-08-23 Hewlett-Packard Development Company, L.P. Method and apparatus for predicting multi-part performability
US20020194427A1 (en) * 2001-06-18 2002-12-19 Ebrahim Hashemi System and method for storing data and redundancy information in independent slices of a storage device
KR100392382B1 (ko) * 2001-07-27 2003-07-23 한국전자통신연구원 동적 크기 변경 및 메타 데이터 양의 최소화를 위한 논리볼륨 관리 방법
US7146524B2 (en) 2001-08-03 2006-12-05 Isilon Systems, Inc. Systems and methods for providing a distributed file system incorporating a virtual hot spare
US6996668B2 (en) 2001-08-06 2006-02-07 Seagate Technology Llc Synchronized mirrored data in a data storage device
US6978259B1 (en) 2001-10-23 2005-12-20 Hewlett-Packard Development Company, L.P. Automated system adaptation technique particularly for data storage systems
US6728837B2 (en) * 2001-11-02 2004-04-27 Hewlett-Packard Development Company, L.P. Adaptive data insertion for caching
JP2003150323A (ja) 2001-11-13 2003-05-23 Hitachi Ltd 情報記憶装置
US7111117B2 (en) * 2001-12-19 2006-09-19 Broadcom Corporation Expansion of RAID subsystems using spare space with immediate access to new space
US6644556B2 (en) * 2002-01-18 2003-11-11 Hewlett-Packard Development Company, L.P. Storage device including storage space indication
JP4259800B2 (ja) 2002-01-31 2009-04-30 三菱電機株式会社 データ格納装置、データ管理方法及びプログラム
JP3590390B2 (ja) * 2002-03-13 2004-11-17 株式会社東芝 ディスク記憶装置における自己ミラーリング方法及び同方法を適用するディスク記憶装置
US6875011B2 (en) * 2002-03-20 2005-04-05 Masasuke Soeda Lighter and flint holder
US7072910B2 (en) * 2002-03-22 2006-07-04 Network Appliance, Inc. File folding technique
JP2003316525A (ja) 2002-04-26 2003-11-07 Seiko Epson Corp ディスクアレイ制御装置
CN1203433C (zh) 2002-06-26 2005-05-25 联想(北京)有限公司 嵌入式系统的数据存放及其查找组合方法
JP4246979B2 (ja) 2002-09-05 2009-04-02 株式会社日立製作所 装置管理システム
US20040078641A1 (en) * 2002-09-23 2004-04-22 Hewlett-Packard Company Operating system-independent file restore from disk image
JP2004118946A (ja) 2002-09-26 2004-04-15 Hitachi Ltd ディスクアレイ装置、記憶デバイスユニット、ディスクアレイ装置の制御方法、及びプログラム
US6711676B1 (en) * 2002-10-15 2004-03-23 Zomaya Group, Inc. System and method for providing computer upgrade information
US6857011B2 (en) 2002-10-31 2005-02-15 Paragon Development Systems, Inc. Method of remote imaging
JP2004213064A (ja) 2002-12-26 2004-07-29 Fujitsu Ltd Raid装置及びその論理デバイス拡張方法
JPWO2004075175A1 (ja) 2003-02-19 2006-06-01 富士通株式会社 磁気ディスク装置、そのアクセス制御方法、記録媒体
US20040173544A1 (en) * 2003-03-04 2004-09-09 Feng-Ming Chen Hard disc piling/assembling member of rack mount
JP4267353B2 (ja) * 2003-03-28 2009-05-27 株式会社日立製作所 データ移行支援システム、および、データ移行支援方法
US6912482B2 (en) * 2003-09-11 2005-06-28 Veritas Operating Corporation Data storage analysis mechanism
US7266638B2 (en) * 2003-10-06 2007-09-04 Dell Products L.P. System, method and software for reporting logical volume information on network attached storage appliances
JP4493321B2 (ja) 2003-11-19 2010-06-30 株式会社日立製作所 ディスクアレイ装置及びデータ退避方法
JP4634049B2 (ja) * 2004-02-04 2011-02-16 株式会社日立製作所 ディスクアレイ装置における異常通知制御
US7334156B2 (en) 2004-02-13 2008-02-19 Tandberg Data Corp. Method and apparatus for RAID conversion
US7523140B2 (en) 2004-03-01 2009-04-21 Sandisk Il Ltd. File system that manages files according to content
US7188212B2 (en) 2004-05-06 2007-03-06 International Business Machines Corporation Method and system for storing data in an array of storage devices with additional and autonomic protection
US7536701B2 (en) 2004-10-13 2009-05-19 Certance Llc Lockable ejection system and method
EP1825373A2 (en) * 2004-11-05 2007-08-29 Data Robotics Incorporated Dynamically expandable and contractible fault-tolerant storage system with virtual hot spare
JP4690783B2 (ja) * 2005-06-08 2011-06-01 株式会社日立製作所 ボリューム管理システムおよびその方法
US8215727B2 (en) * 2007-04-13 2012-07-10 Drobo, Inc. Carrierless storage system enclosure with ejection mechanism

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150036018A (ko) * 2012-06-07 2015-04-07 바이올린 메모리 인코포레이티드 메모리 시스템 관리

Also Published As

Publication number Publication date
WO2006050455A8 (en) 2006-12-28
JP2008521074A (ja) 2008-06-19
WO2006050455A2 (en) 2006-05-11
US20110035565A1 (en) 2011-02-10
CA2590875A1 (en) 2006-05-18
WO2006052888A3 (en) 2006-11-09
WO2006052830A3 (en) 2006-09-21
CA2590361A1 (en) 2006-05-18
CN104699420A (zh) 2015-06-10
JP2008519356A (ja) 2008-06-05
US20060112222A1 (en) 2006-05-25
WO2006052830A2 (en) 2006-05-18
US8156303B2 (en) 2012-04-10
US9043639B2 (en) 2015-05-26
EP1825372A2 (en) 2007-08-29
WO2006050455A3 (en) 2006-09-21
WO2006052829A3 (en) 2006-10-19
CN101872319A (zh) 2010-10-27
EP1825373A2 (en) 2007-08-29
WO2006052888A8 (en) 2006-12-28
WO2006052829A2 (en) 2006-05-18
EP1815337A2 (en) 2007-08-08
US20060129875A1 (en) 2006-06-15
JP2011198383A (ja) 2011-10-06
JP5055125B2 (ja) 2012-10-24
AU2005304792A1 (en) 2006-05-18
CA2590361C (en) 2012-01-03
EP1815340A2 (en) 2007-08-08
AU2005304792B2 (en) 2010-07-08
JP4870678B2 (ja) 2012-02-08
KR101146484B1 (ko) 2012-07-05
JP4950897B2 (ja) 2012-06-13
US7814272B2 (en) 2010-10-12
AU2005304759A1 (en) 2006-05-18
EP1815337B1 (en) 2013-05-15
US20060143380A1 (en) 2006-06-29
US20060174157A1 (en) 2006-08-03
JP2008519350A (ja) 2008-06-05
US7818531B2 (en) 2010-10-19
CA2590875C (en) 2011-09-13
JP5116151B2 (ja) 2013-01-09
WO2006050455A9 (en) 2006-07-27
US7814273B2 (en) 2010-10-12
AU2005304759B2 (en) 2012-05-17
WO2006052888A2 (en) 2006-05-18
AU2005304759A2 (en) 2008-04-17
JP2008519359A (ja) 2008-06-05

Similar Documents

Publication Publication Date Title
KR101146484B1 (ko) 저장 시스템 상태 지시자 방법 및 저장 시스템
KR101362561B1 (ko) 파일 시스템 인식 블록 저장 시스템, 장치 및 방법
US7873782B2 (en) Filesystem-aware block storage system, apparatus, and method

Legal Events

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

Payment date: 20150427

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee