KR101677473B1 - 파일 처리 방법 및 장치, 그리고 저장 디바이스 - Google Patents

파일 처리 방법 및 장치, 그리고 저장 디바이스 Download PDF

Info

Publication number
KR101677473B1
KR101677473B1 KR1020147036585A KR20147036585A KR101677473B1 KR 101677473 B1 KR101677473 B1 KR 101677473B1 KR 1020147036585 A KR1020147036585 A KR 1020147036585A KR 20147036585 A KR20147036585 A KR 20147036585A KR 101677473 B1 KR101677473 B1 KR 101677473B1
Authority
KR
South Korea
Prior art keywords
column
matrix
block
raid
data
Prior art date
Application number
KR1020147036585A
Other languages
English (en)
Other versions
KR20150034139A (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 KR20150034139A publication Critical patent/KR20150034139A/ko
Application granted granted Critical
Publication of KR101677473B1 publication Critical patent/KR101677473B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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/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
    • 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)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명의 실시예는 파일 처리 방법 및 장치, 그리고 저장 디바이스를 제공한다. 본 방법에서, 저장 디바이스는 수신된 F개의 파일을 복수의 데이터 블록으로 분할하고, 상기 복수의 데이터 블록에 따라 T개의 행(row)을 가지는 제1 행렬을 취한다. 그 후, 상기 저장 디바이스는 상기 제1 행렬의 각 열(column)의 데이터 블록과 상기 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록을 사용하여 스트라이프(stripe)를 구성하고, 상기 스트라이프를 독립 디스크의 여분 배열(Redundant Array of Independent Disks, RAID)에 기록한다. 상기 파일 처리 방법을 사용함으로써, 상기 저장 디바이스는 파일 저장의 안전성을 보장하면서 RAID의 하나의 저장 장치에 하나의 파일을 기록할 수 있다.

Description

파일 처리 방법 및 장치, 그리고 저장 디바이스 {FILE PROCESSING METHOD AND APPARATUS, AND STORAGE DEVICE}
본 발명은 통신 기술 분야에 관한 것으로, 특히, 파일 처리 방법 및 장치, 그리고 저장 디바이스에 관한 것이다.
저가 디스크의 여분 배열(Redundant Array of Inexpensive Disks, RAID)라고도 알려져 있는, 독립 디스크의 여분 배열(Redundant Array of Independent Disks, RAID)은 약칭하여 디스크 배열(disk array)이라고 한다. RAID의 원리는, 성능이 거대 용량의 고가의 하드 디스크에 달하거나 심지어 초과하도록 하기 위해, 상대적으로 저가의 디스크를 복수 개 결합하여 디스크 배열 그룹(disk array group)을 형성하는 것이며; 또 데이터 안전성(data security)이 분산된 데이터 배치(distributed data arrangement)의 설계와 함께 향상된다. 단일 디스크와 비교하여, 선택되는 다른 버전인 RAID에 따르면, 단지 저장 용량을 확대할 수 있을 뿐만 아니라 데이터 통합 수준(data integration level) 및 데이터 내고장성 능력(data fault tolerance capability)도 향상시킬 수 있다. 게다가, 컴퓨터의 경우, 디스크 배열은 독립 디스크 또는 논리 저장 유닛처럼 보인다.
아카이빙 시나리오(archiving scenario)에서는, 많은 파일을 보관해야 한다. 따라서, 종래기술에서는, RAID가 일반적으로 아카이브 파일(archived file)을 저장하는 데 사용되고, 데이터 안전성을 향상시키기 위해, 예를 들어, RAID3, RAID4, RAID5, 또는 RAID6의 형태의, 검사 기능(check function)을 가지는 RAID가 일반적으로 아카이브 파일을 저장하는 데 사용된다. 종래기술에서는, 데이터 액세스 속도를 향상시키기 위해, 파일은 일반적으로 여러 데이터 블록으로 분할되고, 복수의 데이터 블록이 하나의 파일에 속하며, 검사블록은 RAID의 스트라이프(stripe)를 구성하고, 스트라이프는 RAID를 구성하는 복수의 디스크에 기록된다. 아카이브 파일은 덜 빈번하게 액세스되기 때문에, 에너지 절약 목적을 달성하기 위해서는, 저장 시스템 내의 디스크는 일반적으로 파일을 아카이빙한 후에 휴면 또는 전원오프(power-off) 상태이다. 오직 아카이브 파일을 액세스해야 할 때에만, 그 파일을 판독하기 위해, 그 파일의 데이터 블록이 저장되어 있는 복수의 디스크를 깨우거나(wakened up) 전원온(powered on) 시킨다.
제1 측면에 따르면, 본 발명의 실시예는 파일 처리 방법을 제공하며, 상기 방법은,
독립 디스크의 여분 배열(Redundant Array of Independent Disks, RAID)에 저장될 F개의 파일을 수신하는 단계 - 상기 RAID는 T개의 저장 장치로 구성되어 있고, F는 2 이상의 자연수이고, T는 3 이상의 자연수임 -;
상기 RAID의 스트립 크기(strip size)에 따라 상기 F개의 파일을 둘 이상의 데이터 블록으로 분할하는 단계;
상기 둘 이상의 데이터 블록에 따라 T개의 행(row)을 가지는 제1 행렬을 취득하는 단계 - 하나의 파일에 속하는 데이터 블록들은 상기 제1 행렬의 하나의 행에 위치함 -; 및
상기 제1 행렬의 각 열(column)의 데이터 블록과 상기 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록(check block)으로 이루어지는 스트라이프(stripe)를, 상기 RAID를 구성하는 T개의 저장 장치(storage apparatus)에 기록하는 단계를 포함한다.
제1 측면의 제1 가능한 구현 방식에서, 상기 둘 이상의 데이터 블록에 따라 T개의 행을 가지는 제1 행렬을 취득하는 단계는,
상기 분할에 의해 취득되는 상기 둘 이상의 데이터 블록을, D개의 행을 가지는 제2 행렬에 배치하는 단계 - 하나의 파일에 속하는 데이터 블록들은 상기 제2 행렬의 하나의 행에 위치하고, D는 상기 RAID에서의 데이터 저장 장치의 수량임 -; 및
상기 제2 행렬의 각 열에 검사 블록을 각각 삽입하여 T개 행을 가지는 상기 제1 행렬을 취득하는 단계 - 상기 삽입되는 검사 블록은, 상기 제1 행렬에서 상기 검사 블록이 위치하는 열의 데이터 블록에 따라 계산에 의해 취득됨 -를 포함한다.
제1 측면의 제1 가능한 구현 방식을 참조하여, 제2 가능한 구현 방식에서,
상기 RAID가 독립 검사 저장 장치를 포함하는 경우, 상기 제2 행렬의 각 열에 검사 블록을 각각 삽입하여 T개 행을 가지는 상기 제1 행렬을 취득하는 단계는,
상기 RAID의 독립 검사 저장 장치의 위치에 따라, 상기 제2 행렬에 검사 블록을 삽입하기 위한 위치를 결정하는 단계;
상기 RAID의 검사 알고리즘에 따라 상기 제2 행렬의 각 열의 데이터 블록에 대해 검사 계산을 수행하여, 각 열의 데이터 블록의 검사 블록을 취득하는 단계; 및
상기 검사 블록의 결정된 위치에 따라 상기 제2 행렬의 각 열에, 상기 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록을 삽입하여 T개의 행을 가지는 상기 제1 행렬을 취득하는 단계를 포함한다.
제1 측면의 제1 가능한 구현 방식을 참조하여, 제3 가능한 구현 방식에서, 상기 RAID가 독립 검사 저장 장치를 포함하지 않는 경우, 상기 제2 행렬의 각 열에 검사 블록을 각각 삽입하여 T개 행을 가지는 상기 제1 행렬을 취득하는 단계는,
상기 제2 행렬의 각 열에 검사 블록을 삽입하기 위한 위치 A[x, y]를 결정하는 단계 - 상기 제2 행렬은 N개의 열을 가지고, x 및 y는 모두 정수이고, x의 값은 0에서부터 D-1까지 점차 증가하고, y의 값은 0에서부터 N-1까지 점차 증가함 -;
상기 제2 행렬의 제x 행에서의 제y 열 내지 제(N-1) 열의 데이터 블록을, 제x 행에서의 제(y+1) 열 내지 제N 열의 위치로 순차 이동시키는 단계;
상기 RAID의 검사 알고리즘에 따라 제y 열의 데이터 블록에 대해 검사 계산을 수행하여 제y 열의 데이터 블록의 검사 블록을 취득하는 단계; 및
상기 제y 열의 데이터 블록의 검사 블록을 상기 제2 행렬의 제y 열에서의 위치 A[x, y]에 삽입하여 T개의 행을 가지는 상기 제1 행렬을 취득하는 단계를 포함한다.
제1 측면 또는 제1 측면의 제1 내지 제3 가능한 구현 방식을 중 어느 하나를 참조하여 제4 가능한 구현 방식에서, 상기 제1 행렬의 각 열의 데이터 블록과 상기 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프를, 상기 RAID를 구성하는 T개의 저장 장치에 기록하는 단계는,
상기 제1 행렬의 제y 열의 데이터 블록과 상기 제y 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프가 완전히 점유되어 있는(fully occupied) 경우, 상기 RAID를 구성하는 T개의 저장 장치에 상기 제y 열의 데이터 블록 및 상기 검사 블록을 기록하는 단계를 포함하고, 상기 제y 열은 상기 제1 행렬의 열 중 하나이다.
제1 측면 또는 제1 측면의 제1 내지 제3 가능한 구현 방식을 중 어느 하나를 참조하여, 제5 가능한 구현 방식에서, 상기 제1 행렬이 M개의 열을 가지고, 상기 제1 행렬의 각 열의 데이터 블록과 상기 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프를, 상기 RAID를 구성하는 T개의 저장 장치에 기록하는 단계는,
상기 제1 행렬의 제y 열의 데이터 블록과 상기 제y 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프가 완전히 점유되어 있지 않은 경우, 상기 제y 열에서의 부족한 데이터 블록의 수량을 판단하는 단계 - 상기 제y 열은 제1 행렬의 열 중 하나임 -;
상기 제y 열에서 데이터 블록이 없는 위치를, 상기 제1 행렬의 제(M-1) 열 내지 제(y+1) 열로부터 선택된 수량의 데이터 블록으로 채우는 단계;
채운 후의 상기 제y 열의 데이터 블록에 따라 상기 제y 열의 검사 블록을 갱신하는 단계; 및
상기 제y 열의 데이터 블록과 상기 제y 열의 갱신된 검사 블록으로 이루어지는 스트라이프를, 상기 RAID를 구성하는 T개의 저장 장치에 기록하는 단계를 포함한다.
제1 측면 또는 제1 측면의 제1 내지 제3 가능한 구현 방식을 중 어느 하나를 참조하여, 제6 가능한 구현 방식에서, 상기 제1 행렬의 각 열의 데이터 블록과 상기 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프를, 상기 RAID를 구성하는 T개의 저장 장치에 기록하는 단계는,
상기 제1 행렬의 제y 열의 데이터 블록과, 상기 제y 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프가 완전히 점유되어 있지 않은 경우, 상기 제y 열에서 데이터 블록이 없는 위치를 0(zero)으로 채우는 단계; 및
상기 0으로 채운 후의 상기 제y 열의 데이터 블록과 상기 검사 블록으로 이루어지는 스트라이프를, 상기 RAID를 구성하는 저장 장치에 기록하는 단계를 포함하고, 상기 제y 열은 상기 제1 행렬의 열 중 하나이다.
제1 측면 또는 제1 측면의 제1 내지 제6 가능한 구현 방식을 중 어느 하나를 참조하여, 제7 가능한 구현 방식에서, 상기 방법은,
호스트의 액세스 요청을 수신하는 단계 - 상기 액세스 요청은, 상기 RAID에 저장된 파일을 판독하는 데 사용되고, 상기 파일의 로컬 어드레스를 포함함 -;
상기 로컬 어드레스에 따라, 상기 파일의 데이터 블록이 저장되어 있는 물리 어드레스를 질의하는 단계;
상기 물리 어드레스에 따라, 상기 파일이 저장되어 있는 하나의 저장 장치를 결정하는 단계; 및
상기 저장 장치에 저장된 상기 파일의 데이터 블록을 호스트에 반환하는 단계를 더 포함한다.
제2 측면에 따르면, 본 발명의 실시예는 파일 처리 방법을 제공하며, 상기 방법은,
독립 디스크의 여분 배열(Redundant Array of Independent Disks, RAID)에 저장될 F개의 파일을 수신하는 단계
상기 RAID의 스트립 크기에 따라, 상기 F개의 파일을 둘 이상의 데이터 블록으로 분할하는 단계;
분할에 의해 취득되는 상기 둘 이상의 데이터 블록을 배열 내에 배치하는 단계 - 상기 배열에서, 하나의 파일에 속하는 두 개의 인접한 데이터 블록 사이에는 D-1개 위치의 간격이 있고, D의 값은 상기 RAID에서의 데이터 저장 장치의 수량임 -; 및
상기 배열 내의 D개의 데이터 블록과 상기 D개의 데이터 블록에 따라 계산에 의해 취득되는 P개의 검사 블록으로 이루어지는 스트라이프를, 상기 RAID를 구성하는 저장 장치에 기록하는 단계 - P의 값은 상기 RAID에서의 독립 검사 저장 장치의 수량임 -를 포함한다.
제2 측면의 제1 가능한 구현 방식에서, 상기 방법은,
호스트의 액세스 요청을 수신하는 단계 - 상기 액세스 요청은, 상기 RAID에 저장된 파일을 판독하는 데 사용되고, 상기 파일의 로컬 어드레스를 포함함 -;
상기 로컬 어드레스에 따라, 상기 파일의 데이터 블록이 저장되어 있는 물리 어드레스를 질의하는 단계;
상기 물리 어드레스에 따라, 상기 파일이 저장되어 있는 하나의 저장 장치를 결정하는 단계; 및
상기 저장 장치에 저장된 상기 파일의 데이터 블록을 상기 호스트에 반환하는 단계를 더 포함한다.
제3 측면에 따르면, 본 발명의 실시예는 파일 처리 장치를 제공하며, 상기 장치는,
독립 디스크의 여분 배열(Redundant Array of Independent Disks, RAID)에 저장될 F개의 파일을 수신하도록 구성되어 있는 수신 모듈 - 상기 RAID는 T개의 저장 장치로 구성되어 있고, F는 2 이상의 자연수이고, T는 3 이상의 자연수임 - ;
상기 RAID의 스트립 크기에 따라 상기 F개의 파일을 둘 이상의 데이터 블록으로 분할하도록 구성되어 있는 분할 모듈;
상기 둘 이상의 데이터 블록에 따라 T개의 행을 가지는 제1 행렬을 취득하도록 구성되어 있는 처리 모듈 - 하나의 파일에 속하는 데이터 블록들은 상기 제1 행렬의 하나의 행에 위치함 -; 및
상기 제1 행렬의 각 열의 데이터 블록과 상기 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프를, 상기 RAID를 구성하는 T개의 저장 장치에 기록하도록 구성되어 있는 기록 모듈을 포함한다.
제3 측면의 제1 가능한 구현 방식에서, 상기 처리 모듈은 구체적으로,
분할에 의해 취득되는 상기 둘 이상의 데이터 블록을, D개의 행을 가지는 제2 행렬에 배치하고;
상기 제2 행렬의 각 열에 검사 블록을 각각 삽입하여 T개 행을 가지는 상기 제1 행렬을 취득하도록, 구성되어 있고;
하나의 파일에 속하는 데이터 블록들은 상기 제2 행렬 중 하나의 행에 위치하고, D는 상기 RAID에서의 데이터 저장 장치의 수량이고;
상기 삽입되는 검사 블록은, 상기 제1 행렬에서 상기 검사 블록이 위치하는 열의 데이터 블록에 따라 계산에 의해 취득된다.
제3 측면의 제1 가능한 구현 방식을 참조하여, 제2 가능한 구현 방식에서, 상기 RAID가 독립 검사 저장 장치를 포함하는 경우, 상기 처리 모듈은 구체적으로,
상기 RAID에서의 독립 검사 저장 장치의 위치에 따라, 상기 제2 행렬에 검사 블록을 삽입하기 위한 위치를 결정하고;
상기 RAID의 검사 알고리즘에 따라 상기 제2 행렬의 각 열의 데이터 블록에 대해 검사 계산을 수행하여, 각 열의 데이터 블록의 검사 블록을 취득하고;
상기 검사 블록의 결정된 위치에 따라 상기 제2 행렬의 각 열에, 상기 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록을 삽입하여 T개의 행을 가지는 상기 제1 행렬을 취득하도록, 구성되어 있다.
제3 측면의 제1 가능한 구현 방식을 참조하여, 제3 가능한 구현 방식에서, 상기 RAID가 독립 검사 저장 장치를 포함하지 않는 경우, 상기 처리 모듈은, 상기 제2 행렬의 각 열에 검사 블록을 삽입하기 위한 위치 A[x, y]를 결정하고;
상기 제2 행렬의 제x 행에서의 제y 열 내지 제(N-1) 열의 데이터 블록을, 제x 행에서의 제(y+1) 열 내지 제N 열의 위치로 순차 이동시키고;
상기 RAID의 검사 알고리즘에 따라 제y 열의 데이터 블록에 대해 검사 계산을 수행하여 제y 열의 데이터 블록의 검사 블록을 취득하고;
상기 제y 열의 데이터 블록의 검사 블록을 상기 제2 행렬의 제y 열에서의 위치 A[x, y]에 삽입하여 T개의 행을 가지는 상기 제1 행렬을 취득하도록, 구성되어 있고,
상기 제2 행렬은 N개의 열을 가지고, x 및 y는 모두 정수이고, x의 값은 0에서부터 D-1까지 점차 증가하고, y의 값은 0에서부터 N-1까지 점차 증가한다.
제3 측면 또는 제3 측면의 제1 내지 제3 가능한 구현 방식을 참조하여, 제4 가능한 구현 방식에서, 상기 기록 모듈은,
상기 제1 행렬의 제y 열의 데이터 블록과 상기 제y 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프가 완전히 점유되어 있는(fully occupied) 경우, 상기 RAID를 구성하는 T개의 저장 장치에 상기 제y 열의 데이터 블록 및 상기 검사 블록을 기록하도록 구성되어 있고, 상기 제y 열은 상기 제1 행렬의 열 중 하나이다.
제3 측면 또는 제3 측면의 제1 내지 제3 가능한 구현 방식을 참조하여, 제5 가능한 구현 방식에서,
상기 제1 행렬이 M개의 열을 가지고, 상기 기록 모듈은,
상기 제1 행렬의 제y 열의 데이터 블록과 상기 제y 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프가 완전히 점유되어 있지 않은 경우, 상기 제y 열에서의 부족한 데이터 블록의 수량을 판단하고 - 상기 제y 열은 제1 행렬의 열 중 하나임 -;
상기 제y 열에서 데이터 블록이 없는 위치를, 상기 제1 행렬의 제(M-1) 열 내지 제(y+1) 열로부터 선택된 수량의 데이터 블록으로 채우고;
채운 후의 상기 제y 열의 데이터 블록에 따라 상기 제y 열의 검사 블록을 갱신하고;
상기 제y 열의 데이터 블록과 상기 제y 열의 갱신된 검사 블록으로 이루어지는 스트라이프를, 상기 RAID를 구성하는 T개의 저장 장치에 기록하도록, 구성되어 있다.
제3 측면 또는 제3 측면의 제1 내지 제3 가능한 구현 방식을 참조하여, 제6 가능한 구현 방식에서, 상기 기록 모듈은 구체적으로,
상기 제1 행렬의 제y 열의 데이터 블록과 상기 제y 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프가 완전히 점유되어 있지 않은 경우, 상기 제y 열에서 데이터 블록이 없는 위치를 0(영, zero)으로 채우고;
상기 0으로 채운 후의 상기 제y 열의 데이터 블록과 상기 검사 블록으로 이루어지는 스트라이프를, 상기 RAID를 구성하는 저장 장치에 기록하도록, 구성되어 있고, 상기 제y 열은 상기 제1 행렬의 열 중 하나이다.
제3 측면 또는 제3 측면의 제1 내지 제6 가능한 구현 방식을 참조하여, 제7 가능한 구현 방식에서, 상기 수신 모듈은 호스트의 액세스 요청을 수신하도록 더 구성되어 있고, 상기 액세스 요청은, 상기 RAID에 저장된 파일을 판독하는 데 사용되고, 상기 파일의 로컬 어드레스를 포함하며;
상기 파일 처리 장치는,
상기 로컬 어드레스에 따라, 상기 파일의 데이터 블록이 저장되어 있는 물리 어드레스를 질의하고; 상기 물리 어드레스에 따라, 상기 파일이 저장되어 있는 하나의 저장 장치를 결정하고; 상기 저장 장치에 저장된 상기 파일의 데이터 블록을 호스트에 반환하도록, 구성되어 있는 판독 모듈을 더 포함한다.
제4 측면에 따르면, 본 발명의 실시예는 제어기 및 독립 디스크의 여분 배열(Redundant Array of Independent Disks, RAID)을 포함하는 저장 디바이스를 제공하며,
상기 RAID는 파일을 저장하도록 구성되어 있고;
상기 제어기는,
프로세서, 메모리, 통신 버스, 및 통신 인터페이스를 포함하고, 상기 프로세서, 상기 메모리, 및 상기 통신 인터페이스는 상기 통신 버스를 사용하여 서로 연결되고 통신하며;
상기 통신 인터페이스는 호스트 및 상기 독립 디스크의 여분 배열(Redundant Array of Independent Disks, RAID)과 통신하도록 구성되어 있고;
상기 메모리는 컴퓨터로 실행되는 명령어(computer executed instruction)를 저장하도록 구성되어 있고;
상기 프로세서는 상기 컴퓨터로 실행되는 명령어를 실행하여, 상기 제1 측면 또는 상기 제2 측면에 따른 방법을 실행하도록 구성되어 있다.
제5 측면에 따르면, 본 발명의 실시예는 프로그램 코드가 저장된 컴퓨터로 판독 가능한 매체를 포함하는 컴퓨터 프로그램 제품을 제공하며, 상기 프로그램 코드에 포함된 명령어는 상기 제1 측면 또는 상기 제2 측면에 따른 방법을 실행하는 데 사용된다.
본 발명의 실시예에서 제공된 파일 처리 방법에서, 저장 디바이스는 수신된 F개의 파일을 다수의 데이터 블록으로 분할하고, 그 다수의 데이터 블록에 따라 T개의 행을 가지는 제1 행렬을 취득한다. 하나의 파일에 속하는 데이터 블록들은 제1 행렬 중 하나의 행에 위치한다. 저장 디바이스는 제1 행렬의 각 열의 데이터 블록과 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록을 사용하여 스트라이프를 구성하고, 그 스트라이프를 RAID에 저장하여, 동일한 파일에 속하는 데이터 블록들이 RAID 중 하나의 디스크에 저장될 수 있도록 한다. 또, 파일이 손상되었을 때, 저장 디바이스는 다른 파일들 및 검사 블록에 따라 손상된 파일을 복원할 수 있으므로, 파일 저장의 안전성을 보장할 수 있다. 또한, 아카이빙 시나리오에서, RAID 내의 파일을 액세스해야 할 때, 저장 디바이스는 단지 해당 파일이 저장되어 있는 하나의 저장 장치를 깨워서 동작시키면 되고, 이는 명백히 에너지 절약 효과를 이끈다.
본 발명의 실시예 또는 종래기술에서의 기술적 방안을 더욱 명확하게 설명하기 위해, 실시예의 설명에 필요한 첨부도면을 간단히 소개한다. 명백히, 아래의 설명에서의 첨부도면은 단지 본 발명의 일부 실시예일 뿐이다.
도 1a는 본 발명의 실시예에 따른 파일 처리 방법의 애플리케이션 시나리오 도면이다.
도 1b는 본 발명의 실시예에 따른 저장 디바이스(110)의 개략 구성도이다.
도 2a는 본 발명의 실시예에 따른 파일 처리 방법의 흐름도이다.
도 2b는 본 발명의 실시예에 따른 다른 파일 처리 방법의 흐름도이다.
도 3은 본 발명의 실시예에 따른 파일 처리 방법에서 검사 블록을 삽입하는 방법의 흐름도이다.
도 4a, 도 4b, 및 도 4c는 본 발명의 실시예에 따른 저장될 파일의 데이터 블록의 배치 개략도이다.
도 4d는 본 발명의 실시예에 따른 파일 저장 구조의 개략도이다.
도 5는 본 발명의 실시예에 따른 파일 처리 방법에서 검사 블록을 삽입하는 다른 방법의 흐름도이다.
도 6a, 도 6b, 및 도 6d는 본 발명의 실시예에 따른 저장될 파일의 데이터 블록의 다른 배치 개략도이다.
도 6c는 본 발명의 실시예에 따른 다른 파일 저장 구조의 개략도이다.
도 7은 본 발명의 실시예에 다른 파일 저장 방법에서 RAID를 구성하는 디스크에 데이터를 기록하는 방법의 흐름도이다.
도 8은 본 발명의 실시예에 따른 또 다른 파일 처리 방법의 흐름도이다.
도 9는 본 발명의 실시예에 따른 저장될 파일의 데이터 블록의 또 다른 배치 개략도이다.
도 10은 본 발명의 실시예에 따른 파일 판독 방법의 개략 흐름도이다.
도 11은 본 발명의 실시예에 따른 파일 처리 장치의 개략 구성도이다.
본 발명이 속하는 기술분야의 당업자(이하, 당업자라고 함)가 본 발명의 기술적 방안을 더욱 잘 이해할 수 있도록, 본 발명의 실시예에서의 첨부도면을 참조하여 본 발명의 실시예에서의 기술적 방안을 명확하고 완전하게 설명한다. 명백히, 설명된 실시예는 본 발명의 모든 실시예가 아니라 단지 일부 실시예일 뿐이다.
도 1a에 도시된 바와 같이, 도 1a는 본 발명의 실시예에 따른 애플리케이션 시나리오 도면이다. 도 1a에 도시된 애플리케이션 시나리오에서, 저장 시스템은 호스트(100), 연결 디바이스(105), 및 저장 디바이스(110)를 포함한다.
호스트(100)는 종래기술에서 공지된 임의의 컴퓨팅 디바이스, 예를 들어, 애플리케이션 서버 또는 데스크톱 컴퓨터를 포함할 수 있다. 운영체제 및 다른 애플리케이션 프로그램은 호스트(100)에 설치되고, 복수의 호스트(100)가 존재할 수 있다.
저장 디바이스(110)는 종래기술에서 알려져 있는 저장 장치, 예를 들어, 저장 배열(storage array), 단순 디스크 묶음(Just a Bunch Of Disks, JBOD), 또는 직접 액세스 저장 장치(Direct Access Storage device, DASD)의 하나 이상의 상호연결된 디스크 드라이브를 포함할 수 있으며, 직접 액세스 저장 디바이스는 하나 이상의 저장 유닛의 테이프 라이브러리 또는 테이프 저장 디바이스를 포함할 수 있다.
도 1b는 본 발명의 실시예에 따른 저장 디바이스(110)의 개략 구성도이며, 도 1b에 저장된 저장 디바이스는 저장 배열이다. 도 1b에 도시된 바와 같이, 저장 디바이스(110)는 제어기(115) 및 디스크 배열(125)을 포함할 수 있으며, 여기서 디스크 어레이는 독립 디스크의 여분 배열(Redundant Array of Independent Disks, RAID)을 가리킨다. 다수의 디스크 배열(125)이 있을 수 있으며, 디스크 배열(125)은 다수의 디스크(130)로 구성된다.
제어기(115)는 저장 디바이스(110)의 "두뇌"이며, 주로 프로세서(processor) (118), 캐시(cache)(120), 메모리(memory)(122), 통신 버스(약칭하여 버스)(126), 및 통신 인터페이스(Communication Interface)(128)를 포함한다.
통신 인터페이스(128)는 호스트(100) 및 디스크 배열(125)과 통신하도록 구성되어 있다.
메모리(122)는 프로그램(124)을 저장하도록 구성되어 있고, 메모리(122)는 고속 RAM 메모리를 포함할 수 있거나, 또는, 비휘발성 메모리(non-volatile memory), 예를 들어, 적어도 하나의 디스크 메모리를 포함할 수 있다. 메모리(122)는 임의 접근 메모리(Random-Access Memory, RAM), 자기 디스크, 하드 디스크, USB 플래시 드라이브, 탈착 가능한 하드 디스크, 광 디스크, 반도체 디스크 (Solid State Disk, SSD), 또는 비휘발성 메모리와 같은, 프로그램 코드를 저장할 수 있는 임의의 비일시적인(non-transitory), 기계로 판독 가능한 매체일 수 있다.
프로그램(124)은 프로그램 코드를 포함할 수 있으며, 프로그램 코드는 컴퓨터 연산 명령어를 포함한다.
캐시(120)는 호스트(100)로부터 수신된 데이터를 버퍼링하고 디스크 배열(125)로부터 판독된 데이터를 버퍼링하도록 구성되어, 어레이의 성능 및 신뢰성을 향상시킨다. 캐시(120)는, RAM, ROM, 플래시 메모리(Flash memory), 반도체 디스크(SSD)와 같은, 데이터를 저장할 수 있는 비일시적인 기계로 판독 가능한 매체를 포함하며, 이에 한정되는 것은 아니다.
프로세서(118)는 중앙 처리 유닛(central processing unit, CPU), 또는 ASIC(Application Specific Integrated Circuit)일 수 있거나, 또는 본 발명의 본 실시예를 구현하는 하나 이상의 집적회로로 구성될 수 있다. 프로세서(118)에는 운영체제 및 다른 소프트웨어 프로그램이 설치될 수 있으며, 상이한 소프트웨어 프로그램은, 예를 들어 디스크(130)의 입력/출력(Input/output, I/O) 요청을 처리, 디스크 내의 데이터에 대한 다른 처리, 또는 저장 디바이스에 저장된 메타데이터의 수정과 같은, 상이한 기능을 가지는 처리 모듈로 생각될 수 있다. 따라서, 제어기(115)는 IO 작업(operation) 및 RAID 관리 기능을 구현할 수 있고, 또한 스냅샷팅(snapshotting), 미러링(mirroring), 및 복제(copying)와 같은, 다양한 데이터 관리 기능을 제공할 수도 있다. 본 발명의 본 실시예에서, 프로세서(118)는 프로그램(124)을 실행하도록 구성되고, 구체적으로 이하의 방법 실시예에서의 관련 단계들을 수행할 수 있다.
도 1a를 참조하면, 임의의 저장 디바이스(110)는, 연결 디바이스(105)를 사용하여, 하나 이상의 호스트(100)로부터 전송된 복수의 파일을 수신할 수 있고, 수신된 파일을 복수의 데이터 블록으로 분할할 수 있으며, 그 데이터 블록들을 디스크 배열(125)을 구성하는 복수의 디스크(1300에 저장할 수 있다. 임의의 저장 디바이스(110)는 또한 임의의 호스트(100)에 의해 전송된 파일 판독 요청을 수신하고, 파일 판독 요청에 따라 디스크(130)에 저장된 파일의 데이터 블록을 호스트에 반환할 수도 있다.
유의해야 할 것은, 디스크(130)는 디스크 배열(125)을 구성하는 저장 장치의 일례일 뿐이며, 실제 애플케이션에서, 디스크 배열이 복수의 디스크를 포함하는 캐비넷(cabinet)들 사이에 구성되는 구현 방식이 존재할 수 있다는 것이다. 따라서, 본 발명의 실시예에서의 저장 장치는 자기 디스크, 반도체 디스크(Solid State Disk, SSD), 또는 복수의 자기 디스크로 구성된 캐비넷이나 서버와 같은 임의의 장치를 포함할 수 있으며, 이에 한정되지 않는다.
도 2a는 본 발명의 실시예에 따른 파일 처리 방법의 흐름도이다. 상기 방법은 도 1b에 도시된 저장 디바이스(110)의 제어기(115)에 의해 실행될 수 있으며, 상기 방법은 파일 아카이빙 시나리오에 적용될 수 있다. 도 2a에 도시된 바와 같이, 상기 방법은 이하의 단계들을 포함한다:
단계 200: 저장 디바이스(110)가 첫 번째(제1) RAID에 저장될 F개의 파일을 수신하며, 여기서 F는 2 이상의 자연수이다. 본 발명의 본 실시예에서, 저장 디바이스(110)의 제어기(115)는 하나 이상의 호스트(100)에 의해 전송된 파일 저장 요청을 수신할 수 있으며, 파일 저장 요청은 저장 디바이스(110)의 제1 RAID에 파일을 저장하도록 요청하는 데 사용되며, 첫 번째 저장 요청은 F개의 저장될 파일을 포함할 수 있다. 제1 RAID는 T개의 저장 장치를 포함하며, T의 값은 3 이상의 자연수이다.
도 1b를 참조하면, 저장 디바이스(110)는 복수의 RAID를 포함할 수 있다. 본 실시예에서 설명하는 첫 번째(제1) RAID 또는 두 번째(제2) RAID는 저장 디바이스(110)에 포함된 복수의 RAID 중 어느 하나이다. 본 발명의 본 실시예에서의 제1 RAID 및 제2 RAID는 서로 다른 RAID를 구별하려는 것일 뿐이다. 동일한 저장 디바이스(110)에 포함된 복수의 RAID의 조직 형태(organization form)는 동일할 수 있다, 예를 들어, 제1 RAID과 제2 RAID는 모두 RAID5의 조직 형태이다. 물론, 동일한 저장 디바이스(110)에 포함된 복수의 RAID의 조직 형태는 상이할 수 있으며, 예를 들어, 제1 RAID는 RAID3이고, 제2 RAID는 제5 RAID이며, 이에 한정되는 것은 아니다. 실제 작업(operation)에서, 수신된 F개의 파일은 먼저 캐시(120)에 버퍼링된 후, 처리될 수 있음을 알 수 있을 것이며, F개의 파일은 디스크 배열(125)에 기록된다.
단계 205에서, 저장 디바이스(110)는 제1 RAID 스트립 크기에 따라 F개의 파일을 둘 이상의 데이터 블록으로 분할한다. 스트립(strip)은 어느 정도의 연속 어드레스 블록이다. 디스크 배열에서, 제어기는 일반적으로 스트립을 사용하여 가상 디스크의 블록 어드레스(block address)를 멤버 디스크(member disk)의 블록 어드레스에 매핑한다. 스트립은 또한 스트라이프 요소(stripe element)라고도 한다. 스트립 크기는 때로 블록 크기, 청크 크기(chunk size), 또는 입도(granularity)라고도 하며, 각 디스크에 기록되는 스트립 데이터 블록의 크기를 가리킨다. 일반적으로, RAID의 스트립 크기는 2KB 내지 512KB(또는 그 이상)이며, 스트립 크기의 값은 2의 n제곱, 예를 들어 2KB, 4KB, 8KB, 16KB 등이다.
수신된 파일이 제1 RAID의 스트립 크기에 따라 분할되는 경우, 파일의 크기가 제1 RAID의 스트립 크기보다 작으면, 그 파일은 하나의 데이터 블록으로서 사용될 수 있다. 파일이 분할된 후의 나머지 데이터 블록은 스트립 크기의 값보다 작으며, 파일의 나머지 데이터는 하나의 데이터 블록으로서 사용된다. 예를 들어, 도 4a에 도시된 바와 같이, 제어기(115)가 5개의 저장될 파일 F1-F5을 수신한다. 제1 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로 분할된다. 파일 F5는 4개의 데이터 블록: F5-1, F5-2, F5-3, 및 F5-4로 분할된다.
단계 210에서, 저장 디바이스(110)는 둘 이상의 데이터 블록에 따라, T개의 행을 가지는 제1 행렬을 취득하며, 여기서 하나의 파일에 속하는 데이터 블록들은 제1 행렬 중 하나의 행에 위치한다. 또, 제1 행렬의 각 열은 열 내의 데이터 블록에 따라 계산에 의해 취득된 검사 블록을 포함하며, T의 값은 제1 RAID를 구성하는 디스크의 수량과 같다.
예를 들어, 제1 RAID가 총 4개의 디스크를 가지면, 파일 F1-F5를 분할하여 취득된 전술한 데이터 블록에 따라 4개의 행을 가지는 제1 행렬이 취득될 수 있으며, 하나의 파일에 속하는 데이터 블록은 제1 행렬에서 하나의 행에 위치한다. 도 4c에 도시된 바와 같이, 파일 F1의 데이터 블록 F1-1, F1-2, F1-3, F1-4, 및 F1-5은 모두 제1 행렬의 제0 행에 위치하며, 파일 F2의 데이터 블록 F2-1, F2-2, 및 F2-3은 모두 제2 행렬의 제1 행에 위치한다.
구체적으로, 제1 행렬을 취득하는 과정에서, 제1 파일의 제1 데이터 블록은 제1 행렬에서 위치 A[0, 0]에 위치한 데이터 블록으로 결정될 수 있으며, 제2 데이터 블록이 제1 파일에 속하는지가 판정된다. 제2 데이터 블록이 제1 파일에 속하면, 제2 데이터 블록은 제1 데이터 블록과 동일한 행에 배치되고; 제2 데이터 블록이 제1 파일에 속하지 않으면, 제2 데이터 블록은 가장 먼저 발견되는 빈행(blank row)에 배치되거나, 또는 제2 데이터 블록은 제2 행렬 중 가장 짧은 행에 배치되며; 분할에 의해 취득된 모든 데이터 블록이 배치될 때까지 다른 데이터 블록들이 유사한 방법에 의해 처리된다.
당연히, 하나의 파일에 속하는 데이터 블록들이 제1 행렬에서의 하나의 행에 위치하는 것이 보장되기만 하면, 다른 방법이 분할에 의해 취득된 데이터 블록을 제1 행렬에 배치하는 데 사용될 수 있음을 이해할 수 있을 것이며, 이에 한정되는 것은 아니다. 배치 후의 T개의 행을 가지는 제1 행렬은 도 4c 또는 도 6b에 도시되어 있다.
배치 후의 T개의 행을 가지는 제1 행렬의 각 열에서, 열 내의 데이터 블록에 따라 계산에 의해 취득된 검사 블록이, 예를 들어 도 4c에 도시된 제1 행렬에 포함되며, 제0 열은, 제0 열 내의 데이터 블록: F1-1, F2-1, 및 F3-1에 따라 취득되는 검사 블록 P1을 포함하고; 제1 열은, 제1 열 내의 데이터 블록: F1-2, F2-2, 및 F3-2에 따라 취득되는 검사 블록 P2를 포함한다.
본 발명의 실시예에서, 제1 행렬에서 파일이 위치하는 구체적인 위치는 제한되지 않으며, 하나의 파일의 데이터 블록들이 제1 행렬의 하나의 행에 위치하는 것이 보장되기만 하면, 하나의 파일에 속하는 데이터 블록의 배치 시퀀스도 제한되지 않는다. 실제 애플리케이션에서, 하나의 파일에 속하는 데이터 블록들은 제1 행렬의 하나의 행에 순차 배치될 수 있다.
단계 215에서, 저장 디바이스(110)는 제1 행렬의 각 열 내의 데이터 블록과 열 내의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프(stripe)를, 제1 RAID를 구성하는 T개 저장 장치에 기록한다.
제1 행렬을 취득한 후, RAID의 스트라이프는 제1 행렬의 각 열 내의 데이터 블록과 그 열 내의 데이터 블록에 따라 계산에 의해 취득되는 데이터 블록으로 구성될 수 있다. 예를 들어, 어떤 상황에서, 도 4c에 도시된 제1 행렬의 각 열 내의 데이터 블록과 열 내의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 각각 이루어지는 스트라이프가, 디스크에 기록된 후, 도 4d에 도시된 저장 구조가 형성된다. F1-1, F2-1, F3-1, 및 P1가 제1 RAID의 하나의 스트라이프를 구성하고, F1-2, F2-2, F3-2, 및 P2가 제1 RAID의 다른 스트라이프를 구성하는 등이다. 다른 상황에서, 도 6b에 도시된 제1 행렬의 각 열의 데이터 블록과 그 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 각각 이루어지는 스트라이프가, 디스크에 기록된 후, 도 6c에 도시된 저장 구조가 형성될 수 있다. 유의해야 할 것은, 본 발명의 본 실시예에서 설명한 스트라이프는 RAID를 구성하는 각각의 저장 장치에 동시에 기록되는 데이터 블록의 집합을 가리키며, 스트라이프 내의 각 데이터 블록의 크기는 동일하고, 하나의 스트라이프 내의 데이터 블록은 각 저장 장치의 하나의 변위 위치(displacement position)에 위치한다.
실제 애플리케이션에서, 도 4c 또는 도 6b에 도시된 제1 행렬의 열 내의 데이터 블록들은 그 열에서의 검사 블록을 취득하기 위해 계산될 수 있음을 이해할 수 있을 것이다. 검사 블록이 열에 삽입된 후, 그 열의 데이터 블록과 검사 블록으로 이루어지는 스트라이프는 제1 RAID를 구성하는 디스크에 저장될 수 있다. 선택사항으로, 제1 행렬의 각 열에서의 검사 블록이 계산에 의해 모두 취득된 후, 스트라이프는 제1 행렬의 각 열 내의 데이터 블록들 및 그 열 내의 데이터 블록들에 따라 계산에 의해 취득되는 검사 블록을 사용하여 각각 구성될 수 있고, 그 스트라이프는 제1 RAID를 구성하는 디스크에 저장된다. 예를 들어, 검사 블록 P1이 도 4c에 도시된 제1 행렬의 제0 열 내의 데이터 블록 F1-1, F2-1, 및 F3-1에 따라 계산에 의해 먼저 취득된 후, 도 4c에 도시된 제0 열 내의 데이터 블록 F1-1, F2-1, 및 F3-1과 P1으로 이루어지는 스트라이프는 제1 RAID를 구성하는 디스크 D1-D4에 저장된다. 선택사항으로, 검사 블록 P1-P7 이 계산에 의해 모두 취득된 후, 제1 행렬의 각 열 내의 데이터 블록과 검사 블록으로 각각 이루어지는 스트라이프들이, D1-D4에 저장되며, 이에 한정되는 것은 아니다.
이상의 설명으로부터, 본 발명의 본 실시예에서 설명한 파일 처리 방법에서, 저장될 파일이 분할되어 배치된 후, 상이한 파일에 속하는 데이터 블록들로 이루어지는 스트라이프는 제1 RAID를 구성하는 디스크에 저장되어, 파일 기록 효율을 보장할 뿐만 아니라, 하나의 파일에 속하는 데이터 블록들이 하나의 디스크에 저장될 수 있도록 해준다. 예를 들어, 파일 F1에 속하는 모든 데이터 블록은 디스크 D1에 저장되고, 파일 F2에 속하는 모든 데이터 블록은 디스크 D2에 저장된다. 본 발명의 본 실시예에서의 방법을 사용하여 복수의 파일이 RAID에 저장된 후, 저장 배열 내의 어느 파일을 액세스할 필요가 있을 때, 저장 디바이스(110)는 RAID의 모든 디스크를 깨울 필요는 없고, 오직 그 파일이 저장되어 있는 디스크만을 깨워서 그 디스크 내의 그 파일만을 호스트에 반환하면 되므로, 더 우수한 에너지 절약 효과를 달성할 수 있다. 또, 본 발명의 본 실시예의 기술적 방안에서, 어느 데이터 블록이 손상되었으면, 그 손상된 데이터 블록은 동일 스트라이프의 검사 블록 또는 다른 파일의 데이터 블록을 사용하여 복원될 수 있으므로, 파일 저장의 안전성을 보장할 수 있다.
유의해야 할 것은, 본 발명의 본 실시예에서 설명한 데이터 블록은 복수의 데이터로 구성된 데이터 단위를 가리킨다. 본 발명의 본 실시예에서 설명한 행렬은 데이터 블록을 사용하여 구성된 복수의 배열을 포함할 수 있거나, 또는 데이터 블록과 검사 블록을 사용하여 구성된 복수의 배열을 포함할 수 있다. 본 발명의 본 실시예에서 행은 하나의 파일에 속하는 모든 데이터 블록을 포함하는 하나의 배열을 가리킨다. 본 발명의 본 실시예에서 열은 행에 수직인 배열을 가리킨다. 다시 말해, 본 발명의 본 실시예에서 정의된 행은 통상의 행렬에서 정의되는 가로 배열에 한정되지 않는다. 통상의 행렬에서의 가로 배열이 하나의 파일에 속하는 데이터 블록들을 포함할 때, 그 가로 배열(예를 들어, 도 4c에 도시된 가로 배열)을 본 발명의 본 실시예에서의 행이라고 할 수 있다. 통상의 행렬에서의 세로 배열이 하나의 파일에 속하는 데이터 블록을 포함할 때, 그 세로 배열을 본 발명의 본 실시예에서의 행이라고 할 수 있으며, 이에 한정되는 것은 아니다.
도 2b는 본 발명의 실시예에 따른 다른 파일 처리 방법의 흐름도이다. 상기 방법은 도 1b에 도시된 저장 디바이스(110)의 제어기(115)에 의해 실행될 수 있으며, 파일 아카이빙 시나리오에 적용될 수 있다. 도 2b에 도시된 바와 같이, 본 방법은 도 2a에 도시된 방법과 유사하며, 단계 207 및 단계 209는 도 2a에 도시된 방법의 단계 210의 상세한 설명이다. 도 2b에 도시된 바와 같이, 상기 방법은 이하의 단계들을 포함한다.
단계 200에서, 저장 디바이스(110)가 제1 RAID에 저장될 F개의 파일을 수신하며, F는 2 이상의 자연수이고, 제1 RAID는 T개의 저장 장치를 포함하고, T의 값은 3 이상의 자연수이다.
단계 205에서, 저장 디바이스(110)가 제1 RAID 스트립 크기에 따라 F개의 파일을 둘 이상의 데이터 블록으로 분할한다.
단계 207에서, 저장 디바이스(110)가 둘 이상의 데이터 블록을 D개의 행을 가지는 제2 행렬에 배치하며, D는 제1 RAID에서 데이터 디스크의 수량이다.
파일을 분할함으로써 복수의 데이터 블록이 취득된 후, 그 취득된 복수의 데이터 블록은 D행 * N열로 이루어진 제2 행렬에 배치될 수 있으며, D는 제2 행렬의 행의 수량을 나타내는 데 사용되고, D의 값은 제1 RAID를 구성하는 데이터 디스크의 수량에 따라 결정되며, N은 정수이다. 제1 RAID의 데이터 디스크의 수량은 제1 RAID의 조직 형태에 따라 결정될 필요가 있다는 것을 이해할 수 있을 것이다. 예를 들어, RAID3은 데이터 디스크들과 하나의 독립 검사 디스크를 포함하고, RAID4는 데이터 디스크들과 2개의 독립 검사 디스크를 포함한다. 반면, RAID5는 데이터 디스크들만을 가지고, 독립 검사 디스크는 없다. D의 값은 제1 RAID에서의 데이터 디스크의 수량에 따라 결정되어야 한다. 예를 들어, 제1 RAID의 조직 형태가 RAID3이고 제1 RAID가 총 4개의 디스크를 포함하면, 데이터 디스크의 수량은 3이고, 검사 디스크의 수량은 1이다. 따라서, 제2 행렬에서 행의 수량은 3이며, 이는 도 4b에 도시된 제2 행렬로 배치될 수 있다. 제1 RAID의 조직 형태가 RAID5이고 제1 RAID가 총 4개의 디스크를 포함하면, 데이터 디스크의 수량은 4이고, 검사 디스크의 수량은 0이다. 따라서, 제2 행렬에서 행의 수량은 4이며, 이는 도 6a에 도시된 제2 행렬로 배치될 수 있다.
N은 제2 행렬의 열의 수량을 나타내는 데 사용되며, N은 정수이고, N의 값은 한정되지 않을 수 있으며 구체적으로 데이터 블록의 수량에 따라 결정될 수 있다. 수신된 복수의 저장될 파일이 캐시(120)에 버퍼링되는 경우에, N의 값은 캐시(120)의 크기에 따라 결정될 수 있으며, N과 스트립 크기의 곱(product)은 캐시(120)의 용량보다 크지 않다는 것을 이해할 수 있을 것이다. 구체적으로, 제2 행렬을 배치하는 프로세스는 전술한 도 2a의 단계 210에서 설명한 제1 행렬을 배치하는 방법과 유사하므로, 세부사항은 반복 설명하지 않는다.
유의해야 할 것은, 본 발명의 본 실시예에서 데이터 디스크는 단지 데이터 블록을 저장하는 데이터 저장 장치의 일례일 뿐이고, 독립 검사 디스크는 검사 데이터를 저장하는 데 특별히 사용되는 독립 검사 저장 장치의 일례일 뿐이다. 본 발명의 본 실시예에서 데이터 저장 장치는 데이터 블록의 저장에 사용되는 저장 장치를 가리키고, 독립 검사 저장 장치는 검사 블록을 저장하는 데 특별히 사용되는 저장 장치를 가리키며, 저장 장치는 자기 디스크, 또는 자기 디스크를 포함하는 캐비넷이나 서버 등의 장치를 포함하지만 이에 한정되는 것은 아니다.
본 발명의 본 실시예에서, 데이터 블록이 구체적으로 배치될 때, 하나의 파일에 속하는 데이터 블록들이 제2 행렬의 하나의 행에 위치하는 것을 보장하여야 한다. 예를 들어, 도 4b에 도시된 바와 같이, 제1 RAID의 조직 형태가 RAID3이고 제1 RAID가 3개의 데이터 디스크를 포함하면, 파일 F1 내지 F4를 분할한 후에 취득된 데이터 블록은 3행 * 7열의 제2 행렬에 배치될 수 있고, 파일 F1의 데이터 블록 F1-1, F1-2, F1-3, F1-4, 및 F1-5는 제2 행렬의 제0 행에 모두 위치하고, 파일 F2의 데이터 블록 F1-1, F1-2, 및 F1-3은 모두 제2 행렬의 제1 행에 위치하고, 파일 F5의 F5-1, F5-2, F5-3, 및 F5-4도 제2 행렬의 제1 행에 위치한다.
단계 209에서, 저장 디바이스(110)는 제2 행렬의 각 열에 검사 블록을 삽입하여 T개의 행을 가지는 제1 행렬을 취득한다.
제2 행렬의 각 열에 삽입된 검사 블록은 제1 RAID의 조직 형태에 의해 결정된 검사 알고리즘에 따라 그 열의 데이터 블록을 계산함으로써 취득되고, T의 값과 D의 값의 차는 제1 RAID에서의 독립 검사 블록의 수량이다. 예를 들어, T개의 행을 가지는 제1 행렬은 (D+P)행 * M열로 이루어지는 제1 행렬일 수 있으며, P는 제1 RAID에서의 검사 디스크의 수량이고, M은 N 이상의 정수이고, M과 스트립 크기의 곱은 RAID에서의 단일 디스크의 용량보다 크지 않다.
저장 디바이스(110)의 제어기(115)는 제1 RAID의 조직 형태에 따라 검사 알고리즘(즉, 검사 블록의 계산 방법)을 결정할 수 있고, 결정된 검사 알고리즘에 ㄸ따라 제2 행렬의 각 열 내의 데이터 블록의 검사 블록을 계산하여, 제2 행렬에 각 열 내의 데이터 블록들의 검사 블록을 삽입하여 (D+P)행 * M열로 이루어진 제1 행렬을 취득할 수 있으며, P는 제1 RAID에서 독립 검사 디스크의 수량이고, M의 값은 N의 값보다 작아서는 안 되며, M과 스트립 크기의 곱은 RAID에서의 단일 디스크의 용량보다 크지 않다. 수신된 다수의 저장될 파일이 캐시(120)에 버퍼링되는 경우에, M과 스트립 크기의 곱은 또한 캐시(120)의 용량보다 크지 않다는 것을 이해할 수 있을 것이다. 실제 작업에서, 수신된 복수의 파일이 먼저 임시 저장 영역(즉, 캐시(120))에 버퍼링되면, 검사 블록이 여전히 임시 저장 영역의 용량을 점용할 필요가 있음을 고려하여, 제2 행렬에 검사 블록을 삽입하기 위한 조건이 설정될 수 있다, 예를 들어, 임시 저장 영역 내의 데이터 볼륨이 설정 임계값을 초과할 때, 검사 블록이 제2 행렬의 각 열에 삽입된다는 조건이 설정될 수 있다. 당연히, 또한 설정된 저장 기한(storage time limit)에 도달한 때, 검사 블록이 제2 행렬의 각 열에 삽입되도록 설정될 수도 있다. 저장 기한은 제1 RAID를 구성하는 디스크에 파일을 기록하기 위한 미리 설정된 기한이다. 예를 들어, 한 시간에 한 번 저장을 수행하도록 지정될 수 있으며, 그러면 저장 기한은 1시간이다. 저장 기한은 디스크에 기록될 필요가 있는 데이터의 볼륨과 같은 실제 상황에 따라 결정될 수 있거나 또는 저장은 하루에 한 번 수행될 수 있다 또는 저장은 10분마다 수행될 수도 있으며, 이에 한정되는 것은 아니다.
단계 209에서, 검사 블록이 제2 행렬의 각 열에 삽입될 때, 제1 RAID의 조직 형태에 따라 상이한 처리가 각각 수행될 수 있다. 상세하게는, 도 3 및 도 5의 관련 설명을 참조할 수 있다.
일 경우에, 제1 RAID의 조직 형태가 하나의 독립 검사 디스크를 가지는 RAID일 때, 예를 들어, 제1 RAID가 RAID3 또는 RAID4일 때, 제어기(115)는 도 3에 도시된 방법의 프로세스에 따라 검사 블록을 삽입할 수 있다. 도 3에 도시된 바와 같이, 상기 방법은 이하의 단계들을 포함할 수 있다.
단계 305에서, 저장 디바이스(110)는, 제1 RAID에서의 독립 검사 디스크의 위치에 따라, 제2 행렬에 검사 블록 삽입하기 위한 위치를 결정한다.
예를 들어, 제1 RAID가 RAID3이면, 제1 RAID는 독립 검사 디스크를 가진다. 도 4d에 도시된 바와 같이, 제1 RAID가 4개의 디스크를 가지면, 디스크 D1, D2, D3, 및 D4 중 어느 하나가 독립 검사 디스크로 사용될 수 있다. 예를 들어, D4가 도 4d에 도시된 제1 RAID에서의 독립 검사 디스크로 사용된다. 제2 행렬에 검사 블록을 삽입하기 위한 위치는 독립 검사 디스크의 결정된 위치에 따라 결정될 수 있다. 예를 들어, 도 4d에 도시된 독립 검사 디스크 D4의 위치에 따라, 도 4b에 도시된 제2 행렬의 마지막 행 뒤에 검사 블록이 추가되는 것으로 결정될 수 있다. 이런 방식으로, 도 4b에 도시된 제2 행렬은 3개의 행을 가지고, 제4 행이 검사 블록을 삽입하기 위해 제2 행렬에 추가된다.
당연히, D2가 독립 검사 디스크로 사용되면, 도 4b에 도시된 제2 행렬에서 데이터의 제1 행과 데이터의 제2 행 사이에 행이 삽입되고 검사 블록의 위치로 사용되므로, 3행 * 7열의 제2 행렬이 4행 * 7열의 제1 행렬이 된다는 것을 이해할 수 있을 것이다. 독립 검사 디스크의 위치에 대한 전술한 예는 독립 검사 디스크의 위치에 대한 어떠한 제한을 구성하려는 것은 아니다.
단계 310에서, 저장 디바이스(110)는 제1 RAID의 검사 알고리즘에 따라 제2 행렬의 각 열 내의 데이터 블록에 대해 검사 계산을 수행하여, 각 열 내의 데이터 블록의 검사 블록을 취득한다.
예를 들어, 제1 RAID의 검사 알고리즘이 페리티 검사 알고리즘이면, 페리티 검사 알고리즘에 따라 제2 행렬의 각 열 내의 데이터에 대해 검사 계산이 각각 수행될 수 있어, 각 열 내의 데이터 블록의 검사 블록을 취득할 수 있다. 예를 들어, 검사 계산이 도 4b에 도시된 제0 열 내의 데이터 블록 F1-1, F2-1, 및 F3-1에 따라 수행되어 검사 블록 P1을 취득한다. 검사 계산이 제1 열의 데이터 블록 F1-2, F2-2, 및 F4-1에 따라 수행되어 검사 블록 P2를 취득한다. 본 실시예에서 유의할 것은, 본 실시예에서, 패리티 검사 알고리즘은 일례일 뿐이고 검사 알고리즘을 한정하는 것은 아니라는 것이다. 단계 305와 단계 310의 시퀀스는 한정되지 않는다.
단계 315에서, 저장 디바이스(110)는 검사 블록의 결정된 위치에 따라 제2 행렬의 각 열에, 열 내의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록을 삽입하여 T개의 행을 가지는 제1 행렬을 취득한다.
예를 들어, 도 4b에 도시된 제2 행렬에 검사 블록이 삽입된 후, 도 4c에 도시된 4행 * 7열의 제1 행렬이 취득될 수 있으며, P1은 제2 행렬의 제0 열 내의 데이터 블록 F1-1, F2-1, 및 F3-1에 따라 계산에 의해 취득된 검사 블록이고, P2는 제2 행렬의 제1 열 내의 데이터 블록 F1-2, F2-2, 및 F4-1에 따라 계산에 의해 취득된 검사 블록이고, 등등이다.
독립 검사 디스크의 경우에, 제2 행렬의 각 열에 삽입될 검사 블록의 수량은 독립 검사 디스크의 수량에 따라 결정될 수 있다. 따라서, 검사 블록이 삽입된 후, 제2 행렬의 행의 수량은 변경되지만, 제2 행렬의 열의 수량은 변경되지 않고 그대로이다. 다시 말해, 제1 RAID의 조직 형캐가 하나의 독립 검사 디스크를 가지는 RAID이면, 제1 행렬에서 M의 값은 제2 행렬에서의 N의 값과 같다.
다른 경우에, 제1 RAID의 조직 형태가 독립 검사 디스크를 가지는 RAID는 아니지만 분산 검사 블록을 가지는 RAID일 때, 예를 들어, 제1 RAID가 RAID5 또는 RAID6일 때, 제어기(115)는 도 5에 도시된 방법의 프로세스에 따라 검사 블록을 삽입할 수 있다. 도 5에 도시된 바와 같이, 상기 방법은 이하의 단계를 포함한다:
단계 505에서, 저장 디바이스(110)는 제2 행렬의 각 열에 검사 블록을 삽입하기 위한 위치 A[x, y]를 결정한다.
실제 애플리케이션에서, 제1 RAID의 조직 형태와 제1 RAID에서의 검사 블록의 분포 방식에 따라, 제2 행렬의 각 열에 검사 블록을 삽입하기 위한 위치 A[x, y]가 결정될 수 있다. 당업자는 RAID5에서 디스크 상의 검사 블록의 분포 방식이 왼쪽 동기(후방 패리티(backward parity) 또는 왼쪽 동기), 왼쪽 동기(후방 동적 또는 왼쪽 비동기), 오른쪽 동기(전방 패리티 또는 오른쪽 동기), 또는 오른쪽 비동기(전방 동적 또는 오른쪽 비동기)일 수 있음을 알 수 있을 것이다. "왼쪽" 또는 "오른쪽"은 어떻게 검사 정보가 분포되어 있는지를 나타내고, "동기" 또는 "비동기"는 어떨게 데이터가 분포되어 있는지를 나타낸다. "왼쪽"의 알고리즘에서는, 마지막 디스크에서부터 시작하여, 검사 블록이 첫 번째 디스크(필요한 경우에 순환적으로 및 반복적으로 분포될)를 향하는 방향으로 각 스트라이프 내의 하나의 디스크 위치에 이동된다. "오른쪽"의 알고리즘에서는, 첫 번째 디스크에서부터 시작하여, 검사 블록이 마지막 디스크(필요한 경우에 순환적으로 및 반복적으로 분포될)를 향하는 방향으로 각 스트라이프 내의 하나의 디스크 위치에 이동된다. RAID6은 RAID5에 기초하여 다른 검사 블록과 함께 추가된다.
독립 검사 디스크가 없는 RAID의 조직 형태에서, 어떻게 검사 블록이 디스크에 구체적으로 분포되는지는 제1 RAID의 조직 형태 및 검사 블록의 분포 방식에 따라 결정될 수 있다. 예를 들어, 제1 RAID의 조직 형태 및 검사 블록의 분포 방식이 왼쪽 동기이면, 마지막 디스크에서부터 시작하여, 검사 블록이 첫 번째 디스크의 위치를 향하는 방향으로 각 스트라이프 내의 하나의 디스크 위치에 이동되는 식으로 검사 블록이 디스크 내에 분포됨을 알 수 있을 것이다.
본 발명의 본 실시예에서, 제2 행렬에 검사 블록을 삽입하기 위한 위치 A[x, y]는 제1 RAID에서의 검사 블록의 분포 방식에 따라 결정될 수 있으며, 여기서 x는 0 이상의 정수이고, (D-1) 이하이며, y는 0 이상의 정수이고 (N-1) 이하이다, 즉 0≤x≤(D-1), 0≤y≤(N-1). 또, x와 y의 값은 제2 행렬에서의 검사 블록의 상이한 위치에 따라 변경되며, x의 값은 0에서부터 (D-1)까지 점차 증가하고, y의 값은 0에서부터 (N-1)까지 점차 증가한다. 예를 들어, 제1 RAID의 조직 형태가 RAID5이고 검사 블록의 분포 방식이 왼쪽 동기이면, 도 6a에 도시된 바와 같이, 제2 행렬의 제0 열에 검사 블록을 삽입하기 위한 위치는 A[3, 0]이고, 제1 열에 검사 블록을 삽입하기 위치는 A[2, 1]이고, 제2 열에 검사 블록을 삽입하기 위한 위치는 A[1, 2]이고 제3 열에 검사 블록을 삽입하기 위치는 A[0, 3]이다. 다음 순환은 제4 열에서부터 시작한다, 즉, 제4 열에서 검사 블록을 삽입하기 위한 위치는 A[3, 4]이고, 제5 열에서 검사 블록을 삽입하기 위한 위치는 A[2, 5]이고, 등등이다. 구체적으로, 위치들은 도 6b에 도시된 P1-P7일 수 있다.
단계 510에서, 저장 디바이스는(110)는 제2 행렬의 제x 행에서의 제y 열 내지 제(N-1) 열의 데이터 블록을, 제x 행에서의 제(y+1) 열 내지 제N 열의 위치로 순차로 이동시킨다.
제2 행렬의 각 열에 검사 블록을 삽입하기 위한 위치 A[x, y]를 결정한 후, 제2 행렬의 제x 행에서의 제y 열 내지 제(N-1) 열의 데이터를, 제x 행에서의 제(y+1) 열 내지 제N 열의 위치로 순차로 이동시킨다, 즉, 원래의 위치 A[x, y] 내지 A[x, N-1]에서의 모든 데이터 블록은 위치 A[x, y+1] 내지 A[x, N]로 한 위치씩 오른쪽으로 순차 이동되어야 한다. 예를 들어, 도 6a에 도시된 제2 행렬의 제0 열에 검사 블록을 삽입하기 위한 위치가 A[3, 0]으로 결정되는 경우, 제2 행렬의 제3 행에서의 위치 A[3, 0] 내지 A[3, 4]의 모든 데이터 블록은 위치 A[3, 1] 내지 A[3, 5]로 한 위치씩 뒤로 순차 이동되어야 한다. 이러한 방식으로, 원래의 위치 A[3, 0]에서의 데이터 블록 F4-1은 A[3, 1]로 이동될 수 있고, 원래의 위치 A[3, 1]에서의 데이터 블록 F4-2는 A[3, 2]로 이동될 수 있고, 등등이다. x 및 y의 값은 제2 행렬에서의 검사 블록의 상이한 위치에 따라 변화하고, 검사 블록의 위치 A[x, y]가 결정될 때마다, 제x 행에서의 원래의 위치 A[x, y] 내지 A[x, N-1]의 모든 데이터 블록은 한 위치씩 뒤로 이동되어야 한다. 각 열 내의 데이터 블록의 수량은 본 발명의 본 실시예에서 한정되지 않는다.
단계 515에서, 저장 디바이스(110)는 제1 RAID의 검사 알고리즘에 따라 제y 열의 데이터에 대한 검사 계산을 수행하여, 제y 열의 데이터 블록의 검사 블록을 취득한다.
검사 블록의 위치가 A[x, y]로 결정되고, 제2 행렬의 제x 행에서의 제y 열 내지 제(N-1) 열의 데이터 블록이 제x 행의 제(y+1) 열 내지 제N 열의 위치로 순차 이동된 후, 제1 RAID의 검사 알고리즘에 따라 제y 행의 데이터 블록에 대해 검사 계산이 수행되어 제y 행 내의 데이터 블록의 검사 블록을 취득한다. 이 검사 블록은 위치 A[x, y]에 삽입되어야 하는 검사 블록이다. 예를 들어, 도 6b에 도시된 바와 같이, 제0 열에서의 검사 블록의 위치가 A[3, 0]으로 결정되고, 원래의 위치 A[3, 0]에서의 데이터 블록 F4-1이 위치 A[3, 1]로 이동되면, 제0 열에서의 검사 블록 P1은 제0 열 내의 데이터 블록 F1-1, F2-1, 및 F3-1에 따라 계산에 의해 취득될 수 있다.
단계 520에서, 저장 디바이스(110)는 제y 열의 데이터 블록의 검사 블록을, 제2 행렬의 제y 열에서의 위치 A[x, y]에 삽입하여 T개의 행을 가지는 제1 행렬을 취득한다.
계산에 의해 검사 블록이 취득된 후, 그 검사 블록은 결정된 검사 블록의 위치 A[x, y]에 삽입될 수 있으므로, T개의 행을 가지는 제1 행렬이 취득될 수 있다. 예를 들어, (D+P)행 * M열의 제1 행렬이 취득될 수 있다. 독립 검사 디스크가 없는 RAID의 조직 형태에서, 검사 블록은 제2 행렬의 각 열에 삽입되어야 하며, 검사 블록이 삽입되는 위치에 있던 원래의 데이터 블록은 뒤로 순차 이동되어야 하고; 따라서, 취득된 제1 행렬에서의 M의 값은 제2 행렬에서의 N의 값보다 크다. 예를 들어, 제1 RAID의 조직 형태가 RAID5이고 검사 블록이 왼쪽 동기 방식으로 분포되어 있으면, 도 6a에 도시된 4행 * 5열의 제2 행렬의 각 열에 검사 블록이 삽입된 후, 도 6b에 도시된 4행 * 7열의 제1 행렬이 취득될 수 있다.
단계 215에서, 저장 디바이스(110)는, 제1 행렬의 각 열의 데이터 블록과 그 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프를, 제1 RAID를 구성하는 디스크에 기록한다. 실제 애플리케이션에서는, 단계 215에서, 제1 행렬의 각 열의 데이터 블록이, 스트라이프의 형태로, 제1 RAID를 구성하는 디스크에 기록될 때, 아래의 상황이 발생할 수 있고 각각 처리될 수 있다.
일 경우에, 제1 행렬의 제y 열의 데이터 블록과 검사 블록으로 이루어지는 스트라이프가 완전히 점유되어 있는 경우, 제y 열의 데이터 블록과 검사 블록은 제1 RAID를 구성하는 디스크에 직접 기록될 수 있으며, 여기서 제y 열은 제1 행렬의 M개 열 중 하나이다. 예를 들어, 도 6b에 도시된 제0 열이 완전이 점유되어 있는 경우, 즉, 제0 열의 데이터 블록과 검사 블록으로 이루어지는 스트라이프가 완전히 점유되어 있는 경우, 제0 열의 데이터 블록과 검사 블록으로 이루어지는 스트라이프가 디스크에 기록된다.
다른 경우에, 제1 행렬의 제y 열의 데이터 블록과 검사 블록으로 이루어지는 스트라이프가 완전히 점유되어 있지 않은 경우, 제y 열의 데이터 블록이 없는 위치에는 0(zero)이 채워질 수 있다. 0으로 채운 후의 제y 열의 데이터 블록과 검사 블록으로 이루어지는 스트라이프는 제1 RAID를 구성하는 디스크에 기록되며, 제y 열은 제1 행렬의 열이다. 예를 들어, 도 6b에 도시된 제1 행렬의 제4 열이 완전히 점유되어 있지 않은 경우, 즉, 위치 A[1, 4]에 데이터가 기록되어 있지 않은 경우, 위치 A[1, 4]에는 0이 채워질 수 있다. 그 후, 제4 열의 데이터 블록 및 검사 블록으로 이루어지는 스트라이프가 디스크에 기록된다, 즉 데이터 블록 F1-4, 0,및 F5-3, 그리고 검사 블록 P5로 이루어지는 스트라이프가 디스크에 기록된다.
또 다른 경우에, 제1 행렬의 제y 열의 데이터 블록과 검사 블록으로 이루어지는 스트라이프가 완전히 점유되어 있지 않은 경우, 저장 기한에 도달하고, 다른 파일이 수신되지 않으면, 도 7에 도시된 방법이 처리를 위해 사용될 수 있다. 도 7에 도시된 바와 같이, 상기 방법은 이하의 단계를 포함한다:
단계 700에서, 저장 디바이스(110)는 제y 열에서의 부족한 데이터 블록의 수량을 판단한다.
예를 들어, 도 4c에 도시된 제1 행렬의 제5 열의 데이터 블록과 검사 블록으로 이루어지는 스트라이프는 완전히 점유되어 있지 않다. 예를 들어, 즉, 데이터가 기록되어 있지 않은 위치 A[0, 5]가 존재하며; 다른 예의 경우, 도 6b에 도시된 제1 행렬의 제y(y-4) 열에도, 데이터가 기록되어 있지 않은 A[1, 4]가 존재한다. 이 때 저장 기한에 도달하면, 도 4c에 도시된 제1 행렬의 제5 열에서의 부족한 데이터 블록의 수량은 1이고, 도 6b에 도시된 제1 행렬의 제4 열에서의 부족한 데이터 블록의 수량도 1이다.
단계 705에서, 저장 디바이스(110)는 제1 행렬의 제(M-1) 열 내지 제(y+1) 열로부터 데이터 블록의 수량을 선택하여, 제y 열에서의 데이터 블록이 없는 위치를 그 데이터 블록으로 채운다.
제y 열에, 데이터 블록이 없는 위치가 존재하고, 저장 기한에 도달하고, 저장 디바이스(110)가 호스트로부터 어떤 다른 저장될 파일도 수신하지 않으면, 디스크의 저장 공간을 절약하기 위해, 저장 디바이스(110)는 제1 행렬의 제(M-1) 열 내지 제(y+1) 열로부터 대응하는 수량의 데이터 블록을 순차 선택하여, 제y 열에서의 데이터 블록이 없는 위치를 그 데이터 블록으로 채운다. 다시 말해, 제1 행렬의 제y 열에서, 데이터 블록가 없는 위치가 존재하는 것으로 판정되는 경우, 저장 디바이스(110)는 제1 행렬의 마지막 열에서부터 시작하여, 마지막 열에서부터 제0 열로의 방향에 따라 대응하는 수량의 데이터 블록을 선택하여, 제y 열에서 데이터 블록이 없는 위치를 그 데이터 블록으로 채운다.
예를 들어, 저장 디바이스(110)는 도 4c에 도시된 제1 행렬의 제6 열로부터 데이터 블록 F5-4를 선택하고, 그 데이터 블록을, 제5 열에서 데이터 블록이 부족한 위치에 채울 수 있다, 즉, 위치 A[0, 5]는 제1 행렬의 위치 A[1, 6]의 데이터 블록 F5-4로 채워진다. 저장 디바이스(110)는 도 6b에 도시된 제1 행렬의 제6 열에서 임의의 데이터 블록(즉, 데이터 블록 F5-4 및 F5-5)을 선택할 수 있고, 제4 열의 위치 A[1, 4]를 그 데이터 블록으로 채운다.
단계 710에서, 채운 후의 제y 열의 데이터 블록에 따라 제y 열의 검사 블록을 갱신한다.
제y 열에서 데이터 블록이 없는 위치가 새로운 데이터로 채워지기 때문에, 저장 디바이스(110)는 결정된 검사 알고리즘 및 채운 후의 제1 행렬의 제y 열의 모든 데이터 블록에 따라 제y 열의 검사블록을 계산 및 갱신할 필요가 있다. 제1 행렬에서 데이터 블록이 부족한 상이한 위치에 따라 y의 값이 변경된다. 예를 들어, 도 6b에 도시된 바와 같이, 제y 열이 도 6b에 도시된 제(M-1) 행의 데이터 블록 F4-5로 채워지면, 채워진 후의 제y 열의 데이터는, 도 6d에서 제y 열의 데이터 블록에 도시된 바와 같이, 검사 블록을 갱신하기 위해, 채워진 후의 제y 열의 데이터 블록 F1-4, F4-5, 및 F5-3에 따라 다시 계산될 필요가 있다. 또한 도 6b에 도시된 제1 행렬의 제(y+1) 열에 어떤 데이터 블록도 없는 위치가 존재하기 때문에, 저장 디바이스(110)는 또한 제(M-1) 열로부터 하나의 데이터를 선택하여, 제(y+1) 열에서 데이터 블록이 없는 위치를 그 하나의 데이터 블록으로 채울 수 있고, 그 후 제(y+1) 열의 갱신된 데이터 블록 F1-5, F5-4, 및 F4-4에 따라 검사 블록 P6을 다시 계산하여 갱신할 수 있다.
단계 715에서, 저장 디바이스(110)는 제y 열의 데이터 블록과 검사 블록으로 이루어지는 스트라이프를, 제1 RAID를 구성하는 T개의 디스크에 기록한다.
제1 행렬의 제y 열에서 데이터 블록이 부족한 위치가 새로운 데이터 블록으로 채워지고, 제y 열의 검사 블록이 갱신된 때, 저장 디바이스(110)는 제y 열의 갱신된 데이터 블록과 검사 블록으로 이루어지는 스트라이프를, T개의 디스크에 기록할 수 있다.
도 7에 도시된 방법이 사용된 후에도 제1 행렬에 데이터 블록이 없는 위치가 여전히 존재하는 경우, 저장 기한에 도달하면, 데이터가 없는 데이터 블록은, 스트라이프가 디스크에 기록되기 전에 0으로 채워질 수 있음을 이해할 수 있을 것이다. 상세한 내용에 대해서는, 상기한 설명을 참조할 수 있으므로, 여기서는 반복 설명하지 않는다. 당업자는 데이터가 없는 데이터 블록을 0으로 채우는 것은 그 데이터 블록이 사용되지 않는다는 것을 나타내는 데 사용된다는 것을 알 수 있을 것이다.
이상의 설명으로부터, 도 7에 도시된 방법을 사용하여, 제1 행렬의 데이터 블록이 디스크에 기록될 때, 하나의 파일이 가능한 한 더 적은 디스크에 저장되는 것을 보장할 수 있고, 저장 공간을 절약할 수 있다는 것을 알 수 있을 것이다.
또 다른 상황에서, 도 2a 또는 도 2b에 기재된 방법을 사용하여 파일이 저장되는 경우, 저장 기한에 도달하고 제1 RAID가 이미 가득 찬 상태(full)이면, 제1 행렬에 있고 제1 RAID에 기록되지 않은 데이터터는 제2 RAID에 기록될 수 있다. 제1 RAID에 기록되지 않은 데이터가 제2 RAID에 기록되는 경우, 제2 RAID의 조직 형태가 제1 형태의 그것과 동일하고, 제2 행렬에서의 멤버 디스크의 수량이 제1 행렬에서의 그것과 동일하면, 예를 들어, 제1 RAID과 제2 RAID가 모두 RAID5이고, 제2 RAID에서의 멤버 디스크의 수량이 제1 RAID에서의 그것과 동일하다는 것을 이해할 수 있을 것이다. 제1 행렬에 있고 제1 RAID에 기록되지 않은 데이터는, 단계 215의 방법에 따라, 제2 RAID를 구성하는 디스크에 기록될 수 있다. 제2 RAID의 조직 형태가 제1 RAID의 그것과 상이하거나, 또는 제2 행렬에서의 멤버 디스크의 수량이 제1 행렬에서의 그것과 상이하면, 예를 들어, 제1 RAID는 RAID3이고, 제2 RAID는 RAID5이고, 나머지 데이터 블록은 전술한 파일 처리 방법에 따라 제2 RAID에 다시 기록될 필요가 있다.
도 8은 본 발명의 실시예에 따른 또 다른 파일 처리 방법의 흐름도이다. 이 방법은 독립 검사 디스크를 가지는 RAID의 조직 형태에만 적용될 수 있다. 이 방법은 또한 도 1a에 도시된 저장 디바이스(110)에 의해 실행될 수 있다. 도 8에 도시된 바와 같이, 상기 방법은 이하의 단계들을 포함할 수 있다:
단계 800에서, 저장 디바이스(110)는 제1 RAID에 저장될 F개의 파일을 수신한다.
단계 805에서, 저장 디바이스(110)는 제1 RAID의 스트립 크기에 따라 F개의 파일을 둘 이상의 데이터 블록으로 분할한다.
단계 800 및 단계 805의 관련 설명에 대해서는 도 2a에서의 단계 200 및 단계 205의 관련 설명을 참조할 수 있다.
단계 810에서, 저장 디바이스(110)는 분할에 의해 취득되는 둘 이상의 데이터 블록을, 하나의 배열에 배치한다. 이 배열에서, 하나의 파일에 속하는 두 개의 인접 블록 사이에는 (D-1) 위치의 간격이 있고, D의 값은 제1 RAID의 데이터 디스크의 수량이다.
구체적으로, 데이터 블록이 배열에 배치되는 경우, 제1 RAID의 조직 형태 및 제1 RAID에서의 데이터 디스크의 수량에 따라 둘 이상이 데이터 블록의 배치 방법이 결정될 필요가 있다. 제1 RAID의 조직 형태가 독립 검사 디스크를 가지는 RAID인 경우, 예를 들어, 제1 RAID가 RAID3 또는 RAID4인 경우, 배치된 배열에서, 하나의 파일에 속하는 두 개의 인접한 데이터 블록은 (D-1) 위치에 대해 이격될 필요가 있으며, D의 값은 제1 RAID에서의 데이터 디스크의 수량이다. 예를 들어, 도 4d를 참조하면, RAID의 조직 형태는 RAID3이다. 제1 RAID는 4개의 디스크를 포함하며, D1, D2, 및 D3은 데이터 디스크이고, D4는 독립 검사 디스크이다. 분할에 의해 취득된 데이터 블록은 도 9에 도시된 배열에 배치될 수 있다. 파일 F1의 데이터 블록 F1-1 및 F1-2는 두 위치 떨어져 있고, 파일 F2의 데이터 블록 F2-1 및 F2-2는 역시 두 위치 떨어져 있고, 등등이다.
단계 815에서, 저장 디바이스(110)는 배열 내의 D개 데이터 블록과 D개의 데이터 블록에 따라 계산에 의해 취득되는 P개의 검사 블록으로 이루어지는 스트라이프를, 제1 RAID를 구성하는 디스크에 기록하며, P의 값은 제1 RAID에서의 독립 검사 디스크의 수량이다.
구체적으로, 제1 RAID를 구성하는 디스크에 데이터 블록을 저장하는 프로세스에서, 데이터 그룹으로부터 순차 선택된 D개의 데이터에 대해, 제1 RAID의 검사 알고리즘에 따라, 검사 계산을 수행하여, P개의 검사 블록을 취득할 필요가 있다. 스트라이프는 순차로 D개의 데이터와 계산에 의해 취득된 P개의 검사 블록으로 이루어지고, 제1 RAID를 구성하는 디스크에 기록된다. 당업자는 검사 블록이 디스크에 기록되는 경우, 검사 블록은 제1 RAID의 독립 검사 디스크에 기록되어야 한다는 것을 알 수 있을 것이다. 예를 들어, 도 9에 도시된 제1 배열에서의 데이터가 디스크에 기록된 후, 도 4d에 도시되 저장 구조가 취득될 수 있다.
도 8에 도시된 파일 처리 방법을 사용함으로써, 파일들이 동시에 RAID에 기록될 수 있으므로, 파일 기록 효율을 보장하고 하나의 파일이 하나의 디스크에 저장되는 것을 보장할 수 있다. 또, 손상된 파일은 다른 파일에 따라 복원될 수 있고, 이는 파일 저장의 안전성을 보장한다.
본 발명의 본 실시예는, 전술한 도 2a, 도 2b,또는 도 8에 도시된 파일 처리 방법을 사용하여 RAID를 구성하는 디스크에 파일을 저장한 후, 그리고 아카이빙 시나리오에서, 저장된 파일은 비교적은 낮은 빈도로 액세스된다. 따라서, 에너지 절약 목적을 달성하기 위해, 디스크는 일반적으로 휴면 또는 전원오프 상태가 된다. 파일을 판독해야 하는 경우, 해당 파일은 도 10에 기재된 방법에 따라 판독될 수 있다. 이하에, 도 1a 및 도 1b를 참조하여 도 10을 설명한다. 상기 방법은 다음의 단계들을 포함한다:
단계 225에서, 저장 디바이스(110)가 호스트(100)의 액세스 요청을 수신하며, 액세스 요청은 RAID에 저장된 파일을 판독하는 데 사용되고, 액세스 요청은 액세스될 판독될 파일의 로컬 어드레스를 포함한다. 액세스 요청은 또한 액세스될 파일의 파일명을 포함할 수도 있다는 것을 이해할 수 있을 것이다.
단계 230에서, 저장 디바이스(110)가, 로컬 어드레스에 따라, 파일의 데이터 블록이 저장되어 있는 물리 어드레스를 질의한다. 일반적으로 저장 디바이스(110)가 데이터를 저장한 후, 데이터 저장을 위해 물리 어드레스와 논리 어드레스 사이의 매핑 관계에 대한 매핑 테이블이 구성된다. 파일 판독을 위한 액세스 요청을 수신한 후, 저장 디바이스(110)는 디스크에서의 데이터의 물리 어드레스를 질의하기 위해, 액세스 요청에 포함된 논리 어드레스에 따라 매핑 테이블을 검사할 수 있다. RAID에서, 매핑 테이블은 캐시(120) 내의 데이터에 대해 그리고 디스크(130) 내의 데이터에 대해 구성될 수 있다는 것을 이해할 수 있을 것이다. 물리 어드레스가 질의된 때, 일반적으로, 캐시(120)의 매핑 테이블이 먼저 질의된 다음, 디스크(130)의 매핑 테이블이 질의된다. 데이터가 캐시에 있으면, 캐시 내의 데이터가 직접 호스트에 반환된다.
단계 235에서, 저장 디바이스(110)는, 물리 어드레스에 따라, 파일을 저장하기 위한 디스크를 결정한다. 본 발명의 본 실시예에서, 전술한 실시예에서의 파일 처리 방법을 사용하여 RAID를 구성하는 디스크에 파일이 저장된 후, 하나의 파일은 하나의 디스크에 저장될 수 있다. 따라서, 이 단계에서, 저장 디바이스(110)는 물리 어드레스에 따라 파일을 저장하기 위한 하나의 디스크를 결정할 수 있다.
단계 240에서, 저장 디바이스(110)는 디스크에 저장된 파일의 데이터 블록을 호스트(100)에 반환한다. 구체적으로, 저장 디바이스(110)는, 물리 어드레스에 따라, 파일이 위치하는 디스크(130)를 깨우고, 취득된 물리 어드레스에 따라 디스크(130) 내의 데이터를 판독하고, 그 데이터를 호스트(100)에 반환할 수 있다.
본 발명의 본 실시예에서, 파일은 도 2a,도 2b,및 도 8에 도시된 방법에 따라 저장되기 때문에, 하나의 파일에 속하는 데이터는 가능한 한 더 적은 디스크에 기록된다. 따라서, 파일이 판독될 때, 파일이 저장되어 있는 하나의 디스크만 깨우면 되고, 파일의 데이터는 깨운 그 하나의 디스크로부터 판독되어 호스트에 반환되고, 전체 RAID를 구성하는 모든 디스크를 깨울 필요 없어, 명백한 에너지 절약 효과를 낳는다.
당업자는, 본 발명의 본 실시예에서, 호스트의 액세스 요청에 적절하게 응답하기 위해, 메타데이터를 저장하는 디스크, 및 캐시(120)는 항상 전원온 상태를 유지한다는 것을 이해할 수 있을 것이다. 당업자는, 메타데이터가 RAID에 저장된 데이터 및 그 데이터의 환경을 기술하는 데이터임을 알 수 있을 것이다, 예를 들어 메타데이터는 논리 어드레스와 물리 어드레스 사이의 매핑 관계를 포함할 수 있다.
디스크의 빈번한 전원온 또는 전원오프는 저장 시스템의 에너지 절약 효과에 영향을 미칠 수 있으며, 또한 디스크의 수명에 영향을 미칠 수 있다. 따라서, 디스크가 빈번히 파원 온 또는 전원오프되는 것을 회피하기 위해, 실제 애플리케이션에서 디스크는 등급이 나뉠 수 있다. 적은 수량의 고성능(high-performance) 디스크는 항상 전원온 상태를 유지하지만, 많은 수량의 대용량(high-capacity) 디스크는 에너지 절약 상태로 들어간다. 여기서 고성능 디스크는, 예를 들어 반도체 디스크(Solid State Disk, SSD)와 같은, 액세스 지연이 비교적 낮은 디스크 또는 초당 입출력 작업(Input/Output Operations Per Second, IOPS)이 비교적 대량인 디스크를 가리킨다. 대용량 디스크는 비교적 용량이 큰 디스크를 가리킨다. 저장 후, 파일 액세스 조건에 따라, 액세스 빈도가 높은 파일은 항상 전원온 상태를 유지하는 예약된 적은 수량의 고성능 디스크로 이동될 수 있으므로, 디스크가 전원온 또는 깨워지는 시간의 양을 줄일 수 있어, 응답 속도를 향상시킨다.
또한, 디스크가 빈번하게 전원온 또는 전원오프되는 것을 회피하기 위해, 본 발명의 본 실시예서의 저장 시스템은 또한 경보 메커니즘 및 보호 메커니즘을 제공할 수도 있다. RAID 내의 각 디스크가 전원온 또는 전원오프되는 누적된 시간의 양에 대한 통계가 수집된다. 이리 정해진 기간 내에서 디스크를 전원온 및 전원오프하는 시간의 양이 미리 설정된 임계값을 초과할 때, 시스템은 프롬프트 또는 경보를 제공하고, 몇몇 보호 조치를 취할 수 있다. 설정된 임계값은, 예를 들어, 10회/하루 또는 100회/달일 수 있다. 보호 조치는 설정 시간 내에 디스크에 대한 전원온 또는 전원오프 조작을 수행하지 않도록 설정될 수 있는 등이며, 이에 한정되는 것은 아니다.
도 11은 본 발명의 실시예에 따른 파일 처리 장치의 개략 구성도이다. 도 11에 도시된 바와 같이, 파일 처리 장치(1100)는 이하의 구성요소들을 포함한다:
RAID에 저장될 F개의 파일을 수신하도록 구성되어 있는 수신 모듈(102) - RAID는 T개의 저장 장치로 구성되어 있고, F는 2 이상의 자연수이고, T는 3 이상의 자연수임 -;
RAID의 스트립 크기에 따라 F개의 파일을 둘 이상의 데이터 블록으로 분할하도록 구성되어 있는 분할 모듈(1104);
상기 둘 이상의 데이터 블록에 따라 T개의 행을 가지는 제1 행렬을 취득하도록 구성되어 있는 처리 모듈(1106) - 하나의 파일에 속하는 데이터 블록들은 제1 행렬의 하나의 행에 위치함 -; 및
제1 행렬의 각 열의 데이터 블록과 그 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프를, RAID를 구성하는 T개의 저장 장치에 기록하도록 구성되어 있는 기록 모듈(1108).
구체적으로, 처리 모듈(1106)은,
분할에 의해 취득되는 둘 이상의 데이터 블록을, D개의 행을 가지는 제2 행렬에 배치하고;
제2 행렬의 각 열에 검사 블록을 각각 삽입하여 T개 행을 가지는 제1 행렬을 취득하도록, 구성되어 있고;
하나의 파일에 속하는 데이터 블록들은 제2 행렬의 하나의 행에 위치하고, D는 RAID에서의 데이터 저장 장치의 수량이며; 삽입되는 검사 블록은, 상기 제1 행렬에서 검사 블록이 위치하는 열의 데이터 블록에 따라 계산에 의해 취득된다.
일 경우에, RAID가 독립 검사 저장 장치를 포함하는 경우, 처리 모듈(1106)은 구체적으로,
RAID에서의 독립 검사 저장 장치의 위치에 따라, 제2 행렬에 검사 블록을 삽입하기 위한 위치를 결정하고;
RAID의 검사 알고리즘에 따라 제2 행렬의 각 열의 데이터 블록에 대해 검사 계산을 수행하여, 각 열의 데이터 블록의 검사 블록을 취득하고;
검사 블록의 결정된 위치에 따라 제2 행렬의 각 열에, 그 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록을 삽입하여 T개의 행을 가지는 제1 행렬을 취득하도록, 구성되어 있다.
다른 경우에, RAID가 독립 검사 저장 장치를 포함하지 않는 경우, 처리 모듈(1106)은 구체적으로,
제2 행렬의 각 열에 검사 블록을 삽입하기 위한 위치 A[x, y]를 결정하고;
제2 행렬의 제x 행에서의 제y 열 내지 제(N-1) 열의 데이터 블록을, 제x 행에서의 제(y+1) 열 내지 제N 열의 위치로 순차 이동시키고;
RAID의 검사 알고리즘에 따라 제y 열의 데이터 블록에 대해 검사 계산을 수행하여 제y 열의 데이터 블록의 검사 블록을 취득하고;
제y 열의 데이터 블록의 검사 블록을, 제2 행렬의 제y 열에서의 위치 A[x, y]에 삽입하여 T개의 행을 가지는 제1 행렬을 취득하도록, 구성되어 있고;
제2 행렬은 N개의 열을 가지고, x 및 y는 모두 정수이고, x의 값은 0에서부터 D-1까지 점차 증가하고, y의 값은 0에서부터 N-1까지 점차 증가한다.
일 경우에, 기록 모듈(1108)은 구체적으로,
제1 행렬의 제y 열의 데이터 블록과 그 제y 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프가 완전히 점유되어 있는 경우, RAID를 구성하는 T개의 저장 장치에 제y 열의 데이터 블록 및 검사 블록을 기록하도록 구성되어 있고, 제y 열은 제1 행렬의 열 중 하나이다.
다른 경우에, 기록 모듈(1108)은 구체적으로,
제1 행렬의 제y 열의 데이터 블록과 그 제y 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프가 완전히 점유되어 있지 않은 경우, 제y 열에서의 부족한 데이터 블록의 수량을 판단하고 - 상기 제y 열은 제1 행렬의 열 중 하나임 -;
판단된 수량의 데이터 블록을 제1 행렬의 제(M-1) 열 내지 제(y+1) 열로부터 선택하고 제y 열에서 데이터 블록이 없는 위치를, 그 데이터 블록으로 채우고;
채운 후의 제y 열의 데이터 블록에 따라 제y 열의 검사 블록을 갱신하고;
제y 열의 데이터 블록과 제y 열의 갱신된 검사 블록으로 이루어지는 스트라이프를, RAID를 구성하는 T개의 저장 장치에 기록하도록, 구성되어 있다.
또 다른 경우에, 기록 모듈(1108)은 구체적으로,
제1 행렬의 제y 열의 데이터 블록과 그 제y 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프가 완전히 점유되어 있지 않은 경우, 제y 열에서 데이터 블록이 없는 위치를 0(zero)으로 채우고; 0으로 채운 후의 제y 열의 데이터 블록과, 검사 블록으로 이루어지는 스트라이프를, RAID를 구성하는 저장 장치에 기록하도록, 구성되어 있고, 제y 열은 제1 행렬의 열 중 하나이다.
또한, 또 다른 경우에, 수신 모듈(1102)은, 호스트의 액세스 요청을 수신하도록 더 구성되어 있고, 액세스 요청은 RAID에 저장된 파일을 판독하는 데 사용되고, 파일의 로컬 어드레스를 포함하며;
파일 처리 장치(1100)는,
로컬 어드레스에 따라, 파일의 데이터 블록이 저장되어 있는 물리 어드레스를 질의하고; 물리 어드레스에 따라, 파일이 저장되어 있는 하나의 저장 장치를 판단하고; 저장 장치에 저장된 파일의 데이터 블록을 호스트에 반환하도록, 구성되어 있는 판독 모듈(1110)을 더 포함한다.
본 발명의 본 실시예에서 제공된 파일 처리 장치는 전술한 실시예에서 설명한 제어기에 배치될 수 있으며, 전술한 실시예에서 설명한 파일 처리 방법을 실행하도록 구성되어 있다. 각 유닛의 기능에 대한 상세한 설명에 대해서는, 방법 실시예의 설명을 참조할 수 있으므로, 세부사항은 반복 설명하지 않는다.
본 발명의 본 실시예에서 설명한 파일 처리 장치는 하나의 파일에 속하는 데이터를 하나의 디스크에 저장할 수 있다. 또, 본 발명의 본 실시예에서 설명한 파일 처리 장치는 상이한 파일의 데이터 블록을 사용하여 스트라이프를 구성하고 그 스트라이프를 디스크에 기록할 수 있다. 데이터 블록이 손상된 경우, 파일 처리 장치는 그 손상된 데이터 블록을 동일 스트라이프의 검사 블록 또는 다른 파일의 데이터 블록을 사용하여 복원될 수 있으므로, 파일 저장의 안전성을 보장할 수 있다. 또한, 파일을 판독할 때, 본 발명의 본 실시예에서 설명한 파일 처리 장치는, 파일이 저장되어 있는 오직 하나의 디스크만 깨우거나 전원온하고, 그 디스크로부터 파일의 데이터를 판독하여, 호스트에 반환하면 되고, RAID의 모든 디스크를 깨우거나 전원온할 필요가 없으므로, 더욱 우수한 에너지 절약 효과를 달성할 수 있다.
본 발명의 본 실시예는 또한, 프로그램 코드가 저장된 컴퓨터로 판독 가능한 매체를 포함하며, 프로그램 코드에 포함된 명령어는 전술한 방법 실시예 중 어느 하나에서 설명한 방법 프로세스를 실행하는 데 사용되는, 컴퓨터 프로그램 제품을 제공한다. 당업자라면, 전술한 저장 매체는 프로그램 코드를 저장할 수 있는, USB 플래시 드라이브, 탈착 가능한 하드 디스크, 자기 디스크, 광 디스크, 랜덤 액세스 메모리(Random-Access Memory, RAM) , 반도체 디스크(Solid State Disk, SSD), 또는 비휘발성 메모리(non-volatile memory) 등의, 비일시적인(non-transitory) 기계로 판독 가능한 매체를 포함할 수 있다는 것을 이해할 수 있을 것이다.
본 출원에서 제공되는 여러 실시 예에서, 개시된 장치 및 방법은 다른 방식으로 구현될 수 있다는 것을 이해하여야 한다. 예를 들어, 전술한 장치 실시예는 단지 예시일 뿐이다. 예를 들어, 모듈 분할은 단지 논리적 기능의 분할일 뿐이며 실제 구현에서는 다른 분할일 수 있다. 예를 들어, 복수의 모듈 또는 구성요소는 다른 디바이스로 조합되거나 통합될 수 있거나, 또는 몇몇 특징은 무시되거나 수행되지 않을 수 있다. 또, 표시되거나 논의된 상호 결합 또는 직접 결합 또는 통신 연결은 몇몇 통신 인터페이스를 통해 구현될 수 있다. 장치 또는 모듈 간의 간접 결합 또는 통신 연결은 전자적 형태, 기계적 형태, 또는 기타 형태로 구현될 수 있다.
개별 부품으로 설명된 모듈은 물리적으로 분리되어 있을 수도 않을 수도 있으며, 모듈로 표시된 부품은 물리적인 유닛일 수도 아닐 수도 있고, 한 장소에 위치할 수 있거나, 또는 복수의 네트워크 유닛에 분산되어 있을 수 있다. 실시예의 방안의 목적을 달성하기 위해 실제 필요에 따라 모듈의 전부 또는 일부가 선택될 수 있다.
또, 본 발명의 실시예에서의 기능 모듈은 하나의 처리 모듈로 통합될 수 있거나, 또는 각각의 모듈이 물리적으로 단독으로 존재할 수 있거나, 또는 2개 이상의 모듈이 하나의 모듈로 통합된다.
마지막으로, 유의할 것은, 전술한 실시예는 본 발명을 한정하는 것이 아니라 단지 본 발명의 기술적 방안을 설명하기 위해 의도된 것이라는 점이다. 전술한 실시예들을 참조하여 본 발명을 상세하게 설명하였지만, 당업자는, 수정 또는 교체가 대응하는 기술적 방안의 본질이 본 발명의 실시예의 기술적 방안의 범위를 벗어나도록 하지 않는 한, 여전히 전술한 실시예에서 설명한 기술적 방안을 수정하거나 그 일부 또는 모든 기술적 특징에 대해 동등물을 교체할 수 있음을 이해하여야 한다.

Claims (20)

  1. 독립 디스크의 여분 배열(Redundant Array of Independent Disks, RAID)에 저장될 F개의 파일을 수신하는 단계 - 상기 RAID는 T개의 저장 장치로 구성되어 있고, F는 2 이상의 자연수이고, T는 3 이상의 자연수임 -;
    상기 RAID의 스트립 크기(strip size)에 따라 상기 F개의 파일 각각을 하나 이상의 데이터 블록으로 분할하는 단계;
    상기 F개의 파일의 데이터 블록에 따라 T개의 행(row)을 가지는 제1 행렬을 취득하는 단계 - 여기서, 서로 다른 행에 각 파일의 모든 데이터 블록이 나타나지 않도록, F개의 파일 각각의 모든 데이터 블록들은 상기 제1 행렬의 오직 하나의 행에만 위치하고, 상기 제1 행렬의 각 열(column)은 데이터 블록 및 대응하는 열의 데이터 블록을 계산함으로써 획득되는 검사 블록을 포함하며, 각 열의 2개의 데이터 블록은 동일한 파일에 속하지 않음 -; 및
    상기 제1 행렬의 각 열의 데이터 블록과 상기 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프(stripe)를, 상기 RAID를 구성하는 T개의 저장 장치에 기록하는 단계
    를 포함하는 파일 처리 방법.
  2. 제1항에 있어서,
    상기 F개의 파일의 데이터 블록에 따라 T개의 행을 가지는 제1 행렬을 취득하는 단계는,
    상기 분할에 의해 취득되는 상기 F개의 파일의 데이터 블록을, D개의 행을 가지는 제2 행렬에 배치하는 단계 - 여기서, 상기 제2 행렬의 서로 다른 행에 각 파일의 모든 데이터 블록이 나타나지 않도록, F개의 파일 각각의 모든 데이터 블록들은 상기 제2 행렬의 오직 하나의 행에만 위치하고, D는 상기 RAID에서의 데이터 저장 장치의 수량임 -; 및
    상기 제2 행렬의 각 열에 검사 블록을 각각 삽입하여 T개 행을 가지는 상기 제1 행렬을 취득하는 단계를 포함하고,
    하나의 파일에 속하는 데이터 블록들은 상기 제2 행렬의 하나의 행에 위치하고, D는 상기 RAID에서의 데이터 저장 장치의 수량이며;
    상기 삽입되는 검사 블록은, 상기 제1 행렬에서 상기 검사 블록이 위치하는 열의 데이터 블록에 따라 계산에 의해 취득되는, 파일 처리 방법.
  3. 제2항에 있어서,
    상기 RAID가 독립 검사 저장 장치를 포함하는 경우, 상기 제2 행렬의 각 열에 검사 블록을 각각 삽입하여 T개 행을 가지는 상기 제1 행렬을 취득하는 단계는,
    상기 RAID의 독립 검사 저장 장치의 위치에 따라, 상기 제2 행렬에 검사 블록을 삽입하기 위한 위치를 결정하는 단계;
    상기 RAID의 검사 알고리즘에 따라 상기 제2 행렬의 각 열의 데이터 블록에 대해 검사 계산을 수행하여, 각 열의 데이터 블록의 검사 블록을 취득하는 단계; 및
    상기 검사 블록의 상기 결정된 위치에 따라 상기 제2 행렬의 각 열에, 상기 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록을 삽입하여, T개의 행을 가지는 상기 제1 행렬을 취득하는 단계를 포함하는, 파일 처리 방법.
  4. 제2항에 있어서,
    상기 RAID가 독립 검사 저장 장치를 포함하지 않는 경우, 상기 제2 행렬의 각 열에 검사 블록을 각각 삽입하여 T개 행을 가지는 상기 제1 행렬을 취득하는 단계는,
    상기 제2 행렬의 각 열에 검사 블록을 삽입하기 위한 위치 A[x, y]를 결정하는 단계 - 상기 제2 행렬은 N개의 열을 가지고, x 및 y는 모두 정수이고, x의 값은 0에서부터 D-1까지 점차 증가하고, y의 값은 0에서부터 N-1까지 점차 증가함 -;
    상기 제2 행렬의 제x 행에서의 제y 열 내지 제(N-1) 열의 데이터 블록을, 제x 행에서의 제(y+1) 열 내지 제N 열의 위치로 순차 이동시키는 단계;
    상기 RAID의 검사 알고리즘에 따라 제y 열의 데이터 블록에 대해 검사 계산을 수행하여 제y 열의 데이터 블록의 검사 블록을 취득하는 단계; 및
    상기 제y 열의 데이터 블록의 검사 블록을 상기 제2 행렬의 제y 열에서의 위치 A[x, y]에 삽입하여 T개의 행을 가지는 상기 제1 행렬을 취득하는 단계를 포함하는, 파일 처리 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 제1 행렬의 각 열의 데이터 블록과 상기 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프를, 상기 RAID를 구성하는 T개의 저장 장치에 기록하는 단계는,
    상기 제1 행렬의 제y 열의 데이터 블록과, 상기 제y 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프가 완전히 점유되어 있는 경우, 상기 RAID를 구성하는 T개의 저장 장치에 상기 제y 열의 데이터 블록 및 상기 검사 블록을 기록하는 단계를 포함하고, 상기 제y 열은 상기 제1 행렬의 열 중 하나인, 파일 처리 방법.
  6. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 제1 행렬이 M개의 열을 가지고, 상기 제1 행렬의 각 열의 데이터 블록과 상기 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프를, 상기 RAID를 구성하는 T개의 저장 장치에 기록하는 단계는,
    상기 제1 행렬의 제y 열의 데이터 블록과 상기 제y 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프가 완전히 점유되어 있지 않은 경우, 상기 제y 열에서의 부족한 데이터 블록의 수량을 판단하는 단계 - 상기 제y 열은 상기 제1 행렬의 열 중 하나임 -;
    상기 제y 열에서 데이터 블록이 없는 위치를, 상기 제1 행렬의 제(M-1) 열 내지 제(y+1) 열로부터 선택된 수량의 데이터 블록으로 채우는 단계;
    채운 후의 상기 제y 열의 데이터 블록에 따라 상기 제y 열의 검사 블록을 갱신하는 단계; 및
    상기 제y 열의 데이터 블록과 상기 제y 열의 갱신된 검사 블록으로 이루어지는 스트라이프를, 상기 RAID를 구성하는 T개의 저장 장치에 기록하는 단계를 포함하는, 파일 처리 방법.
  7. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 제1 행렬의 각 열의 데이터 블록과 상기 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프를, 상기 RAID를 구성하는 T개의 저장 장치에 기록하는 단계는,
    상기 제1 행렬의 제y 열의 데이터 블록과 상기 제y 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프가 완전히 점유되어 있지 않은 경우, 상기 제y 열에서 데이터 블록이 없는 위치를 0(zero)으로 채우는 단계; 및
    상기 0으로 채운 후의 상기 제y 열의 데이터 블록과 상기 검사 블록으로 이루어지는 스트라이프를, 상기 RAID를 구성하는 저장 장치에 기록하는 단계를 포함하고, 상기 제y 열은 상기 제1 행렬의 열 중 하나인, 파일 처리 방법.
  8. 제7항에 있어서,
    호스트의 액세스 요청을 수신하는 단계 - 상기 액세스 요청은, 상기 RAID에 저장된 파일을 판독하는 데 사용되고, 상기 파일의 로컬 어드레스를 포함함 -;
    상기 로컬 어드레스에 따라, 상기 파일의 데이터 블록이 저장되어 있는 물리 어드레스를 질의하는 단계;
    상기 물리 어드레스에 따라, 상기 파일이 저장되어 있는 하나의 저장 장치를 결정하는 단계; 및
    상기 저장 장치에 저장된 상기 파일의 데이터 블록을 호스트에 반환하는 단계를 더 포함하는 파일 처리 방법.
  9. 독립 디스크의 여분 배열(Redundant Array of Independent Disks, RAID)에 저장될 F개의 파일을 수신하는 단계 - F는 2 이상의 자연수임 -;
    상기 RAID의 스트립 크기에 따라, 상기 F개의 파일 각각을 하나 이상의 데이터 블록으로 분할하는 단계;
    상기 F개의 파일의 데이터 블록을 1차원 배열 내에 배치하는 단계 - 상기 배열에서, 하나의 파일에 속하는 두 개의 인접한 데이터 블록 사이에는 D-1개 위치의 간격이 있고, D의 값은 상기 RAID에서의 데이터 저장 장치의 수량이며, F는 D보다 작지 않음 -; 및
    상기 배열 내의 일련의 D개의 데이터 블록과 상기 일련의 D개의 데이터 블록에 따라 계산에 의해 취득되는 P개의 검사 블록으로 이루어지는 스트라이프를, 상기 RAID를 구성하는 저장 장치에 기록하는 단계 - P의 값은 상기 RAID에서의 독립 검사 저장 장치의 수량임 -
    를 포함하는 파일 처리 방법.
  10. 제9항에 있어서,
    호스트의 액세스 요청을 수신하는 단계 - 상기 액세스 요청은, 상기 RAID에 저장된 파일을 판독하는 데 사용되고, 상기 파일의 로컬 어드레스를 포함함 -;
    상기 로컬 어드레스에 따라, 상기 파일의 데이터 블록이 저장되어 있는 물리 어드레스를 질의하는 단계;
    상기 물리 어드레스에 따라, 상기 파일이 저장되어 있는 하나의 저장 장치를 결정하는 단계; 및
    상기 저장 장치에 저장된 상기 파일의 데이터 블록을 상기 호스트에 반환하는 단계를 더 포함하는 파일 처리 방법.
  11. 독립 디스크의 여분 배열(Redundant Array of Independent Disks, RAID)에 저장될 F개의 파일을 수신하도록 구성되어 있는 수신 모듈 - 상기 RAID는 T개의 저장 장치로 구성되어 있고, F는 2 이상의 자연수이고, T는 3 이상의 자연수임 -;
    상기 RAID의 스트립 크기에 따라 상기 F개의 파일 각각을 하나 이상의 데이터 블록으로 분할하도록 구성되어 있는 분할 모듈;
    상기 F개의 파일의 데이터 블록에 따라 T개의 행을 가지는 제1 행렬을 취득하도록 구성되어 있는 처리 모듈 - 여기서, 서로 다른 행에 각 파일의 모든 데이터 블록이 나타나지 않도록, F개의 파일 각각의 모든 데이터 블록들은 상기 제1 행렬의 오직 하나의 행에만 위치하고, 상기 제1 행렬의 각 열은 데이터 블록 및 대응하는 열의 데이터 블록을 계산함으로써 획득되는 검사 블록을 포함하며, 각 열의 2개의 데이터 블록은 동일한 파일에 속하지 않음 -; 및
    상기 제1 행렬의 각 열의 데이터 블록과 상기 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프를, 상기 RAID를 구성하는 T개의 저장 장치에 기록하도록 구성되어 있는 기록 모듈
    을 포함하는 파일 처리 장치.
  12. 제11항에 있어서,
    상기 처리 모듈은,
    분할에 의해 취득되는 상기 F개의 파일의 데이터 블록을, D개의 행을 가지는 제2 행렬에 배치하고;
    상기 제2 행렬의 각 열에 검사 블록을 각각 삽입하여 T개 행을 가지는 상기 제1 행렬을 취득하도록, 구성되어 있고;
    상기 제2 행렬의 서로 다른 행에 각 파일의 모든 데이터 블록이 나타나지 않도록, F개의 파일 각각의 모든 데이터 블록들은 상기 제2 행렬의 오직 하나의 행에만 위치하고, D는 상기 RAID에서의 데이터 저장 장치의 수량이며;
    상기 삽입되는 검사 블록은, 상기 제1 행렬에서 상기 검사 블록이 위치하는 열의 데이터 블록에 따라 계산에 의해 취득되는, 파일 처리 장치.
  13. 제12항에 있어서,
    상기 RAID가 독립 검사 저장 장치를 포함하는 경우, 상기 처리 모듈은,
    상기 RAID에서의 독립 검사 저장 장치의 위치에 따라, 상기 제2 행렬에 검사 블록을 삽입하기 위한 위치를 결정하고;
    상기 RAID의 검사 알고리즘에 따라 상기 제2 행렬의 각 열의 데이터 블록에 대해 검사 계산을 수행하여, 각 열의 데이터 블록의 검사 블록을 취득하고;
    상기 검사 블록의 결정된 위치에 따라 상기 제2 행렬의 각 열에, 상기 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록을 삽입하여 T개의 행을 가지는 상기 제1 행렬을 취득하도록, 구성되어 있는, 파일 처리 장치.
  14. 제12항에 있어서,
    상기 RAID가 독립 검사 저장 장치를 포함하지 않는 경우, 상기 처리 모듈은,
    상기 제2 행렬의 각 열에 검사 블록을 삽입하기 위한 위치 A[x, y]를 결정하고;
    상기 제2 행렬의 제x 행에서의 제y 열 내지 제(N-1) 열의 데이터 블록을, 제x 행에서의 제(y+1) 열 내지 제N 열의 위치로 순차 이동시키고;
    상기 RAID의 검사 알고리즘에 따라 제y 열의 데이터 블록에 대해 검사 계산을 수행하여 제y 열의 데이터 블록의 검사 블록을 취득하고;
    상기 제y 열의 데이터 블록의 검사 블록을 상기 제2 행렬의 제y 열에서의 위치 A[x, y]에 삽입하여 T개의 행을 가지는 상기 제1 행렬을 취득하도록, 구성되어 있고,
    상기 제2 행렬은 N개의 열을 가지고, x 및 y는 모두 정수이고, x의 값은 0에서부터 D-1까지 점차 증가하고, y의 값은 0에서부터 N-1까지 점차 증가하는, 파일 처리 장치.
  15. 제11항 내지 제14항 중 어느 한 항에 있어서,
    상기 기록 모듈은,
    상기 제1 행렬의 제y 열의 데이터 블록과 상기 제y 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프가 완전히 점유되어 있는 경우, 상기 RAID를 구성하는 T개의 저장 장치에 상기 제y 열의 데이터 블록 및 상기 검사 블록을 기록하도록 구성되어 있고, 상기 제y 열은 상기 제1 행렬의 열 중 하나인, 파일 처리 장치.
  16. 제11항 내지 제14항 중 어느 한 항에 있어서,
    상기 제1 행렬이 M개의 열을 가지고, 상기 기록 모듈은,
    상기 제1 행렬의 제y 열의 데이터 블록과 상기 제y 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프가 완전히 점유되어 있지 않은 경우, 상기 제y 열에서의 부족한 데이터 블록의 수량을 판단하고 - 상기 제y 열은 제1 행렬의 열 중 하나임 -;
    상기 제y 열에서 데이터 블록이 없는 위치를 상기 제1 행렬의 제(M-1) 열 내지 제(y+1) 열로부터 선택된 수량의 데이터 블록으로 채우고;
    채운 후의 상기 제y 열의 데이터 블록에 따라 상기 제y 열의 검사 블록을 갱신하고;
    상기 제y 열의 데이터 블록과 상기 제y 열의 갱신된 검사 블록으로 이루어지는 스트라이프를, 상기 RAID를 구성하는 T개의 저장 장치에 기록하도록, 구성되어 있는, 파일 처리 장치.
  17. 제11항 내지 제14항 중 어느 한 항에 있어서,
    상기 기록 모듈은,
    상기 제1 행렬의 제y 열의 데이터 블록과 상기 제y 열의 데이터 블록에 따라 계산에 의해 취득되는 검사 블록으로 이루어지는 스트라이프가 완전히 점유되어 있지 않은 경우, 상기 제y 열에서 데이터 블록이 없는 위치를 0(zero)으로 채우고;
    상기 0으로 채운 후의 상기 제y 열의 데이터 블록과 상기 검사 블록으로 이루어지는 스트라이프를, 상기 RAID를 구성하는 저장 장치에 기록하도록, 구성되어 있고, 상기 제y 열은 상기 제1 행렬의 열 중 하나인, 파일 처리 장치.
  18. 제17항에 있어서,
    상기 수신 모듈은 호스트의 액세스 요청을 수신하도록 더 구성되어 있고, 상기 액세스 요청은, 상기 RAID에 저장된 파일을 판독하는 데 사용되고, 상기 파일의 로컬 어드레스를 포함하며;
    상기 로컬 어드레스에 따라, 상기 파일의 데이터 블록이 저장되어 있는 물리 어드레스를 질의하고; 상기 물리 어드레스에 따라, 상기 파일이 저장되어 있는 하나의 저장 장치를 결정하고; 상기 저장 장치에 저장된 상기 파일의 데이터 블록을 호스트에 반환하도록, 구성되어 있는 판독 모듈을 더 포함하는 파일 처리 장치.
  19. 삭제
  20. 삭제
KR1020147036585A 2013-08-09 2013-08-09 파일 처리 방법 및 장치, 그리고 저장 디바이스 KR101677473B1 (ko)

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
KR20150034139A KR20150034139A (ko) 2015-04-02
KR101677473B1 true KR101677473B1 (ko) 2016-11-18

Family

ID=50455934

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147036585A KR101677473B1 (ko) 2013-08-09 2013-08-09 파일 처리 방법 및 장치, 그리고 저장 디바이스

Country Status (8)

Country Link
US (2) US9483194B2 (ko)
EP (1) EP3026546A4 (ko)
JP (1) JP6069742B2 (ko)
KR (1) KR101677473B1 (ko)
CN (1) CN103733175B (ko)
AU (1) AU2013392019B2 (ko)
CA (1) CA2881618C (ko)
WO (1) WO2015018065A1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160328184A1 (en) * 2015-05-07 2016-11-10 Dell Products L.P. Performance of storage controllers for applications with varying access patterns in information handling systems
JP6690829B2 (ja) * 2015-08-28 2020-04-28 国立大学法人 東京大学 計算機システム、省電力化方法及び計算機
CN105516548B (zh) * 2015-11-27 2019-01-11 中央电视台 一种文件预读方法及装置
EP3404527B1 (en) 2016-02-18 2023-08-30 Huawei Technologies Co., Ltd. Data updating technique
CN107168817B (zh) * 2016-03-07 2020-05-08 华为技术有限公司 应用于存储阵列的数据修复方法与装置及存储设备
CN107203559B (zh) * 2016-03-17 2021-01-01 华为技术有限公司 一种划分数据条带的方法和装置
US10019314B2 (en) 2016-04-27 2018-07-10 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
CN111679787B (zh) * 2016-04-27 2023-07-18 慧荣科技股份有限公司 闪存装置、闪存控制器及闪存存储管理方法
US10152378B2 (en) * 2016-10-04 2018-12-11 Futurewei Technologies, Inc. Data protection for a cold storage system
CN107357687A (zh) * 2017-07-21 2017-11-17 长沙曙通信息科技有限公司 一种容灾备份新型重复数据删除实现方法
CN107368391A (zh) * 2017-07-21 2017-11-21 长沙曙通信息科技有限公司 一种基于快照新型容灾备份异步远程镜像实现方法
CN107360191B (zh) * 2017-08-28 2021-02-02 腾讯科技(深圳)有限公司 一种文件获取方法、装置及存储设备
US10684915B2 (en) * 2018-07-25 2020-06-16 EMC IP Holding Company LLC Efficient packing of compressed data in storage system implementing data striping
CN111338559B (zh) * 2018-12-19 2023-11-10 深圳市茁壮网络股份有限公司 数据处理方法、用户模块、信息管理模块及系统
CN110471623B (zh) * 2019-07-31 2023-12-29 深圳市博实结科技股份有限公司 硬盘文件写入方法、装置、计算机设备和存储介质
CN111142788B (zh) * 2019-11-29 2021-10-15 浪潮电子信息产业股份有限公司 一种数据迁移方法、装置和计算机可读存储介质
CN113782025B (zh) * 2021-09-27 2024-01-09 北京声智科技有限公司 语音识别方法、装置、终端及存储介质
CN114333917B (zh) * 2021-12-30 2023-11-03 山东云海国创云计算装备产业创新中心有限公司 基于rdp纠删算法的数据纠错方法、装置、设备及介质
CN114168087B (zh) * 2022-02-11 2022-04-22 苏州浪潮智能科技有限公司 校验数据生成方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030120863A1 (en) * 2001-12-26 2003-06-26 Lee Edward K. Self-healing log-structured RAID
US20120151253A1 (en) * 2010-12-14 2012-06-14 Western Digital Technologies, Inc. System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss
US20120159067A1 (en) * 2010-12-18 2012-06-21 Allen Kelton System and method for handling io to drives in a raid system

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0701716B1 (en) * 1993-06-03 2002-08-14 Network Appliance, Inc. Method and file system for allocating blocks of files to storage space in a RAID disk system
US5878280A (en) * 1993-09-23 1999-03-02 Philips Electronics North America Corp. Data buffering system for plural data memory arrays
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
JPH11288359A (ja) * 1998-04-02 1999-10-19 Matsushita Electric Ind Co Ltd ファイル管理システムおよび方法
US6311251B1 (en) * 1998-11-23 2001-10-30 Storage Technology Corporation System for optimizing data storage in a RAID system
JPH11288387A (ja) * 1998-12-11 1999-10-19 Fujitsu Ltd ディスクキャッシュ装置
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 記憶装置および記憶装置サブシステム
US7237062B2 (en) 2004-04-02 2007-06-26 Seagate Technology Llc Storage media data structure system and method
US8521955B2 (en) * 2005-09-13 2013-08-27 Lsi Corporation Aligned data storage for network attached media streaming systems
CN101055509B (zh) * 2006-04-14 2010-05-12 中兴通讯股份有限公司 高效流媒体数据读写系统
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
US20090204758A1 (en) 2008-02-13 2009-08-13 Dell Products, Lp Systems and methods for asymmetric raid devices
CN101976175B (zh) * 2010-08-19 2011-12-14 北京同有飞骥科技股份有限公司 一种水平型分组并行集中校验的磁盘阵列的构建方法
US8327185B1 (en) 2012-03-23 2012-12-04 DSSD, Inc. Method and system for multi-dimensional raid
CN102880428B (zh) * 2012-08-20 2015-09-09 华为技术有限公司 分布式独立磁盘冗余阵列的创建方法及装置
US8554997B1 (en) * 2013-01-18 2013-10-08 DSSD, Inc. Method and system for mirrored multi-dimensional raid

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030120863A1 (en) * 2001-12-26 2003-06-26 Lee Edward K. Self-healing log-structured RAID
US20120151253A1 (en) * 2010-12-14 2012-06-14 Western Digital Technologies, Inc. System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss
US20120159067A1 (en) * 2010-12-18 2012-06-21 Allen Kelton System and method for handling io to drives in a raid system

Also Published As

Publication number Publication date
US9417806B2 (en) 2016-08-16
WO2015018065A1 (zh) 2015-02-12
JP6069742B2 (ja) 2017-02-01
EP3026546A4 (en) 2016-08-17
US9483194B2 (en) 2016-11-01
AU2013392019A1 (en) 2015-02-26
JP2015528973A (ja) 2015-10-01
US20150100729A1 (en) 2015-04-09
AU2013392019B2 (en) 2016-09-22
US20150234614A1 (en) 2015-08-20
EP3026546A1 (en) 2016-06-01
CN103733175A (zh) 2014-04-16
CN103733175B (zh) 2015-05-27
CA2881618A1 (en) 2015-02-12
CA2881618C (en) 2017-04-18
KR20150034139A (ko) 2015-04-02

Similar Documents

Publication Publication Date Title
KR101677473B1 (ko) 파일 처리 방법 및 장치, 그리고 저장 디바이스
KR101729636B1 (ko) 파일 처리 방법 및 저장 디바이스
CN111158587B (zh) 基于存储池虚拟化管理的分布式存储系统及数据读写方法
US8316202B1 (en) Networked raid in a virtualized cluster
Mao et al. POD: Performance oriented I/O deduplication for primary storage systems in the cloud
US9857994B2 (en) Storage controller, control method, and computer product
KR101525453B1 (ko) 데이터 접근빈도를 이용한 raid 시스템의 데이터 복제 방법
US20150081969A1 (en) Storage apparatus and control method thereof, and recording medium
CN114415968B (zh) 存储系统及其数据写入方法
AU2015255198B2 (en) File processing method and storage device
CN106997277B (zh) 高效利用回收的存储空间的方法及装置
PRANAY et al. Leveraging Data Deduplication to Improve the Performance of Primary Storage system in the Cloud

Legal Events

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

Payment date: 20191016

Year of fee payment: 4