KR102669897B1 - 부팅 가능한 키 값 장치 - Google Patents
부팅 가능한 키 값 장치 Download PDFInfo
- Publication number
- KR102669897B1 KR102669897B1 KR1020200173753A KR20200173753A KR102669897B1 KR 102669897 B1 KR102669897 B1 KR 102669897B1 KR 1020200173753 A KR1020200173753 A KR 1020200173753A KR 20200173753 A KR20200173753 A KR 20200173753A KR 102669897 B1 KR102669897 B1 KR 102669897B1
- Authority
- KR
- South Korea
- Prior art keywords
- boot
- ssd
- request
- data
- key
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 48
- 230000008569 process Effects 0.000 claims abstract description 21
- 238000005192 partition Methods 0.000 claims description 48
- 239000007787 solid Substances 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 7
- 238000013403 standard screening design Methods 0.000 description 28
- 238000012545 processing Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000012005 ligant binding assay Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 150000002016 disaccharides Chemical class 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000033001 locomotion Effects 0.000 description 1
- 238000012554 master batch record Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 229920001485 poly(butyl acrylate) polymer Polymers 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000029305 taxis Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1072—Decentralised address translation, e.g. in distributed shared memory systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0626—Reducing size or complexity of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0891—Revocation or update of secret information, e.g. encryption key update or rekeying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
Abstract
키-값(Key-Value) 저장 장치가 개시된다. KV 저장 장치는 오브젝트들에 대한 스토리지를 포함할 수 있고, 각 오브젝트는 키와 관련된 데이터를 포함한다. 호스트 인터페이스 로직은 스토리지로부터 키와 관련된 데이터를 읽고, 스토리지에 키와 관련된 데이터를 쓰기 위한 요청들을 수신할 수 있고, 그리고 스토리지로부터 부팅 데이터를 획득하기 위한 부팅 요청을 수신할 수 있다. 부팅 요청 프로세서는 스토리지를 사용하여 부팅 요청을 처리할 수 있다.
Description
본 발명의 개념들은 일반적으로 저장 장치들에 관한 것이고, 더 상세하게는 부팅 가능한 키-값(KV) 저장 장치들에 관한 것이다.
키-값 SSD(Key-Value Solid State Drives, KV-SSD)는 데이터를 저장하고 액세스(접근)하는 대안적인 방법을 제공한다. SSD가 장치 상의 PBA(Physical Block Address)에 매핑하는 LBA(Logical Block Address)를 제공하는 대신에, 호스트는 데이터에 키를 할당한다. 키가 KV-SSD 상의 다른 키들과 비교하여 고유한(unique) 경우, 모든 데이터가 KV-SSD에 저장될 수 있다. 이것은 KV-SSD에 대한 명령들의 집합을 감소시킨다. 일반적으로, 키와 관련된 값을 저장하고(PUT), 키와 관련된 값을 검색하고(retrieve, 회수하고)(GET), 키와 관련된 값을 삭제하는(DELETE) 명령들보다 조금 더 필요하다(특정 명령들의 이름들은 다를 수 있다).
그러나 현재 KV-SSD들은 부팅할 수 없다. 부팅 가능하기 위해, 시스템은 장치상의 특정 위치에 저장된 정보에 액세스하기 위해 (블록)명령을 보낼 수 있어야한다. 하드 디스크 드라이브들 및 블록 인터페이스 SSD들은 이러한 명령들을 허용하지만, KV-SSD들은 이러한 명령들을 지원하지 않는다. 따라서 KV-SSD들을 사용하는 시스템에서, KV-SSD 및 부팅 가능한 다른 장치(운영 체제 용)와 같은 여러 저장 장치들이 필요하다.
KV 장치들을 부팅 가능한 장치들로 허용하는 방법이 여전히 필요하다.
본 발명의 목적은 블록 기반의 부팅 요청을 처리할 수 있는 키-값(Key-Value) 저장 장치 및 그의 동작 방법을 제공하는데 있다.
본 발명의 일 실시 예는 키-값(Key-Value, KV) 저장 장치를 포함하고, KV 저장 장치는 오브젝트들에 대한 스토리지, 각 오브젝트는 키와 관련된 데이터를 포함하고; 호스트 컴퓨터로부터 요청들을 수신하고 및 요청들의 결과들을 반환하는 호스트 인터페이스 로직, 요청들은 오브젝트들에 대한 스토리지로부터 제1 키와 관련된 제1 데이터를 가져오기 위한 읽기 요청, 오브젝트들에 대한 스토리지로부터 제2 키와 관련된 제2 데이터를 넣기 위한 쓰기 요청, 및 오브젝트들에 대한 스토리지로부터 부팅 데이터를 얻기 위한 부팅 요청을 포함하고; 및 오브젝트들에 대한 스토리지를 사용하여 부팅 요청을 처리하는 부팅 요청 프로세서를 포함한다.
본 발명의 일 실시 예는 키-값(Key-Value, KV) 저장 장치의 동작 방법을 포함하고, KV 저장 장치의 동작 방법은, KV 저장 장치에서 호스트 컴퓨터로부터 부팅 요청을 수신하는 단계; 부팅 요청에 적어도 부분적으로 기초하여 KV 저장 장치로부터 부팅 데이터를 검색하는 단계; 및 부팅 데이터를 KV 저장 장치로부터 호스트 컴퓨터로 반환하는 단계를 포함한다.
본 발명의 일 실시 예는 비-일시적 저장 매체(non-transitory storage medium)를 포함하는 물품(article)을 포함하고, 비-일시적 저장 매체는 기계에 의해 실행될 때, 키-값(Key-Value, KV) 저장 장치에서 호스트 컴퓨터로부터 부팅 요청을 수신하고; 부팅 요청에 적어도 부분적으로 기초하여 KV 저장 장치로부터 부팅 데이터를 검색하고; 및 부팅 데이터를 KV 저장 장치로부터 호스트 컴퓨터로 반환하는 명령어들을 저장한다.
예시적인 실시 예들에 따르면, 부팅 요청을 수신하고, 그것을 처리하고, 부팅 데이터를 호스트 컴퓨터로 반환함으로써, 블록 기반의 부팅 요청을 처리할 수 있는 키-값 저장 장치를 제공할 수 있다.
도 1은 본 발명의 일 실시 예에 따른 부팅 가능한 KV-SSD(Key-Value Solid State Drive)를 포함하는 기계(machine)를 나타낸다.
도 2는 도 1의 기계의 추가적인 세부 사항들을 나타낸다.
도 3은 도 1의 KV-SSD의 세부 사항들을 나타낸다.
도 4는 예시적인 파티션 테이블 체계(partition table scheme)의 세부 사항들을 보여준다.
도 5a-5b는 본 발명의 실시 예들에 따른, 도 1의 KV-SSD가 부팅 정보를 저장하는 방법을 나타낸다.
도 6은 블록 부팅 요청(block boot request)을 키-값(KV) 부팅 요청으로 변환하는 도 3의 부팅 요청 프로세서(boot request processor)를 나타낸다.
도 7은 본 발명의 일 실시 예에 따른, 블록 부팅 요청을 처리하기 위한 도 1의 KV-SSD에 대한 예시적인 절차의 흐름도를 도시한다.
도 8은 본 발명의 일 실시 예에 따른, KV 부팅 요청을 처리하기 위한 도 1의 KV-SSD에 대한 예시적인 절차의 흐름도를 도시한다.
도 2는 도 1의 기계의 추가적인 세부 사항들을 나타낸다.
도 3은 도 1의 KV-SSD의 세부 사항들을 나타낸다.
도 4는 예시적인 파티션 테이블 체계(partition table scheme)의 세부 사항들을 보여준다.
도 5a-5b는 본 발명의 실시 예들에 따른, 도 1의 KV-SSD가 부팅 정보를 저장하는 방법을 나타낸다.
도 6은 블록 부팅 요청(block boot request)을 키-값(KV) 부팅 요청으로 변환하는 도 3의 부팅 요청 프로세서(boot request processor)를 나타낸다.
도 7은 본 발명의 일 실시 예에 따른, 블록 부팅 요청을 처리하기 위한 도 1의 KV-SSD에 대한 예시적인 절차의 흐름도를 도시한다.
도 8은 본 발명의 일 실시 예에 따른, KV 부팅 요청을 처리하기 위한 도 1의 KV-SSD에 대한 예시적인 절차의 흐름도를 도시한다.
이제 본 발명의 실시 예들에 대한 참조가 상세하게 이루어질 것이며, 그 예들은 첨부된 도면들에 예시되어 있다. 다음의 상세한 설명에서, 본 발명의 개념의 완전한 이해를 가능하게 하기위해 다수의 특정 세부 사항들이 제시된다. 그러나, 당업자는 이러한 특정 세부 사항들 없이 본 발명의 개념을 실시할 수 있음을 이해해야 한다. 다른 예들에서, 잘 알려진 방법들, 절차들, 구성 요소들, 회로들 및 네트워크들은 실시 예들의 측면들을 불필요하게 모호하게 하지 않도록 상세하게 설명되지 않았다.
비록 제1, 제2 등의 용어들이 본 명세서에서 다양한 요소들을 설명하기 위해 사용될 수 있지만, 이들 요소들은 이러한 용어들에 의해 제한되어서는 안된다는 것을 이해할 것이다. 이들 용어들은 한 요소를 다른 요소와 구별하는 데만 사용된다. 예를 들어, 제1 모듈은 제2 모듈로 명명될 수 있고, 유사하게 제2 모듈은 본 발명의 개념의 범위를 벗어나지 않고 제1 모듈로 명명될 수 있다.
본 발명의 설명에 사용된 용어는 특정 실시 예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 발명의 설명 및 첨부된 청구 범위에서 사용된 바와 같이, 단수형 "a", "an", 및 "the"는 문맥상 명백하게 달리 나타내지 않는 한 복수형도 포함하도록 의도된다. 본 명세서에서 사용된 용어 "및/또는"은 하나 이상의 연관된 열거된 항목의 임의의 및 모든 가능한 조합을 지칭하고 포함하는 것으로 또한 이해될 것이다. 본 명세서에서 사용될 때, "포함한다" 및/또는 "포함하는"이라는 용어는 언급된 특징들, 정수들, 단계들, 연산들, 요소들 및/또는 구성 요소들의 존재를 특정하지만, 하나 이상의 다른 특징들, 정수들, 단계들, 연산들, 요소들, 구성 요소들 및/또는 그의 그룹들의 존재 또는 추가를 배제하지는 않는다는 것으로 추가로 이해될 것이다. 도면들의 구성 요소들과 기능들은 반드시 축척에 따라 그려지지는 않는다.
블록 장치들이 부팅 가능해지는 방법은 잘 정의되어 있다. 기본적으로, 장치는 0의 LBA(Logical Block Address)에 액세스한다. KV 장치들에 대한 대응하는 정의가 없다. 그러나 KV 장치가 MBR(Master Boot Record) 또는 UEFI (Unified Extensible Firmware Interface) 표준을 준수하는 경우, KV 장치는 부팅될 수 있어야 한다.
따라서 KV 장치를 부팅 가능하게 하기 위해, KV 장치가 LBA 0에서 정보를 읽기 위한 (블록) 명령을 처리할 수 있어야 한다. 이 프로세스에는 예약된 주소(예를 들면, 장치 상의 물리적 주소 0)에 저장된 정보를 읽거나, 또는 장치의 다른 사용자들이 사용할 수 없는 특수 (예약된) 키를 사용하여 오브젝트(객체)에 부팅 정보를 저장하는 것이 포함될 수 있다.
KV 장치가 (LBA 0와 같은) 특수 주소에 정보를 저장하도록 설계된 경우, 장치는 "LBA 0 읽기" 또는 이와 동등한 것과 같은, 특수 (블록) 명령을 처리할 수 있다. KV 장치가 예약된 키와 관련된 오브젝트에 부팅 정보를 저장하는 경우, 이 오브젝트는 장치의 어디에나 저장될 수 있다. 또한, KV 장치는 LBA 0을 읽기 위한 (block) 명령(이는 이후, 예약된 키를 사용하여 GET 명령에 직접 매핑될 수 있음) 또는 예약된 키와 관련된 데이터를 읽기 위한 GET 명령 중 어느 하나를 수신할 수 있다(컴퓨터가 KV 장치를 부팅하고 운영 체제를 로드하기 위해 KV 장치에 KV 명령을 보내도록 설계되었음을 가정함).
MBR가 사용될 때, 8 비트를 사용하는 KV-에뮬레이션 파티션(KV-emulated partition)에 파티션 ID(Partition ID)가 필요하다. UEFI가 사용될 때, KV 에뮬레이션 파티션에 GUID(63C9EB50-B05B-11E8-B568-0800200C9A66)가 필요하다.
도 1은 본 발명의 일 실시 예에 따른 부팅 가능한 KV-SSD(Key-Value Solid State Drive)를 포함하는 기계를 나타낸다. 도 1에는 기계(105)가 도시되어 있다. 기계(105)는 프로세서(110)를 포함할 수 있다. 프로세서(110)는, 예를 들어, Intel Xeon, Celeron, Itanium 또는 Atom processor, AMD Opteron processor, ARM processor 등 임의의 다양한 프로세서일 수 있다. 도 1은 기계(105) 내의 단일의 프로세서(110)를 나타내지만, 기계(105)는 임의의 수의 프로세서를 포함할 수 있고, 각각의 프로세서는 단일 코어 또는 멀티 코어 프로세서일 수 있고, 그리고 임의의 원하는 조합으로 혼합될 수 있다.
기계(105)는 또한 메모리(115)를 포함할 수 있다. 메모리(115)는 플래시 메모리, DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), PRAM(Persistent Random Access Memory), FRAM(Ferroelectric Random Access Memory), 또는 MRAM(Magnetoresistive Random Access Memory) 등과 같은 NVRAM(Non-Volatile Random Access Memory)과 같은 임의의 다양한 메모리일 수 있다. 메모리(115)는 또한 상이한 메모리 유형들의 임의의 원하는 조합일 수 있다. 기계(105)는 또한 메모리(115)에 대한 액세스를 관리하는데 사용될 수 있는 메모리 컨트롤러(120)를 포함할 수 있다.
기계(105)는 또한 KV-SSD로 도시된, 저장 장치(125)를 포함할 수 있다. KV-SSD(125)는 키-값 인터페이스를 사용하여 데이터에 액세스한다. 애플리케이션 또는 운영 체제는 KV-SSD(125)에 키를 제공할 수 있으며, 그러면 KV-SSD(125)는 키를 KV-SSD(125) 상의 위치에 매핑할 수 있다. KV-SSD(125)는 그러면 KV-SSD(125) 상의 해당 위치에 저장된 값을 액세스하여 반환할 수 있다. 통상의 저장 장치들의 통상의 파일 시스템에 의해 제공되는 복잡한 명령 집합(세트)과 달리, KV-SSD(125)는 GET(제공된 키와 관련된 값을 검색(회수)하기 위한), PUT(제공된 키와 또는 반환될 수 있는 KV-SSD 생성 키와 연관된, KV-SSD에 제공된 값을 저장하기 위한), 및 ERASE(KV-SSD로부터 제공된 키와 연관된 값을 삭제하고, KV-SSD 테이블들로부터 키-값 연관을 제거하기 위한)와 같은, 일반적으로 매우 작은 명령들의 집합을 제공한다(KV-SSD(125)는 다른 명령들도 지원할 수 있고 나타낸 것과 다른 명령 이름들을 사용할 수 있으나, 원칙들은 일반적으로 설명된 것과 같다). KV-SSD(125)는 또한 아래의 본 발명의 실시 예들에서 설명된 바와 같이 오브젝트 저장(스토리지)을 지원하는 임의의 다른 저장 장치로 대체될 수 있다. 프로세서(110)는 KV-SSD(125)에 대한 액세스를 지원할 수 있는 장치 드라이버(130)를 실행할 수 있다.
도 1은 기계(105)를 서버(독립형 또는 랙(rack) 서버일 수 있음)로서 묘사하고 있지만, 본 발명의 실시 예들은 제한없이 임의의 원하는 유형의 기계(105)를 포함할 수 있다. 예를 들어, 기계(105)는 데스크탑 또는 랩탑 컴퓨터 또는 본 발명의 실시 예로부터 이익을 얻을 수 있는 임의의 다른 기계로 대체될 수 있다. 기계(105)는 또한 특수 휴대용 컴퓨팅 기계들, 태블릿 컴퓨터들, 스마트 폰들 및 기타 컴퓨팅 기계들을 포함할 수 있다. 또한, KV-SSD(125)로부터 데이터에 액세스할 수 있는 애플리케이션은 기계(105)로부터 분리된 다른 기계에 위치할 수 있고, 임의의 유형들(유선, 무선, 글로벌 등)의 하나 이상의 네트워크들을 가로 지르는 네트워크 연결을 통해 기계(105)에 액세스할 수 있다.
도 2는 도 1의 기계(105)의 추가적인 세부 사항들을 나타낸다. 도 2에서, 일반적으로, 기계(105)는 메모리 컨트롤러(120) 및 클럭(205)을 포함할 수 있는 하나 이상의 프로세서(110)를 포함하며, 이는 기계(105)의 구성 요소들의 동작들을 조정하는데 사용될 수 있다. 프로세서(110)는 또한 예로서 RAM(random access memory), ROM(read-only memory), 또는 다른 상태 보존 매체를 포함할 수 있는 메모리(115)에 결합될 수 있다. 프로세서(110)는 또한 저장 장치(125) 및, 예를 들어 이더넷 커넥터(Ethernet connector) 또는 무선 커넥터일 수 있는 네트워크 커넥터(210)에 결합될 수 있다. 프로세서(110)는 또한 다른 구성 요소들 중에서, 입력/출력 엔진(225)을 사용하여 관리될 수 있는 입력/출력 인터페이스 포트 및 사용자 인터페이스(220)가 부착될 수 있는 버스(215)에 연결될 수 있다.
도 3은 도 1의 KV-SSD(125)의 세부 사항들을 나타낸다. 도 3에서, KV-SSD(125)는 호스트 인터페이스 로직(HIL)(305), SSD 컨트롤러(310) 및 다양한 플래시 메모리 칩들(315-1~315-8)("플래시 메모리 스토리지"라고도 함)을 포함할 수 있으며, 이는 다양한 채널들(320-1~320-4)로 구성될 수 있다. 호스트 인터페이스 로직(305)은 KV-SSD(125) 및 다른 구성 요소들(도 1의 프로세서(110)와 같이) 사이의 통신들을 관리할 수 있다. 이러한 통신들은 KV-SSD(125)로부터 데이터를 읽기 위한 읽기 요청들, KV-SSD(125)에 데이터를 쓰기 위한 쓰기 요청들, 및 KV-SSD(125)로부터 데이터를 삭제하기 위한 삭제 요청들을 포함할 수 있다. 호스트 인터페이스 로직(305)은 단일 포트에 걸쳐 인터페이스를 관리할 수 있거나, 다중 포트들에 걸쳐 인터페이스들을 관리할 수 있다. 대안적으로, KV-SSD(125)는 다수의 포트들을 포함할 수 있으며, 이들 각각은 해당 포트에 걸쳐 인터페이스들을 관리하기 위해 별도의 호스트 인터페이스 로직(305)을 가질 수 있다. 본 발명의 실시 예들은 또한 가능성들을 혼합할 수 있다(예를 들어, 3개의 포트들을 갖는 SSD는 하나의 포트를 관리하기 위한 하나의 호스트 인터페이스 로직 및 다른 2개의 포트들를 관리하기 위한 제2 호스트 인터페이스 로직을 가질 수 있음).
SSD 컨트롤러(310)는 플래시 메모리 컨트롤러(도 3에 도시되지 않음)를 사용하여 플래시 메모리 칩(315-1~315-8)에서, 가비지(garbage) 수집 및 다른 동작들과 함께, 읽기 및 쓰기 동작들을 관리할 수 있다.
블록 기반(block-based) 저장 장치, 특히 블록 기반 SSD에서, 호스트는 데이터에 LBA(logical block address)를 할당할 수 있고, 저장 장치는 이를 PBA(physical block address)에 매핑할 수 있다. 저장 장치는 이러한 매핑들의 기록을 유지하여, SSD 및 호스트가 데이터의 현재 PBA에서 호스트를 최신 상태로 유지하도록 할 필요가 없도록 한다. 호스트는 단순히 LBA를 사용하고, 저장 장치는 LBA를 PBA에 매핑하고 적절한 정보를 반환한다. 데이터가 내부적으로 저장 장치로 이동하는 경우(예를 들어, SSD에서 데이터 덮어쓰기(overwrite) 또는 가비지 수집(garbage collection) 중에 발생할 수 있음), 이러한 데이터 이동은 호스트에 명백(투명, transparent)하다(매핑이 데이터의 새로운 PBA로 업데이트 됨). LBA들을 PBA들에 매핑하는 이러한 구조들은 변환 계층들 또는 플래시 변환 계층들(특히 플래시 스토리지를 사용하는 SSD들 및 기타 장치들의 맥락에서)이라고 할 수 있다.
반면 KV-SSD들은 데이터를 다르게 관리한다. 데이터에 LBA가 할당되는 대신, 데이터(값 또는 데이터 값이라고도 함)에 키(오브젝트 키라고도 함)가 할당될 수 있다. 이것은 용어 변경(“LBA”를 대체하는 “오브젝트 키”)에 지나지 않는 것처럼 보일 수 있지만, 키들과 오브젝트 LBA들간에(그리고 KV-SSD들과 블록 기반의 SSD들간에)는 다른 차이점들이 있다. 블록 기반의 SSD의 블록 크기는 제조업체에서 고정된다. 예를 들어, 4KB의 블록들을 가진 블록 기반의 SSD에서, 모든 블록은 4KB의 크기고, 유연성이 없다. 이 사실은 LBA들이 SSD 상의 블록들에 효과적으로 매핑하기 위해 4KB 단위들로 또한 나뉘어져 있음을 의미한다. 반면, KV-SSD들은 데이터 값들에 유연한 크기들을 허용한다. 예를 들어, 값 크기들은 0B에서 2MB까지의 범위일 수 있다. 또한, 오브젝트 키 크기들은, 예를 들어, 4B에서 255B까지 다양할 수 있다. 이러한 배열들은 블록 기반의 SSD에 의해 제공될 수 있는 것보다 데이터 저장 방법에 있어서 더 많은 유연성을 허용한다.
따라서, 플래시 변환 계층 대신에, KV-SSD(125)는 변환 계층(325)과 같이, 오브젝트 키로부터 데이터 값이 저장되는 주소로의 일종의 매핑을 포함할 수 있다. 변환 계층(325)은 오브젝트 키로부터 해당 데이터가 KV-SSD(125)에 저장되는 주소로 매핑할 수 있다. 변환 계층(325)은 또한, 예를 들어, 오브젝트가 얼마나 큰지에 대한(따라서 전체 오브젝트가 KV-SSD(125)에 저장되는 방법) 추가적인 데이터를 저장할 수 있다.
도 3은 4개의 채널(320-1~320-4)로 구성된 8개의 플래시 메모리 칩들(315-1~315-8)을 포함하는 KV-SSD(125)를 나타내지만, 본 발명의 실시 예들은 임의의 수의 채널들로 구성된 임의의 수의 플래시 메모리 칩들을 지원할 수 있다. 유사하게, 도 3은 KV-SSD의 구조를 보여주지만, 다른 저장 장치들(예를 들어, 하드 디스크 드라이브들)은 다른 구조를 사용하여 구현될 수 있지고, 하지만 보안 및 데이터 중복 제거(deduplication)를 모두 포함하는 유사한 잠재적 이점들이 있다.
호스트 인터페이스 로직(305)은 또한 부팅 요청 프로세서(330)를 포함할 수 있다. 부팅 요청 프로세서(330)는 기계(105)의 BIOS(Basic Input/Output System)로부터의 블록 기반의 부팅 요청들을 처리할 수 있다. 부팅 요청 프로세서(330)는 해당 프로세서에 의해 실행되는 적절한 소프트웨어를 가진 범용 프로세서를 사용하거나, FPGA(Field Programmable Gate Array) 또는 ASIC(Application-Specific Integrated Circuit)를 사용하거나, 또는 GPU(Graphics Processing Unit) 또는 GPGPU(General-Purpose GPU)를 사용하여, 다른 가능성들 중에서 구현될 수 있다. 부팅 요청 프로세서(330)의 특정 동작은 이하 도 5a 내지 도 5b를 참조하여 더 논의된다. 도 3은 호스트 인터페이스 로직(305)의 일부로서 부팅 요청 프로세서(330)를 도시하지만, 본 발명의 실시 예들은 부팅 요청 프로세서(330)를 다른 위치, 예를 들어, SSD 컨트롤러(310) 내에 배치할 수 있다.
저장 장치를 부팅 장치로 사용할 때, 컴퓨터의 BIOS가 저장 장치로부터 특정 정보를 로드하려고 할 수 있다. 이 정보는 운영 체제의 나머지를 부트스트랩(bootstrap)하기 위해 사용될 수 있다. 하드 디스크 드라이브 또는 블록 기반의 SSD와 같은 블록 기반 장치를 사용하는 경우, BIOS는 LBA 0과 같은 특정 LBA(Logical Block Address)로부터 데이터 읽기를 위한 요청을 보낼 수 있다. 저장 장치는 요청된 데이터를 위치시키는(찾는) 방법을 알고 운영 체제의 실행을 시작하기 위해 적절한 정보를 BIOS에 반환할 수 있다.
일반적으로, 이러한 정보를 저장 장치에 저장하는 두 개의 방법이 있다. 한 방법은 MBR(Master Boot Record)을 저장하는 것이다. MBR은 일반적으로 장치의 첫 번째 섹터에 저장되고, 512 바이트의 저장 공간을 차지한다. MBR들의 두 개의 예시 형식들이 아래에 도시된다. 표 1은 최신 표준 MBR을 보여주고, 표 2는 DM(Disk Manager) MBR을 보여준다.
주소 | 설명 | 크기 (bytes) | ||
16진수 | 10진수 | |||
+000h | +0 | 부트스트랩(bootstrap) 코드 영역 (파트 1) | 218 | |
+0DAh | +218 | 0000h | 디스크 타임스탬프(Disk timestamp) (옵션, MS-DOS 7.1-8.0 및 Windows 95B/998/98SE/ME. 또는 NEWLDR과 함께 OEM 로더(loader) 서명 역할을 할 수 있음) |
2 |
+0DCh | +220 | 원래의 물리적 드라이브 (80h-FFh) | 1 | |
+0DDh | +221 | 초 (0-59) | 1 | |
+0DEh | +222 | 분 (0-59) | 1 | |
+0DFh | +223 | 시 (0-23) | 1 | |
+0E0h | +224 | 부트스트랩 코드 영역 (파트 2, 000h에서 코드 엔트리) | 216 (or 222) | |
+1B8h | +440 | 32-비트 디스크 서명 | 디스크 서명(Disk signature) (옵션, UEFI, Windows NT/2000/Vista/7 및 다른 운영체제들) |
4 |
+1BCh | +444 | 0000h (복사 방지면 5A5Ah) |
2 | |
+1BEh | +446 | 파티션 엔트리 No. 1 | 파티션 테이블(최초의(primary) 파티션들을 위한) | 16 |
+1CEh | +462 | 파티션 엔트리 No. 2 | 16 | |
+1DEh | +478 | 파티션 엔트리 No. 3 | 16 | |
+1EEh | +494 | 파티션 엔트리 No. 4 | 16 | |
+1FEh | +510 | 55h | 부트 서명(boot signature) | 2 |
+1FFh | +511 | AAh |
주소 | 설명 | 크기 (bytes) | ||
16진수 | 10진수 | |||
+000h | +0 | 부트스트랩 코드 영역 | 252 | |
+0FCh | +252 | AAh | DM 서명(DM Signature) (옵션) | 2 |
+0FDh | +253 | 55h | ||
+0FEh | +254 | 파티션 엔트리 | DM 확장된 파티션 테이블 (DM Expanded Partition Table) |
16 |
+10Eh | +270 | 파티션 엔트리 | 16 | |
+11Eh | +286 | 파티션 엔트리 | 16 | |
+12Eh | +302 | 파티션 엔트리 | 16 | |
+13Eh | +318 | 파티션 엔트리 | 16 | |
+14Eh | +334 | 파티션 엔트리 | 16 | |
+15Eh | +350 | 파티션 엔트리 | 16 | |
+16Eh | +366 | 파티션 엔트리 | 16 | |
+17Eh | +382 | 파티션 엔트리 | 16 | |
+18Eh | +398 | 파티션 엔트리 | 16 | |
+19Eh | +414 | 파티션 엔트리 | 16 | |
+1AEh | +430 | 파티션 엔트리 | 16 | |
+1BEh | +446 | 파티션 엔트리 No. 1 | 파티션 테이블(최초의(primary) 파티션들을 위한) | 16 |
+1CEh | +462 | 파티션 엔트리 No. 2 | 16 | |
+1DEh | +478 | 파티션 엔트리 No. 3 | 16 | |
+1EEh | +494 | 파티션 엔트리 No. 4 | 16 | |
+1FEh | +510 | 55h | 부트 서명(boot signature) | 2 |
+1FFh | +511 | AAh |
MBR의 대안은 GUID(Globally Unique Identifier) 파티션 테이블(GPT)을 사용하는 것이다. GPT 구조는 부팅 정보를 위해 선택된 구조로 MBR을 대체하기 시작한다. 그러나 이전 기계들의 BIOS는 MBR이 반환될 것으로 예상할 수 있으므로, 저장 장치는 MBR 사용을 지원하는 것을 계속할 수 있다. 아래의 표 3은 GPT 헤더(header) 형식의 예를 보여주고, 아래의 표 4는 GUID 파티션 항목 형식의 예를 보여준다. 도 4는 GUID 파티션 테이블 체계의 예를 보여준다.
오프셋 | 길이 | 내용 | |
16진수 | 10진수 | ||
+00h | +0 | 8 bytes | 서명 (“PART”리틀-엔디언 머신(little-endian machines)에서)) |
+08h | +8 | 4 bytes | 개정 (GPT 버전 1.0(최소 UEFI 버전 2.7(2017년 5월)까지)에 대해, 값은 00h 00h 01h 00h이다.) |
+0Ch | +12 | 4 bytes | 리트 엔디언의 헤더 크기(바이트(bytes)로, 보통 5Ch 00h 00h 00h 또는 92 bytes) |
+10h | +16 | 4 bytes | 리틀 엔디언에서 헤더의 CRC32/zlib(헤어 크기 까지 오프셋 +0), 이 필드(field)는 계산 중에 0이됨 |
+14h | +20 | 4 bytes | 예약됨, 0이어야 함 |
+18h | +24 | 8 bytes | 현재 LBA (헤더 사본의 위치) |
+20h | +32 | 8 bytes | 백업 LBA (다른 헤더 사본의 위치) |
+28h | +40 | 8 bytes | 파티션들에 대한 제1 사용 가능한 LBA(최초의 파티션 테이블 최후의 LBA + 1) |
+30h | +48 | 8 bytes | 최후의 사용 가능한 LBA(제2 파티션 테이블 제1 LBA - 1) |
+38h | +56 | 16 bytes | 디스크 GUID(또는 UNIX 머신들 상의 UUID라고도 함) |
+48h | +72 | 8 bytes | 파티션 엔트리들의 배열의 LBA 시작(최초의 사본에서 항상 2) |
+50h | +80 | 4 bytes | 배열의 파티션 엔트리들의 수 |
+43h | +84 | 4 bytes | 단일 파티션 엔트리의 크기(보통 80h 또는 128) |
+58h | +88 | 4 bytes | 리틀 엔디언의 파티션 배열의 CRC32/zlib |
+5Ch | +92 | * | 예약됨, 나머지 블록에 대해 0이어야 함(512 바이트 섹터 크기에 대해 420 바이트, 그러나 섹터 크기가 클수록 더 클 수 있음) |
오프셋 | 길이 | 내용 | |
16진수 | 10진수 | ||
+00h | +0 | 16 bytes | 파티션 유형 GUID |
+10h | +16 | 16 bytes | 고유(unique) 파티션 GUID |
+20h | +32 | 8 bytes | 제1 LBA (리틀 엔디언(little endian)) |
+28h | +40 | 8 bytes | 최후 LBA (포함(inclusive), 보통 홀수) |
+30h | +48 | 8 bytes | 속성 플래그들(attribute flags)(예를 들어, 비트 60은 읽기 전용을 나타냄) |
+38h | +56 | 72 bytes | 파티션 이름 (36 UTF-16LE 코드 유닛들) |
위에서 언급했듯이, MBR 또는 GPT 중 하나에 액세스하기 위해, 컴퓨터 시스템의 BIOS는 일반적으로 저장 장치 상에서, LBA 0과 같은, 특정 블록을 읽기 위한 요청을 보낸다. 그러나 키-값(KV) 저장 장치들은 블록 기반의 저장 장치와 동일한 방식으로 데이터를 구성하지 않으며, 블록 기반의 읽기 요청을 처리하지도 않는다. 또한, KV 저장 장치로부터 부팅 정보에 액세스하기 위한 잘 정의된 방법도 없다. 따라서 통상의 KV 저장 장치는 부팅 장치들로 사용되지 않을 수 있다.
문제에 대한 세 개의 해결책이 있다. 하나의 해결책은 부팅 데이터를 검색(회수)하기 위해 BIOS로부터 KV 요청에 사용될 수 있는 특정한 예약된 키(reserved key)를 확립(establish)하는 것이다. 그러나 그러한 기준이 확립될 때까지, 그러한 해결책은 사용할 수 없다. 또한, 이러한 해결책은 앞으로는 유용할 수 있지만, 이러한 해결책은 저장 장치가 블록 기반의 요청들을 받을 수 있다고 가정하는(그리고 부팅 데이터에 대한 KV 요청을 발행하도록 업데이트되지 않을 수 있다) 이전 BIOS에서는 작동하지 않는다. 따라서 이러한 해결책은 존재하는 컴퓨터 시스템 및 존재하는 BIOS 펌웨어와 역호환(backward compatible)되지 않는다.
두 번째 해결책은 도 1의 KV-SSD(125)를 활성화하여 블록 기반의 부팅 요청을 수신하고 처리하는 것이다. 이 해결책이 반드시 도 1의 KV-SSD(125)가 “임의의” 블록 기반의 요청들을 처리할 수 있다는 것을 지지하는 것은 아니라는 점에 유의하라(일반적으로 블록 기반의 요청들을 처리하도록 도 1의 KV-SSD(125)를 구성하는 것이 가능할 수 있을지라도). 대신, 이 해결책은 도 1의 KV-SSD(125)가 부팅 데이터에 대한 BIOS로부터 블록 기반의 요청을 “오직” 처리하도록 구성하는 것을 포함한다. 도 5a는 도 1의 KV-SSD(125)가 부팅 데이터를 저장하도록 배열될 수 있는 방법 및 도 1의 KV-SSD(125)가 이러한 블록 기반의 부팅 요청들을 처리하도록 구성될 수 있는 방법을 나타낸다.
세 번째 해결책은 도 1의 KV-SSD(125)가 블록 기반의 부팅 요청을 수신하고, 해당 블록 기반의 부팅 요청을 KV 요청에 매핑하도록 구성하는 것이고, KV 요청을 그러면 도 1의 KV-SSD(125)는 통상의 기술들에 따라 처리할 수 있다. 도 5b는 도 1의 KV-SSD(125)가 부팅 데이터를 저장하도록 배열될 수 있는 방법 및 도 1의 KV-SSD(125)가 이러한 블록 기반의 부팅 요청들을 처리하도록 구성될 수 있는 방법을 나타낸다.
도 5a는 도 1의 KV-SSD(125)가 블록 기반의 부팅 요청에 직접 응답하여 도 1의 KV-SSD (125)로부터 직접적으로 부팅 데이터를 판독하도록 구성될 수 있는 본 발명의 실시 예들을 나타낸다. 도 5a에서, 도 1의 KV-SSD(125)의 제1 부분은 기존의 블록 기반의 저장 장치들과 마찬가지로, 부팅 정보를 저장하기 위해 예약될 수 있다. 즉, 도 1의 KV-SSD(125)의 주소 0에서 시작하는 저장의 섹터, 블록, 또는 다른 세그먼트는 부팅 데이터(표 1 및 표 2를 참조하여 상술한 MBR, 또는 표 3, 표 4 및 도 4를 참조하여 상술한 GPT일 수 있음)를 저장하기 위해 예약될 수 있다. 그 다음, 도 3의 호스트 인터페이스 로직(305)이 도 1의 기계(105)의 BIOS로부터 블록 기반의 부팅 요청을 수신할 때, 도 3의 부팅 요청 프로세서(330)는 그 요청(도 3의 SSD 컨트롤러(310)가 어쨌든 처리할 수 없을 수도 있음)을 가로채고(intercept), 주소 0에서 시작하는 도 1의 KV-SSD(125)의 부분으로부터 부팅 데이터에 액세스하고, 해당 부팅 데이터를 도 1의 기계(105)의 BIOS로 반환한다. 본 발명의 이러한 실시 예들에서, 도 3의 KV-SSD(125)의 첫 번째 부분만이 MBR 또는 GPT를 위해 예약되는 것을 주의해야 한다. 모든 나머지 주소들은 통상의 KV-SSD처럼 오브젝트들을 저장하는 데 사용될 수 있다. 도 5a는 부팅 데이터를 위해 예약된 512 바이트를 도시하지만, 본 발명의 실시 예들은 부팅 데이터를 위해 임의의 양의 저장을 예약할 수 있다(512 바이트는 단지 예시적인 예약된 저장량이다).
도 5b는 도 1의 KV-SSD(125)가 예약된 오브젝트에 부팅 데이터를 저장하는 본 발명의 실시 예들을 나타낸다. 도 5b에서, 변환 계층(325)이 도시된다. 변환 계층(325)은 키(505)로 도시된, 예약된 오브젝트 키에 대한 엔트리(항목)를 포함할 수 있다. 오브젝트 키(505)는 부팅 데이터가 저장될 수 있는 주소(510)에 매핑될 수 있다. 오브젝트 키(505)가 "예약됨"으로 라벨링되지만, 도 3의 부팅 요청 프로세서(330)가 예약된 오브젝트 키가 무엇인지 알 수 있는 한, 임의의 키는 부팅 데이터에 대한 오브젝트 키로서 사용될 수 있음을 주의해야 한다. 예를 들어, 예약된 오브젝트 키는 GUID일 수도 있고, 국부적으로 생성된 식별자일 수 있다. 그러나 예약된 오브젝트 키가 무엇이든, 도 1의 KV-SSD(125)는 일반 응용 프로그램들이 예약된 키와 관련된 부팅 데이터를 덮어 쓰는 것을 방지해야 한다. 통상의 블록 기반의 저장 장치들은 애플리케이션들이 부팅 데이터가 저장되는 저장 장치들의 섹션에 데이터를 쓰는 것을 방지하도록 설계되는 것과 마찬가지로, 도 1의 KV-SSD(125)는 애플리케이션들이 KV-SSD(125)를 부팅할 수 없게 만들지 않도록, 애플리케이션들이 예약된 오브젝트 키에 쓰는 것을 방지해야 한다(비록 운영 체제가 운영 체제 업데이트에 적합하도록 예약된 오브젝트 키와 관련된 부팅 데이터를 변경할 수 있도록 허용해야 할지라도).
예약된 오브젝트 키가 알려지면, 도 3의 부팅 요청 프로세서(330)는 BIOS로부터 블록 기반의 부팅 요청을 가로채고 예약된 오브젝트 키와 관련된 부팅 데이터를 검색(회수)하기 위해 해당 요청을 KV 요청으로 대체할 수 있다. 그 다음, 도 1의 KV-SSD(125)는, (예약된)오브젝트 키를 변환 계층(325)을 사용하여 주소에 매핑하고, 그 주소에서 부팅 데이터에 액세스하고, 그리고 부팅 데이터를 도 1의 기계(105)의 BIOS로 반환하는, 다른 KV 요청과 동일하게 이 요청을 처리할 수 있다. KV 요청 및 블록 기반의 요청에 대한 응답의 형식에 차이가 있는 경우, 도 3의 부팅 요청 프로세서(330)는 또한 도 3의 SSD 컨트롤러(310)로부터 전송된 응답을 도 1의 기계(105)의 BIOS에 의해 예상되는 포맷으로 재포맷(reformat)하고 재포맷된 응답을 도 1의 기계(105)의 BIOS로 전송한다.
도 6은 블록 부팅 요청을 키-값(KV) 부팅 요청으로 변환하는 도 3의 부팅 요청 프로세서(330)를 도시한다. 도 5b를 참조하여 위에서 논의된 바와 같이, 본 발명의 일부 실시 예들은 블록 기반의 부팅 요청을 가로채고 이를 KV 요청으로 대체하는 부팅 요청 프로세서(330)를 포함할 수 있다. 블록 기반의 부팅 요청(605)이 특정 주소(LBA 0)에서 데이터를 요청하기 때문에, 부팅 요청 프로세서(330)는 이 특정 포맷을 충족하는 블록 기반의 부팅 요청들만 찾을 필요가 있으며, 도 1의 기계(105)로부터의 다른 모든 메시지들을 무시할 수 있다. 그 후, 부팅 요청 프로세서(330)는 블록 기반 부팅 요청(605)을 예약된 오브젝트 키(505)(또한 부팅 키(boot key)라고도 불릴 수 있음)를 포함할 수 있는 KV 부팅 요청(610)으로 대체할 수 있다. 다시, 예약된 오브젝트 키(505)가 미리 알려지기 때문에, KV 부팅 요청(610)의 구조는 특정 포맷으로 되어있다: 부팅 요청 프로세서(330)는 다른 KV 요청들을 생성할 필요가 없다.
도 7은 본 발명의 일 실시 예에 따른, 도 6의 블록 부팅 요청(605)을 처리하기 위한 도 1의 KV-SSD(125)에 대한 예시적인 절차의 흐름도를 도시한다. 도 7의 블록 705에서, 도 3의 블록 요청 프로세서(330)는 도 1의 KV-SSD(125)의 도 3의 호스트 인터페이스 로직(305)에 의해 수신됨에 따라 도 6의 블록 부팅 요청(605)을 수신할/가로챌 수 있다. 이 시점에서, 두 가지 대안적인 접근법들이 있다. 하나의 접근법에서, 블록 710에서, 도 3의 부팅 요청 프로세서(330)는 도 1의 KV-SSD(125)의 적절한 주소(예를 들어, 하드웨어 주소 0)에서 직접적으로 부팅 데이터에 액세스할 수 있다. 대안적으로, 블록 715에서, 도 3의 부팅 요청 프로세서(330)는 도 6의 블록 기반의 부팅 요청(605)을 도 6의 부팅 키(505)를 포함하는 도 6의 KV 부팅 요청(610)으로 대체할 수 있고, 그리고 블록 720에서, 도 1의 KV-SSD(125)는 통상의 KV 요청을 통해 요청된 것처럼 부팅 데이터를 검색(회수)할 수 있다. 어느 쪽이든, 블록 725에서, 도 3의 부팅 요청 프로세서(330)는 도 1의 기계(105)의 BIOS로 부팅 데이터를 반환할 수 있다.
도 8은 본 발명의 일 실시 예에 따른, KV 부팅 요청을 처리하기 위해 도 1의 KV-SSD(125)에 대한 예시적인 절차의 흐름도를 도시한다. 도 8에 나타난 본 발명의 실시 예들에서, 도 1의 기계(105)의 BIOS는 도 1의 KV-SSD(125)로부터 부팅 데이터를 검색(회수)하기 위해 KV 요청을 발행할 수 있다. 도 8의 블록 805에서, 도 3의 호스트 인터페이스 로직(305)은 도 1의 기계(105)의 BIOS로부터 KV 부팅 요청을 수신할 수 있다. 블록 810에서, 도 3의 SSD 컨트롤러(310)는 KV 부팅 요청에 응답하여 부팅 데이터를 검색(회수)할 수 있다. 마지막으로, 블록 815에서, 도 1의 KV-SSD(125)는 도 1의 기계(105)의 BIOS로 부팅 데이터를 반환할 수 있다.
도 7-8에서, 본 발명의 일부 실시 예들이 도시된다. 그러나 당업자는 블록들의 순서를 변경하거나, 블록들을 생략하거나, 도면들에 도시되지 않은 링크들을 포함함으로써, 본 발명의 다른 실시 예들도 가능함을 인식할 것이다. 흐름도들의 이러한 모든 변형은 명시적으로 설명되었든 아니든, 본 발명의 개념의 실시 예들로 간주된다.
본 발명의 실시 예들은 종래 기술에 비해 기술적 이점들을 제공한다. 도 1의 KV 장치(125) (KV-SSD 또는 임의의 다른 KV 장치일 수 있음)는 부팅 요청을 수신하고, 그것을 처리하고, 그리고 부팅 데이터를 기계(105)의 BIOS로 반환할 수 있다. 도 1의 KV 장치(125)가 KV 부팅 요청을 전송할 수 있도록 업데이트되어야 하는 도 1의 기계(105)(도 1의 기계(105)의 특정 연령(세대) 및 구성에 따라, 업데이트가 불가능할 수 있음)의 BIOS없이 부팅 요청을 처리할 수 있음을 주의해야 한다. 도 1의 KV 장치(125)는 도 1의 KV 장치(125)가 일반적으로 블록 기반의 요청들을 처리하지 않더라도, 기계(105)의 BIOS로부터의 블록 기반의 부팅 요청들을 처리할 수 있다.
다음 논의는 본 발명의 개념의 특정 측면들이 구현될 수 있는 적합한 기계 또는 기계들에 대한 간략하고 일반적인 설명을 제공하기 위한 것이다. 기계 또는 기계들은 키보드들, 마우스들 등과 같은 통상의 입력 장치들로부터의 입력뿐만 아니라 다른 기계로부터 수신된 지시들, 가상 현실(VR) 환경, 생체 인식 피드백, 또는 다른 입력 신호와의 상호 작용에 의해 적어도 부분적으로 제어될 수 있다. 본 명세서에서 사용되듯이, "기계"의 용어는 단일의 기계, 가상 기계 또는 기계들, 가상 기계들 또는 함께 작동하는 장치들이 통신적으로 결합된 시스템을 광범위하게 포함하는 것으로 의도된다. 예시적인 기계들은 개인용 컴퓨터들, 워크 스테이션들, 서버들, 휴대용 컴퓨터들, 휴대용 장치들, 전화들, 태블릿들 등과 같은 컴퓨팅 장치들뿐만 아니라 개인 또는 대중 교통 수단, 예를 들어, 자동차들, 기차들, 택시들 등과 같은 운송 장치들을 포함한다.
기계 또는 기계들은 프로그래밍 가능하거나 프로그래밍 불가능한 논리 장치들 또는 어레이들, ASICs(Application Specific Integrated Circuits), 내장형 컴퓨터들, 스마트 카드들, 등과 같은 내장형 컨트롤러들을 포함할 수 있다. 기계 또는 기계들은 네트워크 인터페이스, 모뎀 또는 다른 통신 결합을 통하는 것과 같이, 하나 이상의 원격 기계들에 하나 이상의 연결들을 사용할 수 있다. 기계들은 인트라넷, 인터넷, 근거리 통신망, 광역 통신망 등과 같은 물리적 및/또는 논리적 네트워크를 통해 상호 연결될 수 있다. 당업자는 네트워크 통신이 무선 주파수(RF), 위성, 마이크로파, IEEE(Institute of Electrical and Electronics Engineers) 802.11, 블루투스, 광학, 적외선, 케이블, 레이저 등을 포함한 다양한 유선 및/또는 무선 단거리 또는 장거리 캐리어들 및 프로토콜들을 활용할 수 있음을 인식할 것이다.
본 발명의 실시 예들은 기능들, 절차들, 데이터 구조들, 애플리케이션 프로그램들, 등을 포함하는 관련 데이터를 참조하거나 이와 관련하여 설명될 수 있는데, 이는 기계에 의해 액세스될 때 기계가 작업들을 수행하거나 추상적인 데이터 유형들 또는 하위-레벨의 하드웨어 컨텍스트들을 정의하게 한다. 관련 데이터는, 예를 들어, 휘발성 및/또는 비-휘발성 메모리, 예를 들어, RAM, ROM 등, 또는 다른 저장 장치들에 저장될 수 있고 그리고 하드 드라이브들, 플로피 디스크들, 광학 스토리지, 테이프들, 플래시 메모리, 메모리 스틱들, 디지털 비디오 디스크들, 생체 스토리지, 등을 포함하는, 관련 저장 매체에 저장될 수 있다. 관련 데이터는 패킷들, 직렬 데이터, 병렬 데이터, 전파된 신호들 등의 형태로 물리적 및/또는 논리적 네트워크를 포함하는, 전송 환경들을 통해 전달될 수 있고, 그리고 압축 또는 암호화된 형식으로 사용될 수 있다. 관련 데이터는 분산된 환경에서 사용될 수 있고, 그리고 기계 액세스를 위해 국부적으로 및/또는 원격으로 저장될 수 있다.
본 발명의 실시 예들은 하나 이상의 프로세서들에 의해 실행 가능한 명령어들을 포함하는 유형의(tangible) 비-일시적 기계-판독 가능한 매체(non-transitory machine-readable medium)를 포함할 수 있고, 명령어들은 본 명세서에 설명된 본 발명 개념들의 요소들을 수행하기 위한 명령어들을 포함한다.
전술 한 방법들의 다양한 동작들은 다양한 하드웨어 및/또는 소프트웨어 구성 요소(들), 회로들, 및/또는 모듈(들)과 같은, 동작들을 수행할 수 있는 임의의 적절한 수단들에 의해 수행될 수 있다. 소프트웨어는 논리적 기능들을 구현하기 위한 실행 가능한 명령들의 순서 목록을 포함할 수 있고, 단일 또는 다중 코어 프로세서 또는 프로세서 포함 시스템(processor-containing system)과 같은 명령 실행 시스템, 장치 또는 디바이스에 의해 또는 이와 관련하여 사용하기 위해 임의의 "프로세서-판독 가능한 매체(processor-readable medium)"에 구현될 수 있다.
본 명세서에 개시된 실시 예들와 관련하여 설명된 방법 또는 알고리즘 및 기능들의 블록들 또는 단계들은 하드웨어, 프로세서에 의해 실행되는 소프트웨어 모듈, 또는 이 둘의 조합으로 직접 구현될 수 있다. 소프트웨어로 구현되는 경우, 기능들은 유형의 비-일시적 컴퓨터 판독 가능한 매체 상에 하나 이상의 명령들 또는 코드로 저장되거나 전송될 수 있다. 소프트웨어 모듈은 RAM(Random Access Memory), 플래시 메모리, ROM(Read Only Memory), EPROM(Electrically Programmable ROM), EEPROM (Electrically Erasable Programmable ROM), 레지스터, 하드 디스크, 이동식 디스크, CD ROM, 또는 해당 기술 분야에 알려진 임의의 다른 형태의 저장 매체에 있을 수 있다.
예시된 실시 예들을 참조하여 본 발명 개념의 원리들을 설명하고 예시하였지만, 예시된 실시 예들은 그러한 원리를 벗어나지 않고 배열 및 세부 사항이 수정될 수 있고, 그리고 임의의 원하는 방식으로 결합될 수 있음을 인식할 것이다. 그리고, 전술한 논의는 특정 실시 예들에 초점을 맞추었지만, 다른 구성들이 고려된다. 특히, 본 명세서에서는 "본 발명의 실시 예에 따른" 또는 이와 유사한 표현이 사용되었으나, 이러한 문구들은 일반적으로 실시 예의 가능성을 참조하기 위한 것이고, 본 발명의 개념을 특정 실시 예의 구성으로 제한하려는 의도는 아니다. 본 명세서에서 사용된 바와 같이, 이들 용어들은 다른 실시 예들로 결합될 수 있는 동일하거나 상이한 실시 예들을 지칭할 수 있다.
전술한 예시적인 실시 예들은 본 발명의 개념을 제한하는 것으로 해석되어서는 안된다. 몇몇 실시 예들이 설명되었지만, 당업자는 본 개시의 신규한 교시들 및 이점들로부터 실질적으로 벗어나지 않고 이러한 실시 예들에 대한 많은 수정이 가능하다는 것을 쉽게 이해할 것이다. 따라서, 이러한 모든 수정들은 청구 범위에 정의된 본 발명 개념의 범위 내에 포함되도록 의도된다.
본 발명 개념의 실시 예들은 다음의 설명들로, 제한 없이 확장될 수 있다:
설명 1. 본 발명 개념의 일 실시 예는 키-값(Key-Value, KV) 저장 장치를 포함하고, KV 저장 장치는:
오브젝트들에 대한 스토리지, 각 오브젝트는 키와 관련된 데이터를 포함하고;
호스트 컴퓨터로부터 요청들을 수신하고 및 요청들의 결과들을 반환하는 호스트 인터페이스 로직, 요청들은 오브젝트들에 대한 스토리지로부터 제1 키와 관련된 제1 데이터를 가져오기 위한 읽기 요청, 오브젝트들에 대한 스토리지로부터 제2 키와 관련된 제2 데이터를 넣기 위한 쓰기 요청, 및 오브젝트들에 대한 스토리지로부터 부팅 데이터를 얻기 위한 부팅 요청을 포함하고; 및
오브젝트들에 대한 스토리지를 사용하여 부팅 요청을 처리하는 부팅 요청 프로세서를 포함한다.
설명 2. 본 발명 개념의 일 실시 예는 설명 1에 따른 KV 저장 장치를 포함하고, KV 저장 장치는 KV-SSD(KV-Solid State Drive)를 포함한다.
설명 3. 본 발명 개념의 일 실시 예는 설명 2에 따른 KV 저장 장치를 포함하고, 부팅 데이터는 MBR(Master Boot Record) 또는 GUID(Globally Unique Identifier) 파티션 테이블(Partition Table) 중 하나를 포함한다.
설명 4. 본 발명 개념의 일 실시 예는 설명 2에 따른 KV 저장 장치를 포함하고,
오브젝트들에 대한 스토리지는 0의 LBA(logical block address, 논리적 블록 주소)에 저장된 부팅 데이터를 포함하고; 및
부팅 요청은 0의 LBA로부터 부팅 데이터를 획득하기 위한 블록 부팅 요청을 포함한다.
설명 5. 본 발명 개념의 일 실시 예는 설명 2에 따른 KV 저장 장치를 포함하고, 오브젝트들에 대한 스토리지는 부팅 키(boot key)와 관련된 부팅 데이터를 저장하는 부팅 오브젝트를 포함한다.
설명 6. 본 발명 개념의 일 실시 예는 설명 5에 따른 KV 저장 장치를 포함하고, 부팅 요청은 부팅 키를 포함하는 부팅 획득 요청을 포함한다.
설명 7. 본 발명 개념의 일 실시 예는 설명 5에 따른 KV 저장 장치를 포함하고,
부팅 요청은 0의 LBA로부터 부팅 데이터를 획득하기 위한 블록 부팅 요청을 포함하고; 및
부팅 요청 프로세서는 블록 부팅 요청을 부팅 키를 포함하는 부팅 획득 요청으로 대체하도록 작동한다.
설명 8. 본 발명 개념의 일 실시 예는 설명 2에 따른 KV 저장 장치를 포함하고, 호스트 인터페이스 논리는 부팅 요청에 응답하여 부팅 데이터를 반환하는 부팅 요청 프로세서에 적어도 부분적으로 기초하여 호스트 컴퓨터로 부팅 데이터를 반환한다.
설명 9. 본 발명 개념의 일 실시 예는 설명 8에 따른 KV 저장 장치를 포함하고,
호스트 컴퓨터는 BIOS(Basic Input/Output System)를 포함하고, BIOS는 부팅 요청을 전송하고; 및
호스트 인터페이스 논리는 BIOS로 부팅 데이터를 반환한다.
설명 10. 본 발명 개념의 일 실시 예는 키-값(Key-Value, KV) 저장 장치의 동작 방법을 포함하고, KV 저장 장치의 동작 방법은:
KV 저장 장치에서 호스트 컴퓨터로부터 부팅 요청을 수신하는 단계;
부팅 요청에 적어도 부분적으로 기초하여 KV 저장 장치로부터 부팅 데이터를 검색하는 단계; 및
부팅 데이터를 KV 저장 장치로부터 호스트 컴퓨터로 반환하는 단계를 포함한다.
설명 11. 본 발명 개념의 일 실시 예는 설명 10에 따른 방법을 포함하고, 부팅 데이터는 MBR(Master Boot Record) 또는 GUID(Globally Unique Identifier) 파티션 테이블(Partition Table) 중 하나를 포함한다.
설명 12. 본 발명 개념의 일 실시 예는 설명 10에 따른 방법을 포함하고,
KV 저장 장치에서 호스트 컴퓨터로부터 부팅 요청을 수신하는 단계는 KV-SSD(KV-Solid State Drive)에서 호스트 컴퓨터로부터 부팅 요청을 수신하는 단계를 포함하고;
부팅 요청에 적어도 부분적으로 기초하여 KV 저장 장치로부터 부팅 데이터를 검색하는 단계는 부팅 요청에 적어도 부분적으로 기초하여 KV-SSD로부터 부팅 데이터를 검색하는 단계를 포함하고; 및
부팅 데이터를 KV 저장 장치로부터 호스트 컴퓨터로 반환하는 단계는 부팅 데이터를 KV-SSD로부터 호스트 컴퓨터로 반환하는 단계를 포함한다.
설명 13. 본 발명 개념의 일 실시 예는 설명 12에 따른 방법을 포함하고,
KV-SSD에서 호스트 컴퓨터로부터 부팅 요청을 수신하는 단계는 KV-SSD에서 호스트 컴퓨터의 BIOS(Basic Input/Output System)로부터 부팅 요청을 수신하는 단계를 포함하고; 및
부팅 데이터를 KV-SSD로부터 호스트 컴퓨터로 반환하는 단계는 부팅 데이터를 KV-SSD로부터 호스트 컴퓨터의 BIOS로 반환하는 단계를 포함한다.
설명 14. 본 발명 개념의 일 실시 예는 설명 12에 따른 방법을 포함하고, KV-SSD에서 호스트 컴퓨터로부터 부팅 요청을 수신하는 단계는 0의 LBA(Logical Block Address)로부터 부팅 데이터를 획득하기 위한 블록 부팅 요청을 수신하는 단계를 포함한다.
설명 15. 본 발명 개념의 일 실시 예는 설명 14에 따른 방법을 포함하고, 부팅 요청에 적어도 부분적으로 기초하여 KV-SSD로부터 부팅 데이터를 검색하는 단계는 KV-SSD 상의 0의 LBA로부터 부팅 데이터를 검색하는 단계를 포함한다.
설명 16. 본 발명 개념의 일 실시 예는 설명 14에 따른 방법을 포함하고, 부팅 요청에 적어도 부분적으로 기초하여 KV-SSD로부터 부팅 데이터를 검색하는 단계는:
부팅 키와 관련된 부팅 데이터를 검색하기 위해 블록 부팅 요청을 KV 부팅 요청으로 변환하는 단계; 및
부팅 키를 사용하여 KV 부팅 요청을 수행하는 단계를 포함한다.
설명 17. 본 발명 개념의 일 실시 예는 설명 12에 따른 방법을 포함하고,
KV-SSD에서 호스트 컴퓨터로부터 부팅 요청을 수신하는 단계는 KV-SSD에서 호스트 컴퓨터로부터 부팅 키와 함께 KV 부팅 요청을 수신하는 단계를 포함하고; 및
부팅 요청에 적어도 부분적으로 기초하여 KV-SSD로부터 부팅 데이터를 검색하는 단계는 부팅 키를 사용하여 KV 부팅 요청을 수행하는 단계를 포함한다.
설명 18. 본 발명 개념의 일 실시 예는 비-일시적 저장 매체(non-transitory storage medium)를 포함하는 물품(article)을 포함하고, 비-일시적 저장 매체는 기계에 의해 실행될 때, 다음을 초래하는 명령어들을 저장하고:
키-값(Key-Value, KV) 저장 장치에서 호스트 컴퓨터로부터 부팅 요청을 수신하고;
부팅 요청에 적어도 부분적으로 기초하여 KV 저장 장치로부터 부팅 데이터를 검색하고; 및
부팅 데이터를 KV 저장 장치로부터 호스트 컴퓨터로 반환한다.
설명 19. 본 발명 개념의 일 실시 예는 설명 18에 따른 물품을 포함하고, 부팅 데이터는 MBR(Master Boot Record) 또는 GUID(Globally Unique Identifier) 파티션 테이블(Partition Table) 중 하나를 포함한다.
설명 20. 본 발명 개념의 일 실시 예는 설명 18에 따른 물품을 포함하고,
KV 저장 장치에서 호스트 컴퓨터로부터 부팅 요청을 수신하는 것은 KV-SSD(KV-Solid State Drive)에서 호스트 컴퓨터로부터 부팅 요청을 수신하는 것을 포함하고;
부팅 요청에 적어도 부분적으로 기초하여 KV 저장 장치로부터 부팅 데이터를 검색하는 것은 부팅 요청에 적어도 부분적으로 기초하여 KV-SSD로부터 부팅 데이터를 검색하는 것을 포함하고; 및
부팅 데이터를 KV 저장 장치로부터 호스트 컴퓨터로 반환하는 것은 부팅 데이터를 KV-SSD로부터 호스트 컴퓨터로 반환하는 것을 포함한다.
설명 21. 본 발명 개념의 일 실시 예는 설명 20에 따른 물품을 포함하고,
KV-SSD에서 호스트 컴퓨터로부터 부팅 요청을 수신하는 것은 KV-SSD에서 호스트 컴퓨터의 BIOS(Basic Input/Output System)로부터 부팅 요청을 수신하는 것을 포함하고; 및
부팅 데이터를 KV-SSD로부터 호스트 컴퓨터로 반환하는 것은 부팅 데이터를 KV-SSD로부터 호스트 컴퓨터의 BIOS로 반환하는 것을 포함한다.
설명 22. 본 발명 개념의 일 실시 예는 설명 20에 따른 물품을 포함하고, KV-SSD에서 호스트 컴퓨터로부터 부팅 요청을 수신하는 것은 0의 LBA(Logical Block Address)로부터 부팅 데이터를 획득하기 위한 블록 부팅 요청을 수신하는 것을 포함한다.
설명 23. 본 발명 개념의 일 실시 예는 설명 22에 따른 물품을 포함하고, 부팅 요청에 적어도 부분적으로 기초하여 KV-SSD로부터 부팅 데이터를 검색하는 것은 KV-SSD 상의 0의 LBA로부터 부팅 데이터를 검색하는 것을 포함한다.
설명 24. 본 발명 개념의 일 실시 예는 설명 22에 따른 방법을 포함하고, 부팅 요청에 적어도 부분적으로 기초하여 KV-SSD로부터 부팅 데이터를 검색하는 것은:
부팅 키와 관련된 부팅 데이터를 검색하기 위해 블록 부팅 요청을 KV 부팅 요청으로 변환하는 것; 및
부팅 키를 사용하여 KV 부팅 요청을 수행하는 것을 포함한다.
설명 25. 본 발명 개념의 일 실시 예는 설명 20에 따른 방법을 포함하고,
KV-SSD에서 호스트 컴퓨터로부터 부팅 요청을 수신하는 것은 KV-SSD에서 호스트 컴퓨터로부터 부팅 키와 함께 KV 부팅 요청을 수신하는 것을 포함하고; 및
부팅 요청에 적어도 부분적으로 기초하여 KV-SSD로부터 부팅 데이터를 검색하는 것은는 부팅 키를 사용하여 KV 부팅 요청을 수행하는 것을 포함한다.
결과적으로, 본 명세서에 설명된 실시 예들에 대한 다양한 교환들(permutations)을 고려하여, 이 상세한 설명 및 수반되는 자료는 단지 예시를 위한 것이며 본 발명 개념의 범위를 제한하는 것으로 간주되어서는 안된다. 따라서, 본 발명의 개념으로서 청구되는 것은 다음의 청구 범위 및 그 균등물의 범위 및 사상 내에 포함될 수 있는 모든 수정들이다.
125: 키-값 SSD
305: 호스트 인터페이스 로직
310: SSD 컨트롤러
315-1 내지 315-8: 플래시 칩들
320-1 내지 320-4: 채널들
325: 변환 계층
330: 부팅 요청 프로세서
305: 호스트 인터페이스 로직
310: SSD 컨트롤러
315-1 내지 315-8: 플래시 칩들
320-1 내지 320-4: 채널들
325: 변환 계층
330: 부팅 요청 프로세서
Claims (20)
- 오브젝트들에 대한 스토리지, 각 오브젝트는 키와 관련된 데이터를 포함하고;
호스트 컴퓨터로부터 요청들을 수신하고 및 상기 요청들의 결과들을 반환하는 호스트 인터페이스 레이어, 상기 요청들은 상기 오브젝트들에 대한 상기 스토리지로부터 제1 키와 관련된 제1 데이터를 가져오기 위한 읽기 요청, 상기 오브젝트들에 대한 상기 스토리지로부터 제2 키와 관련된 제2 데이터를 넣기 위한 쓰기 요청, 및 상기 오브젝트들에 대한 상기 스토리지로부터 부팅 데이터를 얻기 위한, 상기 호스트 컴퓨터에 운영 체제를 로드하기 위한 부팅 요청을 포함하고; 및
상기 오브젝트들에 대한 상기 스토리지를 사용하여 상기 부팅 요청을 처리하는 부팅 요청 프로세서를 포함하는 키-값 SSD(Key-Value Solid State Drive, KV-SSD). - 삭제
- 제1 항에 있어서,
상기 부팅 데이터는 MBR(Master Boot Record) 또는 GUID(Globally Unique Identifier) 파티션 테이블(Partition Table) 중 하나를 포함하는 KV-SSD. - 제1 항에 있어서,
상기 오브젝트들에 대한 상기 스토리지는 0의 LBA(logical block address, 논리적 블록 주소)에 저장된 상기 부팅 데이터를 포함하고; 및
상기 부팅 요청은 상기 0의 LBA로부터 상기 부팅 데이터를 획득하기 위한 블록 부팅 요청을 포함하는 KV-SSD. - 제1 항에 있어서,
상기 오브젝트들에 대한 상기 스토리지는 부팅 키(boot key)와 관련된 상기 부팅 데이터를 저장하는 부팅 오브젝트를 포함하는 KV-SSD. - 제5 항에 있어서,
상기 부팅 요청은 상기 부팅 키를 포함하는 부팅 획득 요청을 포함하는 KV-SSD. - 제5 항에 있어서,
상기 부팅 요청은 0의 LBA로부터 상기 부팅 데이터를 획득하기 위한 블록 부팅 요청을 포함하고; 및
상기 부팅 요청 프로세서는 상기 블록 부팅 요청을 상기 부팅 키를 포함하는 부팅 획득 요청으로 대체하도록 작동하는 KV-SSD. - 제1 항에 있어서,
상기 호스트 인터페이스 레이어는 상기 부팅 요청에 응답하여 상기 부팅 데이터를 반환하는 상기 부팅 요청 프로세서에 적어도 부분적으로 기초하여 상기 호스트 컴퓨터로 상기 부팅 데이터를 반환하는 KV-SSD. - 제8 항에 있어서,
상기 호스트 컴퓨터는 BIOS(Basic Input/Output System)를 포함하고, 상기 BIOS는 상기 부팅 요청을 전송하고; 및
상기 호스트 인터페이스 레이어는 상기 BIOS로 상기 부팅 데이터를 반환하는 KV-SSD. - 키-값 SSD(Key-Value Solid State Drive, KV-SSD)의 동작 방법에 있어서,
상기 KV-SSD의 호스트 인터페이스 레이어에서 호스트 컴퓨터로부터 상기 호스트 컴퓨터에 운영 체제를 로드하기 위한 부팅 요청을 수신하는 단계;
상기 부팅 요청에 적어도 부분적으로 기초하여 상기 KV-SSD로부터 부팅 데이터를 검색(회수)하는 단계; 및
상기 부팅 데이터를 상기 KV-SSD로부터 상기 호스트 컴퓨터로 반환하는 단계를 포함하되,
상기 호스트 인터페이스 레이어는 상기 KV-SSD의 오브젝트들에 대한 스토리지로부터 제1 키와 관련된 제1 데이터를 가져오기 위한 읽기 요청 및 상기 KV-SSD의 상기 오브젝트들에 대한 상기 스토리지로부터 제2 키와 관련된 제2 데이터를 넣기 위한 쓰기 요청 또한 수신하도록 구성되는 KV-SSD의 동작 방법. - 제10 항에 있어서,
상기 부팅 데이터는 MBR(Master Boot Record) 또는 GUID(Globally Unique Identifier) 파티션 테이블(Partition Table) 중 하나를 포함하는 KV-SSD의 동작 방법. - 삭제
- 제11 항에 있어서,
상기 KV-SSD에서 상기 호스트 컴퓨터로부터 상기 부팅 요청을 수신하는 단계는 상기 KV-SSD에서 상기 호스트 컴퓨터의 BIOS(Basic Input/Output System)로부터 상기 부팅 요청을 수신하는 단계를 포함하고; 및
상기 부팅 데이터를 상기 KV-SSD로부터 상기 호스트 컴퓨터로 반환하는 단계는 상기 부팅 데이터를 상기 KV-SSD로부터 상기 호스트 컴퓨터의 상기 BIOS로 반환하는 단계를 포함하는 KV-SSD의 동작 방법. - 제11 항에 있어서,
상기 KV-SSD에서 상기 호스트 컴퓨터로부터 상기 부팅 요청을 수신하는 단계는 0의 LBA(Logical Block Address)로부터 상기 부팅 데이터를 획득하기 위한 블록 부팅 요청을 수신하는 단계를 포함하는 KV-SSD의 동작 방법. - 제14 항에 있어서,
상기 부팅 요청에 적어도 부분적으로 기초하여 상기 KV-SSD로부터 상기 부팅 데이터를 검색하는 단계는 상기 KV-SSD 상의 상기 0의 LBA로부터 상기 부팅 데이터를 검색하는 단계를 포함하는 KV-SSD의 동작 방법. - 제14 항에 있어서,
상기 부팅 요청에 적어도 부분적으로 기초하여 상기 KV-SSD로부터 상기 부팅 데이터를 검색하는 단계는:
부팅 키와 관련된 상기 부팅 데이터를 검색하기 위해 상기 블록 부팅 요청을 KV 부팅 요청으로 변환하는 단계; 및
상기 부팅 키를 사용하여 상기 KV 부팅 요청을 수행하는 단계를 포함하는 KV-SSD의 동작 방법. - 제11 항에 있어서,
상기 KV-SSD에서 상기 호스트 컴퓨터로부터 상기 부팅 요청을 수신하는 단계는 상기 KV-SSD에서 상기 호스트 컴퓨터로부터 부팅 키와 함께 KV 부팅 요청을 수신하는 단계를 포함하고; 및
상기 부팅 요청에 적어도 부분적으로 기초하여 상기 KV-SSD로부터 상기 부팅 데이터를 검색하는 단계는 상기 부팅 키를 사용하여 상기 KV 부팅 요청을 수행하는 단계를 포함하는 KV-SSD의 동작 방법. - 비-일시적 저장 매체를 포함하는 장치에 있어서,
상기 비-일시적 저장 매체는 기계에 의해 실행될 때, 다음을 초래하는 명령어들을 저장하고:
키-값 SSD(Key-Value Solid State Drive, KV-SSD)의 호스트 인터페이스 레이어에서 호스트 컴퓨터로부터 상기 호스트 컴퓨터에 운영 체제를 로드하기 위한 부팅 요청을 수신하고;
상기 부팅 요청에 적어도 부분적으로 기초하여 상기 KV-SSD로부터 부팅 데이터를 검색하고; 및
상기 부팅 데이터를 상기 KV-SSD로부터 상기 호스트 컴퓨터로 반환하되,
상기 호스트 인터페이스 레이어는 상기 KV-SSD의 오브젝트들에 대한 스토리지로부터 제1 키와 관련된 제1 데이터를 가져오기 위한 읽기 요청 및 상기 KV-SSD의 상기 오브젝트들에 대한 상기 스토리지로부터 제2 키와 관련된 제2 데이터를 넣기 위한 쓰기 요청 또한 수신하도록 구성되는 장치. - 삭제
- 제18 항에 있어서,
상기 KV-SSD에서 상기 호스트 컴퓨터로부터 상기 부팅 요청을 수신하는 것은 0의 LBA(Logical Block Address)로부터 상기 부팅 데이터를 획득하기 위한 블록 부팅 요청을 수신하는 것을 포함하는 장치.
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962948797P | 2019-12-16 | 2019-12-16 | |
US201962948801P | 2019-12-16 | 2019-12-16 | |
US62/948,797 | 2019-12-16 | ||
US62/948,801 | 2019-12-16 | ||
US16/846,261 US11625334B2 (en) | 2019-12-16 | 2020-04-10 | Bootable key value solid state drive (KV-SSD) device with host interface layer arranged to received and returns boot requests from host processor using storage for objects |
US16/846,261 | 2020-04-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210076856A KR20210076856A (ko) | 2021-06-24 |
KR102669897B1 true KR102669897B1 (ko) | 2024-05-29 |
Family
ID=76317107
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200101721A KR20210076828A (ko) | 2019-12-16 | 2020-08-13 | 키-값 장치 및 이의 블록 인터페이스 에뮬레이션 방법 |
KR1020200173753A KR102669897B1 (ko) | 2019-12-16 | 2020-12-11 | 부팅 가능한 키 값 장치 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200101721A KR20210076828A (ko) | 2019-12-16 | 2020-08-13 | 키-값 장치 및 이의 블록 인터페이스 에뮬레이션 방법 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11321244B2 (ko) |
KR (2) | KR20210076828A (ko) |
CN (2) | CN112988055A (ko) |
TW (1) | TW202203061A (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11321244B2 (en) * | 2019-12-16 | 2022-05-03 | Samsung Electronics Co., Ltd. | Block interface emulation for key value device |
US11921704B2 (en) | 2021-12-28 | 2024-03-05 | Vmware, Inc. | Version control interface for accessing data lakes |
US20230409545A1 (en) * | 2022-06-21 | 2023-12-21 | Vmware, Inc. | Version control interface supporting time travel access of a data lake |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060048143A1 (en) | 2004-08-31 | 2006-03-02 | Chao Edward S | Real-time operation by a diskless client computer |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7159073B2 (en) | 2003-03-27 | 2007-01-02 | Stmicroelectronics, Inc. | Data storage and caching architecture |
US20070288740A1 (en) | 2006-06-09 | 2007-12-13 | Dale Jason N | System and method for secure boot across a plurality of processors |
US20070288761A1 (en) | 2006-06-09 | 2007-12-13 | Dale Jason N | System and method for booting a multiprocessor device based on selection of encryption keys to be provided to processors |
KR101496975B1 (ko) | 2008-05-28 | 2015-03-02 | 삼성전자주식회사 | 고체 상태 디스크 및 이에 대한 입출력방법 |
US8327066B2 (en) | 2008-09-30 | 2012-12-04 | Samsung Electronics Co., Ltd. | Method of managing a solid state drive, associated systems and implementations |
CN102918509B (zh) * | 2011-05-31 | 2014-06-04 | 华为技术有限公司 | 数据读写方法、装置和存储系统 |
JP5524144B2 (ja) | 2011-08-08 | 2014-06-18 | 株式会社東芝 | key−valueストア方式を有するメモリシステム |
US8700683B2 (en) | 2011-10-24 | 2014-04-15 | Nokia Corporation | Method and apparatus for providing a key-value based storage interface |
US9075710B2 (en) * | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
KR102044023B1 (ko) | 2013-03-14 | 2019-12-02 | 삼성전자주식회사 | 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법 |
US9519575B2 (en) | 2013-04-25 | 2016-12-13 | Sandisk Technologies Llc | Conditional iteration for a non-volatile device |
EP2849111B1 (en) | 2013-09-12 | 2016-07-13 | Carl Beame | OTP generation on portable medium |
US9323457B2 (en) | 2013-12-09 | 2016-04-26 | Xilinx, Inc. | Memory arrangement for implementation of high-throughput key-value stores |
US10248682B2 (en) * | 2015-02-20 | 2019-04-02 | Scality, S.A. | Object storage system capable of performing snapshots, branches and locking |
US10235404B2 (en) * | 2014-06-25 | 2019-03-19 | Cohesity, Inc. | Distributed key-value store |
US10496626B2 (en) | 2015-06-11 | 2019-12-03 | EB Storage Systems Ltd. | Deduplication in a highly-distributed shared topology with direct-memory-access capable interconnect |
US10133492B2 (en) * | 2015-10-14 | 2018-11-20 | Samsung Electronics Co., Ltd. | Electronic system with interface control mechanism and method of operation thereof |
US11287973B2 (en) * | 2016-02-02 | 2022-03-29 | Samsung Electronics Co., Ltd. | Polymorphic storage devices |
US10956346B1 (en) * | 2017-01-13 | 2021-03-23 | Lightbits Labs Ltd. | Storage system having an in-line hardware accelerator |
US10289421B2 (en) | 2017-02-17 | 2019-05-14 | Dell Products, L.P. | Booting of IHS from SSD using PCIe |
US11188241B2 (en) * | 2017-07-07 | 2021-11-30 | Sap Se | Hybrid key-value store |
US10572161B2 (en) * | 2017-11-15 | 2020-02-25 | Samsung Electronics Co., Ltd. | Methods to configure and access scalable object stores using KV-SSDs and hybrid backend storage tiers of KV-SSDs, NVMe-SSDs and other flash devices |
US10620866B1 (en) * | 2018-02-22 | 2020-04-14 | Amazon Technologies, Inc. | Representation-based partitioning of distributed computing environments |
AU2019100055A4 (en) * | 2019-01-18 | 2019-02-21 | AMS Joint Venture Pty Ltd | Smart meter device |
US11321244B2 (en) * | 2019-12-16 | 2022-05-03 | Samsung Electronics Co., Ltd. | Block interface emulation for key value device |
-
2020
- 2020-03-19 US US16/824,689 patent/US11321244B2/en active Active
- 2020-04-10 US US16/846,261 patent/US11625334B2/en active Active
- 2020-08-13 KR KR1020200101721A patent/KR20210076828A/ko active Search and Examination
- 2020-10-29 TW TW109137524A patent/TW202203061A/zh unknown
- 2020-10-30 CN CN202011185287.1A patent/CN112988055A/zh active Pending
- 2020-12-11 KR KR1020200173753A patent/KR102669897B1/ko active IP Right Grant
- 2020-12-16 CN CN202011484329.1A patent/CN112988060A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060048143A1 (en) | 2004-08-31 | 2006-03-02 | Chao Edward S | Real-time operation by a diskless client computer |
Also Published As
Publication number | Publication date |
---|---|
KR20210076828A (ko) | 2021-06-24 |
CN112988055A (zh) | 2021-06-18 |
KR20210076856A (ko) | 2021-06-24 |
US20210182400A1 (en) | 2021-06-17 |
TW202203061A (zh) | 2022-01-16 |
US20210182211A1 (en) | 2021-06-17 |
US11625334B2 (en) | 2023-04-11 |
US11321244B2 (en) | 2022-05-03 |
CN112988060A (zh) | 2021-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102669897B1 (ko) | 부팅 가능한 키 값 장치 | |
US10324834B2 (en) | Storage device managing multi-namespace and method of operating the storage device | |
US10445246B2 (en) | Memory system and method for controlling nonvolatile memory | |
US8285967B1 (en) | Method for on-demand block map generation for direct mapped LUN | |
US20160110292A1 (en) | Efficient key collision handling | |
KR101301840B1 (ko) | 비휘발성 메모리 장치의 데이터 처리 방법 | |
US8966188B1 (en) | RAM utilization in a virtual environment | |
KR102007650B1 (ko) | 세그먼트 그룹을 고려하는 세그먼트 클리닝 장치 및 방법 | |
US10891074B2 (en) | Key-value storage device supporting snapshot function and operating method thereof | |
US10678446B2 (en) | Bitmap processing for log-structured data store | |
KR102509913B1 (ko) | 최대화된 중복 제거 메모리를 위한 방법 및 장치 | |
CN104636414A (zh) | 提供对更新后的文件的访问的方法和执行该方法的计算机 | |
KR20200072639A (ko) | 저장 장치 및 그것의 동작 방법 | |
US11269811B2 (en) | Method and apparatus for maximized dedupable memory | |
EP3937000A1 (en) | Key value storage device and method for sorting key | |
TWI756854B (zh) | 管理資料儲存的方法及裝置以及電腦程式產品 | |
US20150356108A1 (en) | Storage system and storage system control method | |
US20180188967A1 (en) | Snapshot storage management | |
US9557935B2 (en) | Computing system including storage system and method of writing data thereof | |
US20230333766A1 (en) | Modified copy-on-write snapshotting | |
WO2020055534A1 (en) | Hybrid memory system interface | |
US20100274828A1 (en) | Electronic Device, Storage Area Allocation Method for File System, and Computer Product | |
US10572382B2 (en) | Method of operating data storage device and method of operating data processing system including the same | |
US11221985B2 (en) | Metadata space efficient snapshot operation in page storage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |