KR20140005280A - 가상 디스크 저장 기술 - Google Patents
가상 디스크 저장 기술 Download PDFInfo
- Publication number
- KR20140005280A KR20140005280A KR1020137024078A KR20137024078A KR20140005280A KR 20140005280 A KR20140005280 A KR 20140005280A KR 1020137024078 A KR1020137024078 A KR 1020137024078A KR 20137024078 A KR20137024078 A KR 20137024078A KR 20140005280 A KR20140005280 A KR 20140005280A
- Authority
- KR
- South Korea
- Prior art keywords
- virtual disk
- file
- extent
- virtual
- extents
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/188—Virtual file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0626—Reducing size or complexity of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 명세서는 가상 디스크 페이로드 데이터를 저장하는 기술을 개시한다. 예시적인 구성에서, 각각의 가상 디스크 익스텐트(virtual disk extent)는 가상 디스크 익스텐트가 가상 디스크 파일에 의해 기술되는지 여부를 나타내는 상태 정보와 연관될 수 있다. 소정의 컨디션 하에서 가상 디스크 익스텐트를 기술하는 데에 사용되는 공간이 환원될 수 있으며, 상태 정보는 가상 디스크 익스텐트와 관련된 판독 및/또는 기록 동작이 조절되는 방법을 판정하도록 사용될 수 있다. 전술된 내용에 추가로, 다른 기술들이 본 명세서의 특허청구범위, 도면 및 상세한 설명에서 개시되었다.
Description
저장 가상화 기술(storage virtualization technology)은 물리적 저장소로부터 논리적 저장소의 분리를 가능케 한다. 저장 가상화를 이용하는 하나의 예시적 경우는 가상 장치에서이다. 가상화 소프트웨어 층(전형적으로 하이퍼바이저(hypervisor) 또는 가상 장치 모니터로 지칭됨)이 컴퓨터 시스템 상에 설치되어 가상 장치가 물리적 하드웨어와 상호작용하는 방식을 제어한다. 전형적으로 게스트 운영 시스템이 물리적 하드웨어에 대한 독점적인 제어를 행사하도록 코딩되기 때문에, 가상화 소프트웨어는 물리적 하드웨어의 리소스를 세분하고 가상 장치 내에 물리적 하드웨어의 존재를 모방하도록 구성될 수 있다. 저장 가상화를 이용하는 다른 경우는 저장 어레이를 구현하도록 구성된 컴퓨터 시스템 내에서이다. 이러한 경우, 물리적 컴퓨터 시스템 또는 가상 장치는 iSCSI 프로토콜 등을 이용하는 저장 어레이에 접속될 수 있다.
저장 조절 모듈(storage handling module)은 가상 또는 물리적 장치에 대한 저장을 모방하는 데에 사용될 수 있다. 예를 들어, 저장 조절 모듈은 가상 디스크의 익스텐트(extent), 즉 블록과 같은 저장소의 인접한 영역을 기술, 즉 저장하는 데에 사용될 수 있는 하나 이상의 가상 디스크 파일을 판독 및 기록함으로써 가상 또는 물리적 장치에 의해 발행되는 저장 IO 작업(IO job)을 조절할 수 있다. 유사하게, 저장 조절 프로그램은 가상 디스크에 대한 비트 패턴 데이터를 하나 이상의 가상 디스크 파일에 기록함으로써 기록 요청에 응답할 수 있고, 하나 이상의 가상 디스크 파일 내에 저장된 비트 패턴을 판독함으로써 판독 요청에 응답할 수 있다.
본 명세서는 하나 이상의 가상 디스크 파일 내에 가상 디스크에 대한 데이터를 저장하는 기술을 개시한다. 예시적인 구성에서, 가상 디스크 익스텐트(virtual disk extent)는 가상 디스크 익스텐트가 가상 디스크 파일에 의해 기술되는지 여부를 나타내는 상태 정보와 연관될 수 있다. 소정의 컨디션 하에서, 가상 디스크 익스텐트를 기술하는 데에 사용되는 공간이 환원(reclaim)될 수 있으며, 상태 정보는 가상 디스크 익스텐트와 관련된 후속하는 판독 및/또는 기록 동작이 조절되는 방법을 판정하도록 사용될 수 있다. 환원된 공간, 예컨대 하나 이상의 범위로 만들어진 익스텐트는 동일하거나 다른 가상 디스크 익스텐트를 기술하는 데에 사용될 수 있다. 전술된 내용에 추가로, 다른 기술들이 본 명세서의 특허청구범위, 상세한 설명 및 도면에 개시되었다.
당업자는 본 발명의 하나 이상의 다양한 측면들은 본 명세서에서 참조되는 측면들을 야기하는 회로 및/또는 프로그래밍을 포함할 수 있지만 이것에 한정되지는 않으며, 회로 및/또는 프로그래밍은 시스템 설계자의 설계 선택에 따라 본 명세서에서 참조된 측면들을 야기하도록 구성된 하드웨어, 소프트웨어 및/또는 펌웨어의 사실상 임의의 조합일 수 있음을 이해할 수 있을 것이다.
본 요약부는 필요에 의해 단순화되고 포괄적이며 세부사항이 생략되었다. 당업자는 본 요약부가 단지 예시적인 것으로 어떠한 방식의 제한도 의도하지 않는 것임을 이해할 것이다.
도 1은 컴퓨터 시스템의 높은 레벨의 블록도를 도시한다.
도 2는 소프트웨어 프로그램 가상화를 위한 예시적인 아키텍처의 높은 레벨의 블록도를 도시한다.
도 3은 소프트웨어 프로그램을 가상화하는 대안적인 아키텍처의 높은 레벨의 블록도를 도시한다.
도 4는 가상 디스크를 작동하도록 구성된 컴퓨터 시스템의 낮은 레벨의 블록도를 도시한다.
도 5a는 가상 디스크를 작동하도록 구성된 컴퓨터 시스템의 낮은 레벨의 블록도를 도시한다.
도 5b는 가상 디스크를 작동하도록 구성된 컴퓨터 시스템의 낮은 레벨의 블록도를 도시한다.
도 6은 디퍼런싱 디스크(differencing disk)의 높은 레벨의 블록도를 도시한다.
도 7은 가상 디스크와 가상 디스크 파일 사이의 관계의 높은 레벨의 도면을 도시한다.
도 8은 가상 디스크와 가상 디스크 파일 사이의 관계의 높은 레벨의 도면을 도시한다.
도 9는 가상 디스크와 가상 디스크 파일 사이의 관계의 높은 레벨의 도면을 도시한다.
도 10은 가상 디스크와 가상 디스크 파일 사이의 관계의 높은 레벨의 도면을 도시한다.
도 11은 컴퓨터 시스템에 의해 실행되고/되거나 컴퓨터 판독가능한 저장 매체에서 구현될 수 있는 동작 절차를 도시한다.
도 12는 도 11에 의해 도시된 동작들과 함께 실행될 수 있는 추가적인 동작들을 도시한다.
도 13은 도 12에 의해 도시된 동작들과 함께 실행될 수 있는 추가적인 동작들을 도시한다.
도 14는 컴퓨터 시스템에 의해 실행되고/되거나 컴퓨터 판독가능한 저장 매체에서 구현될 수 있는 동작 절차를 도시한다.
도 15는 도 14에 의해 도시된 동작들과 함께 실행될 수 있는 추가적인 동작들을 도시한다.
도 16은 컴퓨터 시스템에 의해 실행되고/되거나 컴퓨터 판독가능한 저장 매체에서 구현될 수 있는 동작 절차를 도시한다.
도 17은 도 16에 의해 도시된 동작들과 함께 실행될 수 있는 추가적인 동작들을 도시한다.
도 2는 소프트웨어 프로그램 가상화를 위한 예시적인 아키텍처의 높은 레벨의 블록도를 도시한다.
도 3은 소프트웨어 프로그램을 가상화하는 대안적인 아키텍처의 높은 레벨의 블록도를 도시한다.
도 4는 가상 디스크를 작동하도록 구성된 컴퓨터 시스템의 낮은 레벨의 블록도를 도시한다.
도 5a는 가상 디스크를 작동하도록 구성된 컴퓨터 시스템의 낮은 레벨의 블록도를 도시한다.
도 5b는 가상 디스크를 작동하도록 구성된 컴퓨터 시스템의 낮은 레벨의 블록도를 도시한다.
도 6은 디퍼런싱 디스크(differencing disk)의 높은 레벨의 블록도를 도시한다.
도 7은 가상 디스크와 가상 디스크 파일 사이의 관계의 높은 레벨의 도면을 도시한다.
도 8은 가상 디스크와 가상 디스크 파일 사이의 관계의 높은 레벨의 도면을 도시한다.
도 9는 가상 디스크와 가상 디스크 파일 사이의 관계의 높은 레벨의 도면을 도시한다.
도 10은 가상 디스크와 가상 디스크 파일 사이의 관계의 높은 레벨의 도면을 도시한다.
도 11은 컴퓨터 시스템에 의해 실행되고/되거나 컴퓨터 판독가능한 저장 매체에서 구현될 수 있는 동작 절차를 도시한다.
도 12는 도 11에 의해 도시된 동작들과 함께 실행될 수 있는 추가적인 동작들을 도시한다.
도 13은 도 12에 의해 도시된 동작들과 함께 실행될 수 있는 추가적인 동작들을 도시한다.
도 14는 컴퓨터 시스템에 의해 실행되고/되거나 컴퓨터 판독가능한 저장 매체에서 구현될 수 있는 동작 절차를 도시한다.
도 15는 도 14에 의해 도시된 동작들과 함께 실행될 수 있는 추가적인 동작들을 도시한다.
도 16은 컴퓨터 시스템에 의해 실행되고/되거나 컴퓨터 판독가능한 저장 매체에서 구현될 수 있는 동작 절차를 도시한다.
도 17은 도 16에 의해 도시된 동작들과 함께 실행될 수 있는 추가적인 동작들을 도시한다.
본 명세서에 개시된 청구사항은 하나 이상의 컴퓨터 시스템을 사용할 수 있다. 도 1 및 아래의 설명은 개시된 청구사항이 구현될 수 있는 적절한 컴퓨팅 환경의 간략한 일반적인 설명을 제공하기 위한 것이다.
본 명세서 전반에서 사용된 회로라는 용어는 하드웨어 인터럽트 컨트롤러, 하드 드라이브, 네트워크 어댑터, 그래픽 프로세서, 하드웨어 기반 비디오/오디오 코덱 및 하드웨어를 운영하도록 사용되는 펌웨어와 같은 하드웨어 구성요소들을 포함할 수 있다. 회로라는 용어는 또한 예컨대 펌웨어 및/또는 소프트웨어에 의해 구성되는, 명령어의 판독 및 실행을 수행하는 멀티코어 제너럴 프로세싱 유닛의 코어와 같은 프로세서, 마이크로프로세서 및 애플리케이션 특정 집적 회로를 포함할 수 있다. 프로세서(들)는 예컨대 RAM, ROM, 펌웨어, 및/또는 대량 저장소와 같이, 기능(들)을 수행하기 위해 프로세서를 구성하도록 동작가능한 로직을 구비하는 메모리로부터 로딩된 명령어에 의해 구성될 수 있다. 예시적인 실시예에서, 회로가 하드웨어와 소프트웨어의 조합을 포함하는 경우, 실행자는 하드웨어에 의해 실행될 수 있는 장치 판독가능한 코드로 후속하여 컴파일되는 로직을 구비한 소스 코드를 기록할 수 있다. 당업자는 당업계가 하드웨어 구현된 기능 또는 소프트웨어 구현된 기능 사이에 차이가 거의 없는 지점까지 발전되어왔음을 이해할 수 있을 것이며, 따라서 본 명세서에 기술된 기능을 실행하기 위한 하드웨어 대 소프트웨어의 선택은 단지 디자인상 선택이다. 다시 말하면, 당업자는 소프트웨어 프로세스가 동등한 하드웨어 구성으로 변환될 수 있고, 하드웨어 구조 그 자체가 동등한 소프트웨어 프로세스로 변환될 수 있음을 이해할 수 있을 것이기 때문에, 하드웨어 구현 대 소프트웨어 구현의 선택은 실행자에 달려있다.
이제 도 1을 참조하면, 예시적인 컴퓨팅 시스템(100)이 도시되었다. 컴퓨터 시스템(100)은, 예컨대 실행 코어와 같은 프로세서(102)를 포함할 수 있다. 하나의 프로세서(102)가 도시되었지만, 다른 실시예에서 컴퓨터 시스템(100)은 복수의 프로세서를 구비할 수 있으며, 예컨대 프로세서 기판마다 복수의 실행 코어 및/또는 각각이 복수의 실행 코어를 구비할 수 있는 복수의 프로세서 기판을 구비할 수 있다. 도면에서 알 수 있는 바와 같이, 다양한 컴퓨터 판독가능한 저장 매체(110)가, 다양한 시스템 구성요소들을 프로세서(102)에 연결시키는 하나 이상의 시스템 버스에 의해 상호접속될 수 있다. 시스템 버스는 메모리 버스 또는 메모리 컨트롤러, 주변 버스 및 임의의 다양한 버스 아키텍처를 이용하는 로컬 버스를 포함하는 임의의 다양한 유형의 버스 구조일 수 있다. 예시적인 실시예에서, 컴퓨터 판독가능한 저장 매체(110)는, 예를 들어 랜덤 액세스 메모리(RAM)(104), 예컨대 전자기계적 하드 드라이브, 솔리드 상태 하드 드라이브 등과 같은 저장 디바이스(106), 예컨대 FLASH RAM 또는 ROM과 같은 펌웨어(108) 및 예컨대 CD-ROM, 플로피 디스크, DVD, FLASH 드라이브, 외부 저장 장치 등과 같은 제거가능한 저장 디바이스(118)를 포함할 수 있다. 당업자는 자기 카세트, 플래시 메모리 카드, 및/또는 디지털 비디오 디스크와 같은 다른 유형의 컴퓨터 판독가능한 저장 매체가 사용될 수 있음을 이해해야 한다.
컴퓨터 판독가능한 저장 매체(110)는 프로세서 실행가능한 명령어(122), 데이터 구조, 프로그램 모듈 및 실행가능한 명령어와 같은 컴퓨터 시스템(100)을 위한 그외의 데이터의 비휘발성 및 휘발성 저장을 제공할 수 있다. 예로서 시작시에 컴퓨터 시스템(100) 내의 요소들 간의 정보 전달을 돕는 베이직 루틴을 포함하는 베이직 입/출력 시스템(BIOS: basic input/output system)(120)이 펌웨어(108)에 저장될 수 있다. 다수의 프로그램이 펌웨어(108), 저장 디바이스(106), RAM(104), 및/또는 제거가능한 저장 디바이스(118)에 저장될 수 있으며, 운영 시스템 및/또는 애플리케이션 프로그램을 포함하는 프로세서(102)에 의해 실행될 수 있다. 예시적인 실시예에서, 컴퓨터 판독가능한 저장 매체(110)는, 아래의 문단에서 보다 자세하게 기술될 가상 디스크 파서(parser)(404)를 포함할 수 있고, 이는 프로세서(102)에 의해 실행되어 컴퓨터 시스템(100)을 특정 목적을 위해 구성된 컴퓨터 시스템, 즉 본 명세서에 명시된 기술에 따라 구성된 컴퓨터 시스템으로 변환시킬 수 있다.
커맨드 및 정보가 입력 디바이스(116)를 통해 컴퓨터 시스템(100)에서 수신될 수 있으며, 이러한 입력 디바이스(116)는 키보드 및 포인팅 디바이스를 포함할 수 있지만 이것으로 한정되지는 않는다. 그외의 입력 디바이스는 마이크, 조이스틱, 게임 패드, 스캐너 등을 포함할 수 있다. 이러한 입력 디바이스와 다른 입력 디바이스들은, 종종 시스템 버스에 연결된 직렬 포트 인터페이스를 통해 프로세서(102)에 접속되지만, 병렬 포트, 게임 포트, 또는 USB와 같은 다른 인터페이스에 접속될 수도 있다. 디스플레이 또는 다른 유형의 디스플레이 디바이스는 또한 그래픽 프로세서 유닛(112)의 일부일 수 있거나 그에 접속될 수 있는 비디오 어댑터와 같은 인터페이스를 통해 시스템 버스에 접속될 수도 있다. 디스플레이에 추가하여, 컴퓨터는 전형적으로 스피커 및 프린터(도시되지 않음)와 같은 그외의 주변 출력 디바이스를 포함한다. 도 1의 예시적인 시스템은 호스트 어댑터, SCSI(Small Computer System Interface) 버스 및 SCSI 버스에 접속된 외부 저장 디바이스 또한 포함할 수 있다.
컴퓨터 시스템(100)은 원격 컴퓨터와 같은 하나 이상의 원격 컴퓨터에 대한 논리적 접속을 이용하여 네크워킹된 환경에서 동작할 수 있다. 원격 컴퓨터는 다른 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 디바이스 또는 다른 공용 네트워크 노드일 수 있으며, 전형적으로 컴퓨터 시스템(100)과 관련하여 전술된 요소들을 다수 또는 전부 포함할 수 있다.
LAN 또는 WAN 네트워킹 환경에서 사용될 때, 컴퓨터 시스템(100)은 네트워크 인터페이스 카드(114)를 통해 LAN 또는 WAN에 접속될 수 있다. 내부 또는 외부 네트워크 인터페이스일 수 있는 NIC(114)는 시스템 버스에 접속될 수 있다. 네트워킹된 환경에서, 컴퓨터 시스템(100)과 관련하여 도시된 프로그램 모듈들, 또는 그 일부가 원격 메모리 저장 디바이스에 저장될 수 있다. 본 명세서에 기술된 네트워크 접속이 예시적인 것이며 컴퓨터들 사이에서의 통신 링크를 확립하는 다른 수단이 사용될 수도 있음을 이해할 것이다. 또한, 본 발명의 다수의 실시예들이 특히 컴퓨터화된 시스템에 잘 맞추어지도록 그려졌지만, 본 명세서가 본 발명을 그러한 실시예로 한정하고자 하는 것은 아니다.
도 2를 참조하면, 가상 장치(virtual machine)를 생성하는데에 사용될 수 있는 예시적인 가상화(virtualization) 플랫폼이 도시되었다. 이러한 실시예에서, 마이크로커널 하이퍼바이저(microkernel hypervisor)(202)가 컴퓨터 시스템(200)의 하드웨어에 대한 액세스를 제어 및 중재하도록 구성될 수 있다. 마이크로커널 하이퍼바이저(202)는 자식 파티션 1 내지 자식 파티션 N(N은 1보다 큰 정수)과 같이 파티션으로 불리는 실행 환경을 생성할 수 있다. 여기에서, 자식 파티션(child partition)은 마이크로커널 하이퍼바이저(202)에 의해 지원되는 분리(isolation)의 기본 단위이다. 마이크로커널 하이퍼바이저(202)는 하나의 파티션 내의 프로세스들을 다른 파티션의 리소스들이 액세스하는 것으로부터 격리시킬 수 있다. 특히, 마이크로커널 하이퍼바이저(202)는 사용자 모드 프로세스뿐 아니라 게스트 운영 시스템의 커널 모드 코드를 다른 파티션의 리소스들이 액세스하는 것으로부터 격리시킬 수 있다. 각각의 자식 파티션은 마이크로커널 하이퍼바이저(202)의 제어하에 있는 예컨대 메모리, 디바이스, 프로세서 사이클 등과 같은 하드웨어 리소스들의 세트에 맵핑될 수 있다. 실시예에서, 마이크로커널 하이퍼바이저(202)는 독립형 소프트웨어 제품이거나, 운영 시스템의 일부이거나, 마더보드의 펌웨어 내에 내장되어 있거나, 특화된 집적 회로이거나, 또는 이들의 조합일 수 있다.
마이크로커널 하이퍼바이저(202)는 물리적 컴퓨터 시스템 내의 메모리의 게스트 운영 시스템의 뷰(view)를 제한함으로써 분할(partitioning)을 집행할 수 있다. 마이크로커널 하이퍼바이저(202)가 가상 장치를 인스턴시에이트(instantiate)할 때, 이는 시스템 물리적 메모리(SPM)의 페이지(예컨대, 시작 어드레스와 종료 어드레스를 갖는 고정된 길이의 메모리의 블록들)를 게스트 물리적 메모리(GPM)로서 가상 장치에 할당할 수 있다. 여기에서, 시스템 메모리의 제한된 게스트 뷰는 마이크로커널 하이퍼바이저(202)에 의해 제어된다. 게스트 물리적 메모리(guest physical memory)라는 용어는 가상 장치의 관점에서 메모리의 페이지를 기술하는 속기 방법(shorthand way)이고, 시스템 물리적 메모리라는 용어는 물리적 시스템의 관점에서 메모리 페이지를 기술하는 속기 방법이다. 따라서, 가상 장치에 할당된 메모리의 페이지는 게스트 물리적 어드레스(가상 장치에 의해 사용되는 어드레스) 및 시스템 물리적 어드레스(페이지의 실제 어드레스)를 가질 것이다.
게스트 운영 시스템은 게스트 물리적 메모리를 가상화할 수 있다. 가상 메모리는 운영 시스템이 메모리에 많은 일을 부여하고 논리적으로 인접한 작동 메모리에 대한 애플리케이션 단독 액세스를 부여하는 것을 가능케 하는 관리 기술이다. 가상화된 환경에서, 게스트 운영 시스템은 이러한 맥락에서 게스트 페이지 테이블이라 불리는 하나 이상의 페이지 테이블을 사용하여, 가상 게스트 주소로 알려진 가상 어드레스를 게스트 물리적 어드레스로 번역할 수 있다. 이러한 예시에서, 메모리 어드레스는 게스트 가상 어드레스, 게스트 물리적 어드레스 및 시스템 물리적 어드레스를 구비할 수 있다.
도시된 예시에서, Xen의 오픈 소스 하이퍼바이저의 도메인 0과 유사한 것으로도 생각될 수 있는 부모 파티션(parent partition) 구성요소는 호스트 환경(204)을 포함할 수 있다. 호스트 환경(204)은 운영 시스템(또는 구성 유틸리티들의 세트)일 수 있으며, 호스트 환경(204)은 가상화 서비스 제공자(228)(VSP)를 이용하여 자식 파티션(1-N)에서 실행하는 게스트 운영 시스템에 리소스를 제공하도록 구성될 수 있다. 오픈 소스 커뮤니티에서 일반적으로 백엔드(back-end) 드라이버로 지칭되는 VSP(228)는, 가상화 서비스 클라이언트(VSC)(오픈 소스 커뮤니티 또는 준가상화된(para virtualized) 디바이스에서 일반적으로 프론트엔드(front-end)로 지칭됨)의 방식으로 인터페이스를 하드웨어 리소스로 멀티플렉싱하는 데에 사용될 수 있다. 도면에서 볼 수 있는 바와 같이, 가상화 서비스 클라이언트는 게스트 운영 시스템의 맥락에서 실행된다. 그러나, 이러한 드라이버는 하드웨어 또는 모방 하드웨어와 통신하는 대신 VSP를 통해 호스트 환경(204)과 통신한다는 점에서 게스트 내의 나머지 드라이버들과 상이하다. 예시적인 실시예에서, 가상화 서비스 클라이언트(216, 218)와 통신하기 위해 가상화 서비스 제공자(228)에 의해 사용되는 경로는 개화된(enlightened) IO 경로로 고려될 수 있다.
도면에 도시되어 있는 바와 같이, 예컨대 가상화된 IDE 디바이스, 가상화된 비디오 어댑터, 가상화된 NIC 등과 같은 에뮬레이터(234)는, 호스트 환경(204) 내에서 구동할 수 있도록 구성될 수 있고, 예컨대 IO 포트, 게스트 물리적 어드레스 범위, 가상 VRAM, 모방 ROM 범위 등과 같은 게스트 운영 시스템(220, 222)이 이용가능한 모방 하드웨어 리소스에 부착된다. 예를 들어, 메모리 맵핑된 디바이스에 대해 디바이스의 레지스터가 존재할 게스트 물리적 어드레스에 맵핑된 게스트 가상 어드레스를 게스트 OS가 터치할 때, 마이크로커널 하이퍼바이저(202)는 요청을 가로채서 게스트가 기록하고자 시도하는 값을 연관된 에뮬레이터로 통과시킬 수 있다. 이때, 이 예시에서의 모방 하드웨어 리소스는 가상 디바이스가 게스트 물리적 어드레스 공간 내에서 위치된 장소로서 생각될 수 있다. 이러한 방식의 에뮬레이터의 사용은 모방 경로(emulation path)로 고려될 수 있다. 모방 경로는 디바이스를 모방하는데에 VSP와 VSC 사이에서 메시지를 전달할 때보다 더 많은 CPU 시간을 필요로 하기 때문에 개화된 IO 경로와 비교하여 비효율적이다. 예를 들어, 모방 경로를 통해 버퍼를 디스크에 기록하기 위해서는 레지스터에 맵핑된 메모리 상의 몇몇 동작들이 요구되는 반면, VM 내의 드라이버들이 액세스 하드웨어보다는 가상화 시스템에 의해 제공되는 IO 서비스에 액세스하도록 설계되었다는 점에서, 개화된 IO 경로로 VSC로부터 VSP에 단일 메시지가 전달되는데에는 이러한 동작들이 감소될 수 있다.
각각의 자식 파티션은, 게스트 운영 시스템(220, 222)이 관리하고 스레드가 실행되도록 스케줄링할 수 있는 하나 이상의 가상 프로세서(230, 232)를 포함할 수 있다. 일반적으로, 가상 프로세서는 물리적 프로세서의 표현을 특정한 아키텍처에 제공하는 실행가능한 명령어 및 연관된 상태 정보이다. 예를 들어, 하나의 가상 장치가 Intel x86 프로세서의 특징을 갖는 가상 프로세서를 구비할 수 있는 반면, 다른 가상 프로세서는 PowerPC 프로세서의 특징을 가질 수 있다. 이러한 예시에서 가상 프로세서는 컴퓨터 시스템의 프로세서들로 맵핑될 수 있으며 그에 따라 가상 프로세서를 수행시키는 명령어가 물리적 프로세서에 의해 직접 실행될 것이다. 따라서, 복수의 프로세서를 포함하는 실시예에서, 가상 프로세서는 프로세서들에 의해 동시에 실행될 수 있는 반면, 예를 들어 다른 프로세서는 하이퍼바이저 명령어를 실행한다. 파티션 내의 메모리와 가상 프로세서들의 조합은 가상 장치로 고려될 수 있다.
게스트 운영 시스템(220, 222)은 예를 들어 Microsoft®, Apple®, 오픈 소스 커뮤니티 등으로부터의 운영 시스템과 같은 임의의 운영 시스템일 수 있다. 게스트 운영 시스템은 동작의 사용자/커널 모드를 포함할 수 있고, 스케줄러, 메모리 매니저 등을 포함할 수 있는 커널을 구비할 수 있다. 일반적으로 말하면, 커널 모드는 적어도 특권을 가진 프로세서 명령어에 액세스를 부여하는 프로세서 내의 실행 모드를 포함할 수 있다. 각각의 게스트 운영 시스템은 터미널 서버, 전자상거래 서버, 이메일 서버 등과 같이 저장된 애플리케이션을 가질 수 있는 연관된 파일 시스템과 게스트 운영 시스템 자신을 구비할 수 있다. 게스트 운영 시스템은 스레드가 가상 프로세서 상에서 실행하고 이러한 애플리케이션들의 인스턴스(instance)가 수행될 수 있도록 스케줄링할 수 있다.
도 3을 참조하면, 도 2와 관련하여 기술된 것에 대한 대안적인 가상화 플랫폼이 도시되었다. 도 3은 도 2와 유사한 구성요소들을 도시하였으나, 이 예시적인 실시예에서 하이퍼바이저(302)가 가상화 서비스 제공자(228) 및 디바이스 드라이버(224)와 같이 도 2의 호스트 환경(204)에서와 유사한 구성요소들 및 마이크로커널 구성요소를 포함할 수 있는 반면, 관리 운영 시스템(304)은 예를 들어 하이퍼바이저(302)를 구성하는데에 사용되는 구성 유틸리티들을 포함할 수 있다. 이러한 아키텍처에서, 하이퍼바이저(302)는 도 2의 마이크로커널 하이퍼바이저(202)와 같거나 유사한 기능을 수행할 수 있지만, 이 아키텍처에서 하이퍼바이저(304)는 개화된 IO 경로를 수행하고 컴퓨터 시스템의 물리적 하드웨어에 대한 드라이버들을 포함한다. 도 3의 하이퍼바이저(302)는 독립형 소프트웨어 제품, 운영 시스템의 일부, 마더보드의 펌웨어 내에 내장되었거나, 또는 특화된 집적 회로에 의해 수행될 수 있는 하이퍼바이저(302)의 일부일 수 있다.
도 4를 참조하면, 본 명세서에 설명된 기술에 영향을 미치도록 사용될 수 있는 구성요소들의 높은 레벨 블록도를 도시한 컴퓨터 시스템(400)이 도시되었다. 간략하게, 컴퓨터 시스템(400)은 도 1 내지 3과 관련하여 전술된 것과 유사한 구성요소들을 포함할 수 있다. 도 4는 도 2 또는 3에 의해 도시된 가상화 플랫폼의 높은 레벨의 표현으로 생각될 수 있는 가상화 시스템(420)을 도시한다. 예를 들어, 가상화 시스템(420)은 마이크로커널 하이퍼바이저(202) 및 호스트 환경(20)에 의해 제공되는 특징들의 조합의 높은 레벨의 표현으로 생각될 수 있다. 이와 달리, 가상화 시스템(420)은 하이퍼바이저(302)와 관리 OS(304)의 높은 레벨 표현으로 생각될 수도 있다. 따라서, 본 명세서 전반에서 "가상화 시스템(420)"이라는 용어의 사용은 아래의 단락에서 설명되는 가상 디스크 기술이 임의의 유형의 가상화 소프트웨어 층 또는 임의의 유형의 가상화 플랫폼에서 구현될 수 있음을 나타내는 것이다.
가상화 시스템(420)은 오프로드 제공자 엔진(422)을 포함할 수 있다. 간략하게, 오프로드 제공자 엔진(422)은 예를 들어 애플리케이션(424)에 의해 발행되는 오프로드 기록 요청 및 오프로드 판독 요청(때때로 PROXY WRITE 및 PROXY READ로 불림)을 서비스하도록 구성될 수 있다. 오프로드 판독 요청은 만약 오프로드 판독이 정상 판독이었을 때 판독되어진 데이터를 나타내는 토큰을 생성하기 위한 요청이다. 오프로드 기록은 토큰에 의해 나타내어진 데이터를 목적지 위치에 기록하기 위한 요청이다. 하나의 사용례에서, 오프로드 판독에 이은 오프로드 기록은 데이터가 로컬 RAM을 통해 이동하는 것을 방지하기 위해 데이터를 표현하는 토큰을 이용함으로써 데이터를 하나의 위치로부터 다른 위치로, 예컨대 컴퓨터 시스템(400)으로부터 도메인 내의 목적 컴퓨터 시스템으로 복사하는데에 사용될 수 있다. 예를 들어, 컴퓨터 시스템(400)과 (도시되지 않은) 목적지 컴퓨터 시스템이 공유 데이터 저장소에 액세스할 수 있고 데이터를 컴퓨터 시스템으로부터 목적지로 복사하라는 요청이 수신되었다고 가정하자. 데이터를 목적지에 복사하는 대신, 애플리케이션(424)은 데이터가 토큰이 데이터와 연관되어 있는 시점에 존재할 때 데이터를 나타내는 토큰을 발행하라는 요청을 오프로드 제공자 엔진(422)에 발행할 수 있다. 토큰은 공유 데이터 저장소로부터 데이터를 획득하여 그 데이터를 목적지에 기록하기 위해 목적지에 전송되어 목적지 상에서 실행중인 프로그램에 의해 사용될 수 있다. 복사-오프로드 기술은 발명의 명칭 "OFFLOAD READS AND WRITES"인 계류중인 미국 특허출원번호 12/888,433 및 발명의 명칭 "VIRTUALIZATION AND OFFLOAD READS AND WRITES"인 미국 특허출원번호 12/938,383에 보다 자세히 기술되어 있으며, 이들의 내용은 그 전체가 본 명세서에서 참조로서 포함되었다.
특정한 예시적인 실시예에서 실행가능한 명령어의 모듈일 수 있는 가상 디스크 파서(404)는, 가상 디스크 파일로부터 가상 디스크를 수행하고 가상 장치를 대신하여 저장 IO를 조작하도록 사용될 수 있다. 도면에 도시된 바와 같이, 가상 디스크 파서(404)는 가상 디스크 파일(들)(406)과 같은 하나 이상의 가상 디스크 파일을 열고 가상 디스크(402)를 생성할 수 있다.
가상 디스크 파서(404)는 가상 시스템 파일 시스템(408)을 통해 저장 디바이스(106)로부터 가상 디스크 파일(들)(406)을 획득할 수 있다. 간략하게, 가상 시스템 파일 시스템(408)은 가상 디스크 파일(들)(406)과 같은 가상화 시스템(420)의 데이터 및 컴퓨터 파일들을 조직화하는 소프트웨어 모듈을 나타낸다. 가상화 시스템 파일 시스템(408)은 고정된 사이즈의 물리적 규모의 어레이, 즉 물리적 저장 디바이스 상의 인접한 저장 영역 내에 이러한 데이터를 저장할 수 있다. 특정 예시에서, 물리적 규모는 세트 길이를 갖는 비트들의 바이트의 시퀀스인 클러스터일 수 있다. 예시적인 클러스터 사이즈는 전형적으로 512 바이트와 64 킬로바이트의 제곱이다. 특정 구성에서, 클러스터 사이즈는 4 킬로바이트일 수 있다.
가상 디스크 파일(406)을 열기 위한 요청이 수신되었을 때, 가상화 시스템 파일 시스템(408)은 파일이 디스크 상에서 어디에 위치되었는지를 결정하고 디스크의 하나 이상의 물리적 규모로부터 데이터를 판독하도록 IO 작업을 디스크 디바이스 드라이브에 발행한다. 파일 시스템(408)에 의해 발행된 IO 작업은 저장 디바이스(106) 상의 가상 디스크 파일(406)의 영구 복제물의 위치를 기술하는 디스크 오프셋과 길이를 결정하고, 저장 디바이스(106)에 IO 작업을 발행한다. 저장 디바이스가 동작하는 방법의 의미 때문에, 기록 IO 작업은 저장 디바이스(106)의 회로가 예컨대 플래터, 플래시 메모리 셀 등과 같은 영구 저장 유닛(460) 상의 위치에 액세스하도록 결정할 때까지 캐시(454)에 의해 표현되는 휘발성 메모리의 캐시의 하나 이상의 레벨에서 버퍼링될 수 있고, 가상 디스크 파일(들)(406)의 영구 복제물의 새로운 콘텐츠를 나타내는 버퍼링된 비트 패턴을 영구 저장 유닛(460)에 기록할 수 있다.
가상 디스크 파서(404)는 가상 디스크 파일(들)(406)을 나타내는 비트 패턴을 획득할 수 있고 가상 디스크 파일(들)(406) 내의 페이로드, 예컨대 사용자 데이터를 복수의 가상 디스크 익스텐트를 포함하는 디스크로서 노출시킬 수 있다. 실시예에서, 이러한 가상 디스크 익스텐트는 크기가 512 킬로바이트에서 최대 64 메가바이트인 고정된 사이즈의 블록일 수 있으며 복수의 섹터들로 분할될 수 있지만, 다른 실시예에서 가상 디스크 익스텐트는 다양한 크기의 익스텐트들일 수 있다. 예시적인 구성에서, 게스트 운영 시스템(412)을 부팅하기에 앞서, 가상 장치(410)의 게스트 물리적 어드레스 공간 내에서 메모리 맵핑된 레지스터를 갖는 모방된 저장 컨트롤러가 실행되도록 가상 디스크의 모방 또는 개화된 저장 컨트롤러 및 가상 디스크의 모방 또는 개화된 측면들과 관련된 리소스들이 설정된다. 부팅 코드가 게스트 운영 시스템(412)을 실행 및 부팅할 수 있다. 가상화 시스템(420)은 게스트 물리적 어드레스 공간의 이러한 영역에 액세스하고자 하는 시도를 검출할 수 있고, 게스트 운영 시스템(412)으로 하여금 저장 디바이스가 모방된 저장 컨트롤러에 부착되었다고 판단하도록 하는 결과를 반환하다. 그에 응답하여, 게스트 운영 시스템(412)은 드라이버(파라 가상화 드라이버 또는 정규 드라이버)를 로딩할 수 있고 검출된 저장 디바이스에게 저장 IO 요청을 발행하는 데에 드라이버를 사용할 수 있다. 가상화 시스템(420)은 저장 IO 요청을 가상 디스크 파서(404)에게 라우팅할 수 있다.
게스트 운영 시스템(412)이 실행 중인 후에 파일 시스템(414)을 통해 가상 디스크(402)에 IO 작업을 발행할 수 있으며, 파일 시스템(414)은 컴퓨터 파일과 게스트 운영 시스템(412)의 데이터 및 게스트 운영 시스템(412) 상에 설치된 애플리케이션을 조직화한다는 점에서 가상화 시스템 파일 시스템(414)과 유사하다. 게스트 운영 시스템(412)은 운영 시스템이 물리적 저장 디바이스와 상호작용하는 것과 유사한 방식으로 가상 디스크(402)와 상호작용할 수 있고, 결과적으로 IO 작업이 가상 디스크 파서(404)에 라우팅된다. 가상 디스크 파서(404)는 물리적 저장 디바이스를 모방하는 방식으로 IO 작업에 응답하는 방식을 판정하는 로직을 포함할 수 있다. 예를 들어, 가상 디스크 파서(404)는 가상 디스크 파일(들)(406)로부터 데이터를 판독할 수 있고 가상 디스크 파일(들)(406)에 데이터를 기록할 수 있다. 차례로 가상 디스크 파일(들)(406)에 기록된 데이터는 가상화 시스템 파일 시스템(408)을 통해 라우팅되고 영구 저장 유닛(460) 상에 또는 내에 저장된 가상 디스크 파일(들)(406)이 영구 복사된다.
도 5a를 간략하게 참조하면, 본 명세서에서 설명되는 기술을 구현하는 다른 아키텍처가 도시되었다. 도 5에 도시된 바와 같이, 가상 디스크 파서(404)는 Microsoft®에 의해 제공되는 운영시스템과 같은 운영 시스템(502) 내에서 또한 구현될 수 있다. 이 예시에서, 가상 디스크 파서(404)는 도 1의 컴퓨터 시스템(100)과 유사한 구성요소를 포함할 수 있는 저장 서버(500) 상에서 실행하도록 구성될 수 있다. 이러한 예시에서, 저장 서버(500)는 물리적 저장 디바이스(510)의 어레이를 포함할 수 있고, 저장소가 운영 시스템(508)에 논리적으로 부착된 것으로 나타나도록 서버가 저장소를 이용가능하게 구성될 수 있다. 가상 디스크 파서(404)는 도 4와 관련하여 기술된 바와 같이 동작할 수 있으며, 이 구성에서의 차이점은 파일 시스템(414)에 의해 발행되는 판독/기록 IO 작업이 가상 디스크 파서(404)로의 네트워크 접속 상에서 라우팅될 수 있다는 것이다.
도 5b를 간략하게 참조하면, 본 명세서에서 설명되는 기술을 구현하는 또 다른 아키텍처가 도시되었다. 도 5b는 가상 디스크 파서(404)가 운영 시스템(502) 내에서 구현되고 컴퓨터 시스템(512)이 도 1의 컴퓨터 시스템(100)과 유사한 구성요소를 포함하고 있다는 점에서 도 5a와 유사하다. 그러나 이 예시에서의 차이점은, 도면에 루프백(loopback)이 더해진 가상 디스크(402)가 도시되었다는 점이다. 애플리케이션(424)과 같은 애플리케이션을 포함하는 파일 시스템(414)은 가상 디스크(402) 내에 저장될 수 있고, 가상 디스크 파일(들)(406)은 컴퓨터 시스템 파일 시스템(514) 내에 저장될 수 있다.
이제 가상 디스크(402)로 주의를 돌리면, 이것이 단일 가상 디스크 파일에 의해 실행될 수 있지만, 다른 구성에서는 디퍼런싱 가상 디스크 파일들의 그룹이 가상 디스크(402)를 실행하도록 사용될 수 있다. 도 6은 가상 디스크(402)를 디퍼런싱 디스크(differencing disk)로서 실행하도록 가상 디스크 파서(404)에 의해 사용될 수 있는 가상 디스크 파일들의 예시적인 고리를 도시한다. 일반적으로, 디퍼런싱 가상 디스크 파일은 가상 디스크의 현재 상태를 부모 이미지와 비교하여 변조된 익스텐트의 세트로서 나타낸다. 부모 이미지는 다른 디퍼런싱 가상 디스크 파일 또는 베이스 가상 디스크 파일일 수 있다.
예시적인 구성에서, 부모 가상 디스크 파일과 자식 가상 디스크 파일 간의 링크는 자식 가상 디스크 파일 내에 저장될 수 있다. 특히, 자식은 부모의 식별자 및 부모의 위치를 기술하는 값을 포함할 수 있다. 가상 장치를 시작할 때, 가상 디스크 파서(404)는 고리 내에서 마지막 가상 디스크 파일, 즉 가상 디스크 파일(612, 610, 606, 600)을 포함하는 고리 내의 마지막인 가상 디스크 파일(612)을 기술하는 정보를 수신할 수 있으며, 이러한 파일을 열 수 있다. 이러한 파일은 자신의 부모, 즉 가상 디스크 파일(610)의 식별자 및 그에 대한 경로를 포함할 수 있다. 가상 디스크 파서(404)는 베이스 가상 디스크 파일이 위치되고 열릴 때까지 계속해서 부모 파일을 위치시키고 열 수 있다.
가상 디스크 파서(404)는 데이터가 부모 가상 디스크 파일 내에 존재하거나 저장되었는지 여부를 나타내는 정보를 사용할 수 있다. 전형적으로, 고리 내의 마지막 가상 디스크 파일이 판독/변조와 동시에 열리며 다른 가상 디스크 파일들은 판독시에 열린다. 따라서, 기록은 전형적으로 고리 내의 마지막 가상 디스크 파일에만 이루어진다. 판독 동작은 유사하게 고리 내의 마지막 가상 디스크 파일에 먼저 관련되며 가상 디스크 파서(404)는 데이터가 위치된 곳에 대한 정보가 캐싱되지 않은 경우에 데이터가 발견될 때까지 가상 디스크 파일을 마지막부터 베이스까지 논리적 순서로 논리적으로 검색할 것이다. 특정 예시에서, 예컨대 가상 디스크 파일(612)과 같은 가상 디스크 파일에 대한 블록 할당 테이블(도시되지 않음)이 상태 정보를 포함할 수 있다. 가상 디스크 익스텐트가 가상 디스크 파일의 섹션에 의해 정의되거나 또는 이 가상 디스크 익스텐트가 투명한지, 예컨대 고리를 추가로 따라서 다른 가상 디스크 파일에 의해 정의되는지 여부를 나타내는 상태 정보를 포함할 수 있다. 일 구현에서, 가상 디스크 파서(404)는 가상 디스크 익스텐트가 투명한지 여부를 판정할 수 있고, 데이터를 정의하는 고리 내의 가상 디스크 파일이 위치될 때까지 예컨대 가상 디스크 파일(610)과 같은 고리 내의 다음 가상 디스크 파일에 대해 블록 할당 테이블에 계속 액세스할 수 있다.
이제 도 7을 참조하면, 예컨대 가상 디스크 파일(602), 가상 디스크 파일(608), 또는 가상 디스크 파일(612), 또는 단일 가상 디스크 파일과 같이, 기록/변조할 수 있는 도 6에 기술된 임의의 가상 디스크 파일과 유사할 수 있는 가상 디스크 파일(702)에 의해 적어도 부분적으로 기술되는 가상 디스크(402)가 도시되었다. 도면에 도시된 바와 같이, 가상 디스크(402)는 N개의 저장 익스텐트를 포함할 수 있으며 (N은 0보다 큰 정수) 이 특정 예시에서 가상 디스크(402)는 10개의 익스텐트를 포함한다. 가상 디스크(402)는 서로 다른 파일들에 대한 비트 패턴 및 게스트 운영 시스템(412)에 대한 데이터를 포함하는 것으로 도시되었으며, 이는 가상 디스크 익스텐트 내의 서로 다른 패턴들에 의해 차별화된다.
가상 디스크(402)가 물리적 저장 디바이스가 아니기 때문에, 가상 디스크 익스텐트에 대한 언더라잉 페이로드 데이터는 가상 디스크 파일(702) 내의 서로 다른 섹션들에 "의해서 기술될 수(described by)" 있으며, 즉 서로 다른 섹션들 내에 저장될 수 있다. 예를 들어, 가상 디스크 익스텐트(1)는 페이로드 데이터를 저장하는 데에 사용도리 수 있는 첫 번째 오프셋 또는 가상 디스크 파일 오프셋 값 0에 의해 정의되는 섹션에 의해 기술된다. 컴퓨터 시스템(400)이 동작 중일 때 랜덤 액세스 메모리 내에 저장될 수 있는 할당 테이블(416)은 임의의 섹션 내의 가상 디스크 파일(702) 내에서 지속될 수 있고 복수의 섹션에 걸칠 수 있다. 간략하게, 할당 테이블(416)은 가상 디스크 파일(702)의 섹션에 가상 디스크 익스텐트를 링크하는 정보를 포함할 수 있다. 예를 들어, 할당 테이블(416)은 데이터를 저장하는 가상 디스크 파일(702)의 섹션을 정의하는 가상 디스크 파일 바이트 오프셋을 정의하는 정보를 저장할 수 있다. 화살표는 할당 테이블(416) 내에 저장된 관계를 의미한다.
아래의 단락에서 보다 자세하게 설명되는 바와 같이, 할당 테이블(416)은 또한 상태 정보를 포함할 수 있지만, 이러한 구성은 예시적인 것이다. 다른 구성에서 이러한 정보는 가상 디스크 파일(702)의 서로 다른 섹션 내에 저장되고 RAM(104)으로 로딩될 수 있다. 할당 테이블(416)은 각각의 익스텐트가 어떠한 상태에 있는지를 나타내는 상태 정보, 가상 디스크 파일(702) 내에서 각각의 가상 디스크 익스텐트가 기술되는 위치를 나타내는 파일 오프셋(도시되지 않음)과 같은 각각의 가상 디스크 익스텐트에 대한 엔트리를 포함할 수 있다. 다른 실시예에서, 익스텐트는 또한 이미 맵핑된 (파일 오프셋 내에서) 인접하는 복수의 테이블 엔트리에 의해 정의될 수도 있다. 이러한 구성에서, 만약 블록 페이로드가 파일 내에서 인접하다면 블록 경계를 가로지르는 판독 및 기록이 가상 디스크 파일(702)에 대한 단일 판독/기록으로서 서비스될 수 있다. 특정 예시에서, 가상 디스크 파서(404)는 또한 비트 패턴의 어떠한 유형이 가상 디스크 파일의 각각의 사용되지 않는 섹션 내에 저장되는지를 나타내는 정보, 즉 자유 공간 맵을 저장할 수 있다. 전술된 내용에 추가하여, 자유 공간 맵은 가상 디스크 파일(406)의 어떤 섹터들이 사용되고 어떤 섹터들이 자유인지를 판정하도록 가상 디스크 파서(404)에 의해 사용되는 것을 허용할 수 있다. 이 예시에서 자유 공간 맵은 제로(zero)가 아닌 파일 내의 자유 공간을 추적하도록 구성될 수 있다. 예시적인 실시예에서, 다른 가상 디스크 오프셋으로부터의 정보를 개시하지 말아야 하거나 제로여야만 하는 가상 디스크(402)의 일부분을 기술하도록 자유 공간의 제로가 아닌 일부분을 사용하기 때문에, 자유 공간은 각각 (전형적으로 제로인) 비정보개시 패턴(non-information disclosing pattern) 또는 제로로 겹쳐쓰기(overwritten)된다. 가상 디스크 파서(404)는 가상 디스크 파일의 어떤 섹션을 가상 디스크 익스텐트에 할당할지를 판정하도록 이러한 정보를 사용할 수 있다. 예를 들어, 만약 제로 상태의 가상 디스크 익스텐트가 기록되었으면, 가상 디스크 파서(404)는 가상 디스크 익스텐트를 지지하도록 이미 제로를 갖는 섹션을 할당할 수 있다.
게스트 운영 시스템(412) 또는 운영 시스템(508)이 실행될 때, 데이터 및 파일을 생성하고 데이터를 저장하라는 디스크 기록 요청을 가상 디스크(402)에 발행할 것이다. 가상 디스크 파일(702)이 어떠한 추가적인 비사용된 공간도 갖지 않을 때, 가상 디스크 파서(404)는 파일의 종료를 확장하여 가상 디스크 익스텐트를 기술하도록 새로운 공간을 사용할 수 있다. 게스트 운영 시스템(412) 또는 운영 시스템(508)은 가상 디스크(402)의 섹션을 사용, 삭제 및 재사용할 수 있지만, 가상 디스크 파서(404)가 단지 파일 시스템(414) 대신 데이터를 저장하고 있기 때문에, 가상 디스크 파서(404)는 가상 디스크 파일의 섹션이 여전히 게스트 운영 시스템(412)에 의해 사용되고 있는지 여부를 판정할 수 없을 수도 있다. 결과적으로, 가상 디스크 파서(404)는 파일 시스템(414)에 의해 더 이상 사용되지 않는 가상 디스크 익스텐트를 기술하도록 가상 디스크 파일(702) 내의 할당된 공간을 홀딩할 수 있다. 그 결과 가상 디스크 파일(702)의 크기가 가상 디스크(402)의 크기에 도달할 때까지 늘어날 수 있다.
예시적인 실시예에서, 가상 디스크 파서(404)는 가상 디스크 파일의 사용되지 않는 섹션을 환원하고 선택적으로 재사용하도록 구성될 수 있다. 이렇게, 가상 디스크 파일이 확장되어야 하는 주기가 감소되고, 가상 디스크 파일의 전반적인 크기가 감소된다. 예시적인 실시예에서, 파일 시스템이 더 이상 가상 디스크 익스텐트를 사용하지 않는다고 신호할 때, 가상 디스크 파서(404)는 가상 디스크 익스텐트를 가상 디스크 파일로부터 할당 해제, 즉 링크 해제할 수 있으며, 가상 디스크 익스텐트를 가상 디스크 익스텐트에 대한 판독 동작이 어떻게 처리되어야 하는가를 기술하는 정보와 연관시킬 수 있다. 가상 디스크 파일의 섹션은 그 다음 동일하거나 다른 가상 디스크 익스텐트를 기술하는 데에 재사용될 수 있다.
예시적인 구성에서, 가상 디스크 파서(404)는 가상 디스크 익스텐트가 언제 가상 디스크 파일(들)(406)로부터 할당 해제될 수 있는지를 판정하도록 파일 시스템에 의해 발행되는 제로 커맨드의 WRITE SAME, TRIM, 및/또는 UNMAP을 이용할 수 있다. TRIM 커맨드는 게스트 운영 시스템(412) 또는 운영 시스템(508)에 의해 발행될 수 있다. 예를 들어, 게스트 운영 시스템(412) 또는 운영 시스템(508)이 실행될 때, 파일 시스템(414)은 일부 섹터가 더 이상 필요하지 않다고 판정하고 TRIM 커맨드를 발행할 수 있다. 이와 달리 또는 추가적으로, 가상 디스크 파서(404)는 파일 시스템(414)이 사전결정된 간격으로 또는 사전결정된 기준이 충족되었을 때, 예컨대 가상 장치(410)가 인스턴스화되었거나, 가상 장치(410)가 셧다운되었거나, 빛의 사용 하에서 등의 경우에 TRIM 커맨드를 발행하라고 요청하도록 구성될 수 있다.
간략하게, TRIM 커맨드는 저장된 데이터가 데이터 저장 디바이스에 의해 선택적으로 폐기될 수 있도록 어떤 섹터가 더 이상 사용되지 않는 것으로 간주되는지와 관련하여 데이터 저장 디바이스에 알려주도록 사용된다. 자유 공간 TRIM 커맨드라고 지칭되는 TRIM 커맨드의 일 유형은, 파일 시스템(414)에 의해 섹터가 더 이상 파일 시스템(414)에 의해 사용되지 않음을 신호하도록 사용될 수 있지만, 표준 TRIM 커맨드라 불리는 다른 TRIM 커맨드는 그렇지 않다. 두 유형의 TRIM 커맨드 사이의 차이점은, 섹터가 자유 공간 TRIM을 겪을 때 파일 시스템(414)이 사용자 공간 애플리케이션 등이 섹터로부터 판독하는 것을 방지함으로써 섹터에 대해 보안을 제공한다는 것이다. 파일 시스템(414)이 이러한 방식으로 트리밍된 섹터로의 액세스를 보호한다는 사실은 가상 디스크 파일 공간을 효율적으로 할당하는 능력을 증가시키는 데에 사용될 수 있다. 이러한 특정 측면은 아래의 단락에서 보다 자세하게 기술된다.
예시적인 구성에서, 가상 디스크 파서(404)는 가상 디스크 익스텐트가 TRIM 커맨드에 의해 완전히 커버되었을 때 환원 동작을 실행하도록 구성될 수 있다. 다시 말하면, 가상 디스크 파서(404)는 가상 디스크 익스텐트 내의 모든 섹터들을 식별하는 가상 디스크 섹터의 범위를 정의하는 TRIM 커맨드의 수신에 응답하여 가상 디스크 익스텐트를 가상 디스크 파일로부터 링크 해제할 수 있다. 동일하거나 다른 실시예에서, 가상 디스크 익스텐트의 일부분을 커버하는 TRIM 커맨드가 수신되었을 때, 가상 디스크 파서(404)는 가상 디스크 파일의 어느 일부분이 트리밍된 섹터에 상응하는지를 판정하고 가상 디스크 파일의 그 일부분에 대한 TRIM 커맨드를 저장 디바이스(106)에 전송할 수 있다. 이러한 예시에서, 언더라잉 파일 시스템, 예컨대 가상화 시스템 파일 시스템(408), 저장 서버 파일 시스템(504), 또는 컴퓨터 시스템 파일 시스템(514)은 TRIM 커맨드의 오프셋을 번역할 수 있고, 번역된 오프셋을 저장 디바이스(106)로 전송하여 내부 데이터 구조 업데이트를 통해 직접 공간을 환원하거나, 또는 캐시로부터의 데이터를 클리어한다.
동일한 또는 다른 실시예에서, 가상 디스크 익스텐트의 일부분을 커버하는 TRIM 커맨드가 수신되었을 때, 가상 디스크 파서(404)는 어떤 섹터가 TRIM 커맨드를 겪었으며 TRIM 커맨드가 자유 공간 트림인지 아닌지 여부를 나타내는 정보를 저장하도록 구성될 수 있다. 가상 디스크 익스텐트의 나머지가 트리밍된 경우에, 가상 디스크 파서(404)는 가상 디스크 파일로부터 가상 디스크 익스텐트를 할당 해제할 수 있다.
가상 디스크 익스텐트를 할당 해제할 때, 가상 디스크 파서(404)는 가상 디스크 익스텐트를 가상 디스크 익스텐트와 관련된 판독 동작이 어떻게 조절될 수 있는지를 기술하는 상태 정보와 연관시킬 수 있다. 테이블 1은 가상 디스크 파서(404)가 가상 디스크 익스텐트와 연관시킬 수 있고 가상 디스크 파일의 환원을 최적화하기 위해 사용할 수 있는 예시적인 상태 정보를 도시한다. 가상 디스크 익스텐트를 환원하는 능력은 두 가지 상태(기술되거나 기술되지 않거나)를 사용함으로써 하나의 예시에서 성취될 수 있지만, 전형적으로 데이터가 삭제될 때 가상 디스크 파일(702) 내에 저장된 비트 패턴이 지워지지 않기 때문에, 가상 디스크 익스텐트를 기술하도록 선택된 공간이 재사용될 수 있기 이전에 언제 클리어되어야만 하는지 또는 그 공간 안에 앞서 저장된 데이터를 겹쳐쓰기하지 않고도 재사용될 수 있는지를 판정하는 데에 추가적인 상태가 사용될 수 있다. 삭제시에 데이터가 지워지지 않는 이유 중 하나는 데이터를 지우는 것이 프로세스 사이클을 소모하기 때문이며, 일부 저장 디바이스가 각 블록(per-block) 기반의 기록 동작을 수행하도록 구성되었기 때문에, 새로운 데이터로 겹쳐쓰기할 때 데이터를 지우는 것이 보다 효율적이다. 아래의 상태들은 예시적인 것이며 본 발명이 아래의 테이블에 의해 정의되는 상태를 사용하는 것으로 한정되는 것은 아니다.
도 7과 함께 표 1을 참조하면, 열거된 첫 번째 상태는 가상 디스크 익스텐트가 가상 디스크 파일(702)의 섹션에 의해 기술되었음을 나타내는 "맵핑된(mapped)" 상태이다. 예를 들어, 가상 디스크 익스텐트(0)는 "맵핑된" 상태에서 시작하는 것으로 도시되는 예시적인 가상 디스크 익스텐트이다.
표 1의 설명을 계속하면, 가상 디스크 익스텐트는 가상 디스크 익스텐트가 "투명함(transparent)"을 나타내는 상태 정보와 연관될 수 있으며, 즉 가상 디스크 익스텐트가 다른 가상 디스크 파일에 의해 기술된다. 투명 상태에서 가상 디스크 익스텐트에 대한 판독 동작이 가상 디스크 파서(404)에 의해 수신되는 경우에, 가상 디스크 파서(404)는 다른 가상 디스크 파일을 참조할 수 있고 판독에 어떻게 응답할지를 결정하기 위해 자신의 할당 테이블을 체크할 수 있다. 가상 디스크 파서(404)가 가상 디스크 익스텐트에 대한 기록을 수신한 경우에, 가상 디스크 파서(404)는 가상 디스크 익스텐트를 "투명" 상태로부터 "맵핑된" 상태로 전환할 수 있다.
도 7과 함께 표 1의 설명을 계속 보면, 가상 디스크 익스텐트는 또한 "맵핑 해제(unmapped)" 상태와 연관될 수 있다. 이 예시에서, 가상 디스크 익스텐트는 가상 디스크 파일(702)에 의해 기술되지 않으며 고리 내의 어떠한 다른 가상 디스크 파일에 의해서도 기술되지 않는다. 이 예시에서, 맵핑 해제된 상태는 파일 시스템(414)이 가상 디스크 익스텐트에 대한 액세스를 보호한다는 것을 나타내지 않은 TRIM 커맨드를 겪은 가상 디스크 익스텐트를 설명하도록 사용될 수 있다. 다시 말하면, 이 가상 디스크 익스텐트를 이러한 상태로 전환하는 데에 사용되는 TRIM 커맨드는 표준 TRIM 커맨드였다. 가상 디스크 익스텐트가 맵핑 해제된 상태에 있고 익스텐트에 대한 판독을 나타내는 IO 작업이 수신되었을 경우에, 가상 디스크 파서(404)는 0, 제로 토큰, 1, 전부 1을 나타내는 토큰, 또는 예컨대 전부 0, 전부 1과 같은 비정보개시 비트 패턴, 또는 1과 0의 랜덤하게 생성된 패턴으로 응답할 수 있다. 이러한 예시에서, 만약 가상 디스크 파일(702)의 섹션이 이러한 상태에 있는 가상 디스크 익스텐트를 지지하도록 할당되면, 가상 디스크 파서(404)는 할당하기 전에 비정보개시 비트 패턴을 가상 디스크 파일(702)의 섹션에 기록할 수 있거나 또는 가상 디스크 익스텐트를 기술하도록 비정보개시 비트 패턴을 이미 포함하는 섹션을 선택한다. 도 7의 가상 디스크 익스텐트(6)는 맵핑 해제된 상태로서 표시되었다.
실시예에서, 맵핑 해제 또는 초기화 해제된 익스턴트를 정의하는 데이터가 유기될 수 있고 맵핑 해제 또는 초기화 해제 상태는 데이터가 여전히 가상 디스크 파일(702) 내에 존재함을 의미하는 앵커드(anchored) 및 데이터가 유지될 수 있거나 유지될 수 없음을 의미하는 비앵커드(anchored)의 두 가지 하위 상태를 포함할 수 있다. 이들 하위 상태가 사용되는 경우에, 가상 디스크 파서(404)는 맵핑 해제되었지만 앵커드된 익스텐트를 섹션 또는 섹션들을 제로로 만들지 않고 데이터를 저장하는 섹션 또는 섹션들을 할당함으로써 맵핑된 상태로 전환할 수 있다. 유사하게, 가상 디스크 파서(404)가 가상 디스크(402)의 적어도 일부분에 대해 맵핑 해제된 것처럼 초기화 해제된 익스텐트를 처리하도록 구성되는 반면, 가상 디스크 파서(404)는 초기화 해제되었지만 앵커드된 익스텐트가 맵핑된 상태로 전환되는 동안 섹션 또는 섹션들을 제로로 만들지 않고 데이터를 저장하는 섹션 또는 섹션들을 할당함으로써 제로가 되는 것을 방지할 수 있다.
표 1은 추가적으로 "제로" 상태를 기술한다. 이 예시에서, 가상 디스크 익스텐트는 가상 디스크 파일(702)에 의해 기술되지 않고 고리 내의 임의의 다른 가상 디스크 파일에 의해서도 기술되지 않지만, 가상 디스크 익스텐트가 전부 제로로 판독되도록 요청된다. 이러한 예시에서, 제로 상태는 TRIM 커맨드를 겪은 가상 디스크 익스텐트를 기술하거나 또는 프로그램이 전부 제로를 기록한 가상 디스크 익스텐트를 기술하는 데에 사용될 수 있다. 예를 들어, 사전에 저장했던 데이터가 완전히 겹쳐쓰기되었음을 보장하도록 삭제 유틸리티 프로그램이 가상 디스크 익스텐트(4)에 전부 제로를 기록하였다고 가정하자. 가상 디스크 익스텐트가 제로화된 상태(zeroed state)에 있는 경우에, 그리고 익스텐트로의 판독을 나타내는 IO 작업이 수신되었을 때, 가상 디스크 파서(404)는 제로 또는 제로 토큰(오프로드 판독 동작에서)으로 응답할 수 있다. 기록이 이러한 상태의 가상 디스크 익스텐트와 관련되는 경우에, 가상 디스크 파서(404)는 가상 디스크 파일(702)의 섹션을 제로화하고 이미 제로인 가상 디스크 파일(702)의 섹션을 선택하거나 가상 디스크 익스텐트를 기술하는데 사용하며, 다시 가상 디스크 익스텐트로 할당한다. 이러한 실시예에서, 제로화된 공간은 데이터 구조 또는 가상 디스크 파일(702)을 이용하여 추적될 수 있다. 데이터 구조는 가상 디스크 파일(702)이 열렸을 때, 가상 디스크 파일(702)이 닫혔을 때, 등 주기적으로 업데이트될 수 있다. 맵핑 해제되거나 초기화 해제된 상태에 있는 익스텐트로부터의 판독은 가상 디스크 파서(404)로 하여금 선택적으로 가상 디스크 파서(404)가 맵핑 해제되거나 초기화 해제된 상태에 있는 익스텐트에 대한 섹터 안정성을 제공하도록 구성된 구성 내의 제로 상태로 익스텐트를 전환하게 할 수 있다.
테이블 1은 또한 "초기화 해제된(uninitialized)" 상태로 지칭되는 상태를 기술한다. 초기화 해제된 상태는 가상 디스크 익스텐트가 가상 디스크 파일(702)에 의해 기술되지 않고 파일 시스템(414)이 가상 디스크 익스텐트로의 액세스를 보호하는 것을 나타낸다. 즉, 파일 시스템(414)은 사용자 애플리케이션이 이러한 가상 디스크 익스텐트 내의 섹터를 판독하는 것을 방지하도록 구성된다. 이러한 예시에서, 초기화 해제된 상태는 자유 공간 TRIM 커맨드를 겪은 가상 디스크 익스텐트를 기술하도록 사용될 수 있다. 가상 디스크 익스텐트가 초기화 해제된 상태에 있고 익스텐트에 대한 판독을 나타내는 IO 작업이 수신된 경우에, 가상 디스크 파서(404)는 임의의 데이터, 즉 가상 디스크 파일(702) 외의 거의 모든 곳으로부터의 비트 패턴, 0, 1, 비정보개시 비트 패턴 등으로 응답할 수 있으며, 가상 디스크 파서(404)가 가상 디스크 익스텐트에 대한 보안을 제공하지 않기 때문에, 요청을 넘어 오직 가상 디스크 페이로드 데이터 및 비보안영향(non-security-impacting) 메타데이터만이 가상 디스크 클라이언트에 노출될 수 있다. 기록이 이러한 상태에 있는 가상 디스크 익스텐트와 관련된 경우에, 가상 디스크 파서(404)는 섹션 내에 저장될 수 있는 임의의 데이터를 바꾸어야 할 필요 없이 가상 디스크 파일(702)의 섹션을 간단히 할당할 수 있다. 결과적으로, 공간을 미리 클리어하지 않고도 가상 디스크 파일 내에서 할당될 수 있기 때문에 이러한 상태가 가장 바람직하다. 도 7의 가상 디스크 익스텐트(5)는 초기화 해제된 상태로서 나타내어졌으며 가상 디스크 파일(702)은 가상 디스크 익스텐트를 지지하지 않는다.
상태 정보가 각각의 가상 디스크 익스텐트와 연관되면, 가상 디스크 파서(404)는 가상 디스크(402)가 배열된 방식에 대한 추가적인 정보를 관리자 등에게 제공하도록 구성될 수 있다. 예시적인 실시예에서, 가상 디스크 파서(404)는 상태 정보에 기초하여 소정의 파라미터를 포함하는 오프셋 질의에 응답하도록 구성될 수 있다. 예를 들어, 사용자는 반복을 위한 질의를 발행할 수 있으며, 주어진 바이트 오프셋에서 시작하여 가상 디스크(402)를 통해 "맵핑," "맵핑 해제," "투명함" 등과 같은 특정 기준을 만족시키는 범위를 위치시킨다. 또한, 사용자는 디퍼런싱 가상 디스크 파일을 감안하기 위해서 얼마나 "깊은" 질의를 해야 하는지 선택할 수 있다. 예를 들어, 도 7을 참조하면, 사용자는 깊이 2를 설정하여 질의를 실행할 수 있다. 응답하여, 가상 디스크 파서(202)는 예컨대 가상 디스크 파일(610, 612)과 같은 고리 내의 마지막 두 개의 가상 디스크 파일에 대한 질의를 실행할 것이다. 특정 질의들은 다음 비-투명 범위(들), 다음 비-제로 범위(들), 다음 정의된 범위(들), 다음 초기화된 범위(들) 등을 획득하도록 질의를 포함할 수 있다. 간략하게, 다음 정의된 범위에 대한 질의는 정의된 데이터를 포함하는 다음 범위(들)를 반환하도록 구성될 수 있다(예컨대, 맵핑 또는 제로화된 상태에 있는 섹터, 이때 투명 섹터는 그 섹터에 대한 부모 가상 디스크 파일의 상태로 리졸브한다). 다음 초기화 범위(들)에 대한 질의는 초기화 해제된 상태가 아닌 상태에 있는 데이터를 포함하고 이때 투명 섹터가 자신에 대한 부모 가상 디스크 파일의 상태를 리졸브하는 다음 범위(들)를 반환할 수 있다.
이제 도 8을 참조하면, 가상 디스크 파서(404)가 가상 디스크 익스텐트를 가상 디스크(402)에 저장되는 파일 또는 다른 데이터에 응답하여 하나의 상태로부터 다른 상태로 전환할 수 있는 방법의 특정 예시를 도시한다. 예를 들어, 사용자가 가상 장치(410) 내의 데이터베이스 관리 프로그램을 사용하여 데이터베이스를 생성한다고 가정하자. 사용자는 파일 내에 데이터베이스를 저장할 수 있으며 파일 시스템(414)은 가상 디스크(402)가 파일(802)을 저장하는 장소를 판정할 수 있다. 파일 시스템(414)은 파일(802)을 예컨대 가상 디스크 익스텐트(3-5) 내에 존재하는 섹터에 기록하도록 하나 이상의 디스크 기록을 발행할 수 있다. 이러한 예시에서, 가상 디스크 익스텐트(3)는 "맵핑"되고 가상 디스크 파서(404)는 파일(802)의 첫 번째 부분을 할당 테이블(416)에 의해 식별되는 섹션에 기록할 수 있다.
다른 한편으로, 가상 디스크 익스텐트(4, 5)는 "제로" 및 "초기화 해제된" 상태에 있다. 이 예시에서, 가상 디스크 파서(404)는 가상 디스크 익스텐트(4)를 지원하도록 가상 디스크 파일(702)의 사용되지 않은 섹션을 선택하고 가상 디스크 익스텐트(4)가 제로화된 상태에 있다고 판정할 수 있다. 이러한 판정에 응답하여, 가상 디스크 파서(404)는 가상 디스크 익스텐트(4)를 기술하는 데에 사용될 예정인섹션을 제로화하거나 섹션을 이미 전부 제로인 곳에 위치시킬 수 있다. 제로화된 섹션에 위치시키거나 섹션의 제로화 프로세스가 완료된 후에, 가상 디스크 파서(404)는 가상 디스크 익스텐트(4)가 가상 디스크 파일(702) 내에서 기술된 위치를 정의하는 섹션의 첫 번째 바이트를 나타내는 가상 디스크 파일 바이트 오프셋을 식별하는 정보를 생성할 수 있고 그것을 할당 테이블(416)에 저장한다. 가상 디스크 파서(404)는 그 다음 가상 디스크 익스텐트(4)와 연관된 상태 정보를 "맵핑된" 상태임을 나타내도록 변경할 수 있다. 그 다음 익스텐트(4)로의 기록의 일부가 위치된 섹션에 기록될 수 있다.
이와 달리, 현재 제로 상태에 있는 가상 디스크의 전체 익스텐트를 커버하는 기록의 부분에 있어서, 가상 디스크 파일의 위치된 섹션이 선택될 수 있고, 기록의 부분은 섹션으로 발행될 수 있으며, 기록이 완료됨에 따라 가상 디스크 파서(404)는 가상 디스크 익스텐트와 연관된 상태 정보가 익스텐트가 "맵핑된" 상태임을 나타내도록 변경할 수 있다. 이와 달리, 현재 제로 상태에 있는 가상 디스크 익스텐트의 부분만을 커버하는 기록의 일부분에 있어서, 가상 디스크 파일의 위치된 섹션이 선택될 수 있고, 기록의 일부분이 섹션에 발행될 수 있고, 제로화 기록이 섹션의 나머지에 발행될 수 있으며, 기록을 완료함에 따라, 가상 디스크 파서(404)는 익스텐트가 "맵핑"되었음을 나타내도록 가상 디스크 익스텐트와 연관된 상태 정보를 변경할 수 있다. 당업자는 포스-유닛-액세스(force-unit-access) 기록과 같은 라이트 스루(write through) 기록 또는 플러시(flush)를 이용하여 주어진 기록의 순서가 강제될 수 있음을 인식할 것이다.
유사하게, 가상 디스크 파서(404)는 가상 디스크 익스텐트(5)를 지지하도록 가상 디스크 파일(702)의 사용되지 않은 섹션을 선택하고 가상 디스크 익스텐트(5)가 컨설팅 할당 테이블(416)에 의해 초기화 해제된 상태에 있다고 판정할 수 있다. 이러한 판정에 응답하여, 가상 디스크 파서(404)는 선택된 섹션의 콘텐츠를 변조하지 않고 가상 디스크 익스텐트(5)를 기술하도록 섹션을 할당할 수 있다. 가상 디스크 파서(404)는 섹션의 첫 번째 바이트를 나타내는 가상 디스크 파일 바이트 오프셋을 식별하는 정보를 생성할 수 있으며, 이것은 가상 디스크 익스텐트(4)가 가상 디스크 파일(702) 내에서 기술된 위치를 나타내고 섹션의 파일 바이트 오프셋을 할당 테이블(416) 내에 저장한다. 그 다음 가상 디스크 파서(404)는 가상 디스크 익스텐트(5)가 "맵핑"되었음을 나타내도록 자신과 연관된 상태 정보를 변경한다.
도 9는 파일(802)에 대한 삭제 동작 및 가상 디스크 익스텐트(7)의 콘텐츠를 제로화하는 동작에 응답하여 가상 디스크 파서(404)가 하나의 상태로부터 다른 상태로 가상 디스크 익스텐트를 전환할 수 있는 방법의 다른 특정 예시를 도시한다. 예를 들어, 사용자는 파일(802)을 삭제하였을 수 있고 파일 시스템(414)은 TRIM 커맨드를 발행하였을 수 있다. 이러한 예시에서, 가상 디스크 파서(404)는 가상 디스크 익스텐트(4, 5)를 완전히 커버하고 가상 디스크 익스텐트(3)를 부분적으로 커버하는 가상 디스크 섹터의 범위를 포함하는 TRIM 커맨드를 수신할 수 있다. 가상 디스크 익스텐트(4, 5)가 완전히 트리밍되었다는 판정에 응답하여, 가상 디스크 파서(404)는 할당 테이블(416)로부터 링크를 제거하고 가상 디스크 익스텐트(4)를 가상 디스크 파일(702)이 이러한 가상 디스크 익스텐트를 지지하지 않음을 나타내는 상태로 전환하도록 구성될 수 있다. 가상 디스크 익스텐트(4)에 대한 할당 테이블 엔트리에 의해 도시되는 바와 같이, 상태 가상 디스크 파서(404)는 파일 시스템(414)이 자유 공간 TRIM 커맨드 또는 표준 TRIM 커맨드를 발행하거나 하지 않는지 여부와 가상 디스크 파서(404)가 어떤 상태를 사용하도록 구성되었는지에 의존하여 가상 디스크 익스텐트를 전환할 수 있다. 예를 들어, 가상 디스크 파서(404)는 가상 디스크 익스텐트를 기술하기 위해 맵핑 또는 제로의 두 가지 상태를 사용하도록 구성될 수 있다. 이와 달리, 가상 디스크 파서(404)는 가상 디스크 익스텐트를 기술하기 위해 맵핑, 제로, 맵핑 해제의 세 가지 상태를 사용하도록 구성될 수 있다. 이와 달리, 가상 디스크 파서(404)는 맵핑, 제로, 맵핑 해제 및 초기화 해제의 네 가지 상태를 사용하도록 구성될 수 있다. 맵핑 해제와 초기화 해제 사이의 구별은 표준 TRIM 커맨드와 자유 공간 TRIM 커맨드 사이의 구별에 따른다. 파서가 초기화 해제된 상태를 사용하지 않도록 구성된다면, 자유 공간 TRIM은 보통 TRIM으로서 처리된다. 도면에 도시된 바와 같이, 파일(702)의 일부는 가상 디스크 파일(702)로부터 완전히 클리어하는 것이 비효율적이기 때문에 여전히 가상 디스크 파일(702) 내에 저장된다.
가상 디스크 익스텐트(5)가 부분적으로 TRIM에 의해 커버되었기 때문에, 가상 디스크 파서(404)는 다양한 방식들 중 하나로 이러한 익스텐트를 조절할 수 있다. 일 구성에서, 가상 디스크 파서(404)는 맵핑된 상태에 익스텐트(5)를 남겨둘 수 있다. 이러한 구성에서, 가상 디스크 파서(404)는 TRIM 정보가 전체 익스텐트에 대해 수신되었을 때 익스텐트를 전환할 수 있다. 이와 달리, 익스텐트를 기술하는 공간이 할당 해제될 수 있다는 표시를 제공하는 보다 많은 TRIM 정보가 수신된다는 바람에서 가상 디스크 파서(404)는 익스텐트를 부분적으로 커버하는 TRIM 정보를 추적할 수 있다.
유사하게, 가상 디스크 익스텐트는 또한 TRIM에 의해 부분적으로 커버된다. 이러한 예시에서, 가상 디스크 파서(404)는 맵핑된 상태로 남겨질 수 있고 또한 예컨대 가상화 파일 시스템(408), 저장 서버 파일 시스템(504), 또는 컴퓨터 시스템 파일 시스템(514)과 같은 언더라잉 파일 시스템에 대해 더 이상 사용되지 않는 가상화 디스크 파일(702)의 부분을 기술하는 TRIM 정보를 전송하도록 구성될 수 있다.
파일(802)의 삭제에 추가하여, 도 9는 가상 디스크 익스텐트(7)가 제로화된 예시를 도시한다. 가상 디스크 파서(404)는 가상 디스크 익스텐트(7)의 전체 범위가 제로화되었음을 나타내는 파일 시스템(414)에 의해 발행된 IO 작업을 스캐닝할 수 있다. 이러한 판정에 응답하여, 가상 디스크 파서(404)는 익스텐트 할당 테이블(416)로부터의 링크를 제거하고 가상 디스크 익스텐트(7)를 제로 상태로 전환하도록 구성될 수 있다. 도면에 도시된 바와 같이, 가상 디스크 익스텐트(7)의 앞선 콘텐츠는 여전히 가상 디스크 파일(702) 내에 저장된다.
도 10을 참조하면, 가상 디스크 파일(608, 604, 600)에 의해 정의된 가상 디스크 파일들의 고리와 유사할 수 있는 가상 디스크 파일들(1002, 1004, 1006)의 그룹에 의해 적어도 부분적으로 기술되는 가상 디스크(402)가 도시되었다. 이러한 예시적인 실시예에서, 가상 디스크(402)를 나타내는 데이터는 복수의 가상 디스크 파일을 가로질러 파기되었다. 이러한 예시적인 실시예에서, 가상 디스크 파서(404)가 가상 디스크 익스텐트(1, 2)를 판독하고자 시도할 때, 가상 디스크 파서(404)는 가상 디스크 파일(1002)에 대한 할당 테이블에 액세스하고 이들 익스텐트들이 투명하다고 판정할 수 있다. 다음으로, 가상 디스크 파서(404)는 가상 디스크 파일(1004)에 대한 할당 테이블에 액세스하여 이들 익스텐트들이 투명하다고 판정할 수 있다. 마지막으로, 가상 디스크 파서(404)는 조부(grandparent) 가상 디스크 파일(1006)에 대한 할당 테이블에 액세스하고 이들 익스텐트들이 정의되었다고 판정할 수 있다.
아래에는 동작 절차를 도시하는 일련의 순서도가 설명되었다. 설명을 용이하게 하기 위해, 순서도는 초기 순서도가 전반적인 "큰 그림"을 통해 구현을 제시하고 후속하는 순서도가 점선으로 도시된 추가적인 추가 및/또는 세부사항을 제공하도록 조직화되었다. 또한, 당업자는 점선에 의해 도시된 동작 절차가 선택적으로 고려될 수 있음을 이해할 수 있을 것이다.
이제 도 11을 참조하면, 가상 디스크 파일 내의 공간을 환원하기 위한 동작(1100, 1102, 1104, 1106)을 포함하는 동작 절차가 도시되었다. 동작(1100)은 동작 절차를 시작시키고, 동작(1102)은 가상 디스크 익스텐트를 포함하는 가상 디스크를 인스턴스화(instantiating)하는 것을 도시하며, 이때 가상 디스크 익스텐트는 가상 디스크 파일로부터 분리된다. 도 4, 5a 또는 5b를 간략하게 참조하면, 가상 디스크(402)는 가상 디스크 파서(404)에 의해 예컨대 실행가능한 명령어 및 연관된 인스턴스 데이터로 인스턴스화될 수 있으며, 이는 하나 이상의 가상 디스크 파일 내에 저장된 데이터를, 하드 드라이브의 행동을 모방함으로써 파일 시스템(414)으로부터 동작들을 판독/기록하도록 조정하게 구성될 수 있는 논리적 하드 드라이브로서 노출시킨다. (도 6에 도시된 바와 같은 하나 이상의 파일일 수 있는) 가상 디스크 파일(406)은 물리적 하드 드라이브, 즉 디스크 파티션, 파일 시스템 등에서 일반적으로 발견되는 것을 저장할 수 있다. 도 7을 참조하면, 가상 디스크(402)는 복수의 익스텐트를 포함하는 것으로 도시되었으며, 이들 중 일부는 가상 디스크 파일(702)의 임의의 섹션으로부터 분리된다.
특정한 예시에서, 익스텐트가 블록이라고 가정하자. 이러한 예시에서, 가상 디스크 파일(702) 내의 하나 이상의 섹션으로부터 랜덤 액세스 메모리로 로딩될 수 있는 할당 테이블(416)이 가상 디스크(402) 내의 가상 디스크 블록들을 가상 디스크 파일(702)의 익스텐트 크기화된(예컨대, 블록 크기화된) 섹션들로 연결하는 정보를 저장하는 데에 사용될 수 있다. 할당 테이블(416)은 또한 가상 디스크(402) 내의 각각의 가상 디스크 블록에 대한 상태 정보를 저장할 수 있다. 잠재적으로 논-제로 데이터를 포함하는 가상 블록은, 블록이 맵핑된 상태에 있음을 나타내는 상태 정보와 연관될 수 있다. 즉, 가상 디스크 파일(702)의 섹션이 가상 디스크(402)의 블록을 설명하도록, 예컨대 데이터를 저장하도록 할당되었다. 가상 디스크 블록(0-3, 7)은 이러한 상태에 있는 블록들의 예시이다. 도면에 도시된 바와 같이, 가상 디스크 블록(4, 5, 6, 8, 9)은 유효한 가상 디스크 블록일 수 있지만, 이러한 가상 디스크 블록은 가상 디스크 파일(702) 내에 할당된 어떠한 공간도 갖지 않을 수 있다. 파일 시스템(414)이 이러한 블록에 기록될 수 있기 때문에, 예시적인 실시예에서, 이러한 가상 디스크 블록들은 그들에 대한 기록 및/또는 판독 동작에 대해 어떻게 응답해야 할지를 결정하도록 가상 디스크 파서(404)에 의해 사용될 수 있는 정보와 연관될 수 있다.
도 11을 간략하게 다시 참조하면, 동작(1104)은 컴퓨터 시스템이 통상적으로 가상 디스크 파일의 섹션 내에 사전 존재하는 비트 패턴에 겹쳐쓰지 않고도 가상 디스크 익스텐트를 설명하도록 디스크와 연관된 상태 정보에 기초하여 가상 디스크 파일의 섹션을 할당하기 위한 회로를 포함할 수 있음을 도시한다. 예를 들어, 도 8을 다시 참조하면, 가상 디스크 파서(404)는 가상 디스크 익스텐트의 일부분에 기록하라는 IO 작업을 수신할 수 있다. 기록 IO 작업의 수신에 응답하여, 가상 디스크 파서(404)는 할당 테이블(416)을 검사하고 가상 디스크 파일(702) 내의 공간이 가상 디스크 익스텐트를 기술하도록 할당되지 않았는지 여부를 판정하며, 가상 디스크 파일(406)의 섹션을 가상 디스크 익스텐트에 다시 할당할 수 있다. 따라서, 파일 시스템(414)에 의해 가상 디스크 익스텐트로 기록된 데이터는 가상 디스크 파일(702)의 섹션 내의 가상 디스크 파서(404)에 의해 저장될 것이다.
이러한 예시에서, 가상 디스크 파서(404)는 할당 테이블(416) 내의 상태 정보에 기초하여 가상 디스크 익스텐트를 기술하기 위해 사용하기에 앞서서 (0, 1, 또는 비트 패턴을 개시하는 임의의 다른 비정보 모두를 기록함으로써) 가상 디스크 파일(702)의 섹션 내에 이미 저장된 임의의 데이터를 겹쳐쓰지 않을 수 있다. 예시적인 구성에서, 가상 디스크 익스텐트가 파일 시스템 자유 공간에 의해 커버되기 때문에, 상태 정보는 파일 시스템(414)이 이러한 가상 디스크 익스텐트로의 액세스를 지키고 있음을 나타낼 수 있다. 특정한 예시에서, 상태 정보는 가상 디스크 익스텐트가 "비초기화된(uninitialized)" 상태에 있음을 나타낼 수 있다. 가상 디스크 익스텐트를 클리어하지 않고 할당하는 것은, 가상 디스크 파일(702)의 섹션에 겹쳐쓰기에 사용되었을 프로세서 사이클과 IO 작업을 절약하는 추가적인 이익을 제공한다.
동작(1104)의 특정한 예시에서, 도 7을 참조하여 익스텐트가 블록이며 파일 시스템(414)이 파일(802)을 표시하는 비트 패턴을 가상 디스크 블록(3-5)에 기록하도록 하는 IO 작업을 가상 디스크(402)에 전송한다고 가정하자. 이러한 IO 작업의 수신에 응답하여, 가상 디스크 파서(404)는 가상 디스크 블록(5)이 가상 디스크 파일(406)의 임의의 섹션에 의해 돌아오지 않았으며 초기화되지 않았다고 판정할 수 있다. 이러한 판정에 응답하여, 가상 디스크 파서(404)는 IO 작업에 의해 커버되지 않은 섹션의 일부분 내에 앞서 저장된 데이터를 겹쳐쓰지 않고 파일(802)을 나타내는 비트 패턴의 일부분을 기록하고 가상 디스크 블록(5)을 기술하도록 가상 디스크 파일(702)의 섹션을 할당하도록 구성될 수 있다.
도 11을 다시 참조하면, 작업(1106)은 컴퓨터 시스템이 통상적으로 가상 디스크 익스텐트가 가상 디스크 파일에 의해 기술되었음을 나타내도록 가상 디스크 익스텐트와 연관된 상태 정보를 변조하도록 구성된 회로를 포함할 수 있음을 도시한다. 예를 들어, 도 8을 다시 참조하면, 가상 디스크 파서(404)는 가상 디스크 파일(702)이 가상 디스크 익스텐트를 기술하고 있음을 반영하도록 가상 디스크 익스텐트(5)와 연관된 상태 정보를 변조, 예컨대 메모리 내에 겹쳐쓰기할 수 있다. 일 구성에서, 상태 정보의 변조 및 기록은 동시에 발생할 수 있다. 예를 들어, 가상 디스크 파서(404)는 가상 디스크 익스텐트(5)가 "맵핑되었음"을 나타내는 할당 테이블(416) 내의 정보를 저장할 수 있다. 결과적으로, 가상 디스크 익스텐트(5)의 섹터들에 연관된 후속하는 판독 동작들은 할당 테이블(416) 내에서 식별된 바이트 오프셋에 저장된 비트 패턴을 반환함으로써 가상 디스크 파서(404)에 의해 조절될 것이다. 가상 디스크 파서(404)는 예컨대, 이러한 절차를 트리거링한 기록 동작과 연관된 비트 패턴과 같은 데이터를 가상 디스크 익스텐트를 기술하도록 할당된 가상 디스크 파일(702)의 섹션에 기록하고, 동시에 가상 디스크(702)의 섹션에 비트 패턴을 기록하라는 IO 작업을 가상화 시스템 파일 시스템(408), 저장 서버 파일 시스템(504), 또는 컴퓨터 시스템 파일 시스템(514)으로 발행할 수 있다. 후속하여 발행되는 플러시 커맨드의 완료 이전과 같은 어떤 시점에서, 비트 패턴은 영구 저장 유닛(460) 내에서 지속될 것이다.
이제 도 12를 참조하면, 도 11에 의해 설명된 것과 관련하여 실행될 수 있는 추가적인 동작들을 도시한다. 동작(1208)은, 논-제로 가상 디스크의 섹터, 불투명 상태인 가상 디스크의 섹터, 맵핑된 상태인 가상 디스크의 섹터, 및/또는 초기화된 상태에 있는 가상 디스크의 섹터를 식별하는 정보를 이용하여 오프셋 질의(query) 커맨드에 응답하기 위한 회로를 포함할 수 있음을 나타낸다. 예를 들어, 가상 디스크 파서(404)는 불투명한 상태, 즉 투명하지 않은 상태, 맵핑된 상태, 즉 가상 디스크 파일(406) 내의 데이터를 포함하는 가상 디스크(402)의 섹터, 정의된 상태, 즉 맵핑되거나 제로인 가상 디스크(402)의 섹터, 및/또는 초기화된 상태, 즉 초기화되지 않은 상태가 아닌 상태와 같은 시작 바이트 오프셋이 주어지고, 가상 디스크 상의 다음 바이트 오프셋과 같은 가상 디스크(402)에 대한 정보를 생성하라는 커맨드를 수신하도록 구성될 수 있다. 커맨드는 오직 특정된 수의 가상 디스크 파일만이 검사된다는 점에서 깊이-한정적일 수 있으며, 특정 수의 가상 디스크 파일이 검사된 후에도 투명한 것으로 남아있는 임의의 범위가, 어떤 상태 질의가 요청되었는지와 무관하게 상태 질의에 의해 표시된 범위에 추가하여 다시 요청자에게 보고된다. 이러한 커맨드의 수신에 응답하여, 가상 디스크 파서(404)는 가상 디스크(402) 상의 초기 바이트 오프셋에서 시작할 수 있고 커맨드와 연관된 범위가 검출되어 원하는 정보를 반환할 때까지 응답 범위 또는 범위들의 세트를 구축할 수 있다.
도 12를 계속 참조하면, 동작(1210)은 가상 디스크 파일을 제어하는 파일 시스템이 트림(trim) 커맨드, 맵핑 해제(unmap) 커맨드, 제로 동일 기록 커맨드(write same of zero command) 및 제로 토큰의 오프로드 기록 커맨드(offload write of a zero token command)를 포함하는 커맨드들의 그룹으로부터 선택되는 적어도 하나의 커맨드를 발행하라는 요청을 전송하는 것을 도시한다. 다시 도 4, 5a, 또는 5b를 참조하면, 가상 디스크 파서(404)는 파일 시스템(414)에 요청을 발행하도록 구성될 수 있다. 이러한 예시에서의 요청은 TRIM 커맨드를 발행하라는 파일 시스템(414)에 대한 것일 수 있다. 예를 들어, 가상 디스크 파서(404)는 가상 디스크(402)의 인스턴스화 바로 후에, 및/또는 가상 장치(410)의 셧다운(shutting down), 하이버네이트(hibernating) 등에 앞서, 주기적으로 파일 시스템(414)에 하나 이상의 요청을 발행할 수 있다. 이러한 요청에 응답하여, 파일 시스템(414)은 그것이 더 이상 사용하지 않는 가상 디스크(402)의 섹터를 판정하고 이러한 사용되지 않는 섹터를 식별하는 하나 이상의 TRIM 커맨드를 가상 디스크 파서(404)에 전송할 수 있다. 가상 디스크 파서(404)는 따라서 파일 시스템(414)에 의해 더 이상 사용되지 않는 섹터들의 범위의 리스트 및 파일 시스템(414)이 이들 섹터로 액세스하는 것을 막기 위해 파일 시스템(414)이 이들 섹터의 범위를 판독하는 것을 방지하는지 여부와 같은 트림 정보를 수신할 수 있다. 가상 디스크 파서(404)는 정보를 수신할 수 있고, 이러한 범위에 의해 커버되는 가상 디스크 익스텐트를 가상 디스크 파일(702) 내의 공간이 환원될 수 있는 상태로 전환할 수 있다.
계속해서 도 12를 참조하면, 동작(1212)은 컴퓨터 시스템이 제 2 가상 디스크 익스텐트의 일부분을 트리밍하라는 요청의 수신에 응답하여 제 2 가상 디스크 익스텐트의 일부분에 상응하는 가상 디스크의 일부분을 판정하고, 저장 디바이스 상의 가상 디스크 파일을 저장하도록 구성된 파일 시스템에 가상 디스크 파일의 판정된 일부분에 대한 트림 커맨드를 전송하는 회로를 포함할 수 있음을 도시한다. 예르르 들어, 도 8을 참조하면, 파일 시스템(414)은 가상 디스크 익스텐트의 일부분을 식별하는 TRIM 커맨드를 발생할 수 있으며, 예컨대 이 TRIM 커맨드는 하나 이상의 가상 디스크 블록을 형성하는 섹터의 일부에 상응하는 섹터의 범위만을 식별할 수 있다. 특정한 예시에서, 파일 시스템(414)이 파일(802)을 저장하는 데에 사용되는 공간을 트리밍한다고 가정하자. 이렇게, 트림 커맨드는 가상 디스크 익스텐트(3)를 구성하는 섹터들의 일부분만을 식별할 수 있다. 이 예시에서, 가상 디스크 파서(404)는 이 섹터들의 범위가 가상 디스크 익스텐트의 서브섹션을 커버한다고 판정하고 가상 디스크 익스텐트의 트리밍된 섹터에 응답하여 가상 디스크 파일(702)의 일부분을 판정하도록 할당 테이블(416) 내의 맵핑 정보를 이용할 수 있다. 가상 디스크 파서(404)는 가상 디스크 익스텐트의 트리밍된 섹터들에 상응하는 가상 디스크 파일(702)의 일부분을 가상화 시스템 파일 시스템(408) 또는 저장 서버 파일 시스템(504)으로 트리밍하라는 요청을 발행할 수 있다. 가상화 시스템 파일 시스템(408) 또는 저장 서버 파일 시스템(504)은 트림 커맨드를 이용하여 가상 디스크 파일(406)을 지지하는 섹터들의 일부분을 트리밍하고, 캐시로부터 데이터를 플러시하고, 내부 버퍼를 클리어하는 등으로부터 이익을 얻도록 구성될 수 있다.
이와 달리, 가상 디스크 파서(404)는 가상 디스크 익스텐트의 일부분이 트리밍되었는지를 나타내는 정보와 그것이 자유 공간 트리밍이었는지 아닌지 여부를 나타내는 정보를 저장할 수 있다. 게스트 운영 시스템(412) 또는 운영 시스템(508)이 구동될 때, 이는 결과적으로 제로이거나 가상 디스크 익스텐트의 남은 부분은 트리밍할 수 있다. 이러한 상황에 응답하여, 가상 디스크 파서(404)는 가상 디스크 익스텐트를 가상 디스크 파일(702)에 의해 기술되지 않은 상태로 전환하도록 판정하고 가상 디스크 익스텐트의 다른 일부분이 어떻게 트리밍되겄거나 제로화되었는지에 기초하여 상태를 선택할 수 있다. 가상 디스크 파서(404)는 가상 디스크 익스텐트의 다른 일부분이 다른 기술되지 않은 상태에 배치될 수 있을 때 가상 디스크 익스텐트를 전환하도록 대부분의 제한적인 상태를 선택하도록 구성될 수 있으며, 제로 상태는 가장 제한적이고, 비초기화는 가장 덜 제한적인 상태이며, 맵핑 해제는 그 중간 정도이다. 예를 들어, 만약 제 1 부분이 제로화되고 그 남은 부분이 비초기화되었을 때, 가상 디스크 파서(404)는 전체 가상 디스크 익스텐트를 제로화 상태로 전환할 수 있다.
도 12의 설명에서 계속하면, 동작(1214)은 컴퓨터 시스템(400)이 가상 디스크 익스텐트를 커버하는 섹터들의 범위를 트리밍하라는 요청의 수신에 응답하여 가상 디스크 파일의 섹션으로부터 가상 디스크 익스텐트를 할당 해제하고 가상 디스크 익스텐트가 가상 디스크 파일 내에 연관된 공간을 갖지 않음을 나타내도록 가상 디스크 익스텐트와 연관된 상태 정보를 변조하도록 구성된 회로를 추가적으로 포함할 수 있음을 도시하고 있다. 예를 들어, 도 9를 참조하면, 가상 디스크 파서(404)는 가상 디스크 익스텐트를 가상 디스크 파일(702)의 섹션에 묶는 할당 테이블(416) 내의 링크를 제거할 수 있다. 이러한 동작은 가상 디스크 익스텐트를 가상 디스크 파일(702)로부터 분리시키는 효과를 갖는다. 링크를 제거하는 것에 추가로, 가상 디스크 파서(404)는 익스텐트가 가상 디스크 파일(702) 내에서 연관된 공간을 갖지 않음을 나타내도록 가상 디스크 익스텐트와 연관된 상태 정보를 변조할 수 있으며, 즉 가상 디스크 파서(404)는 가상 디스크 익스텐트를 맵핑 해제되거나, 초기화되지 않거나, 또는 제로화된 상태로 배치할 수 있다.
가상 디스크 파서(404)는 가상 디스크 익스텐트의 섹터를 제로화하거나 트리밍하라는 요청의 수신에 응답하여 상태 정보를 업데이트하고 링크를 제거할 수 있다. 예를 들어, 섹터를 제로화 또는 트리밍하라는 요청이 수신될 수 있으며 이는 하나 이상의 가상 디스크 익스텐트를 커버할 수 있는 바이트 오프셋의 범위를 식별한다. 이러한 IO 작업의 수신에 응답하여, 가상 디스크 파서(404)는 요청이 가상 디스크 익스텐트의 섹터를 커버한다고 판정할 수 있고 링크를 제거하고 상태 정보를 업데이트하기 위해 전술된 동작들을 실행할 수 있다.
특정한 예시에서, IO 작업이 트리밍이 자유 공간 트리밍임을 나타낸다고 가정하자. 예를 들어, 사용자는 가상 디스크 익스텐트(3-5)에 걸쳐 비트 패턴으로서 저장된 삭제된 파일(802)을 가질 수 있고, 파일 시스템(414)은 그 공간이 더 이상 파일 시스템(414)에 의해 사용되지 않음을 나타낼 수 있다. 자유 공간 TRIM 커맨드의 수신에 응답하여, 가상 디스크 파서(404)는 할당 테이블(416)에 액세스하고 파일 시스템(414)이 익스텐트(3, 5)의 일부분 및 익스텐트(4)의 전체를 트리밍하였음을 판정할 수 있다. 이 예시에서, 가상 디스크 파서(404)는 가상 디스크 익스텐트(4)를 가상 디스크 파일(702)로 맵핑하는 링크를 제거할 수 있고 가상 디스크 익스텐트(4)와 연관된 상태 정보가 가상 디스크 익스텐트가 비초기화되었음을 나타내도록 변조할 수 있다. 이러한 가상 디스크 파일(702)의 섹션은 이제 다른 가상 디스크 익스텐트를 지지하도록 재사용될 수 있다. 또한, 가상 디스크 파서(404)는 가상 디스크 익스텐트(3, 5)가 부분적인 TRIM 커맨드를 겪는다고 판정할 수 있다. 이 예시에서, 가상 디스크 파서(404)는 가상 디스크 익스텐트(3, 5)의 트리밍된 부분을 기술하는 가상 디스크 파일(702)의 일부분을 기술하고 가상 디스크 파일 바이트 오프셋을 기술하는 TRIM 커맨드를 가상화 시스템 파일 시스템(408), 저장 시스템 파일 시스템(504), 또는 컴퓨터 시스템 파일 시스템(514)에 발행하는 가상 디스크 파일 바이트 오프셋을 발견하도록 할당 테이블(416)을 사용할 수 있다.
다른 특정 예시에서, 파일 시스템(414)에 의해 발행된 IO 작업이 파일(802)이 제로화되었음을 나타낸다고 가정하자. 예를 들어, 파일(802)은 신용카드 번호와 같은 민감한 정보를 저장하는 데이터베이스 파일 및 파일(802)에 존재하는 데이터 위에 제로를 기록할 올-제로(all-zero) 버퍼를 갖는 기록 커맨드를 발행함으로써 모두 제로를 기록하여 파일의 콘텐츠를 모두 제로화하도록 판정되는 관리자일 수 있다. 이러한 IO 작업의 수신에 응답하여, 가상 디스크 파서(404)는 가상 디스크 익스텐트(4)가 제로화되었고 이러한 익스텐트가 환원될 수 있음을 판정하도록 구성될 수 있다. 이러한 예시에서, 가상 디스크 파서(404)는 가상 디스크 익스텐트(4)를 가상 디스크 파일(702)에 맵핑하는 링크를 제거할 수 있고, 가상 디스크 익스텐트가 제로화되었음을 나타내도록 가상 디스크 익스텐트(4)와 연관된 상태 정보를 변조할 수 있다. 가상 디스크 파일(702)의 이러한 섹션은 이제 다른 가상 디스크 익스텐트를 지지하도록 재사용될 수 있으며, 가상 디스크 파서(404)는 올-제로로 응답함으로써 가상 디스크 익스텐트(4)에 대한 후속하는 판독 동작에 응답할 수 있다.
다른 특정 예시에서, 사용자는 파일(802)에 저장된 데이터에 겹쳐쓰기하지 않고 파일(802)의 상태를 초기화하도록 벌크 제로(bulk zero)를 기록할 수 있다. 이러한 예시에서, 가상 디스크 파서(404)가 트리밍된 섹션이 제로로 판독되었다고 보고하였을 경우의 TRIM, 가상 디스크 파서(404)가 맵핑 해제된 영역이 제로임을 보고할 때의 UNMAP, 제로의 WRITE SAME, 및/또는 제로 토큰의 오프로드 기록과 같은 커맨드는 익스텐트를 제로화된 상태로 전환하도록 사용될 수 있다.
특정 예시에서, IO 작업이 트리밍이 표준 트리밍임을 나타낸다고 가정하자. 예를 들어, 사용자는 가상 디스크 익스텐트(3-5)에 걸쳐 비트 패턴으로 저장된 삭제된 파일(802)을 가질 수 있지만, TRIM 커맨드는 공간이 파일 시스템(414)에 의해 사용되는지 아닌지 여부를 나타내지 않을 수 있다. 표준 TRIM 커맨드의 수신에 응답하여, 가상 디스크 파서(404)는 할당 테이블(416)에 액세스할 수 있고 파일 시스템(414)이 익스텐트(3, 5)의 일부분 및 익스텐트(4)의 전부를 트리밍하였다고 판정할 수 있다. 이러한 예시에서, 가상 디스크 파서(404)는 가상 디스크 익스텐트(4)가 가상 디스크 파일(702)로 맵핑된 링크를 제거할 수 있고, 가상 디스크 익스텐트가 맵핑 해제되었거나 제로화되었음을 나타내도록 가상 디스크 익스텐트(4)와 연관된 상태 정보를 변조할 수 있다. 이러한 가상 디스크 파일(702)의 섹션은 이제 다른 가상 디스크 익스텐트를 기술하는 데에 재사용될 수 있다. 또한, 가상 디스크 파서(404)는 가상 디스크 익스텐트(3, 5)가 부분적인 TRIM 커맨드를 겪는다고 판정할 수 있다. 이러한 예시에서, 가상 디스크 파서(404)는 가상 디스크 익스텐트(3, 5)의 트리밍된 부분을 기술하는 가상 디스크 파일(702)의 부분을 메이크업하고 전형적으로 범위의 형태로 가상 디스크 파일 바이트 오프셋을 식별하는 TRIM 커맨드를 가상화 시스템 파일 시스템(408)에 발행하는 가상 디스크 파일 바이트 오프셋을 발견하기 위해 할당 테이블(416)을 사용할 수 있다.
도 13을 참조하면, 도 12의 동작(1214)에 추가하여 실행될 수 있는 추가적인 동작들이 도시되었다. 동작(1316)은 가상 디스크 익스텐트에 데이터를 기록하라는 요청을 수신하는 회로, 가상 디스크 익스텐트와 연관되고 가상 디스크 익스텐트가 제로화되었음을 나타내는 상태 정보에 기초하여 가상 디스크 파일의 사용되지 않는 섹션을 제로화하는 회로 및 가상 디스크 익스텐트를 기술하도록 가상 디스크 파일의 사용되지 않는 섹션을 할당하는 회로를 포함할 수 있는 컴퓨터 시스템이 도시되었다. 문맥상 도 9를 참조하면, 가상 디스크 파서(404)는 가상 디스크 익스텐트, 예컨대 도 9의 가상 디스크 익스텐트(4)에 데이터를 기록하라는 요청을 수신할 수 있으며, 이 예시에서는 가상 디스크 익스텐트가 제로화되었음을 나타내는 상태 정보와 연관된다. 예를 들어, 가상 디스크 익스텐트(4)가 할당해제되었으면, 가상 디스크 파서(404)는 가상 디스크 익스텐트가 제로화되었다고 판정하였을 것이고, 즉 잘 알려진 제로 토큰의 오프로드 기록을 이용함으로써 파일(602)에 올-제로를 기록한다.
가상 디스크 익스텐트가 제로화된 상태에 있다고 판정한 것에 응답하여, 가상 디스크 파서(404)는 가상 디스크 파일(702)의 사용되지 않은 섹션, 즉 가상 디스크 익스텐트를 기술하도록 적극적으로 사용되지 않고 임의의 할당된 메타데이터를 저장하도록 적극적으로 사용되지 않는 섹션을 식별할 수 있고, 가상 디스크 익스텐트를 지지하도록 그 섹션을 사용한다. 가상 디스크 파서는 또한 새롭게 할당된 익스텐트의 아직 기록되지 않은 섹터로부터의 임의의 판독이 전부 제로로서 판독될 것을 보장한다. 가상 디스크 파서(404)는 IO 기록 작업의 페이로드를 섹션에 기록하고, 가상 디스크 익스텐트가 맵핑되었음을 나타내도록 상태 정보를 업데이트하며, 가상 디스크 익스텐트(4)를 저장하도록 사용되는 섹션의 시작을 식별하는 가상 디스크 파일 바이트 오프셋을 기술하도록 할당 테이블(416) 내의 정보를 업데이트할 수 있다. 가상 디스크 파서(404)는 또한 로그 엔트리를 생성할 수 있고, 이것은 시스템 실패 및 재시작의 상황에서 기록이 플러시되기 이전에 새롭게 할당된 익스텐트의 아직 기록되지 못한 섹터가 여전히 전부 제로로 판독되고 새롭게 할당된 익스텐트의 기록된 섹터가 전부 제로 또는 기록된 데이터로 판독되는 것을 보장한다. 제 1 후속 플러시 커맨드에 따라, 가상 디스크 파서(404)는 플러시의 완성 후에 발생한 시스템 실패가 기록된 데이터를 판독하는 새롭게 할당된 익스텐트의 앞서 기록된 섹터로부터 판독되고, 제로를 판독하는 새롭게 할당된 익스텐트의 아직 기록되지 않은 섹터로부터 판독되게 할 것임을 보장한다.
계속 도 13을 참조하면, 동작(1318)은 컴퓨터 시스템이 가상 디스크 익스텐트에 기록하라는 요청을 수신하는 회로 및 가상 디스크 익스텐트와 연관된 상태 정보에 기초하여 가상 디스크 파일의 사용되지 않은 섹션의 콘텐츠를 변조하지 않고 가상 디스크 익스텐트를 기술하도록 가상 디스크 파일의 사용되지 않은 섹션을 할당하는 회로를 포함할 수 있음을 도시하며, 상태 정보는 파일 시스템이 가상 디스크 익스텐트로의 액세스를 확보하고 있음을 나타낸다. 문맥에 따라 도 9를 다시 참조하면, 가상 디스크 파서(404)는 데이터를 가상 디스크 익스텐트, 예컨대 도 9의 가상 디스크 익스텐트(4)에 기록하라는 IO 작업을 수신할 수 있으며, 이 예시에서 이는 가상 디스크 익스텐트에 대한 보안이 파일 시스템(414)에 의해 제공됨을 나타내는 상태 정보와 연관된다. 이러한 상태 정보를 검출한 것에 응답하여, 가상 디스크 파서(404)는 가상 디스크 파일(702)의 사용되지 않은 섹션을 식별하고, 그 섹션에 IO 작업의 페이로드를 기록하고, 가상 디스크 익스텐트가 맵핑되었음을 나타내는 상태 정보를 업데이트하며, 가상 디스크 익스텐트(4)를 저장하는 데에 사용되는 섹션의 시작을 식별하는 가상 디스크 파일 바이트 오프셋을 기술하도록 할당 테이블(416) 내의 정보를 업데이트할 수 있다.
이 예시에서, 익스텐트는 블록이며 IO 작업에 대한 페이로드는 오직 가상 디스크 블록 내의 섹터들의 일부만을 커버한다고 가정한다. 특히, 가상 디스크 블록은 512 킬로바이트일 수 있고 기록은 가상 디스크 블록의 처음 500개의 섹터를 커버할 수 있다. 이러한 예시에서, 가상 디스크 파서(404)는 남은 524개의 섹터 내에 저장된 데이터를 지우지 않고도 가상 디스크 파일(702)의 할당된 섹션의 처음 500 섹터 내에 데이터를 기록할 수 있다. 따라서, 만약 이런 섹션이 검사된다면, 처음 500개의 섹터가 페이로드를 포함하고 남은 524개의 섹터가 앞서 가상 디스크 파일(702)에 기록되었던 어떤 비트 패턴이든 포함한다는 것을 알 수 있을 것이다. 이 예시에서, 가상 디스크 파서(404)는 이러한 섹션을 클리어하지 않고도 사용할 수 있으며, 이는 파일 시스템(414)이 파일 시스템 자유 공간 내에 있는 섹터에 대한 판독 동작을 거부하도록 구성되기 때문이다. 애플리케이션이 가상 디스크 블록의 남은 524 섹터를 판독하는 것이 방지될 것이기 때문에, 이는 가상 디스크에 앞서 저장되었던 임의의 데이터를 포함할 수 있다.
이제 도 13의 동작(1320)을 참조하면, 컴퓨터 시스템이 가상 디스크 익스텐트에 기록하라는 요청을 수신하는 회로, 가상 디스크 익스텐트와 연관되고 파일 시스템이 가상 디스크 익스텐트로의 액세스를 확보하지 않았음을 나타내는 상태 정보에 기초하여 비정보개시(non-information-disclosing) 비트 패턴을 갖는 가상 디스크 파일의 사용되지 않은 섹션을 논리적으로 겹쳐쓰기 위한 회로 및 가상 디스크 익스텐트를 기술하도록 가상 디스크 파일의 겹쳐쓰기된 섹션을 할당하는 회로를 포함하도록 구성될 수 있음이 도시되었다. 문맥상 다시 도 9를 참조하면, 가상 디스크 파서(404)는 데이터를 가상 디스크 익스텐트에 기록하라는 요청을 수신할 수 있으며, 이 예시에서 이것은 파일 시스템(414)이 가상 디스크 익스텐트에 대한 액세스를 확보하지 않았음을 나타내는 상태 정보와 연관된다. 예를 들어, 가상 디스크 파서(404)는 표준 TRIM 커맨드의 수신에 응답하여 가상 디스크 익스텐트를 할당 해제했을 수 있고, 가상 디스크 익스텐트가 맵핑 해제되었음, 즉 할당 테이블(416)에서 가상 디스크 파일(702) 내의 공간에 의해 지지되지 않음을 나타내는 상태 정보를 저장했을 수 있다.
가상 디스크 익스텐트가 맵핑 해제되었다는 판정에 응답하여, 가상 디스크 파서(404)는 가상 익스텐트를 기술하는 데에 사용하도록 가상 디스크 파일(702)의 사용되지 않은 섹터를 식별할 수 있고, 가상 디스크 익스텐트로의 기록이 임의의 정보를 우연히 드러내지 않는다는 것을 보장하도록 비정보개시 비트 패턴을 섹션에 논리적으로 기록할 수 있다. 바람직한 구현에서, 비정보개시 비트 패턴은 올-제로이거나 사전 저장된 데이터일 수 있다. 섹션이 제로화되거나 또는 일부 다른 비정보개시 비트 패턴이 사전 저장된 데이터와 같이 섹션 내에 논리적으로 기록된 후에, 가상 디스크 파서(404)는 섹션에 IO 작업의 페이로드를 논리적으로 기록할 수 있고, 가상 디스크 익스텐트가 맵핑되었음을 나타내도록 상태 정보를 업데이트할 수 있으며, 가상 디스크 익스텐트를 저장하는 데에 사용되는 섹션의 시작을 식별하는 가상 디스크 파일 바이트 오프셋을 기술하도록 할당 테이블(416) 내의 정보를 업데이트할 수 있다.
도 13을 계속 참조하면, 동작(1322)은 컴퓨터 시스템이 가상 디스크 익스텐트가 제로화되었음을 나타내는 상태 정보에 기초해, 가상 디스크 익스텐트와 연관된 오프로드 판독 요청의 수신에 응답하여 제로를 나타내는 토큰을 요청자에게 전송하도록 구성된 회로를 포함할 수 있음을 도시한다. 예를 들어, 도 4를 참조하면, 예컨대 오프로드 판독 및 오프로드 기록 커맨드를 서비스하도록 구성된 회로와 같은 오프로드 제공자 엔진(422)이, 요청자에 의해 발행된 오프로드 판독 요청에 응답하여 예컨대 애플리케이션(424)과 같은 요청자에게 제로를 나타내는 토큰을 전송할 수 있다. 오프로드 판독 요청은 토큰을 생성하여 요청자에게 토큰을 전송하으로써 한 위치에서 다른 위치로 효율적으로 데이터를 복사하는 데에 사용될 수 있으며, 이 토큰은 데이터를 요청자의 메모리에 복사한 다음 데이터를 목적지에 전송하는 대신 요청된 데이터를 표현한다. 목적 위치가 소스 위치에 의해 생성된 토큰을 인식하였을 때, 오프로드 판독 및 오프로드 기록 커맨드는 복사 오프로드를 달성하는 데에 사용될 수 있고, 토큰에 의해 표현된 데이터를 목적지에 논리적으로 기록할 수 있다. 소스에 의해 생성된 잘 알려진 제로 토큰의 경우에, 목적지는 이러한 특정 구현에서 SAN 타겟일 수 있는 언더라잉 스토리지(underlying storage), 예컨대 저장 디바이스(106)에 액세스할 필요가 없다. 이 예시에서, 오프로드 판독 요청은 하나 이상의 가상 디스크 익스텐트 내에 저장된 데이터를 갖는 하나 이상의 파일 상에서 오프로드 판독 동작을 수행하라는 것일 수 있으며, 이들 하나 이상의 가상 디스크 익스텐트 중 하나는 가상 디스크 익스텐트가 제로화되었음을 나타내는 상태 정보와 연관된다. 이 예시에서, 오프로드 판독 요청은 잘 알려진 제로 토큰 값을 생성하여 잘 알려진 제로 토큰을 요청자에게 반환함으로써 서비스될 수 있다.
오프로드 판독 요청은 오프로드 제공자 엔진(422)에 라우팅될 수 있다. 오프로드 제공자 엔진(422)은 요청을 수신할 수 있고 가상 디스크 익스텐트 내에 저장된 데이터에 대해 가상 디스크 파서(404)에 메시지를 전송한다. 가상 디스크 파서(404)는 요청을 수신하고, 가상 디스크 익스텐트에 대한 상태 정보를 판독하고, 이 특정 예시에서 상태 정보가 이러한 가상 디스크 익스텐트가 제로화되었음을 나타난다고 판정할 수 있다. 가상 디스크 파서(404)는 가상 디스크 익스텐트가 올-제로임을 나타내는 오프로드 제공자 엔진(422)에 다시 메시지를 전송할 수 있고, 오프로드 제공자 엔진(422)은 요청된 데이터가 올-제로임을, 예컨대 가상 디스크 블록을 기술하는 섹터의 범위가 올-제로임 나타내는 잘 알려진 토큰 값을 생성할 수 있으며, 요청자에 잘 알려진 제로 토큰을 전송할 수 있다.
특정 예시에서, 오프로드 요청은 컴퓨터 시스템(400), 저장 서비스(500), 또는 컴퓨터 시스템(512)에 의해 프로세싱되는 대신 SAN으로 전달될 수 있다. 이러한 예시에서, SAN은 토큰을 생성하여 그것을 가상 디스크 파서(404)에 다시 반환할 수 있으며, 그 다음 가상 디스크 파서(404)는 제로 토큰을 요청자에게 전송할 수 있다. 또 다른 예시에서, 오프로드 제공자 엔진9422)이 가상 디스크 익스텐트가 올-제로임을 나타내는 메시지를 수신하였을 때, 오프로드 제공자 엔진(422)은 잘 알려진 제로 토큰을 생성할 수 있으며, 그 결과 잘 알려진 제로 토큰과 연관된 영역을 공유하고 임의의 다른 제로 데이터와 동등한 데이터를 식별함으로써 토큰과 연관된 별개의 영역으로 요청된 제로 데이터를 논리적으로 복사하는 것을 달성한다. 오프로드 제공자 엔진(422)이 후속하여 앞서 요청자에 전송되었던 토큰을 식별하는 오프로드 기록을 수신하는 경우에, 오프로드 제공자 엔진(422)은 토큰과 연관된 영역으로부터 요청자에 의해 식별된 오프셋으로 데이터를 논리적으로 복사할 수 있다.
이제 도 14를 참조하면, 동작(1400, 1402, 1404, 1406)을 포함하는 가상 디스크 파일 공간을 환원하는 동작 절차가 도시되었다. 도시된 바와 같이, 동작(1400)은 동작 절차를 시작하고, 동작(1402)은 컴퓨터 시스템이 가상 디스크 익스텐트의 일부분이 더 이상 사용되지 않음을 나타내는 신호를 수신하는 회로를 포함할 수 있음을 도시하며, 가상 디스크 익스텐트는 가상 디스크의 일부이고, 가상 디스크는 가상 디스크 파일 내에 저장된다. 예를 들어, 도 4를 참조하면, 가상 디스크 파서(404)는 가상 디스크(402)를 인스턴스화하도록 구성될 수 있다. 파일 시스템(414)은 예컨대 가상 디스크 익스텐트의 섹터의 범위인 가상 디스크(402)의 일부분을 더 이상 이용하지 않음을 나타내는 신호를 가상 디스크 파서(404)에 전송할 수 있다. 특정 예시에서, 신호는 TRIM 커맨드일 수 있다. 특정 예시에서, 가상 디스크 파서(404)에 의해 수신되는 신호는 더 이상 사용하지 않는 섹터의 범위를 정의하는 바이트 오프셋 값을 식별할 수 있으며, 이는 가상 디스크 익스텐트의 처음 부분일 수 있다.
도 14를 계속하여 참조하면, 동작(1404)은 컴퓨터 시스템이 또한 가상 디스크 익스텐트의 일부분을 기술하는 가상 디스크 파일의 일부분을 식별하도록 구성된 회로를 포함할 수 있음을 도시한다. 다시 도 7을 참조하면, 가상 디스크 파서(404)는 예를 들어 가상 디스크 익스텐트(0)의 제 1 부분을 식별하는 가상 디스크 바이트 오프셋 값과 신호를 수신할 수 있다. 신호의 수신에 응답하여, 가상 디스크 파서(404)는 신호와 연관된 가상 디스크 오프셋 값에 상응하는 가상 디스크 파일(702)의 일부분을 결정하도록 할당 테이블(416)을 체크할 수 있다.
이제 도 14의 동작(1406)을 참조하면, 컴퓨터 시스템이 저장 디바이스 상에 가상 디스크 파일을 저장하도록 구성된 파일 시스템으로 가상 디스크 파일의 식별된 부분을 트리밍하라는 요청을 전송하는 회로를 포함할 수 있음이 도시되었다. 예를 들어, 다시 도 7을 참조하면, 가상 디스크 파서(404)는 전체 가상 디스크 익스텐트보다 더 적은 신호가 식별된다는 것을 결정할 수 있다. 예를 들어, 신호는 섹터들의 범위를 나타낼 수 있으며, 이 범위는 가상 디스크 익스텐트의 모든 섹터를 포함하지는 않는다. 이러한 결정에 응답하여, 가상 디스크 파서(404)는 가상 디스크 익스텐트의 트리밍된 부분에 상응하는 가상 디스크 파일(702)의 부분을 트리밍하라는 요청을 파일 시스템 호스팅 가상 디스크 파일(702), 예컨대 가상화 시스템 파일 시스템(408)에 발행할 수 있다. 가상화 시스템 파일 시스템(408)은 트림 커맨드를 사용하고 가상 디스크 파일(406)을 트리밍하고, 캐시로부터의 데이터를 플러싱하고, 내부 버퍼를 클리어하고, 파일 시스템 데이터가 저장된 디스크로 트림을 전송하는 등에 의해 그로부터 이익을 얻을 수 있도록 구성될 수 있다.
특정 예시에서, 가상 디스크 파서(404)는 가상 디스크 파일의 일부분을 트리밍하라는 요청이 전체 익스텐트를 커버하지 않는다는 판정에 응답하여 TRIM 커맨드를 언더라잉 파일 시스템에 발행하도록 구성될 수 있다. 예를 들어, 신호가 가상 디스크 익스텐트의 처음 600개의 섹터가 더 이상 사용되지 않는다고 식별하며, 가상 디스크 파서(404)가 가상 디스크 익스텐트의 처음 600개의 섹터가 가상 디스크 익스텐트를 구성하는 1024개의 섹터보다 적은 것으로 판정할 수 있다고 가정한다. 이러한 판정에 응답하여, 가상 디스크 파서(404)는 할당 테이블(416)에 액세스할 수 있고, 가상 디스크 파일(702)의 섹션의 처음 600개 섹터를 기술하는 가상 디스크 파일 바이트 오프셋이 가상 디스크 익스텐트를 기술한다고 판정할 수 있으며, 가상 디스크 파일(702)의 이러한 부분을 가상 디스크 파일(702)을 호스팅하는 파일 시스템으로 트리밍하라는 요청을 전송할 수 있다.
이제 도 15를 참조하면, 도 14에 의해 도시된 것과 관련하여 실행될 수 있는 추가적인 동작들이 도시되었다. 이제 동작(1508)을 참조하면, 가상 디스크 익스텐트가 제로화되었음을 나타내는 상태 정보에 기초해, 가상 디스크 익스텐트와 연관된 오프로드 판독 요청의 수신에 응답하여 요청자에게 제로를 나타내는 토큰을 전송하는 회로를 컴퓨터 시스템이 추가로 포함할 수 있음을 도시한다. 예를 들어, 도 4를 참조하면, 예컨대 오프로드 판독 및 오프로드 기록 커맨드를 서비스하도록 구성된 회로와 같은 오프로드 제공자 엔진(422)은, 요청자에 의해 발행된 오프로드 판독 요청에 응답하여 예컨대 애플리케이션(424)과 같은 요청자에게 제로를 나타내는 토큰을 전송할 수 있다. 오프로드 판독 요청은 데이터를 요청자의 메모리에 복사한 다음 목적지에 데이터를 전송하는 대신 요청된 데이터를 나타내는 토큰을 생성하여 요청자에게 전송함으로써 하나의 위치에서 다른 위치로 데이터를 효율적으로 복사하는 데에 사용될 수 있다. 오프로드 판독 및 오프로드 기록 커맨드는 목적 위치가 소스 위치에 의해 생성된 토큰을 인식할 때 복사 오프로드를 달성하는 데에 사용될 수 있으며, 토큰에 의해 표현된 데이터를 목적지에 논리적으로 기록할 수 있다. 소스에 의해 생성된 잘 알려진 제로 토큰의 경우에, 목적지는 본 특정한 구현에서 SAN 타겟일 수 있는 예컨대 저장 디바이스(106)와 같은 언더라잉 저장소에 액세스할 필요가 없다. 이러한 예시에서, 오프로드 판독 요청은 하나 이상의 가상 디스크 익스텐트 내에 저장된 데이터를 구비하는 하나 이상의 파일에 대한 오프로드 판독 동작을 수행하는 것일 수 있으며, 이들 중 하나는 가상 디스크 익스텐트가 제로화되었음을 나타내는 상태 정보와 연관된다. 이러한 예시에서, 오프로드 판독 요청은 잘 알려진 제로 토큰 값을 생성하여 잘 알려진 제로 토큰을 요청자에게 반환함으로써 서비스될 수 있다.
도 15를 계속 참조하면, 동작(1510)은 컴퓨터 시스템이 가상 디스크 파일의 그룹으로부터 서브그룹을 선택하는 회로 및 투명한 서브그룹의 섹터 및 데이터를 포함하는 서브그룹의 섹터를 식별하는 정보를 생성하는 회로를 포함할 수 있음을 도시한다. 예시적인 실시예에서, 가상 디스크(402)는 복수의 가상 디스크 파일로부터 인스턴스화될 수 있다. 또는 다른 방식으로, 가상 디스크(402)는 M개의 가상 디스크 파일(M은 1보다 큰 정수)로부터 형성될 수 있다. 이러한 예시적인 실시예에서, 가상 디스크 파서(404)는 주어진 바이트 오프셋에서 시작하고, 가상 디스크 파일의 서브그룹 내에서 정의되는 섹터와 연관되는 가상 디스크(402) 상의 다른 바이트 오프셋을 결정하도록, 예컨대 관리자로부터 요청을 수신하도록 구성될 수 있다. 예를 들어, 도 10을 참조하면, 가상 디스크 파서(404)는 서브그룹이 가상 디스크 파일(1002) 및 가상 디스크 파일(1004)을 포함한다는 것을 나타내는 정보 및 가상 디스크 익스텐트(2)의 첫 번째 섹터에 상응하는 가상 디스크 오프셋에서 시작하는 다음 정의된 바이트 오프셋에 대한 요청을 수신할 수 있다. 이러한 예시에서, 가상 디스크 파서(404)는 서브그룹을 통한 스캐닝을 시작할 수 있고, 다음 정의된 바이트 오프셋이 가상 디스크 익스텐트(3)의 시작에 상응하는 섹터임을 판정할 수 있다. 이 예시에서 가상 디스크 익스텐트(2) 내의 데이터가 가상 디스크 파일(1006)의 섹션에 의해 지지되기 때문에, 이는 연구 외의 것이며 정의된 것으로서 반환되지 않는다.
도 15를 계속 참조하면, 동작(1512)은 컴퓨터 시스템이 가상 디스크 파일로부터 가상 디스크 익스텐트를 분리하고 가상 디스크 익스텐트가 제로화되었다고 판정한 것에 응답하여 가상 디스크 익스텐트가 제로화되었음을 나타내도록 가상 디스크 익스텐트와 연관된 상태 정보를 변조하도록 구성될 수 있는 회로를 포함할 수 있음을 도시한다. 예를 들어, 도 7을 참조하면, 일 실시예에서 가상 디스크 파서(404)는 가상 디스크 익스텐트가 제로화되었다고 판정할 수 있다. 예를 들어, 가상 디스크 파서(404)는 잘 알려진 제로 토큰에 의해 표현되는 데이터를 가상 디스크 익스텐트, 예컨대 가상 디스크 익스텐트(7)에 기록하라는 요청을 수신할 수 있다. 가상 디스크 파서(404)는 요청과 연관된 데이터 구조로부터 판정할 수 있되, 요청은 전체 가상 디스크 익스텐트에 대한 것이며, 즉 바이트 오프셋 값이 익스텐트(7)의 첫 번째 섹터에서 시작하여 익스텐트(7)의 마지막 섹터에서 종료할 수 있다. 이러한 판정에 응답하여, 그리고 가상 디스크 파일(702)의 상응하는 섹터에 제로를 기록하는 대신, 가상 디스크 파서(404)는 가상 디스크 익스텐트(7)를 기술하는 데에 사용되는 가상 디스크 파일(702)의 섹션으로 가상 디스크 익스텐트(7)를 맵핑하는 링크를 제거하고, 가상 디스크 익스텐트를 그 가상 디스크 익스텐트가 올-제로임을 나타내는 정보와 연관시키도록 구성될 수 있다. 예를 들어, 가상 디스크 파서(404)는 가상 디스크 익스텐트가 올-제로를 포함한다는 것을 나타내는 할당 테이블(416) 내의 정보의 8개 바이트를 기록할 수 있다. 이러한 동작의 종료 결과는 가상 디스크 파일(702)의 섹션이 다른 가상 디스크 익스텐트에 대해 데이터를 저장하도록 재사용될 수 있다는 것이고, 가상 디스크 익스텐트는 가상 디스크 파일의 어느 부분도 익스텐트를 bit-for-bit 기반으로 기술하고 있지 않다고 해도 그것이 올-제로를 포함하는 것처럼 판독할 것이다.
도 15를 계속 참조하면, 동작(1514)은 컴퓨터 시스템이 가상 디스크 파일로부터 가상 디스크 익스텐트를 분리하고 가상 디스크 익스텐트가 파일 시스템에 의해 자유 공간으로 간주된다는 판정에 응답하여 가상 디스크 익스텐트가 자유 공간임을 나타내도록 가상 디스크 익스텐트와 연관된 상태 정보를 변조하도록 구성되는 회로를 추가로 포함할 수 있음을 도시한다. 예를 들어, 도 7로 돌아가면, 가상 디스크 파서(404)는 자신이 자유 공간임, 즉 파일 시스템(414)에 의해 사용되지 않는 공감임을 나타내는 정보와 연관된 가상 디스크 익스텐트가 파일 시스템(414)과 연관되었음을 판정할 수 있다. 예를 들어, 가상 디스크 파서(414)는 예컨대 가상 디스크 익스텐트(3)와 연관된 가상 디스크 익스텐트를 커버하는 섹터들의 범위를 나타내는 신호 및 그 섹터들이 자유 공간으로 간주됨을 나타내는 정보를 파일 시스템(414)으로부터 수신할 수 있다. 이러한 신호의 수신에 응답하여, 가상 디스크 파서(404)는 가상 디스크 익스텐트를 가상 디스크 파일(702)의 섹션에 링크하는 정보를 제거하도록 구성될 수 있다. 이러한 동작의 결과 가상 디스크 파일(702)의 섹션이 다른 가상 디스크 익스텐트에 대한 데이터를 저장하도록 재사용될 수 있다. 가상 디스크 파서(404)는 추가적으로 가상 디스크 익스텐트를 가상 디스크 익스텐트가 임의의 데이터, 즉 가상 디스크의 임의의 부분에 앞서 저장된 올-제로, 또는 올-원인 데이터를 포함함을 나타내는 정보와 연관시킬 수 있다. 결과적으로, 이러한 가상 디스크 익스텐트에 관련된 판독 동작은 가상 디스크 내에 앞서 저장된 임의의 데이터를 반환함으로써 조절될 수 있다. 또한, 만약 가상 디스크 파서(404)가 임의의 데이터로 하여금 판독 동작이 수신되는 각각의 시간에 변화할 수 있도록 구성되면, 임의의 데이터는 판독 동작이 수신되는 각각의 시간마다 선택적으로 변화할 수 있다.
도 15를 계속해서 참조하면, 동작(1516)은 추가적으로 익스텐트를 가상 디스크 파일로부터 분리시키고, 가상 디스크 익스텐트가 트리밍되었다는 판정에 응답하여 가상 디스크 익스텐트가 비정보개시 비트 패턴을 포함함을 나타내도록 가상 디스크 익스텐트와 연관된 상태 정보를 변조하도록 구성된 회로를 포함할 수 있는 컴퓨터 시스템을 도시한다. 예를 들어, 다시 도 7로 돌아가면, 가상 디스크 파서(404)는 파일 시스템이(414)이 가상 디스크 익스텐트를 구성하는 섹터들의 범위를 트리밍하였다고 판정할 수 있다. 이러한 판정에 응답하여, 가상 디스크 파서(404)는 가상 디스크 익스텐트를 가상 디스크 파일(702)의 섹션에 링크하는 할당 테이블(416) 내의 정보를 제거할 수 있다. 이러한 동작의 결과 가상 디스크 파일(702)의 섹션은 다른 가상 디스크 익스텐트에 대한 데이터를 저장하는 데에 재사용될 수 있다. 가상 디스크 파서(404)는 추가적으로 가상 디스크 익스텐트를 가상 디스크 익스텐트가 비정보개시 비트 패턴, 예컨대 올-제로(all-zero), 올-원(all-one), 또는 임의로 생성된 비트 패턴을 포함함을 나타내는 정보와 연결시킬 수 있다. 결과적으로, 가상 디스크 익스텐트와 관련된 판독 동작은 비정보개시 비트 패턴을 반환함으로써 조정될 수 있다. 특정한 바람직한 구현에서, 비정보개시 비트 패턴은 올-제로일 수 있다. 그러나, 제로 상태는 의미있는 제로들을 나타내는 데에 사용될 수 있다는 점, 즉 가상 디스크 익스텐트가 의도적으로 제로화된 경우라는 점에서, 이것은 전술된 제로 상태와는 다른 것이다.
동작(1518)을 참조하면, 컴퓨터 시스템이 가상 디스크를 제어하는 파일 시스템으로 트림 커맨드를 발행하라는 요청을 전송하도록 구성된 회로를 추가적으로 포함하는 것을 도시한다. 도 7로 돌아가면, 가상 디스크 파서(404)는 파일 시스템(414)이 하나 이상의 TRIM 커맨드를 발행하라는 요청을 발행하도록 구성될 수 있다. 예시적인 구성에서, 가상 디스크 파서(404)는 그러한 요청을 주기적으로 전송하거나, 또는 그러한 요청을 예컨대 VM(410)이 시작하거나 VM이 셧다운되기 직전과 같은 사전결정된 기준에 기초하여 전송하도록 구성될 수 있다. 이러한 요청에 응답하여, 파일 시스템(414)은 가상 디스크(402)의 사용되지 않은 섹터를 식별하는 하나 이상의 TRIM 커맨드를 가상 디스크 파서(404)에 발행할 수 있다. 가상 디스크 파서(404)는 그 다음 파일 시스템(414)에 의해 더 이상 사용되지 않는 섹터의 범위 및 선택적으로는 트리밍된 섹터가 자유 공간으로 간주되는지 여부를 나타내는 정보와 같은 트림 정보를 TRIM 커맨드로부터 수신할 수 있다. 가상 디스크 파서(404)는 정보를 수신할 수 있고, 그것을 할당 테이블(416) 내에 저장된 상태 정보를 업데이트하고 가상 디스크 파일(702)의 사용되지 않은 섹션을 가능한 환원하도록 사용할 수 있다.
이제 도 16을 참조하면, 가상 장치를 위해 데이터를 저장하는 동작 절차가 도시되었다. 동작 절차는 동작(1600)에서 시작하여 컴퓨터 시스템이 가상 장치 내에 파일 시스템을 포함하는 게스트 동작 시스템을 실행하는 회로를 포함할 수 있는 경우를 기술하는 동작(1602)으로 이어진다. 예를 들어, 도 4를 참조하면, 도 3의 하이퍼바이저(302)일 수 있거나 또는 도 2의 마이크로커널 하이퍼바이저(202)와 호스트 환경(204)에 의해 실행되는 기능의 조합일 수 있는 가상화 시스템(420)은, 가상 장치(410)를 인스턴스화하여 그 안에서 (게스트 운영 시스템(412)과 같은) 게스트 운영 시스템을 구동할 수 있다. 이 예시에서, 게스트 운영 시스템(412)은 게스트 운영 시스템(412)에 대해 데이터를 조직화 및 제어하는 실행가능한 명령어일 수 있는 파일 시스템(414)을 포함할 수 있다.
도 16을 계속 참조하면, 동작(1604)은 가상 디스크 파일로부터 분리된 가상 디스크 익스텐트를 포함하는 가상 저장 디바이스를 게스트 운영 시스템에 노출시키는 회로를 포함할 수 있는 컴퓨터 시스템을 도시한다. 다시 도 4로 돌아가면, 가상화 시스템(420)은 가상 디스크(402)를 게스트 운영 시스템(412)에 노출시킬 수 있다. 예를 들어, 가상 디스크 파서(404)는 게스트 운영 시스템(410) 내에서 구동하는 저장 가상화 서비스 클라이언트와 통신하도록 동작가능한 저장 가상화 서비스 제공자와 통신할 수 있다. 특정 예시에서, 저장 가상화 서비스 클라이언트는 게스트에게 자신이 저장 디바이스와 통신 가능하다고 신호하는 게스트 운영 시스템(412) 내에 설치된 드라이버일 수 있다. 이 예시에서, 파일 시스템(414)에 의해 전송되는 IO 작업은 먼저 저장 가상화 서비스 클라이언트에게 전송되고, 그 다음 예컨대 메모리의 영역 및 교차 파티션 통지 설비(cross-partition notification facility)과 같은 통신 채널을 통해 저장 가상화 서비스 제공자에게 전송된다. 가상 디스크(402)는 가상 디스크 파서(404)에 의해 개방되어 가상 디스크(402)에 데이터를 저장하도록 사용될 수 있는 하나 이상의 가상 디스크 파일(406)로부터 구성될 수 있다. 특정 예시에서, 가상 디스크(402)는 도 7의 가상 디스크 파일(702)에 의해 적어도 부분적으로 기술될 수 있다. 다른 특정 예시에서, 도 10을 참조하면, 가상 디스크(402)는 가상 디스크 파일들의 그룹(1002-1006)에 의해 기술될 수 있다. 두 경우 모두에서, 도 4를 참조하면, 가상 디스크(402)는 복수의 가상 디스크 익스턴트를 포함할 수 있고, 가상 디스크 익스턴트들 중 하나는 분리될 수 있으며, 즉 자신의 연관된 가상 디스크 파일 내의 어떠한 공간에 의해서도 bit-for-bit 기반으로 기술되지 않는다.
도 16을 계속 참조하면, 동작(1606)은 컴퓨터 시스템이 데이터를 가상 디스크 익스텐트에 기록하라는 요청을 수신하는 회로를 포함할 수 있음을 도시한다. 다시 도 7로 돌아가면, 가상 디스크 파서(404)는 가상 디스크 파일(702) 내에 연관된 공간을 갖지 않는 가상 디스크 익스텐트에 데이터를 기록하라는 요청을 수신할 수 있다. 예를 들어, 가상 디스크 익스텐트 내에 있는 가상 디스크 섹터의 어드레스를 나타내는 오프셋 값을 명시하는 IO 작업이 수신될 수 있다.
다시 도 16을 참조하면, 동작(1608)은 가상 디스크 익스텐트가 자유 공간임을 나타내는 가상 디스크 익스텐트와 연관된 상태 정보를 판정하는 회로를 선택적으로 포함할 수 있는 컴퓨터 시스템을 도시한다. IO 작업의 수신에 응답하여, 가상 디스크 파서(404)는 할당 테이블(416)을 액세스할 수 있고 가상 디스크 익스텐트와 연관된 상태 정보를 판독할 수 있다. 이러한 예시에서, 가상 디스크 익스텐트는 그 가상 디스크 익스텐트가 자유 공간임, 즉 파일 시스템(414)이 그 가상 디스크 익스텐트를 사용하지 않고 그 가상 디스크 익스텐트에 대한 판독 동작이 임의의 데이터로 답변될 수 있음을 나타내는 정보와 연관될 수 있다.
도 16을 참조하면, 동작(1610)은 가상 디스크 파일의 섹션 내에 사전존재하는 비트 패턴을 겹쳐쓰기하지 않고 가상 디스크 익스텐트를 기술하도록 가상 디스크 파일의 섹션을 할당하는 회로를 컴퓨터 시스템이 선택적으로 포함할 수 있음을 도시한다. 예를 들어, 도 7로 돌아가면, 기록 IO 작업의 수신에 응답하여, 가상 디스크 파서(404)는 사용되고 있지 않은 섹션을 가상 디스크 파일(702)로 위치시키고 그것을 가상 익스텐트에 데이터를 저장하도록 할당할 수 있다. 예를 들어, 가상 디스크 파서(404)는 가상 디스크 파일(702)의 할당된 섹션의 바이트 오프셋 값에 가상 디스크 익스텐트를 링크하는 할당 테이블(416) 내에 정보를 기록할 수 있다.
이 예시에서, 가상 디스크 파서(404)는, 상태 정보가 파일 시스템(414)이 식별된 가상 디스크 익스텐트(5)를 자유 공간으로 식별하였다고 나타내기 때문에, 가상 디스크 익스텐트를 기술하기 위해 섹션을 사용하기에 앞서 (전부 0, 1, 또는 임의의 다른 비정보개시 비트 패턴을 기록함으로써) 가상 디스크 파일(702)의 섹션 내에 저장된 일부 삭제된 파일로부터의 데이터 및/또는 임의의 데이터와 같이 섹션 내에 존재하는 어떠한 비트 패턴도 겹쳐쓰기 하지 않을 수 있다. 이것은 가상 디스크 익스텐트의 섹션을 겹쳐쓰기하는 데에 다른 방식으로 사용될 수 있는 IO 작업과 프로세서 사이클을 절약하게 하는 추가적인 이익을 제공한다.
도 16의 동작(1612)을 참조하면, 가상 디스크 익스텐트가 가상 디스크 파일의 할당된 섹션에 맵핑되었음을 나타내도록 가상 디스크 익스텐트와 연관된 상태 정보를 선택적으로 변조하는 회로를 포함할 수 있는 컴퓨터 시스템을 도시한다. 예를 들어, 도 7로 돌아가면, 가상 디스크 파서(404)는 자신이 맵핑되었음을 나타내도록 가상 디스크 익스텐트와 연관된 상태 정보를 변조, 예컨대 메모리 내에 겹쳐쓰기할 수 있다. 결과적으로, 가상 디스크 익스텐트의 섹터와 관련된 후속하는 판독 동작이 할당된 섹션의 상응하는 부분에 저장된 비트 패턴을 반환함으로써 가상 디스크 파서(404)에 의해 조절될 것이다.
이제 도 16의 동작(1614)을 참조하면, 가상 디스크 파일의 할당된 섹터에 데이터를 저장하는 것을 도시한다. 도 6으로 돌아가면, 가상 디스크 파서(404)는 예컨대 비트 패턴과 같은 데이터를 가상 디스크 파일(702)에 기록할 수 있다. 가상 디스크 파일(702)로의 기록을 나타내는 IO 작업이 가상화 시스템 파일 시스템(408)에 발행될 수 있고, 결과적으로 영구 저장 유닛(460)에 의해 변화가 계속될 수 있다.
이제 도 17을 참조하면, 도 16에 도시되었던 것과 관련하여 실행될 수 있는 추가적인 동작들이 도시되었다. 동작(1716)을 보면, 가상 디스크 파일로부터 가상 디스크 익스텐트를 분리하고 가상 디스크 익스텐트가 제로화되었다는 판정에 응답하여 가상 디스크 익스텐트가 제로화되었음을 나타내도록 가상 디스크 익스텐트와 연관된 상태 정보를 변조하는 회로를 컴퓨터 시스템이 선택적으로 포함할 수 있음을 도시한다. 예를 들어, 도 6으로 돌아가면, 실시예에서 가상 디스크 파서(404)는 가상 디스크 익스텐트가 제로화되었음을 판정할 수 있다. 예를 들어, 가상 디스크 파서(404)는 예컨대 가상 디스크 익스텐트(7)와 같은 가상 디스크 익스텐트에 잘 알려진 제로 토큰에 의해 표현되는 데이터를 기록하라는 오프로드 기록 요청을 수신할 수 있다. 기록 디스크 파서(404)는 요청과 연관된 데이터 구조로부터 그 요청이 전체 가상 디스크 익스텐트에 대한 것임을 판정할 수 있으며, 즉 바이트 오프셋 값은 가상 디스크 익스텐트(7)의 첫 번째 섹터에서 시작하고 가상 디스크 익스텐트(7)의 마지막 섹터에서 종료할 수 있다. 이러한 판정에 응답하여, 가상 디스크 파일(702)의 상응하는 섹션에 제로를 기록하는 대신, 가상 디스크 파서(404)는 가상 디스크 익스텐트로부터 할당 테이블(416) 내에 저장된 가상 디스크 파일(702)의 섹션으로의 링크를 제거하고 가상 디스크 익스텐트를 가상 디스크 익스텐트가 올-제로임을 나타내는 정보와 연관시키도록 구성될 수 있다.
도 17을 계속 참조하면, 동작(1718)은 컴퓨터 시스템이 선택적으로 가상 디스크 파일로부터 가상 디스크 익스텐트를 분리하고 가상 디스크 익스텐트를 자유 공간으로서 식별하는 파일 시스템으로부터의 신호 수신에 응답하여 가상 디스크 익스텐트가 임의의 데이터를 포함함을 나타내도록 가상 디스크 익스텐트와 연관된 상태 정보를 변조하는 회로를 포함할 수 있음을 도시한다. 예를 들어, 다시 도 7로 돌아가면, 가상 디스크 파서(404)는 파일 시스템(414)이 자신이 자유 공간임, 즉 파일 시스템(414)에 의해 사용되지 않는 공감임을 나타내는 정보를 갖는 가상 디스크 익스텐트와 연관되었음을 판정할 수 있다. 예를 들어, 가상 디스크 파서(404)는 섹터들이 자유 공간임을 나타내는 정보 및 가상 디스크 익스텐트, 예컨대 가상 디스크 익스텐트(3)를 커버하는 섹터들의 범위를 나타내는 파일 시스템(414)으로부터 신호를 수신할 수 있다. 이러한 판정에 응답하여, 가상 디스크 파서(404)는 가상 디스크 익스텐트를 가상 디스크 파일(702)의 섹션에 링크하는 할당 테이블(416) 내의 정보를 삭제하고 가상 디스크 익스텐트를 임의의 데이터, 즉 가상 디스크의 임의의 부분 내에 앞서 저장된 데이터, 올-제로, 또는 올-원 데이터가 판독 IO 작업의 수신에 응답하여 반환될 수 있음을 나타내는 정보와 연관시키도록 구성될 수 있다.
도 17의 동작(1720)은, 컴퓨터 시스템(400)이 가상 디스크 익스텐트를 가상 디스크 파일로부터 분리하고 가상 디스크 익스텐트의 모든 섹터를 트리밍하라는 요청의 수신에 응답하여 가상 디스크 익스텐트가 비정보개시 비트 패턴을 포함함을 나타내도록 가상 디스크 익스텐트와 연관된 상태 정보를 변조하는 회로를 선택적으로 포함할 수 있음을 도시한다. 예를 들어, 다시 도 7을 참조하면, 가상 디스크 파서(404)는 가상 디스크 익스텐트를 구성하는 섹터들이 트리밍되었음을 판정할 수 있다. 예를 들어, 가상 디스크 파서(404)는 가상 디스크 익스텐트를 커버하는 섹터들의 범위를 나타내는 파일 시스템(414)으로부터 트림 커맨드를 수신할 수 있다. 이러한 신호의 수신에 응답하여, 가상 디스크 파서(404)는 가상 디스크 익스텐트를 가상 디스크 파일(702)의 섹션에 링크하는 할당 테이블(416) 내의 정보를 삭제하고 가상 디스크 익스텐트를 가상 디스크 익스텐트가 비정보개시 비트 패턴을 포함함을 나타내는 정보와 연관시키도록 구성될 수 있다.
전술된 상세한 설명은 예시 및/또는 동작 다이어그램을 통해 시스템 및/또는 프로세스의 다양한 실시예를 제시하였다. 이러한 블록 다이어그램, 및/또는 예시들이 하나 이상의 기능 및/또는 동작을 포함하는 한, 이러한 블록 다이어그램 또는 예시 내의 각각의 기능 및/또는 동작들이 광범위 하드웨어, 소프트웨어, 펌웨어, 또는 실질적으로 이들의 임의의 조합에 의해 개별적으로 및/또는 집합적으로 구현될 수 있음을 당업자는 이해할 것이다.
본 명세서에 본 발명의 청구사항의 특정한 측면들이 도시 및 기술되었지만, 당업자에게는 본 명세서의 내용에 기초하여 변경사항 및 수정이 본 명세서에 기술된 청구사항 및 그보다 넓은 측면들로부터 벗어나지 않고 이루어질 수 있으며, 따라서 첨부된 특허청구범위는 본 명세서에 기술된 청구사항의 진정한 사상 및 범주 내에서 이러한 모든 변경사항 및 수정을 포함함이 명백할 것이다.
Claims (10)
- 명령어를 포함하는 컴퓨터 판독가능한 저장 매체로서,
상기 명령어는 프로세서에 의해 실행될 경우 상기 프로세서로 하여금,
가상 디스크 파일로부터 분리된 가상 디스크 익스텐트(virtual disk extent)를 포함하는 가상 디스크를 인스턴스화하고(instantiate),
상기 가상 디스크 파일의 섹션 내에 사전존재하는 비트 패턴을 겹쳐쓰기(overwriting)하지 않고 상기 가상 디스크 익스텐트를 기술하도록, 상기 가상 디스크와 연관된 상태 정보에 기초하여 상기 가상 디스크 파일의 상기 섹션을 할당하며,
상기 가상 디스크 익스텐트가 상기 가상 디스크 파일에 의해 기술되었음을 나타내도록 상기 가상 디스크 익스텐트와 연관된 상기 상태 정보를 변조하게 하는
컴퓨터 판독가능한 저장 매체.
- 제 1 항에 있어서,
상기 프로세서로 하여금, 상기 가상 디스크 파일을 제어하는 파일 시스템에 커맨드의 그룹으로부터 선택된 적어도 하나의 커맨드를 발행하라는 요청을 전송하게 하는 명령어를 더 포함하되,
상기 커맨드의 그룹은 트림 커맨드(trim command), 맵핑 해제 커맨드(unmap command), 제로의 동일 기록 커맨드(write same of zero command) 및 제로 토큰의 오프로드 기록 커맨드(offload write of a zero token command)를 포함하는
컴퓨터 판독가능한 저장 매체.
- 컴퓨터 시스템으로서,
프로세서와,
상기 프로세서에 연결된 메모리를 포함하되,
상기 메모리는, 상기 프로세서와 상기 메모리가 구동되면 상기 프로세서에 의해 실행되었을 때 상기 컴퓨터 시스템으로 하여금
가상 디스크 파일 내에 저장된 가상 디스크의 일부인 가상 디스크 익스텐트의 일부분이 더 이상 사용되지 않음을 나타내는 신호를 수신하고,
상기 가상 디스크 익스텐트의 일부분을 기술하는 상기 가상 디스크 파일의 일부분을 식별하며,
상기 가상 디스크 파일의 식별된 일부분을 트리밍하라는 요청을 저장 디바이스 상에 상기 가상 디스크 파일을 저장하도록 구성된 파일 시스템에 전송하게 하는 명령어를 포함하는
컴퓨터 시스템.
- 제 3 항에 있어서,
상기 메모리는, 상기 컴퓨터 시스템으로 하여금 상기 가상 디스크 익스텐트와 연관된 오프로드 판독 요청의 수신에 응답하여 상기 가상 디스크 익스텐트가 제로화(zeroed)되었음을 나타내는 상태 정보에 기초해 요청자에게 제로를 나타내는 토큰을 전송하게 하는 명령어를 더 포함하는
컴퓨터 시스템.
- 제 3 항에 있어서,
상기 가상 디스크 파일은 상기 가상 디스크 익스텐트를 포함하는 가상 디스크를 함께 형성하는 가상 디스크 파일들의 그룹의 일원이고,
상기 메모리는 실행시에 상기 컴퓨터 시스템으로 하여금,
상기 가상 디스크 파일들의 그룹으로부터 하위 그룹을 선택하고,
데이터를 포함하는 상기 하위 그룹의 섹터들 및 투명한(transparent) 상기 하위 그룹의 섹터들을 식별하는 정보를 생성하게 하는
명령어를 더 포함하는
컴퓨터 시스템.
- 제 3 항에 있어서,
상기 메모리는, 실행시에 상기 컴퓨터 시스템으로 하여금
상기 가상 디스크 익스텐트를 상기 가상 디스크 파일로부터 분리시키고, 상기 가상 디스크 익스텐트가 제로화되었다는 판정에 응답하여 상기 가상 디스크 익스텐트가 제로화되었음을 나타내도록 상기 가상 디스크 익스텐트와 연관된 상태 정보를 변조하게 하는
명령어를 더 포함하는
컴퓨터 시스템.
- 제 3 항에 있어서,
상기 메모리는, 실행시에 상기 컴퓨터 시스템으로 하여금 상기 가상 디스크를 제어하는 파일 시스템에 트림 커맨드를 발행하라는 요청을 전송하게 하는 명령어를 더 포함하는
컴퓨터 시스템.
- 가상 장치에 데이터를 저장하는 컴퓨터 구현 방법으로서,
가상 장치 내에서 파일 시스템을 포함하는 게스트 운영 시스템을 실행하는 단계와,
상기 게스트 운영 시스템에 가상 디스크 파일로부터 분리된 가상 디스크 익스텐트를 포함하는 가상 저장 디바이스를 노출시키는 단계와,
상기 가상 디스크 익스텐트에 데이터를 기록하라는 요청을 수신하는 단계와,
상기 가상 디스크 익스텐트와 연관된 상태 정보가 상기 가상 디스크 익스텐트가 자유 공감임을 나타낸다고 판정하는 단계와,
상기 가상 디스크 파일의 섹션 내에 사전존재하는 비트 패턴을 겹쳐쓰기하지 않고 상기 가상 디스크 익스텐트를 기술하도록 상기 가상 디스크 파일의 상기 섹션을 할당하는 단계와,
상기 가상 디스크 익스텐트가 상기 가상 디스크 파일의 할당된 섹션에 맵핑되었음을 나타내도록 상기 가상 디스크 익스텐트와 연관된 상기 상태 정보를 변조하는 단계와,
상기 데이터를 상기 가상 디스크 파일의 할당된 섹션에 저장하는 단계를 포함하는
컴퓨터 구현 방법.
- 제 8 항에 있어서,
상기 가상 디스크 익스텐트를 상기 가상 디스크 파일로부터 분리시키는 단계와,
상기 가상 디스크 익스텐트를 자유 공간으로서 식별하는 파일 시스템으로부터 신호를 수신한 것에 응답하여 상기 가상 디스크 익스텐트가 임의의 데이터를 포함한다는 것을 나타내도록 상기 가상 디스크 익스텐트와 연관된 상기 상태 정보를 변조하는 단계를 더 포함하는
컴퓨터 구현 방법.
- 제 8 항에 있어서,
상기 가상 디스크 익스텐트를 상기 가상 디스크 파일로부터 분리시키는 단계와,
상기 가상 디스크 익스텐트의 모든 섹터를 트리밍하라는 요청을 수신한 것에 응답하여 상기 가상 디스크 익스텐트가 비정보개시(non-information disclosing) 비트 패턴을 포함한다는 것을 나타내도록 상기 가상 디스크 익스텐트와 연관된 상기 상태 정보를 변조하는 단계를 더 포함하는
컴퓨터 구현 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/046,617 | 2011-03-11 | ||
US13/046,617 US9146765B2 (en) | 2011-03-11 | 2011-03-11 | Virtual disk storage techniques |
PCT/US2012/027645 WO2012125315A2 (en) | 2011-03-11 | 2012-03-04 | Virtual disk storage techniques |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140005280A true KR20140005280A (ko) | 2014-01-14 |
KR102047558B1 KR102047558B1 (ko) | 2019-11-21 |
Family
ID=46797138
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137024078A KR102047558B1 (ko) | 2011-03-11 | 2012-03-04 | 가상 디스크 저장 기술 |
Country Status (7)
Country | Link |
---|---|
US (4) | US9146765B2 (ko) |
EP (1) | EP2684135A4 (ko) |
JP (2) | JP6050262B2 (ko) |
KR (1) | KR102047558B1 (ko) |
CN (2) | CN107092441B (ko) |
HK (1) | HK1243785A1 (ko) |
WO (1) | WO2012125315A2 (ko) |
Families Citing this family (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9092149B2 (en) | 2010-11-03 | 2015-07-28 | Microsoft Technology Licensing, Llc | Virtualization and offload reads and writes |
US9146765B2 (en) | 2011-03-11 | 2015-09-29 | Microsoft Technology Licensing, Llc | Virtual disk storage techniques |
US9841985B2 (en) * | 2011-04-12 | 2017-12-12 | Red Hat Israel, Ltd. | Storage block deallocation in virtual environments |
US8725782B2 (en) | 2011-04-25 | 2014-05-13 | Microsoft Corporation | Virtual disk storage techniques |
US9519496B2 (en) | 2011-04-26 | 2016-12-13 | Microsoft Technology Licensing, Llc | Detecting and preventing virtual disk storage linkage faults |
US9009438B2 (en) * | 2011-06-01 | 2015-04-14 | International Business Machines Corporation | Space reclamation in multi-layered and thin provisioned storage systems |
US9817582B2 (en) | 2012-01-09 | 2017-11-14 | Microsoft Technology Licensing, Llc | Offload read and write offload provider |
US9152548B2 (en) * | 2012-01-17 | 2015-10-06 | Vmware, Inc. | Controlling access to a privileged resource in user-mode system level mobile virtualization using a ptrace () system call |
US8488943B1 (en) * | 2012-01-31 | 2013-07-16 | Google Inc. | Trimming media content without transcoding |
US8904081B1 (en) * | 2012-05-08 | 2014-12-02 | Vmware, Inc. | Composing a virtual disk using application delta disk images |
JPWO2014030186A1 (ja) * | 2012-08-23 | 2016-07-28 | 富士通株式会社 | 中継装置、中継方法、中継プログラムおよび中継システム |
US9778860B2 (en) | 2012-09-12 | 2017-10-03 | Microsoft Technology Licensing, Llc | Re-TRIM of free space within VHDX |
US10120700B1 (en) * | 2012-10-02 | 2018-11-06 | Tintri Inc. | Using a control virtual disk for storage management |
US9569113B2 (en) * | 2012-10-11 | 2017-02-14 | SK Hynix Inc. | Data storage device and operating method thereof |
US9071585B2 (en) | 2012-12-12 | 2015-06-30 | Microsoft Technology Licensing, Llc | Copy offload for disparate offload providers |
US9251201B2 (en) | 2012-12-14 | 2016-02-02 | Microsoft Technology Licensing, Llc | Compatibly extending offload token size |
US9817766B1 (en) * | 2012-12-28 | 2017-11-14 | EMC IP Holding Company LLC | Managing relocation of slices in storage systems |
US9633027B1 (en) | 2013-03-14 | 2017-04-25 | EMC IP Holding Company LLC | High speed backup |
CN104079600B (zh) * | 2013-03-27 | 2018-10-12 | 中兴通讯股份有限公司 | 文件存储方法、装置、访问客户端及元数据服务器系统 |
US9128746B2 (en) * | 2013-03-29 | 2015-09-08 | Vmware, Inc. | Asynchronous unmap of thinly provisioned storage for virtual machines |
CN104111800B (zh) | 2013-04-18 | 2018-02-23 | 阿里巴巴集团控股有限公司 | 一种虚拟磁盘的io口调度方法及其调度装置 |
US9983992B2 (en) | 2013-04-30 | 2018-05-29 | WMware Inc. | Trim support for a solid-state drive in a virtualized environment |
US9600203B2 (en) | 2014-03-11 | 2017-03-21 | Amazon Technologies, Inc. | Reducing data volume durability state for block-based storage |
US10055352B2 (en) * | 2014-03-11 | 2018-08-21 | Amazon Technologies, Inc. | Page cache write logging at block-based storage |
US9747298B2 (en) * | 2014-05-02 | 2017-08-29 | Vmware, Inc. | Inline garbage collection for log-structured file systems |
US9348517B2 (en) | 2014-08-28 | 2016-05-24 | International Business Machines Corporation | Using a migration threshold and a candidate list for cache management of sequential write storage |
EP3190520B1 (en) | 2014-09-01 | 2019-08-07 | Huawei Technologies Co. Ltd. | File access method and apparatus, and storage system |
US9489132B2 (en) | 2014-10-07 | 2016-11-08 | Pure Storage, Inc. | Utilizing unmapped and unknown states in a replicated storage system |
US11048446B2 (en) * | 2014-12-17 | 2021-06-29 | Uniys Corporation | Data expanse using memory-mapped files on a system architecture interface layer-based mainframe operating system |
US9632704B2 (en) | 2015-02-09 | 2017-04-25 | International Business Machines Corporation | Management of physical extents for space efficient storage volumes |
US9658773B2 (en) * | 2015-02-09 | 2017-05-23 | International Business Machines Corporation | Management of extents for space efficient storage volumes by reusing previously allocated extents |
US10558480B2 (en) * | 2015-09-10 | 2020-02-11 | Veritas Technologies Llc | Optimizing access to production data |
US9772780B2 (en) * | 2015-10-30 | 2017-09-26 | Netapp, Inc. | Method for non-disruptively aligning I/O access of a host operating system with the underlying storage system |
US10209899B2 (en) * | 2015-11-06 | 2019-02-19 | Microsoft Technology Licensing, Llc | Storage virtualization offload |
WO2017111955A1 (en) * | 2015-12-22 | 2017-06-29 | Intel IP Corporation | Methods and apparatus to improve interprocess communication |
US10168910B2 (en) | 2017-03-09 | 2019-01-01 | International Business Machines Corporation | Storage area network reclamation for virtual environments |
CN107688442B (zh) * | 2017-09-04 | 2020-11-20 | 苏州浪潮智能科技有限公司 | 一种用于固态硬盘的虚拟块管理方法 |
US10565125B2 (en) * | 2018-02-27 | 2020-02-18 | Hewlett Packard Enterprise Development Lp | Virtual block addresses |
US11249664B2 (en) * | 2018-10-09 | 2022-02-15 | Western Digital Technologies, Inc. | File system metadata decoding for optimizing flash translation layer operations |
US10802725B2 (en) * | 2019-03-07 | 2020-10-13 | Vmware, Inc. | Management of unmap processing rates in distributed and shared data storage volumes |
CN110209354B (zh) * | 2019-05-24 | 2022-04-19 | 北京百度网讯科技有限公司 | 用于处理数据的方法、装置、设备和介质 |
US20200391416A1 (en) * | 2019-06-13 | 2020-12-17 | Trexel, Inc. | Blowing agent introduction in polymer foam processing methods and systems |
US11422751B2 (en) | 2019-07-18 | 2022-08-23 | Pure Storage, Inc. | Creating a virtual storage system |
US20210055882A1 (en) * | 2019-08-22 | 2021-02-25 | Micron Technology, Inc. | Hierarchical memory apparatus |
US11816363B2 (en) * | 2021-11-04 | 2023-11-14 | International Business Machines Corporation | File based virtual disk management |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06268715A (ja) * | 1992-10-19 | 1994-09-22 | Internatl Business Mach Corp <Ibm> | トークン識別システム |
JP2008146574A (ja) * | 2006-12-13 | 2008-06-26 | Hitachi Ltd | 記憶制御装置及び記憶制御方法 |
JP2010055557A (ja) * | 2008-08-29 | 2010-03-11 | Hitachi Ltd | ストレージシステム及びストレージシステムの制御方法 |
Family Cites Families (130)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US1740650A (en) | 1926-08-13 | 1929-12-24 | Holland William Heap | Knitted articles or fabrics and the manufacture thereof |
US5043866A (en) | 1988-04-08 | 1991-08-27 | International Business Machines Corporation | Soft checkpointing system using log sequence numbers derived from stored data pages and log records for database recovery |
US5369757A (en) | 1991-06-18 | 1994-11-29 | Digital Equipment Corporation | Recovery logging in the presence of snapshot files by ordering of buffer pool flushing |
US5355477A (en) | 1991-12-23 | 1994-10-11 | International Business Machines Corporation | Method for updating a block using record-level locks by committing the update if the block has not been updated by another process otherwise spinning |
KR940004434A (ko) | 1992-08-25 | 1994-03-15 | 윌리엄 이. 힐러 | 스마트 다이나믹 랜덤 억세스 메모리 및 그 처리방법 |
US5528594A (en) | 1994-12-22 | 1996-06-18 | International Business Machines Corporation | Method and system for implementing sub-tokens on a token ring network |
US6275867B1 (en) | 1995-09-12 | 2001-08-14 | International Business Machines Corporation | Operation-partitioned off-loading of operations in a distributed environment |
US5668958A (en) | 1995-09-12 | 1997-09-16 | International Business Machines Corporation | Heterogeneous filing system with common API and reconciled file management rules |
US6161145A (en) | 1997-05-08 | 2000-12-12 | International Business Machines Corporation | Updating server-related data at a client |
US6434620B1 (en) | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
US6141705A (en) | 1998-06-12 | 2000-10-31 | Microsoft Corporation | System for querying a peripheral device to determine its processing capabilities and then offloading specific processing tasks from a host to the peripheral device when needed |
US8631066B2 (en) | 1998-09-10 | 2014-01-14 | Vmware, Inc. | Mechanism for providing virtual machines for use by multiple users |
US6304983B1 (en) | 1998-09-30 | 2001-10-16 | International Business Machines Corporation | Checkpoint logging without checkpoint display device availability |
US6385701B1 (en) | 1999-11-19 | 2002-05-07 | International Business Machines Corporation | Method, system and program products for sharing data between varied clients using token management |
US7412462B2 (en) | 2000-02-18 | 2008-08-12 | Burnside Acquisition, Llc | Data repository and method for promoting network storage of data |
US6785743B1 (en) | 2000-03-22 | 2004-08-31 | University Of Washington | Template data transfer coprocessor |
US6775790B2 (en) * | 2000-06-02 | 2004-08-10 | Hewlett-Packard Development Company, L.P. | Distributed fine-grained enhancements for distributed table driven I/O mapping |
US6804755B2 (en) | 2000-06-19 | 2004-10-12 | Storage Technology Corporation | Apparatus and method for performing an instant copy of data based on a dynamically changeable virtual mapping scheme |
EP1179793A1 (de) | 2000-08-09 | 2002-02-13 | Indatex GmbH | Portal für Finanzdienstleister |
US7475199B1 (en) | 2000-10-19 | 2009-01-06 | Emc Corporation | Scalable network file system |
US7895445B1 (en) | 2001-04-26 | 2011-02-22 | Nokia Corporation | Token-based remote data access |
US6961055B2 (en) | 2001-05-09 | 2005-11-01 | Free Radical Design Limited | Methods and apparatus for constructing virtual environments |
US6697881B2 (en) | 2001-05-29 | 2004-02-24 | Hewlett-Packard Development Company, L.P. | Method and system for efficient format, read, write, and initial copy processing involving sparse logical units |
US20040139125A1 (en) | 2001-06-05 | 2004-07-15 | Roger Strassburg | Snapshot copy of data volume during data access |
US6938002B2 (en) | 2001-06-20 | 2005-08-30 | International Business Machines Corporation | System and method for product evaluation |
US7016982B2 (en) | 2002-05-09 | 2006-03-21 | International Business Machines Corporation | Virtual controller with SCSI extended copy command |
US7107385B2 (en) | 2002-08-09 | 2006-09-12 | Network Appliance, Inc. | Storage virtualization by layering virtual disk objects on a file system |
US20040049603A1 (en) | 2002-09-05 | 2004-03-11 | International Business Machines Corporation | iSCSI driver to adapter interface protocol |
US7121456B2 (en) | 2002-09-13 | 2006-10-17 | Visa U.S.A. Inc. | Method and system for managing token image replacement |
US7340486B1 (en) | 2002-10-10 | 2008-03-04 | Network Appliance, Inc. | System and method for file system snapshot of a virtual logical disk |
AU2003302050A1 (en) | 2002-11-15 | 2004-06-15 | Creo Inc. | Methods and systems for sharing data |
US7167905B2 (en) | 2003-01-31 | 2007-01-23 | Sierra Wireless, Inc. | Token-based Web browsing with visual feedback of disclosure |
US7194462B2 (en) | 2003-02-27 | 2007-03-20 | Bea Systems, Inc. | Systems and methods for implementing an XML query language |
JP4271967B2 (ja) | 2003-03-10 | 2009-06-03 | 株式会社日立製作所 | 分散ファイルシステム及び分散ファイルシステムの運用方法 |
US7406501B2 (en) | 2003-03-24 | 2008-07-29 | Yahoo! Inc. | System and method for instant messaging using an e-mail protocol |
US7461080B1 (en) | 2003-05-09 | 2008-12-02 | Sun Microsystems, Inc. | System logging within operating system partitions using log device nodes that are access points to a log driver |
US20040267672A1 (en) | 2003-06-26 | 2004-12-30 | Gray William J. | System and method for conducting secure electronic transactions |
US7373548B2 (en) | 2003-08-29 | 2008-05-13 | Intel Corporation | Hardware recovery in a multi-threaded architecture |
DE60309706T2 (de) | 2003-09-19 | 2007-03-29 | Harman Becker Automotive Systems Gmbh | Datenübertragungsschnittstelle |
US7698361B2 (en) | 2003-12-31 | 2010-04-13 | Microsoft Corporation | Lightweight input/output protocol |
US7633955B1 (en) | 2004-02-13 | 2009-12-15 | Habanero Holdings, Inc. | SCSI transport for fabric-backplane enterprise servers |
JP4646526B2 (ja) | 2004-02-18 | 2011-03-09 | 株式会社日立製作所 | 記憶制御システム及び同システムの制御方法 |
US7376674B2 (en) | 2004-05-14 | 2008-05-20 | Oracle International Corporation | Storage of multiple pre-modification short duration copies of database information in short term memory |
US8042163B1 (en) | 2004-05-20 | 2011-10-18 | Symatec Operating Corporation | Secure storage access using third party capability tokens |
US7512721B1 (en) | 2004-05-25 | 2009-03-31 | Qlogic, Corporation | Method and apparatus for efficient determination of status from DMA lists |
US7383405B2 (en) | 2004-06-30 | 2008-06-03 | Microsoft Corporation | Systems and methods for voluntary migration of a virtual machine between hosts with common storage connectivity |
EP1650923B1 (en) | 2004-10-22 | 2011-05-18 | Software AG | Authentication method and devices |
US7464124B2 (en) | 2004-11-19 | 2008-12-09 | International Business Machines Corporation | Method for autonomic data caching and copying on a storage area network aware file system using copy services |
US20080104039A1 (en) | 2004-11-24 | 2008-05-01 | Linda Lowson | System and method for resource management |
US7275139B1 (en) | 2004-12-02 | 2007-09-25 | Tormasov Alexander G | Secure deletion of information from hard disk drive |
US7603555B2 (en) | 2004-12-07 | 2009-10-13 | Microsoft Corporation | Providing tokens to access extranet resources |
US7565526B1 (en) | 2005-02-03 | 2009-07-21 | Sun Microsystems, Inc. | Three component secure tunnel |
US8370819B2 (en) | 2005-03-25 | 2013-02-05 | Microsoft Corporation | Mechanism to store information describing a virtual machine in a virtual disk image |
US7475167B2 (en) | 2005-04-15 | 2009-01-06 | Intel Corporation | Offloading data path functions |
US8713180B2 (en) | 2005-06-22 | 2014-04-29 | Cisco Technology, Inc. | Zero-copy network and file offload for web and application servers |
US7480908B1 (en) | 2005-06-24 | 2009-01-20 | Azul Systems, Inc. | Segmented virtual machine transport mechanism |
JP4776307B2 (ja) | 2005-08-31 | 2011-09-21 | 株式会社日立製作所 | ストレージシステム、データ転送方法及びプログラム |
US7617216B2 (en) | 2005-09-07 | 2009-11-10 | Emc Corporation | Metadata offload for a file server cluster |
US7725620B2 (en) | 2005-10-07 | 2010-05-25 | International Business Machines Corporation | Handling DMA requests in a virtual memory environment |
US8347373B2 (en) | 2007-05-08 | 2013-01-01 | Fortinet, Inc. | Content filtering of remote file-system access protocols |
US7877485B2 (en) * | 2005-12-02 | 2011-01-25 | International Business Machines Corporation | Maintaining session states within virtual machine environments |
US7676607B2 (en) | 2005-12-08 | 2010-03-09 | Electronics And Telecommunications Research Institute | Hardware acceleration apparatus for iSCSI target system using TOE and method for performing read/write command using the apparatus |
US7702843B1 (en) | 2006-04-27 | 2010-04-20 | Vmware, Inc. | Determining memory conditions in a virtual machine |
US7653794B2 (en) | 2006-05-08 | 2010-01-26 | Microsoft Corporation | Converting physical machines to virtual machines |
US8332370B2 (en) | 2006-05-09 | 2012-12-11 | Hewlett-Packard Development Company, L.P. | Maintaining commonly named client-specific file content in hard disk drive emulation |
US20080065835A1 (en) | 2006-09-11 | 2008-03-13 | Sun Microsystems, Inc. | Offloading operations for maintaining data coherence across a plurality of nodes |
KR20090067178A (ko) | 2006-09-21 | 2009-06-24 | 인터디지탈 테크날러지 코포레이션 | 그룹 단위 비밀키 발생 |
US8082231B1 (en) | 2006-09-22 | 2011-12-20 | Emc Corporation | Techniques using identifiers and signatures with data operations |
JP2008090657A (ja) | 2006-10-03 | 2008-04-17 | Hitachi Ltd | ストレージシステム及び制御方法 |
US7765361B2 (en) | 2006-11-21 | 2010-07-27 | Microsoft Corporation | Enforced transaction system recoverability on media without write-through |
US8239674B2 (en) | 2006-11-21 | 2012-08-07 | Kabushiki Kaisha Toshiba | System and method of protecting files from unauthorized modification or deletion |
US8213583B2 (en) | 2006-11-22 | 2012-07-03 | Verizon Patent And Licensing Inc. | Secure access to restricted resource |
US20080140724A1 (en) | 2006-12-06 | 2008-06-12 | David Flynn | Apparatus, system, and method for servicing object requests within a storage controller |
CN101646994B (zh) | 2006-12-06 | 2016-06-15 | 才智知识产权控股公司(2) | 利用内存库交错管理固态存储器的命令的装置、系统及方法 |
US9189265B2 (en) | 2006-12-21 | 2015-11-17 | Vmware, Inc. | Storage architecture for virtual machines |
US20080155051A1 (en) | 2006-12-23 | 2008-06-26 | Simpletech, Inc. | Direct file transfer system and method for a computer network |
US7941812B2 (en) | 2007-01-30 | 2011-05-10 | Hewlett-Packard Development Company, L.P. | Input/output virtualization through offload techniques |
US8397038B2 (en) | 2007-03-22 | 2013-03-12 | Vmware, Inc. | Initializing file data blocks |
US7831720B1 (en) | 2007-05-17 | 2010-11-09 | Chelsio Communications, Inc. | Full offload of stateful connections, with partial connection offload |
US7886115B2 (en) | 2007-07-13 | 2011-02-08 | Hitachi Global Storage Technologies Netherlands, B.V. | Techniques for implementing virtual storage devices |
US7730034B1 (en) | 2007-07-19 | 2010-06-01 | Amazon Technologies, Inc. | Providing entity-related data storage on heterogeneous data repositories |
US7801852B2 (en) | 2007-07-31 | 2010-09-21 | Oracle International Corporation | Checkpoint-free in log mining for distributed information sharing |
US7694105B2 (en) | 2007-08-22 | 2010-04-06 | Hitachi Global Storage Technologies Netherlands, B.V. | Data storage systems that implement sector sets |
JP4906674B2 (ja) | 2007-10-25 | 2012-03-28 | 株式会社日立製作所 | 仮想計算機システム及びその制御方法 |
US20090164994A1 (en) | 2007-12-20 | 2009-06-25 | Virtual Computer, Inc. | Virtual computing management systems and methods |
US8051111B2 (en) | 2008-01-31 | 2011-11-01 | Prowess Consulting, Llc | Method and system for modularizing windows imaging format |
JP4810548B2 (ja) | 2008-02-07 | 2011-11-09 | 株式会社東芝 | サーバ装置、更新画像検出方法およびプログラム |
US20110131640A1 (en) | 2008-02-18 | 2011-06-02 | Microelectronica Espanola S.A.U. | Secure transfer of data |
US8074014B2 (en) | 2008-03-31 | 2011-12-06 | Microsoft Corporation | Storage systems using write off-loading |
US20090248835A1 (en) | 2008-03-31 | 2009-10-01 | Subhankar Panda | Offloading data transfers between a local and remote network |
CN101572660B (zh) | 2008-04-30 | 2013-06-05 | 北京明朝万达科技有限公司 | 一种防止数据泄密的综合控制方法 |
US8745336B2 (en) | 2008-05-29 | 2014-06-03 | Vmware, Inc. | Offloading storage operations to storage hardware |
US20090327621A1 (en) | 2008-06-27 | 2009-12-31 | Microsoft Corporation | Virtual memory compaction and compression using collaboration between a virtual memory manager and a memory manager |
US9323681B2 (en) | 2008-09-18 | 2016-04-26 | Avere Systems, Inc. | File storage system, cache appliance, and method |
JP5146174B2 (ja) | 2008-07-28 | 2013-02-20 | 富士通株式会社 | 仮想マシンモニタ装置およびプログラム,ならびに仮想マシン間メモリ共有管理方法 |
US8307177B2 (en) | 2008-09-05 | 2012-11-06 | Commvault Systems, Inc. | Systems and methods for management of virtualization data |
US8086585B1 (en) | 2008-09-30 | 2011-12-27 | Emc Corporation | Access control to block storage devices for a shared disk based file system |
US7904914B2 (en) | 2008-09-30 | 2011-03-08 | Microsoft Corporation | On-the-fly replacement of physical hardware with emulation |
US8250267B2 (en) | 2008-10-31 | 2012-08-21 | Netapp, Inc. | Control I/O offload in a split-path storage virtualization system |
TWI405211B (zh) | 2008-11-04 | 2013-08-11 | Phison Electronics Corp | 快閃記憶體儲存系統、控制器與資料保護方法 |
US8566821B2 (en) | 2008-11-11 | 2013-10-22 | Netapp Inc. | Cloning virtual machines |
TWI393143B (zh) | 2008-12-05 | 2013-04-11 | Phison Electronics Corp | 快閃記憶體儲存系統及其控制器與防資料竄改方法 |
US9454368B2 (en) * | 2009-01-21 | 2016-09-27 | Vmware, Inc. | Data mover permitting data transfer without transferring data between application and operating system |
US8443166B2 (en) | 2009-03-06 | 2013-05-14 | Vmware, Inc. | Method for tracking changes in virtual disks |
US8370835B2 (en) | 2009-03-12 | 2013-02-05 | Arend Erich Dittmer | Method for dynamically generating a configuration for a virtual machine with a virtual hard disk in an external storage device |
US8397046B2 (en) | 2009-03-26 | 2013-03-12 | Hitachi, Ltd. | Method and apparatus for deploying virtual hard disk to storage system |
US8117168B1 (en) * | 2009-03-31 | 2012-02-14 | Symantec Corporation | Methods and systems for creating and managing backups using virtual disks |
US8805788B2 (en) * | 2009-05-04 | 2014-08-12 | Moka5, Inc. | Transactional virtual disk with differential snapshots |
US8583893B2 (en) | 2009-05-28 | 2013-11-12 | Marvell World Trade Ltd. | Metadata management for virtual volumes |
US8281149B2 (en) | 2009-06-23 | 2012-10-02 | Google Inc. | Privacy-preserving flexible anonymous-pseudonymous access |
JP2011048553A (ja) | 2009-08-26 | 2011-03-10 | Nec Corp | ストレージ装置、および同装置における実容量割当て方法、ならびに実容量割当てプログラム |
WO2011023134A1 (en) | 2009-08-28 | 2011-03-03 | Beijing Innovation Works Technology Company Limited | Method and system for managing distributed storage system through virtual file system |
US8831014B2 (en) | 2009-09-26 | 2014-09-09 | Cisco Technology, Inc. | Providing services at a communication network edge |
US8627000B2 (en) | 2010-02-08 | 2014-01-07 | Microsoft Corporation | Virtual disk manipulation operations |
US9147081B2 (en) | 2010-07-27 | 2015-09-29 | Infinidat Ltd. | Method of access control to stored information and system thereof |
US9411517B2 (en) * | 2010-08-30 | 2016-08-09 | Vmware, Inc. | System software interfaces for space-optimized block devices |
US20120079583A1 (en) | 2010-09-23 | 2012-03-29 | Microsoft Corporation | Offload reads and writes |
US20120079229A1 (en) | 2010-09-28 | 2012-03-29 | Craig Jensen | Data storage optimization for a virtual platform |
US20120102561A1 (en) | 2010-10-26 | 2012-04-26 | International Business Machines Corporation | Token-based reservations for scsi architectures |
US8443365B2 (en) * | 2010-11-03 | 2013-05-14 | Hewlett-Packard Development Company, L.P. | Methods and systems to clone a virtual machine instance |
US9092149B2 (en) | 2010-11-03 | 2015-07-28 | Microsoft Technology Licensing, Llc | Virtualization and offload reads and writes |
US20120144501A1 (en) | 2010-12-03 | 2012-06-07 | Salesforce.Com, Inc. | Regulating access to protected data resources using upgraded access tokens |
US8874859B2 (en) * | 2010-12-22 | 2014-10-28 | Vmware, Inc. | Guest file system introspection and defragmentable virtual disk format for space efficiency |
US9146765B2 (en) | 2011-03-11 | 2015-09-29 | Microsoft Technology Licensing, Llc | Virtual disk storage techniques |
US20120324560A1 (en) | 2011-06-17 | 2012-12-20 | Microsoft Corporation | Token data operations |
US20130041985A1 (en) | 2011-08-10 | 2013-02-14 | Microsoft Corporation | Token based file operations |
US20130179959A1 (en) | 2012-01-05 | 2013-07-11 | Microsoft Corporation | Zero Token |
US9817582B2 (en) | 2012-01-09 | 2017-11-14 | Microsoft Technology Licensing, Llc | Offload read and write offload provider |
US9071585B2 (en) | 2012-12-12 | 2015-06-30 | Microsoft Technology Licensing, Llc | Copy offload for disparate offload providers |
US9251201B2 (en) | 2012-12-14 | 2016-02-02 | Microsoft Technology Licensing, Llc | Compatibly extending offload token size |
-
2011
- 2011-03-11 US US13/046,617 patent/US9146765B2/en active Active
-
2012
- 2012-03-04 KR KR1020137024078A patent/KR102047558B1/ko active IP Right Grant
- 2012-03-04 EP EP12756990.3A patent/EP2684135A4/en not_active Ceased
- 2012-03-04 WO PCT/US2012/027645 patent/WO2012125315A2/en unknown
- 2012-03-04 JP JP2013557777A patent/JP6050262B2/ja active Active
- 2012-03-09 CN CN201710188612.1A patent/CN107092441B/zh active Active
- 2012-03-09 CN CN201210060920.3A patent/CN102707900B/zh active Active
-
2013
- 2013-03-22 HK HK18102670.3A patent/HK1243785A1/zh unknown
-
2015
- 2015-09-28 US US14/867,254 patent/US20160019004A1/en not_active Abandoned
-
2016
- 2016-07-28 US US15/221,797 patent/US11614873B2/en active Active
- 2016-11-24 JP JP2016227634A patent/JP2017045477A/ja active Pending
-
2023
- 2023-03-27 US US18/126,656 patent/US20230244395A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06268715A (ja) * | 1992-10-19 | 1994-09-22 | Internatl Business Mach Corp <Ibm> | トークン識別システム |
JP2008146574A (ja) * | 2006-12-13 | 2008-06-26 | Hitachi Ltd | 記憶制御装置及び記憶制御方法 |
JP2010055557A (ja) * | 2008-08-29 | 2010-03-11 | Hitachi Ltd | ストレージシステム及びストレージシステムの制御方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102707900B (zh) | 2017-04-26 |
HK1243785A1 (zh) | 2018-07-20 |
CN107092441B (zh) | 2021-02-12 |
WO2012125315A2 (en) | 2012-09-20 |
US20160335023A1 (en) | 2016-11-17 |
WO2012125315A3 (en) | 2012-11-29 |
KR102047558B1 (ko) | 2019-11-21 |
JP6050262B2 (ja) | 2016-12-21 |
JP2014512593A (ja) | 2014-05-22 |
US20160019004A1 (en) | 2016-01-21 |
US9146765B2 (en) | 2015-09-29 |
CN107092441A (zh) | 2017-08-25 |
CN102707900A (zh) | 2012-10-03 |
US20230244395A1 (en) | 2023-08-03 |
EP2684135A4 (en) | 2014-08-20 |
US11614873B2 (en) | 2023-03-28 |
EP2684135A2 (en) | 2014-01-15 |
US20120233434A1 (en) | 2012-09-13 |
JP2017045477A (ja) | 2017-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102047558B1 (ko) | 가상 디스크 저장 기술 | |
US11157306B2 (en) | Faster access of virtual machine memory backed by a host computing device's virtual memory | |
US10365938B2 (en) | Systems and methods for managing data input/output operations in a virtual computing environment | |
US10846145B2 (en) | Enabling live migration of virtual machines with passthrough PCI devices | |
JP5619173B2 (ja) | 仮想マシンの対称型ライブ・マイグレーション | |
JP5934344B2 (ja) | 仮想記憶ディスク技術 | |
US9135171B2 (en) | Method for improving save and restore performance in virtual machine systems | |
KR101903818B1 (ko) | 가상 디스크 스토리지 기술 | |
US9952984B2 (en) | Erasing a storage block before writing partial data | |
US11762573B2 (en) | Preserving large pages of memory across live migrations of workloads | |
US20200183611A1 (en) | Direct access flash transition layer |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
A201 | Request for examination | ||
AMND | Amendment | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) |