KR101569428B1 - 파일 처리 방법 및 저장 디바이스 - Google Patents

파일 처리 방법 및 저장 디바이스 Download PDF

Info

Publication number
KR101569428B1
KR101569428B1 KR1020147036588A KR20147036588A KR101569428B1 KR 101569428 B1 KR101569428 B1 KR 101569428B1 KR 1020147036588 A KR1020147036588 A KR 1020147036588A KR 20147036588 A KR20147036588 A KR 20147036588A KR 101569428 B1 KR101569428 B1 KR 101569428B1
Authority
KR
South Korea
Prior art keywords
file
stripe
data
data block
disk
Prior art date
Application number
KR1020147036588A
Other languages
English (en)
Other versions
KR20150034140A (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 KR20150034140A publication Critical patent/KR20150034140A/ko
Application granted granted Critical
Publication of KR101569428B1 publication Critical patent/KR101569428B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • 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/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • 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/0643Management of files
    • 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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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
    • 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
    • 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/0673Single storage device
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명의 실시예는 파일 처리 방법 및 저장 디바이스를 제공한다. 파일 처리 방법에서, 저장 디바이스는, RAID에 저장될 T개의 파일을 수신하고, RAID의 스트라이프(stripe)에서의 체크 블록의 시퀀스 번호를 결정한다. 저장 디바이스는, T개의 파일에서의 K번째 파일의 데이터 블록을 스트라이프에서의 K번째 데이터 블록으로서 반복적으로 획득하며, 여기서 K의 값이 1에서부터 T까지 점차적으로 증가하고, K의 값이 스트라이프에서의 체크 블록의 시퀀스 번호와 동일하지 않다. 데이터 블록에 따라 체크 블록을 계산한 후, 저장 디바이스는 스트라이프에서의 데이터 블록 및 획득된 체크 블록을 T개의 디스크에 기록한다. 전술한 방법을 이용함으로써, 파일 저장의 보안을 보장하면서 하나의 파일이 RAID의 하나의 디스크에 기록될 수 있다.

Description

파일 처리 방법 및 저장 디바이스{FILE PROCESSING METHOD AND STORAGE DEVICE}
관련 출원의 상호 참조
본 출원은 2013년 8월 9일자로 출원된 국제 출원 PCT/CN2013/081172의 연속이며, 이 특허 출원은 그 전체 내용이 참조에 의해 본 명세서에 통합된다.
기술 분야
본 발명은 통신 기술의 분야에 관한 것으로, 보다 구체적으로는 파일 처리 방법 및 저장 디바이스에 관한 것이다.
중복 배열의 저가 디스크(redundant array of inexpensive disks, RAID)로도 지칭되는 중복 배열의 독립 디스크(redundant array of independent disks, RAID)는 간략하게 디스크 어레이로서도 지칭된다. 중복 배열의 독립 디스크의 원리는 비교적 저렴한 복수의 하드 디스크를 조합하여 하드 디스크 어레이 그룹을 형성함으로써 거대 용량을 갖는 고가의 하드 디스크의 성능에 도달하거나 심지어는 초과하는 성능을 제공하고 분산 데이터 배치의 설계와 조합하여 데이터 보안(data security)을 향상시키기 위한 것이다. 선택되는 상이한 버전에 따라서는, 단일 하드 디스크에 비하여, RAID는 저장 용량을 증가시킬 수 있고, 또한 데이터 통합(data integration) 및 데이터 에러 내성 능력(data error tolerance capability)을 향상시킬 수 있다. 이에 부가하여, 컴퓨터에 대해서는, 디스크 어레이는 독립적 하드 디스크 또는 논리적 저장 유닛처럼 보이게 된다.
아카이빙 시나리오(archiving scenario)에서, 다수의 파일은 아카이브될 필요가 있다. 따라서, 종래의 기술에서, RAID는 일반적으로 아카이브된 파일을 저장하기 위해 사용된다. 이에 부가하여, 데이터 보안을 향상시키기 위해, 예컨대 RAID 3, RAID 4, RAID 5 또는 RAID 6의 형태의 체크 기능을 갖는 RAID가 일반적으로 아카이브된 파일을 저장하기 위해 사용된다. 종래 기술에서, 데이터 액세스 속도를 향상시키기 위해, 파일은 일반적으로 여러 개의 데이터 블록으로 분할된다. 하나의 파일에 속하는 복수의 데이터 블록 및 체크 데이터를 포함하는 스트라이프(stripe)는 RAID를 형성하는 복수의 디스크에 기록된다. 아카이브된 파일이 덜 빈번하게 액세스되기 때문에, 에너지 절감의 목적을 달성하기 위해, 저장 시스템에서의 디스크는 일반적으로 파일이 아카이브된 후에는 슬리핑 상태 또는 파워-오프 상태에 있게 된다. 어떠한 아카이브된 파일이 액세스될 필요가 있을 때, 파일의 데이터 블록이 저장된 복수의 디스크가 파일을 판독하기 위해 기동되거나 또는 파워 온될 필요가 있다.
본 발명은, 파일 저장의 보안을 보장하면서 하나의 파일을 RAID의 하나의 저장 장치에 저장할 수 있고, 에너지 절감 효과를 달성할 수 있는, 파일 처리 방법 및 저장 디바이스를 제공하는 것을 목적으로 한다.
제1 특징에 따라, 본 발명의 실시예는 중복 배열의 독립 디스크(RAID) 상에 파일을 저장하기 위한 저장 디바이스에 의해 수행되는 파일 처리 방법을 제공하며, 상기 파일 처리 방법은 이하의 단계를 포함한다:
RAID에 저장될 T개의 파일을 수신하는 단계로서, T의 값이 3보다 작지 않고, T의 값이 RAID를 형성하는 디스크의 개수와 동일한, 수신하는 단계;
RAID의 스트라이프(stripe)에서의 체크 블록의 시퀀스 번호를 결정하는 단계;
T개의 파일에서의 K번째 파일의, 디스크에 기록될, 데이터 블록을 상기 스트라이프에서의 K번째 데이터 블록으로서 반복적으로 획득하는 단계로서, K의 값이 1에서부터 T까지 점차적으로 증가하고, K의 값이 상기 스트라이프에서의 체크 블록의 시퀀스 번호와 동일하지 않은, 획득하는 단계;
상기 스트라이프에서의 데이터 블록에 따라 상기 스트라이프에서의 체크 블록을 계산하는 단계; 및
상기 스트라이프에서의 데이터 블록 및 상기 스트라이프에서의 획득된 체크 블록을 T개의 디스크에 기록하는 단계로서, 각각의 블록이 하나의 디스크에 기록되는, 기록하는 단계.
제1 특징의 첫 번째 가능한 구현 양상으로, 상기 파일 처리 방법은 이하의 단계를 더 포함한다:
상기 K번째 파일이 RAID에 기록될 데이터 블록을 갖지 않는 때에, 상기 T개의 파일을 제외한 다른 파일이 수신되는지를 판정하는 단계;
다른 파일이 수신되면, 수신된 다른 파일로부터 파일을 선택하는 단계; 및
선택된 파일에서의, 디스크에 기록될, 데이터 블록을 상기 스트라이프에서의 K번째 데이터 블록으로서 이용하는 단계.
제1 특징을 참조하여, 제1 특징의 두 번째 가능한 구현 양상으로, 상기 파일 처리 방법은 이하의 단계를 더 포함한다:
상기 K번째 파일이 디스크에 기록될 데이터 블록을 갖지 않을 때, T개의 파일을 제외한 다른 파일이 수신되지 않는다면, 상기 스트라이프에서의 K번째 데이터 블록을 0으로 채우는 단계.
제1 특징 또는 제1 특징의 첫 번째 내지 두 번째 가능한 구현 양상 중의 하나를 참조하여, 세 번째 가능한 구현 양상으로, 상기 파일 처리 방법은 이하의 단계를 더 포함한다:
호스트의 액세스 요청을 수신하는 단계로서, 상기 액세스 요청이 RAID에 저장된 파일을 판독하기 위해 이용되고, 상기 액세스 요청이 액세스될 필요가 있는 파일의 논리 어드레스를 반송(carry)하는, 수신하는 단계;
상기 논리 어드레스에 따라, 파일의 데이터 블록이 저장된 물리 어드레스를 질의(query)하는 단계;
상기 물리 어드레스에 따라, 파일이 저장된 하나의 디스크를 결정하는 단계; 및
상기 호스트에게, 상기 디스크에 저장된 파일의 데이터 블록을 리턴하는 단계.
제2 특징에 따라, 본 발명의 실시예는, 중복 배열의 독립 디스크(Redundant Arrays of Independent Disks, RAID)가 D개의 데이터 디스크와 P개의 독립적 체크 디스크를 포함하고, D의 값이 2보다 작지 않고, P의 값이 1보다 작지 않은, 상기 RAID 상에 파일을 저장하기 위한 저장 디바이스에 의해 수행되는 방법을 제공하며, 상기 방법은 이하의 단계를 포함한다:
상기 RAID에 저장될 D개의 파일을 수신하는 단계;
D개의 파일에서의 K번째 파일의, 데이터 디스크에 기록될, 데이터 블록을, 상기 RAID의 스트라이프 내에 있고 K번째 데이터 디스크에 저장될 데이터 블록으로서 반복적으로 획득하는 단계로서, K의 값이 1에서부터 D까지 점차적으로 증가하는, 획득하는 단계;
획득된 D개의 데이터 블록에 따라 상기 스트라이프에서의 P개의 체크 블록을 계산하는 단계; 및
상기 D개의 데이터 블록을 D개의 데이터 디스크에 기록하고, 상기 P개의 체크 블록을 P개의 독립적 체크 디스크에 기록하는 단계로서, 각각의 블록이 하나의 디스크에 기록되는, 기록하는 단계.
제2 특징의 첫 번째 가능한 구현 양상으로, 상기 방법은 이하의 단계를 더 포함한다:
상기 K번째 파일이 데이터 디스크에 기록될 데이터 블록을 갖지 않는 때에, 상기 D개의 파일을 제외한 다른 파일이 수신되는지를 판정하는 단계;
다른 파일이 수신되면, 수신된 다른 파일로부터 파일을 선택하는 단계; 및
선택된 파일에서의, 디스크에 기록될, 데이터 블록을, 상기 스트라이프 내에 있고 K번째 데이터 디스크에 저장될 데이터 블록으로서 이용하는 단계.
제2 특징을 참조하여, 제2 특징의 두 번째 가능한 구현 양상으로, 상기 방법은 이하의 단계를 더 포함한다:
상기 K번째 파일이 데이터 디스크에 기록될 데이터 블록을 갖지 않을 때, D개의 파일을 제외한 다른 파일이 수신되지 않는다면, 상기 스트라이프에 내에 있고 K번째 데이터 디스크에 저장될 데이터 블록을 0으로 채우는 단계.
제2 특징 또는 제2 특징의 첫 번째 내지 두 번째 가능한 구현 양상 중의 하나를 참조하여, 세 번째 가능한 구현 양상으로, 상기 방법은 이하의 단계를 더 포함한다:
호스트의 액세스 요청을 수신하는 단계로서, 상기 액세스 요청이 RAID에 저장된 파일을 판독하기 위해 이용되고, 상기 액세스 요청이 액세스될 필요가 있는 파일의 논리 어드레스를 반송하는, 수신하는 단계;
상기 논리 어드레스에 따라, 파일의 데이터 블록이 저장된 물리 어드레스를 질의하는 단계;
상기 물리 어드레스에 따라, 파일이 저장된 하나의 디스크를 결정하는 단계; 및
상기 호스트에게, 상기 디스크에 저장된 파일의 데이터 블록을 리턴하는 단계.
제3 특징에 따라, 본 발명의 실시예는 저장 디바이스를 제공하며, 상기 저장 디바이스는,
파일을 저장하도록 구성되고, T개의 디스크를 포함하며, T의 값이 3보다 작지 않은, RAID;
호스트 및 상기 RAID와 통신하도록 구성된 통신 인터페이스; 및
프로세서
삭제
삭제
를 포함하며, 상기 프로세서가,
상기 RAID에 저장될 T개의 파일을 수신하고,
상기 RAID의 스트라이프에서의 체크 블록의 시퀀스 번호를 결정하고,
T개의 파일에서의 K번째 파일의, 디스크에 기록될, 데이터 블록을 상기 스트라이프에서의 K번째 데이터 블록으로서 반복적으로 획득하고, 여기서 K의 값이 1에서부터 T까지 점차적으로 증가하고, K의 값이 상기 스트라이프에서의 체크 블록의 시퀀스 번호와 동일하지 않으며,
상기 스트라이프에서의 데이터 블록에 따라 상기 스트라이프에서의 체크 블록을 계산하고,
상기 스트라이프에서의 데이터 블록 및 상기 스트라이프에서의 획득된 체크 블록을 T개의 디스크에 기록하도록 구성되며, 여기서 각각의 블록이 하나의 디스크에 기록된다.
제3 특징의 첫 번째 가능한 구현 양상으로, 상기 프로세서는, 또한,
상기 K번째 파일이 디스크에 기록될 데이터 블록을 갖지 않는 때에, 상기 T개의 파일을 제외한 다른 파일이 수신되는지를 판정하고,
다른 파일이 수신되면, 수신된 다른 파일로부터 파일을 선택하고,
선택된 파일에서의, 디스크에 기록될, 데이터 블록을 상기 스트라이프에서의 K번째 데이터 블록으로서 이용하도록 구성된다.
제3 특징을 참조하여, 제3 특징의 두 번째 가능한 구현 양상으로, 상기 프로세서는, 또한,
상기 K번째 파일이 디스크에 기록될 데이터 블록을 갖지 않을 때, T개의 파일을 제외한 다른 파일이 수신되지 않는다면, 상기 스트라이프에서의 K번째 데이터 블록을 0으로 채우도록 구성된다.
제3 특징 또는 제3 특징의 첫 번째 내지 두 번째 가능한 구현 양상 중의 하나를 참조하여, 세 번째 가능한 구현 양상으로, 상기 프로세서는, 또한,
호스트의 액세스 요청을 수신하고, 여기서 상기 액세스 요청이 상기 RAID에 저장된 파일을 판독하기 위해 이용되고, 상기 액세스 요청이 액세스될 필요가 있는 파일의 논리 어드레스를 반송하며,
상기 논리 어드레스에 따라, 파일의 데이터 블록이 저장된 물리 어드레스를 질의하고,
상기 물리 어드레스에 따라, 파일이 저장된 하나의 디스크를 결정하고,
상기 호스트에게, 상기 디스크에 저장된 파일의 데이터 블록을 리턴하도록 구성된다.
제4 특징에서, 본 발명의 실시예는 저장 디바이스를 제공하며, 상기 저장 디바이스는,
파일을 저장하도록 구성되고, D개의 데이터 디스크와 P개의 독립적 체크 디스크를 포함하고, D의 값이 2보다 작지 않고, P의 값이 1보다 작지 않은, 중복 배열의 독립 디스크(RAID);
삭제
삭제
호스트 및 상기 RAID와 통신하도록 구성된 통신 인터페이스; 및
프로세서
를 포함하며, 상기 프로세서가,
상기 RAID에 저장될 D개의 파일을 수신하고,
D개의 파일에서의 K번째 파일의, 데이터 디스크에 기록될, 데이터 블록을, 상기 RAID의 스트라이프 내에 있고 K번째 데이터 디스크에 저장될 데이터 블록으로서 반복적으로 획득하고, 여기서 K의 값이 1에서부터 D까지 점차적으로 증가하며,
획득된 D개의 데이터 블록에 따라 상기 스트라이프에서의 P개의 체크 블록을 계산하고,
상기 D개의 데이터 블록을 D개의 데이터 디스크에 기록하고, 상기 P개의 체크 블록을 P개의 독립적 체크 디스크에 기록하도록 구성되며, 여기서 각각의 블록이 하나의 디스크에 기록된다.
제4 특징의 첫 번째 가능한 구현 양상으로, 상기 프로세서는, 또한,
상기 K번째 파일이 데이터 디스크에 기록될 데이터 블록을 갖지 않는 때에, 상기 D개의 파일을 제외한 다른 파일이 수신되는지를 판정하고,
다른 파일이 수신되면, 수신된 다른 파일로부터 파일을 선택하고,
선택된 파일에서의, 디스크에 기록될, 데이터 블록을, 상기 스트라이프 내에 있고 K번째 데이터 디스크에 저장될 데이터 블록으로서 이용하도록 구성된다.
제4 특징을 참조하여, 제4 특징의 두 번째 가능한 양상으로, 상기 프로세서는, 또한,
상기 K번째 파일이 데이터 디스크에 기록될 데이터 블록을 갖지 않을 때, D개의 파일을 제외한 다른 파일이 수신되지 않는다면, 상기 스트라이프에 내에 있고 K번째 데이터 디스크에 저장될 데이터 블록을 0으로 채우도록 구성된다.
제4 특징 또는 제4 특징의 첫 번째 내지 두 번째 가능한 구현 양상 중의 하나를 참조하여, 세 번째 가능한 구현 양상으로, 상기 프로세서는, 또한,
호스트의 액세스 요청을 수신하고, 여기서 상기 액세스 요청이 상기 RAID에 저장된 파일을 판독하기 위해 이용되고, 상기 액세스 요청이 액세스될 필요가 있는 파일의 논리 어드레스를 반송하며,
상기 논리 어드레스에 따라, 파일의 데이터 블록이 저장된 물리 어드레스를 질의하고,
상기 물리 어드레스에 따라, 파일이 저장된 하나의 디스크를 결정하고,
상기 호스트에게, 상기 디스크에 저장된 파일의 데이터 블록을 리턴하도록 구성된다.
제5 특징에 따라, 본 발명의 실시예는, 프로그램 코드를 저장하는 컴퓨터 판독 가능 저장 매체를 포함하는 컴퓨터 프로그램 제품으로서, 상기 프로그램 코드로 구성된 명령이 상기한 제1 특징 및 제1 특징의 가능한 구현 양상 중의 임의의 하나에 따른 방법을 실행하기 위해 이용되는 것을 특징으로 하는 컴퓨터 프로그램 제품을 제공한다.
제6 특징에 따라, 본 발명의 실시예는, 프로그램 코드를 저장하는 컴퓨터 판독 가능 저장 매체를 포함하는 컴퓨터 프로그램 제품으로서, 상기 프로그램 코드로 구성된 명령이 상기한 제2 특징 및 제2 특징의 가능한 구현 양상 중의 임의의 하나에 따른 방법을 실행하기 위해 이용되는 것을 특징으로 하는 컴퓨터 프로그램 제품을 제공한다.
본 발명의 실시예에서 제공된 파일 처리 방법에 의하면, 저장 디바이스는 RAID의 스트라이프에서의 체크 블록의 시퀀스 번호를 결정한다. 수신된 T개의 파일에서의 K번째 파일의, 저장 장치에 기록될, 데이터 블록은 스트라이프에서의 K번째 데이터 블록이 되도록 획득되며, 여기서 K의 값은 스트라이프에서의 체크 블록의 시퀀스 번호와 동일하지 않다. 파일로부터 데이터 블록을 획득한 후, 저장 디바이스는, 계산에 의해, 스트라이프에서의 획득된 데이터 블록에 따라 스트라이프에서의 체크 블록을 획득하며, 스트라이프에서의 데이터 블록 및 체크 블록을 RAID를 형성하는 디스크에 기록한다. 저장 디바이스가 파일을 디스크에 기록하기 전에, 하나의 파일의 데이터 블록들은 스트라이프에서의 동일한 위치에 대응하며, 그러므로 하나의 파일의 데이터 블록들이 RAID에서의 하나의 디스크에 대응한다. 따라서, 저장 디바이스는 하나의 파일의 모든 데이터 블록을 하나의 디스크에 기록할 수 있다. 아카이빙의 어플리케이션 시나리오에서, 본 발명의 실시예의 방법을 이용함으로써 RAID에 저장된 파일이 액세스될 필요가 있을 때, RAID의 모든 디스크가 기동되거나 파워 온될 필요가 없고, 파일이 저장된 하나의 디스크만이 작동될 필요가 있으며, 이로써 커다란 에너지 절감 효과가 달성된다.
본 발명의 실시예 또는 종래 기술에서의 기술적 해법을 보다 명확하게 설명하기 위해, 이하에서는 실시예를 설명하기 위해 필요한 첨부 도면을 간략하게 소개한다. 이하의 설명에서의 첨부 도면은 단지 본 발명의 몇몇 실시예만을 나타내고 있다는 것은 명백하다.
도 1은 본 발명의 실시예에 따른 파일 처리 방법의 적용 시나리오의 다이아그램이다.
도 2는 본 발명의 실시예에 따른 저장 디바이스의 개략 구조도이다.
도 3은 본 발명의 실시예에 따른 파일 처리 방법의 흐름도이다.
도 4a는 본 발명의 실시예에 따른 위치들의 개략도이다.
도 4b는 본 발명의 실시예에 따른 파일의 데이터 블록을 분할하는 개략도이다.
도 4c는 본 발명의 실시예에 따른 파일 저장 구조의 개략도이다.
도 5는 본 발명의 실시예에 따른 또 다른 파일 처리 방법의 흐름도이다.
도 6은 본 발명의 실시예에 따른 또 다른 파일 처리 방법의 흐름도이다.
도 6a는 본 발명의 실시예에 따른 또 다른 파일 저장 구조의 개략도이다.
도 7은 본 발명의 실시예에 따른 또 다른 파일 처리 방법의 흐름도이다.
도 8은 본 발명의 실시예에 따른 파일 판독 방법의 개략적 흐름도이다.
당업자가 본 발명에서의 기술적 해법을 더 잘 이해할 수 있도록 하기 위해, 이하에서는 본 발명의 실시예의 첨부 도면을 참조하여 본 발명의 실시예의 기술적 해법을 명확하게 설명한다. 설명되는 실시예는 본 발명의 실시예의 전부가 아니라 일부라는 것은 명백하다.
도 1에 도시된 바와 같이, 도 1은 본 발명의 실시예에 따른 적용 시나리오의 다이아그램이다. 도 1에 도시된 적용 시나리오에서, 저장 시스템은 호스트(100), 접속 디바이스(105) 및 저장 디바이스(110)를 포함한다.
호스트(100)는 서버, 데스크탑 컴퓨터 또는 어플리케이션 서버와 같은 종래 기술로 공지된 임의의 컴퓨팅 디바이스를 포함할수 있다. 운영 체제(operating system) 및 기타 어플리케이션 프로그램이 호스트(100) 상에 설치되며, 복수의 호스트(100)가 있을 수도 있다.
접속 디바이스(110)는 예컨대 광섬유 스위치 또는 또 다른 기존의 스위치와 같은 종래 기술로 공지되어 있는 저장 디바이스와 호스트 간의 어떠한 인터페이스도 포함할 수 있다.
저장 디바이스(110)는 스토리지 어레이, Just a Bunch Of Disks(JBOD), 또는 다이렉트 액세스 저장 디바이스(Direct Access Storage Device, DASD)의 하나 이상의 상호접속된 디스크 드라이브를 포함할 수 있으며, 여기서 다이렉트 액세스 저장 디바이스는 하나 이상의 저장 유닛을 갖는 테이프 저장 디바이스 또는 테이프 라이브러리를 포함할 수 있다.
도 2는 본 발명의 실시예에 따른 저장 디바이스(110)의 개략 구조도이며, 도 2에 도시된 저장 디바이스는 스토리지 어레이이다. 도 2에 도시된 바와 같이, 저장 디바이스(110)는 컨트롤러(115) 및 디스크 어레이(125)를 포함할 수 있으며, 여기에서의 디스크 어레이는 중복 배열의 독립 디스크(RAID)를 지칭한다. 복수의 디스크 어레이(125)가 있을 수도 있으며, 디스크 어레이(125)는 복수의 디스크(130)에 의해 형성된다. 디스크 어레이(125)와 컨트롤러(115) 간의 통신은 SCSI(Small Computer System Interface) 프로토콜과 같은 통신 프로토콜을 이용함으로써 수행될 수 있으며, 본 명세서에서는 이러한 것으로 한정되지 않는다.
컨트롤러(115)는 저장 디바이스(110)의 "핵심(brain)"이다. 컨트롤러(115)는 주로 프로세서(118), 캐시(120), 메모리(122), 통신 버스(간략하여 버스)(126), 및 통신 인터페이스(128)를 포함할 수 있다. 프로세서(118), 캐시(120), 메모리(122) 및 통신 인터페이스(128)는 통신 버스(126)를 이용하여 서로 통신한다.
통신 인터페이스(128)는 호스트(100) 및 디스크 어레이(125)와 통신하도록 구성된다.
메모리(122)는 프로그램(124)을 저장하도록 구성된다. 메모리(122)는 고속 RAM 메모리를 포함할 수 있거나, 또는 예컨대 하나 이상의 디스크 메모리와 같은 비휘발성 메모리를 포함할 수 있다. 메모리(122)는 랜덤 액세스 메모리(RAM), 자기 디스크, 하드 디스크, 광디스크, 솔리드 스테이트 디스크(SSD), 또는 비휘발성 메모리와 같은 프로그램 코드를 저장할 수 있는 어떠한 비일시적(non-transitory) 기기 판독 가능 매체이어도 된다는 것을 이해할 수 있을 것이다.
프로그램(124)은 프로그램 코드를 포함할 수 있으며, 여기서 프로그램 코드는 컴퓨터 연산 명령을 포함한다.
캐시(120)는 어레이의 성능 및 신뢰성을 향상시키기 위해 호스트(100)로부터 수신된 데이터 및 디스크 어레이(125)로부터 판독된 데이터를 버퍼링하도록 구성된다. 캐시(120)는 RAM, ROM, 플래시 메모리, 또는 솔리드 스테이트 디스크(SSD)와 같은 데이터를 저장할 수 있는 비일시적 기기 판독 가능 매체이어도 되며, 이러한 것으로 한정되지 않는다.
프로세서(118)는 중앙 처리 장치(CPU), 또는 주문형 반도체(ASIC)이어도 되며, 본 발명의 실시예를 구현하는 하나 이상의 집적 회로로서 구성될 수도 있다. 운영 체제 및 기타 소프트웨어 프로그램이 프로세서(118)에 설치된다. 상이한 소프트웨어 프로그램은 예컨대 디스크(130)에 대한 입출력(I/O) 요청을 처리하거나, 디스크 내의 데이터에 대해 기타 처리를 수행하거나, 또는 저장 디바이스에 저장된 메타데이터를 수정하는 상이한 기능을 갖는 처리 모듈로서 고려될 수도 있다. 따라서, 컨트롤러(115)는 IO 연산 및 RAID 관리 기능을 구현할 수 있고, 또한 스냅샤팅(snapshotting), 미러링 및 카핑과 같은 다양한 데이터 관리 기능을 제공할 수 있다. 본 발명의 실시예에서, 프로세서(118)는 프로그램(124)을 실행하도록 구성되며, 구체적으로는 이하의 방법 실시예의 관련 단계를 수행할 수 있다.
디스크 어레이(125)는 데이터를 저장하도록 구성된다. 본 발명의 실시예에서, 디스크 어레이(125)의 조직 형태는 예컨대 RAID 3, RAID 4, RAID 5 또는 RAID 6와 같은 체크 기능을 갖는 RAID 방식이며, 이러한 것으로 한정되지 않는다.
도 1을 참조하면, 임의의 저장 디바이스(110)는 접속 디바이스(105)를 통해 하나 이상의 호스트(100)에 의해 전송된 복수의 파일을 수신하고, 수신된 복수의 파일을 복수의 데이터 블록으로 분할하고, 데이터 블록을 디스크 어레이(125)를 형성하는 복수의 디스크(130)에 저장할 수 있다. 임의의 저장 디바이스(110)는 또한 임의의 호스트(100)에 의해 전송된 파일 판독 요청을 수신하고, 디스크(130)에 저장된 파일의 데이터 블록을 파일 판독 요청에 따라 호스트(100)에 리턴할 수 있다.
디스크(130)는 단지 디스크 어레이(125)를 형성하는 저장 장치의 예에 불과하며, 실제 어플리케이션에서는 디스크 어레이가 복수의 디스크를 포함하는 캐비넷 사이에 형성되는 구현 방식으로 될 수도 있다는 것에 유의하여야 한다. 따라서, 본 발명의 실시예에서의 저장 장치는 자기 디스크, 솔리드 스테이트 드라이브(SSD), 서버, 또는 복수의 자기 디스크로 형성된 캐비넷과 같은 어떠한 장치도 포함할 수 있으며, 이러한 것으로 한정되지 않는다.
도 3은 본 발명의 실시예에 따른 파일 처리 방법의 흐름도이다. 본 방법은 도 2에 도시된 저장 디바이스(110)의 컨트롤러(115)에 의해 수행될 수 있으며, 본 방법은 파일 아카이빙 시나리오에 적용될 수 있다. 본 방법은 주로 분산 체크 기능을 갖는 RAID 조직 형태(RAID organization form)에 적용될 수 있으며, 여기서 분산 체크 기능을 갖는 RAID 조직 형태는 RAID 5 및 RAID 6을 포함하지만 이러한 것으로 한정되지 않는다. 도 3에 도시된 바와 같이, 본 방법은 이하의 단계를 포함한다:
단계 300에서, 저장 디바이스(110)는 RAID에 저장될 T개의 파일을 수신하며, 여기서 T의 값은 3보다 작지 않은 자연수이고, T의 값은 RAID를 형성하는 저장 장치의 개수와 동일하다.
본 발명의 실시예에서, 저장 디바이스(110)의 컨트롤러(115)는 하나 이상의 호스트(100)에 의해 전송된 파일 저장 요청을 수신할 수 있다. 파일 저장 요청은 파일을 RAID에 저장하도록 요청하기 위해 이용되며, 파일 저장 요청은 저장될 하나 이상의 파일을 포함할 수 있다.
도 2를 참조하면, 저장 디바이스(110)는 복수의 RAID를 포함할 수 있고, 각각의 RAID는 3보다 작지 않은 개수의 디스크를 포함하여야 한다. 하나의 저장 디바이스(110)에 포함된 복수의 RAID는 동일한 조직 형태를 가질 수 있다는 것을 이해하여야 한다. 예컨대, 저장 디바이스(110)에 포함된 모든 RAID는 RAID 5의 조직 형태로 되어 있다. 분명히, 하나의 저장 디바이스(110)에 포함된 복수의 RAID의 조직 형태는 상이할 수도 있다. 예컨대, 저장 디바이스(110)가 2개의 RAID를 포함하면, 하나의 RAID는 RAID 3일 수 있고, 다른 RAID는 RAID 5일 수 있으며, 이러한 것으로 한정되지 않는다. 본 발명의 실시예에서, 저장 디바이스(110)의 하나의 RAID가 설명을 위한 예로서 이용된다.
저장 디바이스(110)는 T개의 파일을 수신할 때 T개의 파일을 처리할 수 있다는 것을 이해할 수 있을 것이다. 저장 디바이스(110)는 수신된 복수의 파일을 캐시(120)에 버퍼링할 수 있고, 그리고나서 저장 시간에 도달할 때에 처리를 위해 수신된 복수의 파일로부터 T개의 파일을 무작위로 선택할 수 있다. T의 값은 RAID에서의 디스크의 개수와 동일하다. 예컨대, RAID가 4개의 디스크를 포함하면, 저장 디바이스(110)는 4개의 파일을 동시에 처리할 수 있다.
저장 시간은 RAID를 형성하는 디스크에 파일을 기록하기 위한 사전 설정된 시간이다. 예컨대, 한 시간에 한 번 저장이 수행되도록 지정될 수도 있으며, 그러므로 저장 시간은 1시간이다. 저장 시간은 디스크에 기록될 필요가 있는 데이터의 볼륨과 같은 실제 상황에 따라 결정될 수도 있다. 저장은 하루에 한번 수행될 수도 있고, 또는 매 10분마다 수행될 수도 있으며, 이러한 것으로 한정되지 않는다.
단계 305에서, 저장 디바이스(110)는 RAID의 스트라이프에서의 체크 블록의 시퀀스 번호를 결정한다. 본 발명의 실시예에서 설명되는 스트라이프는 RAID를 형성하는 각각의 저장 장치에 동시에 기록되는 데이터 블록의 세트를 나타내며, 스트라이프에서의 각각의 데이터 블록의 크기는 동일하고, 스트라이프의 데이터 블록은 동일한 오프셋으로 각각의 저장 장치에 위치된다. 스트라이프에서의 데이터 블록은 또한 스트립(strip)으로서도 지칭되며, 스트립은 하나의 익스텐트(in an extent)에서의 연속적인 어드레스 블록이다. 디스크 어레이에서, 컨트롤러는 일반적으로 가상 디스크의 블록 어드레스를 멤버 디스크(member disk)의 블록 어드레스에 맵핑하기 위해 스트립을 사용한다. 스트립은 또한 스트라이프 요소로서도 지칭된다.
특정한 동작에서, 저장 디바이스(110)는 RAID의 조직 형태에 따라 스트라이프에서의 체크 블록의 시퀀스 번호를 결정할 수 있다. 여기에서의 시퀀스 번호는 스트라이프에서의 체크 블록의 위치 번호를 나타낸다. 본 발명의 실시예에서, 스트라이프에서의 위치 번호는 1에서부터 시작하여 연속적으로 1씩 점차적으로 증가한다. 예컨대, 도 4a에 도시된 바와 같이, 스트라이프 1은 데이터 블록 1의 체크 블록 1, 데이터 블록 2, 및 데이터 블록 3을 포함한다. 데이터 블록 1의 시퀀스 번호는 1이고, 데이터 블록 2의 시퀀스 번호는 2이며, 데이터 블록 3의 시퀀스 번호는 3이다. 체크 블록 1은 스트라이프 1의 4번째 위치에 위치되며, 이로써 체크 블록 1의 시퀀스 번호는 4이다. 스트라이프 2는 데이터 블록 4, 데이터 블록 5, 체크 블록 2, 및 데이터 블록 6을 포함하며, 여기서 체크 블록 2는 스트라이프 2의 3번째 위치에 위치되며, 이로써 체크 블록 2의 시퀀스 번호는 3이다. 스트라이프에서의 시퀀스 번호는 RAID에서의 멤버 디스크의 시퀀스 번호에 대응한다는 것을 이해할 수 있을 것이다. 예컨대, 스트라이프에서의 체크 블록의 시퀀스 번호가 4이면, 그 체크 블록은 RAID에서의 4번째 멤버 디스크에 기록될 수 있다.
분산 체크 기능을 갖는 RAID에서, 특정한 체크 블록이 스트립에서 어떻게 분산되는지는 제1 RAID의 조직 형태 및 체크 블록의 분산 방식에 따라 결정될 수 있다. 예컨대, RAID 5에서의 디스크 상의 체크 블록의 분산 방식은 레프트 싱크로너스(백워드 패리티(backward parity) 또는 Left Synchronous), 레프트 어싱크로너스(백워드 다이나믹(backward dynamic) 또는 Left Asynchronous), 라이트 싱크로너스(포워드 패리티(forward parity) 또는 Right Synchronous), 또는 라이트 어싱크로너스(포워드 다이나믹(forward dynamic) 또는 Right Asynchronous)일 수 있다. "레프트" 또는 "라이트"는 체크 정보가 어떻게 분산되는지를 나타내며, "싱크로너스" 또는 "어싱크로너스"는 데이터가 어떻게 분산되는지를 나타낸다. "레프트"의 알고리즘에서는, 최종 디스크로부터 출발하여, 체크 블록이 최초 디스크쪽의 방향으로 각각의 스트라이프에서의 하나의 디스크 위치로 이동된다(필요한 경우 순환적으로 및 반복적으로 분산되도록). "라이트"의 알고리즘에서, 최초 디스크로부터 출발하여, 체크 블록이 최종 디스크쪽의 방향으로 각각의 스트라이프에서의 하나의 디스크 위치로 이동된다(필요한 경우 순환적으로 및 반복적으로 분산되도록). RAID 6는 RAID 5를 토대로 하여 체크 블록의 또 다른 그룹이 추가된다.
단계 310에서, 저장 디바이스(110)는 T개의 파일에서의 K번째 파일의, 저장 장치에 기록될, 데이터 블록을 스트라이프에서의 K번째 데이터 블록으로서 획득하며, 여기서 K의 값은 1에서부터 T까지 점차적으로 증가하며, K의 값은 스트라이프에서의 체크 블록의 시퀀스 번호와 동일하지 않다.
예컨대, RAID에 4개의 디스크가 있는 것으로 한다. 단계 305에서 저장 디바이스(110)가 현재 스트라이프에서의 체크 블록의 시퀀스 번호가 도 4a에 도시된 스트라이프 1에서의 4의 시퀀스 번호인 것으로 결정하면, 단계 310에서는, 저장 디바이스(110)가 수신된 4개의 파일 F1, F2, F3 및 F4를 처리할 때, K의 값은 1에서부터 출발하여 연속적으로 1씩 점차적으로 증가한다. K의 값이 T보다 클 수 없다는 것을 이해할 수 있을 것이다. 이에 부가하여, 스트라이프에서의 체크 블록을 위해 위치가 예약될 필요가 있다. 따라서, 본 발명의 실시예에서, K의 값은 스트라이프에서의 체크 블록의 시퀀스 번호와 동일하지 않다. 즉, 저장 디바이스(110)는, 첫 번째 파일에서부터 시작하여, 스트라이프의 대응하는 위치에서의 데이터 블록을 연속적으로 획득할 수 있다. 그러나, 저장 디바이스(110)는 스트라이프에서의 체크 블록의 시퀀스 번호의 값에 대응하는 파일로부터 데이터 블록을 획득하지 못한다. 예컨대, 첫 번째 파일 F1의 데이터 블록은 스트라이프 1에서의 첫 번째 데이터 블록(도 4a에 도시된 스트라이프 1에서의 데이터 블록 1)이 되도록 획득되고, 2번째 파일 F2의 데이터 블록은 스트라이프 1에서의 2번째 데이터 블록(도 4a에 도시된 스트라이프 1에서의 데이터 블록 2)이 되도록 획득되며, 3번째 파일 F3의 데이터 블록은 스트라이프 1에서의 3번째 데이터 블록(도 4a에 도시된 스트라이프 1에서의 데이터 블록 3)이 되도록 획득된다. K의 값이 스트라이프에서의 체크 블록의 시퀀스 번호와 동일하지 않기 때문에, 단계 310에서, 저장 디바이스(110)는 4번째 파일 F4의 데이터 블록을 획득하지 않는다.
단계 305에서, 저장 디바이스(110)가 현재 스트라이프에서의 체크 블록의 시퀀스 번호가 도 4a에 도시된 스트라이프 2에서의 3의 시퀀스 번호인 것으로 결정하면, 단계 310에서, 첫 번째 파일 F1의 데이터 블록은 스트라이프 2에서의 첫 번째 데이터 블록(도 4a에 도시된 스트라이프 2에서의 데이터 블록 4)이 되도록 획득될 수 있으며, 2 번째 파일 F2의 데이터 블록은 스트라이프 2에서의 2 번째 데이터 블록(도 4a에 도시된 스트라이프 2에서의 데이터 블록 5)이 되도록 획득될 수 있으며, 4번째 파일 F4의 데이터 블록은 스트라이프 2에서의 4번째 데이터 블록(도 4a에 도시된 스트라이프 2에서의 데이터 블록 6)이 되도록 획득될 수 있다는 것을 이해할 수 있을 것이다. 이 경우, 스트라이프 2에서의 체크 블록의 시퀀스 번호는 3이며, 따라서 저장 디바이스(110)는 3번째 파일 F3의 데이터 블록을 획득하지 않는다.
스트라이프에서의 체크 블록의 번호가 본 발명의 실시예에서는 한정되지 않는다는 것에 유의하여야 한다. RAID의 하나의 스트라이프가 하나의 체크 블록을 포함하고, 그 스트라이프에서의 체크 블록의 시퀀스 번호가 3이면, 저장 디바이스(110)는 3번째 파일의 데이터 블록을 획득하지 못한다는 것을 이해할 수 있을 것이다. RAID의 하나의 스트라이프가 2개의 체크 블록을 포함하고, 그 스트라이프에서의 2개의 체크 블록의 시퀀스가 번호가 각각 3과 4이면, 저장 디바이스(110)는 3번째 파일과 4번째 파일로부터 데이터 블록을 획득하지 못한다.
본 발명의 실시예에서 설명된 데이터 블록은 복수의 피스(piece)의 데이터에 의해 형성된 데이터 유닛을 나타낸다. 본 발명의 실시예에서 설명되는 체크 블록은 체크 데이터에 의해 형성된 데이터 유닛을 나타낸다. 상이한 파일로부터 획득된 데이터 블록이 RAID의 스트라이프로 형성된다. 따라서, 저장 디바이스(110)는 RAID의 스트립 크기에 따라 파일로부터 데이터 블록을 획득할 수 있다. 즉, 데이터 블록 크기는 RAID의 스트립 크기와 동일한다. 간혹 블록 크기, 청크 크기(chunk size), 또는 그래뉼러티(granularity)로도 지칭되는 스트립 크기는 각각의 디스크 내에 기록되는 데이터 블록의 크기를 나타낸다. 일반적으로, RAID의 스트립 크기는 2KB와 512KB(또는 그보다 큰) 사이이며, 스트립 크기의 값은 예컨대 2KB, 4KB, 8KB, 16KB 등과 같이 2의 n제곱이다.
실제 어플리케이션에서, 데이터 블록은 파일의 개시 어드레스 및 스트립 크기에 따라 파일로부터 획득될 수 있거나, 또는 수신된 T개의 파일이 미리 RAID의 스트립 크기에 따라 데이터 블록으로 분할될 수 있다. 파일이 분할되는 때에, 파일의 크기가 스트립보다 작으면, 파일은 데이터 블록이 되도록 획득될 수 있다. 파일이 분할된 후, 파일의 나머지 데이터의 크기가 스트립 크기 미만이면, 파일의 나머지 데이터는 데이터 블록이 되도록 획득된다. 예컨대, 도 4b에 도시된 바와 같이, 컨트롤러(115)는 수신된 4개의 저장될 파일 F1∼F4를 RAID의 스트립 크기에 따라 분할한다. 파일 F1은 5개의 데이터 블록 F1-1, F1-2, F1-3, F1-4 및 F1-5로 분할된다. 파일 F2는 3개의 데이터 블록 F2-1, F2-2 및 F2-3으로 분할된다. 파일 F3은 하나의 데이터 블록 F3-1로 분할된다. 파일 F4는 5개의 데이터 블록 F4-1, F4-2, F4-3, F4-4 및 F4-5로 분할된다. 단계 310에서, 저장 디바이스(110)는 각각의 파일의, 디스크에 기록될, 데이터 블록을 스트라이프의 대응하는 위치에서의 데이터 블록으로서 직접 획득할 수 있다. 예컨대, 도 4a에 도시된 스트라이프 1에서의 데이터 블록이 결정된 때에, F1-1이 스트라이프 1에서의 데이터 블록 1이 되도록 획득될 수 있으며, F2-1이 스트라이프 1에서의 데이터 블록 2이 되도록 획득될 수 있으며, F3-1이 스트라이프 1에서의 데이터 블록 3이 되도록 획득될 수 있다.
파일의 데이터 블록이 획득될 때에, 파일의, 디스크에 기록될, 임의의 데이터 블록이 스트라이프에서의 파일에 대응하는 위치에서의 데이터 블록으로서 획득될 수 있다는 것에 유의하여야 한다. 예컨대, F1에서의 모든 데이터 블록이 디스크에 기록될 것이면, 데이터 블록 F1-1, F1-2, F1-3, F1-4 또는 F1-5 중의 임의의 데이터 블록이 스트라이프 1의 데이터 블록 1이 되도록 획득될 수 있다.
단계 315에서, 저장 디바이스(110)는 스트라이프에서의 데이터 블록에 따라 스트라이프에서의 체크 블록을 획득한다. 스트라이프에서의 데이터 블록을 획득한 후, 저장 디바이스(110)는 스트라이프에서의 체크 블록을 획득하기 위해 RAID의 체크 알고리즘에 따라 스트라이프에서의 데이터 블록에 대해 체크 계산(check computation)을 수행할 수 있다. 획득된 체크 블록은 단계 305에서 결정된 시퀀스 번호에 대응하는 위치에 있는 스트라이프에서의 체크 블록이다. RAID의 체크 알고리즘이, 이러한 것으로 한정되지는 않지만, 패리티 체크 알고리즘을 포함한다는 것을 이해할 수 있을 것이다.
단계 320에서, 저장 디바이스(110)는 스트라이프에서의 데이터 블록 및 스트라이프에서의 획득된 체크 블록을 T개의 저장 장치에 기록한다. 구체적으로, 저장 디바이스(110)는 스트리이프에서의 데이터 블록 및 체크 블록을 RAID를 형성하는 T개의 디스크에 동시에 기록할 수 있다. 예컨대, F1-1, F2-1, F3-1 및 체크 블록 1이 도 4a에서의 스트라이프 1을 형성하면, F1-1, F2-1, F3-1 및 체크 블록 1은 RAID를 형성하는 4개의 디스크에 동시에 기록될 수 있으며, 여기서 체크 블록 1은 F1-1, F2-1 및 F3-1에 따른 계산에 의해 획득된다. 도 4c에 도시된 스트라이프 1의 저장 구조가 형성된다.
스트라이프 1이 기록된 후, 저장 디바이스(110)는 스트라이프 2에서의 데이터 블록을 획득하고, 획득된 데이터 블록에 따라 스트라이프 2에서의 체크 블록을 획득하고, 스트라이프 2에서의 데이터 블록 및 체크 블록을 디스크에 동시에 기록하는 것을 이어서 행할 수 있다는 것을 이해할 수 있을 것이다. 도 4c에 도시된 스트라이프 2의 저장 구조가 형성된다. 모든 파일이 디스크에 저장될 때까지 다른 스트라이프가 유사하게 처리된다.
본 발명의 실시예에서, 파일의 데이터 블록이 디스크에 기록된 후, 데이터 블록은 디스크에 기록된 데이터 블록으로서 마킹될 수 있거나 또는 파일로부터 삭제될 수 있으며, 이로써 다음 스트라이프에서의 데이터 블록이 획득될 필요가 있을 때에, 파일의, 디스크에 기록될, 데이터 블록이 식별될 수 있다는 것을 이해할 수 있을 것이다. 본 발명의 실시예에서는, 파일의, 디스크에 기록될, 데이터 블록을 식별하는 방법은 한정되지 않는다.
본 발명의 실시예에서 설명된 파일 처리 방법에서, 저장 디바이스(110)는 RAID의 스트라이프에서의 체크 블록의 시퀀스 번호를 결정한다는 것을 전술한 설명으로부터 알 수 있을 것이다. 수신된 T개의 파일에서의 K번째 파일의, 저장 장치에 기록될, 데이터 블록은 스트라이프에서의 K번째 데이터 블록이 되도록 획득되며, 여기서 K의 값은 스트라이프에서의 체크 블록의 시퀀스 번호와 동일하지 않다. 파일로부터 데이터 블록을 획득한 후, 저장 디바이스(110)는 스트라이프에서의 획득된 데이터 블록에 따라 스트라이프에서의 체크 블록을 계산에 의해 획득하고, 그 스트라이프에서의 데이터 블록 및 체크 블록을 RAID를 형성하는 디스크에 기록한다. 이 방법에서, 저장 디바이스(110)가 파일을 디스크에 기록하기 전에, 하나의 파일의 데이터 블록들은 스트라이프에서의 동일한 위치에 대응하고, 그러므로 하나의 파일의 데이터 블록들은 RAID에서의 하나의 디스크에 대응한다. 따라서, 저장 디바이스(110)는 하나의 파일의 데이터 블록 전부를 하나의 디스크에 기록할 수 있다. 아카이빙의 어플리케이션 시나리오에서, 본 발명의 실시예에서 설명된 파일 처리 방법을 이용함으로써 RAID에 저장된 파일이 액세스될 필요가 있을 때, RAID의 모든 디스크가 기동되거나 파워 온될 필요는 없고, 파일이 저장되어 있는 하나의 디스크만이 작동될 필요가 있으므로, 커다란 에너지 절감 효과가 달성된다.
이에 부가하여, 본 발명의 실시예에서 설명된 파일 처리 방법에서는, 상이한 파일의 데이터 블록이 스트라이프를 형성하며, 저장 디바이스(110)가 그 스트라이프를 디스크에 기록한다. 스트라이프의 특정한 데이터 블록이 손상을 입었을 때, 저장 디바이스(110)는 손상된 데이터 블록을 스트라이프에서의 다른 파일의 체크 블록 및 데이터 블록에 따라 복원할 수 있다. 파일 기록 효율이 보장되면서, 파일 저장의 보안이 보장된다.
도 5는 본 발명의 실시예에 따른 또 다른 파일 처리 방법의 흐름도이다. 본 방법은 도 2에 도시된 저장 디바이스(110)의 컨트롤러(115)에 의해 수행될 수 있으며, 본 방법은 파일 아카이빙 시나리오에 적용될 수 있다. 본 발명의 실시예에서, 4개의 디스크를 포함하는 RAID가 설명을 위한 예로서 이용된다. 이하에서는 도 5를 도 2, 도 4b 및 도 4c를 참조하여 설명한다. 도 5에 도시된 바와 같이, 본 방법은 이하의 단계를 포함한다:
단계 400에서, 저장 디바이스(110)는 RAID에 저장될 T개의 파일을 수신한다.
단계 405에서, 저장 디바이스(110)는 RAID의 스트라이프에서의 체크 블록의 시퀀스 번호를 결정한다.
단계 400은 도 3에서의 단계 300과 유사하며, 단계 405는 도 3에서의 단계 305와 유사하다. 따라서, 단계 300 및 단계 305에 대한 관련 설명이 참조될 수 있으며, 그 세부 내용이 여기에서는 반복하여 설명되지 않는다.
단계 410에서, 저장 디바이스(110)는 T개의 파일의 K번째 파일이 디스크에 기록될 데이터 블록을 포함하는지를 판정한다. K번째 파일이 디스크에 기록될 데이터 블록을 포함하면, 단계 415가 수행되고, K번째 파일이 디스크에 기록될 데이터를 포함하지 않는다면, 단계 420이 수행된다. 그 경우, 단계 405에서, 저장 디바이스(110)가 RAID의 스트라이프에서의 체크 블록의 시퀀스 번호가 1이 아닌 것으로 판정하면, K의 초기값은 이 단계에서 먼저 1로 설정될 수 있다. 즉, 저장 디바이스(110)는 T개의 파일의 첫 번째 파일이 디스크에 기록될 데이터 블록을 포함하는지를 판정할 필요가 있다. 첫 번째 파일이 디스크에 기록될 데이터 블록을 포함하면, 단계 415가 수행되고, 첫 번째 파일이 디스크에 기록될 데이터 블록을 포함하지 않으면, 단계 420이 수행된다. 다른 경우에, 단계 405에서, 저장 디바이스(110)가 RAID의 스트라이프에서의 체크 블록의 시퀀스 번호가 1인 것으로 판정하면, K의 초기값은 이 단계에서 먼저 2로 설정될 수 있다. 즉, 저장 디바이스(110)는 2번째 파일이 디스크에 기록될 데이터 블록을 포함하는지를 판정할 필요가 있다. 2번째 파일이 디스크에 기록될 데이터 블록을 포함하면, 단계 415가 수행되고, 2번째 파일이 디스크에 기록될 데이터 블록을 포함하지 않으면, 단계 420이 수행된다. 달리 말하면, 하나의 스트라이프에서의 체크 블록의 시퀀스 번호가 1이 아니면, 저장 디바이스는 하나의 스트라이프에서의 데이터 블록을 첫 번째 파일로부터 획득하는 것을 개시할 필요가 있다. 하나의 스트라이프에서의 체크 블록의 시퀀스 번호가 1이면, 저장 디바이스는 하나의 스트립에서의 데이터 블록을 2번째 파일로부터 획득하는 것을 개시할 필요가 있다.
본 발명의 실시예에서, 저장 디바이스(110)는 하나의 파일의 것이고 디스크에 기록된 데이터 블록을 그 데이터 블록을 마킹함으로써 또는 그 데이터 블록을 파일로부터 삭제함으로써 식별할 수 있으며, 이로써 저장 디바이스(110)는 파일의, 디스크에 기록될, 데이터 블록을 식별할 수 있다는 것을 이해할 수 있을 것이다. 저장 디바이스(110)에 의해 파일의, 디스크에 기록될, 데이터 블록을 식별하는 방법은 여기에서는 한정되지 않는다.
단계 415에서, 저장 디바이스(110)는 T개의 파일에서 K번째 파일의, 디스크에 기록될, 데이터 블록을 스트라이프에서의 K번째 데이터 블록으로서 획득하며, 여기서 K의 값은 스트라이프에서의 체크 블록의 시퀀스 번호와 동일하지 않다. 즉, 저장 디바이스(110)가 파일들의 데이터 블록을 획득할 때, 저장 디바이스(110)는 파일의 시퀀스가 그 스트라이프에서의 체크 블록의 시퀀스 번호에 대응하는 파일의 데이터 블록을 획득할 수 없으며, 이로써 시퀀스 번호에 대응하는 위치가 그 스트라이프에서의 체크 데이터를 위해 예약될 수 있다. 단계 415의 구체적인 설명을 위해, 도 3에서의 단계 310에 대한 관련 설명이 참조될 수 있다.
단계 420에서, 저장 디바이스(110)는 T개의 파일을 제외한 다른 파일이 수신되는지를 판정한다. 실제 어플리케이션에서, 저장 디바이스(110)가, 단계 420에서, T개의 파일의 K번째 파일이 디스크에 기록될 데이터 블록을 포함하지 않는 것으로 판정하면, 이것은 K번째 파일이 디스크에 완전히 저장되었다는 것을 나타낸다. 저장 디바이스(110)는 T개의 파일을 제외한, RAID를 형성하는 디스크에 저장될 필요가 있는, 다른 파일이 수신되었는지를 추가로 판정할 필요가 있다. 저장 디바이스(110)가 T개의 파일을 제외한 다른 파일을 수신하면, 본 방법의 단계 423이 수행되고, 저장 디바이스(110)가 T개의 파일을 제외한 다른 파일을 수신하지 않는다면, 본 방법의 단계 430이 수행된다.
예컨대, 도 4b 및 도 4c에 도시된 바와 같이, 도 4b에 도시된 4개의 파일에서 3번째 파일 F3가 상대적으로 작고, F3가 데이터 블록 F3-1로서 획득된다. 데이터 블록 F1-1, F2-1, F3-1 및 체크 블록 P1에 의해 형성되는 스트라이프 1이 RAID를 형성하는 4개의 디스크에 기록된 후, 저장 디바이스(110)가 스트라이프 3의 데이터 블록을 획득한 때에, 스트라이프 3에서의 체크 블록 P3의 시퀀스 번호가 2이기 때문에, 스트라이프 3을 위해서는, 3번째 파일 F3의, 디스크에 기록될, 데이터 블록이 3번째 데이터 블록으로서 획득될 필요가 있다. 파일 F3의 데이터 블록 F3-1이 스트라이프 1에 기록되었기 때문에, 파일 F3는 디스크에 기록될 데이터 블록을 포함하지 않는다. 따라서, 저장 디바이스(110)는 파일 F1∼F4를 제외한 다른 파일이 수신되는지를 판정할 필요가 있다. 예컨대, 도 4b에 도시된 예에서, 저장 디바이스(110)는 5번째 파일 F5가 수신되는지를 판정할 필요가 있다.
단계 423에서, 저장 디바이스(110)는 T개의 파일을 제외한 다른 파일로부터 파일을 선택한다. 구체적으로, 저장 디바이스(110)는 다른 파일로부터 파일을 무작위로 선택할 수 있다.
단계 425에서, 저장 디바이스(110)는 선택된 파일의, 디스크에 기록될, 데이터 블록을 스트라이프에서의 K번째 데이터 블록으로서 획득한다. 실제 어플리케이션에서, 그 경우, T개의 파일의 K번째 파일이 디스크에 기록되었을 때, 저장 디바이스(110)가 T개의 파일을 제외한, RAID를 형성하는 디스크에 기록될 필요가 있는, 다른 파일을 수신하면, 저장 디바이스(110)는 다른 파일의 임의의 하나의 파일의, 디스크에 기록될, 데이터 블록을 스트라이프에서의 K번째 데이터 블록으로서 획득할 수 있다. 이러한 방식으로, 저장 디바이스(110)는, 수신된 다른 파일의 임의의 하나의 파일의 것인 데이터 블록과 T개의 파일에서의 다른 파일의, 디스크에 기록될, 데이터 블록을 포함하는 스트라이프를 디스크에 기록할 수 있다. 예컨대, 전술한 예에서, 저장 디바이스(110)가 RAID에 저장될 5번째 파일 F5를 수신하면, 저장 디바이스(110)는 파일 F5의, 디스크에 기록될, 데이터 블록 F5-1을 스트라이프 3에서 3의 시퀀스 번호를 갖는 위치에서의 데이터 블록으로서 획득할 수 있다. 그리고나서, 데이터 블록 F5-1과 파일 F1 및 F4에서의 데이터 블록을 포함하는 스트라이프 3을 형성하기 위해 단계 435가 수행된다. 세부 사항에 대해서는, 도 4c에 도시된 스트라이프 3의 구조를 참조하여 설명될 것이다.
단계 430에서, 저장 디바이스(110)는 스트라이프에서의 K번째 데이터 블록을 0으로 채운다. 실제 어플리케이션에서, 또 다른 경우에, 저장 디바이스(110)가 단계 420에서 T개의 파일을 제외한, RAID에 저장될 필요가 있는, 다른 파일이 수신되지 않는 것으로 판정하면, 저장 디바이스(110)는 단계 430에서 스트라이프에서의 K번째 데이터 블록을 0으로 채울 수 있으며, 이것은 데이터 블록이 사용되지 않았다는 것을 나타내기 위해 이용된다.
단계 435에서, 저장 디바이스(110)는 K의 값이 T보다 큰지의 여부를 판정한다. K의 값이 T보다 크지 않으면, 단계 440이 수행되고, K의 값이 T보다 크면, 단계 445가 수행된다.
단계 440에서, 저장 디바이스(110)는 K=K+1로 설정한다. 즉, 저장 디바이스(110)는 변수 K의 값을 K+1의 값으로 설정하며, 단계 410으로 되돌아가서 스트라이프에서 다음 데이터 블록을 획득하는 것을 개시한다. 단계 410, 단계 415, 단계 435 및 단계 440을 수행함으로써, 저장 디바이스(110)는, 스트라이프에서의 데이터 블록 전부를 획득하기 위해, 파일의 시퀀스가 스트라이프에서의 체크 블록의 시퀀스 번호에 대응하는, 파일을 제외한 다른 파일의 데이터 블록을 획득할 수 있다.
단계 445에서, 저장 디바이스(110)는 스트라이프에서의 데이터 블록에 따라 스트라이프에서의 체크 블록을 획득한다. 이 단계의 구체적인 설명을 위해, 도 3에서의 단계 315에 대한 관련 설명이 참조될 수 있다.
단계 450에서, 저장 디바이스(110)는 스트라이프에서의 데이터 블록 및 스트라이프에서의 획득된 체크 블록을 T개의 디스크에 기록한다. 이 단계에 대한 구체적인 설명을 위해, 도 3에서의 단계 320에 대한 관련 설명이 참조될 수 있다.
단계 455에서, 저장 디바이스(110)는 RAID의 디스크에 완전히 기록되지 않은 파일이 존재하는지를 판정한다. T개의 파일에서의 어떤 파일이 디스크에 완전히 기록되지 않았으면, 즉, 파일이 아직 디스크에 완전히 기록되지 않았으면, 단계 405로 되돌아간다. 저장 디바이스(110)는, 다음 스트라이프에서의 데이터 블록 및 체크 블록을 디스크에 기록하기 위해, 다음 스트라이프에서의 체크 블록의 시퀀스 번호를 결정하고, 다음 스트라이프에서의 데이터 블록을 획득하는 것을 지속한다. 단계 455에서, 저장 디바이스(110)가 RAID에 저장될 파일 모두가 완전히 저장된 것으로 판정하면, 저장 과정을 종료하기 위해 본 방법의 단계 460이 수행된다. 도 5에 도시된 파일 처리 방법을 이용함으로써, 파일이 RAID에 저장된 후, 하나의 파일이 RAID의 하나의 디스크에 저장될 수 있다. 구체적인 저장 구조는 도 4c에 도시되어 있다. 도 5에서의 실시예의 몇몇 단계에 대한 설명을 위해 편리하고 간략한 설명을 목적으로, 도 3에 도시된 실시예에서의 대응하는 프로세스에 대한 구체적인 설명이 참조될 수 있다는 것을 당업자는 명백하게 이해할 수 있을 것이다.
또 다른 경우에, RAID의 조직 형태가 독립적 체크 디스크를 갖는 RAID인 때에, 예컨대 RAID가 RAID 3 또는 RAID 4인 때에, 컨트롤러(115)는 도 6에 도시된 방법에 따라 파일 저장을 수행할 수 있다. 본 발명의 실시예에서, 4개의 멤버 디스크를 포함하는 RAID가 설명을 위한 예로서 이용된다. RAID의 조직 형태는 RAID 3이며, 여기서 RAID는 3개의 데이터 디스크 및 1개의 독립적 체크 디스크를 포함한다. 당업자는 데이터 디스크가 어레이에서의, 데이터 블록을 저장하기 위해 사용되는, 멤버 디스크라는 것을 알 수 있다. 독립적 체크 디스크는 어레이에서의, 구체적으로 체크 블록을 저장하기 위해 사용되는, 멤버 디스크이다. 이하에서는 도 2, 도 4b 및 도 6a를 참조하여 도 6을 설명한다. 도 6에 도시된 바와 같이, 본 방법은 이하의 단계를 포함한다:
단계 600에서, 저장 디바이스(110)는 RAID에 저장될 D개의 파일을 수신한다. D의 값은 RAID에서의 데이터 디스크의 개수와 동일하다. 예컨대, 전술한 바와 같이 4개의 멤버 디스크를 포함하는 RAID에서, RAID의 조직 형태가 RAID 3이면, RAID에서의 데이터 디스크의 개수는 3이고, 독립적 체크 디스크의 개수는 1이다.
저장 디바이스(110)는 D개의 파일을 수신할 때에 D개의 파일을 처리할 수 있다는 것을 이해할 수 있을 것이다. 저장 디바이스(110)는 또한 수신된 복수의 파일을 캐시(120)에 버퍼링할 수 있고, 그리고나서 저장 시간이 도달한 때에 처리를 위해 수신된 복수의 파일로부터 D개의 파일을 무작위로 선택할 수 있다. 예컨대, 도 4b에 도시된 바와 같이, 저장 디바이스(110)는 수신되고 RAID에 저장될 4개의 파일 F1, F2, F3 및 F4로부터 3개의 파일 F1∼F3을 처리를 위해 선택할 수 있다.
단계 605에서, 저장 디바이스(110)는 D개의 파일에서의 K번째 파일의, 데이터 저장 장치에 기록될, 데이터 블록을, RAID의 스트라이프에 있고 K번째 데이터 저장 장치에 저장될 데이터 블록으로서 획득하며, 여기서 K의 값은 1에서부터 D까지 점차적으로 증가한다.
본 발명의 실시예에서의 RAID의 조직 형태가 독립적 체크 디스크를 갖는 RAID이기 때문에, 이 단계에서, 스트라이프에서의 데이터 블록을 획득할 때, 저장 디바이스(110)는 독립적 체크 디스크에 기록될 체크 블록을 위한 위치를 예약할 필요가 있다. 저장 디바이스(110)는 K번째 파일의, 데이터 디스크에 기록될, 데이터 블록을, 스트라이프 내에 있고 K번째 데이터 디스크에 저장될 데이터 블록으로서 사용할 수 있다. 예컨대, 도 6a에 도시된 RAID에서, 멤버 디스크 D1, D2 및 D3는 데이터 디스크이고, 멤버 디스크 D4는 독립적 체크 디스크이다. 스트라이프의 데이터 블록을 획득할 때, 저장 디바이스(110)는 먼저 K의 초기값을 1로 설정하고, 그리고나서 하나의 데이터 블록을 획득한 후, K의 값을 연속적으로 1씩 점차적으로 증가시키며, 여기서 K의 값은 D의 값보다 크지 않다. 이러한 방식으로, 저장 디바이스(110)는, 첫 번째 파일로부터 데이터 블록을 획득하고, 그리고나서 연속하여 2번째 및 3번째 파일의 데이터 블록을 획득하는 것을 시작한다. 도 4b에 도시된 바와 같이, 저장 디바이스(110)는, 연속적으로, 첫번째 파일 F1에서의 데이터 블록 F1-1을 스트라이프 1에서의, 첫 번째 데이터 디스크 D1에 기록될, 데이터 블록으로서 이용하고; 2번째 파일 F2에서의 데이터 블록 F2-1을 스트라이프 1에서의, 2번째 데이터 디스크 D2에 기록될, 데이터 블록으로서 이용하고; 3번째 파일 F3에서의 데이터 블록 F3-1을 스트라이프 1에서의, 3번째 데이터 디스크 D3에 기록될, 데이터 블록으로서 이용할 수 있다. RAID에서의 독립적 체크 디스크의 위치가 본 발명의 실시예에서는 한정되지 않으며, 예컨대, 멤버 디스크 D3가 독립적 체크 디스크로서 사용될 수 있고, 멤버 디스크 D4가 RAID에서의 3번째 데이터 디스크로서 이용될 수도 있다는 것에 유의하여야 한다.
단계 610에서, 저장 디바이스(110)는 획득된 D개의 데이터 블록에 따라 스트라이프에서 P개의 체크 블록을 획득한다. 예컨대, 도 6a에서의 스트라이프 1에서 3개의 데이터 블록 F1-1, F2-1 및 F3-1이 획득된 후, 스트라이프 1의 체크 블록 P1을 획득하기 위해 RAID의 체크 알고리즘에 따라 스트라이프 1에서의 3개의 데이터 블록에 대해 체크 계산이 수행될 수 있다. 독립적 체크 디스크를 갖는 RAID에서, 스트라이프에서의 체크 블록의 개수가 RAID의 특정한 조직 형태에 관련된다는 것에 유의하여야 한다. 예컨대, RAID 3은 하나의 독립적 체크 디스크를 갖고, 그러므로 하나의 스트라이프가 하나의 체크 블록을 갖는다. RAID 4는 2개의 독립적 체크 디스크를 갖고, 그러므로 하나의 스트라이프가 2개의 체크 블록을 갖는다. 본 발명의 실시예에서는, RAID의 조직 형태가 특별히 한정되지 않을 뿐만 아니라, 스트라이프에서의 체크 블록의 개수 또한 한정되지 않는다. 이에 부하여, 본 발명의 실시예에서의 체크 알고리즘은 패리티 체크 알고리즘을 포함하지만, 이러한 것으로 한정되지 않는다.
단계 615에서, 저장 디바이스(110)는 D개의 데이터 블록을 D개의 데이터 저장 장치에 기록하고, P개의 체크 블록을 P개의 독립적 체크 저장 장치에 기록한다. 예컨대, 저장 디바이스(110)는 스트라이프 1에서의 3개의 데이터 블록과 1개의 체크 블록을 RAID의 멤버 디스크에 동시에 기록할 수 있다. 당업자는, 스트라이프에서의 데이터 블록 및 체크 블록이 멤버 디스크에 기록되는 때에, 독립적 체크 디스크를 갖는 RAID에서는, 데이터 블록이 데이터 디스크에 기록될 필요가 있고, 스트라이프에서의 체크 블록이 독립적 체크 디스크에 기록될 필요가 있다는 것을 알 수 있을 것이다. 데이터가 디스크에 기록된 후, 도 6a에 도시된 스트라이프 1의 저장 구조가 형성될 수 있다.
도 6에 도시된 실시예에서, 저장 디바이스(110)는 D개의 파일에서의 K번째 파일의, 데이터 디스크에 기록될, 데이터 블록을, RAID의 스트라이프에 있고 K번째 데이터 디스크에 기록될 데이터 블록으로서 사용한다. 이러한 방식으로, 하나의 파일의 데이터 블록이 RAID에서의 하나의 데이터 디스크에 대응하고, 이로써 하나의 파일에 속하는 모든 데이터 블록이 하나의 데이터 디스크에 기록된다. 아카이빙의 어플리케이션 시나리오에서, RAID에서의 파일이 액세스될 필요가 있을 때, RAID에서의 모든 디스크가 기동될 필요는 없고, 파일이 저장되어 있는 단지 하나의 디스크만이 기동될 필요가 있으므로, 에너지 절감의 효과가 달성된다.
이에 부가하여, 도 6에 도시된 파일 처리 방법에서, 저장 디바이스(110)는 상이한 파일의 데이터 블록을 포함하는 스트라이프를 디스크에 기록한다. 스트라이프에서의 데이터 블록이 손상되는 때에, 저장 디바이스(110)는 손상된 데이터 블록을 스트라이프에서의 다른 파일의 체크 블록 및 데이터 블록을 사용함으로써 복원할 수 있으며, 이에 의해 파일 기록 효율을 보장하면서 파일 저장의 보안이 보장된다.
도 7은 본 발명의 실시예에 따른 또 다른 파일 처리 방법의 흐름도이다. 본 방법은 도 2에 도시된 저장 디바이스(110)의 컨트롤러(115)에 의해 수행될 수 있으며, 본 방법은 독립적 체크 디스크를 갖는 RAID에 적용될 수 있다. 본 발명의 실시예에서, 4개의 디스크를 포함하는 RAID 3이 설명을 위한 예로서 이용된다. 이하에서는 도 2, 도 4b 및 도 6a를 참조하여 도 7을 설명한다. 도 7에 도시된 바와 같이, 본 방법은 이하의 단계를 포함한다:
단계 700에서, 저장 디바이스(110)는 RAID에 저장될 D개의 파일을 수신한다. 이 단계에 대한 세부 내용에 대해서는 단계 600에 대한 관련 설명을 참조할 수 있다.
단계 705에서, 저장 디바이스(110)는 D개의 파일의 K번째 파일이 RAID의 데이터 디스크에 기록될 데이터 블록을 포함하는지를 판정한다. K번째 파일이 RAID의 데이터 디스크에 기록될 데이터 블록을 포함하면, 본 방법의 단계 710이 수행되며, K번째 파일이 RAID의 데이터 디스크에 기록될 데이터 블록을 포함하지 않으면, 본 방법의 단계 715가 수행된다. K의 초기값은 1이다. 달리 말하면, 저장 디바이스(110)는 D개의 파일의 첫 번째 파일이 RAID의 데이터 디스크에 기록될 데이터 블록을 포함하는지를 판정할 필요가 있다. K번째 파일이 RAID에 기록될 데이터 블록을 포함하는지를 판정하기 위한 구체적인 방법에 대해서는, 도 5에서의 단계 410에 대한 관련 설명을 참조할 수 있다.
단계 710에서, 저장 디바이스(110)는 K번째 파일의, 데이터 디스크에 기록될 데이터 블록을, RAID의 스트라이프에 있고 K번째 데이터 디스크에 저장될 데이터 블록으로서 획득한다. 단계 710의 구체적인 설명을 위해, 도 6에서의 단계 605에 대한 관련 설명을 참조할 수 있다.
단계 715에서, 저장 디바이스(110)는 D개의 파일을 제외한 다른 파일이 수신되는지를 판정한다. D개의 파일을 제외한 다른 파일이 수신되면, 본 방법의 단계 718이 수행되고, D개의 파일을 제외한 다른 파일이 수신되지 않으면, 본 방법의 단계 725가 수행된다. 실제 어플리케이션에서, 저장 디바이스(110)가, 단계 705에서, D개의 파일의 K번째 파일이 디스크에 기록될 데이터 블록을 포함하지 않는 것으로 판정하면, 이것은 K번째 파일이 모두 디스크에 저장되었다는 것을 나타낸다. 이 경우, 저장 디바이스(110)는 RAID를 형성하는 데이터 디스크에 기록될 필요가 있는 다른 파일이 수신되는지를 추가로 판정할 필요가 있다. 저장 디바이스(110)가 D개의 파일을 제외한 다른 파일을 수신하면, 본 방법의 단계 718이 수행되고, 저장 디바이스(110)가 D개의 파일을 제외한 다른 파일을 수신하지 않으면, 본 방법의 단계 725가 수행된다.
예컨대, 도 4b에 도시된 3개의 파일 F1, F2 및 F3 중에서, 3번째 파일 F3이 상대적으로 작고, F3이 데이터 블록 F3-1로서 이용된다. 이에 부가하여, 데이터 블록 F3-1이 도 6a에 도시된 RAID에 기록되어 있다. 저장 디바이스(110)는 스트라이프 2에서의 데이터 블록을 동시에 획득할 필요가 있으며, 그리고나서 저장 디바이스(110)는 3번째 파일 F3이 RAID에 기록될 데이터 블록을 포함하지 않는 것으로 판정할 수 있다. 이 경우, 저장 디바이스(110)는 F1∼F3를 제외한 다른 파일, 예컨대 4번째 파일 F4가 수신되는지를 판정할 필요가 있다. 다른 파일이 수신되면, 본 방법의 단계 718이 수행되고, 다른 파일이 수신되지 않으면, 단계 725가 수행된다.
단계 718에서, 저장 디바이스(110)는 D개의 파일을 제외한 수신된 다른 파일로부터 파일을 선택한다. 구체적으로, 저장 디바이스(110)는 수신된 다른 파일로부터 무작위로 파일을 선택할 수 있다.
단계 720에서, 저장 디바이스(110)는 선택된 파일의, 디스크에 기록될, 데이터 블록을 스트라이프에서의 K번째 데이터 블록으로서 사용한다. 예컨대, 전술한 예에서, 저장 디바이스(110)가 RAID에 저장될 4번째 파일 F4를 수신하면, 저장 디바이스(110)는 파일 F4의, 디스크에 기록될, 데이터 블록 F4-1을 스트라이프 2에서의 3번째 데이터 블록으로서 사용할 수 있다. 달리 말하면, 저장 디바이스(110)가 D개의 파일의 K번째 파일의 모든 데이터 블록을 RAID에 저장한 후, 저장 디바이스(110)는 D개의 파일을 제외한 다른 파일의 데이터 블록을 저장하는 것을 개시한다.
단계 725에서, 저장 디바이스(110)는 스트라이프에서의 K번째 데이터 블록을 0으로 채운다. 또 다른 경우에, 저장 디바이스(110)가, 단계 715에서, D개의 파일을 제외한, RAID에 저장될 필요가 있는, 다른 파일이 수신되지 않은 것으로 판정할 때, 저장 디바이스(110)는 단계 725에서 스트라이프에서의 K번째 데이터 블록을 0으로 채울 수 있으며, 이것은 데이터 블록이 사용되지 않았다는 것을 나타내기 위해 이용된다.
단계 730에서, 저장 디바이스(110)는 K의 값이 D보다 큰지를 판정한다. K의 값이 D보다 크지 않으면, 본 방법의 단계 735가 수행되고, K의 값이 D보다 크면, 본 방법의 단계 740이 수행된다. K의 초기값이 본 발명의 실시예에서 1이기 때문에, 스트라이프에서의 하나의 데이터 블록이 획득된 후, K의 값이 D보다 큰지의 여부가 판정될 수 있다. K의 값이 D보다 크지 않으면, 본 방법의 단계 735가 수행된다. K의 값이 D보다 크면, 이것은 스트라이프에서의 D개의 데이터 블록이 획득되었다는 것을 나타내고, 본 방법의 단계 740이 수행된다.
단계 735에서, 스트라이프에서의 다음 데이터 블록을 획득하기 위해, 저장 디바이스(110)가 K=K+1로 설정하고, 단계 705로 되돌아간다. 즉, 스트라이프에서의 모든 데이터 블록이 완전하게 획득될 때까지, 저장 디바이스(110)는 변수 K의 값을 K+1의 값으로 설정하고, 전술한 방법의 단계들을 이용함으로써 순환적으로 스트라이프에서의 다음 데이터 블록을 획득하는 것을 개시하기 위해 단계 705로 되돌아간다.
단계 740에서, 저장 디바이스(110)는 획득된 D개의 데이터 블록에 따라 스트라이프에서의 P개의 체크 블록을 획득한다. 이 단계의 구체적인 설명을 위해, 도 6에서의 단계 610에 대한 관련 설명이 참조될 수 있다.
단계 745에서, 저장 디바이스(110)는 D개의 데이터 블록을 D개의 데이터 디스크에 기록하고, P개의 체크 블록을 P개의 독립적 체크 디스크에 기록한다. 이 단계의 구체적인 설명을 위해, 도 6에서의 단계 615에 대한 관련 설명이 참조될 수 있다.
단계 750에서, 저장 디바이스(110)는 RAID의 디스크에 완전하게 기록되지 않은 파일이 존재하는지를 판정한다. D개의 파일에서의 어떤 파일이 RAID의 디스크에 완전하게 기록되지 않으면, 즉 파일이 RAID에 완전하게 저장되지 않으면, 본 방법의 단계 705로 되돌아간다. 저장 디바이스(110)는, 다음 스트라이프에서의 데이터 블록 및 체크 블록을 RAID를 형성하는 디스크에 기록하기 위해, 다음 스트라이프에서의 체크 블록의 시퀀스 번호를 결정하고, 다음 스트라이프에서의 데이터 블록을 획득하는 것을 지속한다. 단계 750에서, 저장 디바이스(110)가 RAID에 저장될 모든 파일이 RAID에 완전하게 저장된 것으로 판정하면, 본 방법의 단계 755가 수행되어 이 저장 과정이 종료된다.
도 6 및 도 7은 독립적 체크 디스크를 갖는 RAID에 복수의 파일을 저장하는 방법을 설명하고 있다. 도 6 또는 도 7에 도시된 파일 처리 방법을 이용함으로써, 파일이 RAID에 저장된 후, RAID의 하나의 디스크에 하나의 파일이 저장될 수 있다. 구체적인 저장 구조는 도 6a에 나타낸 바와 같이 될 수도 있다.
당업자는 도 7에서의 실시예의 몇몇 단계에 대한 설명을 위해 편리하고 간략한 설명을 목적으로 도 6에 도시된 실시예에서의 대응하는 프로세스에 대한 구체적인 설명을 참조할 수 있다는 것을 명확히 이해할 수 있을 것이다. 이에 부가하여, 도 6 및 도 7에 설명된 파일 처리 방법은 도 3 및 도 5에 설명된 파일 처리 방법과 동일한 발명 개념을 토대로 하고 있다. 전술한 실시예에서, 각각의 실시예에 대한 설명은 각자의 주안점을 갖는다. 어떤 실시예에서 상세하게 설명되지 않은 부분에 대해서는, 다른 실시예에서의 관련 설명을 참조할 수 있다. 전술한 실시예에서 설명된 파일 처리 방법을 이용함으로써, 하나의 파일의 데이터 블록이 RAID의 하나의 디스크에 저장될 수 있다. 이에 부가하여, 저장 디바이스(110)는 상이한 파일의 데이터 블록을 포함하는 스트라이프를 디스크에 기록할 수 있다. 스트라이프의 데이터 블록이 손상된 때에, 저장 디바이스(110)는 손상된 데이터 블록을 스트라이프에서의 체크 블록 및 스트라이프에서의 다른 파일의 데이터 블록에 따라 복원할 수 있으며, 이에 의해 파일 저장의 보안이 보장된다.
본 발명의 실시예에서, 도 3, 도 5, 도 6 또는 도 7에 도시된 전술한 파일 처리 방법을 이용함으로써, 파일이 RAID에 저장된 후, 아카이빙 시나리오에서, 저장된 파일이 덜 빈번하게 액세스된다. 따라서, 에너지 절감의 목적을 달성하기 위해, 디스크는 전반적으로 슬리핑 상태 또는 파워-오프 상태에 있게 된다. 파일이 판독될 필요가 있을 때, 도 8에 설명된 방법이 판독을 위해 이용될 수 있다. 이하에서는 도 1 및 도 2를 참조하여 도 8을 설명한다. 본 방법은 이하의 단계를 포함한다:
단계 800에서, 저장 디바이스(110)는 호스트(100)의 액세스 요청을 수신하며, 여기서 액세스 요청은 RAID에 저장된 파일을 판독하기 위해 이용되며, 액세스 요청은 액세스될 필요가 있는 파일의 논리 어드레스를 반송한다. 액세스 요청은 또한 액세스될 파일의 파일명을 반송할 수도 있다는 것을 이해할 수 있을 것이다.
단계 805에서, 저장 디바이스(110)는, 논리 어드레스에 따라, 파일의 데이터 블록이 저장된 물리 어드레스를 질의한다. 일반적으로, 저장 디바이스(110)에 의해 데이터가 저장된 후, 데이터를 저장하기 위한 논리 어드레스와 물리 어드레스 간의 맵핑 관계의 맵핑 테이블이 구축된다. 파일을 판독하기 위한 액세스 요청을 수신한 후, 저장 디바이스(110)는, 맵핑 테이블에서, 액세스 요청으로 반송된 논리 어드레스에 따라 디스크에서의 데이터의 물리 어드레스를 검색할 수 있다. RAID에서, 맵핑 테이블은 캐시(120) 내의 데이터 및 디스크(130) 내의 데이터 둘 모두에 대해 구축될 수 있다는 것을 이해할 수 있을 것이다. 물리 어드레스가 검색되는 때에, 일반적으로, 캐시(120)의 맵핑 테이블이 먼저 검색될 수 있고, 그리고나서 디스크(130)의 맵핑 테이블이 검색된다. 데이터가 캐시에 있다면, 캐시 내의 데이터가 호스트에 직접 리턴된다.
단계 810에서, 저장 디바이스(110)는, 물리 어드레스에 따라, 파일을 저장하기 위한 하나의 디스크를 결정한다. 본 발명의 실시예에서는, 전술한 실시예에서의 파일 처리 방법을 이용함으로써 RAID를 형성하는 디스크에 파일이 저장된 후, 하나의 디스크에 하나의 파일이 저장될 수 있다. 따라서, 이 단계에서, 저장 디바이스(110)는 물리 어드레스에 따라 파일을 저장하기 위한 하나의 디스크를 결정할 수 있다.
단계 815에서, 저장 디바이스(110)는 디스크에 저장된 파일의 데이터 블록을 호스트(100)에 리턴한다. 본 발명의 실시예에서의 전술한 파일 처리 방법을 이용함으로써, 하나의 디스크에 하나의 파일이 저장될 수 있다. 따라서, 저장된 파일이 판독될 때, 저장 디바이스(110)는, 물리 어드레스에 따라, 파일이 저장된 디스크(130)를 기동할 수 있거나 또는 디스크(130)를 파워 온하고, 그 파일의 것이고 디스크(130)에 저장된 데이터 블록을 호스트(100)에 리턴할 수 있다. 구체적으로, 저장 디바이스(110)는 획득된 물리 어드레스에 따라 디스크(130) 내의 데이터를 판독하고, 그 데이터를 호스트(100)에 리턴할 수 있다.
본 발명의 실시예에서, 파일이 도 3, 도 5, 도 6 또는 도 7에 도시된 방법에 따라 저장되기 때문에, 하나의 파일에 속하는 데이터가 하나의 디스크에 저장된다. 따라서, 파일이 판독될 때, 파일이 저장되어 있는 하나의 디스크만이 기동되거나 파워 온될 필요가 있으며, 그 파일의 데이터가 디스크로부터 판독되어 호스트에 리턴되므로, RAID의 모든 디스크를 기동하거나 파워 온할 필요가 없으며, 그 결과 커다란 에너지 절감 효과가 달성된다.
본 발명의 실시예는 또한 프로그램 코드가 저장된 컴퓨터 판독 가능 저장 매체를 포함한 데이터 처리를 위한 컴퓨터 프로그램 제품을 추가로 제공하며, 여기서 프로그램 코드에 포함된 명령이 전술한 방법 실시예 중의 임의의 실시예에서 설명된 방법 프로세스를 실행하기 위해 이용된다. 당업자는 전술한 저장 매체가 USB 플래시 드라이브, 이동 가능 하드 디스크, 자기 디스크, 광디스크, 랜덤 액세스 메모리(RAM), 솔리드 스테이트 드라이브(SSD), 비휘발성 메모리와 같은 프로그램 코드를 저장할 수 있는 어떠한 비일시적 기기 판독 가능 매체도 포함할 수 있다는 것을 이해할 수 있을 것이다.
당업자는, 본 발명의 실시예에서, 호스트의 액세스 요청에 대해 시기 적절하게 응답하기 위해, 메타데이터를 저장하기 위한 디스크 및 캐시(120)가 항상 파워-온 상태로 유지된다는 것을 이해할 수 있을 것이다. 당업자는 메타데이터가 RAID에 저장된 데이터 및 데이터의 환경을 기술하는 데이터이며, 예컨대 메타데이터가 논리 어드레스와 물리 어드레스 간의 맵핑 관계를 포함할 수 있다는 것을 알 수 있을 것이다.
디스크의 빈번한 파워-온 또는 파워-오프가 저장 시스템의 에너지 절감의 효과에 영향을 줄 수 있고, 또한 디스크의 수명에 영향을 줄 수 있기 때문에, 디스크가 빈번하게 파워 온되거나 파워 오프되는 것을 방지하기 위해, 디스크는 실제 어플리케이션에서 등급이 나누어질 수도 있다. 소량의 고성능 디스크는 항상 파워-온 상태로 유지되는 한편, 대량의 고용량 디스크는 에너지 절감 상태에 진입한다. 여기에서의 고성능 디스크는 예컨대 솔리드 스테이트 디스크(SSD)와 같이 비교적 낮은 액세스 지연을 갖는 디스크 또는 많은 초당 입력/출력(I/O) 연산(IOPS)을 갖는 디스크를 지칭한다. 고용량 디스크는 비교적 큰 용량을 갖는 디스크를 지칭한다. 저장 후에, 파일 액세스 상태에 따라, 높은 액세스 빈도를 갖는 파일이 항상 파워-온 상태로 유지되는 소량의 예약된 고성능 디스크로 이동되어, 디스크가 파워 온되거나 기동되는 횟수를 감소시키고, 응답 속도를 향상시킨다.
또한, 디스크가 빈번하게 파워 온되거나 파워 오프되는 것을 방지하기 위해, 본 발명의 실시예에서의 저장 시스템은 또한 경고 메카니즘 및 보호 메카니즘을 제공할 수 있다. RAID에서의 각각의 디스크가 파워 온되고 파워 오프되는 누적 횟수에 대한 통계치가 수집된다. 어떠한 디스크가 사전에 정해진 시간 기간 내에 파워 온되고 파워 오프되는 횟수가 사전에 정해진 임계치를 초과할 때, 시스템은 프롬프트 또는 경고를 제공하고, 몇몇 보호 조치를 취할 수 있다. 설정된 임계치는 예컨대 1일당 10회 또는 1개월당 100회일 수도 있다. 보호 조치는 설정된 시간 기간에서 디스크에 대해 파워-온 또는 파워-오프 동작을 수행하지 않는 등의 것으로서 설정될 수 있으며, 본 명세서에서는 이러한 것으로 한정되지 않는다.
최종적으로, 전술한 실시예는 본 발명을 한정하려는 것이 아니라 본 발명의 기술적 해법을 설명하기 위한 것이라는 것에 유의하여야 한다.

Claims (18)

  1. 중복 배열의 독립 디스크(Redundant Arrays of Independent Disks, RAID) 상에 파일을 저장하기 위한 저장 디바이스에 의해 수행되는 파일 처리 방법에 있어서,
    RAID에 저장될 T개의 파일을 수신하는 단계로서, T의 값이 3보다 작지 않고, T의 값이 RAID를 형성하는 디스크의 개수와 동일한, 수신하는 단계;
    상기 RAID의 스트라이프(stripe)에서의 체크 블록의 시퀀스 번호를 결정하는 단계;
    T개의 파일에서의 K번째 파일의, 디스크에 기록될, 데이터 블록을 상기 스트라이프에서의 K번째 데이터 블록으로서 반복적으로 획득하는 단계로서, K의 값이 1에서부터 T까지 점차적으로 증가하고, K의 값이 상기 스트라이프에서의 체크 블록의 시퀀스 번호와 동일하지 않은, 획득하는 단계;
    상기 스트라이프에서의 데이터 블록에 따라 상기 스트라이프에서의 체크 블록을 계산하는 단계; 및
    상기 스트라이프에서의 데이터 블록 및 상기 스트라이프에서의 획득된 체크 블록을 T개의 디스크에 기록하는 단계로서, 각각의 블록이 하나의 디스크에 기록되는, 기록하는 단계
    를 포함하는, 파일 처리 방법.
  2. 제1항에 있어서,
    상기 K번째 파일이 RAID에 기록될 데이터 블록을 갖지 않는 때에, 상기 T개의 파일을 제외한 다른 파일이 수신되는지를 판정하는 단계;
    다른 파일이 수신되면, 수신된 다른 파일로부터 파일을 선택하는 단계; 및
    선택된 파일에서의, 디스크에 기록될, 데이터 블록을 상기 스트라이프에서의 K번째 데이터 블록으로서 이용하는 단계
    를 더 포함하는, 파일 처리 방법.
  3. 제1항에 있어서,
    상기 K번째 파일이 디스크에 기록될 데이터 블록을 갖지 않을 때, T개의 파일을 제외한 다른 파일이 수신되지 않는다면, 상기 스트라이프에서의 K번째 데이터 블록을 0으로 채우는 단계를 더 포함하는, 파일 처리 방법.
  4. 중복 배열의 독립 디스크(RAID)가 D개의 데이터 디스크와 P개의 독립적 체크 디스크를 포함하고, D의 값이 2보다 작지 않고, P의 값이 1보다 작지 않은, 상기 RAID 상에 파일을 저장하기 위한 저장 디바이스에 의해 수행되는 방법에 있어서,
    상기 RAID에 저장될 D개의 파일을 수신하는 단계;
    D개의 파일에서의 K번째 파일의, 데이터 디스크에 기록될, 데이터 블록을, 상기 RAID의 스트라이프 내에 있고 K번째 데이터 디스크에 저장될 데이터 블록으로서 반복적으로 획득하는 단계로서, K의 값이 1에서부터 D까지 점차적으로 증가하는, 획득하는 단계;
    획득된 D개의 데이터 블록에 따라 상기 스트라이프에서의 P개의 체크 블록을 계산하는 단계; 및
    상기 D개의 데이터 블록을 D개의 데이터 디스크에 기록하고, 상기 P개의 체크 블록을 P개의 독립적 체크 디스크에 기록하는 단계로서, 각각의 블록이 하나의 디스크에 기록되는, 기록하는 단계
    를 포함하는, 방법.
  5. 제4항에 있어서,
    상기 K번째 파일이 데이터 디스크에 기록될 데이터 블록을 갖지 않는 때에, 상기 D개의 파일을 제외한 다른 파일이 수신되는지를 판정하는 단계;
    다른 파일이 수신되면, 수신된 다른 파일로부터 파일을 선택하는 단계; 및
    선택된 파일에서의, 디스크에 기록될, 데이터 블록을, 상기 스트라이프 내에 있고 K번째 데이터 디스크에 저장될 데이터 블록으로서 이용하는 단계
    를 더 포함하는, 방법.
  6. 제4항에 있어서,
    상기 K번째 파일이 데이터 디스크에 기록될 데이터 블록을 갖지 않을 때, D개의 파일을 제외한 다른 파일이 수신되지 않는다면, 상기 스트라이프에 내에 있고 K번째 데이터 디스크에 저장될 데이터 블록을 0으로 채우는 단계를 더 포함하는, 방법.
  7. 저장 디바이스에 있어서,
    파일을 저장하도록 구성되고, T개의 디스크를 포함하며, T의 값이 3보다 작지 않은, 중복 배열의 독립 디스크(RAID);
    호스트 및 상기 RAID와 통신하도록 구성된 통신 인터페이스; 및
    프로세서
    를 포함하며, 상기 프로세서가,
    상기 RAID에 저장될 T개의 파일을 수신하고,
    상기 RAID의 스트라이프에서의 체크 블록의 시퀀스 번호를 결정하고,
    T개의 파일에서의 K번째 파일의, 디스크에 기록될, 데이터 블록을 상기 스트라이프에서의 K번째 데이터 블록으로서 반복적으로 획득하고, 여기서 K의 값이 1에서부터 T까지 점차적으로 증가하고, K의 값이 상기 스트라이프에서의 체크 블록의 시퀀스 번호와 동일하지 않으며,
    상기 스트라이프에서의 데이터 블록에 따라 상기 스트라이프에서의 체크 블록을 계산하고,
    상기 스트라이프에서의 데이터 블록 및 상기 스트라이프에서의 획득된 체크 블록을 T개의 디스크에 기록하도록 구성되며, 여기서 각각의 블록이 하나의 디스크에 기록되는,
    저장 디바이스.
  8. 제7항에 있어서,
    상기 프로세서는, 또한,
    상기 K번째 파일이 디스크에 기록될 데이터 블록을 갖지 않는 때에, 상기 T개의 파일을 제외한 다른 파일이 수신되는지를 판정하고,
    다른 파일이 수신되면, 수신된 다른 파일로부터 파일을 선택하고,
    선택된 파일에서의, 디스크에 기록될, 데이터 블록을 상기 스트라이프에서의 K번째 데이터 블록으로서 이용하도록 구성되는,
    저장 디바이스.
  9. 제7항에 있어서,
    상기 프로세서는, 또한, 상기 K번째 파일이 디스크에 기록될 데이터 블록을 갖지 않을 때, T개의 파일을 제외한 다른 파일이 수신되지 않는다면, 상기 스트라이프에서의 K번째 데이터 블록을 0으로 채우도록 구성되는, 저장 디바이스.
  10. 저장 디바이스에 있어서,
    파일을 저장하도록 구성되고, D개의 데이터 디스크와 P개의 독립적 체크 디스크를 포함하고, D의 값이 2보다 작지 않고, P의 값이 1보다 작지 않은, 중복 배열의 독립 디스크(RAID);
    호스트 및 상기 RAID와 통신하도록 구성된 통신 인터페이스; 및
    프로세서
    를 포함하며, 상기 프로세서가,
    상기 RAID에 저장될 D개의 파일을 수신하고,
    D개의 파일에서의 K번째 파일의, 데이터 디스크에 기록될, 데이터 블록을, 상기 RAID의 스트라이프 내에 있고 K번째 데이터 디스크에 저장될 데이터 블록으로서 반복적으로 획득하고, 여기서 K의 값이 1에서부터 D까지 점차적으로 증가하며,
    획득된 D개의 데이터 블록에 따라 상기 스트라이프에서의 P개의 체크 블록을 계산하고,
    상기 D개의 데이터 블록을 D개의 데이터 디스크에 기록하고, 상기 P개의 체크 블록을 P개의 독립적 체크 디스크에 기록하도록 구성되며, 여기서 각각의 블록이 하나의 디스크에 기록되는,
    저장 디바이스.
  11. 제10항에 있어서,
    상기 프로세서는, 또한,
    상기 K번째 파일이 데이터 디스크에 기록될 데이터 블록을 갖지 않는 때에, 상기 D개의 파일을 제외한 다른 파일이 수신되는지를 판정하고,
    다른 파일이 수신되면, 수신된 다른 파일로부터 파일을 선택하고,
    선택된 파일에서의, 디스크에 기록될, 데이터 블록을, 상기 스트라이프 내에 있고 K번째 데이터 디스크에 저장될 데이터 블록으로서 이용하도록 구성되는,
    저장 디바이스.
  12. 제10항에 있어서,
    상기 프로세서는, 또한, 상기 K번째 파일이 데이터 디스크에 기록될 데이터 블록을 갖지 않을 때, D개의 파일을 제외한 다른 파일이 수신되지 않는다면, 상기 스트라이프에 내에 있고 K번째 데이터 디스크에 저장될 데이터 블록을 0으로 채우도록 구성되는, 저장 디바이스.
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
KR1020147036588A 2013-08-09 2013-08-09 파일 처리 방법 및 저장 디바이스 KR101569428B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/081172 WO2015018061A1 (zh) 2013-08-09 2013-08-09 一种文件处理方法及存储设备

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020157031804A Division KR101729636B1 (ko) 2013-08-09 2013-08-09 파일 처리 방법 및 저장 디바이스

Publications (2)

Publication Number Publication Date
KR20150034140A KR20150034140A (ko) 2015-04-02
KR101569428B1 true KR101569428B1 (ko) 2015-11-16

Family

ID=50409483

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020157031804A KR101729636B1 (ko) 2013-08-09 2013-08-09 파일 처리 방법 및 저장 디바이스
KR1020147036588A KR101569428B1 (ko) 2013-08-09 2013-08-09 파일 처리 방법 및 저장 디바이스

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020157031804A KR101729636B1 (ko) 2013-08-09 2013-08-09 파일 처리 방법 및 저장 디바이스

Country Status (8)

Country Link
US (2) US9081508B2 (ko)
EP (1) EP3026545B1 (ko)
JP (1) JP5982708B2 (ko)
KR (2) KR101729636B1 (ko)
CN (1) CN103718151B (ko)
AU (1) AU2013392020B2 (ko)
CA (1) CA2881607C (ko)
WO (1) WO2015018061A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105912664B (zh) * 2016-04-11 2020-02-14 华为技术有限公司 一种文件处理方法和设备
US10678643B1 (en) * 2017-04-26 2020-06-09 EMC IP Holding Company LLC Splitting a group of physical data storage drives into partnership groups to limit the risk of data loss during drive rebuilds in a mapped RAID (redundant array of independent disks) data storage system
CN109669811B (zh) * 2017-08-15 2021-04-13 金钱猫科技股份有限公司 一种能够可靠性访问的数据处理方法及终端
US10628300B2 (en) * 2017-11-13 2020-04-21 Western Digital Technologies, Inc. RAID stripe physical placement
CN108762933A (zh) * 2018-05-31 2018-11-06 成都四方伟业软件股份有限公司 数据质量校验方法及装置
CN112714910B (zh) * 2018-12-22 2022-12-27 华为云计算技术有限公司 分布式存储系统及计算机程序产品
CN109992445B (zh) * 2019-04-11 2020-10-02 苏州浪潮智能科技有限公司 一种修改写操作的处理方法、装置、电子设备及存储介质
CN112882659B (zh) * 2021-02-26 2023-05-02 杭州海康威视数字技术股份有限公司 一种信息获得方法、装置、电子设备及存储介质
CN113391941B (zh) * 2021-06-18 2022-07-22 苏州浪潮智能科技有限公司 一种raid的读写超时处理方法、装置、设备及介质
CN114064347B (zh) * 2022-01-18 2022-04-26 苏州浪潮智能科技有限公司 一种数据存储方法、装置、设备及计算机可读存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100299547A1 (en) 2009-05-21 2010-11-25 Hitachi, Ltd. Power-saving control apparatus and method

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3183719B2 (ja) * 1992-08-26 2001-07-09 三菱電機株式会社 アレイ型記録装置
EP1197836A3 (en) * 1993-06-03 2009-06-17 Network Appliance, Inc. A method for allocating files in a file system integrated with a raid disk sub-system
JPH07152498A (ja) * 1993-12-01 1995-06-16 Hitachi Ltd 情報処理システム
US5860090A (en) * 1995-10-20 1999-01-12 Informix Software, Inc. Append-only storage in a disk array using striping and parity caching
US6311251B1 (en) * 1998-11-23 2001-10-30 Storage Technology Corporation System for optimizing data storage in a RAID system
US7200715B2 (en) * 2002-03-21 2007-04-03 Network Appliance, Inc. Method for writing contiguous arrays of stripes in a RAID storage system using mapped block writes
JP2004145409A (ja) * 2002-10-22 2004-05-20 Hitachi Ltd 記憶装置および記憶装置サブシステム
US6961815B2 (en) * 2002-12-05 2005-11-01 International Business Machines Corporation Multiple disk data storage system for reducing power consumption
US7779294B2 (en) * 2005-04-15 2010-08-17 Intel Corporation Power-safe disk storage apparatus, systems, and methods
CN101055509B (zh) * 2006-04-14 2010-05-12 中兴通讯股份有限公司 高效流媒体数据读写系统
US7958303B2 (en) * 2007-04-27 2011-06-07 Gary Stephen Shuster Flexible data storage system
US8006111B1 (en) * 2007-09-21 2011-08-23 Emc Corporation Intelligent file system based power management for shared storage that migrates groups of files based on inactivity threshold
CN101976174B (zh) * 2010-08-19 2012-01-25 北京同有飞骥科技股份有限公司 一种垂直排布分布校验的节能型磁盘阵列的构建方法
CN101976178B (zh) * 2010-08-19 2012-09-05 北京同有飞骥科技股份有限公司 一种垂直排布集中校验的节能型磁盘阵列的构建方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100299547A1 (en) 2009-05-21 2010-11-25 Hitachi, Ltd. Power-saving control apparatus and method

Also Published As

Publication number Publication date
KR20150034140A (ko) 2015-04-02
CA2881607C (en) 2016-07-19
CN103718151B (zh) 2015-06-10
KR20150129865A (ko) 2015-11-20
JP5982708B2 (ja) 2016-08-31
CN103718151A (zh) 2014-04-09
CA2881607A1 (en) 2015-02-12
US20150242156A1 (en) 2015-08-27
US20150095573A1 (en) 2015-04-02
AU2013392020B2 (en) 2015-11-05
JP2015528972A (ja) 2015-10-01
EP3026545A1 (en) 2016-06-01
AU2013392020A1 (en) 2015-02-26
WO2015018061A1 (zh) 2015-02-12
US9081508B2 (en) 2015-07-14
EP3026545A4 (en) 2016-11-02
EP3026545B1 (en) 2019-02-20
KR101729636B1 (ko) 2017-04-24
US9223509B2 (en) 2015-12-29

Similar Documents

Publication Publication Date Title
KR101569428B1 (ko) 파일 처리 방법 및 저장 디바이스
KR101677473B1 (ko) 파일 처리 방법 및 장치, 그리고 저장 디바이스
US11797191B2 (en) Systems and methods for storing data in SSD
US8825969B2 (en) Eliminating duplicate data by sharing file system extents
US10360144B2 (en) Storage apparatus and non-volatile memory device including a controller to selectively compress data based on an update frequency level
US20080126684A1 (en) Caching method for nand flash translation layer
GB2536122A (en) Logical block address mapping for hard disk drives
US10579540B2 (en) Raid data migration through stripe swapping
WO2014139463A1 (en) Data compression using compression blocks and partitions
KR20220119348A (ko) 분할된 저장장치에서의 스냅샷 관리
AU2015255198B2 (en) File processing method and storage device
US11803527B2 (en) Techniques for efficient data deduplication
US20220129165A1 (en) Effective utilization of different drive capacities
Shinde et al. Inline block level data de-duplication technique for ext4 file system

Legal Events

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

Payment date: 20181023

Year of fee payment: 4