KR100372915B1 - 네트워크에 직접 부착 가능한 디스크 시스템 - Google Patents

네트워크에 직접 부착 가능한 디스크 시스템 Download PDF

Info

Publication number
KR100372915B1
KR100372915B1 KR10-2001-0000086A KR20010000086A KR100372915B1 KR 100372915 B1 KR100372915 B1 KR 100372915B1 KR 20010000086 A KR20010000086 A KR 20010000086A KR 100372915 B1 KR100372915 B1 KR 100372915B1
Authority
KR
South Korea
Prior art keywords
disk
nad
network
host
port
Prior art date
Application number
KR10-2001-0000086A
Other languages
English (en)
Other versions
KR20020059139A (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 KR10-2001-0000086A priority Critical patent/KR100372915B1/ko
Priority to JP2002555298A priority patent/JP2004527817A/ja
Priority to PCT/KR2001/001976 priority patent/WO2002054266A1/en
Priority to EP01272932A priority patent/EP1348164A4/en
Publication of KR20020059139A publication Critical patent/KR20020059139A/ko
Application granted granted Critical
Publication of KR100372915B1 publication Critical patent/KR100372915B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • 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
    • 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/0626Reducing size or complexity of storage systems
    • 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/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 컴퓨터에서 사용되는 디스크 시스템에 관한 것으로, 구체적으로는 네트워크에 직접 부착하는 것이 가능한 디스크 시스템에 관한 것이다.
본 발명의 한 특징에 따르면 호스트의 내부 버스 대신에 네트워크를 통하여 디스크 입출력 연산을 수행하도록 하여 호스트로부터의 디스크 연산 명령을 처리하는 디스크 포트 드라이버(disk port driver)를 포함하고 있는 네트워크 부착 디스크 시스템(network-attached disk system)이 제공된다. 본 출원에서는 마이크로소프트사의 윈도우 2000 컴퓨터 시스템에 직접 부착할 수 있는 시스템을 본 발명의 구현 예로서 제시하였지만, 그밖의 다른 어떠한 OS를 사용하는 컴퓨터 시스템에도 본 발명을 적용할 수 있음은 당업자라면 당연히 이해할 수 있을 것이다.
본 발명에 따른 NAD는, 별도로 추가된 파일서버를 통하여 파일 저장 장치를 제공하는 NAS와는 달리, 호스트에 지역 디스크로서 부착된다. 따라서, 본 발명의 NAD 시스템은 특별한 별도의 스위치 장비나 네트워크 장비를 추가하지 않고 네트워크 포트에 직접 간단히 꽂아 넣어 사용할 수 있으므로, 더 나은 사용자 편의, 시스템 유연성, 높은 확장성, 경제성 및 높은 성능을 제공한다.

Description

네트워크에 직접 부착 가능한 디스크 시스템{Network-attached disk system}
본 발명은 컴퓨터에서 사용되는 디스크 시스템에 관한 것으로, 구체적으로는 네트워크에 직접 부착하는 것이 가능한 디스크 시스템에 관한 것이다.
인터넷의 사용이 증가함에 따라 저장을 필요로 하는 데이터의 양이 급증하고 있다. 특히, 멀티미디어 데이터를 저장하기 위한 대용량 디스크에 대한 높은 수요가 생겼다. 예를 들면, 각 서버 당 테라 바이트 이상의 디스크 용량을 구비하는 것이 드문 일만은 아니다.
테이프 드라이버나 CD를 사용하여 대용량 데이터를 저장할 수도 있으나 성능과 사용상의 편리성을 고려하면 하드디스크에 비할 바가 못된다. 그러나, 서버 시스템에 하드디스크를 대용량으로 증설하는 것에는 문제가 있다.
대개 이더넷 네트워크에 연결하여 사용하도록 되어 있는 NAS (Network Attached Storage) 제품은 NFS 프로토콜이나 CIFS 프로토콜 또는 두 가지 프로토콜 모두를 사용하는 저장 시스템 관리 소프트웨어를 통하여 미리 정해진 일정 양의 디스크 용량 증설을 기한다. 상기 두 프로토콜의 기본 목적은 두 컴퓨터들 사이에서 파일을 교환하는 것이다. 따라서, 파일 접근을 위하여 NAS를 사용하는 클라이언트는 지역 디스크에 접근하는 것과는 다른 방식으로 NAS 시스템의 저장 장치에 접근할 수밖에 없다.
NAS는 기본적으로 파일을 저장하고 접근하는 기능만을 가지고 있는 단순화된 파일 서버의 일종이다. 따라서, NAS를 통한 디스크 용량이란 실질적으로는 파일서버를 더하여 증설하는 것이며, 이에는 많은 제약이 수반된다. NAS의 디스크는 클라이언트에게는 자신의 지역 디스크가 아니므로 NAS 디스크의 장착, 이동 및 제반 관리는 NAS의 운영체제와 소프트웨어를 사용해서만 가능하다. 또한 NAS 디스크는 NAS 시스템의 내부 버스에 장착되어야만 하기 때문에 장착할 수 있는 디스크의 수에는 근원적인 제한이 있다. NAS는 자신의 운영체제 아래에 디스크를 두고 있으므로, 클라이언트는 NAS 디스크에 접근하기 위해서는 제공된 파일 시스템 이외에 임의의 파일 시스템을 사용할 수 없다. 그 외에도 NAS 시스템은 별도의 IP 주소를 필요로 한다. 결론적으로, 지역 디스크를 사용하는 것에 비해 NAS 시스템의 경우에는 디스크 당 장착 및 관리비용이 더 비쌀 뿐만 아니라 지역 디스크를 사용하는 경우보다 훨씬 사용하기가 불편하다. 특히 디스크 용량의 증설에 따라 NAS 시스템의 개수가 늘어나게 되면 다수의 서버를 관리하는데 따르는 불편이 크다.
Fibre Channel 기술과 같은 SAN (Storage Area Network) 기술을 사용하여 저장 장치 용량을 증설할 수 있으나, SAN에 저장 장치를 부착하여 사용하기 위해서는, 이를테면 Fibre Channel의 경우 Fibre Channel Hub 또는 Fibre Channel Switch와 같은 별도의 장비가 필요하다. SAN 기술에도 단점은 있어서, 대개 별도의 파일서버가 필요하며 일반적으로 고가의 장비가 필요하고 SAN을 운영하기 위한 지식을 갖춘 기술 인력이 필요한 것이 보통이다. 그러므로, 별도의 파일서버나 특별한 장비 없이 자유롭게 네트워크에 직접 부착하여 마치 지역 디스크인 것처럼 사용할 수 있는 디스크 시스템이 필요하다.
따라서, 본 발명의 목적은 별도의 파일서버를 추가하지 않고 컴퓨터에 직접 부착하여 사용할 수 있는 디스크 시스템을 제공하는 것이다.
본 발명의 다른 하나의 목적은 SAN 스위치와 같은 저장장치만을 위한 별도의 네트워크 장비 없이 기존의 이더넷과 같은 범용 네트워크의 포트에 직접 부착하여 사용할 수 있는 디스크 시스템을 제공하는 것이다.
본 발명의 또 다른 하나의 목적은 별도의 파일서버나 특별한 장비 또는 IP 주소를 사용하지 않고 호스트의 지역 디스크로 간편하게 인식되어 사용할 수 있는 디스크 시스템을 제공하는 것이다.
본 발명의 또 다른 하나의 목적은 네트워크나 서버 관리의 불편을 초래하지 않으면서 호스트에 손쉽게 연결할 수 있는 디스크 시스템을 제공하는 것이다.
본 발명의 그 밖의 다른 하나의 목적은 디스크 용량 수요를 맞추기 위하여 필요한 수만큼의 디스크 시스템을 네트워크 포트에 간단히 플러그 인(plug-in) 하여 사용할 수 있는 저렴한 비용의 디스크 시스템을 제공하는 것이다.
도 1은 본 발명의 디스크 시스템이 사용되는 네트워크 환경의 예를 도시하는 도면.
도 2는 윈도우 2000 시스템 운영체제에 편입되는 본 발명의 디스크 드라이버 계층의 계층 구조를 도시하는 도면.
도 3은 본 발명을 구현하기 위해 생성된 도 1의 호스트 1의 디바이스 스택 (device stack)의 예를 도시하는 도면.
도 4는 디스크 입출력 명령이 드라이버 계층들을 따라 전달될 때의 IRP와 SRB 및 CDB의 흐름을 도시하는 도면.
도 5는 본 발명에서 구현된 NDIS 드라이버 계층을 도시하는 도면.
도 6은 네트워크 부착 디스크(NAD, Network-attached disk) 장치의 하드웨어 구성도.
도 7은 도 6의 상태 기계에 구현된 상태 전이도.
<도면의 주요 부분에 대한 부호의 설명>
1, 2 : 호스트
1.1, 1.2, 2.1, 2.2, 3.1, 3.2 : 디스크
전술한 본 발명의 목적들은 호스트의 내부 버스 대신에 네트워크를 통하여 디스크 입출력 연산을 수행하도록 하여 호스트로부터의 디스크 연산 명령을 처리하는 디스크 포트 드라이버 (disk port driver)를 포함하고 있는 네트워크 부착 디스크 시스템(network-attached disk system)을 통하여 달성할 수 있다. 본 출원에서는 마이크로소프트사의 윈도우 2000 컴퓨터 시스템에 직접 부착할 수 있는 시스템을 본 발명의 구현 예로서 제시하였다. 특별히, 이더넷을 통하여 윈도우 2000 호스트에 연결되어 있으나 윈도우 2000 호스트에게는 지역 디스크로 인식되는 디스크 시스템을 예로 들어 설명하고 있다. 물론, 이러한 윈도우 2000 컴퓨터 시스템은 예시적이며 그밖의 다른 어떠한 OS를 사용하는 컴퓨터 시스템에도 본 발명을 적용할 수 있음은 당업자라면 당연히 이해할 수 있을 것이다.
도 1은 본 발명의 네트워크 부착 디스크 시스템들이 다수의 호스트에 부착되어 있는 네트워크 환경의 예를 도시하는 도면이다.
예에서는 윈도우 2000 시스템을 운영체제로 하고 있는 호스트 1과 호스트 2가 네트워크에 연결되어 있는 것으로 도시되어 있다. 호스트 1은 네트워크를 통하여 네트워크 접속 디스크 1의 두 개의 디스크 (1,1)과 (1,2)와 네트워크 접속 디스크 2의 두 개의 디스크 (2,1)과 (2,2)를 사용하고 있으며 마찬가지 방식으로 호스트 2는 네트워크 접속 디스크 3의 두 개의 디스크(3.1)와 디스크(3.2)를 사용하고 있다.
각각의 디스크는 연결되어 있는 호스트에게는 지역 디스크로 인식되며, 각 디스크는 동적으로 장착하고 탈착할 수 있다. 호스트들과 디스크들의 구성은 동적으로 변경할 수 있으므로 사용상의 편의와 이동성은 지역 디스크를 사용하는 경우에서처럼 편리하고 이동이 자유롭다. 실질적으로 부착할 수 있는 디스크 시스템의 개수에는 제한이 없으므로 호스트에게는 무제한의 디스크 용량을 제공할 수 있다.
따라서, 본 발명의 주된 목적은, 디스크를 호스트의 내부 버스가 아닌 네트워크에 부착하되 윈도우 2000 호스트에 의해서 지역 디스크처럼 인식되는 네트워크 부착 디스크(이후에는 "NAD"로 칭함) 시스템을 구현하는 것이다. NAD는 윈도우2000 시스템에 의해 지역 디스크 자체로 인식되어, 따라서 포맷(format)하기와 분할(partition)하기를 포함하여 윈도우 2000 시스템이 지역 디스크를 제어하기 위해 가하는 모든 디스크 연산을 NAD에도 그대로 가할 수 있다. 바로 이 특징이 NAS 기술에 의해 제공되는 다른 여타 해법과 본 발명이 다른 점으로서, 본 발명은 호스트 시스템의 디바이스 수준에서 직접 각각의 디스크를 추가한 것인 반면에 NAS는 파일시스템의 관여를 통해서 디스크 공간을 확장한 것이기 때문이다. 또한, NAD는 네트워크를 통하여 접근되므로, 통상적인 지역 디스크를 사용했을 경우에는 디스크 제어기(disk controller)로 전달되었을 디스크 입출력 요구를 본 발명은 네트워크 인터페이스로 돌려 전달한다.
도 2는 본 발명을 구현하기 위한 디스크 드라이버 계층의 계층 구조를 윈도우 2000 시스템의 지역 디스크 드라이버 계층도와 비교하여 도시하는 도면이다.
도 2의 왼편에는 윈도우 2000 시스템의 통상적인 지역 디스크 드라이버 계층으로서, 분할 매니저(partition manager), 디스크 클래스 드라이버(disk class driver), 포트 드라이버(port driver), 버스 드라이버(bus driver) 등의 드라이버들의 계층 구조를 이루고 있다. 윈도우 2000 시스템에서는 "버스"라는 포괄적인 용어는 전기적으로 장치들을 연결할 수 있는 하드웨어를 총칭한다. PCI 버스와 같은 통상적인 버스는 물론 SCSI 어댑터나 병렬 포트, 직렬 포트 및 USB 허브와 같이 다수의 장치들이 연결될 수 있는 그 어떤 것도 버스에 포함된다. 버스 드라이버가 해야하는 책임 중의 하나는 버스에 부착된 장치들을 열거하고 윈도우 2000 시스템에서 필요한대로 각 장치들을 위해 물리 디바이스 객체(physical device object)들을 생성하는 것이다. 그러므로, 버스 드라이버는 특정 버스에 대한 정보를 담고 있는 소프트웨어 루틴들과 포트 주소와 IRQ 번호 등과 같은 시스템 자원을 버스에 연결된 장치들에게 할당하는 함수들로 이루어져 있다. 실제 대부분의 디스크 입출력 연산을 수행하는 루틴을 포함하고 있는 것은 포트 드라이버이다.
본 발명의 주요 특징은 NAD가 지역 디스크로 인식되도록 하고 윈도우 2000 호스트의 네트워크 포트를 통하여 NAD에 지역 디스크 연산을 수행할 수 있도록 하는 버스 드라이버와 포트 드라이버를 윈도우 2000 시스템의 디스크 드라이버 계층에 구현하는 것이다.
도 2의 오른 편은 본 발명에 구현된 상기한 기능의 드라이버 계층으로서, 윈도우 2000 시스템의 해당 드라이버 계층에 추가된 변형된 버스 드라이버와 포트 드라이버를 보여주고 있다. 네트워크 부착 디스크를 위해 변형된 버스 드라이버(이후로는 "NAD 버스 드라이버"로 칭함)는 가상 버스를 구현한 것으로서, 네트워크에 부착된 네트워크 부착 디스크들을 윈도우 2000 호스트에 장착과 탈착을 하는 기능을 수행토록 한다. 네트워크 부착 디스크를 위해 변형된 포트 드라이버(이후로는 "NAD 포트 드라이버"로 칭함)는 윈도우 2000 호스트에 장착된 NAD에 있는 각각의 디스크를 윈도우 2000 호스트에 장착, 탈착 하는 기능과 네트워크 포트를 통하여 적절히 NAD들로 디스크 입출력 요구를 전달하여 실제로 디스크 입출력 연산을 수행하는데 필요한 대부분의 루틴들을 구현하고 있다.
입출력 요구를 처리하기 위해서는 윈도우 2000 시스템은 주어진 버스 드라이버와 포트 드라이버를 사용하여 운영체제에 정해진 방식대로 디바이스 스택을 생성해야 한다. 윈도우 2000 시스템의 각 디바이스는 스택 구조로 이루어진 디바이스 객체들로 표현된다. 디바이스 객체란 소프트웨어가 장치 하드웨어를 관리할 수 있도록 윈도우 2000 시스템이 생성하는 특정의 자료 구조이다. 단일 물리 하드웨어를 위해서 다수의 상기한 자료 구조들이 있을 수 있다. 스택의 최하위에 있는 디바이스 객체는 물리 디바이스 객체(physical device object) 또는 PDO라고 불리는 객체이다. 디바이스 객체 스택의 PDO 위에는 기능 디바이스 객체 (functional device object) 또는 FDO라고 불리는 객체가 있다. FDO의 상하에는 필터 디바이스 객체들이 있을 수 있다. 윈도우 2000 시스템의 플러그앤플래이(plug and play, PnP) 매니저는 디바이스 드라이버의 명령에 따라 디바이스 객체들의 스택을 구성한다. 특정 하드웨어를 위한 스택을 구성하는 드라이버들은 각기 다른 역할을 담당한다. 기능 드라이버(function driver)들은 장치를 관리하고, 버스 드라이버는 장치와 컴퓨터를 연결해 주는 역할을 한다.
도 3은 본 발명을 구현하기 위해 생성된 도 1의 호스트 1의 디바이스 스택 (device stack)의 예를 도시하는 도면이다. 도 3에서는 설명을 간명하게 하기 위해 필터 디바이스 객체들은 생략되었다. 왼편에는 PCI 버스 위에 나열된 SCSI 장치들의 계층들로서, 호스트의 PCI 버스에 SCSI 디스크들이 연결된 경우에 생성되는 계층들이다. 우선, PnP 매니저에는 PCI 버스와 같이 자신의 존재를 전기적으로 알릴 수 없는 모든 하드웨어들에 컴퓨터를 개념적으로 연결하는 가상의 루트 버스(root bus)를 위한 내부 드라이버를 장착하고 있다. 루트 버스 드라이버는 PCI 버스의 PDO를 생성하기 위해 필요한 PCI 버스에 관한 정보를 등록정보(registry)로부터 얻는데, 이 등록 정보는 윈도우 2000의 설치 프로그램(setup program)에 의해 초기화된다.
PCI 버스 PDO를 생성하고 나면 PnP 매니저는 PCI 버스의 기능 드라이버를 적재하여 PCI 버스 FDO를 생성한다. 그 후 도 3의 예에서처럼 PCI 버스에 여러 개의 SCSI 장치들이 부착된 경우라면, PCI 버스의 기능 드라이버는 PCI 버스에 부착된 하드웨어 장치들을 열거하여 SCSI 포트 PDO를 생성한다. SCSI 포트 PDO가 생성되면 PnP 매니저는 이제 SCSI 포트에 부착되는 장치들을 위한 드라이버를 적재하여 SCSI 포트 FDO를 생성한다. 유사한 방법으로 각각의 SCSI 디스크마다 SCSI 디스크 PDO를 SCSI 포트 위에 생성하고, 디스크 클래스 드라이버를 적재하여 차례로 SCSI 디스크 FDO들을 생성한다.
도 3의 오른 편은 상기한 예의 호스트 1에 의해 PCI 버스 드라이버와 SCSI 포트 드라이버 대신에 각각 NAD 버스 드라이버와 NAD 포트 드라이버를 사용하여 만들 수 있는 NAD 장치들을 위한 디바이스 스택이다. 루트 위에는 NAD 버스 PDO가 있는데, NAD 버스는 PCI 버스와 같은 통상적인 하드웨어 버스가 아니라 NAD 장치들을 구현하는데 요구되는 가상 버스를 제공하여 윈도우 2000 시스템의 디바이스 스택 구조에 맞추어 넣기 위해 필요한 개념적인 버스이다. PnP 매니저가 NAD 버스 드라이버를 적재하여 NAD 버스 PDO 위에 NAD 버스 FDO를 생성한다.
그후에 네트워크에 장착된 각각의 NAD마다 NAD 포트 PDO가 생성되고, PnP 매니저에 의해 NAD 포트 드라이버를 적재하여 각 NAD 포트 PDO 위에 NAD 포트 FDO를 생성한다. 실제 NAD 디스크 입출력 연산을 수행하는 것은 NAD 포트 드라이버이다.NAD 포트 드라이버는 입출력 요구를 특정 NIC를 통하여 정해진 NAD 장치에게 전달하여 입출력 연산을 수행하고 그 수행 결과를 NAD 장치로부터 얻어 와서 입출력 요구를 만족시키는 역할을 한다. 생성된 NAD 포트 드라이버는 NAD에 장착된 각각의 디스크마다 NAD 디바이스 PDO를 해당 NAD 포트 위에 생성한다.
도 3의 예에서는 호스트 1이 두 개의 NAD를 가지고 있으므로 두 개의 NAD 포트 객체 스택이 생성되었다. 호스트 1은 또한 각 NAD 포트에 대해 두 개 씩 모두 네 개의 NAD 디바이스 PDO를 가지고 있는데 이는 디스크(1,1)과 디스크(1.2)는 NAD 1을 통하여 접근하고 디스크(2.1)과 디스크(2.2)는 NAD 2를 통하여 접근하게 되기 때문이다. 각 NAD 디바이스 PDO에 대해 PnP 매니저가 디스크 클래스 드라이버를 적재하여 NAD 디바이스 FDO를 생성한다. 여기에서 오로지 NAD 버스 드라이버와 NAD 포트 드라이버만이 통상적인 버스 드라이버와 SCSI 포트 드라이버를 각각 대신하도록 하여 지역 디스크 대신에 네트워크 부착 디스크를 사용할 수 있도록 한다는 것에 유의하라. 윈도우 2000 시스템의 디스크 클래스 드라이버와 기타 상위의 드라이버들은 일체의 변경 없이 그대로 사용되어 윈도우 2000 시스템이 네트워크 부착 디스크를 지역 디스크로 인식할 수 있도록 한다.
윈도우 2000 시스템에서는 장치를 구동하는 연산을 수행하기 위한 요구는 입출력 요구 패킷(I/O request packet, IRP)을 사용한다. IRP는 보통 각 장치의 최상위 드라이버에게 전달되어 장치의 하위 드라이버들로 내려가며 전달된다. 각 드라이버 단계에서는 드라이버가 IRP를 어떻게 처리할 것인지 결정한다. 때로는 어떤 드라이버는 IRP에 대해 아무 일도 하지 않고 아래 드라이버로 전달하기만 하고,때로는 IRP를 아래 드라이버로 전달하지 않고 자신이 완전히 처리하여 끝내버리기도 한다. 때로는 IRP를 처리하여 변경한 후에 아래 드라이버에 전달하기도 한다. 도 2에 보인 예와 같이 디스크 입출력의 경우에는 파일 입출력을 위한 IRP는 파일 시스템 드라이버에 전달되어 볼륨 매니저, 디스크 클래스 분할, 분할 매니저, 디스크 클래스 드라이버의 순서로 하위 드라이버로 전달된다.
디스크 클래스 드라이버는 필요에 따라 SCSI 요구 블록(SCSI request block, SRB)을 생성하여 IRP에 포함하여 하위 드라이버에 전달한다. SRB는 윈도우 2000에서 SCSI 장치의 입출력을 위해 규정된 자료 구조이다. 통상적인 디스크에 대한 IRP의 경우에는 디스크 클래스 드라이버는 새로이 만들어진 IRP를 SCSI 포트 드라이버에 전달하여 SCSI 포트 드라이버로 하여금 입출력 연산을 완수토록 한다. IRP가 네트워크에 부착된 NAD 장치에 대한 것이라면 디스크 클래스 드라이버가 NAD 포트로 IRP를 전달하여 NAD 포트가 네트워크 인터페이스를 통하여 NAD 장치에 대한 입출력을 완수토록 한다.
통상적인 지역 디스크이건 네트워크 부착 디스크이건 종류에 상관없이 해당 디스크 장치에 IRP를 전달토록 하는 것은 도 3의 윈도우 2000 시스템 디바이스 스택의 특징이다. 장치 종류에 구분 없이 해당 장치를 찾아 IRP가 전달되는 것은 각각의 디스크마다 별도의 디스크 객체 스택이 생성되고 상위 드라이버에서 IRP가 생성되는 과정에서 해당 디스크가 구별되어 결국 디스크 클래스 드라이버가 해당 디스크가 붙어 있는 포트 드라이버로 IRP를 전달할 수 있기 때문이다. 도 3은 별개의 SCSI 디스크 FDO/PDO 쌍과 NAD 장치 FDO/PDO 쌍이 개별적인 지역 디스크와 네트워크 부착 디스크에 붙어 있는 것을 보여준다.
요약하면, 본 발명은 도 2에서 보는 것처럼 통상적인 버스 드라이버와 포트 드라이버를 각각 NAD 버스 드라이버와 NAD 포트 드라이버로 대체하여 네트워크 부착 디스크가 윈도우 2000 시스템으로 하여금 지역 디스크로 인식하여 사용할 수 있도록 하는 것이다.
윈도우 2000 시스템의 모든 디바이스 드라이버들은 각 장치의 FDO를 생성하고 제거하는데 사용하는 함수들과 IRP를 처리하여 상위 드라이버로부터 하위 드라이버로 전달하는 특파 함수(dispatch function)들로 되어 있다. IRP에 지정되어 있는 주 함수 번호(major function number)와 부 함수 번호(minor function number)들로부터 어느 특파 함수를 호출할지를 결정한다.
다음은 윈도우 2000 시스템에 사용할 수 있는 네트워크 부착 디스크 시스템을 실현한 본 발명의 NAD 버스 드라이버와 NAD 포트 드라이버에 실제 구현된 소프트웨어 모듈들에 대한 간단한 설명이다.
(1)NAD 버스 드라이버
NAD 버스 드라이버는 NAD들이 부착되어 있는 가상 버스를 구현하기 위한 소프트웨어 모듈들의 모임으로서, NAD 포트들은 네트워크에 부착된 NAD들을 실현시킨 것이다. NAD 버스 드라이버의 기능들은 윈도우 2000의 통상적인 PCI 버스 드라이버의 기능과 기본적으로 동일하다. NAD 버스 드라이버는 네트워크에 접속되어 있는 NAD들을 파악하여 각 NAD마다 NAD 포트 PDO를 생성하는 기능을 수행한다. 또한, NAD 포트의 생성, 시작, 종료 및 제거의 기능도 수행한다.
NAD 버스 드라이버와 통상적인 PCI 버스 드라이버의 차이점은 NAD 버스 드라이버는 호스트 시스템 버스에 물리적으로는 부착되어 있지 않지만 네트워크를 통하여 호스트에 연결되어 있는 NAD 장치들을 위한 가상 버스 드라이버라는 점이다. 하드웨어 버스에 하드웨어 장치를 장착하거나 제거하는 것을 하드웨어 인터럽트에 의해 감지하는 윈도우 2000의 시스템과는 달리 NAD 버스 드라이버는 NAD 버스에 NAD 포트를 장착하거나 제거하기 위한 커널 쓰레드를 생성토록 구현되어 있다. NAD 버스 드라이버에 의해 생성된 커널 쓰레드는 IRP_MJ_PNP를 주 함수 번호로 하고 IRP_MN_START_DEVICE를 부 함수 번호로 하는 IRP를 PnP 매니저로부터 NAD 버스 FDO로 전달받으면 작동하기 시작하고 NAD 버스 FDO가 제거되면 종료된다. 새로운 NAD가 탐지되면 쓰레드는 새로 탐지된 NAD에 대해 NAD 포트 PDO를 새로이 생성하고 새로 생성된 NAD 포트 PDO를 자신의 NAD 포트 PDO 리스트에 포함시킨다. 그 후 쓰레드는 PnP 매니저를 호출하여 시스템으로 하여금 새로이 생성된 NAD 포트 PDO를 인식토록 한다. NAD의 탈착 또한 쓰레드에 의해 탐지되는데, 이는 자신의 NAD 포트 PDO 리스트를 확인하여 이전에 만들어졌으나 해당 NAD가 탈착됨에 따라 해당 NAD를 갖지 않는 NAD 포트 PDO를 발견함으로써 특정 NAD가 제거된 것을 알 수 있기 때문이다. NAD가 호스트로부터 제거된 것을 알게되면 쓰레드는 자신의 NAD 포트 PDO 리스트에서 해당 NAD 포트 PDO를 제거하고 PnP 매니저를 호출하여 윈도우 2000 시스템으로부터 해당 NAD 포트를 제거토록 한다.
본 발명의 NAD 버스 드라이버에 구현된 소프트웨어 루틴들은 다섯 가지로 대별할 수 있다. 다음은 NAD 버스 드라이버에 구현된 주요 루틴들을 간단한 설명과함께 정리한 표이다.
기본 함수
DriverEntry() - 드라이버가 최초로 적재될 때 실행- NAD 버스 드라이버의 특파함수들을 등록- 드라이버의 변수들을 초기화
NADBusUnload() - 드라이버를 제거할 때 드라이버가 점유하고 있던 자원을 회복
NADBusAddDevice() - NAD 버스 FDO를 생성- NAD 버스 FDO의 값들을 초기화
특파함수 (Dispatch functions)
NADBusCreate() - IRP_MJ_CREATE IRP를 처리
NADBusClose() - IRP_MJ_CLOSE IRP를 처리
NADBusPnp() - IRP_MJ_PNP IRP를 처리- IRP를 NAD 버스 FDO로 보낼 것인지 NAD 포트 PDO로 보낼지를 결정하고 그에 따라 NADFDOPnP()또는 NADPDOPnp()를 호출
NADBusPower() - IRP_MJ_POWER IRP를 처리
NAD 버스 FDO 관련 함수
NADBusFDOPnp() -IRP_MJ_PNP가 NAD 버스 FDO로 전달될 때 호출-같이 전달된 부함수 번호(minor function number)에 따라 다양한 부함수를 처리 (아래 참조)
IRP_MN_START_DEVICE -NAD 버스 FDO를 시작 상태로 전이-NADBusStartFDO()호출
IRP_MN_QUERY_STOP_DEVICE -NAD 버스 FDO를 종료할 수 있는지 질의하기 위해 호출-NAD 버스 FDO를 종료 대기(stop pending) 상태로 전이
IRP_MN_CANCEL_STOP_DEVICE -IRP_MN_QUERY_STOP_DEVICE를 취소
IRP_MN_STOP_DEVICE -NAD 버스 FDO를 종료-NAD 버스 FDO를 종료 상태로 전이-NADBusHW() thread를 블록(block)시킴
IRP_MN_QUERY_REMOVE_DEVICE -NAD 버스 FDO를 시스템에서 제거할 수 있는지를 질의하기 위해 호출
IRP_MN_CANCEL_REMOVE_DEVICE -IRP_ MN_QUERY_REMOVE_DEVICE를 취소
IRP_MN_SURPRISE_REMOVAL -NAD 버스 FDO가 비정상적으로 제거될 때 호출
IRP_MN_REMOVE_DEVICE -NAD 버스 FDO가 정상적으로 제거될 때 호출
IRP_MN_QUERY_DEVICE_RELATIONS -NAD 포트 PDO 리스트를 PnP 매니저에게 전달
NADBusStartFdo() -NAD 버스 FDO에 자원 할당
NADBusRemoveFdo() -NAD 버스 FDO에 의해 점유되었던 자원을 회복-NADBusHW() thread를 제거
NADBusGetDeviceCapabilities() -DeviceCapability 자료구조체를 PnP 매니저에게 전달
NAD 포트 PDO 관련 함수
NADPortPDOPnp() -PnP에 관련된 부함수들을 처리-IRP_MJ_PNP가 NAD 포트 PDO에 전덜될 때 호출
부함수:- IRP_MN_START_DEVICE- IRP_MN_QUERY_STOP_DEVICE- IRP_MN_CANCEL_STOP_DEVICE- IRP_MN_STOP_DEVICE- IRP_MN_QUERY_REMOVE_DEVICE- IRP_MN_CANCEL_REMOVE_DEVICE- IRP_MN_SURPRISE_REMOVAL- IRP_MN_REMOVE_DEVICE- IRP_MN_QUERY_CAPABILITIES- IRP_MN_QUERY_ID- IRP_MN_QUERY_DEVICE_RELATIONS- IRP_MN_QUERY_DEVICE_TEXT- IRP_MN_QUERY_RESOURCES_REQUIREMENTS- IRP_MN_QUERY_RESOURCE
NADPortPDOQueryDeviceCaps() -NAD 포트의 DEVICE_CAPABILITIES 자료구조체를 돌려 줌
NADPortPDOQueryDeviceId() -NAD 포트의 device ID, instance ID, hardware ID를 돌려 줌
NADPortPDOQueryDeviceText() -NAD port의 위치와 기술(description)을 돌려 줌
NADPortPDOQueryDeviceRelations() -목표 장치 관계 값(target device relation value)을 돌려 줌
NADPortInitializePdo() -NAD 포트 PDO 값을 초기화-NAD 버스에 부착된 NAD 포트가 발견될 때 호출
NADPortDestroyPdo() -NAD 포트 PDO를 제거하고 자원을 회복
NAD 포트 탐지를 위한 함수
NADBusHW() -NAD ports NAD 버스에 부착된 NAD 포트를 탐지하기 위한 커널 쓰레드 루틴-주기적으로 NAD 장치의 존재를 탐지-새 NAD 포트가 탑지되면 NAD 포트 PDO를 생성하고 NADPortInitializePdo()를 호출-기존의 NAD 장치가 제거된 것을 탐지하면 NADPortDestroyPdo()를 호출하여 NAD 포트 PDO를 제거
(2)NAD 포트 드라이버
포트 드라이버는 해당 클래스 드라이버로부터 전달된 시스템에 의해 정의된 장치 제어 요구 또는 드라이버별로 정의된 장치 입출력 제어 요구에 대해 대응하는 클래스 드라이버의 하위 드라이버이다.
NAD 포트 드라이버는 드라이버를 초기화하고 NAD 포트 FDO를 생성하는 기본함수들과 디스크 클래스 드라이버로부터 전해온 IRP를 처리하는 특파함수 기능을수행할 수 있다. 디스크 클래스 드라이버로부터 전해온 IRP는 SCSI 요구 블록(SCSI request block, SRB)을 포함할 수 있는데, SRB는 SCSI 장치에 가할 실제 입출력 명령을 규정하고 있다.
다음에 전술한 NAD 버스 드라이버의 경우와 기본적으로 동일한 역할을 하는 기본함수들과 일부 특파함수들에 대해 간단히 설명한 표가 있다. 요약 표 다음에는 NAD 하드웨어를 제어하고 SRB를 처리하는 NAD 포트 드라이버에 구현된 특파함수들에 대해 구체적으로 설명하기로 한다.
윈도우 2000에서는 장치 입출력 제어 명령은 IRP에 장치 입출력 제어 번호(device I/O control number)로 포함되며, 해당 장치 입출력 제어 번호에 해당하는 명령을 처리하기 위한 장치 입출력 제어 함수들이 포트 드라이버에 구현되어있다.
정규 윈도우 2000 장치 입출력 제어 함수들 외에 NAD 포트 드라이버에는 네트워크 부착 디스크들을 윈도우 2000 시스템을 정지시키지 않고 동적으로 추가하고 제거할 수 있도록 하기 위해 추가적인 장치 입출력 제어 함수들이 구현되어 있다. 통상적인 지역 디스크의 경우에는 지역 디스크가 하드웨어 버스에 물리적으로 연결되어 있으므로 지역 디스크의 장착이나 탈착은 윈도우 2000 시스템에 의해 시스템 부팅시에 직접적으로 탐지된다. 그러므로 지역 디스크를 위한 디스크 PDO의 생성은 기본적으로 시스템 부팅시에 하드웨어 인터럽트에 의해 촉발된다. 따라서, 시스템 작동 도중에 통상적인 디스크를 추가하거나 제거할 일이 없기 때문에 통상적인 포트 드라이버에는 시스템 작동 중에 디스크를 추가하거나 제거하는 기능을 수행하기 위한 함수가 필요 없다.
그러나, NAD 시스템에서는 네트워크 부착 디스크의 장착이나 제거는 윈도우 2000 시스템을 사용하는 도중에도 일어날 수 있기 때문에 새로이 장착/탈착된 디스크를 위한 디스크 PDO를 생성하거나 제거하는 장치가 필요하다.
본 발명의 장치 입출력 제어 함수들은 네트워크부착 디스크들의 상기한 동적 추가 및 제거를 다음과 같이 처리한다. NAD 장치, 즉 네트워크 부착 디스크가 네트워크에 새로이 추가되어 NAD 포트 PDO가 만들어지고, 이로 인하여 생성된 NAD 포트 FDO는 새로이 부착된 NAD에 부착된 각각의 디스크에 대하여 NAD 디바이스 PDO를 생성하여 시스템에게 디스크 장치임을 PnP 매니저를 통하여 통보하여 시스템으로 하여금 디스크 장치로 인식토록 한다. NAD 버스 FDO로부터 NAD 장치가 제거되었음을 장치 제어 IRP를 통하여 전달받은 경우에는 NAD에 부착된 각각의 디스크 장치에 대한 NAD 디바이스 PDO를 제거하는 장치 제어 IRP를 처리하여 NAD 장치를 제거 할 수 있도록 한다.
장치 입출력 제어 IRP들을 처리하는 특파함수들이 다음의 표에 있다.
윈도우 2000에서는 디스크 클래스 드라이버는 SRB를 포함한 IRP를 SCSI 포트드라이버에 보내게 된다. SRB는 요구된 입출력에 관한 정보와 SCSI-2 표준 명령인 명령 묘사 블록(command descriptor block, CDB)을 포함하는 자료 구조이다. 디스크 클래스 드라이버로부터 IRP를 전해 받으면 SCSI 드라이버는 SRB로부터 추출해낸 CDB를 SCSI 호스트 어댑터로 전달하여 하드웨어 장치로 하여금 실제 입출력을 완성토록 한다.
도 4의 왼 편은 PCI 버스와 같은 통상적인 버스에 연결된 SCSI 디스크로 IRP를 전할 때의 IRP와 SRB 및 CDB의 흐름을 보여준다. 통상적인 경우의 디스크 입출력 명령은 SRB 자료 구조를 사용하여 호스트 어댑터의 디스크 제어기로 전달된다. 그러나, 본 발명의 NAD 시스템에서는 디스크 입출력 명령은 호스트의 NIC로 전달된다. 도 4의 오른 편은 NAD 시스템에서의 IRP와 SRB 및 CDB (또는 다른 형태의 입출력 명령)의 흐름을 보여준다.
본 발명에서는, SCSI나 IDE를 포함하는 다양한 종류의 디스크를 지원한다. NAD 장치가 SCSI 디스크로만 구성되어 있다면 CDB를 그대로 호스트 NIC로 전달하여 네트워크를 통해 네트워크 부착 SCSI 디스크들로 하여금 요구된 디스크 입출력을 수행토록 한다.
만일 NAD 장치가 IDE와 같이 SCSI 타입이 아닌 디스크들로 구성되어 있으면 CDB를 특정 장치가 처리할 수 있는 명령으로 변환해야 한다. 그와 같은 경우 CDB의 변환은 NAD 포트 드라이버에서 수행할 수도 있고 또는 네트워크 부착 디스크 장치에서 수행할 수도 있다. 변환을 네트워크 부착 디스크에서 수행하는 경우에는 윈도우 2000 호스트는 마치 SCSI 디스크에 CDB를 전달하듯이 단순히 CDB를 호스트NIC로 전달하면 된다. 변환이 NAD 포트 드라이버에서 수행되어야 하는 경우에는 NAD 포트 드라이버의 함수는 CDB를 특정 하드웨어 디스크 타입의 디스크 입출력 명령으로 변환해야 한다.
본 발명의 NAD 시스템은 두 가지 경우를 모두 지원하며, CDB인지 하드웨어 종류에 따른 별도의 명령인지는 특정 네트워크 부착 디스크를 장착할 당시에 결정된다. 다음에는 본 발명에서 SRB와 CDB를 어떻게 처리하는지를 보여주기 위하여 필수 CDB 연산을 포함하는 SRB를 처리하는 특파함수들 중 일부를 표로 보여준다.
(3)호스트와 네트워크 부착 디스크 사이에서의 통신
전술한 것과 같이 NAD 시스템의 디스크 입출력은 네트워크를 통하여 발생하므로 디스크 입출력 명령은 지역 디스크를 위한 호스트 어댑터 대신에 호스트 NIC로 전달되어야 한다. 그러므로, 본 발명에서는 네트워크 부착 디스크로 입출력 명령을 전달하는 모든 NAD 포트 드라이버 함수들은 네트워크를 통하여 입출력 명령이전달되도록 NDIS 프로토콜 드라이버 계층으로 명령을 보내도록 구현되어 있다. NDIS(network driver interface specification)은 윈도우 2000 시스템에서 사용되는 네트워크 인터페이스 드라이버를 규정하는 일련의 사양이다.
도 5는 윈도우 2000 시스템에 정의되어 있는 NDIS 드라이버 계층이다. SRB 또는 특정 디스크 입출력 연산을 위한 입출력 명령을 포함한 IRP를 디스크 클래스 드라이버로부터 받게 되면, NAD 포트 드라이버는 해당 CDB를 포함한 새로운 IRP를 NDIS 프로토콜 드라이버로 보내게 된다. 그 후 프로토콜 드라이버는 SCSI-2 표준 입출력 명령인 CDB를 네트워크 부착 디스크에 보내게 되고 네트워크 부착 디스크로부터 입출력 연산 결과를 돌려 받는다. 이 때 호스트 컴퓨터가 CDB가 아닌 특정 하드웨어의 입출력 명령을 보내야 되는 경우에는 도 4에서 보인 것처럼 CDB 대신에 특정 하드웨어 입출력 명령을 담은 IRP를 프로토콜 드라이버로 보내는 것에 유의하라.
NDIS는 네트워크 제조업자들에게 전송 투명성을 제공하는데 이는 네트워크를 통한 통신이 요구되는 모든 드라이버는 네트워크를 접근하기 위해서는 NDIS 인터페이스를 호출해야만 하도록 만들어졌기 때문이다. 따라서 본 발명의 NAD 장치와 호스트 사이에서의 통신도 이와 같은 방식으로 하게됨에 따라 NDIS 프로토콜 드라이버를 제공함으로써 NAD 포트 드라이버는 통신에 관해서는 별도의 일을 해 줄 필요가 없다.
도 5의 NDIS 프로토콜 드라이버에 구현되는 통신 프로토콜은 표준 프로토콜을 채택할 수도 있고 또는 비표준 프로토콜을 채택할 수도 있다. IP와 같은 표준프로토콜은 본 발명의 NAD 시스템에는 불필요한 오버헤드가 발생하므로 본 발명에서는 성능 개선 효과를 위해 비표준 통신 프로토콜을 사용하는 것이 선호된다. 비표준 프로토콜의 다른 이점으로는 보안상의 이점을 들 수 있다. 본 발명에서는 이더넷 프레임을 그대로 사용하는 비표준 통신 프로토콜을 NDIS 프로토콜 드라이버에 구현하여 윈도우 2000 호스트와 네트워크 부착 디스크 사이에서 NAD 입출력 명령을 네트워크를 통해 처리하도록 하였다. 그러나, 본 발명에서 구현한 비표준 통신 프로토콜은 성능 및 구현의 편의상 채택된 예일 뿐 본 발명의 NAD 시스템 구현은 프로토콜의 채택과는 무관하다. IP를 통신 프로토콜로 사용하면 본 발명의 NAD를 인터넷을 통하여 전세계 어디에서든 원격의 특정 NAD를 자신의 지역 디스크처럼 접근하여 사용할 수 있다.
(4)NAD 장치
도 6은 본 발명의 NAD 장치의 구성도이다. NAD 장치는 LAN 어댑터와 디스크 제어기 및 상태 기계로 구성되어 있다. LAN 어댑터는 호스트 컴퓨터로부터 네트워크를 통해 디스크 입출력 명령을 받고 해당 명령의 수행 결과를 전송하는 모듈이다. 디스크 제어기는 내부 디스크 채널을 통하여 디스크들을 제어하여 디스크 입출력 연산을 수행하는 모듈이다. 일반적인 CPU와 메모리를 사용하여 구현할 수 있는 상태 기계는 LAN 어댑터와 디스크 제어기를 관리하여 전체 NAD 장치의 상태 전이를 조정하는 모듈이다.
도 6에 보인 것처럼 LAN 어댑터는 버스 인터페이스와 수신 버퍼 관리기(receive buffer manager), 송신 버퍼 관리기(transmit buffer manager), 매체 접근 제어기(media access control controller, MAC controller), 물리 계층 인터페이스 및 레지스터들로 구성되어 있다. 버스 인터페이스는 데이터를 버스와 수신/송신 버퍼 및 레지스터 사이에서 주고받을 수 있도록 하는 논리 회로이다. 상태 기계와 수신/송신 버퍼 관리기는 버스 인터페이스를 통하여 레지스터와 메모리를 접근한다. 수신 버퍼 관리기는 상태 기계의 명령에 따라 MAC 제어기에 의해 저장된 데이터를 자신의 버퍼로부터 메모리로 옮기는 일을 한다. 송신 버퍼 관리기는 상태 기계의 명령에 따라 데이터를 메모리로부터 버퍼로 옮겨 매체 접근 제어기로 하여금 네트워크를 통하여 전송할 수 있도록 한다. 레지스터들은 상태 기계나 송신/수신 버퍼 관리기들이 연산을 조정하는데 필요로 하는 정보를 저장한다. 매체 접근 제어기는 물리 계층으로 데이터를 전송하여 물리 계층이 데이터를 호스트 컴퓨터에게 전송할 수 있도록 한다. 물리 계층이 호스트 컴퓨터로부터 디스크 입출력 요구를 담은 패킷을 받게 되면 해당 패킷을 매체 접근 제어기로 전달하여 매체 접근 계층이 전달된 패킷으로부터 필요한 데이터를 추출하여 궁극적으로 수신 버퍼 관리기로 전달한다.
도 6의 디스크 제어기는 버스 인터페이스, 버퍼 관리기, 채널 제어기 및 레지스터들로 구성되어 있다. 버스 인터페이스 논리 회로의 역할은 LAN 어댑터의 버스 인터페이스의 역할과 비슷하다. 상태 기계는 레지스터에 명령을 적재함으로써 버퍼 관리기로 하여금 디스크 입출력 명령을 수행토록 하며, 버퍼 관리기는 디스크 접근 명령을 수행하기 위하여 디스크 섹터 번호와 채널 번호를 레지스터로부터 얻는다. 버퍼 관리기는 채널 제어기에 명령하여 디스크 접근 명령의 결과로 메모리와 디스크 채널 사이에서 데이터가 전송될 수 있도록 한다. 채널 제어기는 메모리에서 디스크로 또는 그 역으로 데이터를 직접 전송하는 역할을 한다.
상태 기계는 NAD 장치의 상태에 따라 전체 NAD 장치를 관장하는 핵심 요소이다. 도 7은 상태 기계의 단순화된 상태 전이도이다. 'init' 상태에서 상태 기계는 NAD장치의 모든 하드웨어 요소들을 초기화하고 LAN 어댑터와 디스크 제어기에 메모리를 할당한다. 초기화 작업을 완료하면 상태는 'wait_command' 상태로 전이된다. 'wait_command' 상태에서는 네트워크를 통하여 호스트 컴퓨터로부터 전송되어 올 입출력 명령을 기다린다. 호스트로부터 디스크 입출력 명령이 전달되면 상태는 'disk_access' 상태로 전이된다. 'disk_access' 상태에서는 디스크 제어 모듈을 통하여 적절히 디스크 입출력 연산을 수행한다. 디스크 입출력 연산을 완료하면 상태는 'transmit_reply' 상태로 전이한다. 'transmit_reply' 상태에서는 상태 기계는 디스크 입출력 명령의 연산 결과를 LAN 어댑터를 통하여 호스트 컴퓨터에게 전송한다. 전송을 완료하면 상태 기계는 'wait_command' 상태로 전이하여 상기한 디스크 입출력 연산을 반복하여 NAD 장치에 대해 수행한다.
(5)NAD 시스템의 다른 구현 방법
전술한 방법은 윈도우 2000 디스크 드라이버 시스템의 포트 드라이버와 버스 드라이버를 각각 NAD 포트 드라이버와 NAD 버스 드라이버로 대체하여 NAD 시스템을 보통의 지역 디스크와 동일하게 인식되도록 구현하는 방법이다.
윈도우 2000 시스템의 포트 드라이버는 하드웨어 접근과 관련된 부분과 그렇지 않은 부분으로 나누어져 있고 전자의 경우 미니포트(miniport) 드라이버라 하고후자의 경우 SCSI 포트 드라이버라 한다. 상기의 NAD 포트 드라이버는 기존의 윈도우 2000 시스템의 포트 드라이버를 대치하는 방법인데 이와는 달리 기존의 SCSI 포트 드라이버를 사용하고 NAD 미니포트 드라이버를 작성하여 구현하는 방법이 가능하다. NAD 미니포트 드라이버는 네트워크에 존재하는 NAD에 디스크 명령을 전송하고 그 결과를 받는 작업을 하는 소프트웨어 모듈이다. 즉 NDIS를 통하여 네트워크에 있는 NAD에 CDB 또는 다른 종류의 I/O 명령을 보내고 그에 대한 결과를 NAD로부터 NDIS를 통하여 전달받는 작업을 한다. 이와 같은 방식은 기존에 존재하는 SCSI 포트 드라이버를 그대로 사용할 수 있는 장점이 있다.
또한, 다른 방식으로는 가상의 NAD 버스에 장착되는 단위를 상기의 방식인 NAD로 하는 것이 아니고, 호스트에 존재하는 NIC로 하는 방식을 들 수 있다. 즉 상기의 구현에서는 각각의 NAD마다 별도의 NAD 포트를 생성하는 반면에 호스트의 NIC마다 하나의 NAD 포트를 생성하는 것이다. 이와 같은 방식에서는 각각의 NIC가 NAD 포트가 되어 NAD에 대한 장착, 탈착을 관리하게 된다.
또한, 본 발명의 NAD 시스템은 매체 교환 저장 장치(media changeable storage device)의 형태로도 구현할 수 있다. 매체 교환 저장 장치는 물리적으로 분리된 두 부품, 즉 데이터를 저장하고 있는 매체와 매체에 대한 입출력을 수행하는 드라이버 장치의 두 부분으로 저장 장치가 이루어져 있다. 매체가 장착되어 있거나 그렇지 않거나 매체 교환 저장 장치는 호스트에 등록될 수 있으며 디스켓과 같은 매체는 필요한 시점에 드라이버 장치에 삽입될 수 있다.
NAD는 동적으로 네트워크에 꽂아 넣거나 네트워크에서 제거할 수 있으므로NAD를 매체로 사용하는 가상 드라이버를 매체 교환 저장 장치의 형태로 구현할 수 있다. 윈도우 2000 시스템은 매체 교환 저장 장치를 구현하기 위한 교환기 클래스 드라이버(changer class driver) 모델을 제공한다. 교환기 클래스 드라이버의 예에는 플로피 디스크 드라이버와 CD-ROM 드라이버가 있다. 매체 교환 NAD 시스템을 구현하기 위해서는 NAD 시스템의 클래스 드라이버를 윈도우 2000의 교환기 클래스 드라이버 모델에 따라 구현해야 한다. 하위의 두 드라이버, 즉 NAD 포트 드라이버와 NAD 버스 드라이버는 기본적으로 전술한 NAD 시스템을 위해 구현된 NAD 드라이버를 그대로 사용한다.
그러나, 윈도우 2000의 교환기 클래스 드라이버로 구현된 NAD 드라이버는 네트워크 부착 디스크에 대해 모든 연산을 지원할 수는 없다. 예를 들면, 매체 교환 NAD 시스템은 NAD 장치를 분할하거나 공유할 수 없는데 이는 지역 디스크가 아닌 매체 교환 장치로 등록되기 때문이다. 즉, 플로피 디스크 또는 CD-ROM에 가할 수 있는 연산들만을 매체 교환 NAD 디스크에 가할 수 있는 것이다.
상기에서는 본 발명의 바람직한 실시 예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
본 발명의 NAD 시스템은 NAS 또는 SAN에 비해 다음과 같은 장점이 있다.
별도로 추가된 파일서버를 통하여 파일 저장 장치를 제공하는 NAS와는 달리NAD는 호스트에 지역 디스크로서 부착된다. SAN 제품과는 달리 본 발명의 NAD 시스템은 특별한 별도의 스위치 장비나 네트워크 장비를 추가하지 않고 네트워크 포트에 직접 간단히 꽂아 넣어 사용한다. 그러므로 NAD 시스템은 더 나은 사용자 편의, 시스템 유연성, 높은 확장성, 경제성 및 높은 성능을 제공한다.
특히, 포맷하기, 분할하기, 공유하기, 마운트하기(mounting)와 같은 연산을 포함하는 디스크에 적용하는 모든 디스크 연산을 NAD 장치에 가할 수 있다. 이에 비해 NAS를 통해 사용할 수 있는 디스크 공간에 대해서는 호스트 컴퓨터에서 직접 포맷하거나 분할 할 수 없는 것은 물론 파일시스템 경계를 넘어서 있는 다른 디렉토리의 하위에 마운트할 수 없다.
또한, NAD 장치는 지역 디스크로서 사용되므로 보다 나은 관리 및 사용사의 편의를 제공한다. NAS의 경우에는 디스크의 추가, 제거 및 구성상의 모든 변화를 사람 또는 NAS가 제공하는 별도의 소프트웨어를 사용하여 NAS의 운영체제를 통해야만 하는 관리 및 사용상의 불편함이 있다. NAD 시스템의 경우에는 네트워크의 포트에 장치를 간단히 꽂아 넣거나 빼는 것만으로 장착과 탈착이 순간적으로 이루어진다. NAD 시스템의 장착과 탈착은 기존의 내부 시스템 버스에 지역 디스크를 설치 또는 제거하는 것보다도 더 간편한데 이는 기존의 경우의 호스트 컴퓨터의 케이스를 여닫고 설치 또는 제거 작업을 해야하는 불편함마저 없애기 때문이다.
더욱이, NAD 시스템은 디스크 용량 증설에 제한이 없다. 네트워크에 부착할 수 있는 NAD 장치의 개수에는 제한이 없다. 반면에 NAS 서버의 내부에 장착할 수 있는 디스크의 개수는 대단히 제한되므로 대용량의 디스크 증설을 위해서는 다수의NAS가 필요한데 이는 경제적인 해법이 되지 못하고 사용 및 관리에 있어서도 매우 불편하다.
그밖에, NAS는 별도의 파일서버를 채택하지도 않고 또한 별도의 특별한 장치도 사용하지 않으므로 본질적으로 NAS 또는 SAN 장치에 비해 저렴하다.

Claims (13)

  1. 호스트의 내부 버스 대신 네트워크를 통하여 디스크 입출력 연산을 수행할 수 있는 네트워크 부착 디스크 시스템에 있어서,
    데이터를 저장하기 위한 디스크와,
    상기 호스트로부터 상기 네트워크를 통해 디스크 입출력 명령을 받고 해당 명령의 수행 결과를 상기 호스트로 전송하는 LAN 어댑터와,
    내부 디스크 채널을 통하여 상기 디스크를 제어하여 디스크 입출력 연산을 수행하는 디스크 제어기와,
    상기 디스크 제어기를 통하여 상기 디스크로부터 출력되는 데이터 및 상기 디스크 제어기를 통하여 상기 디스크로 입력되는 데이터를 저장하기 위한 메모리와,
    상기 LAN 어댑터 및 상기 디스크 제어기를 관리하여 상기 네트워크 부착 디스크 시스템의 상태 전이를 조정하는 상태 기계
    를 포함하되,
    상기 LAN 어댑터, 상기 디스크 제어기, 상기 메모리 및 상기 상태 기계는 버스를 통하여 접속되어 있는 네트워크 부착 디스크 시스템.
  2. 제1항에 있어서, 상기 LAN 어댑터는
    상기 버스에 연결되는 버스 인터페이스와,
    상기 호스트로부터 디스크 입출력 요구를 담은 패킷을 수신하는 물리 계층 인터페이스와,
    상기 물리 계층을 통하여 상기 호스트로부터의 디스크 입출력 요구를 담은 패킷을 수신하고, 상기 물리 계층으로 데이터를 전송하여 상기 물리 계층이 데이터를 상기 호스트에게 전송할 수 있도록 하는 매체 접근 제어기(media access control controller, MAC controller)와,
    수신 버퍼를 구비하며, 상기 상태 기계의 명령에 따라 상기 매체 접근 제어기에 의해 저장된 데이터를 상기 수신 버퍼로부터 상기 메모리로 전달하는 수신 버퍼 관리기(receive buffer manager)와,
    송신 버퍼를 구비하며, 상기 상태 기계의 명령에 따라 상기 데이터를 상기 메모리로부터 상기 송신 버퍼로 옮겨 상기 매체 접근 제어기로 하여금 상기 네트워크를 통하여 전송할 수 있도록 하는 송신 버퍼 관리기(transmit buffer manager)와,
    상기 상태 기계와 상기 송신 및 수신 버퍼 관리기가 연산을 조정하는데 필요로 하는 정보를 저장하는 레지스터
    를 포함하되,
    상기 버스 인터페이스는 상기 데이터를 상기 버스와 상기 수신/송신 버퍼 및 레지스터 사이에서 주고받을 수 있도록 하고, 상기 상태 기계와 수신/송신 버퍼 관리기는 상기 버스 인터페이스를 통하여 레지스터와 메모리를 접근하며, 상기 물리 계층은 상기 호스트로부터 디스크 입출력 요구를 담은 패킷을 받게 되면 해당 패킷을 상기 매체 접근 제어기로 전달하여 매체 접근 계층이 전달된 패킷으로부터 필요한 데이터를 추출하여 상기 수신 버퍼 관리기로 전달하도록 하는 것을 특징으로 하는 네트워크 부착 디스크 시스템.
  3. 제1항에 있어서, 상기 디스크 제어기는
    상기 버스에 연결되는 버스 인터페이스와,
    상기 디스크에 연결되는 디스크 채널과,
    상기 메모리에서 상기 디스크로 또는 상기 디스크에서 상기 메모리로 상기 데이터를 전송을 제어하는 채널 제어기와,
    디스크 접근 명령을 수행하기 위한 디스크 섹터 번호와 채널 번호를 저장하는 레지스터와,
    상기 레지스터로부터 상기 디스크 섹터 번호와 채널 번호를 얻고, 상기 채널 제어기에 명령하여 상기 디스크 접근 명령의 결과로 상기 메모리와 상기 디스크 채널 사이에서 데이터가 전송될 수 있도록 하기 위한 버퍼 관리기
    를 포함하되,
    상기 상태 기계는 상기 레지스터에 명령을 적재함으로써 상기 버퍼 관리기로 하여금 디스크 입출력 명령을 수행토록 하는 것을 특징으로 하는 네트워크 부착 디스크 시스템.
  4. 제1항에 있어서, 상기 상태 기계는
    상기 네트워크 부착 디스크 시스템의 모든 하드웨어 요소들을 초기화하고 상기 LAN 어댑터와 상기 디스크 제어기에 상기 메모리를 할당하는 제1 상태와,
    상기 초기화 작업을 완료한 후, 상기 네트워크를 통하여 상기 호스트로부터 전송되는 상기 입출력 명령을 대기하는 제2 상태와,
    상기 호스트로부터 상기 디스크 입출력 명령이 전달된 후, 디스크 제어 모듈을 통하여 디스크 입출력 연산을 수행하는 제3 상태와,
    디스크 입출력 연산을 완료한 후, 상기 디스크 입출력 명령의 연산 결과를 상기 LAN 어댑터를 통하여 상기 호스트에게 전송하는 제4 상태
    를 포함하는 것을 특징으로 하는 네트워크 부착 디스크 시스템.
  5. 호스트의 내부 버스 대신 상기 호스트에 의해 제어되는 네트워크 포트에 직접 연결되어 상기 네트워크를 통하여 디스크 입출력 연산을 수행할 수 있는 네트워크 부착 디스크 시스템에 있어서,
    상기 네트워크 포트에 연결된 네트워크 상에 존재하는 상기 네트워크 부착 디스크가 접속되어 있는지 여부를 인식하여 네트워크 부착 디스크를 호스트에 인식 시키는 제1 가상 버스 드라이버와,
    상기 네트워크 포트를 통하여 상기 네트워크 부착 디스크에 부착된 디스크를 지역 디스크로서 인식되도록 하고, 상기 디스크로 디스크 입출력 요구를 전달하여 상기 디스크 입출력 연산을 수행하는데 필요한 루틴들을 구현하되, 디스크 접근 명령(disc access command) 및 네트워크 접근 명령(network access command)을 상호변환함으로써, 상기 호스트로 하여금 상기 네트워크 접근 명령이 상기 디스크 접근 명령으로 인식되도록 하는 제2 가상 포트 드라이버
    를 포함하는 것을 특징으로 하는 네트워크 부착 디스크 시스템.
  6. 제5항에 있어서, 상기 호스트는 상기 네트워크 부착 디스크에 접속하기 위한 네트워크 인터페이스 카드를 포함하며,
    상기 제1 가상 버스 드라이버는 상기 네트워크 인터페이스 카드가 접속된 네트워크 상에 네트워크 접속 디스크의 존재 여부를 탐지하기 위한 커널 쓰레드를 생성하도록 구현되며, 상기 커널 쓰레드는
    새로운 네트워크 접속 디스크가 탐지되면 탐지된 네트워크 접속 디스크에 대하여 네트워크 부착 디스크 포트 물리 디바이스 객체(NAD 포트 PDO)를 생성하는 단계와,
    상기 생성된 NAD 포트 PDO를 자신의 NAD 포트 PDO 리스트에 포함시키는 단계와,
    상기 호스트의 플러그앤플레이(PnP) 매니저를 호출하여 상기 시스템으로 하여금 상기 생성된 NAD 포트 PDO를 인식하도록 하는 단계
    를 수행하는 것을 특징으로 하는 네트워크 부착 디스크 시스템.
  7. 제5항에 있어서, 상기 제2 가상 포트 드라이버는 드라이버를 초기화하고 네트워크 부착 디스크 포트 기능 디바이스 객체(NAD 포트 FDO)를 생성하는 기본 함수와,
    네트워크 부착 디스크에 장착된 각각의 디스크에 대한 네트워크 부착 물리 디바이스 객체(NAD 디바이스 PDO)를 생성하는 기능과,
    상기 네트워크 부착 물리 디바이스 객체(NAD 디바이스 PDO)를 지역 디스크로 인식시키는 기능과,
    디스크 클래스로부터 전달되는 입출력 요구 패킷을 처리하는 특파 함수 기능을 수행하는 것을 특징으로 하는 네트워크 부착 디스크 시스템.
  8. 제6항에 있어서, 상기 네트워크 부착 디스크가 상기 네트워크에 새로이 추가되었음을 알리는 장치 제어 입출력 요구 패킷이 상기 NAD 버스 FDO에 전달되면 상기 NAD 버스 FDO는 상기 새로이 부착된 네트워크 부착 디스크를 위한 NAD 포트 PDO를 생성하여 상기 시스템으로 하여금 인식하도록 하는 것을 특징으로 하는 네트워크 부착 디스크 시스템.
  9. 제7항에 있어서, 상기 네트워크 부착 디스크의 NAD 포트 FDO가 생성되어 동작하면, 상기 네트워크 부착 디스크에 장착된 디스크에 대해 NAD 디바이스 PDO를 생성하여 상기 디스크를 상기 시스템으로 하여금 지역 디스크로 인식하도록 하는 것을 특징으로 하는 네트워크 부착 디스크 시스템.
  10. 제5항 내지 제8항 중 어느 한 항에 있어서, 상기 네트워크는 이더넷인 것을특징으로 하는 네트워크 부착 디스크 시스템.
  11. 제5항 내지 제8항 중 어느 한 항에 있어서, 상기 호스트는 마이크로소프트의 윈도우즈 운영 시스템에서 동작하는 것을 특징으로 하는 네트워크 부착 디스크 시스템.
  12. 제5항 내지 제8항 중 어느 한 항에 있어서, 상기 호스트는 마이크로소프트의 윈도우즈 2000 운영 시스템에서 동작하는 것을 특징으로 하는 네트워크 부착 디스크 시스템.
  13. 제5항 내지 제8항 중 어느 한 항에 있어서, 상기 호스트는 리눅스 및 솔라리스 운영 시스템 등등의 유닉스 계열 운영 시스템에서 동작하는 것을 특징으로 하는 네트워크 부착 디스크 시스템.
KR10-2001-0000086A 2001-01-02 2001-01-02 네트워크에 직접 부착 가능한 디스크 시스템 KR100372915B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR10-2001-0000086A KR100372915B1 (ko) 2001-01-02 2001-01-02 네트워크에 직접 부착 가능한 디스크 시스템
JP2002555298A JP2004527817A (ja) 2001-01-02 2001-11-19 ネットワークに直接に取付可能なディスクシステム
PCT/KR2001/001976 WO2002054266A1 (en) 2001-01-02 2001-11-19 Disk system adapted to be directly attached to network
EP01272932A EP1348164A4 (en) 2001-01-02 2001-11-19 TO A DIRECT CONNECTION TO A NETWORK ADJUSTED PANEL SYSTEM

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0000086A KR100372915B1 (ko) 2001-01-02 2001-01-02 네트워크에 직접 부착 가능한 디스크 시스템

Publications (2)

Publication Number Publication Date
KR20020059139A KR20020059139A (ko) 2002-07-12
KR100372915B1 true KR100372915B1 (ko) 2003-02-19

Family

ID=19704210

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0000086A KR100372915B1 (ko) 2001-01-02 2001-01-02 네트워크에 직접 부착 가능한 디스크 시스템

Country Status (4)

Country Link
EP (1) EP1348164A4 (ko)
JP (1) JP2004527817A (ko)
KR (1) KR100372915B1 (ko)
WO (1) WO2002054266A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7237021B2 (en) * 2003-04-04 2007-06-26 Bluearc Uk Limited Network-attached storage system, device, and method supporting multiple storage device types
US8914459B2 (en) * 2004-04-14 2014-12-16 Hewlett-Packard Development Company, L.P. Redirecting I/O request to remote networked peripheral device
KR100662256B1 (ko) 2004-12-20 2006-12-28 한국전자통신연구원 낮은 프로세스 점유율을 가지는 객체기반 스토리지 장치및 그 제어 방법
US7912987B2 (en) 2005-01-14 2011-03-22 Microsoft Corporation USB devices in application server environments
US8918530B2 (en) 2005-09-09 2014-12-23 Microsoft Corporation Plug and play device redirection for remote systems
GB0608085D0 (en) 2006-04-25 2006-05-31 Intesym Ltd Network interface and router
CN101398822B (zh) * 2007-09-26 2012-05-09 新奥特硅谷视频技术有限责任公司 利用虚拟文件系统技术实现动态扩展网络存储空间的方法
US8041987B2 (en) * 2008-11-10 2011-10-18 International Business Machines Corporation Dynamic physical and virtual multipath I/O
EP2189893A1 (en) 2008-11-21 2010-05-26 Thomson Licensing Data storage system and method of operation
TWI426385B (zh) * 2010-06-29 2014-02-11 Genesys Logic Inc 支援大容量儲存裝置存取之方法與系統
US9858126B2 (en) 2010-12-16 2018-01-02 Microsoft Technology Licensing, Llc Device redirection for remote systems
JP5491548B2 (ja) * 2012-01-31 2014-05-14 株式会社ユニテックス 情報処理装置、情報処理システム、情報処理方法、プログラム及び記録媒体
KR101526471B1 (ko) * 2013-11-22 2015-06-09 유넷시스템주식회사 호스트 보안 장치
KR20200109547A (ko) 2019-03-13 2020-09-23 김한규 네트워크 부착 디스크를 통한 파일 처리 방법 및 그 시스템

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5838910A (en) * 1996-03-14 1998-11-17 Domenikos; Steven D. Systems and methods for executing application programs from a memory device linked to a server at an internet site
US6167490A (en) * 1996-09-20 2000-12-26 University Of Washington Using global memory information to manage memory in a computer network
JPH117404A (ja) * 1997-06-17 1999-01-12 Toshiba Corp ネットワーク接続型scsi装置ならびに同装置を用いたファイルシステム
US5941972A (en) * 1997-12-31 1999-08-24 Crossroads Systems, Inc. Storage router and method for providing virtual local storage
US6128690A (en) * 1998-03-24 2000-10-03 Compaq Computer Corporation System for remote memory allocation in a computer having a verification table contains information identifying remote computers which are authorized to allocate memory in said computer
JPH11296466A (ja) * 1998-04-06 1999-10-29 Canon Inc ネットワークデバイスの管理装置およびその方法、記録媒体
US6470397B1 (en) 1998-11-16 2002-10-22 Qlogic Corporation Systems and methods for network and I/O device drivers
JP3446645B2 (ja) * 1999-01-13 2003-09-16 日本電気株式会社 情報処理システム及びそれに用いる周辺デバイス探索処理方法並びにその制御プログラムを記録した記録媒体
KR20000072493A (ko) * 2000-09-06 2000-12-05 임동희 무선인터넷 기반에서 개인휴대용단말기를 사용자 컴퓨터의터미널로 이용하여 원격 제어하여 사용할 수 있는 방법
KR20010088528A (ko) * 2001-08-02 2001-09-28 전대식 휴대형 기억매체 및 이 기억매체를 이용하여 네트워크상의리모트 저장장치를 로컬 컴퓨터의 보조기억장치로활용하는 방법

Also Published As

Publication number Publication date
EP1348164A1 (en) 2003-10-01
JP2004527817A (ja) 2004-09-09
EP1348164A4 (en) 2007-12-05
WO2002054266A1 (en) 2002-07-11
KR20020059139A (ko) 2002-07-12

Similar Documents

Publication Publication Date Title
US7792923B2 (en) Disk system adapted to be directly attached to network
US9563469B2 (en) System and method for storage and deployment of virtual machines in a virtual server environment
US7181553B2 (en) Method and apparatus for identifying multiple paths to discovered SCSI devices and specific to set of physical path information
US8868628B2 (en) Sharing computer data among computers
US7617321B2 (en) File system architecture requiring no direct access to user data from a metadata manager
US7685335B2 (en) Virtualized fibre channel adapter for a multi-processor data processing system
US6105092A (en) Computer system including a device with a plurality of identifiers
US7275050B2 (en) Storage system, a method of file data backup and method of copying of file data
KR100372915B1 (ko) 네트워크에 직접 부착 가능한 디스크 시스템
JP4410557B2 (ja) コンピュータ・システム内のテープ装置にアクセスするための方法およびシステム
US20040128456A1 (en) Storage system and data backup method for the same
US20060195663A1 (en) Virtualized I/O adapter for a multi-processor data processing system
US20150370595A1 (en) Implementing dynamic virtualization of an sriov capable sas adapter
US10761859B2 (en) Information processing system, management device, and method for controlling information processing system
US7185341B2 (en) System and method for sharing PCI bus devices
US20050049849A1 (en) Cross-platform virtual tape device emulation
US7130982B2 (en) Logical memory tags for redirected DMA operations
US7610295B2 (en) Method and apparatus for generating persistent path identifiers
US6915524B2 (en) Method for controlling multiple storage devices from a single software entity
JP2005293478A (ja) 記憶制御システム、記憶制御システムに備えられるチャネル制御装置、データ転送装置
WO2007077514A2 (en) Transparent intellectual network storage device
JP2866376B2 (ja) ディスクアレイ装置
JP2866375B2 (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
FPAY Annual fee payment

Payment date: 20121226

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20140128

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee