도찐개찐
[폴트 톨러런스] Fault Tolerant 본문
출처 : http://cafe.naver.com/nonstoptandem.cafe
Fault Tolerant 컴퓨터 시스템이란?
Fault Tolerant 컴퓨터 시스템이란 시스템내의 어느 한 부품 또는 어느 한 모듈에 Fault (장애)가 발생하더라도 시스템운영에 전혀 지장을 주지 않도록 설계된 컴퓨터 시스템이다. Fault Tolerant 컴퓨터 시스템내의 대부분의 부품 또는 모듈은 시스템이 운영되거나 응용 프로그램이 돌아가는 동안에라도 빼내거나 장착할 수가 있다. 따라서 고장난 모듈을 On-Line 상태에서 사용자가 전혀 모르게 교환이 가능하며, 어떠한 Fault가 발생하더라도 아무런 데이타의 손실 및 파괴없이 시스템은 정상동작을 계속한다.
은행이나 여행사 또는 통신서비스를 제공하는 전화국에서는 높은 신뢰도를 갖는 확장가능한 Fault Tolerant 컴퓨터 시스템을 절대적으로 필요로 하고 있다. 이러한 고객의 필요를 만족시키기 위하여 삼성과 Sequoia를 비롯한 여러 컴퓨터 시스템 회사들(SUN, Tandem, 그리고 Stratus)은 Fault Tolerant (장애허용) 컴퓨터 시스템을 개발하여 판매하고 있다.
Fault Tolerance의 단계
Fault Tolerance는 크게 3가지 단계를 거치면서 이루어지며, 이러한 단계들은 동작중인 응용 소프트웨어에 아무런 영향을 주지 않는다.
① Fault Detection (장애 감지)
② Fault Diagnosis (장애 진단)
③ Fault Recovery (장애 복구)
이 3가지 단계에 대하여 자세히 설명하면 다음과 같다.
● Fault Detection (장애 감지)
Fault Detection은 주로 하드웨어로 구성된 비교기(Compare Logic)을 통하여 이루어진다. 시스템내에서 Fault가 발생되면 해당 모듈 또는 시스템은 Fault 상태로 들어가게 된다. Fault가 발생되면 OS는 각 모든 하드웨어 모듈들의 상태를 분석하여 어느 모듈이 Fault를 유발시켰는가를 분석하여 알아낸다.
● Fault Diagnosis (장애 진단)
Fault는 일시적(Transient)이거나 영구적(Hard)일 수 있다. 만약 Fault가 영구적(Hard Fault)이라면 그 모듈을 시스템 구성에서 제거한다. 만약 Fault가 일시적(Transient Fault)이라면 즉, Fault가 발생하여 자기 진단을 수행한 결과 아무런 문제가 없다고 판단되면, 시스템은 일단 그 Fault를 Transient Fault로 인식하고 모든 동작을 계속 수행한다. 그러나 Transient Fault가 일정시간 동안에 정의된 수를 넘게 되면 OS는 이 또한 시스템 구성에서 제거한다.
● Fault Recovery (장애 복구)
Fault Recovery는 Fault를 유발한 모듈을 시스템에서 제거하여 시스템을 재구성하면서 이루어진다.
Fault Tolerance를 유지할 수 있는 중요한 기능 중 하나는 데이타를 항상 두개 복사하도록 해놓음으로써 Fault Tolerance를 유지시킨다는 점이다. 즉 CPU가 데이타 쓰기를 할 경우 항상 두개의 메모리에 저장시켜 놓는 “메모리 Shadowing”을 수행한다. 어느 한 CPU(또는 CPU 모듈)가 메모리에 있는 Process를 수행하는 과정에서 이상이 생기더라도 또 다른 메모리에 있는 데이타를 다른 CPU(또는 CPU 모듈)가 수행하게 함으로써 시스템에 영향을 전혀 주지 않고 Fault Tolerance를 유지할 수 있다.
컴퓨터 시스템의 종류
Fault Tolerant 컴퓨터 시스템의 이해를 돕기 위하여 컴퓨터 시스템의 종류를 알아보기로 한다.
① Conventional 컴퓨터 시스템 (일반적인 시스템)
② High Availability 컴퓨터 시스템
③ Dual Redundant 컴퓨터 시스템
● Conventional 컴퓨터 시스템
Conventional 컴퓨터 시스템이란 일반적으로 그다지 중요하지 않은 환경(Non-Critical Computing Environment)에 맞도록 설계되어 왔다. 예를 들면, 문서편집(Word Processor)이나 데이터처리(Spreadsheet) 또는 소프트웨어 개발업무 등에 사용하기 위하여 만들어 왔다. 이런 환경에서는 사용자가 어느 정도의 시스템 Down이나 데이타 손실을 감내할 수 있고, 컴퓨터 시스템에서 만들어지는 데이타는 그다지 치명적이지 않기 때문에 일일이 검사할 필요가 없다.
● High Availability 컴퓨터 시스템
사업분야가 컴퓨터 시스템에 의존하는 경우가 많아지면서 HA(High Availability) 컴퓨터 시스템의 기능과 수요가 많아지게 되었다. 대부분의 HA 컴퓨터 시스템은 보다 가용성이 높은 디스크 서브시스템과 외부전원의 Fault에 대한 보호장치를 갖고 있다. 즉 이런 시스템은 어느 정도 On-line 상태에서 수리가 가능하기 때문에 디스크와 전원에 관련된 Fault가 발생하더라도 시스템 동작에 영향을 주지 않고 처리할 수 있다. 그러나 대부분의 Fault (버스나 CPU 등의 Fault)가 발생되면서 시스템이 Crash 되거나 Down 되고, HA 컴퓨터 시스템에서는 현재 사용 중이거나 저장되어 있는 데이타가 맞는 것인지 알아낼 수 있는 비교기능이 없기 때문에 데이타의 안전성이 완벽하게 보장되지는 않는다.
● Dual Redundant 컴퓨터 시스템
두개의 시스템을 이중화시켜 한 시스템에 Fault가 발생되면 즉시 다른 시스템으로 작업을 계속할 수 있도록 설계된 시스템이다. 그러나 자동적으로 복구가 되지 않기 때문에 Fault 발생시 작업하던 데이터들의 손실을 감수하여야만 하는 단점이 있다.
Conventional 컴퓨터 시스템과 HA 컴퓨터 시스템, 그리고 Dual Redundant 컴퓨터 시스템과의 차이점을 비교하여 Fault Tolerant 컴퓨터 시스템의 특성을 보면 <그림 1>과 같다. 그림을 보면 알 수 있듯이 Fault Tolerant 컴퓨터 시스템만이 99.999%의 가용성(Availability)을 보장받을 수 있도록 설계되어 있다.
Fault Tolerant 컴퓨터 시스템의 구조 비교
Fault Tolerant(FT) 컴퓨터 시스템의 구조에 관하여 현재 상품화에 성공한 주요 회사별로 알아본다.
① SUN의 FT 컴퓨터 시스템 구조
② Sequoia의 FT 컴퓨터 시스템 구조
③ Tandem의 FT 컴퓨터 시스템 구조
④ Stratus의 FT 컴퓨터 시스템 구조
SUN의 FT 컴퓨터 시스템의 구조
SUN의 FT 컴퓨터 시스템 구조의 기본 설계 개념은 Dual Processor로 Master-Checker구조를 만들어 I/O 동작과 시스템 Call을 수행할 때 서로의 값을 비교하도록 한 것이다. 이러한 방법은 매 클락마다 비교하는 설계 방법 만큼이나 Fault 감지 능력이 확실하고, 시장에 나와 있는 보드를 사용하여 하드웨어를 쉽게 구현할 수 있다는 점에서 많은 이점이 있다. Hot Replace가 가능한 특별한 버스 접속장치를 설계하여 표준 I/O 보드들도 사용할 수 있도록 하였다.
SUN의 FT 컴퓨터 시스템 구조는 크게 Fault Tolerant Core 부분(CPUSET)과 IO 서브 시스템 부분(IOSET)으로 나누어지는데 이것을 <그림2>를 통해 설명한다.
FT Core 부분은 두개 또는 세개의 CPUSET으로 구성된다. 2개의 CPUSET으로 구성된 경우를 DMR (Dual Modular Redundancy) FT Level이라고 하고, 3개의 CPUSET으로 구성된 경우를 TMR (Triple Modular Redundancy) FT Level이라고 한다. 각각의 CPUSET은 1~4개의 Processor와 Cache 메모리, 주 메모리를 갖고 있다. 어느 하나의 CPUSET에 있는 CPU들은 다른 CPUSET에 있는 CPU들과 똑같이 그리고 정확하게 동기를 맞추면서 동작을 하고 있으며 CPUSET들은 특별히 고안된 두개의 FTIO 버스(Fault Tolerant I/O Bus)에 연결되어 있다. CPUSET의 Fault는 FTIO 버스에 나타난 CPUSET들의 데이타 값들을 서로 비교하는 하드웨어 비교기에 의하여 검출된다.
하나의 CPUSET은 Master로 동작하고 다른 하나 또는 두개의 CPUSET은 Checker로 동작한다. 그리고 이러한 역할은 주기적으로 바뀐다. Checking은 I/O 동작 시점에만 이루어진다. 두개의 CPUSET이 똑같은 프로그램을 제대로 수행한다면 I/O 읽기 때에는 똑같은 I/O 어드레스를 내보낼 것이고, I/O 쓰기 때에는 똑같은 I/O 어드레스와 데이타를 내보내게 될 것이다. 이때 Checker로 동작하는 CPUSET(들)은 자신이 만든 어드레스와 데이타를 Master가 내보낸 어드레스 그리고 데이타와 비교한다. 읽기의 경우 각각의 CPUSET들은 4-Bit Parity를 만들어 이들을 서로 비교하게 된다.
만약 두개 또는 세개의 CPUSET들의 비교결과가 서로 상이한 값을 갖게 되면 각각의 CPUSET들은 버스 동작을 중단하고 어느 쪽이 잘못되었는지를 검증하기 위하여 Diagnostic을 수행하게 된다. 이때 특정한 CPUSET에서 Fault가 발생하게 될 때마다 Local Diagnostic Value를 증가시킨다. Diagnostic이 끝나면 CPUSET은 Idle Loop로 들어가는데 이 Loop를 먼저 끝내는 CPUSET(상대방 CPUSET보다 Diagnostic Value가 낮은 CPUSET)은 Fault를 유발시킨 CPUSET을 Disable시키고 Non-Fault Tolerant 상태로 동작을 계속 수행한다. 이렇게 Disable된 CPUSET은 On-Line 상태에서 새로운 CPUSET과 교체될 수 있고 이때 CMS(Configuration Management System)을 사용하여 새로운 CPUSET을 다시 장착시켜 DMR(Dual Modular Redundancy) 상태로 만드는 역할을 하게 된다. 이것을 “Reintegration”이라고 부른다. Reintegration은 새롭게 장착된 CPUSET에 대한 Self Test가 끝난 후 시작되는데, Master CPUSET은 지속적으로 두 CPUSET 모두가 똑같은 메모리 내용을 갖게 하기 위하여 일종의 “Fuzzy Copy” 기술을 사용한다. 즉, 현재 수행중인 Master CPUSET의 Background Process가 먼저 모든 Dirty Cache Page를 메모리에 Flush시키고 Dirty Page Table의 내용을 지운다. 그런 후 새 CPUSET의 메모리에 복사하기 시작한다. 일단 새 CPUSET의 메모리에 복사가 완료되면 Background Process는 Master CPUSET의 Dirty Page Table을 다시 검사한다. 만약 복사하고 있는 도중에 수정된 Page가 있으면 그 내용을 다시 새 CPUSET의 메모리에 복사시키고 이러한 일련의 동작이 성공적으로 끝나면 Master CPUSET은 한순간 Halt 상태에서 새 CPUSET과 동기를 맞춘 후 모든 동작을 다시 시작한다.
모든 IO 서브시스템은 이중화되어있다. 예를 들면, 디스크 서브시스템은 2개의 디스크 콘트롤러와 2개의 I/O 버스 그리고 2개의 디스크를 갖고 있다. I/O 서브시스템안에서의 Error는 소프트웨어 또는 Firmware로 검출하도록 설계되어 있다. Timeout Command를 이용한 여러 단계의 소프트웨어 Checking방법과 Checksum 방법, 그리고 이중화 모듈 사이의 비교 방법등이 드라이버에 구현되어 있다. 만약 Error가 검출되면서 서브시스템은 소프트웨어적으로 하드웨어 구성 모듈들을 재배치하여 수리가 완료될 때까지 사용하지 못하도록 한다.
SUN의 컴퓨터 시스템 구조의 특징중 하나로 I/O 억세스 상태일 때만 비교하여 고속시스템에서 매 클락마다 비교하는데 따른 타이밍 손실이 없게 한다. 이런 기능은 SUN의 컴퓨터 시스템이 다른 FT 컴퓨터 시스템 구조에 비하여 성능이 좋다는 것을 보여준다.
삼성전자는 1997년 초부터 SUN과 OEM 공급계약을 맺고 이 구조를 바탕으로 한 SSM6200과 SSM6200H 모델을 제작하여 통신시장에 공급하고 있다.
Sequoia의 FT 컴퓨터 시스템 구조
1980년대 후반에 Sequoia사는 Tightly Coupled Multiprocessor 구조를 갖는 Fault Tolerant 시스템을 상품화하였다. 이 컴퓨터 시스템 구조는 다른 Multiprocessor 컴퓨터 시스템 구조와 비슷한 구조를 갖고 있는데, 이것은 대용량의 주 메모리를 여러개의 CPU들이 서로 공유하고 있다는 점이다. 또한 하드웨어 감지 기술을 사용하여 Fault를 감지하고, 어떠한 Single Point Failure에 대하여 즉각적으로 Recovery를 수행할 수 있도록 OS(TOPIX : Transaction Optimized Processing with unIX)을 설계하였다. 그리고 모든 Processor들의 부하는 동적으로 균등하도록 설계되어있다. <그림 3>에 이 시스템 구조를 설명한다.
● PE 모듈 (Processor Element Module)
프로세서가 장착된 모듈이다. 시스템의 구성에 따라 최소 2개, 최대 4개의 PE 모듈을 장착할 수 있다. 이 PE 모듈은 4-way Set Associative Cache 구조를 갖고 있으며 Cache의 크기는 4M Byte 이다. 시스템 진단기능과 오류 복구 코드(Fault Recover Code), 그리고 Bootstrap Loader가 들어있는 플래쉬 메모리를 갖고 있다. 시스템내의 모든 PE 모듈은 Fault Tolerant 기능을 효과적으로 수행할 수 있도록 구성되어 있다. Fault Tolerant 기능 구현을 위하여 PE 모듈은 2장의 보드로 구성되어 있으며, 이 2장의 보드는 동일한 CPU를 사용하여 동일한 동작을 동시에 수행한다. 두 CPU간의 계산 결과를 항상 비교하여 만일 결과가 일치하지 않으면 두 보드 중 하나가 고장난 것으로 간주한다. 그러나 어느 보드가 고장이 난 것인지는 일반적으로 판단할 수 없으므로 Fault 복구 상태 (Fault Recovery Mode)로 들어가서 Diagnotic으로 PE 모듈의 상태를 진단한다. 만약 그 PE 모듈이 고장 난 것으로 진단되면, 시스템으로부터 Offline되고 시스템은 고장나지 않은 다른 PE 모듈로 작업을 계속 수행한다. PE 모듈이 일시적인 고장으로 진단될 경우, PE 모듈은 재초기화(Reinitialization)되고 시스템은 계속 가동된다. 이런 일시적인 고장은 항상 기록되어 특정한 모듈의 고장 횟수가 정해진 임계치(Threshold Number)를 넘는 경우에도 시스템으로부터 Offline 되도록 설계되어 있다.
● ME 모듈 (Memory Element Module)
메모리가 장착된 모듈로 ECC 기능이 있다. 자기 진단 기능을 갖추고 있어 자동 에러 검색기능이 포함되어 있으며 시스템의 구성에 따라 최대 6개의 ME 모듈을 장착할 수 있다. 단일 메모리의 에러로 인한 데이터 손실을 방지하기 위해 모든 데이터는 항상 2개의 ME 모듈에 기록하여 Shadow기능을 지원한다. ME 모듈을 6개까지 장착할 경우 IOE 모듈은 최대 2개까지 장착하여 사용할 수 있으며 공유자원에 대한 액세스 제어를 위해 각 메모리에 1,024~24,576 Test and Set Locks 기능을 지원한다.
● IOE 모듈 (Input-Output Element Module)
시스템에 입출력 버스를 제공하는 모듈이다. 시스템의 구성에 따라 최대 4개의 IOE 모듈을 장착할 수 있다. IOE 모듈은 메모리와 I/O 디바이스사이에 고속 Buffering 기능과 높은 수준의 데이타 전송제어 기능을 지원하는 강력한 주변기기 Processor이다. IOE 모듈은 기능상 BA(Bus Adapter)와 VA (VME Adapter)로 나뉘어 있다. 산업표준 VME 버스를 사용하고 하나의 IOE에 VME Slot이 8개씩 할당되어 있다. 시스템은 디스크와 터미널 네트워크, LAN으로 억세스할 때에 대체용 경로 제공기능을 갖고 있다. 즉 첫번째, 경로에 오류가 발생하면 시스템이 자동으로 대체용 경로로 접속하여 시스템의 접속교류 기능에 신뢰성을 높여준다. 두번째, 모든 데이타는 각기 다른 SCSI 버스상이 분산된 디스크에 저장되어 디스크 미러링 기능을 제공, 데이타의 보안성을 유지시켜준다. BA와 VA의 연결은 E-Bus Cable로 연결된다.
● BA 모듈 (Bus Adapter Module)
BA 모듈은 오류를 감지하기 위한 이중의 Logic을 가진 단일 보드이며 위, 아래 반으로 나뉘어져 있다. BA는 주 시스템과 주변기기와의 통신을 위한 데이타 채널인 VA에 의하여 사용된다. BA는 2개의 채널로 이루어져 있기 때문에 주어진 순간에 하나는 VA 모듈에, 다른 하나는 주 시스템에서 사용된다. VA의 채널 용량은 64KB이고, 각 채널은 한번에 1개의 버스만을 지원하므로 시스템 버스나 E-Bus는 주어진 시간에 한 채널만을 억세스한다.
● VA 모듈 (VME Adapter)
VA 모듈은 VME Card Cage에 장착되어 입출력을 전담하는 Processor로써 VME 버스에 장착된 SCSI 및 통신전용 콘트롤러 등을 최대 8개까지 컨트롤하는데 사용된다. 이를 위하여 VA 모듈에는 2개의 68030 MicroProcessor 가 있으며 자체의 운영 체계인 VAOS를 수행하기 위한 1MB-RAM과 입출력 Buffer용으로 4MB-RAM이 있다.
● BI 모듈(Bus Interface Module)
시스템버스의 동작을 제어한다. 시스템 버스는 이중 구조로 되어 있으며 버스 Bandwidth는 80MB/s이다. BI 모듈은 Main Card Cage에 2개가 있다. 이 두 모듈은 Card Cage의 오른쪽에 상, 하로 위치한다. 위에 위치한 것은 A 버스에 대한 BI 모듈이고 아래에 위치한 것은 B버스에 대한 BI 모듈 이다.
Sequoia 컴퓨터 시스템 구조를 설계한 사람은 Sequoia사의 창시자인 Jack Stiffer 박사이다. 그는 Raytheon에서 고장난 부품을 교체하지 않고 10년동안 우주에서 살아 남을 확률이 95%에 이르는 컴퓨터 시스템 개발 Project인 “Fault Tolerant Spaceborn Computer”를 지휘하면서 얻은 경험을 바탕으로 이 Sequoia 컴퓨터 시스템 구조를 설계하게 되었다. 삼성전자는 1990년부터 1992년까지 이 Sequoia 구조를 기반으로 공동개발하여 1992년말부터 현재까지 자체 생산 및 Upgrade를 계속하고 있다. 제품 모델로는 SSM6000, SSM6100 등이 있고 현재 Sequoia사는 Texas Micro 사에 흡수되어 현재 Fail Over 개념의 Portable Fault Tolerant 시스템 (일명 Fulcrum)을 개발하고 있다.
Tandem의 FT 컴퓨터 시스템 구조
Tandem은 1970년대부터 Fault Tolerant 시스템을 처음으로 상품화하는데 성공하였다. 그들은 매우 복잡한 소프트웨어 방식을 이용하여 Fault Tolerant 시스템(NonStop 시스템)을 구현하였다.
소프트웨어 방식을 이용한 Fault 복구 시나리오를 설명하면 다음과 같다.
① Process A가 Processor 1에 생성되면 이것을 Processor 2에 자신의 백업 Process A’를 만든다. Process A는 수행 중 주기적으로 자신의 백업 Process에게 자신의 현재 모든상태를 Update 시켜주는데 이것을 Check Point라고 한다. 이 Check Point는 Fault 발생여부를 감지하는데 사용된다.
② Processor 1에 Fault가 발생하여 Process A가 더 이상 수행 할 수 없게 되면 Processor 2는 이것을 감지하여 백업 Process인 A’을 수행한다. 이때, Process A’는 다시 자신의 백업 Process인 A”을 Processor 3에 만들어 수행하면서 계속 Check Point를 한다.
③ 모든 Processor는 매초마다 다른 Processor에게 “I’m alive”라는 메시지를 주게 되어 있다. 만약 몇 초 동안 이러한 메시지가 오지 않으면 해당 Processor에 Fault가 발생 하였음을 알 수 있다.
④ 어느 순간 Processor 1에 대한 수리가 끝나고 다시 On-Line 상태가 되면 이것을 감지한 Process A’는 자신의 백업인 A”을 없애고 Processor 1에 Process A를 만든 후 Control을 Process A로 넘김으로써 애초에 Fault가 발생되지 않았던 것과 같은 상태가 된다.
Check Point는 개념적으로는 간단하지만, 응용부분에서 효율적으로 사용하기 위하여서는 높은 수준의 프로그램 기술이 필요하다. 이와 같은 소프트웨어 방식은 Tandem의 고유 운영체계인 Guardian을 사용하는 시스템(CLX, Cyclone)에 적용하였던 것으로 Tandem이 처음부터 생각해온 방식이다.
1990년대 들어 Tandem은 UNIX를 사용하는 Integrity계열의 시스템을 개발하여 상품화하였는데, 여기에서는 삼중화(Triple Modular Redundancy)라는 하드웨어 Fault Tolerant방법을 사용하였다. <그림 5>을 통해 Tandem의 시스템 구조를 설명하였다. 세개의 Physical Processor 모듈을 하나의 Logical Processor 모듈로 구성하여 각각의 Processor 모듈들은 항상 똑같은 동작을 수행하면서 모듈밖으로 나오는 데이타들을 Voting Logic을 통하여 비교하도록 하였다. 만약 세 모듈중 하나가 다른 값을 갖게 되면 그 Processor 모듈에 Fault가 발생한 것으로 취급하여 시스템에서 Off Line 시키고 나머지 두 Processor 모듈로만 계속 수행하게 된다. 이 구조는 앞서 설명한 SUN 컴퓨터 시스템 구조의 TMR 구조와 비슷하다.
Tandem은 1995년경에 소프트웨어 Fault Tolerant 시스템인 NonStop 시스템과 하드웨어 Fault Tolerant 시스템인 Integrity 시스템의 장점을 모아 새로운 Fault Tolerant 컴퓨터 시스템 구조를 개발하였다. 이 컴퓨터 시스템 구조는 ServerNet이라는 일종의 SAN (System Area Network)을 기반으로 고안되었다. 이에 대한 일반적인 구조를 <그림 6>에 보였다. 이 시스템은 여러개의 CPU와 I/O Node들이 ServerNet SAN을 통하여 서로 연결된 구조를 갖고 있다. ServerNet은 Router ASIC으로 이러한 Node들을 서로 연결시켜 준다. 대부분의 Node들은 ServerNet 접속장치로 2개의 Port를 갖고 각각 독립적인 X, Y Network에 연결된다.
Shared Memory Multiprocessing용 Code를 수행할 수 있도록 최대 4개까지의 CPU들은 Coherency 버스를 통하여 Shared메모리 Image와 Cache Coherency를 지원하게 되어있다.
이 ServerNet Base의 컴퓨터 시스템 구조는 소프트웨어 Fault Tolerant와 하드웨어 Fault Tolerant를 선택적으로 지원할 수 있도록 설계되었다. NonStop Kernel과 같은 소프트웨어 Fault Tolerence를 지원하는 Operating 시스템을 수행할 때에는 각 CPU Node들은 각기 다른 Code를 수행한다. Interprocessor Message와 I/O 통신이 서로 다른 접속장치를 사용하는 NonStop구조와는 달리 이 ServerNet-based구조에서는 모든 데이타들이 ServerNet을 통하여 전달된다. 소프트웨어 Fault Tolerance를 지원하지 않는 OS를 사용하려면 하드웨어 Fault Tolerance를 제공하도록 이중화 구조(Fail-Fast CPU)로 만들어야 한다. 한쌍의 CPU Node들은 동시에 똑같은 Code를 수행하도록 한다. 만약 한 쌍의 CPU쌍 중에서 한 CPU가 Fail이 되면 다른 CPU가 계속해서 수행하며 이 한 쌍의 CPU Node는 같은 ServerNet Node ID를 갖는다. 모든 Packet들은 복사되어 두 CPU에게 똑같이 전달되고 Fault는 ServerNet에서 제공되는 Fault 감지 회로에 의하여 검출된다.
Stratus의 FT 컴퓨터 시스템 구조
1980년초에 Stratus는 하드웨어 기반의 Fault Tolerant 시스템을 상품화시켰다.
Stratus 컴퓨터 시스템 구조는 Processor 보드 한개에 2개의 Microprocessor (pair)를 갖고, 이와같은 또다른 Processor 보드(spair)를 하나 더 마련하여 “Pair -and-Spare”구조로 설계되어 있다. <그림 7>을 통해 이 구조를 설명한다. 각 보드는 스스로 검사할 수 있는 Self-Checking 기능을 갖고 있고 각 Processor 보드는 독립적으로 동작한다.
Processor 보드는 A Half와 B Half로 나누어져 있으며 두 Processor보드들의 A Half들은 A 버스 붙어 있고 B Half들은 B버스에 붙어 있다. 이때 버스상에서는 Wired-OR 형태로 되어 있다. 각 Processor 보드들에 있는 두개의 Half들, 즉, A Half와 B Half는 서로 값을 비교하며, 만약 값이 서로 틀리면 이 Processor 보드는 시스템에서 제거되고 Maintenance Interrupt가 발생된다. 그런 후 다른 Processor 보드가 모든 동작을 계속해서 수행하게 된다. OS는 Fault를 발생시킨 보드를 검사하여 그 Fault가 일시적 Fault(Transient Fault)인지 영구적 Fault(Hard Fault)인지를 알아 낸다. 만약 그것이 일시적인 것이라면 검사가 끝난 후 곧 On-Line이 되지만 영구적이라면 시스템 구성에서 제외시키고 새로운 보드로 교체 되기를 기다린다.
“Pair-and-Spare” 구조로 되어 있는 것은 Processor 보드와 메모리 보드 뿐이다. 메모리 콘트롤러에는 버스 Parity Error를 감지 할 수 있는 회로를 갖고 있고, 디스크 콘트롤러는 이중화 읽기/쓰기 회로를 갖고 있고, 그리고 통신 콘트롤러는 Self-Checking 회로를 갖고 있다. Stratus 컴퓨터 시스템 구조의 장점은 Fault가 발생하더라고 On-Line Recovery를 필요로 하지 않는다는데 있다. 즉, “Pair-and-Spare” 구조로 되어있기 때문에 소프트웨어 Recovery를 필요로 하지 않는다. Stratus의 하드웨어방식은 소프트웨어 방식의 복잡성을 덜어주었으나 하드웨어 Cost를 높이는 단점이 있다.
Fault Tolerant 컴퓨터 시스템의 전망
각 세대마다 Fault Tolerant 시스템을 어떤 특징으로 어떤 발전과정을 거쳐서 사용했는지를 알아보고,앞으로 FT 시스템의 발전 방향과 전망은 어떤지 알아본다. Fault Tolerant 시스템의 진화 과정은 간단하게 <그림 8>을 통해 설명한다.
<그림 7> Stratus의 FT 컴퓨터 시스템 구조
<그림 8>Fault Tolerant 시스템의 발전단계
각 세대의 특징
각 세대마다의 특징을 살펴보면 다음과 같다.
① 제 1세대의 Fault Tolerant 시스템
제1세대 Fault Tolerant 시스템은 특별한 하드웨어 구조와 그에 맞는 고유의 동작 시스템, 프로그램 언어, 특별하게 구현된 응용 소프트웨어를 요구한다. Fault Tolerant 시스템을 구현하는데는 상당한 비용이 필요하며 아주 제한적인 응용 분야에서만 사용된다.
② 제 2세대의 Fault Tolerant 시스템
제2세대 Fault Tolerant 시스템은 특별하게 고안된 고유의 OS를 요구하지만 UNIX에서 사용되는 표준 응용 소프트웨어를 큰 변경없이 그대로 사용할 수 있도록 설계되어 있다. 특별하게 고안된 OS를 사용하기 때문에 이것을 유지하는 일은 매우 어렵고 번거로운 일이 되며, UNIX의 기능중 여러 기능이 구현되지 않아 일반적인 시스템(Non-Fault Tolerant 시스템)에서 사용된 소프트웨어들이 Fault Tolerant 시스템에 그대로 사용할 수 없게 되는 일이 항상 존재하게 된다.
③ 제 3세대의 Fault Tolerant 시스템
제3세대 Fault Tolerant 시스템은 상업적으로 사용가능한 OS를 Fault Tolerant 시스템에 돌아가기 위해, Porting하여 사용할 수 있도록 설계 되었다. 따라서 시장에 나와 있는 다양한 소프트웨어를 사용할 수 있는 이점이 있다. 그러나 특별하게 고안된 Fault Tolerant 하드웨어 Platform에 상용 OS가 돌아갈 수 있도록 하여야 하는 번거로움과 어려움이 여전히 존재한다.
④ 제 4세대의 Fault Tolerant 시스템
제4세대 Fault Tolerant 시스템은 표준 OS와 상용 하드웨어를 거의 수정하지 않고 사용할 수 있도록 설계되었다. 따라서 이러한 Fault Tolerant 시스템의 사용자는 일반적인 시스템(Non-Fault Tolerant 시스템)에서 사용되는 가장 최신의 OS, Database, 그리고 다양한 응용 소프트웨어를 손쉽게 사용할 수 있다.
⑤ 제 5세대의 Fault Tolerant 시스템
앞으로는 Fault Tolerant 컴퓨터 시스템의 기술이 보편화 될 것으로 전망되며, 일반 컴퓨터 시스템 구조 설계에도 이러한 Fault Tolerant 핵심 기술이 많이 적용되어 Fault Tolerant와 Non-Fault Tolerant의 개념이 없어지는 날이 오리라 생각한다. 그 때가 되면 우리는 그것을 제5세대라 부르게 될 것이다.
'프로그래밍' 카테고리의 다른 글
개발툴 비교 VSCode VS JetBrains (0) | 2024.02.21 |
---|---|
[SementicVersioning] Conventional Commits (0) | 2023.10.18 |
[버전관리]시멘틱버저닝(Semantic Versioning) 란? (0) | 2023.07.25 |
[메시지큐] Message Queue (0) | 2023.03.03 |
[객체지향] 리펙토링(Refectoring) 5대 원칙(SOLID) (0) | 2022.07.21 |