KR100564664B1 - 데이터 저장 장치용 하이브리드 데이터 저장과 재구성시스템 및 방법 - Google Patents

데이터 저장 장치용 하이브리드 데이터 저장과 재구성시스템 및 방법 Download PDF

Info

Publication number
KR100564664B1
KR100564664B1 KR1020007003816A KR20007003816A KR100564664B1 KR 100564664 B1 KR100564664 B1 KR 100564664B1 KR 1020007003816 A KR1020007003816 A KR 1020007003816A KR 20007003816 A KR20007003816 A KR 20007003816A KR 100564664 B1 KR100564664 B1 KR 100564664B1
Authority
KR
South Korea
Prior art keywords
data
block
parity
information
drive
Prior art date
Application number
KR1020007003816A
Other languages
English (en)
Other versions
KR20010015722A (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 KR20010015722A publication Critical patent/KR20010015722A/ko
Application granted granted Critical
Publication of KR100564664B1 publication Critical patent/KR100564664B1/ko

Links

Images

Classifications

    • 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/2061Error 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 combined with de-clustering of data
    • 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/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
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1461Backup scheduling policy
    • 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/103Hybrid, i.e. RAID systems with parity comprising a mix of RAID types

Abstract

본 발명은 데이터 저장 시스템에 대한 하이브리드 데이터 재구성 시스템(600) 및 방법(630/660)에 관한 것이다. 데이터(614/616)는, 중요한 데이터가 높은 여유도를 가지는 체계(618)에 따라 저장되도록, 두 개 이상의 리던던시 체계(618/620) 중 하나에 따라 선택적으로 저장된다.

Description

데이터 저장 장치용 하이브리드 데이터 저장과 재구성 시스템 및 방법 {HYBRID DATA STORAGE AND RECONSTRUCTION SYSTEM AND METHOD FOR A DATA STORAGE DEVICE}
본 발명은 데이터 저장 장치에 관한 것이다. 보다 구체적으로, 본 발명은 디스크 드라이브, 테이프 드라이브 또는 광학 드라이브와 같은 데이터 저장 장치에 대한 데이터 재구성에 관한 것이다.
두 가지의 종래 컴퓨터 모델이 컴퓨터 사업 분야에 잘 공지되어 있다. 첫 번째는 대형 컴퓨터 모델이고, 두 번째가 클러스터링된 컴퓨터 모델이다.
대형 컴퓨터 모델에서 최종 사용자를 위한 일반적인 진행은 최초 시스템을 구매하는 것이며, 부가의 처리 능력이 요구될 때에는 더 큰 시스템을 구비한 최초 시스템으로 대체하는 것이다. 이러한 사이클의 여러 시점에서 외상성 단절이 발생한다. 예를 들어 사용자가 최초 시스템의 구조보다 빨리 성장한다면, 사용자는 운영 시스템을 다른 구동시스템으로 변환하여야 하거나, 업그레이드된 대형 시스템이 구매된 경우 심지어 한 납품업자의 독점적인 구조로부터 다른 납품업자의 것으로 변환하여야 한다. 이러한 변화는 비용 및 사용 시간의 모든 면에서 업그레이드 모델을 조직적으로 구매하기 위해 무수한 비용을 수반한다. 따라서, 이같은 변화는 여러 경우에 방지되어야 한다.
게다가, 대형 모델은 형편없는 잉여 값의 컴퓨터 장비를 수반한다. 따라서, 시스템 교체는 종종 최초 시스템이 업그레이드된 시스템으로 대체된 경우에 실질적으로 완전히 손실되는 투자 자금을 야기한다. 더욱이, 더 큰 업그레이드된 시스템은 더 작은 시스템 보다 더 적은 양으로 판매되는 경향이 있다. 따라서, 각각의 새로운 시스템 업그레이드는 이전의 시스템보다 일반적으로 고비용의 컴퓨팅을 가진다.
클러스터링된 컴퓨터 모델에 있어서, 대형 컴퓨터는 더 작은, 표준에 기초한 서버의 클러스터로 대체된다. 이것은 대형 모델을 능가하는 많은 장점을 제공한다. 클러스터는 단지 단일 시스템으로서 출발하기 때문에 클러스터 모델로 진입하기 위한 임계치는 낮다. 게다가, 이같은 작은 시스템은 일반적으로 대량으로 판매되며, 이것은 컴퓨터의 비용을 낮게 한다. 또한 이같은 컴퓨터는 독점적인 구조에 대한 의존성을 보이지 않는다는 점에 기초한 표준형이다. 이것은 사용자가 뒤이은 각각의 구매에 대하여 최상의 대안을 선택할 수 있게 하는 다중 소오스로부터 나온 장비에 대한 이용가능성을 제공한다.
게다가, 클러스터링된 컴퓨터 모델과 관련한 다른 장점이 제공된다. 업그레이드 비용은 현존하는 그리고 당면한 미래의 요구를 만족시키는 데에 요구되는 추가의 자원의 양만을 추가함으로써 보다 정확하게 제어될 수 있다. 게다가, 사용자는 새로운 구조로의 변환 및 전이를 고려하지 않고 광범위의 다양한 납품업자로부터 선택 가능하다. 유사하게, 합당한 구조를 사용하여, 다른 운영 시스템으로의 변환에 대한 요구는 결코 있을 수 없다.
그러나 여전히 클러스터링된 컴퓨터 모델은 단점 및 문제점을 가진다. 예를 들어, 클러스터링된 컴퓨터 모델은 단일 대형 컴퓨터가 수행하는 작업 부하를 클러스터가 처리하도록 허가하는 방식으로 데이터를 공유하는 능력을 클러스터링된 시스템에 제공하는 데에서 어려움에 직면하게 된다. 예를 들어 클러스터 내의 각각의 서버가 동일한 데이터에 대하여 트랜잭션을 처리하도록 요구된 경우의 클러스터링된 모델을 구현하는 것은 현재 매우 어렵다. 이같은 응용의 예는 항공 예약 시스템 또는 재정 단체의 트랜잭션의 완벽한 목록 작성을 포함한다.
클러스터링된 컴퓨터 모델의 두 번째 단점은 단순히 대형 컴퓨터 환경에서 존재하는 저장 및 데이터를 관리하는 데 있어서의 많은 경험의 결여와 관련한다. 이같은 경험은 클러스터 환경에 기초한 표준에서는 간단히 이용될 수 없는 관리 소프트웨어로 진화하였다.
종래의 디스크 드라이브는 또한 운영 시스템 정보의 손실과 관련된 단점을 포함한다. 예를 들어 종래의 디스크 드라이브는 수백만 데이터 섹터를 포함한다. 임의의 다른 이유로, 하나 이상의 섹터가 판독 불가능하거나 손상될 수 있다. 판독 불가능하게 되는 섹터가 특정 목적을 위하여 운영 시스템에 의해 사용되는 섹터라면, 나머지 디스크 드라이브 전체가 판독 가능할 지라도, 디스크 드라이브 내의 전체 디스크 공간은 사용할 수 없는 것으로 간주된다. 예를 들어 개인 컴퓨터 환경에서, 마스터 부트 리코더, 분할 부트 리코더, 파일 속성 테이블(FAT) 또는 루트 디렉토리가 판독 불가능 또는 손상될 수 있다. 이것은 디스크 드라이브의 전체 내용의 본질적인 손실을 야기한다. 이같은 키 파일 시스템 관리 데이터의 손실에 직면하여서 어떠한 종래의 운영 시스템도 모든 판독 가능한 데이터를 재구성할 수 있는 능력을 가지지 않는다. 이것은 사용자에게 가공할 만한 손실을 제공하며, 손실된 데이터가 운영 시스템에 관련되기 때문에 본질적으로 부적당하게 되며, 디스크 드라이브 상에 저장된 실제 데이터를 전혀 처리할 수 없으며, 상기 데이터는 판독될 수 없다.
현재까지, 이러한 예에서 데이터를 재구성하기 위한 소정 서비스는 실질적으로 매우 성가신 것이다. 이같은 서비스는 일반적으로 구동 환경으로부터 디스크 드라이브를 물리적으로 제거하여 이같은 데이터를 복구하는 서비스에 관련된 회사 또는 서비스 제공업자에게 전달할 것을 요구한다. 이러한 서비스에는 성공에 대한 어떠한 보장도 제공되지 않으며, 이러한 목적으로 디스크 드라이브의 권리 포기에 수반되는 결과적으로 발생하는 비밀의 누설에 대한 어떠한 보호도 제공되지 않는다.
본 발명은 이러한 문제점 및 다른 문제점을 다루며, 종래 기술을 능가하는 장점을 제공한다.
발명의 요약
본 발명은 데이터 저장 장치에 대한 하이브리드 데이터 재구성 시스템 및 방법에 관련된다. 데이터는 더 높은 정도의 리던던시(redundancy)를 가지는 체계(scheme)에 따라 중요한 데이터가 저장되도록 두 개 이상의 리던던시 체계 중 하나에 따라 선택적으로 저장된다.
종속항은 세부 사항 및 개선점에 관련된다.
본 발명은 첨부된 도면에서 구체화된 실시예를 사용하여 보다 자세히 설명된 다.
도 1은 본 발명에 따른 저장 시스템이 부가된 네트워크의 블록도이다.
도 2는 본 발명의 일 특성에 따른 객체 모델을 도시한다.
도 3a은 저장 장치상의 객체가 요구자에 의해 액세스되는 제 1 구성에 대한 블록도이다.
도 3b는 저장 장치상의 객체가 요구자에 의해 액세스되는 제 2 구성에 대한 블록도이다.
도 4는 본 발명의 일 특성에 따른 디스크 드라이브의 사시도이다.
도 5는 요구자에 의한 객체의 액세스를 도시하는 기능 블록도이다.
도 6은 본 발명의 일 특성에 따라 분할된 저장 매체의 일부를 도시한다.
도 7a 및 도 7b는 본 발명에 따른 일 특성에 따라 요구자에 의한 객체의 액세스를 설명한 흐름도이다.
도 8은 본 발명의 일 특성에 따라 객체의 생성을 설명한 흐름도이다.
도 9는 본 발명의 일 특성에 따라 객체의 열기 및 업데이트를 설명하는 흐름도이다.
도 10은 본 발명의 일 특성에 따라 객체에 대한 기록을 설명하는 흐름도이다.
도 11은 본 발명의 일 특성에 따라 판독만을 목적으로 한 객체의 열기를 설명하는 흐름도이다.
도 12는 본 발명의 일 특성에 따라 객체의 판독을 설명하는 흐름도이다.
도 13은 본 발명의 일 특성에 따라 객체의 닫음을 설명하는 흐름도이다.
도 14는 본 발명의 일 특성에 따라 객체의 삭제를 설명하는 흐름도이다.
도 15는 본 발명의 일 특성에 따라 분할의 생성을 설명하는 흐름도이다.
도 16은 본 발명의 일 특성에 따라 분할의 삭제를 설명하는 흐름도이다.
도 17은 본 발명의 일 특성에 따라 객체의 익스포트(exporting)를 설명하는 흐름도이다.
도 18은 본 발명의 일 특성에 따라 객체 속성의 획득을 설명하는 흐름도이다.
도 19는 본 발명의 일 특성에 따라 객체 속성의 세팅 또는 수정을 설명하는 흐름도이다.
도 20은 본 발명의 일 특성에 따라 로크 속성의 판독을 설명하는 흐름도이다.
도 21은 본 발명의 일 특성에 따라 로크 속성의 세팅을 설명하는 흐름도이다.
도 22는 본 발명의 일 특성에 따라 객체의 로크 속성의 리세팅을 설명하는 흐름도이다.
도 23은 본 발명의 일 특성에 따라 장치 연합의 획득을 설명하는 흐름도이다.
도 24는 본 발명의 일 특성에 따라 장치 연합의 세팅을 설명하는 흐름도이다.
도 25는 본 발명의 일 특성에 따라 구현된 디스크 장치 어레이를 도시한 블록도이다.
도 26은 본 발명의 일 특성에 따른 목표 디스크 드라이브를 도시한 블록도이다.
도 27은 본 발명의 일 특성에 따른 패리티 디스크 드라이브를 도시한 블록도이다.
도 28은 본 발명의 일 특성에 따른 패리티 그룹의 생성을 설명하는 흐름도이다.
도 29는본 발명의 일 특성에 따라 패리티 정보가 업데이트되는 기록 동작을 설명하는 흐름도이다.
도 30은 본 발명의 일 특성에 따른 데이터 구조를 도시한다.
도 31은 본 발명의 일 특성에 따른 내장 위치 정보를 사용하는 디스크 드라이브의 블록도이다.
도 32는 도 31에 도시된 시스템의 동작을 설명하는 흐름도이다.
도 33은 본 발명의 다른 특성에 따라 내장 위치 정보를 사용하는 데이터 저장 장치의 다른 실시예를 도시하는 블록도이다.
도 34는 본 발명의 일 특성에 따른 하이브리드 데이터 재구성 시스템을 구현한 디스크 드라이브 어레이를 도시하는 블록도이다.
도 35 및 도 36은 블록 지향 데이터 및 객체 지향 데이터 각각에 대하여 하이브리드 데이터 재구성 방법 중 기록 동작을 도시하는 흐름도이다.
도 1은 본 발명의 일 특성에 따른 데이터저장 시스템(100)의 블록도이다. 시스템(100)은 객체 지향 데이터 저장 장치(110,112), 파일 서버(114), 요구자(116, 118, 120) 및 상호 접속부(122)를 포함한다. 시스템(100)은 여러 납품업자들로부터의 설비와 소프트웨어로 이루어질 수 있고 단일의 대용량 컴퓨터 시스템으로서 사용자에게 보여지는 저장 구조가 부착된 네트워크를 도시한다.
객체 지향 저장 장치(110-112)는 시스템의 데이터 저장 기능을 수행하는 저장 부품이다. 저장 장치(110-112)는 바람직하게, 디스크 드라이브, RAID( Redundant array of Inexpensive Discs) 서브 시스템, 테이프 드라이브, 테이프 라이브러리, 광학 장치, 쥬크 박스 또는 공유 가능한 소정의 다른 저장 장치를 포함한다. 저장 장치(110-112)에는 또한 장치(110,112)를 액세스하는 요구자(116,118,120)로의 입력/출력(I/O) 채널 부착부가 제공된다.
요구자(116,118,120)는 장치(110,112)상에 저장된 정보를 공유하는 서버 또는 클라이언트와 같은 부품이다. 요구자(116-120)는 또한 바람직하게, 저장 장치(110-112)상의 정보를 직접 액세스하도록 구성된다.
파일 서버(114)는 요구 인증 및 자원 위치와 같은 관리 및 보안 기능을 수행한다. 더 작은 시스템에 있어서, 전용 파일 서버는 바람직하게 사용되지 않는다. 대신에, 요구자(116-120) 중 하나가 파일 서버(114)에 의해 수행된 시스템(100) 동작의 감독에 대한 책임 및 기능을 떠맡는다. 게다가, 파일 서버(114)에 의해 제공된 보안 및 기능이 요구되지 않거나 필요하지 않은 경우 또는 수행에 대한 최우선의 요구가 요구자(116-120)의 클러스터가 저장 장치(110,112)와 직접 대화하기를 요구하는 경우, 파일 서버(114)는 시스템(100)에서 제거된다.
일 실시예에서 상호 접속부(122)는 물리적인 하부 기본 조직이며, 저장 시스템(100)이 부착된 네트워크내의 모든 부품이 상기 접속부를 통해 서로 통신한다.
동작에 있어서, 시스템(100)에 전원이 공급되면, 예를 들어 모든 장치는 바람직하게 서로에 대하여 또는 파일 서버(114) 또는 상호 접속부(122)와 같이 기준이 되는 공통점에 대하여 자신을 식별한다. 예를 들어, 파이버 채널에 기초한 시스템(100), 객체 지향 저장 장치(110,112) 및 요구자(116-120)는 시스템의 패브릭 상에 로그한다. 이러한 구현에 있어서 동작 구조를 결정하기 위하여 요구되는 시스템(110)의 소정 부품은 모든 다른 부품을 식별하기 위한 패브릭 서비스(fabric service)를 사용한다. 파일 서버(114)로부터 요구자(116-120)는 요구자(16-120)가 액세스 할 수 있는 저장 장치(110,112)의 존재를 알게 된다. 유사하게, 저장 장치(110, 112)는 시스템 내의 다른 장치에 위치시키도록 요구된 정보의 위치 및 백업과 같은 관리 서비스를 호출하는 데에 사용될 수 있는 어드레스를 알게 된다. 유사하게, 일 실시예에 있어서, 파일 서버(114)는 저장 장치(110,112)의 존재를 패브릭 서비스로부터 알게 된다.
특정 시스템(100)의 보안 실행에 의존하여, 요구자(116-120), 또는 요구자들 중 임의의 하나는 시스템(100)의 소정 부품에 대한 액세스를 부정할 수 있다. 각각의 요구자에게 이용가능한 저장 장치(110,112) 세트로부터 요구자는 파일, 데이터 베이스 및 그에게 이용가능한 자유 공간을 식별할 수 있다.
동시에, 시스템(100)내의 각 부품은 바람직하게, 파일 서버(114)에게 그와 관련하여 소정의 특별한 고려 사항을 식별한다. 예를 들어 저장 장치 레벨 서비스 속성은 파일 서버와 일단 통신될 수 있으며, 시스템(100) 내의 모든 다른 부품은 이같은 속성을 파일 서버(114)로부터 알게 된다. 예를 들어, 특정 요구자(116-120)가 추가의 저장 장치의 도입을 알기를 원하고 뒤이어 시작하기를 원할 수 있다. 이같은 속성은 예를 들어 요구자가 파일 서버(114)에 로그온 할 때 제공된다. 파일 서버(114)는 새로운 저장 장치가 시스템(100)에 추가될 때마다 특정 요구자(116-120)에게 이것을 자동적으로 통보한다. 파일 서버(114)는 일반적으로 요구자에게 저장 장치가 RAID 5, 미러링된 장치 등의 저장 장치인지의 여부와 같은 다른 중요한 특성을 전달한다.
본 발명의 일 특성에 따라, 저장 장치(110,112)상에 저장된 정보는 도 2에서 더 잘 묘사된 시스템을 사용하여 저장된다. 각각의 저장장치(110,112)는 바람직하게 객체 지향 장치이며, 상기 객체 지향 장치에서 데이터는 정렬된 시퀀스의 섹터로서보다는 차라리 객체로서 조직화 및 액세스되는 모드로 동작한다. 객체 지향 장치(110,112)는 특정 장치 상에 각각의 분할에 대하여 객체에 대한 단일 레벨의 리스트를 예시적으로 포함하는 객체 파일 시스템을 사용하여 객체(124-126)를 관리한다. 이것은 또한 평면 파일 시스템으로 언급된다. 각각의 장치(110,112)내의 저장 매체상에 저장된 객체(124-126)는 바람직하게, 객체 지향 장치 모드에서 동작하는 장치(110, 112)상에 용량 할당되는 최소의 가시적 유니트이다. 이같은 저장 장치 상의 객체는 단일 식별자와 관련된 정렬된 세트의 섹터를 포함한다. 데이터는 식별자 및 객체로의 오프셋에 의해 참조된다. 상기 객체는 저장 장치(110,112) 자신에 의해 저장 매체상에 할당 및 위치되는 반면에, 운영 시스템은 종래의 구조에서 행했던 것처럼 데이터의 섹터를 관리하는 대신에 이러한 객체 구조로 자신의 파일 및 메타데이터를 관리한다.
객체 내의 속성 및 데이터를 액세스하고 다루기 위하여 객체(124-126)가 요구자(116-120)에 의해 호출될 수 있는 여러 방법을 노출시키는 인터페이스(128)에 의해 객체(124-126)는 액세스된다. 따라서 도 2에 도시된 바와 같이, 요구(130)는 요구자(116-120)로부터 나온다. 바람직한 실시예에 있어서, 요구자(116-120)는 컴퓨터 시스템 또는 시스템의 클러스터 또는 네트워크 내의 엘리먼트이며, 이들은 객체(124-126)를 포함하는 저장 장치 상에서의 동작에 대한 요구(130)를 제공한다. 따라서, 요구자(116-120)는 클라이언트 및 서버 모두 일 수 있다. 이러한 경우에 있어서, 요구자(116-120) 중 하나에 의해 발생된 요구(130)는 상세한 설명에서 이후에 상세히 설명되어지는 것과 같이 하나 이상의 객체(124-126)를 처리하게 하는 인터페이스(128) 내의 한 방법을 호출한다.
도 3a 및 도 3b는 저장 장치(110-112) 상에 저장된 객체를 액세스하기 위하여 사용될 수 있는 두 개의 상이한 구조에 대한 블록도이다. 간략화를 위하여, 단지 하나의 요구자(116) 및 하나의 객체 지향 저장 장치(110)가 도 3a 및 도 3b에 도시되었다. 요구자(116)가 (객체(124-126)와 같은) 객체를 열기를 원할 때, 요구자(116)는 직접 저장 장치(110)에 액세스할 수 있으며, 또한 저장 장치(100) 상의 객체에 액세스하기 위하여 파일 서버(1114)로부터의 허가 및 할당 정보를 요청하도록 요구된다. 파일 서버(114)가 저장 장치(110)로의 액세스를 제어하는 범위는 주로 시스템(100)의 특정 구현에 대한 보안 요구조건의 기능이다.
도 3a에 도시된 블록도에 있어서, 시스템(100)은 안전한 것으로 가정된다. 즉, 요구자(116)와 저장 장치(110) 사이에서 명령 정보 및 데이터의 전달을 보호하기 위한 어떠한 요구도 존재하지 않는다. 이러한 구현에 있어서, 파일 서버(114)가 여전히 관리 기능을 제공하지만 파일 서버(114)가 요구자의 저장 장치(110)와의 상호 작용을 감독할 필요는 없다.
이같은 구현에 있어서, 요구자(116)는 저장 장치(110) 상에 객체를 직접 액세스 및 생성할 수 있는 위치에 있다. 따라서 요구자(116)는 그들이 본래 요구자(116)에 첨부된 것처럼 객체를 열고 판독하고 기록하고 닫을 수 있다. 이같은 동작은 본 명세서에서 이후에 상세히 설명될 것이다. 그러나, 간략화를 위하여 간단한 개요가 현 시점에서 제공되었다. 저장 장치(110)상의 객체를 판독하기 위하여, 바람직하게 요구자는 저장 장치(110)상의 논리적 볼륨 또는 분할을 나타내는 하나 이상의 객체로부터 어떻게 장치 상에 저장된 객체에 대한 검색을 시작하는지 판독한다. 요구자(116)는 루트 디렉터리에 존재하는 객체를 열고 판독한다. 이러한 객체로부터, 다른 객체의 위치 설정이 진행되며, 루트 디렉토리의 내용에 기초한다. 요구자(116)는 원하는 데이터가 위치될 때가지 이러한 처리를 반복한다. 데이터는 객체 식별자(객체 ID) 및 객체 내의 변위에 의해 참조된다.
도 3b에 도시된 제 2 구현에 있어서, 보안이 요구된다. 따라서, 파일 서버(114)는 원하는 레벨의 보호를 위하여 필요한 정도로 요구자(116)와 저장 장치(110) 사이에 I/O 체인 내에 삽입된다. 바람직한 실시예에 있어서, 요구자(116)는 I/O 동작 세트를 수행하기 위하여 파일 서버(114)로부터 허가를 우선 요청하여야 한다. (추가의 보안을 위하여 요구자(116)에게 알려지지 않은 저장 위치 정보를 가지는) 파일 서버(114)는 요구자(116)가 저장 장치와 직접 통신하도록 하는 충분한 정보를 반환함으로써 요구자(116)로부터의 요구를 인증한다. 저장 장치(110)가 파일 서버(114)를 로그온 할 때 저장 장치(110)가 바람직하게 보안 파라미터를 알고 있기 때문에, 바람직하게 저장 장치(110)는 그것이 바람직하게 구성되지 않고 파일 서버(114)로부터의 유효한 허가를 포함하는 부호화된 데이터를 포함하지 않는 다면 I/O 요구를 허가하지 않는다.
이어, 도 3a을 참조하여 설명된 것과 유사한 방식으로 처리가 진행된다. 그러나, 각각의 명령과 관련된 페이로드(payload)는 상당히 다르다. 예를 들어 (도 3b에 도시됨) 보안이 요구된 경우, 요구자(116)와 저장 장치(110) 사이에서 전달되는 명령 및 데이터는 암호화될 수 있다. 게다가 허용 정보가 바람직하게 요구자(116)에서 저장 장치(110)로 제공된 명령 파라미터에 부가되어야 한다.
바람직한 실시예에 있어서, 저장 장치(110,112)가 하드 디스크 드라이브를 포함할 수 있기 때문에, 디스크 드라이브에 대한 간략한 설명이 전개된다. 도 4는 저장 장치(110)로서 구현될 수 있는 하드 디스크 드라이브의 사시도이다. 디스크 드라이브(110)에 있어서, 다수의 디스크(132)는 하우징(136)내의 스핀들 모터 어셈블리(134) 주위를 저널링된다. 각각의 디스크(132)는 138로 나타내어진 다수의 동심원적인 원형 기록 트랙을 가진다. 각각의 트랙(138)은 (도 6을 참조하여 보다 상세하게 설명될) 다수의 분할로 나뉘어진다. 데이터는 트랙(138)내의 특정 분할을 참고하여 디스크(132)에 저장되거나 또는 그로부터 검색될 수 있다. 액튜에이터 아암 어셈블리(140)는 바람직하게 하우징(126)의 한 코너에 회전 가능하게 장착된다. 액튜에이터 아암 어셈블리(140)는 다수의 헤드 짐발 어셈블리(142)를 이송하고, 이것은 기록/판독 헤드 또는 디스크(132)상에 정보를 기록 또는 그로부터 정보를 판독하기 위한 트랜스듀서(도시되지 않음)를 가지는 슬라이더를 각각 이송한다.
보이스 코일 모터(144)는 슬라이더(142) 상의 트랜스듀서가 화살표(146)로 나타내어진 호를 따라 디스크(132)의 표면을 가로질러 이동하는 방식으로 앞뒤로 액튜에이터 어셈블리(140)를 정교하게 회전시키도록 적용된다. 도 4는 또한 공지된 방식으로 디스크 드라이브(100)의 소정 동작을 제어하는 데에 사용되는 디스크 드라이브 제어기(148)를 도시하는 블록도이다. 그러나, 본 발명에 따라, 디스크 드라이브 제어기(148)는 또한 디스크(132) 상에 저장된 객체(124-126)로의 인터페이스(128)를 구현하는데 사용된다.
도 5는 도 1에 도시된 시스템에 적합한 디스크 드라이브의 일부에 대한 블록도이다. 도 5에 있어서, 디스크 드라이브 제어기(148)는 인터페이스를 구현하는 제어요소(150)를 포함한다. 객체(124-126)는 디스크(132)를 구성하는 저장 매체 상에 저장된다. 요구 성분(152)은 요구자(116-120)상에서 구현되며, 인터페이스(128)의 방법을 호출하는 요구를 논리적으로 공식화하도록 형성된다. 방법을 호출하면, 제어요소(150)는 요구된 방식으로 식별된 객체를 처리하기 위하여 소정의 태스크를 수행한다. 제어요소는 임의의 식별 객체와 관련된 데이터 또는 속성을 포함하는 이벤트를 반환한다. 상기 이벤트는 또한 요구자(116-120)에 의해 호출된 특정 방법에 기초하여 반환된다.
객체 지향 장치(110-120)가 블록 지향 장치를 가지는 운영 시스템에 의해 전달된 동일한 기능을 제공하기 위하여, 장치(110-112) 상의 저장 공간은 유사한 수준으로 관리될 수 있어야 된다. 따라서, 바람직한 실시예에 있어서, 저장 장치(110-112)상의 조직화 층에는 그 위에 저장되는 객체(124-126)가 제공된다. 바람직한 실시예에 있어서, 객체 지향 저장장치(110-112)에는 분할로 언급되는 하나 이상의 상호 배타적인 영역으로의 디스크 공간 할당이 제공된다. 분할은 도 6을 참조하여 보다 상세히 설명될 것이다. 분할내에서, 요구자(116-120)는 객체를 생성할 수 있다. 바람직한 실시예에 있어서, 분할내의 구조는 간단히 평면 조직이다. 이러한 조직화에 있어서, 소정 운영 시스템은 자신의 구조를 맵핑할 수 있다.
도 6은 하나의 디스크(132)와 같은 저장 매체 상의 저장 공간의 일부를 도시한다. 저장 공간은 장치 제어 객체(154), 장치 연합 객체(156) 및 분할 0(또한 부호 158로 나타내어짐), 분할 1(또한 부호 160로 나타내어짐), 분할 2(또한 부호 162로 나타내어짐)과 같이 레이블링된 다수의 분할과 같은 여러 객체를 포함한다. 각각의 분할은 또한 분할 제어 객체(164), 분할 객체 리스트(166) 및 다수의 데이터 객체(168)(레이블링된 데이터 객체0-데이터 객체N)와 같은 여러 객체를 포함한다.
속성 세트는 각각의 개체와 관련된다. 본 발명의 일 특성에 따라, (본 명세서에서 이후에 상세히 설명되는) Set_Attribute 방법에 의해 설정되는 액세스 제어 속성이 제공되며, 상기 속성은 특정 객체로의 액세스를 제어하는 수단을 제공한다. 액세트 제어 속성의 버전 번호를 변화시킴으로써, 소정의 요구자(116-120)는 부정되거나 제공될 수 있는 특정 객체를 액세스 할 수도 있다.
클러스터링 객체는 특정 객체가 저장 시스템내에 다른 객체의 근처에 바람직하게 위치되었는지의 여부를 나타내는 속성이다. 클로닝(cloning) 속성은 특정 객체가 저장 시스템내에서 다른 객체를 복사함으로써 생성되었는지의 여부를 나타낸다. 크기 속성의 그룹은 특정 객체의 크기 특성을 정의한다. 예를 들어, 크기 속성의 그룹은 객체 내에 기록된 가장 큰 오프셋, 객체에 할당된 블록의 수, 객체내에 데이터를 저장하는 데에 사용되는 블록의 수 및 객체 내의 블록당 바이트의 수를 나타내는 정보를 포함한다.
시간 속성의 그룹은 객체가 생성된 때를 나타내며, 객체 내의 데이터가 수정된 최종 시간 및 객체 내의 속성이 수정된 최종 시간을 나타낸다. 객체는 또한 바람직하게 파일 시스템 내의 소정 데이터가 수정된 최종 시간 및 파일 시스템 내의 소정 속성이 수정된 최종 시간을 정의하는 속성 세트를 포함한다. 소정 객체의 다른 파라미터, 특성 또는 특징을 나타내기 위하여, 다른 속성이 제공될 수도 있다.
각각의 객체는 특정 저장 장치(110-112)에 의해 선택되어 객체를 생성하기 위한 명령에 응답하여 요구자(116-120)로 반환되는 객체 식별자와 또한 관련된다. 바람직하게 식별자는 특정된 길이를 갖는 부호없는 정수이다. 바람직한 실시예에 있어서, 식별자의 길이는 특정 저장 장치(110-112)에 의해 규정된 크기로 디폴트 설정되거나, 장치 속성으로 설정될 수 있다. 게다가, 바람직한 실시예에 있어서, 미리 결정된 서브 세트의 식별자(Id)는 공지된 객체, 특정 사용, 및 바람직하게 수행될 수 있는 다른 특정 기능을 위해 예약된다.
도 6은 특정 객체 ID를 항상 구비하는 다수의 공지된 객체를 일반적으로 포함하는 저장 매체를 도시한다. 소정의 경우에 있어서, 이같은 공지된 객체는 모든 분할 또는 모든 장치 상에 존재한다.
예를 들어 이같은 공지된 객체들 중 하나는 각각의 장치(110-112)에 의해 관리되는 속성을 바람직하게 구비하고 장치 상의 모든 객체 또는 장치 자신에 관련되는 장치 제어 객체(154)이다. 속성은 명세서에서 이후에 설명되어질 Set-Arrtibutes 방법에 의해 유지된다. 바람직한 실시예에 있어서, 장치(110-112) 당 하나의 장치 제어 객체(154)가 존재한다.
표 1은 바람직한 장치 제어 객체(DCO) 속성의 한 세트를 도시한다.
표 1
타 입 이 름 바 이 트 의 미
보안 클록 8 단조 카운터
마스터 키 8 마스터 키, 제어 장치 키
장치 키 8 장치 키, 제어 분할 키
보호레벨 1 보호 선택 정의
분할 분할 카운트 1 장치의 분할 수
장치속성 객체속성 8 장치 상의 모든 객체와 관련된 특성을 정의
바람직한 실시예에 있어서, DCO 속성은 간단한 단조 카운터가 되는 클록, 암호화 키를 포함하는 마스터키, 또는 장치 상의 모든 다른 키를 제어하는 다른 마스터 키, 및 분할 키를 제어하고 분할(partition)을 록킹하는 데에 사용될 수 있는 장치 키를 포함한다. 속성은 또한 미리 결정된 보호 레벨을 식별하고 관련된 보안 정책을 가지는 보호 레벨 키, 장치 상의 여러 분할을 정의하는 분할 카운트 및 액세스되는 특정 장치 상의 모든 객체와 관련된 속성을 정의하는 객체 속성을 포함한다.
여러 저장 장치(110-112)에 이르는 객체를 적절하게 관리하기 위하여, 각각의 저장 장치(110-112)는 바람직하게 여러 장치(110-112) 사이의 결합을 정의하는 장치 연합 객체(156)를 포함한다. 예를 들어, 저장 장치(110,112)가 미러링된 장치 쌍 또는 어레이 세트의 멤버인 경우에, 장치 연합 객체(156)는 이러한 관계를 식별한다. 표 2는 장치 연합 객체(156)의 바람직한 속성을 나타낸다.
표 2
이 름 바 이 트 의 미
연합 식별자 2 연합 장치 비트에 대한 유일한 ID
연합 타입 2 연합의 종류
멤버쉽 리스트 n
연합 식별자 2
연합 타입 2
멤버쉽 리스트 n
이같은 속성은 바람직하게 각각의 연합된 장치 세트에 대하여 유일한 식별자가 되는 연합 식별자를 포함한다. 속성은 또한 바람직하게, 장치들 사이의 연합의 종류(예를 들어 미러링된 쌍, RAID 5 등)를 정의하는 연합의 타입을 포함한다. 속성은 바람직하게, 위에서 정의된 연합의 멤버가 되는 장치(110-112)를 간단하게 식별하는 멤버쉽 리스트를 추가로 포함한다.
저장 장치(110-112)상의 각각의 분할(158,160,162)은 또한 바람직하게, 단일 분할의 특성을 포함하는 분할 제어 객체(164)를 포함한다. 객체(164)는 바람직하게, 분할을 설명할 뿐만 아니라, 분할 내의 모든 객체에 관계된 소정의 객체 속성을 나타낸다. 각각의 장치(110-112)는 바람직하게 장치 상에 정의된 각각의 분할에 대하여 하나의 분할 제어 객체를 포함한다. 한편 도 6은 각각의 분할 내에 저장된 분할 제어 객체를 도시하지만 이것은 반드시 이럴 필요는 없다. 분할 제어 객체는 상술한 분할 대신에 평면 파일 시스템 내에 저장될 수도 있다.
표 3은 분할 제어 객체(168)내에 바람직하게 포함된 여러 속성을 나타낸다.
표 3
타 입 이 름 바 이 트 의 미
마스터 키 8 암호화 키
현재 작업 키 8
이전의 작업 키 8
분할 속성 객체 특성 8 분할 내의 모든 객체와 관련된 특성을 정의
이같은 속성은 바람직하게 전체 분할에 대한 암호화 키를 정의하고 현재 작업 키를 설정하는 데 사용될 수 있는 마스터를 포함한다. 속성은 또한 현재 작동 키 및 명령 및 데이터 메시지의 암호화와 해독을 위해 바람직하게 사용되는 이전의 작업 키를 포함한다. 분할 제어 객체(164)는 또한 바람직하게, 설계된 분할내의 모든 객체와 관련된 객체 속성을 포함한다.
도 6은 또한 분할이 저장 매체 상에 형성되었을 때, 제어요소(150)에 의해 이루어지는 객체가 되는 분할 객체 리스트(166)를 포함하는 각각의 분할을 도시한다. 분할 객체 리스트(166)는 바람직하게 모든 분할내에 동일한 식별자를 포함하며, 저장 매체 상에 구현된 객체 파일 시스템을 내비게이팅하기 위한 시발점을 구성한다. 표 4는 분할 객체 리스트와 관련된 속성 리스트를 나타낸다.
표 4
필 드 바 이 트
객체 ID 8 이러한 객체에 대하여 소정의 OPEN, READ, WRITE, CLOSE를 위해 사용되는 ID
사용자 데이터 n POL 속성은 사용자 데이터를 세팅하며 GET_ATTRIBUTE를 사용하여 값을 얻는다.
표 4에 도시된 바와 같이, 객체는 바람직하게, 분할 내에 존재하는 모든 객체에 대하여 객체 식별자(또는 객체 ID)의 리스트 및 각각의 객체에 할당된 사용 공간의 량을 포함한다. 객체 식별자는 객체를 열고 판독, 기록 및 닫기 위하여 요구자에 의해 사용된다. 게다가, 사용자는 분할 객체 리스트내에 사용자 데이터 속성을 설정함으로써 바람직하게 각각의 객체 ID에 대한 사용 공간을 할당할 수 있다. 분할 객체 리스트(166) 이후에, 각각의 분할은 바람직하게, 다수의 데이터 객체(168)를 포함한다. 각각의 데이터 객체(168)는 바람직하게, 표 1에 나타내어진 하나 이상의 속성 세트를 포함하고, 데이터 저장 시스템의 특정 구현에 의존하여 추가의 속성을 포함할 수도 있다.
객체 지향 저장 장치(110-112)는 바람직하게, 요구자(116-120)에게 데이터를 제공 또는 데이터를 저장하기 위하여 요구를 지원한다. 게다가, 저장 장치(110-120)는 바람직하게 종래 기술의 구조의 운영 시스템에서 가장 적당한 다른 부품에서 수행되는 다른 기능에 대한 책임을 맡는다. 공간 관리뿐만 아니라 장치(110-112) 상의 객체와 관련된 속성의 유지는 바람직하게 장치(110-112) 자신에 의해 수행된다. 이같은 기능은 바람직하게, 각각의 저장 장치(110-1120) 내의 제어요소(150)에 의해 지원되는 호출 방법에 의해 수행된다. 호출될 수 있는 여러 방법은 이후에 설명된다. 그러나, 이러한 방법의 양호한 이해를 돕기 위하여, 도 7a 및 도 7b는 본 발명의 일 특성에 따른 객체 지향 파일 시스템의 내비게이션을 도시하는 흐름도를 제공한다. 아래에서 설명될 각각에 대한 상세한 설명에 앞서 도 7a 및 도 7b가 본 발명의 이해를 돕기 위한 것임을 알 수 있을 것이다.
블록(170-204)으로 이루어진 도 7a 및 도 7b는 저장 장치(110-112) 중 하나내의 특정 분할에서 객체를 찾는 것을 도시한다. 우선, 요구자(116)는 장치 제어 객체(154)에서 장치 속성을 획득한다. 이것은 블록(172)에 도시되었다. Get_DCO_Attributes 방법의 호출은 제어요소(150)가 장치 제어 객체(154)내에 저장된 속성을 반환하도록 한다. 이것은 블록(174)에 도시되었다. 이어 요구자(116)는 장치 제어 객체(154)로부터 반환된 속성에 기초하여 소정의 분할을 선택한다. 이것은 블록(176)에 도시되었다.
분할이 요구자(116)에 의해 선택되면, 요구자(116)는 블록(173)에 도시된 바와 같이, Get_DAO_Attributes 방법을 호출한다. 이것은 제어요소(150)가 저장 매체(110) 상에 저장된 장치 연합 객체(156)로부터 속성을 획득하도록 한다. 장치 연합 속성 및 장치 제어 속성에 기초하여, 요구자(116)는 응답 지령신호를 보내기 위하여 분할을 선택한다. 이것은 블록(176)에 도시되어 있다.
요구자(116)는 이어 제어요소(150)가 분할 제어 객체(164)에서 발견된 속성을 획득하도록 하는 Get_PCO-Attributes 방법을 호출하며, 상기 객체는 요구자(116)에 의해 응답 지령 신호를 받는 특정 분할과 관련된다. 이것은 제어요소(150)가 분할 제어 객체 속성을 획득하여 반환시키도록 한다. 이는 블록(178) 및 블록(180)에 도시되었다. 선택된 분할 내의 객체가 요구자에게 관심있는 객체가 아닐 경우, 요구자는 블록(182 및 176)에 도시된 바와 같이 다른 분할을 선택한다.
그러나, 요구자(116)가 관심있는 분할을 발견하였다고 가정하면, 요구자는 블록(184)에서 도시된 바와 같이 선택된 분할에 대하여 Get_POL_Attributes 방법을 호출한다. 상기 방법은 제어요소(150)가 선택된 분할에 관련된 분할 객체 리스트(166)로부터 속성을 획득하도록 한다. 이러한 속성은 이어 블록(186)에 도시된 바와 같이 요구자(116)에게 제공된다.
다음, 요구자(116)는 Open_Read_Only_POL 방법을 호출한다. 이는 블록(188)에 도시되었다. 아래에서 상세히 설명된 바와 같이, 제어요소(150)는 선택된 분할에 관련된 분할 객체 리스트(166)에 저장된 데이터를 획득하지만, 데이터가 수정 또는 연장될 수 없도록 데이터가 판독 전용 기반 상에서 제공된다는 것을 나타내도록 객체 내의 속성을 수정한다.
이어 요구자는 Read_POL 방법을 호출한다. 상기 방법은 제어요소(150)가 요구자(116)에 의해 재검토하도록 선택된 분할 내의 객체에 대한 리스트를 제출하도록 한다. 이것은 블록(194)에 도시되었다. 선택된 분할 내의 원하는 객체를 선택한 이후, 요구자(116)는 제어요소(150)가 분할 객체 리스트를 닫도록 하는 Close_POL 방법을 호출한다. 이것은 블록(196)에 도시되었다.
원하는 객체 또는 객체에 대한 객체 ID를 발견하였다면, 요구자(116)는 Open_xxx_Objectx 방법을 호출한다. 상기 xxx는 요구자에 의해 요구된 특정 데이터 처리에 기초하여 요구자에 의해 호출되는 특정 열기 방법을 나타낸다. Objectx는 요구자에 의해 다루어지거나 액세스되어질 객체를 식별하는 분할 객체 리스트로부터 객체 ID를 식별한다. xxx 설계는 예를 들어 Open_Update 동작, 또는 Open_Read-Only 동작을 나타낼 수 있다. 이것은 다음에서 설명되며, 이러한 단계는 블록(198)에 도시되었다.
요구자는 이어 제어요소(150)에 의해 반환된 객체에 대하여 요구된 처리를 수행한다. 객체를 처리하기 위하여 사용될 수 있는 다양한 방법은 다음에서 보다 상세히 설명된다. 이것은 블록(200)에 도시되었다.
최종적으로, 원하는 객체 처리 또는 액세스가 요구자에 의해 완료되면, 요구자(116)는 이 역시 아래에서 상세히 설명되어질 것이며 요구자(116)에 의해 액세스되는 객체를 닫기 위하여 동작하는 Close_Objectx 방법을 호출한다.
도 8 내지 도 24는 장치(110)와 같은 객체 지향 저장 장치 상에 저장된 객체에 대한 원하는 기능 및 원하는 처리를 수행하기 위하여 요구자에 의해 호출될 수 있는 예시적인 다양한 방법을 도시한 흐름도이다.
도 8은 Open_Create_Object 방법을 특별히 설명한 흐름도이다. 블록(208)에 도시된 바와 같이 요구자(116)가 상기 방법을 호출할 때, 제어요소(150)는 새로운 객체 ID를 생성하고 상기 객체 ID를 객체가 생성되어지는 특정 분할과 관련된 분할 객체 리스트에 기입한다. 이것은 블록(210)에 도시되었다. 이어 제어요소(150)는 객체와 관련된 블록의 개수 등을 할당함으로써, 그리고 객체 생성 시간을 나타내고 표 1에 리스팅되어 객체에 관련된 다른 속성을 설정하기 위한 객체 속성을 수정함으로써, 새로운 객체를 생성한다. 이는 블록(212)에 도시되었다. 이어, 제어요소(150)는 바로 생성되어질 객체의 새로운 ID와 함께 요구의 상태를 반환한다. 이는 블록(214)에 도시되었다.
객체의 간략한 생성 이외에, 요구자(116)는 여러 선택을 규정할 수 있다. 예를 들어 바람직한 실시예에 있어서, 공간이 규정된 최소 크기의 유니트로 할당될 것을 나타내기 위하여 그리고 (유닉스 타입의 시스템에서 기록과 같은) 충돌 특성을 설정하기 위하여, 요구자(116)는 객체가 보호되는 패스워드인지의 여부, 객체가 암호화될 것인지의 여부, 소정 질의 서비스 임계치(예를 들어 객체가 백업될 것인지의 여부), 록킹 특성(예를 들어 개체가 객체 록킹 뿐만 아니라 분할 및 장치 록킹과 같은 다른 록킹에 의해 록킹될 것인지의 여부), 액세스 제어 버전, (모든 업데이트가 다른 객체에 대하여 미러링되도록 하거나, 규정된 다른 방식에 의해 백업되는) 미러 또는 다른 백업 지원을 규정한다.
상기 방법을 호출하기 위하여 요구자(116)가 제어요소(150)에 제공하는 특정 정보는 보안을 위하여 그리고 생성되어질 객체가 있는 장치의 분할 및 상술한 방식의 임의의 선택을 위하여 정보를 요구하는 시스템 내에 허가 정보를 포함한다. 이에 응답하여, 예시적인 실시예에서, 제어요소(150)는 장치 상의 사용 가능한 용량, 요구의 상태를 새로운 객체의 ID와 함께 반환한다.
객체와 관련된 모든 데이터를 포함하는 이러한 특정 예의 이러한 방법이 호출될 수 있다는 것도 역시 주목되어야 한다. 이러한 경우, 객체를 생성할 수 있고, 객체에 기록할 수 있고 객체를 닫을 수 있는 한 방법이 호출될 수 있다.
도 9는 Open_Update_Objectx 방법을 도시한 흐름도이다. 요구자(116)가 블록(220)에 도시된 바와 같이, 상기 방법을 호출할 때, 이것은 요구자(116)가 특정 객체를 판독 및 기록하도록 허가한다. 또한 객체의 길이 연장을 제공한다. 상기 방법이 호출될 때, 제어요소(150)는 객체가 사용중인 것을 나타내는 특정 객체의 속성을 세팅한다. 요구자(116)는 허가 정보, 객체를 포함하는 분할 ID, 액세스될 객체의 식별자, 취하여질 동작의 타입(업데이트 또는 기록) 및 상술한 소정 선택을 제공한다. 이에 응답하여, 제어요소(150)는 요구의 상태, 규정된 객체의 길이를 요구자(116)가 사용할 수 있는 남은 용량과 함께 반환한다.
도 10은 Write_Object 방법을 설명하는 흐름도이다. 요구자(116)가 상기 방법을 블록(242)에 도시된 바와 같이 호출할 때, 이것은 제어요소(150)가 규정된 위치에 설계된 객체내의 특정 개수의 블록에 기록하도록 한다.
기록 방법은 또한 다른 방법이 호출되도록 한다. 예를 들어 패리티 지원(parity support)이 액세스되어질 장치(110-112)상에서 호출된다면, 기록은 자동적으로 XOR 방법을 호출하며, 상기 방법은 기록되어질 데이터 및 이전에 규정된 하나 이상의 패리티 장치에 기록될 패리티 데이터에 대하여 XOR 동작을 수행한다.
상기 방법을 호출하기 위하여, 요구자(116)는 허가 정보, 객체 식별자, 분할 ID, 객체 내에 기록될 블록의 시작 위치, 객체에 기록될 블록의 수, 선택 정보 및 기록될 데이터를 제공한다. 상기 방법이 호출되면, 제어요소(150)는 특정 객체를 제공된 특정 데이터를 사용하여 수정한다. 이것은 블록(244)에 도시되었다. 제어요소(150)는 이어 객체의 길이, 객체와 관련된 타임 스탬프 등과 같은 규정된 객체 내의 필수적인 속성을 수정한다. 이것은 블록(246)에 도시되었다. 제어요소(150)는 이어 요구되는 경우에는 분할 객체 리스트와 같은 다른 객체의 필수적인 속성을 수정한다. 이것은 블록(248)에 도시되었다. 제어요소(150)는 이어 특정 요구자에게 요구의 상태를 반환한다. 이것은 블록(250)에 도시되었다.
도 11은 Open_Read_Only_Objectx 방법을 도시한 흐름도이다. 상기 방법이 호출될 때, 제어요소(150)는 요구자가 특정 객체를 판독 전용을 목적으로 액세스하도록 한다. 따라서, 블록(230)에 도시된 바와 같이 상기 객체가 호출될 때, 요구자는 허가 정보, 분할 ID, 객체 ID 및 선택 정보를 제공한다. 제어요소(150)는 이어 객체가 사용중임을 나타내는 규정된 객체 내의 속성을 세팅한다. 이것은 블록(232)에 도시되었다. 제어요소(150)는 이어, 요구자에 의해 객체가 기록될 수 없음을 나타내는 객체 내의 판독 전용 속성을 세팅한다. 이것은 블록(234)에 도시되었다. 제어요소(150)는 이어 요구의 상태 및 규정된 객체의 길이를 반환한다. 이것은 블록(236)에 도시되었다.
도 12는 Read_Objectx 방법을 도시한 흐름도이다. 요구자(116)가 규정된 객체로부터의 데이터를 장치(110)가 반환하기를 원할 때, 상기 방법이 요구자(116)에 의해 호출된다. 요구자는 허가 정보, 객체 ID, 분할 ID, 판독될 블록의 시작 위치, 판독될 블록의 수 및 원하는 다른 선택 정보를 제공한다. 응답하여, 제어요소(150)는 요구의 상태, 반환되어질 데이터의 길이 및 상기 방법에 응답하여 반환되어지는 실제 데이터를 반환한다. 이것은 블록(256 및 258)에 도시되었다.
도 13은 Close_Objectx 방법을 설명하는 흐름도이다. 상기 방법이 블록(264)에 도시된 바와 같이 호출될 때, 요구자는 허가 정보, 객체 ID 및 요구된 선택 정보를 제공한다. 이에 응답하여, 제어요소(150)는 블록(266)에 도시된 바와 같이 규정된 객체 내의 데이터를 수정한다. 게다가, 저장 매체에 이미 기록되지 않았다면, 객체에 대한 기록의 결과로서 객체의 소정 변화는 이때에 기록된다. 제어요소(150)는 또한 블록(268)에 도시된 바와 같이, 객체x의 속성을 업데이트 한다. 예를 들어 객체가 새롭게 생성된 객체인 경우, 객체의 속성은 생성 시간 및 다른 요구된 속성 정보와 함께 업데이트된다. 게다가, 객체 내의 데이터가 수정되고 변화되는 경우에는 데이터의 길이가 수정되는 최종 시간을 나타내도록 속성이 수정되고, 객체가 소정의 요구자에 의해 더 이상 사용되지 않는다는 것을 나타내는 속성이 제어요소(150)에 의해 세팅된다.
제어요소는 또한 선택적으로, 객체와 관련되고 객체 속성내에 반영된 잔여 캐쉬 정보를 업데이트 한다. 이것은 블록(270)에 도시되었다. 예를 들어, 요구를 형성하는 특정 요구자(116)가 데이터가 닫혀 있는 객체에 대하여 여전히 캐쉬되는 또는 더 이상 캐쉬되지 않는 저장 장치(110)를 알리도록 구성된다면, 저장 장치(110)의 운영 시스템은 객체가 닫히고 빠르게 연속하여 다시 열리는 어플리케이션을 위하여 캐쉬 정보를 유지할 수 있다. 그러나 동시에, 저장 장치(110)는 코히어런시(coherency) 충돌의 이벤트에서 알려져야 할 필요가 있는 시스템(100)내의 모든 부품의 트랙을 유지할 수 있고, 또다른 요구자는 그런 동안에 이러한 객체에 액세스를 요구해야 한다. 제어요소(150)는 이어 블록(272)에 도시된 바와 같이 요구의 상태를 반환한다.
도 14는 Remove_Objectx 방법을 설명하는 흐름도이다. 상기 방법이 블록(278)에 도시된 바와 같이 호출될 때, 제어요소(150)는 저장 매체에서 객체를 삭제하기 위한 필수적인 단계를 수행한다. 이것은 블록(280)에 도시되었다. 규정된 객체 ID가 사용 가능한 것임을 반영하기 위하여, 제어요소(150)는 객체가 소거되어질 분할과 관련된 분할 객체 리스트를 수정한다. 이것은 블록(282)에 도시되었다. 제어요소(150)는 이어 블록(284)에 도시된 바와 같이 요구의 상태를 반환한다. 상기 방법을 호출하기 위하여, 요구자(116)는 허가 정보, 분할 ID, 객체 ID 및 소정의 요구된 선택 정보를 제공한다. 이어 제어요소는 블록(284)에 도시된 바와 같이 요구의 상태를 반환한다.
도 15는 저장 장치(10) 상의 분할을 생성하기 위하여 블록(290)에 도시된 바와 같이, 요구자에 의해 호출될 수 있는 Creat_Partitionx 방법을 설명하는 흐름도이다. Creat_Partitionx 방법이 장치를 하나 이상의 영역으로 분할하는 동안 저장 매체 상의 모든 공간이 고려되어질 필요는 없다는 것이 주목되어야 한다. 게다가, 분할 영역은 또한 디스크 상의 여러 영역에 이른다.
일 실시예에 있어서, 상기 방법은 함께 타일 배열 방식의 분할을 생성하기 위하여 사용되며, 이때에 분할은 장치 상의 저장 공간에 대한 실제적인 분리를 나타낸다. 이러한 배열은 데이터 어레이와 같은 서비스 레벨에 의해 공간을 분리하는 데에 사용된다. 이같은 분할은 리사이징(resize)될 수 없으나, 제거 또는 재생성될 수 있다.
본 발명의 다른 특성에 따라, 분할은 서비스 레벨에 따라 공간을 관리하기 위한 것보다는 논리적으로 객체를 조직화하기 위하여 논리적 분할로서 사용된다. 제 2 실시예에 있어서, 분할은 동적으로 리사이징될 수 있다.
상기 방법을 호출하기 위하여, 요구자는 허가 정보, 소정의 요구된 선택, 분할 ID 및 식별된 특정 부분에 할당되어질 공간을 식별하는 초기 공간 할당을 제공한다. 이에 응답하여, 제어요소(150)는 블록(292)에 도시된 바와 같이, 규정된 부분에 대하여 저장 매체상에 공간을 할당한다. 이어 제어요소(150)는 블록(294 및 296)에 도시된 바와 같이 분할 제어 객체 및 분할 객체 리스트를 세팅한다. 상술한 바와 같이, 분할 객체 리스트는 제거될 수 없으며 분할내에서 객체를 내비게이팅하기 위한 시발점으로서의 역할을 한다. 제어요소(150)는 이어 요구의 상태 및 처리되는 분할을 설명하는 분할 맵을 반환한다.
도 16은 Remove_Partitionx 방법을 도시하는 흐름도이다. 상기 방법을 호출하기 위하여, 요구자(116)는 허가 정보, 선택 정보 및 제거될 분할을 식별하는 분할 ID를 제공한다. 이것은 블록(304)에 도시되었다. 이에 응답하여, 제어요소(150)는 블록(306)에 도시된 바와 같이, 이전에 분할과 관련된 공간을 할당해제한다. 이어 제어요소(150)는 제거될 분할과 관련 분할 객체 리스트내의 모든 객체를 제거하고 분할 객체 리스트를 삭제하고 분할 제어 객체를 삭제한다. 이것은 블록(308,310,312)에 도시되었다. 이어 제어요소(150)는 요구의 상태 및 분할에 형성된 변화를 나타내는 분할 맵을 반환한다. 이것은 블록(314)에 도시되었다.
발명의 일 특성에 따라, 저장 장치가 서로에 대하여 독립적으로 관리 정책을 수행하도록 하기 위하여, 데이터 관리 정책은 각각의 저장 장치(110-112)와 통신한다. 이것은 인간의 간섭을 줄일 뿐만 아니라 보다 예측 가능하고 적시적인 관리 제어를 야기하는 중요한 장점을 제공한다.
예를 들어, 저장 장치(110-112)상의 데이터는 바람직하게 매주 백업될 수 있다. 시스템 능력이 실무적인 주중에는 방해받지 않도록 하기 위하여, 종래의 시스템은 일반적으로 주말 유휴 주기 동안에 백업된다. 그러나, 이용가능성의 기회는 시스템의 용량이 증가함과 동시에 점차적으로 축소되었다. 따라서, 가능한한 테라바이트의 데이터를 업데이트하기에 충분히 길게 시스템을 간섭하기 위한 시간을 찾기 위한 시도에 관한 문제점은 매우 어렵게 되었다.
따라서, 본 발명의 일 특성에 따라, 그것에 할당된 속성에 기초하여 객체에 대한 동작을 취함으로써, 객체가 자신의 백업이 취하여질 정확한 상태에 도달할 때마다 객체 지향 저장 장치(110-112)는 백업 기능을 알릴 수 있다. 또한 모든 파일의 백업은 데이터에 영향을 미치지 않고 -다른 것들이 여전히 업데이트 되는 동안의- 긴 주기동안 전개될 수 있다.
객체 지향 저장 장치(110-112)에 의한 동작을 호출할 수 있는 속성의 다른 예는 암호화, 압축, 버전닝 및 패리티 리던던시를 포함한다. 이러한 각각의 예에 있어서, 저장 장치(110-112)는 바람직하게 특정 객체 또는 객체 세트와 관련한 정책을 단지 숙지할 필요가 있다. 상기 장치 자신은 기능을 수행하거나 지정된 에이전트에게 서비스를 제공하도록 알린다.
예를 들어, 압축 및 암호화는 저장 장치(110-112) 자체 상에서 수행될 수 있다. 이에 따라, 장치와 통신하여야 하는 유일한 것은 단지 압축 또는 암호화가 객체에 대하여 요구된다는 사실이다. 에이전트에 의해 수행되는 관리 기능에 대하여, 관리 기능 정책뿐만 아니라, 에이전트가 기능을 수행할 적시에 저장 장치에 의해 액세스 될 수 있도록 기능을 수행하기 위한 에이전트의 식별도 저장 장치에 통지되어야 한다.
본 발명의 일 특성에 따라, 동일한 속성을 가지거나 의존성을 가지는 객체들이 식별될 수 있도록 객체들 사이의 연합(association)이 형성된다. 예를 들어 데이터 베이스가 6개의 파일 또는 객체를 포함한다고 가정하면, 모든 것이 닫혀지고 또는 다른 모든 것이 의존하는 객체로서 설계된 객체가 닫혀질 때까지 어떠한 것도 백업될 수 없다. 파일 서버(114)는 객체들 사이에서 이러한 종류의 상호 관계를 관리하기 위하여 요구될 수 있다. 게다가, 본 발명은 또한 어레이된 패리티 세트의 경우에서와 같이 장치 상호간의 의존성을 형성한다. 하나의 장치 또는 객체가 그룹의 나머지가 동일한 근본적인 특성을 가진다고 확신하는 그룹을 형성하는 것을 가능하게 함으로써, 그룹의 관리는 보다 효율적이고 효과적으로 이루어진다.
도 17 내지 도 24는 저장 장치 상의 객체에 의해 주어지는 방법을 호출함으로써 수행될 수 있는 관리 기능을 설명하는 흐름도이다. 방법들을 호출하는 것은 제어요소(150) 및/또는 관련 제어요소가 호출된 방법과 관련된 관리 기능을 수행하기 위한 단계를 취하도록 한다.
도 17은 Export_Objectx 방법을 설명하는 흐름도이다. 요구자(116)는 허가 정보, 선택 정보, 객체 ID, 목표 장치 ID 및 목표 분할 ID를 제공함으로써, 블록(320)에 도시된 바와 같이 상기 방법을 호출한다. 익스포트 방법은 저장 장치가 소정의 객체와 관련된 속성에서 표현되는 규칙에 의존하여 동작을 취하도록 한다. 예를 들어 이것은 다른 장치에 대하여 객체의 버져닝을 지원 또는 백업을 초기화하는 데에 사용될 수 있다.
Export_Objectx 방법이 호출될 때, 제어요소(150)는 블록(322)에 도시된 바와 같이 저장 매체로부터 규정된 객체를 획득한다. 이어 제어요소(150)는 요구자(116)에 의해 규정된 목표 장치에서 Open_Create 방법을 호출한다. 이것은 블록(324)에 도시되었다. 이어 제어요소(150)는 규정된 객체의 데이터 및 속성을 공급하는 목표 장치에서 Write 방법을 호출한다. 이것은 블록(326)에 도시되었다. 이어 목표 장치에서 제어 장치(150)는 객체가 목표 장치에 기록된 후에 목표 장치 상의 객체를 닫는 Close 방법을 호출한다. 이것은 블록(328)에 도시되었다. 최종적으로, 제어요소(150)는 목표 장치에 기록되는 객체의 새로운 객체 ID와 함께 요구자에게 요구의 상태를 반환한다. 이것은 블록(330)에 도시되었다.
제어요소(150)에 의해 구현된 인터페이스(128)는 또한 요구자가 재검토를 위한 객체 속성을 획득하는 것 및 객체 속성을 세팅하는 것을 허가한다. 도 18 및 도 19는 대응하는 Get_Objectx_Attributes 및 Set_Objectx_Attributes 방법을 각각 도시하는 흐름도이다.
블록(336)에 도시된 바와 같이 호출된, 도 18에 도시된 방법은 제어요소(150)가 규정된 객체에 대한 속성을 획득하도록 한다. 일 실시예에 있어서, 요구자는 허가 정보, 객체 ID 또는 객체 ID 리스트 및 선택 정보를 제공한다. 이어 제어요소(150)는 객체 ID 또는 객체 ID 리스트와 관련된 속성을 획득하여 요구의 상태와 함께 요구자에게 반환한다. 이것은 블록(338)에 도시되었다.
도 19에 도시된 Set_Objectx_Attributes 방법은 블록(344)에서와 같이 제어요소(150)에 허가 정보, 객체 ID, 및 선택 정보를 제공하는 요구자에 의해 호출될 수 있다. 이어 제어요소(150)는 요구자에 의해 제공된 정보를 사용하여 규정된 객체의 속성을 수정하고 수정됨에 따라 규정된 객체의 속성과 함께 요구의 상태를 반환한다. 이것은 블록(346 및 348)에 도시되었다.
본 발명의 다른 특성에 따라, 객체는, 객체 상에 배치되었던 로크(lock)를 소유하는 서버에 의해 객체가 언록킹되는 경우에만 객체가 액세스되도록, 록킹될 수 있다. 일 실시예에 있어서, 객체는 객체 레벨, 분할 레벨 또는 장치 레벨에서 록킹될 수 있다. 로크 메카니즘은 서버 상호 간에 액세스 결정(resolution)을 제공한다. 바람직한 실시예에 있어서, 이같은 로크는 동시 발생적인 업데이트를 스케쥴링하는 데에 뿐만 아니라 유지 기능 동안에 액세스를 방지하는 데에 사용된다. 도 20 내지 도 22는 Get_Attributes 및 Set_Attributes의 예로서 고찰될 수 있는 로크 방법을 도시하는 흐름도이다. 그러나, 요구자의 클러스터들 사이에서 데이터를 공유하는 데에 사용될 수 있도록 하는 이러한 방법의 특정 예에 대한 추가의 설명이 제공된다.
도 20은 Read_Lock_Attributes 방법을 설명하는 흐름도이다. 상기 방법은 요구자로부터의 허가 정보, 객체, 분할 또는 장치 ID, 로크 파라미터 및 소정의 요구된 선택 정보를 제어요소(150)에 제공함으로써, 블록(354)에 도시된 바와 같이 호출된다. 이에 응답하여, 제어요소(150)는 규정된 객체가 세팅된 로크를 가지는 지의 여부를 결정한다. 이어 제어요소(150)는 로크를 소유하는 요구자의 요구에 대한 상태를 반환한다. 이것은 블록(356)에 도시되었다.
도 21은 Set_Lock_Attributes 방법을 설명하는 흐름도이다. 본 발명은 블록(362)에 도시된 바와 같이, 허가 정보, 객체, 분할 또는 장치 식별자 정보, 로크 파라미터 및 선택 정보를 제공함으로써, 요구자에 의해 호출될 수 있다. 상기 정보가 호출될 때, 제어요소(150)는 식별된 객체와 관련된 로크를 검사한다. 이것은 블록(364)에 도시되었다. 제어요소는 이어 요구자의 ID를 사용하여 로크 또는 언로크 동작의 수행을 시도한다. 이는 블록(366)에 도시되었다. 동작을 요구하는 요구자가 로크의 소유자일 때, 동작이 수행된다. 그렇지 않을 경우에, 동작은 수행되지 않는다. 소정의 경우, 제어요소(150)는 로크를 소유하는 서버의 ID와 함께 요구의 상태를 반환한다. 이것은 블록(368)에 도시되었다.
도 22는 Reset_Lock_Attributes 방법을 설명하는 흐름도이다. 본 기능은 로크를 소유하는 서버가 더 이상 동작하지 않는 이벤트에서 로크의 리세트를 시도하는 데에 사용된다. 상기 방법은 블록(374)에 도시된 바와 같이, 허가 정보, 객체, 분할 또는 장치 식별 정보, 로크 파라미터 및 소정의 요구된 선택 정보를 제공함으로써, 호출될 수 있다. 이에 응답하여, 제어요소(150)는 규정된 객체, 분할 또는 장치를 블록(376)에 도시된 바와 같이 로킹하고 로크를 소유한 서버의 ID와 함께 요구의 상태를 반환한다. 이것은 블록(378)에 도시되었다.
도 23 및 도 24는 Get 및 Set_Device_Association 방법을 설명하는 흐름도이다. 상기 방법들은 장치(110-112) 사이의 상호 관계를 정의 또는 심문한다. 이같은 관계에 대한 예시적인 구현은 저장 장치(110-112) 중의 하나가 제 1 세트의 장치의 마스터로 식별되고 나머지는 세트의 종속 멤버가 되는 방법을 포함한다. 세트의 최우선자(first) 또는 마스터는 세트 속성에 있어서의 변화를 다른 멤버에게 보급하는 책임이 있다. 다른 멤버는 그들이 세트의 최우선자 또는 마스터로부터 제공되지 않은 경우의 속성 설정은 무시한다. 저장 장치(110-112)가 이러한 기능을 수행하도록 하기 위하여, 저장 장치에는 자기-검사를 수행할 수 있는 능력이 제공된다. 이것은 장치가 더 큰 장치 그룹의 멤버쉽내에 속하는 지의 여부를 결정하기 위하여 자신을 검사하는 것을 허가한다.
도 23에, Get_Device_Association 방법이 도시된다. 본 방법은 블록(384)에 도시된 바와 같이, 허가 정보 및 선택 정보를 제공함으로써 호출될 수 있다. 이에 응답하여, 제어요소(150)는 요구의 상태 및 장치가 멤버가 되는 요구된 연합을 반환한다. 이것은 블록(386)에 도시되었다.
도 24는 Set_Device_Association 방법을 도시한 흐름도이다. 본 방법은 블록(392)에 도시된 바와 같이 허가 정보, 선택 정보, 멤버 리스트 및 연합을 정의하는 속성을 제공함으로써 호출될 수 있다. 이에 응답하여, 제어요소(150)는 블록(394)에 도시된 바와 같이 저장 매체 상에 포함된 장치 연합 객체(156)를 수정한다. 장치 연합 객체는 요구자에 의해 제공된 속성을 포함하도록 수정되고 객체 속성이 최종적으로 수정된 때를 나타내는 타임 스탬프 등을 포함하도록 수정된다. 제어요소(150)는 블록(396)에 도시된 바와 같이, 요구의 상태를 반환한다.
예시적으로 상술된 허가 정보는, 저장 장치(110-112)로부터의 응답을 획득하기 위해 요구된 신임장(credential)을 파일 서버(114)가 제공하도록 소정의 요구자(116-120)를 제어함으로써, 파일 서버(114)가 저장 장치에 대한 액세스를 게이팅하도록 허가한다. 파일 서버(114)는 또한 설치 보안 정책을 고수하는 I/O 요구를 수행하기만을 저장 장치(110-112)에 지시할 수도 있다. 허가 보안 능력을 기초로 하는 키는 예시적으로 Set_Object_Attributes 방법에 의해 저장 장치(110-112)와 실질적으로 통신한다. 적합한 레벨의 보안이 저장 장치(110-112)에 대하여 설정되면, 상기 저장 장치는 보안 응낙에 대한 모든 I/O 명령을 체크하도록 구성될 수 있다. 그러나, 상술한 바와 같이, 소정의 어플리케이션은 보안의 사용을 필요로 하지 않는다. 게다가, 특정 서버 클러스터는 다른 물리적인 설비 내에 위치된 소정의 장치를 가지는 경우에, 근거리 트래픽으로부터의 통신을 위한 것이 아닌 원거리에 위치된 장치와의 통신을 위한 고레벨의 보안을 정의하는 것이 바람직하다. 이것은 원거리에 위치된 요구자 또는 서버를 위한 보안의 사용을 허가하지만, 근거리 요구자 또는 서버를 위한 이같은 보안의 사용을 수반하는 성능 손실을 회피한다.
게다가, 각각의 저장 장치(110-112)는 바람직하게, 보안 메시지 및 객체를 타임 스탬핑하는 데에 사용되는 판독가능한 단조 증가하는 클록을 포함한다. 일 실시예에 있어서, 여러 장치를 위한 클록이 시스템 수준(system-wide) 기반 상에서 동기화된다. 다른 실시예에 있어서, 파일 서버(14)는 저장 장치와 저장 장치 사이에 불일치 및 값들을 조정한다.
따라서, 본 발명은 종래의 저장 장치를 능가하는 중요한 장점을 제공하는 디스크 드라이브와 같은 객체 지향 저장 장치를 제공한다는 것을 알 수 있을 것이다. 객체 지향 저장 장치는 클러스터 구조를 상당히 향상시킨다. 예를 들어, 객체 지향형으로 데이터를 저장함으로써, 데이터는 저장장치 자체에 의해 관리될 수 있다. 객체는 자신의 공간을 관리하는 데에 책임을 떠맡을 수 있도록, 자신의 상주 데이터에 대한 충분한 정보를 저장 장치에 제공한다. 게다가, 데이터의 공유는 장치가 논리적 엔티티를 구성하고 있는 것들에 대한 정보를 소유하고 있을 때 더욱 지능적으로 제어될 수 있다. 예를 들어, 두 개의 시스템이 블록 지향 장치 상에 저장된 데이터를 공유한다면, 모든 메타데이터 동작은 현재의 액세스를 위하여 제어되어야 한다. 반면에, 객체 지향 장치에 있어서는, 많은 메타데이터 동작은 그것을 엑세스하는 시스템에 대하여 불명료하다. 따라서, 시스템은 단지 사용자 데이터에 상충하는 액세스에 직접 관여하여야만 한다. 게다가, 장치 자신에 의해 수행되는 공간 관리는, 동시에 동일한 저장 장치 상의 공간에 대한 관리를 시도하는 두 개의 시스템으로부터 발생할 수 있는 소정의 논쟁 또는 혼란을 제거한다.
게다가, 이질적인 컴퓨터는 객체 추상적 관념에 의해 더욱 쉽게 형성된다. 객체 지향 저장 장치는 적어도 운영 시스템이 해석할 수 있는 조직을 가지도록 하는 능력을 제공한다
게다가, 클러스터링된 시스템의 구현은 여러 이유로 객체 지향 저장 장치를 사용함으로써 강화된다. 예를 들어, 메타데이터는 장치를 그대로 남겨두는 것을 결코 요구하지 않으며, 이것은 소정 개수의 I/O 동작을 제거한다.
게다가, 장치는 어떤 객체가 소정 시간에 열리거나 또는 닫히는 지를 알고, 이러한 정보를 보다 효율적으로 캐쉬 데이터로 사용할 수 있다. 장치가 판독되는 객체의 레이아웃을 알고 있기 때문에 프리페치(prefetching)도 역시 보다 효율적이게 된다. 저장 장치는 연속적인 액세스 패턴을 보다 효율적으로 결정할 수 있다. 장치 내의 캐시도 역시 그것을 액세스하는 다중 시스템에 대하여 메타데이터를 유지할 수 있다. 게다가, 보다 적합하게 데이터를 위치시키기 위한 경우와 같은 서비스의 결정에 대한 질에 상기 장치가 한몫을 한다. 장치는 장치가 저장을 할당하는 데에 책임을 가지는 경우에만 이것을 수행할 수 있다. 반면에, 대부분의 어떠한 운영 시스템도 디스크 드라이브 상에 영역별로 데이터를 할당할 수 없다. 따라서, 드라이브에 이러한 능력을 제공하는 것은 성능을 향상시킨다.
본 발명은 또한 드라이브 어레이로서 배열된 디스크 드라이브내에서 구현될 수도 있다. 디스크 드라이브 어레이상에 저장된 정보는 종종 디스크 드라이브 자체 보다 더욱 유용하기 때문에, 디스크 어레이는 종종 RAID로 언급된다. 여러 타입의 RAID 시스템 또는 RAID 레벨이 공지되었다. 예를 들어 제 1 레벨의 RAID는 상술한 바와 같이 미러링된 디스크를 제공하는 것으로 특징 지워진다. 제 5 레벨의 RAID에 있어서, 어레이에 저장되어질 데이터뿐만 아니라 패리티 또는 리던던시 데이터 모두 그룹 내 모든 디스크 드라이브에 걸쳐 존재한다. 제 5 레벨의 RAID는 체크 디스크를 포함한 모든 디스크에 걸쳐 데이터를 분배하고 정보를 체크한다. 다른 RAID 레벨(예를 들어 레벨 2 내지 레벨 4)은 제어기 및 인터페이스를 지원하는 어레이를 구비한 디스크 어레이(DISC ARRAY HAVING ARRAY SUPPORTING CONTROLLERS AND INTERFACE)로 등록된 미국 특허 제 5,617,425호에 상세히 개시되었다.
도 25 내지 도 29는 본 발명의 일 특성에 따라 수행되는 기록 동작을 설명하며, 데이터는 어레이 형태로 디스크 드라이브 상에 객체로서 저장된다. 도 25의 실시예에 있어서, 저장 장치(110-112)와 같은 저장 장치로서 목표 드라이브(402) 및 패리티 드라이브(404)를 포함하는 디스크 드라이브 어레이에 접속된 파일 서버(114), 요구자(또는 호스트)(116) 및 상호 접속부(122)가 도시되었다. 목표 드라이브(402)는 기록되어질 객체 또는 그것의 일부를 유지하는 반면에, 패리티 드라이브(404)는 목표 드라이브(402) 상에 저장된 목표 객체와 관련된 패리티 정보를 유지한다.
도 25에 있어서, 드라이브 어레이는 데이터와 패리티가 그룹 내 모든 드라이브에 걸쳐 분포되어 있는 RAID 5 어레이로 구현되었다. 이에 따라, 본 기록 동작에 대하여, 드라이브(402)는 목표 드라이브이며, 드라이브(404)는 패리티 드라이브이다. 다시 말하면, 목표 드라이브는 패리티 정보를 유지하고, 패리티 드라이브도 역시 데이터를 유지한다. 그러나, 하기의 단일 기록 동작에 대하여, 드라이브(402)는 목표 드라이브이며, 드라이브(404)는 대응 패리티 드라이브이다. 본 발명이 RAID 5 이외의 다른 RAID 레벨 이용하여 구현될 수 있다는 것이 주목되어야 한다. 이같은 시스템의 본 발명은 기술 분야의 당업자에게 분명하여 질 것이다.
도 25에 있어서, 목표 드라이브(402) 및 패리티 드라이브(404)는 서로 파이버 채널 인터페이스를 통해 또는 다른 직렬 인터페이스와 같은 다른 적합한 인터페이스를 통해 접속된다.
도 26 및 도 27은 목표 드라이브(402) 및 패리티 드라이브(404)를 각각 도시한다. 각각의 드라이브는 제어요소(150) 및 하나 이상의 디스크(132)를 포함한다. 각각의 드라이브는 또한 (상술한 데이터 헤드와 같은) 기록/판독 회로(406) 및 배타적 논리합(XOR) 회로(408)를 포함한다. 목표 드라이브(402)는 기록되어질 목표 객체를 저장하는 디스크 공간(410)을 포함한다. 패리티 드라이브(404)는 해당 패리티 객체를 저장하는 디스크 공간(412)을 포함한다. 드라이브(402, 404)의 동작은 도 28 및 도 29를 참조하여 아래에서 상세히 설명된다.
소형 컴퓨터 시스템 인터페이스(SCSI) XOR 명령을 구현한 종래의 디스크 어레이는 디스크 드라이브가 드라이브 오류에 대하여 패리티 보호를 구현하는 데에 필수적인 비트 조작을 수행하는 것을 가능케 한다. 이같은 명령은 하나의 디스크 드라이브에 기록된 다른 섹터에 대하여 패리티 정보를 포함하는 다른 디스크 드라이브 상의 해당 섹터가 적절하게 업데이트될 수 있도록, 호스트(또는 요구자)가 디스크로의 섹터 액세스하도록 요구한다. 그러나, 상술한 객체 지향 디스크 드라이브는 호스트와 디스크 드라이브 상의 실제 저장 섹터 사이에 추상적 관념의 층를 도입한다. 특히, 디스크 드라이브는, 호스트(또는 요구자)가 기본적인 섹터 어드레싱 체계로의 액세스를 가질 수 없도록, 디스크 공간을 객체로서 관리한다. 디스크 드라이브는 자체적으로, 요구자 또는 호스트가 하나의 디스크 드라이브 상에 기록된 데이터의 일부를 다른 디스크 드라이브 상의 위치와 상호관련시키는 것을 불가능하게 하는 공간 관리에 대한 책임을 진다. 따라서 요구자는 기록되어진 디스크 드라이브의 블록 상의 어드레스를 알 수 없고 그것은 해당 패리티 어드레스를 계산할 수 없다. 이것은, 불가능하지 않다면 상술한 바와 같이 객체 지향 디스크 드라이브 내의 종래의 XOR 기능을 사용하는 것을 매우 어렵게 한다.
이에 따라, 본 발명은, 패리티 그룹을 형성하는 디스크 드라이브 세트 내의 각각의 디스크 드라이브에서 호출되는 Define_Parity_Group로 언급되는 방법을 제공한다. 상기 방법은 두 가지를 수행한다. 첫째, 상기 방법은, 종래의 드라이브 어레이 내의 섹터에 기초한 XOR 명령과 같은 기능을 수행하기 위하여, 표준 Write_Object 방법의 호출을 가능하게 하는 충분한 정보를 제공한다. 상기 방법은 또한 특정 드라이브의 공유 패리티 데이터를 유지하는 세트내의 각각의 드라이브 상에서 객체가 생성되도록 한다. 패리티 객체 ID는, 패리티 정보를 업데이트하기를 원하는 소정의 드라이브가 자신의 요구를 어드레스할 수 있는 정확한 객체 식별자를 인지하도록, 각각의 드라이브에 알려진 공지된 ID이다.
Define_Parity_Group 방법은 도 28을 참조하여 상세히 설명된다. 우선, 요구자 또는 호스트는 패리티 그룹내의 각각의 드라이브에서 상기 방법을 호출한다. 이것은 블록(420)에 도시되었다. 상기 방법을 호출하기 위하여, 요구자는 다음과 같은 여러 가지를 제공한다.
1. 패리티 그룹을 포함하는 드라이브의 정렬된 리스트. 이것은 예시적으로 각각의 드라이브에 대하여 일련의 번호 및 어드레스를 포함한다.
2. 패리티를 계산하는 데에 사용되는 알고리즘. 간단한 예시적인 구현에 있어서, 모듈 산술이 기록되어질 데이터의 블록 어드레스에 대하여 수행된다. 이같은 산술은 (상술한 항목 1의 정렬된 리스트에 기초한) 패리티 드라이브 어드레스 및 (원하는 패리티 정보를 포함하는 패리티 객체의 관련 일부가 되는) 패리티 드라이브 상의 패리티 객체 내의 상대 블록 어드레스를 제공한다.
3. 예시적으로 블록의 유니트 내의 패리티 스트라이프의 데이터 량. 패리티 데이터가 각각의 드라이브 상의 공간 전반에 산재된다면, 상기 정보는 원자 단위의 할당이 된다.
4. 패리티 객체 식별자. 패리티 객체를 업데이트하기 위한 Write_Object 방법을 호출하는 드라이브는 그것을 상술한 2 항목에 전개된 바와 같이 결정된 패리티 드라이브 상의 이러한 객체 ID로 제공한다. (2 레벨 패리티와 같은) 다중 레벨의 패리티도 역시 구현될 수 있다는 것을 주목하여야 한다. 따라서, 각각의 드라이브는 두 개의 패리티 객체까지 포함할 수 있다. 예시적인 구현에 있어서, 드라이브가 2-레벨 패리티를 가지는 디스크 어레이 내에서 사용되는 경우, 두 개의 공지된 객체 ID가 할당되고 각각의 드라이브에 의해 보유된다. 제 2 패리티 객체의 존재는 2-레벨 패리티가 사용된다는 것을 나타낸다.
5. 패리티 객체 할당 정책. 이것은, 각각의 드라이브가 단일의 인접한 범위의 디스크 공간으로서 패리티 객체를 할당하거나 또는 사용자 데이터 객체와 함께 패리티 객체를 배치하는지의 여부를 나타낸다. 따라서, 패리티 객체 및 데이터 객체가 도 26 및 도 27에 인접한 디스크 공간으로 도시되었으나, 이것은 단지 예시적인 것일 뿐이다. 패리티 객체가 데이터와 함께 배치되는 경우 이것은 여전히 미리-할당될 수 있다는 것을 주목되어야 한다.
Define_Parity_Group 방법의 호출에 응답하여, 패리티 그룹 내의 각각의 디스크 드라이브의 제어요소(150)는 패리티 데이터를 위해 요구된 공간의 백분율을 계산한다. 이것은 블록(422)에 도시되었다. 패리티 객체를 위해 요구된 공간의 량은 패리티 그룹 리스트내의 디스크 드라이브의 수에 기초하여 결정된다. 예를 들어 리스트내에 9 개의 디스크 드라이브가 존재한다면 각각의 드라이브는 자신의 공간중 1/9를 패리티 정보를 위해 할당하여야 한다. 이러한 량의 공간은 상기 방법의 호출에 기초한 요구자 또는 호스트에 의해 제공된 공지된 패리티 객체 ID를 사용하여 식별된다. 이것은 블록(424)에 도시되었다.
삭제
패리티 세트 또는 그룹 리스트내의 각각의 드라이브는, 디스크 드라이브에 전원이 공급되거나 리세트되는 매순간마다 그것이 패리티 그룹이 손상되었는지를 검증할 수 있도록, 패리티 그룹을 정의하는 정보를 유지한다. 따라서, 정보는 블록(426)에 도시된 바와 같이 비휘발성 메모리 내에 저장된다.
디스크 드라이브의 패리티 세트가 생성되고 하나 이상의 패리티 객체를 유지하기 위하여 각각의 디스크 드라이브 상의 공간에 할당된다면, 하나 이상의 드라이브 상의 데이터 객체 내에 저장된 데이터는 업데이트될 수 있다. 도 29는 본 발명에 따른 데이터 객체의 업데이트 및 패리티 객체의 해당 업데이트를 도시한 블록도이다.
데이터를 업데이트하기 위하여, 업데이트될 데이터를 요구하는 요구자(116)는 패리티 그룹내의 디스크 드라이브 중 하나에서 상술한 Write_Object 방법을 호출한다. 도 25 내지 도 27에 도시된 실시예에 있어서, 요구자(116)는 목표 드라이브(402)상에서 Write_Object 방법을 호출한다. 이것은 도 26에서 화살표(428)로 그리고 도 29에서는 블록(430)에 도시되었다. 이러한 방법을 호출하기 위하여, 요구자는 예시적으로, 업데이트될 객체를 식별하는 객체 식별자, 분할 ID, 객체 내에 기록되어질 블록의 초기 위치, 객체 내에 기록될 블록의 수, 선택 정보 및 기록될 데이터를 제공한다. 목표 드라이브(402)는, Write_Object 방법을 수행하는 것은 업데이트 되는 객체와 관련된 패리티 정보를 업데이트 하는 것을 포함하여야 한다는 것을 알고 있다. 목표 드라이브(402)는, 비휘발성 메모리 내의 Define_Parity_Group 방법을 수행하는 동안에 제공 및 생성되는 정보를 상기 드라이브가 저장하기 때문에 이러한 사실을 알고 있다.
패리티 정보를 업데이트 하기 위하여, 목표 드라이브(402)는 여러 단계를 수행한다. 우선, 목표 객체내의 규정된 위치에서 이전 데이터(old data)를 판독하여 상기 위치에 기록되어질 새로운 데이터와 함께 XOR 회로(408)에 제공한다. 이것은 도 29의 블록(432) 및 도 26의 화살표(434, 436, 438)로 도시되었다.
이어 목표 드라이브(402)는 이전 데이터와 새로운 데이터를 XOR 처리하여 중간 패리티 정보를 얻는다. 이것은 도 29의 블록(440)에 도시되었다. 목표 드라이브(402)는 중간 패리티 정보를 도 26의 출력(442)에 제공한다. 이어 목표 드라이브(402)는 새로운 데이터를 목표 객체(410)내의 목표 위치에 기록하여, 목표 객체를 업데이트한다. 이것은 도 29의 블록(444)에 도시되었다.
이어 목표 드라이브(402)는 바로 업데이트되는 목표 객체(410)에 해당하는 패리티 객체를 식별하는 패리티 드라이브(404)상의 다른 Write_Object 방법을 호출한다. 이것은 도 29의 블록(446) 및 도 27의 화살표(448)에 도시되었다. 목표 드라이브(402)는 여러 방법으로 패리티 객체를 위한 목표 위치를 계산할 수 있다. 예를 들어, 목표 드라이브는 기록되어지는 블록 목표 객체의 상대 섹터 어드레스로부터 위치를 계산할 수 있다. 상기 상대 어드레스는 패리티 그룹 내의 드라이브 개수로 나누어져서, 패리티 드라이브(404) 상의 패리티 객체 내의 상대 어드레스를 제공한다. 상기 패리티 드라이브 어드레스는 Define_Parity_Group 방법에서 규정된 알고리즘에 의해 결정된다. 목표 드라이브(402)는 이어 Write_Object 방법을 형성하고, 상기 상대 어드레스를 사용하여 패리티 객체(412) 및 상기 객체내의 적절한 위치를 식별하는 패리티 드라이브(404) 상에서 상기 방법을 호출한다.
예시의 방법에 의해, 업데이트될 드라이브(404)상의 패리티 객체내의 상대 블록을 계산하기 위하여, 목표 드라이브(402)는 다음의 식을 사용할 수 있다.
B = INT(S/D-1) (1)
여기에서 B는 패리티 객체내의 상대 블록이고,
S는 목표 드라이브(402)에 기록되는 상대 섹터 어드레스이며,
D는 패리티 그룹 내의 드라이브 개수이다.
패리티 드라이브 어드레스를 계산하기 위하여, 목표 드라이브(402)는 다음의 식을 사용할 수 있다.
P = Mod(S/D-1) (2)
여기에서 P는 패리티 드라이브의 패리티 그룹 내의 드라이브 리스트로의 변위이다(P를 계산하는 데에 사용되는 리스트는 목표 드라이브(402)의 어드레스를 제외하여야 한다).
Write_object 방법에 응답하여, 패리티 드라이브(404)는 명령을 자신의 패리티 객체에 대한 기록으로 인지하고, 패리티 동작을 수행한다. 이같은 동작은 도 29의 블록(450) 및 도 27의 화살표(452)에 도시된 바와 같이, 이전의(old) 패리티 데이터를 판독하는 단계를 포함한다. 이어 패리티 드라이브(404)는 이전의 패리티 정보를 목표 드라이브(402)로부터의 중간 패리티 데이터와 XOR처리한다. 이것은 도 29의 블록(454) 및 도 27의 화살표(456 및 458)에 도시되었다. XOR 연산의 결과는 디스크(132)의 패리티 객체에 기록되는 업데이트된 패리티 정보가 된다. 이것은 도 29의 블록(460) 및 도 27의 화살표(462 및 464)에 도시되었다. 이어서 패리티 객체의 업데이트가 완료된다.
도 30은 (도 6에 도시된 것과 같은) 데이터 객체(500)의 보다 상세한 예시이다. 본 발명의 일 특성에 따라, 데이터 객체(502)는 속성 및 다수의 데이터 부분(504, 506 및 508)을 포함한 다수의 부분들을 포함하며, 이들 각각의 데이터 부분은 에러 정정 코드 부분(510, 512 및 514)과 각각 관련된다. 에러 정정 코드 부분(510, 512 및 514)이 해당 데이터 부분에 인접하여 도시되었으나, 그들은 디스크 상에 이러한 방법으로 기록될 필요는 없고 편의상 이러한 방법으로 도시되었다. 따라서, 본 발명의 일 특성에 따라, 객체(500)의 각각의 데이터 부분 (및 실지로 가능한 속성 부분)은 공지된 방식으로 에러 정정 코드(ECC) 정보를 생성하기 위하여 사용된다. 사용자 데이터가 소정의 에러를 포함하는 지의 여부를 결정하기 위해 그리고 (사용된 코드에 의존하여) 상기 에러를 위치시키고 정정하기 위하여 해당 사용자 데이터를 다시 판독할 때, 상기 정보는 사용될 수 있다. 바람직한 실시예에 있어서, 상기 ECC 정보는 리드 솔로몬 코드(Reed Solomon Code)를 사용하여 생성된다. 그러나, 소정의 적절한 코드가 ECC 정보를 생성하는 데에 사용될 수 있다.
종래의 디스크 드라이브에 있어서, 섹터가 판독 불가능한 것이 되고 운영 시스템에 의해 특수한 목적으로 사용된다면, 이것은 실지적으로 전체 디스크가 판독 불가능한 것이 된다. 예를 들어 마스터 부트 리코드, 분할 부트 리코드, FAT 테이블 또는 루트 디렉토리가 판독 불가능하다면, 이것은 전체 디스크 내용의 본질적인 손실을 야기한다. 종래의 운영 시스템은 키 파일 시스템 관리 데이터와 같은 손실에 직면하여 판독 가능한 데이터를 회복할 수 있는 능력을 가지지 못한다. 이에 따라, 본 발명의 일 특성에 따라, 디스크 드라이브상의 객체 지향 데이터 구조는, 이전에는 운영 시스템의 도메인이었던 기본 파일 시스템 구조를 유지하는 데에 책임이 있는 디스크 드라이브를 형성한다. 본 발명의 일 특성에 따라, 기본 파일 시스템 데이터의 리던던시 복사는 각각의 블록 또는 데이터 부분과 함께 자신의 관련 ECC 부분내에 저장된다. ECC 부분이 이미 디스크 상에 저장되기 때문에, 데이터 객체의 ECC 부분내의 파일 시스템 정보는 소정 방식으로 성능 또는 사용자 능력에 영향을 주목 못한다.
도 31은 파일 시스템 정보가 디스크 상에 정보를 기록하기 이전의 ECC 정보를 사용하여 조합되는 방법 및 내장되는 방법을 도시한 블록도이다. 도 31 및 도 32는 또한 파일 시스템 정보가 본 방법의 일 특성에 따라 파일 시스템 데이터를 재구성하기 위하여 사용되는 방법을 도시한다. 도 31은 엔코더(516), ECC 발생기(518), XOR 회로(520), 디스크(132) 및 기록/판독 회로(406), ECC 발생기(522), 디코더(524) 및 XOR 회로(526)를 도시한다. 엔코더(516), ECC 발생기(518), XOR 회로(520), 디코더(524), ECC 발생기(522) 및 XOR 회로(526) 모두가 디스크 상의 제어요소(150)내에 구현될 수 있거나 개별적으로 구현될 수 있다는 것이 주목되어야 한다.
사용자 데이터는 우선 호스트, 요구자 또는 파일 서버로부터 엔코더(516)에 제공된다. 엔코더(516)는 일반적으로 에러 비율을 감소시도록 구현된 미리 결정된 코딩 알고리즘에 따라 데이터를 부호화한다. 부호화된 사용자 데이터는 ECC 발생기(518)에 제공된다. ECC 발생기(518)는 공지된 방식으로 부호화된 사용자 데이터에 기초하여 ECC 정보를 생성한다. 생성된 ECC 정보는 사용된 특정 타입의 에러 정정 코딩 체계에 의존한다. 상기 ECC 정보는 차례로 XOR 회로(520)에 제공된다. 파일 시스템 데이터는 또한 XOR 회로(520)로의 입력(521)에 제공된다. 도 31의 실시예에 있어서, 파일 시스템 데이터는 사용자 데이터가 디스크(132) 상에 기록되는 위치를 식별하는 위치 정보이다. 예를 들어 상술한 객체 지향 시스템에 있어서, 위치 정보는 사용자 데이터가 속하는 객체를 식별하는 객체 식별자를 포함한다. 상기 위치 정보는 또한 식별된 객체 내의 관련 데이터 부분의 상대 위치를 식별하는 상대 위치 정보를 포함한다. XOR 회로(520)의 출력은 그 내부에 내장된 (또는 배정된(seeded)) 위치 정보와 함께 ECC 정보를 제공한다. 상기 정보는 판독/기록 회로(406)에 제공되어, 엔코더(516)에 의해 제공된 부호화된 사용자 데이터를 포함하는 데이터 부분에 대하여 관련된 ECC 부분으로 디스크(132) 상에 기록된다.
(정상적인 판독 동작을 달성하기 위하여) 디스크(132)로부터의 정보를 다시 기록할 때, 제어요소(150)는, 예상된 위치 정보를 XOR 회로에 제공하고 상기 정보를 (내장 위치 정보를 포함하는) ECC 정보와 XOR 처리함으로써 Read_Object 기능을 수행한다. XOR 회로의 출력은 판독되는 사용자 데이터와 관련된 ECC 정보를 생성한다. 상기 정보는 ECC 발생기에 제공되며, 이것은 소정의 에러가 부호화된 사용자 데이터 내에서 발생하는지의 여부를 결정한다. 그렇지 않은 경우, 부호화된 사용자 데이터는 에러가 없는 정보가 요구자 또는 사용자에게 제공되는 디코더에 제공된다. 에러가 발생된 경우, 제어요소(150)는 사용된 특정 에러 코딩 체계에 의존하여 에러의 식별 및 정정을 시도할 수 있다. 대안적으로, 제어요소(150)는 데이터가 하나 이상의 정정되지 않은 에러를 포함한다는 것을 알리는 에러 플래그를 간단하게 제공할 수도 있다.
그러나, 시스템 정보(예에서 위치 정보로 설명됨)가 손실된 경우, 제어요소(150)는 다른 방식으로 동작한다. 제어요소(150)는 디스크(132) 상의 데이터가 판독되도록 한다. 이것은 도 32의 블록(528)에 도시되었다. 부호화된 사용자 데이터는 디코더(524) 및 ECC 발생기(522)에 제공된다. ECC 발생기(522) 및 ECC 발생기(518)는 적절한 멀티플렉싱 회로를 갖춘 동일한 발생기일 수 있다. 그러나, 명확성을 위하여, 두 개의 발생기가 개별적인 부품으로 도 31에 도시되었다.
ECC 발생기(522)는 도 32의 블록(530)에 도시된 바와 같이, 부호화된 사용자 데이터에 기초한 ECC 정보를 생성한다. 이러한 정보는 XOR 회로(526)에 제공된다. (내장 위치 정보를 포함하는) 상기 ECC 정보는 또한 디스크(132)로부터 판독되어 XOR 회로(526)에 제공된다. 이것은 블록(532)에 도시되었다. ECC 발생기(522)와 함께 XOR 회로(526)도 적절한 멀티플레싱 회로를 갖춘 XOR 회로(520)와 동일할 수도 있다. 그러나 명백성을 위하여, 두 개의 회로가 각각 도시되었다.
ECC 발생기(522)에 의해 제공된 ECC 정보와 내장 위치 정보를 포함하는 ECC 정보를 XOR 수행함으로써, XOR 회로(526)로의 양 입력단의 ECC 정보는 서로 상쇄될 수 있으며, 이것은 위치 정보의 간단한 출력을 야기한다. 이것은 블록(534)에 도시되었다. 상기 정보는 디코더(524)에 의해 사용자 데이터 출력과 결합하여 손실된 파일 시스템을 재구성하기 위하여 사용될 수 있다. 이것은 블록(536 및 538)에 도시되었다. 예를 들어, 객체 디렉토리는 현재 디스크로부터 검색된 위치 정보를 사용하여 재구성될 수 있으며, 디스크로부터 역시 판독된 사용자 데이터와 관련될 수 있다.
본 발명의 다른 특징에 따라, ECC 발생기(518)에 의해 생성된 ECC 정보는 의사난수(pseudorandom 또는 pseudonoise; PN) 발생기를 사용함으로써, 난수화될 수 있다. 도 33은 이같은 실시예를 도시한 블록도이다. 도33에 도시된 항목의 수는 도 31에 도시된 것과 유사하며, 유사하게 부호 설정되었다. 도 33의 블록도는 도 31에 도시된 것과 실질적으로 동일하게 동작한다. 그러나, XOR 회로(520)의 입력에 간단하게 위치 정보를 제공하는 것보다는 위치 정보는 의사 난수(PN) 발생기(540)에 의해 생성된 난수의 시드를 형성하는 데에 사용된다. 따라서, 위치 정보는 PN 발생기(540)의 입력(542)에 제공된다. 시드 값에 기초하여, PN 발생기(540)는 XOR 회로(521)에 제공되는 출력을 생성하고, 상기 출력은 ECC 발생기(518)에 의해 제공된 ECC 정보와 XOR 처리되며, 관련된 부호화된 사용자 데이터와 함께 디스크(132) 상에 기록된다.
(예를 들어 위치정보) 파일 시스템 정보를 재구성하기 위하여, 부호화된 사용자 데이터가 디스크(132)로부터 판독되어, ECC 정보를 생성하여 XOR 회로(526)에 그것을 제공하는 ECC 발생기(522)로 제공된다. 내장 의사난수 값을 포함하는 ECC 정보도 역시 디스크(132)에서 판독되고 XOR 회로(526)에 제공된다. XOR 회로(526)의 출력은 위치 정보를 사용하여 시드가 되는 난수 값을 생성한다. 이것은 PN 발생기(540)에 의해 제공된 난수화 처리를 역으로 하는 역 PN 발생기(544)에 제공되며, 발생기(544)의 출력(546)에 위치 정보 시드 값을 제공한다. 도 31에 도시된 실시예에서와 같이, 상기 정보는 디코더(524)에 의해 제공된 복호화된 사용자 데이터와 함께 이전에 손실된 파일 시스템 구조 정보를 재구성하는 데에 사용될 수 있다.
본 명세서에서 도시한 XOR 게이트(520, 526)는 데이터 바이트내의 개별적인 비트가 XOR 되는 예시적으로 바이트 폭의 XOR 회로이다. 따라서, XOR 회로는 8비트 바이트 XOR 기능을 제공하기 위한 실제 8개의 개별적인 XOR 게이트이다. 게다가, 본 발명이 XOR 게이트를 언급하여 설명되었지만 에러 정정 및 검출 코드가 기초가 되는 필드를 능가하는 다른 적합한 Galois 필드 처리(또는 부가) 또는 다른 적합한 처리가 본 발명의 범주내에서 고려될 수 있으며, 기술 분야의 당업자에 의해 구현될 수 있다.
또한 바람직한 실시예에 있어서, PN 발생기(540)는 1998년 2월 10에 French등에 허여된 미국 특허 5,717,535호에 상세히 개시되었다. 본 발명은 논리 블록에 접속된 입력 및 출력을 구비한 33개의 레지스터 셀을 가지는 것으로 발생기를 도시하였다. 상기 레지스터 셀은 1 비트폭이고, 데이터 바이트와 동일한 클록으로 동작한다. 발생기는 객체 식별자 및 4 바이트(32 비트) 길이까지의 상대 위치 정보를 수용하기에 충분하지만, 더 큰 위치 정보 및 4 바이트보다 큰 다른 파일 시스템 정보를 수용하기 위하여 쉽게 연장될 수도 있다. 발생기는 또한 예시적으로, 제로 값을 가지는 위치 정보가 PN 발생기(540)의 출력에서 모두 제로를 발생시키지 않도록 하기 위하여 사용되는 여분의 레지스터 셀을 포함한다. ECC 정보를 사용하여 파일 시스템 정보의 시드를 생성할 목적만을 위해 사용된 경우에는 이러한 여분의 셀이 PN 발생기(540)내에 포함되어야 하는 어떠한 이유도 존재하지 않는다. 그러나, 발생기(540)가 소정의 다른 이유(예를 들어 에러 허가 오차)로 데이터를 난수화하는 데에 사용된다면, 여분의 셀은 모든 제로 입력이 넌-제로 출력을 생성하도록 포함되어야 한다. 데이터는 모든 8개의 데이터 비트(즉 1 바이트 마다)에서 클럭에 의해 실질적으로 클록킹된다.
실시예에 있어서, 발생기(540)는 식 3 및 식 4에 따라 동작하는 다수의 플립플롭을 포함하며, 역에서 B는 플립 플롭의 입력이며, A는 플립플롭의 출력을 나타낸다.
BI = AI+B (3)
I= 0에서 24까지이며,
BI = Am XOR AM+13 (4)
I는 25 내지 32이며, M=(I+8) Modulo 33이다.
발생기(540)가 원시 다항식 X33 + X13 + 1 에 기초하여 클록 당 8번 시프트되는 이진 반환 시프트 레지스터와 등가인 것이 주목되어야 한다. 레지스터 셀로의 입력을 구동시키는 논리 블록은 이러한 8번의 시프트의 결과를 나타낸다. 이러한 분석으로부터, 발생기(540)의 출력에 제공된 바이트의 시퀀스는 모든 233- 1 마다 반복한다는 것을 알 수 있다.
따라서, 본 발명이 종래의 시스템을 능가하는 중요한 장점을 제공한다는 것을 알 수 있다. 본 발명은 파일 시스템 구조 데이터와 같은 치명적인 파일 시스템 정보의 손실에 직면하여서도 사용자 데이터가 판독되는 것을 허가한다. 본 발명은 객체의 데이터 부분에 해당하는 ECC 정보내에 (파일 시스템 구조 정보와 같은) 파일 시스템 정보를 내장한다. 파일 시스템은 이어 디스크 상의 데이터를 판독하고 내장 처리를 역으로 처리함으로써 간단히 판독될 수 있으며, 이에 따라 파일 시스템은 재구성될 수 있다.
도 34 내지 도 36은 본 발명의 다른 특성에 따른 대안적인 기록 동작을 설명하며, 여기에서 드라이브 어레이는 하이브리드 RAID 구조로서 구현된다. 앞서 설명한 바와 같이, 디스크 드라이브 어레이에 저장된 데이터는 종종 디스크 드라이브 자체 보다 더욱더 가치있다. 따라서, RAID는 데이터가 손상되거나 또는 액세스될 수 없는 경우에 원시 데이터를 재구성하기 위하여 원시 데이터 이외에 리던던시 또는 패리티 데이터를 저장하기 위하여, 제공된다. 다양한 타입의 RAID 시스템 또는 RAID 레벨이 공지되었다.
제 1 레벨의 RAID (RAID 레벨 1)은 미러링된 디스크 드라이브를 제공함으로써 특징 지워진다. 제 1 레벨의 RAID에 있어서, 어레이내의 모든 디스크는 복제된다. 따라서, 하나의 디스크 드라이브에 오류가 발생하면, 동일한 정보가 다른 디스크드라이브 상에 미러링되기 때문에 정보는 손실되지 않는다. 이것은 하드웨어의 사본으로 인하여, 디스크 드라이브 어레이를 구현하는 데에 매우 고가의 선택 사항이다.
제 2 레벨의 RAID는 에러 정정을 위하여 해밍 코드를 포함한다. 제 2 레벨의 RAID에 있어서, 데이터는 어레이의 드라이브에 걸쳐 비트-인터리빙되며, 체크 드라이브가 단일 에러를 검출 및 정정하기 위하여 부가된다. 이러한 제 2 레벨의 RAID는 판독이 소량의 데이터에 관련된다면 그룹내의 비트 인터리빙된 각각의 드라이브의 전체 섹터가 여전히 판독되어야 하는 불편함을 가진다. 또한 단일 유니트의 기록은 그룹내의 모든 디스크 드라이브에 대하여 여전히 판독-수정-기록 사이클을 호출한다.
제 3 레벨의 RAID는 드라이브의 그룹 당 단일 체크 드라이브를 가지는 것으로 특징 지워진다. 제 3 레벨의 RAID에 있어서, 제 2 레벨의 RAID에서 에러 정정 코드 정보를 위해 사용된 여분의 체크 드라이브는 제거된다. 차라리, 데이터가 디스크 어레이에 저장됨에 따라 ECC 정보는 데이터에 추가된다. 또한 단일 디스크 드라이브가 어레이 내에 저장된 데이터에 해당하는 리던던시 데이터를 저장하기 위하여 사용된다. 어레이로부터 정보를 판독할 때, ECC 정보는 에러가 발생하였는 지와 에러를 포함하는 드라이브가 어떤 것인지를 결정하는 데에 사용된다. 이어, 오류가 발생한 드라이브 상의 정보는, 남아 있는 양호한 드라이브의 패리티를 계산하여, 남아 있는 양호한 드라이브의 패리티를 비교하고, 원래 데이터의 전체 그룹에 대하여 계산되어 리던던시 또는 패리티 디스크 드라이브에 저장된 패리티 정보와 비트대 비트로 비교함으로써, 재구성될 수 있다.
제 4 레벨의 RAID는 그것이 독립적인 판독 및 기록을 위해 제공되도록 배열되는 것에 의해 특징 지워진다. 제 2 및 제3 레벨의 RAID 구현에 있어서, 어레이 내에 저장된 정보는 그룹 내의 모든 드라이브에 걸쳐 분포된다. 따라서, 그룹 내의 하나의 드라이브에 대한 소정의 기록 또는 판독 동작은 그룹내의 모든 드라이브에 대한 기록 또는 판독을 요구한다. 제 4 레벨의 RAID는 소정의 시간에 드라이브 그룹당 하나의 I/O 동작 이상을 수행하기 위한 능력을 제공함으로써, 소량 전송 성능을 향상시킨다. 각각의 데이터 섹터는 더 이상 여러 드라이브에 걸쳐 분포하지 않는다. 차라리, 어레이 내에 저장된 각각의 데이터 섹터는 단일 드라이브 상에 개별적인 유니트로서 유지된다. 어레이 내에 저장된 정보는 비트 레벨보다는 섹터 레벨 상의 데이터 디스크들 사이에서 인터리빙된다.
제 5 레벨의 RAID에 있어서, 어레이에 저장되어질 데이터 뿐만 아니라 패리티 또는 리던던시 데이터 모두는 그룹 내의 모든 드라이브에 걸쳐 분포된다. 따라서, 어떠한 단일 체크 드라이브도 존재하지 않는다. 제 4 레벨의 RAID는 소정 시간에 그룹당 수행되어지는 1 회 이상의 판독이 허가된 반면에, 각각의 기록이 체크 드라이브로의 액세스를 요구하기 때문에 제 4 레벨의 RAID는 여전히 그룹 당 한번의 기록만으로 제한되어 있다. 제 5 레벨의 RAID는 섹터당 데이터 및 체크 정보를 체크 드라이브를 포함한 모든 드라이브에 걸쳐 분포시킨다. 이에 따라, 제 5 레벨의 RAID는 그룹당 다수의 개별적인 기록을 지원한다. 각각의 순차적인 위치에 대한 체크 정보가 그룹 내의 상이한 드라이브 상에 존재하기 때문에 소정 시간에 임의의 한 드라이브를 연속적으로 액세스할 필요가 없어지므로 기록 동작은 병렬로 수행된다.
상술한 것들이 상이한 레벨의 RAID 시스템들 사이의 주요한 일부 차이점에 대한 개요를 제공하는 반면, 예시적인 예와 함께 이들의 차이점에 대한 보다 상세한 설명은 Patterson, Gibson 및 Katz에 의해 "RAID에 대한 사례(A CASE FOR RAID)"라는 문헌에서 제공된다.
RAID 3 및 RAID 4 및 5 타입의 시스템 사이의 특징적인 차이로 인하여, 상이한 시스템은 상이한 요구에 대해 특히 적합하다. RAID 3 시스템은 높은 데이터 전송율을 나타내기를 요구하는 어레이 시스템에 특히 적합하고 우수한 성능을 보인다. 반면에, RAID 4 및 5 시스템은 특히 고밀집 입/출력 어레이 응용에서 사용된 디스크 어레이에서 우수한 성능을 나타낸다. 이같은 구현은 상업상 응용 또는 많은 UNIX 사용자에게서 발견된다.
RAID 레벨 5가 거래상의 응용에 대하여 가장 일반적으로 사용될지라도, RAID 1 시스템만큼 신뢰할 수 없다. 특히, RAID 5 시스템은 디스크 공간의 효율적인 사용을 제공하고 이에 따라 하드웨어적으로 보다 적은 비용을 요구하기 때문에 일반적이다. 그러나, 원시 데이터의 손실량이 RAID 5 시스템내의 리던던시 데이터에 기초하여 데이터를 회복할 수 있는 능력을 초과하는 경우에 원시 데이터는 재구성될 수 없다. 이와 같이, RAID 5 시스템은 완전한 데이터 손실에 취약하다.
반면에, RAID 1 시스템은 원시 데이터의 완전한 사본이 다른 디스크 상에 형성되기(즉, 데이터가 미러링되기) 때문에, 완전한 데이터 손실에 덜 취약하다. 따라서, 임의의 또는 모든 원시 데이터가 손실된 경우에 미러링 데이터가 원시 데이터를 완전히 재구성하는 데에 사용될 수 있다. 그러나, RAID 1 시스템은 디스크 드라이브의 완전한 사본을 요구하기 때문에, 매우 많은 비용을 소모한다.
본 발명의 하이브리드 데이터 재구성 시스템은 RAID 5 시스템의 비용 장점 및 RAID 1 시스템의 장점 모두를 제공한다. 하이브리드 구현은 사용자에게 중요하거나 불가결한 것으로 결정되는 데이터에는 RAID 1 시스템을 적용하고 나머지 중요하지 않은 데이터에는 나머지 RAID 기술 중 하나, 예를 들어 RAID 5를 적용함으로써, 구현된다. 다음의 설명이 하이브리드 RAID 1/RAID 5구조로서 본 발명의 실시예를 설명할지라도, 당업자는 RAID 2, RAID 3 및 RAID 4 구조를 구비한 RAID 구조와 같은 임의의 두 리던던시 체계를 조합함으로써, 유사한 장점을 구현할 수 있다는 것을 인지할 수 있을 것이다. 간략화 및 설명을 위하여, 다음의 설명은 RAID 1/RAID 5 기술에 집중된다.
사용자에게 가장 중요하고 불가결한 데이터가 종종 가장 빈번하게 액세스되는 데이터이기 때문에, 중요한 데이터를 식별하는 효과적인 기술은 높은 빈도의 데이터를 식별하는 것이다. 높은 빈도의 데이터는 디스크 드라이브 상의 다른 데이터 보다 더욱 현저히 액세스되는 데이터를 말한다. 당업자는 하이브리드 본 발명의 RAID 기술이 블록 데이터 시스템 및 객체 지향 데이터 시스템 모두에 적용성을 가지는 것을 이해할 수 있을 것이다.
가장 중요하고 불가결한 데이터는 또한 데이터가 얼마나 빈번하게 액세스되는지와 무관하게 사용자에 의해 설계될 수 있다. 예를 들어, 사용자는 소정의 파일 이름, 소정의 파일 타입, 소정의 디렉토리 또는 그들의 조합을 중요한 데이터로 지정할 수 있다. 이러한 데이터는 중요한 데이터를 상호연관시킴으로써, 블록 지향 데이터에서 사용되는 블록 어드레스 또는, 객체 지향 데이터에서 사용되는 객체 타입 또는 객체 속성에 플래그될 수 있다.
데이터가 얼마나 빈번하게 액세스되는지에 따라 중요한 데이터가 식별된다면, 드라이브 제어기(148) 또는 디스크 드라이브 어레이 제어기(602) 또는 컴퓨터 시스템의 다른 적합한 부분은 데이터 블록 또는 데이터 객체가 액세스되는 횟수를 자동적으로 로그하는 데에 사용될 수 있다. 이같은 방식으로, 각각의 데이터 블록 또는 데이터 객체가 액세스되는 횟수는 모아져서 비휘발성 메모리에 바람직하게 로그된다. 상술한 바와 같이 액세스되는 이러한 도표식 데이터, 데이터 블록 또는 데이터 객체를 사용하여, 예를 들어 임계 빈도수(즉 임계적인 액세스 횟수를 능가하는)가 RAID 1 기술을 사용하여 저장된다(즉 이들은 미러링됨). 임계 빈도수 이하로 액세스되는 다른 모든 데이터는 RAID 2, 3, 4 또는 5기술을 사용하여 저장된다. 따라서, 중요한 데이터는, 그들이 다른 디스크 드라이브에 완전히 미러링되기 때문에 완전한 손실에 덜 취약하다. 반대로, 중요하지 않은 데이터는 보다 공간 효율적인 RAID 기술, 예시적으로 RAID 5를 사용하여 백업된다. 이것은 중요한 데이터가 사용자에 의해 할당된 플래그 또는, 드라이브 제어기(148) 또는 어레이 제어기(602)에 의해 검출된 높은 빈도수의 사용에 의해 식별되는 경우에 적용된다.
도 34는 본 발명의 일 특성에 따라 하이브리드 데이터 저장 및 재구성을 구 현하는 디스크 드라이브 어레이(600)의 블록도를 도시한다. 디스크 드라이브 어레이(600)는 디스크 드라이브(604, 606, 608, 610, 612)의 어레이에 접속된 어레이 제어기(602)를 포함한다. 각각의 드라이브는 실질적으로 (도 34에는 도시되지 않음) 드라이브 제어기(148)를 포함한다. 어레이 제어기(602)는 또한 도 1 및 도 25에 도시된 바와 같이 상호접속부(122)에 접속된다. 도시된 특정 구현에 있어서, 각각의 디스크 드라이브(604, 606, 608, 610, 612)는 중요한 데이터 부분(614), 중요하지 않은 데이터 부분(616) 및 미러링된 위치(618) 및 패리티 위치(620)를 포함한다.
바람직하게 미러링 위치(618)에 할당된 공간은 중요한 데이터(614)에 비례한다. 유사하게, 각각의 디스크 상의 패리티 위치(620)에 제공된 공간은 바람직하게 중요하지 않은 데이터(616)에 의해 점유되는 공간에 해당하는 패리티 데이터에 비례한다. 그러나, 당업자는 미러링 위치(618) 및 패리티 위치(620)에 할당된 공간은 특정 응용을 위한 사용에 의해 요구되는 성능 및 경제성 사이의 균형에 의존하여 수정될 수 있다는 것을 이해할 수 있을 것이다. 그러나 예시적으로, 중요한 데이터는 상대적으로 작은 량의 디스크 공간(예를 들어 9GB 드라이브에 대해 20MB)을 점유하고, 대응하는 미러 위치(618)는 균형적으로 작은 량의 디스크 공간을 점유한다. 따라서, 각각의 디스크 상의 미러링 위치(618)를 위해 사용되는 전반적인 디스크 공간은 상대적으로 작기 때문에, 디스크 공간 및 성능 사이의 타협은 실속이 없다.
도 34는 하이브리드 RAID 1/ RAID 5 드라이브 어레이(600)를 도시하며, 여기에서 원시 데이터, 미러 데이터 및 패리티 데이터는 그룹 내의 모든 드라이브(604, 606, 608, 610, 612)에 걸쳐 분포한다. 이에 따라, 드라이브(604)는 드라이브(606) 내에 중요한 데이터에 대한 미러 데이터를 유지한다. 드라이브(604)는 또한 드라이브(606)내에 중요하지 않은 데이터에 대한 패리티 데이터를 포함한다. 유사한 관계가 도시된 바와 같이 드라이브들(606/608, 608/610, 610/612, 612/604) 사이에 존재한다. 각각의 드라이브(604, 606, 608, 610, 612)는 파이버 채널 인터페이스와 같은 적합한 인터페이스 또는 다른 직렬 인터페이스를 통해 서로 접속된다.
각각의 디스크 드라이브(604-612)의 구조 및 동작은 도 26 및 도 27에서 설명된 드라이브와 실질적으로 유사하다. 특히 디스크 드라이브는 RAID 레벨 5 구조와 관련하여 유사하지만 RAID 레벨 1 구조와 관련하여서는 다르다. 특히 각각의 디스크 드라이브(604-612)내의 각 디스크는 패리티 위치(620) 이외에 미러 위치(618)를 포함하는 반면에 도 26 및 도 17에 도시된 드라이브는 미러 위치를 가지지 않는다. 그러나, 구조 및 동작은 아래에 설명된 것을 제외하고는 동일하다.
어레이 제어기(602)는 각각의 드라이브(604-612)가 새로운 데이터를 미러 데이터 또는 패리티 데이터로 기록할 것을 지시하는 명령 소자(624)를 포함한다. 상기 명령 소자(624)는 중요한 데이터의 검출기 소자(622)로부터 수신된 출력에 따라 드라이브(604-612)에 지시한다. 중요 데이터 검출기 소자(622)는 사용자에 의해 미리 결정된 또는 높은 빈도의 데이터 로그(626)에 의해 설정된 플래그에 대하여 입력되는 새로운 데이터를 스캔한다. 플래그(예를 들어, 블록 어드레스 또는 객체 속성)가 중요 데이터 검출기(622)에 의해 검출되면, 어레이 명령 소자(624)는 새로운 데이터가 자신의 목적 위치에 기록되고 위치(618)에서 미러링되도록 한다. 어떠한 플래그도 검출되지 않은 경우, 상기 어레이 명령 소자(624)는 새로운 데이터가 자신의 목적 위치에 기록되도록 하고 관련된 패리티 정보가 패리티 위치(620)에 기록되도록 한다.
높은 빈도의 데이터 로그(626)는 특정 데이터 블록 또는 데이터 객체가 액세스되는 횟수를 로그하기 위하여 사용될 수 있다. 특정 데이터 블록 또는 데이터 객체가 사용자에 의해 정의된 임계 횟수 이상 액세스되면, 높은 빈도 데이터 로그(626)는 상기 데이터 블록 또는 데이터 객체를 중요한 데이터 객체(622)에 의한 검출용의 중요한 데이터로서 설계한다. 객체 지향 데이터가 사용되고 하나의 객체 속성이 이미 액세스 빈도를 포함한다면, 높은 빈도 데이터 로그(626)는 생략될 수 있다. 게다가, 중요한 데이터가 액세스 빈도가 아닌 다른 기능으로 설계된다면, 데이터 로그(626)는 생략될 수 있다.
도 35 및 도 36은 도 34에 도시된 디스크 어레이(630, 660)의 기록 동작을 설명한다. 특히, 도 35는 블록 지향 데이터용 기록 동작을 설명하고, 도 36은 객체 지향 데이터용 기록 동작(660)을 설명한다.
도 35를 참조하여, 기록 동작은 블록(634)에서 시작하지만, 사용자는 플래그를 미리 설계할 수 있으며, 상기 플래그는 데이터에 부가되거나 첨부되며 블록(632)에서 중요한 데이터로서 데이터를 식별한다. 이러한 플래그가 존재하지만, 데이터와 관련된 블록 어드레스에 제한되지는 않다. 사용자가 중요한 데이터에 대한 플래그를 미리 설계한 경우, 블록(633)에 도시된 로그 단계는 건너뛰어 진다. 플래그가 미리설계되지 않은 경우, 기록 동작은 블록(633)에 도시된 로그 단계에서 시작한다.
플래그가 미리설계되지 않았다고 가정하면, 제어기(602)의 명령 소자(624)는 블록(633)에 도시된 바와 같이, 로그(626)내에서 새로운 데이터의 블록 어드레스를 판독 및 로그한다. 로그(626)에서 블록 어드레스가 액세스되는 횟수가 추적 및 기록된다. 액세스 횟수(빈도수)가 임계 값을 초과한 경우, 블록 어드레스는 중요한 데이터로서 플래그된다.
새로운 데이터를 수신하면, 제어기(600)는 로그(626)를 검사하여, 블록(638)에 반영된 바와 같이 새로운 데이터로 설계된 블록 어드레스가 중요한 데이터로 플래그되었는 지의 여부를 검사한다. 결정 블록(638)에 도시된 바와 같이, 플래그가 검출되면, 새로운 데이터는 중요한 데이터로 취급되며, 블록(640)에 도시된 바와 같이 자신의 목적 위치 및 미러 위치(618)에 기록된다. 플래그가 결정 블록(638)에 나타낸 바와 같이 검출되지 않으면, 소자(624)는 블록(639)에 나타낸 바와 같이, 빈도 값을 업데이트하고, RAID 5 루틴은 블록(642-650)에 의해 도시된 바와 같이 구현된다. 당업자는 RAID 2, 3 및 4 루틴에 한정되는 것은 아니지만 이들을 포함하여 다른 적합한 RAID 또는 다른 리던던시 루틴이 사용될 수 있다는 것을 이해할 수 있을 것이다.
RAID 5 루틴이 사용된 경우, 목표 위치에서 이전 데이터가 블록(642)에 도시된 바와 같이, 판독된다. 패리티 위치에서 이전의 패리티 데이터도 역시 블록(644)에 도시된 바와 같이 판독된다. 목표 위치에서의 이전 데이터는 새로운 데이터와 XOR 처리되어 블록(646)에 도시된 바와 같이 중간 패리티 데이터를 생성한다. 중간 패리티 데이터는 블록(648)에 도시된 바와 같이, 이전의 패리티 데이터와 XOR 처리되어 새로운 패리티 데이터를 생성한다. 새로운 패리티 데이터가 관련된 패리티 위치(620)에 블록(650)에 도시된 바와 같이 기록된다. RAID 1 루틴 또는 RAID 5 루틴이 결정 블록(638)에 준하여 초기화되고, 새로운 데이터는 블록(652)에 도시된 바와 같이 목표 위치에 기록된다. 새로운 데이터를 목표 위치에 기록하면, 기록 동작(630)은 블록(654)에 도시된 바와 같이 종료된다.
도 36을 참조하여, 객체 지향 데이터를 사용한 경우의 기록 동작을 설명한다. 기록 동작은 블록(662)에서 시작한다. 블록의 중요성는 객체 타입에 의존하여 미리 결정될 수 있다. 예를 들어 항상, (POL(166)과 같은) 디렉토리 정보를 미러링, 또는 저장 장치 또는 그에 저장되는 (DCO(154), DAO(158), 또는 PCO(164)와 같은) 데이터 또는 그들의 조합을 정의하는 다른 임의의 객체를 미러링하는 것이 바람직하다. 더욱이, 소정 객체는 OID, 파일 이름, 또는 소정의 다른 속성을 사용하는 객체 대 객체의 기본 원리로, 사용자 또는 다른 엔티티에 의해 중요한 데이터로 미리설계될 수 있다. 따라서, 명령 소자(624)는 중요성이 미리 설계되었는지의 여부를 결정하기 위하여 객체를 수신하여 검사한다. 이것은 블록(664 및 666)에 도시되었다. 이러한 미리 설계한 것은 제어기(602)내의 메모리 내에 저장된다. 중요성이 결정 블록(668)에서 도시된 바와 같이 검사되면, 새로운 데이터는 블록(670)에 도시된 바와 같이 미러 위치(618)에 기록되고 블록(682)에 도시된 바와 같이 자신의 목적 위치에 기록된다.
결정 블록(668)에 도시된 바와 같이 미리 설계된 중요성이 검사되지 않으면, 소자(624)는 액세스되는 빈도수에 의존하여 액세스되는 객체가 중요한 데이터인지의 여부를 결정한다. 소자(624)는 OID 및 액세스 빈도수를 나타내는 관련 빈도 값을 포함하는 높은 빈도 데이터 로그(626)에 의해 이것을 수행한다. 이것은 블록(669)에 도시되었다. 객체가 빈도수에 기초하여 중요한 것이라면(즉 관련된 빈도 값이 미리 결정된 또는 적절하게 조정된 임계치를 초과한다면), 소자(624)는 블록(670)에 도시된 바와 같이 데이터를 미러링한다.
객체가 빈도수에 의존하여 중요한 것이 아닌 경우, 소자(624)는 (새로운 데이터인 경우에는) 로그(626)의 OID를 로그하고, 관련 빈도 값을 업데이트한다. 이는 블록(671)에 도시되었다. 데이터는 RAID 2, 3, 4 또는 5의 구현 또는 다른 리던던시 체계에 따라 저장된다.
RAID 5 구현을 사용한 경우, 목표 위치의 이전 데이터는 블록(627)에 도시된 바와 같이 판독된다. 이어 패리티 위치의 이전 데이터는 블록(674)에 도시된 바와 같이 판독된다. 목표 위치의 이전 데이터는 새로운 데이터와 XOR 처리되어 블록(676)에 도시된 바와 같이 중간 패리티 데이터를 생성한다. 상기 중간 패리티 데이터는 이전의 패리티 데이터와 XOR 처리되어 블록(678)에 도시된 바와 같이, 새로운 패리티 데이터를 생성한다. 상기 새로운 패리티 데이터는 블록(680)에 도시되고 도 34에서 설명 도시된 바와 같이 패리티 위치에 기록된다. 블록(668)에서 중요성이 결정되든 안 되든, 새로운 데이터는 블록(682)에 도시된 바와 같이 목표 위치에 기록된다. 새로운 데이터가 목표 위치에 기록된다면, 기록 동작(660)은 블록(684)에 도시된 바와 같이 완료된다.
도 35 및 도 36에 전개된 단계는 하나 이상의 드라이브(604-612), 실질적으로 목표 드라이브에 관련된 드라이브 제어기(148)상에서 수행될 수 있으며, 적합한 드라이브로의 기록을 위하여 적합한 드라이브 제어기와 통신한다. 이러한 경우, 드라이브 제어기에는 소자(622-626)가 제공된다. 처리는 도 35 및 도 36에 도시된 것과 실질적으로 동일하다.
빈도 값은 가공되지 않은 수 또는 드라이브 사용에 기초한 변수로서 미리 설계될 수 있다는 것이 주목되어야 한다. 예를 들어 임계치는 전체 드라이브 액세스에 대한 백분율로서 설정될 수 있고 각각의 액세스(즉 각각의 기록 또는 판독 동작)를 사용하여 적절하게 업데이트될 수 있다. 게다가, 여러 임계치가 사용될 수 있으며, 예를 들어 각각의 객체 타입 또는 객체 타입의 그룹에 대하여 하나가 사용될 수 있다. 다른 적합한 기술도 역시 사용될 수 있다. 임계치가 적절하게 설정되면, 각각의 블록 또는 객체에 대한 빈도 값은 각각의 액세스에 대하여 업데이트되어야 한다.
게다가, 중요한 데이터를 저장하기 위하여 리던던시 체계를 사용하는 한편 나머지 데이터를 저장하기 위하여 직접 부호화 체계를 간단히 사용하여, 본 발명의 장점이 얻어질 수 있다. 직접 부호화 체계를 사용하여, 부호화된 데이터는 간단히 디스크 드라이브상에 저장되어 리던던시 데이터로 증대되지 않는다는 것을 의미한다. 따라서, 중요한 데이터는 소정의 다른 리던던시 체계에 따라 미러링 또는 저장될 수 있는 반면에, 단일 경우(instance)로서 부호화된 형태로 중요하지 않은 데이터는 간단히 저장된다. 이같은 경우에 있어서, 도 34를 참조하여, 중요하지 않은 데이터(616)는 패리티 위치(620)에 저장된 대응 패리티 데이터를 가지지 않는다. 따라서, 도 34의 패리티 위치로서 사용된 공간은 추가의 중요한 데이터, 중요하지 않은 데이터 또는 중요한 데이터에 해당하는 리던던시 데이터를 저장하는 데에 사용될 수 있다. 유사하게, 본 발명은 두 개 이상의 리던던시 체계를 사용하여 수행될 수 있을 뿐만 아니라, 직접 부호화 체계를 사용하여 수행될 수 있다. 이러한 경우에 있어서, 매우 중요한 정보는 매우 여유있는 리던던시(높은 여유도) 체계에 따라 저장될 수 있고, 적당히 중요한 데이터는 덜 여유있는 리던던시(낮은 여유도) 체계에 따라 저장되며, 중요하지 않은 데이터는 직접 부호화 체계에 따라 저장될 수 있다.
"어레이"의 용어는, 상이한 룸, 상이한 빌딩 또는 상당한 거리로 이격된 위치와 같은 다른 것과 지리적으로 이격된 위치에 저장되는 디스크 드라이브의 집합을 의미하도록 고려되는 것이 주목되어야 한다.
앞의 도 35 및 도36에 도시된 하이브리드 액세스 동작(630,660)으로부터 알게 될 수 있는 것은 RAID 5 시스템의 비용상의 장점과 RAID 1 시스템의 안정도 장점을 제공한다.
다수의 디스크 드라이브(604-612) 및 다수의 디스크 드라이브(604-612)에 동적으로 결합되어 데이터를 수신하고 제 1 리던던시 체계에 따라 디스크 드라이브(604-612)에 제 1 부분의 데이터를 저장하고 제 2 리던던시 체계에 따라 디스크 드라이브 상에 제 2 부분의 데이터를 저장하도록 구성된 적어도 하나의 제어기(602)를 포함하는 디스크 드라이브 어레이(600)는 본 발명에 따른 일 실시예이다. 바람직하게 제 1 리던던시 체계는 제 2 리던던시 체계 보다 큰 정도의 리던던시를 제공한다.
제 1 부분의 데이터는 제 2 부분의 데이터와 상이한 리던던시 데이터를 포함하며, 제어기(602)는 제 1 부분의 데이터와 리던던시 데이터를 제 1 리던던시 체계에 따라 디스크 드라이브(604-612)에 저장하도록 구성된다.
제어기(602)는 제 2 부분의 데이터를 제 1 드라이브 또는 다수의 드라이브로 이루어진 드라이브 세트에 저장하고, 제 1 부분의 데이터를 제 2 드라이브 또는 다수의 드라이브(604-612)로 이루어진 드라이브 세트에 미러링하도록 구성된다.
제 1 부분의 데이터는 메타 데이터와 같은 제 2 부분의 데이터 보다 매우 빈번하게 액세스되는 데이터로 이루어질 수 있다.
제어기(602)는 제 1 및 제 2 부분의 데이터를 구조적 배열의 객체로서 저장하도록 구성될 수 있고, 제 1 부분의 데이터는 구조적 배열을 나타내는 정보를 포함한 구조 객체를 포함할 수 있다.
이러한 의미로, 제어기(602)는 분할 내에 객체를 저장하도록 구성될 수 있고 구조적 객체는 장치 제어 객체, 장치 관련 객체, 분할 제어 객체 또는 분할 객체 리스트를 포함할 수 있다.
제 1 및 제 2 부분의 데이터는 객체로서 저장될 수 있으며, 각각의 객체는 속성을 포함하며, 제 2 부분의 데이터는 속성을 포함한다.
제 1 리던던시 체계는 RAID 레벨 2, 3, 4 또는 5 가 될 수 있으며, 제 2 리던던시 체계는 RAID 레벨 1이 될 수 있다.
제어기(602)는 데이터가 액세스되는 빈도수를 결정하고, 액세스되는 빈도수에 기초하여 제 1 및 제 2 부분의 데이터로 데이터를 나눌 수 있도록 구성된다.
이러한 의미로, 제어기(602)는 제 1 및 제 2 부분의 데이터를 관련된 파일 이름을 가지는 객체로서 저장하고 파일 이름에 기초하여 데이터가 액세스되는 빈도수를 탐색하도록 구성될 수 있다.
대안적으로, 제어기(602)는 제 1 및 제 2 부분의 데이터를 각각의 객체가 관련 객체 타입을 가지는 객체로서 저장되도록 구성될 수 있으며, 제 1 및 제 2 부분의 데이터 사이에서 객체 타입에 기초하여 데이터를 나눌 수 있도록 구성될 수 있다.
데이터는 제 1 및 제 2 부분의 데이터로 사용자 입력에 기초하여 나누어질 수 있다.
각각의 디스크 드라이브(604-612)는 드라이브 제어기(148)를 포함할 수 있으며, 여기에서 제어기(602)는 하나 이상의 드라이브 제어기(148)를 포함한다.
호스트 제어기는 드라이브 제어기(148)에 결합되며, 제어기(602)는 호스트 제어기에 결합될 수 있다.
본 발명의 다른 실시예에 있어서, 디스크 드라이브(600)는 디스크 드라이브 어레이(604-612)를 포함하며, 어레이 제어기(602)는 디스크 드라이브(604-612) 사이에서 데이터를 선택적으로 미러링하기 위한 것이다.
본 발명의 또 다른 실시예에 있어서, 디스크 드라이브 내의 디스크 상에 데이터를 저장하는 방법은, 제 1 리던던시 체계에 따라 제 1 부분의 데이터를 저장하는 단계; 및 상기 제 1 리던던시 체계와는 상이한 제 2 리던던시 체계에 따라 제 2 부분의 데이터를 저장하는 단계를 포함한다.
상기 방법은 제 1 또는 제 2 부분의 데이터가 사용자 입력에 기초한 것 또는 예를 들어 데이터가 액세스 되는 빈도수에 기초한 것 또는 데이터의 내용에 기초한 것을 결정하는 단계를 포함한다.
본 발명의 구조 및 기능에 대한 상세한 설명과 함께 본 발명의 다양한 실시예에 대한 여러 특징 및 장점이 앞의 상세한 설명에서 전개되었더라도, 이것은 단지 설명을 위한 것이며, 특히 본 발명의 원리에 속하는 부품의 구조 및 배열에 있어서, 청구 범위에 표현된 일반적인 넓은 의미의 용어에 의해 지시된 최대 범위까지 세부 사항에 있어서 변형이 있을 수 있다는 것이 당업자에게 이해된다. 예를 들어, 특정 엘리먼트는 본 발명의 범주 및 정신을 벗어나지 않고 동일한 기능을 유지하면서 사용되는 특정한 인터페이스 방법, 리던던시 체계 또는 에러 검출 또는 정정 체계에 의존하여 변화될 수 있다.

Claims (11)

  1. 디스크 드라이브 어레이로서,
    다수의 디스크 드라이브; 및
    상기 다수의 디스크 드라이브에 결합되고, 데이터를 수신하여 제 1 리던던시 체계에 따라 상기 디스크 드라이브 상에 데이터의 제 1 부분을 저장하고 제 2 리던던시 체계에 따라 상기 디스크 드라이브 상에 데이터의 제 2 부분을 저장하도록 구성된 적어도 하나의 제어기;
    를 포함하고,
    상기 제 1 리던던시 체계는 상기 제 2 리던던시 체계보다 더 큰 정도의 리던던시를 제공하고,
    상기 데이터의 제 1 부분 및 제 2 부분은 사전에 결정된 선택가능한 기준에 따라 선택되며, 상기 선택가능한 기준은 중요성(criticality)을 나타내며,
    상기 선택가능한 기준은 파일 식별 정보이며,
    상기 제어기는 구조적 배열(structural arrangement) 내에 상기 데이터의 제 1 부분 및 제 2 부분과 관련된 객체들을 저장하도록 구성되며,
    상기 데이터의 제 1 부분은 구조적 객체(structural object)를 포함하고, 상기 구조적 객체는 상기 구조적 배열을 나타내는 정보를 포함하는,
    디스크 드라이브 어레이.
  2. 제 1 항에 있어서,
    상기 데이터의 제 1 부분은 상기 데이터의 제 2 부분과 상이한 리던던시 데이터를 포함하며,
    상기 제어기는 제 1 리던던시 체계에 따라 디스크 드라이브 상에 상기 데이터의 제 1 부분과 리던던시 데이터를 저장하도록 구성되는 것을 특징으로 하는 디스크 드라이브 어레이.
  3. 제 2 항에 있어서,
    상기 제어기는 상기 데이터의 제 2 부분을 다수의 디스크 드라이브로 이루어진 제 1 디스크 드라이브 세트 상에 저장하고, 상기 데이터의 제 1 부분을 다수의 디스크 드라이브로 이루어진 제 2 디스크 드라이브 세트 상에 미러링(mirror)하도록 구성되는 것을 특징으로 하는 디스크 드라이브 어레이.
  4. 제 3 항에 있어서,
    상기 제어기는 상기 데이터의 제 2 부분을 제 1의 다수의 디스크 드라이브 상에 저장하고 상기 데이터의 제 1 부분을 제 2의 다수의 디스크 드라이브에 미러링하도록 구성되는 것을 특징으로 하는 디스크 드라이브 어레이.
  5. 제 1 항에 있어서,
    상기 데이터의 제 1 부분은 상기 데이터의 제 2 부분 보다 더 빈번하게 액세스되는 데이터인 것을 특징으로 하는 디스크 드라이브 어레이.
  6. 제 1 항에 있어서,
    상기 데이터의 제 2 부분은 메타데이터(metadata)를 포함하는 것을 특징으로 하는 디스크 드라이브 어레이.
  7. 제 1 항에 있어서,
    상기 제어기는 분할(partition)들 내에 상기 객체들을 저장하도록 구성되며,
    구조적 객체는 장치 제어 객체, 장치 관련 객체, 분할 제어 객체 및 분할 객체 리스트 중 하나를 포함하는 것을 특징으로 하는 디스크 드라이브 어레이.
  8. 제 1 항에 있어서,
    상기 제 2 리던던시 체계는 RAID 레벨 2-5 중 하나를 포함하고, 상기 제 1 리던던시 체계는 RAID 레벨 1을 포함하는 것을 특징으로 하는 디스크 드라이브 어레이.
  9. 제 1항에 있어서,
    상기 제어기는,
    (a) 얼마나 빈번하게 데이터가 액세스되는가를 결정하고,
    (b) 얼마나 빈번하게 데이터가 액세스되는가에 기초하여 상기 데이터의 상기 제 1 부분 및 제 2 부분과 관련된 상기 객체들의 속성들을 수정하며, 그리고
    (c) 상기 속성들에 기초하여 상기 제 1 부분 및 제 2 부분으로 상기 데이터를 나누도록 구성되는 것을 특징으로 하는 디스크 드라이브 어레이.
  10. 제 9 항에 있어서,
    각각의 객체는 객체 타입을 갖고, 상기 제어기는 상기 객체 타입에 기초하여 상기 제 1 데이터 부분 및 제 2 데이터 부분 사이에서 상기 데이터를 나누도록 구성되는 것을 특징으로 하는 디스크 드라이브 어레이.
  11. 디스크 드라이브 어레이로서,
    다수의 디스크 드라이브; 및
    상기 다수의 디스크 드라이브에 결합되고, 데이터를 수신하여 제 1 리던던시 체계에 따라 상기 디스크 드라이브 상에 데이터의 제 1 부분을 저장하고 제 2 리던던시 체계에 따라 상기 디스크 드라이브 상에 데이터의 제 2 부분을 저장하도록 구성된 적어도 하나의 제어기;
    를 포함하고,
    상기 데이터의 제 1 부분 및 제 2 부분은 사전에 결정된 선택가능한 기준에 따라 선택되며, 상기 선택가능한 기준은 중요성을 나타내고,
    상기 선택가능한 기준은 파일 식별 정보이며,
    상기 파일 식별 정보는 파일 타입인,
    디스크 드라이브 어레이.
KR1020007003816A 1997-10-08 1998-10-07 데이터 저장 장치용 하이브리드 데이터 저장과 재구성시스템 및 방법 KR100564664B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US6266397P 1997-10-08 1997-10-08
US60/062,663 1997-10-08
PCT/US1998/021080 WO1999018507A1 (en) 1997-10-08 1998-10-07 Hybrid data storage and reconstruction system and method for a data storage device

Publications (2)

Publication Number Publication Date
KR20010015722A KR20010015722A (ko) 2001-02-26
KR100564664B1 true KR100564664B1 (ko) 2006-03-29

Family

ID=22044016

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020007003816A KR100564664B1 (ko) 1997-10-08 1998-10-07 데이터 저장 장치용 하이브리드 데이터 저장과 재구성시스템 및 방법

Country Status (7)

Country Link
US (1) US6704838B2 (ko)
JP (1) JP2001519563A (ko)
KR (1) KR100564664B1 (ko)
CN (1) CN1281560A (ko)
DE (1) DE19882723T1 (ko)
GB (1) GB2345366B (ko)
WO (1) WO1999018507A1 (ko)

Families Citing this family (128)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6138126A (en) * 1995-05-31 2000-10-24 Network Appliance, Inc. Method for allocating files in a file system integrated with a raid disk sub-system
US8332478B2 (en) * 1998-10-01 2012-12-11 Digimarc Corporation Context sensitive connected content
US6742137B1 (en) * 1999-08-17 2004-05-25 Adaptec, Inc. Object oriented fault tolerance
US6516425B1 (en) * 1999-10-29 2003-02-04 Hewlett-Packard Co. Raid rebuild using most vulnerable data redundancy scheme first
US6826711B2 (en) * 2000-02-18 2004-11-30 Avamar Technologies, Inc. System and method for data protection with multidimensional parity
US7509420B2 (en) * 2000-02-18 2009-03-24 Emc Corporation System and method for intelligent, globally distributed network storage
US7266555B1 (en) 2000-03-03 2007-09-04 Intel Corporation Methods and apparatus for accessing remote storage through use of a local device
US7428540B1 (en) 2000-03-03 2008-09-23 Intel Corporation Network storage system
US6952737B1 (en) * 2000-03-03 2005-10-04 Intel Corporation Method and apparatus for accessing remote storage in a distributed storage cluster architecture
US7506034B2 (en) * 2000-03-03 2009-03-17 Intel Corporation Methods and apparatus for off loading content servers through direct file transfer from a storage center to an end-user
US7203731B1 (en) 2000-03-03 2007-04-10 Intel Corporation Dynamic replication of files in a network storage system
US7281168B1 (en) 2000-03-03 2007-10-09 Intel Corporation Failover architecture for local devices that access remote storage
US7117293B1 (en) * 2000-05-12 2006-10-03 Apple Computer, Inc. Method and apparatus for archiving and unarchiving objects
JP2003536195A (ja) * 2000-06-09 2003-12-02 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 記憶メディアで利用可能なメモリ領域を暗黙に分割する方法
WO2002015018A1 (en) * 2000-08-11 2002-02-21 3Ware, Inc. Architecture for providing block-level storage access over a computer network
US6725393B1 (en) * 2000-11-06 2004-04-20 Hewlett-Packard Development Company, L.P. System, machine, and method for maintenance of mirrored datasets through surrogate writes during storage-area network transients
JP4114318B2 (ja) * 2000-12-26 2008-07-09 ソニー株式会社 データ記録方法、データ記録装置及び記録媒体
US7266556B1 (en) 2000-12-29 2007-09-04 Intel Corporation Failover architecture for a distributed storage system
US6748502B2 (en) * 2001-01-12 2004-06-08 Hitachi, Ltd. Virtual volume storage
US7418620B1 (en) 2001-02-16 2008-08-26 Swsoft Holdings, Ltd. Fault tolerant distributed storage method and controller using (N,K) algorithms
US7461139B2 (en) * 2001-08-17 2008-12-02 Micron Technology, Inc. Network computer providing mass storage, broadband access, and other enhanced functionality
US7350206B2 (en) * 2001-11-05 2008-03-25 Hewlett-Packard Development Company, L.P. Method to reduce provisioning time in shared storage systems by preemptive copying of images
US7134139B2 (en) * 2002-02-12 2006-11-07 International Business Machines Corporation System and method for authenticating block level cache access on network
US7007047B2 (en) * 2002-03-29 2006-02-28 Panasas, Inc. Internally consistent file system image in distributed object-based data storage
US7734867B1 (en) * 2002-05-17 2010-06-08 Hewlett-Packard Development Company, L.P. Data storage using disk drives in accordance with a schedule of operations
JP3966459B2 (ja) 2002-05-23 2007-08-29 株式会社日立製作所 ストレージ機器管理方法、システム、およびプログラム
US7024586B2 (en) * 2002-06-24 2006-04-04 Network Appliance, Inc. Using file system information in raid data reconstruction and migration
US7346906B2 (en) * 2002-07-09 2008-03-18 International Business Machines Corporation Workload management in a computing environment
US20040024954A1 (en) * 2002-07-30 2004-02-05 Rust Robert A. Time stamp management system for disk arrays
US7707151B1 (en) 2002-08-02 2010-04-27 Emc Corporation Method and apparatus for migrating data
AU2003273312A1 (en) 2002-09-10 2004-04-30 Exagrid Systems, Inc. Method and apparatus for integrating primary data storage with local remote data protection
US7114116B2 (en) * 2002-09-13 2006-09-26 Sun Microsystems, Inc. Accelerated Galois data integrity crosscheck system and method
US7076606B2 (en) * 2002-09-20 2006-07-11 Quantum Corporation Accelerated RAID with rewind capability
US7774466B2 (en) * 2002-10-17 2010-08-10 Intel Corporation Methods and apparatus for load balancing storage nodes in a distributed storage area network system
KR101197513B1 (ko) * 2002-10-22 2012-11-09 제이슨 에이. 설리반 동적 모듈식 처리 유닛을 제공하기 위한 시스템 및 방법
BR0315624A (pt) 2002-10-22 2005-08-23 Jason A Sullivan Sistema de processamento em computador personalizável robusto
WO2004038526A2 (en) 2002-10-22 2004-05-06 Isys Technologies Non-peripherals processing control module having improved heat dissipating properties
US7546482B2 (en) * 2002-10-28 2009-06-09 Emc Corporation Method and apparatus for monitoring the storage of data in a computer system
US7376764B1 (en) 2002-12-10 2008-05-20 Emc Corporation Method and apparatus for migrating data in a computer system
US7043609B2 (en) * 2003-02-03 2006-05-09 Sun Microsystems, Inc. Method and apparatus for protecting a state associated with a memory structure
JP4322031B2 (ja) 2003-03-27 2009-08-26 株式会社日立製作所 記憶装置
US7805583B1 (en) 2003-04-23 2010-09-28 Emc Corporation Method and apparatus for migrating data in a clustered computer system environment
US7080221B1 (en) 2003-04-23 2006-07-18 Emc Corporation Method and apparatus for managing migration of data in a clustered computer system environment
US7093088B1 (en) 2003-04-23 2006-08-15 Emc Corporation Method and apparatus for undoing a data migration in a computer system
US7263590B1 (en) 2003-04-23 2007-08-28 Emc Corporation Method and apparatus for migrating data in a computer system
US7415591B1 (en) 2003-04-23 2008-08-19 Emc Corporation Method and apparatus for migrating data and automatically provisioning a target for the migration
WO2004099988A1 (en) * 2003-05-05 2004-11-18 Trustees Of Boston University Data storage distribution and retrieval
US20050038954A1 (en) * 2003-06-04 2005-02-17 Quantum Corporation Storage drive having universal format across media types
JP4266725B2 (ja) 2003-06-27 2009-05-20 株式会社日立製作所 記憶システム
US7188296B1 (en) 2003-10-30 2007-03-06 Sun Microsystems, Inc. ECC for component failures using Galois fields
US7325157B2 (en) * 2003-11-03 2008-01-29 Samsung Electronics Co., Ltd Magnetic memory devices having selective error encoding capability based on fault probabilities
US7234074B2 (en) * 2003-12-17 2007-06-19 International Business Machines Corporation Multiple disk data storage system for reducing power consumption
US20050166022A1 (en) * 2004-01-28 2005-07-28 Hitachi, Ltd. Method and apparatus for copying and backup in storage systems
JP2005215850A (ja) 2004-01-28 2005-08-11 Hitachi Ltd ストレージ装置、ストレージ装置の制御方法、及びストレージシステム
US7334156B2 (en) * 2004-02-13 2008-02-19 Tandberg Data Corp. Method and apparatus for RAID conversion
US20050235063A1 (en) * 2004-04-15 2005-10-20 Wilson Christopher S Automatic discovery of a networked device
US7681007B2 (en) * 2004-04-15 2010-03-16 Broadcom Corporation Automatic expansion of hard disk drive capacity in a storage device
US7395402B2 (en) * 2004-04-15 2008-07-01 Broadcom Corporation Method and system of data storage capacity allocation and management using one or more data storage drives
US20050235283A1 (en) * 2004-04-15 2005-10-20 Wilson Christopher S Automatic setup of parameters in networked devices
US20050231849A1 (en) * 2004-04-15 2005-10-20 Viresh Rustagi Graphical user interface for hard disk drive management in a data storage system
US7304905B2 (en) * 2004-05-24 2007-12-04 Intel Corporation Throttling memory in response to an internal temperature of a memory device
US7203871B2 (en) 2004-06-03 2007-04-10 Cisco Technology, Inc. Arrangement in a network node for secure storage and retrieval of encoded data distributed among multiple network nodes
US7523285B2 (en) * 2004-08-20 2009-04-21 Intel Corporation Thermal memory control
KR100678893B1 (ko) * 2004-09-16 2007-02-07 삼성전자주식회사 객체 식별자를 이용하여 이동형 저장 장치에서 권리객체를 검색하는 방법 및 장치
US7330955B2 (en) * 2004-10-18 2008-02-12 Seagate Technology Llc Recovery record for updating a system configuration
US7228320B2 (en) * 2004-11-17 2007-06-05 Hitachi, Ltd. System and method for creating an object-level snapshot in a storage system
US7386758B2 (en) * 2005-01-13 2008-06-10 Hitachi, Ltd. Method and apparatus for reconstructing data in object-based storage arrays
US8065350B2 (en) * 2005-01-31 2011-11-22 Broadcom Corporation Method and system for flexibly providing shared access to data pools
US7966353B2 (en) * 2005-01-31 2011-06-21 Broadcom Corporation Method and system for flexibly providing shared access to non-data pool file systems
JP2006244123A (ja) * 2005-03-03 2006-09-14 Fujitsu Ltd データストレージシステム及びデータストレージ制御装置
US7940929B1 (en) * 2005-11-23 2011-05-10 Beyondcore, Inc. Method for processing documents containing restricted information
US10176338B2 (en) 2005-11-23 2019-01-08 Salesforce.Com Secure distributed storage of documents containing restricted information, via the use of keysets
US10127130B2 (en) 2005-03-18 2018-11-13 Salesforce.Com Identifying contributors that explain differences between a data set and a subset of the data set
US7343468B2 (en) * 2005-04-14 2008-03-11 International Business Machines Corporation Method and apparatus for storage provisioning automation in a data center
US20060248252A1 (en) * 2005-04-27 2006-11-02 Kharwa Bhupesh D Automatic detection of data storage functionality within a docking station
TWI285313B (en) * 2005-06-22 2007-08-11 Accusys Inc XOR circuit, RAID device capable of recover a plurality of failures and method thereof
US8135763B1 (en) * 2005-09-30 2012-03-13 Emc Corporation Apparatus and method for maintaining a file system index
US20070089023A1 (en) * 2005-09-30 2007-04-19 Sigmatel, Inc. System and method for system resource access
US7577809B2 (en) * 2005-11-02 2009-08-18 Promethean Storage Llc Content control systems and methods
US8938594B2 (en) * 2005-11-04 2015-01-20 Oracle America, Inc. Method and system for metadata-based resilvering
US20070106713A1 (en) * 2005-11-08 2007-05-10 Network Blackbox, Inc. Hazard protected file backup system
US7571368B1 (en) 2006-01-26 2009-08-04 Promethean Storage Llc Digital content protection systems and methods
US7831793B2 (en) * 2006-03-01 2010-11-09 Quantum Corporation Data storage system including unique block pool manager and applications in tiered storage
US7426606B2 (en) * 2006-03-31 2008-09-16 Intel Corporation Method, apparatus and system for reverting FAT cluster number to file ID and offset of non-FAT flash file system
US7584335B2 (en) * 2006-11-02 2009-09-01 International Business Machines Corporation Methods and arrangements for hybrid data storage
US8667379B2 (en) * 2006-12-20 2014-03-04 International Business Machines Corporation Apparatus and method to generate, store, and read, a plurality of error correction coded data sets
US8239706B1 (en) * 2007-01-03 2012-08-07 Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations Data retrieval system and method that provides retrieval of data to any point in time
US8560760B2 (en) 2007-01-31 2013-10-15 Microsoft Corporation Extending flash drive lifespan
US7657572B2 (en) * 2007-03-06 2010-02-02 Microsoft Corporation Selectively utilizing a plurality of disparate solid state storage locations
US8370715B2 (en) * 2007-04-12 2013-02-05 International Business Machines Corporation Error checking addressable blocks in storage
US7958303B2 (en) * 2007-04-27 2011-06-07 Gary Stephen Shuster Flexible data storage system
US8103844B2 (en) * 2008-02-01 2012-01-24 Donald Rozinak Beaver Secure direct platter access
US20090196417A1 (en) * 2008-02-01 2009-08-06 Seagate Technology Llc Secure disposal of storage data
US20100031057A1 (en) * 2008-02-01 2010-02-04 Seagate Technology Llc Traffic analysis resistant storage encryption using implicit and explicit data
US8019728B2 (en) * 2008-04-17 2011-09-13 Nec Laboratories America, Inc. Dynamically quantifying and improving the reliability of distributed data storage systems
US8255774B2 (en) 2009-02-17 2012-08-28 Seagate Technology Data storage system with non-volatile memory for error correction
US8250299B2 (en) 2009-05-20 2012-08-21 International Business Machines Corporation Multi-host concurrent writing to magnetic tape
CN101923553A (zh) * 2009-06-11 2010-12-22 鸿富锦精密工业(深圳)有限公司 Fat文件系统的安装方法
US8122284B2 (en) * 2009-06-18 2012-02-21 Taylor Tracy M N+1 failover and resynchronization of data storage appliances
EP2518614A4 (en) 2009-12-24 2014-01-01 Hitachi Ltd STORAGE SYSTEM FOR PROVIDING A VIRTUAL VOLUME
WO2011077489A1 (ja) * 2009-12-24 2011-06-30 株式会社日立製作所 仮想ボリュームを提供するストレージシステム
US9235585B1 (en) 2010-06-30 2016-01-12 Emc Corporation Dynamic prioritized recovery
US9367561B1 (en) 2010-06-30 2016-06-14 Emc Corporation Prioritized backup segmenting
US9697086B2 (en) 2010-06-30 2017-07-04 EMC IP Holding Company LLC Data access during data recovery
US8433685B2 (en) * 2010-08-18 2013-04-30 Hewlett-Packard Development Company, L.P. Method and system for parity-page distribution among nodes of a multi-node data-storage system
US8793250B1 (en) 2010-12-17 2014-07-29 Amazon Technologies, Inc. Flexible partitioning of data
US9235588B1 (en) * 2010-12-29 2016-01-12 Symantec Corporation Systems and methods for protecting deduplicated data
CN102207831B (zh) * 2011-07-04 2013-08-07 华为数字技术(成都)有限公司 磁盘阵列的数据读写方法及装置
US8909891B2 (en) * 2011-07-21 2014-12-09 International Business Machines Corporation Virtual logical volume for overflow storage of special data sets
JP5744244B2 (ja) * 2011-10-19 2015-07-08 株式会社日立製作所 ストレージシステム
US8713405B2 (en) * 2011-11-22 2014-04-29 Simplivity Corporation Method and apparatus for allocating erasure coded data to disk storage
US10802687B2 (en) 2011-12-04 2020-10-13 Salesforce.Com, Inc. Displaying differences between different data sets of a process
US10796232B2 (en) 2011-12-04 2020-10-06 Salesforce.Com, Inc. Explaining differences between predicted outcomes and actual outcomes of a process
KR20130064521A (ko) * 2011-12-08 2013-06-18 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 관리 방법
EP2672387B1 (en) 2012-06-04 2018-08-01 Amplidata NV A distributed object storage system
WO2014045329A1 (en) * 2012-09-24 2014-03-27 Hitachi, Ltd. Storage system and storage control method
CN102999399B (zh) * 2012-11-13 2016-08-03 浙江宇视科技有限公司 一种jbod阵列自动恢复存储的方法和装置
CN102968358A (zh) * 2012-11-13 2013-03-13 浪潮电子信息产业股份有限公司 一种软raid1部署系统的快速恢复方法
WO2014138448A1 (en) * 2013-03-06 2014-09-12 Sullivan Jason A Systems and methods for providing dynamic hybrid storage
US9213611B2 (en) 2013-07-24 2015-12-15 Western Digital Technologies, Inc. Automatic raid mirroring when adding a second boot drive
EP3201778A4 (en) * 2014-10-03 2018-04-25 Agency for Science, Technology and Research Method for optimizing reconstruction of data for a hybrid object storage device
CN104317730B (zh) * 2014-10-27 2018-02-06 浪潮(北京)电子信息产业有限公司 一种基于二次分配管理磁盘扩展空间方法及系统
US9645897B2 (en) * 2015-03-11 2017-05-09 International Business Machines Corporation Using duplicated data to enhance data security in RAID environments
US10097636B1 (en) 2015-06-15 2018-10-09 Western Digital Technologies, Inc. Data storage device docking station
US9760730B2 (en) * 2015-08-28 2017-09-12 Dell Products L.P. System and method to redirect and unlock software secure disk devices in a high latency environment
US10097534B2 (en) * 2015-08-28 2018-10-09 Dell Products L.P. System and method to redirect hardware secure USB storage devices in high latency VDI environments
CN109683810B (zh) * 2017-08-15 2022-02-18 金钱猫科技股份有限公司 一种读写方法及终端
CN109725823B (zh) * 2017-10-27 2021-11-16 伊姆西Ip控股有限责任公司 用于管理混合存储盘阵列的方法和设备

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3769453A (en) 1972-08-17 1973-10-30 Ibm Finite memory adaptive predictor
US3987419A (en) * 1974-12-05 1976-10-19 Goodyear Aerospace Corporation High speed information processing system
US4159412A (en) * 1977-02-11 1979-06-26 Texas Instruments Incorporated Magnetic bubble memory chip synchronization and redundancy
US4090251A (en) 1977-06-09 1978-05-16 Texas Instruments Incorporated Bubble memory redundancy storage
US4458334A (en) * 1977-05-16 1984-07-03 Texas Instruments Incorporated Redundancy map storage for bubble memories
US4161778A (en) 1977-07-19 1979-07-17 Honeywell Information Systems, Inc. Synchronization control system for firmware access of high data rate transfer bus
US4221933A (en) 1978-12-21 1980-09-09 Cornell Ronald G Data storage and retrieval structure for a message storage system
US4389715A (en) 1980-10-06 1983-06-21 Inmos Corporation Redundancy scheme for a dynamic RAM
US4425615A (en) 1980-11-14 1984-01-10 Sperry Corporation Hierarchical memory system having cache/disk subsystem with command queues for plural disks
US4523275A (en) 1980-11-14 1985-06-11 Sperry Corporation Cache/disk subsystem with floating entry
US4454595A (en) 1981-12-23 1984-06-12 Pitney Bowes Inc. Buffer for use with a fixed disk controller
JPS59100964A (ja) 1982-12-01 1984-06-11 Hitachi Ltd ディスク制御システム及びその並列データ転送方法
JPS59153251A (ja) 1983-02-18 1984-09-01 Toshiba Corp デイスクキヤツシユシステム
US4591973A (en) 1983-06-06 1986-05-27 Sperry Corporation Input/output system and method for digital computers
FR2561428B1 (fr) 1984-03-16 1986-09-12 Bull Sa Procede d'enregistrement dans une memoire a disques et systeme de memoire a disques
JPH0711789B2 (ja) 1985-12-28 1995-02-08 株式会社日立製作所 同時デ−タ転送制御装置
US4722085A (en) 1986-02-03 1988-01-26 Unisys Corp. High capacity disk storage system having unusually high fault tolerance level and bandpass
US4761785B1 (en) 1986-06-12 1996-03-12 Ibm Parity spreading to enhance storage access
USRE34100E (en) 1987-01-12 1992-10-13 Seagate Technology, Inc. Data error correction system
CA1296103C (en) 1987-06-02 1992-02-18 Theodore Jay Goodlander High-speed, high capacity, fault-tolerant, error-correcting storage system
US4942579A (en) 1987-06-02 1990-07-17 Cab-Tek, Inc. High-speed, high-capacity, fault-tolerant error-correcting storage system
US4870643A (en) 1987-11-06 1989-09-26 Micropolis Corporation Parallel drive array storage system
US5218689A (en) 1988-08-16 1993-06-08 Cray Research, Inc. Single disk emulation interface for an array of asynchronously operating disk drives
US5148432A (en) 1988-11-14 1992-09-15 Array Technology Corporation Arrayed disk drive system and method
JP2780821B2 (ja) 1989-09-22 1998-07-30 株式会社日立製作所 オンライン中のダンプ方式およびディスクサブシステム
JPH0833864B2 (ja) 1990-01-30 1996-03-29 富士通株式会社 データ保全方式
US5220569A (en) 1990-07-09 1993-06-15 Seagate Technology, Inc. Disk array with error type indication and selection of error correction method
US5210860A (en) 1990-07-20 1993-05-11 Compaq Computer Corporation Intelligent disk array controller
US5191584A (en) 1991-02-20 1993-03-02 Micropolis Corporation Mass storage array with efficient parity calculation
US5212799A (en) 1991-07-31 1993-05-18 Ncr Corporation Method and apparatus for storing a data block in multiple memory banks within a computer
US5289418A (en) 1992-02-14 1994-02-22 Extended Systems, Inc. Memory apparatus with built-in parity generation
US5331646A (en) 1992-05-08 1994-07-19 Compaq Computer Corporation Error correcting code technique for improving reliablility of a disk array
CA2097762A1 (en) 1992-06-05 1993-12-06 Dennis J. Alexander Disk drive controller with a posted write cache memory
US5410653A (en) 1992-06-16 1995-04-25 International Business Machines Corporation Asynchronous read-ahead disk caching using multiple disk I/O processes and dynamically variable prefetch length
JPH0659952A (ja) 1992-08-07 1994-03-04 Toshiba Corp 磁気ディスク装置
US5448709A (en) 1992-10-13 1995-09-05 Compaq Computer Corporation Disk array controller having command descriptor blocks utilized by bus master and bus slave for respectively performing data transfer operations
JPH06149482A (ja) 1992-11-11 1994-05-27 Hitachi Ltd 外部記憶装置
JP3183993B2 (ja) 1993-03-31 2001-07-09 株式会社東芝 ディスク制御システム
US5617425A (en) 1993-05-26 1997-04-01 Seagate Technology, Inc. Disc array having array supporting controllers and interface
US5392244A (en) * 1993-08-19 1995-02-21 Hewlett-Packard Company Memory systems with data storage redundancy management
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
US5586291A (en) 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
US5682499A (en) * 1995-06-06 1997-10-28 International Business Machines Corporation Directory rebuild method and apparatus for maintaining and rebuilding directory information for compressed data on direct access storage device (DASD)
WO1997011426A1 (en) * 1995-09-18 1997-03-27 Cyberstorage Systems, Inc. Universal storage management system
JP3136258B2 (ja) * 1995-09-27 2001-02-19 三菱電機株式会社 ディスク更新ログ記録方式
US5862312A (en) * 1995-10-24 1999-01-19 Seachange Technology, Inc. Loosely coupled mass storage computer cluster
US5890204A (en) * 1996-06-03 1999-03-30 Emc Corporation User controlled storage configuration using graphical user interface

Also Published As

Publication number Publication date
DE19882723T1 (de) 2000-09-21
WO1999018507A1 (en) 1999-04-15
GB2345366B (en) 2003-02-19
GB0008661D0 (en) 2000-05-31
GB2345366A (en) 2000-07-05
CN1281560A (zh) 2001-01-24
JP2001519563A (ja) 2001-10-23
KR20010015722A (ko) 2001-02-26
US20020059539A1 (en) 2002-05-16
US6704838B2 (en) 2004-03-09

Similar Documents

Publication Publication Date Title
KR100564664B1 (ko) 데이터 저장 장치용 하이브리드 데이터 저장과 재구성시스템 및 방법
KR100593568B1 (ko) 객체 지향 데이터 저장 장치상의 객체 재구성
US9830278B1 (en) Tracking replica data using key management
US8498417B1 (en) Automation of coordination of encryption keys in a SAN based environment where an encryption engine, device management, and key management are not co-located
US9641490B2 (en) Trusted storage systems and methods
US8019960B2 (en) Metadata management system for an information dispersed storage system
US7152165B1 (en) Trusted storage systems and methods
US8285878B2 (en) Block based access to a dispersed data storage network
US7818518B2 (en) System for rebuilding dispersed data
US6249866B1 (en) Encrypting file system and method
US7752492B1 (en) Responding to a failure of a storage system
US8799681B1 (en) Redundant array of encrypting disks
US8205049B1 (en) Transmitting file system access requests to multiple file systems
US7155464B2 (en) Recovering and checking large file systems in an object-based data storage system
WO2002077878A1 (en) Crypto-pointers for secure data storage
US7882420B2 (en) Method and system for data replication
US20070174363A1 (en) Computer system, a computer and a method of storing a data file
KR20010022942A (ko) 객체 지향 데이터 저장 장치상의 여유도 구현
Nagle et al. The ANSI T10 object-based storage standard and current implementations

Legal Events

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

Payment date: 20130311

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140311

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150224

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160218

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee