KR101154620B1 - 듀얼 노드 스토리지 컨트롤러에서 인-플라이트 데이터의 트래킹을 위한 효율적인 방법과 장치 - Google Patents

듀얼 노드 스토리지 컨트롤러에서 인-플라이트 데이터의 트래킹을 위한 효율적인 방법과 장치 Download PDF

Info

Publication number
KR101154620B1
KR101154620B1 KR1020090121111A KR20090121111A KR101154620B1 KR 101154620 B1 KR101154620 B1 KR 101154620B1 KR 1020090121111 A KR1020090121111 A KR 1020090121111A KR 20090121111 A KR20090121111 A KR 20090121111A KR 101154620 B1 KR101154620 B1 KR 101154620B1
Authority
KR
South Korea
Prior art keywords
data
node
storage unit
mass storage
controller
Prior art date
Application number
KR1020090121111A
Other languages
English (en)
Other versions
KR20100066398A (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 KR20100066398A publication Critical patent/KR20100066398A/ko
Application granted granted Critical
Publication of KR101154620B1 publication Critical patent/KR101154620B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • 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/2082Data synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

프로세싱 시스템의 사용을 위해 적합한 스토리지 유니트들은 컴퓨트 노드들 각각 쓰기/읽기 캐쉬와 영구 캐쉬(persistent cashe)를 포함하는 적어도 두 개의 컴퓨트 노드들(compute nodes)을 포함하는 컨트롤러와 기계 판독 가능한 매체 내에 저장된 기계 실행 가능 명령들(machine executable instructions)- 상기 명령들은 영구 캐쉬 내의 인-플라이트(in-flight) 데이터 트래킹(tracking)을 위한 명령들과 컨트롤러의 실패 이후에 인-플라이트(in-flight) 데이터 세그먼트들의 목록을 작성하는 명령들을 포함함 -을 포함한다. 프로세싱 시스템과 방법이 또한 제공된다.

Description

듀얼 노드 스토리지 컨트롤러에서 인-플라이트 데이터의 트래킹을 위한 효율적인 방법과 장치{AN EFFICIENT METHOD AND APPARATUS FOR KEEPING TRACK OF IN FLIGHT DATA IN A DUAL NODE STORAGE CONTROLLER}
본 발명은 리던던트 데이터 스토리지(redundant data storage)에 관한 것으로, 특히 데이터 미러링 시스템(data mirroring system)에서 듀얼 노드 컨트롤러를 사용하여 라이트 데이터 컴퓨팅 인프라스트럭쳐(write data computing infrastructure)에서의 차이들(differences)을 트래킹하여 해결하는(tracking and resolving) 것에 관한 것이다.
오늘날의 데이터 시스템이 리던던트 스토리지를 사용하는 것은 흔히 있는 일이다. 이것은 사용자들에게 높은 무결성 데이터(high integrity data) 와 좋은 시스템 신뢰도를 함께 제공한다. 그러나, 리던던트 스토리지 시스템들을 위한 디자인들은 종종 복잡하다. 성능에 대한 증가된 요구들이 디자인에서의 향상을 계속해서 요구한다.
예를 들면, 동기 원격 미러링(synchronous remote mirroring)에서, 주 스토리지 시스템(primary storage system)과 보조 스토리지 시스템(secondary storage system) 간의 차이들을 트래킹하는(keep track of differences) 것은, 비록 실패가 있는 경우라 할지라도, 대단히 중요하다. 예를 들어, 오늘날 동기 원격 미러링에서 해결해야할 문제들(potential issues)을 보여주는, 이벤트들(events)의 다음 시권스(sequence)를 생각해 보자.
먼저, 호스트(즉, 프로세서, 또는 컴퓨팅 시스템의 다른 부분)가 트랙 T를 위해 지정한 데이터의 쓰기(write)를 한다고 하자. 그러면, 주 스토리지 컨트롤러는 주 스토리지 시스템의 캐쉬, P를 수정한다. 데이터 미러링의 한 부분으로서, 주 스토리지 컨트롤러는 트랙 T에 연관된 데이터를 보조 스토리지 컨트롤러에 전송하기 시작한다. 따라서, 그 다음에 보조 스토리지 시스템의 캐쉬는 수정된다. 이때에, 주 스토리지 시스템에 크래쉬(crashes)가 일어나면, 주 캐쉬 내의 트랙 T를 위한 데이터는 소실된다. 이것은 주 스토리지 디스크에 트랙 T의 데이터의 실제적 쓰기(actual writing) 전에 일어나기 때문이다. 그 결과, 주 시스템의 지정된 저장 위치에서 데이터는 상기 보조 시스템에서의 데이터와 다르게 된다. 이것을 보상하기 위해 - 일단 주 시스템을 재기동(restart) 시키면, 주 시스템을 갱신하기 위해(bring up the primary system to date) 보조 시스템으로부터 데이터가 주 시스템으로 복사된다. 만일 주 스토리지 컨트롤러와 보조 스토리지 컨트롤러가 어느 트랙들에서 다른지가 알려지지 않으면, 모든 데이터가 복사되어야 한다.
불행히도, 보조 시스템의 모든 데이터를 주 시스템으로 다시 복사하는 것은 엄청나게 많은(forbiddingly) 비용이 들 수 있다.
따라서, 주 시스템과 보조시스템에서 다른 트랙들의 표시들을 유지할 방법들 과 장치들이 필요하다. 본 발명의 방법들과 장치는 인-플라이트 데이터(in-flight data)에 적용되는 것이 바람직하며, 영속적이다.(즉, 시스템 크래쉬에도 살아남을 수 있다)
본 발명의 제1 실시 예의 제공을 통해서 선행 기술의 문제들이 극복되고 추가적인 이점들이 제공된다. 본 발명의 제1의 실시 예는 프로세싱 시스템에서 사용하기에 적합한(adapted) 스토리지 유니트를 포함하되 상기 스토리지 유니트는, 적어도 두 개의 컴퓨트 노드들(compute nodes)을 포함하는 컨트롤러 - 각각의 컴퓨트 노드들은 쓰기/읽기 캐쉬와 영구 캐쉬(persistent cashe)를 포함함; 기계 판독 가능한 매체 내에 저장된 기계 실행 가능 명령들(machine executable instructions)- 상기 명령들은 영구 캐쉬 내의 인-플라이트(in-flight) 데이터 트래킹(tracking)을 위한 명령들과 컨트롤러의 실패 이후에 인-플라이트(in-flight) 데이터 세그먼트들의 목록을 작성하는 명령들을 포함함 - 포함한다.
다른 실시 예에서, 상기 발명은 프로세싱 시스템을 포함하되, 상기 프로세싱 시스템은 : 다수의 대용량 스토리지 유니트들 - 대용량 스토리지 유니트들 중 적어도 제 1 유니트는 컨트롤러를 포함하고, 상기 컨트롤러는 적어도 두 개의 컴퓨트 노드들(compute nodes)을 포함하며, 컴퓨트 노드들 각각은 쓰기/읽기 캐쉬와 영구 캐쉬(persistent cashe)를 포함함; 기계 판독 가능한 매체 내에 저장된 기계 실행 가능 명령들(machine executable instructions)- 상기 명령들은 영구 캐쉬 내의 인-플라이트(in-flight) 데이터 트래킹(tracking)을 위한 명령들과 컨트롤러의 실패 이후에 인-플라이트(in-flight) 데이터 세그먼트들의 목록을 작성하는 명령들을 포함함 - 포함한다.
다른 실시 예에서, 본 발명은 로컬 대용량 스토리지 유니트에 데이터를 저장 하기 위한 방법을 포함하되, 상기 방법은 로컬 대용량 스토리지 유니트의 듀얼-노드 컨트롤러의 제 1 노드의 캐쉬에 데이터를 저장하는 단계; 상기 컨트롤러의 제 2 노드의 비휘발성 스토리지 내에 상기 데이터를 복사하는 단계; 원격 대용량 스토리지 유니트 내에 저장을 위해 원격 컨트롤러로 상기 데이터를 전송하는 단계; 상기 로컬 대용량 스토리지 유니트 및 상기 원격 대용량 스토리지 유니트 내에 데이터가 저장되는 동안 대기하는 단계; 및 상기 데이터의 로컬 및 원격 쓰기 완료 후 상기 비휘발성 스토리지 내의 데이터를 폐기하는 단계를 포함한다.
추가 특징들 및 장점들이 본 발명의 기술을 통해 실현된다. 다른 실시 예들 및 발명의 특징들(aspects)이 이후에 상세히 기술될 것이며, 청구항의 일부에 포함될 것이다. 본 발명의 장점들과 특징들을 더욱 잘 이해하기 위해서 발명의 상세한 설명과 도면을 참조한다.
본 발명은 다수의 컴퓨팅 노드들(즉, 적어도 두 개의 컴퓨팅 노드들) 구현할 수 있는 동기 원격 미러링 시스템의 주 스토리지 및 보조 스토리지 사이의 차이들을 트래킹 및 해결하기 위한 방법들 및 장치들이다.
상기 방법들과 장치들은 미러링과 시스템 복구를 계속하는 동안 성능 저하를 최소화한다. 상기 제공된 해결방안은 "인-플라이트(in-flight)" 데이터의 쓰기들 트래킹을 위한 각각의 스토리지 컨트롤러들의 비-휘발성 스토리지(NVS) 사용을 포함한다. 일반적으로, 데이터의 쓰기가 진행중(ongoing)이거나 혹은 완성되지 않 은(incomplete) 호스트로부터의 데이터를 "인-플라이트(in-flight)"라 한다. 비-휘발성 스토리지로부터의 정보는 복구를 위해 사용될 수 있다. 일반적으로, NVS에 트랙 데이터의 존재는 그 트랙이 인-플라이트라는 표시로 간주된다. 전술한 바와 같이, 데이터의 "트랙(track)"은 일반적으로 하드디스크 위에 지정된 트랙과 같이, 특정 영구 스토리지 로케이션에 대해 지정된 데이터의 블록을 말한다. 따라서, "트랙", "블록", "세그먼트", "섹터", "파일"과 같은 용어들 및 기타 유사한 용어들은, 적어도 어떤 점에서는 동의어들이며, 본 설명에서 차이가 없다.
결과적으로, 주 스토리지 시스템이 있는 사이트(primary site)의 호스트 응용 프로그램은 향상된 응답 시간을 경험할 것이다. 쓰기들이 일관성없는 상태를 만들지 않도록 복구 작업에 주의를 기울여야한다. 서론을 마치고, 이제 본 발명의 가르침을 실시하는 프로세싱 시스템의 특징들을 살펴보자.
도 1은, 본 발명의 구현을 위한 프로세싱 시스템(100)의 한 실시 예를 보여준다. 이 실시 예에서, 시스템(100)은 하나 혹은 그 이상의 중앙 처리 유니트들(프로세서들)(101a, 101b, 101c, 등)(집합적으로 혹은 일반적으로 프로세서(들)(101)라 한다.)을 가진다. 이 실시 예에서, 프로세서(101) 각각은 축소 명령 세트 컴퓨터(RISC) 마이크로프로세서를 포함할 수 있다. 프로세서들(101)은 시스템 버스(113)를 통해 시스템 메모리(114)와 기타 다양한 구성 요소들에 결합된다. 읽기전용 기억 장치(ROM)(102)는 시스템 버스(113)에 결합하며 기본입출력시스템(BIOS)을 포함할 수 있다. 여기서 BIOS는 시스템(100)의 특정 기초 기능들(certain basic functions)을 통제한다.
도 1은 또한 입력/출력(I/O) 어답터(107)과 네트워크 어답터(106)이 시스템 버스(113)에 결합된 것을 보여준다. I/O 어답터(107)은 제 1의 대용량 스토리지 유니트(104)와 통신하는 소형 컴퓨터 시스템 인터페이스(SCSI) 어답터가 될 수 있다. 제 1의 대용량 스토리지 유니트(104)는, 예를 들어, 다수의 하드디스크들(103a, 103b, 103c, 등)과/혹은 테이프 드라이브, 광학 디스크, 그리고 매그네토-광학(megneto-optical) 디스크와 같은 다른 스토리지 유니트(105) 혹은 기타 유사한 구성요소들을 포함할 수 있다. 일반적으로, 제 1 스토리지 유니트(104)는 듀얼 노드 컨트롤러(201)를 포함하는데, 이는 나중에 더 자세히 설명한다. 네트워크 어답터(106)은 버스(113)을 외부 네트워크(116)과 서로 연결하는데(interconnect), 이는 데이터 프로세싱 시스템(100)이 다른 비슷한 시스템들과 통신할 수 있도록 한다. 스크린(예를 들어, 디스플레이 모니터)(115)는 디스플레이 어답터(112)에 의해 시스템 버스(113)에 연결될 수 있다. 여기서 디스플레이 어답터는 그래픽 집중 어플리케이션들(graphics intensive applications)의 성능을 향상시키는 그래픽 어답터와 비디오 컨트롤러를 포함할 수 있다. 한 실시 예에서, 어답터들(107,106, 112)는 시스템 버스(113)을 통해 중간 버스 브릿지(도시되지않음)와 연결되는 하나 혹은 그 이상의 I/O 버스들과 접속될 수 있다. 하드디스크 컨트롤러들, 네트워크 어답터들, 그래픽 어답터들과 같은 주변 장치들을 접속하는 적합한 I/O 버스들은, 주변 장치 인터페이스(Peripheral Components Interface : PCI)와 같은, 공통 프로토콜들(common protocols)을 통상적으로 포함한다. 추가적인 선택적 입/출력 장치들이 사용자 인터페이스 어답터(108)와 디스플레이 어답터(112)를 통해 시스템 버 스(113)에 접속된 것을 볼 수 있다. 키보드(109), 마우스(110), 및 스피커(111)은 모두 사용자 인터페이스 어답터(108)을 통해 버스(113)에 접속되었다. 여기서, 사용자 인터페이스 어답터는, 예를 들어, 다수의 장치 어답터들을 단일 집적회로들을 집적하여 만들어지는 하나의 수퍼 I/O 칩을 포함할 수 있다.
프로세싱 시스템(100)이 데이터 미러링 능력을 포함하는 실시 예들에서, 전술한 바와 같이, 프로세싱 시스템(100)은 제 2 대용량 스토리지 유니트(124)를 포함한다. 설명을 간단히 하기 위해서, 제 2 대용량 스토리지 유니트(124)는 제1의 대용량 스토리지 유니트(104)와 동일한 구성요소들을 포함하는 것으로 한다. 상기 제 2 대용량 스토리지 유니트(124)는 또한 "원격 스토리지 유니트"로 일컬어질 수도 있고 다른 유사한 명칭으로 일컬어질 수도 있다. 제 2 대용량 스토리지 유니트(124)는 반드시 제 1 대용량 스토리지 유니트(104)와 동일한 구성요소들을 포함할 필요는 없다. 예를 들어, 다른 유형의 하드디스크(123) 또는 다른 스토리지 유니트(125)도 사용될 수 있다. 그러나, 일반적으로 제 2 스토리지 유니트(124)를 컨트롤하기 위한 원격 컨트롤러(220)은 듀얼 노드 컨트롤러(220)이지만, 또한 이것도 필수는 아니다.
참조의 편의를 위해, 프로세싱 시스템(100)의 한 부분을 "호스트(117)"라 하자. 이 부분은 데이터(120)을 제 1 대용량 스토리지(104)에 제공하거나 다른 기능들을 수행할 수 있다. 일반적으로, 데이터(120)의 저장 및 검색과 관련된 처리들(transactions)은 호스트(117)와 제 1 대용량 스토리지(104) 사이의 통신을 통해서 수행된다. 또한, 제1 대용량 스토리지(104)는 제 2 대용량 스토리지(124)에 데 이터(120)(트랙들, 블록들, 섹터들, 파일들의 형태로 그리고 기타 유사한 형태로)을 제공하거나 및/혹은 이로부터 데이터(120)을 검색합니다. 물론, 추가로 대용량 스토리지 유니트들이 포함될 수 있지만, 그러나, 설명을 간단히 하기 위해,여기서 대용량 스토리지 유니트들은 제 1 및 제 2의 대용량 스토리지 유니트들로 한정한다.
따라서, 도 1 에서 구성한 것처럼, 시스템(100)은 프로세서들(101)의 형태의 처리 수단(processing means), 시스템 메모리(114) 및 대용량 스토리지(104)를 포함하는 저장 수단, 키보드(109) 및 마우스(110)를 포함하는 입력 수단, 스피커(111) 및 디스플레이(115)를 포함하는 출력 수단을 포함한다. 한 실시 예에서, 도 1에서 보여준 다양한 구성요소들의 기능들을 조정하기 위하여(coordinate) 시스템 메모리(114) 및 대용량 스토리지(104)의 일부는 공동으로(collectively)IBM 코퍼레이션의 운영체제인 AIX® 같은 운영체제를 저장한다.
상기 시스템(100)은 모든 적합한 컴퓨터 혹은 컴퓨팅 플랫폼가 될 수 있고, 그리고 터미널, 무선 디바이스, 정보 기구, 디바이스, 워크스테이션, 미니-컴퓨터, 메인프레임 컴퓨터 혹은 기타 컴퓨팅 디바이스를 포함할 수 있다.
시스템(100)에 의해 지원될 수 있는 운영체제들의 예들에는 Windows 95, Windows 98, Windows NT 4.0, Windows XP, Windows 2000, Windows CE, Windows Vista, Macintoch, Java, LINUX, 그리고 UNIX, 혹은 기타 적합한 운영체제가 포함된다. 시스템(100)은 또한 네트워크(116)을 넘어 통신하기 위해 네트워크 인터페이스(106)를 포함한다. 네트워크(116)은 로컬-에어리어 네트워크(LAN), 메트로-에어 리어 네크워크(MAN), 또는 인터넷 혹은 월드 와이드 웹과 같은 와이드-에어리어 네트워크(WAN), 또는 기타 종류의 네트워크가 될 수 있다.
시스템(100)의 사용자는 표준의 전화선들, 디지털 가입자 선, LAN 혹은 WAN 링크들(예, T1, T3), 브로드밴드 커넥션들(프레임 릴레이,ATM), 그리고 무선 커넥션들(예, 802.11(a),802.11(b),802.11(g))과 같은 모든 적합한 네트워크 인터페이스(106) 커넥션을 통해서 네트워크(116)로 연결할 수 있다.
물론, 프로세싱 시스템(100)은 현재 알려져 있는 기술 혹은 미래에 고안될 기술에서 보다 더 적은 혹은 더 많은 구성 요소들을 포함할 수 있다.
여기서, 프로세싱 시스템(100)은 기계 판독 가능한 미디어(예를들어, 하드디스크(103))에 저장된 기계 판독 가능한 명령들을 포함할 수 있다. 여기서 그러한 명령들은 "소프트웨어"라고 한다. 소프트웨어는 데이터 및 다른 형태의 정보와 마찬가지로 대용량 스토리지(104)에 데이터(120)로 저장되어 있을 수 있다.
일반적으로, 제 1 대용량 스토리지 유니트(104)는 컨트롤러 유니트(210), 캐쉬(202), 그리고 다수의 하드디스크들(103a,103b,103c)과 같은 백엔드 스토리지를 포함한다. 비-휘발성 스토리지(203)은(즉, 메모리, 영구 메모리도 포함될 수 있다)컨트롤러 유니트(210)의 한 부분(an aspect)으로 포함되거나, 그렇지 않으면 스토리지(104)에 포함될 수 있다. 백엔드 스토리지는 일반적으로 소프트웨어(120), 데이터 및 기타 정보 중 적어도 하나를 전자 정보로서 저장하기 위해 영구 기계 판독 가능 미디어를 포함한다.
종래 기술에서 알려진 것처럼, 컨트롤러 유니트(210)은 일반적으로 제 1 대 용량 저장 유니트(104)의 운영을 제어하기 위한 명령들을 포함한다. 상기 명령들은, 제 1 대용량 스토리지 유니트(104)를 위한 빌트-인-운영체제(built-in-operation system)(전원을 켯을 때 컨트롤러 유니트(210)의 메모리에 로드되는 소프트웨어 같은)로, 컨트롤러 유니트(210)의 보드 위에 펌웨어(읽기 전용 기억장치(ROM) 내와 같은)로 포함되거나, 혹은 제 1 대용량 스토리지 유니트(104)를 제어하기 위한 명령들을 포함하는 종래 기술에서 알려진 다른 기술들에 의해서 포함될 수 있다.
선행 기술과 비교하여 본 발명의 우수성을 확인하기 위하여 주목할 것은, 일부 컨트롤러들(210)에서, 두 개의 컴퓨트 노드들을 사용함으로써 호스트 쓰기 오퍼레이션들의 속도 증가(speed-up)가 상당히(significant) 달성되었다는 사실이다. 여기서 두 개의 컴퓨트 노드들 각각은 읽기 / 쓰기 캐쉬(202) 및 영구 쓰기 캐쉬(이하에서 이를 비 휘발성 스토리지, NVS(203)이라 한다)를 사용한다. 호스트 쓰기(host write)는 하나의 노드인 읽기/쓰기 캐쉬(202)에 대하여 그리고 다른 하나의 노드인 캐쉬 NVS(203)에 각각 쓰여진다(written). 이것이 완료되면, 비록 노드들 중 하나가 고장나더라도(fails), 상기 쓰여진 데이터(the written data)는 복구가 가능하며, 그리고 호스트(117)은 성공적 상태에 있음을 나타낸다. 상기 쓰여진 데이터가 상기 첫 번째 노드인 읽기/쓰기 캐쉬(202)로부터 디스크에 복사되면(a destage operation), NVS에서 대응 엔트리(the corresponding entry)는 삭제된다. 도 2의 다음 예를 살펴보자.
도 2의 종래기술의 예에서, 컨트롤러 유니트(210)는 다수의 노드들(이 예에 서는, 두 개의 노드들, 혹은 듀얼-노드 컨트롤러(210)이다)을 포함한다. 각 노드는 캐쉬(202), 비-휘발성 스토리지(203) 및 백엔드 스토리지(201)를 포함한다. 이 예에서, 데이터의 전송은 주어진 데이터 블록을 노드 1인 캐쉬(202)에, 그리고 노드 2인 NVS(203)에 쓰는 작업(writing)을 포함했다(involved). 상기 데이터 블록이 노드 1의 디스크에 쓰여진(기록된) 후에는 상기 데이터 블록은 노드 2인 NVS(203)으로부터 폐기된다.
일부 컨트롤러들(210)에서, 두 개의 노드들 간의 통신은 상당히(relatively) 비싸다. 두 개의 노드들 간에 메시지를 주고 받음에 의해서 비동기 구조(Out-of- Sync structure)를 유지하는 것은 굿 패쓰 성능(good path performance)에 영향(impact)을 줄 수 있다. 일반적으로, 그리고 관행적으로, 인-플라이트 데이터의 트랙을 유지하기 위한 명령들은 "쓰기 트래킹"을 제공하기 위한 명령들이라 한다. 일반적으로, 쓰기 트래킹은 NVS(203)의 데이터 세그먼트의 인-플라이트 쓰기가 현재 존재함(presence)을 영구 표시(persistent indication)로 식별한다(identify). 만일 주 스토리지 시스템에서 식별된 데이터 세그먼트와 보조 스토리지 시스템에서 식별된 데이터 세그먼트가 다르면, 연관된 비 휘발성 아웃오브싱크(Out-Of-Sync : OOS)비트가 온(on)이 되거나, 혹은 상기 데이터는 NVS(203)에 사본(copy)를 가지고 있다. 쓰기 트래킹에 관하여 더 상세한 설명을 위해 도 3 및 4를 지금부터 참조한다.
도 3은 데이터를 저장하기 위한 방법(300)을 보여준다. 데이터를 저장하기 위한 방법(300)은 원격 데이터 미러링 시스템에서 사용되는 다수 노드 컨트롤러(듀 얼 노드 컨트롤러 같은)위해서 높은 데이터 무결성(high integrity of data)을 달성한다(esure).데이터를 저장하기 위한 방법(300)의 제 1 단계(301)에서, 상기 컨트롤러는 제 1 캐쉬에 데이터 블록을 로드한다. 제 2 단계(302)에서, 상기 컨트롤러는 상기 동일 블록의 데이터를 제2 노드의 비휘발성 스토리지에 로드한다. 제 3 단계(303)에서, 상기 블록의 데이터는 그 다음 원격 스토리지 컨트롤러에 보내진다. 제 4 단계(304)에서, 로컬 컨트롤러는 그 다음 상기 원격 스토리지에서 데이터 쓰기가 완료되었는지 시험한다. 제 5 단계(305)에서도, 비슷하게, 로컬 컨트롤러는 로컬 디스크에 데이터의 쓰기가 완료되었는 지 시험한다. 만일 제4 단계(304) 및 제 5 단계(305) 둘 중에 적어도 하나에서 완료되지 않았다면, 상기 컨트롤러는 로컬 및 원격 로케이션들 양쪽 모두에서 데이터 쓰기가 완료되기를 대기한다. 제 4 단계(304) 및 제 5 단계(305)는 동시에 완료될 수 있다. 제 6 단계(306)에서, 일단 로컬 및 원격 쓰기가 완료되면, 제 2 노드의 비휘발성 스토리지로부터 데이터 블록은 폐기된다.
도 4에서, 고장, 예를 들어, 로컬 컨트롤러(210)의 제1 노드의 고장이 일어난 후 데이터 복구를 하기 위한 방법(400)이 보여진다. 제 1 단계(401)에서, 상기 로컬 컨트롤러는 제 2 노드의 비휘발성 스토리지로부터 데이터 블록의 목록을 받는다. 제 2 단계에서, 상기 로컬 컨트롤러는 그 다음 상기 원격 컨트롤러로부터 연관된 데이터를 요청하여 받고 그 데이터를 로컬 스토리지에 쓴다(기록한다).
일부 실시 예들에서, 제 2의 대용량 스토리지 유니트(124)에 데이터 전송이 실패하면, 전송되지 않은 데이터의 세그먼트(들)의 캐쉬 엔트리는, 하나의 비트를 사용하여, 표시된다. 표시된 트랙을 디스테이지(destaging)할 때, NVS(203)의 연관된 사본을 해제하기(freeing) 전에, 상기 OOS 비트는 세트되고 영구화된다.
일부 실시 예들에서, 트랙들은 보조 스토리지 시스템으로 전송된 직후(immediately after) 제 1 노드 상에서 디스테이지 되지 않고 제 2 노드상의 NVS(203)으로부터 폐기된다. 그러한 실시 예들에서, NVS(203)의 트랙들은 성공적으로 전송되었다는 표시가 되기까지는 인 플라이트로 간주된다. N 세크멘트들의 데이터가 성공적으로 전송되었을 때는, 이들 N 세크멘트들의 데이터가 성공적으로 전송되었음을 연관된 NVS 엔트리들에 표시를 하기 위하여 메시지를 NVS(203)에 전송한다. 이 메시지는 비동기로(asynchronous) 될 수 있다(트랙들을 디스테이지하는 것은 성공적 리턴 스테이터스(return status)를 기다릴 필요가 없다) - 실패가 페일백 타임(failback time)상에 작은 영향은 줄 수 있지만, 무결성 문제(integrity problem)를 야기하지는 않는다. 단순화하기 위해 N을 1로 하거나, 혹은 성능 최적화를 위해 더 큰 수로 할 수 있다. 페일백(제 1 노드의 복구) 동안 OOS 비트는 NVS에 사본을 가지고 있고 미러된 볼륨(a mirrored volume)에 속하며 성공적으로 전송되었다고 표시되지 않은 모든 인-플라이트 데이터를 위하여 세트된다. 이러한 방법(scheme)은 오버헤드(overhead)를 대부분 호스트 입력/출력 패쓰(the host input/output path) 밖으로 부가하는 장점을 갖고 있다.
본 발명의 가능성(capabilities)은 소프트웨어로, 펌웨어로, 하드웨어로 혹은 이들의 조합으로 구현될 수 있다. 한 예로서, 컨트롤러 유니트(210)은 백엔드 스토리지, 비휘발성 스토리지(203), 로컬 읽기 전용 메모리(ROM) 그리고 기타 그러 한 로케이션들 중 적어도 하나로부터 로드된 기계 실행 가능 명령들로서 명령들을 구현할 수 있다.
본 발명의 하나 혹은 그 이상의 특징들(aspects)은, 예를 들어, 컴퓨터 사용가능 매체를 갖는 제품(예, 하나 혹은 그 이상의 컴퓨터 프로그램 제품들)에 포함될 수 있다. 그러한 매체는 본 발명의 가능성을 제공하고 용이하게 구현하기 위해 자신의 내부(therein)에, 예를 들어, 컴퓨터 판독 가능 프로그램 코드 수단을 수록한다. 그러한 제품(the article of manufacture)은 컴퓨터 시스템의 일부로서 포함될 수 있고 또는 개별적으로 판매될 수도 있다.
본 발명의 가능성을 수행하기 위하여 기계에 의하여 실행 가능한 명령들 중 적어도 하나의 프로그램을 구체적으로(tangibly) 수록하는(embodying), 기계에 의해서 판독 가능한 적어도 하나의 프로그램 스토리지 디바이스가, 추가적으로, 제공될 수 있다.
여기서 설명한 플로우 다어어그램들은 단지 예들로서 보여준 것이다. 본 발명의 정신을 벗어남이 없이 거기에 기술된 이들 다이어그램들 혹은 스텝들(혹은 오퍼레이션들)에 대하여는 많은 변경들이 가능하다. 예를 들어, 그러한 스텝들은 다른 순서로(in differing order) 수행될 수도 있고, 또는 스텝들이 추가되거나(added), 삭제되거나(deleted) 혹은 변경될 수(modified) 있다. 지금까지 본 발명의 바람직한 실시 예들을 기술하였지만, 현재와 미래의, 당업자들이 다음에 오는 청구항들의 범위 내에 속하는 다양한 개선들과 개량들을 만들 수 있음이 이해될 것이다. 이들 청구항들은 일차적으로 기술된 본 발명을 위한 적절한 보호를 유지하기 위한 것으로 해석되어야 한다.
본 발명의 주제는 상세한 설명 말미에 첨부된 청구항들에 구체적으로 기재되고 명확하게 청구되어 있다. 본 발명의 전술한 그리고 기타 목적들, 특징들, 장점들은 상세 설명과 첨부된 도면들을 참조함으로써 명백하게 알 수 있을 것이다 ;
도 1은 상세한 설명에서 개시한 스토리지 시스템을 사용하는 프로세싱 시스템의 한 예를 도시한 것이다.
도 2는 종래 기술의 저장 컨트롤러를 도시한 것이다.
도 3과 4는 쓰기 데이터의 트래킹과 실패한 쓰기 들로부터 복구을 위한 프로세스를 도시하는 플로우 차트이다.
발명의 상세한 설명은 본 발명의 바람직한 실시 예들을 설명하는데, 도면들을 참조하고, 예를 드는 방식으로 장점들과 특징들을 함께 설명한다.

Claims (13)

  1. 로컬 대용량 스토리지 유닛(a local mass storage unit)에 데이터를 저장하는 방법에 있어서,
    상기 방법은,
    상기 로컬 대용량 스토리지 유닛의 듀얼-노드 컨트롤러의 제1 노드의 제1 캐쉬에 데이터를 저장하는 단계 - 상기 듀얼-노드 컨트롤러는 상기 제1 노드와 제2 노드를 포함하고, 상기 제1 노드는 상기 제1 캐쉬와 제1 비휘발성 스토리지를 포함하고, 상기 제2 노드는 제2 캐쉬와 제2 비휘발성 스토리지를 포함함 - ;
    상기 듀얼-노드 컨트롤러의 상기 제2 노드의 상기 비휘발성 스토리지에 상기 데이터를 복사하는 단계;
    원격 대용량 스토리지 유닛에 저장하기 위해 원격 컨트롤러로 상기 데이터를 전송하는 단계;
    상기 데이터가 상기 로컬 대용량 스토리지 유닛 및 상기 원격 대용량 스토리지에 저장되는 것을 대기하는 단계;
    상기 데이터의 로컬 및 원격 쓰기 후 상기 비휘발성 스토리지의 상기 제2 비휘발성 스토리지의 상기 데이터를 폐기하는 단계;
    상기 제1 노드의 상기 제1 캐쉬에 저장되고 상기 제2 노드의 상기 제2 비휘발성 스토리지에 복사된 상기 데이터는 호스트로부터 계속 진행중인(ongoing) 인-플라이트 데이터(in-flight data)이고,
    인-플라이트 데이터 세그먼트들로 상기 제2 노드의 상기 제2 비휘발성 스토리지의 상기 인-플라이트 데이터를 트랙킹(tracking)하고, 상기 듀얼-노드 컨트롤러의 상기 제1 노드의 고장(failure)에 응답하여 상기 제2 비휘발성 스토리지 내의 상기 인-플라이트 데이터 세그먼트들의 목록을 작성하는 단계;를 포함하는,
    로컬 대용량 스토리지 유닛에 데이터를 저장하는 방법.
  2. 제1항에 있어서, 상기 듀얼-노드 컨트롤러의 상기 제1 노드의 고장 후 및 상기 로컬 대용량 스토리지 유닛의 복구 동안에, 상기 제 2 노드의 상기 제2 비휘발성 스토리지의 인-플라이트 데이터 세그먼트들의 목록을 받는 단계; 및
    상기 원격 대용량 스토리지 유닛으로부터 상기 로컬 대용량 스토리지 유닛으로 상기 인-플라이트 데이터 세트먼트들의 내용을 복사하는 단계;를 더 포함하는,
    로컬 대용량 스토리지 유닛에 데이터를 저장하는 방법.
  3. 제1항에 있어서, 상기 대기하는 단계는,
    상기 원격 대용량 스토리지 유닛에 대해 쓰기가 완료되었는지를 테스팅하는 단계를 포함하는,
    로컬 대용량 스토리지 유닛에 데이터를 저장하는 방법.
  4. 제1항에 있어서, 상기 대기하는 단계는,
    상기 로컬 대용량 스토리지 유닛에 대해 쓰기가 완료되었는지를 테스팅하는 단계를 포함하는,
    로컬 대용량 스토리지 유닛에 데이터를 저장하는 방법
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
KR1020090121111A 2008-12-08 2009-12-08 듀얼 노드 스토리지 컨트롤러에서 인-플라이트 데이터의 트래킹을 위한 효율적인 방법과 장치 KR101154620B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/329,965 US8176363B2 (en) 2008-12-08 2008-12-08 Efficient method and apparatus for keeping track of in flight data in a dual node storage controller
US12/329,965 2008-12-08

Publications (2)

Publication Number Publication Date
KR20100066398A KR20100066398A (ko) 2010-06-17
KR101154620B1 true KR101154620B1 (ko) 2012-07-10

Family

ID=42232432

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090121111A KR101154620B1 (ko) 2008-12-08 2009-12-08 듀얼 노드 스토리지 컨트롤러에서 인-플라이트 데이터의 트래킹을 위한 효율적인 방법과 장치

Country Status (2)

Country Link
US (1) US8176363B2 (ko)
KR (1) KR101154620B1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8492931B2 (en) 2009-12-02 2013-07-23 Kmw Inc. Selecting structure for device
US9396102B2 (en) 2012-09-14 2016-07-19 International Business Machines Corporation Recovery from cache and NVS out of sync
JP6305826B2 (ja) * 2014-05-13 2018-04-04 アルパイン株式会社 車載機器及び機器認証方法
US9571575B2 (en) * 2014-08-29 2017-02-14 Netapp, Inc. Granular sync/semi-sync architecture
US9226000B1 (en) * 2014-09-11 2015-12-29 Rockwell Collins, Inc. Content distribution system and method
WO2017117531A1 (en) * 2015-12-30 2017-07-06 Voxx International Corporation Interchangeable rear seat infotainment system
US9996434B2 (en) * 2016-10-28 2018-06-12 International Business Machines Corporation Data mirror volume verification
US11365007B2 (en) * 2019-10-24 2022-06-21 Panasonic Avionics Corporation Systems and methods for providing a wake-up user interface for a night mode on transportation vehicles
US11102519B2 (en) * 2020-01-15 2021-08-24 Panasonic Avionics Corporation Centralized architecture for in-vehicle entertainment systems
US10972760B1 (en) * 2020-03-05 2021-04-06 Panasonic Avionics Corporation Secure testing of vehicle entertainment systems for commercial passenger vehicles
US11445231B1 (en) 2021-06-23 2022-09-13 Panasonic Avionics Corporation Credential management systems and associated methods thereof for streaming content on a transportation vehicle
US11492119B1 (en) * 2021-06-23 2022-11-08 Panasonic Avionics Corporation Methods and systems for streaming content on a transportation vehicle
US11606583B1 (en) * 2022-06-08 2023-03-14 Panasonic Avionics Corporation Distributed data storage for in-vehicle entertainment system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050188254A1 (en) * 2000-05-25 2005-08-25 Hitachi, Ltd. Storage system making possible data synchronization confirmation at time of asynchronous remote copy
JP2008108257A (ja) * 2006-10-23 2008-05-08 Hewlett-Packard Development Co Lp 不揮発性記憶装置

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5619644A (en) * 1995-09-18 1997-04-08 International Business Machines Corporation Software directed microcode state save for distributed storage controller
US6279078B1 (en) * 1996-06-28 2001-08-21 Compaq Computer Corporation Apparatus and method for synchronizing a cache mode in a dual controller, dual cache memory system operating in a plurality of cache modes
US6073209A (en) * 1997-03-31 2000-06-06 Ark Research Corporation Data storage controller providing multiple hosts with access to multiple storage subsystems
US6578120B1 (en) 1997-06-24 2003-06-10 International Business Machines Corporation Synchronization and resynchronization of loosely-coupled copy operations between a primary and a remote secondary DASD volume under concurrent updating
US7103797B1 (en) * 1998-03-30 2006-09-05 Emc Corporation Resource allocation throttling in remote data mirroring system
US6178521B1 (en) * 1998-05-22 2001-01-23 Compaq Computer Corporation Method and apparatus for disaster tolerant computer system using cascaded storage controllers
US6823349B1 (en) 2001-09-21 2004-11-23 Emc Corporation Method and system for establishing, maintaining, and using a persistent fracture log
US7028218B2 (en) * 2002-12-02 2006-04-11 Emc Corporation Redundant multi-processor and logical processor configuration for a file server
US7210061B2 (en) * 2003-04-17 2007-04-24 Hewlett-Packard Development, L.P. Data redundancy for writes using remote storage system cache memory
US7188272B2 (en) * 2003-09-29 2007-03-06 International Business Machines Corporation Method, system and article of manufacture for recovery from a failure in a cascading PPRC system
US7243190B2 (en) 2004-02-13 2007-07-10 International Business Machines Corporation Apparatus and method to rebuild an NVS image using cache data
US7165141B2 (en) * 2004-02-27 2007-01-16 Hewlett-Packard Development Company, L.P. Daisy-chained device-mirroring architecture
US7287139B2 (en) 2004-07-23 2007-10-23 International Business Machines Corporation Maintenance of persistent data using bitmaps
JP2006065697A (ja) * 2004-08-27 2006-03-09 Hitachi Ltd 記憶デバイス制御装置
JP4920291B2 (ja) * 2006-04-18 2012-04-18 株式会社日立製作所 計算機システム、アクセス制御方法及び管理計算機
US7506112B2 (en) * 2006-07-14 2009-03-17 Sun Microsystems, Inc. Reducing bitmap management overhead
US7849350B2 (en) * 2006-09-28 2010-12-07 Emc Corporation Responding to a storage processor failure with continued write caching
JP5244332B2 (ja) * 2006-10-30 2013-07-24 株式会社日立製作所 情報システム、データ転送方法及びデータ保護方法
GB0622140D0 (en) * 2006-11-07 2006-12-20 Ibm Suspension of asynchronous remote copying system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050188254A1 (en) * 2000-05-25 2005-08-25 Hitachi, Ltd. Storage system making possible data synchronization confirmation at time of asynchronous remote copy
JP2008108257A (ja) * 2006-10-23 2008-05-08 Hewlett-Packard Development Co Lp 不揮発性記憶装置

Also Published As

Publication number Publication date
US20100146348A1 (en) 2010-06-10
KR20100066398A (ko) 2010-06-17
US8176363B2 (en) 2012-05-08

Similar Documents

Publication Publication Date Title
KR101154620B1 (ko) 듀얼 노드 스토리지 컨트롤러에서 인-플라이트 데이터의 트래킹을 위한 효율적인 방법과 장치
JP5390067B2 (ja) データのブロックを伝送するための優先順位方式
US20100049926A1 (en) Enhancement of data mirroring to provide parallel processing of overlapping writes
US7613890B1 (en) Consistent replication across multiple storage devices
US7921273B2 (en) Method, system, and article of manufacture for remote copying of data
US20100049927A1 (en) Enhancement of data mirroring to provide parallel processing of overlapping writes
US8046548B1 (en) Maintaining data consistency in mirrored cluster storage systems using bitmap write-intent logging
US8005800B2 (en) Data storage system for fast reverse restore
US6912669B2 (en) Method and apparatus for maintaining cache coherency in a storage system
US7890697B2 (en) System and program for demoting tracks from cache
US6330642B1 (en) Three interconnected raid disk controller data processing system architecture
US20180293145A1 (en) Managing health conditions to determine when to restart replication after a swap triggered by a storage health event
JP2004252686A (ja) 情報処理システム
JP2002149499A (ja) データの完全性を備えるリモートコピーシステム
US10664189B2 (en) Performance in synchronous data replication environments
US7650476B2 (en) System, method and computer program product for generating a consistent point in time copy of data
JP2005122453A (ja) ストレージ装置のディスクコントローラ制御方式およびストレージ装置
US7219267B2 (en) Method, system, and program for data corruption detection and fault isolation
US7035978B2 (en) Method, system, and program for policies for improving throughput in remote mirroring systems
US8593918B1 (en) Maintaining tape emulation consistency
US20220083564A1 (en) Maintaining consistency of asynchronous replication
JP4294692B2 (ja) 情報処理システム

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee