KR20230007161A - 호스트 커널에 부착되는 솔리드 스테이트 드라이브의 데이터 제어 시스템 및 방법 - Google Patents

호스트 커널에 부착되는 솔리드 스테이트 드라이브의 데이터 제어 시스템 및 방법 Download PDF

Info

Publication number
KR20230007161A
KR20230007161A KR1020210088058A KR20210088058A KR20230007161A KR 20230007161 A KR20230007161 A KR 20230007161A KR 1020210088058 A KR1020210088058 A KR 1020210088058A KR 20210088058 A KR20210088058 A KR 20210088058A KR 20230007161 A KR20230007161 A KR 20230007161A
Authority
KR
South Korea
Prior art keywords
data
solid state
state drive
setting information
host kernel
Prior art date
Application number
KR1020210088058A
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 KR1020210088058A priority Critical patent/KR20230007161A/ko
Publication of KR20230007161A publication Critical patent/KR20230007161A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Debugging And Monitoring (AREA)

Abstract

데이터가 저장되며, 데이터가 저장된 위치를 나타내도록 설정 정보를 생성하는 솔리드 스테이트 드라이브 및 설정 정보를 전달받아 저장하고, 설정 정보에 기초하여 어플리케이션의 명령에 따른 읽기 요청과 쓰기 요청을 생성하는 호스트 커널을 포함하는, 호스트 커널에 부착되는 솔리드 스테이트 드라이브의 데이터 제어 시스템을 제공한다.

Description

호스트 커널에 부착되는 솔리드 스테이트 드라이브의 데이터 제어 시스템 및 방법{DATA CONTROL SYSTEM AND METHOD OF SOLID STATE DRIVE ATTACHED TO HOST KERNEL}
본 발명은 호스트 커널에 부착되는 솔리드 스테이트 드라이브의 데이터 제어 시스템 및 방법에 관한 것으로, 보다 상세하게는, 솔리드 스테이트 드라이브의 정보를 호스트 커널에 부착하여 데이터를 제어하는 드라이브의 데이터 제어 시스템 및 방법에 관한 것이다.
4차 산업 혁명에 따른 기술 환경의 변화로 인해서, 실시간으로 처리되는 대용량/고속의 데이터를 저장하기 위한 저장 장치 및 그 데이터를 효율적으로 활용하기 위한 데이터 운용 시스템의 중요성이 강조되고 있다.
4차 산업 혁명의 대표적인 기술로는 인공지능, 자율주행차, 가상현실, 사물 인터넷, 5세대 이동통신 등이 있다. 이러한 기술들은 실시간으로 입력되는 대규모의 데이터를 처리해야 한다는 공통점이 있으며, 해당 데이터는 데이터 센터에 저장되며 빅 데이터 기술을 이용하여 분석 및 재해석된다.
이처럼 실시간으로 입력되는 대규모의 데이터는 시간의 흐름에 따라 데이터가 계속적으로 변화하기 때문에, 데이터의 변화 흐름을 파악하고 분석하기 위해서는 다량의 데이터 샘플을 저장하고 재생하는 작업이 필요하다. 그리고 이러한 작업이 원활히 수행되기 위해서는 데이터 입출력 속도가 중요한 저장 장치 시스템이 필요하다.
이와 관련하여, 솔리드 스테이트 드라이브(SSD, Solid State Drive)는 집적회로를 통해 영구적으로 데이터를 보관할 수 있고, 물리적인 디스크 움직임이 없어 기존 하드 디스크 드라이브(HDD)에 비해 빠른 데이터 입출력이 가능하다. 그러나, 솔리드 스테이트 드라이브 내부의 집적회로는 데이터를 저장함에 있어 그 수명이 제한적이며, 이를 극복하기 위해 데이터 입출력 요청에 대한 최적화된 스케줄링을 내부 펌웨어를 통해 하고 있다. 이때, 솔리드 스테이트 드라이브는 펌웨어 구동을 위해 프로세서, 램 등과 같이 연산에 필요한 장치가 집적되어 있고, 그 성능 또한 증대되고 있다.
한편, 종래의 리눅스 커널은 파일시스템을 직접 정의하고 읽기 및 쓰기 요청만을 하위에 전달하였으며 솔리드 스테이트 드라이브 내 펌웨어는 그 요청에 대한 적절한 스케줄링만을 진행한다. 이에 따라, 리눅스 커널에는 데이터 제어 작업이 집중되는 단점이 존재한다.
본 발명이 해결하고자 하는 기술적 과제는 솔리드 스테이트 드라이브의 저장된 데이터의 정보를 호스트 커널에 부착하여 호스트 커널에 집중된 데이터 제어 작업을 분산시키는 호스트 커널에 부착되는 솔리드 스테이트 드라이브의 데이터 제어 시스템 및 방법을 제공하는 것이다.
본 발명의 일측면은, 데이터가 저장되며, 상기 데이터가 저장된 위치를 나타내도록 설정 정보를 생성하는 솔리드 스테이트 드라이브; 및 상기 설정 정보를 전달받아 저장하고, 상기 설정 정보에 기초하여 어플리케이션의 명령에 따른 읽기 요청과 쓰기 요청을 생성하는 호스트 커널;을 포함할 수 있다.
또한, 상기 솔리드 스테이트 드라이브는, 상기 데이터가 저장되는 저장부; 상기 데이터에 대한 상기 읽기 요청과 상기 쓰기 요청을 수행하는 데이터 제어부; 상기 읽기 요청과 상기 쓰기 요청이 수행되어 변경된 데이터에 대한 설정 정보를 생성하는 설정 제어부; 및 상기 설정 정보를 상기 호스트 커널에 전달하는 통신부;를 포함할 수 있다.
또한, 상기 호스트 커널은, 상기 솔리드 스테이트 드라이브로부터 상기 설정 정보를 전달받는 호스트 커널 통신부; 상기 설정 정보가 저장되는 호스트 커널 저장부; 및 상기 설정 정보를 분석하여 상기 솔리드 스테이트 드라이브에 저장된 데이터 중 상기 어플리케이션의 명령에 대응되는 데이터의 정보를 추출하고, 추출된 데이터에 대한 상기 읽기 요청과 상기 쓰기 요청을 생성하는 호스트 커널 제어부;를 포함할 수 있다.
또한, 상기 데이터 제어부는, 상기 설정 정보로부터 나타나는 데이터의 이용 상태에 기초하여 상기 읽기 요청과 상기 쓰기 요청의 스케줄링을 수행할 수 있다.
또한, 상기 데이터 제어부는, 상기 쓰기 요청에 따른 스케줄링을 수행하는 경우, 상기 솔리드 스테이트 드라이브에 마련되는 복수개의 메모리 소자가 순차적으로 이용되어 데이터를 저장하도록 스케줄링을 수행할 수 있다.
또한, 상기 설정 정보는, 블록의 크기, 총 블록의 개수, 블록 그룹의 개수, Inode의 개수, 각 그룹 내의 블록 및 Inode의 개수를 나타내는 슈퍼 블록; 및 블록의 이용 상태, 데이터가 저장되는 Inode의 주소 및 Inode의 이용 상태를 나타내는 그룹 디스크립터;를 포함할 수 있다.
본 발명의 다른 일측면은, 호스트 커널에 부착되는 솔리드 스테이트 드라이브의 데이터 제어 시스템에서의 데이터 제어 방법에 있어서, 솔리드 스테이트 드라이브에 데이터가 저장되는 단계; 솔리드 스테이트 드라이브가 상기 데이터가 저장된 위치를 나타내도록 설정 정보를 생성하는 단계; 호스트 커널이 상기 설정 정보를 전달받아 저장하는 단계; 호스트 커널이 상기 설정 정보에 기초하여 어플리케이션의 명령에 따른 읽기 요청과 쓰기 요청을 생성하는 단계; 및 솔리드 스테이트 드라이브가 상기 읽기 요청과 상기 쓰기 요청을 수행하는 단계;를 포함할 수 있다.
또한, 상기 솔리드 스테이트 드라이브는, 상기 데이터가 저장되는 저장부; 상기 데이터에 대한 상기 읽기 요청과 상기 쓰기 요청을 수행하는 데이터 제어부; 상기 읽기 요청과 상기 쓰기 요청이 수행되어 변경된 데이터에 대한 설정 정보를 생성하는 설정 제어부; 및 상기 설정 정보를 상기 호스트 커널에 전달하는 통신부;를 포함할 수 있다.
또한, 상기 호스트 커널은, 상기 솔리드 스테이트 드라이브로부터 상기 설정 정보를 전달받는 호스트 커널 통신부; 상기 설정 정보가 저장되는 호스트 커널 저장부; 및 상기 설정 정보를 분석하여 상기 솔리드 스테이트 드라이브에 저장된 데이터 중 상기 어플리케이션의 명령에 대응되는 데이터의 정보를 추출하고, 추출된 데이터에 대한 상기 읽기 요청과 상기 쓰기 요청을 생성하는 호스트 커널 제어부;를 포함할 수 있다.
또한, 상기 데이터 제어부는, 상기 설정 정보로부터 나타나는 데이터의 이용 상태에 기초하여 상기 읽기 요청과 상기 쓰기 요청의 스케줄링을 수행할 수 있다.
또한, 상기 데이터 제어부는, 상기 쓰기 요청에 따른 스케줄링을 수행하는 경우, 상기 솔리드 스테이트 드라이브에 마련되는 복수개의 메모리 소자가 순차적으로 이용되어 데이터를 저장하도록 스케줄링을 수행할 수 있다.
상술한 본 발명의 일측면에 따르면, 호스트 커널에 부착되는 솔리드 스테이트 드라이브의 데이터 제어 시스템 및 방법을 제공함으로써, 솔리드 스테이트 드라이브의 저장된 데이터의 정보를 호스트 커널에 부착하여 호스트 커널에 집중된 데이터 제어 작업을 분산시킬 수 있다.
도1은 본 발명의 일 실시예에 따른 호스트 커널에 부착되는 솔리드 스테이트 드라이브의 데이터 제어 시스템의 개략도이다.
도2는 도1의 솔리드 스테이트 드라이브의 제어블록도이다.
도3은 도1의 호스트 커널의 제어블록도이다.
도4는 도2의 데이터 제어부가 읽기 요청과 쓰기 요청을 수행하는 과정을 나타낸 블록도이다.
도5는 도2의 데이터 관리부가 설정 정보를 생성하는 과정을 나타낸 블록도이다.
도6은 본 발명의 일 실시예에 따른 데이터 제어 방법의 순서도이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예와 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.
이하, 도면들을 참조하여 본 발명의 바람직한 실시예들을 보다 상세하게 설명하기로 한다.
도1은 본 발명의 일 실시예에 따른 호스트 커널에 부착되는 솔리드 스테이트 드라이브의 데이터 제어 시스템의 개략도이다.
호스트 커널에 부착되는 솔리드 스테이트 드라이브의 데이터 제어 시스템(1)(이하, 데이터 제어 시스템)은 솔리드 스테이트 드라이브(100)에서 데이터가 저장된 위치를 나타내도록 생성되는 설정 정보에 기초하여, 호스트 커널(200)이 어플리케이션(300)의 명령에 따른 읽기 요청과 쓰기 요청을 생성하도록 마련될 수 있다.
이때, 솔리드 스테이트 드라이브(100)는 데이터가 저장될 수 있으며, 솔리드 스테이트 드라이브(100)는 데이터가 저장된 위치를 나타내도록 설정 정보를 생성할 수 있다.
여기에서, 설정 정보는 솔리드 스테이트 드라이브(100)에 저장되는 데이터의 형식, 크기, 위치 등을 포함하도록 마련될 수 있다.
여기에서, 데이터의 형식은 데이터의 종류, 데이터가 저장되는 형식 등을 나타내도록 설정될 수 있다. 예를 들어, 데이터의 형식은 디렉토리, 파일, 파일의 이용 상태를 나타내는 데이터 등을 의미할 수 있고, 데이터의 크기는 데이터가 저장되는 크기 단위, 저장된 데이터의 개수 등을 의미할 수 있으며, 데이터의 위치는 솔리드 스테이트 드라이브(100) 내에서 데이터가 저장된 위치 등을 의미할 수 있다.
일 실시예에서, 이와 같은 설정 정보는 리눅스 등에서 이용되는 이차 확장 파일 시스템(Ext2, Second Extended File System)의 슈퍼 블록(Super Block) 및 그룹 디스크립터(Group Descriptor)를 의미할 수 있다.
여기에서, 슈퍼 블록은 이차 확장 파일 시스템에서의 설정을 나타내는 정보가 저장되는 영역을 의미할 수 있으며, 슈퍼 블록은 블록의 크기, 총 블록의 개수, 블록 그룹의 개수, Inode의 개수, 각 그룹 내의 블록 및 Inode의 개수 등의 정보를 포함할 수 있다.
또한, 그룹 디스크립터는 이차 확장 파일 시스템에 생성된 모든 블록 그룹에 대한 정보가 저장되는 영역을 의미할 수 있으며, 그룹 디스크립터는 블록의 이용 상태, 파일 또는 폴더가 저장되는 Inode의 주소, Inode의 이용 상태 등의 정보를 포함할 수 있다.
이와 같이, 설정 정보는 솔리드 스테이트 드라이브(100)가 구동되는 운영 체제에 적합한 형상으로 설정될 수 있다.
한편, 솔리드 스테이트 드라이브(100)는 SSD(Solid State Drive) 장치를 의미할 수 있으며, 이때, 솔리드 스테이트 드라이브(100)는 NVMe(Non-Volatile Memory express) 형식의 SSD 장치를 의미할 수 있다.
이에 따라, 솔리드 스테이트 드라이브(100)는 PCIe(Peripheral Component Interconnect Express) 인터페이스를 통해 운영체제(OS, Operation System)와의 통신이 수행될 수 있다.
이러한 경우에, 솔리드 스테이트 드라이브(100)는 NVMe 컨트롤러를 통해 데이터의 읽기, 쓰기 등의 제어를 수행할 수 있다.
한편, 호스트 커널(200)은 솔리드 스테이트 드라이브(100)에 데이터에 대한 읽기 요청과 쓰기 요청을 전달할 수 있다.
이와 같은, 호스트 커널(200)은 운영 체제에 따라 설정되어, 운영 체제에 설치된 어플리케이션(300)의 명령에 따른 제어 요청을 컴퓨팅 시스템에 연결된 장치들에 전달하도록 마련될 수 있다.
이에 따라, 호스트 커널(200)은 어플리케이션(300)의 명령에 따른 읽기 요청과 쓰기 요청을 솔리드 스테이트 드라이브(100)에 전달할 수 있다.
이때, 호스트 커널(200)은 솔리드 스테이트 드라이브(100)로부터 설정 정보를 전달받아 저장할 수 있으며, 이에 따라, 호스트 커널(200)은 설정 정보에 기초하여 읽기 요청과 쓰기 요청을 생성할 수 있다.
이하에서는, 본 발명의 일 실시예에 따른 데이터 제어 시스템의 솔리드 스테이트 드라이브(100)와 호스트 커널(200)에 대해 상세히 설명하도록 한다.
도2는 도1의 솔리드 스테이트 드라이브의 제어블록도이다.
솔리드 스테이트 드라이브(100)는 저장부(110), 데이터 제어부(120), 데이터 관리부(130) 및 통신부(140)를 포함할 수 있다.
또한, 솔리드 스테이트 드라이브(100)는 도2에 도시된 구성요소보다 많은 구성요소에 의해 구현될 수 있고, 그보다 적은 구성요소에 의해 구현될 수 있다. 또는, 솔리드 스테이트 드라이브(100)는 솔리드 스테이트 드라이브(100)에 마련되는 적어도 두 개의 구성요소가 하나의 구성요소로 통합되어 하나의 구성요소가 복합적인 기능을 수행할 수도 있다. 이하, 상술한 구성요소들에 대해 구체적으로 설명하기로 한다.
저장부(110)는 데이터가 저장될 수 있다. 일 실시예에서, 저장부(110)는 SSD에 마련되는 Flash Memory등을 의미할 수 있다.
데이터 제어부(120)는 데이터에 대한 읽기 요청과 쓰기 요청을 수행할 수 있다. 이때, 데이터 제어부(120)는 설정 정보에 기초하여 호스트 커널(200)로부터 전달된 임의의 데이터에 대한 읽기 요청과 쓰기 요청을 수행할 수 있다.
또한, 데이터 제어부(120)는 설정 정보에 기초하여 데이터가 저장되지 않은 빈 영역에 호스트 커널(200)로부터 전달된 임의의 데이터에 대한 쓰기 요청을 수행할 수 있다.
이때, 데이터 제어부(120)는 설정 정보로부터 나타나는 데이터의 이용 상태에 기초하여 읽기 요청과 쓰기 요청의 스케줄링을 수행할 수 있다.
예를 들어, 데이터 제어부(120)는 설정 정보로부터 임의의 데이터가 이용 중인 것으로 나타나는 경우, 해당 데이터에 대한 읽기 요청과 쓰기 요청의 처리를 유예할 수 있다.
또한, 데이터 제어부(120)는 설정 정보로부터 임의의 데이터가 이용 가능한 상태로 나타나는 경우, 해당 데이터에 대한 읽기 요청과 쓰기 요청을 우선 처리할 수 있다.
이에 따라, 데이터 제어부(120)는 호스트 커널(200)로부터 복수의 데이터에 대한 읽기 요청과 쓰기 요청이 전달되는 경우에 각 데이터의 이용 상태에 따라 읽기 요청과 쓰기 요청의 처리 순위를 설정할 수 있다.
이와 관련하여, 데이터 제어부(120)는 쓰기 요청에 따른 스케줄링을 수행하는 경우, 솔리드 스테이트 드라이브(100)에 마련되는 복수개의 메모리 소자가 순차적으로 이용되어 데이터를 저장하도록 스케줄링을 수행할 수 있다.
이를 위해, 데이터 제어부(120)는 각 메모리 소자에 설정된 복수개의 플레인(Plane)에 데이터를 분할하여 저장할 수 있다.
여기에서, 플레인은 데이터가 저장되는 블록이 복수개 마련되는 것으로 이해할 수 있으며, 이와 같은, 플레인은 솔리드 스테이트 드라이브(100)의 메모리 소자에 각각 복수개가 설정될 수 있다.
이에 따라, 데이터 제어부(120)는 서로 다른 플레인에 데이터를 분할하여 저장할 수 있으며, 이를 통해, 솔리드 스테이트 드라이브(100)는 솔리드 스테이트 드라이브(100) 내부의 집적 회로 또는 여러 소자들의 수명을 균형적으로 소모할 수 있다.
또한, 데이터 제어부(120)는 서로 다른 플레인에 데이터를 분할시켜 저장함으로써, 읽기 요청에 따라 서로 다른 플레인으로부터 데이터를 불러올 수 있다.
이는, 데이터 제어부(120)가 SSD의 가비지 컬렉션(Garbage Collection) 기능에 기초하여 데이터를 읽거나, 쓰는 작업을 수행하는 것으로 이해할 수도 있다.
여기에서, 가비지 컬렉션은 각 블록에 설정된 페이지에 데이터를 기록하는 횟수를 카운트하는 기능으로 이해할 수 있다.
한편, 일 실시예에서, 데이터 제어부(120)는 SSD에 마련되는 chipfs(chip file system) 등을 의미할 수 있다.
데이터 관리부(130)는 읽기 요청과 쓰기 요청이 수행되어 변경된 데이터에 대한 설정 정보를 생성할 수 있다.
일 실시예에서, 데이터 관리부(130)는 SSD에 마련되는 Micro File System을 의미할 수 있다.
이에 따라, 통신부(140)는 설정 정보를 호스트 커널(200)에 전달할 수 있으며, 일 실시예에서, 통신부(140)는 NVMe 컨트롤러의 Micro Virtual File System Interface를 의미할 수 있다.
도3은 도1의 호스트 커널의 제어블록도이다.
호스트 커널(200)은 호스트 커널 통신부(210), 호스트 커널 저장부(220) 및 호스트 커널 제어부(230)를 포함할 수 있다.
또한, 호스트 커널(200)은 도3에 도시된 구성요소보다 많은 구성요소에 의해 구현될 수 있고, 그보다 적은 구성요소에 의해 구현될 수 있다. 또는, 호스트 커널(200)은 호스트 커널(200)에 마련되는 적어도 두 개의 구성요소가 하나의 구성요소로 통합되어 하나의 구성요소가 복합적인 기능을 수행할 수도 있다. 이하, 상술한 구성요소들에 대해 구체적으로 설명하기로 한다.
호스트 커널 통신부(210)는 솔리드 스테이트 드라이브(100)로부터 설정 정보를 전달받을 수 있으며, 호스트 커널 통신부(210)는 솔리드 스테이트 드라이브(100)에 읽기 요청과 쓰기 요청을 전달할 수 있다.
이때, 호스트 커널 통신부(210)는 컴퓨팅 시스템의 가동이 시작되는 경우에 솔리드 스테이트 드라이브(100)로부터 설정 정보를 전달받도록 마련될 수 있다.
또한, 호스트 커널 통신부(210)는 컴퓨팅 시스템이 가동 중인 상태에서, 읽기 요청과 쓰기 요청이 솔리드 스테이트 드라이브(100)에 전달되는 경우에 설정 정보를 전달받도록 마련될 수 있으며, 또는, 호스트 커널 통신부(210)는 미리 설정된 시간 주기마다 솔리드 스테이트 드라이브(100)로부터 설정 정보를 전달받도록 마련될 수도 있다.
일 실시예에서, 호스트 커널 통신부(210)는 리눅스 커널(Linux Kernal)의 Micro File System Interface를 의미할 수 있다.
호스트 커널 저장부(220)는 설정 정보가 저장될 수 있다. 일 실시예에서, 호스트 커널 저장부(220)는 리눅스 커널의 Host Virtual File System을 의미할 수 있다.
호스트 커널 제어부(230)는 설정 정보를 분석하여 솔리드 스테이트 드라이브(100)에 저장된 데이터 중 어플리케이션(300)의 명령에 대응되는 데이터의 정보를 추출할 수 있고, 호스트 커널 제어부(230)는 추출된 데이터에 대한 읽기 요청과 쓰기 요청을 생성할 수 있다.
이에 따라, 호스트 커널 제어부(230)는 어플리케이션(300)의 명령에 따라 읽기 요청과 쓰기 요청이 요구되는 데이터의 위치 등을 설정 정보로부터 추출할 수 있고, 또한, 호스트 커널 제어부(230)는 어플리케이션(300)의 명령에 따라 임의의 데이터에 대한 쓰기 요청이 요구되는 경우에는 설정 정보로부터 데이터가 저장되어 있지 않은 빈 공간의 위치를 추출할 수도 있다.
이와 같이, 호스트 커널(200)은 어플리케이션(300)의 명령에 따른 읽기 요청과 쓰기 요청만을 솔리드 스테이트 드라이브(100)에 전달할 수 있으며, 이에 따라, 호스트 커널(200)에 집중화된 작업이 솔리드 스테이트 드라이브(100)에 일부 할당될 수 있다.
일 실시예에서, 호스트 커널 제어부(230)는 리눅스 커널의 Host Virtual File System을 의미할 수 있다.
도4는 도2의 데이터 제어부가 읽기 요청과 쓰기 요청을 수행하는 과정을 나타낸 블록도이다.
도4를 참조하면, 호스트 커널 저장부(220)는 설정 정보가 저장될 수 있으며, 이에 따라, 호스트 커널 제어부(230)는 설정 정보를 분석하여 솔리드 스테이트 드라이브(100)에 저장된 데이터 중 어플리케이션(300)의 명령에 대응되는 데이터의 정보를 추출할 수 있고, 호스트 커널 제어부(230)는 추출된 데이터에 대한 읽기 요청과 쓰기 요청을 생성할 수 있다.
이때, 호스트 커널 통신부(210)는 솔리드 스테이트 드라이브(100)에 읽기 요청과 쓰기 요청을 전달할 수 있으며, 통신부(140)는 호스트 커널(200)로부터 읽기 요청과 쓰기 요청을 전달받을 수 있다.
이에 따라, 데이터 제어부(120)는 데이터에 대한 읽기 요청과 쓰기 요청을 수행할 수 있으며, 이를 위해, 저장부(110)는 데이터가 저장될 수 있다.
도5는 도2의 데이터 관리부가 설정 정보를 생성하는 과정을 나타낸 블록도이다.
도5를 참조하면, 저장부(110)는 데이터가 저장될 수 있으며, 이때, 데이터 관리부(130)는 읽기 요청과 쓰기 요청이 수행되어 변경된 데이터에 대한 설정 정보를 생성할 수 있다.
이에 따라, 통신부(140)는 설정 정보를 호스트 커널(200)에 전달할 수 있으며, 호스트 커널 통신부(210)는 솔리드 스테이트 드라이브(100)로부터 설정 정보를 전달받을 수 있다.
이를 통해, 호스트 커널 저장부(220)는 설정 정보가 저장될 수 있다.
도6은 본 발명의 일 실시예에 따른 데이터 제어 방법의 순서도이다.
본 발명의 일 실시예에 따른 데이터 제어 방법은 도 1에 도시된 데이터 제어 시스템(1)과 실질적으로 동일한 구성 상에서 진행되므로, 도 1의 데이터 제어 시스템(1)과 동일한 구성요소에 대해 동일한 도면 부호를 부여하고, 반복되는 설명은 생략하기로 한다.
데이터 제어 방법은 솔리드 스테이트 드라이브에 데이터가 저장되는 단계(600), 데이터가 저장된 위치를 나타내도록 설정 정보를 생성하는 단계(610), 호스트 커널이 설정 정보를 전달받아 저장하는 단계(620), 설정 정보에 기초하여 어플리케이션의 명령에 따른 읽기 요청과 쓰기 요청을 생성하는 단계(630) 및 솔리드 스테이트 드라이브가 읽기 요청과 쓰기 요청을 수행하는 단계(640)를 포함할 수 있다.
솔리드 스테이트 드라이브에 데이터가 저장되는 단계(600)는 솔리드 스테이트 드라이브(100)에 데이터가 저장되는 단계일 수 있다.
데이터가 저장된 위치를 나타내도록 설정 정보를 생성하는 단계(610)는 솔리드 스테이트 드라이브(100)가 데이터가 저장된 위치를 나타내도록 설정 정보를 생성하는 단계일 수 있다.
호스트 커널이 설정 정보를 전달받아 저장하는 단계(620)는 호스트 커널(200)이 설정 정보를 전달받아 저장하는 단계일 수 있다.
설정 정보에 기초하여 어플리케이션의 명령에 따른 읽기 요청과 쓰기 요청을 생성하는 단계(630)는 호스트 커널(200)이 설정 정보에 기초하여 어플리케이션(300)의 명령에 따른 읽기 요청과 쓰기 요청을 생성하는 단계일 수 있다.
솔리드 스테이트 드라이브가 읽기 요청과 쓰기 요청을 수행하는 단계(640)는 솔리드 스테이트 드라이브(100)가 읽기 요청과 쓰기 요청을 수행하는 단계일 수 있다.
이와 같은, 데이터 제어 방법은 어플리케이션으로 구현되거나 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다.
상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거니와 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다.
컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD 와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다.
프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상에서는 실시예들을 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
1: 데이터 제어 시스템
100: 솔리드 스테이트 드라이브
200: 호스트 커널
300: 어플리케이션

Claims (11)

  1. 데이터가 저장되며, 상기 데이터가 저장된 위치를 나타내도록 설정 정보를 생성하는 솔리드 스테이트 드라이브; 및
    상기 설정 정보를 전달받아 저장하고, 상기 설정 정보에 기초하여 어플리케이션의 명령에 따른 읽기 요청과 쓰기 요청을 생성하는 호스트 커널;을 포함하는, 호스트 커널에 부착되는 솔리드 스테이트 드라이브의 데이터 제어 시스템.
  2. 제1항에 있어서, 상기 솔리드 스테이트 드라이브는,
    상기 데이터가 저장되는 저장부;
    상기 데이터에 대한 상기 읽기 요청과 상기 쓰기 요청을 수행하는 데이터 제어부;
    상기 읽기 요청과 상기 쓰기 요청이 수행되어 변경된 데이터에 대한 설정 정보를 생성하는 설정 제어부; 및
    상기 설정 정보를 상기 호스트 커널에 전달하는 통신부;를 포함하는, 호스트 커널에 부착되는 솔리드 스테이트 드라이브의 데이터 제어 시스템.
  3. 제1항에 있어서, 상기 호스트 커널은,
    상기 솔리드 스테이트 드라이브로부터 상기 설정 정보를 전달받는 호스트 커널 통신부;
    상기 설정 정보가 저장되는 호스트 커널 저장부; 및
    상기 설정 정보를 분석하여 상기 솔리드 스테이트 드라이브에 저장된 데이터 중 상기 어플리케이션의 명령에 대응되는 데이터의 정보를 추출하고, 추출된 데이터에 대한 상기 읽기 요청과 상기 쓰기 요청을 생성하는 호스트 커널 제어부;를 포함하는, 호스트 커널에 부착되는 솔리드 스테이트 드라이브의 데이터 제어 시스템.
  4. 제1항에 있어서, 상기 데이터 제어부는,
    상기 설정 정보로부터 나타나는 데이터의 이용 상태에 기초하여 상기 읽기 요청과 상기 쓰기 요청의 스케줄링을 수행하는, 호스트 커널에 부착되는 솔리드 스테이트 드라이브의 데이터 제어 시스템.
  5. 제4항에 있어서, 상기 데이터 제어부는,
    상기 쓰기 요청에 따른 스케줄링을 수행하는 경우, 상기 솔리드 스테이트 드라이브에 마련되는 복수개의 메모리 소자가 순차적으로 이용되어 데이터를 저장하도록 스케줄링을 수행하는, 호스트 커널에 부착되는 솔리드 스테이트 드라이브의 데이터 제어 시스템.
  6. 제1항에 있어서, 상기 설정 정보는,
    블록의 크기, 총 블록의 개수, 블록 그룹의 개수, Inode의 개수, 각 그룹 내의 블록 및 Inode의 개수를 나타내는 슈퍼 블록; 및
    블록의 이용 상태, 데이터가 저장되는 Inode의 주소 및 Inode의 이용 상태를 나타내는 그룹 디스크립터;를 포함하는, 호스트 커널에 부착되는 솔리드 스테이트 드라이브의 데이터 제어 시스템.
  7. 호스트 커널에 부착되는 솔리드 스테이트 드라이브의 데이터 제어 시스템에서의 데이터 제어 방법에 있어서,
    솔리드 스테이트 드라이브에 데이터가 저장되는 단계;
    솔리드 스테이트 드라이브가 상기 데이터가 저장된 위치를 나타내도록 설정 정보를 생성하는 단계;
    호스트 커널이 상기 설정 정보를 전달받아 저장하는 단계;
    호스트 커널이 상기 설정 정보에 기초하여 어플리케이션의 명령에 따른 읽기 요청과 쓰기 요청을 생성하는 단계; 및
    솔리드 스테이트 드라이브가 상기 읽기 요청과 상기 쓰기 요청을 수행하는 단계;를 포함하는, 데이터 제어 방법.
  8. 제7항에 있어서, 상기 솔리드 스테이트 드라이브는,
    상기 데이터가 저장되는 저장부;
    상기 데이터에 대한 상기 읽기 요청과 상기 쓰기 요청을 수행하는 데이터 제어부;
    상기 읽기 요청과 상기 쓰기 요청이 수행되어 변경된 데이터에 대한 설정 정보를 생성하는 설정 제어부; 및
    상기 설정 정보를 상기 호스트 커널에 전달하는 통신부;를 포함하는, 데이터 제어 방법.
  9. 제7항에 있어서, 상기 호스트 커널은,
    상기 솔리드 스테이트 드라이브로부터 상기 설정 정보를 전달받는 호스트 커널 통신부;
    상기 설정 정보가 저장되는 호스트 커널 저장부; 및
    상기 설정 정보를 분석하여 상기 솔리드 스테이트 드라이브에 저장된 데이터 중 상기 어플리케이션의 명령에 대응되는 데이터의 정보를 추출하고, 추출된 데이터에 대한 상기 읽기 요청과 상기 쓰기 요청을 생성하는 호스트 커널 제어부;를 포함하는, 데이터 제어 방법.
  10. 제7항에 있어서, 상기 데이터 제어부는,
    상기 설정 정보로부터 나타나는 데이터의 이용 상태에 기초하여 상기 읽기 요청과 상기 쓰기 요청의 스케줄링을 수행하는, 데이터 제어 방법.
  11. 제10항에 있어서, 상기 데이터 제어부는,
    상기 쓰기 요청에 따른 스케줄링을 수행하는 경우, 상기 솔리드 스테이트 드라이브에 마련되는 복수개의 메모리 소자가 순차적으로 이용되어 데이터를 저장하도록 스케줄링을 수행하는, 데이터 제어 방법.

KR1020210088058A 2021-07-05 2021-07-05 호스트 커널에 부착되는 솔리드 스테이트 드라이브의 데이터 제어 시스템 및 방법 KR20230007161A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210088058A KR20230007161A (ko) 2021-07-05 2021-07-05 호스트 커널에 부착되는 솔리드 스테이트 드라이브의 데이터 제어 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210088058A KR20230007161A (ko) 2021-07-05 2021-07-05 호스트 커널에 부착되는 솔리드 스테이트 드라이브의 데이터 제어 시스템 및 방법

Publications (1)

Publication Number Publication Date
KR20230007161A true KR20230007161A (ko) 2023-01-12

Family

ID=84923788

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210088058A KR20230007161A (ko) 2021-07-05 2021-07-05 호스트 커널에 부착되는 솔리드 스테이트 드라이브의 데이터 제어 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR20230007161A (ko)

Similar Documents

Publication Publication Date Title
US11029853B2 (en) Dynamic segment allocation for write requests by a storage system
JP5384576B2 (ja) 複数の異種のソリッドステート・ストレージ・ロケーションの選択的利用
CN102171649B (zh) 用于用单个命令对多个不连续地址范围的传送进行排队的方法和系统
JP5276218B2 (ja) リアルタイムでlunをファイルに、またはファイルをlunに変換すること
US9471239B2 (en) Memory power management and data consolidation
JP2009288979A (ja) 決定装置、データベース装置、プログラムおよび決定方法
CN103838676B (zh) 数据存储系统、数据存储方法及pcm桥
JP5104855B2 (ja) 負荷分散プログラム、負荷分散方法、及びストレージ管理装置
US8732427B2 (en) Systems and methods for collapsing a derivative version of a primary storage volume
JP2009087282A (ja) 並列計算システムおよび並列計算方法
CN103927215A (zh) 基于内存盘与SSD硬盘的kvm虚拟机调度的优化方法及系统
CN205986931U (zh) 一种基于NVMe SSD的交换机
CN102609486A (zh) 一种Linux文件系统的数据读写加速方法
CN114489475A (zh) 分布式存储系统及其数据存储方法
WO2023193814A1 (zh) 融合系统的数据处理方法、装置、设备和系统
KR20230007161A (ko) 호스트 커널에 부착되는 솔리드 스테이트 드라이브의 데이터 제어 시스템 및 방법
JP2007249728A (ja) ディスクアレイ装置
JP2020177274A (ja) ストレージ装置、ストレージシステムおよびプログラム
US10860577B2 (en) Search processing system and method for processing search requests involving data transfer amount unknown to host
CN104424124A (zh) 内存装置、电子设备和用于控制内存装置的方法
EP2605120A2 (en) Allocation device, allocation method and storage device
US20240053914A1 (en) Systems and methods for managing coresident data for containers
JP6969656B2 (ja) 情報処理システム、方法、及びプログラム
TWI802689B (zh) 資料處理系統、資料處理方法、及程式
CN110968537B (zh) 一种基于pcie ssd的fpga搜索匹配方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application