KR102116702B1 - 데이터 미러링 제어 장치 및 방법 - Google Patents

데이터 미러링 제어 장치 및 방법 Download PDF

Info

Publication number
KR102116702B1
KR102116702B1 KR1020130115579A KR20130115579A KR102116702B1 KR 102116702 B1 KR102116702 B1 KR 102116702B1 KR 1020130115579 A KR1020130115579 A KR 1020130115579A KR 20130115579 A KR20130115579 A KR 20130115579A KR 102116702 B1 KR102116702 B1 KR 102116702B1
Authority
KR
South Korea
Prior art keywords
data
storage device
write
command
host
Prior art date
Application number
KR1020130115579A
Other languages
English (en)
Other versions
KR20150035250A (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 삼성전자 주식회사
Priority to KR1020130115579A priority Critical patent/KR102116702B1/ko
Priority to US14/451,834 priority patent/US9983824B2/en
Priority to JP2014194063A priority patent/JP6690891B2/ja
Priority to EP14186369.6A priority patent/EP2854034B1/en
Priority to CN201410509938.6A priority patent/CN104516793B/zh
Publication of KR20150035250A publication Critical patent/KR20150035250A/ko
Priority to US15/952,866 priority patent/US10152272B2/en
Application granted granted Critical
Publication of KR102116702B1 publication Critical patent/KR102116702B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/825Indexing scheme relating to error detection, to error correction, and to monitoring the problem or solution involving locking

Abstract

데이터 미러링 제어 장치 및 방법에 관한 것으로, 호스트로부터 쓰기 요청된 데이터에 대한 메모리 잠금(lock)을 설정을 통해 미러링이 적용되는 복수의 스토리지 장치 중 일부의 고장으로 인한 데이터 손실을 방지할 수 있다.

Description

데이터 미러링 제어 장치 및 방법{APPARATUS AND METHOD FOR DATA MIRRORING CONTROL}
데이터 미러링(mirroring) 기술과 관련된다.
수십 년 동안 대표적인 저장장치로 사용되어온 HDD(hard disk drive)는 일정 속도로 회전하는 디스크의 헤드(head)를 통해 읽기/쓰기 연산을 수행하는 기계적인 장치로, 용량대비 가격이 상대적으로 저렴하다는 장점이 있다.그러나, HDD의 읽기/쓰기 성능은 디스크의 회전 속도에 의존적이기 때문에 반도체 기반 저장 장치에 비해 읽기/쓰기 성능, 특히 임의(random) 읽기/쓰기 성능이 제한적이다. 또한, HDD는 반도체 기반 저장 장치에 비해 고장의 확률이 높으며, 저장장치의 고장은 사용자 데이터 손실을 야기할 수 있기 때문에 치명적이다.
이러한 HDD의 성능(performance)과 안정성(reliability)의 한계를 극복하기 위하여, 여러 HDD 장치를 연결하여 HDD 어레이(Array)를 구성하고 읽기/쓰기 연산을 적절히 분배하는 RAID (Redundant Array of Independent Disks) 기술이 폭넓게 활용되어 왔다. RAID 기술은 여러 HDD 장치들 사이의 데이터 배열정책에 따라 몇 가지 세부기술로 분류되는데 대표적인 기술은 RAID 0 (striping), RAID 1 (mirroring), RAID 5 (striping with distributed parity) 및 RAID 10 (mirroring and striping) 등이 있다. 이중에서 미러링(mirroring) 기술은 두 개 이상의 HDD에 동일한 데이터를 저장함으로써 한 HDD가 고장이 났을 경우에도 데이터 손실을 방지하고, 고장나지 않은 HDD를 통해 데이터 서비스를 지속할 수 있게 하는 기술이다.
한편, HDD와 호환 가능하면서 HDD보다 성능과 안정성(reliability)이 우수한 SSD(Solid State Drive)의 활용이 계속 증가되고 있다. SSD는 HDD와 달리 내부에 기계적인 장치가 없어 HDD보다 고장율이 낮고, 읽기/쓰기 성능, 특히 임의(random) 읽기/쓰기 성능이 HDD보다 우수하다. 비록 SSD가 성능과 안정성 측면에서 HDD보다 우수하지만, 추가적인 성능 향상 목적 또는 SSD의 고장에 의한 데이터 손실 방지를 위한 목적으로 SSD 어레이(Array)를 구성하여 RAID 기술을 적용하는 것이 가능하다.
데이터 미러링 제어 장치 및 방법을 제공하는 것을 목적으로 한다.
일 양상에 따른 데이터 미러링 제어 장치는 호스트로부터 쓰기 요청된 데이터에 대한 쓰기 명령을 미러링이 적용된 복수의 스토리지 장치로 전송하는 명령 분배부 및 호스트 메모리에 저장된 데이터 중 상기 호스트로부터 쓰기 요청된 데이터에 대하여 메모리 잠금(lock)을 설정하고, 상기 메모리 잠금 설정된 데이터가 상기 복수의 스토리지 장치에서 쓰기 완료된 경우, 쓰기 완료된 데이터에 대한 메모리 잠금을 해제하는 메모리 잠금 설정부를 포함할 수 있다.
일 양상에 따르면, 상기 명령 분배부는 상기 쓰기 요청된 데이터가 상기 복수의 스토리지 장치 중 하나에서 쓰기 완료된 경우, 해당 데이터에 대한 쓰기 완료 메시지를 상기 호스트로 전송할 수 있다.
일 양상에 따르면, 상기 데이터 미러링 제어 장치는 상기 복수의 스토리지 장치 중 하나에서 쓰기 완료된 데이터에 대한 쓰기 정보에 기초하여 해당 데이터에 대한 쓰기 명령이 전달되지 않은 스토리지 장치로 트림 명령을 전송하는 트림 명령 전송부를 더 포함할 수 있다.
일 양상에 따르면, 상기 명령 분배부는 상기 메모리 잠금 설정된 데이터에 대한 쓰기 명령을 전송받지 못한 스토리지 장치로 상기 메모리 잠금 설정된 데이터에 대한 쓰기 명령을 전송할 수 있다.
다른 양상에 따른 데이터 미러링 제어 장치는 미러링이 적용된 복수의 스토리지 장치 중 적어도 하나의 스토리지 장치를 빠른 스토리지 장치로 설정하는 빠른 스토리지 장치 설정부, 호스트로부터 쓰기 요청된 데이터에 대한 쓰기 명령을 상기 빠른 스토리지 장치로 전송하는 명령 분배부 및 호스트 메모리에 저장된 데이터 중 상기 호스트로부터 쓰기 요청된 데이터에 대하여 메모리 잠금(lock)을 설정하고, 상기 메모리 잠금 설정된 데이터가 상기 복수의 스토리지 장치에서 스기 완료된 경우, 쓰기 완료된 데이터에 대한 메모리 잠금을 해제하는 메모리 잠금 설정부를 포함할 수 있다.
일 양상에 따르면, 상기 빠른 스토리지 장치 설정부는 상기 쓰기 명령에 대한 쓰기 완료 속도에 기초하여 상기 빠른 스토리지 장치를 설정할 수 있다.
일 양상에 따르면, 상기 명령 분배부는 상기 쓰기 요청된 데이터가 상기 빠른 스토리지 장치에서 쓰기 완료된 경우, 해당 데이터에 대한 쓰기 완료 메시지를 상기 호스트로 전송할 수 있다.
일 양상에 따르면, 상기 빠른 스토리지 장치 설정부는 주기적 또는 비주기적으로 상기 빠른 스토리지 장치를 변경할 수 있다.
일 양상에 따르면, 상기 명령 분배부는 상기 빠른 스토리지 장치가 변경된 경우, 상기 메모리 잠금 설정된 데이터에 대한 쓰기 명령을 변경된 빠른 스토리지 장치로 전송할 수 있다.
일 양상에 따르면, 상기 명령 분배부는 상기 빠른 스토리지 장치의 변경이 필요한 경우, 상기 메모리 잠금 설정된 데이터에 대한 쓰기 명령을 빠른 스토리지 장치로 변경될 스토리지 장치에 전송하고, 상기 빠른 스토리지 장치 설정부는 상기 빠른 스토리지 장치로 변경될 스토리지 장치에서 상기 메모리 잠금 설정된 데이터에 대한 쓰기가 완료된 경우, 상기 빠른 스토리지 장치를 변경할 수 있다.
일 양상에 따르면, 상기 명령 분배부는 상기 빠른 스토리지 장치가 고장난 경우, 상기 메모리 잠금 설정된 데이터에 대한 쓰기 명령을 고장나지 않은 다른 스토리지 장치로 전송할 수 있다.
일 양상에 따르면, 상기 명령 분배부는 상기 호스트에 장애가 발생한 경우, 상기 복수의 스토리지 장치에 저장된 데이터의 일치 여부를 판단하고, 일치하지 않는 경우, 상기 빠른 스토리지 장치에 저장된 데이터에 기초하여 다른 스토리지 장치로 쓰기 명령을 전송할 수 있다.
일 양상에 따르면, 상기 복수의 스토리지 장치는 적어도 하나의 HDD(Hard Disk Drive)를 포함하고, 상기 명령 분배부는 상기 HDD가 빠른 스토리지 장치로 설정된 경우, 상기 호스트로부터 임의 쓰기 요청된 데이터에 대한 쓰기 명령을 순차 쓰기 명령으로 변환하여 상기 HDD로 전송할 수 있다.
일 양상에 따른 데이터 미러링 제어 방법은 호스트로부터 쓰기 요청된 데이터에 대한 쓰기 명령을 미러링이 적용된 복수의 스토리지 장치로 전송하는 단계, 호스트 메모리에 저장된 데이터 중 상기 호스트로부터 쓰기 요청된 데이터에 대하여 메모리 잠금(lock)을 설정하는 단계 및 상기 메모리 잠금 설정된 데이터가 상기 복수의 스토리지 장치에서 쓰기 완료된 경우, 쓰기 완료된 데이터에 대한 메모리 잠금을 해제하는 단계를 포함할 수 있다.
일 양상에 따르면 상기 데이터 미러링 제어 방법은 상기 쓰기 요청된 데이터가 상기 복수의 스토리지 장치 중 하나에서 쓰기 완료된 경우, 해당 데이터에 대한 쓰기 완료 메시지를 상기 호스트로 전송하는 단계를 더 포함할 수 있다.
일 양상에 따르면 상기 데이터 미러링 제어 방법은 상기 복수의 스토리지 장치 중 하나에서 쓰기 완료된 데이터에 대한 쓰기 정보에 기초하여 해당 데이터에 대한 쓰기 명령이 전달되지 않은 스토리지 장치로 트림 명령을 전송하는 단계를 더 포함할 수 있다.
일 양상에 따르면 상기 전송하는 단계는 상기 메모리 잠금 설정된 데이터에 대한 쓰기 명령을 전송받지 못한 스토리지 장치로 상기 메모리 잠금 설정된 데이터에 대한 쓰기 명령을 전송할 수 있다.
일 양상에 따른 상기 데이터 미러링 제어 방법은 미러링이 적용된 복수의 스토리지 장치 중 적어도 하나를 빠른 스토리지 장치로 설정하는 단계, 호스트로부터 쓰기 요청된 데이터에 대한 쓰기 명령을 상기 빠른 스토리지 장치로 전송하는 단계, 호스트 메모리에 저장된 데이터 중 상기 호스트로부터 쓰기 요청된 데이터에 대하여 메모리 잠금(lock)을 설정하는 단계 및 상기 메모리 잠금 설정된 데이터가 상기 복수의 스토리지 장치에서 쓰기 완료된 경우, 쓰기 완료된 데이터에 대한 메모리 잠금을 해제하는 단계를 포함할 수 있다.
일 양상에 따르면, 빠른 스토리지 장치로 설정하는 단계는 상기 쓰기 명령에 대한 쓰기 완료 속도에 기초하여 상기 빠른 스토리지 장치를 설정할 수 있다.
일 양상에 따르면 상기 데이터 미러링 제어 방법은 상기 쓰기 요청된 데이터가 상기 빠른 스토리지 장치에서 쓰기 완료된 경우, 해당 데이터에 대한 쓰기 완료 메시지를 상기 호스트로 전송하는 단계를 더 포함할 수 있다.
일 양상에 따르면 상기 빠른 스토리지 장치는 주기적 또는 비주기적으로 변경될 수 있다.
일 양상에 따르면 상기 데이터 미러링 제어 방법은 상기 빠른 스토리지 장치가 변경된 경우, 상기 메모리 잠금 설정된 데이터에 대한 쓰기 명령을 변경된 빠른 스토리지 장치로 전송하는 단계를 더 포함할 수 있다.
일 양상에 따르면 상기 데이터 미러링 제어 방법은 상기 빠른 스토리지 장치의 변경이 필요한 경우, 상기 메모리 잠금 설정된 데이터에 대한 쓰기 명령을 빠른 스토리지 장치로 변경될 스토리지 장치에 전송하는 단계 및 상기 빠른 스토리지 장치로 변경될 스토리지 장치에서 상기 메모리 잠금 설정된 데이터에 대한 쓰기가 완료된 경우, 상기 빠른 스토리지 장치를 변경하는 단계를 더 포함할 수 있다.
일 양상에 따르면 상기 데이터 미러링 제어 방법은 상기 빠른 스토리지 장치가 고장난 경우, 상기 메모리 잠금 설정된 데이터에 대한 쓰기 명령을 고장나지 않은 다른 스토리지 장치로 전송하는 단계를 더 포함할 수 있다.
일 양상에 따르면 상기 데이터 미러링 제어 방법은 상기 호스트에 장애가 발생한 경우, 상기 복수의 스토리지 장치에 저장된 데이터의 일치 여부를 판단하는 단계 및 상기 복수의 스토리지 장치에 저장된 데이터가 일치하지 않는 경우, 상기 빠른 스토리지 장치에 저장된 데이터에 기초하여 다른 스토리지 장치로 쓰기 명령을 전송하는 단계를 더 포함할 수 있다.
일 양상에 따르면 상기 복수의 스토리지 장치는 적어도 하나의 HDD(Hard Disk Drive)를 포함하고, 상기 쓰기 명령을 상기 빠른 스토리지 장치로 전송하는 단계는 상기 HDD가 빠른 스토리지 장치로 설정된 경우, 상기 호스트로부터 임의 쓰기 요청된 데이터에 대한 쓰기 명령을 순차 쓰기 명령으로 변환하여 상기 HDD로 전송할 수 있다.
일 양상에 따른 데이터 미러링 제어 장치는 호스트로부터 쓰기 요청된 데이터에 대한 쓰기 명령을 미러링이 적용된 복수의 스토리지 장치로 전송하고, 상기 쓰기 요청된 데이터가 상기 복수의 스토리지 장치 중 하나에서 쓰기 완료된 경우, 해당 데이터에 대한 쓰기 완료 메시지를 상기 호스트로 전송하는 명령 분배부 및 상기 복수의 스토리지 장치 중 하나에서 쓰기 완료된 데이터에 대한 쓰기 정보에 기초하여 해당 데이터에 대한 쓰기 명령이 전달되지 않은 스토리지 장치로 트림 명령을 전송하는 트림 명령 전송부를 포함할 수 있다.
일 양상에 따르면, 상기 미러링이 적용된 복수의 스토리지 장치 중 적어도 하나를 빠른 스토리지 장치로 설정하고 주기적 또는 비주기적으로 상기 빠른 스토리지 장치를 변경하는 빠른 스토리지 장치 설정부를 더 포함하고, 상기 명령 분배부는 상기 빠른 스토리지 장치로 상기 호스트로부터 쓰기 요청된 데이터에 대한 쓰기 명령을 전송할 수 있다.
일 양상에 따르면, 상기 트림 명령 전송부는 상기 빠른 스토리지 장치가 변경된 경우, 변경되기 전의 빠른 스토리지 장치에서 쓰기 완료된 데이터에 대한 쓰기 정보에 기초하여, 빠른 스토리지 장치로 변경된 스토리지 장치로 트림 명령을 전송할 수 있다.
일 양상에 따르면, 상기 데이터 미러링 제어 장치는 상기 빠른 스토리지 장치가 변경된 경우, 빠른 스토리지 장치가 아닌 것으로 변경된 스토리지 장치로 가비지 컬렉션 명령을 전송하는 가비지 컬렉션 명령 전송부를 더 포함할 수 있다.
호스트로부터 쓰기 요청된 데이터가 미러링이 적용되는 모든 스토리지 장치에서 쓰기 완료되기 전까지 호스트 메모리 상에 저장될 수 있도록 하여 복수의 스토리지 장치 중 일부의 고장으로 인한 데이터 손실을 방지할 수 있다.
또한, 미러링이 적용되는 복수의 스토리지 장치 중 하나의 스토리지 장치에서 쓰기 완료된 경우, 즉시 쓰기 완료 메시지를 전송하도록 하여, 쓰기 성능을 향상시킬 수 있다.
나아가, 적절한 시기에 트림 명령과 가비지 컬렉션이 실행될 수 있도록 하여 SSD의 성능과 수명을 향상시킬 수 있다.
도 1은 일 실시예에 따른 데이터 미러링이 적용된 스토리지 시스템의 구성도,
도 2는 일 실시예에 따른 데이터 미러링 제어 장치의 구성도,
도 3a 내지 도 3c는 메모리 잠금이 적용되지 않는 경우, 데이터 손실을 설명하기 위한 예시도이다.
도 4a 및 도 4b는 메모리 잠금 설정 및 쓰기 완료 메시지 전달을 설명하기 위한 예시도,
도 5a 및 도 5b는 쓰기 명령이 논-블로킹 방식으로 전달되는 경우, 메모리 잠금 설정 및 쓰기 완료 메시지 전달을 설명하기 위한 예시도,
도 6a 및 도 6b는 트림 명령 전달을 설명하기 위한 예시도,
도 7a 내지 도 7c는 빠른 스토리지 장치를 설명하기 위한 예시도,
도 8은 호스트에 장애가 발생한 경우, 데이터 복구를 설명하기 위한 예시도,
도 9는 복수의 스토리지 장치가 SSD 및 HDD를 포함하는 경우, 데이터 미러링 제어를 설명하기 위한 예시도,
도 10은 일 실시예에 따른, 메모리 잠금 설정과정을 나타내는 순서도,
도 11은 일 실시예에 따른 쓰기 명령 전송 및 쓰기 완료 메시지 전송과정을 나타내는 순서도,
도 12는 다른 실시예에 따른 쓰기 명령 전송 및 쓰기 완료 메시지 전송과정을 나타내는 순서도,
도 13은 일 실시예에 따른 빠른 스토리지 장치를 변경하는 과정을 나타내는 순서도,
도 14는 다른 실시예에 따른 빠른 스토리지 장치를 변경하는 과정을 나타내는 순서도,
도 15는 또 다른 실시예에 따른 빠른 스토리지 장치 변경 과정을 나타내는 순서도,
도 16은 일 실시예에 따른 빠른 스토리지 장치에 고장이 발생한 경우, 데이터 복구과정을 나타내는 순서도,
도 17은 일 실시예에 따른 호스트에 장애가 발생한 경우, 데이터 복구과정을 나타내는 순서도이다.
이하, 첨부된 도면을 참조하여 실시예를 상세히 기술하기로 한다.
도 1은 일 실시예에 따른 데이터 미러링이 적용된 스토리지 시스템의 구성도이다.
도 1을 참조하면, 데이터 미러링이 적용된 스토리지 시스템은 데이터 미러링 제어 장치(110), 호스트(120) 및 복수의 스토리지 장치(130)를 포함할 수 있다.
복수의 스토리지 장치(130)는 하나의 스토리지 장치에 고장이 발생하였을 때 데이터가 손실되는 것을 방지하기 위하여 데이터 미러링을 통해 동일한 데이터를 중복적으로 저장하게 된다.
일 실시예에 따르면, 복수의 스토리지 장치(130)는 SSD(Solid State Drive) 어레이로 구성될 수 있다. 다만, 이에 한정되는 것은 아니며, 하나 이상의 SSD 및 HDD(Hard Disk Drive)로 구성될 수 있다.
호스트(120)는 호스트 메모리에 저장되어 있는 데이터에 대한 쓰기 요청을 데이터 미러링 장치(110)로 전송할 수 있다. 이때, 호스트(120)는 블록킹(blocking) 방식 또는 논 블록킹(non-blocking) 방식으로 쓰기 요청을 데이터 미러링 제어 장치(110)로 전송할 수 있다. 구체적으로, 논 블록킹 방식의 경우, 호스트(120)는 이전에 쓰기 요청한 데이터에 대해 쓰기 완료 메시지가 수신되었는지 여부와 무관하게 다른 데이터에 대한 쓰기 요청을 데이터 미러링 제어 장치(110)로 전송할 수 있다. 반면, 블록킹 방식의 경우, 호스트(120)는 이전에 쓰기 요청한 데이터에 대해 쓰기 완료 메시지가 수신되기 전까지 다른 데이터에 대한 쓰기 요청을 하지 않는다.
데이터 미러링 제어 장치(110)는 호스트 메모리에 저장된 데이터 중 호스트(120)로부터 쓰기 요청된 데이터에 대한 메모리 잠금(memory lock)을 설정할 수 있다.
또한, 데이터 미러링 제어 장치(110)는 메모리 잠금 설정된 데이터가 미러링이 적용된 모든 스토리지 장치(130)에서 쓰기 완료된 경우, 쓰기 완료된 데이터에 대한 메모리 잠금을 해제할 수 있다.
이러한 메모리 잠금을 통하여 호스트 메모리의 특정 주소에 저장된 데이터 중 호스트(120)로부터 쓰기 요청된 데이터가 복수의 스토리지 장치(130)에서 쓰기 완료되기 전까지 호스트 메로리에서 삭제 또는 변경되지 않도록 할 수 있다.
일 실시예에 따르면, 데이터 미러링 제어 장치(110)는 호스트(120)로부터 쓰기 요청된 데이터에 대한 쓰기 명령을 복수의 스토리지 장치(130)로 전송할 수 있다.
이때, 쓰기 명령은 블록킹(blocking) 방식 또는 논 블록킹(non-blocking) 방식으로 상기 복수의 스토리지 장치 각각으로 전송될 수 있다. 구체적으로, 블록킹 방식의 경우, 데이터 미러링 제어 장치(110)는 스토리지 장치에서 데이터 쓰기가 진행 중인 경우, 쓰기가 완료되기 전까지 다른 데이터에 대한 쓰기 명령을 전송하지 않는다.
반면, 논 블록킹 방식의 경우, 데이터 미러링 제어 장치(110)는 스토리지 장치에서 데이터 쓰기가 진행 중인지 여부와 무관하게 다른 데이터 쓰기 명령을 각각의 스토리지 장치로 전송할 수 있다. 이때, 각각의 스토리지 장치는 전송받은 쓰기 명령을 명령 큐에 저장하고, 현재 쓰기 진행 중인 데이터에 대한 쓰기를 완료한 이후, 명령 큐에 저장된 쓰기 명령을 실행함으로써 다른 데이터에 대한 쓰기를 수행할 수 있다.
한편, 데이터 미러링 제어장치(110)는 호스트(120)로부터 쓰기 요청된 데이터에 대하여 복수의 스토리지 장치(130) 중 하나에서 쓰기 완료된 경우, 해당 데이터에 대한 쓰기 완료 메시지를 호스트로 전송할 수 있다.
다른 실시예에 따르면, 데이터 미러링 제어 장치(110)는 호스트(120)로부터 쓰기 요청된 데이터에 대한 쓰기 명령을 복수의 스토리지 장치(130) 중 빠른 스토리지 장치로 설정된 스토리지 장치로 전송할 수 있다. 구체적으로, 데이터 미러링 제어 장치(110)는 복수의 스토리지 장치(130) 각각으로 쓰기 명령을 전송한 후, 복수의 스토리지 장치 중 하나에서 해당 쓰기 명령의 실행이 완료된 경우, 호스트(120)로 쓰기 완료 메시지를 전송할 수 있다.
다른 실시예에 따르면, 데이터 미러링 제어 장치(110)는 복수의 스토리지 장치(130) 중 빠른 스토리지 장치로 쓰기 명령을 전송하고, 빠른 스토리지 장치에서 해당 쓰기 명령의 실행이 완료된 경우, 호스트(120)로 쓰기 완료 메시지를 전송할 수 있다.
한편, 데이터 미러링 제어 장치(110)는 호스트(120)와 분리된 별도의 장치로 구현될 수 있으나, 반드시 이에 한정되는 것은 아니며, 호스트(120)의 일 구성으로 포함될 수 있다.
도 2는 일 실시예에 따른 데이터 미러링 제어 장치의 구성도이다.
도 2를 참조하면, 메모리 잠금 설정부(112)는 호스트 메모리에 저장된 데이터 중 호스트(120)로부터 쓰기 요청된 데이터에 대하여 메모리 잠금(memory lock)을 설정할 수 있다.
또한, 메모리 잠금 설정부(112)는 메모리 잠금 설정된 데이터가 복수의 스토리지 장치(130) 모두에서 쓰기 완료된 경우, 해당 데이터에 대한 메모리 잠금을 해제할 수 있다.
다시 말하면, 호스트(120)로부터 쓰기 요청된 데이터에 대해 설정된 메모리 잠금은 어느 하나의 스토리지 장치에 쓰기가 완료되었는지 여부와 무관하게 복수의 스토리지 장치(130) 모두에서 쓰기 완료되었을 때 해제된다.
일 실시예에 따르면, 명령 분배부(111)는 호스트(120)로부터 데이터 쓰기 요청이 수신된 경우, 복수의 스토리지 장치(130) 각각으로 쓰기 요청된 데이터에 대한 쓰기 명령을 전송할 수 있다.
이때, 명령 분배부(111)는 복수의 스토리지 장치(130) 중 하나에서 해당 쓰기 명령의 실행이 완료된 경우, 호스트(120)로 쓰기 완료 메시지를 전송할 수 있다.
다른 실시예에 따르면, 명령 분배부(111)는 호스트(120)로부터 쓰기 요청된 데이터에 대한 쓰기 명령을 복수의 스토리지 장치(130) 중 빠른 스토리지 장치로 설정된 스토리지 장치로 전송할 수 있다.
이때, 명령 분배부(111)는 빠른 스토리지 장치에서 데이터 쓰기가 완료된 경우, 해당 데이터에 대한 쓰기 완료 메시지를 호스트(120)로 전송할 수 있다.
빠른 스토리지 장치 설정부(113)는 복수의 스토리지 장치(130) 중 적어도 하나의 스토리지 장치를 빠른 스토리지 장치로 설정할 수 있다. 이때, 빠른 스토리지 장치는 복수의 스토리지 장치(130) 중 가장 최신의 데이터를 저장하고 있는 스토리지 장치를 의미할 수 있다.
일 실시예에 따르면, 빠른 스토리지 장치 설정부(113)는 복수의 스토리지 장치 중에서 쓰기 명령에 대한 쓰기 완료 속도에 기초하여 빠른 스토리지 장치를 설정할 수 있다.
구체적으로, 빠른 스토리지 장치 설정부(113)는 복수의 스토리지 장치 중에서 동일한 데이터에 대한 쓰기 완료 속도가 가장 빠른 스토리지 장치를 빠른 스토리지 장치로 설정할 수 있다.
또한, 빠른 스토리지 장치 설정부(113)는 동일한 데이터에 대하여 가장 먼저 쓰기 완료한 스토리지 장치가 빠른 스토리지 장치가 아닌 경우, 해당 스토리지 장치를 빠른 스토리지 장치로 변경할 수 있다.
다른 실시예에 따르면, 빠른 스토리지 장치 설정부(113)는 복수의 스토리지 장치(130) 중에서 임의의 스토리지 장치를 빠른 스토리지 장치로 설정한 후, 주기적 또는 비주기적으로 빠른 스토리지 장치를 변경할 수 있다.
예를 들어, 빠른 스토리지 장치 설정부(113)는 복수의 스토리지 장치(130) 각각으로부터 쓰기 가속 인자(WAF: Write Acceleration Factor) 값을 주기적으로 전달받아 쓰기 가속 인자 값이 가장 높은 스토리지 장치를 빠른 스토리지 장치로 선정할 수 있다.
또 다른 예로, 빠른 스토리지 장치 설정부(113)는 빠른 스토리지 장치에서 쓰기 지연이 발생하는 경우, 빠른 스토리지 장치를 변경할 수 있다.
또 다른 예로, 빠른 스토리지 장치 설정부(113)는 빠른 스토리지 장치에서 쓰기 명령 실행으로 자유 블록(free block)의 양이 일정량 이하로 줄어든 경우, 빠른 스토리지 장치를 변경할 수 있다.
한편, 일 실시예에 따르면, 빠른 스토리지 장치는 복수의 스토리지 장치(130) 각각에 저장된 빠른 스토리지 장치 지시자를 이용하여 설정될 수 있다. 구체적으로, 빠른 스토리지 설정부(113)는 복수의 스토리지 장치(130) 각각에 저장되어 있는 빠른 스토리지 장치 지시자의 값을 1 또는 0으로 설정하여 빠른 스토리지 장치를 설정 또는 변경할 수 있다.
한편, 일 실시예에 따르면, 명령 분배부(111)는 빠른 스토리지 장치에 고장이 발생한 경우, 메모리 잠금이 설정된 데이터에 대한 쓰기 명령을 고장나지 않은 다른 스토리지 장치로 전송할 수 있다.
특정 데이터에 대하여 메모리 잠금이 설정되어 있다는 것은 적어도 하나의 스토리지 장치에서 해당데이터에 대한 쓰기가 완료되지 않았음을 의미한다. 따라서, 빠른 스토리지 장치에 고장이 발생하더라도 메모리 잠금 설정된 데이터에 대한 쓰기 명령을 다른 스토리지 장치로 전달함으로써 빠른 스토리지 장치 고장으로 인한 데이터 손실을 방지할 수 있다.
일 실시예에 따르면, 명령 분배부(111)는 호스트(120)에 고장이 발생한 경우, 복수의 스토리지 장치에 저장된 데이터를 일치시키기 위한 과정을 수행할 수 있다.
구체적으로, 명령 분배부(111)는 호스트(120)가 예상치 못한 고장 발생으로 재부팅된 경우, 빠른 스토리지 장치와 다른 스토리지 장치에 저장된 데이터를 비교하여 일치 여부를 판단할 수 있다.
이때, 일치하지 않는 데이터가 존재하는 경우, 빠른 스토리지 장치에 저장된 데이터에 기초하여 다른 스토리지 장치로 덮어쓰기 명령을 전송하여 복수의 스토리지 장치(130)에 저장된 데이터를 일치시킬 수 있다.
트림 명령 전송부(114)는 복수의 스토리지 장치(130) 중 하나의 스토리지 장치에서 쓰기 완료된 데이터에 대한 쓰기 정보에 기초하여 해당 데이터에 대한 쓰기 명령이 전달되지 않은 스토리지 장치로 트림 명령을 전송할 수 있다.
구체적으로, SSD의 구성요소인 NAND 플래시는 in-place 업데이트가 불가능하므로, 어느 위치에서 쓰기 연산을 수행하기 위해서는 그 위치를 포함하는 블록 전체를 지우는 삭제 연산이 선행되어야 한다. 이때, 삭제를 실행하는 블록에서 더 이상 사용하지 않는 무효 데이터(invalid data)는 지워버리고 유효 데이터는 다른 블록에 옮겨 쓰게 된다.
따라서, 복수의 스토리지 장치(130) 중 하나의 스토리지 장치에서 데이터 쓰기가 완료된 경우, 트림 명령을 통해 해당 데이터에 대한 쓰기 명령이 전달되지 않은 스토리지 장치로 무효 데이터 영역을 알려줌으로써 성능 향상과 마모절감의 효과를 얻을 수 있다.
가비지 컬렉션 명령 전송부(115)는 빠른 스토리지 장치로 설정되었던 스토리지 장치가 느린 스토리지 장치로 변경된 경우, 느린 스토리지 장치로 변경된 스토리지 장치로 가비지 컬렉션 명령을 전송할 수 있다.
구체적으로, 호스트(120)로부터 쓰기 요청된 데이터에 대한 쓰기 명령이 빠른 스토리지 장치에만 전송되는 경우, 느린 스토리지 장치로 변경된 스토리지 장치에는 쓰기 명령이 전달되지 않게 된다. 따라서, 느린 스토리지 장치로 변경된 스토리지 장치에서 가비지 컬렉션이 수행되도록 하여 미리 여분 공간을 확보함으로써, 다음에 다시 빠른 스토리지 장치로 설정되었을 때 쓰기 성능을 향상 시킬 수 있다.
한편, 여기서 느린 스토리지 장치는 빠른 스토리지 장치로 설정되지 않은 스토리지 장치일 수 있다.
도 3a 내지 도 3c는 메모리 잠금이 적용되지 않는 경우, 데이터 손실을 설명하기 위한 예시도이다.
도 3a는 호스트에서 쓰기 요청된 데이터가 미러링이 적용되는 모든 스토리지 장치에서 쓰기 완료된 경우, 쓰기 완료메시지를 전달하는 경우의 예이다. 도시된 예에서, SSD 1 및 SSD 2에서 호스트로부터 쓰기 요청된 데이터에 대한 쓰기가 완료된 시점에 호스트로 쓰기 완료 메시지가 전달된다.
구체적으로, 데이터 1에 대한 쓰기 완료 메시지는 쓰기 완료 속도가 느린 SSD 2에서 쓰기가 완료된 시점에 호스트로 전달된다. 마찬가지로, 데이터 2에 대한 쓰기 완료 메시지는 쓰기 완료 속도가 느린 SSD 2에서 쓰기 완료된 시점에 호스트로 전달된다.
한편, 호스트는 블록킹 방식으로 데이터 쓰기 요청을 SSD 1 및 SSD 2로 전달한다. 구체적으로, 호스트는 쓰기 요청한 데이터에 대한 쓰기 완료 메시지가 수신된 경우, 다른 데이터에 대한 쓰기 요청을 SSD 1 및 SSD 2로 전달한다.
도시된 예에서, 호스트는 SSD 2에서 데이터 1에 대한 쓰기가 완료된 이후에 데이터 2에 대한 쓰기 요청을 SSD 1 및 SSD 2에 전달하게 된다. 이 경우, SSD 1이 데이터 1에 대한 쓰기 완료 후에 고장나더라도, SSD 2에서 데이터 1에 대한 쓰기가 완료되기 전까지는 호스트로 데이터 1에 대한 쓰기 완료 메시지가 전달되지 않으므로, 호스트 메모리에서 데이터 1은 삭제 또는 변경되지 않는다. 따라서, SSD 2로 데이터 2에 대한 쓰기 명령이 전달될 수 있으므로, 데이터 2의 손실은 발생하지 않는다.
그러나, SSD 1에서 쓰기를 일찍 완료한 경우라도, SSD 2에서 쓰기 완료되기 전까지 다음 데이터에 대한 쓰기 요청이 전달되지 않으므로, 전체 스토리지 장치의 쓰기 완료 속도가 늦어지게 된다.
도 3b는 미러링이 적용되는 복수의 스토리지 장치 중 하나에서 쓰기 완료된 경우, 즉시 호스트로 쓰기 완료 메시지를 전달하는 경우의 예이다.
도 3b의 경우, 쓰기 완료 메시지는 도 3a의 경우와 달리 SSD 1 및 SSD 2 중 하나에서 쓰기가 완료된 경우, 즉시 호스트로 전달된다. 또한, 쓰기 완료 메시지를 전달받은 호스트는 다른 데이터에 대한 쓰기 요청을 전달한다(블록킹 방식).
구체적으로, 호스트로부터 쓰기 요청된 데이터 1, 2, 3에 대하여 SSD 1이 SSD 2보다 쓰기 완료 속도가 빠르므로, 데이터 1, 2 및 3 각각에 대한 쓰기 완료메시지는 SSD 1에서 쓰기가 완료된 시점에 호스트로 전달된다.
한편, 데이터 1에 대한 쓰기 완료 메시지를 전달받은 호스트는 데이터 2에 대해 쓰기 요청을 하게 되며, 데이터 2에 대한 쓰기 명령이 SSD 1으로 전달된다. 또한, 데이터 2에 대한 쓰기 완료 메시지를 전달받은 호스트는 데이터 3에 대해 쓰기 요청을 하게 되며, 데이터 3에 대한 쓰기 명령이 SSD 1으로 전달된다.
이 경우, 도 3a의 경우와 비교하여 전체 스토리지 장치의 쓰기 완료 속도는 빨라지게 된다. 그러나, SSD 2에서 데이터 2 및 3에 대한 쓰기 명령이 전달되기 전에 SSD 1이 고장난 경우, 데이터 2 및 3의 손실이 발생할 수 있다.
구체적으로, 호스트가 이미 데이터 1, 2 및 3에 대해 쓰기 완료 메시지를 전달받은 경우, 호스트 메모리에 저장된 데이터 2 및 3은 삭제 또는 변경될 수 있다. 따라서, 도시된 예와 같이 SSD 1이 데이터 3에 대한 쓰기를 완료한 시점에 고장난 경우, 호스트 메모리 상에 데이터 2 및 3이 유지되어 있지 않다면, 아직 데이터 2 및 3에 대한 쓰기 명령을 전달받지 못한 SSD 2는 데이터 2 및 3에 대한 쓰기 명령을 전달받을 수 없다. 따라서, 이 경우, 데이터 2 및 3에 대한 손실이 발생할 수 있다.
도 3c는 쓰기 요청이 논 블록킹 방식으로 전달되는 경우의 예시도이다.
도 3c를 참조하면, 호스트는 쓰기 완료 메시지를 받기 전에 다른 데이터에 대해 쓰기 요청할 수 있다. 도시된 예와 같이, 호스트는 쓰기 요청 한 데이터 1에 대한 쓰기 완료 메시지를 전달받기 전에 각각의 SSD의 명령 큐 길에 만큼 다른 데이터의 쓰기를 요청할 수 있다.
SSD 1 및 SSD 2는 호스트로부터 쓰기 요청된 데이터에 대한 쓰기 명령을 명령 큐에 저장하여, 쓰기를 수행할 수 있다. 또한, SSD 1 및 SSD 2 중 하나에서 쓰기가 완료된 경우, 쓰기 완료 메시지를 호스트로 전달할 수 있다.
이 경우에도, 명령 큐 길이(queue depth) 이상의 쓰기에 대해서는 데이터 손실의 위험이 존재한다. 도 3c에서 SSD 1과 SSD 2의 명령 큐 길이가 4라고 가정하면, SSD 1에서 데이터 1에 대한 쓰기가 완료된 경우, 데이터 1에 대한 쓰기 완료 메시지가 호스트로 전달되고 데이터 5에 대한 쓰기 명령이 SSD 1의 명령 큐로 전달된다. 또한, SSD 1에서 데이터 2에 대한 쓰기가 완료된 경우, 데이터 2에 대한 쓰기 완료 메시지가 전달되고 데이터 6에 대한 쓰기 명령이 SSD 1의 명령 큐로 전달된다.
그러나, SSD 1에서 데이터 6의 쓰기가 완료된 시점에 SSD 2이 데이터 1에 대한 쓰기를 진행 중이며, SSD 2의 명령 큐 길이가 4이므로, 데이터 5 및 6에 대한 쓰기 명령은 SSD 2로 전달될 수 없다.
따라서, SSD 1이 데이터 5 및 6에 대한 쓰기 완료한 이후 고장난 경우, 호스트 메모리 상에 데이터 5 및 6이 유지되지 않는다면, SSD 2로 데이터 5 및 6에 대한 쓰기 명령이 전달될 수 없다. 따라서, 이 경우, 데이터 5 및 6에 대한 손실이 발생할 수 있다.
도 4a 및 도 4b는 메모리 잠금 설정 및 쓰기 완료 메시지 전달을 설명하기 위한 예시도이다.
도시된 예에서는 설명의 편의를 위해 미러링이 적용되는 복수의 스토리지 장치가 두 개의 SSD로 구성되는 것으로 가정한다. 다만, 이에 한정되는 것은 아니며, 미러링이 적용되는 복수의 스토리지 장치는 두 개 이상의 SSD로 구성되거나 하나 이상의 SSD 및 하나 이상의 HDD로 구성될 수 있다.
도 4a를 참조하면, 데이터 미러링 제어 장치(110)는 호스트(120)로부터 데이터 쓰기 요청이 전달된 경우, 호스트 메모리에 저장된 데이터 중 쓰기 요청 받은 데이터에 대한 메모리 잠금을 설정할 수 있다.
예를 들어, 도 4a에서, 호스트(120)로부터 데이터 1에 대한 쓰기 요청을 받은 경우, 데이터 미러링 제어 장치(110)는 호스트 메모리에 저장된 데이터 1에 대한 메모리 잠금을 설정할 수 있다. 마찬가지로, 데이터 2 내지 4 각각에 대해서도 호스트(120)로부터 쓰기 요청을 받은 시점에 메모리 잠금을 설정할 수 있다.
메모리 잠금 설정된 데이터는 SSD 1 및 SSD 2에서 쓰기가 완료된 시점에 잠금 해제된다. 도시된 예에서, SSD 2의 데이터 쓰기 완료 속도가 SSD 1보다 느리므로, 데이터 미러링 제어 장치(110)는 SSD 2에서 데이터 1의 쓰기가 완료된 이후, 데이터 1에 대한 메모리 잠금을 해제할 수 있다. 또한, 데이터 2 내지 4 각각에 대한 메모리 잠금은 SSD 2에서 데이터 2 내지 4 각각에 대한 쓰기가 완료된 이후 해제될 수 있다.
한편, 데이터 미러링 제어 장치(110)는 SSD 1 및 SSD 2 중 하나에서 데이터 쓰기가 완료된 경우, 즉시 쓰기 완료된 데이터에 대한 쓰기 완료 메시지를 호스트(120)로 전송할 수 있다. 도시된 예에서, SSD 1이 SSD 2보다 데이터 1 내지 4에 대한 쓰기 완료 속도가 빠르므로, 데이터 미러링 제어 장치(110)는 SSD 1에서 데이터 1에 대한 쓰기가 완료된 시점에 호스트(120)로 데이터 1에 대한 쓰기 완료 메시지를 전달한다. 마찬가지로, 데이터 2 내지 4 각각에 대한 쓰기 완료 메시지는 SSD 1에서 쓰기가 완료된 시점에 호스트(120)로 전달된다.
한편, 호스트(120)는 이전에 쓰기 요청한 데이터에 대한 쓰기 완료 메시지를 전달받기 전까지 다른 데이터에 대한 쓰기 요청을 전달하지 않는다(blocking 방식). 구체적으로, 호스트(120)는 데이터 미러링 제어 장치(110)로부터 데이터 1에 대한 쓰기 완료 메시지를 수신한 이후에 데이터 2에 대한 쓰기 요청을 데이터 미러링 제어 장치(110)로 전달한다. 마찬가지로, 데이터 3에 대한 쓰기 요청은 데이터 2에 대한 쓰기 완료 메시지를 전달받은 이후에 전달되며, 데이터 4에 대한 쓰기 요청은 데이터 3에 대한 쓰기 완료 메시지를 전달받은 이후에 전달된다.
한편, 데이터 미러링 제어 장치(110)는 호스트(120)로부터 쓰기 요청된 데이터에 대한 쓰기 명령을 SSD 1 및 SSD 2으로 전달한다. 구체적으로, 데이터 미러링 제어 장치(110)는 이전에 전달된 쓰기 명령이 완료되기 전까지 다음 데이터에 대한 쓰기 명령을 전달하지 않는다(blocking 방식). 도시된 예에서, SSD 1에서 데이터 1에 대한 쓰기가 완료된 이후 데이터 2에 대한 쓰기 명령이 SSD 1으로 전달된다. 마찬가지로, SSD 2에서 데이터 1에 대한 쓰기가 완료된 이후, 데이터 2에 대한 쓰기 명령이 전달된다.
도 4b를 참조하면, SSD 2에 데이터 2 내지 4에 대한 쓰기 명령이 전달되지 전에 SSD 1에 고장이 발생한 것으로 가정한다.
이 경우, 데이터 2 내지 4에 대해 설정된 메모리 잠금은 SSD 2에서 데이터 2 내지 4에 대한 쓰기가 완료되지 전까지는 해제되지 않으므로, 데이터 미러링 제어 장치(110)는 호스트 메모리에 저장된 2 내지 4에 대한 쓰기 명령을 SSD 2로 전달할 수 있다. 따라서, 도 3b의 경우와 달리 SSD 1의 고장으로 인한 데이터 손실을 막을 수 있다.
다시 말해, 두 SSD 가 모두 쓰기 명령을 완료하기 전까지 쓰기 진행 중인 데이터에 대해서 메모리 잠금을 유지하여 먼저 쓰기 명령을 처리한 SSD가 고장 나더라도 데이터 손실을 방지할 수 있다.
또한, 두 SSD 중 하나의 SSD에서 쓰기가 완료되면, 즉시 쓰기 완료 메시지를 호스트(120)로 전달하여 다음 데이터에 대한 쓰기가 진행될 수 있도록 함으로써, 전체 스토리지 장치의 쓰기 완료 속도를 향상시킬 수 있다.
도 5a 및 도 5b는 쓰기 명령이 논-블록킹(non-blocking) 방식으로 전달되는 경우, 메모리 잠금 설정 및 쓰기 완료 메시지 전달을 설명하기 위한 예시도이다.
도 5a를 참조하면, 호스트(120)는 이전에 쓰기 요청한 데이터에 대한 쓰기 완료 메시지가 전달되었는지 여부와 무관하게 다른 데이터에 대한 쓰기 요청을 데이터 미러링 제어 장치(110)로 전달할 수 있다.
또한, 데이터 미러링 제어 장치(110)는 SSD 1 및 SSD 2에서 데이터 쓰기 진행 중인지 여부와 무관하게 호스트로부터 쓰기 요청된 데이터에 대한 쓰기 명령을 SSD 1 및 SSD 2 각각으로 전달할 수 있다.
구체적으로, 호스트(120)로부터 쓰기 요청된 데이터에 대한 쓰기 명령은 SSD 1 및 SSD 2의 명령 큐에 저장된다. 또한, SSD 1 및 SSD 2 각각은 명령 큐에 저장된 쓰기 명령을 이용하여 데이터 쓰기를 수행할 수 있다.
이때, 일 실시예에 따르면, SSD 1과 SSD 2로의 쓰기 명령 전송은 각각의 SSD의 명령 큐 길이를 고려하여 전송될 수 있다.
도시된 예에서 SSD 1과 SSD 2의 명령 큐의 길이는 4이며, 데이터 1 내지 4에 대한 쓰기 명령이 SSD 1과 SSD 2의 명령 큐에 우선적으로 전송된다. 이후, SSD 1에서 데이터 1에 대한 쓰기 명령이 완료된 경우, 데이터 5에 대한 쓰기 명령이 SSD 1의 명령 큐에 전달되며, 데이터 2에 대한 쓰기 명령이 완료된 후에 데이터 6에 대한 쓰기 명령이 SSD 1의 명령 큐에 전달된다.
마찬가지로, SSD 2에서 데이터 1에 대한 쓰기 명령이 완료된 경우, 데이터 5에 대한 쓰기 명령이 SSD 2의 명령 큐에 전달되며, 데이터 2에 대한 쓰기 명령이 완료된 후에 데이터 6에 대한 쓰기 명령이 SSD 2의 명령 큐에 전달된다.
한편, 호스트 메모리에 저장된 데이터 1 내지 6은 호스트(120)로부터 쓰기 요청이 전달되는 시점에 메모리 잠금이 설정되며, SSD 1 및 SSD 2에서 쓰기가 완료된 시점에 메모리 잠금이 해제된다.
또한, 데이터 미러링 제어 장치(110)는 호스트(120)로부터 쓰기 요청된 데이터에 대하여 SSD 1 및 SSD 2 중 하나에서 쓰기가 완료된 경우, 쓰기 완료된 데이터에 대한 쓰기 완료 메시지를 호스트(120)로 전송할 수 있다.
구체적으로, 도시된 예에서, 데이터 미러링 제어 장치(110)는 SSD 1에서 데이터 1 내지 6 각각에 대한 쓰기가 완료된 시점에 각각의 데이터에 대한 쓰기 완료 메시지를 호스트(120)로 전송할 수 있다.
반면, 데이터 1 내지 6에 대한 메모리 잠금은 모든 스토리지 장치에서 쓰기가 완료된 시점 즉, SSD 2에서 쓰기가 완료된 시점에 각각 해제된다.
도 5b를 참조하면, SSD 2의 명령 큐에 데이터 5 및 6에 대한 쓰기 명령이 전달되기 전에 SSD 1에서 고장이 발생하였다.
이 경우, 호스트 메모리에 저장된 데이터 5 및 6에 대한 메모리 잠금은 SSD 2에서 쓰기 완료될 때까지 해제되지 않으므로, 데이터 미러링 제어 장치(110)는 메모리 잠금 설정된 데이터 5 및 6에 대한 쓰기 명령을 SSD 2로 전달하여, SSD 2에서 데이터 5 및 6에 대한 쓰기가 수행되도록 할 수 있다.
따라서, 도 3c의 경우와 달리, SSD 1에 고장이 발생하더라도, 데이터 5 및 6은 호스트 메모리에 메모리 잠금 설정되어 있으므로, 메모리 잠금 설정된 데이터 5 및 6에 대한 쓰기 명령을 SSD 2의 명령 큐에 전달함으로써 데이터 손실을 방지할 수 있다.
또한, 두 SSD 중 하나의 SSD에서 쓰기가 완료되면, 즉시 쓰기 완료 메시지를 호스트(120)로 전달하여 다음 데이터에 대한 쓰기가 진행될 수 있도록 함으로써, 전체 스토리지 장치의 쓰기 완료 속도를 향상시킬 수 있다.
도 6a 및 도 6b는 트림 명령 전달을 설명하기 위한 예시도이다.
도 6a를 참조하면, SSD 2로 데이터 2에 대한 쓰기 명령이 전달되기 전에 SSD 1에서 데이터 1 내지 4에 대한 쓰기가 완료되었다.
이때, 데이터 미러링 제어 장치(110)는 SSD 1에서 쓰기 완료된 데이터 2 내지 4에 대한 쓰기 정보에 기초하여 SSD 2로 트림 명령을 전송할 수 있다.
SSD와 같이 플래쉬 메모리를 기반으로 하는 스토리지 장치는 HDD와 달리 비어 있지 않은 페이지에 즉시 데이터를 기록할 수 없고, 기존 데이터를 지운 후 데이터를 기록하여야 한다. 구체적으로, SSD에서 지우기는 블록 단위로 수행되므로, 비어있지 않은 블록에 덮어쓰기하기 위해서는 먼저 해당 블록에 저장된 데이터 중 무효 데이터를 제외한 데이터를 다른 블록이나 SSD 내부의 캐쉬로 옮긴 후, 해당 블록에 저장된 데이터를 삭제하여야 한다.
이때, 트림 명령을 통해 어떤 데이터가 무효 데이터인지를 명시적으로 알려줄 수 있다면, 덮어쓰기를 위한 삭제 연산 시 다른 블록에 옮겨 써야 하는 데이터의 양을 줄일 수 있다. 구체적으로, SSD 1과 SSD 2에는 동일한 데이터가 저장되므로, SSD 1에서 쓰기 완료된 데이터 2 내지 4에 대한 쓰기가 덮어 쓰기(overwrite)였다면, SSD 2에서 데이터 2 내지 4가 쓰여질 블록에 저장되어 있는 데이터는 무효 데이터(invalid data)로 볼 수 있다.
예를 들어, SSD 1에서 1,000번 블록부터 1,500번 블록까지 데이터를 덮어 쓰기(overwrite) 했다면, 아직 데이터 2 내지 4에 대한 쓰기 명령이 실행되지 않은 SSD 2에 저장된 1,000번 블록부터 1,500번 블록까지 데이터는 무효 데이터임을 의미한다.
따라서, 데이터 미러링 제어 장치(110)는 SSD 2로 데이터 2 내지 4에 대한 쓰기 명령을 전달하기 전에 데이터 2 내지 4가 쓰여질 주소에 저장되어 있는 데이터는 무효 데이터라는 정보를 트림 명령을 통해 명시적으로 알려줄 수 있다.트림 명령을 전달받은 SSD 2는 덮어 쓰기를 위한 삭제 연산 시 다른 블록에 옮겨 써야 하는 데이터 양을 줄일 수 있으므로, 성능 향상과 마모 절감의 효과를 얻을 수 있다.
도 6b를 참조하면, SSD 2에서 데이터 1에 대한 쓰기 명령이 완료된 시점에 SSD 1에서 SSD 2로 쓰기 명령이 전달되지 않은 데이터 5 및 6에 대한 쓰기가 완료되었다.
따라서, 데이터 미러링 제어 장치(110)는 SSD 1에서 수행된 데이터 5 및 6에 대한 쓰기 정보에 기초하여 SSD 2로 트림 명령을 전송할 수 있다.
도 7a 내지 도 7c는 빠른 스토리지 장치를 설명하기 위한 예시도이다.
도 7a를 참조하면, 데이터 미러링 제어 장치(110)는 호스트(120)로부터 쓰기 요청된 데이터에 대하여 쓰기 완료가 가장 빠른 스토리지 장치를 빠른 스토리지 장치로 설정할 수 있다.
구체적으로, 도 7a에서 데이터 1 및 2에 대한 쓰기가 SSD 1에서 먼저 완료되고 있으므로, SSD 1이 빠른 스토리지 장치로 설정될 수 있다.
반면, 데이터 3 및 4에 대한 쓰기는 SSD 2에서 먼저 완료되었으므로, 데이터 미러링 제어 장치(110)는 SSD 2에서 데이터 3에 대한 쓰기가 완료된 시점에 빠른 스토리지 장치를 SSD 2로 변경할 수 있다.
도 7b를 참조하면, 데이터 미러링 제어 장치(110)는 빠른 스토리지 장치로 설정된 SSD 1으로 쓰기 명령을 전달하고, SSD 2에는 읽기 명령을 전달할 수 있다.
이때, 빠른 스토리지 장치는 쓰기 가속 인자, 자유 블록의 양, 쓰기 지연 발생여부 등에 따라 설정되고 주기적 또는 비주기적으로 변경될 수 있다.
예를 들어, 도시된 예에서 초기에 빠른 스토리지 장치로 설정된 SSD 1의 쓰기 가속 인자 (WAF: Write Acceleration Factor) 값이 SSD 2보다 높은 경우에는 빠른 스토리지 장치는 SSD 2로 변경될 수 있다.
또 다른 예로, SSD 1에서 쓰기 지연이 발생하는 경우나 SSD 1에서 쓰기 명령 실행으로 자유 블록(free block)의 양이 일정량 이하로 줄어드는 경우, 빠른 스토리지 장치는 SSD 2로 변경될 수 있다.
한편, 도시된 예에서 SSD 1에서 데이터 2의 쓰기가 완료된 이후, 빠른 스토리지 장치가 SSD 2로 변경되었으므로, SSD 2로 쓰기명령이 전송될 수 있다.
이때, 데이터 미러링 제어 장치(110)는 메모리 잠금 설정된 데이터 1 및 2에 대한 쓰기 명령을 SSD2로 전송할 수 있다.
또한, 이 경우, 데이터 1 및 2에 대한 쓰기 명령은 빠른 스토리지 장치가 변경된 이후 호스트로부터 쓰기 요청된 데이터 3 및 4에 대한 쓰기 명령과 교차로 전송될 수 있으나, 도시된 예와 달리 SSD 1에서 쓰기 완료된 데이터 1 및 2에 대한 쓰기 명령이 우선적으로 전달될 수도 있다.
한편, 빠른 스토리지 장치가 SSD 2로 변경된 경우, 데이터 미러링 제어 장치(110)는 SSD 2에 데이터 1 및 2에 대한 쓰기 명령을 전달하기 전에 SSD 1에서 쓰기 완료된 데이터 1 및 2에 대한 쓰기 정보에 기초한 트림 명령을 SSD 2로 전송할 수 있다. 구체적으로, 데이터 1 및 2에 대한 쓰기 명령이 덮어 쓰기 명령이라면, SSD 1에서 데이터 1 및 2가 쓰여진 주소에 저장되어 있던 이전 데이터는 무효 데이터임을 알 수 있다. 따라서, 데이터 미러링 제어 장치(110)는 트림 명령을 통해 SSD 2에서 데이터 1 및 2가 쓰여질 주소에 저장된 데이터가 무효 데이터임을 명시적으로 알려줄 수 있다. 트림 명령을 전달받은 SSD 2는 데이터 2 내지 4의 덮어 쓰기를 위한 삭제 연산 시 다른 블록에 옮겨 써야 하는 데이터 양을 줄일 수 있으므로, 성능 향상과 마모 절감의 효과를 얻을 수 있다.
한편, 빠른 스토리지 장치가 SSD 2로 변경된 경우, 데이터 미러링 제어 장치(110)는 SSD 1으로 가비지 컬렉션 명령을 전송하여 SSD 1에서 가비지 컬렉션이 실행되도록 할 수 있다.
예를 들어, 빠른 스토리지 장치가 SSD 2로 변경된 경우, 쓰기 명령은 SSD 2로 전송되며, SSD 1에는 읽기 명령이 전달되므로, SSD 1에서는 쓰기 연산이 실행되지 않는다. 따라서, SSD 1이 빠른 스토리지 장치로 다시 변경되기 전에 SSD 1에서 가비지 컬렉션이 실행되도록 하여 무효 데이터(invalid data)가 저장된 페이지들을 모아서 삭제함으로써 미리 여유공간을 확보할 수 있다. 이를 통해, SSD 1이 다시 빠른 스토리지 장치로 변경된 경우 SSD 1의 쓰기 성능을 개선시킬 수 있다.
한편, 도 7b에 도시된 예에서, 빠른 스토리지 장치가 SSD 2로 변경되었음에도, SSD 2에 데이터 1 및 2에 대한 쓰기가 완료되기 전까지는 SSD 1에 최신의 데이터가 저장되게 된다.
따라서, 도 7C에 도시된 예와 같이 데이터 미러링 제어장치(110)는 빠른 스토리지 장치를 SSD 2로 변경하기 전에 메모리 잠금 설정된 데이터 1 및 2에 대한 쓰기 명령을 SSD 2로 전송하여 SSD 2와 SSD 1에 저장된 데이터를 일치시킬 수 있다.
이후, SSD 2에서 데이터 1 및 2에 대한 쓰기가 완료된 경우, 데이터 미러링 제어 장치(110)는 빠른 스토리지 장치를 SSD 2로 변경할 수 있다.
이 경우, 도 7b의 경우와 달리 빠른 스토리지 장치에는 항상 최신의 데이터가 저장될 수 있다.
한편, 데이터 미러링 제어 장치(110)는 SSD 2에 데이터 1 및 2에 대한 쓰기 명령을 전달하기 전에 SSD 1에서 쓰기 완료된 데이터 1 및 2에 대한 쓰기 정보에 기초한 트림 명령을 SSD 2로 전송할 수 있다.
또한, 빠른 스토리지 장치가 SSD 2로 변경된 경우, 데이터 미러링 제어 장치(110)는 SSD 1으로 가비지 컬렉션 명령을 전송하여 SSD 1에서 가비지 컬렉션이 실행되도록 할 수 있다.
한편, 도 7b 및 도 7c에는 빠른 스토리지 장치에 쓰기 명령만이 전달되고 다른 스토리지 장치에 읽기 명령이 전달되고 있으나, 반드시 이에 한정되는 것은 아니다.
예를 들어, 스토리지 장치들 사이에 부하 분산(load balancing)이 필요한 경우나 최근에 빠른 스토리지 장치에 쓰기 완료된 데이터에 대한 읽기 요청의 경우, 빠른 스토리지 장치에 읽기 명령이 전달될 수 있다.
도 8은 호스트에 장애가 발생한 경우, 데이터 복구를 설명하기 위한 예시도이다.
도 8을 참조하면, 호스트(120)가 예기치 못한 장애로 인해 재부팅 된 경우, 데이터 미러링 제어 장치(110)는 빠른 스토리지 장치에 저장된 데이터에 기초하여 복수의 스토리지 장치 간에 데이터를 일치시킬 수 있다.
빠른 스토리지 장치에는 가장 최신의 데이터가 저장되게 되므로, 빠른 스토리지 장치에 저장된 데이터를 기준으로 복수의 스토리지 장치의 데이터를 일치시킬 수 있다.
구체적으로, 호스트(120)가 재부팅된 경우, 빠른 스토리지 장치에 저장된 데이터와 다른 스토리지 장치에 저장된 데이터를 비교하여 일치 여부를 판단할 수 있다.
이때, 어느 스토리지 장치가 빠른 스토리지 장치인가는 각각의 스토리지 장치에 저장된 빠른 스토리지 장치 지시자(710)에 의해 파악할 수 있다. 도시된 예에서, 빠른 스토리지 장치 지시자(710)가 1로 설정된 SSD 1이 빠른 스토리지 장치이다.
한편, SSD 1과 SSD 2 사이에 불일치하는 데이터가 존재하는지 여부는 업데이트 비트맵(720)을 이용하여 판단할 수 있다.
구체적으로, 데이터 미러링 제어 장치(110)는 복수의 스토리지 장치(130)의 모든 데이터 영역을 N개의 청크(chunk)로 분할하여, 각각의 청크에 대응하는 업데이트 비트를 이용하여, 데이터 일치 여부를 판단할 수 있다.
도시된 예에서, SSD 1과 SSD 2의 데이터 영역이 8개의 청크로 분할되어 있으며, 각각의 청크에 대한 업데이트 비트맵(720)이 도시되어 있다.
이때, 업데이트 비트맵에 포함된 각각의 비트는 각각의 청크에 대응되며, 각 청크에 해당하는 데이터 영역에서 SSD 1과 SSD 2에 저장된 데이터가 일치하는지 여부를 나타낸다.
구체적으로, 특정 데이터에 대해 SSD 1과 SSD 2 중에서 빠른 스토리지 장치인 SSD 1에서만 쓰기가 완료된 경우, 해당 데이터가 쓰여진 청크(730, 740)에 대한 업데이트 비트는 1로 설정될 수 있다.
반면, SSD 1 및 SSD 2 모두에서 데이터 쓰기가 완료되거나 데이터 쓰기가 실행되지 않은 청크에 대한 업데이트 비트는 0으로 설정될 수 있다.
따라서, 이 경우, SSD 1과 SSD 2에 저장된 데이터의 전체를 비교하지 않고 업데이트 비트맵에서 업데이트 비트가 1로 설정된 청크의 데이터만 비교하면 되므로, 데이터 복구시간을 절감할 수 있다.
한편, 호스트 장애 발생시 복수의 스토리지 장치 간에 데이터를 일치시키기 위한 방법은 도 8에 도시된 예와 같은 업데이트 비트맵을 이용하는 방법에 한정되지 않는다.
예를 들어, 호스트 메모리에 저장된 데이터 중 빠른 스토리지 장치에는 쓰기 완료되었으나, 느린 스토리지 장치에는 쓰기 완료되지 않은 데이터들은 메모리 잠금 설정되어 있으므로, 느린 스토리지 장치에서 쓰기 완료되기 전까지는 삭제 또는 변경되지 않는다. 따라서, 데이터 미러링 제어 장치(110)는 호스트 메모리에 메모리 잠금 설정되어 있는 데이터들의 리스트를 로깅하여 비휘발성 메모리나 스토리지 장치의 일부 영역에 저장할 수 있다. 이후, 호스트(120)가 재부팅된 경우, 데이터 미러링 제어 장치(110)는 리스트에 포함된 데이터에 대한 쓰기 명령을 느린 스토리지 장치로 전송하여 느린 스토리지 장치에 저장된 데이터를 빠른 스토리지 장치에 저장된 데이터와 일치시킬 수 있다.
도 9는 복수의 스토리지 장치가 SSD 및 HDD를 포함하는 경우, 데이터 미러링 제어를 설명하기 위한 예시도이다.
도 9를 참조하면, 미러링이 적용되는 복수의 스토리지 장치는 하나 이상의 HDD 및 하나 이상의 SSD를 포함할 수 있다.
데이터 미러링 제어 장치(110)는 HDD를 빠른 스토리지 장치로 설정한 하여, HDD에 우선적으로 데이터가 쓰여질 수 있도록 하고, 이후, 빠른 스토리지 장치를 SSD로 변경함으로써 HDD에 쓰여진 데이터와 동일한 데이터가 SSD에 쓰여질 수 있도록 할 수 있다.
한편, 데이터 미러링 제어 장치(110)는 호스트(120)로부터 임의 쓰기 요청된 데이터에 대한 쓰기 명령을 순차 쓰기 명령으로 변환하여 HDD로 전송할 수 있다.
구체적으로, 도시된 예에서, 1', 2', 3'로 표시된 쓰기 요청은 데이터 1, 2, 3이 저장된 주소에 대한 덮어쓰기 요청이다. 이때, 데이터 미러링 제어 장치(110)는 호스트로부터 요청된 데이터 1', 2', 3'에 대한 쓰기 요청에 대한 쓰기 명령을 순차 쓰기 명령(4, 5, 6)으로 변환하여 HDD로 전송할 수 있다.
일반적으로 HDD가 SSD보다 여유 공간이 크기 때문에 HDD와 SSD 사이에 데이터 미러링이 적용되는 경우, HDD에는 여유 공간이 많이 생기게 된다. 또한, HDD는 물리적 특성 상 임의 쓰기 성능보다 순차 쓰기 성능이 우수하므로, 호스트로부터 임의 쓰기 요청된 데이터를 로그 형태로 변환하여 순차적으로 저장되도록 함으로써, 쓰기 성능을 향상시킬 수 있다.
한편, 데이터 미러링 제어 장치(110)는 빠른 스토리지 장치가 SSD로 변경된 경우, HDD에서 수행된 쓰기 정보에 기초하여 무효 데이터에 대한 정보를 트림 명령을 이용하여 SSD로 전송할 수 있다.
도시된 예에서, 데이터 미러링 제어 장치(110)는 HDD에 저장된 데이터 중 1, 2, 3은 무효 데이터라는 정보를 트림 명령을 이용하여 SSD로 전송하고, 이후, 데이터 1, 2, 3에 대한 쓰기 명령을 SSD로 전송할 수 있다.
이러한 방법을 통해 HDD의 쓰기 성능을 높이고 SSD의 마모를 줄일 수 있다.
도 10은 일 실시예에 따른, 메모리 잠금 설정과정을 나타내는 순서도이다.
도 10을 참조하면, 데이터 미러링 제어 장치(110)는 호스트(120)로부터 쓰기 요청이 수신된 경우(910), 호스트 메모리에 저장된 데이터 중 쓰기 요청된 데이터에 대하여 메모리 잠금을 설정할 수 있다(920).
이후, 데이터 미러링 제어 장치(110)는 메모리 잠금이 설정된 데이터 각각에 대하여 복수의 스토리지 장치(130) 모두에서 쓰기 완료된 경우(930), 해당 데이터에 대한 메모리 잠금을 해제할 수 있다(940).
다시 말해, 메모리 잠금 설정된 데이터는 복수의 스토리지 장치 모두에서 쓰기가 완료되기 전까지는 메모리 잠금이 해제되지 않는다.
도 11은 일 실시예에 따른 쓰기 명령 전송 및 쓰기 완료 메시지 전송과정을 나타내는 순서도이다.
도 11을 참조하면, 데이터 미러링 제어 장치(110)는 호스트(120)로부터 쓰기 요청된 데이터에 대한 쓰기 명령을 복수의 스토리지 장치(130)로 전송할 수 있다(1010).
이때, 호스트(120)의 쓰기 요청 및 호스트(120)로부터 쓰기 요청된 데이터에 대한 쓰기 명령은 블록킹 방식 또는 논 블록킹 방식으로 복수의 스토리지 장치(130) 각각으로 전송될 수 있다.
한편, 데이터 미러링 제어 장치(110)는 호스트(120)로부터 쓰기 요청된 데이터에 대하여 적어도 하나의 스토리지 장치에서 쓰기 완료된 경우(1020), 해당 데이터에 대한 쓰기 완료 메시지를 호스트(120)로 전송할 수 있다(1030).
한편, 일 실시예에 따르면, 데이터 미러링 제어 장치(110)는 호스트로(120)부터 쓰기 요청된 데이터에 대하여 적어도 하나의 스토리지 장치에서 쓰기 완료된 경우, 쓰기 완료된 스토리지 장치에서의 쓰기 정보에 기초하여 해당 데이터에 대한 쓰기 명령이 전송되지 않은 스토리지 장치로 트림 명령을 전송할 수 있다(1040).
도 12는 다른 실시예에 따른 쓰기 명령 전송 및 쓰기 완료 메시지 전송과정을 나타내는 순서도이다.
도 12를 참조하면, 데이터 미러링 제어 장치(110)는 호스트(120)로부터 쓰기 요청된 데이터에 대한 쓰기 명령을 빠른 스토리지 장치로 전송할 수 있다(1110).
다시 말해, 데이터 미러링 제어 장치(110)는 복수의 스토리지 장치(130) 중 빠른 스토리지 장치로 설정된 스토리지 장치에만 쓰기 명령을 전송할 수 있다.
한편, 일 실시예에 따르면, 복수의 스토리지 장치(130)가 하나 이상의 HDD 및 하나 이상의 SSD를 포함하는 경우, 데이터 미러링 제어 장치(110)는 HDD를 빠른 스토리지 장치로 설정한 후, 호스트로부터 요청된 데이터에 대한 쓰기 명령을 순차 쓰기 명령으로 변환하여 HDD로 전송할 수 있다.
한편, 데이터 미러링 제어 장치(110)는 복수의 스토리지 장치(130) 중에서 적어도 하나의 스토리지 장치를 빠른 스토리지 장치로 설정할 수 있으며, 주기적 또는 비주기적으로 빠른 스토리지 장치를 변경할 수 있다.
또한, 일 실시예에 따르면, 데이터 미러링 제어 장치(110)는 복수의 스토리지 장치(130) 중 빠른 스토리지 장치로 설정되지 않은 스토리지 장치에는 읽기 명령을 전송할 수 있다.
다만, 반드시 이에 한정되는 것은 아니며, 스토리지 장치들 사이에 부하 분산(load balancing)이 필요한 경우나 최근에 빠른 스토리지 장치에 쓰기 완료된 데이터에 대한 읽기 요청의 경우, 빠른 스토리지 장치에 읽기 명령이 전송될 수 있다.
한편, 데이터 미러링 제어 장치(110)는 호스트(120)로부터 쓰기 요청된 데이터가 빠른 스토리지 장치에서 쓰기 완료된 경우(1120), 호스트(120)로 쓰기 완료 메시지를 전송할 수 있다(1130).
도 13은 일 실시예에 따른 빠른 스토리지 장치 변경 과정을 나타내는 절차도이다.
도 13을 참조하면, 데이터 미러링 제어 장치(110)는 호스트(120)로부터 쓰기 요청된 데이터에 대한 쓰기 명령을 미러링이 적용되는 복수의 스토리지 장치(130)로 전송할 수 있다(1210).
이때, 일 실시예에 따르면, 쓰기 요청된 데이터에 대한 쓰기 완료 속도가 가장 빠른 스토리지 장치를 빠른 스토리지 장치로 설정할 수 있다.
따라서, 복수의 스토리지 장치(130) 중 하나의 스토리지 장치에서 호스트(120)로부터 쓰기 요청된 데이터에 대한 쓰기가 완료된 경우(1220), 쓰기 완료된 스토리지 장치가 빠른 스토리지 장치인지 여부를 판단할 수 있다(1230).
이때, 쓰기 완료된 스토리지 장치가 빠른 스토리지 장치가 아닐 경우, 빠른 스토리지 장치를 쓰기 완료된 스토리지 장치로 변경할 수 있다(1240).
도 14는 다른 실시예에 따른 빠른 스토리지 장치 변경 과정을 나타내는 절차도이다.
도 14를 참조하면, 데이터 미러링 제어 장치(110)는 호스트(120)로부터 쓰기 요청된 데이터에 대한 쓰기 명령을 빠른 스토리지 장치에 전송할 수 있다(1310).
이후, 데이터 미러링 제어 장치(110)는 빠른 스토리지 장치의 변경이 필요한지 여부를 주기적 또는 비 주기적으로 판단하여(1320), 빠른 스토리지 장치를 변경할 수 있다(1330).
구체적으로, 빠른 스토리지 장치의 변경이 필요한지 여부는 도 12의 경우와 달리, 쓰기 가속 인자(WAF), 자유 블록의 양, 쓰기 지연 발생여부 등에 따라 주기적 또는 비주기적으로 판단할 수 있다.
예를 들어, 데이터 미러링 제어 장치(110)는 빠른 스토리지 장치의 쓰기 가속 인자 (WAF: Write Acceleration Factor) 값이 다른 스토리지 장치보다 높은 경우에는 빠른 스토리지 장치를 변경할 수 있다.
또 다른 예로, 데이터 미러링 제어 장치(110)는 빠른 스토리지 장치에서 쓰기 지연이 발생하는 경우나 빠른 스토리지 장치에서 쓰기 명령 실행으로 자유 블록의 양이 일정량 이하로 줄어드는 경우, 빠른 스토리지 장치를 변경할 수 있다.
한편, SSD가 빠른 스토리지 장치로 변경된 경우, 데이터 미러링 제어 장치(110)는 변경되기 전의 빠른 스토리지 장치에서 쓰기 완료된 데이터에 대한 쓰기 정보에 기초한 트림 명령을 빠른 스토리지 장치 변경된 SSD로 전송할 수 있다(1340).
또한, 데이터 미러링 제어 장치(110)는 빠른 스토리지 장치로 설정되어 있던 SSD가 느린 스토리지 장치로 변경된 경우, 해당 SSD로 가비지 컬렉션 명령을 전송할 수 있다(1350).
도 15는 또 다른 실시예에 따른 빠른 스토리지 장치 변경 과정을 나타내는 순서도이다.
도 15를 참조하면, 데이터 미러링 제어 장치(110)는 호스트(120)로부터 쓰기 요청된 데이터에 대한 쓰기 명령을 빠른 스토리지 장치에 전송할 수 있다(1410).
이후, 데이터 미러링 제어 장치(110)는 빠른 스토리지 장치의 변경이 필요한 지 여부를 주기적 또는 비 주기적으로 판단할 수 있다(1420).
구체적으로, 빠른 스토리지 장치의 변경이 필요한지 여부는 쓰기 가속 인자(WAF), 자유 블록의 양, 쓰기 지연 발생여부 등에 따라 주기적 또는 비주기적으로 판단될 수 있다.
예를 들어, 데이터 미러링 제어 장치(110)는 빠른 스토리지 장치의 쓰기 가속 인자 (WAF: Write Acceleration Factor) 값이 다른 스토리지 장치보다 높은 경우에는 빠른 스토리지 장치의 변경이 필요한 것으로 판단할 수 있다.
또 다른 예로, 데이터 미러링 제어 장치(110)는 빠른 스토리지 장치에서 쓰기 지연이 발생하는 경우나 빠른 스토리지 장치에서 쓰기 명령 실행으로 자유 블록의 양이 일정량 이하로 줄어드는 경우, 빠른 스토리지 장치의 변경이 필요한 것으로 판단할 수 있다.
이후, 데이터 미러링 제어 장치(110)는 메모리 잠금 설정된 데이터에 대한 쓰기 명령을 빠른 스토리지 장치로 변경될 스토리지 장치로 전송할 수 있다(1440).
이때, 일 실시예에 따르면, 데이터 미러링 제어 장치(110)는 빠른 스토리지 장치로 변경될 스토리지 장치가 SSD인 경우, 메모리 잠금 설정된 데이터에 대한 쓰기 명령을 전송하기 전에 현재 빠른 스토리지 장치에서 쓰기 완료된 데이터에 대한 쓰기 정보에 기초하여 빠른 스토리지 장치로 변경될 SSD로 트림 명령을 전송할 수 있다(1430).
한편, 데이터 미러링 제어 장치(110)는 빠른 스토리지 장치로 변경될 스토리지 장치에서 메모리 잠금 설정된 데이터에 대한 쓰기가 완료된 경우(1450), 해당 스토리지 장치로 빠른 스토리지 장치를 변경할 수 있다(1460).
이때, 일 실시예에 따르면, 데이터 미러링 제어 장치(110)는 빠른 스토리지 장치로 설정되었던 SSD가 느린 스토리지 장치로 변경된 경우, 해당 SSD로 가비지 컬렉션 명령을 전송할 수 있다(1470).
도 16은 일 실시예에 따른, 빠른 스토리지 장치에 고장이 발생한 경우, 데이터 복구과정을 나타내는 순서도이다.
도 16을 참조하면, 데이터 미러링 제어 장치(110)는 복수의 스토리지 장치(130) 중 하나에서 고장이 발생한 경우(1510), 고장난 스토리지 장치가 빠른 스토리지 장치인지 여부를 판단할 수 있다(1520).
고장난 스토리지 장치가 빠른 스토리지 장치인 경우, 데이터 미러링 제어 장치(110)는 메모리 잠금 설정된 데이터에 대한 쓰기 명령을 고장 나지 않은 다른 스토리지 장치로 전송할 수 있다(1530).
호스트 메모리에서 데이터 잠금이 해제되지 않았다는 것은, 적어도 하나 이상의 스토리지 장치에서 해당 데이터에 대한 쓰기가 완료되지 않았음을 의미한다.
따라서, 데이터 미러링 제어 장치(110)는 메모리 잠금 설정된 데이터에 대한 쓰기 명령이 전달되지 않은 스토리지 장치로 해당 데이터에 대한 쓰기 명령을 전달함으로써, 빠른 스토리지 장치의 고장으로 인한 데이터 손실을 방지할 수 있다.
한편, 특정 데이터가 메모리 잠금이 설정되었다는 것은 이미 빠른 스토리지 장치로 쓰기 명령이 전달되었음을 의미하므로, 고장난 스토리지 장치가 빠른 스토리지 장치가 아닌 경우에는 별도의 데이터 복구 절차가 요구되지 않는다.
도 17은 일 실시예에 따른 호스트에 장애가 발생한 경우, 데이터 복구과정을 나타내는 순서도이다.
도 17을 참조하면, 호스트(120)가 예기치 못한 장애발생으로 재부팅된 경우(1610), 데이터 미러링 제어 장치(110)는 복수의 스토리지 장치(130)에 저장된 데이터가 일치하는지 여부를 판단할 수 있다(1620).
이때, 일 실시예에 따르면, 데이터 미러링 제어 장치(110)는 복수의 스토리지 장치(130)의 전체 데이터 영역을 복수의 영역으로 분할하고, 분할된 영역 각각에 대응되는 업데이트 비트를 이용하여 데이터 일치 여부를 판단할 수 있다.
또 다른 실시예에 다르면, 데이터 미러링 제어 장치(110)는 호스트 메모리에 메모리 잠금이 설정되어 있는 데이터에 대한 리스트를 로깅하여 비휘발성 메모리나 빠른 스토리지 장치의 일부 영역에 저장하여, 호스트가 재부팅된 경우, 해당 리스트를 참조하여 데이터 일치 여부를 판단할 수 있다.
한편, 데이터 미러링 제어 장치(110)는 복수의 스토리지 장치(130)에 저장된 데이터가 일치하지 않은 경우(1630), 빠른 스토리지 장치에 저장된 데이터에 기초하여 다른 스토리지 장치로 덮어 쓰기 명령을 전송할 수 있다(1640).
구체적으로, 빠른 스토리지 장치에는 최신의 데이터가 저장되게 되므로, 데이터 미러링 제어 장치(110)는 빠른 스토리지 장치와 다른 스토리지 장치에 저장된 데이터가 일치하지 않는 영역이 존재하는 경우, 빠른 스토리지 장치에 저장된 데이터를 데이터가 일치하지 않는 스토리지 장치로 덮어쓰기 함으로써 데이터를 일치시킬 수 있다.
한편, 본 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 장치에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등을 포함한다.
또한, 실시예들을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 해당 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
이상에서는 실시예들을 중심으로 기술적 특징들을 설명하였다. 하지만, 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한고, 권리 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 권리범위에 포함된 것으로 해석되어야 할 것이다.
110: 데이터 미러링 제어 장치
120: 호스트
130: 스토리지 장치
111: 명령 분배부
112: 메모리 잠금 설정부
113: 빠른 스토리지 장치 설정부
114: 트림 명령 전송부
115: 가비지 컬렉션 명령 전송부

Claims (30)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 미러링이 적용된 복수의 스토리지 장치 중 적어도 하나를 빠른 스토리지 장치로 설정하고, 주기적 또는 비주기적으로 상기 빠른 스토리지 장치를 변경하는 빠른 스토리지 장치 설정부;
    호스트로부터 쓰기 요청된 데이터에 대한 쓰기 명령을 상기 빠른 스토리지 장치로 전송하는 명령 분배부; 및
    호스트 메모리에 저장된 데이터 중 상기 호스트로부터 쓰기 요청된 데이터에 대하여 메모리 잠금(lock)을 설정하고, 상기 메모리 잠금 설정된 데이터가 상기 복수의 스토리지 장치에서 쓰기 완료된 경우, 쓰기 완료된 데이터에 대한 메모리 잠금을 해제하는 메모리 잠금 설정부;를 포함하되,
    상기 명령 분배부는,
    상기 빠른 스토리지 장치의 변경이 필요한 경우, 상기 메모리 잠금 설정된 데이터에 대한 쓰기 명령을 빠른 스토리지 장치로 변경될 스토리지 장치에 전송하고,
    상기 빠른 스토리지 장치 설정부는,
    상기 빠른 스토리지 장치로 변경될 스토리지 장치에서 상기 메모리 잠금 설정된 데이터에 대한 쓰기가 완료된 경우, 상기 빠른 스토리지 장치를 변경하는 데이터 미러링 제어 장치.
  6. 제 5 항에 있어서,
    상기 빠른 스토리지 장치 설정부는,
    상기 쓰기 명령에 대한 쓰기 완료 속도에 기초하여 상기 빠른 스토리지 장치를 설정하는 데이터 미러링 제어 장치.
  7. 제 5 항에 있어서,
    상기 명령 분배부는,
    상기 쓰기 요청된 데이터가 상기 빠른 스토리지 장치에서 쓰기 완료된 경우, 해당 데이터에 대한 쓰기 완료 메시지를 상기 호스트로 전송하는 데이터 미러링 제어 장치.
  8. 제 5 항에 있어서,
    상기 빠른 스토리지 장치 설정부는
    주기적 또는 비주기적으로 상기 빠른 스토리지 장치를 변경하는 데이터 미러링 제어 장치.
  9. 제 8 항에 있어서,
    상기 명령 분배부는,
    상기 빠른 스토리지 장치가 변경된 경우, 상기 메모리 잠금 설정된 데이터에 대한 쓰기 명령을 변경된 빠른 스토리지 장치로 전송하는 데이터 미러링 제어 장치.
  10. 제 8 항에 있어서,
    상기 명령 분배부는,
    상기 빠른 스토리지 장치의 변경이 필요한 경우, 상기 메모리 잠금 설정된 데이터에 대한 쓰기 명령을 빠른 스토리지 장치로 변경될 스토리지 장치에 전송하고,
    상기 빠른 스토리지 장치 설정부는,
    상기 빠른 스토리지 장치로 변경될 스토리지 장치에서 상기 메모리 잠금 설정된 데이터에 대한 쓰기가 완료된 경우, 상기 빠른 스토리지 장치를 변경하는 데이터 미러링 제어 장치.
  11. 제 5 항에 있어서,
    상기 명령 분배부는,
    상기 빠른 스토리지 장치가 고장난 경우, 상기 메모리 잠금 설정된 데이터에 대한 쓰기 명령을 고장나지 않은 다른 스토리지 장치로 전송하는 데이터 미러링 제어 장치.
  12. 제 5 항에 있어서,
    상기 명령 분배부는,
    상기 호스트에 장애가 발생한 경우, 상기 복수의 스토리지 장치에 저장된 데이터의 일치 여부를 판단하고, 일치하지 않는 경우, 상기 빠른 스토리지 장치에 저장된 데이터에 기초하여 다른 스토리지 장치로 쓰기 명령을 전송하는 데이터 미러링 제어 장치.
  13. 제 5 항에 있어서,
    상기 복수의 스토리지 장치는,
    적어도 하나의 HDD(Hard Disk Drive)를 포함하고,
    상기 명령 분배부는,
    상기 HDD가 빠른 스토리지 장치로 설정된 경우, 상기 호스트로부터 임의 쓰기 요청된 데이터에 대한 쓰기 명령을 순차 쓰기 명령으로 변환하여 상기 HDD로 전송하는 데이터 미러링 제어 장치.
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 미러링이 적용된 복수의 스토리지 장치 중 적어도 하나를 빠른 스토리지 장치로 설정하는 단계;
    주기적 또는 비주기적으로 상기 빠른 스토리지 장치를 변경하는 단계;
    호스트로부터 쓰기 요청된 데이터에 대한 쓰기 명령을 상기 빠른 스토리지 장치로 전송하는 단계;
    호스트 메모리에 저장된 데이터 중 상기 호스트로부터 쓰기 요청된 데이터에 대하여 메모리 잠금(lock)을 설정하는 단계; 및
    상기 메모리 잠금 설정된 데이터가 상기 복수의 스토리지 장치에서 쓰기 완료된 경우, 쓰기 완료된 데이터에 대한 메모리 잠금을 해제하는 단계;
    상기 빠른 스토리지 장치의 변경이 필요한 경우, 상기 메모리 잠금 설정된 데이터에 대한 쓰기 명령을 빠른 스토리지 장치로 변경될 스토리지 장치에 전송하는 단계;
    상기 빠른 스토리지 장치로 변경될 스토리지 장치에서 상기 메모리 잠금 설정된 데이터에 대한 쓰기가 완료된 경우, 상기 빠른 스토리지 장치를 변경하는 단계;를 포함하는 데이터 미러링 제어 방법.
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 호스트로부터 쓰기 요청된 데이터에 대한 쓰기 명령을 미러링이 적용된 복수의 스토리지 장치로 전송하고, 상기 쓰기 요청된 데이터가 상기 복수의 스토리지 장치 중 하나에서 쓰기 완료된 경우, 해당 데이터에 대한 쓰기 완료 메시지를 상기 호스트로 전송하는 명령 분배부;
    호스트 메모리에 저장된 데이터 중 상기 호스트로부터 쓰기 요청된 데이터에 대하여 메모리 잠금(lock)을 설정하고, 상기 메모리 잠금 설정된 데이터가 상기 복수의 스토리지 장치에서 쓰기 완료된 경우, 쓰기 완료된 데이터에 대한 메모리 잠금을 해제하는 메모리 잠금 설정부; 및
    상기 복수의 스토리지 장치 중 하나에서 쓰기 완료된 데이터에 대한 쓰기 정보에 기초하여 해당 데이터에 대한 쓰기 명령이 전달되지 않은 스토리지 장치로 트림 명령을 전송하는 트림 명령 전송부;를 포함하는 데이터 미러링 제어 장치.
  28. 제 27 항에 있어서,
    상기 미러링이 적용된 복수의 스토리지 장치 중 적어도 하나를 빠른 스토리지 장치로 설정하고 주기적 또는 비주기적으로 상기 빠른 스토리지 장치를 변경하는 빠른 스토리지 장치 설정부;를 더 포함하고,
    상기 명령 분배부는 상기 빠른 스토리지 장치로 상기 호스트로부터 쓰기 요청된 데이터에 대한 쓰기 명령을 전송하는 데이터 미러링 제어 장치.
  29. 제 28 항에 있어서,
    상기 트림 명령 전송부는,
    상기 빠른 스토리지 장치가 변경된 경우, 변경되기 전의 빠른 스토리지 장치에서 쓰기 완료된 데이터에 대한 쓰기 정보에 기초하여, 빠른 스토리지 장치로 변경된 스토리지 장치로 트림 명령을 전송하는 데이터 미러링 제어 장치.
  30. 제 28 항에 있어서,
    상기 빠른 스토리지 장치가 변경된 경우, 빠른 스토리지 장치가 아닌 것으로 변경된 스토리지 장치로 가비지 컬렉션 명령을 전송하는 가비지 컬렉션 명령 전송부;를 더 포함하는 데이터 미러링 제어 장치.







KR1020130115579A 2013-09-27 2013-09-27 데이터 미러링 제어 장치 및 방법 KR102116702B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020130115579A KR102116702B1 (ko) 2013-09-27 2013-09-27 데이터 미러링 제어 장치 및 방법
US14/451,834 US9983824B2 (en) 2013-09-27 2014-08-05 Data mirroring control apparatus and method
JP2014194063A JP6690891B2 (ja) 2013-09-27 2014-09-24 データミラーリング制御装置及び方法
EP14186369.6A EP2854034B1 (en) 2013-09-27 2014-09-25 Data mirroring control apparatus and method
CN201410509938.6A CN104516793B (zh) 2013-09-27 2014-09-28 数据镜像控制设备和方法
US15/952,866 US10152272B2 (en) 2013-09-27 2018-04-13 Data mirroring control apparatus and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130115579A KR102116702B1 (ko) 2013-09-27 2013-09-27 데이터 미러링 제어 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20150035250A KR20150035250A (ko) 2015-04-06
KR102116702B1 true KR102116702B1 (ko) 2020-05-29

Family

ID=51687798

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130115579A KR102116702B1 (ko) 2013-09-27 2013-09-27 데이터 미러링 제어 장치 및 방법

Country Status (5)

Country Link
US (2) US9983824B2 (ko)
EP (1) EP2854034B1 (ko)
JP (1) JP6690891B2 (ko)
KR (1) KR102116702B1 (ko)
CN (1) CN104516793B (ko)

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105701021B (zh) * 2014-12-10 2021-03-02 慧荣科技股份有限公司 数据储存装置及其数据写入方法
US11562023B1 (en) 2016-09-26 2023-01-24 Splunk Inc. Merging buckets in a data intake and query system
US11106734B1 (en) 2016-09-26 2021-08-31 Splunk Inc. Query execution using containerized state-free search nodes in a containerized scalable environment
US11269939B1 (en) 2016-09-26 2022-03-08 Splunk Inc. Iterative message-based data processing including streaming analytics
US11222066B1 (en) 2016-09-26 2022-01-11 Splunk Inc. Processing data using containerized state-free indexing nodes in a containerized scalable environment
US11126632B2 (en) 2016-09-26 2021-09-21 Splunk Inc. Subquery generation based on search configuration data from an external data system
US20180089324A1 (en) 2016-09-26 2018-03-29 Splunk Inc. Dynamic resource allocation for real-time search
US11003714B1 (en) 2016-09-26 2021-05-11 Splunk Inc. Search node and bucket identification using a search node catalog and a data store catalog
US10977260B2 (en) 2016-09-26 2021-04-13 Splunk Inc. Task distribution in an execution node of a distributed execution environment
US11023463B2 (en) 2016-09-26 2021-06-01 Splunk Inc. Converting and modifying a subquery for an external data system
US11442935B2 (en) 2016-09-26 2022-09-13 Splunk Inc. Determining a record generation estimate of a processing task
US10795884B2 (en) 2016-09-26 2020-10-06 Splunk Inc. Dynamic resource allocation for common storage query
US10353965B2 (en) 2016-09-26 2019-07-16 Splunk Inc. Data fabric service system architecture
US11615104B2 (en) 2016-09-26 2023-03-28 Splunk Inc. Subquery generation based on a data ingest estimate of an external data system
US11580107B2 (en) 2016-09-26 2023-02-14 Splunk Inc. Bucket data distribution for exporting data to worker nodes
US11860940B1 (en) 2016-09-26 2024-01-02 Splunk Inc. Identifying buckets for query execution using a catalog of buckets
US11250056B1 (en) 2016-09-26 2022-02-15 Splunk Inc. Updating a location marker of an ingestion buffer based on storing buckets in a shared storage system
US11321321B2 (en) 2016-09-26 2022-05-03 Splunk Inc. Record expansion and reduction based on a processing task in a data intake and query system
US11243963B2 (en) 2016-09-26 2022-02-08 Splunk Inc. Distributing partial results to worker nodes from an external data system
US10984044B1 (en) 2016-09-26 2021-04-20 Splunk Inc. Identifying buckets for query execution using a catalog of buckets stored in a remote shared storage system
US10776355B1 (en) 2016-09-26 2020-09-15 Splunk Inc. Managing, storing, and caching query results and partial query results for combination with additional query results
US11314753B2 (en) 2016-09-26 2022-04-26 Splunk Inc. Execution of a query received from a data intake and query system
US10956415B2 (en) 2016-09-26 2021-03-23 Splunk Inc. Generating a subquery for an external data system using a configuration file
US11416528B2 (en) 2016-09-26 2022-08-16 Splunk Inc. Query acceleration data store
US11593377B2 (en) 2016-09-26 2023-02-28 Splunk Inc. Assigning processing tasks in a data intake and query system
US11294941B1 (en) 2016-09-26 2022-04-05 Splunk Inc. Message-based data ingestion to a data intake and query system
US11599541B2 (en) 2016-09-26 2023-03-07 Splunk Inc. Determining records generated by a processing task of a query
US11550847B1 (en) 2016-09-26 2023-01-10 Splunk Inc. Hashing bucket identifiers to identify search nodes for efficient query execution
US11567993B1 (en) 2016-09-26 2023-01-31 Splunk Inc. Copying buckets from a remote shared storage system to memory associated with a search node for query execution
US10726009B2 (en) 2016-09-26 2020-07-28 Splunk Inc. Query processing using query-resource usage and node utilization data
US11461334B2 (en) 2016-09-26 2022-10-04 Splunk Inc. Data conditioning for dataset destination
US11604795B2 (en) 2016-09-26 2023-03-14 Splunk Inc. Distributing partial results from an external data system between worker nodes
US11281706B2 (en) 2016-09-26 2022-03-22 Splunk Inc. Multi-layer partition allocation for query execution
US11663227B2 (en) 2016-09-26 2023-05-30 Splunk Inc. Generating a subquery for a distinct data intake and query system
US11586627B2 (en) 2016-09-26 2023-02-21 Splunk Inc. Partitioning and reducing records at ingest of a worker node
US11232100B2 (en) 2016-09-26 2022-01-25 Splunk Inc. Resource allocation for multiple datasets
US11620336B1 (en) * 2016-09-26 2023-04-04 Splunk Inc. Managing and storing buckets to a remote shared storage system based on a collective bucket size
US11163758B2 (en) 2016-09-26 2021-11-02 Splunk Inc. External dataset capability compensation
US11874691B1 (en) 2016-09-26 2024-01-16 Splunk Inc. Managing efficient query execution including mapping of buckets to search nodes
JP6814020B2 (ja) * 2016-10-26 2021-01-13 キヤノン株式会社 情報処理装置とその制御方法、及びプログラム
CN106843749B (zh) * 2016-12-14 2020-01-21 华为技术有限公司 写入请求处理方法、装置及设备
US11921672B2 (en) 2017-07-31 2024-03-05 Splunk Inc. Query execution at a remote heterogeneous data store of a data fabric service
CN107515827B (zh) * 2017-08-21 2021-07-27 湖南国科微电子股份有限公司 Pcie ssd自定义日志的存储方法、装置及ssd
US11151137B2 (en) 2017-09-25 2021-10-19 Splunk Inc. Multi-partition operation in combination operations
US10896182B2 (en) 2017-09-25 2021-01-19 Splunk Inc. Multi-partitioning determination for combination operations
CN107807790B (zh) * 2017-10-13 2020-09-01 记忆科技(深圳)有限公司 一种固态硬盘数据写入的方法
US11334543B1 (en) 2018-04-30 2022-05-17 Splunk Inc. Scalable bucket merging for a data intake and query system
CN109683807A (zh) * 2018-10-18 2019-04-26 张德辉 带备份的冷数据安全存储系统及其存储方法
CN109658867A (zh) * 2018-12-10 2019-04-19 北京欧徕德微电子技术有限公司 数据读写方法及其装置
CN109976792B (zh) * 2019-02-28 2022-07-12 国云科技股份有限公司 一种镜像延迟更新方法
WO2020220216A1 (en) 2019-04-29 2020-11-05 Splunk Inc. Search time estimate in data intake and query system
US11715051B1 (en) 2019-04-30 2023-08-01 Splunk Inc. Service provider instance recommendations using machine-learned classifications and reconciliation
US11301138B2 (en) * 2019-07-19 2022-04-12 EMC IP Holding Company LLC Dynamic balancing of input/output (IO) operations for a storage system
US11494380B2 (en) 2019-10-18 2022-11-08 Splunk Inc. Management of distributed computing framework components in a data fabric service system
JP2021082003A (ja) * 2019-11-19 2021-05-27 キヤノン株式会社 情報処理装置
US11922222B1 (en) 2020-01-30 2024-03-05 Splunk Inc. Generating a modified component for a data intake and query system using an isolated execution environment image
US11704313B1 (en) 2020-10-19 2023-07-18 Splunk Inc. Parallel branch operation using intermediary nodes
CN113342480B (zh) * 2021-06-23 2022-02-22 海光信息技术股份有限公司 一种事务处理系统、事务处理方法及主机系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003062979A2 (en) * 2002-01-23 2003-07-31 Cisco Technology, Inc. Methods and apparatus for implementing virtualization of storage within a storage area network
US20040117562A1 (en) 2002-12-13 2004-06-17 Wu Cha Y. System and method for sharing memory among multiple storage device controllers
US20110066808A1 (en) * 2009-09-08 2011-03-17 Fusion-Io, Inc. Apparatus, System, and Method for Caching Data on a Solid-State Storage Device

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0232419A (ja) * 1988-07-22 1990-02-02 Nippon Telegr & Teleph Corp <Ntt> 磁気ディスク記憶装置のアクセス制御方式
US6098128A (en) * 1995-09-18 2000-08-01 Cyberstorage Systems Corporation Universal storage management system
US6324654B1 (en) 1998-03-30 2001-11-27 Legato Systems, Inc. Computer network remote data mirroring system
US6122685A (en) 1998-05-06 2000-09-19 Emc Corporation System for improving the performance of a disk storage device by reconfiguring a logical volume of data in response to the type of operations being performed
JP2000276304A (ja) 1999-03-26 2000-10-06 Nec Corp データ移行方法と情報処理システム
US6779063B2 (en) * 2001-04-09 2004-08-17 Hitachi, Ltd. Direct access storage system having plural interfaces which permit receipt of block and file I/O requests
US6931487B2 (en) * 2001-10-22 2005-08-16 Hewlett-Packard Development Company L.P. High performance multi-controller processing
US7013379B1 (en) * 2001-12-10 2006-03-14 Incipient, Inc. I/O primitives
US20050149683A1 (en) 2003-12-29 2005-07-07 Chong Fay Jr. Methods and systems for data backups
US9632870B2 (en) * 2007-03-29 2017-04-25 Violin Memory, Inc. Memory system with multiple striping of raid groups and method for performing the same
TW200937190A (en) 2008-02-22 2009-09-01 Jmicron Technology Corp Raid1 system and reading method for enhancing read performance
JP2010061591A (ja) 2008-09-05 2010-03-18 Oki Electric Ind Co Ltd Raid装置およびその制御方法
KR101067018B1 (ko) 2009-04-17 2011-09-22 서울대학교산학협력단 가비지 컬렉션 수행 방법 및 상기 방법을 이용한 플래시 메모리 장치
JP2011003094A (ja) * 2009-06-19 2011-01-06 Toshiba Corp 二重化処理装置および二重化処理制御方法
JP2011070365A (ja) * 2009-09-25 2011-04-07 Toshiba Corp メモリシステム
US8954669B2 (en) * 2010-07-07 2015-02-10 Nexenta System, Inc Method and system for heterogeneous data volume
JP2012252638A (ja) 2011-06-06 2012-12-20 Nec Corp ディスクアレイ装置及びその制御方法
JP5611909B2 (ja) * 2011-08-19 2014-10-22 株式会社東芝 情報処理装置、性能評価ツール、外部記憶装置の性能評価方法
KR20140006299A (ko) * 2012-07-03 2014-01-16 삼성전자주식회사 낸드 플래시 메모리 기반의 저장부에 데이터 기록을 제어하는 방법 및 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003062979A2 (en) * 2002-01-23 2003-07-31 Cisco Technology, Inc. Methods and apparatus for implementing virtualization of storage within a storage area network
US20040117562A1 (en) 2002-12-13 2004-06-17 Wu Cha Y. System and method for sharing memory among multiple storage device controllers
US20110066808A1 (en) * 2009-09-08 2011-03-17 Fusion-Io, Inc. Apparatus, System, and Method for Caching Data on a Solid-State Storage Device

Also Published As

Publication number Publication date
CN104516793A (zh) 2015-04-15
US20180232150A1 (en) 2018-08-16
EP2854034B1 (en) 2017-03-29
JP2015069651A (ja) 2015-04-13
EP2854034A2 (en) 2015-04-01
US10152272B2 (en) 2018-12-11
EP2854034A3 (en) 2015-09-23
KR20150035250A (ko) 2015-04-06
US9983824B2 (en) 2018-05-29
CN104516793B (zh) 2020-06-09
JP6690891B2 (ja) 2020-04-28
US20150095570A1 (en) 2015-04-02

Similar Documents

Publication Publication Date Title
KR102116702B1 (ko) 데이터 미러링 제어 장치 및 방법
KR102580123B1 (ko) Raid 스토리지 장치 및 그것의 관리 방법
JP6208156B2 (ja) ハイブリッドストレージ集合体の複製
JP6243028B2 (ja) アトミック記憶操作のためのシステム及び方法
US9946607B2 (en) Systems and methods for storage error management
US20190073296A1 (en) Systems and Methods for Persistent Address Space Management
US8782344B2 (en) Systems and methods for managing cache admission
US9251052B2 (en) Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer
JP5518197B2 (ja) ストレージを割り当てるための装置、システム、および方法
US10102117B2 (en) Systems and methods for cache and storage device coordination
EP3230846B1 (en) Performing an atomic write operation across multiple storage devices
US9304685B2 (en) Storage array system and non-transitory recording medium storing control program
US20140006685A1 (en) Systems, methods, and interfaces for managing persistent data of atomic storage operations
US20130166820A1 (en) Methods and appratuses for atomic storage operations
CN107924291B (zh) 存储系统
CN106445405B (zh) 一种面向闪存存储的数据访问方法及其装置
US11347725B2 (en) Efficient handling of highly amortized metadata page updates in storage clusters with delta log-based architectures
KR20150002297A (ko) 스토리지 시스템 및 그의 동작 방법
KR20220086934A (ko) 비휘발성 메모리 시스템의 저널링 제어 장치 및 방법
KR20220049230A (ko) 메모리 시스템에서 비휘발성 메모리 장치 내 오류를 확인하는 장치 및 방법
US20160018995A1 (en) Raid system for processing i/o requests utilizing xor commands
KR101542222B1 (ko) 하이브리드 저장 시스템 및 이를 이용한 데이터 캐싱 방법
KR20110089972A (ko) 메모리 장치
JP2010170268A (ja) ストレージシステムの制御方法、ストレージ制御装置及びプログラム

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant