KR100648065B1 - File system for the hardward using the i/o acceleration technique and method for processing data in the same - Google Patents

File system for the hardward using the i/o acceleration technique and method for processing data in the same Download PDF

Info

Publication number
KR100648065B1
KR100648065B1 KR1020050086181A KR20050086181A KR100648065B1 KR 100648065 B1 KR100648065 B1 KR 100648065B1 KR 1020050086181 A KR1020050086181 A KR 1020050086181A KR 20050086181 A KR20050086181 A KR 20050086181A KR 100648065 B1 KR100648065 B1 KR 100648065B1
Authority
KR
South Korea
Prior art keywords
file system
manager
file
disk
data
Prior art date
Application number
KR1020050086181A
Other languages
Korean (ko)
Other versions
KR20060073431A (en
Inventor
차규일
김재열
안백송
정성인
손성훈
김명준
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Publication of KR20060073431A publication Critical patent/KR20060073431A/en
Application granted granted Critical
Publication of KR100648065B1 publication Critical patent/KR100648065B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 입출력 가속 기술이 적용된 하드웨어용 파일 시스템 및 그 파일 시스템에서의 데이터 처리 방법에 관한 것이다. 이 파일 시스템의 메소드 관리자는 디스크에 저장된 파일에 대한 액세스를 필요로 하는 메소드를 받아서 상기 입출력 가속 기술이 적용된 하드웨어에 대한 블록 디바이스 처리와 문자 디바이스 처리 중 어느 하나를 선택하여 상기 파일에 대한 액세스를 제어한다. 저속-경로 관리자 메소드 관리자의 제어에 따라 입출력 가속 기술이 적용된 하드웨어에 대한 블록 디바이스 처리를 수행한다. 고속-경로 관리자는 메소드 관리자의 제어에 따라 입출력 가속 기술이 적용된 하드웨어에 대한 문자 디바이스 처리를 수행한다. 캐쉬 관리자는 저속-경로 관리자의 제어에 의해, 디스크에 저장된 데이터의 일부를 캐슁하는 캐쉬를 통해 디스크에 저장된 파일 액세스를 수행한다. 입출력 가속 관리자는 고속-경로 관리자의 제어에 의해, 입출력 가속 기술이 적용된 하드웨어를 통하여 디스크에 저장된 데이터의 입출력 가속을 위한 메모리 영역으로의 복사 동작이 수행되도록 제어한다. 본 발명에 따르면, 입출력 가속 기술이 사용된 하드웨어에 대해서도 기존의 유닉스 파일 시스템의 표준 인터페이스를 통한 지원이 가능해진다. The present invention relates to a file system for hardware to which input / output acceleration technology is applied and a data processing method in the file system. The method manager of this file system receives a method requiring access to a file stored on a disk, and controls access to the file by selecting either block device processing or character device processing for the hardware to which the I / O acceleration technology is applied. do. Slow-Path Manager Method Performs block device processing for hardware with I / O acceleration technology under the control of the manager. The fast-path manager performs character device processing on hardware with I / O acceleration technology under the control of the method manager. The cache manager, under the control of the slow-path manager, performs file access stored on the disk through a cache that caches a portion of the data stored on the disk. Under the control of the fast-path manager, the input / output acceleration manager controls the copy operation of the data stored in the disk to the memory area for input / output acceleration through the hardware to which the input / output acceleration technology is applied. According to the present invention, even hardware using I / O acceleration technology can be supported through a standard interface of the existing Unix file system.

파일 시스템, 리눅스, 입출력 가속, EXT2, EXT3, 문자 디바이스, PMEM File System, Linux, I / O Acceleration, EXT2, EXT3, Character Device, PMEM

Description

입출력 가속 기술이 적용된 하드웨어용 파일 시스템 및 그 파일 시스템에서의 데이터 처리 방법{FILE SYSTEM FOR THE HARDWARD USING THE I/O ACCELERATION TECHNIQUE AND METHOD FOR PROCESSING DATA IN THE SAME}FILE SYSTEM FOR THE HARDWARD USING THE I / O ACCELERATION TECHNIQUE AND METHOD FOR PROCESSING DATA IN THE SAME}

도 1은 본 발명의 실시 예에 따른 입출력 가속 기술이 적용된 하드웨어용 파일 시스템이 적용된 서버의 개략적인 블록도이다.1 is a schematic block diagram of a server to which a file system for hardware to which an input / output acceleration technology according to an embodiment of the present invention is applied is applied.

도 2는 도 1에 도시된 EXT3NS 파일 시스템의 상세 블록도이다.FIG. 2 is a detailed block diagram of the EXT3NS file system shown in FIG. 1.

도 3은 도 1에 도시된 디스크의 배치도이다.3 is a layout view of the disk shown in FIG.

도 4는 도 3에 도시된 디스크의 블록 그룹의 구조를 도시한 도면이다.FIG. 4 is a diagram showing the structure of a block group of the disk shown in FIG.

도 5는 본 발명의 실시 예에 따른 입출력 가속 기술이 적용된 하드웨어용 파일 시스템에서의 데이터 블록 인덱싱 방식의 구조도이다.5 is a structural diagram of a data block indexing method in a file system for hardware to which an input / output acceleration technology according to an exemplary embodiment of the present invention is applied.

도 6은 도 3에 도시된 디스크에서의 4KB 블록 인덱싱 방법을 설명하기 위한 도면이다.FIG. 6 is a diagram for describing a 4KB block indexing method in the disk shown in FIG. 3.

도 7은 본 발명의 실시 예에 따른 입출력 가속 기술이 적용된 하드웨어용 파일 시스템이 저속-경로를 수행하여 표준 파일 인터페이스를 지원하는 방법의 흐름도이다.7 is a flowchart illustrating a method in which a file system for hardware to which an input / output acceleration technology is applied according to an embodiment of the present invention supports a standard file interface by performing a low-path.

도 8은 본 발명의 실시 예에 따른 입출력 가속 기술이 적용된 하드웨어용 파일 시스템이 고속-경로를 수행하여 표준 파일 인터페이스를 지원하는 방법의 흐름 도이다.8 is a flowchart illustrating a method of supporting a standard file interface by performing a fast-path in a hardware file system to which an input / output acceleration technology according to an embodiment of the present invention is applied.

본 발명은 파일 시스템에 관한 것으로, 보다 구체적으로는 특수한 메커니즘을 갖는 입출력 가속 기술이 적용된 하드웨어 상에서 표준 파일 시스템 인터페이스를 필요로 하는 응용 프로그램에게 해당 인터페이스를 제공하는 파일 시스템 및 그 파일 시스템에서의 데이터 처리 방법에 관한 것이다.The present invention relates to a file system, and more particularly, to a file system that provides an interface to an application program that requires a standard file system interface on hardware to which an input / output acceleration technology having a special mechanism is applied, and data processing in the file system. It is about a method.

최근, 고화질 위주의 동영상이 일반화되고 있는 추세에서 스트리밍 서비스를 제공하는데 있어서 가장 큰 문제는 서버 능력의 한계이다. 일반적으로 서버는 디스크로부터 입력 데이터를 읽어 네트워크 카드를 통해 이 데이터를 전송한다. 이러한 동작시 서버의 프로세서가 관여한다. 따라서 스트리밍과 같이 입출력 작업부하가 높은 경우에는 입출력 장치의 성능이 서버의 성능을 좌우하게 된다. 이를 해결하기 위해 입출력 가속 기술의 필요성이 대두되어 이에 대한 연구가 수행되어 왔다. Recently, the biggest problem in providing a streaming service in the trend of high-definition video is the limitation of server capacity. Typically, the server reads input data from the disk and sends it through the network card. In this operation, the processor of the server is involved. Therefore, when the I / O workload is high, such as streaming, the performance of the I / O device will determine the performance of the server. In order to solve this problem, the necessity of input / output acceleration technology has emerged, and research on this has been performed.

입출력 가속 기술에 대한 최근의 연구 방향은 입출력 가속 기능을 소프트웨어에 의존하지 않고 하드웨어를 통해 구현함으로써 시스템 프로세서의 부하를 감소시키면서도 멀티미디어 스트리밍에 필요한 충분한 대역폭을 확보할 수 있도록 하고 있다. 이와 같이 입출력 가속 기술이 적용된 하드웨어에서는 기본 디스크 블록 크기를 기존의 파일 시스템에서 사용하던 4KB에 비해 최소 64배나 크게 설정한다. 또한, 디스크로부터 읽혀진 데이터를 네트워크를 통해서 바로 서비스 가능하도록 되어 있다. 이것은 미디어 데이터와 같이 연속성을 갖는 파일을 고성능으로 서비스하기에 적합한 구조를 갖는다. Recent researches on I / O acceleration technology have implemented I / O acceleration function through hardware without software dependence, so that it can secure enough bandwidth for multimedia streaming while reducing the load on system processor. In the hardware with I / O acceleration technology, the basic disk block size is set at least 64 times larger than the 4KB used in the existing file system. In addition, the data read from the disk can be serviced directly through the network. This has a structure suitable for serving high performance files having continuity such as media data.

한편, 운영체제(Operating System) 상에서의 파일 시스템에서 사용하는 표준 인터페이스는 IEEE 표준기구가 제정한 OS 표준 API(Application Program Interface)인 POSIX(Portable Operating System Interface for UNIX)에서 정의한 사양서에 따른다. 리눅스 파일 시스템 중 하나인 Ext(Extended file system)2 파일 시스템이나 Ext3 파일 시스템과 같이 리눅스 커널에 있는 대부분의 파일 시스템들도 역시 이를 따른다. 그러나 지금까지 멀티미디어나 병렬 프로세싱과 같이 입출력 성능을 최우선 목표로 하는 파일 시스템의 경우에는 이와는 달리 사용자에게 고성능을 제공하기 위해 표준과 상이한 인터페이스를 제공하는 것이 보통이었으며, 주로 사용자 영역에서 구현되어졌다. 이것은 기존의 응용 프로그램이 소스 코드의 변경 없이 제공된 파일 시스템의 장점을 사용할 수 없도록 제한하는 단점을 가져왔기 때문이다. 따라서 고성능 입출력을 지원하기 위한 파일 시스템들이 위와 같은 설계를 고려하게 된 것은 구현 메커니즘이 표준 파일 인터페이스를 지원하기에는 적합하지 않았기 때문이다. 결과적으로, 고성능 서버의 입출력 기능을 제공하기 위한 입출력 가속 기술이 적용된 하드웨어에 대해서도 구조적인 특성상 리눅스의 여러 파일 시스템들과 같은 기존의 파일 시스템들이 사용될 수 없다는 문제점이 있다.On the other hand, the standard interface used in the file system on the operating system follows the specification defined in the POSIX (Portable Operating System Interface for UNIX), an OS standard application program interface (API) established by the IEEE standards organization. Most file systems in the Linux kernel follow this one, such as the Ext (Extended file system) 2 file system or the Ext3 file system. However, in the case of a file system that aims for input / output performance as a priority, such as multimedia or parallel processing, it has been common to provide an interface different from the standard in order to provide high performance to the user. This is because the existing application has the disadvantage of restricting the use of the provided file system without changing the source code. Therefore, the file systems for high performance I / O are considered for the above design because the implementation mechanism is not suitable to support the standard file interface. As a result, there is a problem in that existing file systems such as Linux's various file systems cannot be used due to their structural characteristics even on the hardware to which the I / O acceleration technology for providing the I / O function of the high performance server is applied.

따라서 본 발명은 상기한 문제점을 해결하기 위해, 입출력 가속 하드웨어를 사용하는 고성능 서버에서 기존의 유닉스 파일시스템의 인터페이스를 지원하면서, 프로세서의 부하와 버스의 병목 현상을 완화하는 입출력 가속 기술이 적용된 하드웨어용 파일 시스템 및 그 파일 시스템에서의 데이터 처리 방법을 제공한다.Therefore, in order to solve the above problems, the present invention provides a hardware for which I / O acceleration technology is applied to alleviate the bottleneck of the processor and the bus while supporting the interface of the existing Unix file system in a high performance server using I / O acceleration hardware. A file system and a data processing method in the file system are provided.

상기한 목적을 달성하기 위한 본 발명의 하나의 특징에 따른 파일 시스템은,File system according to an aspect of the present invention for achieving the above object,

입출력 가속 기술이 적용된 하드웨어에 접속된 디스크 상의 파일을 관리하기 위한 파일 시스템으로서,A file system for managing files on a disk connected to hardware to which I / O acceleration technology is applied.

디스크에 저장된 파일에 대한 액세스를 필요로 하는 메소드(Method)를 받아서 상기 입출력 가속 기술이 적용된 하드웨어에 대한 블록 디바이스 처리와 문자 디바이스 처리 중 어느 하나를 선택하여 상기 파일에 대한 액세스를 제어하는 메소드 관리자; 상기 메소드 관리자의 제어에 따라 상기 입출력 가속 기술이 적용된 하드웨어에 대한 블록 디바이스 처리를 수행하는 저속-경로(slow-path) 관리자; 상기 메소드 관리자의 제어에 따라 상기 입출력 가속 기술이 적용된 하드웨어에 대한 문자 디바이스 처리를 수행하는 고속-경로(fast-path) 관리자; 상기 저속-경로 관리자의 제어에 의해, 상기 디스크에 저장된 데이터의 일부를 캐슁(caching)하는 캐쉬를 통해 상기 디스크에 저장된 파일 액세스를 수행하는 캐쉬 관리자; 및 상기 고속-경로 관리자의 제어에 의해, 상기 입출력 가속 기술이 적용된 하드웨어를 통하여 상기 디스크에 저장된 데이터의 상기 입출력 가속을 위한 메모리 영역으로의 복사 동작이 수행되도록 제어하는 입출력 가속 관리자를 포함한다.A method manager that receives a method requiring access to a file stored on a disk and selects any one of block device processing and character device processing for hardware to which the input / output acceleration technology is applied to control access to the file; A slow-path manager performing block device processing on hardware to which the input / output acceleration technology is applied under the control of the method manager; A fast-path manager that performs character device processing on hardware to which the input / output acceleration technology is applied under the control of the method manager; A cache manager, under the control of the slow-path manager, performing file access stored on the disk through a cache that caches a portion of data stored on the disk; And an input / output acceleration manager that controls, by the control of the fast-path manager, a copy operation of the data stored in the disk to the memory area for the input / output acceleration through the hardware to which the input / output acceleration technology is applied.

여기서, 상기 저속-경로 관리자와 상기 고속-경로 관리자에 의해 처리되는 데이터 블록의 크기가 상이한 것을 특징으로 한다.Here, the size of the data block processed by the slow-path manager and the fast-path manager is different.

본 발명의 다른 특징에 따른 파일 시스템에서의 데이터 처리 방법은,A data processing method in a file system according to another aspect of the present invention,

입출력 가속 기술이 적용된 하드웨어에 접속된 디스크 상의 파일을 관리하기 위한 파일 시스템에서의 데이터 처리 방법으로서,A data processing method in a file system for managing files on a disk connected to hardware to which input / output acceleration technology is applied,

a) 상기 디스크 상에 저장된 파일 처리를 위한 메소드 호출을 받는 단계; b) 상기 호출된 메소드에서 특정된 버퍼가 상기 입출력 가속을 위한 메모리 영역에 해당하는 지의 여부를 판단하는 단계; c) 상기 b) 단계에서, 상기 버퍼가 상기 입출력 가속을 위한 메모리 영역에 해당하는 것으로 판단되는 경우, 상기 입출력 가속 기술이 적용된 하드웨어에 대한 문자 디바이스 처리를 수행하여 상기 메소드에 특정된 파일 데이터가 상기 입출력 가속을 위한 메모리 영역으로 복사되도록 제어하는 단계; 및 d) 상기 b) 단계에서, 상기 버퍼가 상기 입출력 가속을 위한 메모리 영역에 해당하지 않는 것으로 판단되는 경우, 상기 입출력 가속 기술이 적용된 하드웨어에 대한 블록 디바이스 처리를 수행하여 상기 메소드에 특정된 파일 데이터에 대한 액세스를 수행하는 단계를 포함한다.a) receiving a method call for processing a file stored on the disk; b) determining whether a buffer specified in the called method corresponds to a memory area for accelerating input / output; c) In step b), if it is determined that the buffer corresponds to the memory area for accelerating the I / O, the character data processing for the hardware to which the I / O acceleration technology is applied is performed so that the file data specified in the method is displayed. Controlling copying to a memory area for input / output acceleration; And d) in step b), if it is determined that the buffer does not correspond to the memory area for the I / O acceleration, perform block device processing on the hardware to which the I / O acceleration technology is applied to perform file data specified in the method. Performing access to the.

아래에서는 첨부한 도면을 참고로 하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시 예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 첨부된 도면은 본 발명을 명확하게 설명하기 위해 본 발명의 설명과 관계없는 부분은 생략하였으며, 동일 또는 유사한 부분에 대해서는 동일한 도면 부호를 붙였다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those skilled in the art may easily implement the present invention. As those skilled in the art would realize, the described embodiments may be modified in various different ways, all without departing from the spirit or scope of the present invention. In the accompanying drawings, parts irrelevant to the description of the present invention are omitted in order to clearly describe the present invention, and the same or similar parts are denoted by the same reference numerals.

도 1은 본 발명의 실시 예에 따른 입출력 가속 기술이 적용된 하드웨어용 파일 시스템이 적용된 서버의 개략적인 블록도이다.1 is a schematic block diagram of a server to which a file system for hardware to which an input / output acceleration technology according to an embodiment of the present invention is applied is applied.

본 발명의 실시 예에서는 설명의 편의를 위해 입출력 가속 기술이 적용된 하드웨어를 'NS(Network Storage) 카드'로 명명하고, 이러한 NS 카드에 대한 표준 인터페이스를 지원하기 위한 본 발명의 실시 예에 따른 파일 시스템은 'EXT3NS'로 명명하여 설명한다. In an embodiment of the present invention, for convenience of description, the hardware to which the input / output acceleration technology is applied is referred to as a 'network storage card', and a file system according to an embodiment of the present invention for supporting a standard interface to such an NS card is provided. Is described as 'EXT3NS'.

도 1에 도시된 바와 같이, 고화질 위주의 동영상 스트리밍 서비스를 제공하는 서버에서는 리눅스 커널(100)이 PCI(Peripheral Component Interconnect) 버스(200)를 통해 접속된 입출력 가속 기술이 적용된 NS 카드(300)를 사용하여 고성능의 입출력 서비스를 제공한다.As shown in FIG. 1, in a server providing a high-definition video streaming service, the Linux kernel 100 uses an NS card 300 to which an input / output acceleration technology connected through a Peripheral Component Interconnect (PCI) bus 200 is applied. It provides high performance I / O service.

입출력 가속 기술이 적용된 NS 카드(300)는 NIC(Network Interface Card) 유닛(310), 디스크 유닛(320) 및 PMEM(PCI Memory) 유닛(330)을 포함한다. The NS card 300 to which the input / output acceleration technology is applied includes a network interface card (NIC) unit 310, a disk unit 320, and a PMEM (PCI memory) unit 330.

디스크 유닛(320)은 리눅스 커널(100)의 제어에 의해 디스크(400)로부터 데이터를 읽거나 또는 디스크(400)로 데이터를 쓰는 동작을 수행한다.The disk unit 320 reads data from the disk 400 or writes data to the disk 400 under the control of the Linux kernel 100.

NIC 유닛(310)은 디스크 유닛(320)에 의해 읽혀서 메모리에 저장된 데이터를 외부의 네트워크로 전송하거나 또는 외부의 네트워크로부터 입력되는 데이터를 수신하여 디스크 유닛(320)을 통해 메모리에 저장한 후 디스크(400)에 써지도록 전달한다.The NIC unit 310 transmits data stored in the memory read by the disk unit 320 to an external network or receives data input from an external network and stores the data in the memory through the disk unit 320 and then stores the disk ( To be written at 400).

PMEM 유닛(330)은 실질적인 제로-카피(zero-copy) 형태로 디스크(400)에 저 장된 데이터를 읽어서 외부의 네트워크로 직접 전송한다.The PMEM unit 330 reads data stored in the disk 400 in a substantially zero-copy form and transmits the data directly to an external network.

한편, 리눅스 커널(100)은 가상 파일 시스템(Virtual Filing System, 110), EXT2 파일 시스템(120), EXT3 파일 시스템(130), EXT3NS 파일 시스템(140), 페이지 캐쉬(Page Cache)/버퍼 캐쉬(Buffer Cache)(150), 블록 디바이스 드라이버(160) 및 NS 드라이버(170)를 포함한다.Meanwhile, the Linux kernel 100 may include a virtual file system (Virtual Filing System 110), an EXT2 file system 120, an EXT3 file system 130, an EXT3NS file system 140, a page cache / buffer cache ( Buffer Cache) 150, block device driver 160, and NS driver 170.

가상 파일 시스템(110)은 표준 유닉스 파일 시스템과 관련한 모든 시스템 콜을 처리하는 커널 소프트웨어 층으로, 시스템 함수와 입출력을 제어하는 물리적인 파일 시스템 코드에 있는 필요한 제어 함수에 지향적인 파일을 처리하는 하나의 무목적 층이다. 이 가상 파일 시스템(110)은 실제 파일 시스템의 구현과 사용자 프로세스 사이에 존재하는 추상화 층이며, EXT2 파일 시스템(120), EXT3 파일 시스템(130), EXT3NS 파일 시스템(140)을 포함한 여러 종류의 파일 시스템에 일반적인 공통 인터페이스를 제공한다.The virtual file system 110 is a kernel software layer that handles all system calls related to the standard Unix file system. A virtual file system 110 handles system files and files that are directed to the necessary control functions in the physical file system code that control I / O. It is a purposeless layer. This virtual file system 110 is an abstraction layer between the implementation of the actual file system and the user process, and includes various types of files including the EXT2 file system 120, the EXT3 file system 130, and the EXT3NS file system 140. It provides a common interface common to the system.

EXT2 파일 시스템(120) 및 EXT3 파일 시스템(130)은 리눅스 시스템의 표준 파일 시스템들로서, EXT2 파일 시스템(120)은 파일의 데이터와 메타 데이터를 동시에 저장하지 않는 비동기식 파일 시스템이고, EXT3 파일 시스템(130)은 EXT2 파일 시스템(120)에 데이터베이스에서 쓰이는 저널링(journaling) 기술을 적용한 저널링 파일 시스템이다. 저널링 기술이란 사용자가 데이터를 입력 또는 수정하면 그 데이터를 바로 하드 디스크에 기록하기 전에 관련 데이터를 로그에 기록하고, 만약 기록 중에 가장 빈번하게 발생하는 문제인 정전이나 기타 다른 이유로 인하여 비정상적인 종료를 하게 되면 다시 부팅할 때 로그에 기록된 데이터를 참고로 하여 다 시 작성하거나 복구가 가능하도록 하는 기술이다. 즉, EXT3 파일 시스템(130)은 일정 부분을 기록을 위해 남겨두어, 백업 및 복구 능력이 있는 파일 시스템이다.The EXT2 file system 120 and the EXT3 file system 130 are standard file systems of the Linux system. The EXT2 file system 120 is an asynchronous file system that does not simultaneously store data and metadata of a file, and the EXT3 file system 130 ) Is a journaling file system applying the journaling technique used in the database to the EXT2 file system 120. Journaling technology means that when a user enters or modifies data, the relevant data is recorded in the log before the data is immediately written to the hard disk, and if an abnormal shutdown occurs due to a power failure or other reason, which is the most frequent problem during recording, It is a technology that allows you to rewrite or recover by referring to the data recorded in the log when booting. That is, the EXT3 file system 130 is a file system with backup and recovery capability, leaving a portion for recording.

EXT3NS 파일 시스템(140)은 본 발명의 실시 예에 따른 파일 시스템으로써, 입출력 가속 기술이 적용된 NS 카드(300)에 대한 표준 인터페이스 지원이 가능한 파일 시스템이다. 이 EXT3NS 파일 시스템(140)은 그 근간을 리눅스의 표준 파일 시스템인 EXT3 파일 시스템에 두면서 NS 카드(300)에 대한 표준 인터페이스 지원이 가능하도록 구현된다. 이 EXT3NS 파일 시스템(140)은 EXT2 파일 시스템(120)과 EXT3 파일 시스템(130)과 같이 가상 파일 시스템(110)의 하부에 위치하며, EXT3 파일 시스템(130)과 같이 페이지 캐쉬/버퍼 캐쉬(150)를 통해 NS 카드(300)에 대한 블록 디바이스로 접근할 수 있고, 또한 NS 드라이버(170)를 통해 NS 카드(300)에 문자 디바이스 형태로 접근할 수 있다. 즉, EXT3NS 파일 시스템(140)은 서버의 메인 메모리와 디스크(400) 사이의 입출력 기능을 제공하기 위한 저속-경로(slow-path)를 수행하는 경우에는 NS 카드(300)를 블록 디바이스로 처리하여 접근하고, 디스크(400)와 PMEM 사이의 제로-카피에 의한 입출력 기능을 제공하기 위한 고속-경로(fast-path)를 수행하는 경우에는 NS 카드(300)를 문자 디바이스로 처리하여 접근한다.The EXT3NS file system 140 is a file system according to an embodiment of the present invention and is a file system capable of supporting a standard interface for the NS card 300 to which an input / output acceleration technology is applied. The EXT3NS file system 140 is implemented to enable standard interface support for the NS card 300 while keeping its foundation in the EXT3 file system, which is a standard file system of Linux. The EXT3NS file system 140 is located under the virtual file system 110, such as the EXT2 file system 120 and the EXT3 file system 130, and the page cache / buffer cache 150, like the EXT3 file system 130. ) Can be accessed as a block device for the NS card 300, and also through the NS driver 170, the NS card 300 can be accessed in the form of a character device. That is, the EXT3NS file system 140 processes the NS card 300 as a block device when performing a slow-path for providing an input / output function between the server main memory and the disk 400. In the case of performing a fast-path for providing a zero-copy input / output function between the disk 400 and the PMEM, the NS card 300 is treated as a character device and accessed.

저속-경로가 수행되는 경우, NS 카드(300)를 통해 디스크(400)로부터 페이지 캐쉬에 해당되는 크기(주로 4KB)로 읽기가 수행되고, 이 데이터는 사용자가 제공한 버퍼, 즉 서버의 메인 메모리 영역으로 복사된다.When slow-pathing is performed, a read is performed from the disk 400 to the size corresponding to the page cache (usually 4 KB) via the NS card 300, and this data is stored in a user-provided buffer, i.e., the main memory of the server. Copied to the area.

고속-경로가 수행되는 경우, NS 카드(300)를 통해 디스크(400)로부터 논리 블록에 해당되는 크기(주로 256KB의 정수배)로 읽기가 수행되고, 이 데이터는 PMEM 영역으로 복사된다.When the fast-path is performed, reading is performed from the disk 400 through the NS card 300 in a size corresponding to a logical block (mainly an integer multiple of 256 KB), and this data is copied to the PMEM area.

한편, 페이지 캐쉬/버퍼 캐쉬(150)에서, 페이지 캐쉬는 디스크상의 이미지와 데이터에 접근하는 속도를 높이기 위해 사용된다. 이것은 파일의 논리적인 내용을 페이지 단위로 캐쉬하기 위해 사용되며, 파일과 파일 내의 오프셋을 통해 접근된다. 디스크(400)에서 서버의 메모리로 페이지들을 읽어 들이면, 페이지들은 페이지 캐쉬에 캐쉬된다. On the other hand, in the page cache / buffer cache 150, the page cache is used to speed up access to images and data on disk. This is used to cache the logical contents of a file page by page, accessed through the file and its offset within the file. When pages are read from disk 400 into the server's memory, the pages are cached in the page cache.

또한, 버퍼 캐쉬는 블록 디바이스 드라이버(160)가 사용하는 데이터 버퍼들을 갖고 있다. 이들 버퍼는 고정된 크기로(예를 들어 512바이트), NS 카드(300)에서 읽거나, NS 카드(300)에 쓰는 자료의 블록을 갖고 있다. 이러한 버퍼 캐쉬는 장치 식별자와 원하는 블록 번호에 의해 색인되어 있고, 이 색인을 통해 데이터 블록 빨리 찾을 수 있다. EXT2 파일 시스템(120)과 EXT3 파일 시스템(130), 그리고 EXT3NS 파일 시스템(140)에서의 저속-경로 수행 시에는 NS 카드(300)에 대해서는 버퍼 캐쉬를 통해서만 접근된다. 이 때, 데이터가 버퍼 캐쉬에서 발견되면 NS 카드(300)를 통한 디스크(400)에 대한 접근은 필요가 없게 된다. The buffer cache also contains data buffers used by the block device driver 160. These buffers have a fixed size (e.g., 512 bytes) and have a block of data read from or written to NS card 300. These buffer caches are indexed by device identifiers and desired block numbers, which can be used to find data blocks quickly. When performing the low-path in the EXT2 file system 120, the EXT3 file system 130, and the EXT3NS file system 140, the NS card 300 is accessed only through a buffer cache. At this time, if data is found in the buffer cache, access to the disk 400 through the NS card 300 is not necessary.

블록 디바이스 드라이버(160)는 EXT2 파일 시스템(120), EXT3 파일 시스템(130) 및 EXT3NS 파일 시스템(140) 등의 파일 시스템들이 페이지 캐쉬/버퍼 캐쉬(150)를 통해 NS 카드(300)를 블록 디바이스 장치로 접근이 가능하도록 인터페이스를 제공한다.The block device driver 160 blocks the NS card 300 through the page cache / buffer cache 150 by file systems such as the EXT2 file system 120, the EXT3 file system 130, and the EXT3NS file system 140. Provide an interface for access to the device.

NS 드라이버(170)는 EXT3NS 파일 시스템(140)이 NS 카드(300)를 문자 디바이 스 장치로 직접 접근이 가능하도록 인터페이스를 제공한다.The NS driver 170 provides an interface so that the EXT3NS file system 140 can directly access the NS card 300 to the character device device.

한편, PCI 버스(200)는 NS 카드(300)를 통해 접속되는 디스크(300) 등과 같은 주변 장치들을 시스템, 여기서는 리눅스 커널(100)에 접속시켜 주는 데이터의 통로이며, 이 PCI 버스(200)는 리눅스 커널(100)이 각 디바이스들을 서로 독립적으로 접근할 수 있도록 해준다.Meanwhile, the PCI bus 200 is a path for data that connects peripheral devices such as the disk 300 connected through the NS card 300 to the system, in this case, the Linux kernel 100, and the PCI bus 200 is The Linux kernel 100 allows each device to be accessed independently of one another.

디스크(400)는 NS 카드(300)를 통해 리눅스 커널(100)에 접속되며, 각종의 데이터를 저장하고 관리한다.The disk 400 is connected to the Linux kernel 100 through the NS card 300, and stores and manages various data.

도 2는 도 1에 도시된 EXT3NS 파일 시스템(140)의 상세 블록도이다.2 is a detailed block diagram of the EXT3NS file system 140 shown in FIG.

도 2에 도시된 바와 같이, 본 발명의 실시 예에 따른 입출력 가속 기술이 적용된 하드웨어용 파일 시스템인 EXT3NS 파일 시스템(140)은 메소드(Method) 관리자(141), 저속-경로 관리자(143), 캐쉬 관리자(145), 고속-경로 관리자(147) 및 NS 관리자(149)를 포함한다.As shown in FIG. 2, the EXT3NS file system 140, which is a hardware file system to which an input / output acceleration technology is applied according to an embodiment of the present invention, has a method manager 141, a slow-path manager 143, and a cache. Manager 145, fast-path manager 147 and NS manager 149.

메소드 관리자(141)는 응용 프로그램에서 파일에 대한 읽기나 쓰기와 관련된 시스템 콜이 발생되어 가상 파일 시스템(110)으로부터 호출되는 메소드를 처리한다. 이 메소드 관리자(141)는 가상 파일 시스템(110)으로부터 호출된 메소드에 전달된 버퍼 인자를 조사하고, 사용되는 버퍼가 서버의 메인 메모리인 경우에는 NS 카드(300)를 통한 디스크(400)를 블록 디바이스로 접근하기 위한 저속-경로 관리자(143)로 작업 수행을 지시한다. 만약 사용되는 버퍼가 PMEM 영역인 경우에는 NS 카드(300)를 통한 디스크(400)를 문자 디바이스로 접근하기 위한 고속-경로 관리자(147)로 작업 수행을 지시한다.The method manager 141 processes a method called from the virtual file system 110 by generating a system call related to reading or writing a file in an application program. The method manager 141 examines the buffer arguments passed to the method called from the virtual file system 110 and blocks the disk 400 through the NS card 300 if the buffer used is the server's main memory. Instructs the slow-path manager 143 to perform the work to access the device. If the buffer used is the PMEM area, the fast-path manager 147 for accessing the disk 400 through the NS card 300 to the character device is instructed to perform a task.

저속-경로 관리자(143)는 메소드 관리자(141)의 지시에 따라 NS 카드(300)에 대한 블록 디바이스 처리를 수행한다. 즉, 저속-경로 관리자(143)는 종래의 EXT3 파일 시스템(130)에서와 같은 데이터 처리를 수행하며, 페이지 캐쉬/버퍼 캐쉬(150) 및 블록 디바이스 드라이버(160)를 통하여 접속되는 NS 카드(300)를 통해 디스크(400)를 블록 디바이스 형태로 접근하여 데이터 읽기 또는 쓰기를 수행한다.The slow-path manager 143 performs block device processing for the NS card 300 according to the instruction of the method manager 141. That is, the slow-path manager 143 performs the same data processing as in the conventional EXT3 file system 130, and the NS card 300 connected through the page cache / buffer cache 150 and the block device driver 160. The disk 400 is accessed in the form of a block device to read or write data.

캐쉬 관리자(145)는 저속-경로 관리자(143)의 제어에 따라 페이지 캐쉬/버퍼 캐쉬(150)를 제어하여 관련 데이터 처리를 수행한다.The cache manager 145 controls the page cache / buffer cache 150 under the control of the slow-path manager 143 to perform related data processing.

고속-경로 관리자(147)는 메소드 관리자(141)의 지시에 따라 NS 카드(300)에 대한 문자 디바이스 처리를 수행한다. 즉, 고속-경로 관리자(147)는 NS 드라이버(170)를 통하여 접속되는 NS 카드(300)를 통해 디스크(400)를 문자 디바이스 형태로 접근하여 데이터가 PMEM 영역을 통해 제로-카피가 수행되도록 제어한다.The fast-path manager 147 performs character device processing for the NS card 300 according to the instruction of the method manager 141. That is, the fast-path manager 147 accesses the disk 400 in the form of a character device through the NS card 300 connected through the NS driver 170 to control data to be zero-copyed through the PMEM area. do.

NS 관리자(149)는 고속-경로 관리자(147)의 제어에 따라 NS 드라이버(170)를 제어하여 관련 데이터 처리를 수행한다.The NS manager 149 controls the NS driver 170 under the control of the fast-path manager 147 to perform related data processing.

저속-경로 관리자(143)는 NS 카드(300)를 통하여 디스크(400)로부터 페이지 캐쉬에 해당하는 크기로 데이터를 읽지만, 고속-경로 관리자(147)는 NS 카드(300)를 통하여 디스크(400)로부터 논리 블록에 해당되는 크기로 데이터를 읽는다.Slow-path manager 143 reads data from disk 400 via NS card 300 in size corresponding to page cache, while fast-path manager 147 reads disk 400 through NS card 300. ) Read the data in the size corresponding to the logical block.

도 3은 도 1에 도시된 디스크(400)의 배치도이다.3 is a layout view of the disk 400 shown in FIG.

도 3에 도시된 바와 같이, EXT3NS 파일 시스템(140)에서의 디스크(400) 배치는 NS 카드(300)에 M개의 물리 디스크가 장착되는 것을 가정하며, 이렇게 장착된 M개의 디스크를 병렬로 연결하여 하나의 논리 블록(논리 블록 0, 논리블록 1, 논리 블록 2 등)을 형성한다. NS 카드(300)는 이러한 상황에서 1개의 논리 블록을 M으로 분할한 크기로 각각의 물리 디스크에 스트리밍한다.As shown in FIG. 3, the arrangement of the disk 400 in the EXT3NS file system 140 assumes that M physical disks are mounted on the NS card 300, and the M disks mounted in this manner are connected in parallel. One logical block (logical block 0, logical block 1, logical block 2, etc.) is formed. In such a situation, the NS card 300 streams one logical block into M physical disks in a size obtained by dividing M into logical blocks.

한편, 다수의 논리 블록이 모여서 하나의 블록 그룹(블록 그룹 0, 블록 그룹 1, …, 블록 그룹 N)을 형성하도록 구성된다. EXT3NS 파일 시스템(140)의 가용성을 높이기 위해 각 블록 그룹의 처음 부분에 동일한 메타 데이터를 갖도록 한다. 마지막으로 이렇게 구성된 블록 그룹들은 다시 논리 디스크를 형성한다. EXT3NS 파일 시스템(140)이 이렇게 형성된 논리 디스크 위에서 동작한다.On the other hand, a plurality of logical blocks are configured to form one block group (block group 0, block group 1, ..., block group N). In order to increase the availability of the EXT3NS file system 140, the same metadata is included at the beginning of each block group. Finally, the block groups thus configured form logical disks again. The EXT3NS file system 140 operates on the logical disk thus formed.

도 4는 도 3에 도시된 디스크(400)의 블록 그룹의 구조를 도시한 도면이다.4 is a diagram showing the structure of a block group of the disk 400 shown in FIG.

도 4에 도시된 바와 같이, EXT3NS 파일 시스템(140)에서의 각 블록 그룹들은 정보들을 제어하는 중대한 파일 시스템의 메타 데이터를 포함한다. As shown in FIG. 4, each block group in the EXT3NS file system 140 contains metadata of the critical file system that controls the information.

메타 데이터에는 수퍼 블록(Super block, 410) 및 그룹 디스크립션 블록(Group description block, 420), 블록 비트맵(Block bitmap, 430), 아이노드 비트맵(Inode bitmap, 440), 아이노드 테이블(Inode table, 450) 및 데이터 블록(Data block, 460)이 포함된다.The meta data includes a super block (410) and a group description block (420), a block bitmap (430), an inode bitmap (440), and an inode table (Inode table). , 450) and a data block 460.

수퍼 블록(410)은 EXT3NS 파일 시스템(140)의 기본적인 크기나 형태에 대한 정보를 저장하고 관리한다. EXT3NS 파일 시스템(140)의 저속-경로 관리자(143) 및 고속-경로 관리자(147)는 이 수퍼 블록의 정보를 이용하여 파일 시스템을 활용하고 유지할 수 있다. 이러한 수퍼 블록(410)에는 총 아이노드의 수, 파일 시스템의 크기, 블록의 크기, 그룹 당 아이노드 수 등의 정보가 기록된다. 여기서, 아이노드는 파일 시스템의 가장 기본이 되는 단위로서, 파일의 이름을 제외한 해당 파일의 모든 정보를 가지고 있다. 파일 이름은 아이노드 번호와 함께 디렉토리 안에 저장된다.The super block 410 stores and manages information on the basic size or shape of the EXT3NS file system 140. The slow-path manager 143 and the fast-path manager 147 of the EXT3NS file system 140 may utilize and maintain the file system using the information of this super block. The super block 410 records information such as the total number of inodes, the size of the file system, the size of the block, the number of inodes per group, and the like. Here, the inode is the most basic unit of the file system and has all the information of the file except the file name. The file name is stored in the directory along with the inode number.

그룹 디스크립션 블록(420)은 블록 그룹에서 각 블록의 할당 상태를 나타내주는 비트맵으로 그 수는 블록의 수와 동일하다. 예를 들어, 블록 비트맵 필드에는 블록 비트맵의 블록 번호가 할당되고, 아이노드 비트맵 필드에는 아이노드 비트맵의 블록 번호가 할당되며, 아이노드 테이블 필드에는 아이노드 테이블(450)의 첫 번째 아이노드 테이블 블록의 블록 번호가 할당된다.The group description block 420 is a bitmap indicating the allocation state of each block in the block group, the number of which is equal to the number of blocks. For example, a block bitmap field is assigned a block number of a block bitmap, an inode bitmap field is assigned a block number of an inode bitmap, and an inode table field is assigned a first number of an inode table 450. The block number of the inode table block is assigned.

블록 비트맵(430)은 블록의 할당 상태를 나타내 주는 비트맵으로, 그 수는 블록의 수와 동일하다. 이러한 블록 비트맵(430)은 블록을 할당하거가 해제할 경우 참고되는 정보이다. 따라서, 블록 비트맵(430)의 경우 한 비트는 논리 블록 하나와 매핑된다.The block bitmap 430 is a bitmap indicating the allocation state of the blocks, the number of which is equal to the number of blocks. The block bitmap 430 is information referred to when a block is allocated or released. Thus, in the case of the block bitmap 430, one bit is mapped to one logical block.

아이노드 비트맵(440)은 블록의 아이노드 할당 상태를 나타내 주는 비트맵으로, 그 수는 블록 비트맵과 같이 블록의 수와 동일하다. 이 아이노드 비트맵(440)은 아이노드를 할당하거나 해제할 경우 참고되는 정보이다. The inode bitmap 440 is a bitmap indicating the inode allocation state of the block, and the number thereof is the same as the number of blocks as in the block bitmap. The inode bitmap 440 is information referred to when the inode is allocated or released.

아이노드 테이블(450)은 인접하는 연속된 블록으로 구성되며, 각 블록은 아이노드에 대응된다. 이러한 아이노드는 파일 유형, 접근 권한, 파일 길이, 소유자 식별자, 마지막 접근 시간, 아이노드 마지막 변경시간 등의 정보를 가지고 있다.The inode table 450 is composed of adjacent contiguous blocks, and each block corresponds to an inode. These inodes contain information such as file type, access rights, file length, owner identifier, last access time, and inode last change time.

상기한 메타 데이터에 대한 접근은 저속-경로를 통해서만 처리된다. 즉, 메타 데이터에 대한 시스템 콜에 대해서는 저속-경로 관리자(143)에 의해서 처리된다. 따라서, 모든 메타 데이터는 페이지 캐쉬 크기를 기준으로 조작되며 캐슁 (caching)된다. 이것은 메타 데이터에 대한 접근 비용을 감소시키기 위한 것으로, PMEM과 함께 사용되는 NS 드라이버(170)가 다루는 논리 블록의 크기와는 다르다.Access to such metadata is handled only through the slow-path. That is, system calls for metadata are handled by the slow-path manager 143. Thus, all metadata is manipulated and cached based on page cache size. This is to reduce the cost of access to metadata, which is different from the size of the logical block handled by NS driver 170 used with PMEM.

수퍼 블록(410)의 구조체인 "ext3ns_sb_info"에는 버퍼 풀(500) 내에 있는 수퍼 블록에 대한 포인터인 s_es, 수퍼 블록을 가지고 있는 버퍼(510)에 대한 포인터인 s_sbh, 그룹 디스크립션 블록을 가지는 버퍼(520)에 대한 포인터인 s_group_count, 블록 비트맵의 캐쉬(530)를 위한 필드인 s_block_bitmap, 아이노드 비트맵의 캐쉬(540)를 위한 필드인 s_inode_bitmap가 포함된다. The ext3ns_sb_info structure of the super block 410 includes s_es, which is a pointer to a super block in the buffer pool 500, s_sbh, which is a pointer to a buffer 510 having a super block, and a buffer 520 having a group description block. ), S_group_count, which is a pointer to), s_block_bitmap, which is a field for the cache 530 of the block bitmap, and s_inode_bitmap, which is a field for the cache 540 of the inode bitmap.

아이노드 테이블(450)의 구조체인 "struct inode"에는 아이노드 정보의 구조체인 "ext3ns_inode_info"가 포함되며, 여기에는 데이터 블록을 가리키는 포인터들(550)의 집합인 i_data[15]와 아이노드가 속한 블록 그룹에 대한 인덱스인 i_block_group이 포함된다. 이 중에서 i_data[15]는 총 15비트의 값을 가지며, 비트 0에서 비트 11까지의 총 12개의 비트는 직접적으로 데이터 블록을 가리키게 되며, 나머지들은 12, 13, 14의 엔트리를 가지고, 간접(indirect), 이중 간접(double indirect), 삼중 간접(triple indirect)으로 데이터 블록의 포인터를 가지는 데이터 블록을 가리킨다.The "struct inode" structure of the inode table 450 includes the structure of inode information "ext3ns_inode_info", which includes i_data [15], which is a set of pointers 550 pointing to a data block, and which the inode belongs. I_block_group, the index for the block group, is included. Among these, i_data [15] has a value of 15 bits in total, and a total of 12 bits from bit 0 to bit 11 directly point to a data block, and the rest have entries of 12, 13, and 14, and indirect. ), Double indirect, triple indirect. Points to a data block with a pointer to the data block.

파일의 각 위치를 디스크(400)에 매핑시키는 방법에 대해 첨부한 도 5를 참조하여 설명한다. 이러한 매핑에 사용되는 것은 메타 데이터 중에서 간접 블록 메커니즘이다. 즉, 상기한 아이노드 테이블(450)의 구조체에 포함된 i_data[15]를 사용하여 매핑을 수행한다.A method of mapping each position of the file to the disk 400 will be described with reference to FIG. 5. Used in this mapping is the indirect block mechanism among the metadata. That is, mapping is performed using i_data [15] included in the structure of the inode table 450.

도 5를 참조하면, i_data[15] 배열은 이러한 간접 블록 메커니즘의 처음 시 작이 된다. 이 배열의 처음 12개 요소는 직접 논리 블록을 가리킨다. 다음 요소는 순서대로 각각 간접 논리 블록, 이중 간접 논리 블록, 삼중 간접 논리 블록을 가리킨다.Referring to FIG. 5, the i_data [15] array is the first start of this indirect block mechanism. The first 12 elements of this array point directly to the logical block. The following elements indicate indirect logical blocks, double indirect logical blocks, and triple indirect logical blocks, respectively, in that order.

EXT3NS 파일 시스템(140)에서 ext3ns_block_to_path() 함수는 파일의 오프셋에서 논리 디스크(400)의 논리 블록으로의 매핑을 가능하도록 한다. 이 함수는 해당 파일의 오프셋 위치에 대응하는 논리 블록 인덱스를 저장하는 논리 블록을 얻어온다. 첨부한 도 6을 참조하여 예를 들면, 논리 블록의 크기가 256n이고, 해당 논리 블록에서의 오프셋이 d라면, 1MB 블록 내의 연속된 4KB의 소블록 중에서 d/(4K/4)의 몫에 해당하는 순번의 소블록을 읽어 페이지 캐쉬/버퍼 캐쉬(150)로 가져오게 된다. 그리고, 그 소 블록에서 d/(4K/4)의 나머지에 해당하는 오프셋에 있는 논리 블록 인덱스를 얻게 된다. 이렇게 얻어진 인덱스는 논리 디스크(400)에서 연속된 논리 블록의 순번에 해당된다. 예를 들어, 얻어진 인덱스가 i라면 그 위치는 256n*i가 된다. 여기까지의 동작이 본 발명의 실시 예에 따른 고속-경로를 진행하는 경우에 필요한 논리 블록을 얻는 과정이다.The ext3ns_block_to_path () function in the EXT3NS file system 140 enables mapping from the offset of the file to the logical block of the logical disk 400. This function retrieves a logical block that stores the logical block index corresponding to the offset position of the file. For example, with reference to FIG. 6, if the size of the logical block is 256n and the offset in the logical block is d, it corresponds to the quotient of d / (4K / 4) among contiguous 4KB small blocks in the 1MB block. The small blocks are read and brought to the page cache / buffer cache 150. Then, the logical block index at the offset corresponding to the remainder of d / (4K / 4) in the small block is obtained. The index thus obtained corresponds to the sequence number of consecutive logical blocks in the logical disk 400. For example, if the obtained index is i, the position is 256n * i. The operation up to this point is a process of obtaining a logical block necessary for the fast-path according to an embodiment of the present invention.

만일 저속-경로를 진행해서 소 블록을 페이지 캐쉬/버퍼 캐쉬(150)에 읽어 오고자 한다면, 상기한 고속-경로 진행 과정의 전후에 몇 과정이 추가된다. 일단 추가되어야 하는 전반 작업은 파일의 오프셋에서 256n으로 나눠서 나머지를 얻고, 다시 얻어진 나머지를 4K로 나눠 몫을 얻는다. 추가되어야 하는 후반 작업은 ext3ns_block_to_path() 함수를 통해서 얻어진 논리 블록으로부터 전반 작업을 통해서 얻어진 몫을 통해 페이지 캐쉬/버퍼 캐쉬(150)로 소 블록을 읽어 들이면 된 다. 도 6에 도시된 예에서는 전반 작업을 통해 얻어진 몫이 k인 경우에 실제로 저속-경로에서 블록 디바이스 드라이버(160)를 통해서 읽어 들여야 한 소 블록의 위치 "256n*i + k"을 나타내고 있다.If you want to go through the slow-path and read the small blocks into the page cache / buffer cache 150, some steps are added before and after the fast-path progression described above. The first half of the work that needs to be added divides the 256n from the file's offset to get the remainder, then divides the remainder by 4K to get the quotient. The later work that needs to be added is to read the small blocks into the page cache / buffer cache 150 through the shares obtained from the previous work from the logical blocks obtained through the ext3ns_block_to_path () function. In the example shown in FIG. 6, when the quotient obtained through the first half operation is k, the small block position "256n * i + k" should be actually read through the block device driver 160 in the low-path.

이하, 도 7 및 도 8을 참조하여 본 발명의 실시 예에 따른 입출력 가속 기술이 적용된 하드웨어용 파일 시스템인 EXT3NS 파일 시스템(140)이 표준 파일 인터페이스를 지원하는 방법에 대해 상세하게 설명한다.Hereinafter, a method of supporting a standard file interface by the EXT3NS file system 140, which is a hardware file system to which an input / output acceleration technology according to an embodiment of the present invention is applied, will be described in detail with reference to FIGS. 7 and 8.

먼저, 도 7을 참조하여 시스템이나 응용 프로그램 등에서 메타 데이터 등을 액세스하기 위한 저속-경로가 수행되는 것에 대해 설명한다.First, a low-path for accessing metadata or the like in a system or an application program will be described with reference to FIG. 7.

파일에 대한 읽기나 쓰기 시스템 콜이 호출되는 경우, 이를 처리하기 위해 가상 파일 시스템(110)이 동작한다.When a read or write system call to a file is called, the virtual file system 110 operates to handle it.

가상 파일 시스템(110)은 호출된 시스템 콜을 처리하기 위한 사전 작업을 수행한 후, 해당되는 파일 시스템, 여기서는 EXT3NS 파일 시스템(140)의 대응되는 메소드를 호출한다(S1).The virtual file system 110 performs a preliminary work to process the called system call, and then calls the corresponding method of the corresponding file system, here EXT3NS file system 140 (S1).

다음, EXT3NS 파일 시스템(140)의 메소드 관리자(141)는 가상 파일 시스템(110)에 의해 호출된 메소드에 전달된 버퍼 인자를 조사하여, 버퍼가 서버의 메인 메모리 영역인 지의 여부를 판단한다. 여기서는 저속-경로 수행에 대해 설명하므로, 버퍼가 서버의 메인 메모리 영역에 해당된다. 따라서 메소드 관리자(141)는 NS 카드(300)를 블록 디바이스로 처리하기 위해 저속-경로 관리자(143)로 작업을 지시하고(S2), 저속-경로 관리자(143)는 해당되는 작업을 수행하기 위해 캐쉬 관리자(145)에 접속된 페이지 캐쉬/버퍼 캐쉬(150)로 관련 데이터를 요청한다(S3, S4). Next, the method manager 141 of the EXT3NS file system 140 examines the buffer argument passed to the method called by the virtual file system 110 to determine whether the buffer is the main memory area of the server. Since slow-path performance is described here, the buffer corresponds to the main memory area of the server. Therefore, the method manager 141 instructs the slow-path manager 143 to process the NS card 300 as a block device (S2), and the slow-path manager 143 to perform the corresponding task. Related data is requested to the page cache / buffer cache 150 connected to the cache manager 145 (S3 and S4).

따라서 페이지 캐쉬/버퍼 캐쉬(150)는 내부에 해당하는 데이터가 있는 경우를 제외하고 블록 디바이스 드라이버(160)를 통해 NS 카드(300)에 접속된 디스크(400)로부터 페이지 캐쉬에 해당하는 크기(주로 4KB)로 데이터 읽기를 수행하고(S5, S6), 디스크(400)로부터 읽혀진 데이터는 페이지 캐쉬/버퍼 캐쉬(150)에 캐슁한다(S7, S8).Therefore, the page cache / buffer cache 150 has a size corresponding to the page cache from the disk 400 connected to the NS card 300 through the block device driver 160 except that there is data corresponding to the inside thereof. 4KB) and read data (S5, S6), and the data read from the disk 400 is cached in the page cache / buffer cache 150 (S7, S8).

그 후, 페이지 캐쉬/버퍼 캐쉬(160)는 캐슁된 데이터를 캐쉬 관리자(145)와 저속-경로 관리자(143)를 통해 메소드 관리자(141)로 전달하고(S9, S10, S11), 메소드 관리자(141)는 전달된 데이터를 호출된 해당 메소드에 대한 데이터로 가상 파일 시스템(110)을 통해 사용자가 제공한 메인 메모리 영역 내에 있는 버퍼 영역으로 해당 데이터를 복사한다(S12).Thereafter, the page cache / buffer cache 160 delivers the cached data to the method manager 141 through the cache manager 145 and the slow-path manager 143 (S9, S10, and S11). 141 copies the transferred data to the buffer area in the main memory area provided by the user through the virtual file system 110 as the data for the corresponding method (S12).

다음은 도 8을 참조하여 고화질 위주의 동영상 스트리밍 서비스를 제공하기 위한 고속-경로가 수행되는 것에 대해 설명한다.Next, a fast-path for providing a high quality video streaming service will be described with reference to FIG. 8.

스트리밍 서비스를 위한 파일에 대한 읽기나 쓰기 시스템 콜이 호출되는 경우, 이를 처리하기 위해 가상 파일 시스템(110)이 동작한다.When a read or write system call for a file for a streaming service is called, the virtual file system 110 operates to process it.

가상 파일 시스템(110)은 호출된 시스템 콜을 처리하기 위한 사전 작업을 수행한 후, 해당되는 파일 시스템, 여기서는 EXT3NS 파일 시스템(140)의 대응되는 메소드를 호출한다(S21).The virtual file system 110 performs a preliminary operation to process the called system call, and then calls a corresponding method of the corresponding file system, here EXT3NS file system 140 (S21).

다음, EXT3NS 파일 시스템(140)의 메소드 관리자(141)는 가상 파일 시스템(110)에 의해 호출된 메소드에 전달된 버퍼 인자를 조사하여, 버퍼가 PMEM 영역인 지의 여부를 판단한다. 여기서는 고속-경로 수행에 대해 설명하므로, 버퍼가 PMEM 영역에 해당된다. 따라서 메소드 관리자(141)는 NS 카드(300)를 문자 디바이스로 처리하기 위해 고속-경로 관리자(147)로 작업을 지시하고(S22), 고속-경로 관리자(147)는 해당되는 작업을 수행하기 위해 NS 관리자(149)에 접속된 NS 드라이버(170)로 관련 데이터 처리를 요청한다(S23, S24). Next, the method manager 141 of the EXT3NS file system 140 examines the buffer argument passed to the method called by the virtual file system 110 to determine whether the buffer is a PMEM region. Since fast-path performance is described here, the buffer corresponds to the PMEM area. Thus, the method manager 141 instructs the fast-path manager 147 to process the NS card 300 as a character device (S22), and the fast-path manager 147 to perform the corresponding task. The NS driver 170 connected to the NS manager 149 requests related data processing (S23 and S24).

따라서 NS 드라이버(170)는 NS 카드(300)를 문자 디바이스로 구동하고(S25), NS 카드(300)의 디스크 유닛(320)은 요청된 데이터의 논리 블록에 해당되는 크기(주로 256KB의 정수배)로 디스크(400)로부터 읽기를 수행하고, 읽혀진 데이터를 PMEM 영역으로 복사한다(S25).Therefore, the NS driver 170 drives the NS card 300 as a character device (S25), and the disk unit 320 of the NS card 300 is a size corresponding to a logical block of the requested data (mainly an integer multiple of 256KB). A read operation is performed from the disk 400, and the read data is copied to the PMEM area (S25).

따라서 NS 카드(300)는 관련 데이터가 PMEM 영역으로 복사된 처리의 결과를 NS 드라이버(170), NS 관리자(149) 및 고속-경로 관리자(147)를 통해 메소드 관리자(141)로 전달하고(S26, S27, S28), 메소드 관리자(141)는 관련 데이터 처리 결과를 호출된 해당 메소드에 대한 처리 결과로써 가상 파일 시스템(110)을 통해 사용자에게 반환한다(S29).Therefore, the NS card 300 transmits the result of the processing in which the relevant data is copied to the PMEM area to the method manager 141 through the NS driver 170, the NS manager 149, and the fast-path manager 147 (S26). (S27, S28), the method manager 141 returns the related data processing result to the user through the virtual file system 110 as a processing result for the called method (S29).

이와 같이 저속-경로를 통한 데이터 처리는 고속의 동영상 스트리밍을 위한 고속-경로를 통한 데이터 처리에 대해서도 본 발명의 실시 예에 따른 EXT3NS 파일 시스템(140)을 통해서 기존의 표준 파일 인터페이스를 유지할 수가 있게 된다.As described above, the data processing through the slow-path can maintain the existing standard file interface through the EXT3NS file system 140 according to the embodiment of the present invention, even for data processing through the fast-path for high speed video streaming. .

비록, 본 발명이 가장 실제적이며 바람직한 실시 예를 참조하여 설명되었지만, 본 발명은 상기 개시된 실시 예에 한정되지 않으며, 후술되는 특허 청구범위 내에 속하는 다양한 변형 및 등가물들도 포함한다.Although the present invention has been described with reference to the most practical and preferred embodiments, the present invention is not limited to the above-described embodiments, but includes various modifications and equivalents within the scope of the following claims.

본 발명에 따르면, 입출력 가속 기술이 사용된 하드웨어에 대해서도 기존의 유닉스 파일 시스템의 표준 인터페이스를 통한 지원이 가능해진다.According to the present invention, even hardware using I / O acceleration technology can be supported through a standard interface of the existing Unix file system.

따라서 동일한 응용 프로그램 환경에서도 입출력 가속 기술을 사용할 수 있는 효과가 있다.Therefore, I / O acceleration technology can be used in the same application environment.

Claims (8)

입출력 가속 기술이 적용된 하드웨어에 접속된 디스크 상의 파일을 관리하기 위한 파일 시스템에 있어서,A file system for managing files on a disk connected to hardware to which input / output acceleration technology is applied, 디스크에 저장된 파일에 대한 액세스를 필요로 하는 메소드(Method)를 받아서 상기 입출력 가속 기술이 적용된 하드웨어에 대한 블록 디바이스 처리와 문자 디바이스 처리 중 어느 하나를 선택하여 상기 파일에 대한 액세스를 제어하는 메소드 관리자;A method manager that receives a method requiring access to a file stored on a disk and selects any one of block device processing and character device processing for hardware to which the input / output acceleration technology is applied to control access to the file; 상기 메소드 관리자의 제어에 따라 상기 입출력 가속 기술이 적용된 하드웨어에 대한 블록 디바이스 처리를 수행하는 저속-경로(slow-path) 관리자;A slow-path manager performing block device processing on hardware to which the input / output acceleration technology is applied under the control of the method manager; 상기 메소드 관리자의 제어에 따라 상기 입출력 가속 기술이 적용된 하드웨어에 대한 문자 디바이스 처리를 수행하는 고속-경로(fast-path) 관리자;A fast-path manager that performs character device processing on hardware to which the input / output acceleration technology is applied under the control of the method manager; 상기 저속-경로 관리자의 제어에 의해, 상기 디스크에 저장된 데이터의 일부를 캐슁(caching)하는 캐쉬를 통해 상기 디스크에 저장된 파일 액세스를 수행하는 캐쉬 관리자; 및A cache manager, under the control of the slow-path manager, performing file access stored on the disk through a cache that caches a portion of data stored on the disk; And 상기 고속-경로 관리자의 제어에 의해, 상기 입출력 가속 기술이 적용된 하드웨어를 통하여 상기 디스크에 저장된 데이터의 상기 입출력 가속을 위한 메모리 영역으로의 복사 동작이 수행되도록 제어하는 입출력 가속 관리자Under the control of the fast-path manager, an I / O acceleration manager for controlling a copy operation of data stored in the disk to a memory area for I / O acceleration through hardware to which the I / O acceleration technology is applied. 를 포함하는 파일 시스템.File system that includes. 제1항에 있어서,The method of claim 1, 상기 저속-경로 관리자 및 고속-경로 관리자는,The slow-path manager and fast-path manager, 상기 디스크 상에 저장된 메타 데이터를 통해 파일 데이터를 제어하는 것을 특징으로 하는 파일 시스템.A file system for controlling file data through metadata stored on the disk. 제2항에 있어서,The method of claim 2, 상기 메타 데이터에는 상기 파일 시스템의 기본이 되는 단위인 아이노드(Inode)에 대응되는 정보를 저장하는 아이노드 테이블이 포함되고,The meta data includes an inode table that stores information corresponding to an inode, which is a basic unit of the file system. 상기 저속-경로 관리자 및 고속-경로 관리자에 의해 처리되는 파일 데이터는 상기 아이노드 테이블의 기본 구조인 아이노드 구조체에 의해 매핑되는 데이터 블록인The file data processed by the slow-path manager and the fast-path manager are data blocks mapped by an inode structure that is a basic structure of the inode table. 것을 특징으로 하는 파일 시스템. File system. 제3항에 있어서,The method of claim 3, 상기 저속-경로 관리자와 상기 고속-경로 관리자에 의해 처리되는 데이터 블록의 크기가 상이한 것을 특징으로 하는 파일 시스템.And the size of the data block processed by the slow-path manager and the fast-path manager is different. 제1항 내지 제4항 중 어느 한 항에 있어서,The method according to any one of claims 1 to 4, 상기 캐쉬 관리자는 상기 입출력 가속 기술이 적용된 하드웨어에 대한 블록 디바이스 장치로의 접근이 가능하도록 하는 블록 디바이스 드라이버를 통해 상기 디스크로부터 상기 캐쉬에 캐슁되는 데이터를 사용하여 파일 액세스를 수행하는 것을 특징으로 하는 파일 시스템.The cache manager performs file access using data cached in the cache from the disk through a block device driver that enables access to a block device device for hardware to which the input / output acceleration technology is applied. system. 제1항 내지 제4항 중 어느 한 항에 있어서,The method according to any one of claims 1 to 4, 상기 입출력 가속을 위한 메모리 영역은 PMEM(PCI Memory)인 것을 특징으로 하는 파일 시스템.And a memory area for accelerating the input / output is PMEM (PCI Memory). 입출력 가속 기술이 적용된 하드웨어에 접속된 디스크 상의 파일을 관리하기 위한 파일 시스템에서의 데이터 처리 방법에 있어서,A data processing method in a file system for managing a file on a disk connected to hardware to which input / output acceleration technology is applied, a) 상기 디스크 상에 저장된 파일 처리를 위한 메소드 호출을 받는 단계;a) receiving a method call for processing a file stored on the disk; b) 상기 호출된 메소드에서 특정된 버퍼가 상기 입출력 가속을 위한 메모리 영역에 해당하는 지의 여부를 판단하는 단계;b) determining whether a buffer specified in the called method corresponds to a memory area for accelerating input / output; c) 상기 b) 단계에서, 상기 버퍼가 상기 입출력 가속을 위한 메모리 영역에 해당하는 것으로 판단되는 경우, 상기 입출력 가속 기술이 적용된 하드웨어에 대한 문자 디바이스 처리를 수행하여 상기 메소드에 특정된 파일 데이터가 상기 입출력 가속을 위한 메모리 영역으로 복사되도록 제어하는 단계; 및c) In step b), if it is determined that the buffer corresponds to the memory area for accelerating the I / O, the character data processing for the hardware to which the I / O acceleration technology is applied is performed so that the file data specified in the method is displayed. Controlling copying to a memory area for input / output acceleration; And d) 상기 b) 단계에서, 상기 버퍼가 상기 입출력 가속을 위한 메모리 영역에 해당하지 않는 것으로 판단되는 경우, 상기 입출력 가속 기술이 적용된 하드웨어에 대한 블록 디바이스 처리를 수행하여 상기 메소드에 특정된 파일 데이터에 대한 액세스를 수행하는 단계 d) In step b), if it is determined that the buffer does not correspond to the memory area for the I / O acceleration, block device processing is performed on the hardware to which the I / O acceleration technology is applied to the file data specified in the method. To perform access to 를 포함하는 파일 시스템에서의 데이터 처리 방법.Data processing method in the file system comprising a. 제7항에 있어서,The method of claim 7, wherein 상기 c) 단계에서 상기 문자 디바이스 처리되는 파일 데이터의 블록 크기와 상기 d) 단계에서 상기 블록 디바이스 처리되는 파일 데이터의 블록 크기가 상이한 것을 특징으로 하는 파일 시스템에서의 데이터 처리 방법.And a block size of the file data processed in the character device in step c) and a block size of the file data processed in the block device in step d) are different.
KR1020050086181A 2004-12-23 2005-09-15 File system for the hardward using the i/o acceleration technique and method for processing data in the same KR100648065B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020040111066 2004-12-23
KR20040111066 2004-12-23

Publications (2)

Publication Number Publication Date
KR20060073431A KR20060073431A (en) 2006-06-28
KR100648065B1 true KR100648065B1 (en) 2006-11-23

Family

ID=37166501

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050086181A KR100648065B1 (en) 2004-12-23 2005-09-15 File system for the hardward using the i/o acceleration technique and method for processing data in the same

Country Status (1)

Country Link
KR (1) KR100648065B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101413985B1 (en) * 2012-01-26 2014-07-08 전자부품연구원 Method for file management using file system adapted to non-volatile memory

Also Published As

Publication number Publication date
KR20060073431A (en) 2006-06-28

Similar Documents

Publication Publication Date Title
US11392544B2 (en) System and method for leveraging key-value storage to efficiently store data and metadata in a distributed file system
US7206915B2 (en) Virtual space manager for computer having a physical address extension feature
US8285967B1 (en) Method for on-demand block map generation for direct mapped LUN
KR101841997B1 (en) Systems, methods, and interfaces for adaptive persistence
US7117314B2 (en) Storage device and method for data sharing
EP2502148B1 (en) Selective file system caching based upon a configurable cache map
US20060174074A1 (en) Point-in-time copy operation
US9015417B2 (en) Deduplication-aware page cache
EP3324296A1 (en) File data access method and computer system
US7743209B2 (en) Storage system for virtualizing control memory
US20070005904A1 (en) Read ahead method for data retrieval and computer system
US8694563B1 (en) Space recovery for thin-provisioned storage volumes
US20020178176A1 (en) File prefetch contorol method for computer system
US7177980B2 (en) Cache storage system and method
US7640410B2 (en) Instant copy of data through pointers interchanging
WO1998026352A1 (en) Method of file pre-read control in computer system
JP4727800B2 (en) Digital data subsystem including a directory for efficiently providing format information about stored records
US7558929B2 (en) Instant copy of data in a cache memory via an atomic command
CN112703481B (en) Hybrid memory system interface
KR100648065B1 (en) File system for the hardward using the i/o acceleration technique and method for processing data in the same
US20050216695A1 (en) Memory extension for a data processor to provide both common and separate physical memory areas for virtual memory spaces
JP4792065B2 (en) Data storage method
TWI564803B (en) Systems and methods for storage virtualization
JPH11306053A (en) Data transfer method and information processor for executing the method
JPH04205535A (en) Copy on write system

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: 20101101

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee