KR20220125895A - Ssd 멀티스트림 운용을 위한 스트림 분할 방법 - Google Patents

Ssd 멀티스트림 운용을 위한 스트림 분할 방법 Download PDF

Info

Publication number
KR20220125895A
KR20220125895A KR1020210029581A KR20210029581A KR20220125895A KR 20220125895 A KR20220125895 A KR 20220125895A KR 1020210029581 A KR1020210029581 A KR 1020210029581A KR 20210029581 A KR20210029581 A KR 20210029581A KR 20220125895 A KR20220125895 A KR 20220125895A
Authority
KR
South Korea
Prior art keywords
data
write
stream
host machine
synchronous
Prior art date
Application number
KR1020210029581A
Other languages
English (en)
Other versions
KR102491809B1 (ko
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 KR1020210029581A priority Critical patent/KR102491809B1/ko
Publication of KR20220125895A publication Critical patent/KR20220125895A/ko
Application granted granted Critical
Publication of KR102491809B1 publication Critical patent/KR102491809B1/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/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1847File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
    • 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/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

호스트머신이 데이터 저장장치에 기입된 데이터의 스트림을 분할하는 방법은, a) 호스트머신이 파일 시스템 단계에서 구분된 데이터 타입과 어플리케이션 단계의 사용자데이터인지 확인하는 단계;
b) 호스트머신이 상기 파일시스템단계의 데이터를 파일시스템의 변경사항을 기록하는 저널데이터, 파일시스템의 운용과정에서 데이터관리에 사용되는 메타데이터 및 그 외의 파일시스템 단계의 데이터인 기타데이터로 구분하여 각각 고유 식별자를 부여하는 단계; 및
c) 호스트머신이 상기 사용자 데이터를 기입방식에 따라, 상기 호스트머신의 캐시 메모리와 상기 저장장치 내 같은 파일의 데이터 간의 일치성을 보장하지 않는 비동기식 기입데이터, 상기 호스트머신의 캐시 메모리와 저장장치 내 같은 파일의 데이터를 일치시키는 동기식 데이터 중, 기존 파일이 없이 생성되는 동기식 생성 기입 데이터, 및 기존에 존재하던 파일의 데이터를 보존한 상태에서 해당 파일의 끝부분에 이어서 데이터를 추가하는 동기식 추가 기입데이터; 로 구분하여 각각 고유한 식별자를 부여하는 단계; 를 포함하는 것을 특징으로 한다.

Description

SSD 멀티스트림 운용을 위한 스트림 분할 방법{METHOD OF STREAM PARTITIONING FOR SSD MULTI-STREAM MANAGEMENT}
본 발명은 본 발명은 솔리드 스테이트 드라이브(Solid State Drive: SSD) 컨트롤러의 기술 중 멀티스트림(multi-stream)에 관한 것으로서, 멀티스트림 운용을 위한 스트림 분할 방법에 관한 것이다.
멀티스트림(multi-stream)은 수명이 비슷할 것으로 예상되는 데이터를 스트림이라 불리는 동일한 소거 블록(erase block)에 저장한다, 즉 멀티스트림은 다양한 데이터 수명을 지닌 데이터를 스트림으로 나누어 물리적으로 구분하여 위치시킴으로써 가비지 컬렉션 병목을 해소하는데 기여할 수 있다. 결과적으로 멀티스트림은 솔리드 스테이트 드라이브(Solid State Drive: 이하 'SSD' 라 함,)의 가비지 컬렉션과정에서 발생하는 유효 페이지의 복사량을 감소시키는 SSD 컨트롤러 기술이다.
멀티스트림은 SCSI/SAS 및 비휘발성 메모리 익스프레스 (Non-Volatile Memory Express: NVMe) 표준화 기구에서 표준화되었으며, 산업용 SSD 제조업체들에 의해 구현되었다.
멀티스트림 방식에서 SSD 내 데이터가 기입(write)될 블록을 결정하는 스트림 식별자는 호스트 시스템에서 제공하는 보조정보를 바탕으로 정해지며, 해당 보조정보는 운영체제 또는 파일 시스템부터 특정 어플리케이션(application)에 이르기까지 데이터를 구분할 수 있는 어떠한 정보도 포함될 수 있다.
멀티스트림 방식의 효과는 같은 스트림 식별자를 부여받은 데이터의 수명이 유사한 정도에 크게 영향을 받기 때문에, 비슷한 수명의 데이터를 그룹화할 수 있는 분류기준 확립이 필요하다.
현재까지 제안된 스트림 식별자 배정 알고리즘의 한계는, 호스트 시스템에서 스트림 식별자를 배정하는 과정에서 참조하는 보조정보가 어플리케이션 단계에서 생성되는 경우, 데이터의 수명을 예측함에 있어서 알고리즘이 특정 어플리케이션에 제한적으로 사용됨으로써, 보편성이 감소하는 것이다. 이와 반대로, 보조정보가 운영체제로부터 추출된 보편적 정보인 경우에는 데이터 수명 예측의 정확도가 감소하는 한계점을 가진다. 따라서 호스트시스템이 운영체제 단계에서 추출 가능한 보편적 정보를 이용하여, 비슷한 수명의 데이터를 효과적으로 그룹화하는 분류방법에 대한 기술이 필요하다.
호스트시스템이 운영체제 단계의 동작을 결정하는 파일 시스템 중 하나인 저널링 파일 시스템(journaling file system)은 파일 시스템에 변경사항을 반영(commit)하기 전에 저널이라고 불리는 SSD의 지정된 영역에 파일 시스템상의 변경사항 데이터를 기록한다. 또한, 파일 시스템 운용과정에서 데이터를 효과적으로 관리하기 위해 여러 종류의 메타데이터(metadata)가 생성된다. 전술한 두 가지 데이터는 SSD에 기입됨에 있어 독특한 특징을 보이며, 이는 해당 데이터의 수명에 영향을 준다.
본 발명에 대한 배경기술은 대한민국 등록특허공보 10-2147905호(B1)에 개시된 바 있다.
대한민국 등록특허공보 10-2147905호(B1) (어드레스 기반의 멀티-스트림 스토리지 장치 액세스)
본 발명은 호스트머신이 운영체제 단계에서 추출된 정보를 기반으로 유사한 수명의 데이터를 효과적으로 그룹화하도록 데이터를 분류하여 각기 다른 스트림 식별자(stream identifier)를 배정함으로써 가비지 컬렉션(garbage collection)에 의한 유효 페이지 복사량을 최소화하는 스트림 분할방법을 제공하는 것이다.
본 발명의 또 다른 기술적 과제는 호스트머신이 운영체제 단계로부터 데이터 타입 분류 정보와 파일의 동기식 기입 여부 및 추가 기입 여부 정보를 추출하고, 이를 기반으로 SSD에 기입될 데이터에 스트림 식별자를 부여하는 스트림 분할방법을 제공하는 것이다.
본 발명의 목적은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 명확하게 이해될 수 있을 것이다.
본 발명의 일 측면에 따르면, 호스트머신이 데이터 저장장치에 기입된 데이터의 스트림을 분할하는 방법은, a) 호스트머신이 파일 시스템 단계에서 구분된 데이터 타입과 어플리케이션 단계의 사용자데이터인지 확인하는 단계;
b) 호스트머신이 상기 파일시스템단계의 데이터를 파일시스템의 변경사항을 기록하는 저널데이터, 파일시스템의 운용과정에서 데이터관리에 사용되는 메타데이터 및 그 외의 파일시스템 단계의 데이터인 기타데이터로 구분하여 각각 고유 식별자를 부여하는 단계; 및 c) 호스트머신이 상기 사용자 데이터를 기입방식에 따라, 상기 호스트머신의 캐시 메모리와 상기 저장장치 내 같은 파일의 데이터 간의 일치성을 보장하지 않는 비동기식 기입데이터, 상기 호스트머신의 캐시 메모리와 저장장치 내 같은 파일의 데이터를 일치시키는 동기식 데이터 중, 기존 파일이 없이 생성되는 동기식 생성 기입 데이터, 및 기존에 존재하던 파일의 데이터를 보존한 상태에서 해당 파일의 끝 부분에 이어서 데이터를 추가하는 동기식 추가 기입데이터; 로 구분하여 각각 고유한 식별자를 부여하는 단계; 를 포함하는 것을 특징으로 한다.
또한, 상기 호스트머신이 상기 동기식 추가기입데이터에 대한 분할방법은, (a) 호스트 머신이 기입하는 파일의 기입 시간 간격 평균을 산출하고 데이터의 크기를 수집하는 단계; (b) 상기 산출한 값이 속한 시간 범위에 대응하는 추가기입 스트림에 스트림 식별자를 배정하는 단계; 및 (c) 특정시간 범위를 추가기입 스트림에 분배하는 단계; 를 포함하는 것을 특징으로 한다.
또한, 상기 (a) 단계에서 기입 시간 간격 평균은,
(a-1) 호스트머신이 특정량의 동기식 추가 기입 시간 간격인 최근 추가 인터벌 표본을 큐 형태로 각각 축적하는 단계;
(a-2) 호스트머신이 상기 최근 추가 인터벌 표본의 평균과 표준편차를 계산하고 큐에서 사용한 최근 추가 인터벌 표본을 삭제하는 단계; 및
(a-3) 호스트머신이 상기 (b)과정에서 구한 평균과 표준편차를 가지는 정규분포로부터 경계값을 설정하여 시간 범위를 분할하는 단계; 를 포함하는 것을 특징으로 한다.
또한, 상기 (b)단계에서, 상기 추가기입 스트림에 시간 범위가 부여된 적이 없는 경우에 해당하는 동기식 추가기입 데이터는 모두 같은 스트림 식별자를 부여하는 것을 특징으로 한다.
또한, 상기 (c) 단계에서, 상기 추가기입 스트림에 특정 시간 범위를 분배하기 위해 동기식 추가기입 명령 이후, 기입 명령된 파일의 가장 최근 두 동기식 기입 시간 간격을 계산하는 단계: 를 포함하는 것을 특징으로 한다.
또한, 상기 (c) 단계에서, 상기 추가기입 스트림에 시간 범위가 부여된 적이 없는 경우, 동기식 추가기입 데이터의 누적량을 산출하고, 상기 산출된 동기식 추가기입 데이터의 누적량이 “추가기입 스트림 수 × 한 블록의 크기” 이상이 될 때 각 추가기입 스트림에 시간 범위가 분배되는 것을 특징으로 한다.
또한, 상기 (c) 단계에서, 상기 추가기입 스트림에 시간 범위가 부여된 적이 있는 경우에는, 동기식 추가기입 데이터의 누적량을 산출하고, 상기 산출된 동기식 추가기입 데이터의 누적량이 '(추가기입 스트림 )2 × 한 블록의 크기' 이상이 될 때 추가기입 스트림에 시간 범위가 분배되는 것을 특징으로 한다.
또한, 상기 (c) 단계에서 상기 호스트머신이 추가기입 스트림에 시간 범위를 분배하는 방법은,
(d-1) 상기 동기식 기입 시간 사이 간격 평균과 표준편차를 산출하는 단계;
(d-2) 상기 산출된 동기식 기입 시간 사이 간격 평균과 표준편차를 가지는 정규분포로부터 누적확률과 확률변수를 산출하는 단계;
(d-3) 상기 정규분포에 대하여, 분배할 시간 영역에서 누적확률이 각각 N/추가기입 스트림 수(N은 추가기입 스트림 수 이하의 모든 자연수)가 되는 확률변수 값들을 경계값으로 하여 시간 영역을 겹치지 않게 분할하는 단계; 및
(d-4) 상기 경계값에 의해 분할된 시간 영역을 각 추가기입 스트림에 배정하는 단계; 를 포함하는 것을 특징으로 한다.
또한, 상기 (d-3) 단계에서, 상기 경계값에 음수의 수가 존재할 경우, 음수인 경계값의 개수를 산출한 후, 양의 경계값 중 가장 작은 값을 음수인 경계값의 개수+1등분 하는 값들로 음수의 경계값들을 양수로 대체하는 단계; 를 더 포함하는 것을 특징으로 한다.
또한, 상기 동기식 추가 기입데이터은 총 동기식 기입횟수, 가장 최근 동기식 기입시간, 현재 동기식 기입시간 및 가장 최근 계산된 추가인터벌 평균이 기입되는 것을 특징으로 한다.
또한, 상기 동기식 추가 기입데이터은 총 동기식 기입횟수, 가장 최근 동기식 기입시간, 현재 동기식 기입시간 및 가장 최근 계산된 추가인터벌 평균이 기입되는 것을 특징으로 한다.
또한, 상기 추가인터벌 평균은 다음 식에 의해 산출되는 것을 특징으로 한다.
Figure pat00001
여기서 N은 총 동기식 기입횟수, Tr는 가장 최근 동기식 기입시간,Tc는 현재 동기식 기입시간, Ir은 가장 최근 계산된 추가 인터벌 평균을 의미하며, I는 식에 의해 계산된 추가인터벌 평균을 의미한다.
또한, 상기 호스트 머신은 상기 표준편차로부터 '추가 기입 스트림 수 - 분위수' 들을 산출하여 추가 기입 스트림의 인터벌 범위 경계값으로 설정하는 것을 더 포함하는 것을 특징으로 한다.
- 여기서 상기 분위수는 다음 수학식을 만족하는 변수 x의 값들을 의미하는 것임.
Figure pat00002
여기서, Qi는 i번째 추가 기입 스트림 수-분위수, μ는 최근 인터벌 표본의 평균, σ는 최근 인터벌 표본의 표준편차를 각각 의미한다.
또한, 상기 (a-2) 단계는 상기 호스트머신이 큐파일이 비었는지 여부를 판단하고, 큐파일에 엔트리가 남아 있다고 판단이 되면, 다시 큐파일을 읽고 읽은 엔트리는 삭제하는 과정을 상기 큐파일에 남은 엔트리가 없을 때까지 반복되는 것을 특징으로 한다.
본 발명의 실시 예에 따른 분할방법에 의하면, 호스트머신에 의해 데이터 저장장치에 데이터가 저장될 때, 멀티스트림 과정에서 유사한 수명의 데이터가 같은 소거 블록에 기록됨으로써 가비지 컬렉션과정에서 복사되는 유효페이지의 수를 줄일 수 있다.
이에 따라서 SSD의 수명을 극대화하고, 입출력 속도를 향상시키는 효과가 있다.
도 1은 본 발명의 일 실시 예에 따른 호스트머신에서 스트림 분할을 위한 방법에 의해 스트림 식별자를 배정하기 위한 데이터를 구분한 체계도를 도시한 것이다.
도 2a는 추가 기입 스트림에 시간 범위를 할당하는 시점과 이를 위해 필요한 정보를 저장하는 예시적인 방법의 흐름도를 도시한 것이다.
도 2b 내지 도 2c는 추가 기입 스트림에 시간 범위를 분배하는 예시적인 방법의 흐름도를 도시한다.
도 4는 본 발명의 일 실시 예에 따른 멀티스트림 운용을 위한 스트림 분할 방법을 수행하는 호스트 장치를 설명하는 블록도이다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
본 출원에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
또한, 본 발명의 실시 예의 구성 요소를 설명하는 데 있어서, 제1, 제2 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 '연결', '결합' 또는 '접속'된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결, 결합 또는 접속될 수 있지만, 그 구성 요소와 그 다른 구성요소 사이에 또 다른 구성 요소가 '연결', '결합' 또는 '접속'될 수도 있다고 이해되어야 할 것이다.
또한, 명세서에 기재된 "부", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하나 이상의 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 조합으로 구현될 수 있음을 의미한다.
본 발명은 다양한 변환을 가할 수 있고 여러 가지 실시 예를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변환, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 발명을 설명함에 있어서, 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
이하 본 발명의 구현에 따른 SSD 멀티스트림 운용을 위한 스트림 분할 방법에 대하여 상세하게 설명한다.
본 발명에서 호스트머신은 CPU, 메모리를 가진 컴퓨터시스템으로서, 본 발명에 일 실시 예에 따른 멀티스트림 운용을 위한 스트림 분할 방법은 컴퓨터시스템 내에, 예를 들어 컴퓨터 판독가능 기록 매체로 메모리에 저장되어 구현될 수 있다.
스트림은 저장장치(SSD)의 물리적 공간의 구분이다. 호스트머신과 SSD는 스트림 식별자를 공유하며, 식별자에 따라 데이터의 저장위치를 지정한다. 같은 스트림 식별자의 데이터는 저장장치 내에서 반드시 동일한 블록에 기입되지 않을 수 있다. 식별자의 데이터는 다른 식별자의 데이터와 분리된다.
본 발명의 일 실시 예에 따르면, 호스트머신에서 데이터를 저장하기 위해 해당 데이터에 대한 스트림 식별자를 제공하며, 저장장치는 스트림에 대한 결정권이 없이 호스트머신에서 제공한 식별자를 기반으로 데이터를 위치시킨다.
멀티스트림은 복수 개의 기입 스트림을 지원한다. 멀티스트림은 동일한 수명주기의 데이터가 동일 블록에 위치하도록 하면, 한 블록 내의 페이지들이 유사한 시점에 수명을 다하도록 함으로써, 가비지 컬렉션(Garbage Collection)의 병목을 줄일 수 있다.
호스트머신의 운영체제는 효과적으로 파일을 관리하기 위해 여러 가지 기입방식을 포함할 수 있다. 본 발명의 일 실시 예에서 주목하는 방식에는 호스트 머신이 특정 파일을 생성, 수정 또는 삭제함에 있어, 호스트머신의 캐시 메모리와 SSD 내 같은 파일의 데이터를 일치시키기 위해 사용되는 동기식 기입(synchronization) 방식이 제안된다.
또 다른 방식으로 제안되는 추가 기입(append write) 방식은 호스트머신이 기존에 존재하던 파일의 데이터를 보존한 상태에서 해당 파일의 끝 부분에 이어서 데이터를 추가하는 방식이다. 전술한 두 가지 기입방식은 SSD에 데이터를 기입함에 있어 특정한 규칙을 가짐으로써 데이터의 수명에 영향을 준다.
본 발명의 실시 예들은 호스트머신에서 멀티스트림이 가능한 SSD에 데이터를 기입하면서 함께 전달하는 스트림 식별자를 정하는 방법을 정의한다. 전송된 스트림 식별자는 SSD 컨트롤러가 유사한 수명의 데이터 또는 연관 데이터를 동일한 소거 블록(erased block)에 저장하는 것을 도울 수 있다.
또한, 본 발명의 실시 예들은 호스트 머신이 SSD에 기입 명령을 내릴 때, 기입될 데이터에 대한 최적의 스트림 식별자를 찾기 위하여 파일 시스템 단계에서 구분되는 데이터의 종류, 사용자 데이터의 동기화 여부 및 소속파일의 존부, 파일별 동기식 기입시간을 이용하는 방법을 포함한다.
또한, 본 발명의 실시 예들은 설명의 편의상 EXT4 파일 시스템 하에서 데이터가 기입되는 패턴을 토대로 설명을 하고 있으나, 본 발명은 (발명의 배경이 되는 기술)에서 전술한 저널링 파일 시스템 전반에 걸쳐서 적용될 수 있다.
또한, 본 발명의 일 실시 예에서 호스트머신에 의해 사용자 데이터의 기입 시에 소속파일의 존부는 파일명이 기존에 존재하는지 여부에 따라 구분되는 것을 예시로 설명하고 있지만, 이는 같은 목적의 여러 가지 방법에 의해 대체될 수 있다.
또한, 본 발명의 일 실시 예에 따른 동기식 기입 여부의 판단은 리눅스(Linux) 커널(kernel)의 시스템 콜을 바탕으로 설명하고 있으나, 이외에 동기식 및 비동기식 기입의 목적 및 동작 방식을 따르는 여러 가지 방법들로 대체될 수 있다.
도 1은 본 발명의 일 실시 예에 따라 호스트머신이 스트림을 분할하는 방법에 있어서, 스트림 식별자를 배정하기 위해 데이터를 구분한 데이터의 체계도를 도시한 것이다.
도 1은 본 발명의 일 실시 예에서 호스트머신이 스트림을 분할하는 방법에 있어서 데이터를 분류하여 각기 다른 스트림 식별자를 부여하는 기준을 도시하며, 분류된 데이터 중 동기식 추가 기입 데이터를 제외한 나머지 종류의 기타 데이터들은 서로 다른 스트림 식별자가 각각 배정된다.
이하에서 스트림 식별자 부여과정을 보다 구체적으로 설명한다.
본 발명의 일 실시 예에서 호스트 머신은 먼저, SSDD에 기입할 데이터가 파일 시스템 단계에서 생성된 데이터인지를 식별하여 스트림 식별자를 부여하는 과정을 수행한다. 여기서, 파일 시스템 단계에서 생성되는 데이터는 파일 시스템의 변경사항을 기록하는 저널데이터(111)와 파일 시스템, 파일 시스템 운용과정에서 데이터 관리에 사용되는 메타데이터(112) 및 상기 저널 데이터 및 메타데이터로 구분되지 않는 그 밖의 기타데이터(113)로 구분하는 과정을 포함한다. 이로써, 파일시스템단계에서는 어플리케이션이 생성하지 않은 데이터를 모두 포함할 수 있다.
본 발명의 명세서에서 저널 데이터는 파일 시스템 단계에서 생성되는 데이터로써, 파일 시스템의 변경사항을 기록하는 데이터를 의미한다.
예를 들어 ext4 파일 시스템은, 디스크에 기입 명령된 데이터와 기입과정에서 생성되는 메타 데이터를 모두 저널영역에 기록하는 journal mode, 메타 데이터만을 기록하는 Ordered mode와 Writeback mode 중 하나의 방식으로 저널 데이터를 생성한다. 또한, 본 발명의 명세서에서 메타 데이터는 파일 시스템 단계에서 생성되는 데이터로써, 파일 시스템 운용과정에서 데이터를 효과적으로 관리하기 위해 사용되는 데이터를 의미한다.
본 발명의 일 실시 예에 따르면, 저널데이터는 특정 영역의 논리적 주소(logical address)영역에 순환적으로 기입되는 것으로써, 대체로 비슷하고 짧은 수명을 갖는 것을 특징으로 한다. 본 발명의 일 실시 예에 따르면, 분류된 저널데이터는 고유한 스트림 식별자를 부여 받게 됨으로써, SSD 내 독립적인 소거 블록에 저장될 수 있다.
또한, 본 발명의 일 실시 예에 따른, 메타데이터에는 파일의 수정, 생성, 접근 시간 및 데이터 블록의 주소 등의 보조정보를 기록한 아이노드(inode), 아이노드의 사용상태를 기록한 아이노드 비트맵(inode bitmap), 파일명을 기록한 디렉터리(directory), 논리적 주소영역의 사용상태를 기록한 블록비트맵(block bitmap), 그룹 디스크립터(group descriptor) 및 슈퍼블록(superblock)이 포함된다.
각 메타데이터의 수명은 대응되는 파일과 논리적 블록의 기입에 따라 일괄적으로 영향을 받을 수 있다. 본 발명의 일 실시 예에 따라 분류된 메타데이터는 고유한 스트림 식별자를 부여 받음으로써 SSD 내에 독립적인 소거 블록에 저장될 수 있다.
또한, 도 1을 참조하면, 본 발명의 일 실시 예에서는 호스트머신은 SSD에 기입할 데이터가 어플리케이션 단계의 사용자 데이터인 경우, 소속 파일의 동기식 기입 여부에 따라 비동기식 기입데이터(160)와 동기식 기입데이터(170)로 구분한다.
또한, 동기식 기입데이터는 파일의 존, 부를 고려하여 사용자 데이터를 기존 파일이 없이 생성되는 동기식 생성된 파일의 동기식 생성 기입데이터(171)와 기존에 존재하던 파일의 데이터를 보존한 상태에서 해당 파일의 끝 부분에 이어서 데이터를 추가하는 동기식 추가 기입데이터(172)로 구분한다.
본 발명에서 동기식 기입(synchronous write)이란, 어떤 파일의 데이터가 생성, 수정, 삭제될 때마다 캐시 메모리와 디스크 드라이브 내에 공존하는 해당 파일의 내용이 같아지도록 디스크 드라이브로의 데이터 기입이 스케쥴링 되는 방식을 의미한다. 본 발명에서 비동기식 기입(asynchronous write)이란, 어떤 파일의 데이터를 캐시 메모리에 우선적으로 생성, 수정, 삭제 또는 읽기(read)하고, 같은 파일의 캐시 메모리 내 데이터와 디스크 드라이브 내 데이터 간에 일치성을 보장하지 않는 방식을 의미한다.
따라서, 사용자 데이터의 동기식 기입 여부는 저장장치(SSD)에 발생하는 기입 명령 패턴에 큰 영향을 줌으로써 데이터의 수명과 밀접한 연관을 갖는다.
본 발명의 일 실시 예에서는 사용자 데이터의 기입 방식을 동기식과 비동기식으로 나누어 각기 다른 식별자를 부여하며, 여기서 모든 비동기식 기입데이터에 대해서는 동일한 식별자가 부여되는 것을 특징으로 한다.
동기식 기입의 경우 데이터 기입 명령 패턴이 직접적으로 데이터의 수명과 연관될 수 있다. 이에 따라 본 발명의 일 실시 예에서는 동기식으로 기입되는 사용자 데이터인 동기식 기입데이터를 소속 파일의 존, 부에 따라 동기식 생성 기입데이터와 동기식 추가 기입데이터로 구분하여 각각 다른 스트림 식별자를 부여하는 것을 특징으로 한다.
본 발명의 일 실시 예에 따르면, 동기식 추가 기입데이터는 데이터의 수명을 합리적으로 예측 가능하게 하는 특징을 가짐에 따라, 사용자가 지정한 개수만큼의 추가 기입 스트림에 나뉘어 저장되도록 스트림 식별자를 배정받는 과정이 수행된다.
본 발명의 일 실시 예에서는 사용자 데이터 중에서 사용자가 지정한 개수의 일부 스트림 식별자들 중 하나를 동기식 추가기입 데이터에 배정할 수 있다. 상기 배정된 해당 스트림들은 각각 하나의 시간 범위에 대응하는 것을 특징으로 한다.
본 발명의 일 실시 예에 따른 상기 호스트머신이 상기 동기식 추가기입데이터에 대한 분할방법은, 동기식 추가기입 명령에 대해, (a) 호스트 머신이 기입하는 파일의 기입 시간 간격 평균을 산출하고 데이터의 크기를 수집하는 단계; (b) 상기 산출한 값이 속한 시간 범위에 대응하는 추가기입 스트림에 스트림 식별자를 배정하는 단계; 및 (c) 특정시간 범위를 상기 추가기입 스트림에 분배하는 단계; 를 포함하는 것을 특징으로 한다.
상기 (c) 단계에서, 추가기입 스트림에 특정 시간 범위를 분배하기 위해 호스트머신은 동기식 추가기입 명령 이후, 기입 명령된 파일의 가장 최근 두 동기식 기입 시간 간격을 계산하는 단계를 포함한다.
이하에서는, 본 발명의 동기식 추가 기입 데이터 분류방법의 배경과 추가 기입 스트림의 식별자를 배정하는 방법을 도 2a 내지 도 2c을 참조하여 보다 구체적으로 설명한다.
도 2a는 호스트머신에서 동기식 추가데이터에 대해 추가 기입 스트림에 시간 범위를 할당하는 시점과 이를 위해 필요한 정보를 저장하는 예시적인 방법의 흐름도를 도시한 것이다.
도 2b 내지 도 2c는 도 2a에서 추가 기입 스트림에 시간 범위를 분배하는 예시적인 방법의 흐름도를 도시한 것이다.
데이터 기입 명령에는 논리적 블록(logical block)이라 하는 일정 크기의 최소 단위가 있고, 논리적 블록은 각기 다른 논리적 블록 주소에 의해 구분된다.
또한, 파일 시스템은 하드 디스크 드라이브(Hard Disk Drive: HDD)로부터 데이터를 빠르게 읽기 위하여, 같은 파일의 데이터는 가능한 연속된 논리적 블록에 저장하는 경향이 있다.
같은 이유로, 동기식 추가 기입 데이터는 원래 있던 파일의 데이터 끝에 이어서 저장되는 경향이 있고, 만약 어떤 파일의 크기가 논리적 블록의 크기의 배수가 아니면, 해당 파일의 추가 기입 이전까지의 데이터 중 끝 부분이 속한 논리적 블록은 기존 데이터와 추가 기입 데이터에 이어 블록 크기를 이룬 새로운 데이터로 덮어쓰기가 된다.
예를 들면, 논리적 블록 하나의 크기가 4KB이고, 10KB 크기의 파일이 10, 11, 12번 파일에 연속적으로 저장되어 있는 경우, 파일의 끝 부분이 속한 12번 블록은 2KB 만이 유의미한 데이터이다. 여기서 만약 같은 파일에 4KB 크기의 추가 기입 데이터가 발생하면, 12번 블록의 유의미한 데이터 끝에 추가 기입 데이터가 이어진 한 블록 크기의 데이터로 해당 블록이 덮어쓰기가 되고, 추가 기입 데이터 중 12번 블록에 포함되지 못한 2KB의 데이터는 새로운 블록을 할당받아 저장됨으로써 파일의 끝부분이 포함된 블록이 된다.
또한, 상기한 기존 데이터와 동기식 추가 기입 데이터의 합성이 발생한 논리적 블록이 SSD에 기입될 때, SSD에서는 해당 블록의 합성 이전 데이터를 삭제하기 때문에 데이터의 수명에 영향을 준다.
예를 들어, 특정 파일에 동기식 기입이 연속적으로 발생한 경우, 합성이 발생한 블록에 대응되는 데이터의 수명은 연속된 두 동기식 기입 시간 사이 간격이 된다. 따라서 본 발명의 일 실시 예에서는 호스트 머신이 동기식으로 이미 존재하는 파일의 추가 기입데이터를 SSD에 기입하는 경우, 기입되는 파일의 동기식 기입 시간 간격 평균(이하, '추가 인터벌 평균' 이라 한다.)을 계산하고, 계산된 추가 인터벌 평균이 속하는 시간 범위에 대응되는 추가 기입 스트림의 식별자를 배정하고, 특정 시간 범위를 추가기입 스트림에 부여하는 과정을 포함한다.
또한, 본 발명의 일 실시 예에서는 동기식 추가 기입이 발생한 파일의 추가 인터벌 평균을 계산하기 위해, 기입되는 모든 파일에 대하여 다음의 변수가 저장되고, 변수들은 동기식 기입데이터의 기입 시마다 업데이트될 수 있다.
- 총 동기식 기입횟수
- 가장 최근 동기식 기입시간
- 현재 동기식 기입시간
- 가장 최근 계산된 추가인터벌 평균
상기한 파일별 동기식 추가 기입 시간 간격 평균인 추가 인터벌 평균(I)은 동기식 추가 기입 명령이 발생할 때마다, 다음의 수학식3에 의해 산출된다.
Figure pat00003
여기서, N은 총 동기식 기입횟수, Tr는 가장 최근 동기식 기입시간,Tc는 현재 동기식 기입시간, Ir은 가장 최근 계산된 추가인터벌 평균을 의미하며, I는 식에 의해 계산된 추가인터벌 평균을 의미한다.
본 발명의 일 실시 예에서는 각 추가 기입 스트림이 저장할 동기식 추가 기입데이터의 추가 인터벌 평균 범위는 다음의 단계를 포함하여 산출된다.
(1) 호스트머신이 특정량의 동기식 추가 기입 시간 간격(이하, '최근 추가 인터벌'이라 한다.) 표본을 큐 형태로 각각 축적하는 단계;
(2) 호스트머신이 상기 최근 추가 인터벌 표본의 평균과 표준편차를 계산하고 큐에서 사용한 최근 추가 인터벌 표본을 삭제하는 단계;
(3) 호스트머신이 상기 (b)과정에서 구한 평균과 표준편차를 가지는 정규분포를 도시하고, 상기 조건에 따라 경계값을 설정하여 시간 범위를 분할하는 단계;
[특정량의 최근 추가인터벌 표본을 큐 형태로 각각 축적]
본 발명의 일 실시 예에서는, 호스트머신이 동기식 추가 기입 명령을 SSD에 내려진 이후, 최근 추가인터벌 표본을 수집한다. 여기서 최근 추가인터벌은 전술한 바와 같이, 최근 추가 기입된 파일의 가장 최근 두 동기식 기입시간 사이 간격으로 산출된다.
예를 들어, 최근 추가 기입된 파일에 대한 동기식 기입이 각각 1초, 4초, 5초에 발생한 경우, 최근 추가인터벌은 가장 최근 두 동기식 기입시간 4초와 5초 사이 간격인 1초가 된다. 또한, 각 추가 기입 스트림에 시간 범위를 분배하는 시점을 결정하기 위하여, 최근 동기식 추가 기입 데이터의 양을 누적하여 더한다.
도 2a는 본 발명의 일 실시 예에 따라 호스트머신에서 추가 기입 스트림에 시간 범위를 할당하는 시점과 이를 위해 필요한 정보를 저장하는 예시적인 방법의 흐름도를 도시한 것이다.
도 2a를 참조하면, 호스트머신에 의해 동기식 추가 기입 명령이 발생한 이후, 호스트 머신은 기입하는 파일의 동기식 기입 시간 간격 평균인 최근 추가인터벌 평균을 산출하고 발생한 추가 기입 데이터의 크기를 수집하는 단계(S100)가 수행된다.
다음 호스트머신은 S100단계에서 산출된 최근 추가인터벌을 큐 형태로 각각 저장을 하고, 최근 동기식 추가 기입 데이터의 크기를 누적하여 누적량을 산출하는 단계(S105)를 수행한다. 그리고 호스트머신은 추가 기입 스트림에 시간 범위가 분배된 적이 있는지 여부를 판단하는 단계(S110)를 수행한다. S110단계에서 호스트머신은 이전에 추가 기입 스트림에 시간 범위가 분배된 적이 없다고 판단된 경우, 동기식 추가 기입 데이터의 누적량이 한 블록의 크기와 추가 기입 스트림 수의 곱 이상이 될 때 추가 기입 스트림에 시간 범위를 분배하는 과정(S120단계)을 수행한다.
또한, S110단계에서 상기 추가기입 스트림에 시간 범위가 부여된 적이 없는 경우에 해당하는 동기식 추가기입 데이터는 모두 같은 스트림 식별자를 부여받는 것을 특징으로 한다.
본 발명의 일 실시 예에 따르면, 인터벌 범위 설정 이후에 동기식 추가 기입 데이터의 누적량이 0으로 초기화된다(도 2c의 S185 참조).
S110단계에서 호스트머신은 이전에 추가 기입 스트림에 시간 범위가 분배된 적이 있다고 판단된 경우, 동기식 추가 기입 데이터의 누적량이 한 블록의 크기와 추가 기입 스트림 수의 제곱의 곱 이상이 될 때, S120단계와 같은 방식으로 추가 기입 스트림에 시간 범위가 분배하는 단계(S115단계)가 수행된다.
예를 들면, 왜, 호스트머신은 이전에 추가 기입 스트림에 시간 범위가 분배된 적이 없다고 판단된 경우, 동기식 추가 기입 데이터의 누적량이 한 블록의 크기와 추가 기입 스트림 수의 곱 이상이 될 때 추가 기입 스트림에 시간 범위를 분배하고,
이전에 추가 기입 스트림에 시간 범위가 분배된 적이 있다고 판단된 경우, 동기식 추가 기입 데이터의 누적량이 한 블록의 크기와 추가 기입 스트림 수의 제곱의 곱 이상이 될 때, 추가 기입 스트림에 시간 범위가 분배하는 단계(S115단계)를 가진다.
처음에 추가기입 스트림에 시간범위가 분배되지 않았을 때에는 추가기입 데이터들이 멀티스트리밍 되지 않기 때문에 빨리 시간 범위를 분배하기 위해서 적은 양을 저장한다.
본 발명의 일 실시 예에서는 이후의 시간분배에 대해 주기적으로 시간 범위를 재분배하여, 변하는 최근 추가 인터벌의 경향을 반영하기 위해, 맨 처음 시간을 분배하는 경우보다 충분한 양의 표본을 축적하기 위하여, 처음 시간분배까지 축적한 표본보다 많은 양의 표본을 축적하는 방법을 채택한 것이다. 본 발명의 일 실시 예에서는 처음 시간분배와 이후 시간분배에 필요한 표본의 양 간에 차이를 두기 위하여 '스트림 수'와 '스트림 수 제곱'을 이용한 것을 특징으로 한다.
[최근 추가인터벌 표본의 평균과 표준편차를 산출하고 큐에서 사용한 표본을 삭제]
도 2b은 도 2a의 S115 및 S120단계에서 동기식 추가 기입 데이터 누적량이 일정기준 이상인 경우, 추가 기입 스트림에 시간 범위를 분배하는 과정 이후에 수집된 최근 추가인터벌 표본의 평균과 표준편차를 순차적으로 산출하는 과정을 도시한 것이다.
도 2b를 참조하면, 먼저 호스트머신이 최근 인터벌을 저장한 큐의 모든 최근 인터벌 평균을 산출하는 단계(S130단계)가 수행된다. S130단계에서는 평균의 산출에 필요한 표본의 개수 및 최근 인터벌의 합계는 일괄적으로 계산된다.
다음은 호스트머신에 최근 추가 인터벌 평균이 입력되는 단계(S135단계) 및 큐 엔트리 읽기 및 평균 편차를 계산하고 합산하는 단계(S140)가 수행된다. S140단계에서 호스트머신은 큐에 존재하는 각각의 값과 S135단계의 평균 사이 편차를 계산하고, 계산된 각 편차들의 제곱을 모두 합하는 과정을 수행한다.
다음은 호스트머신이 큐파일에서 읽은 엔트리는 삭제되도록 제어하고 삭제된 엔트리의 수를 카운팅하는 단계(S145단계)가 수행된다. S145단계 후에, 호스트머신이 큐가 비었는지 여부를 판단하는 단계(S150단계)가 수행된다. S150단계에서 큐에 엔트리가 남아 있다고 판단이 되면, 다시 S140단계로 되돌아간다. 이 과정은 큐에 남은 엔트리가 없을 때까지 반복된다.
호스트머신은 S150단계에서 큐에 엔트리가 비었다고 판단이 되면, 최근 추가 인터벌의 표준편차 계산단계(S155)가 수행된다.
상기 S155단계에서는 큐가 빌 때까지 계산된 편차 제곱의 합과 삭제된 엔트리의 수를 이용하여 다음의 수학식4에 의해 표준편차를 산출한다.
Figure pat00004
여기서 σ는 표준편차,
Figure pat00005
는 표본의 편차 제곱의 합,
Figure pat00006
은 표본의 수를 각각 의미한다.
[추가 기입 스트림에 시간 범위 분배]
도 2c는 도 2b에서 산출한 최근 추가 인터벌 표본의 평균과 표준편차로부터 호시트머신이 추가 기입 스트림에 시간 범위가 분배되는 과정을 도시한 것이다.
도 2c를 참조하면, 호스트머신에 도 2b의 S155단계에서 산출한 최근 추가인터벌 표본의 평균과 표준편차가 입력되어 저장하는 과정(S160단계)이 수행된다. 다음은 호스트머신이 상기 S160단계에서 입력된 평균과 표준편차를 가지는 정규분포를 따르는 누적확률 및 확률변수를 산출하는 과정(S165단계)을 수행한다. 그리고 호스트머신은 상기 확률변수의 '추가 기입 스트림 수 - 분위수' 들을 추가 기입 스트림의 인터벌 범위 경계값으로 설정하는 과정(S170단계)을 수행한다.
도 2c에서 S170 내지 S180단계는 상기 정규분포에 대하여, 분배할 시간 영역에서 누적확률이 각각 N/추가기입 스트림 수(N은 추가기입 스트림 수 이하의 모든 자연수)가 되는 확률변수 값들을 경계값으로하여 시간 영역을 겹치지 않게 분배하는 방법을 설명한 것이다.
본 발명의 일 실시 예에 따르면, S170단계에서는 산출된 확률변수를 x라고 할 때, 분위수는 다음의 수학식5을 만족하는 변수 x값들을 의미한다.
Figure pat00007
여기서, Qi는 i번째 추가 기입 스트림 수-분위수, μ는 최근 인터벌 표본의 평균, σ는 최근 인터벌 표본의 표준편차를 각각 의미한다.
다음은 상기 S170단계에서 상기 설정된 경계값이 음수인지를 판단하는 단계(S175)가 수행된다. S170단계에서는 음수인 분위수가 존재하여 경게값이 음수로 설정된 경우를 판단한다.
상기 S175단계에서 설정된 경계값이 분위수가 음수인 경계값으로 판단된 경우에는 양수의 경계값으로 교체하는 단계(S180)가 수행된다. S180단계에서 음수인 경계값의 개수를 산출한 후, 양의 경계값 중 가장 작은 값을 음수인 경계값의 개수+ 1등분하는 값들로 음의 경계값들을 대체한다.
예를 들면, 추가 기입 스트림 수가 4개이고, 제1, 제2, 제3 분위수가 각각 -1, 2, 5이라고 가정하면, 음수인 경계값은 (-1) 1개이므로, 양의 경계값 중 최소인 2를 (1개+1)로 이등분한 1로 음의 경계값을 대체한다.
S175단계에서 음수인 경계 값이 존재하지 않는다고 판단된 경우, 설정된 경계값을 유지한다.
다음은, 추가 기입 데이터의 누적량을 0으로 초기화하는 단계(S185)를 수행한다.
S185 단계 후에 다시 도 2a로 돌아가서, 저장된 경계값을 기준으로 추가 기입 스트림의 시간범위를 분배하는 과정(도 2a S125 단계)가 수행된다.
본 발명의 일 실시 예에 따르면, 위와 같은 방법에 의해 각각의 추가 기입 스트림에 시간 범위를 전술한 경계값에 의해 겹치지 않게 설정할 수 있다.
예를 들면, 추가 기입 스트림 수가 4개이고 저장된 인터벌 범위의 경계값이 각각 1, 2, 5라고 하면, 추가 기입 스트림의 시간 범위는 0 이상 1미만, 1이상 2미만, 2 이상 5미만, 5이상으로 각각 설정된다(도 2a의 S125 참조).
도 3은 본 발명의 일 실시 예에 따른 멀티스트림 운용을 위한 스트림 분할 방법을 수행하는 장치를 설명하는 블록도이다.
본 발명의 일 실시 에에 따른 호스트머신은 CPU, 메모리를 포함하는 컴퓨터시스템(900)이다.
본 발명의 실시 예들은, 컴퓨터 시스템인 호스트머신 내에, 예를 들어, 컴퓨터 판독가능 기록 매체로 구현될 수 있다. 도 4에 도시된 바와 같이, 호스트머신(900)은 하나 이상의 프로세서(910), 메모리(920), 저장부(930), 사용자 인터페이스 입력부(940) 및 사용자 인터페이스 출력부(950) 중 적어도 하나 이상의 요소를 포함할 수 있으며, 이들은 버스(960)를 통해 서로 통신할 수 있다. 또한, 호스트머신(900)은 네트워크에 접속하기 위한 네트워크 인터페이스(970)를 또한 포함할 수 있다. 프로세서(910)는 메모리(920) 및/또는 내부 저장부(930)에 저장된 처리 명령어를 실행시키는 CPU 또는 반도체 소자일 수 있다. 메모리(920) 및 내부 저장부(930)는 다양한 유형의 휘발성/비휘발성 기억 매체를 포함할 수 있다. 예를 들어, 메모리는 ROM(924) 및 RAM(925)을 포함할 수 있다.
이에 따라, 본 발명의 실시 예들은 컴퓨터로 구현되는 방법 또는 컴퓨터 실행 가능 명령어들이 저장된 비휘발성 컴퓨터 기록 매체로 구현될 수 있다. 상기 명령어들은 프로세서에 의해 실행될 때 본 발명의 적어도 일 실시 예에 따른 방법을 수행할 수 있다.
예를 들어, 상기 명령어들은, 상기 프로세서(910)에 의해 실행될 때, 프로세서(910)로 하여금, 웹 액티비티 레이어에 존재하는 이벤트 입력 가능 영역에 대응하는 뷰를 가상 액티비티 레이어 상에 구성하고, 가상 액티비티 레이어를 웹 액티비티 레이어에 오버레이시키며, 이벤트 입력 가능 영역 상에서 이벤트 입력이 있는 경우 해당 이벤트 입력에 대응하는 요청을 서버로 전송하고, 서버로부터 해당 요청에 대한 응답이 지연되는 경우 가상 액티비티 레이어에 포함된 뷰 중 이벤트 입력을 감지하였던 뷰에 대응하는 이벤트 입력 가능 영역 상에 정의된 동작에 대한 요청을 서버로 전송하도록 하는 명령어들을 포함할 수 있다.
본 발명의 일 실시 예에 따른 저장장치는 내부 저장장치(930) 및 외부 저장장치(830)를 포함한다. 저장장치는 SSD를 포함할 수 있다.
본 발명의 일 실시 예에 따른 멀티스트림 운용을 위한 스트림 분할 방법은 상기 호스트머신(900)이 상기 외부 저장장치(830) 또는 내부 저장장치(930)에 프로그램된 프로세스에 따라 스트림 식별자를 부여하고 데이터를 기입하는데 적용될 수 있다.
이상에서는 본 발명의 실시예를 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 쉽게 이해할 수 있을 것이다.
900: 호스트 머신
830, 930; 저장장치

Claims (13)

  1. 호스트머신이 데이터 저장장치에 기입된 데이터의 스트림을 분할하는 방법에 있어서,
    a) 호스트머신이 파일 시스템 단계에서 구분된 데이터 타입과 어플리케이션 단계의 사용자데이터인지 확인하는 단계;
    b) 호스트머신이 상기 파일시스템단계의 데이터를 파일시스템의 변경사항을 기록하는 저널데이터, 파일시스템의 운용과정에서 데이터관리에 사용되는 메타데이터 및 그 외의 파일시스템 단계의 데이터인 기타데이터로 구분하여 각각 고유 식별자를 부여하는 단계; 및
    c) 호스트머신이 상기 사용자 데이터를 기입방식에 따라, 상기 호스트머신의 캐시 메모리와 상기 저장장치 내 같은 파일의 데이터 간의 일치성을 보장하지 않는 비동기식 기입데이터, 상기 호스트머신의 캐시 메모리와 저장장치 내 같은 파일의 데이터를 일치시키는 동기식 데이터 중, 기존 파일이 없이 생성되는 동기식 생성 기입 데이터, 및 기존에 존재하던 파일의 데이터를 보존한 상태에서 해당 파일의 끝부분에 이어서 데이터를 추가하는 동기식 추가 기입데이터; 로 구분하여 각각 고유한 식별자를 부여하는 단계; 를 포함하는 것을 특징으로 하는 스트림 분할방법.
  2. 제1항에 있어서,
    상기 호스트머신이 상기 동기식 추가기입데이터에 대한 분할방법은
    (a) 호스트 머신이 기입하는 파일의 기입 시간 간격 평균을 산출하고 데이터의 크기를 수집하는 단계;
    (b) 상기 산출한 값이 속한 시간 범위에 대응하는 추가기입 스트림에 스트림 식별자를 배정하는 단계; 및
    (c) 특정시간 범위를 추가기입 스트림에 분배하는 단계; 를 포함하는 것을 특징으로 하는 스트림 분할방법.
  3. 제2항에 있어서,
    상기 (a) 단계에서 기입 시간 간격 평균은,
    (a-1) 호스트머신이 특정량의 동기식 추가 기입 시간 간격인 최근 추가 인터벌 표본을 큐 형태로 각각 축적하는 단계;
    (a-2) 호스트머신이 상기 최근 추가 인터벌 표본의 평균과 표준편차를 계산하고 큐에서 사용한 최근 추가 인터벌 표본을 삭제하는 단계; 및
    (a-3) 호스트머신이 상기 (b)과정에서 구한 평균과 표준편차를 가지는 정규분포로부터 경계값을 설정하여 시간 범위를 분할하는 단계; 를 포함하는 것을 특징으로 하는 스트림 분할방법.
  4. 제2항에 있어서,
    상기 (b)단계에서, 상기 추가기입 스트림에 시간 범위가 부여된 적이 없는 경우에 해당하는 동기식 추가기입 데이터는 모두 같은 스트림 식별자를 부여하는 것을 특징으로 하는, 스트림 분할방법.
  5. 제2항에 있어서,
    상기 (c) 단계에서, 상기 추가기입 스트림에 특정 시간 범위를 분배하기 위해 동기식 추가기입 명령 이후, 기입 명령된 파일의 가장 최근 두 동기식 기입 시간 간격을 계산하는 단계: 를 포함하는 것을 특징으로 하는, 스트림 분할방법.
  6. 제2항에 있어서,
    상기 (c) 단계에서, 상기 추가기입 스트림에 시간 범위가 부여된 적이 없는 경우, 동기식 추가기입 데이터의 누적량을 산출하고, 상기 산출된 동기식 추가기입 데이터의 누적량이 '추가기입 스트림 수 Х 한 블록의 크기' 이상이 될 때 각 추가기입 스트림에 시간 범위가 분배되는 것을 특징으로 하는 스트림 분할방법.
  7. 제2항에 있어서,
    상기 (c) 단계에서, 상기 추가기입 스트림에 시간 범위가 부여된 적이 있는 경우에는, 동기식 추가기입 데이터의 누적량을 산출하고, 상기 산출된 동기식 추가기입 데이터의 누적량이 '(추가기입 스트림 )2 × 한 블록의 크기' 이상이 될 때 추가기입 스트림에 시간 범위가 분배되는 것을 특징으로 하는, 스트림 분할방법.
  8. 제2항에 있어서,
    상기 (c) 단계에서 상기 호스트머신이 추가기입 스트림에 시간 범위를 분배하는 방법은,
    (d-1) 상기 동기식 기입 시간 사이 간격 평균과 표준편차를 산출하는 단계;
    (d-2) 상기 산출된 동기식 기입 시간 사이 간격 평균과 표준편차를 가지는 정규분포로부터 누적확률과 확률변수를 산출하는 단계;
    (d-3) 상기 정규분포에 대하여, 분배할 시간 영역에서 누적확률이 각각 N/추가기입 스트림 수(N은 추가기입 스트림 수 이하의 모든 자연수)가 되는 확률변수 값들을 경계값으로 하여 시간 영역을 겹치지 않게 분할하는 단계; 및
    (d-4) 상기 경계값에 의해 분할된 시간 영역을 각 추가기입 스트림에 배정하는 단계; 를 포함하는 스트림 분할방법.
  9. 제8항에 있어서,
    상기 (d-3) 단계에서, 상기 경계값에 음수의 수가 존재할 경우, 음수인 경계값의 개수를 산출한 후, 양의 경계값 중 가장 작은 값을 음수인 경계값의 개수 + 1등분 하는 값들로 음수의 경계값들을 대체하는 단계; 를 더 포함하는 것을 특징으로 하는 스트림 분할방법.
  10. 제1항에 있어서,
    상기 동기식 추가 기입데이터는, 총 동기식 기입횟수, 가장 최근 동기식 기입시간, 현재 동기식 기입시간 및 가장 최근 계산된 추가인터벌 평균이 기입되는 것을 특징으로 하는 스트림 분할방법.
  11. 제10항에 있어서,
    상기 추가인터벌 평균은 다음 수학식에 의해 산출되는 것을 특징으로 하는 스트림 분할방법.
    Figure pat00008

    여기서 N은 총 동기식 기입횟수, Tr는 가장 최근 동기식 기입시간,Tc는 현재 동기식 기입시간, Ir은 가장 최근 계산된 추가 인터벌 평균을 의미하며, I는 식에 의해 계산된 추가인터벌 평균을 의미한다.
  12. 제8항에 있어서,
    상기 호스트 머신은 상기 표준편차로부터 '추가 기입 스트림 수 - 분위수' 들을 산출하여 추가 기입 스트림의 인터벌 범위 경계값으로 설정하는 것을 더 포함하는 것을 특징으로 하는 스트림 분할방법.
    - 여기서 상기 분위수는 다음 수학식을 만족하는 변수 x의 값들을 의미하는 것임
    Figure pat00009

    여기서, Qi는 i번째 추가 기입 스트림 수-분위수, μ는 최근 인터벌 표본의 평균, σ는 최근 인터벌 표본의 표준편차를 각각 의미한다.
  13. 제3항에 있어서,
    상기 (a-2) 단계는 상기 호스트머신이 큐파일이 비었는지 여부를 판단하고, 큐파일에 엔트리가 남아 있다고 판단이 되면, 다시 큐파일을 읽고 읽은 엔트리는 삭제하는 과정을 상기 큐파일에 남은 엔트리가 없을 때까지 반복되는 것을 특징으로 하는 스트림 분할방법.
KR1020210029581A 2021-03-05 2021-03-05 Ssd 멀티스트림 운용을 위한 스트림 분할 방법 KR102491809B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210029581A KR102491809B1 (ko) 2021-03-05 2021-03-05 Ssd 멀티스트림 운용을 위한 스트림 분할 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210029581A KR102491809B1 (ko) 2021-03-05 2021-03-05 Ssd 멀티스트림 운용을 위한 스트림 분할 방법

Publications (2)

Publication Number Publication Date
KR20220125895A true KR20220125895A (ko) 2022-09-15
KR102491809B1 KR102491809B1 (ko) 2023-01-27

Family

ID=83281519

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210029581A KR102491809B1 (ko) 2021-03-05 2021-03-05 Ssd 멀티스트림 운용을 위한 스트림 분할 방법

Country Status (1)

Country Link
KR (1) KR102491809B1 (ko)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110130887A (ko) * 2010-05-28 2011-12-06 주식회사 하이닉스반도체 반도체 메모리 장치 및 그 동작 방법
JP2014134877A (ja) * 2013-01-08 2014-07-24 Aplix Ip Holdings Corp 情報処理装置およびキュー記憶方法
KR20140112303A (ko) * 2013-03-13 2014-09-23 삼성전자주식회사 불휘발성 메모리 장치, 전자 장치 그리고 그것을 포함하는 컴퓨팅 시스템
KR20160123987A (ko) * 2015-04-17 2016-10-26 삼성전자주식회사 쿼리들의 로드 밸런싱을 위한 레플리케이션 매니저 및 쿼리들의 로드 밸런싱 방법
JP2018041218A (ja) * 2016-09-06 2018-03-15 日本電信電話株式会社 外部データベース収容装置、方法及びプログラム
KR20190098516A (ko) * 2018-02-14 2019-08-22 삼성전자주식회사 어플리케이션과 관련된 데이터를 관리하기 위한 방법 및 그 전자 장치
KR102147905B1 (ko) 2016-05-25 2020-10-14 삼성전자주식회사 어드레스 기반의 멀티-스트림 스토리지 장치 액세스
KR20200143912A (ko) * 2019-06-17 2020-12-28 삼성전자주식회사 멀티-스트리밍을 지원하는 스토리지 장치 및 비휘발성 메모리 장치의 동작 제어 방법

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110130887A (ko) * 2010-05-28 2011-12-06 주식회사 하이닉스반도체 반도체 메모리 장치 및 그 동작 방법
JP2014134877A (ja) * 2013-01-08 2014-07-24 Aplix Ip Holdings Corp 情報処理装置およびキュー記憶方法
KR20140112303A (ko) * 2013-03-13 2014-09-23 삼성전자주식회사 불휘발성 메모리 장치, 전자 장치 그리고 그것을 포함하는 컴퓨팅 시스템
KR20160123987A (ko) * 2015-04-17 2016-10-26 삼성전자주식회사 쿼리들의 로드 밸런싱을 위한 레플리케이션 매니저 및 쿼리들의 로드 밸런싱 방법
KR102147905B1 (ko) 2016-05-25 2020-10-14 삼성전자주식회사 어드레스 기반의 멀티-스트림 스토리지 장치 액세스
JP2018041218A (ja) * 2016-09-06 2018-03-15 日本電信電話株式会社 外部データベース収容装置、方法及びプログラム
KR20190098516A (ko) * 2018-02-14 2019-08-22 삼성전자주식회사 어플리케이션과 관련된 데이터를 관리하기 위한 방법 및 그 전자 장치
KR20200143912A (ko) * 2019-06-17 2020-12-28 삼성전자주식회사 멀티-스트리밍을 지원하는 스토리지 장치 및 비휘발성 메모리 장치의 동작 제어 방법

Also Published As

Publication number Publication date
KR102491809B1 (ko) 2023-01-27

Similar Documents

Publication Publication Date Title
US7610434B2 (en) File recording apparatus
US8521985B2 (en) Storage subsystem
US11249664B2 (en) File system metadata decoding for optimizing flash translation layer operations
KR100769402B1 (ko) 메모리 카드
CN108604165B (zh) 存储装置
CN108733306B (zh) 一种文件合并方法及装置
WO2019001020A1 (zh) 基于分布式系统的存储空间整理方法、装置及系统
CN107193503B (zh) 一种数据重删方法及存储设备
US10599619B2 (en) Techniques for managing file fragmentation at a computing device
US10235071B2 (en) Tiered storage system, storage controller and tiering control method
US20060004969A1 (en) High-speed accessible memory featuring reduced data movement
CN110795386B (zh) 一种数据写入方法和服务端
CN107430546B (zh) 一种文件更新方法及存储设备
KR100907477B1 (ko) 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법
US10180901B2 (en) Apparatus, system and method for managing space in a storage device
CN108829345B (zh) 日志文件的数据处理方法和终端设备
CN108664217B (zh) 一种降低固态盘存储系统写性能抖动的缓存方法及系统
CN115470157A (zh) 预取方法、电子设备、存储介质及程序产品
KR102491809B1 (ko) Ssd 멀티스트림 운용을 위한 스트림 분할 방법
CN117331487A (zh) 一种数据重删方法及相关系统
CN110389706B (zh) 一种指纹回收方法以及存储系统
CN114974365A (zh) Ssd有限窗口数据去重识别方法、装置和计算机设备
KR20100040559A (ko) 완전 연관 섹터 변환 기법을 사용하는 플래시 변환 계층에서 합병연산을 줄이기 위한 플래시 메모리 관리 방법및 장치
KR100941423B1 (ko) 메모리의 페이지 할당 방법 및 이를 수행하기 위한프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체
CN116010113B (zh) 用于管理智能卡内存的方法及智能卡

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant