KR20040035723A - 컴퓨터 네트워크 내의 블록 데이터 저장 - Google Patents

컴퓨터 네트워크 내의 블록 데이터 저장 Download PDF

Info

Publication number
KR20040035723A
KR20040035723A KR10-2004-7001917A KR20047001917A KR20040035723A KR 20040035723 A KR20040035723 A KR 20040035723A KR 20047001917 A KR20047001917 A KR 20047001917A KR 20040035723 A KR20040035723 A KR 20040035723A
Authority
KR
South Korea
Prior art keywords
network
storage device
command
host
block
Prior art date
Application number
KR10-2004-7001917A
Other languages
English (en)
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 KR20040035723A publication Critical patent/KR20040035723A/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • H04L49/9073Early interruption upon arrival of a fraction of a packet
    • 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
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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/0661Format or protocol conversion arrangements
    • 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 개시 컴퓨터 시스템과 블록 데이터 저장 장치(26)를 갖는 타겟 컴퓨터 시스템 사이에서 데이터 전송 능력을 제공하고, 여기서 타겟 컴퓨터 시스템은 개시 컴퓨터 시스템에 대하여 원격 배치되고, 채용된 블록 데이터 저장 장치(26)의 종류에 대하여 독립적인 인터페이스를 갖는다. 일실시예에서, 가상 장치 드라이버가 채용되고, 블록 데이터 저장 장치(26)에 대하여 독립적 인터페이스인 명령어 세트를 구현한다.

Description

컴퓨터 네트워크 내의 블록 데이터 저장{BLOCK DATA STORAGE WITHIN A COMPUTER NETWORK}
범용 컴퓨터 시스템은 명령어 실행을 위한 프로세서, 프로세서에 의해 실행되는 명령어 및 명령어의 실행 결과를 저장하기 위한 메모리, 사용자가 시스템과 대화할 수 있게 해주는 입력 주변장치(input peripheral)(키보드, 마우스 등), 사용자가 시스템과 대화할 수 있게 해주는 출력 주변장치(output peripheral)(모니터, 프린터 등), 및 메모리에 의해 제공되는 데이터를 초과하는 데이터 저장을 제공하는 저장 주변장치(storage peripheral)를 포함한다. 컴퓨터 시스템이 동작중일 때, 메모리는 오퍼레이팅 시스템 프로그램 및 어플리케이션 프로그램(예컨대, 스프레드시트 프로그램)과 같은, 두개의 프로그램 중 적어도 일부분을 일반적으로 포함한다. 오퍼레이팅 시스템 프로그램은 복수의 함수를 제공하고, 여기서 함수는 파일관리, 파일 디렉토리, 및 컴퓨터 시스템과 연관된 입출력 주변장치에 관한 함수를포함하고 있다. 어플리케이션 프로그램이 이들 함수 중 임의의 함수의 수행을 필요로 하면(예컨대, 비디오 모니터로의 정보 출력), 어플리케이션 프로그램은 소정 함수를 위해 오퍼레이팅 시스템에 요구(request)를 제출하고, 오퍼레이팅 시스템은 이 함수의 구현에 요구되는 어떠한 연산이라도 수행하게 된다.
넓은 관점에서, 컴퓨터 시스템은 통상적으로 다른 컴퓨터 시스템과 접속되어 컴퓨터 네트워크를 형성한다. 통상의 네트워크는 서로 네트워크로 결합된 컴퓨터 시스템이 비교적 작은 영역상에, 예컨대 사무실 또는 빌딩 내에 분포되는 LAN(local area network)을 포함한다. 다른 통상의 네트워크로는 네트워크의 일부분인 컴퓨터 시스템이 비교적 넓은 영역상에 분포되는 WAN(wide area network)이 있다. 결과적으로, 제3 통신 시스템(예컨대, 전화 및 위성)이 WAN의 구현을 위해 요구된다.
컴퓨터 네트워크의 기본적인 이점은 하나의 컴퓨터 시스템이 네트워크 내의 다른 컴퓨터 시스템과 연관된 메모리 장치로 데이터를 기록할 수 있거나, 또는 이 메모리 장치로부터 데이터를 판독할 수 있다는 점이다. 그러나, 컴퓨터 시스템이 서로 네트워크 연결되어 이러한 방식으로 데이터를 기록 및 판독하기 전에, 컴퓨터 시스템에 인스톨된 많은 오퍼레이팅 시스템의 "로컬(local)" 특성에 있어서의 고유한 특정 제한이 극복되어야만 한다. 상세히 설명하면, 많은 오퍼레이팅 시스템은 오퍼레이팅 시스템이 연관되어 있는 컴퓨터 시스템과 관련된 메모리 장치와의 통신, 예컨대 "로컬" 메모리 장치와의 통신을 위한 요구를 프로세스 할 수 있을 뿐이다. 결과적으로, 이들 오퍼레이팅 시스템은 "원격(remote)" 메모리 통신 장치, 예컨대, 오퍼레이팅 시스템이 연관되어 있는 컴퓨터 시스템과 관련이 없는 메모리 장치와의 통신을 위한 요구를 프로세스 할 수 없었다. 이러한 제한을 극복하기 위해, "가상 장치 드라이버(virtual device drivers)"가 고려되었다.
일반적으로, 가상 장치 드라이버는 원격 메모리 장치가 컴퓨터 시스템의 오퍼레이팅 시스템에게 로컬 메모리 장치로 나타나도록 기능하고, 원격 위치된 메모리 장치와의 통신을 관리한다. 또한, 가상 장치 드라이버는 두개의 구성요소, 즉 원격 메모리 장치와의 통신을 개시하는 컴퓨터 시스템과 연관된 개시 가상 장치 드라이버(initiating virtual device driver) 및 원격 메모리 장치가 연관되어 있는 컴퓨터 시스템과 관련된 타겟 가상 장치 드라이버(target virtual device driver)로 이루어진다. 대부분의 경우, "개시" 컴퓨터 시스템은 "타겟" 컴퓨터 시스템에 대해 원격 위치되어 있고, 또한 "타겟" 컴퓨터 시스템이 액세스하기를 원하는 메모리 장치를 갖는다. 이러한 경우, 컴퓨터 시스템과 연관된 가상 장치 드라이버는, 개시 가상 장치 드라이버가 타겟 가상 장치 드라이버로서도 기능하는(그 역으로도 가능함)바와 같이, 역할을 전환할 수 있다.
원격 메모리 장치를 로컬 메모리 장치로 오퍼레이팅 시스템에게 나타나도록 하기 위해, "개시 가상 장치 드라이버"는 로컬 메모리 장치가 오퍼레이팅 시스템과 통신하는 방식과 동일한 방식으로 컴퓨터 시스템의 오퍼레이팅 시스템과 통신한다. 그러나, 원격 메모리 장치와의 통신을 관리하기 위해서, "개시 가상 장치 드라이버"는 네트워크 통신 기반구조(infrastructure)(예컨대, 동 케이블, 광섬유 케이블, 무선 채널 등)를 통해 컴퓨터 네트워크내의 다른 컴퓨터 시스템과의 통신 수행을 담당하는 컴퓨터 시스템의 부분과 통신한다. 컴퓨터 시스템의 이 부분은 통상적으로 네트워크 인터페이스라고 언급되며, 네트워크 인터페이스 카드의 형태로 통상적으로 구현된다. 어떠한 경우에서도, 개시 가상 장치 드라이버는 원격 메모리 장치로 송신되어질 커뮤니케이션을, 네트워크 통신 기반구조를 통한 커뮤니케이션 전송을 위한 프로토콜에 따라 통신을 캡슐화하는 네트워크 인터페이스에게 제공한다. 예컨대, 네트워크 인터페이스는 인터넷을 통해 전송하는 TCP/IP 프로토콜 하에서 커뮤니케이션을 캡슐화할 수 있다. 컴퓨터 시스템의 개시에 의해 시작된 커뮤니케이션에 따라 원격 메모리 장치로부터 커뮤니케이션이 수신된 경우, 네트워크 인터페이스는 커뮤니케이션의 네트워크 기반구조 프로토콜 정보를 스트립하고, 그 다음 이 커뮤니케이션을 개시 가상 장치 드라이버에게 제공한다. 이어서, 개시 가상 장치 드라이버는 그 외의 프로세스를 위해 오퍼레이팅 시스템으로 커뮤니케이션을 전송한다.
이 타겟 컴퓨터 시스템(예컨대, 원격 메모리 장치가 연관되어 있는 컴퓨터 시스템)의 타겟 가상 장치 드라이버는 개시 가장 장치 드라이버와 매우 동일한 방식으로 동작한다. 상세히 설명하면, 타겟 컴퓨터 시스템의 네트워크 인터페이스는 개시 컴퓨터 시스템으로부터 커뮤니케이션을 스트립하고, 이어서 이 커뮤니케이션을 타겟 가상 장치 드라이버에게 제공한다. 따라서, 타겟 가상 장치 드라이버는 원격 메모리 장치상으로 커뮤니케이션을 전달한다. 원격 메모리 장치로부터의 어떠한 응답이라도 타겟 가상 장치 드라이버에게 제공되고, 이는 응답이 네트워크 인터페이스로 전달되게 한다. 이어서, 네트워크 인터페이스는 네트워크 기반구조를 거쳐개시 컴퓨터 시스템으로 전송하기 위한 응답 또는 커뮤니케이션을 캡슐화하도록 동작한다.
일반적으로, 컴퓨터 네트워크에 채용되는 "가상 장치 드라이버"는 독립적인 장치 프로토콜이다. 예컨대, 원격 메모리 장치가 SCSI 디스크 드라이브이면, "개시 컴퓨터 내의 "개시 가상 장치 드라이버"는 원격 SCSI 디스크 드라이브와의 통신에 필요한 완전한 SCSI 명령어 세트를 구현한다. 예컨대, 개시 컴퓨터상에서 실행 중인 어플리케이션이 원격 SCSI 디스크 드라이버로부터 판독되어질 데이터를 필요로 하면, 개시 컴퓨터상의 개시 가상 장치 드라이버는 판독 동작의 구현에 필요한 모든 필수적인 SCSI 명령어가 네트워크 기반구조를 거쳐 통신되도록 동작한다. 이는 네트워크를 통한 몇 가지의 통신을 포함한다. 예컨대, 제1 통신은 SCSI 디스크 드라이버가 동작하는 것을 보장하기 위한 상태 요구(status request)일 수 있고, 제2 명령어는 드라이브를 액세스하기 위한 요구일 수 있으며, 제3 명령어는 소정 데이터가 위치되어 있는 트랙으로의 판독 헤드를 이용시키기 위한 검색 명령어(seek command)일 수 있다.
타겟 컴퓨터 시스템과 연관된 오퍼레이팅 시스템이 타겟 컴퓨터 시스템과 연관된 원격 메모리 장치로부터 또는 원격 메모리 장치로 데이터를 이동시키는 것 보다 컴퓨터 시스템 사이의 데이터 전송이 상당히 느리기 때문에, 네트워크내의 컴퓨터 시스템 사이의 데이터 전송을 위한 이 시스템은 일부 시간동안 적당하게 동작한다. 즉, 타겟 컴퓨터 시스템, 보다 상세하게는 타겟 컴퓨터 시스템의 오퍼레이팅 시스템은 네트워크 기반구조의 활용 가능한 대역폭(bandwidth)을 실질적으로 이용하는 속도로 컴퓨터 네트워크 내의 다른 컴퓨터 시스템으로 데이터를 전송할 수 있다.
그러나, 최근에는 네트워크 기반구조의 대역폭 또는 속도가 급격하게 향상되었다. 결과적으로, 네트워크 기반구조는 컴퓨터 네트워크 내의 컴퓨터와 다른 컴퓨터 사이의 데이터 전송에 있어서 더 이상 최저속도 요소가 아니다. 대신에, 타겟 컴퓨터 시스템과, 보다 상세하게 타겟 컴퓨터의 오퍼레이팅 시스템이 최저속도 요소로 되었다. 상세히 설명하면, 타겟 컴퓨터 시스템과 연관된 오퍼레이팅 시스템은 일반적으로 이 시스템상에서 동작중인 하나 이상의 어플리케이션으로부터의 요구를 프로세스하고, 주변장치를 관리하며, 다른 임무를 수행하기 때문에, 오퍼레이팅 시스템은 네트워크 내의 다른 컴퓨터 시스템과의 데이터 전송을 처리하기 위해 그 시간의 일부분을 소요한다. 게다가, 오퍼레이팅 시스템이 그러한 전송에 소요할 수 있는 이 시간은 이제 네트워크 기반구조가 데이터를 전송할 수 있는 대역폭 또는 속도를 완전하게 이용하기 위해서는 일반적으로 불충분하다.
고속 네트워크 기반구조를 이용하는 컴퓨터 네트워크 내의 컴퓨터 시스템 사이의 데이터 전송과 연관된 오퍼레이팅 시스템 제한의 결과로서, 새로운 형식의 저장 시스템 또는 장치, 즉 네트워크 접속형 저장 장치(network attached storage device)가 발전하게 되었다. 결과적으로, 네트워크 접속형 저장 장치와 연관된 오퍼레이팅 시스템은 어떠한 시간도 소비하지 않고, 종래의 컴퓨터 시스템과 같이 어플리케이션 프로그램 등으로부터의 요구를 직접적으로 서비스한다. 즉, 이는 네트워크 접속형 저장 장치가 전형적인 종래 컴퓨터 시스템 보다 매우 신속하게 네트워크 내의 다른 컴퓨터 시스템으로 데이터를 전송하게 해준다. 게다가, 네트워크 저장 장치가 컴퓨터 네트워크에 설치되면, 장치는 그 소유의 네트워크 어드레스를 제공받고, 따라서, 네트워크 내의 다른 컴퓨터 시스템으로 직접적으로 액세스할 수 있다. 이러한 직접 액세스 능력은 데이터 전송 속도를 향상시킨다.
본 발명은 컴퓨터 데이터 저장에 관한 것으로, 보다 상세하게는 컴퓨터 네트워크 내의 블록 데이터 저장 장치상에서의 데이터 저장에 관한 것이다.
도1은 본 발명에 따른 컴퓨터 네트워크의 블록도로서, 호스트 컴퓨터, 호스트 컴퓨터에 대하여 원격 위치된 블록 데이터 저장 장치를 갖는 타겟 컴퓨터, 및 호스트 컴퓨터와 타겟 컴퓨터 사이의 커뮤니케이션을 전달하기 위한 네트워크 기반구조를 포함하고 있는 도면.
도2는 "요구"의 헤더를 나타내는 도면.
도3a 및 도3b는 각각 식별 네트워크 명령어 및 그 액크(acknowledgment)를나타내는 도면.
도4a 및 도4b는 각각 판독 네트워크 명령어 및 그 액크를 나타내는 도면.
도5a 및 도5b는 각각 기록 네트워크 명령어 및 그 액크를 나타내는 도면.
도6a 및 도6b는 각각 기록/현재 네트워크 명령어 및 그 액크를 나타내는 도면.
도7a 및 도7b는 각각 접속해제 네트워크 명령어 및 그 액크를 나타내는 도면.
도8a 내지 도8c는 각각 "핑" 네트워크 명령어, 이 명령어의 액크, 및 종료된 명령어를 나타내는 도면.
도9는 NAS 장치내의 오퍼레이팅 시스템의 블록 저장 장치 프로세서 부분의 일실시예를 나타내는 도면.
도10은 블록 데이터 저장 프로세서와 이 프로세서에 이용하기 위한 어플리케이션 프로그램 인터페이스를 나타내는 도면.
도11은 호스트 원격 블록 저장 장치 프로세서 및 이 프로세서에 이용하기 위한 어플리케이션 프로그램 인터페이스를 나타내는 도면.
본 발명의 일실시예는 NAS 장치(network attached storage device)와 결합되거나, 또는 NAS 장치와 결합되어지며, 네트워크 내의 다른 컴퓨터 장치에 대해 원격 배치된 것으로 고려되는 블록 데이터 저장 장치와의 데이터 전송에 기여하는 네트워크 접속형 저장 장치(NAS 장치)를 제공한다. 본 명세서에서의 NAS는 네트워크 인에이블 저장 장치(network enabled storage device)(예컨대, 데이터를 저장하고, 그 소유의 네트워크 어드레스를 갖는 장치를 나타냄)라고 언급되고, 파일 전송을 이용하는 대신 데이터 블록 전송을 포함한다. 데이터 전송의 촉진은 적어도 두개의 팩터의 인식(recognition)에 기반한다. 먼저, 디스크 드라이브와 같이, 저장 매체상의 연속 영역 내에 복수 바이트의 데이터를 저장하는 블록 데이터 저장 장치는 명령어 세트에서 통상적으로 반향되는 다수의 함수를 일반적으로 수행할 수 있다. 첫 번째로, 디스크 드라이브에 대한 일반적인 명령어 세트는 검색(seek), 탐색(search), 로드(load), 언로드(unload), 판독(read), 및 기록(write) 명령어를 포함한다. 두 번째로, 원격 위치된 블록 데이터 저장 장치를 억세스하기 위해 요구되는, 컴퓨터상에서 실행중인 어플리케이션 프로그램은 제한된 수의 함수에 대한억세스만을 요구한다. 결과적으로, NAS 장치와 결합거나, NAS와 결합되어지는 블록 데이터 저장 장치에 대한 완전한 명령어 세트에 관하여, NAS 장치는, 블록 데이터 저장 장치가 완전한 명령어 세트의 서브세트로 수신 및 처리하고, 블록 데이터 저장 장치에 대한 네트워크 내의 컴퓨터 시스템으로부터의 함수 또는 명령어의 수를 제한함으로써 데이터 전송을 용이하게 한다 - 블록 데이터 저장 장치는 컴퓨터 시스템에 관해 원격 배치된 것으로 고렴됨 - . 일실시예에서, 서브세트는 판독 및 기록 명령어는 포함하지만, 블록 저장 장치 내의 액추에이터(actuator) 이동으로 구분되는 명령어는 제외된다. 예컨대, 디스크 드라이브의 경우, 디스크 표면을 가로질러 헤드를 이동시키기 위해 액추에이터의 사용을 포함하는 검색 명령어는 서브세트로부터 제외될 것이다. 다른 실시예에서, 명령어는 적어도 두개, 바람직하게는 복수 타입의 데이터 블록 저장 장치에 포함된다. 결과적으로, NAS 장치와 원격 컴퓨터 사이의 데이터 전송은 NAS 장치와 연관되거나 NAS 장치와 연관지어진 블록 데이터 저장 장치의 타입과는 독립적이며, 다르게 표현하면 독립적인 인터페이스이다. 이하에서, NAS 장치가 프로세스하는 원격 컴퓨터 시스템으로부터의 명령어는 네트워크 명령어라고 언급할 것이다.
본 발명의 NAS 장치는 (1) 네트워크 기반구조(예컨대, LAN 또는 WAN)로 커뮤니케이션을 전송하고, 네트워크 기반구조로부터 커뮤니케이션을 수신하기 위한 네트워크 인터페이스 - 여기서 네트워크 인터페이스는 데이터 패킷 프로토콜(예컨대, TCP/IP)을 구현할 수 있음 - , 및 (2) 블록 데이터 저장 장치로 커뮤니케이션을 전송하고, 블록 데이터 저장 장치로부터 커뮤니케이션을 수신하기 위한 블록 데이터저장 장치 인터페이스와 같은 2개의 인터페이스를 포함한다. NAS 장치는 블록 데이터 저장 프로세서(타겟 측의 새로운 타입의 가상 장치 드라이버로서 여겨질 수 있음)를 갖는 오퍼레이팅 시스템을 더 포함한다. 블록 데이터 저장 프로세서는 네트워크 인터페이스에서 수신되어진 네트워크 명령어를 수신하고, 네트워크 명령어를 수행할 필요가 있는 블록 데이터 저장 장치로 하나 이상의 특정 명령어 스트링을 생성할 수 있다. 예컨대, 프로세서가 "판독" 네트워크 명령어를 네트워크 인터페이스로부터 수신하면, 프로세서는 장치의 상태 및/또는 이용가능성을 요구하는 명령어를 디스크 드라이브로 발행하고, 장치를 예약하며, 디스크상에 판독/기록 헤드를 로딩하고, 소정 데이터 블록을 위치된 트랙을 검색하고, 이어서 데이터 블록이 위치되는 트랙상의 섹터를 탐색하고, 마지막으로 요구 데이터가 판독되도록 장치 특정 판독 명령어(device specific read command)를 발행한다. 블록 데이터 저장 프로세서는 모든 명령어 스트링이 블록 데이터 저장 인터페이스로 전송되어, 블록 데이터 저장 장치로 순차적으로 운반되게 한다. 게다가, 프로세서는 블록 데이터 저장 장치 인터페이스로부터의 명령어에 대한 모든 응답을 수신할 수 있고, 필요하다면 네트워크 기반구조를 거쳐 데이터를 요구한 컴퓨터 시스템으로의 전송을 위해, 네트워크 인터페이스로 데이터를 송신한다.
일실시예에서, 블록 데이터 저장 프로세서는 병렬로 네트워크 명령어를 처리할 수 있는 능력을 갖는다. 병렬 명령어 프로세스는 각각의 스레드가 네트워크 명령어와 관련이 있거나, 네트워크 명령어의 해당 그룹과 관련이 있는 독립 "스레드(threads)"로서 개념지어질 수 있다. 일실시예에서, 프로세서는, 이 프로세서가 다수 명령어 큐(multiple command queues)를 생성할 수 있고, 이들 각각은 연관된 명령어 큐 내의 네트워크 명령어 또는 명령어를 수행하기 위해 "스레드"와 연관되어 있다. 프로세서는 프로세스를 위해 네트워크 명령어를 큐로 유도할 수 있는 지시자(director)를 포함한다. 일실시예에서, 지시자는 다수의 큐에서의 부하를 모니터링하고, 원하는 목적을 얻기 위해 명령어가 어느 큐에 배치되어야 하는 지를 결정한다. 즉, 지시자는 처리율을 극대 시키도록 큐에서의 부하를 조절하는 알고리즘을 구현할 수 있다.
게다가, 본 발명의 다른 실시예는 NAS 장치가 원격 장치로 고려되는 호스트 컴퓨터상에서 구현되는 컴퓨터 구조를 포함한다. 이 구조는 호스트 컴퓨터상에서 실행되는 어플리케이션 프로그램으로부터 파일 요구를 프로세스할 수 있는 호스트 블록 저장 장치 프로세서(개시자 측의 새로운 타입의 가상 장치 드라이버라고 여겨질 수 있음)를 갖는 오퍼레이팅 시스템을 포함하고, 여기서 파일의 적어도 일부분은 원격 NAS 장치와 연관된 블록 데이터 저장 장치상에 존재한다. 상세히 설명하면, 이 프로세서를 갖는 오퍼레이팅 시스템은 포스트 컴퓨터상에서 실행중인 어플리케이션 프로그램으로부터 파일 요구를 수신하고, 파일 요구를 네트워크 명령어로 변환하고, 네트워크 인터페이스가 네트워크 명령어를 원격 블록 데이터 저장 장치를 갖는 NAS 장치로 전송하도록, 호스트 컴퓨터와 연관된 네트워크 인터페이스에 네트워크 명령어를 제공할 수 있다. 게다가, 이 프로세서를 갖는 오퍼레이팅 시스템은 호스트 컴퓨터의 네트워크 인터페이스에서 수신되는 네트워크 명령어에 대한 응답을 수신하고, 이 응답을 어플리케이션 프로그램 상에 전달할 수 있다. 예컨대,호스트 컴퓨터상에서 실행중인 어플리케이션이 NAS 장치와 연관된 블록 데이터 저장 장치상에 위치하고 있는 파일 "xyz"에 포함되어진 데이터를 필요로 하면, 어플리케이션은 프로세서로 전달되는 요구를 생성한다. 요구에 응답하여, 프로세서는 파일 "xyz"에 대한 요구를 네트워크 명령어, 예컨대 "xyz" 파일을 포함하고 있는 NAS 장치와 연관된 블록 데이터 저장 장치상의 블록 또는 블록들에 대한 블록 판독 명령어로 변환하거나 번역(translate)한다. 게다가, 프로세서는 네트워크 명령어를 호스트 컴퓨터의 네트워크 인터페이스로 전달하여, 네트워크 기반구조를 통해 NAS 장치로 전달한다.
NAS 장치는 네트워크 명령어를 프로세스하고, 요구된 "xyz" 파일을 포함하고 있는 데이터 블록 또는 블록들을 네트워크 기반구조를 거쳐 호스트 컴퓨터의 네트워크 인터페이스로 전달한다. 데이터 블록 또는 블록들은 순차적으로 프로세서로 전달된다. 결과적으로, 프로세서는 요구 어플리케이션에 어플리케이션 요구에 이용가능한 블록이나 블록들을 전달하거나 블록이나 블록들을 이용가능하게 한다.
본 발명의 다른 실시예에는 네트워크 호스트 블록 저장 장치 프로세서 및 기반구조로부터 커뮤니케이션을 수신하거나 네트워크 기반구조로 커뮤니케이션 전송하기 위한 호스트 네트워크 인터페이스를 포함하는 호스트 컴퓨터를 포함하고, 여기서 네트워크 인터페이스는 데이터 패킷 프로토콜(예컨대, TCP/IP)을 구현한다. 다른 실시예는 네트워크 기반구조를 포함하고, 이는 LAN 및 WAN을 포함하는 각종의 형태로 구현될 수 있다.
본 발명의 다른 실시예는 호스트 컴퓨터와 NAS 장치와 같이 블록 데이터 저장 장치가 연관되어진 타겟 컴퓨터 사이의 통신 방법을 포함한다. 이 방법은 호스트 컴퓨터와 타겟 컴퓨터 사이의 커뮤니케이션 전달을 위한 네트워크 기반구조의 제공하는 단계를 포함한다. 이 방법은 둘 또는 그 이상의 블록 데이터 저장 장치에 대해 공통(generic)이거나 독립적 인터페이스인 명령어, 또는 블록 데이터 저장 장치의 완전한 명령어 세트의 서브세트내의 명령어와 같은 네트워크 명령어를 네트워크 기반구조를 거쳐 전송한다. 일실시예에서, 네트워크 기반구조를 거쳐 전송된 네트워크 명령어는 블록 데이터 저장 장치에 대하여 공통 또는 독립적 인터페이스이거나, 블록 데이터 저장 장치에 대한 완전한 명령어 세트의 서브세트인 명령어 및 공통 또는 이러한 서브세트의 일부분인 명령어를 포함한다. 즉, 일실시예에서, 명령어는 네트워크 지연을 판정하는데 유용한 "핑(ping)" 네트워크 명령어 및 호스트 컴퓨터와 타겟 컴퓨터 사이의 접속을 종료하는데 이용되는 접속해제 네트워크 명령어를 포함한다.
도1은 본 발명의 실시예를 포함하는 컴퓨터 네트워크(10)의 블록도이다. 일반적으로, 컴퓨터 네트워크(10)는 네트워크 접속형 저장 장치 또는 시스템(14)(이하, NAS 장치로서 참조함), NAS 장치(14) 내의 임의의 블록 데이터 저장 장치에 대한 호스트 컴퓨터(16)(블록 데이터 저장 장치는 호스트 컴퓨터에 대해 원격으로 배치됨), 및 NAS(14)와 호스트 컴퓨터(16) 사이의 데이터 전달을 위한 네트워크 기반구조(18)를 포함한다.
NAS 장치(14)는 패킷 프로토콜(예컨대, TCP/IP)에 따라 네트워크 기반구조(18)로 커뮤니케이션을 전송하거나, 네트워크 기반구조로부터 커뮤니케이션을 수신하기 위한 저장 장치 네트워크 인터페이스(22)를 포함한다. 결과적으로, 인터페이스(22)는 네트워크 기반구조(18)를 거쳐 전송되는 커뮤니케이션을 패킷화할 수 있고, 네트워크 기반구조(18)로부터 수신되는 연관된 패킷을 재조합 할 수 있다. 또한, NAS 장치(14)에는 블록 저장 장치 인터페이스(24)가 포함되고, 도시된 실시예에서는 블록 저장 장치 제어기의 형태를 갖는다. 블록 저장 장치 인터페이스(24)는 하나 또는 그 이상의 블록 데이터 저장 장치(26)와의 물리적인 통신을 관리한다. 보다 상세하게, 블록 장치 인터페이스(24)는 하나 또는 그 이상의 블록 데이터 저장 장치(26)와의 통신에 요구되는 전기 신호의 시퀀스를 조정한다.
블록 데이터 저장 장치(26)는 특정 길이(예컨대, 512 byte)를 가지며, 각각이 고유 어드레스를 갖는 블록 내에 데이터를 저장하는 데이터 저장 장치이다. 블록 데이터 저장 장치(26)는 통상적으로 모두 동일한 타입일 수 있고, 모두 동일한 양의 데이터를 가질 수 있다(예컨대 각각 10 GB의 데이터를 유지할 수 있는 SCSI 디스크 드라이브일 수 있다). 블록 데이터 저장 장치(26)는 상이한 양의 데이터를 가질 수도 있다. 게다가, 블록 데이터 저장 장치(26)는 RAID 등의 다양한 저장 구성을 구현하도록 구성될 수 있다.
NAS 장치(14)는 네트워크 인터페이스(22)로부터 네트워크 명령어를 수신할 수 있는 블록 저장 장치 프로세서(30)를 포함하는 오퍼레이팅 시스템(28)을 더 포함할 수 있다. 네트워크 명령어는 블록 데이터 저장 장치에 대한 완전한 명령어 세트의 서브세트 내에 있는 명령어, 또는 일종 이상의 블록 데이터 저장 장치에 대한 완전한 명령어 세트에 공통이거나, 임의의 블록 데이터 저장 장치의 인터페이스에 독립적인 명령어이다. 일실시예에서, 네트워크 명령어의 서브세트는 실제 블록 데이터 저장 장치(26)에 대해 공통이거나 독립적 인터페이스인 "판독" 및 "기록" 명령어를 포함하고, 대부분의 경우, 다른 블록 데이터 저장 장치 명령어의 대부분은 배제된다. 결과적으로, 블록 데이터 저장 장치에서, 트랙으로부터 다른 트랙으로 디스크 드라이브 내의 액추에이터를 이동시키는 것을 포함하는 검색(seek) 명령어와 같이, 액추에이터의 이동으로 지시되는 명령어는 배제된다. 네트워크 명령어는 네트워크와 연관되고, 블록 데이터 저장 장치와는 연관되지 않은 명령어를 포함할 수 있다. 예컨대, "핑(ping)" 명령어는 네트워크의 지연을 판정하기 위해 이용될 수 있다.
블록 저장 장치 프로세서(30)는 네트워크 명령어와 연관된 특정한 하나의 블록 데이터 저장 장치(26)에 대하여 하나 또는 그 이상의 장치 특정 명령어의 스트링을 생성하기 위해 네트워크 명령어를 프로세스할 수 있다. 즉, 네트워크 명령어가 블록 데이터 저장 장치(26) 중 하나인 디스크 드라이브로 유도되는 "판독" 네트워크 명령어라면, 블록 저장 장치 프로세서(30)는 드라이브를 예약하는 장치 특정명령어를 발행할 수도 있고, 액추에이터로 하여금 판독/기록 헤드를 블록이 위치되어 있는 트랙으로 이동하게 하고, 블록 데이터를 판독하여 이 데이터를 캐시에 저장하고, 캐시로부터 데이터 블록을 판독한다. 일반적으로, 스트링 내의 제2 및 그 다음의 장치 특정 명령어는 각각 이전 명령어의 결과가 알려진 후에 생성되고, 따라서, 제2 및 그 다음의 명령어의 판정에 있어서, 적어도 하나의 이전 명령어에 대해 다수의 가능한 결과가 있는 경우, 프로세서는 하나 또는 그 이상의 이전 명령어에 대한 응답을 고려할 수 있다. 예컨대, 장치 특정 상태 명령어에 대한 응답이 장치가 사용중(busy)인 것을 나타내면, 프로세서는 상태 명령어를 재 발행할 수도 있다. 그러나, 장치 특정 상태 명령어가 장치가 이용가능한 것을 나타내면, 프로세서는 장치를 예약하기 위한 명령어를 발행할 수도 있다. 블록 저장 장치 프로세서(30)는 장치 특정 명령어를, 특정 블록 데이터 저장 장치로 명령어를 전달하도록 동작하는 블록 저장 장치 인터페이스로 전달할 수 있다. 게다가, 블록 저장 장치 프로세서(30)는 블록 데이터 저장 장치(26)로부터의 명령어의 스트링에 대한 임의의 응답을 수신하고, 이 임의의 응답을 프로세스할 수 있다. 블록 저장 장치 프로세서(30)는 또한 네트워크 명령어를 만족하는 블록 데이터 저장 장치(26)로부터의 임의의 응답을 저장 장치 네트워크 인터페이스(22)로 전달할 수 있다. 즉, 네트워크 인터페이스에서 수신된 네트워크 명령어가 "판독" 네트워크 명령어이면, 프로세서(30)는 장치로부터 판독되어진 데이터 블록을 네트워크 기반구조(18)를 통해 호스트 컴퓨터(16)로 전달하기 위해 저장 장치 네트워크 인터페이스(22)로 전달시킨다.
일실시예에서, 오퍼레이팅 시스템(28)은 리눅스 오퍼레이팅 시스템이다. 다른 오퍼레이팅 시스템이 실행 가능하다. 게다가, 오퍼레이팅 시스템은 블록 저장 장치 프로세서(30)가 오퍼레이팅 시스템의 커널 내에 위치하도록 적응되어졌다. 커널 내에 프로세서(30)를 구현함으로써, NAS 내에 프로세서(30)를 개별적으로 인스톨해야만 하는 필요성이 회피된다. 게다가, 일실시예에서, 프로세서(30)를 포함하는 오퍼레이팅 시스템은 하나 또는 그 이상의 블록 데이터 저장 장치(26)에 저장된다. 필요시, 오퍼레이팅 시스템(28)은 메모리(미도시)로 로드되고, NAS(14)와 연관된 마이크로 프로세서 등의 프로세싱 엔진(미도시)에 의해 실행된다.
블록 데이터 저장 장치(26)에 있어서, NAS 장치(14)는 블록 데이터 저장 장치(26)가 설치되지 않고 고객에게 제공될 수 있고, 고객은 그들 소유의 장치를 설치할 수 있다. 그러나, 대부분의 상황에서, NAS 장치(14)는 블록 데이터 저장 장치(26)가 설치되어 고객에게 제공될 것이다.
NAS 장치(14)는 또한 NAS 장치(14) 내의 특정 블록 데이터 저장 장치가 데이터 전송을 프로세스할 상태가 아니더라도, 네트워크 기반구조(18)를 거쳐 데이터 전송을 허용함으로써 네트워크 성능에 기여하는 데이터 버퍼(32)를 포함한다. 예컨대, 블록 데이터 장치가 호스트 컴퓨터(16)로부터의 "기록" 네트워크 명령어를 프로세스할 수 없다면, "기록" 명령어에 대한 데이터는 버퍼(32)에 저장될 수 있고, 이후의 시간에 블록 데이터 저장 장치로 전송될 수 있다.
호스트 컴퓨터(16)는 패킷 프로토콜(예컨대, TCP/IP)에 따라 네트워크 기반구조(18)로 커뮤니케이션을 전송하고, 네트워크 기반구조(18)로부터 커뮤니케이션을 수신하기 위한 호스트 네트워크 인터페이스(36)를 포함한다. 결과적으로, 인터페이스(36)는 네트워크 기반구조(18)를 거쳐 전송되어지는 커뮤니케이션을 패킷화할 수 있고, 네트워크 기반구조(18)로부터 수신되는 관련 패킷을 재조합 할 수 있다. 또한 호스트 컴퓨터(16)는 실행시 호스트 컴퓨터(16)의 메모리(미도시)로 적어도 일부분이 로드되고, 호스트 컴퓨터(16)와 연관된 프로세싱 엔진(미도시)에 의해 실행되는 어플리케이션 프로그램(38)을 포함한다.
또한 호스트 컴퓨터(16)는 특히 어플리케이션 프로그램(38)으로부터의 요구를 프로세스하기 위한 호스트 오퍼레이팅 시스템(40)을 포함한다. 실행시, 호스트 오퍼레이팅 시스템(40)은 호스트 컴퓨터(16)의 메모리(미도시)로 적어도 일부분이 로드되고, 호스트 컴퓨터(16)와 연관된 프로세싱 엔진(미도시)에 의해 실행된다. 호스트 오퍼레이팅 시스템(40)은 어플리케이션 프로그램(38)으로부터의 요구를 조정하도록 특별하게 적응되고, NAS 장치(14)와 연관된 블록 데이터 저장 장치(26)를 포함하고 있는 호스트 원격 블록 저장 장치 프로세서(42)를 포함한다. 도시하기 위해, 블록 데이터 저장 장치(26)는 호스트 컴퓨터(16) 내에 "가상" 블록 데이터 저장 장치(26')로서 나타내었다. 상세하게, 호스트 원격 블록 저장 장치 프로세서(42)를 갖는 호스트 오퍼레이팅 시스템(40)은, (1) 블록 데이터 저장 장치(26) 중 하나의 장치에 위치된 파일에 대하여 데이터를 판독하거나 또는 기록하는 것과 연관된 어플리케이션 프로그램으로부터의 요구를 수신하고, (2) 파일 요구를 하나 또는 그 이상의 네트워크 명령어로 변환하고, (3) 네트워크 명령어가 호스트 네트워크 인터페이스(36)로 전달되게 하고, (4) 호스트 네트워크 인터페이스로부터 이전에 전달된 네트워크 명령어에 대한 응답을 수신하고, (5) 적절한 경우, 이 응답을 어플리케이션 프로그램으로 전달하도록 동작한다.
통상의 호스트 컴퓨터의 예로서, 호스트 컴퓨터(16)는 저장 제어기(46)에 의해 관리되는 하나 또는 그 이상의 저장 장치(44)를 더 포함한다. 블록 데이터 저장 장치(26)와는 반대로, 저장 장치(44)는 호스트 컴퓨터(16)에게 "로컬"로 고려된다. 도시된 실시예에서는 PCI 버스인 버스(48)는 호스트 오퍼레이팅 시스템(40)과 저장 제어기(46) 사이의 통신 경로를 제공한다. 일반적으로, 비실행시, 어플리케이션 프로그램(38)과 오퍼레이팅 시스템(40)은 하나 또는 그 이상의 저장 장치(44)에 각각 저장된다. 어플리케이션 프로그램(38) 및 오퍼레이팅 시스템(40)이 실행될 때, 각각의 적어도 일부분이 하나 또는 그 이상의 저장 장치(44)로부터 호스트 컴퓨터(16)의 메모리(미도시)에 로드된다.
또한, 호스트 컴퓨터(16)는 어플리케이션 프로그램(38)이 데이터 전송을 프로세스할 상태에 있지 않더라도 네트워크 기반구조(18)를 거쳐 데이터 전송을 허용함으로써 네트워크 성능에 기여하는 데이터 버퍼(49)를 포함한다. 예컨대, 어플리케이션 프로그램(38)이 "판독" 네트워크 명령어에 대한 응답을 프로세스할 수 없을 때, 데이터는 데이터 버퍼(49)에 저장되어, 이후 시간에 어플리케이션 프로그램으로 전달될 수 있다. 또한, 데이터 버퍼(50)는 네트워크(10) 내의 다른 구성요소가 데이터 전송을 허용할 수 있는 상태로 있지 않을 때 데이터를 저장하기 위해 이용될 수 있는 추가적이거나 택일적인 데이터 저장 용량을 제공함으로써 네트워크 성능에 기여하는 어플리케이션 프로그램(38)과 연관된다.
네트워크 기반구조(16)는 임의의 네트워크 기반구조이거나, 네트워크 기반구조들의 임의의 조합일 수도 있다. 즉, 네트워크 기반구조(16)는 LAN 또는 WAN의 형태로 구현될 수 있다. 게다가, 네트워크 기반구조는 인터넷을 포함할 수도 있다. 물리적인 레벨에서, 네트워크 기반구조는 이더넷 표준(Ethernet standard)에 따라 구현될 수 있다. 게다가, 기반구조(16)를 통한 통신은 TCP/IP(인터넷에서 주로 이용되고 있음), Novel, Ap1letalk 및 Streaming Control Transmission Protocol (SCTP) 등의 패킷 프로토콜에 따라 수행된다. SCTP는 특히 과잉 네트워크(congested network)에서 지연을 감소시키는데 유용하다. 다른 패킷 프로토콜에 따른 통신도 가능하다.
일반적으로, 호스트 원격 블록 저장 장치 프로세서(42)를 갖는 호스트 오퍼레이팅 시스템(40)은 호스트 시스템에서 실행중인 어플리케이션 프로그램에 의해 출력되어진 파일 명령어를 수신하고, 이 파일 명령어를, 패킷 프로토콜에 따라 네트워크 기반구조를 통해 NAS 장치(14)로 송신되어 블록 데이터 저장 장치(26) 중 하나의 장치에 인가되는 하나 또는 그 이상의 네트워크 명령어로 변환할 수 있다. 최소 네트워크 명령어 세트는 블록 데이터 저장 장치(26)의 특성에 의존한다. 블록 데이터 저장 장치(26)가 판독 전용 장치이면, 최소 네트워크 명령어 세트는 판독 명령어이다. 블록 데이터 저장 장치(26)가 판독/기록 장치이면, 최소네트워크 명령어 세트는 판독 명령어 및 기록 명령어를 가질 것이다. 네트워크 명령어 세트는 일반적으로 블록 데이터 저장 장치상으로의 판독 또는 기록과는 직접적으로 연관이 없고, 호스트 컴퓨터(16)와 NAS 장치(14) 사이의 데이터 전송에 기여하는 명령어를포함할 것이다. 어떠한 경우에서도, 네트워크 명령어 세트는 최소 명령어 세트를 포함해야만 한다.
도3a 내지 도9c를 참조하면, 호스트 원격 블록 저장 장치 프로세서(42)용의 네트워크 명령어 세트가 바람직하다. 네트워크 명령어 세트는 판독 블록 명령어 및 기록 블록 명령어를 포함하고, 이들은 모든 블록 데이터 저장 장치 또는 임의의 단일 블록 데이터 저장 장치의 완전한 명령어 세트의 서브세트에 대해 공통이거나 독립적 인터페이스이다. 도시된 실시예에서, 네트워크 명령어 세트는 NAS 장치(14)와 호스트 컴퓨터(16) 사이의 접속과 연관된 명령어를 더 포함한다. 이와 같이, 이들 명령어는 블록 데이터 저장 장치에 공통이지도 않고, 단일 블록 데이터 저장 장치에 대한 완전한 명령어의 서브세트도 아니다. 도시된 실시예에서, 이들 명령어는 네트워크 지연을 액세스하는데 이용되는 "핑" 명령어 및 호스트 컴퓨터(16)와 NAS 장치(14) 사이의 소켓 접속을 종료하기 위한 접속해제 명령어를 포함한다.
호스트 원격 블록 저장 장치 프로세서(42)는 각각의 네트워크 명령어를 "요구"의 형태로 구현한다. 요구는 상황에 따라 몇 가지 형태를 취할 수 있다. 도시된 실시예에서, 요구는 하나 또는 그 이상의 부-명령어를 포함할 수 있다. 즉, 판독 요구 또는 판독 네트워크 명령어는 하나 또는 그 이상의 판독 부-명령어를 포함하고, 이들 각각은 데이터 블록 또는 연속적인 데이터 블록과 연관된다. 또한, 요구는 부-명령어를 갖지 않도록 구현될 수 있다. 즉, 판독 요구 또는 판독 네트워크 명령어는 단일 데이터 블록 또는 연속적인 데이터 블록일 수도 있다. 이러한 구현에 있어서, 다수의 판독 부-명령어를 허용하는 판독 요구와 동일한 효과를 얻기 위해 다수의 판독 요구가 필요할 수 있다. 판독 및 기록 네트워크 명령어에서, 요구가 단일 데이터 블록과만 연관하도록 요구가 구현될 수 있다. 이 특별한 경우에 있어서, 각각의 부-명령어가 하나의 데이터 블록 또는 연속적인 데이터 블록을 연관시킬 수 있는 부-명령어를 허용하는 구현에 대해 더욱 많은 판독 또는 기록 요구가 필요하게 된다.
도2를 참조하면, 요구는 헤더(52)에 의해 식별된다. 헤더는 (1) 네트워크 명령어 코드를 수용하기 위한 명령어 필드, (2) 세션(session) 동안(예컨대, NAS 장치(14)와 호스트 컴퓨터(16) 사이의 유효한 접속 동안), 요구에 대하여 단일한 키를 수용하기 위한 트랜잭션키(TransactionKey) 필드, (3) 단일한 리소스로서 기능할 수 있는 NAS 장치(14)와 연관된 저장 장치 또는 저장 장치들의 클러스터(cluster)용의 고유한 식별자를 수용하기 위한 클러스터ID(ClusterID) 필드, (4) 클러스터의 컨텍스트에서, 논리적 파티션 또는 클러스터내의 부피로 언급되는 고유 식별자를 수용하기 위한 룬ID(LunID) 필드, (5) 요구내에 나타나는 명령어의 총 수를 수용하기 위한 명령어카운트(CmdCount) 필드, 및 (6) 네트워크 명령어의 식별에 있어서, "C" 필드가 1과 동일하다면, 에러 보정 주기적 잉여 검사를 유지하기 위한 에러보정 CRC(ErrorCorrection CRC) 필드를 포함한다.
도3a 및 도3b를 참조하여 식별 네트워크 명령어를 설명한다. 식별 네트워크 명령어는 NAS 장치(14)로 정보를 송신하거나 NAS 장치로부터 정보를 요구하기 위해 호스트 컴퓨터(16)에 의해 이용된다. 식별 네트워크 명령어는 호스트 컴퓨터(16)와 NAS 장치(14) 사이에 접속이 이루어진 직후, 즉 세션이 개시한 시점에서 송신되는것을 예상할 수 있다. 호스트 원격 블록 저장 장치 프로세서(42)는 식별 네트워크 명령어만을 포함하는 "요구"를 확립하도록 동작한다. 식별 네트워크 명령어의 헤더 부분은 0x02의 값을 갖는 명령어 필드를 포함한다. 또한, 헤더부에는 트랜잭션키, 클러스터ID, 및 룬ID 필드가 포함된다. 식별 네트워크 명령어 내의 명령어 계산 필드 0x01로 설정되고, 이는 식별 네트워크 명령어를 포함하고, 부-명령어를 포함하지 않는 것을 반영한다. 헤더부에 더하여, 식별 네트워크 명령어는 C 필드, ECCT 필드, 및 버전 필드(version field)를 포함한다. C 필드는 ECC 플래그(ECC flag)이다. C 필드가 0의 값을 가지면, ECC는 존재하지 않는다. 1의 값을 갖는 C 필드는 ECC가 존재하는 것을 나타낸다. ECCT 필드는 C 필드가 1로 설정될 때 채용되는 에러 보정 알고리즘의 종류를 나타낸다. 버전 필드는 네트워크 명령어의 프로세스에 이용되고 있는 소프트웨어의 버전을 식별한다. NAS 장치(14)는 버전 필드 내의 정보를 이용하여 호스트 컴퓨터(16)의 소프트웨어 버전과 동일한 버전의 소프트웨어를 이용하는지를 확인한다.
도3b를 참조하면, NAS 장치(14)에 의해 전달되고, 네트워크 식별 명령어에 응답하여 호스트 원격 블록 저장 장치 프로세서(42)에 의해 수신되는 액크(acknowledgment)는 각각의 필드 내에 식별 네트워크 명령어 또는 식별 요구와 동일한 명령어, 트랜잭션키, 클러스터ID 및 룬ID 필드 및 값을 갖는다. 액크는 순차적인 네트워크 명령어 또는 요구의 생성에 이용되는 정보를 프로세서(42)에 제공하는 필드 내에, (1) 특정 클러스터 및 룬에 대한 최소 블록 크기를 특정하는 BlkSize 필드, (2) 특정 클러스터 및 룬에 의해 표시되는 최대 논리 블록 어드레스를 특정하는 MaxLBA 필드, (3) 특정 클러스터 및 룬에 대한 전체 NAS 장치(14)로부터 적정한 블록 크기를 특정하기 위한 적정 BlkSize 필드, (4) 요구 당 부-명령어의 최대 수를 특정하기 위한 MaxCmdsPerRqst 필드, (5) 판독 또는 기록 부-명령어와 관련될 수 있는 블록의 최대 수를 특정하기 위한 MaxBlksPerCmd 필드, (6) 룬ID 필드 내에서 식별된 룬 및 클러스터ID 필드에서 식별된 클러스터에 대하여 ASCII로 일련 번호를 수용하기 위한 일련 번호(Serial Number) 필드, (7) 룬ID 필드에서 식별된 룬이 관련되어진 장치ID(DeviceID)를 ASCII로 특정하기 위한 장치 번호(Device Number) 필드, 및 (8) 네트워크 명령어의 프로세스에 이용되는 소프트웨어와 함께 이용될 수도 있는 소프트웨어 및/또는 하드웨어의 버전 넘버를 특정하기 위한 제2 버전 번호(Second Version Number)와 같은 필드 및 값을 더 포함한다.
도4a 및 도4b를 참조하여 판독 네트워크 명령어를 이하에 설명한다. 판독 네트워크 명령어는 NAS 장치(14) 내의 블록 데이터 저장 장치(26)상에 존재하는 하나 또는 그 이상의 데이터 블록을 얻기 위해 호스트 컴퓨터(16)에 의해 이용된다. 판독 네트워크 명령어는 하나의 데이터 블록 또는 연속된 데이터 블록과 각각이 연관되는 하나 또는 그 이상의 판독 부-명령어를 포함한다. 판독 네트워크 명령어의 헤더부는 0x10의 값을 갖는 명령어 필드를 포함한다. 또한 헤더부에는 트랜잭션키, 클러스터ID 및 룬ID 필드가 포함된다. 명령어 카운트(command count) 필드는 판독 네트워크 명령어 내의 판독 부-명령어의 수를 반영하는 값을 수용한다. 헤더부에 더하여, 판독 네트워크 명령어는 StartLBA, BlkCount 및 상태/종류(Status/Type) 필드로 이루어진 적어도 하나의 판독 부-명령어를 포함한다. StartLBA 필드는 식별된 클러스터ID/룬ID에 대하여 판독 동작이 시작되었을 때 개시 논리 블록 어드레스를 특정하기 위해 이용된다. BlkCount 필드는 StartLBA 필드에서 특정된 개시 논리 블록에서 시작하여 판독되어지는 블록의 개수를 특정하는데 이용된다. 상태/종류 필드는 판독 부-명령어에 "에러 없음"을 특정하기 위해 이용된다.
도4b를 참조하여, 호스트 컴퓨터(16)에 의해, 보다 상세하게 이전에 송신된 판독 네트워크 명령어 또는 판독 요구에 응답하여 호스트 원격 블록 저장 장치 프로세서(42)에 의해 수신되는 액크를 설명하도록 한다. 액크는 판독 네트워크 명령어 내에 헤어부와 동일한 헤더부를 포함한다. 또한, 액크는 판독 네트워크 명령어 내의 각각의 판독 부-명령어에 대하여 판독 네트워크 명령어에 있었던 값을 갖는 StartLBA 및 BlkCount 필드를 포함한다. 상태/종류 필드는 블록 데이터 저장 장치로부터의 데이터의 판독에 있어서 에러가 있는지의 여부를 나타내는 값을 수용한다. 게다가, 에러가 있다면, 이 필드 내의 값은 발생한 에러 종류의 표시를 제공한다. 또한, 액크는 NAS 장치(14) 내의 블록 데이터 저장 장치(26)로부터 요구된 데이터를 갖는 데이터 필드를 포함한다. 이전에 송신된 식별 네트워크 명령어 내의 C 필드가 에러 보정 코딩을 인에이블하기 위해 "1"로 설정되면, 액크는 데이터 필드 내의 데이터에 대한 에러 보정 코드를 수용하는 ECC 필드를 포함한다.
도5a 및 도5b를 참조하여, 기록 네트워크 명령어를 설명한다. 기록 네트워크 명령어 또는 기록 요구는 NAS 장치(14) 내의 블록 데이터 저장 장치(26)에 하나 또는 그 이상의 데이터 블록을 기록하기 위해 호스트 컴퓨터(16)에 의해 이용된다. 기록 네트워크 명령어는 각각이 하나의 데이터 블록 또는 연속하는 데이터 블록과연관되는 하나 또는 그 이상의 기록 부-명령어를 포함한다. 기록 네트워크 명령어의 헤더부는 0x20의 값을 갖는 명령어 필드를 포함한다. 헤더부는 트랜잭션키, 클러스터ID, 및 룬ID 필드를 더 포함한다. 명령어 카운트 필드는 기록 네트워크 명령어 내의 기록 부-명령어의 수를 반영한다. 헤더부에 더하여, 기록 네트워크 명령어는 StartLBA, BlkCount, 및 상태/종류 필드로 이루어진 적어도 하나의 기록 부-명령어를 포함한다. StartLBA 필드는 기록 동작이 시작되었을 때 식별된 클러스터ID 및 룬ID에 대한 개시 논리 블록 어드레스를 특정하기 위해 이용된다. BlkCount 필드는 StartLBA에서 특정된 개시 논리 블록 어드레스에서 시작하여 기록되어지는 블록의 수를 특정하는데 이용된다. 상태/종류 필드는 기록 부-명령어에 "에러 없음"을 특정하기 위해 이용된다. 기록 네트워크 명령어는 클러스터ID, 룬ID 및 StartLBA 필드에서 설정된 값에 따라 NAS 장치(14) 내의 블록 데이터 저장 장치(26) 중 하나의 장치상에 기록되어지는 데이터를 수용하는 데이터 필드를 더 포함한다. 게다가, 이전에 송신된 식별 네트워크 명령어 내의 C 필드가 "1"로 설정되면, 기록 네트워크 명령어는 데이터 필드에 설정된 데이터에 대한 에러 보정 코드를 포함하는 에러 보정 코드 필드를 포함한다.
도5b를 참조하여, 호스트 컴퓨터(16)에 의해, 보다 상세하게 이전에 송신된 기록 네트워크 명령어 또는 기록 요구에 응답하여 호스트 원격 블록 저장 장치 프로세서(42)에 의해 수신되는 액크를 설명하도록 한다. 액크는 NAS 장치(14)에 의해 생성되고, NAS 장치(14) 내의 오퍼레이팅 시스템이 데이터가 수신되어 블록 데이터 저장 장치(26) 중 하나의 장치에 기록될 준비가 되었음을 인지한 후에 호스트 컴퓨터(16)로 송신된다. 따라서, 액크는 데이터가 실제 물리적인 장치, 예컨대 블록 데이터 저장 장치(26) 중 하나의 장치에 기록되기 이전에 호스트 컴퓨터(16)로 송신될 수도 있다. 액크는 기록 네트워크 명령어 내의 헤더부와 동일한 필드와 값을 필드 내에 갖는 헤더부를 포함한다. 또한, 액크는 기록 네트워크 명령어 내의 각각의 기록 부-명령어에 대하여 기록 네트워크 명령어에 있었던 값을 갖는 StartLBA 및 BlkCount 필드를 포함한다. 상태/종류 필드는 블록 데이터 저장 장치로의 데이터의 기록에 있어서 에러가 있는지의 여부를 나타내는 값을 수용한다. 게다가, 에러가 있다면, 이 필드 내의 값은 발생한 에러 종류의 표시를 제공한다. 그러나, 액크는 기록 네트워크 명령어의 데이터 필드에 있던 데이터는 포함하지 않는다.
도6a 및 도6b를 참조하여 기록/현재(write/now) 네트워크 명령어를 이하에 설명한다. 일반적으로, 기록/현재 네트워크 명령어는 기록 네트워크 명령어와 동일한 목적으로 기능한다. 즉, 기록/현재 네트워크 명령어는 NAS 장치(14) 내의 블록 데이터 저장 장치(26)에 데이터 블록을 기록하기 위해 호스트 컴퓨터(16)에 의해 이용된다. 기록/현재 네트워크 명령어와 기록 네트워크 명령어 사이의 차이점은 액크의 타이밍에 있다. 전술한 바와 같은 NAS 장치(14)는, 데이터가 블록 데이터 저장 장치(26) 중 하나의 장치에 기록될 수 있다는 것을 오퍼레이팅 시스템(28)이 인지한 직후 액크를 생성 및 송신한다. 따라서, 액크는 데이터가 블록 데이터 저장 장치(26) 중 하나의 장치에 기록되기 전에 액크가 송신될 수도 있다. 대조적으로, NAS 장치(14)는 데이터가 물리적인 장치, 예컨대 블록 데이터 저장 장치(26) 중 하나의 장치에 실제적으로 기록되어질 때까지 기록/현재 네트워크 명령어에 대한 액크를 생성 및 송신하지 않는다.
도6a 및 도6b를 참조하면, 기록/현재 네트워크 명령어는 명령어의 값이 0x20인 헤더부를 포함한다. 또한, 헤더부에는 트랜잭션키, 클러스터ID 및 룬ID 필드를 포함한다. 명령어 카운트 필드는 기록/현재 네트워크 명령어 내의 기록 부-명령어의 수를 반영한다. 헤더부에 더하여, 기록 네트워크 명령어는 StartLBA, BlkCount, 및 상태/종류 필드로 이루어진 적어도 하나의 기록 부-명령어를 포함한다. StartLBA 필드는 기록 동작이 시작되었을 때 식별된 클러스터ID 및 룬ID에 대한 개시 논리 블록 어드레스를 특정하기 위해 이용된다. BlkCount 필드는 StartLBA에서 특정된 개시 논리 블록 어드레스에서 시작하여 기록되어지는 블록의 수를 특정하는데 이용된다. 상태/종류 필드는 기록 부-명령어에 "에러 없음"을 특정하기 위해 이용된다. 기록 네트워크 명령어는 클러스터ID, 룬ID 및 StartLBA 필드에서 설정된 값에 따라 NAS 장치(14) 내의 블록 데이터 저장 장치(26) 중 하나의 장치상에 기록되어지는 데이터를 수용하는 데이터 필드를 더 포함한다. 게다가, 이전에 송신된 식별 네트워크 명령어 내의 C 필드가 "1"로 설정되면, 기록 네트워크 명령어는 데이터 필드에 설정된 데이터에 대한 에러 보정 코드를 포함하는 에러 보정 코드 필드를 포함한다.
도6b를 참조하여, 호스트 컴퓨터(16)에 의해, 보다 상세하게 이전에 송신된 기록/현재 네트워크 명령어에 응답하여 호스트 원격 블록 저장 장치 프로세서(42)에 의해 수신되는 액크를 설명하도록 한다. 액크는 NAS 장치(14)에 의해 생성되고, 데이터가 하나 또는 그 이상의 블록 데이터 저장 장치(26)에 실제적으로 기록된 후에 호스트 컴퓨터(16)로 송신된다. 액크는 기록/현재 네트워크 명령어 내의 헤더부와 동일한 필드와 값을 필드 내에 갖는 헤더부를 포함한다. 또한, 액크는 기록 네트워크 명령어 내의 각각의 기록 부-명령어에 대하여 기록 네트워크 명령어에 있었던 동일한 값을 갖는 StartLBA 및 BlkCount 필드를 포함한다. 상태/종류 필드는 블록 데이터 저장 장치로의 데이터의 기록에 있어서 에러가 있는지의 여부를 나타내는 값을 수용한다. 게다가, 에러가 있다면, 이 필드 내의 값은 발생한 에러 종류의 표시를 제공한다. 그러나, 액크는 기록 네트워크 명령어의 데이터 필드에 있던 데이터는 포함하지 않는다.
도7a 및 도7b를 참조하여, 접속해제(disconnect) 네트워크 명령어 또는 접속해제 요구를 설명한다. 접속해제 네트워크 명령어는 NAS 장치(14)와의 소켓 접속을 종료하기 위해 호스트 컴퓨터(16)에 의해 이용된다. 다른 네트워크 명령어와 달리, 접속해제 네트워크 명령어는 접속을 종료하기 위해 NAS 장치(14)에 의해 호스트 컴퓨터(16)로 송신될 수 있다. 호스트 컴퓨터(16)가 접속해제 네트워크 명령어를 송신하면, NAS 장치(14)는 임의의 미처리 판독 및/또는 기록 연산을 프로세스 하여 응답하고, 액크를 송신하고, 이어서 접속을 종료한다. NAS 장치(14)가 접속해제 네트워크 명령어를 호스트 컴퓨터(16)로 송신하면, 호스트 컴퓨터(16)는 모든 미처리의 액크 되지 않은 판독 또는 기록 네트워크 명령어는 회복 불가능하게 손실되는 것으로 가정한다.
도7a를 참조하면, 접속해제 네트워크 명령어 또는 접속해제 요구는 명령어 필드 값이 0x41인 헤더부를 포함한다. 또한, 헤더부는 트랜잭션키, 클러스터ID, 및룬ID 필드를 포함한다. 명령어 카운트 필드는, 접속해제 네트워크 명령어 또는 요구가 접속해제 네트워크 명령어를 포함하고, 부-명령어는 포함하지 않음을 반영하는 0x01의 값을 갖는다.
도7b를 참조하여, 접속해제 네트워크 명령어의 수신자(recipient)에 의해 생성되고, 접속해제 네트워크 명령어의 개시자에게 제공되는 액크를 이하에 설명한다. 이 액크는 접속해제 네트워크 명령어에서의 필드와 동일한 필드를 포함한다. 이 액크의 필드의 값은 접속해제 명령어의 필드에서의 값과 동일하다.
도8a 내지 도8c를 참조하여, "핑(ping)" 네트워크 명령어 또는 핑 요구를 설명한다. 핑 네트워크 명령어는, 접속해제 네트워크에서와 같이, NAS 장치(14)에 의해 발행될 수 있다. 네트워크에서의 지연을 판정하기 위해, NAS 장치(14)와 호스트 컴퓨터(16) 모두 동기화 되는 것으로 가정한다. 즉, 그들의 내부 시스템 클록이 동기화 된다. 일반적으로, 동기화는 통상적으로 NTP의 약어로 참조되는 네트워크 타임 프로토콜(Network Time Protocol)을 이용하는 네트워크의 부트 업(boot up)상에서 획득된다.
도8a를 참조하면, 핑 네트워크 명령어는 0x01의 값을 갖는 명령어 필드를 갖는 헤더부를 포함한다. 헤더부는 트랜잭션키, 클러스터ID, 룬ID 필드를 더 포함한다. 명령어 카운트 필드는 핑 네트워크 명령어는 포함하고, 부-명령어는 포함하지 않음을 반영하는 0x01의 값을 수용한다. 핑 네트워크 명령어는, 개시부의 내부 시스템 클록상에 나타낸 바와 같이, 개시자(예컨대, 호스트 컴퓨터(16) 또는 NAS 장치(14))가 핑 네트워크 명령어를 송신하는 시간을 반영하는 값을 수용하기 위한"t0" 필드를 더 포함한다.
도8b를 참조하면, 핑 네트워크 명령어는 핑 네트워크 명령어에서와 동일한 필드와 동일한 값을 필드에 포함하는 헤더부를 포함한다. 상세하게, 액크는 각각이 핑 네트워크 명령어에 있었던 값과 동일한 값을 포함하고 있는 명령어 필드, 트랜잭션키, 클러스터ID, 룬ID, 명령어 카운트, 및 t0 필드를 포함한다. t1 필드는, 수신자의 내부 시스템 클록상에 나타낸 바와 같이, 핑 네트워크 명령어가 수신자에 의해 수신된 시간을 포함한다.
도8c를 참조하면, 핑 네트워크 명령어에 대한 완료 응답(complete response)은 핑 네트워크 명령어의 액크와 동일한 필드와 동일한 값을 필드에 포함하는 헤더부를 포함한다. 상세하게, 완료 응답은 각각이 액크의 대응 필드에 존재하는 값을 포함하고 있는 명령어 필드, 트랜잭션키, 클러스터ID, 룬ID, 명령어 카운트, t0, t1, 및 t2 필드를 포함한다. 완료 응답은, 개시자의 내부 시스템 클록상에 나타낸 바와 같이, 개시자가 수신자로부터 액크를 수신한 시간을 수용하기 위한 t3 필드를 더 포함한다.
t0, t1, t2 및 t3 내의 값은 개시자와 수신자 사이의 지연을 나타내는 특정 정보를 판정하기 위해 개시자에 의해 이용된다. 상세하게, 왕복 시간(round trip time) 또는 지연은 t0 필드 내의 값보다 작은 t3 필드 내의 값이고, 업로드 시간 또는 지연은 t0 필드 내의 값보다 작은 t1 필드 내의 값이며, 다운로드 시간 또는 지연은 t2 필드 내의 값보다 작은 t3 필드 내의 값이다. 이들 값은 데이터의 전송을 관리하기 위해, NAS 장치(14) 내의 오퍼레이팅 시스템(28) 및/또는 호스트장치(16) 내의 오퍼레이팅 시스템에 의해 필요시 이용된다. 특히, 호스트 오퍼레이팅 시스템(40)은 무엇보다도 지연(NAS 장치(14)가 "활동상태(alive)"인지의 여부를 결정함) 및 데이터 전송의 타임아웃 제한을 결정하기 위해 업로드, 다운로드, 및/또는 왕복 시간을 이용할 수 있다.
블록 저장 장치 프로세서(30)의 실시예를 도9를 참조하여 설명한다. 프로세서(30)는 일반적으로 감시자(supervisor)(56), 요구 수화자(request listener) (58), 및 요구 지시자(request director)(60)를 포함한다. 감시자(56)는, (1)요구 수화자(58)를 개시하고, (2) 요구 지시자(60)를 개시하며, (3) 요구 또는 네트워크 명령어를 프로세스하기 위한 작업 큐 및 작업 스레드를 셋업(큐 및 스레드는 구성 파일(configuration file)의해 셋업됨)하도록 동작한다.
작업 큐는 네트워크 요구 또는 명령어를 수용하기 위한 구조이다. 작업 스레드는 큐에서의 네트워크 요구 또는 명령어를 프로세스한다. 판독 또는 기록 네트워크 명령어의 판독 또는 기록 부-명령어 및 식별 네트워크 명령어의 프로세스는, 요구의 헤더부의 클러스터ID 및 룬ID 필드와 연관된 물리적인 장치에 있어서, 명령어를 수행할 필요가 있는 장치 특정 명령어를 생성하는 단계 및 특정 장치 명령어에 대한 물리적인 장치로부터의 임의의 응답을 프로세스하는 단계를 포함한다. 장치 특정 명령어의 생성에 있어서, 스레드는 명령어를 구현할 필요가 있는 하나 또는 그 이상의 장치 특정 명령어의 스트링을 생성한다. 예컨대, 물리적인 장치가 디스크 드라이브일 때, 판독 네트워크 명령어를 구형하기 위해, 스레드는 장치 특정 명령어를 발행하여, (1) 장치의 상태를 획득하고, (2) 드라이브가 이용가능하다면,드라이브를 액세스하기를 원할 수도 있는 다른 스레드에 대하여 장치를 예약하고, (3) 드라이브 내의 액추에이터가 판독/기록 헤드를 개시 논리 블록 어드레스가 위치되어 있는 트랙으로 이동시키고, (4) 일단 정확한 트랙으로 이동하면, 특정 수의 블록이 특정 개시 어드레스에서 시작하여 드라이브로부터 판독되어진다. 특정 장치 명령어에 대한 물리적 장치로부터의 임의의 응답의 처리는, 판독 네트워크 명령어의 경우, 네트워크 기반구조를 거쳐 호스트 컴퓨터(16)로 전달하기 위해 액크 내에 요구 데이터를 제공하는 단계를 포함한다. 기록 네트워크 명령어의 경우, 프로세스는 네트워크 기반구조를 거쳐 호스트 컴퓨터(16)로 전달하기 위해 액크를 생성하는 단계를 포함한다. 기록/현재 네트워크 명령어와 같이 특별한 경우, 액크는 데이터가 실제적으로 물리적인 장치에 기록되어진 후에만 제공된다. 장치 특정 명령어의 생성을 포함할 수도 있는 식별 네트워크 명령어의 경우, 프로세스는 액크를 생성하는 단계를 포함한다. 응답의 프로세스는 특정 장치 명령어에 응답하여 발생할 수도 있는 임의의 에러 상황(error condition)을 조정하는 단계를 포함한다. 스레드는 적어도 개시 장치(initiating device)로 전달되는 에러 응답을 적어도 제공할 수 있다. 다른 실시예에서, 스레드는 다른 장치 특정 명령어를 발행함으로써 에러 상황으로부터 회복하기 위해 시도한다. 즉, 스레드는 단순히 장치 특정 명령어를 한번 또는 그 이상 재 시도한다.
요구 수화자(58)는, (1) 네트워크 내의 다른 구성요소(도시된 실시예에서는 호스트 컴퓨터(16)임)로부터의 접속을 허용하고, (2) 네트워크 내의 다른 구성요소로부터 수신된 요구를 프로세싱을 위해 요구 지시자로 전달하도록 기능한다.
요구 지시자(60)는, (1) 요구 수화자(58)로부터 요구 또는 네트워크 명령어를 수신하고, (2) 판독/기록 요구 또는 네트워크 명령어 내의 부-명령어를 분리하고, (3) 작업 큐에 의한 프로세스를 위해, 네트워크 명령어 및 부-명령어를 작업 큐에 기록하도록 동작한다. 일반적으로, 감시자(56)는 하나 이상의 작업 큐와 하나 이상의 작업 스레드를 셋업한다. 이 경우, 프로세스를 위한 작업 큐로의 명령어의 할당은 각각의 작업 스레드에 의해 현재 진행되고 있는 작업 부하(work load)의 요구 지시자에 의한 평가에 기초한다. 게다가, 요구 또는 네트워크 명령어가 접속해제 네트워크 명령어라면, 지시자(60)는 작업 큐가 더 이상 로딩되는 것을 방지하고, 작업 스레드 또는 스레드에 의한 모든 큐 명령어의 완료에 따라, 액크의 생성을 야기한다. 지시자(60)는 핑 네트워크 명령어에 응답하여 액크의 생성을 야기한다.
도1을 참조하여, 호스트 컴퓨터(16)와 NAS 장치(14) 사이의 블록 데이터의 전송을 설명한다. 일반적으로, 호스트 원격 블록 저장 장치 프로세서(42) 및 호스트 오퍼레이팅 시스템(40)의 다른 부분은 호스트 컴퓨터(16)내에서 실행 중인어플리케이션 프로그램으로부터 파일 명령어를 수신하고, 파일 명령어를 하나 또는 그 이상의 판독/기록 네트워크 명령어로 변환하고, 그러한 네트워크 명령어를 패킷 프로토콜에 따라 네트워크 기반구조(18)를 거쳐 NAS 장치(14)로 전달하기 위해 네트워커 인터페이스 카드(36)에 제공하도록 동작한다. 일반적으로, NAS 장치(14) 내의 블록 저장 장치 프로세서(30)는 하나의 블록 데이터저장 장치(26)에 대한 하나 또는 그 이상의 장치특정 명령어를 블록 저장 장치 인터페이스(24)를 통해 발행함으로써 임의의 판독/기록 네트워크 명령어에 응답한다. 또한, NAS 장치(14)는 판독/기록 네트워크 명령어의 액크가 패킷 프로토콜(예컨대, TCP/IP)에 따라 저장 장치 네트워크 인터페이스(22) 및 네트워크 기반구조(18)를 통해 호스트 컴퓨터(16)로 전달하게 야기한다. 일반적으로, 호스트 컴퓨터(16)는, 호스트 네트워크 인터페이스(36)에 의한 패킷의 재조합 후, 액크가 호스트 네트워크 인터페이스(36)로부터 호스트 원격 블록 저장 장치 프로세서(42)로 전달되도록 동작한다. 호스트 원격 블록 저장 장치 프로세서(42) 및 호스트 오퍼레이팅 시스템(4)의 다른 부분은 이전에 발행된 판독/기록 네트워크 명령어의 액크를 프로세스하기 위해 협력한다. 판독 네트워크 명령어의 경우, 프로세서(42) 및 호스트 오퍼레이팅 시스템(40)의 다른 부분은 블록 데이터 저장 장치(26) 중 하나의 장치로부터 판독되고, 액크에 포함되는 데이터를 판독 파일 명령어의 형태로 데이터를 요청한 어플리케이션에 제공하기 위해 협조한다. 기록 네트워크 명령어의 경우에, 프로세서(42)와 호스트 오퍼레이팅 시스템(40)의 다른 부분은, 어플리케이션 프로그램이 파일 명령어의 형태로 저장 장치에 기록되어야 한다고 요구되어진 데이터가 저장 장치에 기록되어 있는 표시(indication)를 어플리케이션 프로그램에 제공하기 위해 일반적으로 협조한다.
도3 내지 도9에 나타낸 네트워크 명령어의 특정 실시예의 내용 중 호스트 컴퓨터(16)와 NAS 장치(14) 사이의 블록 데이터의 전송의 예로서, NAS 장치(14)의 일부인 하나의 블록 데이터 저장 장치(26)상에 존재하는 블록 데이터를 호스트 컴퓨터(16)에서 실행중인 어플리케이션으로 전송하는 것을 설명한다. 일반적으로, 판독 네트워크 명령어를 발행하기 전에, 호스트 원격 블록 저장 장치 프로세서(42)는 식별 네트워크 명령어를 발행함으로써 포맷할 필요가 있거나, 임의의 판독 네트워크 명령어의 포맷에 있어서 바람직한 장치에 관한 정보를 결정한다. 식별 네트워크 명령어는 패킷 프로토콜에 따라 호스트 네트워크 인터페이스(36), 네트워크 하부 구조(18), 및 저장 장치 네트워크 인터페이스(22)를 통해 블록 저장 장치 프로세서(30)로 전달된다. 따라서, 블록 저장 장치 프로세서(30)는 액크에 필요한 정보를 결정하기 위해 물리적인 장치로 장치 특정 명령어를 발행할 수도 있다. 어떤 경우에서도, 블록 저장 장치 프로세서(30)는 액크를 생성하고, 액크 내의 각종 필드에 대한 값을 결정한다. 프로세서(30)는 또한 네트워크 기반구조(18)를 통해 호스트 컴퓨터(16)로 전달하기 위해 액크를 저장 장치 네트워크 인터페이스(22)에 제공한다.
호스트 원격 블록 저장 장치 프로세서(42)가 하나의 블록 데이터 저장 장치(26)에 대한 판독 네트워크 명령어를 적당하게 포맷하는데 필요하거나 바람직한 정보가 얻어졌다고 결정하고 나면, 프로세서(42)는 호스트 컴퓨터(16)상에서 실행중인 어플리케이션 프로그램으로부터의 판독 파일 요구에 응답하여 판독 네트워크 명령어를 생성할 수 있다. 상세하게, 호스트 오퍼레이팅 시스템(40)은 어플리케이션(38)으로부터 판독 파일 명령어(예컨대, 판독 파일 "xyz")를 수신하고, 여기서, 파일 "xyz"는 블록 데이터 저장 장치(26) 중 하나의 장치에 위치된다. 프로세서(42)는 호스트 오퍼레이팅 시스템(40)의 다른 부분과 협력하여 식별 네트워크 명령어에 대한 액크에 제공된 정보에 따라 판독 파일 명령어를 하나 또는 그 이상의 네트워크 명령어로 변환한다. 판독 네트워크 명령어 또는 명령어는 패킷 프로토콜을 따라 호스트 네트워크 인터페이스(36)와 네트워크 기반구조(18)를 통해 NAS 장치(14)로 전달된다. 블록 저장 장치 프로세서(30)는 필요한 데이터가 판독되도록 적당한 장치 특정 명령어를 하나의 블록 저장 장치(26)에 발행함으로써 판독 네트워크 명령어 또는 명령어를 프로세스한다. 데이터가 판독 네트워크 명령어에 대한 장치로부터 판독되어지면, 프로세서(30)는 데이터를 액크에 배치하고, 액크를 저장 장치 네트워크 인터페이스(22)에 제공하여, 패킷 프로토콜을 따라 네트워크 기반구조를 통해 호스트 컴퓨터(16)로 전달한다.
호스트 네트워크 인터페이스(36)는 판독 네트워크 명령어에 대한 액크를 수신하고, 패킷의 재조합 후, 액크를 호스트 원격 블록 저장 장치 프로세서(42)에 제공한다. 따라서, 프로세서(42)와 호스트 오퍼레이팅 시스템(40)의 다른 부분은 액크 내의 데이터를, 판독 네트워크 명령어 또는 명령어의 발행을 야기하는 판독 파일 명령어를 발행한 어플리케이션에 제공하기 위해 협조한다.
도10 및 도11을 참조하여, 어플리케이션 프로그램 인터페이스(API)(62)를 갖는 블록 저장 장치 프로세서(30) 및 API(64)를 갖는 호스트 원격 블록 저장 장치 프로세서(42)를 설명한다. API(62) 및 API(64)는 각각 프로세서와 연관된 소프트웨어의 계층(layer)이 어드레스되는 것을 방지하거나, 메모리 및/또는 저장 장치가 네트워크(10)에 구현되는 방법의 어드레스에 적응된다. API(62) 및 API(64)는 어플리케이션 프로그램에 프로그램이 특정 어플리케이션에 대하여 블록 데이터의 전송을 최적화 하는 것을 허용하는 명령어 인터페이스를 더 제공한다. 즉, 스트림 비디오를 포함하는 어플리케이션에 있어서, API는 스트림 비디오 어플리케이션의 구현을 위해 어플리케이션의 프로그래머에게 네트워크 내의 블록 데이터의 전송을 최적화할 수 있는 능력을 부여한다. 하나의 구현에 있어서, API(62) 및 API(64)는 네트워크 함수, 장치 함수, 및 메모리 함수를 구현하기 위한 능력을 제공한다.
네트워크 함수는 접속을 설정하기 위해 호(call)가 배정되고, 호가 회답되는 전화 등의 모델을 구현한다. NAS 장치(14) 측은 호스트(16)로부터의 접속 요구를 수신하기 위해 넷리슨(netListen) 네트워크 함수를 이용하고, 프로세스의 호스트(16) 측은 접속 요구를 제출하기 위해 넷콜(netCall) 네트워크 함수를 이용하며, 프로세스의 NAS 장치(14) 측은 접속 요구를 수용하기 위해, 즉 NAS 장치(14)와 호스트(16) 사이의 접속 설정을 지시하기 위해, 넷앤서(netAnswer) 네트워크 함수를 이용한다. 접속이 설정되면, 넷리드(netRead) 및 넷라이트(netWrite) 네트워크 함수는 접속동안 데이터의 전송을 달성하기 위해 이용된다. 다른 네트워크 함수들이 이용될 수 있다.
NAS 장치(14) 측은 각각 장치로부터의 데이터 블록을 판독하고, 블록 데이터 저장 장치의 블록을 기록하는 devRead 및 devWrite 장치 함수를 이용한다. 다른 장치 함수는, (a) 판독/기록을 위해 블록 데이터 저장 장치를 개방하는 devOpen, (b) 블록 데이터 저장 장치가 다른 프로세서에 의해 액세스되는 것을 허용하기 위해 장치를 폐쇄하는 devClose, (c) 블록 데이터 저장 장치의 현재 상태(예컨대, 이용가능, 이용 불가능, 예약됨 등)를 획득하기 위한 devStatus를 포함한다.
메모리 함수는 NAS 장치(14) 측과 호스트 컴퓨터(16) 측 양측의 메모리의 할당(allocation) 및 반환(de-allocation)을 제공한다.
전술한 실시예는 본 발명의 실시에 있어서 최적의 모드를 설명하기 위한 것으로, 당업자에 의해 변형이 가능하다.

Claims (20)

  1. 네트워크 접속형 저장 장치(network attached storage device)를 포함하는 데이터 블록의 저장에 이용하기 위한 컴퓨터 구조에 있어서,
    상기 네트워크 접속형 저장 장치는,
    패킷 프로토콜에 따라 네트워크 기반구조(infrastructure)로/로부터 커뮤니케이션을 송신/수신할 수 있는 저장 장치 네트워크 인터페이스;
    블록 데이터 저장 장치로/로부터 커뮤니케이션을 송신/수신할 수 있는 블록 저장 장치 인터페이스; 및
    블록 저장 장치 프로세서를 갖는 저장 장치 오퍼레이팅 시스템을 포함하고,
    상기 저장 장치 오퍼레이팅 시스템은,
    상기 저장 장치 네트워크 인터페이스로부터 블록 데이터 저장 장치에 관한 독립적 인터페이스인 네트워크 명령어 세트의 네트워크 명령어를 수신할 수 있고,
    상기 네트워크 명령어를 실행하기 위해, 블록 데이터 저장 장치에 대한 하나 또는 그 이상의 장치 특정 명령어(device specific command)를 생성할 수 있고,
    각각의 상기 하나 또는 그 이상의 장치 특정 명령어를 상기 블록 저장 장치 인터페이스로 전송할 수 있고,
    상기 블록 저장 장치 인터페이스로부터 상기 네트워크 명령어를 만족시키는 상기 하나 또는 그 이상의 장치 특정 명령어에 대한 응답을 수신할 수 있으며,
    상기 네트워크 명령어에 대한 응답을 상기 저장 장치 네트워크 인터페이스로전송할 수 있는
    컴퓨터 구조.
  2. 제1항에 있어서,
    상기 네트워크 명령어의 세트는 판독 네트워크 명령어를 포함하는
    컴퓨터 구조.
  3. 제1항에 있어서,
    상기 네트워크 명령어의 세트는 판독 네트워크 명령어 및 기록 네트워크 명령어를 포함하는
    컴퓨터 구조.
  4. 제1항에 있어서,
    상기 네트워크 명령어의 세트는 네트워크 접속과 관련된 명령어를 포함하는
    컴퓨터 구조.
  5. 제4항에 있어서,
    상기 네트워크 접속과 관련된 명령어는 네트워크 접속을 단절하기 위한 접속해제 명령어(disconnect command)를 포함하는
    컴퓨터 구조.
  6. 제4항에 있어서,
    상기 네트워크 접속과 관련된 명령어는 네트워크 지연(network latency)을 판정하기 위한 핑 명령어(ping command)를 포함하는
    컴퓨터 구조.
  7. 제1항에 있어서,
    상기 블록 저장 장치 프로세서를 갖는 저장 장치 오퍼레이팅 시스템은 작업 큐(work queue) 및 작업 스레드(work thread)를 셋업할 수 있는 감시자(supervisor)를 포함하는
    컴퓨터 구조.
  8. 제1항에 있어서,
    상기 블록 저장 장치 프로세서를 갖는 저장 장치 오퍼레이팅 시스템은 요구 지시자(request director)를 포함하는
    컴퓨터 구조.
  9. 제1항에 있어서,
    상기 블록 저장 장치 프로세서를 갖는 저장 장치 오퍼레이팅 시스템은 요구 수화자(request listener)를 포함하는
    컴퓨터 구조.
  10. 제1항에 있어서,
    상기 네트워크 접속형 저장 장치를 호스트 컴퓨터 내에 구현하기 위해 호스트 블록 저장 장치 프로세서를 갖는 호스트 오퍼레이팅 시스템을 포함하는 메모리 - 상기 네트워크 접속형 저장 장치는 상기 호스트 컴퓨터에 대해 원격 배치됨 -
    를 더 포함하고,
    상기 호스트 오퍼레이팅 시스템은,
    호스트 컴퓨터상에서 실행중인 어플리케이션으로부터 파일 명령어를 수신할수 있고,
    파일 명령어를 블록 데이터 저장 장치에 대하여 독립적 인터페이스인 네트워크 명령어 세트의 네트워크 명령어로 변환할 수 있고,
    패킷 프로토콜에 따라 네트워크 기반구조를 거쳐 전달하기 위해 상기 네트워크 명령어를 상기 호스트 컴퓨터에 결합된 네트워크 인터페이스로 전송할 수 있고,
    상기 네트워크 인터페이스로부터 이전에 전송된 네트워크 명령어에 대한 응답을 수신할 수 있으며,
    적합한 경우, 상기 파일 명령어에 대한 적어도 부분적인 회신(reply)으로서 상기 응답을 상기 어플리케이션으로 전송할 수 있는
    컴퓨터 구조.
  11. 제1항에 있어서,
    호스트 컴퓨터 - 상기 네트워크 접속형 저장 장치는 상기 호스트 컴퓨터에 대해 원격 배치되는 것으로 고려됨 -
    를 더 포함하고,
    상기 호스트 컴퓨터는,
    패킷 프로토콜을 따라 네트워크 기반구조로/로부터 커뮤니케이션을 송신/수신하기 위한 호스트 네트워크 인터페이스; 및
    호스트 블록 저장 장치 프로세서를 갖는 호스트 오퍼레이팅 시스템을 포함하며,
    상기 호스트 오퍼레이팅 시스템은,
    호스트 컴퓨터상에서 실행중인 어플리케이션으로부터 파일 명령어를 수신할 수 있고,
    파일 명령어를 블록 데이터 저장 장치에 대하여 독립적 인터페이스인 네트워크 명령어 세트의 네트워크 명령어로 변환할 수 있고,
    패킷 프로토콜에 따라 네트워크 기반구조를 거쳐 전달하기 위해 상기 네트워크 명령어를 상기 호스트 네트워크 인터페이스로 전송할 수 있고,
    상기 호스트 네트워크 인터페이스로부터 이전에 전송된 네트워크 명령어에 대한 응답을 수신할 수 있으며,
    적합한 경우, 상기 파일 명령어에 대한 적어도 부분적인 회신으로서 상기 응답을 상기 어플리케이션으로 전송할 수 있는
    컴퓨터 구조.
  12. 제1항 또는 제11항에 있어서,
    상기 저장 장치 네트워크 인터페이스 및 상기 호스트 네트워크 인터페이스에 동작 가능하게 접속되는 네트워크 기반구조
    를 더 포함하고,
    여기서 상기 네트워크 기반구조는 패킷 프로토콜에 따라 동작될 수 있는
    컴퓨터 구조.
  13. 네트워크 접속형 저장 장치; 및
    호스트 컴퓨터 - 상기 네트워크 접속형 저장 장치는 상기 호스트 컴퓨터에 대해 원격 배치되는 것으로 고려됨 -
    를 포함하고,
    상기 네트워크 접속형 저장 장치는,
    패킷 프로토콜에 따라 네트워크 기반구조로/로부터 커뮤니케이션을 송신/수신할 수 있는 저장 장치 네트워크 인터페이스;
    블록 데이터 저장 장치로/로부터 커뮤니케이션을 송신/수신할 수 있는 블록 저장 장치 인터페이스; 및
    블록 저장 장치 프로세서를 갖는 저장 장치 오퍼레이팅 시스템을 포함하고,
    상기 저장 장치 오퍼레이팅 시스템은,
    상기 저장 장치 네트워크 인터페이스로부터 블록 데이터 저장 장치에 관하여 독립적 인터페이스인 네트워크 명령어 세트의 네트워크 명령어를 수신할 수 있고,
    상기 네트워크 명령어를 실행하기 위해, 블록 데이터 저장 장치에 대한 하나 또는 그 이상의 장치 특정 명령어를 생성할 수 있고,
    각각의 상기 하나 또는 그 이상의 장치 특정 명령어를 상기 블록 저장 장치 인터페이스로 전송할 수 있고,
    상기 블록 저장 장치 인터페이스로부터 상기 네트워크 명령어를 만족시키는 상기 하나 또는 그 이상의 장치 특정 명령어에 대한 응답을 수신할 수 있으며,
    상기 네트워크 명령어에 대한 응답을 상기 저장 장치 네트워크 인터페이스로 전송할 수 있고,
    상기 호스트 컴퓨터는,
    패킷 프로토콜을 따라 네트워크 기반구조로/로부터 커뮤니케이션을 송신/수신하기 위한 호스트 네트워크 인터페이스; 및
    호스트 블록 저장 장치 프로세서를 갖는 호스트 오퍼레이팅 시스템을 포함하며,
    상기 호스트 오퍼레이팅 시스템은,
    호스트 컴퓨터상에서 실행중인 어플리케이션으로부터 파일 명령어를 수신할 수 있고,
    파일 명령어를 블록 데이터 저장 장치에 대하여 독립적 인터페이스인 네트워크 명령어 세트의 네트워크 명령어로 변환할 수 있고,
    패킷 프로토콜에 따라 네트워크 기반구조를 거쳐 전달하기 위해 상기 네트워크 명령어를 상기 호스트 네트워크 인터페이스로 전송할 수 있고,
    상기 호스트 네트워크 인터페이스로부터 이전에 전송된 네트워크 명령어에 대한 응답을 수신할 수 있고,
    적합한 경우, 상기 파일 명령어에 대한 적어도 부분적인 회신으로서 상기 응답을 상기 어플리케이션으로 전송할 수 있는
    컴퓨터 구조.
  14. 제13항에 있어서,
    상기 저장 장치 네트워크 인터페이스 및 상기 호스트 네트워크 인터페이스에 동작 가능하게 접속되는 네트워크 기반구조
    를 더 포함하고,
    여기서 상기 네트워크 기반구조는 패킷 프로토콜에 따라 동작될 수 있는
    컴퓨터 구조.
  15. 네트워크 접속형 저장 장치에 대해 원격 배치되는 호스트 컴퓨터
    를 포함하고,
    상기 호스트 컴퓨터는,
    패킷 프로토콜을 따라 네트워크 기반구조로/로부터 커뮤니케이션을 송신/수신하기 위한 호스트 네트워크 인터페이스; 및
    호스트 블록 저장 장치 프로세서를 갖는 호스트 오퍼레이팅 시스템을 포함하며,
    상기 호스트 오퍼레이팅 시스템은,
    호스트 컴퓨터상에서 실행중인 어플리케이션으로부터 파일 명령어를 수신할수 있고,
    파일 명령어를 블록 데이터 저장 장치에 대하여 독립적 인터페이스인 네트워크 명령어 세트의 네트워크 명령어로 변환할 수 있고,
    패킷 프로토콜에 따라 네트워크 기반구조를 거쳐 전달하기 위해 상기 네트워크 명령어를 상기 호스트 네트워크 인터페이스로 전송할 수 있고,
    상기 호스트 네트워크 인터페이스로부터 이전에 전송된 네트워크 명령어에 대한 응답을 수신할 수 있으며,
    적합한 경우, 상기 파일 명령어에 대한 적어도 부분적인 회신으로서 상기 응답을 상기 어플리케이션으로 전송할 수 있는
    컴퓨터 구조.
  16. 제15항에 있어서,
    네트워크 접속형 저장 장치
    를 더 포함하고,
    상기 네트워크 접속형 저장 장치는,
    패킷 프로토콜에 따라 네트워크 기반구조로/로부터 커뮤니케이션을 송신/수신할 수 있는 저장 장치 네트워크 인터페이스;
    블록 데이터 저장 장치로/로부터 커뮤니케이션을 송신/수신할 수 있는 블록 저장 장치 인터페이스; 및
    블록 저장 장치 프로세서를 갖는 저장 장치 오퍼레이팅 시스템을 포함하고,
    상기 저장 장치 오퍼레이팅 시스템은,
    상기 저장 장치 네트워크 인터페이스로부터 블록 데이터 저장 장치에 관하여 독립적 인터페이스인 네트워크 명령어 세트의 네트워크 명령어를 수신할 수 있고,
    상기 네트워크 명령어를 실행하기 위해, 블록 데이터 저장 장치에 대한 하나 또는 그 이상의 장치 특정 명령어를 생성할 수 있고,
    각각의 상기 하나 또는 그 이상의 장치 특정 명령어를 상기 블록 저장 장치 인터페이스로 전송할 수 있고,
    상기 블록 저장 장치 인터페이스로부터 상기 네트워크 명령어를 만족시키는 상기 하나 또는 그 이상의 장치 특정 명령어에 대한 응답을 수신할 수 있으며,
    상기 네트워크 명령어에 대한 응답을 상기 저장 장치 네트워크 인터페이스로 전송할 수 있는
    컴퓨터 구조.
  17. 제15항 또는 제16항에 있어서,
    상기 저장 장치 네트워크 인터페이스 및 상기 호스트 네트워크 인터페이스에 동작 가능하게 접속되는 네트워크 기반구조
    를 더 포함하고,
    여기서 상기 네트워크 기반구조는 패킷 프로토콜에 따라 동작될 수 있는
    컴퓨터 구조.
  18. 호스트 컴퓨터와, 상기 호스트 컴퓨터에 대하여 원격 배치되는 블록 데이터 저장 장치를 갖는 네트워크 접속형 저장 장치 사이의 통신 방법에 있어서,
    상기 호스트 컴퓨터와, 패킷 프로토콜을 따라 커뮤니케이션을 전송할 수 있는 상기 네트워크 접속형 저장 장치 사이를 연장하는 네트워크 기반구조를 제공하는 단계; 및
    상기 네트워크 접속형 저장 장치 내의 상기 블록 데이터 저장 장치에 대한 완전한 명령어 세트에 대하여, 상기 블록 데이터 저장 장치에 대한 완전한 명령어 세트의 서브세트 내에 있는 명령어만을 상기 호스트 컴퓨터와 상기 네트워크 접속형 저장 장치 사이에서 전송하는 단계
    를 포함하는 방법.
  19. 제18항에 있어서,
    상기 네트워크 접속형 저장 장치 내의 상기 블록 데이터 저장 장치에 대한 완전한 명령어 세트에 대하여, 상기 블록 데이터 저장 장치에 대한 완전한 명령어 세트의 서브세트 내에 있는 명령어에 대한 응답만을 상기 호스트 컴퓨터와 상기 네트워크 접속형 저장 장치 사이에서 전송하는 단계
    를 더 포함하는 방법.
  20. 제18항에 있어서,
    상기 서브세트는 판독 명령어 및 기록 명령어를 포함하는
    방법.
KR10-2004-7001917A 2001-08-06 2002-07-24 컴퓨터 네트워크 내의 블록 데이터 저장 KR20040035723A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/682,209 2001-08-06
US09/682,209 US6839706B2 (en) 2001-08-06 2001-08-06 Block data storage within a computer network
PCT/US2002/023531 WO2003015332A2 (en) 2001-08-06 2002-07-24 Block data storage within a computer network

Publications (1)

Publication Number Publication Date
KR20040035723A true KR20040035723A (ko) 2004-04-29

Family

ID=24738682

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2004-7001917A KR20040035723A (ko) 2001-08-06 2002-07-24 컴퓨터 네트워크 내의 블록 데이터 저장

Country Status (9)

Country Link
US (1) US6839706B2 (ko)
EP (1) EP1423791A4 (ko)
JP (1) JP2005527007A (ko)
KR (1) KR20040035723A (ko)
CN (1) CN100399305C (ko)
AU (1) AU2002322624B2 (ko)
BR (1) BR0211721A (ko)
CA (1) CA2455641A1 (ko)
WO (1) WO2003015332A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100952599B1 (ko) * 2007-11-16 2010-04-15 삼성에스디에스 주식회사 로컬디스크를 캐쉬로 이용하는 사용자 컴퓨터, 그를이용하는 방법 및 하이브리드 네트워크 스토리지 시스템

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7444393B2 (en) 2001-10-30 2008-10-28 Keicy K. Chung Read-only storage device having network interface, a system including the device, and a method of distributing files over a network
US7549080B1 (en) * 2002-08-27 2009-06-16 At&T Corp Asymmetric data mirroring
US7565408B2 (en) * 2003-03-20 2009-07-21 Dell Products L.P. Information handling system including a local real device and a remote virtual device sharing a common channel
US7735095B2 (en) * 2003-05-02 2010-06-08 Microsoft Corporation Network device drivers using a communication transport
JP4297747B2 (ja) * 2003-08-06 2009-07-15 株式会社日立製作所 ストレージ装置
EP1702250B1 (de) * 2003-12-30 2009-07-08 Wibu-Systems AG Verfahren zum steuern eines datenverarbeitungsgeräts
JP4572082B2 (ja) * 2004-03-22 2010-10-27 Necシステムテクノロジー株式会社 Nasディスクアレイ装置
US8914459B2 (en) * 2004-04-14 2014-12-16 Hewlett-Packard Development Company, L.P. Redirecting I/O request to remote networked peripheral device
JP4485256B2 (ja) 2004-05-20 2010-06-16 株式会社日立製作所 記憶領域の管理方法及び管理システム
US20050289218A1 (en) * 2004-06-28 2005-12-29 Rothman Michael A Method to enable remote storage utilization
JP4526337B2 (ja) * 2004-09-15 2010-08-18 株式会社日立製作所 データ管理システム及び方法
US20060129987A1 (en) * 2004-12-15 2006-06-15 Patten Benhase Linda V Apparatus, system, and method for accessing management data
US7797288B2 (en) * 2004-12-27 2010-09-14 Brocade Communications Systems, Inc. Use of server instances and processing elements to define a server
CN101268455B (zh) * 2005-08-10 2010-11-03 新加坡科技研究局 无线传输协议
US8447731B1 (en) * 2006-07-26 2013-05-21 Nextpoint, Inc Method and system for information management
JP4963892B2 (ja) * 2006-08-02 2012-06-27 株式会社日立製作所 仮想ストレージシステムの構成要素となることが可能なストレージシステムの制御装置
US8429328B2 (en) * 2007-06-29 2013-04-23 Sandisk Technologies Inc. System for communicating with a non-volatile memory storage device
US8433842B2 (en) * 2007-06-29 2013-04-30 Sandisk Technologies Inc. Method for communicating with a non-volatile memory storage device
US8769185B2 (en) 2007-10-23 2014-07-01 Keicy Chung Computer storage device having separate read-only space and read-write space, removable media component, system management interface, and network interface
JP2009258825A (ja) * 2008-04-14 2009-11-05 Hitachi Ltd ストレージシステム、仮想化装置、及び計算機システム
US8738711B2 (en) * 2009-11-03 2014-05-27 Oto Technologies, Llc System and method for redirecting client-side storage operations
US8527749B2 (en) * 2009-11-11 2013-09-03 International Business Machines Corporation User device, computer program product and computer system for system for secure network storage
US20110145723A1 (en) * 2009-12-16 2011-06-16 Oto Technologies, Llc System and method for redirecting client-side storage operations
US8499012B1 (en) * 2010-06-18 2013-07-30 Applied Micro Circuits Corporation System and method for attached storage stacking
US10019203B1 (en) * 2013-05-30 2018-07-10 Cavium, Inc. Method and system for processing write requests
US9923664B2 (en) * 2014-10-01 2018-03-20 Samsung Display Co., Ltd. Common-mode signaling for transition encoding
US9674275B1 (en) * 2015-03-16 2017-06-06 Amazon Technologies, Inc. Providing a file system interface to network-accessible computing resources
US10348562B2 (en) * 2016-01-11 2019-07-09 Netapp, Inc. Methods and systems for selecting compatible resources in networked storage environments
US10296264B2 (en) * 2016-02-09 2019-05-21 Samsung Electronics Co., Ltd. Automatic I/O stream selection for storage devices
US9942323B2 (en) * 2016-05-23 2018-04-10 Velostrata Ltd. Workload migration across a hybrid network
US10200471B2 (en) * 2016-05-23 2019-02-05 Google Llc Workload migration across a hybrid network
US10389810B2 (en) * 2016-11-02 2019-08-20 Commvault Systems, Inc. Multi-threaded scanning of distributed file systems
US10922189B2 (en) 2016-11-02 2021-02-16 Commvault Systems, Inc. Historical network data-based scanning thread generation
CN108111560B (zh) * 2016-11-24 2020-09-11 中国科学院声学研究所 一种线速存储网络分组的系统及方法
US10585624B2 (en) * 2016-12-01 2020-03-10 Micron Technology, Inc. Memory protocol
US10534751B1 (en) 2018-09-11 2020-01-14 Seagate Technology Llc Metadata space efficient snapshot operation in page storage

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0695986A (ja) * 1992-06-19 1994-04-08 Westinghouse Electric Corp <We> リアルタイムデータ・イメージングネットワークシステム及びその操作方法
US5710908A (en) * 1995-06-27 1998-01-20 Canon Kabushiki Kaisha Adaptive network protocol independent interface
US5689698A (en) * 1995-10-20 1997-11-18 Ncr Corporation Method and apparatus for managing shared data using a data surrogate and obtaining cost parameters from a data dictionary by evaluating a parse tree object
US5754841A (en) * 1995-10-20 1998-05-19 Ncr Corporation Method and apparatus for parallel execution of user-defined functions in an object-relational database management system
US5930786A (en) * 1995-10-20 1999-07-27 Ncr Corporation Method and apparatus for providing shared data to a requesting client
US5991813A (en) * 1997-05-16 1999-11-23 Icon Cmt Corp. Network enabled SCSI interface
US6052685A (en) * 1997-08-13 2000-04-18 Mosaix, Inc. Integration of legacy database management systems with ODBC-compliant application programs
US6493804B1 (en) 1997-10-01 2002-12-10 Regents Of The University Of Minnesota Global file system and data storage device locks
US5996024A (en) 1998-01-14 1999-11-30 Emc Corporation Method and apparatus for a SCSI applications server which extracts SCSI commands and data from message and encapsulates SCSI responses to provide transparent operation
US6081848A (en) * 1998-08-14 2000-06-27 Intel Corporation Striping packets of data across multiple virtual channels
US6272591B2 (en) * 1998-10-19 2001-08-07 Intel Corporation Raid striping using multiple virtual channels
US6470397B1 (en) * 1998-11-16 2002-10-22 Qlogic Corporation Systems and methods for network and I/O device drivers
CA2284947C (en) * 1999-10-04 2005-12-20 Storagequest Inc. Apparatus and method for managing data storage
US6862593B2 (en) * 2002-05-17 2005-03-01 Sun Microsystems, Inc. Separation of database transactions

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100952599B1 (ko) * 2007-11-16 2010-04-15 삼성에스디에스 주식회사 로컬디스크를 캐쉬로 이용하는 사용자 컴퓨터, 그를이용하는 방법 및 하이브리드 네트워크 스토리지 시스템

Also Published As

Publication number Publication date
US20030028731A1 (en) 2003-02-06
WO2003015332A2 (en) 2003-02-20
AU2002322624B2 (en) 2008-11-06
BR0211721A (pt) 2004-11-03
CA2455641A1 (en) 2003-02-20
CN100399305C (zh) 2008-07-02
CN1561489A (zh) 2005-01-05
WO2003015332A3 (en) 2003-12-04
US6839706B2 (en) 2005-01-04
JP2005527007A (ja) 2005-09-08
EP1423791A4 (en) 2010-01-13
EP1423791A2 (en) 2004-06-02

Similar Documents

Publication Publication Date Title
KR20040035723A (ko) 컴퓨터 네트워크 내의 블록 데이터 저장
AU2002322624A1 (en) Block data storage within a computer network
US7664892B2 (en) Method, system, and program for managing data read operations on network controller with offloading functions
US7865588B2 (en) System for providing multi-path input/output in a clustered data storage network
US6549934B1 (en) Method and system for remote access to computer devices via client managed server buffers exclusively allocated to the client
JP5364773B2 (ja) クライアントとサーバ間の接続を管理するためのシステムおよび方法
US6144992A (en) Method and system for client/server and peer-to-peer disk imaging
US7587627B2 (en) System and method for disaster recovery of data
US20130097378A1 (en) Storage system and control method thereof as well as program
JP2002014777A (ja) データ移行方法並びにプロトコル変換装置及びそれを用いたスイッチング装置
CN1985492B (zh) 支持iSCSI读操作和iSCSI烟囱的方法和系统
JP2003241903A (ja) 記憶制御装置、ストレージシステム、及びその制御方法
US20050089033A1 (en) Method, system, and program for constructing a packet
US8676928B1 (en) Method and system for writing network data
JPH07117929B2 (ja) 無接続セッション指向プロトコルの第1メッセージの生成システム及び方法
JP2006511869A (ja) 自動化されたメディア管理
US20040139196A1 (en) System and method for releasing device reservations
KR20050083861A (ko) 데이터 처리 시스템
US6697895B1 (en) Network attached tape storage system
US10798159B2 (en) Methods for managing workload throughput in a storage system and devices thereof
US7539711B1 (en) Streaming video data with fast-forward and no-fast-forward portions
US20050002389A1 (en) Method, system, and program for processing a packet to transmit on a network in a host system including a plurality of network adaptors
US10585823B2 (en) Leveling IO
US20240045608A1 (en) Tape device to replicate data to a plurality of remote storage devices
US11983430B2 (en) Replicating data to a plurality of replication devices through a tape device

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application