KR20100120397A - 선택적 미러 방법 - Google Patents

선택적 미러 방법 Download PDF

Info

Publication number
KR20100120397A
KR20100120397A KR1020090039190A KR20090039190A KR20100120397A KR 20100120397 A KR20100120397 A KR 20100120397A KR 1020090039190 A KR1020090039190 A KR 1020090039190A KR 20090039190 A KR20090039190 A KR 20090039190A KR 20100120397 A KR20100120397 A KR 20100120397A
Authority
KR
South Korea
Prior art keywords
mirror
file
directory
direct
user
Prior art date
Application number
KR1020090039190A
Other languages
English (en)
Inventor
안용현
Original Assignee
주식회사 히타치엘지 데이터 스토리지 코리아
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 히타치엘지 데이터 스토리지 코리아 filed Critical 주식회사 히타치엘지 데이터 스토리지 코리아
Priority to KR1020090039190A priority Critical patent/KR20100120397A/ko
Priority to AT10004086T priority patent/ATE557348T1/de
Priority to EP10004086A priority patent/EP2256636B1/en
Priority to US12/767,470 priority patent/US20100287338A1/en
Priority to CN2010101743183A priority patent/CN101883135A/zh
Publication of KR20100120397A publication Critical patent/KR20100120397A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2058Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using more than 2 mirrored copies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2087Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring with a common controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2071Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
    • G06F11/2074Asynchronous techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2071Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
    • G06F11/2076Synchronous techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)

Abstract

본 발명은, 선택적 미러 방법에 관한 것으로, 예를 들어, 특정 디렉토리 또는 파일이, 저장매체에 기록되거나 독출될 때, 이를 감시하여 자동으로 복제하는 다이렉트 미러(Direct Mirror)와, 저장매체에 미리 기록되어 있는 특정 디렉토리 또는 파일이 선택될 때, 이를 감시하여 자동으로 복제하는 비동기 미러(Async Mirror)를, 상호 연동시키거나 또는 선택적으로 수행시키기 위한 선택적 미러 방법을, 엔에이에스(NAS) 시스템의 오에스(OS)의 커널 레이어(Kernel Layer) 상에서, 파일 입출력 시스템 콜(File I/O system call)의 후킹(Hooking) 동작에 의해 실행되도록 구현함으로써, NAS 시스템에서 RAID를 구성하지 않고서도, 사용자가 지정하는 디렉토리 단위 또는 파일 단위로 미러링(Mirroring)하여, 데이터 안정성과 사용자 편의성을 동시에 모두 향상시킬 수 있게 되며, 또한, 본 발명의 선택적 미러(Selective Mirror)를, 커널 레이어(Kernel Layer)에서 구현하여, RAID에 거의 준하는 성능을 얻을 수 있게 됨은 물론, 사용자의 복잡한 설정 또는 프로그램의 변경 등이 필요 없게 된다.
다이렉트 미러, 비동기 미러, 선택적 미러, NAS 시스템, OS Kernel Layer

Description

선택적 미러 방법 {Selective mirror method}
본 발명은, 예를 들어, 엔에이에스(NAS: Network Attached Storage) 시스템에서 사용되는 레이드(Redundant Array of Inexpensive Disks)를 보다 효율적으로 대체할 수 있는 선택적 미러(Selective mirror) 방법에 관한 것이다.
일반적으로, 널리 알려진 바와 같이, 엔에이에스(NAS) 시스템에서 사용되는 레이드(RAID)는, 예를 들어, 여러 개의 하드디스크들을 하나의 하드디스크처럼 사용하기 위한 것이다.
한편, 상기 레이드는, 통상적으로 고정된 크기의 하드디스크(HDD) 또는 파티션(Partition) 등의 저장장치를 기반으로 운용되기 때문에, 사용자가 자유롭게 저장장치의 크기와 레이드 방식을 변경하기 곤란하다.
예를 들어, 도 1에 도시한 바와 같이, 4 개의 하드디스크들에 대한 RAID 0, 5의 크기가 한번 설정되면, 전체 디스크들을 재 초기화하지 않는 이상은, 그 크기나 RAID 방식을 바꿀 수 없는 데, 먼저, 유연성 측면에서 볼 때, 한번 구성된 RAID 구성은, 재 초기화하기 전에는 다른 RAID 방식으로 변경할 수 없으며, 또한 최소 구성단위가 파티션이기 때문에, RAID 크기를 자유롭게 변경하기 곤란하다.
또한, 경제성 측면에서 볼 때, 도 1에 도시한 바와 같이, 4 개의 HDD를 RAID 5로 구성한 경우, 널리 알려진 RAID 5의 특성상, 전체 용량의 3/4만이 사용 가능하며, 2 개의 HDD를 RAID 1로 구성한 경우에는, 전체 용량의 1/2만이 사용 가능하기 때문에, 데이터 저장의 안정성을 위해서는 HDD 저장 용량의 감소를 감수해야 하며, RAID를 재구성을 하는 경우, 많은 시간과 경제적 비용이 발생하게 된다.
그리고, 편의성 측면에서 볼 때, 사용자는 반드시 시스템의 초기화 시에만, HDD의 RAID 영역을 설정해야 하기 때문에, 예를 들어, 시스템을 운영하던 도중 RAID 영역을 변경하기 위해서는 모든 데이터를 별도의 공간에 백업한 후 RAID 영역을 재구성하고, 이후 데이터를 다시 복사해야만 한다.
즉, 사용자는 RAID를 구성할 때 데이터 사용량과 성능, 그리고 안정성을 고려하여, RAID 영역을 목적에 맞도록 구성해야 하고 만일 예측이 틀리는 경우, 많은 시간과 경제적 비용이 소요되는 복잡한 절차를 걸쳐 RAID를 재구성해야 하기 때문에, 데이터를 백업할 별도의 저장 장치가 없는 사용자의 경우, 이와 같은 RAID 재구성이 불가능하게 된다.
따라서, 일반적으로 NAS 시스템에 사용되는 RAID는, 사용자에게 데이터 저장의 안정성 또는 저장 용량의 확장을 가능하게 하지만, 이 두 가지를 동시에 모두 만족시킬 수 없으며, 또한 시스템을 운용하던 도중, RAID 구성을 변경해야 하는 경우, 많은 시간과 경제적 비용이 소요되는 문제점이 발생하게 된다.
본 발명은, 상기와 같은 RAID의 문제점들을 근본적으로 해결할 수 있는 선택적 미러(Selective Mirror) 방법을 제공함으로써, 사용자가 언제든 디렉토리 단위 또는 파일 단위로 미러링(Mirroring)을 지정할 수 있도록 하여, 데이터 저장 성능, 용량, 안정성을 동시에 모두 만족시킬 수 있도록 하기 위한 것이다.
본 발명에 따른 선택적 미러 방법은, 특정 디렉토리 또는 파일이, 저장매체에 기록되거나 독출될 때, 이를 감시하여 자동으로 복제하는 다이렉트 미러(Direct Mirror)와, 저장매체에 미리 기록되어 있는 특정 디렉토리 또는 파일이 선택될 때, 이를 감시하여 자동으로 복제하는 비동기 미러(Async Mirror)를, 상호 연동시키거나 또는 선택적으로 수행시키는 것을 특징으로 하며,
또한, 상기 다이렉트 미러와 비동기 미러는, 엔에이에스(NAS) 시스템의 오에스(OS)의 커널 레이어(Kernel Layer) 상에서, 파일 입출력 시스템 콜(File I/O system call)의 후킹(Hooking) 동작에 의해 구현되는 것을 특징으로 하며,
또한, 상기 다이렉트 미러는, 사용자 어플리케이션에서 커널로 요청된 파일 입출력을 후킹하고, 원본 파일에 대해 입출력이 발생하는 경우, 복제된 미러 파일에 대해서도 동일하게 입출력을 수행하는 것을 특징으로 하며,
또한, 상기 비동기 미러는, 사용자가 선택적 미러를 최초로 적용하는 경우, 원본 디렉토리의 내용을 미러 디렉토리에 모두 복제하는 풀 동기 미러(Full Sync Mirror) 동작을 수행하고, 미러 동작 수행 도중 오류가 발생하면, 알람 동작을 수행함과 아울러, 복제 본을 다시 복원하며, 상기 다이렉트 미러와 연동하는 것을 특징으로 하며,
또한, 상기 저장매체는, 하드디스크, 광디스크, 유에스비 메모리, 그리고 네트워크를 통해 접속된 임의의 스토리지 중 어느 하나 이상인 것을 특징으로 한다.
본 발명에 따르면, NAS 시스템에서 RAID를 구성하지 않고서도, 사용자가 지정하는 디렉토리 단위 또는 파일 단위로 미러링(Mirroring)하여, 데이터 안정성과 사용자 편의성을 동시에 모두 향상시킬 수 있게 되며, 또한, 본 발명의 선택적 미러(Selective Mirror)는, 커널 레이어(Kernel Layer)에서 구현하여, RAID에 거의 준하는 성능을 얻을 수 있으며, 사용자의 복잡한 설정 또는 프로그램의 변경 등이 필요 없게 된다.
이하, 본 발명에 따른 선택적 미러(Selective Mirror) 방법에 대한 바람직한 실시예에 대해, 첨부된 도면을 참조하여 상세히 설명한다.
우선, 본 발명에 따른 선택적 미러 방법이 적용되는 기본 단위는, 폴 더(Folder)를 포함하는 디렉토리(Directory) 단위 또는 파일(File) 단위이며, 다수의 디렉토리들 또는 다수의 파일들에 대해서도 적용 가능하고, 하나의 원본에 대해 하나의 복사본을 유지한다.
그리고, 레이드(RAID)와 유사한 리드/라이트(Read/Write) 성능을 가지며, NAS 시스템과 같은 장비의 고장 발생시, 데이터 손실을 방지하기 위해, 데이터를 하나 이상 중복 저장하는 미러링(Mirroring) 구성을 갖는다.
예를 들어, 도 2에 도시한 바와 같이, 유저 데이터(User Data)를 하드디스크1(HDD1)의 디렉토리1(Directory)에 기록하는 경우, 임의의 다른 저장매체(예: HDD1,2,Flash, e-Sata...)에 미러1(Mirror1)로서 하나 이상 중복 기록하게 된다.
또한, 상기 미러링 구성은, 장비 운영 중에도 변경이 가능하며, 상기 미러링은, Linux Kernel Layer에서 구현되는 데, 예를 들어, 도 3에 도시한 바와 같이, 일반적인 Linux 시스템의 File I/O Stack 중 파일 시스템(File System) 레이어 상에, 레이드 코어 드라이버(RAID Core Driver)가 구현되는 반면, 본 발명의 미러링은, 예를 들어, 도 4에 도시한 바와 같이, Kernel과 사용자간의 인터페이스인 File I/O system call에서의 Hooking을 통해 구현된다.
그리고, 본 발명의 미러링은, 파일 원본에 결함이 발생한 경우, 사용자가 수동으로 복구하거나 또는 자동으로 복구할 수 있는 데, 예를 들어, 파일 원본이 정상적일 때에는, 사용자 원본 파일에 대한 라이트(Write) 접근은 하지 않으며, 자동 또는 수동 복구 여부는 사용자가 설정할 수 있도록 한다.
한편, 본 발명의 미러링은, HDD 용량 부족이나, 불량 섹터(Bad Sector), 파 일 시스템 파손(File System Crash)과 같은 오류 발생시 적절히 대응하도록 설계되는 데, 예를 들어, 미러링되는 목표 미디어(Destination Media)는, 동일한 HDD, 또는 별도의 다른 HDD, 또는 USB Storage, e-Sata, Network(예: NFS, Samba), ODD(Optical Disc Drive) 등으로, 파일 시스템(File System)에 마운트(Mount) 가능한 다양한 유형의 디바이스들이 모두 가능하다.
또한, 본 발명의 미러링, 즉 선택적 미러 방법은, 도 4를 참조로 전술한 바와 같이, 커널과 사용자 간의 인터페이스인 File I/O System Call에서의 Hooking을 통해 구현되며, 사용자 어플리케이션(User Application) 프로그램은, 다양한 System Call을 사용해 파일을 조작하게 된다.
예를 들어, open, close, read, write, rm, link, unlink, rmdir, rename 등과 같은 시스템 콜(system call) 함수들이 사용되는 데, 도 5에 도시한 바와 같이, 시스템 콜 함수 sys_open은, 파일 오픈 또는 생성에 해당하고, 시스템 콜 함수 sys_close은, 파일 클로우즈에 해당하고, 시스템 콜 함수 sys_read은, 파일로부터 데이터를 독출하는 것에 해당하고, 시스템 콜 함수 sys_write는, 데이터를 파일에 기록하는 것에 해당한다.
그리고, 시스템 콜 함수 sys_link는, 하드 링크 생성에 해당하고, 시스템 콜 함수 sys_symlink는, 시스템 링크 생성에 해당하고, 시스템 콜 함수 sys_unlink는, 파일 삭제 또는 링크 삭제에 해당하고, 시스템 콜 함수 sys_dup은, 파일 디스크립터(file descriptor) 복사에 해당하고, 시스템 콜 함수 sys_rename은, 파일 이름 변경에 해당한다.
한편, 본 발명의 선택적 미러 방법은, 기본적으로 사용자나 사용자 프로그램에 의해 발생한 File I/O를 감시하다가, 미러링(mirroring)이 수행되도록 설정되어 있으면 해당 File I/O를 복제한다.
또한, 이미 존재하는 파일 또는 디렉토리(또는 폴더)를 미러링하도록 설정하는 경우, 기존 파일들을 모두 미러링하게 되는 데, 예를 들어, 도 6은 본 발명에 따른 Selective Mirror 방법이 적용되는 최상위 블록 다이어그램을 개념적으로 도시한 것으로, 다이렉트 미러(Direct Mirror)(100)와 동기 및 비동기 미러(Sync & Async Mirror)(200)로 구분된다.
그리고, 상기 다이렉트 미러(100)는, 예를 들어, 오리지널(Original) 미디어(300)와 미러(Mirror) 미디어(400)에 해당하는 물리적 미디어(Physical Media)의 I/O 대역폭 및 신뢰도가 거의 비슷할 때 사용된다.
반면, 상기 미러 미디어(400)의 I/O 대역폭 및 신뢰성에 현저한 차이가 있는 경우, 다이렉트(Direct) 미러(100)를 사용하게 된다면, 상기 오리지널 미러(300)에 대한 성능 및 신뢰성이 저하되기 때문에, 이 경우, 상기 동기 및 비동기 미러(200)를 사용하여, 성능 및 신뢰성이 저하되지 않도록 하는 데, 예를 들어, 상기 동기 및 비동기 미러는, 간단히 비동기 미러(Async Mirror)로 지칭될 수 있으며, 이에 대응되는 각 모듈에 대해 상세히 설명하면 다음과 같다.
상기 다이렉트 미러(100)는, File I/O가 발생하는 시점에 system call의 hooking을 통해 실시간으로 I/O 복제를 수행하는 데, 이 모듈은 Kernel layer에서 구동되기 때문에, User Application에는 영향을 주지 않으며, 또한 User와 Kernel 간의 데이터 복사가 일어나지 않기 때문에 최적의 성능을 얻을 수 있다.
예를 들어, 도 7 내지 도 9는, 다이렉트 미러가 User 및 Kernel에서 구현되었을 경우와 RAID mirroring의 개념을 비교한 것으로, 다이렉트 미러는, RAID와 유사하나 데이터 저장 단위가 블록(Block)이 아니고, 어플리케이션(Application)에 전송하는 메시지(message) 단위임을 알 수 있다.
다만, 다이렉트 미러에서는, 메시지(message) 단위로 저장하더라도, Kernel 내의 low-level driver(예: scsi, sata, pata, 등)를 거치게 되면, 블록(block) 단위로 분할되어 저장되는 데, 상기 다이렉트 미러는, 어플리케이션(Application)이 제공한 메시지(message)단위로 handling하는 반면, RAID는 block 단위로 handling한다는 의미로서, 실제 HDD에 저장 시에는 block(또는 sector)단위로 저장된다.
한편, 어플리케이션에서 구현되는 다이렉트 미러와 커널에서 구현되는 다이렉트 미러를 비교해 보면 다음과 같다. 예를 들어, 도 7의 어플리케이션에서 구현되는 다이렉트 미러는, 도 8의 커널에서 구현되는 다이렉트 미러에 비해, 2 번의 메모리 복사가 더 일어나고, 그로 인해 실행 경로(execution path)가 길어져서, 잠복 기간인 latency가 더 커지기 때문에, 상당히 비효율적이며, 또한 커널에서 구현되는 다이렉트 미러와는 달리 데이터 백업정도의 기능임을 알 수 있다.
또한, 어플리케이션에서 구현되는 다이렉트 미러는, 커널에서 구현되는 다이렉트 미러와 같이, 미러 데이터의 사용자 감춤 또는 삭제 금지 등의 다양한 제어 기능을 수행하는 데 용이하지 못하다.
한편, 도 10 내지 도 16은, 커널에서 구현되는 다이렉트 미러 기능들에 대한 동작 흐름도를 도시한 것으로, 예를 들어, 도 10의 파일 오픈(File Open) 기능은, 오리지널 파일 오픈을 실행하는 경우(S10), 해당 파일이 미러 소오스 디렉토리 내의 파일이면(S11), 미러 파일을 오픈(S12)함과 아울러, 해당 파일을 검색하기 위한 포인터로서 널리 사용되는 해시(Hash)를 설정하게 된다(S13).
그리고, 도 11의 파일 클로우즈(File Close) 기능은, 오리지널 파일 크로우즈를 실행하는 경우(S20), 해시 생성 및 미러 검색을 수행하고(S21), 미러 검색이 완료되면(S22), 미러 파일을 클로우즈한 후(S23), 해시를 플러시(flush)하게 된다(S24).
또한, 도 12의 파일 기록(File Write) 기능은, 오리지널 파일 기록을 실행하는 경우(S30), 해시 생성 및 미러 검색을 수행하고(S31), 미러 검색이 완료되면(S32), 검색된 미러가 다이렉트 미러인 지를 확인하게 되는 데(S33), 다이렉트 미러가 아닌 비동기 미러이면, 그에 해당하는 기능을 실행하고(S34), 다이렉트 미러이면, 파일 포지션을 설정한 후(S35), 사용자 보충 데이터와 함께 기록하게 된다(S36).
한편, 도 13의 파일 리드(File Read) 기능은, 오리지널 파일 리드를 실행하는 일련의 동작을 수행하게 된다(S40). 그리고, 도 14의 파일 링크(File Link) 기능은, 오리지널 파일 링크를 실행하는 경우(S50), 링크 목표(destination)가 미러 소오스 디렉토리 내인지를 확인하게 되는 데(S51), 상기 링크 목표가 미러 소오스 디렉토리가 아니면서, 상기 오리지널 파일이 미러 소오스 디렉토리 내의 소오스이면(S52), 해당 미러 파일을 링크하게 된다(S53).
그리고, 도 15의 파일 언링크(File Unlink) 기능은, 오리지널 파일 언링크를 실행하는 경우(S60), 해시 생성 및 미러 검색을 수행하여(S61), 미러가 검색되면(S62), 해당 미러 파일을 언링크하게 된다(S63).
또한, 도 16의 파일 복사(File Dup/Dup2) 기능은, 오리지널 파일 복사를 실행하는 경우(S70), 해시 생성 및 미러 검색(S71)을 수행하여, 미러가 검색되면(S72), 파일 복사와 함께 해시를 생성하게 된다(S73).
한편, 상기 비동기 미러(Async Mirror)는, 예를 들어, Full Sync 실행, 또는 Direct Mirroring이 불가능한 미디어, 또는 Direct Mirroring 중 오류가 발생하는 경우에 실행되고, 상기 비동기 미러링은, Kernel Daemon으로 구현되며, Mirroring이 필요한 시점에 Sleep 상태에서 깨어나 주어진 동작을 수행한다.
예를 들어, 도 17의 비동기 미러 기능은, 구성(Configuration)을 리드(Read)하는 동작을 수행하는 경우(S80), 커맨드를 기다리게 되는 데(S81), 예를 들어, 유저 어플리케이션(S82)과 다이렉트 미러(S83)에 의해 리커버리(recovery) 커맨드가 수신되면(S84), 파손 리커버리 콜(Call Crash Recovery)을 수행하고(S85), 리커버리가 아닌 디렉토리 동기(S86)인지를 확인한 후, 디렉토리 동기가 아니면, 싱글 파일 동기를 콜하고(S87), 디렉토리 동기이면, 풀 동기를 콜하게 되며(S88), 이후 커맨드를 제거하게 된다(S89).
한편, 도 18의 싱글 파일 동기(Single File Sync) 기능은, 리드 전용 플래그(read only flag)가 있는 소오스 파일을 오픈하되(S90), 에러가 발생하면(S91), 라이트 플래그가 있는 목표 파일을 오픈하게 된다(S92).
그리고, 상기 목표 파일 오픈에 에러가 발생하거나(S93), 소오스 파일 오픈에 에러가 발생하면 에러 핸들러(Error Handler) 콜을 수행하게 되고(S94), 상기 목표 파일 오픈에 에러가 발생하지 않으면, 다른 파일(Diff. file) 콜을 수행하게 된다(S95).
한편, 상기 다른 파일 콜을 수행하여, 다른 파일이 검색되면(S96), 해당 파일을 복사한 후(S97), 소오스 파일과 목표 파일을 클로우즈하게 된다(S98).
그리고, 도 19의 풀 동기(Full Sync) 기능은, 디렉토리로부터 리스트(List) 생성을 실행하는 경우(S100), 마지막 리스트가 아니면(S101), 아이들 체크(IDLE Check)를 콜하여(S102), 비지(Busy) 상태이면, 일정시간 슬립(Sleep)하게 된다(S103).
반면, 아이들 상태이면, 싱글 파일 동기(Single File Call)를 콜한 후(S104), 에러가 발생하면, 에러 핸들러를 콜하여(S105), 회복이 가능하지 않으면, 치명적인 에러(Fatal Error)로 처리하게 된다(S106).
한편, 도 20의 다른 파일(Diff, File) 콜 기능은, 소오스 및 미러 파일의 정보를 획득하는 경우(S110), 각 파일의 모드(Mod), 타임(Time) 사이즈(Size), 허용(Permission) 등을 비교하여(S111), 동일한 정보이면(S112), True(1)로 리턴하고(S113), 동일한 정보가 아니면, False(0)으로 리턴하게 된다.
그리고, 도 21의 체크 아이들(Check Idle) 기능은, 시스템 및 구성 아이들 비율을 획득하는 경우(S120), 현재의 아이들과 구성 아이들 비율을 비교하여(S121), 현재 상태가 아이들이면(S122), True(1)로 리턴하고(S123), 아이들이 아 이면, False(0)으로 리턴하게 된다(S124).
한편, 동일한 File을 복사하는 오버헤드를 피하기 위해서 File의 복사가 필요한지 먼저 검사할 필요가 있는 데, File에 대해 미리 checksum을 구하고 저장한 후, 추후 source와 mirror file의 hash 만을 비교하는 방법이 있으나 구현이 복잡해지는 문제가 있다.
따라서, 본 발명에서는, 파일의 날짜(modification time), Permission 및 크기를 비교하여 파일의 변경 여부를 인식하도록 하는 데, Full Sync가 시작되더라도 최대한 사용자의 작업을 방해하지 않도록 한다.
예를 들어, 하나의 파일 복사가 끝난 후 System Idle 상태를 읽어 사용자가 지정한 값(Default: 30) 이상일 때에만 파일 복사를 시작한다. 즉 Async Mirror는 내장 HDD 이외에도, 네트워크 드라이브(Network), 광학적 스토리지(Optical Storage), 유에스비 스토리지(USB Storage), e-Sata external HDD 등과 같은 다양한 종류의 미디어에 대해서 Mirroring을 적용하기 위해 사용된다.
즉, 다이렉트 미러가 불가능하거나 오류가 발생한 경우, Error Handling 기능을 수행하게 되는 데, 미러링 기능은, HDD, USB, Network 등의 다양한 미디어에서 동작하기 때문에, 여러 유형의 오류가 발생할 가능성이 높으므로 정확한 error handling을 해야 한다.
예를 들어, File System crash 오류는, Write 도중 전원을 강제 Off하거나, 또는 외장 디바이스의 경우 plug를 임의로 off하게 되면 발생하는 데, 이 경우, 사용자에게 알람하거나 또는 파손 리커버리(Crash Recovery)를 실행하게 된다.
반면, Bad Sector 오류는, 저장매체가 오래되어 낡거나(Wear out), 또는 기록 도중 전원 Off하게 되면 발생하는 데, 이 경우, 사용자에게 알람하거나 또는 파손 리커버리(Crash Recovery)를 실행하게 된다.
그리고, 디스크 용량 부족 오류는, 사용자가 데이터를 Full로 기록하는 경우 발생하는 데, 이 경우, 사용자에게 알람하거나 또는 미러링을 중지하거나 임시 파일 삭제 등을 수행하게 되며, File lock 오류는, 다른 사용자 프로그램의 File이 오픈되는 경우 발생하는 데, 이 경우, 비동기 미러 기능을 수행하여 처리하게 된다.
예를 들어, 도 22의 에러 핸들러(Error Handler) 기능은, 에러 코드를 분석하여(S130), 회복 가능하면(S131), 비동기 미러 Daemon에 배열시키고(S132), 로그(Log) 동작을 수행하게 되며(S133), 회복이 불가능하면, 운영자에게 알람하게 된다(S134).
한편, 하드디스크는, 동작 중에도 Bad sector나 File System crash 등에 의해 언제든지 손상될 수 있는 데, 이러한 경우 Selective Mirroring을 적용하고 있었다면 원본 파일을 복구할 수 있다.
예를 들어, 손상된 원본 파일에 대해 복제본이 존재할 때 대응할 수 있는 방안으로서, 사용자에게 경고하는 Alarm only 방안이 있는 데, 이 Alarm only 방안은, 사용자가 해당 파일을 manual copy할 수 있도록 하고, Log, Buzzer, LED, e-mail, 관리 프로그램 등이 이용될 수 있다.
그리고, User Confirmed Recovery 방안이 있는 데, 이 방안은, 사용자가 관 리 프로그램을 통한 복구 여부 선택에 따라 해당 파일 복구할 수 있도록 하며, 관리 프로그램과의 interaction이 필요하다.
또한, 자동 Copy & Verify 방안이 있는 데, 이 방안은 해당 원본 파일의 이름을 변경하고, 복제본을 원본 디렉토리에 복사하며, 새로 생성된 원본 파일과 복제 본을 비교 검증하게 된다.
그리고, Redirect to Mirror 방안이 있는 데, 이 방안은, 해당 원본 파일의 이름 변경과 원본 디렉토리에 복제 본을 가리키는 Hard Link를 생성하며, 사용자 입장에서 가장 빠른 복구가 가능하지만 하나의 copy만 존재하는 상태이므로 안정성이 떨어질 수도 있다.
한편, Unintentional Deletion Backup 방안이 있는 데, Bad Sector, 또는 File system recovery 과정에서 사용자가 의도하지 않게 원본 파일이 삭제되는 경우, 예를 들어, 사용자의 직접적인 delete 명령이 없었는데 파일이 삭제된 경우 복제본을 지우지 않고 별도의 디렉토리(./orphan)에 복사하는 것으로, 이 작업은 Async Mirroring에서 담당하게 된다.
또한, Bad Sector Recovery 방안이 있는 데, 이 방안은 Logical Bad Sector에 대한 recovery로서, Selective Mirror와는 별도의 기능으로서 추가될 수 있다,
그리고, Renaming 방안이 있는 데, 이는 원본 파일(Org file)이 깨진 경우 파일이 위치하는 sector에 문제가 발생했을 가능성이 있으므로, 해당 파일 및 sector 영역은 추후 검사를 위해 남겨두어야 하며, 이를 위해서 해당 파일의 이름만 변경하고, 파일명 앞에 "__crashed__"라는 prefix를 추가한다.
예를 들어, 도 23의 crash recovery 기능은, crash error 발생시, 오리지널 파일이 존재하지 않으면(S140), 미러 파일이 존재하는 지를 확인하고, 미러 파일이 존재하면(S141), 미러 파일을 "./orphan" 디렉토리에 move하게 된다(S142).
반면, 오리지널 파일이 존재하면, 리커버리 옵션을 분석하게 되고(S143), 상기 옵션이 Copy & Verify 이면, 오리지널 파일의 이름에 "_crashed_"를 prefixing하여 이름을 변경하고(S145), 오리지널 디렉토리에 미러 파일을 복사하게 된다(S146).
그리고, 상기 옵션이 Redirect to Mirror이면, 오리지널 파일의 이름에 "_crashed_"를 prefixing하여 이름을 변경하고(S147), 오리지널 파일과 동일한 이름의 미러 파일 이름과 하드 링크하게 된다(S148).
한편, 선택적 미러 기능은, 시스템 시작시, 도 24의 선택적 미러 설정 파일들을 읽고, 그에 상응하는 운용 실행을 준비해야 하는 데, 예를 들어, MIRROR:RM: "/home/anyong" >"/mnt/hdd1/mirror"는, /home/anyong을 HDD1의 mirror에 복제하는 것을 나타내고, MIRROR:CV: "/home/photo" >"/mnt/hdd1/photo_mir"는, /home/photo을 HDD1의 photo_mir에 복제하는 것을 나타내고, MIRROR:CV: "/home/photo" > "/mnt/hdd2/photo_mir"는, /home/photo을 HDD2의 photo_mir에 복제(dual copy)하는 것을 나타낸다.
또한, # Configuration의 FULL_SYNC_MIN_IDLE =30과 FULL_SYNC_PERIOD=60은, System Idle이 30% 이상일 때 Full Sync 동작할 것과, Full Sync의 원본-복제 본 비교 주기(단위:분)를 나타내는 것이며, 장비 운영 중 사용자가 수동으로 또는 Web 설정 관리자에서 위 설정 파일을 변경하게 되면, 예를 들어, echo 1 > /proc/reload_sm_conf와 같은 커맨드를 통해, Selective Mirror Daemon에 설정 파일이 변경되었음을 알려야 한다.
이에 따라, 본 발명이 적용되는 NAS 시스템에서는, RAID를 구성하지 않고서도, 사용자가 지정하는 디렉토리 단위 또는 파일 단위로 미러링(Mirroring)하여, 데이터 안정성과 사용자 편의성을 동시에 모두 향상시킬 수 있게 되며, 또한, 본 발명의 선택적 미러(Selective Mirror)는, 커널 레이어(Kernel Layer)에서 구현하여, RAID에 거의 준하는 성능을 얻을 수 있으며, 사용자의 복잡한 설정 또는 프로그램의 변경 등이 필요 없게 된다.
참고로, 전술한 바와 있는 NAS 시스템과, 레이드, 그리고 미러링은, 이미 널리 알려진 공지의 기술이므로 이에 대한 구체적인 기술은 생략하였으며, 이상, 전술한 본 발명의 바람직한 실시예는, 예시의 목적을 위해 개시된 것으로, 당업자라면, 이하 첨부된 특허청구범위에 개시된 본 발명의 기술적 사상과 그 기술적 범위 내에서, 또다른 다양한 실시예들을 개량, 변경, 대체 또는 부가 등이 가능할 것이다.
도 1은 일반적인 레이드(RAID)에 대한 실시예를 도시한 것이고,
도 2는 본 발명에 따른 선택적 미러 방법에 대한 실시예를 도시한 것이고,
도 3은 일반적인 레이드가 적용되는 계층적 구조를 도시한 것이고,
도 4는 본 발명에 따른 선택적 미러 방법이 적용되는 계층적 구조를 도시한 것이고,
도 5는 본 발명에 따른 선택적 미러 방법에 사용되는 파일 입출력 시스템 콜에 대한 실시예를 도시한 것이고,
도 6은 본 발명에 따른 선택적 미러 방법의 개념적 블록도를 도시한 것이고,
도 7 내지 도 9는 본 발명에 따른 선택적 미러 방법을 비교 설명하기 위해 도시한 블록도이고,
도 10 내지 도 16은 본 발명에 따른 다이렉트 미러에 대한 실시예를 도시한 것이고,
도 17 내지 도 23은 본 발명에 따른 비동기 미러에 대한 실시예를 도시한 것이고,
도 24는 본 발명에 따른 선택적 미러 설정 파일들을 도시한 것이다.
※ 도면의 주요부분에 대한 부호의 설명
100 : 다이렉트 미러 200 : 동기 및 비동기 미러
300 : 오리지널 미디어 400 : 미러 미디어

Claims (5)

  1. 특정 디렉토리 또는 파일이, 저장매체에 기록되거나 독출될 때, 이를 감시하여 자동으로 복제하는 다이렉트 미러(Direct Mirror)와,
    저장매체에 미리 기록되어 있는 특정 디렉토리 또는 파일이 선택될 때, 이를 감시하여 자동으로 복제하는 비동기 미러(Async Mirror)를, 상호 연동시키거나 또는 선택적으로 수행시키는 것을 특징으로 하는 선택적 미러 방법.
  2. 제 1항에 있어서,
    상기 다이렉트 미러와 비동기 미러는, 엔에이에스(NAS) 시스템의 오에스(OS)의 커널 레이어(Kernel Layer) 상에서, 파일 입출력 시스템 콜(File I/O system call)의 후킹(Hooking) 동작에 의해 구현되는 것을 특징으로 하는 선택적 미러 방법.
  3. 제 1항에 있어서,
    상기 다이렉트 미러는, 사용자 어플리케이션에서 커널로 요청된 파일 입출력을 후킹하고, 원본 파일에 대해 입출력이 발생하는 경우, 복제된 미러 파일에 대해서도 동일하게 입출력을 수행하는 것을 특징으로 하는 선택적 미러 방법.
  4. 제 1항에 있어서,
    상기 비동기 미러는, 사용자가 선택적 미러를 최초로 적용하는 경우, 원본 디렉토리의 내용을 미러 디렉토리에 모두 복제하는 풀 동기 미러(Full Sync Mirror) 동작을 수행하고, 미러 동작 수행 도중 오류가 발생하면, 알람 동작을 수행함과 아울러, 복제 본을 다시 복원하며, 상기 다이렉트 미러와 연동하는 것을 특징으로 하는 선택적 미러 방법.
  5. 제 1항에 있어서,
    상기 저장매체는, 하드디스크, 광디스크, 유에스비 메모리, 그리고 네트워크를 통해 접속된 임의의 스토리지 중 어느 하나 이상인 것을 특징으로 하는 선택적 미러 방법.
KR1020090039190A 2009-05-06 2009-05-06 선택적 미러 방법 KR20100120397A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020090039190A KR20100120397A (ko) 2009-05-06 2009-05-06 선택적 미러 방법
AT10004086T ATE557348T1 (de) 2009-05-06 2010-04-16 Selektives spiegelungsverfahren
EP10004086A EP2256636B1 (en) 2009-05-06 2010-04-16 Selective mirroring method
US12/767,470 US20100287338A1 (en) 2009-05-06 2010-04-26 Selective mirroring method
CN2010101743183A CN101883135A (zh) 2009-05-06 2010-05-06 选择性镜像方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090039190A KR20100120397A (ko) 2009-05-06 2009-05-06 선택적 미러 방법

Publications (1)

Publication Number Publication Date
KR20100120397A true KR20100120397A (ko) 2010-11-16

Family

ID=42735232

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090039190A KR20100120397A (ko) 2009-05-06 2009-05-06 선택적 미러 방법

Country Status (5)

Country Link
US (1) US20100287338A1 (ko)
EP (1) EP2256636B1 (ko)
KR (1) KR20100120397A (ko)
CN (1) CN101883135A (ko)
AT (1) ATE557348T1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8621271B2 (en) * 2010-08-26 2013-12-31 Cleversafe, Inc. Reprovisioning a memory device into a dispersed storage network memory
US9916371B1 (en) * 2010-12-30 2018-03-13 EMC IP Holding Company LLC Methods computer readable media, and systems for copying data between mirrored systems
US8701001B2 (en) * 2011-01-28 2014-04-15 International Business Machines Corporation Screen capture
US8850261B2 (en) 2011-06-01 2014-09-30 Microsoft Corporation Replaying jobs at a secondary location of a service
US10585766B2 (en) 2011-06-06 2020-03-10 Microsoft Technology Licensing, Llc Automatic configuration of a recovery service
US11030125B2 (en) 2013-02-05 2021-06-08 International Business Machines Corporation Point in time copy operations from source volumes to space efficient target volumes in two stages via a non-volatile storage
CN107015995B (zh) * 2016-01-28 2021-01-05 华为技术有限公司 一种镜像文件的修改方法和装置
US11016862B2 (en) 2017-05-23 2021-05-25 International Business Machines Corporation Error-initiated mirror redrive to collect diagnostic information
US10783041B2 (en) * 2017-09-22 2020-09-22 Mcafee, Llc Backup and recovery of data files using hard links
US10990675B2 (en) 2019-06-04 2021-04-27 Datto, Inc. Methods and systems for detecting a ransomware attack using entropy analysis and file update patterns
CN118170500A (zh) * 2024-05-13 2024-06-11 中国人民解放军军事科学院战争研究院 一种容器镜像构建与动态注入的方法及系统

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5799141A (en) * 1995-06-09 1998-08-25 Qualix Group, Inc. Real-time data protection system and method
US6125403A (en) * 1996-05-01 2000-09-26 Sun Microsystems, Inc. Method for implementing a non-volatile caching product for networks and CD-ROMS
US5893919A (en) * 1996-09-27 1999-04-13 Storage Computer Corporation Apparatus and method for storing data with selectable data protection using mirroring and selectable parity inhibition
US6324654B1 (en) * 1998-03-30 2001-11-27 Legato Systems, Inc. Computer network remote data mirroring system
US6779003B1 (en) * 1999-12-16 2004-08-17 Livevault Corporation Systems and methods for backing up data files
US6779094B2 (en) * 2000-06-19 2004-08-17 Storage Technology Corporation Apparatus and method for instant copy of data by writing new data to an additional physical storage area
US6795895B2 (en) * 2001-03-07 2004-09-21 Canopy Group Dual axis RAID systems for enhanced bandwidth and reliability
US6799189B2 (en) * 2001-11-15 2004-09-28 Bmc Software, Inc. System and method for creating a series of online snapshots for recovery purposes
US20040133629A1 (en) * 2002-02-01 2004-07-08 Brian Reynolds Methods, systems and devices for automated web publishing and distribution
US20070234105A1 (en) * 2006-03-31 2007-10-04 Quinn Brett A Failover to asynchronous backup site in connection with triangular asynchronous replication
US7627729B2 (en) * 2006-09-07 2009-12-01 International Business Machines Corporation Apparatus, system, and method for an improved synchronous mirror swap
CN101364163B (zh) * 2007-08-07 2010-07-21 英业达股份有限公司 一种逻辑卷创建系统及其方法
US7818500B2 (en) * 2007-11-01 2010-10-19 Pubali Ray Apparatus and method for using one core for RAID control in multi-core CPU
US8055943B2 (en) * 2009-04-24 2011-11-08 International Business Machines Corporation Synchronous and asynchronous continuous data protection

Also Published As

Publication number Publication date
US20100287338A1 (en) 2010-11-11
EP2256636A1 (en) 2010-12-01
ATE557348T1 (de) 2012-05-15
EP2256636B1 (en) 2012-05-09
CN101883135A (zh) 2010-11-10

Similar Documents

Publication Publication Date Title
KR20100120397A (ko) 선택적 미러 방법
US9460106B2 (en) Data synchronization among file storages using stub files
JP4800031B2 (ja) ストレージシステム及びスナップショット管理方法
KR101442370B1 (ko) 다수 캐스케이드식 백업 프로세스
US8209292B2 (en) Hierarchical management storage system and storage system operating method
KR101150127B1 (ko) 데이터 보호 시스템에서 데이터를 보호하기 위한 아카이브루틴을 생성하는 방법, 시스템 및 장치
US9880759B2 (en) Metadata for data storage array
US8296264B1 (en) Method and system for file-level continuous data protection
US7975171B2 (en) Automated file recovery based on subsystem error detection results
US7383465B1 (en) Undoable volume using write logging
US20110197279A1 (en) Management methods of storage system and file system
US20080320258A1 (en) Snapshot reset method and apparatus
JP2006244484A (ja) ファイルシステムを用いて、ファイルを世代ファイルとして自動バックアップするシステムおよび方法
JP2005031716A (ja) データバックアップの方法及び装置
US7216210B2 (en) Data I/O system using a plurality of mirror volumes
US20070033361A1 (en) Apparatus, system, and method for fastcopy target creation
JP2006059347A (ja) ジャーナリングを使用した記憶システム
TWI374386B (en) Method, system, and computer program product for clearing metadata tracks in a storage system
US10255291B1 (en) Replication of volumes using partial volume split
JP2014142852A (ja) ストレージシステムおよび制御装置
JP4937863B2 (ja) 計算機システム、管理計算機及びデータ管理方法
WO2017097233A1 (zh) 一种数据存储负载的容错方法及iptv系统
KR100244838B1 (ko) 백업 장치
JP5159777B2 (ja) 情報及びメタデータを管理し記憶する装置及び方法
US8892830B2 (en) Changing ownership of cartridges

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid