KR101989593B1 - 식별정보 전달 장치 및 방법 - Google Patents

식별정보 전달 장치 및 방법 Download PDF

Info

Publication number
KR101989593B1
KR101989593B1 KR1020180021268A KR20180021268A KR101989593B1 KR 101989593 B1 KR101989593 B1 KR 101989593B1 KR 1020180021268 A KR1020180021268 A KR 1020180021268A KR 20180021268 A KR20180021268 A KR 20180021268A KR 101989593 B1 KR101989593 B1 KR 101989593B1
Authority
KR
South Korea
Prior art keywords
identification information
layer
open function
function
kernel
Prior art date
Application number
KR1020180021268A
Other languages
English (en)
Inventor
이재환
구동훈
변은규
Original Assignee
한국항공대학교산학협력단
한국과학기술정보연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국항공대학교산학협력단, 한국과학기술정보연구원 filed Critical 한국항공대학교산학협력단
Priority to KR1020180021268A priority Critical patent/KR101989593B1/ko
Application granted granted Critical
Publication of KR101989593B1 publication Critical patent/KR101989593B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/226Microinstruction function, e.g. input/output microinstruction; diagnostic microinstruction; microinstruction format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

스토리지 계층으로의 식별정보 전달 장치 및 방법이 개시되며, 본원의 일 실시예에 따른 식별정보 전달 방법은 (a) 응용 계층에서의 I/O 수행에 대응하여 사용자 영역에서 오픈 함수가 수행되고 커널 영역의 시스템 콜 계층에서 시스템 오픈 함수가 콜 되면, 후킹 모듈에 의해 상기 시스템 오픈 함수를 후킹하는 단계, (b) 상기 후킹 모듈이 상기 응용 계층에 대응하는 식별정보를 상기 커널 영역의 VFS 계층에 전달하기 위한 함수를 상기 시스템 오픈 함수에 추가하는 단계, (c) 상기 후킹 모듈의 지원을 위해, 상기 VFS 계층에 상기 식별정보가 저장 가능하고 상기 스토리지 계층에 상기 식별정보가 전달 가능하도록 커널 코드를 수정하는 단계 및 (d) 상기 함수가 추가된 시스템 오픈 함수를 수행하여 상기 스토리지 계층으로 상기 식별정보를 전달하는 단계를 포함할 수 있다.

Description

식별정보 전달 장치 및 방법{ DEVICE AND METHOD FOR TRANSMISSION OF IDENTIFICATION INFORMATION }
본원은 스토리지 계층으로의 식별정보 전달 장치 및 방법에 관한 것이다.
고성능 컴퓨팅 환경에서 응용 프로그램은 잡 단위로 수행되고, 잡은 워크로드 매니저 또는 스케쥴러를 통해 시스템의 자원을 할당 받는다. 이러한 환경에서 잡의 수행에 의해 과도한 I/O가 발생되는 경우, SSD(Solid State Drive)와 같은 고성능의 저장 장치이더라도 최적의 성능을 발휘하는 것이 어려운 점이 있다.
또한, 잡에 대한 정보, 예를 들어 잡 아이디 및 잡과 연계된 유저 아이디와 같은 유저 레벨의 정보를 스토리지 계층에 저장하기 위해서는 응용 계층에서 상기 정보가 스토리지 계층에 저장되도록 오픈 함수를 수정해야 하는 과정이 필요하다. 이러한 과정에 의해 고성능 컴퓨팅 환경에서 스토리지 계층의 성능이 최적화되는 것이 어려운 실정이며, 스토리지 계층의 성능 최적화 기술과 관련하여 그 개발 수준이 마땅치 않은 실정이다.
본원의 배경이 되는 기술은 한국공개특허공보 제10-2015-0050689호에 개시되어 있다.
본원은 전술한 종래 기술의 문제점을 해결하기 위한 것으로서, 시스템 오픈 함수를 후킹하여 사용자 아이디를 포함한 식별정보를 스토리지 계층으로 전달할 수 있는 식별정보 전달 장치 및 방법을 제공하는 것을 목적으로 한다.
본원은 전술한 종래 기술의 문제점을 해결하기 위한 것으로서, VFS 계층에 식별 정보가 저장되도록 함으로써, 커널 계층에서 식별정보에 대한 접근이 가능한 식별정보 전달 장치 및 방법을 제공하는 것을 목적으로 한다.
다만, 본원의 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들도 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.
상기한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본원의 일 실시예에 따른 스토리지 계층으로 식별정보를 전달하는 방법은, (a) 응용 계층에서의 I/O 수행에 대응하여 사용자 영역에서 오픈 함수가 수행되고 커널 영역의 시스템 콜 계층에서 시스템 오픈 함수가 콜 되면, 후킹 모듈에 의해 상기 시스템 오픈 함수를 후킹하는 단계, (b) 상기 후킹 모듈이 상기 응용 계층에 대응하는 식별정보를 상기 커널 영역의 VFS 계층에 전달하기 위한 함수를 상기 시스템 오픈 함수에 추가하는 단계, (c) 상기 후킹 모듈의 지원을 위해, 상기 VFS 계층에 상기 식별정보가 저장 가능하고 상기 스토리지 계층에 상기 식별정보가 전달 가능하도록 커널 코드를 수정하는 단계 및 (d) 상기 함수가 추가된 시스템 오픈 함수를 수행하여 상기 스토리지 계층으로 상기 식별정보를 전달하는 단계를 포함할 수 있다.
본원의 일 실시예에 따르면, 상기 식별정보는 사용자 아이디 또는 잡 아이디일 수 있다.
본원의 일 실시예에 따르면, 상기 (c) 단계는, (c1) 상기 VFS 계층에서 관리하는 파일 구조체 및 아이노드 구조체에 상기 식별정보를 저장하는 변수를 추가하는 단계, (c2) 커널 영역의 블록 계층 또는 디바이스 드라이버 계층으로 상기 식별정보를 넘겨주기 위해 파일 연산 구조체의 오픈 함수에 상기 식별정보를 전달받는 파라미터를 추가하여 수정된 오픈 함수를 생성하는 단계 및 (c3) 수정된 상기 오픈 함수의 선언에 맞추어, 타겟으로 하는 상기 블록 계층 또는 상기 디바이스 드라이버 계층의 고유 오픈 함수에 상기 식별정보의 저장 및 처리를 위한 변수 및 함수를 추가하는 단계를 포함할 수 있다.
본원의 일 실시예에 따르면, 상기 (d) 단계의 수행에 의해, 상기 아이노드 구조체의 상기 식별정보가 저장되는 변수에 상기 식별정보가 저장되어 상기 커널 영역 내에서 상기 식별정보에 대한 접근이 가능해질 수 있다.
본원의 일 실시예에 따른 스토리지 계층으로의 식별정보 전달 장치는 응용 계층에서의 I/O 수행에 대응하여 사용자 영역 에서 오픈 함수가 수행되고 커널 영역의 시스템 콜 계층에서 시스템 오픈 함수가 콜 되면, 상기 시스템 오픈 함수를 후킹하고 상기 응용 계층에 대응하는 식별정보를 상기 커널 영역의 VFS 계층에 전달하기 위한 함수를 상기 시스템 오픈 함수에 추가하는 후킹 모듈, 상기 후킹 모듈의 지원을 위해, 상기 VFS 계층에 상기 식별정보가 저장 가능하고 상기 스토리지 계층에 상기 식별정보가 전달 가능하도록 커널 코드를 수정하는 코드 제어부 및 상기 함수가 추가된 시스템 오픈 함수를 수행하여 상기 스토리지 계층으로 상기 식별정보를 전달하는 전달부를 포함할 수 있다.
본원의 일 실시예에 따르면, 상기 식별정보는 사용자 아이디 또는 잡 아이디일 수 있다.
본원의 일 실시예에 따르면, 상기 코드 제어부는, 상기 VFS 계층에서 관리하는 파일 구조체 및 아이노드 구조체에 상기 식별정보를 저장하는 변수를 수정된 상기 커널 코드에 추가하고, 커널 영역의 블록 계층 또는 디바이스 드라이버 계층으로 상기 식별정보를 넘겨주기 위해 파일 연산 구조체의 오픈 함수에 상기 식별정보를 전달받는 파라미터를 추가하여 수정된 오픈 함수를 생성하고, 수정된 상기 오픈 함수의 선언에 맞추어, 타겟으로 하는 상기 블록 계층 또는 상기 디바이스 드라이버 계층의 고유 오픈 함수에 상기 식별정보의 저장 및 처리를 위한 변수 및 함수를 추가할 수 있다.
본원의 일 실시예에 따르면, 상기 스토리지 계층으로 상기 식별정보가 전달됨에 따라 상기 아이노드 구조체의 상기 식별정보가 저장되는 변수에 상기 식별정보가 저장되어 상기 커널 영역 내에서 상기 식별정보에 대한 접근이 가능해질 수 있다.
상술한 과제 해결 수단은 단지 예시적인 것으로서, 본원을 제한하려는 의도로 해석되지 않아야 한다. 상술한 예시적인 실시예 외에도, 도면 및 발명의 상세한 설명에 추가적인 실시예가 존재할 수 있다.
전술한 본원의 과제 해결 수단에 의하면, 시스템 오픈 함수를 후킹하여 응용 레벨에서의 수정 없이 커널 계층에서 식별정보를 스토리지 계층으로 전달할 수 있는 식별정보 전달 장치 및 방법을 제공하는 것을 목적으로 한다.
본원은 전술한 종래 기술의 문제점을 해결하기 위한 것으로서, VFS 계층에 식별 정보가 저장되도록 함으로써, 커널 계층에서 식별정보에 대한 접근이 가능하여 스토리지 계층의 성능이 최적화 될 수 있는 식별정보 전달 장치 및 방법을 제공할 수 있다.
도 1은 본원의 일 실시예에 따른 식별정보 전달 장치의 구성을 도시한 도면이다.
도 2는 본원의 일 실시예에 따른 식별정보 전달 장치의 후킹의 예를 도시한 도면이다.
도 3은 본원의 일 실시예에 따른 식별정보 전달 장치의 식별정보가 스토리지 계층으로 전달되는 예를 도시한 도면이다.
도 4는 본원의 일 실시예에 따른 식별정보 전달 장치의 VFS 계층의 구조를 도시한 도면이다.
도 5는 본원의 일 실시예에 따른 식별정보 전달 장치의 컴퓨팅 환경의 구성을 도시한 도면이다.
도 6은 본원의 일 실시예에 따른 식별 정보 전달 방법의 흐름을 도시한 도면이다.
도 7은 본원의 일 실시예에 따른 식별정보 전달 방법의 커널 코드 수정의 흐름을 도시한 도면이다.
아래에서는 첨부한 도면을 참조하여 본원이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본원의 실시예를 상세히 설명한다. 그러나 본원은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본원을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
본원 명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다.
본원 명세서 전체에서, 어떤 부재가 다른 부재 "상에", "상부에", "상단에", "하에", "하부에", "하단에" 위치하고 있다고 할 때, 이는 어떤 부재가 다른 부재에 접해 있는 경우뿐 아니라 두 부재 사이에 또 다른 부재가 존재하는 경우도 포함한다.
본원 명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함" 한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것을 의미한다.
도 1은 본원의 일 실시예에 따른 식별정보 전달 장치의 구성을 도시한 도면이다.
도 1을 참조하면, 식별정보 전달 장치(100)는 후킹 모듈(110), 코드 제어부(120) 및 전달부(130)를 포함할 수 있다. 후킹 모듈(110)은 응용 계층에서의 I/O 수행에 대응하여 사용자 영역에서 오픈 함수가 수행되고 커널 영역의 시스템 콜 계층에서 시스템 오픈 함수가 콜 되면, 상기 시스템 오픈 함수를 후킹할 수 있다. 상기 사용자 영역은 사용자 영역은 응용프로그램에 대한 I/O가 수행되는 유저 레벨(User level)을 의미한다. 응용 계층(Application layer)은 응용 프로그램의 I/O 수행에 대응하여 POSIX API(예를 들어, POSIX 라이브러리)인 오픈(open) 함수가 수행되는 계층일 수 있다.
커널 영역(kernel level)은 여러 개의 잡(프로세스)간의 원활한 수행을 위해 잡에 자원을 할당하거나 제어하는 것과 같이, 잡에 대한 스케줄링을 담당하는 영역을 의미한다. 또한, 커널 영역은 사용자 영역과 커널 영역을 연결하는 시스템 콜 계층과 가상 파일 시스템인 VFS(Virtual File System) 계층 및 블록 단 및 드라이버 단을 포함하는 스토리지 계층을 포함할 수 있다. 앞서 언급된 영역 및 계층은 공지된 사항이므로 구체적인 설명은 생략한다.
도 2는 본원의 일 실시예에 따른 식별정보 전달 장치의 후킹의 예를 도시한 도면이다.
커널 영역에서 오픈 함수가 수행되면, 시스템 콜 계층에서는 시스템 오픈 함수가 호출(call)될 수 있다. 이때, 후킹 모듈(110)은 상기 응용 계층에 대응하는 식별정보를 상기 커널 영역의 VFS 계층 에 전달하기 위한 함수를 상기 시스템 오픈 함수에 추가할 수 있다. 구체적으로, 후킹 모듈(110)은 오픈 시스템 콜(즉, 시스템 오픈 함수)를 후킹하여 응용 계층에 대응하는 식별정보를 VFS 계층에 전달하기 위한 함수를 오픈 시스템 콜에 추가할 수 있다. 상기 식별정보는 사용자 아이디 또는 잡 아이디일 수 있으나, 이에 한정되는 것은 아니다. 후킹 모듈(110)은 기존의 사용자 영역에서 오픈 함수가 수행됨에 따라 커널 영역에서 시스템 오픈 함수가 호출되는 것을 대신하여 식별정보가 스토리지 계층으로 전달 및 저장되도록하는 함수가 호출되도록 할 수 있으며, 이를 후킹이라 한다. 예시적으로, 후킹 모듈(110)은 상기 오픈 함수의 포인터 변경을 통해 후킹을 수행할 수 있다.
코드 제어부(120)는 상기 후킹 모듈(110)의 지원을 위해, 상기 VFS 계층에 상기 식별정보가 저장 가능하고 상기 스토리지 계층에 상기 식별정보가 전달 가능하도록 커널 코드를 수정할 수 있다. 코드 제어부(120)는 후킹 모듈(110)의 후킹에 의해 호출된 상기 함수 즉, 커널 코드를 수정하여, 기존의 시스템 오픈 함수의 콜과 동일한 작업을 수행하면서, 식별정보가 VFS 객체인 아이도느 구조체 및 파일 객체에 저장되는 작업이 이루어지도록 할 수 있다. 즉, 코드 제어부(120)는 후킹 모듈(110)의 후킹에 의해 호출되는 함수에 따라 식별정보가 스토리지 계층의 아이노드 구조체에 적절히 저장되도록 하는 변수를 미리 세팅하는 것으로써 커널 코드를 수정할 수 있다.
도 2를 참조하면, 코드 제어부(120)는 VFS 계층에서 관리하는 파일 구조체 및 아이노드 구조체에 상기 식별정보를 저장하는 변수를 수정된 상기 커널 코드에 추가할 수 있다. 예시적으로, 코드 제어부(120)는 아이노드 구조체에 상기 식별정보(사용자 아이디)가 저장되는 섹터에 관한 정보를 포함하는 인덱스 넘버(int)를 부여할 수 있다. 또한, 코드 제어부(120)는 커널 영역의 블록 계층 또는 디바이스 드라이버 계층으로 상기 식별정보를 넘겨주기 위해 파일 연산 구조체(File operation structure)의 오픈 함수에 상기 식별정보를 전달받는 파라미터를 추가하여 수정된 오픈 함수를 생성할 수 있다. 상기 수정된 오픈 함수에 의해 식별정보가 블록 계측 또는 디바이스 드라이버 계층으로 전달될 수 있다.
또한, 코드 제어부(120)는 수정된 상기 오픈 함수의 선언에 맞추어, 타겟으로 하는 상기 블록 계층 또는 상기 디바이스 드라이버 계층의 고유 오픈 함수에 상기 식별정보의 저장 및 처리를 위한 변수 및 함수를 추가할 수 있다. 예시적으로, 상기 변수 및 함수의 추가는 디바이스 벤더 또는 리눅스 등의 OS에서 제공되는 인터페이스를 통해 이루어질 수 있다. 예를 들어, NVMe(Non Volatile Memory express) 1.3에서 제공하는 디바이스와 호스트 간의 데이터 교환을 가능하게 하는 stream 인터페이스가 상기 변수 및 함수 추가에 활용될 수 있다. 식별정보를 스토리지 계층으로 전달함에 있어서, 아이노드의 메타데이터는 아이노드 구조체 및 VFS 계층에 필수적으로 저장될 필요가 있. 코드 제어부(120)는 식별정보를 파일 구조체 및 아이노드 구조체에 저장하는 변수를 추가함으로써, 식별정보가 파일 구조체 및 아이노드 구조체에 저장될 수 있다. 따라서, 다양한 응용 프로그램 또는 파일 시스템에서 파일 구조체 및 아이노드 구조체에 저장된 식별정보를 VFS를 통해 활용할 수 있다.
도 3은 본원의 일 실시예에 따른 식별정보 전달 장치의 식별정보가 스토리지 계층으로 전달되는 예를 도시한 도면이고, 도 4는 본원의 일 실시예에 따른 식별정보 전달 장치의 VFS 계층의 구조를 도시한 도면이다.
도 3을 참조하면, 전술한 바에 따르면, 사용자 영역에서 응용 프로그램이 I/O를 수행하면, 오픈 함수가 수행될 수 있고, 후킹 모듈(110)은 오픈 함수의 수행에 의해 호출된 시스템 오픈 함수를 후킹할 수 있다. 후킹 모듈(110)은 현재 실행중인 잡과 연계된 식별정보를 획득하여 VFS 계층에 식별정보의 사용자 아이디를 저장함으로써 블록 계층으로 사용자 아이디가 전달되도록 할 수 있다. 결과적으로, 응용 계층에서 오픈 함수가 실행될 때, 오픈 함수가 실행되면서 스토리지 계층으로 오픈 함수를 실행한 잡과 연계된 사용자 아이디가 전달될 수 있다. 다시 말해, 시스템 오픈 함수가 호출되면, 식별정보 즉, 사용자 아이디가 VFS단에 저장되는 작업이 수행될 수 있다. 상기 작업을 통해 식별정보가 VFS 단에서 관리하는 객체인 파일 구조체 및 아이노드 구조체에 저장되도록 변수를 추가하는 커널 코드의 수정이 코드 제어부(120)에 의해 이루어질 수 있다.
전달부(130)는 함수가 추가된 시스템 오픈 함수를 수행하여 상기 스토리지 계층으로 상기 식별정보를 전달할 수 있다. 도 4를 참조하면, User level(사용자 영역)에서 open(오픈 함수)이라는 POSIX 라이브러리가 수행되면, User level과 Kernel level(커널 영역)의 인터페이스인 System call단에서 sys_open(시스템 오픈 함수)이 콜(call) 될 수 있다. 이 때, 후킹 모듈(110)에 의해 sys_open을 호출하는 것을 대신하여 코드 제어부(120)에 의해 수정된 함수(식별정보가 스토리지 계층으로 전달되도록 수정된 시스템 오픈 함수)를 호출할 수 있다. 전달부(130)는 상기 수정된 함수를 수행하여 식별정보, 즉 사용자 아이디를 스토리지 계층의 블록 레이어, 디바이스 드라이버 단으로 전달할 수 있다.
본원의 일 실시예에 따르면, 상기 스토리지 계층으로 상기 식별정보가 전달됨에 따라 상기 아이노드 구조체의 상기 식별정보가 저장되는 변수에 상기 식별정보가 저장되어 상기 커널 영역 내에서 상기 식별정보에 대한 접근이 가능해질 수 있다. 구체적으로, 유저단(사용자 영역)에서 어떠한 파일을 열었을 때, 커널 영역에서는 아이노드 객체에 해당하는 해당 파일의 상세한 정보(예를 들어, 식별정보, 디스크상의 섹터 주소 값, 파일 포인터의 오프셋 값, 소유자 정보, 그룹정보, 파일접근 권한 정보, 포인터 정보, 파일 크기 정보, 파일 생성 정보, 접근 정보, 수정 시간 정보, 파일 종류 정보 및 링크 수 정보 중 적어도 하나)을 기록하여 관리할 수 있다. 즉, 하나의 파일 당 하나의 고유 아이노드가 생성되고, 아이노드에 대한 상세한 정보까지 저장되면, 커널 영역 내에서 해당 파일에 대한 세부적인 접근이 가능해 질 수 있다. 결과적으로, 아이노드에 식별정보(사용자 아이디)가 저장되는 작업이 이루어지면, 블록 레이어, 디바이스 드라이버단 즉, 스토리지 계층에서 사용자 아이디에 대한 접근이 가능하기 때문에 스토리지 계층에서 오픈 함수와 관련된 코드의 변수를 추가할 수 있고, 아이노드에 저장된 사용자 아이디를 가져올 수 있다.
종래의 NVMe 1.3에서 Stream 기능을 활용하기 위해서는 응용 단(응용 계층)을 수정하여 사용자 아이디를 스토리지 계층으로 전달하였으나, 식별정보 전달 장치(100)에 의하면, 시스템 오픈 함수의 후킹과 수정을 통해 커널 영역에서 사용자 영역의 식별정보를 스토리지 계층으로 전달함으로써 파일 시스템의 유연성을 향상시킬 수 있다. 결과적으로, 고성능 컴퓨팅 환경에서 스토리지 계층의 성능이 최적화 될 수 있으며, 구체적으로, 실제 데이터 생성의 주체가 되는 응용 계층의 식별정보를 활용함으로써 스토리지 계층에서 실제 잡(응용 프로그램)의 I/O의 특성을 고려한 최적화가 가능하다.
도 5는 본원의 일 실시예에 따른 식별정보 전달 장치의 컴퓨팅 환경의 구성을 도시한 도면이다.
도 5를 참조하면, 고성능 컴퓨팅 환경에서 응용 프로그램이 자원을 할당 받기 위해서 사용자는 시스템 워크로드 매니저에게 자원을 요청하고, 워크로드 매니저는 자원의 상태를 기반으로 사용자의 잡에게 자원을 할당한다. 자원을 할당 받은 잡들은 할당 받은 자원을 통해 연산을 수행하고 연산 후 결과 값을 저장한다. 이 때 발생하는 I/O는 사용자 아이디 즉, 식별정보와 함께 스토리지 계층으로 전달되어 스토리지 계층의 디바이스 내에서 데이터 처리 및 배치 등의 최적화 작업이 수행될 수 있다. 또한, 코드 제어부(120)의 동작 같이 커널 계층에서의 지원이 이루어지므로, 응용 계층의 추가적인 작업(응용 단의 수정)을 생략할 수 있으며, 후킹 모듈(110)에 의한 후킹을 통해 응용 계층의 응용 프로그램(잡)들을 지원할 수 있다. 또한, 사용자 아이디를 스토리지 계층으로 전달함에 있어서, 스토리지 계층과 유저 영역을 분리할 수 있고, 응용 프로그램의 I/O 특성을 고려하여 저장 장치의 효율적인 데이터 처리가 가능하므로, 최신 저장장치의 성능을 최대로 활용할 수 있다.
본원의 식별정보 전달 장치에 따르면, 실제 응용 프로그램의 정보를 이용하여 수토리지 계층에서의 유저 영역을 분리할 수 있고, 이에 따라 커널 계층에서 사용자 아이디가 저장된 스토리지 계층에 대한 접근이 가능하므로, 저장장치의 성능이 최적화될 수 있다. 이를 통해 응용 프로그램의 특성을 대표할 수 있는 정보(사용자 아이디, 잡 아이디)를 스토리지 계층으로 전달하여 스토리지 계층의 성능을 최적화 할 수 있을 뿐만 아니라, 응용 프로그램의 특성에 맞는 커스터마이징된 저장장치의 개발이 가능할 것이다.
도 6은 본원의 일 실시예에 따른 식별 정보 전달 방법의 흐름을 도시한 도면이고, 도 7은 본원의 일 실시예에 따른 식별정보 전달 방법의 커널 코드 수정의 흐름을 도시한 도면이다.
도 6 및 도 7에 도시된 식별 정보 전달 방법은 앞선 도 1내지 도 5을 통해 설명된 식별 정보 전달 장치(100)에 의하여 수행된다. 따라서, 이하 생략된 내용이라고 하더라도 도 1내지 도 5을 통해 식별 정보 전달 장치(100)에 대하여 설명된 내용은 도 6 및 도 7에도 적용된다.
도 6을 참조하면, 단계 S610에서 후킹 모듈(110)은 응용 계층에서의 I/O 수행에 대응하여 사용자 영역에서 오픈 함수가 수행되고 커널 영역의 시스템 콜 계층에서 시스템 오픈 함수가 콜 되면, 상기 시스템 오픈 함수를 후킹할 수 있다.
단계 S620에서 후킹 모듈(110)은 상기 응용 계층에 대응하는 식별정보를 상기 커널 영역의 VFS 계층에 전달하기 위한 함수를 상기 시스템 오픈 함수에 추가할 수 있다. 상기 식별정보는 사용자 아이디 또는 잡 아이디일 수 있으나 이에 한정되는 것은 아니다.
단계 S630에서 코드 제어부(120)는 상기 후킹 모듈(110)의 지원을 위해, 상기 VFS 계층에 상기 식별정보가 저장 가능하고 상기 스토리지 계층에 상기 식별정보가 전달 가능하도록 커널 코드를 수정할 수 있다. 코드 제어부(120)는 후킹 모듈(110)의 후킹에 의해 호출된 상기 함수 즉, 커널 코드를 수정하여, 기존의 시스템 오픈 함수의 콜과 동일한 작업을 수행하면서, 식별정보가 VFS 객체인 아이도느 구조체 및 파일 객체에 저장되는 작업이 이루어지도록 할 수 있다. 즉, 코드 제어부(120)는 후킹 모듈(110)의 후킹에 의해 호출되는 함수에 따라 식별정보가 스토리지 계층의 아이노드 구조체에 적절히 저장되도록 하는 변수를 미리 세팅하는 것으로써 커널 코드를 수정할 수 있다.
도 7을 통해 커널 코드 수정의 흐름을 구체적으로 설명한다. 도 7을 참조하면, 단계 S631에서 코드 제어부(120)는 VFS 계층에서 관리하는 파일 구조체 및 아이노드 구조체에 상기 식별정보를 저장하는 변수를 수정된 상기 커널 코드에 추가할 수 있다. 예시적으로, 코드 제어부(120)는 아이노드 구조체에 상기 식별정보(사용자 아이디)가 저장되는 섹터에 관한 정보를 포함하는 인덱스 넘버(int)를 부여할 수 있다.
단계 S632에서 코드 제어부(120)는 커널 영역의 블록 계층 또는 디바이스 드라이버 계층으로 상기 식별정보를 넘겨주기 위해 파일 연산 구조체의 오픈 함수에 상기 식별정보를 전달받는 파라미터를 추가하여 수정된 오픈 함수를 생성할 수 있다. 상기 수정된 오픈 함수에 의해 식별정보가 블록 계측 또는 디바이스 드라이버 계층으로 전달될 수 있다.
단계 S633에서 코드 제어부(120)는 수정된 상기 오픈 함수의 선언에 맞추어, 타겟으로 하는 상기 블록 계층 또는 상기 디바이스 드라이버 계층의 고유 오픈 함수에 상기 식별정보의 저장 및 처리를 위한 변수 및 함수를 추가할 수 있다. 예시적으로, 상기 변수 및 함수의 추가는 디바이스 벤더 또는 리눅스 등의 OS에서 제공되는 인터페이스를 통해 이루어질 수 있다.
다시 도 6을 참조하면, 단계 S640에서 전달부(130)는 함수가 추가된 시스템 오픈 함수를 수행하여 상기 스토리지 계층으로 상기 식별정보를 전달할 수 있다.
본원의 일 실시예에 따르면, 상기 스토리지 계층으로 상기 식별정보가 전달됨에 따라 상기 아이노드 구조체의 상기 식별정보가 저장되는 변수에 상기 식별정보가 저장되어 상기 커널 영역 내에서 상기 식별정보에 대한 접근이 가능해질 수 있다.
본원의 일 실시 예에 따른 식별정보 전달 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
전술한 본원의 설명은 예시를 위한 것이며, 본원이 속하는 기술분야의 통상의 지식을 가진 자는 본원의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본원의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본원의 범위에 포함되는 것으로 해석되어야 한다.
100: 식별정보 전달 장치
110: 후킹 모듈
120: 코드 제어부
130: 전달부

Claims (9)

  1. 스토리지 계층으로 식별정보를 전달하는 방법에 있어서,
    (a) 응용 계층에서의 I/O 수행에 대응하여 사용자 영역에서 오픈 함수가 수행되고 커널 영역의 시스템 콜 계층에서 시스템 오픈 함수가 콜 되면, 후킹 모듈에 의해 상기 시스템 오픈 함수를 후킹하는 단계;
    (b) 상기 후킹 모듈이 상기 응용 계층에 대응하는 식별정보를 상기 커널 영역의 VFS 계층에 전달하기 위한 함수를 상기 시스템 오픈 함수에 추가하는 단계;
    (c) 상기 후킹 모듈의 지원을 위해, 상기 VFS 계층에 상기 식별정보가 저장 가능하고 상기 스토리지 계층에 상기 식별정보가 전달 가능하도록 커널 코드를 수정하는 단계; 및
    (d) 상기 함수가 추가된 시스템 오픈 함수를 수행하여 상기 스토리지 계층으로 상기 식별정보를 전달하는 단계를 포함하되,
    상기 식별정보는 사용자 아이디 또는 잡 아이디이고,
    상기 (c) 단계는,
    (c1) 상기 VFS 계층에서 관리하는 파일 구조체 및 아이노드 구조체에 상기 식별정보를 저장하는 변수를 추가하는 단계;
    (c2) 커널 영역의 블록 계층 또는 디바이스 드라이버 계층으로 상기 식별정보를 넘겨주기 위해 파일 연산 구조체의 오픈 함수에 상기 식별정보를 전달받는 파라미터를 추가하여 수정된 오픈 함수를 생성하는 단계; 및
    (c3) 수정된 상기 오픈 함수의 선언에 맞추어, 타겟으로 하는 상기 블록 계층 또는 상기 디바이스 드라이버 계층의 고유 오픈 함수에 상기 식별정보의 저장 및 처리를 위한 변수 및 함수를 추가하는 단계를 포함하는 것인, 스토리지 계층으로의 식별정보 전달 방법.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서,
    상기 (d) 단계의 수행에 의해, 상기 아이노드 구조체의 상기 식별정보가 저장되는 변수에 상기 식별정보가 저장되어 상기 커널 영역 내에서 상기 식별정보에 대한 접근이 가능해지는 것인, 스토리지 계층으로의 식별정보 전달 방법.
  5. 스토리지 계층으로의 식별정보 전달 장치에 있어서,
    응용 계층에서의 I/O 수행에 대응하여 사용자 영역 에서 오픈 함수가 수행되고 커널 영역의 시스템 콜 계층에서 시스템 오픈 함수가 콜 되면, 상기 시스템 오픈 함수를 후킹하고 상기 응용 계층에 대응하는 식별정보를 상기 커널 영역의 VFS 계층에 전달하기 위한 함수를 상기 시스템 오픈 함수에 추가하는 후킹 모듈;
    상기 후킹 모듈의 지원을 위해, 상기 VFS 계층에 상기 식별정보가 저장 가능하고 상기 스토리지 계층에 상기 식별정보가 전달 가능하도록 커널 코드를 수정하는 코드 제어부; 및
    상기 함수가 추가된 시스템 오픈 함수를 수행하여 상기 스토리지 계층으로 상기 식별정보를 전달하는 전달부를 포함하되,
    상기 식별정보는 사용자 아이디 또는 잡 아이디이고,
    상기 코드 제어부는,
    상기 VFS 계층에서 관리하는 파일 구조체 및 아이노드 구조체에 상기 식별정보를 저장하는 변수를 수정된 상기 커널 코드에 추가하고,
    커널 영역의 블록 계층 또는 디바이스 드라이버 계층으로 상기 식별정보를 넘겨주기 위해 파일 연산 구조체의 오픈 함수에 상기 식별정보를 전달받는 파라미터를 추가하여 수정된 오픈 함수를 생성하고,
    수정된 상기 오픈 함수의 선언에 맞추어, 타겟으로 하는 상기 블록 계층 또는 상기 디바이스 드라이버 계층의 고유 오픈 함수에 상기 식별정보의 저장 및 처리를 위한 변수 및 함수를 추가하는 것인, 스토리지 계층으로의 식별정보 전달 장치.
  6. 삭제
  7. 삭제
  8. 제5항에 있어서,
    상기 스토리지 계층으로 상기 식별정보가 전달됨에 따라 상기 아이노드 구조체의 상기 식별정보가 저장되는 변수에 상기 식별정보가 저장되어 상기 커널 영역 내에서 상기 식별정보에 대한 접근이 가능해지는 것인, 스토리지 계층으로의 식별정보 전달 장치.
  9. 제 1항 및 제 4항 중 어느 한 항의 방법을 컴퓨터에서 실행하기 위한 프로그램을 기록한 컴퓨터에서 판독 가능한 기록매체.
KR1020180021268A 2018-02-22 2018-02-22 식별정보 전달 장치 및 방법 KR101989593B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180021268A KR101989593B1 (ko) 2018-02-22 2018-02-22 식별정보 전달 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180021268A KR101989593B1 (ko) 2018-02-22 2018-02-22 식별정보 전달 장치 및 방법

Publications (1)

Publication Number Publication Date
KR101989593B1 true KR101989593B1 (ko) 2019-06-14

Family

ID=66846517

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180021268A KR101989593B1 (ko) 2018-02-22 2018-02-22 식별정보 전달 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101989593B1 (ko)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000293362A (ja) * 1999-04-02 2000-10-20 Nec Corp Osカーネルコードの動的構成変更と修正の方法及びそのシステム並びに情報記録媒体
JP4643597B2 (ja) * 2004-08-30 2011-03-02 株式会社日立製作所 ストレージシステム及びデータ再配置制御装置
JP2012504295A (ja) * 2008-09-30 2012-02-16 マイクロソフト コーポレーション データベースサーバシステムのためのストレージ階層
KR20140089035A (ko) * 2013-01-02 2014-07-14 한국전자통신연구원 콘텐츠 서버와 정보 중심 네트워크 서버 간의 연동을 위한 가상 파일 시스템 및 이의 동작 방법
KR20150128256A (ko) * 2014-05-09 2015-11-18 배재대학교 산학협력단 실제 스마트기기의 디바이스에서 발생하는 이벤트에 따라 응용프로그램을 실행하는 가상 안드로이드 장치를 구비한 서버 시스템
KR101763804B1 (ko) * 2011-01-12 2017-08-14 에스케이플래닛 주식회사 모바일 어플리케이션 검증 방법 및 이를 적용한 단말

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000293362A (ja) * 1999-04-02 2000-10-20 Nec Corp Osカーネルコードの動的構成変更と修正の方法及びそのシステム並びに情報記録媒体
JP4643597B2 (ja) * 2004-08-30 2011-03-02 株式会社日立製作所 ストレージシステム及びデータ再配置制御装置
JP2012504295A (ja) * 2008-09-30 2012-02-16 マイクロソフト コーポレーション データベースサーバシステムのためのストレージ階層
KR101763804B1 (ko) * 2011-01-12 2017-08-14 에스케이플래닛 주식회사 모바일 어플리케이션 검증 방법 및 이를 적용한 단말
KR20140089035A (ko) * 2013-01-02 2014-07-14 한국전자통신연구원 콘텐츠 서버와 정보 중심 네트워크 서버 간의 연동을 위한 가상 파일 시스템 및 이의 동작 방법
KR20150128256A (ko) * 2014-05-09 2015-11-18 배재대학교 산학협력단 실제 스마트기기의 디바이스에서 발생하는 이벤트에 따라 응용프로그램을 실행하는 가상 안드로이드 장치를 구비한 서버 시스템

Similar Documents

Publication Publication Date Title
JP6912583B2 (ja) サービス処理方法および装置
US10936553B2 (en) Intelligent file system with transparent storage tiering
US11556348B2 (en) Bootstrapping profile-guided compilation and verification
KR101729097B1 (ko) 복수의 가상 머신에서 수행되는 응용 프로그램들간 참조 데이터를 공유하는 방법 및 이를 위한 참조 데이터 관리 장치 및 시스템
US20080244599A1 (en) Master And Subordinate Operating System Kernels For Heterogeneous Multiprocessor Systems
US20080244507A1 (en) Homogeneous Programming For Heterogeneous Multiprocessor Systems
US9886398B2 (en) Implicit sharing in storage management
JP2011076605A (ja) 仮想マシン・イメージの実行方法及びシステム
JP6483631B2 (ja) メモリ装置及び制御プログラム
CN101661486A (zh) 对包含虚拟机的宿主机硬盘进行碎片整理的方法和系统
US20140082275A1 (en) Server, host and method for reading base image through storage area network
CN110019083B (zh) 分布式文件系统的存储方法、装置、电子设备及存储介质
US20110072433A1 (en) Method to Automatically ReDirect SRB Routines to a ZIIP Eligible Enclave
US9477518B1 (en) Method to automatically redirect SRB routines to a zIIP eligible enclave
CN107832097B (zh) 数据加载方法及装置
CN109408226A (zh) 数据处理方法、装置及终端设备
KR101535792B1 (ko) 운영체제 구성 장치 및 방법
US11269525B2 (en) Co-processing a plurality of dependent systems with a finite number of processing threads
KR101989593B1 (ko) 식별정보 전달 장치 및 방법
CN110543351B (zh) 数据处理方法以及计算机设备
JP5471677B2 (ja) 仮想ディスク制御システム、方法及びプログラム
KR20190069134A (ko) 응용 프로그램간 파일 공유 장치 및 방법
CN110502325B (zh) 一种任务运行方法及装置、计算机可读存储介质
JP5357989B2 (ja) メモリ管理装置、メモリ管理方法およびメモリ管理プログラム
JP7320071B2 (ja) ヒープメモリを利用して実行可能ファイルを保護する方法およびシステム

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant