KR20220040348A - 데이터 스트림 관리 방법 및 장치 - Google Patents
데이터 스트림 관리 방법 및 장치 Download PDFInfo
- Publication number
- KR20220040348A KR20220040348A KR1020210003524A KR20210003524A KR20220040348A KR 20220040348 A KR20220040348 A KR 20220040348A KR 1020210003524 A KR1020210003524 A KR 1020210003524A KR 20210003524 A KR20210003524 A KR 20210003524A KR 20220040348 A KR20220040348 A KR 20220040348A
- Authority
- KR
- South Korea
- Prior art keywords
- file
- data streams
- data stream
- data
- files
- Prior art date
Links
- 238000007726 management method Methods 0.000 title claims description 60
- 230000015654 memory Effects 0.000 claims abstract description 51
- 238000000034 method Methods 0.000 claims abstract description 29
- 230000003321 amplification Effects 0.000 abstract description 4
- 238000003199 nucleic acid amplification method Methods 0.000 abstract description 4
- 230000004048 modification Effects 0.000 description 12
- 238000012986 modification Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 238000012544 monitoring process Methods 0.000 description 9
- 238000004458 analytical method Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 238000012217 deletion Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000007423 decrease Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000010219 correlation analysis Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000003064 k means clustering Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000013403 standard screening design Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/188—Virtual file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/164—File meta data generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1734—Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
- G06F18/232—Non-hierarchical techniques
- G06F18/2321—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions
- G06F18/23213—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions with fixed number of clusters, e.g. K-means clustering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Probability & Statistics with Applications (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
데이터 스트림을 관리하는 방법은, 현재 오픈된 파일의 속성 정보를 얻는 단계, 및 상기 파일의 상기 속성 정보 및 데이터 스트림들의 현재 상태 정보에 따라 상기 파일을 데이터 스트림에 분산시키는 단계를 포함한다.
Description
본 명세서에서 설명된 발명의 개념(들)은 데이터 메모리의 기술 분야에 관한 것으로, 보다 상세하게는, 데이터 스트림 관리 방법, 데이터 스트림 관리 방법에 따라 동작하는 스토리지 장치, 및 데이터 스트림 관리 장치에 관한 것이다.
메모리의 성능을 향상시키기 위해, 일반적으로 쓰여진(written) 데이터를 효율적으로 분산시키는(distribute) 것이 필요하다. 예를 들어, 만약 쓰여진 데이터가 효율적으로 분산될 수 있고 수명 주기들이 유사한 데이터가 메모리의 동일한 블록에 저장될 수 있으면 가비지 컬렉션(GC, garbage collection)에서 유효한 페이지들의 이동이 크게 감소한다. 그 결과, 쓰기 증폭 인자(WAF; write amplification factor)가 감소될 수 있고, 그리고 메모리의 작동 수명이 크게 증가할 수 있고 메모리 성능이 향상될 수 있다.
데이터를 분산시키기 위한 기존 방법들은 일반적으로 운영 체제 커널 및/또는 애플리케이션의 코드에 대한 수정들을 요구한다. 예를 들어, 데이터 분산의 일부 방법들은 논리 블록 어드레스의 액세스 특성들에 기초하여 데이터를 분산시키는 것과 관련된다. 논리 블록 어드레스의 액세스 특성 정보를 수집하는 과정은 운영 체제 커널의 드라이버 계층 코드에 대한 수정들을 요구한다. 데이터 분산의 일부 방법들은 프로그램 컨텍스트(context) 정보에 기초하여 데이터를 분산시키는 것과 관련되고 프로그램 컨텍스트 정보를 수집하는 과정은 일부 애플리케이션들의 코드 및 운영 체제 커널의 코드에 대한 수정들을 요구한다. 데이터 분산의 일부 방법들은 인간의 개입뿐만 아니라, 운영 체제 커널의 파일 시스템 계층의 코드에 대한 수정들을 요구하는 것과 관련된다.
본 발명의 목적은 파일의 속성 정보 및 데이터 스트림들의 상태 정보에 따라 파일을 분산시키는 데이터 스트림 관리 방법 및 장치를 제공하는데 있다.
본 명세서에서 설명된 예시적인 실시 예들은 데이터 스트림 관리 방법 및 장치를 제공한다.
본 개시의 일 양상에 따르면, 데이터 스트림 관리 방법은, 현재 오픈된 파일의 속성 정보를 얻는 단계; 및 상기 파일의 상기 속성 정보 및 데이터 스트림들의 현재 상태 정보에 따라 상기 파일을 데이터 스트림에 분산시키는 단계를 포함한다.
본 개시의 다른 양상에 따르면, 데이터 스트림 관리 장치가 제공되고, 상기 데이터 스트림 관리 장치는, 현재 오픈된 파일의 속성 정보를 얻도록 구성된 파일 모니터링 모듈; 및 상기 파일의 상기 속성 정보 및 데이터 스트림들의 현재 상태 정보에 따라 상기 파일을 데이터 스트림에 분산시키도록 구성된 스트림 관리 모듈을 포함한다.
본 개시의 다른 양상에 따르면, 스토리지 장치는 메모리 및 데이터 스트림 관리 장치를 포함한다. 상기 메모리는 복수의 데이터 스트림들에 따라 논리적으로 배열된 쓰여진(written) 데이터를 저장하도록 구성된다. 상기 데이터 스트림 관리 장치는 현재 오픈된 파일의 속성 정보를 얻고, 그리고 상기 파일의 상기 속성 정보 및 상기 복수의 데이터 스트림들의 현재 상태 정보에 따라 상기 파일을 데이터 스트림에 분산시키도록 구성된다.
본 개시의 실시 예들에 따르면, 파일의 속성 정보 및 데이터 스트림들의 상태 정보에 따라 파일을 분산시키는 데이터 스트림 관리 방법 및 장치를 제공된다.
또한, 본 개시의 실시 예들에 따르면, 데이터가 효율적으로 분산되고, WAF(write amplification factor)가 감소되고, 메모리의 작동 수명을 증가시키는, 데이터 스트림 관리 방법 및 장치가 제공된다.
실시 예들을 예시적으로 설명하는 첨부된 도면들과 함께 후술되는 상세한 설명들로부터, 예시적인 실시 예들의 목적들, 특징들, 및 이점들은 보다 명확하게 이해될 것이다.
도 1은 예시적인 실시 예에 따른 데이터 스트림 관리 방법의 순서도를 도시한다.
도 2는 예시적인 실시 예에 따른 현재 상태가 제1 프리셋 조건을 만족시키는 데이터 스트림에 파일을 분산시키는 개략적인 도면을 도시한다.
도 3은 예시적인 실시 예에 따른 파일들을 분류하는 개략적인 도면을 도시한다.
도 4는 예시적인 실시 예에 따른 데이터 스트림 관리 장치의 블록도를 도시한다.
도 5는 예시적인 실시 예에 따른 전자 기구의 운영 체제의 부분 프레임워크 도면을 도시한다.
도 6은 예시적인 실시 예에 따른 컴퓨팅 장치의 블록도를 도시한다.
도 1은 예시적인 실시 예에 따른 데이터 스트림 관리 방법의 순서도를 도시한다.
도 2는 예시적인 실시 예에 따른 현재 상태가 제1 프리셋 조건을 만족시키는 데이터 스트림에 파일을 분산시키는 개략적인 도면을 도시한다.
도 3은 예시적인 실시 예에 따른 파일들을 분류하는 개략적인 도면을 도시한다.
도 4는 예시적인 실시 예에 따른 데이터 스트림 관리 장치의 블록도를 도시한다.
도 5는 예시적인 실시 예에 따른 전자 기구의 운영 체제의 부분 프레임워크 도면을 도시한다.
도 6은 예시적인 실시 예에 따른 컴퓨팅 장치의 블록도를 도시한다.
후술되는 청구범위 및 이의 균등물에 의해 정의된 실시 예들의 포괄적인 이해를 돕기 위해 첨부된 도면들을 참조하여 다음의 설명이 제공된다. 이해를 돕기 위해 다양하고 구체적인 세부 사항들이 포함되지만, 이러한 세부 사항들은 예시적인 것에 불과하다. 그러므로, 본 개시가 속한 기술 분야에서의 통상의 기술자는 본 개시의 기술적 사상 및 범위를 벗어나지 않으면서 본 명세서에서 설명된 실시 예들에 대한 다양한 변경들 및 수정들이 이루어질 수 있음을 인식할 것이다. 또한, 명확성 및 간결성을 위해, 잘-알려진 기능들 및 구조들에 대한 설명들은 생략된다.
도 1은 본 발명의 예시적인 실시 예에 따른 데이터 스트림 관리 방법의 순서도를 도시한다.
도 1을 참조하면, 단계 S110에서, 현재 오픈된 파일의 속성(attribute) 정보가 얻어진다. 오픈된 파일들은 (컴퓨터와 같은) 전자 장치의 운영 체제에 배포된(deployed) 애플리케이션들에 의해 동작할 수 있는 파일들이다. 데이터베이스 파일을 예로 들면, 전자 장치의 운영 체제에 배포된 MySQL, PostgreSQL, Cassandra, RocksDB, MongoDB, 또는 Docker, 등에 의해 데이터베이스 파일이 동작할 수 있다. 물론, 오픈된 파일은 또한 전자 파일의 다른 타입일 수 있으며, 본 개시는 예시적인 실시 예들에서 언급된 파일의 타입으로 특별히 제한되는 것은 아니다. 오픈된 파일은 (컴퓨터와 같은) 전자 장치의 스토리지 장치 또는 전자 장치와 연결된 스토리지 장치에 이미 쓰여진, 쓰여질, 이미 읽어진, 또는 읽어질 데이터를 포함할 수 있다. 스토리지 장치의 예시는 솔리드 스테이트 드라이브(SSD; solid state drive)이다. 도 1의 데이터 스트림 관리 방법은 (컴퓨터와 같은) 전자 장치에서의 컨트롤러 또는 전자 장치와 연결되고 전자 장치로부터 분리된 (SSD와 같은) 스토리지 장치에서의 컨트롤러에 의해 부분적으로 또는 전체적으로 수행될 수 있다. 또한, 이하의 도 6의 실시 예에서, 도 1의 방법을 포함하는 본 명세서에서 설명된 방법들의 일부 또는 모든 양상들을 수행하는 명령어들을 실행하는 프로세서(310) 및 명령어들을 저장하는 메모리(320)와 함께, 컨트롤러의 예시가 설명된다.
파일의 속성 정보는 현재 오픈된 파일의 생성, 오픈, 수정, 클로즈, 삭제 및 이와 유사한 것과 같은 동작들과 관련된 정보를 포함할 수 있다. 특정 데이터베이스 파일을 예로 들면, 데이터베이스 파일의 속성들은 다음을 포함할 수 있다:
IN_ACCESS /* File was accessed */, 파일이 액세스 되었음을 나타냄
IN_MODIFY /* File was modified */, 파일이 수정되었음을 나타냄
IN_ATTRIB /* Metadata changed */, 메타데이터가 변경되었음을 나타냄
IN_CLOSE_WRITE /* Writable file was closed */, 쓰기 가능한 파일이 클로즈 되었음을 나타냄
IN_CLOSE_NOWRITE /* Unwritable file closed */, 쓰기 불가능한 파일이 클로즈 되었음을 나타냄
IN_OPEN /* File was opened */, 파일이 오픈됨을 나타냄
IN_MOVED_FROM /* File was moved from X */, 파일이 어딘가로부터 이동되었음을 나타냄
IN_MOVED_TO /* File was moved to Y */, 파일이 어딘가로 이동되었음을 나타냄
IN_CREATE /* Subfile was created */, 서브파일(subfile)이 생성되었음을 나타냄
IN_DELETE /* Subfile was deleted */, 서브파일이 삭제되었음을 나타냄
IN_DELETE_SELF /* Self was deleted */, 셀프-삭제, 즉, 하나의 실행 가능한 파일이 실행 동안 스스로 삭제됨을 나타냄
IN_MOVE_SELF /* Self was moved */ 셀프-이동, 즉, 하나의 실행 가능한 파일이 실행 동안 스스로 이동됨을 나타냄
대안적으로, 획득된 속성 정보는 구체적으로 현재 오픈된 파일의 속성의 발생 횟수, 워드 길이, 또는 시간(때, time)을 포함할 수 있다. 예를 들어, 파일이 액세스되는 횟수, 수정되는 파일의 워드 길이, 생성되는 파일의 시간(때), 등.
각 파일은 운영 체제 커널의 가상 파일 시스템에서 하나의 이노드(inode)(인덱스 노드(index node))에 대응하고, 이노드는 파일의 속성 정보를 저장한다. 단계 S110에서, 현재 오픈된 파일의 속성 정보는 운영 체제 커널에 대응하는 툴(tool)들을 호출함으로써 가상 파일 시스템에서의 이노드를 모니터링하여 얻어질 수 있다. 리눅스(Linux) 시스템을 예로 들면, 파일의 속성 정보는 리눅스 커널에 의해 제공된 아이노티파이(inotify)와 같은 툴들을 호출하여 이노드들로부터 얻어질 수 있다. 파일의 속성 정보는 또한 다른 방식들로 이노드로부터 얻어질 수 있고, 본 개시는 예시적인 실시 예들에서 설명된 파일의 속성 정보를 획득하는 특정 방식으로 제한되지 않음이 이해될 것이다.
대안적으로, 현재 오픈된 파일의 획득된 속성 정보는 파일 속성 테이블에 저장될 수 있다. 이노드 번호는 파일에 일-대-일로 대응하기 때문에, 파일 속성 테이블에서, 각 이노드 번호는 대응하는 파일의 번호로 사용될 수 있고, 그리고 각 파일의 속성 정보는 파일에 대응하는 이노드 번호 아래에 기록된다.
예를 들어, 파일 속성 테이블의 형식은 표 1에서 도시된 것과 같을 수 있다. 표 1에서, 다수의 파일들에 대응하는 이노드 번호들은 (제1 이노드(Inode 1), 제2 이노드(Inode 2), 및 제3 이노드(Inode 3), 등과 같이) 제1 행에서 기록될 수 있고, 파일들의 여러 속성 타입들은 (접근 및 수정, 등과 같이) 제1 열에 기록될 수 있다. 각 이노드 번호 아래의 열은 각각 속성에 대응하는 속성 정보(발생들의 횟수, 워드 길이, 또는 시간(때) 등)를 기록한다. 예를 들어, 제1 이노드 아래 첫 번째 셀에 기록된 “200”은 제1 이노드에 대응하는 파일이 200번 액세스 되었음을 의미한다.
데이터 스트림들은 SSD와 같은 메모리 장치에서 오픈된 데이터의 스트림들일 수 있고, 그리고 데이터 스트림 식별자들에 의해 식별될 수 있다. 예를 들어, 호스트 시스템은 SSD에서 데이터 스트림들을 오픈할 수 있고 지정된 스트림들에 할당된 쓰기 요청들을 통해 SSD에 쓰기 위한 데이터를 분산(또는 배포)(distribute)시킬 수 있다. 데이터 스트림들을 사용하면, 특정 데이터 스트림에서의 데이터가 NAND 플래시 블록 또는 “소거 유닛(erase unit)”과 같은 물리적으로 관련된 NAND 플래시 공간에 함께 기록되는 것을 보장할 수 있고, 또한 특정 데이터 스트림에서의 데이터가 다른 데이터 스트림들에서의 데이터와 분리되는 것도 보장할 수 있다. 파일들을 지정된 데이터 스트림들에 분산시킴으로써 파일들에 대한 데이터 스트림 분산이 완료된 후, 파일들이 분산된 특정 데이터 스트림들의 식별자들은 또한 파일 속성 테이블에 기록될 수 있다.
표 1에서, '액세스(access)'의 행은 파일이 액세스된 횟수를 가리키고; '수정(modify)'의 행은 파일이 수정된 횟수를 가리키고; '메타데이터 변경(metadata change)'의 행은 메타데이터가 변경된 횟수를 가리키고; '클로즈 쓰기(close write)'의 행은 쓰기 가능한 파일이 클로즈된 시간(때)을 가리키고; '클로즈 쓰기 없음(close nowrite)'의 행은 쓰기 불가능한 파일이 클로즈된 시간을 가리키고; '오픈(open)'의 행은 파일이 오픈된 시간을 가리키고; '무브 프롬(moved from)'의 행은 파일이 어딘가로부터 이동된 시간을 가리키고; '무브(이동) 투(moved to)'의 행은 파일이 어딘가로 이동된 시간을 가리키고; '생성(create)'의 행은 새로운 파일이 생성된 시간을 가리키고; '삭제(deleted)'의 행은 파일이 삭제된 시간을 가리키고; '삭제 셀프(delete self)'의 행은 셀프-삭제된 시간, 즉, 하나의 실행 가능한 파일이 실행 동안 스스로 삭제된 시간을 가리키고; '이동 샐프(move self)'의 행은 셀프-이동된 시간, 즉, 하나의 실행 가능한 파일이 실행 동안 스스로 이동된 시간을 가리키고; '파일 타입(file type)'의 행은 파일의 타입을 가리키고; '파일 크기(file size)'의 행은 파일의 크기를 가리키고; '스트림 ID(stream ID)'의 행은 파일이 분산된 데이터 스트림의 식별자를 가리킨다.
대안적으로, 단계 S110에서, 파일이 오픈되는 동안 계속해서 파일의 속성 정보를 얻기 시작할 수 있다. 파일의 속성 정보를 얻는 기간은 실제 설계 요구에 따라 결정될 수 있다. 예를 들어, 기간은 파일이 오픈된 후에, 10초 이내, 50초 이내, 또는 1시간 이내, 등일 수 있고, 그리고 기간은 또한 파일의 오픈부터 파일의 클로즈까지 경과된 시간일 수 있다. 파일의 속성 정보는 이러한 기간 동안 변경될 수 있음이 이해될 것이다. 파일의 속성 정보가 변경되면, 이러한 변경된 속성 정보가 얻어질 수 있고, 그리고 이러한 변경된 속성 정보는 또한 파일 속성 테이블로 업데이트될 수 있다.
단계 S120에서, 파일의 속성 정보 및 데이터 스트림들의 현재 상태 정보에 따라 파일은 데이터 스트림에 분산될 수 있다.
파일의 속성 정보 및 데이터 스트림들의 현재 상태 정보에 따라, 데이터 스트림들 및 파일의 대응 관계들이 결정되고, 따라서 파일이 대응하는 데이터 스트림에 분산된다.
일반적인 워크로드(workload) 하에, 데이터의 이러한 특성에 기초하여, 데이터는 파일의 형태로 관리되며, 예시적인 실시 예에 의해 제안된 데이터 스트림 관리 방법은 파일의 속성 정보에 기초하여 각 파일을 대응하는 데이터 스트림에 자동적으로 분산시키고, 파일의 속성 정보는 운영 체제 커널의 가상 파일 시스템에서 직접적으로 획득될 수 있고, 즉, 운영 체제 커널의 코드를 수정할 필요가 없으며, 수정을 위해 애플리케이션의 코드를 수정할 필요가 없고, 따라서 운영 체제 커널 및 애플리케이션에 미치는 영향을 감소시킨다. 그리고 데이터 스트림 관리 방법은 또한 서로 다른 주기(싸이클, cycle)의 데이터의 분리를 효율적으로 실현할 수 있다.
파일의 속성 정보는 파일의 오픈부터 클로즈까지 전체 주기 동안 변경될 수 있음이 이해될 것이다. 예시적인 실시 예들은 파일의 초기 속성 정보, 변경된 속성 정보, 등에 기초하여 파일에 대한 데이터 스트림 분산을 한 번 이상 수행할 수 있고, 따라서 데이터 스트림 분산의 결과가 더 합리적인 것을 보장한다. 이 후, 파일을 데이터 스트림에 분산시키는 방법이 설명된다.
대안적으로, 파일의 속성 정보는 파일의 타입을 포함하고, 단계 S110은: 파일이 오픈되면 파일의 속성 정보가 즉시 얻어지는 것을 포함할 수 있고, 그리고 단계 S120은: 파일이 오픈되면, 파일은 현재 상태가 파일의 타입 및 데이터 스트림들의 현재 상태 정보에 따른 제1 프리셋(preset) 조건을 만족시키는 데이터 스트림에 분산되는 것을 포함할 수 있다.
파일이 방금 열렸을 때 쓰기가 발생하지 않았으며, 파일로부터 추출될 수 있는 속성 정보는 제한적이고, 그리고 파일의 획득된 속성 정보는 적다는 것이 이해될 것이다. 일반적으로 말하자면, 파일이 방금 열렸을 때 파일의 타입 및 오픈 시간이 획득될 수 있다.
예시적인 실시 예에 의해 제안된 데이터 스트림 관리 방법은 파일이 오픈되면 즉시 파일에 대한 데이터 스트림 분산을 한 번 완료할 수 있고, 그리고 결국(적시에) 데이터 스트림 분산의 최적화 효과를 보장할 수 있다.
대안적으로, 데이터 스트림들의 현재 상태 정보는, 데이터 스트림들에 현재 분산된 파일들의 타입; 데이터 스트림들에 현재 분산된 파일들의 수; 데이터 스트림들에 현재 분산된 파일들의 오픈 기간 정보(opening duration information); 및 데이터 스트림들에 현재 분산된 파일들이 수정된 횟수, 중 적어도 하나를 포함한다. 오픈 기간 정보의 예로서 각 파일이 오픈된 기간의 정보가 있다.
여기서, 파일의 오픈 기간은 파일이 오픈된 순간(moment)부터 현재 순간까지 경과된 시간 구간을 지칭함에 유의해야 한다.
데이터 스트림들에 현재 분산된 파일들의 타입을 데이터 스트림 분산을 위한 기초로 사용하는 것은 동일한 타입의 파일들이 하나의 데이터 스트림에 분산될 확률을 증가시킬 수 있다. 데이터 스트림들에 현재 분산된 파일들의 오픈 기간들을 사용하여, 데이터 스트림 분산을 위한 기초로서 데이터 스트림들에 현재 분산된 파일들의 수 및 데이터 스트림들에 현재 분산된 파일들이 수정된 횟수는 각 데이터 스트림들의 데이터 볼륨(volume)들의 균형을 맞출 수 있고, 따라서 각 데이터 스트림들의 데이터 볼륨들은 대부분 일관되게 유지된다.
대안적으로, 데이터 스트림들에 현재 분산된 파일들의 오픈 기간 정보는 데이터 스트림들에 현재 분산된 모든 파일들의 평균(average) 오픈 기간; 및 데이터 스트림들에 현재 분산된 모든 파일들의 전체(total) 오픈 기간, 중 적어도 하나를 포함한다.
데이터 스트림들에 현재 분산된 모든 파일들의 평균 오픈 기간은 현재 순간에서 데이터 스트림들에 현재 분산된 모든 파일들의 오픈 기간들의 평균 값을 지칭한다. 데이터 스트림들에 현재 분산된 모든 파일들의 전체 오픈 기간은 현재 순간에서 데이터 스트림들에 현재 분산된 모든 파일들의 오픈 기간들의 합계 값을 지칭한다.
도 2는 예시적인 실시 예에 따른 현재 상태가 제1 프리셋 조건을 만족시키는 데이터 스트림에 파일을 분산시키는 개략적인 도면을 도시한다.
도 2를 참조하면, 제1 데이터 스트림(data stream 1)은 현재 순간에 5개의 파일들로 분산되었다. 이러한 5개의 파일들의 오픈 기간들을 8s, 2s, 5s, 6s, 및 4s로 가정하면, 제1 데이터 스트림에 현재 분산된 모든 파일들의 전체 오픈 기간은 25s이고, 그리고 평균 오픈 기간은 5s이다.
대안적으로, 데이터 스트림들의 현재 상태 정보는, 데이터 스트림들에 현재 분산된 파일들의 타입, 데이터 스트림들에 현재 분산된 파일들의 수, 데이터 스트림들에 현재 분산된 모든 파일들의 평균 오픈 기간, 및 데이터 스트림들에 현재 분산된 모든 파일들의 전체 오픈 기간, 중 적어도 하나를 포함한다.
대안적으로, 제1 프리셋(preset) 조건은 다음 조건들 중 적어도 하나를 포함할 수 있다.
제1 조건: 데이터 스트림들에 현재 분산된 파일들의 타입은 데이터 스트림에 분산될 파일의 타입과 동일하다.
제2 조건: 데이터 스트림들에 현재 분산된 파일들의 수는 가장 적다.
제3 조건: 데이터 스트림들에 현재 분산된 모든 파일들의 평균 오픈 기간은 가장 짧다.
제4 조건: 데이터 스트림들에 현재 분산된 모든 파일들의 전체 오픈 기간은 가장 짧다.
제5 조건: 데이터 스트림들에 현재 분산된 파일들이 수정된 횟수는 가장 적다.
대안적으로, 상기 조건들 중 적어도 2개가 선택되면, 각 조건의 우선 순위가 프리셋될 수 있다.
예를 들어, 제1 조건 및 제2 조건은 데이터 스트림의 현재 상태가 제1 프리셋 조건을 만족하는 것을 결정하기 위해 선택되고, 여기서 제1 조건의 우선 순위는 제2 조건의 우선 순위보다 높다.
도 2를 예로 들면, 제2 조건은 우선 제1 데이터 스트림에서 제6 데이터 스트림까지 선택하는데 사용되고, 즉, 제1 데이터 스트림에서 제6 데이터 스트림까지 현재 분산된 파일들의 수가 가장 적은 데이터 스트림이 선택되고, 그리고 제4 데이터 스트림 및 제6 데이터 스트림은 제2 조건에 따라 선택된다.
그 다음 제3 조건은 제4 데이터 스트림 및 제6 데이터 스트림 사이에서 선택하는데 사용되고, 즉, 제4 데이터 스트림 및 제6 데이터 스트림으로부터 현재 분산된 모든 파일들의 평균 오픈 기간이 가장 짧은 데이터 스트림이 선택되고, 제4 데이터 스트림은 제3 조건에 따라 선택되고, 제4 데이터 스트림은 현재 상태가 제1 프리셋 조건을 만족시키는 데이터 스트림이라고 결정되고, 그리고 새로 오픈된 파일은 제4 데이터 스트림에 분산된다.
대안적으로, 데이터 스트림들의 스코어(score)들은 데이터 스트림들의 현재 상태들이 다양한 조건들을 만족시키는지 여부에 따라 계산될 수 있고, 스코어가 가장 높은 데이터 스트림은 현재 상태가 제1 프리셋 조건을 만족시키는 데이터 스트림으로 간주되고, 그리고 새로 오픈된 파일은 스코어가 가장 높은 데이터 스트림에 분산된다.
예를 들어, 각 조건에 대한 스코어 값은 미리-설정(pre-set)된다. 데이터 스트림들의 현재 상태들이 특정 조건을 만족시키면, 조건의 스코어 값이 데이터 스트림들에 할당된다. 데이터 스트림들의 현재 상태들이 특정 조건을 만족시키지 않으면, 데이터 스트림들의 스코어 값들은 해당 조건에서 제로(zero)로 결정된다. 다양한 조건들 하에 데이터 스트림들의 스코어 값들의 합계는 데이터 스트림들의 스코어들로 사용될 수 있다.
대안적으로, 각 조건의 스코어 값은 각 조건의 중요성에 따라 결정될 수 있다. 조건의 중요성이 높을수록, 스코어가 높아진다. 예를 들어, 제1 조건은 40의 스코어 값을 갖고, 제2 조건은 25의 스코어 값을 갖고, 제3 조건은 20의 스코어 값을 갖고, 그리고 제4 조건은 15의 스코어 값을 갖는다.
예시적인 실시 예에서, 파일이 오픈될 때 파일에 대한 데이터 스트림 분산이 수행된 후, 다른 방법을 사용하여 다시 파일에 대한 데이터 스트림 분산이 수행될 수 있다. 물론, 파일이 오픈될 때 파일을 데이터 스트림에 분산시킬 필요는 없지만, 파일이 일정 시간 동안 오픈된 후에, 파일은 다른 방법을 사용하여 데이터 스트림에 분산될 수 있다. 이 후, 파일을 데이터 스트림에 분산시키는 다른 방법이 설명된다.
대안적으로, 단계 S110은: 파일이 오픈 상태이면 프리셋 시간 간격(preset time interval)에서 파일의 속성 정보가 얻어질 수 있는 것을 포함할 수 있고, 그리고 단계 S120은: 파일이 오픈 상태이면, 프리셋 시간 간격에서, 현재 상태가 현재 순간까지 획득된 파일의 속성 정보 및 데이터 스트림들의 현재 상태 정보에 따른 제2 프리셋 조건을 만족시키는 데이터 스트림에 파일이 분산되는 것을 포함할 수 있다.
파일이 일정 시간 동안 오픈으로 남아있으면, 각 프리셋 시간 간격에서, 생성, 오픈, 수정, 클로즈, 삭제, 등과 같은 동작들이 발생할 수 있고, 단계 S110에서 획득된 파일의 속성 정보는 변할 수 있으며, 파일의 타입 및 오픈 시간을 포함하는 더 많은 속성 정보가 획득될 수 있음이 이해 가능하다. 단계 S120에서, 파일은 현재 순간까지 획득된 파일의 속성 정보에 따라 데이터 스트림에 분산될 수 있다.
대안적으로, 프리셋 시간 간격을 계산하기 위한 시작 순간은 필요에 따라 결정될 수 있고, 시작 순간은 파일이 오픈된 시간일 수 있고, 그리고 또한 파일이 오픈된 후 특정 순간일 수 있으며, 예를 들어, 시작 순간은 파일에 대한 제1(첫 번째) 데이터 스트림 분산이 완료된 순간 또는 파일에 대한 제1 데이터 스트림 분산이 완료된 후 특정 순간일 수 있다. 여기서, 파일에 대한 제1 데이터 스트림 분산은 상술된 바와 같이 파일이 오픈될 때 파일을 데이터 스트림에 분산시키는 과정을 지칭함에 유의해야 한다.
프리셋 시간 간격을 계산하기 위한 시작 순간이 파일에 대한 제1 데이터 스트림 분산이 완료된 시간 또는 파일에 대한 제1 데이터 스트림 분산이 완료된 후의 순간인 경우, 단계 S120에서, 파일은 데이터 스트림 분산을 적어도 2번 수행할 수 있다. 파일에 대한 제1 데이터 스트림 분산은 상술된 바와 같이 “파일이 오픈되면, 파일의 타입 및 데이터 스트림들의 현재 상태 정보에 따라, 파일이 현재 상태가 제1 프리셋 조건을 만족시키는 데이터 스트림에 분산되는 것”을 지칭하고, 파일에 대한 제2 및 후속 데이터 스트림 분산은 상술된 바와 같이 “파일이 오픈 상태이면, 프리셋 시간 간격에서, 현재 상태가 현재 순간까지 획득된 파일의 속성 정보 및 데이터 스트림들의 현재 상태 정보에 따른 제2 프리셋 조건을 만족시키는 데이터 스트림에 파일이 분산되는 것”을 지칭한다.
시작 순간부터 시작하는 파일들의 오픈 기간이 프리셋 시간 간격보다 적어도 크면, 파일은 현재 순간까지 획득된 파일의 속성 정보에 따라 데이터 스트림에 분산될 수 있음이 이해될 수 있다.
예를 들어, 시작 순간부터 시작하는 파일의 오픈 기간이 1개의 프리셋 시간 간격보다 크고 2개의 프리셋 시간 간격들보다 작은 경우, 데이터 스트림 분산은 파일에 대해 한번 수행될 수 있고; 특히, 제1 현재 순간이 1개의 프리셋 시간 간격 후에 도달한 때, 제1 현재 순간까지 획득된 파일의 속성 정보 및 데이터 스트림들의 현재 상태 정보에 따라(즉, 파일의 속성 정보는 제1 현재 순간까지 지속적으로 획득되었음), 파일은 데이터 스트림에 분산될 수 있다.
파일의 오픈 기간이 2개의 프리셋 시간 간격들보다 크고 3개의 프리셋 시간 간격들보다 작은 경우, 데이터 스트림 분산은 파일에 대해 2번 수행될 수 있다. 특히, 제2 현재 순간이 파일에 대해 제1 데이터 스트림 분산이 수행된 순간으로부터 시작하여 2개의 프리셋 시간 간격들 후에 도달한 때, 제2 현재 순간까지 획득된 파일의 속성 정보 및 데이터 스트림의 현재 상태 정보에 따라(즉, 파일의 속성 정보는 제2 현재 순간까지 지속적으로 획득되었음), 파일은 데이터 스트림에 분산될 수 있다.
대안적으로, 파일을 현재 상태가 현재 순간까지 획득된 파일의 속성 정보 및 데이터 스트림들의 현재 상태 정보에 따른 제2 프리셋 조건을 만족시키는 데이터 스트림에 분산시키는 것은: 파일의 얻어진 속성 정보에서 파일의 서브 속성 세트를 추출하는 것, 그리고 파일을 현재 상태가 파일의 서브 속성 세트 및 데이터 스트림들의 현재 상태 정보에 따른 제2 프리셋 조건을 만족시키는 데이터 스트림에 분산시키는 것을 포함하고, 여기서 서브 속성 세트는 파일의 데이터 수명 및/또는 액세스 모드를 반영할 수 있다.
예를 들어, 서브 속성 세트는 파일의 오픈, 수정, 클로즈, 삭제, 및 타입, 등과 같은 속성들에 대한 정보를 포함할 수 있다.
대안적으로, 파일의 서브 속성 세트는, 상관 분석 기법에 기초하여, 파일의 획득된 속성 정보에서 추출된다.
예를 들어, 상관 분석 기법은 피어슨 상관 계수(Pearson correlation coefficient), 켄달 랭크 상관 계수(Kendall rank correlation coefficient), 및 이와 유사한 것에 기초한 기법들을 포함할 수 있다.
파일이 오픈될 때 얻어진 파일의 속성 정보와 비교하여, 적어도 하나의 프리셋 시간 간격 후에 얻어진 파일의 속성 정보가 더 완벽함이 이해될 것이다. 파일의 데이터 수명 및/또는 액세스 모드를 반영할 수 있는 서브 속성 세트는 이러한 더 완전한 속성 정보에서 추출될 수 있고, 그리고 파일은 서브 속성 세트에 따라 데이터 스트림에 분산되고, 이는 (수명 주기와 같은) 유사한 특성들을 갖는 파일들을 동일한 데이터 스트림에 분산시키는데 도움이 된다.
(수명 주기와 같은) 유사한 특성들을 갖는 파일들이 동일한 데이터 스트림에 분산되므로, 데이터 스트림 식별자를 수신한 후, 스토리지는 매우 다른 특성들을 갖는 파일들을 다른 메모리들 또는 동일한 메모리의 다른 영역들에 저장할 수 있다. 스토리지를 이동하는 가비지 컬렉션의 유효한 페이지들이 크게 감소될 것이고, 따라서 WAF(write amplification factor)를 감소시키고, 스토리지의 성능을 향상시키고 그리고 메모리의 작동 수명을 연장시킨다.
대안적으로, 데이터 스트림들의 현재 상태 정보는 파일의 카테고리 및 데이터 스트림들 사이의 대응 관계들을 포함하고, 제2 프리셋 조건을 만족시키는 데이터 스트림은 파일의 카테고리와 일치하는 데이터 스트림을 지칭한다. 파일을 현재 상태가 파일의 서브 속성 세트 및 데이터 스트림들의 현재 상태 정보에 따른 제2 프리셋 조건을 만족시키는 데이터 스트림에 분산시키는 것은: 파일의 서브 속성 세트에 따라 파일을 분류하고, 파일이 현재 속한 카테고리를 결정하는 것; 그리고 파일을 파일이 현재 속한 카테고리에 대응하는 데이터 스트림에 분산시키는 것을 포함한다.
스토리지에 의해 지원되는 데이터 스트림들의 수는 제한되므로, 파일들의 카테고리들의 수는 스토리지가 지원할 수 있는 데이터 스트림들의 수에 따라 결정될 수 있다. 파일들의 카테고리들의 수는 스토리지가 지원할 수 있는 데이터 스트림들의 수를 초과하지 않음이 이해될 수 있다. 동일한 카테고리의 파일들을 동일한 데이터 스트림에 분산시키는 것은 파일들이 너무 많은 데이터 스트림들을 점유하는 것을 방지할 수 있고, 그리고 점유된 데이터 스트림들의 수가 메모리에 의해 지원되는 데이터 스트림들의 수를 초과하지 않는 것을 보장한다.
대안적으로, 파일은 파일의 서브 속성 세트에 기초하여 분류될 수 있는데, 관련된 클러스터링 알고리즘(clustering algorithm)들 또는 강화 학습 방법(reinforcement learning method)들을 이용할 수 있다. 예를 들어, 클러스터링 알고리즘들은 k-평균 클러스터링 알고리즘(k-means clustering algorithm), 계층적 클러스터링 알고리즘(hierarchical clustering algorithm), 및 이와 유사한 것을 포함할 수 있다.
도 3은 예시적인 실시 예에 따른 파일들을 분류하는 개략적인 도면을 도시한다.
예를 들어, 도 3을 참조하면, 도 3에서 원(circle)들 안의 숫자들은 파일들의 개수(예를 들어, 이노드 개수)를 나타낼 수 있다. 8개의 파일들은 4개의 카테고리들로 분류되고, 여기서 숫자 1, 3, 및 8을 갖는 파일들은 제1 카테고리(category 1)에 속하고, 숫자 6을 갖는 파일은 제2 카테고리(category 2)에 속하고, 숫자 4 및 7을 갖는 파일들은 제3 카테고리(category 3)에 속하고, 그리고 숫자 2 및 5를 갖는 파일들은 제4 카테고리(category 4)에 속한다. 다른 카테고리들은 다른 데이터 스트림들에 대응할 수 있고, 동일한 카테고리에 속한 파일들은 유사하거나 동일한 (수명 주기와 같은) 특성들을 갖고, 그리고 동일한 카테고리에서의 파일들은 동일한 데이터 스트림에 분산될 수 있다.
대안적으로, 복수의 데이터 스트림들은 데이터 스트림들의 제1 그룹 및 데이터 스트림들의 제2 그룹을 포함한다. 다시 말해서, 복수의 데이터 스트림들은 미리 그룹화될 수 있고, 예를 들어, 복수의 데이터 스트림들은 데이터 스트림들의 제1 그룹 및 데이터 스트림들의 제2 그룹으로 분할될 수 있다. 파일의 카테고리 및 데이터 스트림들의 현재 상태 정보에 따라 파일이 데이터 스트림에 분산되면, 파일은 데이터 스트림들의 제1 그룹 중 하나의 데이터 스트림에 분산될 수 있고; 현재 순간까지 획득된 파일의 속성 정보 및 데이터 스트림들의 현재 상태 정보에 따라 파일이 데이터 스트림에 분산되면, 파일은 데이터 스트림들의 제2 그룹에서의 하나의 데이터 스트림에 분산될 수 있다.
예를 들어, N개의 데이터 스트림들은 2개의 그룹들로 분할될 수 있고, 제1 데이터 스트림(data stream 1) 내지 제S 데이터 스트림(data stream S)은 데이터 스트림들의 제1 그룹일 수 있고, 그리고 제S+1 데이터 스트림(data stream S+1) 내지 제N 데이터 스트림(data stream N)은 데이터 스트림들의 제2 그룹일 수 있다.
설명의 편의를 위해, “파일의 속성 정보(또는 카테고리) 및 데이터 스트림들의 현재 상태 정보에 따라 파일을 데이터 스트림에 분산시키는 것”은 파일을 데이터 스트림에 분산시키는 제1 방식으로 부르고, 그리고 “현재 순간까지 획득된 파일의 속성 정보 및 데이터 스트림들의 현재 상태 정보에 따라 파일을 데이터 스트림에 분산시키는 것”은 파일을 데이터 스트림에 분산시키는 제2 방식으로 부른다. 상술된 내용으로부터 볼 수 있는 바와 같이, 파일을 데이터 스트림에 분산시키는 상술된 2개의 방식들의 규칙들은 다르다. 제1 방식을 사용하여 파일을 데이터 스트림에 분산시키는 경우, 파일은 제1 방식의 규칙에 따라 데이터 스트림들의 제1 그룹의 하나의 데이터 스트림에 분산될 수 있고; 제2 방식을 사용하여 파일을 데이터 스트림에 분산시키는 경우, 파일은 제2 방식의 규칙에 따라 데이터 스트림들의 제2 그룹의 하나의 데이터 스트림에 분산될 수 있다. 만약 파일이 데이터 스트림에 적어도 2번 분산될 수 있으면, 파일이 첫 번째로 데이터 스트림에 분산되는 경우, 파일은 제1 방식을 사용하여 데이터 스트림들의 제1 그룹의 하나의 데이터 스트림에 분산될 수 있고, 파일이 두 번째로 그리고 후속적으로 데이터 스트림에 분산되는 경우, 파일은 제2 방식을 사용하여 데이터 스트림들의 제2 그룹의 하나의 데이터 스트림에 분산될 수 있음에 유의해야 한다. 파일을 데이터 스트림에 분산시키는 2개의 방식들은 데이터 스트림들의 2개의 그룹들에 각각 대응하고, 따라서 데이터 스트림들의 각 그룹에 현재 분산된 파일들은 파일을 데이터 스트림에 분산시키는 방식들의 대응하는 규칙들을 따르고, 이에 의해서 2개의 방식들의 각 규칙들에 따라 파일을 데이터 스트림에 분산시킬 때 2개의 방식들 사이의 상호 간섭의 생성을 방지한다. 대안적으로, 데이터 스트림들의 제1 그룹에 포함된 데이터 스트림들의 수 및 데이터 스트림들의 제2 그룹에 포함된 데이터 스트림들의 수는 실시간으로 조정될 수 있다.
예를 들어, 프리셋 시간 내에 데이터 스트림들의 제1 그룹에 분산된 파일들의 수 및 프리셋 시간 내에 데이터 스트림들의 제2 그룹에 분산된 파일들의 수에 따라, 데이터 스트림들의 제1 그룹에 포함된 데이터 스트림들의 수 및 데이터 스트림들의 제2 그룹에 포함된 데이터 스트림들의 수는 실시간으로 조정된다.
시간이 지남에 따라, 프리셋 시간 내에 데이터 스트림들의 제1 그룹에 분산된 파일들의 수 및 프리셋 시간 내에 데이터 스트림들의 제2 그룹에 분산된 파일들의 수는 변경될 수 있음이 이해될 수 있다. 그러므로, 데이터 스트림들의 제1 그룹에 포함된 데이터 스트림들의 수 및 데이터 스트림들의 제2 그룹에 포함된 데이터 스트림들의 수는 상술된 숫자의 변경들에 따라 실시간으로 조정된다.
대안적으로, 프리셋 시간 내에 데이터 스트림들의 제1 그룹에 분산된 파일들의 수와 프리셋 시간 내에 데이터 스트림들의 제2 그룹에 분산된 파일들의 수의 비율, 그리고 데이터 스트림들의 제1 그룹에 포함된 데이터 스트림들의 수 및 데이터 스트림들의 제2 그룹에 포함된 데이터 스트림들의 수는 비율에 따라 조정될 수 있다. 예를 들어, 마지막 순간에 데이터 스트림들의 제1 그룹에 분산된 파일들의 수와 마지막 순간에 데이터 스트림들의 제2 그룹에 분산된 파일들의 수의 비율, 그리고 데이터 스트림들의 제1 그룹에 포함된 데이터 스트림들의 수 및 데이터 스트림들의 제2 그룹에 포함된 데이터 스트림들의 수는 비율에 따라 조정될 수 있다. 예를 들어, 비율이 커지면, 데이터 스트림들의 제1 그룹에 포함된 데이터 스트림들의 수는 증가하고, 데이터 스트림들의 제2 그룹에 포함된 데이터 스트림들의 수는 감소하고; 비율이 작아지면, 데이터 스트림들의 제1 그룹에 포함된 데이터 스트림들의 수는 감소하고, 데이터 스트림들의 제2 그룹에 포함된 데이터 스트림들의 수는 증가한다.
물론, 데이터 스트림들의 제1 그룹에 포함된 데이터 스트림들의 수 및 데이터 스트림들의 제2 그룹에 포함된 데이터 스트림들의 수는 또한, 여기서 나열되지 않을, 다른 방식들로 조정될 수 있다.
파일이 데이터 스트림에 분산되면, 파일이 분산된 데이터 스트림의 식별자는 운영 체제 커널로 전송되고, 그리고 운영 체제 커널은 쓰기 요청(write request, Write)을 메모리로 전송할 때 데이터 스트림의 식별자를 전달하고, 따라서 데이터 스트림의 식별자는 메모리로 전송된다.
스토리지가 데이터 스트림의 식별자를 수신한 후, 스토리지는 각 데이터 스트림의 식별자에 기초하여 대응하는 파일의 데이터를 저장하거나 출력할 수 있고, 그리고 다른 메모리들 또는 동일한 메모리의 다른 영역들 내 다른 데이터 스트림들에 분산된 파일들의 데이터를 저장할 수 있다. 스토리지를 이동하는 가비지 컬렉션의 유효한 페이지들이 크게 감소될 것이고, 따라서 WAF를 감소시키고, 스토리지의 성능을 향상시키고 그리고 메모리의 작동 수명을 연장시킨다.
대안적으로, 스토리지는 SSD(Solid State Drive), ROM(Read-Only Memory), 또는 정적 정보 및 명령어들을 저장할 수 있는 다른 타입의 정적 스토리지 기구(apparatus)일 수 있고, RAM(Random Access Memory) 또는 정보 및 명령어들을 저장할 수 있는 다른 타입의 동적 스토리지 기구일 수 있고, 그리고 EEPROM(Electrically Erasable Programmable Read Only Memory), CD-ROM(Compact Disc Read-Only Memory, read-only disc) 또는 다른 광학 디스크 메모리, (콤팩트 디스크(compact disk)들, 레이저 디스크들, 광학 디스크들, 디지털 다용도 디스크들, 블루-레이 디스크(Blu-ray disc)들, 등을 포함하는) 콤팩트 디스크 스토리지, 자기 디스크 스토리지 매체나 다른 자기 스토리지 기구, 또는 명령어나 데이터 구조의 형태로 예상되는 프로그램 코드들을 전달하거나 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체일 수 있으나, 이에 제한되지 않는다.
대안적으로, 파일이 분산된 데이터 스트림의 식별자는 우선 운영 체제 커널의 가상 파일 시스템에 제출될 수 있고, 그 다음 운영 체제 커널의 다른 계층들을 통해 순서대로 전송되고, 그리고 마지막으로 쓰기 요청과 함께 스토리지로 전송된다.
운영 체제를 리눅스 시스템으로 예를 들면, 도 5를 참조하면, 파일이 분산된 데이터 스트림의 식별자는 운영 체제 커널의 가상 파일 시스템에 제출될 수 있고, 데이터 스트림의 식별자는 운영 체제 커널 내 액세스 및 운영 파일 시스템(File System), 블록 계층(Block Layer) 및 드라이버 계층(Driver Layer)으로 순서대로 전송되고, 그리고 마지막으로 쓰기 요청(쓰기, Write)과 함께 스토리지로 전송된다.
대안적으로, 운영 체제는 리눅스 시스템이고, 파일이 분산된 데이터 스트림의 식별자를 운영 체제 커널로 전송하는 것은, 다음을 포함한다:
리눅스 시스템이 제1 타입 버전인 경우, 리눅스 시스템의 제1 인터페이스를 통해 파일이 분산된 데이터 스트림의 식별자를 리눅스 시스템 커널로 전송하는 것, 여기서 제1 인터페이스는 리눅스 시스템 커널을 사전-수정(pre-modify)하여 얻어짐; 그리고/또는
리눅스 시스템이 제2 타입 버전인 경우, 리눅스 시스템의 제2 인터페이스를 통해 파일이 분산된 데이터 스트림의 식별자를 리눅스 시스템 커널로 전송하는 것. 여기서 제2 인터페이스는 데이터 스트림의 식별을 수신하는 기능을 갖고, 예를 들어, 제2 인터페이스는 fcntl 인터페이스(파일 제어 인터페이스)일 수 있다.
대안적으로, 리눅스 시스템의 4.13 미만 버전은 제1 타입 버전으로 간주될 수 있고, 그리고 리눅스 시스템의 4.13 이상 버전은 제2 타입 버전으로 간주될 수 있다.
예를 들어, 리눅스 시스템이 제2 타입 버전인 경우, 데이터 스트림의 식별자는 리눅스 시스템의 쓰기 힌트 기능(write hint feature)을 사용하여 fcntl 인터페이스를 호출함으로써 리눅스 시스템 커널로 전송될 수 있다.
예시적인 실시 예에 따라 파일이 분산된 데이터 스트림의 식별자를 운영 체제 커널로 전송하면, 운영 체제 커널의 코드를 수정할 필요가 없거나, 또는 운영 체제 커널의 코드를 거의 변경하지 않을 수 있고, 이는 운영 체제 커널의 변경을 감소시킨다.
도 4는 본 개시의 예시적인 실시 예에 따른 데이터 스트림 관리 장치(200)의 블록도를 도시한다. 데이터 스트림 관리 장치(200)는 SSD와 같은 스토리지 장치의 컨트롤러, 또는 SSD와 같은 스토리지 장치도 포함하는 전자 장치의 컨트롤러에서 또는 이에 의해 구현될 수 있다. 데이터 스트림 관리 장치(200)에서, 기능 유닛(functional unit)들은 본 명세서에서 설명된 원리들을 구현하는 하드웨어, 소프트웨어, 또는 하드웨어 및 소프트웨어의 조합에 의해 구현될 수 있다. 본 개시가 속한 기술 분야에서의 통상의 기술자는 도 4에서 설명된 기능 유닛들이 본 명세서에서 설명된 원리들을 실현하기 위해 함께 결합되거나 또는 서브-유닛들로 분할될 수 있음을 이해할 수 있다. 그러므로, 본 명세서에서의 설명은 본 명세서에서 설명된 기능 유닛들의 임의의 가능한 조합, 또는 분할, 또는 추가적인 제한을 지원할 수 있다.
데이터 스트림 관리 장치(200)가 가질 수 있는 기능 유닛들 및 각 기능 유닛에 의해 수행될 수 있는 동작들은 이하에서 간략하게 설명된다. 관련된 세부 사항들에 대해, 상술된 관련 설명이 참조되고, 이는 여기서 반복되지 않을 것이다.
도 4를 참조하면, 예시적인 실시 예에 따른 데이터 스트림 관리 장치(200)는 파일 모니터링 모듈(210) 및 스트림 관리 모듈(230)을 포함한다. 파일 모니터링 모듈(210) 및 스트림 관리 모듈(230)은 주문형 반도체(ASIC; application specific integrated circuit)들과 같은 특정 회로에 의해 별도로 구현될 수 있다. 대안적으로, 파일 모니터링 모듈(210) 및 스트림 관리 모듈(230)은 물리적 메모리에 저장되고 동일한 프로세서 또는 다른 프로세서들에 의해 실행되는 소프트웨어 모듈들을 포함할 수 있다.
계속하기 전에, 도 4를 포함하는 본 명세서에서의 도면들은 “모듈(module)”과 같은 레이블(label)들이 있는 회로를 보여주고 참조한다. 본 명세서에서 설명된 본 발명의 개념(들)의 분야에서 전통적으로, 예시들은 설명된 기능 또는 기능들을 수행하는 모듈들 또는 블록들의 관점에서 설명되고 예시될 수 있다. 본 명세서에서 파일 모니터링 모듈 및 스트림 관리 모듈 또는 이와 유사한 것으로 지칭될 수 있는, 이러한 모듈들 및 블록들은, 논리 게이트, 집적 회로, 마이크로 프로세서, 마이크로 컨트롤러, 메모리 회로, 수동 전자 소자, 능동 전자 소자, 광학 소자, 하드 와이어된(hardwired) 회로 및 이와 유사한 것과 같은 아날로그 및/또는 디지털 회로들에 의해 물리적으로 구현될 수 있고, 그리고 펌웨어 및/또는 소프트웨어에 의해 선택적으로 구동될 수 있다. 모듈들 및 블록들은, 예를 들어, 하나 이상의 반도체 칩들 내에 구현될 수 있거나, 또는 인쇄 회로 기판(printed circuit board) 및 이와 유사한 것과 같은 기판 지지대 상에 구현될 수 있다. 모듈들 및 블록들은 전용 하드웨어에 의해, 또는 프로세서(예를 들어, 하나 이상의 프로그램된 마이크로 프로세서들 및 관련 회로)에 의해, 또는 모듈이나 블록의 일부 기능들을 수행하는 전용 하드웨어 및 모듈이나 블록의 다른 기능들을 수행하는 프로세서의 조합에 의해 구현될 수 있다. 예시들의 각 모듈이나 블록은 본 개시의 기술적 사상을 벗어나지 않으면서 2개 이상 상호 작용하는 이산(개별, discrete) 모듈들이나 블록들로 물리적으로 분리될 수 있다. 마찬가지로, 예시들의 모듈들 및 블록들은 본 개시의 기술적 사상을 벗어나지 않으면서 더 복잡한 모듈들 및 블록들로 물리적으로 결합될 수 있다.
파일 모니터링 모듈(210)은 현재 오픈된 파일의 속성 정보를 얻도록 구성된다. 스트림 관리 모듈(230)은 파일의 속성 정보 및 데이터 스트림들의 현재 상태 정보에 따라 파일을 데이터 스트림에 분산시키도록 구성된다. 현재 오픈된 파일은 전자 장치에서 실행되는 애플리케이션에 의해 오픈된 파일일 수 있고, 그리고 애플리케이션에 대한 데이터를 저장하는 스토리지 장치로/장치로부터 데이터를 쓰는 것 그리고 데이터를 읽는 것과 관련될 수 있다. 데이터 스트림은 스토리지 장치로부터 읽어진 데이터 및 스토리지 장치에 쓰여진 데이터의 스트림을 지칭할 수 있다.
대안적으로, 파일들의 속성 정보는 파일의 타입을 포함한다. 스트림 관리 모듈(230)은 사전-분산 유닛(2301)을 포함한다. 파일이 오픈되면, 사전-분산 유닛(2301)은 파일의 타입 및 데이터 스트림들의 현재 상태 정보에 따라, 현재 상태가 제1 프리셋 조건을 만족시키는 데이터 스트림에 파일을 분산시키도록 구성된다.
대안적으로, 현재 상태 정보는, 데이터 스트림들에 현재 분산된 파일들의 타입; 데이터 스트림들에 현재 분산된 파일들의 수; 데이터 스트림들에 현재 분산된 파일들의 오픈 기간 정보; 및 데이터 스트림들에 현재 분산된 파일들이 수정된 횟수, 중 적어도 하나를 포함한다. 오픈 기간 정보는 각 파일이 열린 기간에 대한 정보일 수 있다.
대안적으로, 데이터 스트림들이 현재 분산된 파일들의 오픈 기간 정보는, 데이터 스트림들에 현재 분산된 모든 파일들의 평균 오픈 기간; 및 데이터 스트림들에 현재 분산된 모든 파일들의 전체 오픈 기간, 중 적어도 하나를 포함한다.
대안적으로, 제1 프리셋 조건은, 데이터 스트림들에 현재 분산된 파일들의 타입은 데이터 스트림에 분산될 파일의 타입과 동일한 것; 데이터 스트림들에 현재 분산된 파일들의 수는 가장 적은 것; 데이터 스트림들에 현재 분산된 모든 파일들의 평균 오픈 기간은 가장 짧은 것; 데이터 스트림들에 현재 분산된 모든 파일들의 전체 오픈 기간은 가장 짧은 것; 그리고 데이터 스트림들에 현재 분산된 파일들이 수정된 횟수는 가장 적은 것, 중 적어도 하나를 포함한다.
대안적으로, 스트림 관리 모듈(230)은 분류 유닛(2302)을 포함한다. 파일이 오픈 상태이면, 분류 유닛(2302)은 프리셋 시간 간격에서, 현재 상태가 현재 순간까지 획득된 파일의 속성 정보 및 데이터 스트림들의 현재 상태 정보에 따른 제2 프리셋 조건을 만족시키는 데이터 스트림에 파일을 분산시키도록 구성된다.
대안적으로, 데이터 스트림 관리 장치(200)는 파일 속성 분석 모듈(220)을 더 포함한다. 파일 속성 분석 모듈(220)은 파일의 얻어진 속성 정보에서 파일의 서브 속성 세트를 추출하도록 구성된다. 서브 속성 세트는 파일의 데이터 수명 및/또는 액세스 모드를 반영할 수 있다.
분류 유닛(2302)은 파일을 현재 상태가 파일의 서브 속성 세트 및 데이터 스트림들의 현재 상태 정보에 따른 제2 프리셋 조건을 만족시키는 데이터 스트림에 분산시키도록 구성된다.
파일 속성 분석 모듈(220)은 파일 속성 테이블을 유지할 수 있다. 상술된 바와 같이, 현재 오픈된 파일의 얻어진 속성 정보는 파일 속성 테이블에 저장될 수 있고, 그리고 파일 속성 분석 모듈(220)은 파일 속성 테이블에서 파일의 서브 속성 세트를 추출할 수 있다.
대안적으로, 현재 상태 정보는 파일의 카테고리 및 데이터 스트림들 사이의 대응 관계들을 포함한다. 제2 프리셋 조건을 만족시키는 데이터 스트림은 파일의 카테고리와 일치하는 데이터 스트림일 수 있다. 분류 유닛(2302)은 파일의 서브 속성 세트에 따라 파일을 분류하고, 파일이 현재 속한 카테고리를 결정하고, 그리고 파일이 현재 속한 카테고리에 대응하는 데이터 스트림에 파일을 분산시키도록 구성된다.
대안적으로, 복수의 데이터 스트림들은 데이터 스트림들의 제1 그룹 및 데이터 스트림들의 제2 그룹을 포함한다. 파일의 카테고리 및 데이터 스트림들의 현재 상태 정보에 따라 파일을 데이터 스트림에 분산시킬 때, 사전-분산 유닛(2301)은 파일을 데이터 스트림들의 제1 그룹 내 하나의 데이터 스트림에 분산시키도록 구성된다. 현재 순간까지 획득된 파일의 속성 정보 및 데이터 스트림들의 현재 상태 정보에 따라 파일을 데이터 스트림에 분산시킬 때, 분류 유닛(2302)은 파일을 데이터 스트림들의 제2 그룹 내 하나의 데이터 스트림에 분산시키도록 구성된다.
대안적으로, 데이터 스트림 관리 장치(200)는 데이터 스트림 그룹 조정 모듈(240)을 더 포함한다. 데이터 스트림 그룹 조정 모듈(240)은 프리셋 시간 내에 데이터 스트림들의 제1 그룹에 분산된 파일들의 수 및 프리셋 시간 내에 데이터 스트림들의 제2 그룹에 분산된 파일들의 수에 따라, 데이터 스트림들의 제1 그룹에 포함된 데이터 스트림들의 수 및 데이터 스트림들의 제2 그룹에 포함된 데이터 스트림들의 수를 실시간으로 조정하도록 구성된다.
대안적으로, 데이터 스트림 그룹 조정 모듈(240)은: 프리셋 시간 내에 데이터 스트림들의 제1 그룹에 분산된 파일들의 수와 프리셋 시간 내에 데이터 스트림들의 제2 그룹에 분산된 파일들의 수의 비율을 계산하고; 그리고 비율에 따라 데이터 스트림들의 제1 그룹에 포함된 데이터 스트림들의 수 및 데이터 스트림들의 제2 그룹에 포함된 데이터 스트림들의 수를 실시간으로 조정하도록 구성된다.
대안적으로, 운영 체제는 리눅스 시스템이고, 그리고 스트림 관리 모듈(230)은: 리눅스 시스템이 제1 타입 버전인 경우 리눅스 시스템의 제1 인터페이스를 통해 파일이 분산된 데이터 스트림의 식별자를 리눅스 시스템 커널로 전송하고, 여기서 제1 인터페이스는 리눅스 시스템 커널을 사전-수정하여 얻어지고; 그리고/또는 리눅스 시스템이 제2 타입 버전인 경우 리눅스 시스템의 제2 인터페이스를 통해 파일이 분산된 데이터 스트림의 식별자를 리눅스 시스템 커널로 전송하도록 구성된다.
도 5는 예시적인 실시 예에 따른 전자 장치의 운영 체제의 부분 프레임워크 도면을 도시한다. 여기서 도 5의 스토리지 장치는 물리적 장치이고 운영 체제에 속하지 않음에 유의해야 한다. 도 5의 스토리지 장치는 적어도 하나의 메모리를 포함하고, 그리고 스토리지는 SSD일 수 있다. 도 5를 참조하면, 파일들을 실행하기 위한 애플리케이션들은 운영 체제에 배포된다. 애플리케이션들은 MySQL, PostgreSQL, 및 카산드라(Cassandra)를 포함할 수 있고, 그리고 또한 RocksDB, MongoDB, 또는 Docker, 등을 포함할 수 있다.
도 5에서의 스토리지 장치는 SSD를 포함할 수 있고, SSD는 스토리지 기구(apparatus)를 포함하는 메모리 및 데이터 스트림 관리 장치(200)를 포함하는 컨트롤러를 포함할 수 있다. 스토리지 기구를 포함하는 메모리는 여러 데이터 스트림들에 따라 논리적으로 배열된 쓰여진(written) 데이터를 저장하도록 구성될 수 있다. 예를 들어, 각 데이터 스트림은 다른 데이터 스트림들에 전용되는 메모리 영역들로부터 논리적으로 그리고/또는 물리적으로 분리된 전용 메모리 영역들에 쓰여질 수 있다. 데이터 스트림 관리 장치(200)를 포함하는 컨트롤러는 현재 오픈된 파일의 속성 정보를 얻고, 그리고 파일의 속성 정보 및 복수의 데이터 스트림들의 현재 상태 정보에 따라 파일을 데이터 스트림에 분산시키도록 구성될 수 있다.
일부 실시 예들에서, 데이터 스트림 관리 장치(200)를 포함하는 컨트롤러는 다수의 SSD들을 포함하는 메모리 시스템에 제공될 수 있다. 다른 실시 예들에서, 데이터 스트림 관리 장치(200)를 포함하는 컨트롤러는 하나 이상의 SSD들과 연결된 호스트에 제공될 수 있다.
도 5를 참조하면, 데이터 스트림 관리 장치(200)의 작업 순서(workflow)는 다음을 포함한다:
(a) 파일 모니터링 모듈(210)은 모든 현재 오픈된 파일들을 모니터링하기 위해 리눅스 커널에 의해 제공된 아이노티파이(inotify) 툴을 호출하고, 그리고 파일에 대응하는 이노드로부터 각 파일의 속성 정보(파일 경로, 타입, 오픈 시간, 수정 횟수, 등과 같은)를 지속적으로 얻는다.
(b) 파일 속성 분석 모듈(220)은 파일 속성 테이블에서 파일 모니터링 모듈(210)에 의해 얻어진 파일 속성을 요약하고 저장하고, 그리고 피어슨 상관 계수에 기초하여, 파일 속성 테이블로부터 파일들의 데이터 수명 및 액세스 모드를 반영할 수 있는 서브 속성 세트를 추출한다.
(c) 사전-분산 유닛(2301)은 제1 데이터 스트림(data stream 1) 내지 제S 데이터 스트림(data stream S)을 점유하고, 새로 오픈된 파일에 대한 데이터 스트림 분산을 처음으로 수행하는 것을 담당한다. 하나의 파일이 오픈되면, 사전-분산 유닛(2301)은 파일 속성(타입 및 오픈 시간과 같은) 및 스트림들의 현재 사용 상태(예를 들어, 분산된 파일들이 가장 적고 그리고 분산된 파일들의 평균 오픈 시간이 가장 긴 스트림에 파일을 분산시킴)에 따라 데이터 스트림의 식별자를 처음으로 파일에 분산시킬 것이고, 따라서 사전-분산 유닛(2301)에 의해 관리된 파일들을 가능한 먼 다른 데이터 스트림들에 분산시킨다.
(d) 분류 유닛(2302)은 제S+1 데이터 스트림(data stream S+1) 내지 제N 데이터 스트림(data stream N)을 점유하고, 오랫동안 오픈된 파일들에 대한 데이터 스트림 분산을 다시 수행하는 것을 담당한다. 일정 시간 동안 파일들이 쓰여진 후, 파일 속성 분석 모듈(220)은 파일들의 데이터 수명들 및 액세스 모드들(예를 들어, 파일들의 수정 횟수, 등)을 반영할 수 있는 서브 속성 세트들을 추출할 수 있다. 현재 아직 클로즈되지 않은 파일들에 대해, 분류 유닛(2302)은, k-평균 클러스터링 알고리즘을 사용하여, T초마다 파일들의 추출된 서브 속성 세트들에 기초하여 이러한 파일들을 클러스터링 하고, 그리고 파일들의 각 타입은 대응하는 데이터 스트림으로 분산된다.
오랫동안 오픈된 파일들은 상술된 바와 같이 시작 순간부터 시작하는 프리셋 시간 간격 동안 클로즈되지 않은 파일들일 수 있음이 이해될 것이다.
(e) 데이터 스트림 그룹 조정 모듈(240)은, 사전-분산 유닛(2301)에 의해 관리된 파일들의 수와 분류 유닛(2302)에 의해 관리된 파일들의 수의 비율에 따라, S의 값을 동적으로 조정한다.
사전-분산 유닛(2301)에 의해 관리된 파일들의 수는 프리셋 시간 내에 데이터 스트림들의 제1 그룹에 분산된 파일들의 수일 수 있고; 그리고 분산 유닛(2302)에 의해 관리된 파일들의 수는 프리셋 시간 내에 데이터 스트림들의 제2 그룹에 분산된 파일들의 수일 수 있다.
S의 값을 동적으로 조정하는 것은 실제로는 상술된 바와 같이 데이터 스트림들의 제1 그룹에 포함된 데이터 스트림들의 수 및 데이터 스트림들의 제2 그룹에 포함된 데이터 스트림들의 수를 실시간으로 조정하는 것임이 이해될 것이다.
(f) 사전-분산 유닛(2301) 및/또는 분류 유닛(2302)은 운영 체제 커널에 의해 제공된 인터페이스(예를 들어, fcntl 인터페이스)를 통해 파일이 분산된 데이터 스트림의 식별자를 SSD로 전송한다.
도 5를 참조하면, 파일이 분산된 데이터 스트림의 식별자는 운영 체제 커널에 의해 제공된 인터페이스를 통해(fcntl 인터페이스를 통해) 운영 체제 커널에서의 가상 파일 시스템에 처음으로 제출될 수 있다. 데이터 스트림의 식별자는 순서대로 운영 체제 커널 내 액세스 및 운영 파일 시스템(File System), 블록 계층(Block Layer) 및 드라이버 계층(Driver Layer)에 전달되고, 그리고 마지막으로 데이터 스트림의 식별자는 쓰기 요청(쓰기, Write)과 함께 스토리지로 전송된다.
스토리지는 데이터 스트림의 식별자를 수신하고, 각 데이터 스트림의 식별자에 기초하여 대응하는 파일들의 데이터를 저장하거나 출력할 수 있고, 다른 메모리들 또는 동일한 메모리의 다른 영역들 내 다른 데이터 스트림들에 분산된 파일들의 데이터를 저장한다. 스토리지를 이동하는 가비지 컬렉션의 유효한 페이지들이 크게 감소될 것이고, 따라서 WAF를 감소시키고, 스토리지의 성능을 향상시키고 그리고 메모리의 작동 수명을 연장시킨다.
도 6은 예시적인 실시 예에 따른 컴퓨팅 장치의 블록도를 도시한다.
도 6을 참조하면, 예시적인 실시 예는 컴퓨팅 장치(300)를 더 제공하고, 컴퓨팅 장치(300)는 프로세서(310) 및 메모리(320)를 포함한다. 메모리(320)는 컴퓨터 프로그램들을 저장하고, 그리고 컴퓨터 프로그램들이 프로세서(310)에 의해 실행되면, 상술된 데이터 스트림 관리 방법이 구현된다.
프로세서(310)는 중앙 처리 장치(CPU; Central Processing Unit), 범용 프로세서(general-purpose processor), 디지털 신호 처리기(DSP; Digital Signal Processor), 주문형 반도체(ASIC; Application Specific Integrated Circuit), 필드-프로그래머블 게이트 어레이(FPGA; Field-Programmable Gate Array)나 다른 프로그래머블 논리 장치, 트랜지스터 논리 장치, 하드웨어 구성 요소, 또는 이들의 임의의 조합일 수 있다. 이것은 본 출원의 개시와 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들 및 회로들을 구현하거나 실행할 수 있다. 프로세서(310)는 또한, 예를 들어, 하나 이상의 마이크로 프로세서들의 조합, DSP 및 마이크로 프로세서의 조합, 등을 포함하는 컴퓨팅 기능들을 구현하는 조합일 수 있다.
메모리(320)는 ROM(Read-Only Memory), 또는 정적 정보 및 명령어들을 저장할 수 있는 다른 타입의 정적 스토리지 기구일 수 있고, RAM(Random Access Memory) 또는 정보 및 명령어들을 저장할 수 있는 다른 타입의 동적 스토리지 기구일 수 있고, 그리고 EEPROM(Electrically Erasable Programmable Read Only Memory), CD-ROM(Compact Disc Read-Only Memory, read-only disc) 또는 다른 광학 디스크 메모리, (콤팩트 디스크들, 레이저 디스크들, 광학 디스크들, 디지털 다용도 디스크들, 블루-레이 디스크(Blu-ray disc)들, 등을 포함하는) 콤팩트 디스크 메모리, 자기 디스크 메모리 매체나 다른 자기 메모리 기구, 또는 명령어나 데이터 구조의 형태로 예상되는 프로그램 코드들을 전달하거나 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체일 수 있으나, 이에 제한되지 않는다.
본 개시에 따른 일부 예시적인 실시 예들은 또한 컴퓨터 프로그램들을 저장하는 컴퓨터-판독가능 스토리지 매체(computer-readable storage medium)를 제공하고, 여기서 컴퓨터 프로그램들은 적어도 하나의 컴퓨팅 장치에 의해 실행되면, 적어도 하나의 컴퓨팅 장치가 상술된 데이터 스트림 관리 방법을 수행하게 한다.
컴퓨터-판독가능 기록 매체(computer-readable recording medium)는 컴퓨터 시스템에 의해 읽힌 데이터를 저장할 수 있는 임의의 데이터 스토리지 장치이다. 컴퓨터-판독가능 기록 매체의 예시들은, 읽기-전용 메모리, 랜덤 액세스 메모리, 읽기-전용 광학 디스크, 자기 테이프, 플로피 디스크, 광학 데이터 스토리지 장치, 및 (유선 또는 무선 전송 경로를 경유하여 인터넷을 통해 전송되는 데이터와 같은) 반송파를 포함한다.
상술된 바와 같이, 예시적인 실시 예의 데이터 스트림 관리 방법에 따르면, 파일 형식으로 관리되는 데이터의 특성들에 기초하여, 각 파일은 파일들의 속성 정보에 따라 대응하는 데이터 스트림으로 자동적으로 분산되고, 파일들의 속성 정보는 운영 체제 커널의 가상 파일 시스템에서 직접적으로 획득될 수 있고, 즉, 운영 체제 커널의 코드를 변경할 필요가 없고, 그리고 애플리케이션의 코드를 변경할 필요가 없다. 그리고, 데이터 스트림 관리 방법은 또한 다른 수명 주기의 데이터의 분리를 효율적으로 실현할 수 있다.
대안적으로, 상기 파일의 상기 속성 정보는 상기 파일의 타입을 포함하고; 그리고 상기 파일의 상기 속성 정보 및 상기 데이터 스트림들의 상기 현재 상태 정보에 따라 상기 파일을 상기 데이터 스트림에 분산시키는 단계는: 상기 파일이 오픈되면, 상기 파일을 현재 상태가 상기 파일의 상기 타입 및 상기 데이터 스트림들의 상기 현재 상태 정보에 따른 제1 프리셋 조건을 만족시키는 상기 데이터 스트림에 분산시키는 단계를 포함한다.
예시적인 실시 예의 데이터 스트림 관리 방법에 따르면, 데이터 스트림 분산은 파일이 오픈되면 즉시 한 번 완료되고, 그리고 데이터 스트림 분산의 최적화 효과는 적시에 보장될 수 있다.
대안적으로, 상기 현재 상태 정보는: 상기 데이터 스트림들에 현재 분산된 파일들의 타입; 상기 데이터 스트림들에 현재 분산된 상기 파일들의 수; 상기 데이터 스트림들에 현재 분산된 상기 파일들의 오픈 기간 정보; 및 상기 데이터 스트림들에 현재 분산된 상기 파일들이 수정된 횟수, 중 적어도 하나를 포함한다.
예시적인 실시 예의 데이터 스트림 관리 방법에 따르면, 데이터 스트림들에 현재 분산된 파일들의 타입은 파일을 데이터 스트림에 분산시키는 기준으로 사용되고, 이는 동일한 타입의 파일들을 하나의 데이터 스트림에 분산시킬 확률을 증가시킬 수 있다. 데이터 스트림들에 현재 분산된 파일들의 수, 데이터 스트림들에 현재 분산된 파일들의 오픈 기간 정보, 및 데이터 스트림들에 현재 분산된 파일들이 수정된 횟수 중 적어도 하나는 데이터 스트림을 분산시키기 위한 기초로서 사용되고, 이는 각 데이터 스트림들의 데이터 볼륨들의 균형을 맞출 수 있고, 따라서 각 데이터 스트림들의 데이터 볼륨들은 대부분 일관되게 유지된다.
대안적으로, 상기 데이터 스트림들에 현재 분산된 상기 파일들의 상기 오픈 기간 정보는: 상기 데이터 스트림들에 현재 분산된 모든 파일들의 평균 오픈 기간; 및 상기 데이터 스트림들에 현재 분산된 모든 파일들의 전체 오픈 기간, 중 적어도 하나를 포함한다.
대안적으로, 상기 제1 프리셋 조건은 다음 조건들 중 적어도 하나를 포함하고, 상기 다음 조건들은: 상기 데이터 스트림들에 현재 분산된 상기 파일들의 상기 타입은 상기 데이터 스트림에 분산될 상기 파일의 상기 타입과 동일한 것; 상기 데이터 스트림들에 현재 분산된 상기 파일들의 수는 가장 적은 것; 상기 데이터 스트림들에 현재 분산된 모든 파일들의 상기 평균 오픈 기간은 가장 짧은 것; 상기 데이터 스트림들에 현재 분산된 모든 파일들의 상기 전체 오픈 기간은 가장 짧은 것; 그리고 상기 데이터 스트림들에 현재 분산된 상기 파일들이 수정된 횟수는 가장 적은 것이다.
대안적으로, 상기 파일의 상기 속성 정보 및 상기 데이터 스트림들의 상기 현재 상태 정보에 따라 상기 파일을 상기 데이터 스트림에 분산시키는 단계는: 상기 파일이 오픈 상태이면, 상기 파일을 현재 상태가, 프리셋 시간 간격에서, 현재 순간까지 획득된 상기 파일의 상기 속성 정보 및 상기 데이터 스트림들의 상기 현재 상태 정보에 따른 제2 프리셋 조건을 만족시키는 데이터 스트림에 분산시키는 단계를 포함한다.
예시적인 실시 예의 데이터 스트림 관리 방법에 따르면, 파일이 오픈된 후, 적어도 하나의 프리셋 시간 간격 후에 얻어진 파일의 속성 정보가 더 완전하고, 그리고 파일의 데이터 수명 및/또는 액세스 모드를 반영할 수 있는 서브 속성 세트는 이러한 더 완전한 속성 정보에서 추출될 수 있다. 서브 속성 세트에 따라 파일에 대한 데이터 스트림을 분산시키는 것은 유사한 (수명 주기들과 같은) 특성들을 갖는 파일을 동일한 데이터 스트림에 분산시키는데 유익하다.
유사한 (수명 주기들과 같은) 특성들을 갖는 파일들이 동일한 데이터 스트림에 분산되므로, 데이터 스트림의 식별자가 메모리에 의해 수신된 후, 매우 다른 특성들을 갖는 파일들은 다른 메모리들 또는 동일한 메모리의 다른 영역들에 저장될 수 있다. 스토리지를 이동하는 가비지 컬렉션의 유효한 페이지들이 크게 감소될 것이고, 따라서 WAF를 감소시키고, 스토리지의 성능을 향상시키고 그리고 메모리의 작동 수명을 연장시킨다.
대안적으로, 상기 파일을 현재 상태가 상기 현재 순간까지 획득된 상기 파일의 상기 속성 정보 및 상기 데이터 스트림들의 상기 현재 상태 정보에 따른 상기 제2 프리셋 조건을 만족시키는 상기 데이터 스트림에 분산시키는 단계는: 상기 파일의 상기 얻어진 속성 정보에서 상기 파일의 서브 속성 세트를 추출하는 단계, 여기서 상기 서브 속성 세트는 상기 파일의 데이터 수명 및 액세스 모드 중 적어도 하나를 반영함; 및 상기 파일을 현재 상태가 상기 파일의 상기 서브 속성 세트 및 상기 데이터 스트림들의 상기 현재 상태 정보에 따른 상기 제2 프리셋 조건을 만족시키는 상기 데이터 스트림에 분산시키는 단계를 포함한다.
대안적으로, 현재 상태 정보는 파일들의 카테고리들 및 데이터 스트림들 사이의 대응 관계들을 포함한다. 제2 프리셋 조건을 만족시키는 데이터 스트림은 파일의 카테고리와 일치하는 데이터 스트림일 수 있다. 현재 상태가 파일의 서브 속성 세트 및 데이터 스트림들의 현재 상태 정보에 따른 제2 프리셋 조건을 만족시키는 데이터 스트림에 파일을 분산시키는 것은, 파일의 서브 속성 세트에 따라 파일을 분류하는 것, 파일이 현재 속한 카테고리를 결정하는 것, 그리고 파일이 현재 속한 카테고리에 대응하는 데이터 스트림에 파일을 분산시키는 것을 포함할 수 있다.
예시적인 실시 예의 데이터 스트림 관리 방법에 따르면, 동일한 카테고리에서의 파일들은 동일한 데이터 스트림에 분산되고, 이는 파일들이 너무 많은 데이터 스트림을 점유하는 것을 방지하고, 그리고 점유된 데이터 스트림들의 수가 스토리지가 지원할 수 있는 데이터 스트림들의 수를 초과하지 않는 것을 보장한다.
대안적으로, 복수의 데이터 스트림들은 데이터 스트림들의 제1 그룹 및 데이터 스트림들의 제2 그룹을 포함하고, 상기 데이터 스트림 관리 방법은: 상기 파일을 상기 파일의 타입 및 상기 데이터 스트림들의 상기 현재 상태 정보에 따라 상기 데이터 스트림에 분산시킬 때, 상기 파일을 데이터 스트림들의 상기 제1 그룹 내 하나의 데이터 스트림에 분산시키는 단계; 및 상기 파일을 상기 현재 순간까지 획득된 상기 파일의 상기 속성 정보 및 상기 데이터 스트림의 상기 현재 상태 정보에 따라 상기 데이터 스트림에 분산시킬 때, 상기 파일을 데이터 스트림들의 상기 제2 그룹 내 하나의 데이터 스트림에 분산시키는 단계를 더 포함한다.
예시적인 실시 예의 데이터 스트림 관리 방법에 따르면, 파일을 데이터 스트림에 분산시키는 2개의 방식들이 제공되고, 그리고 파일을 데이터 스트림에 분산시키는 2개의 방식들은 데이터 스트림들의 2개의 그룹들에 각각 대응하고, 따라서 데이터 스트림들의 각 그룹에 현재 분산된 파일들은 파일을 데이터 스트림에 분산시키는 방식들의 대응하는 규칙들을 따르고, 이에 의해서 그것들의 각 규칙들에 따라 파일을 데이터 스트림에 분산시킬 때 파일을 데이터 스트림에 분산시키는 2개의 방식들의 상호 간섭의 생성을 방지한다.
대안적으로, 상기 데이터 스트림 관리 방법은: 프리셋 시간 내에 데이터 스트림들의 상기 제1 그룹에 분산된 파일들의 수 및 상기 프리셋 시간 내에 데이터 스트림들의 상기 제2 그룹에 분산된 파일들의 수에 따라, 데이터 스트림들의 상기 제1 그룹에 포함된 데이터 스트림들의 수 및 데이터 스트림들의 상기 제2 그룹에 포함된 데이터 스트림들의 수를 실시간으로 조정하는 단계를 더 포함한다.
대안적으로, 상기 프리셋 시간 내에 데이터 스트림들의 상기 제1 그룹에 분산된 상기 파일들의 수 및 상기 프리셋 시간 내에 데이터 스트림들의 상기 제2 그룹에 분산된 상기 파일들의 수에 따라, 데이터 스트림들의 상기 제1 그룹에 포함된 데이터 스트림들의 수 및 데이터 스트림들의 상기 제2 그룹에 포함된 데이터 스트림들의 수를 실시간으로 조정하는 단계는: 상기 프리셋 시간 내에 데이터 스트림들의 상기 제1 그룹에 분산된 상기 파일들의 수와 상기 프리셋 시간 내에 데이터 스트림들의 상기 제2 그룹에 분산된 상기 파일들의 수의 비율을 계산하는 단계; 및 상기 비율에 따라 데이터 스트림들의 상기 제1 그룹에 포함된 데이터 스트림들의 수 및 데이터 스트림들의 상기 제2 그룹에 포함된 데이터 스트림들의 수를 실시간으로 조정하는 단계를 포함한다.
대안적으로, 상기 파일의 상기 속성 정보는 상기 파일의 타입을 포함하고; 그리고 상기 스트림 관리 모듈은: 상기 파일이 오픈되면, 상기 파일을 현재 상태가 상기 파일의 상기 타입 및 상기 데이터 스트림들의 상기 현재 상태 정보에 따른 제1 프리셋 조건을 만족시키는 상기 데이터 스트림에 분산시키도록 구성된 사전-분산(pre-distribution) 유닛을 포함한다.
대안적으로, 상기 현재 상태 정보는: 상기 데이터 스트림들에 현재 분산된 파일들의 타입; 상기 데이터 스트림들에 현재 분산된 상기 파일들의 수; 상기 데이터 스트림들에 현재 분산된 상기 파일들의 오픈 기간 정보; 및 상기 데이터 스트림들에 현재 분산된 상기 파일들이 수정된 횟수, 중 적어도 하나를 포함한다.
대안적으로, 상기 데이터 스트림들에 현재 분산된 상기 파일들의 상기 오픈 기간 정보는: 상기 데이터 스트림들에 현재 분산된 모든 파일들의 평균 오픈 기간; 및 상기 데이터 스트림들에 현재 분산된 모든 파일들의 전체 오픈 기간, 중 적어도 하나를 포함한다.
대안적으로, 상기 제1 프리셋 조건은 다음 조건들 중 적어도 하나를 포함하고, 상기 다음 조건들은: 상기 데이터 스트림들에 현재 분산된 상기 파일들의 상기 타입은 상기 데이터 스트림에 분산될 상기 파일의 상기 타입과 동일한 것; 상기 데이터 스트림들에 현재 분산된 상기 파일들의 수는 가장 적은 것; 상기 데이터 스트림들에 현재 분산된 모든 파일들의 상기 평균 오픈 기간은 가장 짧은 것; 상기 데이터 스트림들에 현재 분산된 모든 파일들의 상기 전체 오픈 기간은 가장 짧은 것; 그리고 상기 데이터 스트림들에 현재 분산된 상기 파일들이 수정된 횟수는 가장 적은 것이다.
대안적으로, 상기 스트림 관리 모듈은: 상기 파일이 오픈 상태이면, 상기 파일을 현재 상태가, 프리셋 시간 간격에서, 현재 순간까지 획득된 상기 파일의 상기 속성 정보 및 상기 데이터 스트림들의 상기 현재 상태 정보에 따른 제2 프리셋 조건을 만족시키는 데이터 스트림에 분산시키도록 구성된 분류 유닛을 포함한다.
대안적으로, 상기 데이터 스트림 관리 장치는 상기 파일의 상기 얻어진 속성 정보에서 상기 파일의 서브 속성 세트를 추출하도록 구성된 파일 속성 분석 모듈을 더 포함하고, 여기서 상기 서브 속성 세트는 상기 파일의 데이터 수명 및 액세스 모드 중 적어도 하나를 반영함; 상기 분류 유닛은 상기 파일을 현재 상태가 상기 파일의 상기 서브 속성 세트 및 상기 데이터 스트림들의 상기 현재 상태 정보에 따른 상기 제2 프리셋 조건을 만족시키는 상기 데이터 스트림에 분산시키도록 구성된다.
분류 유닛은 파일의 획득된 속성 정보에서 파일의 서브 속성 세트를 추출하도록 구성되고, 여기서 서브 속성 세트는 파일의 데이터 수명 및/또는 액세스 모드를 반영할 수 있고; 현재 상태가 파일의 서브 속성 세트 및 데이터 스트림들의 현재 상태 정보에 따른 제2 프리셋 조건을 만족시키는 데이터 스트림에 파일을 분산시킨다.
대안적으로, 현재 상태 정보는 파일들의 카테고리들 및 데이터 스트림들 사이의 대응 관계들을 포함한다. 제2 프리셋 조건을 만족시키는 데이터 스트림은 파일의 카테고리와 일치하는 데이터 스트림일 수 있다. 분류 유닛은 파일의 서브 속성 세트에 따라 파일을 분류하고, 파일이 현재 속한 카테고리를 결정하고, 그리고 파일이 현재 속한 카테고리에 대응하는 데이터 스트림에 파일을 분산시키도록 구성될 수 있다.
대안적으로, 복수의 데이터 스트림들은 데이터 스트림들의 제1 그룹 및 데이터 스트림들의 제2 그룹을 포함하고; 상기 사전-분산 유닛은: 상기 파일을 상기 파일의 타입 및 상기 데이터 스트림들의 상기 현재 상태 정보에 따라 상기 데이터 스트림에 분산시킬 때, 상기 파일을 데이터 스트림들의 상기 제1 그룹 내 하나의 데이터 스트림에 분산시키도록 구성되고; 그리고 상기 분류 유닛은: 상기 파일을 상기 현재 순간까지 획득된 상기 파일의 상기 속성 정보 및 상기 데이터 스트림의 상기 현재 상태 정보에 따라 상기 데이터 스트림에 분산시킬 때, 상기 파일을 데이터 스트림들의 상기 제2 그룹 내 하나의 데이터 스트림에 분산시키도록 구성된다.
대안적으로, 상기 데이터 스트림 관리 장치는: 프리셋 시간 내에 데이터 스트림들의 상기 제1 그룹에 분산된 파일들의 수 및 상기 프리셋 시간 내에 데이터 스트림들의 상기 제2 그룹에 분산된 파일들의 수에 따라, 데이터 스트림들의 상기 제1 그룹에 포함된 데이터 스트림들의 수 및 데이터 스트림들의 상기 제2 그룹에 포함된 데이터 스트림들의 수를 실시간으로 조정하도록 구성된 데이터 스트림 그룹 조정 모듈을 더 포함한다.
대안적으로, 상기 데이터 스트림 그룹 조정 모듈은: 상기 프리셋 시간 내에 데이터 스트림들의 상기 제1 그룹에 분산된 상기 파일들의 수와 상기 프리셋 시간 내에 데이터 스트림들의 상기 제2 그룹에 분산된 상기 파일들의 수의 비율을 계산하고; 그리고 상기 비율에 따라 데이터 스트림들의 상기 제1 그룹에 포함된 데이터 스트림들의 수 및 데이터 스트림들의 상기 제2 그룹에 포함된 데이터 스트림들의 수를 실시간으로 조정하도록 구성된다.
상술된 바와 같이 본 개시의 다른 양상에 따르면, 컴퓨팅 장치는 프로세서 및 컴퓨터 프로그램들을 저장하는 메모리를 포함하고, 그리고 컴퓨터 프로그램들은, 프로세서에 의해 실행되면, 상술된 데이터 스트림 관리 방법들을 구현한다.
상술된 본 개시의 또 다른 양상에 따르면, 컴퓨터-판독가능 스토리지 매체는 컴퓨터 프로그램들을 저장한다. 컴퓨터 프로그램들은, 적어도 하나의 컴퓨팅 장치에 의해 실행되면, 적어도 하나의 컴퓨팅 장치가 본 명세서에서 설명된 데이터 스트림 관리 방법들을 실행하게 한다.
본 출원의 다양한 예시적인 실시 예들이 위에서 설명되었고, 상술된 설명은 예시에 불과할 뿐 완전한 것이 아니며, 그리고 본 출원은 개시된 다양한 예시적인 실시 예들로 제한되지 않는 것임을 이해하여야 한다. 본 출원의 기술적 사상 및 범위를 벗어나지 않으면서, 형태 및 세부 사항들에 대해 다양한 수정들 및 변경들이 이루어질 수 있다. 그러므로, 본 출원의 보호 범위는 청구항 발명들의 범위를 따라야 한다.
Claims (10)
- 데이터 스트림의 관리 방법에 있어서:
현재 오픈된 파일의 속성 정보를 얻는 단계; 및
상기 파일의 상기 속성 정보 및 데이터 스트림들의 현재 상태 정보에 따라 상기 파일을 데이터 스트림에 분산시키는 단계를 포함하는, 데이터 스트림 관리 방법. - 제 1 항에 있어서,
상기 파일의 상기 속성 정보는 상기 파일의 타입을 포함하고; 그리고
상기 파일의 상기 속성 정보 및 상기 데이터 스트림들의 상기 현재 상태 정보에 따라 상기 파일을 상기 데이터 스트림에 분산시키는 단계는:
상기 파일이 오픈되면, 상기 파일을 현재 상태가 상기 파일의 상기 타입 및 상기 데이터 스트림들의 상기 현재 상태 정보에 따른 제1 프리셋(preset) 조건을 만족시키는 상기 데이터 스트림에 분산시키는 단계를 포함하는, 데이터 스트림 관리 방법. - 제 1 항에 있어서,
상기 현재 상태 정보는:
상기 데이터 스트림들에 현재 분산된 파일들의 타입;
상기 데이터 스트림들에 현재 분산된 상기 파일들의 수; 및
상기 데이터 스트림들에 현재 분산된 상기 파일들이 수정된 횟수, 중 적어도 하나를 포함하는, 데이터 스트림 관리 방법. - 제 2 항에 있어서,
상기 현재 상태 정보는 상기 데이터 스트림들에 현재 분산된 상기 파일들의 오픈 기간 정보(opening duration information)를 포함하고; 그리고
상기 데이터 스트림들에 현재 분산된 상기 파일들의 상기 오픈 기간 정보는:
상기 데이터 스트림들에 현재 분산된 모든 파일들의 평균 오픈 기간; 및
상기 데이터 스트림들에 현재 분산된 모든 파일들의 전체 오픈 기간, 중 적어도 하나를 포함하는, 데이터 스트림 관리 방법. - 제 4 항에 있어서,
상기 제1 프리셋 조건은 다음 조건들 중 적어도 하나를 포함하고, 상기 다음 조건들은:
상기 데이터 스트림들에 현재 분산된 상기 파일들의 상기 타입은 상기 데이터 스트림에 분산될 상기 파일의 상기 타입과 동일한 것;
상기 데이터 스트림들에 현재 분산된 상기 파일들의 수는 가장 적은 것;
상기 데이터 스트림들에 현재 분산된 모든 파일들의 상기 평균 오픈 기간은 가장 짧은 것;
상기 데이터 스트림들에 현재 분산된 모든 파일들의 상기 전체 오픈 기간은 가장 짧은 것; 그리고
상기 데이터 스트림들에 현재 분산된 상기 파일들이 수정된 횟수는 가장 적은 것인, 데이터 스트림 관리 방법. - 제 2 항에 있어서,
상기 파일의 상기 속성 정보 및 상기 데이터 스트림들의 상기 현재 상태 정보에 따라 상기 파일을 상기 데이터 스트림에 분산시키는 단계는:
상기 파일이 오픈 상태이면, 상기 파일을 현재 상태가, 프리셋 시간 간격에서, 현재 순간까지 획득된 상기 파일의 상기 속성 정보 및 상기 데이터 스트림들의 상기 현재 상태 정보에 따른 제2 프리셋 조건을 만족시키는 데이터 스트림에 분산시키는 단계를 포함하는, 데이터 스트림 관리 방법. - 복수의 데이터 스트림들에 따라 논리적으로 배열된 쓰여진(written) 데이터를 저장하도록 구성된 메모리; 및
현재 오픈된 파일의 속성 정보를 얻고, 그리고 상기 파일의 상기 속성 정보 및 상기 복수의 데이터 스트림들의 현재 상태 정보에 따라 상기 파일을 데이터 스트림에 분산시키도록 구성된 데이터 스트림 관리 장치를 포함하는, 스토리지 장치. - 제 7 항에 있어서,
상기 파일의 상기 속성 정보는 상기 파일의 타입을 포함하고; 그리고
상기 데이터 스트림 관리 장치는:
상기 파일이 오픈되면, 상기 파일을 현재 상태가 상기 파일의 상기 타입 및 상기 데이터 스트림들의 상기 현재 상태 정보에 따른 제1 프리셋(preset) 조건을 만족시키는 상기 데이터 스트림에 분산시킴으로써, 상기 파일의 상기 속성 정보 및 상기 데이터 스트림들의 상기 현재 상태 정보에 따라 상기 파일을 상기 데이터 스트림에 분산시키도록 구성된, 스토리지 장치. - 제 8 항에 있어서,
상기 현재 상태 정보는 상기 데이터 스트림들에 현재 분산된 상기 파일들의 오픈 기간 정보(opening duration information)를 포함하고; 그리고
상기 데이터 스트림들에 현재 분산된 상기 파일들의 상기 오픈 기간 정보는:
상기 데이터 스트림들에 현재 분산된 모든 파일들의 평균 오픈 기간; 및
상기 데이터 스트림들에 현재 분산된 모든 파일들의 전체 오픈 기간, 중 적어도 하나를 포함하는, 스토리지 장치. - 제 9 항에 있어서,
상기 제1 프리셋 조건은 다음 조건들 중 적어도 하나를 포함하고, 상기 다음 조건들은:
상기 데이터 스트림들에 현재 분산된 상기 파일들의 상기 타입은 상기 데이터 스트림에 분산될 상기 파일의 상기 타입과 동일한 것;
상기 데이터 스트림들에 현재 분산된 상기 파일들의 수는 가장 적은 것;
상기 데이터 스트림들에 현재 분산된 모든 파일들의 상기 평균 오픈 기간은 가장 짧은 것;
상기 데이터 스트림들에 현재 분산된 모든 파일들의 상기 전체 오픈 기간은 가장 짧은 것; 그리고
상기 데이터 스트림들에 현재 분산된 상기 파일들이 수정된 횟수는 가장 적은 것인, 스토리지 장치.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011009137.5 | 2020-09-23 | ||
CN202011009137.5A CN111984602A (zh) | 2020-09-23 | 2020-09-23 | 数据流的管理方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220040348A true KR20220040348A (ko) | 2022-03-30 |
Family
ID=73450894
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210003524A KR20220040348A (ko) | 2020-09-23 | 2021-01-11 | 데이터 스트림 관리 방법 및 장치 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11818197B2 (ko) |
KR (1) | KR20220040348A (ko) |
CN (1) | CN111984602A (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113268201A (zh) * | 2021-05-13 | 2021-08-17 | 三星(中国)半导体有限公司 | 基于文件属性的缓存管理方法和装置 |
CN113472890A (zh) * | 2021-07-09 | 2021-10-01 | 无锡美林数联科技有限公司 | 一种工业互联网平台监测系统及方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6981116B2 (en) | 2002-03-06 | 2005-12-27 | Microsoft Corporation | System and method for information control block tracking streams for universal disk format file systems |
US7509673B2 (en) | 2003-06-06 | 2009-03-24 | Microsoft Corporation | Multi-layered firewall architecture |
JP4626221B2 (ja) * | 2004-06-24 | 2011-02-02 | ソニー株式会社 | 情報処理装置、情報記録媒体、および情報処理方法、並びにコンピュータ・プログラム |
US8606949B2 (en) | 2005-04-20 | 2013-12-10 | Jupiter Systems | Interconnection mechanism for multiple data streams |
US7831766B2 (en) | 2006-12-22 | 2010-11-09 | Comm Vault Systems, Inc. | Systems and methods of data storage management, such as pre-allocation of storage space |
US9251205B2 (en) | 2013-02-21 | 2016-02-02 | International Business Machines Corporation | Streaming delay patterns in a streaming environment |
CN104580158B (zh) * | 2014-12-12 | 2018-07-31 | 集时通(福建)信息科技有限公司 | 一种分布式平台文件与内容分发方法及系统 |
US10656838B2 (en) | 2015-07-13 | 2020-05-19 | Samsung Electronics Co., Ltd. | Automatic stream detection and assignment algorithm |
US10691557B1 (en) * | 2016-06-24 | 2020-06-23 | EMC IP Holding Company LLC | Backup file recovery from multiple data sources |
US11010261B2 (en) * | 2017-03-31 | 2021-05-18 | Commvault Systems, Inc. | Dynamically allocating streams during restoration of data |
US10101942B1 (en) * | 2017-04-17 | 2018-10-16 | Sandisk Technologies Llc | System and method for hybrid push-pull data management in a non-volatile memory |
US10691489B2 (en) * | 2018-01-29 | 2020-06-23 | International Business Machines Corporation | Managing the processing of streamed data in a data streaming application using query information from a relational database |
CN109376254A (zh) * | 2018-09-11 | 2019-02-22 | 青岛海信移动通信技术股份有限公司 | 数据流的处理方法、装置、电子设备及可读存储介质 |
-
2020
- 2020-09-23 CN CN202011009137.5A patent/CN111984602A/zh active Pending
-
2021
- 2021-01-11 KR KR1020210003524A patent/KR20220040348A/ko unknown
- 2021-01-20 US US17/152,861 patent/US11818197B2/en active Active
-
2023
- 2023-09-26 US US18/474,876 patent/US20240015206A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US11818197B2 (en) | 2023-11-14 |
US20240015206A1 (en) | 2024-01-11 |
US20220094738A1 (en) | 2022-03-24 |
CN111984602A (zh) | 2020-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7089830B2 (ja) | 不揮発性メモリデータの書き込み管理のための装置、システム、及び、方法 | |
US11989160B2 (en) | Heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device | |
US9189389B2 (en) | Memory controller and memory system | |
US9311252B2 (en) | Hierarchical storage for LSM-based NoSQL stores | |
US20240015206A1 (en) | Data stream management method and device | |
US20180089074A1 (en) | Techniques to Manage Key-Value Storage at a Memory or Storage Device | |
CN104246721A (zh) | 对逻辑地址和物理地址之间的映射进行管理的存储系统、存储控制器及方法 | |
KR20170008152A (ko) | 불휘발성 메모리 장치에서의 데이터 특성 기반 데이터 배치 | |
US11449443B2 (en) | Identification and classification of write stream priority | |
US9507705B2 (en) | Write cache sorting | |
CN108628542B (zh) | 一种文件合并方法及控制器 | |
Yang et al. | Ars: Reducing f2fs fragmentation for smartphones using decision trees | |
US20120173801A1 (en) | Data processing device, data recording method and data recording program | |
US20200082241A1 (en) | Cognitive storage device | |
CN114442946A (zh) | 物理块管理方法和固态硬盘 | |
CN102479156B (zh) | 用来进行区块管理的方法、记忆装置及其控制器 | |
US11922035B2 (en) | Read-disturb-based read temperature adjustment system | |
US11928354B2 (en) | Read-disturb-based read temperature determination system | |
US11983431B2 (en) | Read-disturb-based read temperature time-based attenuation system | |
CN112433673B (zh) | 一种固态硬盘存储数据的方法和设备 | |
US20230305707A1 (en) | Data storage method and apparatus | |
CN117873388A (zh) | 数据写入方法、装置、计算机设备和存储介质 | |
CN118259839A (en) | Solid-state disk space allocation method and device, electronic equipment and storage medium | |
KR20230090468A (ko) | 읽기 성능 개선을 위한 LightNVM의 데이터 저장 방법 및 그 장치 | |
KR20230172426A (ko) | 데이터 저장을 위한 방법 및 장치 |