KR100942894B1 - 물리적 기억 장치의 소프트웨어-이용 기억 장치 에뮬레이션 - Google Patents

물리적 기억 장치의 소프트웨어-이용 기억 장치 에뮬레이션 Download PDF

Info

Publication number
KR100942894B1
KR100942894B1 KR1020040067749A KR20040067749A KR100942894B1 KR 100942894 B1 KR100942894 B1 KR 100942894B1 KR 1020040067749 A KR1020040067749 A KR 1020040067749A KR 20040067749 A KR20040067749 A KR 20040067749A KR 100942894 B1 KR100942894 B1 KR 100942894B1
Authority
KR
South Korea
Prior art keywords
delete delete
emulated
storage
scsi
storage device
Prior art date
Application number
KR1020040067749A
Other languages
English (en)
Other versions
KR20050021874A (ko
Inventor
다이청랑
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20050021874A publication Critical patent/KR20050021874A/ko
Application granted granted Critical
Publication of KR100942894B1 publication Critical patent/KR100942894B1/ko

Links

Images

Classifications

    • 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/0671In-line storage system
    • G06F3/0673Single storage device
    • 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
    • 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/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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

Abstract

저장 능력(예를 들어, 하드 디스크, 테이프 드라이브, 테이프 체인저, 또는 판독-기록 콤팩트 디스크)을 갖는 물리적 기억 장치가 하나 이상의 기억 장치들을 에뮬레이션할 수 있게 해주는 메카니즘들이 기술된다. 구성 인터페이스는 에뮬레이션되는 기억 장치의 속성들을 특정하는 구성 함수 콜들을 수신한다. 프론트엔드 컴포넌트는 네트워크 커뮤니케이션을 수신하고 네트워크 커뮤니케이션으로부터 SCSI 커맨드들을 추출한다. 에뮬레이션 소프트웨어 컴포넌트는 구성 함수 콜에 응답해서 물리적 기억 장치내에서 파일을 설정하고, SCSI 커맨드가 에뮬레이션 기억 장치를 위해 예정되어 있다고 결정하고, 에뮬레이션 기억 장치에서 SCSI 커맨드 실행을 에뮬레이션하는 방식으로 SCSI 커맨드를 실행하기 위해 에뮬레이션 기억 장치에 대응하는 파일 기억 공간 및 속성들을 사용한다.
Figure R1020040067749
에뮬레이션 소프트웨어 컴포넌트, 프론트엔드 컴포넌트, 네트워크 커뮤니케이션, 물리적 기억 장치, SCSI 커맨드

Description

물리적 기억 장치의 소프트웨어-이용 기억 장치 에뮬레이션{SOFTWARE-AIDED STORAGE DEVICE EMULATION IN A PHYSICAL STORAGE DEVICE}
도 1은 본 발명의 특징들을 구현할 수도 있는 적합한 컴퓨팅 시스템을 도시한 도면.
도 2는 하나 이상의 물리적 SCSI 디바이스들을 에뮬레이션할 수 있는 물리적 기억 장치와 네트워크 커뮤니케이션하는 컴퓨팅 시스템들을 포함해서 본 발명의 원리들이 사용될 수도 있는 네트워크 환경을 도시한 도면.
도 3은 본 발명의 원리에 따라 물리적 기억 장치가 하나 이상의 SCSI 디바이스들을 에뮬레이션하는 방법의 플로우챠트.
<도면의 주요 부분에 대한 부호의 설명>
201 : 컴퓨팅 시스템 210 : 네트워크
220 : 물리적 기억 장치 221 : 네트워크 커뮤니케이션
222 : 프론트엔드 컴포넌트 223 : SCSI 커맨드
230 : 큐 240 : 에뮬레이션 소프트웨어 컴포넌트
250 : 에뮬레이션 하드웨어 디바이스 260 : 구성 인터페이스
본 발명은 네트워크 커뮤니케이션 기술에 관한 것이다. 특히, 본 발명은 상이한 물리적 속성들을 가진 SCSI(Small Computer System Interconnect) 디바이스들을 에뮬레이션하기 위해 네트워크에서 물리적 기억 장치를 구성하기 위한 메카니즘들에 관한 것이다.
컴퓨팅 기술은 작업 및 플레이 방법을 변형해 왔다. 전형적인 구성에서, 컴퓨팅 시스템은 최적 오퍼레이션을 위해 로컬 버스를 통해 다양한 하드웨어 디바이스들에 결합된다. 상기 디바이스들은 예를 들면 자기 및/또는 광 디스크 드라이브, 프린터, 팩스 머신, 스캐너, 카메라 등을 포함할 수도 있다. 컴퓨팅 시스템은 하드웨어 디바이스에 의해 인식되는 표준 통신 프로토콜을 사용해서 접속된 하드웨어 디바이스들 각각과 통신한다.
컴퓨팅 시스템과 다양한 접속 하드웨어 디바이스들 간의 통신을 위해 흔히 사용되는 한가지 통신 프로토콜은 "소형 컴퓨터 시스템 인터페이스(SCSI)"라고 하는 병렬 인터페이스 표준이다. SCSI는 컴퓨팅 시스템과 다양한 주변 디바이스들 간의 효과적인 데이터 블록 전송을 허용한다. 그러나, SCSI는 특정한 한계점들을 갖는다. 특히, SCSI를 사용하는 데이터 전송은 다른 데이터 전송 메카니즘들에 비해 비교적 느리다. 또한, SCSI의 케이블 길이가 광대한 네트워크들에 비해 비교적 짧다. 따라서, 하드웨어 디바이스들은 통상 SCSI가 순전한 형태로 사용되는 한 컴퓨팅 시스템에 가까이 있어야만 한다.
최근에, SCSI 디바이스들은 버스를 통해 국부적으로 접속되기 보다는 네트워 크들을 통해 컴퓨팅 시스템에 접속되어 왔다. 이러한 네트워크-접속 SCSI 디바이스들은 SCSI 디바이스가 다수의 컴퓨팅 시스템들을 지원할 수 있고 지원하는 임의의 컴퓨팅 시스템에 국부적으로 접속될 필요가 없기 때문에 보다 유연한 네트워크 위상들을 허용한다. 그러나, SCSI 커맨드들은 네트워크 전송과 호환 가능한 포맷들로 되지 않고는 네트워크를 통해 직접 커뮤니케이션될 수 없다. 따라서, 네트워크를 통해 SCSI 커맨드를 커뮤니케이션하기 위한 다양한 메카니즘들이 개발되어 왔다.
이러한 한 메카니즘은 "인터넷 SCSI(iSCSI)"라고 하는 향상된 SCSI이다. iSCSI는 표준 SCSI 커맨드들 및 응답들이 이더넷 및 인터넷과 같은 임의의 IP-기반 네트워크를 통해 커뮤니케이션될 수 있게 해주는 표준이다. 컴퓨팅 시스템은 iSCSI 표준을 사용해서 타겟 디바이스와의 커뮤니케이션을 개시하는 "이니시에이터(initiator)"(하드웨어 또는 소프트웨어일 수 있음)를 포함한다. 구체적으로, SCSI 메시지는 필요한 경우 단편화되고 인터넷 프로토콜(IP) 헤더로 요약되어, IP 네트워크를 통해 송신된다. 타겟 디바이스는 SCSI 커맨드를 추출 및 실행하고, 만약 응답이 있으면, IP-기반 네트워크를 통해 iSCSI 표준을 사용해서 응답을 리턴한다. 네트워크를 통해 SCSI 커맨드를 커뮤니케이션하기 위한 다른 방법은 광섬유 채널(Fiber Channel)이다.
때때로 하나의 디바이스가 많은 SCSI 디바이스들 중 하나를 에뮬레이션하거나 하나 이상의 디바이스가 단일 SCSI 디바이스를 에뮬레이션하는 것이 유익하다. 예를 들어, 정보 기술(IT) 관리자가 유용한 100 기가바이트 하드 드라이브를 갖고 있으며, 수개의 스토리지가 필요하다고 가정하자. 예를 들어, IT 관리자는 각각의 클라이언트에 한개씩, 10개의 하드 디스크들을 필요로 하고, 야간 백업을 위해 테이프 드라이브를 필요로 할 수도 있다. 디바이스들을 개별적으로 구매하는 것 보다, 100 기가바이트 하드 드라이브가 5개의 상이한 하드 드라이브들 및 테이프 드라이브를 에뮬레이션하게 하는 것이 훨씬 비용이 적게 든다.
따라서, 하나의 물리적 기억 장치가 다른 기억 장치들을 에뮬레이션하는 메카니즘들이 바람직하다.
종래 기술의 상술된 문제점들은 본 발명의 원리들에 의해 극복된다. 본 발명은 저장 능력(예를 들어, 하드 디스크, 테이프 드라이브, 테이프 체인저, 또는 판독-기록 콤팩트 디스크)을 갖는 물리적 기억 장치가 SCSI 커맨드들에 응답할 수도 있는 하나 이상의 SCSI 기억 장치들을 에뮬레이션할 수 있게 해주는 메카니즘들에 관한 것이다. 물리적 기억 장치는 에뮬레이션하는 기억 장치와 동일한 디바이스 타입일 필요는 없다. 예를 들어, 디스크 드라이브는 테이프 드라이브를 에뮬레이션하는데 사용될 수도 있다. 이는 주변 기억 장치가 보다 유연하게 구성되게 한다.
물리적 기억 장치는 3개의 소프트웨어 컴포넌트들, 구성 인터페이스, 프론트엔드(front end) 컴포넌트, 및 에뮬레이션(emulation) 소프트웨어 컴포넌트를 갖는다. 구성 인터페이스는 에뮬레이션되는 기억 장치의 속성들을 특정하는 구성 함수 콜들을 수신한다. 프론트엔드 컴포넌트는 네트워크 커뮤니케이션을 수신하고 네트워크 커뮤니케이션으로부터 SCSI 커맨드들을 추출한다. 에뮬레이션 소프트웨어 컴포넌트는 구성 함수 콜에 응답해서 물리적 기억 장치내에서 파일을 설정한다. 그 후, 상기 컴포넌트는 SCSI 커맨드가 에뮬레이션 기억 장치를 위해 예정되어 있다고 결정한다. 이에 응답해서, 컴포넌트는 에뮬레이션 기억 장치에서 SCSI 커맨드 실행을 에뮬레이션하는 방식으로 SCSI 커맨드를 실행하기 위해 에뮬레이션 기억 장치에 대응하는 파일 기억 공간 및 속성들을 사용한다.
에뮬레이션을 실행하는 물리적 기억 장치는 에뮬레이션되는 기억 장치와 동일한 스토리지 타입일 필요는 없다. 예를 들어, 디스크 드라이브는 테이프 드라이브, 테이프 체인저, 판독-기록 콤팩트 디스크, 또는 다른 타입들의 기억 장치들을 에뮬레이션하는데 사용될 수도 있다. 유사하게, 테이프 드라이브들은 디스크 드라이브, 테이프 체인저, 판독-기록 콤팩트 디스크, 또는 다른 기억 장치들을 에뮬레이션하는데 사용될 수도 있다. 테이프 체인저들은 디스크 드라이브, 테이프 드라이브, 판독-기록 콤팩트 디스크 및 다른 기억 장치들을 에뮬레이션하는데 사용될 수도 있다. 판독-기록 콤팩트 디스크는 디스크 드라이브, 테이프 드라이브, 테이프 체인저, 또는 다른 기억 장치들을 에뮬레이션하는데 사용될 수도 있다.
한 디바이스 타입이 다른 디바이스를 에뮬레이션할 수 있게 해주는 유연성 외에, 임의의 소정의 기억 장치에 의해 에뮬레이션되는 디바이스 타입들은 서로 상이할 수도 있다. 예를 들어, 기억 장치는 디스크 드라이브, 테이프 드라이브, 테이프 체인저, 판독-기록 콤팩트 디스크, 또는 다른 기억 장치들 모두를, 또는 그 중 하나 이상을 에뮬레이션할 수도 있다. 따라서, 전체 네트워크들의 저장 능력은 보다 적은 수의 기억 장치들로 보다 쉽게 통합될 수 있어서, 네트워크 관리자들이 보다 양호하게 스토리지 요구 사항들을 관리할 수 있다. 또한, 필요한 기억 장치들을 구매하기 보다는 에뮬레이션할 수 있으므로, 스토리지 비용이 상당히 감소될 수도 있다.
본 발명의 추가 특징들 및 장점들은 이하의 설명에 기술될 것이며, 부분적으로 이하의 설명으로부터 명백해질 것이며, 또는 본 발명의 실행에 의해 알게 될 수도 있다. 본 발명의 특징들 및 장점들은 첨부된 청구항들에 특별히 지시된 기구들 및 결합들에 의해 실현되거나 획득될 수도 있다. 본 발명의 여타 특징들은 이하의 설명 및 첨부된 청구항들로부터 보다 명백해질 것이며, 후술된 바대로 본 발명을 구현함으로써 알게 될 수도 있다.
본 발명의 여타 특징들 및 장점들이 획득될 수 있는 방식을 기술하기 위해, 간략하게 상술된 본 발명의 설명은 첨부된 도면들에 도시된 특정 실시예들과 관련해서 표현될 것이다. 도면들이 본 발명의 특정 실시예들만을 도시한 것을 알 수 있지만, 본 발명의 범위를 제한하는 것으로 생각되서는 안되며, 본 발명은 첨부된 도면들을 사용해서 추가 설명 및 세부 설명으로 기술될 것이다.
본 발명의 원리들은 저장 능력(예를 들어, 하드 디스크, 테이프 드라이브, 테이프 체인저, 또는 판독-기록 콤팩트 디스크)을 갖는 물리적 기억 장치가 하나 이상의 기억 장치들을 에뮬레이션할 수 있게 해주는 메카니즘들에 관한 것이다. 물리적 기억 장치는 3개의 소프트웨어 컴포넌트들, 구성 인터페이스, 프론트엔드 컴포넌트, 및 에뮬레이션 소프트웨어 컴포넌트를 갖는다. 구성 인터페이스는 에뮬레이션되는 기억 장치의 속성들을 특정하는 구성 함수 콜들을 수신한다. 프론트엔드 컴포넌트는 네트워크 커뮤니케이션을 수신하고 네트워크 커뮤니케이션으로부터 SCSI 커맨드들을 추출한다. 에뮬레이션 소프트웨어 컴포넌트는 구성 함수 콜에 응답해서 물리적 기억 장치내에서 파일을 설정하고, SCSI 커맨드가 에뮬레이션 기억 장치를 위해 예정되어 있다고 결정하고, 에뮬레이션 기억 장치에서 SCSI 커맨드 실행을 에뮬레이션하는 방식으로 SCSI 커맨드를 실행하기 위해 에뮬레이션 기억 장치에 대응하는 파일 기억 공간 및 속성들을 사용한다.
도면들을 참조할 때, 유사한 참조 부호들은 유사한 소자들을 나타내며, 본 발명은 적합한 컴퓨팅 환경에서 구현된 것으로 도시된다. 이하의 설명은 본 발명의 도시된 실시예들을 근거로 한 것이며 본 명세서에 명백히 기술되지 않은 다른 실시예들에 대해 본 발명을 제한하는 것으로 간주되서는 안된다.
이하의 설명에서, 본 발명은 달리 지시되지 않는 한 하나 이상의 컴퓨터들에 의해 실행되는 오퍼레이션들의 심볼 표현들 및 단계들을 참조해서 기술된다. 때때로 컴퓨터 실행중이라고 하는 단계들 및 오퍼레이션들은 구조화 형태의 데이터를 나타내는 전기 신호들의 컴퓨터의 프로세싱 유닛에 의한 조작을 포함함을 알 것이다. 상기 조작은 데이터를 변형하거나 컴퓨터의 메모리 시스템의 로케이션들에서 유지되며, 본 기술 분야에 숙련된 자들에게 공지된 방식으로 컴퓨터의 오퍼레이션을 재구성하거나 변경한다. 데이터가 유지되는 데이터 구조는 데이터의 포맷에 의해 정의된 특정 속성들을 갖는 메모리의 물리적 로케이션이다. 그러나, 본 발명이 상술된 문맥으로 기술되어 있지만, 이는 후술된 수개의 단계들 및 오퍼레이션들이 하드웨어로 구현될 수도 있음을 본 기술 분야에 숙련된 자들이 아는 바와 같이 제한의 의미가 아니다.
설명을 위해, 도 1은 상기 디바이스들에 유용한 일례의 컴퓨터 아키텍처의 개략도를 도시하고 있다. 도시된 아키텍처는 단지 적합한 환경의 한 일례이며 본 발명의 용도 또는 기능의 범위에 어떠한 제한을 제시하려는 의도가 아니다. 컴퓨팅 시스템들이 도 1에 도시된 컴포넌트들 중 임의의 컴포넌트 또는 결합물에 대해 임의의 종속성 또는 요구 사항을 갖는 것으로 해석되서는 안된다.
본 발명은 다수의 다른 범용 또는 특별 용도 컴퓨팅 또는 커뮤니케이션 환경 또는 구성으로 동작 가능하다. 본 발명에 의해 사용되기에 적합한 공지된 컴퓨팅 시스템, 환경, 및 구성의 일례들은 이동 전화, 포켓 컴퓨터, 퍼스널 컴퓨터, 서버, 멀티프로세서 시스템, 마이크로프로세서-기반 시스템, 미니컴퓨터, 메인프레임 컴퓨터, 및 상술된 시스템들 또는 디바이스들 중 임의의 시스템 또는 디바이스를 포함하는 분산 컴퓨팅 환경을 포함하는데, 이들로만 제한되지는 않는다.
가장 기본적인 구성에서, 컴퓨팅 시스템(100)은 통상 적어도 하나의 프로세싱 유닛(102) 및 메모리(104)를 포함한다. 메모리(104)는 휘발성(예를 들어, RAM), 비휘발성(예를 들어, ROM, 플래시 메모리 등), 또는 몇몇 상기 결합물일 수도 있다. 가장 기본적인 구성은 도 1에 점선(106)으로 도시되어 있다.
기억 매체 디바이스들은 추가 특징들 및 기능을 가질 수도 있다. 예를 들어, PCMCIA 카드, 자기 및 광 디스크, 및 자기 테이프를 포함하지만 이들로만 제한 되지는 않는 추가 스토리지(제거 가능 및 제거 불가능)를 포함할 수도 있다. 상기 추가 스토리지는 도 1에 제거 가능 스토리지(108) 및 제거 불가능 스토리지(110)로 도시되어 있다. 컴퓨터-기억 매체는 컴퓨터-판독 가능 명령들, 데이터 구조, 프로그램 모듈들, 또는 다른 데이터와 같은 정보를 기억하기 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 제거 가능 및 제거 불가능 매체들을 포함한다. 메모리(104), 제거 가능 스토리지(108) 및 제거 불가능 스토리지(110)는 모두 컴퓨터-기억 매체의 일례들이다. 컴퓨터-기억 매체는 RAM, ROM, EEPROM, 플래시 메모리, 다른 메모리 기술, CD-ROM, 디지털 다기능 디스크, 다른 광 스토리지, 자기 카셋트, 자기 테이프, 자기 디스크 스토리지, 다른 자기 기억 장치, 및 컴퓨팅 시스템에 의해 액세스될 수 있으며 희망 정보를 기억하는데 사용될 수 있는 임의의 다른 매체들을 포함하는데, 이들로만 제한되지는 않는다.
본 명세서에서 사용되는 용어 "모듈" 또는 "컴포넌트"는 컴퓨팅 시스템에서 실행되는 소프트웨어 객체 또는 루틴일 수 있다. 본 명세서에 기술된 상이한 컴포넌트들, 모듈들, 엔진들 및 서비스들은 컴퓨팅 시스템에서 실행되는 객체들 또는 프로세스들로서(예를 들어, 개별 스레드로서) 구현될 수도 있다. 본 명세서에 기술된 시스템 및 방법들은 양호하게 소프트웨어로 구현되어 있지만, 소프트웨어 및 하드웨어 또는 하드웨어로도 또한 구현될 수 있다.
컴퓨팅 시스템(100)은 호스트가 다른 디바이스들과 커뮤니케이션할 수 있게 해주는 통신 채널들(112)을 포함할 수도 있다. 통신 채널들(112)은 통신 매체들의 일례들이다. 통신 매체들은 통상 컴퓨터-판독 가능 명령들, 데이터 구조, 프로그 램 모듈들, 또는 반송파 또는 다른 전송 메카니즘과 같은 변조된 데이터 신호의 다른 데이터를 포함하며, 임의의 정보-전달 매체들을 포함한다. 용어 "변조된 데이터 신호"는 정보를 신호로 인코드하는 방식으로 변경되거나 특징 집합 중 하나 이상의 특징들을 갖는 신호를 의미한다. 제한의 의미가 아니라 일례로서, 통신 매체는 유선망 및 다이렉트-와이어드 커넥션과 같은 유선 매체, 및 음향, 라디오, 적외선, 및 다른 무선 매체와 같은 무선 매체들을 포함한다. 본 명세서에서 사용되는 용어 컴퓨터-판독 가능 매체는 기억 매체 및 통신 매체를 모두 포함한다.
컴퓨팅 시스템(100)은 또한 키보드, 마우스, 펜, 음성-입력 컴포넌트, 터치-입력 디바이스 등과 같은 입력 컴포넌트들(114)을 포함할 수도 있다. 출력 컴포넌트들(116)은 스크린 디스플레이, 스피커, 프린터 등을 포함하고, 상기 컴포넌트들을 구동하기 위한 렌더링 모듈들(종종 "어댑터"라고 함)을 포함한다. 컴퓨팅 시스템(100)은 전원(118)을 갖는다. 모든 컴포넌트들은 본 기술 분야에 공지된 것으로 장황하게 설명될 필요가 없다.
도 2는 본 발명의 원리들이 사용될 수도 있는 네트워크 환경(200)을 도시한 것이다. 네트워크 환경(200)은 네트워크(210)를 통해 물리적 기억 장치(220)와 통신할 수도 있는 다수의 컴퓨팅 시스템들(201)을 포함한다. 네트워크(210)는 예를 들어, 인터넷, 근거리 통신망(LAN), VPN(Virtual Privacy Network), 또는 임의의 다른 네트워크일 수도 있다. 물리적 기억 장치(220)와 통신할 수도 있는 임의의 수의 컴퓨팅 시스템들(201)이 있을 수 있다. 그러나, 도 2는 5개의 컴퓨팅 시스템들(201A 내지 201E)을 도시하고 있다. 보다 많은 수의 컴퓨팅 시스템들(생략 부호 (...)(210F)로 표시됨)이 있을 수도 있고 보다 적은 수의 컴퓨팅 시스템들이 있을 수도 있다. 심지어 하나의 컴퓨팅 시스템도 가능하다.
각각의 컴퓨팅 시스템(201)은 특별히 요구되지 않더라도 컴퓨팅 시스템(100)을 위해 상술된 바와 같이 구조화될 수도 있다. 그러나, 이러한 경우에, 컴퓨팅 시스템(100)은 네트워크(120)를 통한 커뮤니케이션에 대해 기술된 방식으로 통신 채널들(112)을 사용해서 네트워크(210)를 통해 물리적 기억 장치(220)와 통신할 수도 있다.
물리적 기억 장치(220)는 예를 들어, 디스크 드라이브, 테이프 드라이브, 테이프 체인저, 판독-기록 콤팩트 디스크, 또는 임의의 다른 기억 매체일 수도 있다. 물리적 기억 장치(220)는 소프트웨어 실행을 허용하는 관련 프로세싱 능력을 갖는다. 프로세싱 능력은 물리적 기억 장치(220) 내에 통합될 수도 있으며, 또는 물리적 기억 장치(220)와 관련된 컴퓨팅 시스템에 의해 구현될 수도 있다. 물리적 기억 장치(220)에서 실행되는 소프트웨어 컴포넌트들은 프론트엔드 컴포넌트(222), 큐(queue)(230), 에뮬레이션 소프트웨어 컴포넌트(240), 및 구성 인터페이스(260)를 포함한다.
구성 인터페이스(260)는 예를 들어, WMI(WINDOWS Management Instrumentaion) 인터페이스일 수도 있다. 간단히 말해서, 구성 인터페이스(260)는 물리적 기억 장치에 의해 에뮬레이션되는 기억 장치의 속성들을 특정하는 구성 함수 콜을 수신한다. 다시 말해서, 구성 인터페이스(260)를 통해 지정된 속성들을 사용해서, 에뮬레이션 소프트웨어 컴포넌트(240)는 예를 들어, 파일을 사용해서 디스크 드라이브를 시뮬레이션하는 방법과 같은 다양한 시나리오에 반응하는 방법에 대해 명령을 받는다.
프론트엔드 컴포넌트(222)는 네트워크(210)로부터 네트워크 커뮤니케이션(221)을 수신하도록 구성된다. 네트워크 커뮤니케이션은 iSCSI, 광섬유 채널, USB 또는 IEEE 1394 프로토콜들 또는 네트워크를 통한 전송을 위해 SCSI 커맨드들을 요약하는데 사용될 수도 있는 임의의 다른 프로토콜에 순응할 수도 있다. 프론트엔드 컴포넌트(222)는 네트워크 커뮤니케이션(221)으로부터 SCSI 커맨드들(223)을 추출한 후, 에뮬레이션 소프트웨어 컴포넌트(240)에 큐들(230)을 통해 SCSI 커맨드를 제공한다. SCSI 커맨드 실행이 완료될 때, SCSI 응답들(224)이 프론트엔드 컴포넌트(222)에 리턴된다.
한 구현에서, 각각의 에뮬레이션 기억 매체에 전용인 큐가 하나씩 있다. 예를 들어, 큐들(230)은 에뮬레이션 소프트웨어 컴포넌트(240)에 의해 유지되는 에뮬레이션 기억 장치들(250A, 205B, 250C 및 205D)에 대응하는 큐들(230A, 230B, 230C 및 230D)을 포함한다. 또한, 다른 큐들(230E)은 또 다른 에뮬레이션 하드웨어 디바이스들(250E)을 위해 사용될 수도 있다. 에뮬레이션 소프트웨어 컴포넌트(240)는 큐들(230)로부터 SCSI 커맨드들을 획득한다. 한 일례에서, 커맨드들은 임의의 싱글 에뮬레이션 기억 장치의 장치 결핍에 대해 보호하는 임의의 방식으로 큐들(230)로부터 획득된다. 예를 들어, 에뮬레이션 소프트웨어 컴포넌트(240)는 라운드 로빈 방식으로 각각의 큐로부터 SCSI 커맨드들을 획득할 수도 있다.
에뮬레이션 소프트웨어 컴포넌트(240)는 예를 들어, CDB(Command Descriptor Block) 엔진일 수도 있으며, 실제로 구성 인터페이스(260)를 통해 구성되고 큐들(230)을 통해 프론트엔드 컴포넌트(222)로부터 수신된 SCSI 커맨드들에 응답해서 디바이스 에뮬레이션을 실행한다.
상술된 바와 같이, 물리적 기억 장치(220)는 하드 디스크, 테이프 드라이브, 테이프 체인저, 판독-기록 콤팩트 디스크, 또는 임의의 다른 기억 장치일 수도 있다. 또한, 에뮬레이션되는 기억 장치들은 하드 디스크, 테이프 드라이브, 테이프 체인저, 판독-기록 콤팩트 디스크, 또는 임의의 다른 기억 장치일 수도 있다.
그러나, 물리적 기억 장치(220)는 에뮬레이션되는 기억 장치와 동일한 타입의 장치일 필요는 없다. 예를 들어, 디스크 드라이브는 테이프 드라이브, 테이프 체인저, 판독-기록 콤팩트 디스크, 또는 다른 타입들의 기억 장치들을 에뮬레이션하는데 사용될 수도 있다. 유사하게, 테이프 드라이브들은 디스크 드라이브, 테이프 체인저, 판독-기록 콤팩트 디스크, 또는 다른 기억 장치들을 에뮬레이션하는데 사용될 수도 있다. 테이프 체인저들은 디스크 드라이브, 테이프 드라이브, 판독-기록 콤팩트 디스크 및 다른 기억 장치들을 에뮬레이션하는데 사용될 수도 있다. 판독-기록 콤팩트 디스크는 디스크 드라이브, 테이프 드라이브, 테이프 체인저, 또는 다른 기억 장치들을 에뮬레이션하는데 사용될 수도 있다.
한 디바이스 타입이 다른 디바이스를 에뮬레이션할 수 있게 해주는 유연성 외에, 임의의 소정의 기억 장치에 의해 에뮬레이션되는 디바이스 타입들은 서로 상이할 수도 있다. 예를 들어, 기억 장치는 디스크 드라이브, 테이프 드라이브, 테이프 체인저, 판독-기록 콤팩트 디스크, 또는 다른 기억 장치들 모두를, 또는 그 중 하나 이상을 에뮬레이션할 수도 있다. 따라서, 전체 네트워크들의 저장 능력은 보다 적은 수의 기억 장치들로 보다 쉽게 통합될 수 있어서, 네트워크 관리자들이 보다 양호하게 스토리지 요구 사항들을 관리할 수 있다. 또한, 필요한 기억 장치들을 구매하기 보다는 에뮬레이션할 수 있으므로, 스토리지 비용이 상당히 감소될 수도 있다.
지금까지 도 2를 참조해서 네트워크 환경(200) 및 물리적 기억 장치(220)의 일반적이 구조가 기술되었다. 이제부터 물리적 기억 장치가 하나 이상의 기억 장치들을 에뮬레이션하는 방법(300)이 도 2에 도시된 소자들을 자주 참조하면서 도 3을 참조해서 기술될 것이다. 방법(300)은 에뮬레이션 소프트웨어 컴포넌트(240)에 의해 에뮬레이션되는 각각의 기억 장치에 대해 반복될 수도 있다. 또한, 임의의 소정의 에뮬레이션된 기억 장치의 경우, 후술된 바와 같이 물리적 기억 장치가 속성들 및 파일을 사용해서 에뮬레이션되는 기억 장치를 에뮬레이션하는 단계(단계(310))는 해당 에뮬레이션되는 기억 장치를 위해 예정된 각각의 수신 네트워크 커뮤니케이션에 대해 반복될 수도 있다.
도 3을 참조하면, 방법(300)의 몇몇 단계들이 "프론트엔드 컴포넌트"라는 표제로 도 3의 좌측 열에 리스트되어 있는 바와 같이 프론트엔드 컴포넌트(222)에 의해 실행된다. 방법(300)의 다른 단계들이 "에뮬레이션 소프트웨어 컴포넌트"라는 표제로 도 3의 우측 열에 도시된 바와 같이 에뮬레이션 소프트웨어 컴포넌트(240)에 의해 실행된다.
에뮬레이션 소프트웨어 컴포넌트는 물리적 기억 장치에 의해 에뮬레이션되는 기억 장치의 속성들을 특정하는 구성 함수 콜을 수신한다(단계(301)). 도 2를 참조할 때, 이는 구성 인터페이스(260)를 사용해서 실행될 수도 있다. 함수 콜은 예를 들어, 새로운 기억 장치를 에뮬레이션하기 위한 요청이거나, 또는 현존 에뮬레이션되는 기억 장치에 대한 새로운 속성들을 설정하기 위한 요청일 수도 있다. 다음은 특정 속성들을 갖는 새로운 에뮬레이션 디바이스를 생성하는데 사용될 수도 있는 API(Application Program Interface)이다.
Figure 112004038550896-pat00001
CreateDevice 메쏘드는 3개의 입력 파라미터들을 갖는다. CreateNew는 불리언 값(Boolean value)이며, 새로운 에뮬레이션된 기억 장치를 생성하기 위해 참으로 설정되야만 한다. Properties는 SoftScsiDeviceProperties의 데이터 구조이며, 에뮬레이션된 기억 장치의 속성들을 정의한다. DeviceName은 생성중인 에뮬레이션된 기억 장치의 디바이스 명칭을 정의하는 스트링이다. API를 배치할 때, 에뮬레이션 소프트웨어 컴포넌트(240)는 새로운 에뮬레이션된 기억 장치를 생성할 뿐만 아니라, 물리적 기억 장치(220)가 특정 속성들을 갖는 새로운 디바이스를 에뮬레이션하기에 충분한 리소스들을 갖는다는 것을 검증한다.
다음은 SoftScsiDeviceProperties 클래스에 대한 정의이다.
Figure 112004038550896-pat00002
처음 4개의 필드들; 즉, VenderID 필드, ProductID 필드, ProductRevisionLevel 필드, DeviceType 필드는 SCSI 디바이스들을 위한 표준 SCSI 속성들이며, 각각 에뮬레이션된 기억 장치의 SCSI 벤더 ID, SCSI 제품 ID, SCSI 제품 개정 ID, SCSI 디바이스 타입을 나타낸다. SCSI 기술 분야에 숙련된 자들은 상기 필드들과 친숙할 것이다.
다음 3개의 필드들; 즉, BlockSize 필드, NumberOfBlocks 필드, 및 TotalNumberOfBlocks 필드는 에뮬레이션되는 디바이스의 일반 메모리 구성을 정의 한다. BlockSize 필드는 에뮬레이션되는 디바이스의 블록 크기를 정의한다. TotalNumberOfBlocks 필드는 에뮬레이션되는 디바이스가 사용하기 위해 구성될 수도 있는 블록들의 총 수를 정의한다. NumberOfBlocks 필드는 에뮬레이션되는 디바이스가 사용하기 위해 현재 구성되는 블록들의 수를 정의한다. NumberOfBlocks 필드는 TotalNumberOfBlocks 필드 보다 적다.
마지막 두개의 필드들; 즉, ReadCacheEnabled 및 WriteCacheEnabled 필드는 에뮬레이션되는 디바이스가 각각 판독 캐시 또는 기록 캐시 능력을 가지는지 여부를 나타내는 불리언 값들이다.
이하의 API는 이전에 생성된 에뮬레이션된 기억 장치의 속성들을 설정하거나 변경하는데 사용된다.
Figure 112004038550896-pat00003
SetDeviceProperties 메쏘드는 속성들을 정의하기 위해 SoftScsiDeviceProperties 데이터 구조를 사용한다. 그러나, 이러한 경우에, 메쏘드는 이전에 생성된 에뮬레이션된 기억 장치의 디바이스 명칭을 입력한다.
구성 인터페이스(260)를 통해 배치될 수도 있는 다른 유용한 API들이 있다. 이하의 API는 이전에 생성된 에뮬레이션된 디바이스의 속성들을 획득하는데 사용될 수도 있다.
Figure 112004038550896-pat00004
속성 질의중인 에뮬레이션된 디바이스는 디바이스 명칭에 의해 정의된다. 그 대신에, 디바이스 명칭과 관련된 SoftScsiDeviceProperties 구조에서 속성들이 제공된다. 또한, 불리언 값 DeviceValid가 디바이스 명칭이 유효한지 여부를 나타내기 위해 리턴된다. 선택적으로, 디바이스 유일 명칭이 또한 리턴된다.
이하의 API는 특정 에뮬레이션된 디바이스와 관련된 용도 데이터(예를 들어, 기록 및 판독 바이트들의 수)를 획득하기 위해 구성 인터페이스를 통해 배치될 수도 있다.
Figure 112004038550896-pat00005
이하의 API는 기억 장치를 적합하게 에뮬레이션하기 위해 얼마나 많은 기억 공간이 필요한지를 결정하기 위해 구성 인터페이스를 통해 배치될 수도 있다.
Figure 112004038550896-pat00006
LogicalUnitSize 메쏘드는 기억 장치를 적합하게 에뮬레이션하기 위해 필요한 물리적 블록 크기 및 총 바이트 크기를 디바이스 속성들 및 디바이스 명칭으로부터 결정한다.
도 3을 참조하면, 함수 콜 수신에 응답해서, 에뮬레이션 소프트웨어 컴포넌트는 에뮬레이션되는 디바이스와 관련된 물리적 기억 장치 내에서 기억 공간을 설정한다(단계(302)). 예를 들어, 기억 공간은 파일 형태로 에뮬레이션되는 디바이스와 떨어져서 설정될 수도 있다. 파일 크기는 블록 크기 * 블록들의 총 수에 소정의 오버헤드 스토리지를 더한 값과 동일하게 된다. 오버헤드 스토리지는 파일 메모리 로케이션들을 에뮬레이션되는 디바이스의 특정 블록들에 상관시키는 추적 데이터를 포함하며, 어떤 블록들이 사용되거나 사용되지 않을지를 추적한다. 기억 공간은 파일 사용과 별개로 설정될 수도 있는데, 이러한 경우에, 추적 데이터는 어떤 물리 기억 로케이션이 에뮬레이션된 기억 장치의 어떤 블록들에 대응하는지를 추적한다.
파일들이 편리하게 백업, 크기 조정 및 유지될 수 있기 때문에 기억 장치를 에뮬레이션하는데 파일을 사용하는 것이 유익하다. 한 실시예에서, 에뮬레이션 소프트웨어 컴포넌트(240)만이 에뮬레이션된 기억 장치들에 대해 파일들을 사용하고, 다른 에뮬레이션 소프트웨어 컴포넌트는 파일들을 사용하지 않고 기억 장치들을 에뮬레이션하는 것에 전용된다.
속성들이 에뮬레이션된 디바이스가 판독 캐시 또는 기록 캐시 능력을 갖는다는 것을 나타내면, 에뮬레이션 소프트웨어 컴포넌트(240)는 인에이블된 파일 시스템이 파일을 위해 캐시를 판독 또는 기록하도록 명령할 수도 있다. 대안으로 또는 추가로, 에뮬레이션 소프트웨어 컴포넌트(240)는 자신의 캐시 메모리를 유지할 수도 있다.
방법은 또한 속성들 및 파일을 사용해서 에뮬레이션된 기억 장치를 에뮬레이션하는 물리적 기억 장치를 위한 기능적, 결과-지향 단계를 포함한다(단계(310)). 본 단계는 이러한 결과를 달성하기 위한 임의의 대응 단계들을 포함할 수도 있다. 그러나, 도시된 실시예에서, 단계(310)는 대응 단계들(311 내지 315)을 포함한다.
구체적으로, 프론트엔드 컴포넌트는 네트워크 커뮤니케이션을 수신한다(단계(311)). 상술된 바와 같이, 네트워크 커뮤니케이션은 네트워크를 통한 전송을 허용하고 또한 SCSI 커맨드들과 같은 데이터 포함을 허용하는 임의의 프로토콜을 사용해서 공식화될 수도 있다. 이러한 프로토콜들은 예를 들어, iSCSI, 광섬유 채널, USB, IEEE 1394 등을 포함할 수도 있다. 프론트엔드 컴포넌트는 이후에 네트워크 커뮤니케이션으로부터 SCSI 커맨드를 추출한다(단계(312)).
에뮬레이션 소프트웨어 컴포넌트는 추출된 SCSI 커맨드를 수신한다(단계(313)). 예를 들어, 프론트엔드 컴포넌트(222)는 큐들(230)을 통해 적어도 비간접적으로 에뮬레이션 소프트웨어 컴포넌트(240)에 함수 콜을 배치할 수도 있다. 함수 콜이 큐들(230)을 입력하면, 큐는 요청 계류 메시지를 리턴할 수도 있다. 함수 콜이 에뮬레이션 소프트웨어 컴포넌트(240)에 의해 완료되면, 에뮬레이션 소프트웨어 컴포넌트(240)는 "요청 완료" 메시지를 프론트엔드 컴포넌트(222)에 리턴할 수도 있다.
특히, 이하의 API는 에뮬레이션 소프트웨어 컴포넌트에 SCSI 요청을 제시하는데 사용될 수도 있다.
Figure 112004038550896-pat00007
SubmitRequest 메쏘드는 에뮬레이션 소프트웨어 컴포넌트에 임의의 SCSI 요청을 제시하는데 사용된다. SCSI 요청이 완료될 때, SoftScsi 어댑터(후술됨)가 오픈될 때 제공된 CompleteRequest 콜백이 SoftScsi 요청에 의해 호출될 것이다. 요청은 클래스 PSOFTSCSI_REQEUST의 데이터 구조에 의해 정의된다. 다음은 데이터 구조 클래스를 정의한다.
Figure 112004038550896-pat00008
Figure 112004038550896-pat00009
Figure 112004038550896-pat00010
SOFTSCSI_REQEUST 데이터 구조는 에뮬레이션 소프트웨어 컴포넌트(240)에 SCSI 요청을 제시하는 표준 방법을 제공한다. iScsiTagQueue 값은 SCSI 요청들을 생성하는데 필요한 작업 부하를 최소화하도록 iSCSI 명세서에 정의된 iSCSI 플래그들의 다이렉트 매핑이다. DataBufferMdl 필드는 SCSI 요청시 데이터 버퍼를 기술하는 시스템 MDL이다. Irp는 요청 오너에 의해 제공된 헬퍼 IRP이다.
또한, 이하의 API는 예를 들어, 초기화 중에 에뮬레이션 소프트웨어 컴포넌트(240)를 활성화하기 위해 프론트엔드 컴포넌트(222)에 의해 호출될 수도 있다.
Figure 112004038550896-pat00011
상기 함수는 에뮬레이션 소프트웨어 컴포넌트에 대한 핸들을 오픈하기 위한 것이며, 에뮬레이션 소프트웨어 컴포넌트에게 초기화 기회를 제공한다. 상기 함수는 에뮬레이션 소프트웨어 컴포넌트의 각각의 인스턴스를 위해 호출된다. SoftScsiDeviceObject는 에뮬레이션 소프트웨어 컴포넌트의 디바이스 객체이다. CompleteRequest는 SubmitRequest를 통해 제시된 SCSI 요청을 완료하기 위한 콜백이다. SoftScsiAdapterHandle은 에뮬레이션 소프트웨어 컴포넌트에 대한 핸들이다.
이하의 API는 에뮬레이션 소프트웨어 컴포넌트를 클로즈하고 관련 리소스들을 클린업하기 위해 프론트엔드 컴포넌트에 의해 호출될 수도 있다.
Figure 112004038550896-pat00012
에뮬레이션 소프트웨어 컴포넌트는 예를 들어, 컴퓨팅 시스템들(201) 중 임의의 컴퓨팅 시스템과의 네트워크 접속이 손실될 때 클로즈될 수도 있다.
이하의 API는 SCSI 커맨드들이 해당 디바이스에 발행될 수 있도록 이미 생성된 에뮬레이션된 디바이스를 오픈하기 위해 프론트엔드 컴포넌트에 의해 호출될 수도 있다.
Figure 112004038550896-pat00013
SoftScsiAdapterHandle은 에뮬레이션 소프트웨어 컴포넌트에 대한 핸들이다. DeviceName은 오픈할 디바이스의 명칭이다. NumberOutstandingRequest는 임의의 시간에 디바이스에게 제시될 수도 있는 요청들의 수를 나타낸다. 입력 및 출력 파라미터로서, NumberOutstandingRequest는 콜러가 에뮬레이션 소프트웨어 컴포넌트와 두드러진 요청들의 수를 협상할 수 있게 해준다. 리턴된 값은 항상 콜러의 값 보다 적거나 동일하다. TargetName은 디바이스의 비휘발성 명칭이다. BufferAlignmentRequirement는 요청들에 의해 제시된 데이터 버퍼들을 위한 데이터 버퍼 정렬 요구를 나타낸다. StackSize는 요청때마다의 IRP의 여분의 IRP 스택 로케이션이다.
이하의 API는 SoftScsiDeviceHandle이 에뮬레이션 기억 장치용 핸들인 SCSI 커맨드들을 더 이상 수용할 수 없도록 디바이스를 클로즈한다.
Figure 112004038550896-pat00014
이하의 API는 모든 계류 요청들을 플러시(flush)한다.
Figure 112004038550896-pat00015
SCSI 커맨드를 수신할 때, 에뮬레이션 소프트웨어 컴포넌트는 SCSI 커맨드가 에뮬레이션된 기억 장치용으로 예정되어 있다고 결정한다(단계(314)). 이는 SCSI 커맨드로부터 디바이스 명칭을 판독함으로써 달성될 수도 있다.
그 후, 에뮬레이션 소프트웨어 컴포넌트는 에뮬레이션된 기억 장치에서 SCSI 커맨드의 실행을 에뮬레이션하는 방식으로 SCSI 커맨드를 실행하기 위해 에뮬레이션된 기억 장치에 대응하는 속성들 및 파일 기억 공간을 사용한다(단계(315)). 예를 들어, 한번에 한 블록씩 세그먼트들이 판독되거나 에뮬레이션된 디바이스에 기록되는 기억 장치를 에뮬레이션하기 위해 파일을 사용할 때, 추적 데이터는 파일의 특정 메모리 부분으로 블록 식별자를 번역하는데 사용될 수도 있다. 에뮬레이션 소프트웨어 컴포넌트는 대응 파일 메모리 부분으로부터 판독되거나 상기 부분에 기록될 수도 있다. 요청이 파일의 속성들에 대해 질의하는 것이면, 상기 속성들은 파일의 오버헤드 부분으로부터 판독될 수도 있다.
따라서, 물리적 기억 장치가 상이한 디바이스 타입들의 상이한 기억 장치들을 에뮬레이션하는데 사용될 수도 있는 메카니즘이 기술되었다. 이는 IT 관리자들이 요구된 스토리지 타입과 무관하게 스토리지를 집중하게 함으로써 스토리지를 구성하는데 있어서 유연하게 해주며 비용이 감소된다.
본 발명은 범위 또는 본질적 특성들 내에서 다른 특정 형태들로 구현될 수도 있다. 상술된 실시예들은 설명을 목적으로 한 것으로 제한의 의미가 아니다. 본 발명의 범위는 상술된 설명이 아닌 첨부된 청구항들에 의해 제시된다. 청구항들과 동등한 의미 및 범위 내에서의 모든 변경들은 본 발명의 범위 내에 포함된다.
본 발명은 저장 능력을 갖는 물리적 기억 장치가 하나 이상의 SCSI 기억 장 치들을 에뮬레이션할 수 있게 해주는 메카니즘들에 관한 것으로, 본 발명에 의해 종래 기술의 상술된 문제점들이 극복된다. 물리적 기억 장치는 에뮬레이션하는 기억 장치와 동일한 타입일 필요는 없다. 이는 기억 장치가 보다 유연하게 구성되게 한다.
한 디바이스 타입이 다른 디바이스를 에뮬레이션할 수 있게 해주는 유연성 외에, 임의의 소정의 기억 장치에 의해 에뮬레이션되는 디바이스 타입들은 서로 상이할 수도 있다. 예를 들어, 기억 장치는 디스크 드라이브, 테이프 드라이브, 테이프 체인저, 판독-기록 콤팩트 디스크, 또는 다른 기억 장치들 모두를, 또는 그 중 하나 이상을 에뮬레이션할 수도 있다. 따라서, 전체 네트워크들의 저장 능력은 보다 적은 수의 기억 장치들로 보다 쉽게 통합될 수 있어서, 네트워크 관리자들이 보다 양호하게 스토리지 요구 사항들을 관리할 수 있다. 또한, 필요한 기억 장치들을 구매하기 보다는 에뮬레이션할 수 있으므로, 스토리지 비용이 상당히 감소될 수 있다.

Claims (61)

  1. 컴퓨팅 시스템으로부터 통신을 수신할 수 있고 상기 통신으로부터 SCSI 커맨드들(small computer system interface commands)을 추출할 수 있는 프론트엔드(front end) 및 기억 기능(storage capability)을 갖는 물리적 기억 장치에서, 상기 물리적 기억 장치가 상기 SCSI 커맨드들에 응답할 수 있는 둘 이상의 상이한 타입의 기억 장치들을 에뮬레이션하는(emulate) 방법으로서,
    에뮬레이션 소프트웨어 컴포넌트가 상기 물리적 기억 장치에 의해 에뮬레이션되는 기억 장치의 속성들을 특정하는(specify) 함수 콜(function call)을 수신하는 단계 - 상기 함수 콜은 API(application programming interface)에 의해 특정되는 포맷을 가지고, 상기 함수 콜의 파라미터들은 불리언 값(boolean value), 크리에이트(Create), 속성 클래스(property class), 프로퍼티(Properties) 및 장치명 스트링(device name string)을 포함하며, 상기 프로퍼티는 SCSI 벤더 ID(SCSI vendor ID), 장치 타입(device type), 블록 크기(block size) 및 블록의 총 수를 포함하고, 상기 SCSI 벤더 ID와 상기 장치 타입은 표준 SCSI 속성들이고, 상기 블록 크기와 상기 블록의 총 수는 에뮬레이션되는 장치의 메모리 구성을 정의함 -;
    상기 함수 콜을 수신받는 것에 응답해서, 상기 에뮬레이션 소프트웨어 컴포넌트가 상기 물리적 기억 장치 내에서 파일을 설정하는 단계 - 상기 파일은 상기 에뮬레이션되는 기억 장치의 적어도 크기와 연관된 파일 기억 공간을 가지고, 상기 파일은 상기 블록 크기 및 상기 블록의 총 수에 의해 적어도 일부 주어지는 상기 에뮬레이션되는 기억 장치의 총 크기를 상기 물리적 기억 장치 내에 보전하는 방식으로 상기 에뮬레이션되는 기억 장치와 연관됨 -;
    상기 프론트엔드가 네트워크 통신을 수신하는 단계;
    상기 프론트엔드가 상기 네트워크 통신으로부터 SCSI 커맨드를 추출하는 단계;
    상기 프론트엔드가 상기 SCSI 커맨드를 상기 에뮬레이션되는 기억 장치에 전용인 큐(queue)로 제공하는 단계;
    상기 에뮬레이션 소프트웨어 컴포넌트가 상기 큐로부터 상기 SCSI 커맨드를 가져오는 단계; 및
    상기 에뮬레이션 소프트웨어 컴포넌트가 상기 에뮬레이션되는 기억 장치에서 상기 SCSI 커맨드의 실행을 에뮬레이션하는 방식으로 상기 SCSI 커맨드를 실행하는 단계
    를 포함하는 기억장치 에뮬레이션 방법.
  2. 제1항에 있어서,
    상기 네트워크 통신은 iSCSI 통신(internet small computer system interface communication)인 기억장치 에뮬레이션 방법.
  3. 제1항에 있어서,
    상기 네트워크 통신은 광섬유 채널 통신(fiber channel communication)인 기억장치 에뮬레이션 방법.
  4. 제1항에 있어서,
    상기 네트워크 통신은 USB 통신(Universal Serial Bus communication)인 기억장치 에뮬레이션 방법.
  5. 제1항에 있어서,
    상기 에뮬레이션되는 기억 장치의 속성들은 상기 에뮬레이션되는 기억 장치의 제품 개정 레벨(product revision level)을 포함하는 기억장치 에뮬레이션 방법.
  6. 제5항에 있어서,
    상기 에뮬레이션되는 기억 장치의 속성들은 상기 에뮬레이션되는 기억 장치의 블록들의 총 수를 포함하고,
    상기 에뮬레이션 소프트웨어 컴포넌트가 파일을 설정하는 단계는 상기 에뮬레이션 소프트웨어 컴포넌트가 상기 블록들의 총 수 각각에 대해 상기 파일 내의 기억 공간을 블록과 연관시키는 단계를 포함하는 기억장치 에뮬레이션 방법.
  7. 제6항에 있어서,
    상기 에뮬레이션되는 기억 장치의 속성들은 상기 에뮬레이션되는 기억 장치가 사용하도록 구성된 다수의 블록들을 포함하고,
    상기 에뮬레이션 소프트웨어 컴포넌트가 파일을 설정하는 단계는 상기 에뮬레이션 소프트웨어 컴포넌트가 상기 파일의 블록들 중 어느 블록 사용될 수 있는지를 추적하는(track) 단계를 포함하는 기억장치 에뮬레이션 방법.
  8. 제1항에 있어서,
    상기 에뮬레이션되는 기억 장치의 속성들은 판독 캐시가 사용가능하게 되는지(enabled)를 표시하는 불리언 값을 포함하는 기억장치 에뮬레이션 방법.
  9. 제1항에 있어서,
    상기 에뮬레이션되는 기억 장치의 속성들은 장치명을 포함하고,
    상기 기억장치 에뮬레이션 방법은 상기 SCSI 커맨드가 상기 에뮬레이션되는 기억 장치를 위해 예정되어 있다고 결정하는 단계를 더 포함하는 기억장치 에뮬레이션 방법.
  10. 제1항에 있어서,
    상기 물리적 기억 장치는 하드 디스크인 기억장치 에뮬레이션 방법.
  11. 제1항에 있어서,
    상기 에뮬레이션되는 기억 장치의 속성들은 상기 에뮬레이션되는 기억 장치가 캐시 사용가능인지 여부를 포함하는 기억장치 에뮬레이션 방법.
  12. 제1항에 있어서,
    상기 함수 콜은 에뮬레이션되는 특정 장치를 특정하는 CreateDevice인 기억장치 에뮬레이션 방법.
  13. 제1항에 있어서,
    SetDeviceProperties 함수 콜을 수신하여 이전에 생성된 에뮬레이션되는 기억 장치의 속성들을 변경하는 단계를 더 포함하는 기억장치 에뮬레이션 방법.
  14. 하나 이상의 컴퓨터 프로세서에 의해 실행될 때, 제1항에 기재된 방법을 수행하는 컴퓨터 실행가능 명령어들을 저장한 하나 이상의 컴퓨터 판독가능 기록 매체.
  15. 제14항에 있어서,
    하나 이상의 컴퓨터 프로세서에 의해 실행될 때, CreateDevice, SetDeviceProperties, 및 GetDeviceProperties를 포함하는 API(application programming interface)에 의해 정의되는 함수 콜을 수신하는 단계를 프론트엔드(front end)로 하여금 수행하게 하는 컴퓨터 실행가능 명령어들을 더 저장하고,
    상기 CreateDevice는 불리언 파라미터(boolean parameter), 클래스 파라미터(class parameter) 및 스트링 파라미터(string parameter)를 포함하고, 에뮬레이션되는 특정 장치를 특정하고,
    상기 SetDeviceProperties는 클래스 파라미터 및 스트링 파라미터를 포함하고, 이전에 생성된 에뮬레이션되는 기억 장치의 속성들을 변경시키는데 이용되며,
    상기 GetDeviceProperties는 2개의 스트링 파라미터, 클래스 파라미터 및 불리언 파라미터를 포함하고, 이전에 생성된 에뮬레이션되는 기억 장치의 속성들을 얻는데 이용되는 하나 이상의 컴퓨터 판독가능 기록 매체.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
  53. 삭제
  54. 삭제
  55. 삭제
  56. 삭제
  57. 삭제
  58. 삭제
  59. 삭제
  60. 삭제
  61. 삭제
KR1020040067749A 2003-08-29 2004-08-27 물리적 기억 장치의 소프트웨어-이용 기억 장치 에뮬레이션 KR100942894B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/652,450 US7496492B2 (en) 2003-08-29 2003-08-29 Software-aided storage device emulation in a physical storage device
US10/652,450 2003-08-29

Publications (2)

Publication Number Publication Date
KR20050021874A KR20050021874A (ko) 2005-03-07
KR100942894B1 true KR100942894B1 (ko) 2010-02-17

Family

ID=34136642

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040067749A KR100942894B1 (ko) 2003-08-29 2004-08-27 물리적 기억 장치의 소프트웨어-이용 기억 장치 에뮬레이션

Country Status (5)

Country Link
US (1) US7496492B2 (ko)
EP (1) EP1513057B1 (ko)
JP (1) JP2005078641A (ko)
KR (1) KR100942894B1 (ko)
CN (1) CN100412817C (ko)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2410106B (en) 2002-09-09 2006-09-13 Commvault Systems Inc Dynamic storage device pooling in a computer system
CA2520498C (en) 2003-04-03 2012-09-25 Commvault Systems, Inc. System and method for dynamically performing storage operations in a computer network
US7546584B2 (en) 2003-06-16 2009-06-09 American Megatrends, Inc. Method and system for remote software testing
US7543277B1 (en) 2003-06-27 2009-06-02 American Megatrends, Inc. Method and system for remote software debugging
US20050132022A1 (en) * 2003-12-12 2005-06-16 International Business Machines Corporation Computer system with LAN-based I/O
US7827258B1 (en) * 2004-03-01 2010-11-02 American Megatrends, Inc. Method, system, and apparatus for communicating with a computer management device
US20060069848A1 (en) * 2004-09-30 2006-03-30 Nalawadi Rajeev K Flash emulation using hard disk
US20060085565A1 (en) * 2004-10-18 2006-04-20 First International Computer, Inc. Method of configuring device property of storage device for a windows operating system
US7975061B1 (en) 2004-11-05 2011-07-05 Commvault Systems, Inc. System and method for performing multistream storage operations
US7536291B1 (en) * 2004-11-08 2009-05-19 Commvault Systems, Inc. System and method to support simulated storage operations
US7376546B2 (en) * 2004-11-08 2008-05-20 Lsi Corporation User configurable ultra320 SCSI target device simulator and error injector
US7496493B1 (en) * 2004-11-09 2009-02-24 Western Digital Technologies, Inc. External memory device to provide disk device and optical functionality
US8010843B2 (en) 2005-12-14 2011-08-30 American Megatrends, Inc. System and method for debugging a target computer using SMBus
US8069257B1 (en) * 2006-05-15 2011-11-29 American Megatrends, Inc. Universal serial bus system interface for intelligent platform management interface communications
US20080059144A1 (en) * 2006-09-01 2008-03-06 Inphase Technologies Emulation of dissimilar removable medium storage device types assisted by information embedded in the logical format
KR100864815B1 (ko) * 2006-11-09 2008-10-23 주식회사 씨모텍 이동식 디스크로 구현된 컴퓨터 확장 장치 및 이를구현하는 방법
KR100864814B1 (ko) 2007-02-09 2008-10-23 주식회사 씨모텍 광 저장 장치 또는/및 이동식 디스크로 구현된 컴퓨터 확장장치 및 그 구현 방법
JP4337891B2 (ja) * 2007-03-01 2009-09-30 セイコーエプソン株式会社 記憶端末および情報処理システム
JP4345826B2 (ja) * 2007-03-01 2009-10-14 セイコーエプソン株式会社 記憶端末
US8074020B2 (en) * 2008-02-13 2011-12-06 International Business Machines Corporation On-line volume coalesce operation to enable on-line storage subsystem volume consolidation
US20090216944A1 (en) * 2008-02-22 2009-08-27 International Business Machines Corporation Efficient validation of writes for protection against dropped writes
US7496539B1 (en) * 2008-05-15 2009-02-24 International Business Machines Corporation Systems, methods and computer products for providing tape library dynamic price performance enhancement feature
WO2009157896A1 (en) 2008-06-25 2009-12-30 Thomson Licensing Distributed control of devices using discrete device interfaces over single shared input/output
US20120150527A1 (en) * 2009-08-21 2012-06-14 Tadhg Creedon Storage peripheral device emulation
JP2012018431A (ja) * 2010-07-06 2012-01-26 Buffalo Inc 外部記憶装置
US10379988B2 (en) 2012-12-21 2019-08-13 Commvault Systems, Inc. Systems and methods for performance monitoring
US9304783B2 (en) * 2013-05-09 2016-04-05 American Megatrends, Inc. Digital signage management and content delivery system and method thereof
US10956299B2 (en) 2015-02-27 2021-03-23 Commvault Systems, Inc. Diagnosing errors in data storage and archiving in a cloud or networking environment
US9690708B2 (en) * 2015-05-19 2017-06-27 Qualcomm Incorporated Real-time cache behavior forecast using hypothetical cache
US11032350B2 (en) 2017-03-15 2021-06-08 Commvault Systems, Inc. Remote commands framework to control clients
US10936229B1 (en) * 2017-07-31 2021-03-02 EMC IP Holding Company, LLC Simulating large drive count and drive size system and method
CN109933479B (zh) * 2017-12-19 2021-07-09 华为技术有限公司 故障模拟与仿真方法以及相关设备
US11216211B1 (en) * 2018-09-25 2022-01-04 Amazon Technologies, Inc. Emulated block storage for devices
US11093409B1 (en) * 2019-09-26 2021-08-17 Amazon Technologies, Inc. Using emulation of storage characteristics to perform an access request translated between different protocols
US11593223B1 (en) 2021-09-02 2023-02-28 Commvault Systems, Inc. Using resource pool administrative entities in a data storage management system to provide shared infrastructure to tenants

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5758050A (en) 1996-03-12 1998-05-26 International Business Machines Corporation Reconfigurable data storage system
US20030142552A1 (en) * 2002-01-28 2003-07-31 Columbia Data Products, Inc. Emulating volume having selected storage capacity

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BR9204660A (pt) * 1991-12-20 1993-06-22 Ibm Sistema de rede de computadores que engloba uma interface para sistemas de computadores pequenos(scsi)para dispositivos de scsi nao locais
US5794013A (en) * 1996-10-28 1998-08-11 International Business Machines Corporation System and method for testing computer components in development environments
JPH117404A (ja) * 1997-06-17 1999-01-12 Toshiba Corp ネットワーク接続型scsi装置ならびに同装置を用いたファイルシステム
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
JP4324993B2 (ja) * 1998-02-17 2009-09-02 ソニー株式会社 データ転送方法および装置
US6094605A (en) * 1998-07-06 2000-07-25 Storage Technology Corporation Virtual automated cartridge system
JP2000242439A (ja) * 1999-02-19 2000-09-08 Hitachi Ltd ディスクアレイサブシステム
US6816957B1 (en) * 1999-10-26 2004-11-09 Storage Technology Corporation Management of virtual tape volumes using data page atomic units
US6735601B1 (en) * 2000-12-29 2004-05-11 Vmware, Inc. System and method for remote file access by computer
US6961941B1 (en) * 2001-06-08 2005-11-01 Vmware, Inc. Computer configuration for resource management in systems including a virtual machine
US20020188592A1 (en) * 2001-06-11 2002-12-12 Storage Technology Corporation Outboard data storage management system and method
US6785744B2 (en) * 2001-08-08 2004-08-31 International Business Machines Corporation Mapping SCSI medium changer commands to mainframe-compatible perform library function commands
US6874060B2 (en) * 2001-12-07 2005-03-29 Dell Products L.P. Distributed computer system including a virtual disk subsystem and method for providing a virtual local drive
US20030142551A1 (en) * 2002-01-28 2003-07-31 Columbia Data Products, Inc. Emulating hardware having selected storage capacity
US7359965B2 (en) * 2002-02-27 2008-04-15 Ricoh Co. Ltd. Method and apparatus for providing multiple vendor support to remotely monitored devices
US7783783B2 (en) * 2002-03-22 2010-08-24 International Business Machines Corporation SCSI device translator for network
CN2560040Y (zh) * 2002-08-01 2003-07-09 安徽省菲特科技股份有限公司 Scsi从控机
US7069354B2 (en) * 2002-10-01 2006-06-27 Hewlett-Packard Development Company, L.P. Method and apparatus for identifying multiple paths to a SCSI device using a calculated unique identifier
US20040078521A1 (en) * 2002-10-17 2004-04-22 International Business Machines Corporation Method, apparatus and computer program product for emulating an iSCSI device on a logical volume manager
US7505890B2 (en) * 2003-01-15 2009-03-17 Cox Communications, Inc. Hard disk drive emulator

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5758050A (en) 1996-03-12 1998-05-26 International Business Machines Corporation Reconfigurable data storage system
US20030142552A1 (en) * 2002-01-28 2003-07-31 Columbia Data Products, Inc. Emulating volume having selected storage capacity

Also Published As

Publication number Publication date
US20050049848A1 (en) 2005-03-03
EP1513057A3 (en) 2008-07-02
US7496492B2 (en) 2009-02-24
CN1591358A (zh) 2005-03-09
EP1513057A2 (en) 2005-03-09
KR20050021874A (ko) 2005-03-07
EP1513057B1 (en) 2018-03-14
JP2005078641A (ja) 2005-03-24
CN100412817C (zh) 2008-08-20

Similar Documents

Publication Publication Date Title
KR100942894B1 (ko) 물리적 기억 장치의 소프트웨어-이용 기억 장치 에뮬레이션
US8868628B2 (en) Sharing computer data among computers
US8073674B2 (en) SCSI device emulation in user space facilitating storage virtualization
US9606747B2 (en) Importing pre-existing data of a prior storage solution into a storage pool for use with a new storage solution
EP1586988A2 (en) Information processing apparatus, information processing method, program and recording medium used therewith
KR20060047644A (ko) 총칭 usb 드라이버
US7761630B2 (en) Application programming interface for fusion message passing technology
JP2003241903A (ja) 記憶制御装置、ストレージシステム、及びその制御方法
US20030212700A1 (en) Virtual controller with SCSI extended copy command
US6711520B2 (en) Remote execution of diagnostic firmware in a block data storage device
CA2450334A1 (en) Accessing a protected area of a storage device
US20050049849A1 (en) Cross-platform virtual tape device emulation
JP2010134911A (ja) ブレード・センタにおいてブレード・サーバを管理するための方法、装置、およびプログラム
JP2005302026A (ja) ネットワーク接続周辺装置にアクセスするためのコンピュータ可読媒体、方法およびコンピュータシステム
US20140180665A1 (en) Transparent Intellectual Network Storage Device
Fujita et al. tgt: Framework for storage target drivers
US7827194B2 (en) Access to shared disk device on storage area network
US20070174034A1 (en) Transparent intellectual network storage device
US6401151B1 (en) Method for configuring bus architecture through software control
US20100017189A1 (en) Transparent Intellectual Network Storage Device
US7721007B2 (en) Methods of transmitting non-SCSI commands involving loading opcode in command descriptor block (CDB) bytes and non-SCSI commands into remaining CDB bytes
US20040049560A1 (en) Method and apparatus for configuring a computer system to operate with perhiperal devices
JP4345559B2 (ja) 情報処理装置および情報処理方法、並びにプログラムおよびプログラム記録媒体
CN112068927B (zh) 一种用于云桌面的刻录机重定向方法及系统
Gilbert The Linux 2.4 SCSI subsystem HOWTO

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130121

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140123

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150121

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160119

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180118

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190116

Year of fee payment: 10