이하, 본 발명의 바람직한 실시 예들을 첨부한 도면을 참조하여 상세히 설명한다. 도면들 중 동일한 구성요소들은 가능한 한 어느 곳에서든지 동일한 부호들로 나타내고 있음에 유의해야 한다. 또한 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능 및 구성에 대한 상세한 설명은 생략한다.
도 1은 본 발명이 적용되는 인터넷 서버 컴퓨팅 시스템에 대한 개략적인 구성을 나타낸다.
도 1에 도시된 바와 같이, 본 발명이 적용되는 인터넷 서버 컴퓨팅 시스템에서는 각 FC-NS(Fiber Channel-Network Storage, 광채널 네트워크 스토리지) 카드(110, 120)는 각 FC-NS 카드의 FC(Fiber Channel) 디스크 제어기를 통해 FC 스위치(130)에 연결되고, 디스크(140) 역시 FC 스위치(130)에 연결되어 FC-NS 카드(110, 120) 모두 디스크(140)에 접근할 수 있다.
이러한 구조에서는 FC-NS 카드(110)에서 네트워크 오류나 기타 오류가 발생하더라도 FC-NS 카드(120)는 계속 디스크에 접근이 가능하기 때문에 FC-NS 카 드(110)에서 제공하던 스트리밍 데이터에 FC-NS 카드(120)가 접근하여 스트리밍을 수행함으로써 오류 극복을 수행할 수 있다. 이에 따라 오류 극복을 위하여 데이터를 복사할 필요가 없기 때문에 디스크 공간을 낭비하지 않고 효율적으로 사용함으로써 더 많은 스트리밍 데이터를 저장하고 제공할 수 있다.
도 2는 본 발명의 실시 예에 따른 스트리밍 데이터 공유를 위한 FC 기반의 네트워크 스토리지 스트리밍 가속 장치의 구성을 나타낸다.
도 2에 도시된 바와 같이, 본 발명의 실시 예에 따른 스트리밍 데이터 공유를 위한 FC 기반의 네트워크 스토리지 스트리밍 가속 장치(200)는 크게 하드웨어적으로 구성될 수 있는 다수의 FC-NS 카드(210)와 소프트웨어적으로 구성될 수 있는 FC-NS 디바이스 드라이버(230)를 포함하여 구성될 수 있다. 즉, 본 발명의 장치(200)의 하드웨어적 구성은 FC-NS 카드(210)의 구성과 동일하며, FC-NS 디바이스 드라이버(230)는 본 발명의 장치인 FC-NS 카드(200)를 제어하여 본 발명의 방법을 수행할 수 있다.
FC-NS 카드(210)는 주변장치 버스 브릿지(212), 내부 주변장치 버스(214), 디스크 제어기(216), 주변메모리(218), 주변메모리 제어기(220), TOE(TCP/IP Offload Engine)(222)를 포함하여 구성될 수 있다.
주변장치 버스 브릿지(212)는 호스트 프로세서(또는 메인 메모리)로부터의 버스 트랜잭션을 FC-NS 카드(210)의 내부 주변장치 버스(214)로 전달하고, FC-NS 카드(210) 내부에서 진행되는 호스트 프로세서에 대한 버스 트랜잭션을 버스 브릿지로 전달한다.
내부 주변장치 버스(214)는 FC-NS 카드(210) 외부의 주변장치 버스와 분리되고, FC-NS 카드(210) 내부 각 장치간의 데이터 전송을 담당한다.
디스크 제어기(216)는 FC-NS 카드(210)에 연결되는 FC 디스크 스토리지를 제어하여 FC 디스크 스토리지에 대한 데이터 입출력, 즉, 읽기 또는 쓰기를 관리한다.
주변메모리(218)는 디스크 스토리지와 네트워크간의 전송 데이터를 저장한다.
주변메모리 제어기(220)는 상기 주변메모리(218)를 제어하여 디스크 스토리지와 네트워크간의 전송 데이터를 저장시키거나 출력시킨다.
TOE(222)는 네트워크로 전송될 데이터를 상기 주변메모리(218)에서 읽어 와서 패킷형태로 가공하여 네트워크로 전송한다.
상기 주변장치 버스는 PCI일 수 있으며, 주변장치 버스가 PCI인 경우 주변장치 버스 브릿지(212)는 PCI 브릿지 역할을 수행하게 된다. 또한 이 경우 주변메모리(218)는 PCI 메모리(이하 PMEM)일 수 있다.
FC-NS 디바이스 드라이버(230)는 물리 디스크 검색부(232), SDA 생성부(234), PMEM 생성부(236), PMEM 관리부(238), SDA 입출력 처리부(240), 부하 분산부(242), 오류 극복부(244)를 포함하여 구성될 수 있다.
물리 디스크 검색부(232)는 FC 인터페이스의 다중 연결 경로에 의해 발생하는 하나의 물리적 디스크가 복수개의 가상 장치명으로 검색된 것을 분석하여 실제 물리적 디스크를 파악하고 번호를 부여한다.
SDA 생성부(234)는 물리 디스크를 사용하여 인터넷 서버에서 사용하는 가상 디스크인 SDA(Stream Disk Array)를 생성한다.
PMEM 생성부(236)는 FC-NS 카드에 장착된 주변메모리(218)(이하 PMEM)를 검색하고 관리를 위하여 일정한 크기로 나누어 관리할 수 있도록 관리 구조를 생성한다.
PMEM 관리부(238)는 무복사 스트리밍을 위한 버퍼로 PMEM(218)을 할당, 해제한다.
SDA 입출력 처리부(240)는 SDA로부터 PMEM 관리부(238)에 의해 할당된 PMEM(218)으로 데이터를 읽어들이거나 PMEM(218)의 데이터를 SDA에 저장한다.
부하 분산부(242)는 SDA 입출력 단계에서 물리 디스크의 여러 가상 장치 이름 중에서 PMEM(218)에 해당하는 FC-NS 카드(210)에서 검색된 이름들을 균등하게 라운드 로빈(round-robin) 방식으로 사용한다.
오류 극복부(244)는 디스크 입출력 과정에서 오류가 발생할 경우, 하나의 물리 디스크에 할당된 가상 장치 이름 중에서 다음으로 가용한 가상 장치를 선택하여 재시도함으로써 오류발생을 극복한다.
상기와 같이 구성되는 본 발명의 장치(200)는 FC 인터페이스를 채용함으로써 저장장치의 공유를 위한 저장장치 영역 네트워크(Storage Area Network: SAN)을 구성할 수 있다. 이에 따라 FC-NS 디바이스 드라이버(230)는 SAN의 특성에 의해 물리적 디스크의 다중 가상 장치 인식 현상을 인지하여 실제 디스크를 인식하고, SAN의 다중 경로를 통한 입출력(Multi-path I/O)을 이용하여 입출력 부하 분산 및 오류 극복 기능을 지원할 수 있다.
도 3은 본 발명에 따라 광채널 연결의 다중 경로에 의해 하나의 물리적 디스크 장치에 복수개의 장치 이름이 할당되는 것을 나타낸다. 여기에서 FC-NS 카드의 FC 디스크 제어기(310, 320)는 복수개의 FC 연결을 가질 수 있다.
도 3을 참조하면, FC 디스크 제어기(310, 320)를 가진 FC-NS 카드 두 개는 각각 두 개의 FC 연결(330과 340, 350과 360)을 통해 하나의 FC 스위치에 연결된다. 또한 디스크 저장장치(390) 역시 두 개의 FC 연결(370, 380)을 통해 FC 스위치에 연결된다.
상기와 같은 구조에서는 하나의 물리적 디스크 저장장치(390)가 모두 8개의 가상 디스크로 인식될 수 있다. 아래 [표 1]은 각 가상 디스크의 인식 경로를 나타낸다.
가상 디스크 |
인식 경로 |
가상 디스크 sdb |
FC 연결 (330) - FC 연결 (370) |
가상 디스크 sdj |
FC 연결 (330) - FC 연결 (380) |
가상 디스크 sdr |
FC 연결 (340) - FC 연결 (370) |
가상 디스크 sdz |
FC 연결 (340) - FC 연결 (380) |
가상 디스크 sdah |
FC 연결 (350) - FC 연결 (370) |
가상 디스크 sdap |
FC 연결 (350) - FC 연결 (380) |
가상 디스크 sdax |
FC 연결 (360) - FC 연결 (370) |
가상 디스크 sdbf |
FC 연결 (360) - FC 연결 (380) |
본 발명의 소프트웨어적 구성인 FC-NS 디바이스 드라이버(230)는 여러 가상 디스크를 검사하여 실제 물리적 디스크의 정보를 파악하고, 각 물리적 디스크에 할당된 가상 디스크의 이름과 연결경로를 검색하여 해당 정보를 정보저장소에 저장한다.
모든 물리적 디스크들은 고유의 일련번호를 가지고 있다. FC-NS 디바이스 드라이버(230)는 각 가상 디스크의 일련번호를 사용하여 물리적 디스크를 구분한다. 즉, 같은 일련번호를 가지는 가상 디스크는 하나의 물리적 디스크를 가리키는 것으로 파악될 수 있다.
또한 각 가상 디스크 제어기의 PCI 버스 번호 정보를 사용하여 각 FC-NS 카드를 구분할 수 있다.
도 4는 본 발명의 실시 예에 따른 스트리밍 데이터 공유를 위한 FC 기반의 네트워크 스토리지 스트리밍 가속 방법의 절차를 나타내는데, 여기에서는 라운드 로빈 방식으로 부하분산을 하면서 디스크 입출력을 수행할 수 있다.
인터넷 서버 컴퓨팅 시스템에서는 기본적으로 FC-NS 카드(210) 내의 주변메모리(PMEM)(218)를 사용하여 스트리밍을 수행한다. PMEM(218)을 사용하여 스트리밍하게 되면 무복사 스트리밍을 수행할 수 있게 되어 호스트 프로세서의 부하를 줄이면서 고속으로 스트리밍을 수행할 수 있다.
스트리밍을 수행할 FC-NS 카드를 선택하면 해당 FC-NS 카드의 PMEM을 할당하여 스트리밍을 수행하여야 한다. 도 3에서 FC-NS 카드 0번의 PMEM을 사용하여 스트리밍을 수행한다면 FC-NS 카드 0번의 FC 디스크 제어기(310)을 통하여 디스크를 읽어야 한다.
FC-NS 카드 0번의 PMEM을 사용하여 스트리밍을 수행할 경우에는 반드시 FC연결(330)과 FC연결(340)을 포함하는 연결만을 사용하여 디스크를 읽어야 함을 알 수 있다. 따라서, 물리적 디스크(390)를 가리키는 8개의 가상 디스크 중에서 4개의 가상 디스크만을 사용하여야 한다. 아래 [표 2]는 그 리스트를 나타낸다.
가상디스크 |
경로 |
가상디스크 sdb |
FC 연결 (330) - FC 연결 (370) |
가상디스크 sdj |
FC 연결 (330) - FC 연결 (380) |
가상디스크 sdr |
FC 연결 (340) - FC 연결 (370) |
가상디스크 sdz |
FC 연결 (340) - FC 연결 (380) |
상기 4개의 가상 디스크 중에서 어떤 연결을 사용하여도 FC-NS 카드 0번의 PMEM으로 데이터를 읽어 들일 수 있다.
본 발명에서는 상기 4개의 가상 디스크를 라운드 로빈 방식으로 사용하여 부하 분산을 수행할 수 있다. 즉, FC-NS카드 0번의 PMEM을 사용하여 물리디스크(390)에 대한 입출력을 수행할 때, 가상 디스크 sdb, sdj, sdr, sdz를 순서대로 번갈아 가며 사용함으로써 모든 가용한 FC 연결의 대역폭을 활용하여 성능을 극대화한다.
또한, 한 가상 디스크를 사용한 입출력이 실패할 경우, 곧바로 실패를 리턴하지 않고, 라운드 로빈의 다음 가상 디스크를 사용하여 재시도하여 성공하면 정상으로 처리함으로써 사용자 응용프로그램에서는 오류를 감지하지 못하도록 하면서 오류 극복을 수행한다.
입출력이 실패한 가상 디스크는 오류 발생을 표시하여 다음 입출력 시 라운드 로빈의 대상이 되지 않도록 한다.
상기의 오류 극복 과정에서 모든 가용한 가상 디스크에 대해 재시도에서 오류가 발생하면 해당 FC-NS카드로는 상기 물리적 디스크에 접근할 수 없다고 판정하고 사용자 응용프로그램에 오류를 리턴한다.
상기 입출력이 스트리밍 서비스였다면 가용한 다른 FC-NS카드의 PMEM을 할당하여 재시도를 수행할 수 있다. 이러한 경우에는 스트리밍 서비스를 다른 FC-NS 카드로 넘겨서 처리함으로써 스트리밍 서비스의 사용자가 오류를 느끼지 못하도록 하면서 서비스를 지속할 수 있다.
모든 FC-NS 카드에서 해당 물리적 디스크에 입출력을 실패하면, 해당 물리 디스크의 모든 가상 디스크가 오류로 판정되고 해당 물리적 디스크는 오류로 판정하여 오류 처리를 수행한다.
이하 도 4를 참조하면, S405 단계에서 사용자 프로그램에서 특정 FC-NS 카드의 PMEM을 할당하고 해당 PMEM을 사용하여 특정 물리디스크의 데이터를 읽거나, 해당 PMEM의 데이터를 물리디스크에 쓰기를 요청하면, 즉 물리디스크에 입출력을 요청하면, S410 단계에서 FC-NS 디바이스 드라이버는 먼저 해당 물리 디스크의 상태가 정상인지 확인한다.
물리디스크의 상태가 오류라면 S475 단계에서 입출력 요청의 실패를 사용자 프로그램에 리턴하고, 물리디스크의 상태가 정상이라면 S415 단계에서 주어진 PMEM 주소를 사용하여 PMEM이 소속된 FC-NS 카드를 판별한다.
이어서 S420 단계에서 상기 판별된 FC-NS 카드에서 해당 물리 디스크에 입출력을 수행할 수 있는 FC경로에 해당하는 가상 디스크의 목록을 검색한다. 검색이 완료되면, S425 단계에서 상기 검색된 가상 디스크의 목록에서 가장 최근에 사용되었다고 표시된 가상 디스크를 찾는다.
이어서 S430 단계에서 가상 디스크의 목록에서 가장 최근에 사용된 가상 디스크의 다음 디스크를 선택한다. 만약 가상 디스크의 목록의 마지막 디스크가 가장 최근에 사용되었다면 첫 번째 디스크를 선택한다.
또한 S435 단계에서 상기 선택된 가상 디스크의 상태가 정상인지 확인하여, 정상이라면 S440 단계에서 해당 가상 디스크를 사용하여 입출력을 요청하고 해당 가상 디스크를 가장 최근에 사용된 가상 디스크로 표시한다. 만약 선택된 가상 디스크의 상태가 정상이 아니라면 S460 단계에서 리스트의 모든 가상 디스크의 상태가 오류인지를 판단하고, 아닌 경우 S430 단계에서 가상 디스크 목록에서 다음 디스크를 새로 선택한다.
만약 가상 디스크 목록에서 모든 디스크가 정상이 아니라면 주어진 PMEM을 사용하여 입출력을 수행할 수 없으므로 오류 처리 과정을 수행한다.
먼저 S465 단계에서 해당 물리 디스크의 모든 가상 디스크들의 상태를 확인하여, 모든 가상 디스크가 오류라면 S470 단계에서 해당 물리 디스크의 상태를 오류로 표시한다. 상태가 정상인 가상 디스크가 한 개라도 존재한다면 물리 디스크의 상태는 변경하지 않는다. 위의 과정이 끝나면 S475 단계에서 사용자 프로그램에 입출력 실패를 리턴하고 처리를 종료한다.
한편 상기 S440 단계에서 해당 가상 디스크를 사용하여 입출력을 요청하고 해당 가상 디스크를 가장 최근에 사용된 가상 디스크로 표시한 후에는, S445 단계에서 해당 가상 디스크에 대해 입출력을 성공했는지를 판단하고, 성공한 경우 S450 단계에서 사용자 프로그램에 입출력 성공을 리턴하고 처리를 종료한다. 만약, 입출력이 실패했다면 S455 단계에서 해당 가상 디스크의 상태를 오류로 표시하고, S430 단계에서 가상 디스크 목록의 다음 디스크를 선택하여 입출력 과정을 다시 진행한다.
이상에서는 본 발명에서 특정의 바람직한 실시 예에 대하여 도시하고 또한 설명하였다. 그러나 본 발명은 상술한 실시 예에 한정되지 아니하며, 특허 청구의 범위에서 첨부하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 실시가 가능할 것이다.