KR101321369B1 - 디스크 블록 액세스 처리 방법 및 시스템 - Google Patents
디스크 블록 액세스 처리 방법 및 시스템 Download PDFInfo
- Publication number
- KR101321369B1 KR101321369B1 KR1020070027804A KR20070027804A KR101321369B1 KR 101321369 B1 KR101321369 B1 KR 101321369B1 KR 1020070027804 A KR1020070027804 A KR 1020070027804A KR 20070027804 A KR20070027804 A KR 20070027804A KR 101321369 B1 KR101321369 B1 KR 101321369B1
- Authority
- KR
- South Korea
- Prior art keywords
- domain
- block
- access
- disk
- page
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
-
- 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
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0637—Permissions
-
- 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/064—Management of blocks
-
- 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
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
-
- 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- 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
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
- G06F2212/284—Plural cache memories being distributed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/311—In host system
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)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
본 발명은 디스크 블록에 대한 액세스를 처리하는 방법 및 시스템에 관한 것으로, OS 도메인으로부터 디스크 블록에 대한 액세스 요청을 받아 OS 도메인의 디스크 블록에 대한 액세스 허용 여부를 소정의 블록 테이블을 참조하여 판단하고, 판단 결과에 따라 OS 도메인의 디스크 블록 액세스를 처리함으로써, 가상 머신 모니터(VMM) 환경에서 메모리 액세스 제어를 통하여 데이터 카피 없이 도메인 간의 캐시를 공유할 수 있어서 성능이 뛰어나고, 디스크 드라이브에 대한 액세스 제어를 디바이스 도메인에서 수행함으로써 데이터 충돌을 막을 수 있는 효과가 있다.
가상 머신 모니터, OS 도메인, 디바이스 도메인, 블록, 공유
Description
도 1은 종래의 네트워크 파일 시스템(NFS)에서의 디스크 액세스를 설명하기 위한 도면이다.
도 2는 가상 머신 모니터상에 적어도 하나 이상의 OS 도메인이 실행되는 환경에서, OS 도메인이 디스크 블록을 액세스하도록 처리하는 시스템의 개략적인 블록도이다.
도 3은 도 2에 도시된 블록 테이블(212)의 엔트리 구성을 설명하기 위한 도면이다.
도 4는 본 발명의 또 다른 실시 예에 따른, 리모트 캐시에서 해당 블록이 히트(hit)한 경우의 신호 흐름도를 도시한다.
도 5는 본 발명의 또 다른 실시 예에 따른, 리모트 캐시에서 해당 블록이 미스(miss)된 경우의 신호 흐름도를 도시한다.
도 6은 본 발명의 또 다른 실시 예에 따른 홈 이동(home migration)을 설명하기 위한 신호 흐름도를 도시한다.
도 7은 본 발명의 또 다른 실시 예에 따른 블록 락을 설명하기 위한 신호 흐 름도를 도시한다.
<도면의 주요 부분에 대한 부호의 설명>
200, 220: OS 도메인 210: 디바이스 도메인
201, 221: 버퍼 캐시 202, 222: 프론트 엔드 드라이버
211: 희생 페이지 캐시 212: 블록 테이블
213: 백 엔드 드라이버 214: 네이티브 드라이버
230: 가상 머신 모니터 231, 232: 이벤트 채널
300: 블록 락 310: 락 홀더
320: 홈 노드 330: 페이지 주소
본 발명은 디스크 블록에 대한 액세스를 처리하는 방법 및 시스템에 관한 것으로, 더 상세하게는 가상 머신 모니터(Virtual Machine Monitor, 이하 'VMM')를 사용하는 환경에서, 서로 다른 OS 도메인들 간에 디스크 블록에 대한 액세스를 처리하는 방법 및 시스템에 관한 것이다.
컴퓨터의 파일 시스템은 파일과 그 안에 든 자료를 저장하고 찾기 쉽도록 유지 관리하는 것이다. 파일 시스템은 하드 디스크나 CD-ROM과 같은 물리적 저장공 간을 저장장치로 활용할 수도 있지만, 네트워크 파일 시스템(Network File System, 이하, 'NFS' 이라 함) 및 공유 디스크 파일 시스템(Shared Disk File System, 이하 'SDFS' 이라 함)와 같은 파일 시스템에서는 네트워크상에 존재하는 파일에 접근하기 위한 가상적 인터페이스인 경우도 있다.
파일 시스템은 크게 디스크, 네트워크, 그리고 특수 용도의 파일 시스템으로 분류할 수 있으며, 특히, 디스크 파일 시스템은 데이터 저장 장치, 특히 컴퓨터에 연결된 디스크 드라이브에 파일을 저장하기 위해 설계된 시스템이다.
도 1은 종래의 네트워크 파일 시스템(NFS)에서의 디스크 액세스를 설명하기 위한 도면이다.
NFS는 네트워크를 통하여 원격 노드(remote node)의 디스크 드라이브를 마치 로컬의 디스크인 것처럼 접근할 수 있도록 해주는 것이다. 디스크 드라이브(120)의 데이터는 원격 노드인 노드 1(110)의 메인 메모리 상의 버퍼 캐시(buffer cache)에 카피가 되고, 네트워크를 통해서 노드 0(100)에 전달되어 노드 0(100)의 메인 메모리 상의 버퍼 캐시에 저장되고, 이 데이터를 애플리케이션에 제공한다. 하지만, 이는 디스크 드라이브 상에 데이터를 액세스하는 데 다른 노드, 여기서는 노드 1(110)을 통해서만 가능하기 때문에 데이터 카피 등에 오버헤드가 크다는 단점이 있다.
또한, SDFS는 SAN(storage area network) 또는 TCP/IP 네트워크상에 직접 연결된 디스크 드라이브들에 대한 접근을 가능케 하는 기술이다. 여러 노드 간에 동일한 디스크 드라이브를 공유할 경우 데이터 일관성 유지를 위한 기술을 포함한다. 각 노드는 버퍼 캐시를 갖고 있으며, 데이터 일관성을 위해서 동일한 디스크 블록에 대한 카피는 하나만을 허용한다. 이를 위해서 디스크 드라이브를 액세스하기 전에 우선 블록에 대한 락(lock)을 얻도록 제한한다. 별도의 블록 락을 관리하는 서버 노드가 있을 수도 있고, 디스크에서 블록 락 메커니즘을 제공할 수도 있다.
이는 데이터가 다른 노드의 도움없이 디스크 드라이브에서 직접 데이터를 액세스 하고자 하는 노드의 버퍼 캐시로 카피하기 때문에, 데이터를 카피하는 오버헤드가 네트워크 파일 시스템 기술에 비해 작다.
한편, 가상 머신(Virtual machine, 이하 'VM')은 하드웨어 구조를 추상화하여 다양한 운영체계가 하부 구조인 하드웨어에 영향을 받지 않고 실행되도록 하는 구조를 의미한다. VM을 사용하면 얻게 되는 주요 장점으로는 하드웨어에 상관 없이 여러 운영체계 및 소프트웨어를 실행할 수 있으며, 한 대의 컴퓨터에서 동시에 여러 운영체계를 실행할 수 있다. 예를 들면, 멀티태스킹 기술로 인해 하나의 프로세서가 다수의 태스크를 동시에 실행함으로써 다수의 프로세서가 존재하는 것처럼 보이듯이 하나의 하드웨어가 다수의 버추얼 시스템들을 동시에 실행함으로써 외부에서 보았을 때에는 다수의 시스템이 존재하는 것으로 보이게 하는 것이다.
기존의 시스템은 하드웨어를 통제하여 애플리케이션이 표준 API를 통해 하드웨어를 사용할 수 있도록 해주는 운영체계가 존재하고 그 위에서 애플리케이션이 동작하는 구조를 가진다. 하지만, VM 구조에서 운영체계는 하드웨어가 아닌 가상 머신 모니터(Virtual Machine Monitor, 이하 VMM)가 제공하는 가상의 하드웨어 환경을 진짜 하드웨어로 착각하는 상태에서 실행되고 애플리케이션은 역시 운영체계 가 제공하는 API를 통해 가상 하드웨어를 사용하게 된다.
기존의 디스크 파일 시스템들, 전술한 NFS 또는 SDFS 기술들은 서로 다른 컴퓨팅 장치들 간의 디스크 데이터를 공유하기 위한 것으로, VMM 환경에서 적용하는 데 있어서, 데이터 카피의 오버헤드와 데이터의 완전성을 보장하지 못하는 문제점이 있다.
구체적으로, NFS의 경우 버퍼 캐시에서 미스(miss)가 난 경우 원격 노드의 버퍼 캐시를 검색하고 원격 캐시에서 히트(hit)된 경우 데이터를 로컬 노드로 네트워크를 통하여 이동시키는데, 이를 VMM 환경에 적용하게 되면 동일한 노드에서 서로 다른 운영체제(Operating System, 이하 'OS' 이라 함) 도메인 간의 데이터 카피를 일으키게 되는 문제가 발생한다.
또한, SDFS의 경우 노드들이 직접 디스크 드라이브에 액세스하는 것을 제어할 수가 없어서 디스크의 임의의 데이터를 덮어씀으로써 데이터 충돌(corruption)을 발생시킬 소지가 있다.
본 발명은 전술한 종래기술의 문제점을 극복하고자 안출된 것으로, 가상 머신 모니터상에 적어도 하나 이상의 OS 도메인이 실행되는 환경에서, OS 도메인이 디스크 블록을 액세스하도록 처리하는 방법 및 시스템을 제공하는 데 목적이 있다.
본 발명의 기술적 과제를 달성하기 위한 가상 머신 모니터상에 적어도 하나 이상의 OS 도메인이 실행되는 환경에서, OS 도메인이 디스크 블록을 액세스하도록 처리하는 방법은 소정의 OS 도메인으로부터 디스크 블록에 대한 액세스 요청을 받는 단계; 상기 OS 도메인의 상기 디스크 블록에 대한 액세스 허용 여부를 소정의 블록 테이블을 참조하여 판단하는 단계; 및 상기 판단 결과에 따라 상기 OS 도메인의 디스크 블록 액세스를 처리하는 단계를 포함한다.
본 발명의 다른 기술적 과제를 달성하기 위한 디스크 블록 액세스 처리 방법은 임의의 OS 도메인에서 디스크 블록의 액세스를 위해 디바이스 도메인에 상기 블록에 대한 액세스를 요청하는 단계; 상기 디바이스 도메인이 소정의 블록 테이블을 참조하여 다른 OS 도메인에 자신의 버퍼 캐시에 상기 블록을 캐시하고 있는지 검색을 요청하는 단계; 상기 검색 결과에 따라, 상기 디바이스 도메인이 가상 머신 모니터에 상기 OS 도메인과 상기 블록을 캐시하고 있는 OS 도메인 간에 상기 블록의 페이지를 공유하도록 상기 OS 도메인의 페이지 테이블의 업데이트를 요청하는 단계; 및 상기 디바이스 도메인이 상기 블록의 공유된 페이지 주소를 상기 OS 도메인에 리턴하는 단계를 포함한다.
본 발명의 또 다른 기술적 과제를 달성하기 위한 가상 머신 모니터상에 적어도 하나 이상의 OS 도메인이 실행되는 환경에서, OS 도메인이 디스크 블록을 액세스하도록 처리하는 시스템은 소정의 OS 도메인으로부터 디스크 블록에 대한 액세스 요청을 받아, 상기 OS 도메인의 상기 디스크 블록에 대한 액세스 허용 여부를 소정의 블록 테이블을 참조하여 판단하고, 상기 판단 결과에 따라 상기 OS 도메인의 디 스크 블록 액세스를 처리하는 디바이스 도메인을 포함한다.
본 발명의 또 다른 기술적 과제를 달성하기 위한 상기 방법들을 컴퓨터상에서 실행시키기 위한 프로그램을 기록한 기록매체를 포함한다.
본 발명의 세부 및 개선 사항들은 종속항에 개시된다.
이하, 첨부한 도면들을 참조하여 본 발명의 바람직한 실시 예들을 상세히 설명한다.
도 2는 가상 머신 모니터상에 적어도 하나 이상의 OS 도메인이 실행되는 환경에서, OS 도메인이 디스크 블록을 액세스하도록 처리하는 시스템의 개략적인 블록도이다.
도 2를 참조하면, 공유 시스템은 도메인 0(200), 디바이스 도메인(210), 도메인 1(220), 가상 머신 모니터(230) 및 디스크 드라이브(240)가 도시되어 있다.
도메인 0(200)과 도메인 1(220)은 각각의 서로 다른 운영체제 영역, 즉 OS 도메인을 의미하며, 예를 들면 도메인 0은 윈도우 운영체제이고, 도메인 1은 리눅스 운영체제인 경우를 의미한다. 편의상, 이하의 설명에서는 OS 도메인들을 도메인 0, 도메인 1로 표기하여 사용한다. 여기서 2개의 도메인이 도시되어 있지만, 운영체제의 종류와 수는 이에 한정되지 않는다.
또한, 각각의 도메인(200 및 220)은 버퍼 캐시(201 및 221)와 프론트-엔드 드라이버(Front-end driver)(202 및 222)를 포함한다. 여기서, 버퍼 캐시(201 및 221)는 디스크 버퍼링(disk buffering)을 위해 쓰이는 메모리를 의미하며, 대부분의 운영체제에서 사용하고 있으며, 그 용어에 한정되지 않는다.
프론트-엔드 드라이버(202 및 222)는 디바이스 도메인의 백-엔드 드라이버(213)와 짝을 이룬다. 여기서 프론트-엔드 드라이버(202 및 222)는 도메인들 사이에 공유되는 디바이스, 예를 들면 디스크 드라이브를 액세스하기 위해서, 디바이스 도메인의 백-엔드 드라이버(213)와 가상 머신 모니터(VMM)의 이벤트 채널을 통해 통신한다.
디바이스 도메인(210)은 도메인 0 및 도메인 1(200 및 220)로부터 디스크 입출력 요청 또는 블록 락 요청을 받아서 이를 처리한 후 결과를 리턴한다.
구체적으로, 도메인 0(200)으로부터 디스크 입출력을 요청을 받은 경우, 허용되지 않은 경우에 해당하는 디바이스 도메인(210)은 에러를 리턴한다. 허용된 디스크 입출력 요청일 경우 도메인 1(220)의 버퍼 캐시(221)에 존재하는지 확인을 먼저 하고, 없을 경우 직접 디스크 드라이브(240)에 액세스를 수행한다. 여기서, 직접 액세스를 수행하는 경우, 도메인 0(200)의 프론트-엔드 드라이버(202)가 디바이스 도메인(210)의 백-엔드 드라이버(202)와 가상 머신 모니터(230)의 이벤트 채널(231)을 통해 통신하고, 이를 기초로 디바이스 도메인(210)의 네이티브 드라이버(214)가 디스크 드라이브(240)를 액세스하여 디스크 입출력을 수행한다.
도메인 0(200) 및 도메인 1(220)로부터 디바이스 도메인(210)으로의 락 요청은 Get_Reader_Lock, Get_Exclusive_Writer_Lock, Put_Reader_Lock, Put_Exclusive_Writer_Lock, Downgrade_to_Reader_Lock, Upgrade_to_Exclusive_Writer_Lock 등이 있다. 예를 들면, Get_Reader_Lock은 도메인이 디스크의 블록을 읽을 수 있는 권한을 얻기 위한 요청이고, 락 요청시 디바 이스 도메인(210)은 블록 테이블(212)을 검색하여 해당 블록 테이블 엔트리를 찾는다. 여기서, 블록 테이블 엔트리는 블록의 허용 여부(permission)을 나타내는 필드를 포함하고 있는 데, 이를 참조하여 요청된 락을 허용할 수 있는지 확인한다. 허용 가능한 경우, 허용 여부 필드를 수정하여 블록 테이블 엔트리를 수정하고, 결과를 도메인에 리턴한다.
또한, 디바이스 도메인(210)은 희생 페이지 캐시(victim page cache, 211)를 포함한다. 예를 들면, 임의의 OS 도메인에서 페이지를 대체해야 할 경우, OS 도메인이 디바이스 도메인(210)에 블록 테이블의 재등록을 요청하고, 디바이스 도메인(210)은 희생 페이지 캐시(211)에 대체될 페이지를 할당하고, 할당된 희생 페이지 캐시로 대체될 페이지의 내용을 카피한다.
가상 머신 모니터(230)는 디스크 드라이브(240)를 여러 개의 OS 도메인, 즉 도메인 0(200)과 도메인 1(220)이 사용할 수 있도록 해준다.
일반적으로, 가상 머신 모니터(VMM)는 미들웨어 소프트웨어 층으로서, 여러 이질적인 게스트 OS가 공유하게끔 물리적 호스트 플랫폼 출입을 중재하는 것이다. 가상 머신 모니터(VMM)는 가상 플랫폼을 각 게스트 OS에 제공하여 가상 머신(VM)을 구성하게 한다. 또한, 플랫폼과 사용자 소프트웨어 환경 사이에서 가상 머신(VM)의 생성, 소멸, 이식 등을 관리한다.
여기서, 가상 머신 모니터(230)는 이벤트 채널(231 및 232)을 제공하여 각각의 도메인들(200 및 220)의 프론트-엔드 드라이버(202 및 222)와 디바이스 도메인(210)의 백 엔드 드라이버(213)가 통신할 수 있도록 한다. 또한, 가상 머신 모 니터(230)는 각각의 도메인들(200 및 220)의 메모리의 물리적 페이지를 관리하는데, 예를 들면 메모리 관리 유닛(MMU)을 통해 페이지 테이블을 관리한다. MMU는 가상 메모리 시스템을 관리하는 하드웨어 요소이며, MMU는 가상 메모리를 실제 메모리로 사상시키는데 필요한 표를 유지할 수 있도록 소량의 메모리를 가진다.
도 3은 도 2에 도시된 블록 테이블(212)의 엔트리 구성을 설명하기 위한 도면이다.
도 3을 참조하면, 블록 테이블 엔트리는 락 타입(Lock type, 300), 락 홀더(Lock holders, 310), 홈 노드(Home node, 320) 및 페이지 주소(Page address, 330)를 포함한다.
락 타입(300)은 블록 공유 상태를 나타낸다. 여기서 블록의 공유 상태는, 아이들(Idle), 멀티플 리더(Multiple Reader) 또는 배타적 라이터(Exclusive Writer)를 포함하며, 바람직하게 1 바이트로 표현할 수 있다. 여기서, 아이들은 해당 블록이 아직 어느 도메인에 의해서도 사용되고 있지 않은 경우이고, 멀티플 리더는 여러 개의 도메인에 해당 블록에 대한 읽기 권한이 설정되어 있는 경우이며, 배타적 라이터는 특정 도메인에만 해당 블록에 대한 쓰기 권한이 설정되어 있는 경우를 의미한다. 이와 같이 함으로써, 디스크 드라이브 블록의 데이터 일관성을 유지할 수 있다.
더 구체적으로, 본 발명에 따른 바람직한 실시 예에서, 블록 락은 멀티플 리더 싱글 라이터 시맨틱(Multiple reader single writer semantics)을 구현한다. 즉, read only permission은 동시에 여러 도메인이 가질 수 있으나, write 권한이 필요한 경우에는 배타적 카피(exclusive copy)만을 남기고 나머지는 무효화(invalidate) 시키도록 한다.
Read only permission을 갖는 블록의 실제 데이터는 특정 도메인의 버퍼 캐시에만 존재하고, 나머지 도메인들은 이 버퍼 캐시를 공유메모리로 접근한다.
락 홀더(310)는 블록 락을 소유하고 있는 도메인을 가리키는 비트 필드를 나타낸다. 즉, 블록의 접근 권한을 가진 도메인들을 표시하는 비트 필드를 나타내며, 바람직하게, 4 바이트로 표현할 수 있다. 예를 들면, 0부터 31까지의 도메인id를 표현할 수 있으며, 비트가 '1'이면, 해당 비트 포지션에 대응하는 도메인 id를 갖는 도메인이 블록의 접근 권한을 가진다는 것을 의미한다.
홈 노드(320)는 캐시 페이지를 소유하고 있는 노드의 도메인 아이디를 나타내며, 바람직하게, 1 바이트로 표현할 수 있다.
페이지 주소(330)는 캐시 페이지의 물리적 페이지 주소를 나타내며, 바람직하게 4 또는 8 바이트로 표현할 수 있다.
도 4는 본 발명의 또 다른 실시 예에 따른, 리모트 캐시에서 해당 블록이 히트(hit)한 경우의 신호 흐름도를 도시한다.
도메인 0(400)의 로컬 버퍼 캐시에서 미스(miss)가 난 경우, 도메인 0(400)은 디바이스 도메인(410)으로 해당 블록에 대한 읽기 요청을 한다. 디바이스 도메인(410)은 블록 테이블을 참조하여, 도메인 0(400)의 블록 액세스 허용 여부를 검사한다. 여기서, 블록 테이블의 락 타입 정보를 고려한다. 즉, 해당 블록의 현재 상태가 아이들(idle)인지, 멀티플 리더(multiple reader)인지, 배타적 라이 터(exclusive writer) 상태인지 등을 검사한다. 해당 블록에 대한 액세스가 허용되지 않는 경우에는 에러를 리턴하고, 허용되는 경우라면, 블록 테이블의 홈 노드를 검사하여, 홈 노드 정보가 도메인 1(420)로 되어 있다면, 현재 해당 블록을 도메인 1(420)이 캐시하고 있다고 추정할 수 있다. 따라서, 디바이스 도메인(410)은 도메인 1(420)에 자신의 버퍼 캐시에 대한 테스트와 해당 블록이 발견된다면 해당 블록의 페이지를 유지(Pin)를 요청한다. 도메인 1(420)이 자신의 버퍼 캐시를 검사하여 해당 블록이 존재하지 않는 경우에는 에러를 리턴하고, 존재하는 경우에는 해당 블록의 페이지를 유지하고, 결과를 디바이스 도메인(410)에 리턴한다.
디바이스 도메인(410)은 도메인 0(400)과 도메인 1(420) 사이에 페이지를 공유하도록 가상 머신 모니터(430)에 페이지 테이블 업데이트를 요청한다. 여기서, 디바이스 도메인(410)에서 가신 머신 모니터(430)으로의 하이퍼콜(hupercall)이 노드 간에 페이지 공유를 위한 페이지 테이블을 업데이트하라는 요청에 이용된다. 가상 머신 모니터(430)는 도메인 0(400)의 페이지 테이블을 업데이트하고, 공유된 페이지의 물리적 페이지 주소를 디바이스 도메인(410)에 리턴하면서 디바이스 도메인에 페이지를 공유하도록 준비요청을 한다. 이어 디바이스 도메인(410)은 도메인 0(400)에 공유 페이지 주소를 리턴하고, 도메인 0(400)은 공유 페이지(shared page)를 읽는다.
도 5는 본 발명의 또 다른 실시 예에 따른, 리모트 캐시에서 해당 블록이 미스(miss)된 경우의 신호 흐름도를 도시한다.
도메인 0(500)의 로컬 버퍼 캐시에서 미스(miss)가 난 경우, 도메인 0(500) 은 디바이스 도메인(510)으로 해당 블록에 대한 읽기 요청을 한다. 디바이스 도메인(510)은 블록 테이블을 참조하여, 도메인 0(500)의 블록 액세스 허용 여부를 검사한다. 여기서, 블록 테이블의 락 타입 정보를 고려한다. 즉, 해당 블록의 현재 상태가 아이들(idle)인지, 멀티플 리더(multiple reader)인지, 배타적 라이터(exclusive writer) 상태인지 등을 검사한다. 해당 블록에 대한 액세스가 허용되지 않는 경우에는 에러를 리턴하고, 허용되는 경우라면, 블록 테이블의 홈 노드를 검사하여, 홈 노드 정보가 도메인 1(520)로 되어 있다면, 현재 해당 블록을 도메인 1(520)이 캐시하고 있다고 추정할 수 있다. 따라서, 디바이스 도메인(510)은 도메인 1(520)에 자신의 버퍼 캐시에 대한 테스트와 해당 블록이 발견된다면 해당 블록의 페이지를 유지(pin)를 요청한다. 도메인 1(520)에서 해당 블록이 버퍼 캐시에 저장되어 있지 않은 경우, 즉 해당 블록에 리모트 캐시에서 미스된 경우, 도메인 1(520)은 발견되지 않았음을 통보한다.
디바이스 도메인(510)은 디스크 드라이브(530)에 디스크 입출력을 요청한다. 여기서, 디바이스 도메인(510)의 네이티브 드라이버를 통해 디스크 드라이브(530)에 액세스한다. 그리고, 디바이스 도메인(510)은 디스크 드라이브에서 해당 블록의 데이터가 준비될 때까지 대기한다. 디스크 드라이브(530)는 도메인 0(500)의 페이지에 해당 블록의 데이터를 복사한다. 이어, 디바이스 도메인(510)에 해당 블록의 데이터가 준비되었음을 통보한다. 디바이스 도메인(510)은 블록 테이블 엔트리에서 홈 노드 정보를 도메인 0(500)으로 수정한다. 따라서, 현재 해당 블록은 도메인 0(500)이 소유하고 있는 것으로 수정된다. 이와 같이 디스크 블록에 직접 액세스가 일어날 경우에는 블록 테이블에 해당 노드 정보가 홈 노드로서 기록되고, 해당 페이지 주소도 등록된다. 등록되는 페이지는 유일한 캐시 카피를 의미한다. 이어, 디바이스 도메인(510)은 도메인 0(500)에 읽기 완료를 통보하고, 도메인 0(500)은 해당 블록의 페이지를 읽는다.
도 6은 본 발명의 또 다른 실시 예에 따른 홈 이동(home migration)을 설명하기 위한 신호 흐름도를 도시한다.
도 6을 참조하면, 도메인 1(620)에서 디바이스 도메인(610)에 홈 이동 요청을 한다. 즉 블록의 페이지 대체(page replace)가 필요한 경우 도메인이 디바이스 도메인에 블록 테이블의 재등록을 요청한다. 디바이스 도메인(610)이 빈 페이지(free page)를 가진다면, 가상 머신 모니터(630)에 페이지 교환을 요청한다. 반면에, 희생 페이지 캐시에 이용 가능한 페이지가 없는 경우, 하나의 페이지를 대체한다. 여기서, 희생 페이지 캐시는 디스크 내용과 동일하다는 것을 보장한다. 따라서, 대체하는 경우에 데이터 플러쉬(data flush)를 수행하지 않는다. 가상 머신 모니터(640)는 페이지 교환을 위해 페이지 테이블을 업데이트하고, 디바이스 도메인(610)으로 확인 통보한다. 디바이스 도메인(610)은 해당 페이지를 희생 페이지 캐시(victim page cache)에 저장하고, 블록 테이블 엔트리의 홈 노드를 디바이스 도메인으로 수정한다.
이어, 도메인 0(600)으로부터 블록 읽기 요청이 있는 경우, 디바이스 도메인(610)은 블록 액세스 허용 여부를 검사하고, 해당 블록의 홈 노드가 디바이스 도메인으로 되어있으므로, 디바이스 도메인(610)의 희생 페이지 캐시를 검색한다. 디바이스 도메인(610)은 가상 머신 모니터(630)에 페이지 교환 요청을 하고, 가상 머신 모니터(630)는 페이지 교환을 위해 페이지 테이블을 업데이트하고, 이를 통보한다.
디바이스 도메인(610)은 해당 페이지를 희생 페이지 캐시에서 제거하고, 도메인 0(600)에 준 페이지를 빈 페이지 풀(free page pool)에 추가한다. 그리고, 블록 테이블 엔트리의 홈 노드를 도메인 0(600)으로 수정하고, 해당 페이지의 주소를 도메인 0(600)에 리턴한다.
도 7은 본 발명의 또 다른 실시 예에 따른 블록 락을 설명하기 위한 신호 흐름도를 도시한다.
먼저, 블록 락의 상태는 아이들(Idle), 멀티플 리더(Multiple Reader), 배타적 라이터(Exclusive writer)를 포함한다. 여기서, ㅂ블록 락은 멀티플 리더 싱글 라이터 시맨틱(Multiple reader single writer semantics)을 구현한다. 즉, 읽기 권한만의 허용 여부(read only permission)는 동시에 여러 도메인이 가질 수 있으나, 쓰기 권한이 필요한 경우에는 배타적 카피만을 남기고 나머지는 무효화(invalidate)한다. 읽기 권한만을 갖는 블록의 실제 데이터는 특정 도메인의 버퍼 캐시에만 존재하고, 나머지 도메인들은 이 버퍼 캐시를 공유메모리로 접근한다.
디바이스 도메인으로 블록 락 요청은 Get_Reader_LocK, Get_Exclusive_Writer_Lock, Put_Reader_Lock, Put_Exclusive_Writer_Lock, Downgrade_to_Reader_Lock, Upgrade_to_Exclusive_Writer_Lock을 포함한다. 락 요청 시 디바이스 도메인은 블록 테이블을 검색하여 해당 블록 테이블 엔트리를 찾는 다. 블록 테이블 엔트리는 블록의 허용 여부(permission)을 나타내는 필드를 포함하고 있는 데, 이를 참조하여 요청된 락을 허용할 수 있는지 확인한다. 허용가능한 경우 허용 여부 필드를 수정하여 블록 테이블 엔트리를 수정하고, 결과를 OS 도메인에 리턴한다.
도 7을 참조하여 설명하면, 도메인 1(720)이 리더 락(Get_Reader_Lock)이 필요한 경우, 디바이스 도메인(710)에 블록 락을 요청한다. 디바이스 도메인(710)은 블록 테이블을 검색하여 현재 해당 블록의 상태가 아이들(Idle) 상태인 경우, 도메인 1(720)에 확인을 통보한다. 이어, 도메인 0(700)이 리더 락이 필요한 경우, 디바이스 도메인(710)에 블록 락을 요청한다. 디바이스 도메인(710)은 블록 테이블을 검색하여 현재 해당 블록의 상태가 멀티플 리더(Multiple Reader) 상태인 것을 확인하고, 도메인 0(700)에 확인을 통보한다.
이어, 도메인 0(700)이 라이터 락이 필요한 경우, 디바이스 도메인(710)에 현재의 도메인 0의 허용 가능 상태인 멀티플 리더 상태를 배타적 라이터 상태로 락 업그레이드 요청(Upgrade_to_Exclusive_Writer_Lock)을 한다. 이어, 디바이스 도메인(710)은 현재 해당 블록에 대한 허용 여부를 리더 상태로 가지고 있는 도메인 1(720)에 언락(unlock) 요청을 하고, 도메인 1(710)로부터 확인 통보를 받은 경우, 해당 블록을 배타적 라이터로 수정하고, 도메인 0(700)에 확인 통보를 한다.
이후에, 도메인 1(720)이 다시 리더 락이 필요한 경우, 디바이스 도메인(710)에 블록 락을 요청한다. 이어, 디바이스 도메인(710)은 해당 블록에 대한 배탁적 라이터 권한을 가지는 도메인 0(700)에 다운그레이드 요 청(Downgrade_to_Reader_Lock)을 한다. 이러한 다운그레이드 요청을 받은 도메인 0(700)은 선택적으로 버퍼 캐시에 저장되어 있는 해당 블록을 디스크 드라이브로 플러쉬할 수도 있다. 이어, 도메인 0(700)은 디바이스 도메인(710)에 확인 통보를 하면, 디바이스 도메인(710)은 블록 테이블 엔트리에서 블록 락 타입을 멀티플 리더 상태로 수정하고, 도메인 1(720)에 확인 통보를 한다.
이러한 과정들을 수행함으로써, 디바이스 도메인(710)의 제어하에 디스크 드라이브 블록의 데이터 일관성을 유지할 수 있다.
한편 본 발명은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고, 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
이제까지 본 발명에 대하여 바람직한 실시 예를 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 본 발명을 구현할 수 있음을 이해할 것이다. 그러므로 상기 개시된 실시 예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 한다.
본 발명에 따른 OS 도메인으로부터 디스크 블록에 대한 액세스 요청을 받아 OS 도메인의 디스크 블록에 대한 액세스 허용 여부를 소정의 블록 테이블을 참조하여 판단하고, 판단 결과에 따라 OS 도메인의 디스크 블록 액세스를 처리함으로써, 가상 머신 모니터(VMM) 환경에서 메모리 액세스 제어를 통하여 데이터 카피 없이 OS 도메인 간의 캐시를 공유할 수 있어서 성능이 뛰어나다.
또한, 디스크 드라이브에 대한 액세스 제어를 디바이스 도메인에서 수행함으로써 데이터 충돌을 막을 수 있는 효과가 있다.
Claims (20)
- 가상 머신 모니터상에 적어도 하나 이상의 OS 도메인이 실행되는 환경에서, OS 도메인이 디스크 블록을 액세스하도록 처리하는 방법으로서,(a) 소정의 OS 도메인으로부터 디스크 블록에 대한 액세스 요청을 받는 단계;(b) 상기 OS 도메인의 상기 디스크 블록에 대한 액세스 허용 여부를 소정의 블록 테이블을 참조하여 판단하는 단계; 및(c) 상기 판단 결과에 따라 상기 OS 도메인의 디스크 블록 액세스를 처리하는 단계를 포함하고,상기 판단 결과에 따라, 다른 OS 도메인의 버퍼 캐시에 저장된 디스크 블록을 상기 OS 도메인과 공유시키는 것을 특징으로 하는 디스크 블록 액세스 처리 방법.
- 삭제
- 제 1 항에 있어서,상기 블록 테이블은,상기 디스크 블록에 대해 캐시된 페이지(cached page)를 소유하고 있는 노드의 OS 도메인을 나타내는 홈 노드를 포함하고,상기 (c) 단계는,상기 홈 노드에 상응하는 OS 도메인에 자신의 버퍼 캐시를 테스트하도록 요청하는 것을 특징으로 하는 디스크 블록 액세스 처리 방법.
- 제 3 항에 있어서,상기 테스트 결과, 상기 디스크 블록이 상기 홈 노드에 상응하는 OS 도메인에 캐시되어 있는 경우,상기 (c) 단계는,상기 OS 도메인과 상기 홈 노드에 상응하는 OS 도메인 사이에 상기 디스크 블록에 대한 페이지를 공유하도록, 상기 가상 머신 모니터에 상기 OS 도메인의 페이지 테이블의 업데이트를 요청하는 단계; 및상기 페이지 테이블의 업데이트에 따라 공유된 페이지 주소를 상기 OS 도메인에 리턴하는 단계를 포함하는 것을 특징으로 하는 디스크 블록 액세스 처리 방법.
- 제 1 항에 있어서,상기 판단 결과, 상기 디스크 블록이 다른 OS 도메인에 캐시되어 있지 않은 경우,상기 (c) 단계는,디스크 드라이브에 액세스하여 상기 디스크 드라이브가 상기 블록의 데이터 를 상기 OS 도메인의 페이지에 복사하도록 하는 것을 특징으로 하는 디스크 블록 액세스 처리 방법.
- 제 5 항에 있어서,상기 디스크 드라이브에 네이티브 드라이버(Native Driver)를 이용하여 액세스하는 것을 특징으로 하는 디스크 블록 액세스 처리 방법.
- 제 1 항에 있어서,상기 블록 테이블은,상기 디스크 블록의 공유 상태를 나타내는 락 타입(Lock Type)을 포함하는 것을 특징으로 하는 디스크 블록 액세스 처리 방법.
- 제 7 항에 있어서,상기 락 타입은,아이들(Idle), 멀티플 리더(Multiple Reader) 및 배타적 라이터(Exclusive Writer)를 포함하는 것을 특징으로 하는 디스크 블록 액세스 처리 방법.
- 제 1 항에 있어서,상기 블록 테이블은,상기 블록에 대한 액세스 권한을 가진 OS 도메인들을 나타내는 락 홀더(Lock Holder)를 포함하는 것을 특징으로 하는 디스크 블록 액세스 처리 방법.
- 제 1 항에 있어서,상기 블록 테이블은,상기 디스크 블록의 락 타입(Lock type), 락 홀더(Lock holder), 홈 노드(Home node) 및 페이지 주소(page address)를 포함하는 것을 특징으로 하는 디스크 블록 액세스 처리 방법.
- 제 1 항에 있어서,상기 액세스 요청은,상기 디스크 블록에 대한 읽기(read)/쓰기(write) 권한 요청인 것을 특징으로 하는 디스크 블록 액세스 처리 방법.
- 임의의 OS 도메인에서 디스크 블록의 액세스를 위해 디바이스 도메인에 상기 블록에 대한 액세스를 요청하는 단계;상기 디바이스 도메인이 소정의 블록 테이블을 참조하여 다른 OS 도메인에 자신의 버퍼 캐시에 상기 블록을 캐시하고 있는지 검색을 요청하는 단계;상기 검색 결과에 따라, 상기 디바이스 도메인이 가상 머신 모니터에 상기 OS 도메인과 상기 블록을 캐시하고 있는 OS 도메인 간에 상기 블록의 페이지를 공유하도록 상기 OS 도메인의 페이지 테이블의 업데이트를 요청하는 단계; 및상기 디바이스 도메인이 상기 블록의 공유된 페이지 주소를 상기 OS 도메인에 리턴하는 단계를 포함하는 디스크 블록 액세스 처리 방법.
- 제 1 항, 제 3 항 내지 제 12 항 중 어느 한 항에 따른 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체.
- 가상 머신 모니터상에 적어도 하나 이상의 OS 도메인이 실행되는 환경에서, OS 도메인이 디스크 블록을 액세스하도록 처리하는 시스템으로서,상기 시스템은,소정의 OS 도메인으로부터 디스크 블록에 대한 액세스 요청을 받아, 상기 OS 도메인의 상기 디스크 블록에 대한 액세스 허용 여부를 소정의 블록 테이블을 참조하여 판단하고, 상기 판단 결과에 따라 상기 OS 도메인의 디스크 블록 액세스를 처리하는 디바이스 도메인을 포함하고,상기 디바이스 도메인은,상기 디스크 블록이 다른 OS 도메인에 캐시되어 있는 경우,상기 디스크 블록에 대한 페이지를 공유하도록, 상기 가상 머신 모니터에 상기 OS 도메인의 페이지 테이블의 업데이트를 요청하고, 상기 페이지 테이블의 업데이트에 따라 공유된 페이지 주소를 상기 OS 도메인에 리턴하는 것을 특징으로 하는 디스크 블록 액세스 처리 시스템.
- 제 14 항에 있어서,상기 디바이스 도메인은,상기 디스크 블록의 락 타입(Lock type), 락 홀더(Lock holder), 홈 노드(Home node) 및 페이지 주소(page address) 중 적어도 하나 이상을 포함하는 블록 테이블을 포함하는 것을 특징으로 하는 디스크 블록 액세스 처리 시스템.
- 삭제
- 제 14 항에 있어서,상기 디바이스 도메인은,상기 디스크 블록이 다른 OS 도메인에 캐시되어 있지 않은 경우,디스크 드라이브에 액세스하여 상기 디스크 드라이브가 상기 블록의 데이터를 상기 OS 도메인의 페이지에 복사하도록 하는 것을 특징으로 하는 디스크 블록 액세스 처리 시스템.
- 제 14 항에 있어서,상기 디바이스 도메인은,상기 OS 도메인의 프론트 엔드 드라이버(front-end driver)와 상기 가상 머신 모니터의 이벤트 채널을 통해 통신하는 백 엔드 드라이버(back-end driver); 및디스크 드라이브에 액세스하는 네이티브 드라이버(native driver)를 포함하 는 것을 특징으로 하는 디스크 블록 액세스 처리 시스템.
- 제 14 항에 있어서,상기 디바이스 도메인은,임의의 OS 도메인으로부터 대체될 페이지의 데이터를 카피하는 희생 페이지 캐시(Victim page cache)를 포함하는 것을 특징으로 하는 디스크 블록 액세스 처리 시스템.
- 제 14 항에 있어서,상기 액세스 요청은,상기 디스크 블록에 대한 읽기(read)/쓰기(write) 권한 요청인 것을 특징으로 하는 디스크 블록 액세스 처리 시스템.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070027804A KR101321369B1 (ko) | 2007-03-21 | 2007-03-21 | 디스크 블록 액세스 처리 방법 및 시스템 |
US12/053,246 US8335903B2 (en) | 2007-03-21 | 2008-03-21 | Method and system for processing access to disk block |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070027804A KR101321369B1 (ko) | 2007-03-21 | 2007-03-21 | 디스크 블록 액세스 처리 방법 및 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20080086108A KR20080086108A (ko) | 2008-09-25 |
KR101321369B1 true KR101321369B1 (ko) | 2013-10-28 |
Family
ID=39775889
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020070027804A KR101321369B1 (ko) | 2007-03-21 | 2007-03-21 | 디스크 블록 액세스 처리 방법 및 시스템 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8335903B2 (ko) |
KR (1) | KR101321369B1 (ko) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110094764A (ko) * | 2010-02-17 | 2011-08-24 | 삼성전자주식회사 | 트랜잭션 기반 입출력 인터페이스를 제공하는 가상화 장치 및 방법 |
CN102063585A (zh) * | 2010-10-29 | 2011-05-18 | 华南理工大学 | 一种基于Xen的安全的虚拟磁盘的访问控制方法 |
US9015436B2 (en) * | 2011-08-22 | 2015-04-21 | Intel Corporation | Performing an atomic operation without quiescing an interconnect structure |
KR101751936B1 (ko) * | 2011-12-15 | 2017-07-12 | 한국전자통신연구원 | 호스트 기반 단말 가상화 환경에서 공유 메모리를 이용한 입출력 디바이스 가상화 장치 및 방법 |
US9798695B2 (en) * | 2012-08-07 | 2017-10-24 | Nokia Technologies Oy | Access control for wireless memory |
US9405689B2 (en) | 2012-11-19 | 2016-08-02 | Marvell World Trade Ltd. | Locally caching data from a shared storage |
US10795824B2 (en) * | 2018-11-21 | 2020-10-06 | International Business Machines Corporation | Speculative data return concurrent to an exclusive invalidate request |
US11880605B2 (en) * | 2022-02-15 | 2024-01-23 | Netapp, Inc. | Managing ephemeral storage of a virtual machine to provide victim caches for use by virtual storage appliances in a cloud environment |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0713823A (ja) * | 1993-06-24 | 1995-01-17 | Nec Corp | 仮想計算機システムにおけるファイル資源管理方式 |
JP2002358205A (ja) * | 2001-06-01 | 2002-12-13 | Dainippon Printing Co Ltd | 複数のプラットホームを備えた携帯可能情報処理装置 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5043876A (en) * | 1988-05-27 | 1991-08-27 | International Business Machines Corporation | N-level file shadowing and recovery in a shared file system |
US5889952A (en) * | 1996-08-14 | 1999-03-30 | Microsoft Corporation | Access check system utilizing cached access permissions |
US5974424A (en) * | 1997-07-11 | 1999-10-26 | International Business Machines Corporation | Parallel file system and method with a metadata node |
US6073216A (en) * | 1997-11-25 | 2000-06-06 | Intel Corporation | System and method for reliable system shutdown after coherency corruption |
JP2001249846A (ja) * | 2000-03-03 | 2001-09-14 | Hitachi Ltd | キャッシュメモリ装置及びデータ処理システム |
KR100349658B1 (ko) | 2000-12-04 | 2002-08-24 | 한국전자통신연구원 | 분산 가상환경을 위한 실시간 상태관리 서버와 그의공유공간 상태정보 관리방법 |
KR20030041277A (ko) | 2001-11-19 | 2003-05-27 | 김남준 | 가상 데이터베이스를 이용한 이아이피 솔루션 제공방법 |
US20030154236A1 (en) * | 2002-01-22 | 2003-08-14 | Shaul Dar | Database Switch enabling a database area network |
JP4241911B2 (ja) * | 2002-03-28 | 2009-03-18 | 株式会社日立製作所 | 情報処理システム |
US7143412B2 (en) * | 2002-07-25 | 2006-11-28 | Hewlett-Packard Development Company, L.P. | Method and apparatus for optimizing performance in a multi-processing system |
US20040122917A1 (en) * | 2002-12-18 | 2004-06-24 | Menon Jaishankar Moothedath | Distributed storage system for data-sharing among client computers running defferent operating system types |
KR20040073630A (ko) | 2003-02-14 | 2004-08-21 | 주식회사 케이티 | Cdn 서비스 제공자간 컨텐츠 공유시스템 및 방법 |
JP2005070965A (ja) | 2003-08-21 | 2005-03-17 | Fujitsu Ltd | 情報処理方法、情報処理システム及び情報処理装置 |
KR20050102522A (ko) | 2004-04-22 | 2005-10-26 | (주)넥스트 링크 | 단말-대-단말을 기반으로 한 멀티미디어 콘텐츠 제공시스템 및 그 방법 |
KR20050114028A (ko) | 2004-05-31 | 2005-12-05 | 정보통신연구진흥원 | San 파일시스템을 위한 협력 캐시 장치 및 방법 |
US8205046B2 (en) * | 2005-01-31 | 2012-06-19 | Hewlett-Packard Development Company, L.P. | System and method for snooping cache information using a directory crossbar |
US7578623B2 (en) * | 2006-08-21 | 2009-08-25 | Intel Corporation | Aligning lens carriers and ferrules with alignment frames |
-
2007
- 2007-03-21 KR KR1020070027804A patent/KR101321369B1/ko not_active IP Right Cessation
-
2008
- 2008-03-21 US US12/053,246 patent/US8335903B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0713823A (ja) * | 1993-06-24 | 1995-01-17 | Nec Corp | 仮想計算機システムにおけるファイル資源管理方式 |
JP2002358205A (ja) * | 2001-06-01 | 2002-12-13 | Dainippon Printing Co Ltd | 複数のプラットホームを備えた携帯可能情報処理装置 |
Also Published As
Publication number | Publication date |
---|---|
US20080235474A1 (en) | 2008-09-25 |
US8335903B2 (en) | 2012-12-18 |
KR20080086108A (ko) | 2008-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101321369B1 (ko) | 디스크 블록 액세스 처리 방법 및 시스템 | |
JP3102495B2 (ja) | 仮想記憶管理方法 | |
US7085909B2 (en) | Method, system and computer program product for implementing copy-on-write of a file | |
US10540279B2 (en) | Server-based persistence management in user space | |
JP5038907B2 (ja) | 仮想マシン環境のアドレス変換をサポートするための方法と装置 | |
US9547600B2 (en) | Method and system for restoring consumed memory after memory consolidation | |
JP4237190B2 (ja) | 仮想マシン環境内でのゲスト物理アドレスの仮想化の方法およびシステム | |
US7975018B2 (en) | Systems and methods for providing distributed cache coherence | |
US8996807B2 (en) | Systems and methods for a multi-level cache | |
KR101845110B1 (ko) | 분산 캐쉬 일관성 프로토콜 | |
US20160239223A9 (en) | Systems and methods for a file-level cache | |
US20100299667A1 (en) | Shortcut input/output in virtual machine systems | |
US20120324181A1 (en) | Detecting and suppressing redundant input-output operations | |
EP2278463A1 (en) | A method and apparatus for supporting address translation in a multiprocessor virtual machine environment | |
US7743209B2 (en) | Storage system for virtualizing control memory | |
CN113906399A (zh) | 基于连接带宽节制存储器即服务 | |
US8898413B2 (en) | Point-in-time copying of virtual storage | |
US20160266842A1 (en) | Multi-level snapshot caching | |
JP2024513734A (ja) | 入出力デバイスによってアクセス可能なメモリのページの移行 | |
WO2013023090A2 (en) | Systems and methods for a file-level cache | |
KR20230123985A (ko) | 입력-출력 디바이스에 의해 액세스가능한 메모리의페이지의 이송 | |
US10691478B2 (en) | Migrating virtual machine across datacenters by transferring data chunks and metadata | |
US8892838B2 (en) | Point-in-time copying of virtual storage and point-in-time dumping | |
JP2004246702A (ja) | 計算機システム、計算機装置、計算機システムにおけるデータアクセス方法及びプログラム | |
US20230229609A1 (en) | Iommu-based direct memory access (dma) tracking for enabling live migration of virtual machines (vms) using passthrough physical devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20160929 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20170927 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |