KR102303814B1 - 논리 블록 주소의 아토믹 스왑 및 트림을 위한 swat 커맨드 및 애플리케이션 프로그래밍 인터페이스 - Google Patents

논리 블록 주소의 아토믹 스왑 및 트림을 위한 swat 커맨드 및 애플리케이션 프로그래밍 인터페이스 Download PDF

Info

Publication number
KR102303814B1
KR102303814B1 KR1020140154321A KR20140154321A KR102303814B1 KR 102303814 B1 KR102303814 B1 KR 102303814B1 KR 1020140154321 A KR1020140154321 A KR 1020140154321A KR 20140154321 A KR20140154321 A KR 20140154321A KR 102303814 B1 KR102303814 B1 KR 102303814B1
Authority
KR
South Korea
Prior art keywords
list
lbas
file
pbas
mapping
Prior art date
Application number
KR1020140154321A
Other languages
English (en)
Other versions
KR20150053720A (ko
Inventor
기양석
이상원
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20150053720A publication Critical patent/KR20150053720A/ko
Application granted granted Critical
Publication of KR102303814B1 publication Critical patent/KR102303814B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system

Landscapes

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

Abstract

예시적인 실시 예들은 적어도 하나의 프로세서를 포함하는 컴퓨터에 의해 수행되는 업데이트된 파일에 대한 액세스를 제공한다. 이전 파일의 변형된 컨텐츠를 포함하는 업데이트를 수신하는 애플리케이션에 응답하여 이전 파일로의 액세스가 유지되는 동안 변형된 컨텐츠가 복사된 새로운 파일이 생성되고, 이전 파일의 논리적 블록 주소들(LBAs; logical block addresses)은 이전 파일의 물리적 블록 주소들(PBAs; physical block addresses)과 맵핑되고, 새로운 파일의 논리적 블록 주소는 새로운 파일의 물리적 블록 주소와 맵핑된다. 상술된 방법은 이전 파일 논리적 블록 주소의 맵핑을 이전 파일의 물리적 블록 주소로부터 새로운 파일의 물리적 블록 주소로 자동으로 스왑하는 단계; 이전 파일의 논리적 블록 주소 및 이전 파일의 물리적 블록 주소의 맵핑을 제거하는 단계; 및 새로운 파일의 논리적 블록 주소 및 새로운 파일의 물리적 블록 주소의 맵핑을 제어하는 단계를 포함한다.

Description

논리 블록 주소의 아토믹 스왑 및 트림을 위한 SWAT 커맨드 및 애플리케이션 프로그래밍 인터페이스{SWAT COMMAND AND APPICATION PROGRAMMING INTERFACE FOR AUTOMIC SWAP AND TRIM OF LBAS}
본 발명은 파일 관리 시스템에 관한 것으로 더욱 상세하게는 논리 블록 주소의 자동 스왑 및 트림을 위한 SWAT 커맨드 및 애플리케이션 프로그래밍 인터페이스에 관한 것이다.
파일 관리 시스템들은 파일의 가장 최신 버전을 추적하기 위하여 데이터 구조를 업데이트한다. 이러한 프로세스에서, 일부 시스템들은 이전 버전(the older version)에 덮어 쓰는 대신에 파일의 다른 버전을 생성하고, 잠시 동안 파일의 이전 버전을 유지한다. 결과적으로, 시스템들은 새로운 버전이 업데이트되었음에도 불구하고 읽기 동작 동안 파일의 이전 버전을 액세스할 수 있다. 예를 들어, 사용자가 블로그 페이지를 업데이트할 경우, 사용자가 블로그 페이지를 업데이트하는 동안 다른 유저들은 블로그 페이지의 이전 버전을 읽을 수 있다. 이 때, 시스템들은 새로운 파일을 액세스하고 이전 파일을 교체하기 위하여 시스템 정보를 업데이트하는 것을 요구한다. 일반적으로, 시스템의 데이터 구조에서 연속적인 업데이트들이 연속적으로 발생되고, 이는 스토리지로 많은 쓰기를 필요로 한다.
따라서, 시스템의 데이터 구조들에서 연속적인 갱신을 수행하지 않고 갱신된 파일로의 접근을 제공하는 시스템 및 향상된 방법이 제공될 것이다.
본 발명의 목적은 시스템의 데이터 구조의 연속적인 업데이트 및 스토리지로의 불필요한 쓰기 없이 파일을 업데이트할 수 있는 파일 관리 시스템 및 그것의 동작 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 업데이트된 파일을 엑세스하는 방법은 르면, 이전 파일의 변형된 컨텐츠를 포함하는 업데이트를 수신하는 애플리케이션에 응답하여 상기 이전 파일로의 액세스가 유지되는 동안 상기 변형된 컨텐츠가 복사된 새로운 파일이 생성되고, 상기 이전 파일의 논리 블록 주소들(LBAs; logical block addresses)은 상기 이전 파일의 물리 블록 주소들(PBAs; physical block addresses)과 맵핑되고, 새로운 파일의 논리 블록 주소는 새로운 파일의 물리 블록 주소와 맵핑된다. 적어도 하나의 프로세서를 포함하는 컴퓨터에 의해 수행되는 업데이트된 파일을 액세스하는 방법은 상기 이전 파일 논리 블록 주소의 맵핑을 상기 이전 파일의 물리 블록 주소로부터 상기 새로운 파일의 물리 블록 주소로 자동으로 스왑하는 단계; 상기 이전 파일의 논리 블록 주소 및 상기 이전 파일의 물리 블록 주소의 맵핑을 제거하는 단계; 및 상기 새로운 파일의 논리 블록 주소 및 상기 새로운 파일의 물리 블록 주소의 맵핑을 제어하는 단계를 포함한다.
실시 예로서, 상기 방법은 스왑 및 트림(SWAT) 커맨드 및 애플리케이션 프로그래밍 인터페이스(API)를 통해 수행된다.
실시 예로서, 상기 SWAT 커맨드의 파라미터들은 상기 이전 파일 및 상기 새로운 파일과 대응되는 논리 블록 주소 리스트들의 쌍을 포함하고, 상기 SWAT 커맨드는 상기 리스트들의 쌍에서 상기 논리 블록 주소의 맵핑을 순서에 따라 자동 스왑하고, 사용되지 않은 논리 블록 주소를 제거한다.
실시 예로서, 상기 SWAT 커맨드는 운영체제 또는 애플리케이션에 의해 생성된 호출에 응답하여 저장 장치 드라이버 애플리케이션 프로그래밍 인터페이스로부터 저장 장치로 발행된다.
실시 예로서, 상기 SWAT 커맨드는 상기 새로운 파일의 논리 블록 주소를 포함하는 제1 논리 블록 주소 리스트 및 상기 이전 파일의 논리 블록 주소를 포함하는 제2 논리 블록 주소 리스트를 파라미터들로서 포함한다.
실시 예로서, 상기 제1 및 제2 논리 블록 주소 리스트들의 논리 블록 주소의 맵핑은 미리 정해진 순서에 따라 상기 리스트들에 의해 자동으로 스왑되고, 상기 이전 파일 물리 블록 주소는 최선 노력 방식(best-effort manner)에 따라 제거된다.
실시 예로서, 상기 SWAT 커맨드는 인접 논리 블록 주소를 위한 제1 SWAT 커맨드 및 비인접 논리 블록 주소를 위한 제2 SWAT 커맨드를 포함한다.
본 발명의 다른 실시 예에 따른 컴퓨터는 메모리; 저장 장치; 및 상기 메모리 및 상기 저장 장치와 연결되고, 적어도 하나의 애플리케이션을 실행하는 프로세서를 포함하되, 이전 파일의 변형된 컨텐츠를 포함하는 업데이트를 수신하는 애플리케이션에 응답하여 상기 이전 파일로의 액세스가 유지되는 동안 상기 변형된 컨텐츠가 복사된 새로운 파일이 생성되고, 상기 이전 파일의 논리 블록 주소들(LBAs; logical block addresses)은 상기 이전 파일의 물리 블록 주소들(PBAs; physical block addresses)과 맵핑되고, 새로운 파일의 논리 블록 주소는 새로운 파일의 물리 블록 주소와 맵핑되며, 상기 프로세서는 상기 이전 파일 논리 블록 주소의 맵핑을 상기 이전 파일 물리 블록 주소로부터 상기 새로운 파일 물리 블록 주소로 자동 스왑하고, 상기 이전 파일 논리 블록 주소 및 상기 이전 파일 물리 블록 주소의 맵핑을 제거하고, 상기 새로운 파일 논리 블록 주소 및 상기 상기 새로운 파일 물리 블록 주소의 맵핑을 제거한다.
실시 예로서, 상기 스왑은 스왑 및 트림(SWAT; swap and trim) 커맨드 및 애플리케이션 프로그래밍 인터페이스(API; application programming interface)를 통해 수행된다.
실시 예로서, 상기 SWAT 커맨드의 파라미터들은 상기 이전 파일 및 상기 새로운 파일과 대응되는 논리 블록 주소 리스트들의 쌍을 포함하고, 상기 SWAT 커맨드는 상기 리스트들의 쌍에서 상기 논리 블록 주소들의 맵핑을 자동 스왑하고 사용되지 않는 논리 블록 주소를 제거한다.
실시 예로서, 상기 SWAT 커맨드는 운영 체제 또는 애플리케이션에 의해 형성된 호출에 응답하여 저장 장치 드라이버 API로부터 저장 장치로 전송된다.
실시 예로서, 상기 SWAT 커맨드는 상기 새로운 파일의 논리 블록 주소를 포함하는 제1 논리 블록 주소 리스트 및 상기 이전 파일의 논리 블록 주소를 포함하는 제2 논리 블록 주소 리스트를 파라미터들로서 포함한다.
실시 예로서, 상기 제1 및 제2 논리 블록 주소 리스트들의 논리 블록 주소의 맵핑은 미리 정해진 순서에 따라 상기 리스트들에 의해 자동으로 스왑되고, 상기 이전 파일의 물리 블록 주소는 최선 노력 방식(best-effort manner)에 따라 제거된다.
실시 예로서, 상기 SWAT 커맨드는 인접 논리 블록 주소를 위한 제1 SWAT 커맨드 및 비인접 논리 블록 주소를 위한 제2 SWAT 커맨드를 포함한다.
본 발명의 또 다른 실시 예에 따른 업데이트 파일에 대한 액세스를 제공하는 프로그램 명령어들을 포함하는 컴퓨터 판독 가능 매체에 저장된 실행 가능한 소프트웨어는 이전 파일의 변형된 컨텐츠를 포함하는 업데이트를 수신하는 애플리케이션에 응답하여 상기 이전 파일로의 액세스가 유지되는 동안 상기 변형된 컨텐츠가 복사된 새로운 파일이 생성되고, 상기 이전 파일의 논리 블록 주소들(LBAs; logical block addresses)은 상기 이전 파일의 물리 블록 주소들(PBAs; physical block addresses)과 맵핑되고, 새로운 파일의 논리 블록 주소는 새로운 파일의 물리 블록 주소와 맵핑되되, 상기 프로그램 명령어들은 상기 이전 파일 논리 블록 주소의 맵핑을 상기 이전 파일 물리 블록 주소로부터 상기 새로운 파일 물리 블록 주소로 자동 스왑하고, 상기 이전 파일 논리 블록 주소 및 상기 이전 파일 물리 블록 주소의 맵핑을 제거하고, 상기 새로운 파일 논리 블록 주소 및 상기 상기 새로운 파일 물리 블록 주소의 맵핑을 제거하는 실행가능하다.
본 발명의 또 다른 실시 예에 따른 적어도 하나의 프로세서를 포함하는 컴퓨터에 의해 수행되는 업데이트된 파일을 액세스하는 방법은 제1 물리 블록 주소 리스와 맵핑되는, 이전 파일에 대한 제1 논리 블록 주소 리스트 및 제2 물리 블록 주소 리스트와 맵핑되는, 업데이트 파일에 대한 제2 논리 블록 주소 리스트를 수신하는 단계; 상기 제1 논리 블록 리스트가 상기 업데이트 파일에 대한 상기 제2 논리 블록 주소와 맵핑되도록 상기 이전 파일에 대한 상기 제1 논리 블록 리스트의 맵핑을 자동 스왑하는 단계; 상기 이전 파일에 대한 상기 제1 물리 블록 주소 리스트의 맵핑을 제거하는 단계; 및 상기 업데이트 파일에 대한 제2 논리 블록 주소 리스트의 맵핑을 제어하는 단계를 포함한다.
파일은 시스템의 데이터 구조의 연속적인 업데이트 및 스토리지로의 불필요한 쓰기 없이 파일이 업데이트될 수 있다. 따라서, 향상된 파일 관리 시스템이 제공된다.
도 1은 예시적인 실시 예에 따른 파일 관리 시스템을 보여주는 블록도이다.
도 2는 파일을 업데이트하는 일반적인 파일 관리 시스템을 보여주는 도면이다.
도 3은 일 실시 예에 따른 업데이트 동안 파일을 액세스하는 파일 관리 시스템에 의해 수행되는 프로세스를 보여주는 순서도이다.
도 4는 도 3의 프로세스를 도식화한 도면이다.
첨부된 도면들에 도시된 예들 및 본 발명의 실시 예들이 상세하게 설명될 것이다. 유사한 참조번호들은 유사한 구성 요소들을 칭한다. 이하에서, 본 발명의 기술적 사상을 설명하기 위하여 도면들을 참조하여 실시 예들이 설명된다.
본 발명의 이점들 및 특징들 및 이를 달성하기 위한 방법들은 이하의 실시 예들의 상세한 설명 및 첨부된 도면들을 참조함으로써 쉽게 이해될 수 있다. 그러나, 본 발명의 기술적 사상은 다양한 다른 형태들로 구현될 수 있고, 본문에 개시된 실시 예들에 한정되어 구성되지 않을 수 있다. 이러한 실시 예들은 본문이 완벽하게 되고, 당업자에게 본 발명의 기술적 사싱이 전달되도록 실시 예들이 제공될 수 있다. 본 발명의 기술적 사상은 첨부된 특허청구범위에 의해 정의될 것이다. 도면들에서 계층들(layers) 및 영역들(regions)의 두께는 명확성을 위하여 과장될 수 있다.
본문(특히 이하의 특허청구범위)에서의 단수 용어 및 유사한 용어들의 사용은 본문에서 다르게 지칭되거나 또는 명확하게 반박되지 않는 한 단수 및 복수를 모두를 포함하도록 이해된다. 다르게 언급되지 않는 한, “포함하다”(comprising, having, including, 및 containing)의 용어들은 개방형 의미로서 이해된다.
본문에서 사용되는 구성(component) 또는 모듈(module)의 용어는 특정 동작을 수행하는 FPGA (field programmable gate array )또는 ASIC(application specific integrated circuit)과 같은 소프트웨어 또는 하드웨어 구성을 의미한다. 그러나, 이에 한정되지는 않는다. 구성 또는 모듈은 유리하게 주소지정 스토리지 매체 내에 위치하도록 구성될 수 있고, 하나 또는 그 이상의 프로세스들을 수행하도록 구성될 수 있다. 즉, 예를 들어, 구성 또는 모듈은 소프트웨어 구성들, 객체 지향 소프트웨어 구성들(object-oriented software components) 클래스 구성들(class components) 및 작업 구성들(task components), 프로세스들(processes), 기능들(functions), 속성들(attributes), 절차들(procedures), 서브 루틴들(subroutines), 프로그램 코드의 세그먼트들(segments of program code), 드라이버들(drivers), 펌웨어(firmware), 마이크로코드(microcode), 회로(circuitry), 데이터(data), 데이터베이스(databases), 데이터 구조들(data structures), 테이블들(tables), 어레이들(arrays) 등과 같은 구성들을 포함할 수 있다. 구성들 또는 모듈들을 위해 제공되는 기능은 몇몇 구성들 또는 모듈들로 조합될 수 있다.
다르게 정의되지 않는 한, 본문에서 사용되는 모든 기술적 과학적 용어들은 본 발명이 속하는 기술 분야에서 통상의 기술자에 의해 공통적으로 이해되는 동일한 의미를 갖는다. 본문에서 제공되는 예시적인 용어들 또는 모든 예시들의 사용은 단지 본 발명을 설명하기 위해 사용되며, 본 발명의 범위가 다르게 한정되는 것은 아니다. 더욱이, 다르게 정의되지 않는 한, 일반적으로 사용되는 사전에서 정의된 모든 용어들은 다르게 정의되지 않는다.
도 1은 예시적인 실시 예에 따른 파일 관리 시스템(10)을 보여주는 블록도이다. 파일 관리 시스템(10)은 전자 문서들 또는 파일들을 저장하고 추적하는 컴퓨터(12)를 포함할 수 있다. 일 실시 예에서, 컴퓨터(12)는 데스크탑, 랩탑, 또는 워크 스테이션을 포함할 수 있다. 다른 실시 예에서, 컴퓨터(12)는 네트워크(미도시)를 통해 클라이언트 컴퓨터와 통신하는 서버를 포함할 수 있다. 컴퓨터(12)는 고속 스토리지(18, 예를 들어, 솔리드 스테이트 드라이브(SSD))와 같은 스토리지 디바이스, 프로세서(14), 및 메모리(16)를 포함하는 일반적인 컴퓨터 구성들을 포함할 수 있다.
프로세서(14)는 하나 또는 그 이상의 코어들을 갖는 싱글 프로세서 또는 멀티 프로세서를 포함할 수 있다. 프로세서(14)는 메모리(16)로부터의 프로그램 명령어를 실행한다. 소프트웨어의 예시적인 형태들은 애플리케이션(20), 운영 체제(22), 파일 시스템(24), 및 고속 스토리지(18)를 위한 장치 드라이버 애플리케이션 프로그래밍 인터페이스(26, device driver API; application programming interface)를 포함할 수 있다.
본 발명이 속하는 기술 분야에서 잘 알려진 바와 같이 애플리케이션(20)은 프로세서(14)에 의해 실행되어 컴퓨터(12)가 컴퓨터(12)의 구동 중에 작업들을 수행하도록 하는 컴퓨터 소프트웨어를 가리킬 수 있다. 예를 들어, 애플리케이션(20)은 웹브라우저, 워드 프로세서, 및 데이터베이스 프로그램을 포함할 수 있다. 일반적으로, 애플리케이션(20)은 파일(28)을 생성하고, 변형 또는 갱신한다. 운영 체제(22)는 컴퓨터(12)의 동작을 제어하고 관리하는 시스템 소프트웨어이다. 운영 체제(22)는 마이크로소프트 윈도우, 맥OS X, 및 리눅스를 포함할 수 있다.
파일 시스템(24)은 파일(28)과 같은 정보를 고속 스토리지(18)와 같은 데이터 저장 장치들에 어떻게 저장하고, 검색하고, 갱신하는지를 제어하는 소프트웨어이다. 일반적으로 파일 시스템(24)은 파일(28)과 같은 데이터가 고속 스토리지(18) 또는 다른 컴퓨터 저장 장치들에 저장되는 것을 특정하기 위하여 논리 블록 주소 지정(logical block addressing)을 사용한다. 좀더 상세하게는, 논리 블록 주소 지정은 논리 블록 주소들(30, LBAs; logical block addresses)을 파일(28)에 할당하여 고속 스토리지(18)의 특정 저장 영역들과 맵핑하는 개념이다.
장치 드라이버 애플리케이션 인터페이스(26, API)는 애플리케이션(20), 운영체제(22), 및 파일 시스템(24)이 고속 스토리지(18)와 통신할 수 있도록 한다. 장치 드라이버 API(26)는 커맨드를 제공하거나 또는 고속 스토리지로부터 데이터를 수신한다.
일 실시 예에서, 고속 스토리지(18)는 물리 블록 주소 지정(physical block addressing)을 사용하여 고속 스토리지(18)에 저장된 데이터의 각 물리 블록의 주소들(physical block addresses)을 제공한다. 주소들의 이러한 형태들은 물리 블록 주소들(PBAs; physical block addresses)라 불린다. 일 실시 예에서, 고속 스토리지(18)는 솔리드 스테이트 드라이브(SSD)를 포함할 수 있다. SSD는 메모리와 같은 집적 회로를 사용하여 파일(28)과 같은 데이터를 지속적으로 저장하는 데이터 저장 장치이다. 일 실시 예에서, SSD는 낸드 플리시 메모리 또는 랜덤 액세스 메모리(RAM)를 사용할 수 있다.
일 실시 예에서, 고속 스토리지(18)는 컴퓨터(12)로 논리 섹터 인터페이스를 제공하면서 고속 스토리지(18)를 관리하는 파일 변환 계층(34, FTL; file translation layer) 또는 동등한 구성을 더 포함할 수 있다. FTL(34)은 파일 시스템(24)에 의해 지원되는 LBAs(30) 및 고속 스토리지(18)에 의해 지원되는 PBAs(32) 사이의 맵핑 관계를 제어한다. 다른 실시 예에서, SSD와 다른 형태의 저장 장치들이 사용될 수 있다.
도 2는 파일을 업데이트하는 일반적인 파일 관리 시스템을 보여주는 도면이다. 애플리케이션은 사용자의 블로그 페이지를 가리키는 파일(200)을 유지하는 것으로 가정한다. 유저가 블로그를 업데이트할 때, 애플리케이션은 파일(200)을 메모리로부터 읽고, 컨텐츠를 변형시킨다. 업데이트를 수행하는 동안, 시스템은 변형된 파일이 복사된 새로운 파일(204)을 생성한다. 사용자가 블로그 업데이트를 지속하는 동안 다른 사용자들은 여전히 이전 파일(200)을 액세스하고 볼 수 있다. 사용자가 블로그 수정을 완료하고 페이지를 제출할 때, 애플리케이션은 새로운 파일(204)을 바꾸고 이전 파일(202)을 삭제한다.
파일이 실제 저장된 스토리지 시스템이 물리 블록 주소(208, PBA)을 유지하는 반면에, 파일 시스템은 이전 파일(202) 및 새로운 파일(204)을 위한 논리 블록 주소(206)를 유지한다. 이러한 실시 예에서, 파일 시스템은 이전 파일(202)을 논리 블록 주소(LBA4, LBA5)와 맵핑하고, 스토리지 장치는 논리 블록 주소들(LBA4~LBA5) 및 물리 블록 주소(PBA0~PBA1)를 각각 맵핑한다. 유사하게 새로운 파일(204)은 논리 블록 주소(LBA24~LBA25)와 맵핑되고, 논리 블록 주소(LBA24~LBA25)는 다시 물리 블록 주소(PBA11~PBA12)와 각각 맵핑된다.
일반적인 시스템은 이전 파일(202)이 교체된 새로운 파일(204)을 액세스하기 위하여 시스템 정보를 업데이트해야 하는 문제점이 있다. 일반적으로, 시스템의 데이터 구조의 연속적인 갱신은 스토리지로의 많은 쓰기를 발생한다.
시스템 정보는 각 파일 또는 문서에 대한 메타데이터를 포함한다. 예를 들어, 메타데이터는 파일이 저장된 날짜, 파일을 저장한 사용자의 식별자를 포함할 수 있다. 메타데이터는 일반적으로 데이터 구조에 저장된다. 이러한 데이터 구조의 일 예는 저장된 데이터를 유지하고 로그 시간으로 검색, 연속적인 액세스, 삽입, 삭제가 가능한 트리 데이터 구조인 B+ 트리이다. 파일(200) 각각에 대한 메타데이터 또는 논리 블록 주소(206, LABs)의 리스트가 B+ 트리의 i노드에 의해 지원될 수 있다. 파일(200) 당 하나의 i노드가 존재할 수 있다. 파일(200)에 대한 i노드가 B+ 트리의 리프 레벨에 인접하게 저장된 경우, 루트 노드까지의 경로상의 모든 노드들의 업데이트가 필요하고, 이로 인하여 스토리지로의 연속적인 업데이트 및 쓰기가 발생한다.
예를 들어, 사용자가 상술된 바와 같이 블로그를 업데이트할 경우, 애플리케이션은 적어도 하나의 디스크 쓰기를 유발하는, 블로그를 포함하는 파일 정보의 업데이트를 필요로 할 수 있다. 좀 더 많은 사용자인 경우, 더욱 많은 디스크 쓰기가 발생한다.
예시적인 실시 예들은 시스템 데이터 구조를 갱신하지 않고 새로운 업데이트 파일로 액세스하는 향상된 방법 및 시스템을 제공한다. 이로 인하여, 시스템에서의 과도한 디스크 쓰기 및 연속적인 업데이트들이 최소화 또는 제거된다.
예시적인 실시 예들은 새로운 스토리지(예를 들어, SSD) 커맨드 및 이러한 문제를 해결하기 위한 API를 제안한다. 즉, 시스템 데이터 구조의 업데이트 없이 파일의 새로운 버전이 액세스될 경우, 최신 시스템 정보를 반영하기 위한 연속되는 갱신의 제거로 인하여 스토리지 쓰기가 상당히 감소되거나 피할 수 있다. 실제로, 간략한 예에서, B+ 트리들, 파일 로깅과 같은 다수의 애플리케이션들은 예시적인 실시 예가 적용될 수 있는 특징들을 포함한다.
예시적인 실시 예들은 연관된 API 및 커맨드(이하에서, SWAT(SWap And Trim) 커맨드라 칭한다.)를 제공한다. 주어진 LABs 리스트들의 쌍에서 SWAT 커맨드는 리스트 내의 LBAs의 맵핑을 순서대로 아토믹하게(atomically) 스왑하고, 사용되지 않는 LBA를 제거(trim)한다. 예시적으로, “아토믹(atomic)”의 용어는 컴퓨터 분야에서 사용되는 용어로서, 아토믹 동작(atomic operation)은 다른 동작들에 의해 중단(interrupt)되지 않는 동작을 가리킨다. 즉, 아토믹 동작이 완료된 이후에 다른 동작들이 수행될 수 있다.
도 3은 일 실시 예에 따라 업데이트 동안 파일을 액세스하는 파일 관리 시스템(10)에 의해 수행되는 프로세스를 보여주는 순서도이다. 도 4는 프로세스를 도식적으로 보여주는 도면이다.
도 1, 도3, 및 도 4를 참조하면, 블록 300 단계에서, 프로세스는 이전 파일(old file)로의 액세스를 유지하는 동안 변형된 컨텐츠가 복사된 새로운 파일을 생성하기 위하여 변형된 컨텐츠를 포함하는 업데이트를 수신하는 애플리케이션에 응답하여 시작할 수 있다.
업데이트되는 파일(400)에 응답하여 파일의 이전 버전(402)(즉, 이전 파일(old file))은 임시적으로 유지되고, 파일의 새로운 버전(404)(즉, 새로운 파일(new file))은 변형된 컨텐츠를 포함하도록 생성된다. 파일(400)은 애플리케이션들(20) 중 어느 하나 또는 운영 체제(22)를 통해서 업데이트될 수 있다.
파일 시스템(24)은 이전 파일 LBAs(406)(예를 들어, LBA4~LBA5)의 리스트를 사용하여 이전 파일(402)의 논리 저장 위치를 표현할 수 있고, 고속 스토리지(18)는 이전 파일의 PBAs(408)(예를 들어, PBA0~PBA1)의 리스트를 사용하여 이전 파일(402)의 물리 저장 위치를 표현할 수 있다. 유사하게, 새로운 파일(404)의 논리 저장 위치는 새로운 파일의 논리 블록 주소(410)(예를 들어, LBA24~LBA25)의 리스트를 사용하여 표현되고, 고속 스토리지(18) 내의 물리 저장 위치는 새로운 파일의 물리 블록 주소(412)(예를 들어, PBA11~PBA12)의 리스트를 사용하여 표현된다.
도 3을 다시 참조하면, 블록 302 단계에서, 새로운 파일의 업데이트에 응답하여 이전 파일의 논리 블록 주소(406)의 맵핑은 이전 파일의 물리 블록 주소(408)로부터 새로운 파일의 물리 블록 주소(412)로 스왑된다. 도 4에 도시된 바와 같이 이전 파일의 논리 블록 주소(406)의 리스트의 물리적 맵핑은 새로운 파일(404)의 물리 블록 주소(412)의 리스트로 재맵핑된다. 좀 더 상세하게, SWAT 커맨드가 발행될 때, 논리 블록 주소(LBA4)는 물리 블록 주소(PBA11)로 맵핑되고, 논리 블록 주소(LBA5)는 물리 블록 주소(PBA12)로 맵핑된다. 결과적으로, SWAT API는 파일 정보 업데이트의 요구를 제거한다.
더욱이, 이전 파일의 물리 블록 주소(408)를 해제하여, 이전 파일의 논리 블록 주소(406)가 이전 파일의 물리 블록 주소(408)로 맵핑된 것은 정리(trim)된다. 도 4에 도시된 바와 같이 이전 파일의 물리 블록 주소(408, PBA0 및 PBA1)가 해제된 이후는 참조번호 416과 같이 “X”로 표현된다.
블록 306 단계에서, 새로운 파일의 논리 블록 주소(410)가 새로운 파일의 물리 블록 주소(412)로 맵핑되는 것이 제거된다. 도 4에 도시된 바와 같이 SWAT 동작 이후에, 논리 블록 주소(LBA24) 및 논리 블록 주소(LBA25)에 대한 맵핑이 제거되고, 선택적으로 재사용될 수 있고, 새로운 파일(404)이 참조번호 418의 “X”와 같이 선택적으로 삭제될 수 있다.
예시적인 실시 예들에 따르면, SWAT 커맨드 및 API는 기존의 기술들에서 다양한 이점들을 제공한다. SWAT 커맨드는 OS의 변형을 요구하지 않고, 약간의 펌웨어 변형을 통해 SSD 장치들의 모든 형태에 적용될 수 있다. SWAT 커맨드는 애플리케이션으로부터의 디스크 쓰기 횟수를 감소시킴으로써 SSD 장치들의 수명을 향상시킬 수 있다. SWAT 커맨드는 사용되지 않는 공간을 사전에 재생(reclaim)시킴으로써 시스템의 성능을 향상시킬 수 있다. 더욱이, SWAT 커맨드는 멀티 버전 동시 제어(multi-version concurrency control)을 갖는 애플리케이션들의 성능 이점들을 제공할 수 있다.
이하에서 SWAT 커맨드가 더욱 상세하게 설명된다. 파일이 애플리케이션(20)을 통해 발생될 때, 운영 체제(22) 또는 파일 시스템(24) 중 어느 하나는 장치 드라이버 API(26)를 호출한다. 그 이후에, 장치 드라이버 API(26)는 고속 스토리지(18)로 SWAT 커맨드를 전송한다.
일 실시 예에서, 커맨드는 논리 블록 주소 리스트들의 쌍(예를 들어, 새로운 파일의 논리 블록 주소(410)의 리스트 및 이전 파일의 논리 블록 주소(406)의 리스트)으로 정의될 수 있다. 고속 스토리지(18)의 파일 변환 계층(34, FTL)은 이전 파일의 논리 블록 주소(406)의 리스트 및 새로운 파일의 논리 블록 주소(410)의 리스트를 수신할 수 있고, 정해진 순서대로 논리 블록 주소 리스트들의 쌍에서 논리 블록 주소 의 맵핑을 아토믹하게(atomically) 스왑하고, 이후에, 이전 파일의 물리 블록 주소(408)를 최선의 방식(예를 들어, SWAT 커맨드를 실행하는 동안 트림 오버헤드를 최소화하기 위한 집단 트림(batched trim))에 따라 제거할 수 있다. 일 실시 예에서, SWAT 커맨드는 아토믹(atomic)이다.
SWAT 커맨드
일 실시 예에서, 논리 블록 주소는 인접하거나 또는 인접하지 않을 수 있다. 따라서, 인접한 논리 블록 주소 또는 인접하지 않은 논리 블록 주소를 위한 두 가지의 SWAT 커맨드들이 제공된다. SWAT 커맨드의 기술적 사상 및 실시 예들은 특정 실시 예의 측면에서 본 발명이 설명되는 이하의 유사 부호를 참조하여 더욱 잘 이해될 것이다. 본 발명 및 그것의 기술적 사상들은 본문에 특정하게 기재되지 않은 코드, 장치들, 방법들의 다양한 형태를 포함할 수 있다.
비인접 LBAs를 위한 API
swat (unsigned int *dst_list, unsigned int *src_list, unsigned int lba_count, unsigned int timeout)
이 프로세스는 dst_list의 논리 블록 주소의 맵핑 및 scr_list의 논리 블록 주소의 맵핑을 아토믹하게(atomically) 스왑하고, dst_list의 논리 블록 주소에 대한 물리 블록 주소를 제거한다. 상술된 커맨드가 성공적으로 수행될 때, dst_list의 논리 블록 주소는 src_list의 논리 블록 주소에 의해 포인팅된 물리 블록 주소를 포인팅하고, dst_list에 의해 지시된 물리 블록 주소는 제거되고, src_list의 논리 블록 주소는 해제된다. 큰 트랜잭션의 아토믹하게(atomically) 관리가 요구될 때, 상술된 API가 유용하다.
표 1은 파라미터들을 보여준다.
dst_list dst_list는 논리 블록 주소의 리스트를 포함하고, 초기의 이전 컨텐츠를 가리킨다. 그러나, dst_list는 SWAT 호출이 성공적으로 수행된 이후에 새로운 컨텐츠를 가리킨다. dst_list 내의 논리 블록 주소의 컨텐츠(예를 들어, 물리 블록 주소)는 제거되고, 논리 블록 주소의 맵핑은 SWAT 호출과 함께 갱신된다.
src_list src_list는 새로운 컨텐츠의 논리 블록 주소의 리스트를 포함하고, src_list의 논리 블록 주소는 SWAT 호출이 성공적으로 실행된 이후에 해제된다. src_list 내의 논리 블록 주소의 컨텐츠들(예를 들어, PBAs)는 유지되나, 논리 블록 주소는 선택적으로 재사용될 수 있다.
lba_count 논리 블록 주소 리스트들의 논리 블록 주소의 개수,
두 리스트들의 길이는 동일해야 하며, 논리 블록 주소의 최대 개수는 구현 의존적이며, NVM_MAX_SWAT_LBA_COUNT에 의해 정의될 수 있다.
timeout 마이크로 초(microsecond)단위의 SWAT 동작의 최대 시간. 0인 경우, 무한 시간을 의미한다.
RETURN NVM_SUCCESS : SWAT이 성공적이다.
NVM_ERR_ROLLBACK : 이 에러는 장치가 매체 장애, 타임 아웃 등과 같은 일부 이로 인하여 SWAT 동작을 수행에 실패할 경우 반환된다.
NVM_ERR_INVAILD_LBA : 이 에러는 논리 블록 주소가 장치의 범위를 초과하거나 또는 LBA가 어떤 PBA와 맵핑되지 않음으로 인하여 리스트의 LBAs가 유효하지 않을 때 반환된다.
NVM_ERR_INVAILD_PARAM: 이 에러는 과정의 일부 파라미터들이 유효하지 않을 경우 반환된다. 예를 들어, dst_list 또는 src_list기 NULL이 될 수 있고, lba_count가 0이 되거나, 또는 음수(예를 들어, -1)로 설정되어 매우 크거나 또는 타입의 불일치가 될 수 있다.
NVM_ERR_TIMEOUT: 이 에러는 장치가 유저에 의해 정의된 시간 범위 내에 동작을 완료할 수 없는 경우 반환된다.
인접 LBAs를 위한 인터페이스
cont_swat (unsigned int dst_lba, unsigned int src_lba, unsigned int lba_count, unsigned int timeout)
cont_swat 과정은 (dst_lba, dst_lba+lba_count-1)의 범위 내의 논리 블록 주소의 맵핑 및 (src_lba, src_lba+lba_count-1)의 범위 내의 논리 블록 주소의 맵핑을 스왑하고, PBAs(dst_lba, dst_lba+lba_count-1)를 아토믹하게(atomically) 제거한다. 상술된 커맨드가 성공적으로 실행될 때, (dst_lba, dst_lba+lba_count-1)에 대한 논리 블록 주소는 (src_lba, src_lba+lba_count-1)에 대한 논리 블록 주소에 의해 포인팅되는 물리 블록 주소를 포인팅하고, (dst_lba, dst_lba+lba_count-1)에 대한 물리 블록 주소는 제거되고, (src_lba, src_lba+lba_count-1)의 논리 블록 주소는 해제된다.
표 2는 파라미터들을 보여준다.
dst_lba (dst_lba, dst_lba+lba_count-1)의 범위의 논리 블록 주소는 초기에 이전 컨텐츠를 포인팅하고, cont_swat이 성공적으로 수행된 이후에 새로운 컨텐츠를 포인팅한다. (dst_lba, dst_lba+lba_count-1)의 범위 내의 논리 블록 주소의 컨텐츠(예를 들어, PBAs)은 제거되고, (dst_lba, dst_lba+lba_count-1) 범위의 LBAs의 맵핑은 SWAT 호출과 함께 갱신된다.
src_lba src_lba는 새로운 컨텐츠를 포인팅하고, (dst_lba, dst_lba+lba_count-1)의 범위의 논리 블록 주소는 nvm_cont_swat이 성공적으로 수행된 이후에 해제된다. (dst_lba, dst_lba+lba_count-1) 범위의 논리 블록 주소의 컨텐츠(물리 블록 주소)는 유지되나 그것들의 LBAs는 재사용된다.
lba_count 리스들의 논리 블록 주소의 개수 - 두 리스트들의 길이는 동일해야 하고, 논리 블록 주소의 최대 개수는 구현 의존적이며, NVM_MAX_SWAT_LBA_COUNT에 의해 정의될 수 있다.
timeout 마이크로 초(microsecond) 단위의 SWAT 동작의 최대 시간. 0으로 설정될 경우, 무한 시간을 의미한다.
RETURN NVM_SUCCESS : SWAT이 성공적이다.
NVM_ERR_ROLLBACK : 이 에러는 장치가 매체 장애, 타임 아웃 등과 같은 일부 이로 인하여 SWAT 동작을 수행에 실패할 경우 반환된다.
NVM_ERR_INVAILD_LBA : 이 에러는 논리 블록 주소가 장치의 범위를 초과하거나 또는 LBA가 어떤 PBA와 맵핑되지 않음으로 인하여 리스트의 LBAs가 유효하지 않을 때 반환된다.
NVM_ERR_INVAILD_PARAM: 이 에러는 과정의 일부 파라미터들이 유효하지 않을 경우 반환된다. 예를 들어, dst_list 또는 src_list기 NULL이 될 수 있고, lba_count가 0이 되거나, 또는 음수(예를 들어, -1)로 설정되어 매우 크거나 또는 타입의 불일치가 될 수 있다.
NVM_ERR_TIMEOUT: 이 에러는 장치가 유저에 의해 정의된 시간 범위 내에 동작을 완료할 수 없는 경우 반환된다.
SWAT 커맨드는 제조사 전용 커맨드(vendor specific command)를 통해 SATA, SAS, PCIe, eMMC, UFS 등과 같은 스토리지 프로토콜의 형태에서 구현될 수 있다.
본 발명은 앞서 설명된 실시 예들에 따라 설명되었으며, 본 발명의 기술적 사상 범위 내에서 실시 예들은 변형될 수 있다. 예를 들어, 예시적인 실시 예는 하드웨어, 소프트웨어, 프로그램 명령어를 포함하는 컴퓨터 판독가능 매체, 또는 그것들의 조합을 사용하여 구현될 수 있다. 본 발명에 따라 기입된 소프트웨어는 메모리, 하드 디스크, 또는 CD/DVD-ROM과 같은 컴퓨터 판독 가능 매체에 저장되고, 프로세스에 의해 실행된다. 따라서, 다양한 변형들은 첨부된 특허청구범위의 사상과 범위 내에서 당업자에 의해 구현될 수 있다.
12 : 컴퓨터
14 : 프로세서
16 : 메모리
18 : 고속 스토리지
20 : 애플리케이션
22 : 운영 체제
24 : 파일 시스템
30 : 논리 블록 어드레스
26 : 장치 드라이버 API
28 : 파일
34 : FTL
32 : 물리 블록 어드레스
LBA : 논리 블록 어드레스
PBA : 물리 블록 어드레스

Claims (16)

  1. 파일 관리 시스템에서 파일의 업데이트된 버전으로의 액세스를 제공하는 방법에 있어서,
    상기 파일 관리 시스템은 스토리지 장치 외부의 프로세서에서 실행되는 애플리케이션을 포함하고,
    파일 변환 계층(FTL; file translation layer) 맵은 파일 시스템에 의해 유지되는 논리 블록 어드레스들(LBAs) 및 상기 스토리지 장치에 의해 유지되는 물리 블록 어드레스들(PBAs) 사이의 FTL에 의해 유지되고,
    상기 방법은:
    상기 스토리지 장치에 의해, 업데이트를 수신한 상기 애플리케이션에 응답하여 상기 프로세서로부터 전송된 제1 커맨드를 수신하고, 상기 업데이트는 제1 파일로의 액세스가 유지되는 동안 상기 제1 파일의 변형된 컨텐츠 및 상기 변형된 컨텐츠가 복사되는 제2 파일의 생성을 포함하고, 상기 제1 커맨드의 파라미터들은 상기 제1 파일에 대응하는 제1 리스트의 LBA들 및 상기 제2 파일에 대응하는 제2 리스트의 LBA들을 포함하고, 상기 제1 리스트의 LBA들은 상기 스토리지 장치에서 상기 제1 파일의 저장 위치를 나타내는 제1 리스트의 PBA들로 맵핑되고, 상기 제2 리스트의 LBA들은 상기 스토리지 장치에서, 상기 제2 파일의 저장 위치를 나타내는 제2 리스트의 PBA들로 맵핑되고, 상기 제1 리스트의 LBA들은 상기 제2 리스트의 LBA들과 다르고, 상기 제1 리스트의 PBA들은 상기 제2 리스트의 PBA들과 다른 단계;
    상기 제1 리스트의 LBA들이 상기 제2 리스트의 PBA들로 순서대로 맵핑되도록 상기 제1 리스트의 LBA들을 아토믹하게(atomically) 재맵핑하고, 상기 제1 리스트의 LBA들의 각 LBA에 대하여, 상기 제1 리스트의 LBA들의 LBA 및 상기 제2 리스트의 PBA의 대응하는 PBA 사이의 상기 FTL 맵에서 맵핑이 생성되는 단계;
    상기 제1 리스트의 LBA들의 상기 제1 리스트의 PBA들로의 맵핑을 제거(trimming)하고, 상기 제1 리스트의 LBA들의 모든 LBA들에 대하여, 상기 제1 리스트의 LBA들의 LBA 및 상기 제1 리스트의 PBA의 대응하는 PBA 사이의 상기 FTL 맵에서 맵핑이 제거되는 단계; 및
    상기 제2 리스트의 LBA들의 상기 제2 리스트의 PBA들로의 맵핑을 언맵하고, 상기 제2 리스트의 LBA들의 모든 LBA들에 대하여, 상기 제2 리스트의 LBA들의 LBA 및 상기 제2 리스트의 PBA들의 대응하는 PBA 사이의 상기 FTL 맵에서 맵핑이 제거되는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 제1 커맨드는 스왑 및 트림(SWAT; swap and trim) 커맨드를 포함하고, 애플리케이션 프로그래밍 인터페이스(API; application programming interface)를 통해 발행되는 방법.
  3. 제 2 항에 있어서,
    상기 SWAT 커맨드는 애플리케이션 또는 운영 체제에 의한 호출(call)에 응답하여 스토리지 장치 드라이버 API로부터 상기 스토리지 장치로 발행되는 방법.
  4. 제 2 항에 있어서,
    상기 제1 리스트의 LBA들 및 상기 제2 리스트의 LBA들 내의 LBA들은 상기 제1 리스트의 LBA들 및 상기 제2 리스트의 LBA들에 의해 정의된 순서에 따라 아토믹하게(atomically) 재맵핑되고, 상기 제1 파일의 상기 PBA들은 최선 노력 방식(best-effort manner)에 따라 제거(trimmed)되는 방법.
  5. 제 4 항에 있어서,
    상기 SWAT 커맨드는 인접 LBA들에 대한 제1 SWAT 커맨드 및 비-인접 LBA들에 대한 제2 SWAT 커맨드를 포함하는 방법.
  6. 시스템에 있어서,
    적어도 하나의 애플리케이션을 실행하는 프로세서 및 메모리를 포함하는 컴퓨터; 및
    상기 프로세서 및 상기 메모리의 외부에 위치한 스토리지 장치를 포함하고,
    파일 변환 계층(FTL; file translation layer) 맵은 파일 시스템에 의해 유지되는 논리 블록 어드레스들(LBAs; logical block addresses) 및 스토리지 장치에 의해 유지되는 물리 블록 어드레스들(PBAs; physical block addresses) 사이의 FTL에 의해 유지되고,
    상기 스토리지 장치는:
    업데이트를 수신한 애플리케이션에 응답하여 상기 프로세서로부터 전송된 제1 커맨드를 수신하도록 구성되고, 상기 업데이트는 제1 파일로의 액세스가 유지되는 동안, 상기 제1 파일의 변형된 컨텐츠 및 상기 변형된 컨텐츠가 복사되는 제2 파일의 생성을 포함하고, 상기 제1 커맨드의 파라미터들은 상기 제1 파일에 대응하는 제1 리스트의 LBA들 및 상기 제2 파일에 대응하는 제2 리스트의 LBA들을 포함하고, 상기 제1 리스트의 LBA들은 상기 스토리지 장치에서 상기 제1 파일의 저장 위치를 나타내는 제1 리스트의 PBA들로 맵핑되고, 상기 제2 리스트의 LBA들은 상기 스토리지 장치에서 상기 제2 파일의 저장 위치를 나타내는 제2 리스트의 PBA들로 맵핑되고, 상기 제1 리스트의 LBA들은 상기 제2 리스트의 LBA들과 다르고, 상기 제1 리스트의 PBA들은 상기 제2 리스트의 PBA들과 다르고,
    상기 제1 리스트의 LBA들이 상기 제2 리스트의 PBA들로 순서대로 맵핑되도록, 상기 제1 리스트의 LBA들을 아토믹하게 재맵핑하도록 구성되고, 상기 제1 리스트의 LBA들의 각 LBA들에 대하여, 상기 제1 리스트의 LBA들의 LBA 및 상기 제2 리스트의 PBA들의 대응하는 PBA 사이의 상기 FTL 맵에서 맵핑이 생성되고,
    상기 제1 리스트의 LBA들의 상기 제1 리스트의 PBA들로의 맵핑을 제거(trimming)하도록 구성되고, 상기 제1 리스트의 LBA들의 모든 LBA들에 대하여, 상기 제1 리스트의 LBA들의 LBA 및 상기 제1 리스트의 PBA의 대응하는 PBA 사이의 상기 FTL 맵에서 맵핑이 제거되고,
    상기 제2 리스트의 LBA들의 상기 제2 리스트의 PBA들로의 맵핑을 언맵하도록 구성되고, 상기 제2 리스트의 LBA들의 모든 LBA들에 대하여, 상기 제2 리스트의 LBA들의 LBA 및 상기 제2 리스트의 PBA들의 대응하는 PBA 사이의 상기 FTL 맵에서 맵핑이 제거되는 시스템.
  7. 제 6 항에 있어서,
    상기 제1 커맨드는 스왑 및 트림(SWAT; swap and trim) 커맨드를 포함하고, 애플리케이션 프로그래밍 인터페이스(API; application programming interface)를 통해 발행되는 시스템.
  8. 제 7 항에 있어서,
    상기 SWAT 커맨드는 애플리케이션 또는 운영 체제에 의한 호출(call)에 응답하여 스토리지 장치 드라이버 API로부터 상기 스토리지 장치로 발행되는 시스템.
  9. 제 7 항에 있어서,
    상기 제1 리스트의 LBA들 및 상기 제2 리스트의 LBA들의 LBA들은 상기 제1 리스트의 LBA들 및 상기 제2 리스트의 LBA들에 의해 정의된 순서에 따라 아토믹하게 재맵핑되고, 상기 제1 파일의 상기 PBA들은 최선 노력 방식(best-effort manner)에 따라 제거되는 시스템.
  10. 제 9 항에 있어서,
    상기 SWAT 커맨드는 인접 LBA들을 위한 제1 SWAT 커맨드 및 비-인접 LBA들을 위한 제2 SWAT 커맨드를 포함하는 시스템.
  11. 실행 가능한 소프트웨어 제품을 저장하는 비-일시적 컴퓨터 판독 가능한 매체에 있어서,
    상기 실행 가능한 소프트웨어 제품은 파일 관리 시스템에서 업데이트된 파일로의 액세스를 제공하는 프로그램 명령어들을 포함하고,
    상기 파일 관리 시스템은 스토리지 장치 외부의 프로세서에서 실행되는 애플리케이션을 포함하고,
    파일 변환 계층(FTL; file translation layer) 맵은 파일 시스템에 의해 유지되는 논리 블록 어드레스들(LBAs; logical block addresses) 및 상기 스토리지 장치에 의해 유지되는 물리 블록 어드레스들(PBAs; physical block addresses) 사이의 FTL에 의해 유지되고,
    상기 프로그램 명령어들은:
    상기 스토리지 장치에 의해, 업데이트를 수신한 상기 애플리케이션에 응답하여 상기 프로세서로부터 전송된 제1 커맨드를 수신하고, 상기 업데이트는 제1 파일로의 액세스가 유지되는 동안 상기 제1 파일의 변형된 컨텐츠 및 상기 변형된 컨텐츠가 복사되는 제2 파일의 생성을 포함하고, 상기 제1 커맨드의 파라미터들은 상기 제1 파일에 대응하는 제1 리스트의 LBA들 및 상기 제2 파일에 대응하는 제2 리스트의 LBA들을 포함하고, 상기 제1 리스트의 LBA들은 상기 스토리지 장치에서 상기 제1 파일의 저장 위치를 나타내는 제1 리스트의 PBA들로 맵핑되고, 상기 제2 리스트의 LBA들은 상기 스토리지 장치에서, 상기 제2 파일의 저장 위치를 나타내는 제2 리스트의 PBA들로 맵핑되고, 상기 제1 리스트의 LBA들은 상기 제2 리스트의 LBA들과 다르고, 상기 제1 리스트의 PBA들은 상기 제2 리스트의 PBA들과 다른 것;
    상기 제1 리스트의 LBA들이 상기 제2 리스트의 PBA들로 순서대로 맵핑되도록 상기 제1 리스트의 LBA들을 아토믹하게(atomically) 재맵핑하고, 상기 제1 리스트의 LBA들의 각 LBA에 대하여, 상기 제1 리스트의 LBA들의 LBA 및 상기 제2 리스트의 PBA의 대응하는 PBA 사이의 상기 FTL 맵에서 맵핑이 생성되는 것;
    상기 제1 리스트의 LBA들의 상기 제1 리스트의 PBA들로의 맵핑을 제거(trimming)하고, 상기 제1 리스트의 LBA들의 모든 LBA들에 대하여, 상기 제1 리스트의 LBA들의 LBA 및 상기 제1 리스트의 PBA의 대응하는 PBA 사이의 상기 FTL 맵에서 맵핑이 제거되는 것; 및
    상기 제2 리스트의 LBA들의 상기 제2 리스트의 PBA들로의 맵핑을 언맵하고, 상기 제2 리스트의 LBA들의 모든 LBA들에 대하여, 상기 제2 리스트의 LBA들의 LBA 및 상기 제2 리스트의 PBA들의 대응하는 PBA 사이의 상기 FTL 맵에서 맵핑이 제거되는 것을 위한 것인 비-일시적 컴퓨터 판독 가능한 매체.
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
KR1020140154321A 2013-11-08 2014-11-07 논리 블록 주소의 아토믹 스왑 및 트림을 위한 swat 커맨드 및 애플리케이션 프로그래밍 인터페이스 KR102303814B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201361902092P 2013-11-08 2013-11-08
US61/902,092 2013-11-08
US14/282,358 US9678966B2 (en) 2013-11-08 2014-05-20 Swat command and API for atomic swap and trim of LBAs
US14/282,358 2014-05-20

Publications (2)

Publication Number Publication Date
KR20150053720A KR20150053720A (ko) 2015-05-18
KR102303814B1 true KR102303814B1 (ko) 2021-09-23

Family

ID=52991043

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140154321A KR102303814B1 (ko) 2013-11-08 2014-11-07 논리 블록 주소의 아토믹 스왑 및 트림을 위한 swat 커맨드 및 애플리케이션 프로그래밍 인터페이스

Country Status (5)

Country Link
US (2) US9678966B2 (ko)
JP (2) JP6416591B2 (ko)
KR (1) KR102303814B1 (ko)
CN (2) CN110807008A (ko)
DE (1) DE102014116031A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9678966B2 (en) * 2013-11-08 2017-06-13 Samsung Electronics Co., Ltd. Swat command and API for atomic swap and trim of LBAs
US10359937B2 (en) * 2013-12-20 2019-07-23 Sandisk Technologies Llc System and method of implementing a table storage support scheme
KR102316198B1 (ko) * 2015-06-12 2021-10-25 삼성전자주식회사 파일 액세스 방법, 컴퓨터, 및 컴퓨터-읽기 가능한 매체에 실행 가능한 소프트웨어 제품
KR20180019419A (ko) * 2016-08-16 2018-02-26 삼성전자주식회사 메모리 컨트롤러, 메모리 시스템 및 그 동작방법
CN106844619A (zh) * 2017-01-17 2017-06-13 深圳市金立通信设备有限公司 一种文件清理方法及终端
US10324628B2 (en) * 2017-04-19 2019-06-18 Veritas Technologies Llc Systems and methods for reducing data fragmentation
KR102567140B1 (ko) 2017-11-24 2023-08-16 삼성전자주식회사 데이터 관리 방법 및 이를 수행하는 저장 장치
JP7316204B2 (ja) * 2019-12-16 2023-07-27 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置およびファイルアクセス方法
KR20220020143A (ko) * 2020-08-11 2022-02-18 삼성전자주식회사 오버라이트 처리를 수행하는 스토리지 시스템, 스토리지 시스템을 제어하는 호스트 시스템 및 스토리지 시스템의 동작 방법
US20230024420A1 (en) * 2021-07-16 2023-01-26 Samsung Electronics Co., Ltd. Methods and devices for file read latency reduction
US11768631B2 (en) * 2021-08-31 2023-09-26 Micron Technology, Inc. Rapid reliable file system access

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060282644A1 (en) 2005-06-08 2006-12-14 Micron Technology, Inc. Robust index storage for non-volatile memory
US20090109788A1 (en) 2007-10-31 2009-04-30 Samsung Electronics Co., Ltd. Data management method and mapping table update method in non-volatile memory device
US20100017558A1 (en) 2008-04-11 2010-01-21 Richard Matthew Fruin Memory device operable in read-only and re-writable modes of operation
US20100095046A1 (en) 2008-10-09 2010-04-15 Denali Software, Inc. Method and apparatus for improving small write performance in a non-volatile memory
US20100125694A1 (en) 2008-11-18 2010-05-20 Gyu Sang Choi Memory device and management method of memory device
US20120151124A1 (en) 2010-12-08 2012-06-14 Sung Hoon Baek Non-Volatile Memory Device, Devices Having the Same, and Method of Operating the Same

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6366933B1 (en) 1995-10-27 2002-04-02 At&T Corp. Method and apparatus for tracking and viewing changes on the web
JPH1031604A (ja) * 1996-07-15 1998-02-03 Meidensha Corp 共有メモリシステム並びにデータベースシステム
JP4441968B2 (ja) * 1999-02-26 2010-03-31 ソニー株式会社 記録方法、管理方法、及び記録装置
US6895490B1 (en) * 2001-04-09 2005-05-17 Matrix Semiconductor, Inc. Method for making a write-once memory device read compatible with a write-many file system
JP2004280752A (ja) * 2003-03-19 2004-10-07 Sony Corp データ記憶装置、およびデータ記憶装置における管理情報更新方法、並びにコンピュータ・プログラム
MXPA06012974A (es) * 2004-05-10 2007-04-23 Matsushita Electric Ind Co Ltd Grabacion/reproduccion de datos para discos de una sola escritura.
US8832047B2 (en) 2005-07-27 2014-09-09 Adobe Systems Incorporated Distributed document version control
US8515912B2 (en) 2010-07-15 2013-08-20 Palantir Technologies, Inc. Sharing and deconflicting data changes in a multimaster database system
US9164700B2 (en) * 2009-03-05 2015-10-20 Sandisk Il Ltd System for optimizing the transfer of stored content in response to a triggering event
US8291194B2 (en) * 2009-11-16 2012-10-16 Mediatek Inc. Methods of utilizing address mapping table to manage data access of storage medium without physically accessing storage medium and related storage controllers thereof
US8677203B1 (en) * 2010-01-11 2014-03-18 Apple Inc. Redundant data storage schemes for multi-die memory systems
US8495085B2 (en) 2010-09-27 2013-07-23 International Business Machines Corporation Supporting efficient partial update of hierarchically structured documents based on record storage
US9727570B2 (en) * 2011-06-03 2017-08-08 Apple Inc. Mount-time unmapping of unused logical addresses in non-volatile memory systems
KR20130044657A (ko) * 2011-10-24 2013-05-03 삼성전자주식회사 파일 시스템 및 그 제어 방법
US9323667B2 (en) * 2012-04-12 2016-04-26 Violin Memory Inc. System and method for managing trim operations in a flash memory system using mapping tables and block status tables
CN103020550B (zh) * 2012-12-03 2016-08-17 记忆科技(深圳)有限公司 一种固态硬盘及其安全访问方法、固态硬盘系统
US10102144B2 (en) 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
US9678966B2 (en) * 2013-11-08 2017-06-13 Samsung Electronics Co., Ltd. Swat command and API for atomic swap and trim of LBAs

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060282644A1 (en) 2005-06-08 2006-12-14 Micron Technology, Inc. Robust index storage for non-volatile memory
US20090109788A1 (en) 2007-10-31 2009-04-30 Samsung Electronics Co., Ltd. Data management method and mapping table update method in non-volatile memory device
US20100017558A1 (en) 2008-04-11 2010-01-21 Richard Matthew Fruin Memory device operable in read-only and re-writable modes of operation
US20100095046A1 (en) 2008-10-09 2010-04-15 Denali Software, Inc. Method and apparatus for improving small write performance in a non-volatile memory
US20100125694A1 (en) 2008-11-18 2010-05-20 Gyu Sang Choi Memory device and management method of memory device
US20120151124A1 (en) 2010-12-08 2012-06-14 Sung Hoon Baek Non-Volatile Memory Device, Devices Having the Same, and Method of Operating the Same

Also Published As

Publication number Publication date
US9684663B2 (en) 2017-06-20
US9678966B2 (en) 2017-06-13
CN110807008A (zh) 2020-02-18
DE102014116031A1 (de) 2015-05-13
CN104636414B (zh) 2019-11-05
KR20150053720A (ko) 2015-05-18
CN104636414A (zh) 2015-05-20
US20150134621A1 (en) 2015-05-14
JP2019016395A (ja) 2019-01-31
JP6629407B2 (ja) 2020-01-15
JP6416591B2 (ja) 2018-10-31
JP2015095262A (ja) 2015-05-18
US20150234849A1 (en) 2015-08-20

Similar Documents

Publication Publication Date Title
KR102303814B1 (ko) 논리 블록 주소의 아토믹 스왑 및 트림을 위한 swat 커맨드 및 애플리케이션 프로그래밍 인터페이스
US10261913B2 (en) Persistent memory for key-value storage
US9519666B2 (en) Snapshots and thin-provisioning in distributed storage over shared storage devices
US11782632B2 (en) Selective erasure of data in a SSD
US8924664B2 (en) Logical object deletion
US9778860B2 (en) Re-TRIM of free space within VHDX
US20120158674A1 (en) Indexing for deduplication
KR102262409B1 (ko) 비휘발성 메모리 기반 파일 시스템 및 이를 이용한 데이터 갱신 방법
US8019953B2 (en) Method for providing atomicity for host write input/outputs (I/Os) in a continuous data protection (CDP)-enabled volume using intent log
US9684658B2 (en) SWAT command and API for atomic swap and trim of logical pages
CN107704466B (zh) 数据储存系统
US9891826B1 (en) Discard command support in parity based redundant array of flash memory disk
KR102316198B1 (ko) 파일 액세스 방법, 컴퓨터, 및 컴퓨터-읽기 가능한 매체에 실행 가능한 소프트웨어 제품
US20180188967A1 (en) Snapshot storage management
US9646012B1 (en) Caching temporary data in solid state storage devices
US9740632B1 (en) Snapshot efficiency
US11194760B1 (en) Fast object snapshot via background processing
US20240126437A1 (en) Multiple Version Write Pending Support in Shared Global Memory
TW201901417A (zh) 固態硬碟執行刪除命令的方法

Legal Events

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