KR20150013235A - 제어 프로그램을 저장한 저장 매체, 정보 처리 장치의 제어 방법, 정보 처리 시스템, 및 정보 처리 장치 - Google Patents

제어 프로그램을 저장한 저장 매체, 정보 처리 장치의 제어 방법, 정보 처리 시스템, 및 정보 처리 장치 Download PDF

Info

Publication number
KR20150013235A
KR20150013235A KR1020147033999A KR20147033999A KR20150013235A KR 20150013235 A KR20150013235 A KR 20150013235A KR 1020147033999 A KR1020147033999 A KR 1020147033999A KR 20147033999 A KR20147033999 A KR 20147033999A KR 20150013235 A KR20150013235 A KR 20150013235A
Authority
KR
South Korea
Prior art keywords
data
storage unit
information processing
logical address
function
Prior art date
Application number
KR1020147033999A
Other languages
English (en)
Inventor
다이스케 하시모토
Original Assignee
가부시끼가이샤 도시바
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 가부시끼가이샤 도시바 filed Critical 가부시끼가이샤 도시바
Publication of KR20150013235A publication Critical patent/KR20150013235A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1456Hardware arrangements for backup
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2206/00Indexing scheme related to dedicated interfaces for computers
    • G06F2206/10Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
    • G06F2206/1014One time programmable [OTP] memory, e.g. PROM, WORM
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

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)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

일 실시형태에 따르면, 백업 소스인 제1 저장 유닛으로부터 판독된 데이터와 제1 함수가 나타내는 데이터가 일치하지 않으면, 판독된 데이터는 백업 목적지인 제2 저장 유닛에 기록된다. 제1 저장 유닛으로부터 판독된 데이터와 제1 함수가 나타내는 데이터가 일치하면, 판독 데이터는 제2 저장 유닛에 기록되지 않고, 삭제 통지가 제2 저장 유닛에 송신된다.

Description

제어 프로그램을 저장한 저장 매체, 정보 처리 장치의 제어 방법, 정보 처리 시스템, 및 정보 처리 장치{STORAGE MEDIUM STORING CONTROL PROGRAM, METHOD OF CONTROLLING INFORMATION PROCESSING DEVICE, INFORMATION PROCESSING SYSTEM, AND INFORMATION PROCESSING DEVICE}
<관련 출원과의 교차 참조>
본원은 2012년 6월 19일에 출원한 일본 특허출원 2012-137765호와, 2013년 2월 5일에 출원한 일본 특허출원 2013-020765호에 기초한 것으로서 이들에 대해 우선권을 주장하며, 이들 문헌의 전체 내용은 본 명세서에 참조로 포함된다.
<분야>
여기에 설명하는 실시형태는 개괄적으로 제1 메모리의 데이터를 비휘발성의 제2 메모리에 백업하는데 사용되는 제어 프로그램을 저장한 저장 매체, 정보 처리 장치를 제어하는 방법, 정보 처리 시스템, 및 정보 처리 장치에 관한 것이다.
운영체제(OS) 상에서, 비휘발성 저장 장치(예컨대, 하드 디스크, 솔리드 스테이트 드라이브(SSD))의 파일 데이터가 삭제되는 경우, OS 상의 데이터에 대응하는 관리 정보를 삭제할 뿐이며, 데이터는 실제로 비휘발성 저장 장치로부터 삭제되지 않는다. OS 상에서 데이터가 삭제될 때마다 비휘발성 저장 장치 상에서의 삭제 처리가 행해지지 않기 때문에, 삭제 처리가 행해지지 않는 만큼, 동작 성능이 향상된다. 이 방식은 특히 액세스가 느린 하드 디스크 드라이브에서 유효하다.
한편, OS 상에서는 분명히 삭제된 데이터가 비휘발성 저장 장치 상에서는 아직 유효한 데이터(호스트 무효 - 디바이스 유효 데이터)로서 인식되고 있기 때문에, 비휘발성 저장 장치 상에 존재하는 유효 데이터가 없는 빈 영역(free area)이 OS가 인식하고 있는 빈 영역보다 적다. 특히, 비휘발성 저장 장치 상에서의 빈 영역의 고갈은 논리 어드레스와 비휘발성 저장 장치의 물리 어드레스가 반드시 일대일로 대응하지 않는 SSD에서는 큰 문제가 될 수 있다.
다음과 같은 문제가 발생할 수 있다.
SSD의 빈 영역이 고갈되는 경우, 즉 SSD 컨트롤러에 의해 유효한 데이터를 가지고 있지 않다고 인식되는 NAND 플래시 메모리의 물리 블록(프리 블록)이 고갈되는 경우, 그 SSD에 데이터를 기록할 때, SSD 컨트롤러에 의해 유효한 데이터를 가지고 있다고 인식되는 NAND 플래시 메모리의 물리 블록(액티브 블록) 내의 무효 데이터 영역을 취득하여 새로운 프리 블록을 확보하는 처리에 부하가 걸리기 때문에, 기록 성능이 현저히 열화되는 문제.
대량의 무효 데이터로 인해 SSD 상에서의 빈 영역이 고갈되는 상황에서 기록이 행해질 경우, 특정 영역에 액세스 범위가 제한되거나, 빈번히 발생하는 NAND 정리(garbage)로 인해 여분의 블록이 소거될 때에, SSD의 신뢰성이 현저히 열화되는 문제.
전술한 문제들은 호스트 상에서 데이터가 삭제될 때에, 호스트(정보 처리 장치)로부터 SSD에 데이터 삭제 통지를 행함으로써 피할 수 있다. 데이터 삭제 통지의 예는, INCITS ATA/ATAPI Command Set-2(ACS-2)에 기술되어 있는 data set management command(흔히들 트림 커맨드라고 함)와, NVM Express Revision 1.1에 기술되어 있는 11h Dataset Management command의 Deallocate(AD)를 포함한다. 이 방식으로 호스트 상에서 데이터가 삭제되는 경우, 삭제된 데이터가 존재하는 논리 어드레스 공간을 호스트가 SSD에 통지함으로써, 이후 SSD 상에서도 그 영역을 빈 영역으로서 취급한다. 이에 따라, 트림 커맨드는 호스트-무효 및 디바이스-유효 데이터를 호스트-무효 및 디바이스-무효 데이터로 변경하는 것을 실현하여, SSD는 새롭게 빈 영역을 확보할 수 있다.
삭제 통지가 수행될 경우에, SSD 컨트롤러는 데이터 관리 영역에 액세스하여 해당 영역을 무효화한다. 무효화 처리에 있어서, SSD의 관리 정보를 재기록함으로써 해당 영역이 무효로 인식된다. 실제로 해당 영역의 데이터는 삭제되지 않을 수도 삭제될 수도 있다.
JP 2010-157133 A JP 2010-161199 A JP 2011-29586 A JP 2011-128998 A US 12/775767 JP 5,002,719 B1 JP 2012-198811 A JP 5,052,376 B1
ATA/ATAPI Command Set-2(ACS-2) d2015r6 Feb. 22, 2011 (http://www.t13.org/) pp. 98-99 and p. 50: Data Set Management Command (trim command), pp. 130-171: ECh IDENTIFY DEVICE command, pp. 342-365: SCT Command Transport, p. 217: 25h READ DMA EXT command, p. 218: 60h READ FPDMA QUEUED command, p. 322: 35h WRITE DMA EXT command, p. 324: 61h WRITE FPDMA QUEUDED command NVM Express Revision 1.1 October 11, 2012 (http://www.nvmexpress.org/) p. 114: 11h Dataset Management command SCSI Block Commands-3 (SBC-3), Revision 35, Dec. 07, 2012 (http://www.t10.org/), p. 162: 42h UNMAP command Serial ATA International Organization: Serial ATA Revision 3.1 Gold Revision, Jul. 18, 2011, http://www.serialata.org/ PCI Express Base Specification Revision 3.0, Nov. 10, 2010, http://www.pcisig.com/ Serial ATA Technical Proposal: SATA 31_TPR_C108 Title: Device Sleep, http://www.serialata.org/ "Well-known Storage Network" edited by Masaru Kitsuregawa, 1st Edition, Ohmsha, Ltd., pp. 6-9, pp. 67-93, May 20, 2011
도 1은 제1 실시형태에 따른 정보 처리 시스템의 기능 구성예를 도시하는 블록도이다.
도 2는 SSD의 내부 구성예를 도시하는 기능 블록도이다.
도 3은 SSD의 관리 정보를 도시하는 도면이다.
도 4는 SSD의 기록 처리의 예를 도시하는 플로우차트이다.
도 5는 SSD의 NAND 메모리의 정리 처리의 예를 도시하는 플로우차트이다.
도 6은 SSD가 삭제 통지를 수신할 때의 처리예를 도시하는 플로우차트이다.
도 7은 SSD의 판독 처리의 예를 도시하는 플로우차트이다.
도 8은 제어툴이 SSD에 저장되는 경우의 정보 처리 시스템의 기능 구성예를 도시하는 블록도이다.
도 9는 제어툴이 다른 외부 기억 장치에 저장되는 경우의 정보 처리 시스템의 기능 구성예를 도시하는 블록도이다.
도 10은 제어툴이 WEB로부터 인스톨되는 경우의 정보 처리 시스템의 기능 구성예를 도시하는 블록도이다.
도 11은 제어툴이 광학 드라이브로부터 인스톨되는 경우의 정보 처리 시스템의 기능 구성예를 도시하는 블록도이다.
도 12는 제어툴이 USB 메모리로부터 인스톨되는 경우의 정보 처리 시스템의 기능 구성예를 도시하는 블록도이다.
도 13은 정보 처리 장치의 계층적 기능 구성예를 도시하는 블록도이다.
도 14는 정보 처리 시스템의 외관적 구성을 도시하는 도면이다.
도 15는 정보 처리 시스템의 다른 외관적 구성을 도시하는 도면이다.
도 16은 정보 처리 시스템의 외관적 구성을 도시하는 도면이다.
도 17은 정보 처리 시스템의 다른 외관적 구성을 도시하는 도면이다.
도 18은 제어 프로그램에 의한 백업의 제1 실시형태에 따른 처리 순서를 도시하는 플로우차트이다.
도 19는 제어 프로그램에 의한 백업의 제2 실시형태에 따른 처리 순서를 도시하는 플로우차트이다.
도 20은 LBA와 데이터의 관계의 일례를 도시하는 도면이다.
도 21은 도 20에 나타낸 데이터의 경우에 0-fill 섹터의 존재 확률 분포의 일례를 도시하는 도면이다.
도 22는 LBA와 데이터의 관계의 다른 예를 도시하는 도면이다.
도 23은 도 22에 나타낸 데이터의 경우에 0-fill 섹터와 1-fill 섹터의 존재 확률 분포의 일례를 도시하는 도면이다.
도 24는 LBA와 데이터의 관계의 다른 예를 도시하는 도면이다.
도 25는 도 24에 나타낸 데이터의 경우에 0-fill 섹터, 320a-fill 섹터, 및 1-fill 섹터의 존재 확률 분포의 일례를 도시하는 도면이다.
도 26은 LBA와 데이터의 관계의 다른 예를 도시하는 도면이다.
도 27은 도 26에 나타낸 데이터의 경우에 개방되는 섹터를 도시하는 도면이다.
도 28은 함수 f(LBA)의 결정 방법을 설명하기 위한 도면이다.
도 29는 제어 프로그램에 의한 백업의 제4 실시형태에 따른 처리 순서를 도시하는 플로우차트이다.
도 30은 제어 프로그램에 의한 백업의 제4 실시형태의 다른 처리 순서를 도시하는 플로우차트이다.
도 31은 백업 목적지(backup destination)인 비휘발성 저장 장치로서 네트워크 스토리지 드라이브 또는 클라우드 스토리지가 채용되는 경우를 개념적으로 도시하는 도면이다.
도 32는 제6 실시형태에 따른 정보 처리 시스템의 기능 구성예를 도시하는 블록도이다.
도 33은 정보 처리 장치의 계층적 기능 구성예를 도시하는 블록도이다.
도 34는 제어 프로그램에 의한 백업의 제6 실시형태에 따른 처리 순서를 도시하는 플로우차트이다.
도 35는 OS 파일 관리 테이블을 도시하는 도면이다.
도 36은 정보 처리 장치의 계층적 기능 구성 상에서의 데이터의 기록의 흐름을 도시하는 도면이다.
도 37은 정보 처리 장치의 계층적 기능 구성 상에서의 데이터의 기록의 다른 흐름을 도시하는 도면이다.
도 38은 제7 실시형태에 따라 네트워크를 사용하는 정보 처리 시스템의 일례를 도시하는 블록도이다.
도 39는 제7 실시형태에 따라 네트워크를 사용하는 정보 처리 시스템의 다른 예를 도시하는 블록도이다.
도 40은 제7 실시형태에 따라 네트워크를 사용하는 정보 처리 시스템의 다른 예를 도시하는 블록도이다.
도 41은 제7 실시형태에 따라 네트워크를 사용하는 정보 처리 시스템의 다른 예를 도시하는 블록도이다.
도 42는 제어 프로그램에 의한 백업의 제7 실시형태에 따른 처리 순서를 도시하는 플로우차트이다.
도 43은 제8 실시형태에 따라 네트워크를 사용하는 정보 처리 시스템의 다른 예를 도시하는 블록도이다.
도 44는 제8 실시형태에 따라 네트워크를 사용하는 정보 처리 시스템의 다른 예를 도시하는 블록도이다.
도 45는 제9 실시형태에 따라 네트워크를 사용하는 정보 처리 시스템의 일례를 도시하는 블록도이다.
도 46은 제9 실시형태에 따라 사용된 메타데이터의 일례를 도시하는 도면이다.
도 47은 제어 프로그램에 의한 백업의 제9 실시형태에 따른 처리 순서를 도시하는 플로우차트이다.
도 48은 파일 ID 리스트의 데이터 구조를 도시하는 도면이다.
도 49는 제10 실시형태에 따른 시스템 구성을 도시하는 도면이다.
일 실시형태에 따르면, 제1 저장 유닛은 적어도 판독 가능한 제1 메모리를 포함한다. 제2 저장 유닛은, 판독 및 기록 가능한 제2 비휘발성 메모리와, 제어 유닛을 포함하고, 제어 유닛은, 수신된 삭제 통지에 의해 지정된 논리 어드레스 영역의, 상기 제2 비휘발성 메모리에 대한 매핑을 무효화하고, 수신된 판독 커맨드에 의해 지정된 논리 어드레스 영역이 상기 제2 비휘발성 메모리에 매핑되지 않는 경우, 제1 함수가 나타내는 데이터를 정보 처리 장치에 송신하도록 구성된다. 저장 매체는 제1 및 제2 저장 유닛이 접속될 수 있는 정보 처리 장치에 로드되는 제어 프로그램을 저장한다. 이 제어 프로그램은, 정보 처리 장치로 하여금, 제1 저장 유닛의 제1 논리 어드레스 영역으로부터 데이터를 판독하는 제1 처리와, 상기 제1 논리 어드레스 영역으로부터의 판독 데이터와 상기 제1 함수가 나타내는 데이터가 일치하는지의 여부를 판정하는 제2 처리와, 판독 데이터와 상기 제1 함수가 나타내는 데이터가 일치하지 않는 경우, 상기 제2 저장 유닛의 제2 논리 어드레스 영역에 판독 데이터를 기록하는 제3 처리와, 판독 데이터와 상기 제1 함수가 나타내는 데이터가 일치하는 경우에, 상기 제2 저장 유닛에 판독 데이터를 보내지 않고서, 상기 제2 비휘발성 메모리에 대한 상기 제2 논리 어드레스 영역의 하나 이상의 매핑을 무효화하는 삭제 통지를 상기 제2 저장 유닛에 보낸다.
이 실시형태에 있어서, 백업 처리에서 트림 커맨드를 사용하여, 호스트-유효 및 디바이스-유효 데이터가 호스트-유효 및 디바이스-무효 데이터로서 처리된다. 따라서, SSD의 데이터의 백업 고속화, 백업 목적지인 SSD에서의 프리 블록수의 증대화, 백업 목적지인 SSD에서의 기록 데이터량 저감화가 실현된다.
먼저, 명세서에서 사용하는 용어에 관해서 설명한다.
호스트-무효 및 디바이스-유효 데이터(host-invalid and device-valid data)는 호스트(정보 처리 장치) 또는 OS에 대해서는 무효하고 디바이스(비휘발성 저장 장치)에 대해서는 유효한 데이터이다.
호스트-유효 및 디바이스-유효 데이터(host-valid and device-valid data)는 호스트뿐만 아니라 비휘발성 저장 장치에 대해 유효한 데이터이다.
호스트-유효 및 디바이스-무효 데이터(host-valid and device-invalid data)는 호스트에 대해서는 유효하지만 비휘발성 저장 장치에 대해서는 무효한 데이터이다.
호스트-무효 및 디바이스-무효 데이터(host-invalid and device-invalid data)는 호스트뿐만 아니라 비휘발성 저장 장치에 대해서 무효한 데이터이다.
호스트-유효 데이터(host-valid data)는 적어도 호스트에 대해 유효한 데이터이다.
호스트-무효 데이터(host-invalid data)는 적어도 호스트에 대해 무효한 데이터이다.
디바이스-유효 데이터(device-valid data)는 적어도 비휘발성 저장 장치에 대해 유효한 데이터이다.
디바이스-무효 데이터(device-invalid data)는 적어도 비휘발성 저장 장치에 대해 무효한 데이터이다.
이하, 첨부 도면을 참조하여, 실시형태에 따른, 제어 프로그램을 저장한 저장 매체, 정보 처리 장치의 제어 방법, 정보 처리 시스템, 및 정보 처리 장치에 대해 상세히 설명한다. 본 발명은 이 실시형태에 한정되지 않는다.
(제1 실시형태)
도 1은 정보 처리 시스템의 일례인 정보 처리 시스템(1)의 제1 실시형태에 따른 제1 구성을 도시하는 도면이다. 정보 처리 시스템(1)은 저장 장치(2A)와, 정보 처리 장치(3)(호스트(3))와, 비휘발성 저장 장치(2A)를 정보 처리 장치(3)에 연결하는 메모리 인터페이스(19A)와, 저장 장치(2A)의 백업용 비휘발성 저장 장치(2B)가 탑재될 수 있는 메모리 인터페이스(19B)를 포함한다. 본 실시형태에 있어서, 저장 장치(2A)는 비휘발성 저장 장치(2A)로서 구성된다. 비휘발성 저장 장치(2A, 2B)로서, SSD(Solid State Drive)를 이용한다. 하지만, 예를 들어, 하드 디스크 드라이브, 하이브리드 하드 디스크 드라이브, SD 카드, USB 메모리, NAND형 플래시 메모리, ReRAM(Resistance Random Access Memory), 또는 자기 테이프 등의 다른 비휘발성 저장 장치를 이용할 수도 있다. 비휘발성 저장 장치(2A, 2B)는 다른 종류의 비휘발성 저장 장치일 수도 있다. 비휘발성 저장 장치(2B)에 액세스 가능한 논리 어드레스인 LBA(Logical Block Addressing)의 최대치(LBA 카운트)는 비휘발성 저장 장치(2A)의 LBA 카운트와 같거나, 또는 비휘발성 저장 장치(2A)의 LBA 카운트보다 큰 것이 바람직하다. 또한, 저장 장치(2A)로서, 비휘발성 저장 장치가 아니라, 휘발성 저장 장치인 DRAM(Dynamic Random Access Memory)나 SRAM(Static Random Access Memory)를 이용할 수도 있다. 또한, 저장 장치(2A)는 판독 동작 및 기록 동작 중 판독 동작만 수행할 수 있는 저장 장치일 수도 있다.
본 실시형태에 있어서, 인터페이스(19A, 19B)로서, SATA(Serial Advanced Technology Attachment) 인터페이스가 이용된다. 하지만, USB(Universal Serial Bus), SAS(Serial Attached SCSI), Thunderbolt(등록상표), PCI Express, LAN(Local Area Network), 파이버 채널, 및 이더넷(등록상표) 등의 다른 인터페이스가 이용될 수도 있다. 인터페이스(19A, 19B)는 다른 종류의 인터페이스일 수도 있다. 예를 들면, 인터페이스(19A) 및 인터페이스(19B)는 각각 SATA 인터페이스 및 USB 인터페이스일 수도 있다.
백업 목적지인 비휘발성 저장 장치(2B)는 물리적으로는 정보 처리 장치(3)와 떨어진 장소에 설치될 수도 있고, 네트워크 드라이브나 클라우드 스토리지처럼 네트워크를 통해 정보 처리 장치(3) 상에 탑재될 수도 있다.
본 실시형태에서는, 일례로서, 인터페이스(19B)에 SATA 인터페이스가 채용된 경우에 대해서 설명한다.
CPU(제어 회로)(4)가 정보 처리 장치(3)의 중앙 처리 장치이다. 정보 처리 장치(3)에 있어서의 다양한 종류의 연산 및 제어가 CPU(4)에 의해서 행해진다. CPU(4)는 사우스 브릿지(7)를 통해 비휘발성 저장 장치(2A, 2B)나, DVD-ROM 등의 광학 드라이브(10)를 제어한다. CPU(4)는 노스 브릿지(5)를 통해, 메인 메모리(6)를 제어한다. 메인 메모리(6)로서는, 예컨대 DRAM이 이용될 수 있다.
사용자는 키보드(14)나 마우스(15) 등의 입력 장치를 통해서 정보 처리 장치(3)를 제어한다. 키보드(14)나 마우스(15)로부터의 신호는 USB(Universal Serial Bus) 컨트롤러(13) 및 사우스 브릿지(7)를 통해 CPU(4)에 의해 처리된다. CPU(4)는 노스 브릿지(5) 및 디스플레이 컨트롤러(8)를 통해 디스플레이(표시 장치)(9)에 화상 데이터, 텍스트 데이터 등을 송신한다. 사용자는 디스플레이(9)를 통해 정보 처리 장치(3)로부터의 화상 데이터, 텍스트 데이터 등을 시인할 수 있다.
CPU(4)는 정보 처리 시스템(1)의 처리를 제어하기 위해 설치된 프로세서이며, 비휘발성 저장 장치(2A)로부터 메인 메모리(6)에 로드되는 운영체제(OS)(100)를 실행한다. 광학 드라이브(10)가 로드된 광 디스크에 대하여 판독 및 기록 처리 중 적어도 하나의 처리의 실행을 가능하게 한 경우에, CPU(4)는 그 처리를 실행한다. 또한, CPU(4)는 BIOS(Basic Input/Output System)-ROM(11)에 저장된 시스템 BIOS도 실행한다. 시스템 BIOS는 정보 처리 시스템(1) 내의 하드웨어 제어에 이용된 프로그램이다. ROM(11)에는, 시스템 BIOS를 대신해서, UEFI(Unified Extensible Firmware Interface) 펌웨어가 저장되어 CPU(4)에 의해 실행될 수 있다. 또, CPU(4)는 사우스 브릿지(7)를 통해 LAN(Local Area Network) 컨트롤러(12)를 제어한다.
노스 브릿지(5)는 CPU(4)의 로컬 버스에 접속되는 브릿지 디바이스이다. 노스 브릿지(5)는 또한 메인 메모리(6)의 액세스 및 제어를 수행하는 메모리 컨트롤러를 포함한다. 또한, 노스 브릿지(5)는 디스플레이 컨트롤러(8)와의 통신 등을 실행하는 기능도 갖고 있다.
메인 메모리(6)는 프로그램이나 데이터를 일시적으로 저장하며, CPU(4)의 작업 메모리로서 기능한다. 메인 메모리(6)로서, 예를 들면 DRAM(Dynamic Random Access Memory), MRAM(Magnetoresistive Random Access Memory), ReRAM(Resistance Random Access Memory), 또는 SRAM(Static Random Access Memory)가 이용된다. 메인 메모리(6)는 OS(100)를 저장하는 기억 영역(6A)과, 제어툴(제어 프로그램)(200)을 저장하는 기억 영역(6B)을 포함한다. OS(100)는 일반적으로 알려져 있는 것처럼, 정보 처리 장치(3)의 입출력 장치의 관리, 디스크나 메모리의 관리, 소프트웨어가 정보 처리 장치(3)의 하드웨어를 이용할 수 있게 하기 위한 제어의 수행 등, 정보 처리 장치(3) 전체를 관리하는 프로그램이다. 제어 프로그램(200)은 비휘발성 저장 장치(2A)로부터 비휘발성 저장 장치(2B)로의 데이터 백업 기능을 갖는 프로그램이다. 본 실시형태에서는, OS(100)와 제어 프로그램(200)을 서로 구별하고 있지만, 제어 프로그램(200)은 OS(100)의 일부일 수도 있다.
디스플레이 컨트롤러(8)는 정보 처리 시스템(1)의 디스플레이(9)를 제어하는 그래픽 처리 유닛이다. 사우스 브릿지(7)는 CPU(4)의 로컬 버스에 접속되는 브릿지 디바이스이다. 사우스 브릿지(7)는 각종 소프트웨어 및 데이터를 저장하는 저장 장치인 비휘발성 저장 장치(2A)를, SATA 인터페이스(19A)를 통해 제어한다. 비휘발성 저장 장치(2A)는 사우스 브릿지(7)를 경유하지 않고서 CPU(4)에 직접 접속될 수도 있다.
정보 처리 시스템(1)에서는, LBA의 최소 단위인 논리 섹터 단위로 비휘발성 저장 장치(2A, 2B)에의 액세스가 이루어진다. 예컨대, SATA 인터페이스(19A, 19B)를 통해, 기록 커맨드(기록 요구), 판독 커맨드(판독 요구), 플래시 커맨드 등이 비휘발성 저장 장치(2A, 2B)에 출력된다.
사우스 브릿지(7)는 BIOS-ROM(11), 광학 드라이브(10), LAN 컨트롤러(12), 및 USB 컨트롤러(13)의 액세스 및 제어를 수행하는 기능을 갖는다. USB 컨트롤러(13)에는 키보드(14)와 마우스(15)가 접속된다.
[SSD]
도 2는 백업 목적지인 비휘발성 저장 장치(2B)를 도시하는 블록도이다. 본 실시형태에서는, 비휘발성 저장 장치(2B)로서 솔리드 스테이트 드라이브(SSD)를 채용한 예에 관해서 설명한다. 백업 소스인 비휘발성 저장 장치(2A)도 비휘발성 저장 장치(2B)와 같은 구성을 가질 수 있다. 그러나, 백업 소스인 비휘발성 저장 장치(2A) 자체는 트림 커맨드를 수신하지 않는다. 그렇기 때문에, 비휘발성 저장 장치(2A)가 여기에 나타내는 요건을 만족하지 않더라도, 예컨대 비휘발성 저장 장치(2A)가 트림 커맨드를 지원하지 않더라도 발명은 적용 가능하다. 본 실시형태에서는, 비휘발성 저장 장치(2B)가 비휘발성 반도체 메모리인 NAND형 플래시 메모리(이하, NAND 메모리라고 약칭)(16B)와, SATA 인터페이스(19B)를 통해 정보 처리 장치(3)에 대해 신호를 송수신하는 인터페이스 컨트롤러(IFC)(42B)와, NAND 메모리(16B)의 물리 어드레스에 대한 LBA의 매핑을 갖는 논리-물리 변환 테이블(룩업 테이블(LUT))을 포함하는 관리 정보(42B), 및 IFC(42B)와 NAND 메모리(16B) 사이의 중간 버퍼로서 기능하는 캐쉬 메모리(CM)(44B)를 포함하는 반도체 메모리인 RAM(Random Access Memory)(40B)와, NAND 메모리(16B) 및 RAM(40B)의 관리, 제어, 및 IFC(42B)의 제어를 담당하는 SSD 컨트롤러(SSDC)(41B)와, 이 구성 유닛들을 서로 연결하는 버스(43B)를 포함한다.
RAM(40B)으로서, DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), FeRAM(Ferroelectric Random Access Memory), MRAM(Magnetoresistive Random Access Memory), PRAM(Phase Change Random Access Memory), ReRAM(Resistance Random Access Memory) 등을 이용할 수 있다. RAM(40B)은 SSDC(41B) 내에 포함될 수도 있다.
NAND 메모리(16B)은 정보 처리 장치(3)에 의해서 지정된 사용자 데이터를 저장하고, 관리 정보를 백업 정보로서 관리 정보 영역(45B)에 저장한다. NAND 메모리(16B)는 복수의 메모리 셀이 매트릭스형으로 배열된 메모리 셀 어레이를 포함하고, 개개의 메모리 셀은 상위 페이지 및 하위 페이지를 사용하여 다수 비트를 저장할 수 있다. NAND 메모리(16B)는 복수의 메모리 칩을 포함하도록 구성되며, 각 메모리 칩은 소거 동작의 단위인 블록을 복수개 배열하여 구성된다. 또한, NAND 메모리(16B)는 각 페이지마다 데이터를 기록 및 데이터를 판독한다. 블록은 복수의 페이지를 포함하도록 구성되어 있다.
RAM(40B)은 정보 처리 장치(3)와 NAND 메모리(16) 사이에서 데이터 전송용 캐쉬로서 기능하는 캐쉬 메모리(CM)(44B)를 포함한다. 또한, RAM(40)은 관리 정보를 저장하는 메모리 및 기타 작업 영역용 메모리로서 기능한다. 예를 들어, SSDC(41B)는 비휘발성 장치(2B)의 시동시에 관리 정보 영역(45B)으로부터 관리 정보 영역(46B)에 관리 정보를 로드한다. 관리 정보 영역(46B) 내의 관리 정보는 주기적으로, 전원 차단시에 또는 정보 처리 장치(3)로부터의 스탠바이 커맨드나 플러시 캐쉬 커맨드의 수신시에, NAND 메모리(16B)의 관리 정보 영역(45B)에, 세이브 및 저장된다.
도 3에 도시하는 바와 같이, 관리 테이블(46B)은 프리 블록 테이블, 액티브 블록 테이블, 및 액티브 페이지 테이블을 포함한다. 물리 블록 ID 및 물리 페이지 어드레스는 물리 어드레스에 포함된다. 액티브 블록 테이블은 물리 블록 ID(물리 블록 어드레스)에 대한 논리 어드레스(LBA)의 매핑을 갖는다. 액티브 블록 테이블에 등록되어 있는 물리 블록(액티브 블록)은 적어도 SSDC(41B)에 대해 유효한 데이터를 저장하도록 구성되어 있다. 프리 블록 테이블은 LBA로부터 매핑되지 않는 물리 블록을 관리한다. 프리 블록 테이블에 등록되어 있는 물리 블록(프리 블록)이 LBA에 매핑되지 않기 때문에, 그 물리 블록은 유효한 데이터를 저장하지 않게 된다.
액티브 페이지 테이블은 물리 페이지 어드레스에 대한 LBA의 매핑을 갖는다. 액티브 페이지 테이블에 등록되어 있는 물리 페이지(액티브 페이지)는 적어도 SSDC(41B)에 대해 유효한 데이터를 저장한다. 또한, 액티브 페이지 테이블에 등록되어 있는 물리 페이지는 그 물리 페이지에 속하는 물리 블록 ID(물리 블록 어드레스)와 연관된다. 관리 테이블에서 관리되는 LBA는 비휘발성 저장 장치(2B)가 관리할 수 있는 최소 데이터 사이즈 또는 그보다 큰 데이터 사이즈의 어드레스인 것이 바람직하다. 관리 테이블(46B)의 데이터 사이즈를 저감하기 위해서, 액티브 블록 테이블나 액티브 페이지 테이블에서 저장되는 논리 어드레스로서, LBA를 미리 정해진 비트씩 우측 시프트 연산하여 얻어진 어드레스를 이용할 수도 있다.
비휘발성 저장 장치(2B)의 컨트롤러로서 역할하는 SSDC(41B)의 기능은 NAND 메모리(16B)에 저장된 시스템 프로그램(펌웨어)을 실행하는 프로세서와, 각종 하드웨어 회로 등에 의해서 실현된다. SSDC(41B)가 기록 요구, 캐쉬 플래시 요구, 판독 요구 등의 각종 커맨드를 수신하는 경우, SSDC(41B)는 정보 처리 장치(3)와 NAND 메모리(16B) 사이에서 데이터를 송신하고, 영역(46B)과 영역(44B)에 저장된 관리 정보를 갱신하며, NAND 메모리(16B)에 기록된 데이터의 ECC 인코딩, NAND 메모리(16B)로부터의 판독 데이터의 ECC 디코딩 등을 실행한다.
정보 처리 장치(3)는 비휘발성 저장 장치(2B)에 대하여, 판독 요구 또는 기록 요구를 발행할 때, ATA 인터페이스(19B)를 통해, 논리 어드레스 영역의 정보를 비휘발성 저장 장치(2B)에 보낸다. 이 논리 어드레스 영역의 정보는 LBA와 섹터 사이즈를 포함한다.
IFC(42B)는 정보 처리 장치(3)로부터 판독 요구, 기록 요구, 또는 기타 요구 및 데이터를 수신하고, 수신된 요구 및 데이터를 SSDC(41B)에 송신하거나, SSDC(41B)의 제어 하에 RAM(40B)에 데이터를 송신하는 기능을 갖는다.
<기록 동작>
도 4는 백업 목적지인 비휘발성 저장 장치(2B)의 기록 처리를 도시하는 플로우차트이다. 비휘발성 저장 장치(2B)는 정보 처리 장치(3)로부터 기록 커맨드를 수신한다(단계 S100). 기록 커맨드는 기록 커맨드, LBA, 섹터 카운트, 및 데이터를 포함한다.
SSDC(41B)는 DRAM(40B)으로부터 프리 블록 테이블을 판독하고(단계 S110), 프리 블록 테이블로부터 물리 블록 ID를 선택한다. 프리 블록이 프리 블록 테이블에 등록되지 않은 경우, SSDC(41B)는 후술하는 NAND 정리(NAND GC)를 수행하여, 프리 블록을 생성하고, 그 프리 블록을 프리 블록 테이블에 추가하며 프리 블록의 물리 블록 ID를 선택한다(단계 S120, 단계 S130).
SSDC(41B)는 선택된 물리 블록 ID에 대응하는 프리 블록에 데이터를 프로그램한다(데이터를 기록한다)(단계 S140). 계속해서, SSDC(41B)는 프로그램된 물리 블록 ID를 프리 블록 테이블로부터 삭제한다(단계 S150). SSDC(41B)는 액티브 블록 테이블 및 액티브 페이지 테이블을 갱신한다(단계 S160). 즉, 프로그램된 블록에 대응하는 LBA 및 물리 블록 ID가 액티브 블록 테이블에 추가되고, LBA, 물리 블록 ID 및 물리 페이지 어드레스가 액티브 페이지 테이블에 추가된다. SSDC(41B)는 단계 S140의 프로그램 처리에 앞서 기록될 물리 블록을 소거할 수도 있다.
<NAND 정리>
다음으로, 비휘발성 저장 장치(2B)의 NAND 정리(garbage collection, GC) 처리에 관해서 설명한다. 도 5는 비휘발성 저장 장치(2B)의 NAND 정리 처리를 도시하는 플로우차트이다. 물리 블록에 포함되는 전체 페이지 중 액티브 페이지 테이블에 등록되어 있는 액티브 페이지(유효 페이지)는 LBA로부터 매핑된다. 물리 블록에 포함되는 전체 페이지가 항상 유효 페이지는 아니다. 유효 페이지가 아닌 무효 페이지는 LBA로부터 매핑되지 않는다. 물리 블록은 무효 페이지의 양만큼 빈 공간을 갖고, 이들 무효 페이지와 유효 페이지를 수집함으로써 프리 블록을 확보할 수 있다.
우선, SSDC(41B)는 행 번호 i=0, 빈 공간 누적량 s=0를 설정한다(단계 S200). 계속해서, SSDC(41B)는 DRAM(40B)로부터 액티브 블록 테이블의 시작 행을 판독하여, 물리 블록 ID를 선택한다(단계 S210). 단계 S210에서 선택된 물리 블록 ID를 현재 물리 블록 ID라고 부른다. 계속해서, SSDC(41B)는 DRAM(40B)로부터 액티브 페이지 테이블을 판독하고, 현재 물리 블록 ID에 대응하는 전체 물리 페이지 어드레스를 취득한다(단계 S220).
계속해서, SSDC(41B)는 현재 물리 블록 중 무효 페이지의 사이즈를 산출하여, 이 무효 페이지 사이즈를 변수 v에 대입한다(단계 S230). 계속해서, SSDC(41B)는 v>0의 여부를 판정한다(단계 S235). v>0인 경우에, SSDC(41B)는 현재 물리 블록 ID를 정리 대상 블록 리스트에 추가한다(단계 S240). 한편, 단계 S235에서 무효 페이지가 없다고 SSDC(41B)가 판정하면(단계 S235: No), SSDC(41B)는 행 번호 i를 인크리먼트하여, 다음 물리 블록 ID를 처리 대상으로서 선택한다(단계 S245).
SSDC(41B)는, 빈 공간 누적량 s에 변수 v를 가산한다(단계 S250). SSDC(41B)는 빈 공간 누적량 s가 물리 블록 사이즈에 도달하였는지, 즉 지금까지 취득한 무효 페이지의 사이즈 총량이 물리 블록 사이즈에 도달하였는지의 여부를 판정한다(단계 S255). 빈 공간 누적량 s가 물리 블록 사이즈에 도달하지 않은 경우, SSDC(41B)는 행 번호 i를 인크리먼트한 다음에(단계 S245), 단계 S210의 후속 처리를 반복한다.
한편, 빈 공간 누적량 s가 물리 블록 사이즈에 도달한 경우, SSDC(41B)는 정리 대상 블록 리스트의 전체 물리 블록으로부터 전체 액티브 페이지의 데이터를 판독하여, 이 판독된 데이터를 DRAM(40B)에 저장한다(단계 S260). SSDC(41B)는, 정리 대상 블록 리스트의 물리 블록을 전부 소거한다(단계 S265). SSDC(41B)는 액티브 블록 테이블, 프리 블록 테이블, 및 액티브 페이지 테이블을 갱신한다(단계 S270). 즉, 소거된 물리 블록은 액티브 블록 테이블로부터 삭제되어 프리 블록 테이블에 추가되고, 데이터가 판독된 액티브 페이지가 액티브 페이지 테이블로부터 삭제된다.
SSDC(41B)는 DRAM(40B)에 저장된 전체 액티브 페이지의 데이터를 프리 블록에 기록한다(단계 S280). SSDC(41B)는 액티브 블록 테이블, 프리 블록 테이블, 및 액티브 페이지 테이블을 갱신한다(단계 S290). 즉, 프로그램된 물리 블록이 프리 블록 테이블로부터 삭제되어 액티브 블록 테이블에 추가되고, 프로그램된 물리 페이지는 액티브 페이지 테이블에 추가된다.
이와 같이, NAND GC가 NAND 메모리(16B)의 판독 처리, 삭제 처리, 및 프로그래밍 처리를 다수회 수행하기 때문에, 많은 시간이 필요하다. 따라서, 비휘발성 저장 장치(2B)에 다수의 프리 블록이 충분하지 않은 경우에, SSDC(41B)는 NAND 정리를 수행한다. 그래서, 정보 처리 장치(3)에 대한 기록 속도가 저하한다. 또한, NAND GC의 기록 처리 및 소거 처리로 인해 NAND 메모리(16B)의 신뢰성이 열화된다.
단계 S265의 삭제 처리는 도 4의 단계 S130의 NAND GC시에 수행되지 않고, 단계 S140의 기록 처리 직전에 수행될 수도 있다.
<삭제 통지 처리>
다음으로, 비휘발성 저장 장치(2B)의 삭제 통지 처리에 관해서 설명한다. 삭제 통지를 위한 커맨드는, 예컨대 INCITS ATA/ATAPI Command Set-2(ACS-2)에 기술되어 있는 Data Set Management Command(통칭 트림 커맨드)를 포함한다. 삭제 통지 처리는 OS(100) 상에서 LAB 영역의 데이터가 삭제될 때에, 비휘발성 저장 장치에 LBA 영역(LBA 레인지)을 통지한다. 본 실시형태에서는, 삭제 통지는 LBA 및 섹터 카운트를 포함하는 LBA 영역의 정보를 포함한다. 이 때, LBA 영역은 비휘발성 저장 장치(2B) 상에서 빈 영역으로서 취급될 수 있다. 비휘발성 저장 장치(2B)는 삭제 통지 처리를 통해 프리 블록을 확보할 수 있다. 트림 커맨드의 기능은 Data Set Management Command 뿐만 아니라, 예를 들면 ACS2에 기재된 SCT 커맨드를 이용한 벤더 독자의 커맨드 등의 기타 커맨드에 의해서도 실현될 수 있다. 인터페이스(19B)로서 SATA 인터페이스 이외의 인터페이스를 이용할 경우, 트림 커맨드로서 그 인터페이스 고유의 삭제 통지 처리용 커맨드를 이용할 수도 있다. 예를 들어, 트림 커맨드로서, NVM Express Revision 1.1, October 11, 2012(http://www.nvmexpress.org/)에 기술되어 있는 11h Dataset Management command의 Deallocate(AD)를 이용할 수도 있다. 예를 들면, 비휘발성 저장 장치(2B)가 후술하는 Deterministic Zeroing TRIM 기능을 보유하고 있는 경우, 트림 커맨드의 기능은 전술한 커맨드뿐만 아니라, NVM Express Revision 1.1에 기재되어 있는 08h Write Zeroes 커맨드에 의해서 실현될 수도 있다. 또한, 트림 커맨드로서, SCSI Block Commands-3(SBC-3), Revision 35, Dec.07, 2012(http://www.t10.org/)에 기술되어 있는 42h UNMAP command를 이용할 수도 있다. 본 실시형태에서는, 트림 커맨드가 데이터를 삭제할 때뿐만 아니라, 데이터를 백업 및 복사할 때에도 이용된다.
도 6은 비휘발성 저장 장치(2B)의 삭제 통지 처리를 도시하는 플로우차트이다. 비휘발성 저장 장치(2B)는 정보 처리 장치(3)로부터 삭제 통지를 수신한다(단계 S300). 삭제 통지는 삭제 커맨드 및 LBA 레인지 정보를 포함한다. LBA 레인지 정보는 LBA와 섹터 카운트(섹터 사이즈)를 포함한다. SSDC(41B)는 DRAM(40B)으로부터 액티브 페이지 테이블을 판독한다(단계 S310). SSDC(41B)는, 삭제 통지에 의해서 지정된 LBA 영역으로부터 맵핑되는 전체 영역을 갖는 전체 페이지를 액티브 페이지 테이블로부터 삭제한다(단계 S320). 이에 따라, 삭제 통지 대상의 페이지에 있는 데이터는 디바이스-유효 데이터에서 디바이스-무효 데이터로 변경된다.
SSDC(41B)는 DRAM(40B)으로부터 액티브 블록 테이블을 판독한다(단계 S330). SSDC(41B)는 액티브 블록 테이블로부터, 액티브 페이지 테이블에 물리 블록 ID를 갖지 않는 물리 블록을 삭제하고 그 물리 블록을 프리 블록 테이블에 추가한다(단계 S340).
이와 같이, 비휘발성 저장 장치(2B)는 삭제 통지에 의해 지정된 LBA 영역의, NAND 메모리(16B)의 물리 어드레스에 대한 매핑을 삭제한다. SSDC(41B)는 NAND GC와 함께 삭제 통지 처리에 의해 프리 블록을 확보할 수 있다. 삭제 통지 처리에 의해 지정된 LBA 영역으로부터 매핑된 NAND 영역 상의 데이터는 디바이스-유효 데이터에서 디바이스-무효 데이터로 변경된다. 삭제 통지에 의해 지정된 LBA 영역의 데이터 사이즈는 비휘발성 저장 장치(2B)에 의해 관리 테이블에서 관리되는 최소 데이터 사이즈와 같거나, 크거나, 작을 수도 있다.
전술한 바와 같이, 비휘발성 저장 장치는 정보 처리 장치(3)로부터 수신된 삭제 통지를 처리함으로써 프리 블록을 확보할 수 있다. 이와 같이, 삭제 통지에 의해 지정된 LBA 영역의 디바이스-유효 데이터는 디바이스-무효 데이터로 변경된다. SSDC(41B)는 삭제 통지 처리로만 관리 정보를 변경한다. 이 때, 삭제 통지 처리는, 관리 정보의 변경 및 NAND 메모리에 대한 사용자 데이터의 기록 모두가 SSDC(41B)에 의해 처리되는, 정보 처리 장치(3)로부터 SSD에 보내지는 기록 커맨드의 처리와 비교해서 고속으로 처리될 수 있다.
<판독 처리>
다음으로, 백업 목적지인 비휘발성 저장 장치(2B)의 판독 처리에 관해서 설명한다. 도 7은 비휘발성 저장 장치(2B)의 판독 처리를 도시하는 플로우차트이다. 백업 소스인 비휘발성 저장 장치(2A)의 백업 처리를 완료한 후에, 정보 처리 장치(3)는 백업 목적지인 비휘발성 저장 장치(2B)로부터 백업 데이터를 판독할 수 있다. 이 경우, 비휘발성 저장 장치(2B)는 정보 처리 장치(3)로부터 판독 커맨드를 수신한다(단계 S400). 판독 커맨드는 판독될 LBA 영역의 정보를 포함한다. 예를 들어, LBA 영역의 정보는 LBA 및 섹터 카운트를 포함한다.
SSDC(41B)는 DRAM(40B)로부터 액티브 블록 테이블을 판독한다(단계 S410). SSDC(41B)는 LBA 영역으로부터 매핑되는 물리 블록 ID를 선택한다(단계 S420). 액티브 블록 테이블에 물리 블록 ID가 존재하는 경우(S420: Yes), SSDC(41B)는 블록 ID의 블록으로부터 데이터를 판독한다. 즉, SDC(41B)는 액티브 페이지 테이블을 판독하고(단계 S430), 이 액티브 페이지 테이블로부터 LBA로부터 매핑된 물리 페이지 어드레스를 검색하여, NAND 메모리(16B)의 물리 어드레스로부터 데이터를 판독한다(단계 S440). SSDC(41B)는 판독된 데이터를 정보 처리 장치(3)에 송신한다(단계 S450).
LBA 영역이, 액티브 블록 테이블 내의 유효 물리 블록 ID에 매핑되지 않는 경우(S420: No), SSDC(41B)는 미기록 영역을 판독하는 처리를 수행한다. 즉, SSDC(41B)는 NAND 메모리(16B)로부터 데이터를 판독하지 않고, 함수 f에 의해 연산된 데이터를 정보 처리 장치(3)에 송신한다(단계 S460). 다시 말해, SSDC(41B)는 함수 f로부터의 출력 데이터를 정보 처리 장치(3)에 송신한다. 즉, SSDC(41B)는 함수 f가 나타내는 출력 데이터는 정보 처리 장치(3)에 송신한다. 그 데이터의 데이터 길이가 LBA 영역의 사이즈와 같다. 구체적으로, Ai가 어드레스, Di가 데이터라고 하면, 함수 f가 나타내는 데이터는,
f(Ai)=Di(여기서, i는 0 이상의 정수)
를 만족한다.
함수 f는 자유롭게 구성될 수 있다. 예를 들면, LBA를 함수 f에 대한 독립 변수로서 설정하면, f는,
f(LBA)=0
로서 정의되고, SSDC(41B)는 정보 처리 장치(3)로부터의 판독 요구에 응답하여, LBA 영역의 데이터 길이분의 "0"으로 채워진 데이터를 송신한다. 함수 f는 SSDC(41B)에 저장될 수도, NAND 메모리(16B) 내에 저장될 수도, RAM(40B) 내에 저장될 수도 있다. 미기록 영역의 판독 처리의 속도를 향상시키기 위해서는 함수 f를 SSDC(41B) 또는 RAM(40B) 내에 저장하는 것이 바람직하다. 함수 f는 비휘발성 저장 장치(2B)의 전원 오프시에는 NAND 메모리(16B) 내에 저장될 수 있고, SSDC(41B)는 비휘발성 저장 장치(2B)의 기동시에 NAND 메모리(16B)로부터 함수 f를 판독하여 RAM(40B)에 출력할 수 있다.
미기록 영역을 판독하는 처리에 있어서, SSDC(41B)는 NAND 메모리(16B)로부터 데이터를 판독하지 않거나 NAND 메모리(16B)로부터 실질적으로 소량의 데이터만 판독한다. 이 때문에, 미기록 영역의 판독 처리는, SSDC(41B)가 액티브 페이지 테이블 및 NAND 메모리(16B) 모두를 판독하는 기록 영역의 판독 처리보다 고속으로 수행될 수 있다.
이와 같이, 정보 처리 장치(3)가, 백업 목적지인 비휘발성 저장 장치(2B)에 디바이스-무효 데이터를 포함하는 LBA 영역을 판독하는 경우에, SSDC(41B)는 비휘발성 저장 장치(2B)의 NAND 메모리(16B)를 판독하지 않을 수 있다. 그 결과, SSDC(41B)는 디바이스-무효 데이터를 디바이스-유효 데이터보다 고속으로 판독할 수 있다. 디바이스-무효 데이터를 가진 LBA 영역이 판독될 때에, 비휘발성 저장 장치(2B)로부터 정보 처리 장치(3)로 송신된 데이터는 임의의 데이터일 수 있다. 그러나, 본 실시형태에서는, 그 데이터가 적어도 각 LBA에 대해 확정적인(deterministic) 데이터일 필요가 있다. 또한, 백업되는 데이터를 보다 정확히 정보 처리 장치(3)에 통지하기 위해서는, 비휘발성 저장 장치(2B)는 비휘발성 저장 장치(2B)의 기동시에 또는 정보 처리 장치(3)와의 접속시에, 비휘발성 저장 장치(2B)의 디바이스-무효 데이터의 판독 데이터가 확정적인 것을 정보 처리 장치(3)에 통지하는 것이 바람직하다. 예를 들면, 비특허문헌 중 ACS-2에 기술되어 있는 바와 같이, IDENTIFY DEVICE data word 169의 bit14는 1로 설정되어 있다. 따라서, 비휘발성 저장 장치(2B)는 디바이스-무효 데이터의 값이 확정적인 것을 미리 정보 처리 장치(3)에 통지할 수 있다. 이에, 적어도 각 LBA에 대하여 확정적인 데이터는, 본 발명에서는 함수 f(LBA)를 이용하여,
데이터=f(LBA)로서 표현된다.
특히, f(LBA)=0이면, IDENTIFY DEVICE data word 169의 bit5는 1로 설정되는 것이 바람직하고, 이에 따라 비휘발성 저장 장치(2B)는 디바이스-무효 데이터의 판독 데이터가 0의 고정값인 것(비휘발성 저장 장치(2B)가 Deterministic Zeroing TRIM 기능을 지원하는 것)을 미리 정보 처리 장치(3)에 통지할 수 있다. f(LBA)=0이면, 특히 논리 섹터 사이즈가 512 바이트인 경우에, 함수 f는 "f(LBA)=00000... 0" 같이 0으로 채워진(0-fill) 512 바이트 길이의 데이터를 출력한다.
[제어 프로그램의 저장 방법]
다음으로, 정보 처리 장치(3) 상에서 동작하는 제어 프로그램(제어툴)(200)을 저장하는 방법에 관해서 설명한다. 예컨대, 제어툴(200)은, 도 8에 도시하는 바와 같이, 정보 처리 장치(3)가 전원 오프인 동안에는 백업 소스인 비휘발성 저장 장치(2A)의 NAND 메모리(16A)에 저장되어 있다. 그러나, 정보 처리 장치(3)의 기동시에 또는 OS(100)가 제어 프로그램(200)을 활성화하는 메시지를 수신할 경우, CPU(4)는 제어툴(200)을 NAND 메모리(16)로부터 메인 메모리(6) 상의 영역(6B)에 로드한다. 한편, 비휘발성 저장 장치(2A) 및 비휘발성 저장 장치(2B)와는 상이한 비휘발성 저장 장치(20)가 정보 처리 장치(3)에 접속되어 있는 경우에, 도 9에 도시하는 바와 같이, 제어 프로그램(200)은 비휘발성 저장 장치(20)의 영역(20B)에 저장될 수도 있다. 정보 처리 장치(3)의 기동시 또는 프로그램의 기동시에, 제어 프로그램(200)은 영역(20B)으로부터 영역(6B)에 로드될 수 있다. 특히, 비휘발성 저장 장치(20)가 OS를 저장하는 시스템 드라이브로서 사용되고, 비휘발성 저장 장치(2A)가 문서, 정지 화상 데이터 또는 동화상 데이터 등의 사용자 데이터를 저장하는 데이터 드라이브로서 사용되고 있는 경우에, 그 시스템 드라이브(20)는 OS나 애플리케이션 프로그램을 주로 저장하는 드라이브로서 사용되고, 데이터 드라이브(2A)는 사용자 데이터를 저장하는 드라이브로서 사용되는 식으로 드라이브(2A)와 드라이브(20)의 역할을 명확히 나누는 관점에서, 제어 프로그램은 시스템 드라이브로서 기능하는 비휘발성 저장 장치(20)에 저장되는 것이 바람직하다. 한편, 제어 프로그램(200)을 저장하는 드라이브(20)로서 USB 메모리가 사용될 경우에, 통상 이용시에는 USB 메모리가 정보 처리 장치(3)로부터 분리될 수 있다. 제어 프로그램(200)이 이용될 때에만, 예컨대 비휘발성 저장 장치(2A)가 백업될 때에만, USB 메모리가 정보 처리 장치(3)에 접속될 수도 있다. 제어 프로그램은, 백업 목적지인 비휘발성 저장 장치(2B)에 저장될 수도 있다.
사용자가 제어 프로그램을 셋업하는 수고를 생략하는 관점에서는, 예컨대 도 8이나 도 9에 도시하는 바와 같이, 제어 프로그램이 비휘발성 저장 장치(2A)나 비휘발성 저장 장치(20)에 저장된 상태(미리 인스톨된 상태)로 정보 처리 시스템(1)이 출하되고, 판매되어 사용자의 손에 건네지는 것이 바람직하다. 한편, 사용자가 제어 프로그램의 인스톨의 가부를 선택할 수 있는 관점, 및 사용자에게 최신의 제어 프로그램을 제공할 수 있는 관점에서는, 제어 프로그램(200)이 WEB으로부터 다운로드되거나, DVD-ROM이나 USB 메모리 등의 외부 저장 매체로부터 인스톨되어 비휘발성 저장 장치(2A)나 비휘발성 저장 장치(20)에 저장되는 것이 바람직하다.
도 10은 WEB으로부터의 다운로드의 일례를 도시하는 도면이다. 제어 프로그램(200)은 WEB 서버(21) 내의 저장 매체(22)의 영역(22B)에 저장되어 있기 때문에, 제어 프로그램(200)은 인터넷, 로컬 네트워크 또는 무선 LAN 등의 네트워크를 통해, 예를 들면 LAN 컨트롤러(12) 또는 USB 컨트롤러(13)에 접속된 네트워크 장치를 경유해 NAND 메모리(16B)에 다운로드(또는 인스톨)된다. 도 9의 경우는 제어툴(200)이 비휘발성 저장 장치(20) 상의 영역(20B)에 다운로드 또는 인스톨된다.
도 11은 DVD-ROM이나 CD-ROM 등의 광학 매체로부터의 인스톨의 일례를 도시하는 도면이다. 제어툴(200)은 DVD-ROM이나 CD-ROM 등의 광학 매체(23)의 영역(23B)에 저장되어 있기 때문에, 광학 매체(23)가 광학 드라이브(10)에 세팅됨으로써, 제어툴(200)이 광학 드라이브(10)를 통해 비휘발성 저장 장치(2A)의 NAND 메모리(16A) 상에 인스톨된다. 도 12는 USB 메모리(24)로부터의 인스톨의 일례를 도시하는 도면이다. 제어툴(200)은 USB 메모리(24)의 영역(24B)에 저장되어 있어, USB 메모리(24)가 USB 컨트롤러(13)에 접속됨으로써, 제어툴(200)이 USB 컨트롤러(13)를 통해 비휘발성 저장 장치(2A)의 NAND 메모리(16A) 상에 인스톨된다. USB 메모리(24) 대신에, SD 카드 등 기타 외부 메모리를 사용할 수도 있다. 사용자의 입수 용이성의 관점에서, 광학 매체(23)나 USB 메모리(24)는 SSD(2)의 출하시에, 부속품으로서 SSD2와 함께 패키징되어 판매되는 것이 바람직하다. 한편, 광학 매체(23)나 USB 메모리(24)는 소프트웨어 상품으로서 단독으로 판매될 수도 있고 또는 잡지나 서적의 부록으로서 첨부될 수도 있다.
도 13은 정보 처리 시스템(1)의 소프트웨어 레벨에서의 계층 구조를 도시하는 도면이다. 제어 프로그램(200) 등의, 메인 메모리(6) 상에 로드되는 각종 소프트웨어는 통상 비휘발성 저장 장치(2A)나 비휘발성 저장 장치(2B)와 직접 통신하지 않는 것이 아니라, 메인 메모리(6)에 로드된 OS(100)를 경유하여 비휘발성 저장 장치(2A)나 비휘발성 저장 장치(2B)와 통신한다. 각종 소프트웨어가 비휘발성 저장 장치(2A)에 대하여 판독 요구, 기록 요구 등의 커맨드를 송신해야 할 경우에, 각종 소프트웨어는 OS(100)에 파일 단위의 액세스 요구를 송신한다. OS(100)는 OS(100)에 임베디드된 파일 관리 테이블(OS 파일 시스템)을 참조하여, 액세스 요구가 있는 파일에 대응하는 비휘발성 저장 장치(2A)나 비휘발성 저장 장치(2B)의 논리 어드레스(LBA)를 특정하고, 그 논리 어드레스를, 비특허문헌 1의 ACS-2에 기술되어 있는 60h READ FPDMA QUEUED 커맨드와 61h WRITE FPDWA QUEUED 커맨드 등의 해당 인터페이스 고유의 커맨드로 변환하여, 그 인터페이스 고유의 커맨드를 비휘발성 저장 장치(2A)나 비휘발성 저장 장치(2B)에 송신한다.
OS(100)는 비휘발성 저장 장치(2A)나 비휘발성 저장 장치(2B)로부터 응답을 받는 경우에, 이 응답이 어떤 소프트웨어에 대한 것이지 특정하고, 그 응답을 특정된 소프트웨어에 반환한다. 또한, 제어 프로그램(200)은 OS(100)의 파일 관리 테이블을 이용하지 않고서 OS(100)를 통해 비휘발성 저장 장치(2A)나 비휘발성 저장 장치(2B)의 LBA에 직접 액세스하도록 구성될 수도 있고, 또는 OS(100)를 경유한 경로 없이 비휘발성 저장 장치(2A)나 비휘발성 저장 장치(2B)의 LBA에 직접 액세스하도록 구성될 수도 있다.
[정보 처리 장치의 물리적 구성]
다음으로, 정보 처리 시스템(1)의 구성예에 관해서 설명한다. 정보 처리 시스템(1)은, 예컨대 데스크탑 컴퓨터나 노트북형의 포터블 컴퓨터로서 실현될 수 있다. 도 14는 정보 처리 시스템(1)으로 기능하는 데스크탑 컴퓨터를 도시하는 개략도이다.
데스크탑 컴퓨터는 컴퓨터 본체(31), 디스플레이(9), 키보드(14), 및 마우스(15)를 포함하다. 컴퓨터 본체(31)는 메인 하드웨어 유닛이 탑재되어 있는 마더보드(30), 비휘발성 저장 장치(2A), 및 전원 장치(32)를 포함한다. 비휘발성 저장 장치(2A)는 SATA 케이블을 통해 마더보드(30)에 물리적으로 접속되고, 마더보드(30) 상에 실장된 사우스 브릿지(7)를 통해, 같은 마더보드(30) 상에 실장된 CPU(4)에 전기적으로 접속된다. 전원 장치(32)는 데스크탑 컴퓨터에서 사용되는 각종 전력을 생성하여, 전원 케이블을 통해 마더보드(30), 비휘발성 저장 장치(2A) 등에 전원을 공급한다.
도 15는 정보 처리 시스템(1)으로서 기능하는 포터블 컴퓨터를 도시하는 개략도이다. 포터블 컴퓨터는 컴퓨터 본체(34) 및 디스플레이 유닛(35)을 포함한다. 예를 들어, 디스플레이 유닛(35)에는 LCD(Liquid Crystal Display)를 포함하는 표시 장치(9)가 임베디드되어 있다. 디스플레이 유닛(35)은 컴퓨터 본체(34)의 상면이 노출되는 오픈 위치와 컴퓨터 본체(34)의 상면이 접히는 클로즈 위치 사이에서 회전 가능하게 탑재된다. 본체(34)는 얇은 상자 형태의 케이싱을 포함한다. 그 상면에는, 전원 스위치(36), 키보드(14), 터치 패드(33) 등이 배치되어 있다. 본체(34)는 데스크탑 컴퓨터와 같이, 비휘발성 저장 장치(2A), 마더보드, 및 전원 장치를 포함한다.
본 실시형태가 적용되는 정보 처리 시스템(1)은 전술한 정보 처리 시스템뿐만 아니라, 스틸 카메라나 비디오 카메라 등의 촬상 장치, 태블릿 컴퓨터, 스마트폰, 게임 기기, 카 내비게이션 시스템, 저장 드라이브 듀플리케이터 등일 수도 있다.
본 실시형태에서는, 백업 소스인 비휘발성 저장 장치(2A)의 백업 목적지로서 비휘발성 저장 장치(2B)를 이용한다. 정보 처리 시스템(1)의 경량화, 전력 절약화, 및 공간 절약화의 관점에서는, 비휘발성 저장 장치(2A)의 신뢰성이 열화되지 않는다면, 비휘발성 저장 장치(2B)가 정보 처리 장치(3)에 접속되지 않는 것이 바람직하다. 이 경우, 비휘발성 저장 장치(2A)의 신뢰성이 열화되는 경우에, 디스플레이(9)를 통해 제어 프로그램으로부터 사용자에게 "백업용 저장 장치를 접속해 주십시오"라는 메시지가 표시되어, 사용자가 백업용 비휘발성 저장 장치(2B)를 정보 처리 장치(3)에 접속할 수 있게 하는 것이 바람직하다. 예를 들면, 정보 처리 시스템(1)이 데스크탑인 경우에, 비휘발성 저장 장치(2B)는 예컨대 도 14에 도시하는 바와 같이 SATA 케이블이나 USB 케이블을 통해 마더보드(30)에 접속될 수 있다. 비휘발성 저장 장치(2B)는 컴퓨터 본체(31)의 내부에 설치될 수도 있다. 또한, 정보 처리 시스템(1)이 포터블 컴퓨터인 경우, 비휘발성 저장 장치(2B)는 예컨대 도 15에 도시하는 바와 같이 SATA 케이블이나 USB 케이블을 통해 컴퓨터 본체(34)에 접속될 수 있다. 이 경우, 착탈 용이성의 관점에서, 인터페이스(19B)는 eSATA 인터페이스인 것이 바람직하다. 비휘발성 저장 장치(2B)는 컴퓨터 본체(34)의 내부에 설치될 수도 있다. 비휘발성 저장 장치(2B)가 탑재된 후에, 제어 프로그램(200)은 비휘발성 저장 장치(2A)로부터 비휘발성 저장 장치(2B)에 사용자 데이터를 백업한다.
제어 프로그램(200)에 의한 데이터 백업이 종료되면, 정보 처리 시스템(1)의 전력 절약화, 경량화 및 공간 절약화의 관점에서, 도 16과 도 17에 도시하는 바와 같이, 비휘발성 저장 장치(2A)를 정보 처리 시스템(1)으로부터 분리하고, 비휘발성 저장 장치(2B)를 비휘발성 저장 장치(2A)의 탑재 위치에 탑재하여, 비휘발성 저장 장치(2A)를 비휘발성 저장 장치(2B)로 치환하는 것이 바람직하다.
[백업 처리]
도 18은 제어 프로그램(200)에 의한 백업 처리의 처리 흐름을 도시하는 플로우차트이다. 제어 프로그램(200)은 CPU(4)에 의해 제어 프로그램 영역(6B)에 로드되어, 제어 프로그램(200)의 기능이 CPU(4)에 의해 처리된다. 제어 프로그램(200)은 비휘발성 저장 장치(2A)로부터 비휘발성 저장 장치(2B)로 데이터의 백업 기능을 갖는 프로그램이다. 제어 프로그램(200)의 백업 기능은 키보드(14)나 마우스(15)를 통해 사용자에 의해 수동으로 개시될 수도 있고, CPU(4)에 의해 자동적으로 개시될 수도 있다. 도 18에 도시하는 흐름에서는, 백업 대상 LBA 영역이 길이 L의 소(小)영역으로 분할되고, 각각의 소영역에 대한 백업 처리의 서브루틴이 수행된다. 소영역의 참조에는 LBA의 포인터인 cLBA가 이용되고, cLBA를 0에서부터 L씩 인크리먼트함으로써, 전체 LBA 영역의 데이터가 백업된다. 소영역의 길이 L은 1 이상의 정수이다.
백업 기능이 개시되면, 제어 프로그램(200)은, 데이터 복사 대상 LBA의 포인터인 cLBA를 제로에 설정한다(단계 S500). 제어 프로그램(200)은 길이 L의 cLBA에서 시작하는 LBA 영역의 데이터를 판독하는 커맨드를 비휘발성 저장 장치(2A)에 송신한다(단계 S510). 판독 커맨드로서는, 예컨대 비특허문헌 1의 ACS-2에 기술되어 있는 60h READ FPDMA QUEUED 커맨드, 25h READ DMA EXT 커맨드 등이 이용된다. 판독 커맨드를 수신한 비휘발성 저장 장치(2A)는 LBA 영역의 판독 데이터(D)를 정보 처리 장치(3)에 송신하고, 정보 처리 장치(3)는 데이터(D)를 수신한다(단계 S520). 제어 프로그램(200)은 데이터(D)를 메인 메모리(6)에 저장된 함수 f(cLBA)의 출력 데이터와 비교한다(단계 S530). 메인 메모리(6) 내의 함수 f()는 비휘발성 저장 장치(2B) 내에 저장된 함수 f()와 일치한다. 본 실시형태에 있어서, CPU(4)는 제어툴(200)을 로드할 경우에, 비휘발성 저장 장치(2B)로부터 함수 f()를 메인 메모리(6)에 로드한다. 이 처리는 데이터(D)가 함수 f(cLBA)의 출력 데이터와 일치하지 않는 경우(단계 S530: No)와, 데이터(D)가 함수 f(cLBA)의 출력 데이터와 일치하는 경우(단계 S530: Yes)로 분기된다.
D가 f(cLBA)의 출력 결과와 일치하지 않은 경우(단계 S530: No), 제어 프로그램(200)은 비휘발성 저장 장치(2B)에 대하여, 길이 L의 cLBA에서 시작되는 LBA 영역에 데이터(D)를 기록하는 커맨드를 송신하고, 비휘발성 저장 장치(2B)에 데이터(D)를 송신하여, SSDC(41B)는 데이터(D)를 NAND 메모리(16B)에 기록한다(단계 S540). 기록 커맨드로서는, 예컨대 비특허문헌 1의 ACS-2에 기술되어 있는 61h WRITE FPDMA QUEUED 커맨드, 35h WRITE DMA EXT 커맨드 등이 이용된다.
D가 f(cLBA)의 출력 데이터와 일치하는 경우(단계 S530: Yes), 제어 프로그램(200)은 비휘발성 저장 장치(2B)에 대하여, 길이 L의 cLBA에서 시작되는 LBA 영역을 매핑 해제하는 삭제 통지를 송신한다. 비휘발성 저장 장치(2B)의 SSDC(41B)는 NAND 메모리(45B)에 대한 LBA 영역의 매핑을 삭제하도록(무효화하도록) 관리 정보(46B)를 변경하여, LBA 영역의 데이터가 디바이스-무효 데이터가 되게 한다(단계 S550). 삭제 통지 커맨드로서는, 예를 들면 비특허문헌 1의 ACS-2에 기술되어 있는 06h DATA SET MANAGEMENT 커맨드나 SCT 커맨드, NVM Express Revision 1.1에 기술되어 있는 11h Dataset Management command의 Deallocate(AD) 등이 이용된다.
단계 S540 또는 단계 S550이 완료되면, 제어 프로그램(200)은 cLBA를 L씩 인크리먼트하고(단계 S560), 단계 S500 내지 단계 S550의 서브루틴이 전체 소영역에 대해 수행된다. cLBA가 비휘발성 저장 장치(2B)의 최대 액세스 가능 LBA를 초과할 경우, 전체 LBA 영역의 판독이 완료된 것으로 하고(단계 S570: Yes), 백업 처리가 완료된다.
제어 프로그램(200)이 백업 처리를 종료할 경우, 제어 프로그램(200)은 예컨대 비특허문헌 1의 ACS-2에 기재되어 있는 E0h Standby Immediate 커맨드나 E6h SLEEP 커맨드 등의 스탠바이 상태 및 슬립 상태 천이 커맨드를 발행함으로써, 비휘발성 저장 장치(2B)를 스탠바이 상태로 강제로 천이시키는 것이 바람직하다. 그 결과, 단계 540에서 비휘발성 저장 장치(2B)에 기록된 데이터를 확실하게 NAND형 플래시 메모리에 저장하고, 단계 S550에서 삭제 통지 처리에 의해 변경된 최신의 관리 정보(46B)를 확실하게 NAND형 플래시 메모리에 저장하여, 비휘발성 저장 장치(2B)가 의도치 않게 전원 차단될 때에 데이터 손실을 방지한다. 정보 처리 시스템(1)의 전력 소비는 비휘발성 저장 장치(2B)가 스탠바이 상태로 천이한 후에 절약된다. 제어 프로그램(200)은 비특허문헌 1의 ACS-2에 기술되어 있는 E7h FLUSH CACHE 커맨드나 EAh FLUSH CACHE EXT 커맨드 등의 플러시 캐쉬 커맨드를 비휘발성 저장 장치(2B)에 발행하여, RAM(40B)의 관리 정보(46B)와 CM(44B)의 데이터를 NAND형 플래시 메모리(16B)에 세이브 및 저장할 수 있다.
제어 프로그램(200)이 백업 처리를 종료하면, 제어 프로그램(200)은 정보 처리 시스템(1)의 전력 소비를 절약하기 위해 저장 장치(2A)를 전력 절약 모드로 강제로 천이시킬 수 있다. 예를 들어, 제어 프로그램은 Information technology ATA/ATAPI Command Set-3(ACS-3)에 기재된 E0h Standby Immediate 커맨드, E6h SLEEP 커맨드 등을 저장 장치(2A)에 발행할 수 있다. 예를 들어, 제어 프로그램(200)은 비휘발성 저장 장치(2A)에 대해 공급 전원을 차단할 수 있다. 예를 들어, 제어 프로그램(200)은 비휘발성 저장 장치(2A)를 Serial ATA Revision 3.1 Gold Revision에 기재된 Partial 상태나 Slumber 상태로 강제로 천이시킬 수 있다. 예를 들어, 제어 프로그램(200)은 "Serial ATA Technical Proposal: SATA31_TPR_C108 Title: Device Sleep"에 기재된 DEVSLP 신호를 활성화하여 비휘발성 저장 장치(2A)를 DevSleep 상태로 강제로 천이시킬 수 있다. 예를 들어, 제어 프로그램(200)은 비휘발성 저장 장치(2A)를 PCI Express Base Specification Revision 3.0에 기재된 D1 상태, D2 상태, 또는 D3 상태로 강제로 천이시킬 수 있다. 예를 들어, 제어 프로그램(200)은 비휘발성 저장 장치(2A)를 PCI Express Base Specification Revision 3.0에 기재된 L1 상태, L2 상태, 또는 L3 상태로 강제로 천이시킬 수도 있다.
전술한 바와 같이, 비휘발성 저장 장치(2B)에 대한 삭제 통지 처리는 비휘발성 저장 장치(2B)에 대한 기록 처리보다 고속으로 수행될 수 있다. 또한, 비휘발성 저장 장치(2B) 상에서의 기록 처리는 일반적으로 프리 블록을 소비하지만, 비휘발성 저장 장치(2B) 상에서의 삭제 통지 처리는 프리 블록을 거의 소비하지 않는다. 그렇기 때문에, 비휘발성 저장 장치(2B)의 처리 속도가 본 실시형태에 의해 개선된다. 또한, 비휘발성 저장 장치(2B)에 대한 기록 처리에 의해서는 일반적으로 NAND 메모리 블록이 소거되기 때문에, NAND 메모리의 신뢰성이 열화된다. 그러나, 비휘발성 저장 장치(2B) 상에서의 삭제 통지 처리에서는 NAND 메모리 블록의 삭제 처리가 거의 이루어지지 않기 때문에, 본 실시형태에서는 NAND 메모리의 신뢰성 열화가 저감될 수 있다.
비교예에서는, 백업 목적지 대상인 모든 LBA 영역에 대해 단계 S540의 기록 처리가 수행되기 때문에, 백업 속도가 저속이며, 비휘발성 저장 장치(2B)의 처리 속도가 저하되어, NAND 메모리(16B)의 신뢰성이 열화된다. 한편, 본 실시형태에 따른 제어툴(200)을 이용하여 백업을 할 경우, 함수 f(LBA)의 출력 데이터와 일치하는 데이터에 대해서 단계 S540가 아니라 단계 S550이 수행된다. 그렇기 때문에, 비교예의 백업 방식에 비교해서 고속으로 백업이 수행되고, 비휘발성 저장 장치(2B)의 처리 속도의 저감도 억제될 수 있으며, NAND 메모리(16B)의 신뢰성 열화도 억제될 수 있다.
본 실시형태에서는, 비휘발성 저장 장치(2B)로서 SSD가 이용되지만, 비휘발성 저장 장치(2B)로서 하드 디스크 드라이브(HDD) 등의 다른 비휘발성 저장 장치를 이용할 수도 있다. 예를 들면, 비휘발성 저장 장치(2B)로서 HDD를 이용하는 경우, 단계 S550에서, 비휘발성 저장 장치(2B)에의 기록량이 저감하여, 비휘발성 저장 장치(2B)의 신뢰성 열화가 감소한다. 그렇기 때문에, 정보 처리 장치(3)로부터 비휘발성 저장 장치(2B)에 송신되는 데이터량이 저감하고 백업 처리가 고속으로 수행된다.
본 실시형태에서는, 비휘발성 저장 장치(2A)로서 SSD를 이용하지만, HDD, 하이브리드 HDD, 휘발성 RAM 등의 다른 저장 장치를 저장 장치(2A)로서 사용할 수도 있다.
본 실시형태에서는, 비휘발성 저장 장치(2A)의 전체 LBA를 백업하는 경우에 관해서 설명하였다. 그러나, 백업 대상 LBA 영역은 전체 LBA 영역의 일부에 한정될 수도 있다.
본 실시형태에서는, 백업 소스인 비휘발성 저장 장치(2A)와 백업 목적지인 비휘발성 저장 장치(2B)로서 상이한 저장 장치를 이용한다. 그러나, 백업 소스인 비휘발성 저장 장치(2A)와 백업 목적지인 비휘발성 저장 장치(2B)가 동일한 SSD(2A=2B)일 수도 있다. 즉, 예컨대 SSD를 2개의 구획인 구획 A(시작 LBA=0)와 구획 B(시작 LBA=X)로 구획하고, 제어 프로그램(200)이 구획 A부터 구획 B까지 백업 처리를 수행할 수도 있다. 이 경우, 예를 들면, cLBA에서 시작되는 백업 소스 LBA 영역과 X+cLBA에서 시작되는 백업 목적지 LBA 영역 사이에서 백업 처리가 수행될 수 있다.
(제2 실시형태)
제1 실시형태에서는, 백업 처리의 단위로서, 고정 섹터 길이 L의 각각의 논리 구획에 대해 백업 처리가 수행되는 경우에 관해서 설명하였다. 백업 처리는 가변 길이의 각 구획에 대해 수행될 수도 있다. 예를 들어, 백업 처리의 단위로서, OS(100) 상에서 관리되는 파일 단위를 이용할 수도 있다. 도 19는 제2 실시형태에 따른 제어툴(200)의 처리예를 도시하는 플로우차트이다.
제어 프로그램(200)은 백업 소스인 비휘발성 저장 장치(2A) 내의 NAND 메모리(16A)에 저장된 OS 파일 관리 테이블(메타데이터, OS 파일 시스템)을 판독하고, 비휘발성 저장 장치(2A) 내에 저장된 전체 파일 정보를 백업 대상 리스트로서 메인 메모리(6)에 저장한다(단계 S600). 백업 대상 리스트는 비휘발성 저장 장치(2A)의 전체 파일이 아니라, 일부의 파일일 수도 있다. 제어 프로그램(200)은 백업 대상 리스트 내에서 각각의 파일의 데이터가 저장되어 있는 LBA 영역의 정보를 검색한다(단계 S605). 제어 프로그램(200)은 백업 소스인 비휘발성 저장 장치(2A)로부터 LBA 영역의 데이터를 판독한다(단계 S610). 예를 들어, 판독 커맨드로서는, 비특허문헌 1의 ACS-2에 기술되어 있는 60h READ FPDMA QUEUED 커맨드, 25h READ DMA EXT 커맨드 등이 이용된다.
단계 S610에서 판독된 데이터를 판정하기 전에, 파일의 판독 데이터는 논리 단위로 데이터(D)로 분해되는 것이 바람직하다(단계 S620). 논리 단위는 하나의 논리 섹터일 수도 있고 복수의 논리 섹터일 수도 있다. 제어 프로그램(200)은 그 파일의 각각의 논리 단위에 대해 단계 S630 내지 단계 S660을 처리한다. cLBA는 선택된 논리 단위의 포인터로서 이용되고 최초 LBA 영역의 시작 LBA이며, 단계 S660 다음에 단계 S630이 처리될 때에 인크리먼트된다. 제어 프로그램(200)은 cLBA에서 시작되는 논리 단위를 하나 선택하고(단계 S630), 데이터(D)가 f(cLBA)로부터의 출력 데이터와 일치하지의 여부를 결정한다(단계 S640) 데이터(D)가 함수 f(cLBA)로부터의 출력 함수와 일치하지 않으면, 제어 프로그램(200)은 비특허문헌 1의 ACS-2에 기술되어 있는 61h WRITE FPDMA QUEUED 커맨드, 35h WRITE DMA EXT 커맨드 등의 기록 커맨드를 이용하여, 백업 목적지인 비휘발성 저장 장치(2B)에 데이터(D)를 기록한다(단계 S645). 데이터(D)가 함수 f(LBA)로부터의 출력 데이터와 일치하면, 제어 프로그램(200)은 백업 목적지인 비휘발성 저장 장치(2B)에 기록 커맨드를 송신하지 않고, NAND 메모리(16B)에 대한 논리 단위의 매핑을 삭제하는 삭제 통지 커맨드를 송신한다(단계 S650). 삭제 통지 커맨드로서는, 예컨대 비특허문헌 1의 ACS-2에 기술되어 있는 06h DATA SET MANAGEMENT 커맨드나 SCT 커맨드, NVM Express Revision 1.1에 기술되어 있는 11h Dataset Management command의 Deallocate(AD) 등이 이용된다. 제어 프로그램(200)은 모든 논리 단위에 대해 단계 S630 내지 단계 S650의 처리를 반복한다.
제어 프로그램(200)은 백업 목적지인 비휘발성 저장 장치(2B)의 OS 파일 관리 테이블(메타데이터)을 변경해서 선택 파일의 정보를 갱신하여, 백업된 파일은 OS(6A)에서 인식될 수 있게 한다. 제어 프로그램(200)은 모든 파일의 처리의 종료 여부를 판정한다(단계 S680). 제어 프로그램(200)은 모든 파일을 종료하지 않은 경우에, 다음 파일을 선택하고, 선택 파일의 LBA 정보를 취득하며(단계 S690), 처리를 단계 S610으로 이행시킨다. 제어 프로그램(200)은 모든 파일을 종료한 경우에, 처리를 종료한다. 본 실시형태에서는, 비휘발성 저장 장치(2A)의 전체 파일이 백업되는 경우에 관해서 설명하였지만, 백업 대상 파일을 전체 파일 중 일부의 파일에 한정할 수도 있다.
이와 같이, 제2 실시형태에서는, 백업 소스의 데이터가 판독되고, 기록이 가변 데이터 사이즈의 파일 단위로 이루어진다. 본 실시형태에서는, 파일 데이터가 저장되지 않은 LBA 영역에 대해서는 판독, 기록, 삭제 통지의 처리가 스킵될 수 있다. 따라서, 백업 처리가 고속으로 수행될 수 있다.
(제3 실시형태)
제1 및 제2 실시형태에서는, 제어 프로그램(200) 내의 함수 f(LBA)를 이용하여 백업 처리가 수행된다. 백업 후의 데이터가 판독될 때에, 백업 목적지인 비휘발성 저장 장치(2B)의 SSDC(41B)는 NAND 메모리(16B) 내의 함수 f(LBA)를 연산하여 판독될 LBA 영역의 데이터를 복원하고 복원된 데이터를 정보 처리 장치(3)에 송신한다.
제3 실시형태에서는, 제어 프로그램(200)의 설계시, 제품 설계시에, 공장 출하전, 또는 공장 출하후에, 함수 f(LBA)를 구현하는 방법에 관해서 설명한다. 특히, SSD에 인스톨되는 OS나 시스템 구성이 결정될 때에, 이들 시스템에 대한 최적의 함수 f(LBA)가 제어 프로그램(200)의 설계시에, 제품 설계시에, 또는 공장 출하전에 구성되는 것이 바람직하다. 함수 f(LBA)는, 예를 들면, LBA를 데이터에 매핑시키는 테이블 데이터로서 저장 장치(2B)의 SSDC(41B), NAND 메모리(16B), 또는 RAM(40B)나, 정보 처리 장치(3)의 메인 메모리(6)에 저장될 수 있다. 예컨대 함수 f(LBA)는 저장 장치(2B)의 SSDC(41B), NAND 메모리(16B), 또는 RAM(40B)나, 정보 처리 장치(3)의 메인 메모리(6)에서 함수 f(LBA)를 알고리즘으로서 구현하여 실현된 소프트웨어 데이터나 펌웨어 데이터로서 구현될 수 있다. 예컨대, 함수 f(LBA)는 함수 f(LBA)를 알고리즘으로서 이용하여 전자 회로로서 저장 장치(2B)의 SSDC(41B) 상에 임베디드될 수 있다.
한편, 예를 들어, 함수 f(LBA)로부터의 출력 데이터는 비휘발성 저장 장치(2B) 내의 트림 데이터 저장 유닛인 저장 유닛에 함수 f(LBA)의 정보로서 저장될 수 있다. 트림 데이터 저장 유닛은 NAND형 플래시 메모리 및 RAM일 수 있다. 이 경우에, SSDC(41B)가 정보 처리 장치(3)로부터 삭제 통지를 수신할 경우, SSDC(41B)는 삭제 통지에 의해 지정된 LBA 영역의, NAND 메모리(16B)에 대한 매핑을 삭제하도록 관리 정보(46B)를 변경하고, SSDC(41B)는 LBA 영역을 트림 데이터 저장 유닛에 매핑하도록 관리 정보(46B)를 변경한다. 정보 처리 장치가 LBA 영역으로부터 데이터를 판독하는 판독 커맨드를 비휘발성 저장 장치(2B)에 보낼 경우, SSDC(41B)는 LBA 영역으로부터 매핑된 트림 저장 유닛으로부터 데이터를 판독하고, 판독 데이터를 정보 처리 장치(3)에 보낸다.
함수 f(LBA)가 저장 장치(2B)의 NAND 메모리(16B)와 정보 처리 장치(3)의 메인 메모리(6)의 제어 프로그램(200) 내에 저장되는 경우, 제어 프로그램(200) 내의 함수 f(LBA)는 비휘발성 저장 장치(2B) 내의 함수 f(LBA)와 같아야 한다. 예를 들면, 제어 프로그램(200)과 비휘발성 저장 장치(2B)는 동일한 함수 f(LBA)를 이용하여 개별적으로 설계될 수도 있다. 한편, 예컨대, 함수 f(LBA)의 최신 정보가 비휘발성 저장 장치(2B)에만 저장될 수도 있다. 이 경우에, 제어 프로그램(200)은 비휘발성 저장 장치(2B)로부터 함수 f(LBA)의 정보를 메인 메모리96)에 로드한다. 최초 함수 f(LBA) 또는 이전 함수 f(LBA)가 메인 메모리(6)에 저장되어 있는 경우, 제어 프로그램(200)은 로드된 함수 f(LBA)를 이용하여 메인 메모리(6)에서 최초 또는 이전 함수 f(LBA)를 덮어쓴다. 반면, SSDC(41B)는 제어 프로그램(200)으로부터의 함수 f(LBA)의 정보를 NAND형 플래시 메모리(16B) 또는 RAM(40B)에 로드하고 이전 함수 f(LBA)를 로드된 함수 f(LBA)로 덮어쓸 수 있다.
도 20은 논리 어드레스 및 데이터의 일례를 도시하는 도면이다. SSD의 논리 어드레스 영역은 논리 어드레스(LBA)를 이용하여 정보 처리 장치(3)에 의해 지정된다. 논리 어드레스에 있어서 1 논리 섹터가 최소 관리 단위이고, 1 논리 섹터는 예컨대 512 바이트이다. 도 20에서는, 각 섹터에 대하여 논리 어드레스 (0000h, 0001h, 0002h, ..., ba02h, ...)가 할당된다. 숫자의 말미의 h는 이 숫자가 16진수인 것을 표시한다.
도 20의 예에서는, 최종 사용자가 백업할 수 있는 전형적인 사용자 데이터 모델을 상정하여(시뮬레이트하여) 함수 f(LBA)를 구성한다. 비휘발성 저장 장치(2B) 및 제어 프로그램(200)의 설계자는 비휘발성 저장 장치(2B) 및 제어 프로그램(200)을 설계할 때에 전형적인 사용자 환경에서 전형적인 사용자 데이터를 재현한 모델에 기초해 전체 논리 어드레스의 데이터를 분석하고 그 논리 어드레스의 데이터를 0-fill 섹터와 비교함으로써, 도 21에 도시하는 0-fill 섹터의 존재 확률 분포(히스토그램)를 산출할 수 있다. 비교시에, 0-fill 섹터와 일치하는 섹터의 총 카운트를 전체 논리 어드레스 영역의 총 용량으로 나누어 정확한 0-fill 섹터의 비율을 산출할 수 있다. "함수 f(LBA)=000... 0h(고정치, 0은 512 바이트씩 반복)"이 구성될 때, 백업시에 최대로 0-fill 섹터가 되는 논리 섹터의 총 섹터 카운트의 LBA 영역을 매핑 해제함으로써 프리 블록을 절약할 수 있다. 이 경우, 함수 f(LBA)의 정보는, 예를 들면, 512 바이트의 데이터 000... 0h로서, 전체 LBA를 512 바이트의 데이터 000... 0h에 매핑시키는 테이블 데이터로서, 또는 전체 LBA에 대하여 512 바이트의 데이터 000...0h를 생성하는 알고리즘으로서 실현된 소프트웨어 데이터나 펌웨어 데이터로서, 저장 장치(2B)의 SSDC(41B), NAND 메모리(16B)나, RAM(40B), 또는 정보 처리 장치(3)의 메인 메모리(6)에 저장된다.
도 22는 함수 f(LBA)가 일정한 고정치를 출력하지 않는 예를 도시하는 도면이다. 소정의 데이터 패턴이 소정의 논리 어드레스 영역에서 빈번하게 사용되고 또 다른 데이터 패턴은 다른 소정의 논리 어드레스 영역에서 빈번하게 사용되는 경우와 같이, 어떤 경우에는 빈번하게 사용되는 통상의 데이터 패턴이 논리 어드레스 영역에 따라 달라질 수 있다. 도 22에 도시하는 바와 같이, 논리 어드레스 영역의 전반에는 0-fill 데이터가 빈번하게 사용되고, 논리 어드레스 영역의 후반에는 1-fill 데이터(전체 비트가 "1"인 데이터, 16진수로 나타내면 Fh로 채워진 데이터)가 빈번하게 사용되는 경우를 생각한다. 0-fill 섹터의 존재 확률 분포 및 1-fill 섹터의 존재 확률 분포는 도 23에 도시하는 바와 같다. 이 경우, "함수 f(LBA)=000...0h(고정치)" 및 "함수 f(LBA)=fff...fh(고정치)"보다는, "함수 f(LBA)=000...0h(여기서, LBA≤c000h)" 및 "f(LBA)=fff...fh(여기서, LBA>c000h)"와 같이, 함수 f(LBA)가 2개의 논리 어드레스 영역에 상이한 값을 출력하는 것이 바람직하다. 그 결과, 백업후에 프리 블록의 수가 절약된다. 이 경우, 함수 f(LBA)는 예를 들면, c000h 미만의 LBA를 512 바이트의 데이터 000...0h에 매핑하고, c001h 이상의 LBA를 데이터 fff...fh에 매핑하는 테이블 데이터로서, 저장 장치(2B)의 SSDC(41B), NAND 메모리(16B)나 RAM(40B), 또는 정보 처리 장치(3)의 메인 메모리(6)에 저장된다. 함수 f(LBA)는, c000h 미만의 LBA에 대하여 512 바이트의 데이터 000...0h를 생성하고, c0001h 이상의 LBA에 대하여 512 바이트의 데이터 fff...fh를 생성하는 알고리즘으로서 실현하는 소프트웨어 데이터나 펌웨어 데이터로서, 저장 장치(2B)의 SSDC(41B), NAND 메모리(16B)나 RAM(40B), 또는 정보 처리 장치(3)의 메인 메모리(6)에 저장될 수 있다.
도 24는 3개의 논리 어드레스 영역에서 빈전하게 사용되는 데이터가 상이한 경우를 도시하는 도면이다. 도 25는 0-fill 섹터의 존재 확률 분포, 320a-fill 섹터(반복하는 320a 데이터로 채워진 1 섹터 길이의 데이터)의 존재 확률 분포, 및 1-fill 섹터의 존재 확률 분포를 도시하고 있다. 이 경우, 예를 들어 "함수 f(LBA)=000...0h(여기서, LBA≤7fffh), 함수 f(LBA)=320a320a...320ah(여기서, 8000h≤LBA≤c000h), 및 함수 f(LBA)=fff...fh(여기서, LBA≥c001h)"에서와 같이, 함수 f(LBA)는 3개의 논리 어드레스 영역에서 상이한 값을 갖도록 구성되는 것이 바람직하다. 그 결과, 백업후의 프리 블록수가 절약된다. 이 경우, 함수 f(LBA)는, 예를 들면, "LBA≤7fffh"의 범위의 LBA를 512 바이트의 데이터 000...0h에 매핑하고, "8000h≤LBA≤c000h"의 범위의 LBA를 512 바이트의 데이터 320a320a...320ah에 매핑하며, "LBA≥c001h"의 범위의 LBA를 512 바이트의 데이터 fff...fh에 매핑하는 테이블 데이터로서, 저장 장치(2B)의 SSDC(41B), NAND 메모리(16B)나 RAM(40B), 또는 정보 처리 장치(3)의 메인 메모리(6)에 저장된다. 함수 f(LBA)는, "LBA≤7fffhc"의 범위의 LBA에 대해 512 바이트의 데이터 000... 0h를 생성하고, "8000h≤LBA≤c000h"의 범위의 LBA에 대해 512 바이트의 데이터 320a320a...320ah를 생성하며, "LBA≥c001h"의 범위의 LBA에 대해 512 바이트의 데이터 fff...fh를 생성하는 알고리즘, 소프트웨어 데이터나 펌웨어 데이터로서, 저장 장치(2B)의 SSDC(41B), NAND 메모리(16B)나 RAM(40B), 또는 정보 처리 장치(3)의 메인 메모리(6)에 저장될 수 있다.
함수 f(LBA)는 논리 어드레스 영역을 사이즈 L마다 분할하여 얻은 각 관리 단위에 상이한 값을 갖도록 구성될 수도 있다. 사이즈 L은 LBA의 최소 단위 이상인 것이 바람직하다. 함수 f(LBA)는 관리 단위 내에는 고정 데이터를 출력하지만, 상이한 관리 단위 사이에는 상이한 데이터를 출력할 수도 있다. 예를 들어, 함수 f(LBA)는 첫 번째 영역의 관리 단위에는 D0(고정치)를, 두 번째 영역의 관리 단위에는 D1(고정치)를, ..., 출력한다. 이 경우에, 함수 f(LBA)는 다음과 같이 표현된다.
"f(LBA)=D0(여기서, 0≤LBA≤L-1, f(LBA)=D1(여기서, L≤LBA≤2L-1), f(LBA)=D2(여기서, 2L≤LBA≤3L-1), ..., Dk(여기서, kL≤LBA≤(k+1) L-1), ... ."
Dk(여기서, k=0,1,...)는 8d892a8fd91423...987ah 및 0123456789abcdef0123...defh 등의 사이즈 L의 임의의 데이터 패턴일 수 있다. 이 경우, 함수 f(LBA)는, 예컨대 "kL≤LBA≤(k+1)L-1"의 범위의 LBA를 k=0,1,...마다 512 바이트의 데이터(Dk)에 매핑하는 테이블 데이터로서, 저장 장치(2B)의 SSDC(41B), NAND 메모리(16B)나 RAM(40B), 또는 정보 처리 장치(3)의 메인 메모리(6)에 저장될 수 있다. 한편, 함수 f(LBA)는, 예컨대 "kL≤LBA≤(k+1)L-1"의 범위의 LBA에 대하여 k=0,1,..., 마다 512 바이트의 데이터(Dk)를 생성하는 알고리즘, 소프트웨어 데이터나 펌웨어 데이터로서, 저장 장치(2B)의 SSDC(41B), NAND 메모리(16B)나, RAM(40B), 또는 정보 처리 장치(3)의 메인 메모리(6)에 저장될 수 있다.
Dk는 k=0,1,...마다 임의대로 구성될 수 있다. 최적의 Dk를 선택함으로써 최적의 함수 f(LBA)가 구성되는 것이 바람직하다. 예를 들어, 비휘발성 저장 장치(2B) 및 제어 프로그램(200)의 설계자는 Dk의 각종 후보에 대한 점수에 기초하여 최상의 최적 함수 f(LBA)를 선택할 수 있다. 이 점수는 최종 사용자가 백업을 수행할 수 있는 전형적인 사용자 데이터 모델에 적용된 다음의 방법에 의해 산출된다.
(1) 설계자가 모델의 각 섹터의 데이터(또는 모델의 다수의 섹터의 데이터 또는 모델의 각 관리 단위의 데이터)를 판독한다.
(2) (1)에서 판독된 데이터가 함수 f(LBA)로부터의 출력 데이터와 일치하는지 판정하고(섹터의 정수배마다 데이터를 판독하는 경우), 설계자는 그 데이터 내의 전체 섹터가 함수 f(LBA)로부터의 출력 데이터와 일치하는지의 여부를 판정한다.
(3) 데이터가 함수 f(LBA)로부터의 출력 데이터와 일치하는 경우, 설계자는 함수 f(LBA)의 점수를 1점 인크리먼트한다. 데이터가 함수 f(LBA)로부터의 출력 데이터와 일치하지 않는 경우, 설계자는 함수 f(LBA)의 점수를 인크리먼트하지 않는다.
(4) 설계자는 SSD의 전체 논리 어드레스 영역에 대하여 점수를 계산하고, 그 점수가 산출된다(또는 대표적으로 논리 어드레스 영역 중 일부만 채점될 수 있다).
이어서, 설계자는 최적의 Dk로서 최고 점수를 가진 최상의 Dk를 선택하고 그 Dk를 이용하여 최적의 함수 f(LBA)가 구성된다. 예컨대, "L=128 MiB(여기서, MiB=1,048,576 바이트)"이면, SSD의 전체 논리 어드레스 영역은 LBA=0부터 균등하게 128 MiB 길이로 구획되고, 설계자는 각각의 구획을 판독하여, 각각의 구획의 데이터가 함수 f(LBA)로부터의 출력 데이터와 일치하는지의 여부를 판정한다. 데이터가 함수 f(LBA)와 일치할 경우, 설계자는 f(LBA)의 점수를 인크리먼트한다. 예를 들어, 설계자는 "(D0, D1,...)=(0000...h, 0000...h, ...), (ffff...h, ffff...h, ...), (ffff...h, 0000...h, ...), (0000...h, ffff...h, ...) 등의 Dk 어레이의 복수의 후보의 점수를 산출하고, 최고의 점수를 갖는 최상의 후보를 최적의 (D0, D1,...)로서 선정하여, 최적의 (D0, D1,...)를 갖는 최상의 함수 f(LBA)를 구성할 수 있다. 최적의 함수 f(LBA)의 정보로서 최적의 Dk 어레이(여기서, k=0,1,...)는 SSDC(41B)나 RAM(40B) 또는 NAND 메모리(16B)에 저장되는 것이 바람직하다. 최적의 Dk 어레이(여기서, k=0,1,...)는 제어 프로그램(200)에 비휘발적으로 저장되지 않고, 필요하다면 제어 프로그램(200)이 비휘발성 저장 장치(2B)로부터 Dk 어레이를 판독하여 메인 메모리(6)에 출력할 수 있다. 최적의 Dk 어레이를 판독하는 데에는, 예컨대 비특허문헌 1의 ACS-2에 기술되어 있는 ECh IDENTIFY DEVICE 커맨드를 이용할 수 있고, SSDC(41B)는 Vendor Specific 필드에 할당된 Word129 필드에 최적의 Dk 어레이가 저장되어 있는 IDENTIFY DEVICE 데이터를 출력할 수 있다.
논리 어드레스 영역을 가변 길이로 분할하여 구획을 얻어 그 구획을 관리 단위로서 이용할 수 있다. 이 경우의 함수 f(LBA)는 다음과 같이 표현된다.
"f(LBA)=D0(여기서, L0=0≤LBA≤L1-1), f(LBA)=D1(여기서, L1≤LBA≤L2-1), f(LBA)=D2(여기서, L2≤LBA≤L3-1),..., Dk(Lk≤LBA≤L(k+1)-1),... ."
Dk(k=0,1,...)는 사이즈가 L인 임의의 데이터 패턴이다. "L0<L1<L2<... Lk<..."이 만족된다. 이 경우, 함수 f(LBA)는, Lk≤LBA≤L(k+1)-1의 범위의 LBA을 k=0,1,...,마다 512 바이트의 데이터(Dk)에 매핑하는 테이블 데이터로서, 저장 장치(2B)의 SSDC(41B), NAND 메모리(16B)나, RAM(40B), 또는 정보 처리 장치(3)의 메인 메모리(6)에 저장된다. 한편, 함수 f(LBA)는, 예컨대 Lk≤LBA≤L(k+1)-1의 범위의 LBA에 대해 k=0,1,...,마다 512 바이트의 데이터(Dk)를 생성하는 알고리즘, 소프트웨어 데이터나 펌웨어 데이터로서, 저장 장치(2B)의 SSDC(41B), NAND 메모리(16B)나, RAM(40B), 또는 정보 처리 장치(3)의 메인 메모리(6)에 저장된다.
도 26은 고정 데이터로 채워진 논리 데이터가 적기 때문에 함수 f(LBA)가 충분히 최적화될 수 없는 경우를 도시하고 있다. 이 경우에는, 논리 어드레스 영역을 고정 길이 또는 가변 길이로 분할하여 얻은 구획에 고정 데이터를 출력하는 함수가 최적의 함수일 수 없다. 이 경우에, 데이터와 LBA는 상관 관계를 갖고 있고, 설계자는 보다 일반적인 함수 f(LBA)의 후보 중에서 최적의 함수 f(LBA)를 선택하는 것이 바람직하다. 예컨대, 설계자는 복수의 함수 f(LBA)의 후보를 미리 준비하여, 전형적인 최종 사용자가 백업하는 전형적인 사용자 데이터 모델에 적용된 각각의 후보의 점수를 산출하며, 최고의 점수를 가진 함수 f(LBA)를 최적의 f(LBA)로서 선택한다. 이 경우에, 도 27에 도시하는 바와 같이, 데이터와 LBA가 일정한 상관을 갖는논리 섹터는 최적의 함수 f(LBA)를 이용한 백업 처리에 의해 매핑 해제된다.
예컨대, 설계자는 a 및 b의 상이한 값을 갖는 "함수 f(LBA)=a×LBA+b"에 의해 정의된 후보를 구성할 수 있다. 설계자는 최종 사용자가 백업을 하는 일반적인 사용자 데이터 모델에 기초하여 각각의 파라미터 세트 (a, b)의 점수를 계산하고, 후보 중에서 최고의 점수를 가진 최상의 (a, b)를 선택하며, 그 최상의 (a, b)로 최적의 함수 f(LBA)를 구성한다. 도 28은 최적의 함수 f(LBA)를 선택하는 방법을 도시하는 도면이다. 도 28은 파라미터 b가 각각 b1, b2 및 b3이고 파라미터 a가 a0 등의 임의 값을 갖는 후보를 도시하고 있다. 이 경우에, "(a, b)=(a0, b2)"의 점수가 가장 높다. 따라서, 설계자는 "함수 f(LBA)=a0×LBA+b2"를 최적의 후보로서 선택할 수 있다. 예컨대, 함수 f(LBA)는, 함수 f(LBA)가 실현되는 알고리즘, 소프트웨어 데이터나 펌웨어 데이터로서, 저장 장치(2B)의 SSDC(41B), NAND 메모리(16B)나, RAM(40B), 또는 정보 처리 장치(3)의 메인 메모리(6)에 저장될 수 있다.
ACS-2에 기술되어 있는 48 비트 Address feature set가 SSDC(41B)에 의해 지원되는 경우, 함수 f(LBA)는, LBA가 "LBA=(d0, d1, d2,..., d47)t"(여기서, t는 전치 기호) 등의 48열의 벡터 어레이이고, A가 512×48의 행렬 어레이이며, b가 4096열(여기서, 1 섹터=512 바이트=4096 비트)의 벡터 어레이인 "함수 f(LBA)=A×LBA+b"와 같이 행렬 연산으로 구성되어, 함수 f(LBA)로부터의 출력 데이터가 4096열의 벡터 포맷으로 산출될 수 있다. 이 경우, 예컨대 벡터 f(LBA)로부터의 출력 벡터 어레이의 제1 요소가 출력 데이터의 제1 비트를, 그것의 제2 요소가 출력 데이터의 제2 비트를, 등을 나타낼 수 있다. 보다 일반적으로, LBA가 n 비트를 포함할 경우, 함수 f(LBA)는, LAB가 "LBA=(d0, d1, d2,..., dn-1)t" 등의 n열의 벡터 어레이이고, A가 n×m의 행렬 어레이이며, b가 m열의 벡터 어레이인 "함수 f(LBA)=A×LBA+b" 등의 행렬 연산으로 구성될 수도 있다. 이 경우, 함수 f(LBA)는, 예컨대 행렬 A 어레이와 벡터 b 어레이를 포함하는 어레이 데이터로서 저장 장치(2B)의 SSDC(41B), NAND 메모리(16B)나, RAM(40B), 또는 정보 처리 장치(3)의 메인 메모리(6)에 저장될 수 있다. 함수 f(LBA)는 알고리즘, 소프트웨어 데이터나 펌웨어 데이터로서, 저장 장치(2B)의 SSDC(41B), NAND 메모리(16B)나, RAM(40B), 또는 정보 처리 장치(3)의 메인 메모리(6)에 저장될 수 있다.
본 실시형태에서는, 함수 f(LBA)로부터의 출력 데이터가 독립 변수로서 LBA에만 종속되는 경우 또는 함수 f(LBA)로부터의 출력 데이터가 LBA에 종속되지 않는 고정 데이터인 경우에 관해 설명하였다. 그러나, 함수 f는 LBA 이외의 변수에 종속될 수도 있다. 예를 들면, LBA와, SSDC(41B)에 의해 지정되는 파라미터 X의 2개의 독립 변수를 갖도록 함수 f(LBA, X)가 구성될 수 있고, 또는 LBA와, 정보 처리 장치(3)에 의해 지정되는 파라미터 Y의 2개의 독립 변수를 갖도록 함수 f(LBA, Y)가 구성될 수도 있다.
(제4 실시형태)
함수 f(LBA)로부터의 출력이 LBA에 종속되지 않는 고정 데이터(=Q)인 경우, 데이터(Q)는 백업 목적지인 비휘발성 저장 장치(2B)의 NAND 메모리(16B), SSDC(41B)나, RAM(40B)에만 저장될 수 있고, 제어 프로그램(200)에는 저장될 수 없다. 제4 실시형태에 있어서, 제어 프로그램(200)은 도 18의 단계 S530나 도 19의 단계 S640에서, 판독 데이터를 "f(LBA)=Q"와 비교하기 전에 비휘발성 저장 장치(2B)로부터 고정 데이터(Q)를 취득한다. 비휘발성 저장 장치(2B)로부터 고정 데이터(Q)를 취득하는 방법으로서, 예를 들면 비특허문헌 1의 ACS-2에 기술되어 있는 ECh IDENTIFY DEVICE 커맨드를 이용할 수 있다. 예를 들면, 데이터(Q)는 ECh IDENTIFY DEVICE 커맨드의 Identify Device 출력 데이터에서 Vendor Specific 필드로서 할당되어 있는 Word129의 데이터(R)로부터 산출될 수 있다. 이 경우, Word129의 데이터(R)는 2 바이트 길이이고, 제어 프로그램(200)은 이하와 같이 256번 반복되는 데이터(R)로 채워진 512 바이트 길이의 Q를 생성한다.
Q=RRRR...R (R은 연속으로 256회 반복)
함수 f(LBA)의 정보인 데이터(R)가 예컨대 저장 장치(2B)의 SSDC(41B), NAND 메모리(16B)나, RAM(40B)에 저장된다. 제어 프로그램(200)은 저장 매체(2B)로부터 데이터(R)를 취득하면, 데이터(R)를 정보 처리 장치(3)의 메인 메모리(6)에 저장할 수 있다.
도 29는 제4 실시형태에 따른 처리예를 도시하는 플로우차트이다. 제어 프로그램(200)은 함수 f(LBA)의 정보를 취득하기 위한 ECh IDENTIFY DEVICE 커맨드를 비휘발성 저장 장치(2B)에 발행하여, 비휘발성 저장 장치(2B)로부터 Word129의 데이터(R)를 취득한다(단계 S700). 그리고, 제어 프로그램(200)은 연속 반복되는 데이터(R)로 메인 메모리(6) 내의 512 바이트 길이의 영역을 채움으로써 데이터(Q)를 생성한다(단계 S710).
제어 프로그램(200)은 데이터 복사 대상 LBA 영역의 포인터인 cLBA를 제로로 치환환다(단계 S720). 제어 프로그램(200)은 L 길이의 cLBA에서 시작되는 LBA 영역으로부터 데이터를 판독하는 커맨드를 비휘발성 저장 장치(2A)에 송신한다(단계 S730). 판독 커맨드를 수신한 비휘발성 저장 장치(2A)는 그 LBA 영역의 데이터(D)를 정보 처리 장치(3)에 송신하고, 정보 처리 장치(3)는 데이터(D)를 수신한다(단계 S740). 제어 프로그램(200)은 데이터(D)를 고정 데이터(Q)와 비교한다(단계 S750). 처리는, 데이터(D)가 고정 데이터(Q)와 일치하지 않는 경우(단계 S750: No)와 데이터(D)가 고정 데이터와 일치하는 경우(단계 S750: Yes)의 상이한 단계로 분기된다.
D가 Q와 일치하지 않는 경우(단계 S750: No), 제어 프로그램(200)은 비휘발성 저장 장치(2B)에 대하여, L 길이의 cLBA에서 시작되는 LBA 영역에 데이터(D)를 기록하는 커맨드를 송신한다. 제어 프로그램(200)은 비휘발성 저장 장치(2B)에 데이터(D)를 송신하고, SSDC(41B)는 데이터(D)를 NAND 메모리(16B)에 기록한다(단계 S760).
D가 Q와 일치하는 경우(단계 S750: Yes), 제어 프로그램(200)은 비휘발성 저장 장치(2B)에 대하여, L 길이의 cLBA에서 시작되는 LBA 영역의 NAND 메모리(16B)에 대한 매핑을 삭제하는 삭제 통지를 송신한다. SSDC(41B)는 매핑을 삭제하도록 관리 정보(46B)를 변경하고, 데이터(D)는 디바이스-무효 데이터가 된다(단계 S770).
단계 S760 또는 단계 S770이 완료되면, 제어 프로그램(200)은 cLBA를 L씩 인크리먼트하고(단계 S780), 비휘발성 저장 장치(2A)의 전체 LBA 영역의 데이터가 백업될 때까지(단계 S790: Yes), 단계 S730 내지 단계 S780의 처리를 반복 실행한다.
도 30은 제4 실시형태에 따른 다른 처리예를 도시하는 플로우차트이다. 도 30의 처리예에서는, 각 cLBA마다 백업 목적지인 비휘발성 저장 장치(2B)에 대하여, 예컨대 Identify Device 커맨드가 발행되어 데이터(Q)를 생성한다.
제어 프로그램(200)은 데이터 복사 대상 LBA의 포인터인 cLBA를 제로로 치환한다(단계 S800). 제어 프로그램(200)은 함수 f(LBA)의 정보를 취득하는 커맨드로서 예를 들면 ECh IDENTIFY DEVICE 커맨드를 비휘발성 저장 장치(2B)에 발행하여, 비휘발성 저장 장치(2B)로부터 Word129의 데이터(R)를 취득한다(단계 S810). 그리고, 제어 프로그램(200)은 연속 반복하는 데이터(R)로 메인 메모리(6) 내의 512 바이트 길이의 영역을 채움으로써 데이터(Q)를 생성한다(단계 S820).
제어 프로그램(200)은 L 길이의 cLBA에서 시작되는 LBA 영역으로부터 데이터를 판독하는 커맨드를 비휘발성 저장 장치(2A)에 송신한다(단계 S830). 판독 커맨드를 수신한 비휘발성 저장 장치(2A)는 그 LBA 영역의 판독 데이터(D)를 정보 처리 장치(3)에 송신하고, 정보 처리 장치(3)는 데이터(D)를 수신한다(단계 S840). 제어 프로그램(200)은 데이터(D)를 고정 데이터(Q)와 비교한다(단계 S850). 처리는, 데이터(D)가 고정 데이터(Q)와 일치하지 않는 경우(단계 S850: No)와, 데이터(D)가 고정 데이터(Q)와 일치하는 경우(단계 S850: Yes)의 상이한 단계로 분기된다.
D가 Q와 일치하지 않는 경우(단계 S850: No), 제어 프로그램(200)은 비휘발성 저장 장치(2B)에 대하여, L 길이의 cLBA에서 시작되는 LBA 영역에 데이터(D)를 기록하는 커맨드를 송신한다. 제어 프로그램(200)은 비휘발성 저장 장치(2B)에 데이터(D)를 송신하고, 비휘발성 저장 장치(2B)의 메모리 컨트롤러인 SSDC(41B)는 NAND 메모리(16B)에 데이터(D)를 기록한다(단계 S860).
D가 Q와 일치하는 경우(단계 S850: Yes), 제어 프로그램(200)은 비휘발성 저장 장치(2B)에 대하여, L 길이의 cLBA에서 시작되는 LBA 영역의 NAND 메모리(16B)에 대한 매핑을 삭제하는 삭제 통지를 송신한다. SSDC(41B)는 매핑을 삭제하도록 관리 정보(46B)를 변경하고, 데이터(D)는 디바이스-무효 데이터가 된다(단계 S870).
단계 S860 또는 단계 S870이 완료되면, 제어 프로그램(200)은 cLBA를 L씩 인크리먼트하고(단계 S880), 비휘발성 저장 장치(2A)의 전체 LBA 영역의 데이터가 판독될 때까지(단계 S890: Yes), 단계 S810 내지 단계 S880의 처리를 반복 실행한다.
본 실시형태는 f(LBA)가 LBA와 독립된 고정 데이터를 출력하는 것이 아니라 LBA에 종속된 상이한 데이터를 출력하는 경우에도 적용될 수 있다. 이 경우에, 함수 f(LBA)의 정보를 취득하기 위한 입력 파라미터 LBA를 갖는 커맨드가 단계 810에서 발행될 수 있다. 예를 들면, 제어 프로그램(200)은 단계 S810에서 비휘발성 저장 장치(2B)로부터 R=f(LBA)를 취득할 수 있고, 제어 프로그램(200)은 단계 S820에서 LBA에 종속된 데이터(Q)를 생성한다. 예를 들어, 그 커맨드로서, ACS-2에 기술된 SCT 커맨드를 사용하여, 제어 프로그램(200)은 대상 LBA를 포함하는 기록 데이터를 갖는 SCT command transfer를 위해 B0h/D6h SMART WRITE LOG 커맨드, 3Fh WRITE LOG EXT 커맨드, 또는 57h WRITE LOG DMA EXT 커맨드를 저장 장치(2B)에 송신하고, SCT data transfer를 위해 B0h/D5h SMART READ LOG 커맨드, 2Fh READ LOG EXT 커맨드, 또는 47h READ LOG DMA EXT 커맨드를 저장 장치(2B)에 송신하며, 저장 장치(2B)로부터 수신되는 판독 데이터로부터 데이터 "R=f(LBA)"를 수신한다.
이와 같이, 본 실시형태에서는, 정보 처리 시스템(1)이 백업 목적지인 비휘발성 저장 장치(2B)에서 함수 f(LBA)의 정보를 통합 관리할 수 있고, 그 정보는 제어 프로그램(200)에서 독립적으로 관리될 필요가 없다. 그렇기 때문에, 정보 처리 시스템(1)의 관리 및 개발이 간단해진다.
(제5 실시형태)
도 31에 도시하는 바와 같이, 백업 목적지인 비휘발성 저장 장치(2B)로서 네트워크 스토리지 드라이브 또는 클라우드 스토리지를 이용할 수도 있다. 예를 들면, 정보 처리 장치(3)와 클라우드 스토리지(2B)는 인터넷이나 인트라넷 등의 네트워크를 통해 서로 접속된다. 제어 소프트웨어(200)는 네트워크를 통해 클라우드 스토리지(2B)에 삭제 통지 커맨드 및 기록 커맨드를 송신함으로써, 본 실시형태에 따른 백업 처리를 수행할 수 있다. 대량의 데이터 전송을 수반하는 기록 커맨드에 비해 삭제 통지 커맨드의 데이터 전송량은 소량이기 때문에, 백업 처리가 고속으로 수행될 수 있고, 기록에 의한 클라우드 스토리지(2B)의 신뢰성 열화를 억제할 수 있다. 또한, 클라우드 스토리지(2B)의 저장 매체로서 SSD를 이용할 경우, 클라우드 스토리지(2B)의 프리 블록수 저감을 억제할 수 있다.
(제6 실시형태)
제1 및 제2 실시형태에서는, 백업 소스로서 저장 장치(2A)를 이용하는 경우에 관해서 설명하였다. 제6 실시형태에서는, 메인 메모리(6)가 데이터 복사 소스로서 역할한다. 즉, 이 제6 실시형태에 있어서, 애플리케이션 프로그램(400)은 메인 메모리(6)에 일시적으로 저장되어 있는 애플리케이션 프로그램 데이터(500)를 비휘발성 저장 장치(2B)에 복사한다. 애플리케이션 프로그램 데이터(500)는, 애플리케이션 프로그램 또는 OS(100)가 실행되는 동안에, 메인 메모리(6) 내의 애플리케이션 프로그램 데이터 영역(6E)에 저장된다. 본 실시형태에서는, 예를 들어, 제2 실시형태에서 설명한 방법을, 애플리케이션 프로그램 데이터(500)를 영역(6E)에 저장하는데 이용한다. 본 실시형태에서는 저장 장치(2A)가 필요 없다.
메인 메모리(6)로서는, 예를 들면 DRAM(Dynamic Random Access Memory)와 SRAM(Static Random Access Memory) 등의 휘발성 메모리, 또는 MRAM(Magnetoresistive Random Access Memory)와 ReRAM(Resistance Random Access Memory) 등의 비휘발성 메모리가 사용된다.
도 32는 제6 실시형태에 따른 정보 처리 시스템(1)의 구성을 도시하는 도면이다. 본 실시형태에서는, 예컨대 제어툴(200)이 OS(100)에 인베디드되어 있다. 그러나, OS(100)와 제어툴(200)은 메인 메모리(6) 내의 영역(6A)과는 다른 영역에 저장될 수도 있다. 애플리케이션 프로그램(400)은 Microsoft Word(등록상표)나 Microsoft Power Point(등록상표) 등의 일반적인 애플리케이션 프로그램(400)으로서, 메인 메모리(6)의 영역(6D)에 저장된다. 애플리케이션 프로그램(400)은 정보 처리 장치(3)에 의해 실행되는 프로그램이다. 예를 들어, 정보 처리 장치(3)가 기동 상태일 때, 애플리케이션 프로그램(400)은 비휘발성 저장 장치로부터 메인 메모리(6) 내의 영역(6D)에 로드된다. 정보 처리 장치(3)는 CPU(4)의 제어 하에 하드웨어 리소스와 협업하여 애플리케이션 프로그램(400)의 처리를 수행한다. 애플리케이션 프로그램(400)은 메인 메모리(6) 내의 영역(6E)을 작업 영역으로서 사용한다. 예를 들어, 사용자가 디스플레이(9)와 마우스(15)를 통해 애플리케이션 프로그램(400)의 GUI 상에서 "SAVE" 버튼을 누르거나, 애플리케이션 프로그램(400)의 자동 세이브 기능이 호출되면, 도 33에 도시하는 바와 같이, 애플리케이션 프로그램(400)은 영역(6E)의 애플리케이션 데이터(500)를 저장 장치(2B)에 저장하도록 OS(100)에 커맨드를 송신하고, 이에 OS(100)는 영역(6E)의 데이터를 저장 장치(2B)에 백업한다.
도 34는 제6 실시형태에 따른 제어툴(200)의 처리예를 도시하는 플로우차트이다. 예를 들어, 제어툴(200)은 정보 처리 시스템(1)의 기동시에, 도 35에 도시하는 바와 같이, 백업 목적지인 비휘발성 저장 장치(2B) 내의 NAND 메모리(16B)로부터 OS 파일 관리 테이블(메타데이터, OS 파일 시스템)(300)을 로드한다. 애플리케이션 프로그램(400)으로부터 OS(100)에 대하여 영역(6E)의 애플리케이션 데이터(500)를 저장 장치(2B)에 저장하는 커맨드가 송신되면(단계 S900), 제어툴(200)은 메인 메모리(6) 내의 영역(6C)에 저장된 OS 파일 관리 테이블(메타데이터)(300)을 판독한다(단계 S910). 이에 따라, 제어툴(200)(OS(100))은 데이터가 판독되는 메인 메모리(6)의 영역(6E)의 어드레스와, 비휘발성 저장 장치(2B)에 저장될 데이터의 LBA 영역을 취득한다(단계 S920). OS(100)는 메인 메모리(6) 내의 영역(6E)으로부터 애플리케이션 데이터(500)를 판독한다(단계 S930).
판독된 애플리케이션 데이터(500)를 비교하기 위해서, 판독 애플리케이션 데이터(500)는 논리 섹터 단위로 분해되는 것이 바람직하다(단계 S940). 제어툴(200)은 분해된 단위 중 하나의 단위를 선택하고(단계 S950), 그 단위의 데이터(D)가 함수 f(cLBA)와 일치하는지의 여부를 판정한다(단계 S960). 데이터(D)가 함수 f(cLBA)와 일치하지 않는다면, 제어툴은 예컨대 비특허문헌 1의 ACS-2에 기술되어 있는 61h WRITE FPDMA QUEUED 커맨드나 35h WRITE DMA EXT 커맨드, 또는 NVM Express Revision 1.1에 기재되어 있는 01h Write 커맨드 등을 이용하여, 도 36에 도시하는 바와 같이, 저장 장치(2B)의 LBA 영역에 데이터(D)를 기록한다(단계 S980). 데이터(D)가 함수 f(LBA)와 일치하면, 제어툴은 저장 장치(2B)에 기록 커맨드를 송신하지 않고, 도 37에 도시하는 바와 같이, NAND 메모리(16B)로부터의 LBA 영역의 매핑을 해제하기 위해 저장 장치(2B)에 삭제 통지 커맨드를 송신한다(단계 S970). 삭제 통지 커맨드로서는, 예를 들면 비특허문헌 1의 ACS-2에 기술되어 있는 06h DATA SET MANAGEMENT 커맨드나 SCT 커맨드, NVM Express Revision 1.1에 기술되어 있는 11h Dataset Management command의 Deallocate(AD) 등이 이용될 수 있다. 예를 들어, SSDC(41B)가 후술하는 Deterministic Zeroing TRIM 기능을 가지고 있는 경우, 삭제 통지 커맨드로서, 전술한 커맨드뿐만 아니라, NVM Express Revision 1.1에 기재되어 있는 08h Write Zeroes 커맨드도 이용할 수 있다. 또한, 삭제 통지 커맨드로서, SCSI Block Commands-3(SBC-3), Revision 35, Dec.07, 2012(http://www.t10.org/)에 기술되어 있는 42h UNMAP command를 이용할 수도 있다.
제어 프로그램(200)은 모든 분해 단위에 대하여, 처리를 반복한다(단계 S950 내지 단계 S990). 제어 프로그램(200)은 메인 메모리(6)의 OS 파일 관리 테이블(메타데이터)(300)에 데이터(500)가 기록되어 있는 LBA를 기록한다. 또한, 메인 메모리(6)의 OS 파일 관리 테이블(300)은 비휘발성 저장 장치(2B) 내의 NAND 메모리(16B)에 백업되어 저장된 다음, 처리가 종료된다(단계 S995).
이와 같이, 제6 실시형태에서는 삭제 통지 커맨드를 이용하여 메인 메모리(6)의 데이터를 고속으로 저장 장치(2B)에 복사하여 저장할 수 있다.
(제7 실시형태)
제7 실시형태에서는, 저장 유닛(2A)와 저장 유닛(2B)의 인터페이스로서, 네트워크(7002)를 사용하는 경우에 관해서 설명한다. 본 실시형태에 있어서, 도 38의 정보 처리 시스템(1)은 저장 유닛(2A) 및 저장 유닛(2B)에 접속된 네트워크(7002)를 포함하여 구성된다.
네트워크(7002)는 스토리지 액세스를 위한 스토리지 네트워크이다. 예컨대, 파이버 채널(Fibre Channel)이나 이더넷(등록상표)이 이용될 수 있다. 특히, 스토리지 네트워크로서, 예컨대 SAN(Storage Area Network)나 NAS(Network Attached Storage)가 이용될 수 있다. SAN에는, 예컨대, FC-SAN(Fibre Channel Storage Area Network)나 IP-SAN(Internet Protocol Storage Area Network)가 이용된다, 그 상위 프로토콜 층으로서, 예컨대 SCSI(Small Computer System Interface)이 이용될 수도 있다. 본 실시형태에서는, 스토리지 네트워크(7002)로서 IP-SAN을 이용한 예에 관해서 설명하다. 또한, 그 상위 프로토콜 층으로서는 iSCSI(Internet Small Computer System Interface)이 이용된다. 스토리지 네트워크(7002)는 네트워크 스위치(7005)와 허브(도시 생략)를 포함한다.
네트워크(7001)는 하나 이상의 서버 및 하나 이상의 클라이언트를 각각 접속하는 네트워크이다. 예를 들면, LAN(Local Area Network)나 WAN(Wide Area Network)가 이용될 수 있다. LAN으로서, 예를 들면 이더넷이 사용된다.
클라이언트(7004)는 네트워크(7001)에 접속되어 요청 처리를 수행하는 컴퓨터이다. 클라이언트(7004)는 일반적으로 프로세서와, 메인 메모리와, 통신 인터페이스와, 로컬 입출력 장치 등의 하드웨어 리소스를 포함하고, 장치 드라이버, 운영체제(OS), 및 애플리케이션 프로그램(도시 생략) 등의 소프트웨어 리소스를 포함한다. 이에, 클라이언트(7004)는 프로세서의 제어 하에 하드웨어 리소스와 협업하여 각종 프로그램의 처리를 수행한다. 예를 들어, 클라이언트(7004)는 프로세서의 제어 하에, 업무 애플리케이션 프로그램을 실행함으로써, 데이터베이스 서버(7003)를 경유해 저장 유닛(2A)에 I/O 액세스하여, 원하는 업무 시스템을 실현한다.
데이터베이스 서버(DB 서버)(7003)는 네트워크(7001)와 스토리지 네트워크(7002)에 접속되는 서버로서, 데이터베이스 관리 시스템(DBMS:Database management system)이 가동하고 있다. 데이터베이스 서버(7003)는 클라이언트(7004)로부터 데이터 판독 요구를 수신하면, 저장 유닛(2A)이나 저장 유닛(2B)으로부터 데이터를 판독하고 판독 데이터를 클라이언트(7004)에 송신한다. 데이터베이스 서버(7003)는 클라이언트(7004)로부터 데이터 기록 요구를 수신하면, 클라이언트(7004)로부터 기록 데이터를 수신하고 수신 데이터를 저장 유닛(2A)이나 저장 유닛(2B)에 기록한다. 데이터베이스 서버(7003)는 저장 유닛(2A)이나 저장 유닛(2B)에 저장된 데이터를 관리하도록 구성된 관리 정보(메타데이터)를 저장한다.
저장 유닛(2A)은 단독으로 DB 서버(7003)에 대해 데이터 스토리지 서비스를 제공할 수도 있고, 또는 복수의 스토리지 장치를 포함하는 하나의 가상적 스토리지 장치로서, DB 서버(7003)에 대해 데이터 스토리지 서비스를 제공할 수도 있다. 저장 유닛(2A)에는, DB 서버(7003)에 제공되도록 하나 이상의 논리 디바이스(LDEV)가 구성된다. 논리 디바이스는 RAID 구성 하에 복수의 하드 디스크 드라이브를 포함하는 가상 디바이스(VDEV)로서 구성될 수 있다.
논리 디바이스(LDEV)는 DB 서버(7003)가 인식할 수 있는 논리적인 저장 장치이다. 논리 유닛(LU)이 논리 디바이스에 할당된다. DB 서버(7003)는 물리 디바이스 상에 구성된 논리 디바이스를 논리 유닛으로서 인식한다. 각 논리 유닛에는 논리 유닛 번호(LUN)가 부여된다. 논리 유닛은 논리 섹터(논리 블록)로 분할되고, 각 논리 섹터에는 LBA가 할당된다. DB 서버(7003)는 논리 디바이스 번호 및 LBA에 의해 구성되는 논리 어드레스를 포함하는 커맨드를 저장 장치에 송신함으로써, 특정 논리 유닛의 특정 논리 섹터에 액세스할 수 있다. 전술한 바와 같이 iSCSI를 이용하는 본 실시형태에서는, DB 서버(7003), 저장 유닛(2A), 및 저장 유닛(2B)은 각각 iSCSI 네임이 할당되어 있는 iSCSI 노드로서의 이니시에이터(initiator) 및 타겟으로서 기능하도록 구성된다. 따라서, DB 서버(7003), 저장 유닛(2A), 및 저장 유닛(2B)은 IP 어드레스 및 TCP 포트 번호에 의해 지정되는 네트워크 포털을 통해 iSCSI PDU를 송신한다. 따라서, DB 서버(7003)는 iSCSI 네임, IP 어드레스, 및 TCP 포트 번호를 지정함으로써, 네트워크(7002) 상의 저장 유닛(2A) 및 저장 유닛(2B)을 인식하고, 그 저장 유닛의 논리 유닛 내의 논리 섹터에 액세스한다. 또한, 클라이언트(7004)는 DB 서버(7003)를 경유하지 않고서 스토리지 네트워크(7002)에 직접 접속될 수도 있다.
스토리지 네트워크(7002)에는 백업 서버(7000)가 접속되기 때문에, 제어툴(200)은 백업 서버(7000) 내의 메인 메모리에 저장된다. DB 서버(7003)는 백업 서버(7000)의 기능을 구비할 수도 있다. 도 39에 도시하는 바와 같이, 제어툴(200)의 기능은 백업 서버(7000)의 일부인 제어툴(200)로서가 아니라, 네트워크 스위치(7005) 내에 제어 유닛(200)으로서 임베디드될 수 있다. 도 40에 도시하는 바와 같이, 제어툴(200)의 기능은 저장 유닛(2A) 내에 제어 유닛(200)으로서 임베디드될 수 있다. 또한, 제어툴(200)의 기능은 클라이언트(7004) 내에 제어 유닛(200)으로서 임베디드될 수 있다.
IT 관리자 또는 오퍼레이터가 재난 복구를 위해 저장 유닛(2A)에 저장된 데이터를 저장 유닛(2B)에 백업할 경우, 저장 유닛(2A) 및 저장 유닛(2B) 간의 거리는 100 킬로미터 이상인 것이 바람직하다. 이 경우, 도 41에 도시하는 바와 같이, 저장 유닛(2A)과 저장 유닛(2B)은 채널 익스텐더(7006a, 7006b)를 통해, WAN(Wide Area Network) 또는 전용선 등의 장거리 네트워크(7007)를 경유하여 서로 접속되는 것이 바람직하다.
본 실시형태에서는, 백업 소스인 저장 유닛(2A)과 백업 목적지인 저장 유닛(2B)이 상이한 저장 장치인 경우에 관해서 설명하였다. 그러나, 본 발명은 저장 유닛(2A)과 저장 유닛(2B)이 동일한 저장 장치 내에 상이한 저장 영역으로서 임베디드되는 경우에도 적용될 수 있다. 즉, 저장 장치가 LU가 할당되는 2개 이상의 LDEV를 포함하고 하나의 LU는 저장 유닛(2A)으로서 이용되고 다른 LU는 저장 유닛(2B)으로서 이용되는데 제어툴(200)(저장 유닛(200))이 저장 유닛(2A)의 데이터를 저장 유닛(2B)에 복사하는 경우에도 본 발명이 적용될 수 있다. 제어툴(200)(제어 유닛(200))은 소스 LU 내의 LBA 영역이 전부 복사되는 경우와 소스 LU의 LBA 영역의 일부가 복사되는 경우에 적용될 수 있다.
도 42는 본 실시형태에 따른 제어툴(200)(제어 유닛(200))의 백업 처리를 도시하는 도면이다. 백업이 시작되면, 백업 서버(700) 내의 제어 프로그램(200)은 데이터 복사 대상 LBA의 포인터인 cLBA를 제로로 치환한다(S1000). 제어 프로그램(200)은 L 길이의 cLBA에서 시작되는 LBA 영역의 데이터를 판독하는 커맨드를 저장 유닛(2A)에 송신한다(단계 S1010). 저장 유닛(2A)으로부터의 판독 커맨드로서는, 예를 들면 SCSI Block Commands-3(SBC-3), T10/BSR INCITS 514, Revision 35(http://www.t10.org/)에 기술되어 있는 28h READ (10) 커맨드, A8h READ (12) 커맨드, 88h READ (16) 커맨드, 7Fh READ (32) 커맨드 등이 이용될 수 있다. 판독 커맨드를 수신하는 저장 유닛(2A)은 LBA 영역의 데이터(D)를 스토리지 네트워크(7002)를 통해 백업 서버(7000)에 송신하고, 백업 서버(7000)는 데이터(D)를 수신한다(단계 S1020).
제어 프로그램(200)은 데이터(D)를 함수 f(cLBA)로부터의 출력 데이터와 비교한다(단계 S1030). 데이터(D)가 함수 f(cLBA)로부터의 출력 데이터와 일치하지 않는 경우(단계 S1030: No), 제어 프로그램(200)은 L 길이의 cLBA에서 시작되는 LBA 영역에 데이터(D)를 저장 유닛(2B)에 송신한다(단계 S1040). 이에 따라, SSDC(41B)는 데이터(D)를 NAND 메모리(16B)에 기록한다. 저장 유닛(2B)에 보내진 기록 커맨드로서는, 예를 들면 전술한 SBC-3에 기술되어 있는 2Ah WRITE (10) 커맨드, AAh WRITE (12) 커맨드, 8Ah WRITE (16) 커맨드, 7Fh WRITE (32) 커맨드 등이 이용된다.
D가 f(cLBA)로부터의 출력 데이터와 일치하는 경우(단계 S1030: Yes), 제어 프로그램(200)은 LBA 영역의 NAND 메모리(16B)에 대한 매핑을 삭제하는 삭제 통지를 저장 유닛(2B)에 송신한다(단계 S1050). SSDC(41B)는 매핑을 삭제하도록 관리 정보(46B)를 변경하고, 데이터(D)는 디바이스-무효 데이터가 된다. 저장 유닛(2B)에 보내진 삭제 통지 커맨드로서는, 예를 들면 전술한 SBC-3에 기술되어 있는 42h UNMAP 커맨드 등이 이용될 수 있다.
단계 S1040 또는 단계 S1050이 완료되면, 제어 프로그램(200)은 cLBA를 L씩 인크리먼트하고(단계 S1060), 단계 S1010 내지 단계 S1050의 서브루틴이 전체 소영역에 대해 수행된다. cLBA가 저장 유닛(2B)의 액세스 가능 최대 LBA를 초과할 경우, 전체 LBA 영역의 판독이 완료된 것으로 되고(단계 S1070: Yes), 백업 처리가 완료된다.
제어 프로그램(200)(제어 유닛(200))은 백업 대상 범위로서, 저장 유닛(2A)의 전체를 백업할 수도 있고, 또는 저장 유닛(2A)의 일부를 백업할 수도 있다. 저장 유닛(2A)의 일부를 백업하는 경우, 예를 들면 저장 유닛(2A)의 논리 유닛(LU) 내의 전체 LBA가 저장 유닛(2B)에 백업될 수 있다. 이 경우, 저장 유닛(2B)에 논리 유닛(LU)이 할당되고, 저장 유닛(2A)의 논리 유닛(LU)으로부터 저장 유닛(2B)의 논리 유닛(LU)에 데이터가 복사된다.
도 40에 도시하는 바와 같이, 백업 소스인 저장 유닛(2A) 내에 제어 유닛(200)이 임베디드되는 경우, 제어 유닛(200)은 본 실시형태에서의 제어툴(200)(제어 유닛(200))의 백업 처리로서 서버 프리 백업(server-free backup)을 처리할 수 있다. 이 경우에, 예를 들면 확장 복사 커맨드(extended copy command)가 이용될 수 있다. 확장 복사 커맨드로서는, 예를 들면 SCSI Primary Commands-3(SPC-3), INCITS T10/1731-D, Revision 36e(http://www.t10.org/)에 기술되어 있는 83h EXTENDED COPY 커맨드가 이용될 수 있다. 백업 서버(7000), 데이터베이스 서버(7003), 네트워크 스위치(7005) 또는 클라이언트(7004)가 백업 소스 영역 어드레스와 백업 목적지 어드레스를 포함하는 확장 복사 커맨드를 저장 유닛(2A)에 송신할 경우, 제어 유닛(200)은 백업 소스 및 목적지 영역에 관해 도 18에 도시하는 처리와 같은 백업 처리를 수행한다. 즉, 제어 유닛(200)은 확장 복사 커맨드에 의해 지정된 저장 유닛(2A)의 소스 영역으로부터 데이터 판독을 반복하고 판독 데이터(D)가 f(cLBA)와 일치하는지의 여부를 판정한다. D≠f(cLBA)이면, 제어 유닛(200)은 기록 커맨드 및 데이터(D)를 스토리지 네트워크(7002)를 통해 저장 유닛(2B)에 송신한다. D=f(cLBA)이면, 제어 유닛(200)은 삭제 통지를 스토리지 네트워크(7002)를 통해 저장 유닛(2B)에 송신한다. 이에 따라, 저장 유닛(2B)은 데이터 기록 처리 또는 삭제 통지 처리를 한다.
(제8 실시형태)
제7 실시형태에서는, 스토리지 네트워크(7002)를 경유해 데이터가 백업되는 경우에 관해서 설명하였다. 도 43에 도시하는 바와 같이, 클라이언트(7004A)에 접속된 저장 유닛(2A)의 데이터를 스토리지 네트워크(7002)에 접속된 저장 유닛(2B)에 백업할 수도 있다. 백업 처리시에, 제어툴(200)은 저장 유닛(2A)의 백업 소스 영역으로부터 데이터의 판독을 반복하고 판독 데이터(D)가 f(cLBA)로부터의 출력 데이터와 일치하는지의 여부를 판정한다. 그래서, D≠f(cLBA)이면, 제어툴(200)은 기록 커맨드 및 데이터(D)를 스토리지 네트워크(7002)를 통해 저장 유닛(2B)에 송신한다. D=f(cLBA)이면, 제어툴(200)은 스토리지 네트워크(7002)를 통해 저장 유닛(2B)에 삭제 통지를 송신한다.
도 44에 도시하는 바와 같이, 스토리지 네트워크(7002)에 접속된 저장 유닛(2A)의 데이터는 클라이언트(7004A)에 접속된 저장 유닛(2B)에 백업될 수도 있다. 백업 처리시에, 제어툴(200)은 저장 유닛(2A)의 백업 소스 영역으로부터 데이터의 판독을 반복하고, 판독 데이터(D)가 f(cLBA)와 일치하는지의 여부를 판정한다. 그래서, D≠f(cLBA)이면, 제어툴(200)은 기록 커맨드 및 데이터(D)를 저장 유닛(2B)에 송신한다. D=f(cLBA)이면, 제어툴(200)은 스토리지 네트워크(7002)를 통해 저장 유닛(2B)에 삭제 통지를 송신한다.
(제9 실시형태)
제9 실시형태에서는, 저장 유닛(2A, 2B)의 인터페이스로서, 제7 실시형태에서와 같이 네트워크(7002)를 사용하고, 파일 단위로 백업이 행해지는 경우에 관해서 설명한다. 도 45의 정보 처리 시스템(1)은 스토리지 네트워크(7002)에 접속된 메타데이터 서버(MDS)(7008)와, 백업 소스인 저장 유닛(2A), 및 저장 유닛(2C)에 분산 관리 방식으로 저장되어 있는 메타데이터(300)를 포함하여 구성된다.
메타데이터(300)는 예를 들면 제2 실시형태나 제6 실시형태에서 설명한 OS 파일 관리 정보(300)와 같은 구조를 가질 수 있다. 예를 들어, 메타데이터(300)는 도 35에 도시하는 OS 파일 관리 테이블(300)일 수도 있고 또 다른 구조를 가질 수도 있다. 메타데이터(300)의 관리 알고리즘으로서는, 블록 알고리즘이나 B+tree 알고리즘을 이용할 수 있다. 본 실시형태에서는, 메타데이터(300)가 도 46에 도시하는 구조를 갖는 경우에 관해서 설명한다. 메타데이터(300)는 파일 식별 ID와, 파일을 저장하는 저장 유닛을 특정하는데 이용되는 저장 유닛 식별 ID와, 파일이 저장되어 있는 LBA 영역의 시작 LBA를 나타내는 LBA와, 파일의 데이터 길이를 나타내는 섹터 카운트와, 파일 소유자 ID와, 파일의 최종 갱신 시각, 및 파일의 기타 속성 정보를 포함한다. 저장 유닛 식별 ID는 각 저장 유닛의 고유 번호인 것이 바람직하다. 예를 들어, World Wide Name(WWN), IP 어드레스, 또는 MAC 어드레스가 이용될 수 있다. 메타데이터(300)는 백업 소스인 저장 유닛(2A)에만 저장될 수 있다. 그러나, 시스템 전체의 신뢰성 및 성능 향상의 관점에서는, 메타데이터(300)가 저장 유닛(2A, 2B) 이외의 저장 유닛으로서 스토리지 네트워크(7002)에 접속되는 저장 유닛(2C)과 저장 유닛(2A)에 분산 관리 방식으로 저장되는 것이 바람직하다. 한편, 메타데이터(300)는 스토리지 네트워크(7002) 상의 저장 유닛에 저장되는 것이 아니라, 메타데이터 서버(7008)에 접속된 로컬 입출력 장치(도시 생략)에 저장될 수 있다.
메타데이터 서버(MDS)(7008)는 스토리지 네트워크(7002)에 접속되며, 저장 유닛(2A, 2B, 2C)에 저장되는 파일 데이터에 대한 메타데이터를 관리 함으로써, 정보 처리 시스템(1)의 파일 시스템을 구성한다. 메타데이터(300)는 저장 유닛(2A, 2B, 2C)에 대한 파일 ID의 매핑을 포함한다. 파일 시스템으로서는, 예컨대 SAN 파일 시스템, 클러스터 파일 시스템, RAIN(Redundant Array of Inexpensive/Independent Nodes) 파일 시스템, pNFS(parallel Network 파일 시스템), 또는 Google 파일 시스템(GFS) 등이 이용될 수 있다. 메타데이터 서버(7008)는 프로세서와, 메인 메모리와, 통신 인터페이스와, 로컬 입출력 장치 등의 하드웨어 리소스를 포함하고, 장치 드라이버, 운영체제(OS) 및 메타데이터 관리 프로그램(도시 생략) 등의 소프트웨어 리소스를 포함한다. 이에, 메타데이터 서버(7008)는 프로세서의 제어 하에, 하드웨어 리소스와 협업하여 각종 프로그램의 처리를 수행한다.
클라이언트(7010)는 스토리지 네트워크(7002)에 접속되어 원하는 처리를 수행하는 컴퓨터이다. 클라이언트(7010)는 프로세서와, 메인 메모리와, 통신 인터페이스와, 로컬 입출력 장치 등의 하드웨어 리소스를 포함하고, 장치 드라이버, 운영체제(OS), 및 애플리케이션 프로그램(도시 생략) 등의 소프트웨어 리소스를 포함한다. 이에, 클라이언트(7010)는 프로세서의 제어 하에, 하드웨어 리소스와 협업하여 각종 프로그램의 처리를 수행한다. 예컨대, 클라이언트(7010)는 프로세서의 제어 하에, 업무 애플리케이션 프로그램을 실행함으로써, 저장 유닛(2A, 2B, 2C)에 파일 액세스하고 원하는 업무 시스템의 처리를 실현한다.
클라이언트(7010)는 파일 데이터에 액세스하기 위해, 메타데이터 서버(7008)로부터 저장 유닛 내의 파일의 어드레스와 파일의 속성 정보를 검색한다. 예를 들면, 클라이언트(7010)가 파일로부터 데이터를 판독할 경우, 클라이언트(7010)는 파일 정보 판독 요구와 그 파일의 파일 식별 ID를 메타데이터 서버(7008)에 송신하고, 메타데이터 서버(7008)는 메타데이터(300)로부터 파일 식별 ID로부터 매핑되는 저장 유닛 식별 ID, LBA, 섹터 카운트 및 속성 정보를 검색하고, 메타데이터 서버(7008)는 대응하는 라인의 저장 유닛 식별 ID, LBA, 섹터 카운트, 속성 정보 등을 클라이언트(7010)에 송신하며, 클라이언트(7010)는 저장 유닛 식별 ID에 의해 지정된 저장 유닛에 대하여 데이터 판독 요구, LBA 및 섹터 카운트를 송신하고, 지정된 저장 유닛은 LBA로부터 섹터 카운트 길이를 갖는 데이터를 판독하며 저장 유닛은 그 데이터를 클라이언트(7010)에 송신한다.
예를 들면, 클라이언트(7010)가 파일의 데이터를 기록할 경우, 클라이언트(7010)는 기록 영역 할당 요구, 파일의 파일 식별 ID와 파일 사이즈를 메타데이터 서버(7008)에 송신하고, 메타데이터 서버(7008)는 메타데이터(300)를 판독하여, 저장 유닛 식별 ID, 파일이 기록되는 LBA, 파일의 속성 정보 등을 클라이언트(7010)에 통지하며, 클라이언트(7010)는 저장 유닛 식별 ID에 의해 지정된 저장 유닛에 대하여, 데이터 기록 커맨드, LBA 및 섹터 카운트를 송신하고, 기록될 데이터를 보내며, 그 저장 유닛은 LBA에서 시작되는 섹터 카운트 길이의 LBA 영역에 데이터를 기록한다.
도 47은 본 실시형태에 따른 제어툴(200)(제어 유닛(200))의 백업 처리를 도시하는 흐름도이다. 저장 유닛(2A)으로부터의 판독 커맨드로서는, 예컨대 전술한 SBC-3에 기술되어 있는 28h READ (10) 커맨드, A8h READ (12) 커맨드, 88h READ (16) 커맨드, 7Fh READ (32) 커맨드 등이 이용될 수 있다. 저장 유닛(2B)의 기록 커맨드로서는, 예컨대 전술한 SBC-3에 기술되어 있는 2Ah WRITE (10) 커맨드, AAh WRITE (12) 커맨드, 8Ah WRITE (16) 커맨드, 7Fh WRITE (32) 커맨드 등을 이용될 수 있다. 저장 유닛(2B)에 대한 삭제 통지 커맨드로서는, 예컨대 전술한 SBC-3에 기술되어 있는 42h UNMAP 커맨드 등이 이용될 수 있다.
제어툴(200)은 메타데이터 서버(7008)에 파일 ID 리스트 요구를 송신한다(단계 S1100). 메타데이터 서버(7008)는 메타데이터(300)를 판독하고, 메타데이터(300)에 등록되어 있는 파일의 ID 리스트를 작성하여, 파일 ID 리스트를 제어툴(200)에 송신한다(단계 S1110). 예컨대, 파일 ID 리스트는 도 48에 도시하는 데이터 구조를 가질 수 있다. 예컨대, 파일 ID 리스트는 메타데이터(300)에 등록되어 있는 전체 파일을 포함할 수 있다. 예컨대, 파일 ID 리스트는 저장 유닛(2A)에 포함된 전체 파일, 특정 폴더에 포함된 전체 파일 및 특정 LU에 포함된 전체 파일 등, 메타데이터(300)에 등록되어 있는 파일 중 일부를 포함할 수 있다. 본 실시형태에서는, 저장 유닛(2A)에 포함된 전체 파일이 백업되는 경우에 관해서 설명한다. 제어툴(200)은 수신된 파일 ID 리스트를 백업 대상 파일 리스트로서 백업 서버(7000)의 메인 메모리에 저장한다(단계 S1120).
제어툴(200)은 백업 파일 리스트 내의 각각의 파일의 정보를 판독하는 요구 및 파일 식별 ID를 메타데이터 서버(7008)에 송신한다. 메타데이터 서버(7008)는 메타데이터(300)로부터 파일 식별 ID를 검색하여, 파일이 저장되어 있는 cL 길이의 cLBA에서 시작되는 LBA 레인지의 정보를 제어툴(200)에 송신한다(단계 S1130).
제어툴(200)은 기록 영역 할당 요구, 파일의 파일 식별 ID와 섹터 카운트 cL을 메타데이터 서버(7008)에 송신한다. 메타데이터 서버(7008)는 메타데이터(300)에 기초하여 파일이 기록되는 저장 유닛 식별 ID 및 LBA(=tLBA)를 취득하여, 백업 목적지인 저장 유닛(2B)의 저장 유닛 식별 ID 및 tLBA를 제어툴(200)에 송신한다(S1140). 제어툴(200)은 기록 영역 할당 요구를 보낼 경우, 기록되는 LBA 영역을 저장 유닛(2A)에 할당하지 않도록 메타데이터 서버(7008)에 명시적으로 요구하는 것이 바람직하다.
제어툴(200)은 저장 유닛(2A)에 대하여 cL 길이의 cLBA에서 시작되는 영역을 판독하는 데이터 판독 커맨드를 송신하고, 저장 유닛(2A)은 LBA 영역으로부터 데이터를 판독하여 그 데이터를 제어툴(200)에 송신한다(S1150). 제어툴(200)은 저장 유닛(2A)으로부터 수신된 데이터를, 예컨대 논리 섹터 단위(=D)로 분해하고(단계 S1160), 제어툴(200)은 각각의 데이터(D)와 각각의 분해 단위의 시작 LBA인 tLBA마다 f(tLBA)로부터의 출력 데이터가 일치하는지의 여부를 판정한다(단계 S1170 및 단계 S1180).
D가 f(tLBA)로부터의 출력 데이터와 일치하지 않으면, 제어툴(200)은 tLBA에서 시작되는 LBA 영역에 데이터(D)를 기록하는 기록 커맨드를 저장 유닛(2B)에 송신하고 데이터(D)를 저장 유닛(2B)에 송신한다(단계 S1190). D가 f(tLBA)로부터의 출력 데이터와 일치하면, 제어툴(200)은 tLBA에서 시작되는 LBA 영역의, NAND 메모리(16B)에 대한 매핑을 삭제하는 삭제 통지를 저장 유닛(2B)에 송신한다(단계 S1200). 복수의 데이터 기록 커맨드에 의해 지정되는 LBA 영역이 연속 영역인 경우, 단계 S1190의 처리 효율을 개선하기 위해, 복수의 기록 커맨드가 결합되어 저장 유닛(2B)에 송신되는 것이 바람직하다. 한편, 복수의 삭제 통지에 의해 지정되는 LBA 영역이 연속 영역인 경우, 단계 S1200의 처리 효율을 개선하기 위해, 복수의 삭제 커맨드가 결합되어 저장 유닛(2B)에 송신되는 것이 바람직하다.
제어툴(200)은 백업된 파일의 저장 유닛 식별 ID를 저장 유닛(2A)의 ID로부터 저장 유닛(2B)의 ID로 갱신하도록 메타데이터 서버(7008)에 메타데이터(300)를 변경할 것을 요구한다. cLBA와 tLBA 간의 관계는 "cLBA=tLBA"일 수도 또는 "cLBA≠tLBA"일 수도 있다. "cLBA≠tLBA"이면, 제어툴(200)은 파일의 LBA를 백업된 파일의 cLBA에서 tLBA로 갱신하도록 메타데이터 서버(7008)에 메타데이터(300)를 변경할 것을 요구한다(단계 S1170).
(제10 실시형태)
제1 내지 제9 실시형태에 따른 방법이 이용될 경우, 제어툴(200)은 저장 장치(2A)에 저장된 사용자 데이터를 저장 장치(2B)에 고속으로 복사할 수 있다. 저장 장치(2A)를 구입한 최종 사용자는 구입한 저장 장치(2A)의 신뢰성이 열화되면, 저장 장치(2A)의 데이터를, 새롭게 구입한 신뢰성이 좋은 저장 장치(2B)에 복사하도록 제어툴(200)에 의해 데이터를 구출할 수 있다. 한편, 최종 사용자 자신이 데이터를 복구하는 것이 아니라, 저장 장치(2A 또는 2B)의 판매업자가 무상 또는 유상 서비스로, 사용자 데이터를 저장 장치(2A)로부터 저장 장치(2B)로 백업하는 구출 서비스를 할 수도 있다. 본 실시형태에서는, 데이터 구출 서비스가 기업 서비스인 경우에 관해서 설명한다. 본 실시형태에서 설명하는 데이터 구출 서비스는 제1 내지 제9 실시형태에 따른 방법을 이용할 수도 이용하지 않을 수도 있다. 제1 내지 제9 실시형태에 따른 방법들을 조합하면, 고속으로 데이터를 구출할 수 있고, 백업 목적지인 저장 장치(2B)에 기록된 데이터량을 저감하여, 저장 장치(2B)의 수명이 길어질 수 있다.
최종 사용자는 저장 장치(2A)를 구입할 경우, 저장 장치(2A)를, 퍼스널 컴퓨터, 서버, 게임 기기 또는 디지털 카메라 등의 정보 처리 장치(3)에 인터페이스를 경유해 접속할 수 있다. 정보 처리 장치가 기동중이면, 정보 처리 장치(3)는 저장 장치(2A)에 데이터를 기록하고 저장 장치(2A)로부터 데이터를 판독한다.
어느날 갑자기, 저장 장치(2A)는 경년 열화되거나, 에러가 누적되거나, 버그를 보유할 경우, 부팅에 실패하거나, 정확하게 데이터를 판독 및 기록하는데 실패하거나, 고장날 수 있다. 고장이 발생하면, 최종 사용자는 저장 장치(2A)에 저장된 업무 문서, 사진, 및 전자 메일 등의 사용자 데이터를 판독할 수 없게 된다. 따라서, 저장 장치(2A)가 고장나기 전에, 사용자 데이터를 신뢰성 높은 저장 장치인 저장 장치(2B)에 미리 복사하여 구출하는 것이 바람직하다.
데이터 구출 서비스는, 데이터 구출시에 사용자 데이터가 의도치 않게 손실되지 않고 저장 장치(2A)의 고장이 예측된 후에 저장 장치(2A)의 신뢰성이 더 악화되지 않도록 가급적 조속히 수행되는 것이 바람직하다.
데이터 구출 서비스에 있어서, 저장 장치(2A)가 고장난 후에도 저장 장치(2A)에서 데이터를 구출할 수 있다. 예를 들어, 저장 장치가 US 2009/0222617 A1에 기재된 리드 온리(read-only) 모드 또는 라이트 프로텍션(write protection) 모드에 도달하면, 저장 장치(2A)는 US 2012/0284453 A1에 기재된 바와 같이, 수신된 기록 커맨드를 정상적으로 처리할 수 없다. 그렇기 때문에, Windows(등록상표)와 같은 OS는 저장 장치(2A)를 정상적으로 인식할 수 없고, 그래서 최종 사용자가 사용자 데이터를 구출하는 것이 곤란하다. 데이터 구출 서비스 제공자는 데이터를 구출하는데 사용하는 정보 처리 장치(3) 상에서, 예컨대 본 실시형태에서 설명한 제어툴(200)이나, 예컨대 US 2012/0284453 A1에 기재된 제어 프로그램을 이용하여, 저장 장치가 고장난 경우에도 사용자 데이터를 구출할 수 있다.
도 49는 사용자 데이터 구출 서비스에 있어서, 저장 장치(2A)의 고장 예측 시점(또는 고장 시점)의 단계부터, 사용자 데이터를 저장 장치(2B)에 구출 완료한 단계까지의 처리 흐름을 도시하는 도면이다. 사용자 데이터 구출 서비스는, 예를 들면 저장 장치(2A 또는 2B)의 판매업자가 무상 서비스 또는 유상 서비스로 행할 수도 있고, 또는 데이터 복구 서비스 제공업자가 유상 서비스로서 행할 수도 있다.
저장 장치(2A)의 고장은 저장 장치(2A)로부터 예를 들면 S.M.A.R.T 정보 등의 통계 정보를 수집함으로써, 고장을 사전에 예측하거나 알 수 있다. 저장 장치(2A)의 고장은 예를 들면, US 2012/0284453 A1, US 2010/0250450 A1, 또는 US 2011/0239045 A1에 개시되는 기술을 이용하는 고장 예측 소프트웨어에 의해 사전에 예측될 수 있다.
최종 사용자는 고장 예측 소프트웨어에 의해, 예를 들면 디스플레이(9)를 통해 고장 예측이나 고장이 통지되면, 저장 장치(2A)를 정보 처리 장치(3)로부터 분리하여, 데이터 구출 서비스 센터(데이터 구출 서비스 제공업자)에 저장 장치(2A)를 보낸다.
서비스 센터는 저장 장치(2A)를 사용자로부터 받는다. 서비스 센터는 저장 장치(2A)의 데이터의 백업 목적지(구출 목적지)로서 신뢰성이 좋은 저장 장치인 저장 장치(2B)를 준비한다. 예를 들어, 서비스 센터는 저장 장치(2A)의 데이터 복사 목적지로서 저장 장치(2B)를 새로 제조할 수도 있고, 또는 저장 장치(2B)를 새로 구입할 수도 있다.
서비스 센터의 오퍼레이터는 데이터 구출 서비스용 장치로서 데이터 구출에 사용되는 정보 처리 장치(3)에, 백업 소스인 저장 장치(2A)와 백업 목적지인 저장 장치(2B)를 접속한다. 오퍼레이터는 저장 장치(2A)의 사용자 데이터(D001)를 저장 장치(2B)에 복사하도록 정보 처리 장치(3)를 제어한다. 복사 처리는 제1 내지 제9 실시형태에서 설명한 복사 처리(백업 처리)로서 행해지는 것이 바람직하다. 데이터 구출에 사용되는 정보 처리 장치(3)는 본 실시형태에서 설명한 제어툴(200)이나, 예컨대 US 2012/0284453 A1에 기재된 제어 프로그램을 포함할 수 있다.
저장 장치(2A)의 신뢰성이 더욱 열화되는 것을 막기 위해서는, 정보 처리 장치가 저장 장치(2A)에 대해 기록 커맨드를 송신하는 것을 피하는 것이 바람직하다. 저장 장치(2A)의 인터페이스 컨트롤러의 신뢰성이 열화될 경우, 정보 처리 장치(3)와 저장 장치(2A)의 통신이 이루어지는 인터페이스(19A)에 CRC 에러나 R 에러 등의 통신 에러가 발생할 우려가 있다. 그렇기 때문에, 데이터 구출 서비스용 정보 처리 장치(3)는 인터페이스(19A)의 링크 속도를 제한하는 것이 바람직하다. 예를 들어, 인터페이스(19A)나 저장 장치(2A)의 인터페이스 컨트롤러가 Serial ATA의 Generation 3의 최대 링크 속도인 6.0 Gbps 비트 레이트를 지원할 경우, 정보 처리 장치(3)는 보다 낮은 링크 속도인 3.0 Gbps 또는 Serial ATA의 최저 링크 속도인 1.5 Gbps에서 저장 장치(2A)와 통신하는 것이 바람직하다. 인터페이스(19A)가 PCI Express 등의 멀티레인(multi-lane) 통신을 지원하고 저장 장치(2A)의 인터페이스 컨트롤러의 신뢰성이 열화되는 경우, 정보 처리 장치(3)와의 통신중에 레인간 스큐 보정(deskewing)의 실패 등의 통신 에러가 발생할 우려가 있다. 그렇기 때문에, 데이터 구출 서비스용 정보 처리 장치(3)는 링크 레인수를 제한하는 것이 바람직하다. 예를 들어, 인터페이스(19A)나 저장 장치(2A)의 인터페이스 컨트롤러가 PCI Express의 4 레인 링크를 지원하는 경우, 정보 처리 장치(3)는 더 작은 레인수인 2 레인 링크로, 보다 바람직하게는 최저 레인수인 1 레인 링크로 저장 장치(2A)와 통신하는 것이 바람직하다. 백업 처리 종료 후에, 데이터 구출용 정보 처리 장치(3)는 저장 장치(2B)에 저장된 사용자 데이터(D001)를 판독하고, 사용자 데이터(D001)를 저장 장치(2A)로부터 판독된 데이터와 비교하여 사용자 데이터(D001)가 저장 장치(2B)에 정확하게 기록되는지의 여부를 검증한다(검증 처리).
서비스 센터는 백업 목적지인 저장 장치(2B)를 최종 사용자에게 보낸다. 한편, 서비스 센터는 구출한 데이터(D001)를 전자메일로 사용자에게 송신할 수도 있고, 또는 구출한 데이터(D001)를 클라우드 스토리지에 업로드하여 구출 데이터(D001)를 사용자에게 전자적으로 송신할 수도 있다.
최종 사용자는 구출된 데이터(D001)를 입수한다.
(변형예)
전술한 각 실시형태에서는, 백업 소스인 비휘발성 저장 장치(2A)로서 SSD가 이용되는 예를 관해 설명하였다. 각 실시형태는 SSD 이외의 비휘발성 저장 장치에도 넓게 적용될 수 있다. 예컨대, 각 실시형태는 자성 매체(platter)를 이용한 하드 디스크 드라이브(HDD)와, NAND형 플래시 메모리와 자성 매체(platter)의 양쪽을 이용한 하이브리드 하드 디스크 드라이브(하이브리드 HDD)에도 적용될 수 있다. 삭제 통지 커맨드의 송신 목적지가 백업 소스인 비휘발성 저장 장치(2A)가 아니라, 백업 목적지인 비휘발성 저장 장치(2B)이기 때문에, 본 발명은 백업 소스인 비휘발성 저장 장치(2A)가 삭제 통지 커맨드를 지원하지 않는 경우에도 적용될 수 있다.
소정의 실시형태에 대해 설명하였지만, 이들 실시형태는 예로서 제시되는 것일 뿐이며, 발명의 범위를 한정하는 것은 의도하지 않는다. 사실상, 본 명세서에 설명하는 신규한 실시형태들은 다양한 다른 형태로 실시될 수 있으며, 더욱이, 발명의 요지를 일탈하지 않는다면, 여러가지 생략, 치환, 및 변경이 이루어질 수 있다. 첨부하는 특허청구범위 및 그 등가물은 발명의 범위 및 요지 내에 포함되는 상기 형태 또는 변형을 포함하는 것을 의도한다.

Claims (27)

  1. 제1 저장 유닛과 제2 저장 유닛이 접속될 수 있는 정보 처리 장치에 로드되는 제어 프로그램을 저장하는 저장 매체에 있어서,
    상기 제1 저장 유닛은 적어도 판독 가능한 제1 메모리를 포함하고,
    상기 제2 저장 유닛은 판독 및 기록 가능한 제2 비휘발성 메모리와, 제어 유닛을 포함하며,
    상기 제어 유닛은, 수신된 삭제 통지에 의해 지정된 논리 어드레스 영역의, 상기 제2 비휘발성 메모리에 대한 하나 이상의 매핑을 무효화하고, 수신된 판독 커맨드에 의해 지정된 논리 어드레스 영역이 상기 제2 비휘발성 메모리에 매핑되지 않는 경우, 제1 함수가 나타내는 데이터를 상기 정보 처리 장치에 송신하도록 구성되고,
    상기 제어 프로그램은, 상기 정보 처리 장치로 하여금,
    상기 제1 저장 유닛의 제1 논리 어드레스 영역으로부터 데이터를 판독하는 제1 처리와,
    상기 제1 논리 어드레스 영역으로부터의 판독 데이터와 상기 제1 함수가 나타내는 데이터가 일치하는지의 여부를 판정하는 제2 처리와,
    상기 판독 데이터와 상기 제1 함수가 나타내는 데이터가 일치하지 않는 경우, 상기 제2 저장 유닛의 제2 논리 어드레스 영역에 상기 판독 데이터를 기록하는 제3 처리와,
    상기 판독 데이터와 상기 제1 함수가 나타내는 데이터가 일치하는 경우, 상기 판독 데이터를 상기 제2 저장 유닛에 보내지 않고서, 상기 제2 비휘발성 메모리에 대한 상기 제2 논리 어드레스 영역의 하나 이상의 매핑을 무효화하는 삭제 통지를 상기 제2 저장 유닛에 보내는 제4 처리
    를 수행시키는 것인 제어 프로그램을 저장한 저장 매체.
  2. 청구항 1에 있어서, 상기 제1 함수는 상기 제2 저장 유닛에 보내는 논리 어드레스와 무관한 고정 데이터를 나타내는 것인 제어 프로그램을 저장한 저장 매체.
  3. 청구항 1에 있어서, 상기 제1 함수는 상기 제2 저장 유닛에 보내는 적어도 2개의 상이한 논리 어드레스에 대해 상이한 데이터를 나타내는 것인 제어 프로그램을 저장한 저장 매체.
  4. 청구항 1에 있어서, 상기 제1 저장 유닛은 비휘발성 저장 유닛이고, 상기 제1 저장 유닛과 상기 제2 저장 유닛은 상이한 비휘발성 저장 장치 내에 포함되는 것인 제어 프로그램을 저장한 저장 매체.
  5. 청구항 1에 있어서,
    상기 제1 저장 유닛은 비휘발성 저장 유닛이고, 상기 제1 저장 유닛과 상기 제2 저장 유닛은 동일한 비휘발성 저장 장치 내에 포함되며,
    상기 제1 논리 어드레스 영역과 상기 제2 논리 어드레스 영역의 논리 어드레스는 서로 겹치지 않는 것인 제어 프로그램을 저장한 저장 매체.
  6. 청구항 1에 있어서, 상기 정보 처리 장치는, 상기 제2 처리 이전에 상기 제2 저장 유닛으로부터 상기 제1 함수의 정보를 수신하는 제5 처리를 수행하게 되는 것인 제어 프로그램을 저장한 저장 매체.
  7. 청구항 1에 있어서, 상기 제1 저장 유닛은 휘발성 저장 유닛이고, 상기 제어 프로그램은, 상기 제어 프로그램이 프로그램으로부터 상기 제1 논리 어드레스 영역의 데이터를 상기 제2 저장 유닛에 저장하라는 요구를 수신한 후에, 상기 제1 처리를 처리하는 것인 제어 프로그램을 저장한 저장 매체.
  8. 제1 저장 유닛과 제2 저장 유닛이 접속될 수 있는 정보 처리 장치를 제어하는 방법에 있어서,
    상기 제1 저장 유닛은 적어도 판독 가능한 제1 메모리를 포함하고,
    상기 제2 저장 유닛은 판독 및 기록 가능한 제2 비휘발성 메모리와, 제어 유닛을 포함하며,
    상기 제어 유닛은, 수신된 삭제 통지에 의해 지정된 논리 어드레스 영역의, 상기 제2 비휘발성 메모리에 대한 하나 이상의 매핑을 무효화하고, 수신된 판독 커맨드에 의해 지정된 논리 어드레스 영역이 상기 제2 비휘발성 메모리에 매핑되지 않는 경우, 제1 함수가 나타내는 데이터를 상기 정보 처리 장치에 송신하도록 구성되고,
    상기 방법은,
    상기 제1 저장 유닛의 제1 논리 어드레스 영역으로부터 데이터를 판독하는 단계와,
    상기 제1 논리 어드레스 영역으로부터의 판독 데이터와 상기 제1 함수가 나타내는 데이터가 일치하는지의 여부를 판정하는 단계와,
    상기 판독 데이터와 상기 제1 함수가 나타내는 데이터가 일치하지 않는 경우, 상기 제2 저장 유닛의 제2 논리 어드레스 영역에 상기 판독 데이터를 기록하는 단계와,
    상기 판독 데이터와 상기 제1 함수가 나타내는 데이터가 일치하는 경우, 상기 판독 데이터를 상기 제2 저장 유닛에 보내지 않고서, 상기 제2 비휘발성 메모리에 대한 상기 제2 논리 어드레스 영역의 하나 이상의 매핑을 무효화하는 삭제 통지를 상기 제2 저장 유닛에 보내는 단계
    를 포함하는 것인 정보 처리 장치의 제어 방법.
  9. 청구항 8에 있어서, 상기 제1 함수는 상기 제2 저장 유닛에 보내는 논리 어드레스와 무관한 고정 데이터를 나타내는 것인 정보 처리 장치의 제어 방법.
  10. 청구항 8에 있어서, 상기 제1 함수는 상기 제2 저장 유닛에 보내는 적어도 2개의 상이한 논리 어드레스에 대해 상이한 데이터를 나타내는 것인 정보 처리 장치의 제어 방법.
  11. 청구항 8에 있어서, 상기 제1 저장 유닛은 비휘발성 저장 유닛이고, 상기 제1 저장 유닛과 상기 제2 저장 유닛은 상이한 비휘발성 저장 장치 내에 포함되는 것인 정보 처리 장치의 제어 방법.
  12. 청구항 8에 있어서,
    상기 제1 저장 유닛은 비휘발성 저장 유닛이고, 상기 제1 저장 유닛과 상기 제2 저장 유닛은 동일한 비휘발성 저장 장치 내에 포함되며,
    상기 제1 논리 어드레스 영역과 상기 제2 논리 어드레스 영역의 논리 어드레스는 서로 겹치지 않는 것인 정보 처리 장치의 제어 방법.
  13. 청구항 8에 있어서, 상기 판정하는 단계가 수행되기 전에, 상기 제2 저장 유닛으로부터 상기 제1 함수의 정보가 수신되는 것인 정보 처리 장치의 제어 방법.
  14. 정보 처리 시스템에 있어서,
    적어도 판독 가능한 제1 메모리를 포함하는 제1 저장 유닛과,
    판독 및 기록 가능한 제2 비휘발성 메모리와, 제어 유닛을 포함하는 제2 저장 유닛으로서, 상기 제어 유닛은, 수신된 삭제 통지에 의해 지정된 논리 어드레스 영역의, 상기 제2 비휘발성 메모리에 대한 하나 이상의 매핑을 무효화하고, 수신된 판독 커맨드에 의해 지정된 논리 어드레스 영역이 상기 제2 비휘발성 메모리에 매핑되지 않는 경우, 제1 함수가 나타내는 데이터를 정보 처리 장치에 송신하도록 구성되는 것인 상기 제2 저장 유닛과,
    상기 제1 저장 유닛과 상기 제2 저장 유닛에 접속될 수 있는 정보 처리 장치
    를 포함하고,
    상기 정보 처리 장치는,
    상기 제1 저장 유닛의 제1 논리 어드레스 영역으로부터 데이터를 판독하는 제1 제어 유닛과,
    상기 제1 논리 어드레스 영역으로부터의 판독 데이터와 상기 제1 함수가 나타내는 데이터가 일치하는지의 여부를 판정하는 제2 제어 유닛과,
    상기 판독 데이터와 상기 제1 함수가 나타내는 데이터가 일치하지 않는 경우, 상기 제2 저장 유닛의 제2 논리 어드레스 영역에 상기 판독 데이터를 기록하는 제3 제어 유닛과,
    상기 판독 데이터와 상기 제1 함수가 나타내는 데이터가 일치하는 경우, 상기 판독 데이터를 상기 제2 저장 유닛에 보내지 않고서, 상기 제2 비휘발성 메모리에 대한 상기 제2 논리 어드레스 영역의 하나 이상의 매핑을 무효화하는 삭제 통지를 상기 제2 저장 유닛에 보내는 제4 제어 유닛
    을 포함하는 것인 정보 처리 시스템.
  15. 청구항 14에 있어서, 상기 제1 함수는 상기 제2 저장 유닛에 보내는 논리 어드레스와 무관한 고정 데이터를 나타내는 것인 정보 처리 시스템.
  16. 청구항 14에 있어서, 상기 제1 함수는 상기 제2 저장 유닛에 보내는 적어도 2개의 상이한 논리 어드레스에 대해 상이한 데이터를 나타내는 것인 정보 처리 시스템.
  17. 청구항 14에 있어서, 상기 제1 저장 유닛은 비휘발성 저장 유닛이고, 상기 제1 저장 유닛과 상기 제2 저장 유닛은 상이한 비휘발성 저장 장치 내에 포함되는 것인 정보 처리 시스템.
  18. 청구항 14에 있어서,
    상기 제1 저장 유닛은 비휘발성 저장 유닛이고, 상기 제1 저장 유닛과 상기 제2 저장 유닛은 동일한 비휘발성 저장 장치 내에 포함되며,
    상기 제1 논리 어드레스 영역과 상기 제2 논리 어드레스 영역의 논리 어드레스는 서로 겹치지 않는 것인 정보 처리 시스템.
  19. 청구항 14에 있어서, 상기 제2 제어 유닛이, 상기 제1 논리 어드레스 영역으로부터의 판독 데이터와 상기 제1 함수가 나타내는 데이터가 일치하는지의 여부를 판정하기 이전에, 상기 제2 저장 유닛으로부터 상기 제1 함수의 정보를 수신하는 제5 제어 유닛을 더 포함하는 정보 처리 시스템.
  20. 청구항 14에 있어서, 상기 제1 저장 유닛은 휘발성 저장 유닛이고, 상기 제1 제어 유닛은, 상기 제1 제어 유닛이 프로그램으로부터 상기 제1 논리 어드레스 영역의 데이터를 상기 제2 저장 유닛에 저장하라는 요구를 수신한 후에, 상기 제1 논리 어드레스 영역으로부터 데이터를 판독하는 것인 정보 처리 시스템.
  21. 제1 저장 유닛과 제2 저장 유닛이 접속될 수 있는 정보 처리 장치에 있어서,
    상기 제1 저장 유닛은 적어도 판독 가능한 제1 메모리를 포함하고,
    상기 제2 저장 유닛은 판독 및 기록 가능한 제2 비휘발성 메모리와, 제어 유닛을 포함하며,
    상기 제어 유닛은, 수신된 삭제 통지에 의해 지정된 논리 어드레스 영역의, 상기 제2 비휘발성 메모리에 대한 하나 이상의 매핑을 무효화하고, 수신된 판독 커맨드에 의해 지정된 논리 어드레스 영역이 상기 제2 비휘발성 메모리에 매핑되지 않는 경우, 제1 함수가 나타내는 데이터를 상기 정보 처리 장치에 송신하도록 구성되고,
    상기 정보 처리 장치는,
    상기 제1 저장 유닛의 제1 논리 어드레스 영역으로부터 데이터를 판독하는 제1 제어 유닛과,
    상기 제1 논리 어드레스 영역으로부터의 판독 데이터와 상기 제1 함수가 나타내는 데이터가 일치하는지의 여부를 판정하는 제2 제어 유닛과,
    상기 판독 데이터와 상기 제1 함수가 나타내는 데이터가 일치하지 않는 경우, 상기 제2 저장 유닛의 제2 논리 어드레스 영역에 상기 판독 데이터를 기록하는 제3 제어 유닛과,
    상기 판독 데이터와 상기 제1 함수가 나타내는 데이터가 일치하는 경우, 상기 판독 데이터를 상기 제2 저장 유닛에 보내지 않고서, 상기 제2 비휘발성 메모리에 대한 상기 제2 논리 어드레스 영역의 하나 이상의 매핑을 무효화하는 삭제 통지를 상기 제2 저장 유닛에 보내는 제4 제어 유닛
    을 포함하는 것인 정보 처리 장치.
  22. 청구항 21에 있어서, 상기 제1 함수는 상기 제2 저장 유닛에 보내는 논리 어드레스와 무관한 고정 데이터를 나타내는 것인 정보 처리 장치.
  23. 청구항 21에 있어서, 상기 제1 함수는 상기 제2 저장 유닛에 보내는 적어도 2개의 상이한 논리 어드레스에 대해 상이한 데이터를 나타내는 것인 정보 처리 장치.
  24. 청구항 21에 있어서, 상기 제1 저장 유닛은 비휘발성 저장 유닛이고, 상기 제1 저장 유닛과 상기 제2 저장 유닛은 상이한 비휘발성 저장 장치 내에 포함되는 것인 정보 처리 장치.
  25. 청구항 21에 있어서,
    상기 제1 저장 유닛은 비휘발성 저장 유닛이고, 상기 제1 저장 유닛과 상기 제2 저장 유닛은 동일한 비휘발성 저장 장치 내에 포함되며,
    상기 제1 논리 어드레스 영역과 상기 제2 논리 어드레스 영역의 논리 어드레스는 서로 겹치지 않는 것인 정보 처리 장치.
  26. 청구항 21에 있어서, 상기 제2 제어 유닛이, 상기 제1 논리 어드레스 영역으로부터의 판독 데이터와 상기 제1 함수가 나타내는 데이터가 일치하는지의 여부를 판정하기 이전에, 상기 제2 저장 유닛으로부터 상기 제1 함수의 정보를 수신하는 제5 제어 유닛을 더 포함하는 정보 처리 장치.
  27. 청구항 21에 있어서, 상기 제1 저장 유닛은 휘발성 저장 유닛이고, 상기 제1 제어 유닛은, 상기 제1 제어 유닛이 프로그램으로부터 상기 제1 논리 어드레스 영역의 데이터를 상기 제2 저장 유닛에 저장하라는 요구를 수신한 후에, 상기 제1 논리 어드레스 영역으로부터 데이터를 판독하는 것인 정보 처리 장치.
KR1020147033999A 2012-06-19 2013-03-25 제어 프로그램을 저장한 저장 매체, 정보 처리 장치의 제어 방법, 정보 처리 시스템, 및 정보 처리 장치 KR20150013235A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JPJP-P-2012-137765 2012-06-19
JP2012137765 2012-06-19
JP2013020765A JP5586718B2 (ja) 2012-06-19 2013-02-05 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置
JPJP-P-2013-020765 2013-02-05
PCT/JP2013/059792 WO2013190878A1 (en) 2012-06-19 2013-03-25 Storage medium storing control program, method of controlling information processing device, information processing system, and information processing device

Publications (1)

Publication Number Publication Date
KR20150013235A true KR20150013235A (ko) 2015-02-04

Family

ID=48191017

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147033999A KR20150013235A (ko) 2012-06-19 2013-03-25 제어 프로그램을 저장한 저장 매체, 정보 처리 장치의 제어 방법, 정보 처리 시스템, 및 정보 처리 장치

Country Status (7)

Country Link
US (2) US9501230B2 (ko)
EP (1) EP2862050B1 (ko)
JP (1) JP5586718B2 (ko)
KR (1) KR20150013235A (ko)
CN (1) CN104412218B (ko)
TW (2) TWI556101B (ko)
WO (1) WO2013190878A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10942848B2 (en) 2019-01-11 2021-03-09 SK Hynix Inc. Apparatus and method for checking valid data in memory system
US10963160B2 (en) 2018-08-14 2021-03-30 SK Hynix Inc. Apparatus and method for checking valid data in block capable of storing large volume data in memory system

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6005566B2 (ja) 2013-03-18 2016-10-12 株式会社東芝 情報処理システム、制御プログラムおよび情報処理装置
US9367448B1 (en) 2013-06-04 2016-06-14 Emc Corporation Method and system for determining data integrity for garbage collection of data storage systems
US9304685B2 (en) 2013-09-10 2016-04-05 Kabushiki Kaisha Toshiba Storage array system and non-transitory recording medium storing control program
US9405761B1 (en) * 2013-10-29 2016-08-02 Emc Corporation Technique to determine data integrity for physical garbage collection with limited memory
JP6525507B2 (ja) * 2014-05-14 2019-06-05 キヤノン株式会社 情報処理装置、情報処理方法及びプログラム
US10120793B2 (en) 2014-12-29 2018-11-06 Toshiba Memory Corporation Memory device and non-transitory computer readable recording medium
US20160291887A1 (en) * 2015-03-30 2016-10-06 Kabushiki Kaisha Toshiba Solid-state drive with non-volatile random access memory
US20160321010A1 (en) 2015-04-28 2016-11-03 Kabushiki Kaisha Toshiba Storage system having a host directly manage physical data locations of storage device
US9774753B2 (en) * 2015-05-28 2017-09-26 Canon Kabushiki Kaisha Image forming apparatus, control method therefor, and storage medium
WO2016194199A1 (ja) * 2015-06-04 2016-12-08 株式会社日立製作所 ストレージ装置
PL3113026T3 (pl) * 2015-06-29 2020-03-31 Aicas Gmbh Automatyczne zarządzanie pamięcią z zastosowaniem modułu sterowania pamięcią
US10656838B2 (en) 2015-07-13 2020-05-19 Samsung Electronics Co., Ltd. Automatic stream detection and assignment algorithm
JP2017033501A (ja) 2015-08-06 2017-02-09 株式会社東芝 記憶装置および制御方法
US20170068480A1 (en) * 2015-09-09 2017-03-09 Mediatek Inc. Power Saving Methodology for Storage Device Equipped with Task Queues
CN105306865B (zh) * 2015-10-29 2019-05-17 四川奇迹云科技有限公司 一种视频监控数据系统
US11010391B2 (en) * 2015-12-30 2021-05-18 Sap Se Domain agnostic similarity detection
US10360108B2 (en) * 2016-01-05 2019-07-23 Acronis International Gmbh System and method of using performance-maintaining commands for generating a backup of unsupported file systems
US10546385B2 (en) 2016-02-25 2020-01-28 Technion Research & Development Foundation Limited System and method for image capture device pose estimation
US10101939B2 (en) 2016-03-09 2018-10-16 Toshiba Memory Corporation Storage system having a host that manages physical data locations of a storage device
TWI587211B (zh) * 2016-03-28 2017-06-11 慧榮科技股份有限公司 資料儲存裝置的映像檔製作方法
US10866905B2 (en) 2016-05-25 2020-12-15 Samsung Electronics Co., Ltd. Access parameter based multi-stream storage device access
KR102229013B1 (ko) * 2016-09-02 2021-03-17 삼성전자주식회사 자동 스트림 검출 및 할당 알고리즘
US10156996B2 (en) * 2016-09-06 2018-12-18 Toshiba Memory Corporation Memory device and read processing method using read counts, first, second, and third addresses
JP6875808B2 (ja) * 2016-09-09 2021-05-26 キヤノン株式会社 情報処理装置
TWI653533B (zh) * 2017-03-07 2019-03-11 慧榮科技股份有限公司 資料儲存裝置以及其操作方法
JP6732684B2 (ja) 2017-03-15 2020-07-29 キオクシア株式会社 情報処理装置、ストレージデバイスおよび情報処理システム
RU2726284C1 (ru) 2017-04-21 2020-07-10 Зенимакс Медиа Инк. Компенсация движения на основании ввода игрока посредством прогнозирования векторов движения
US10372381B2 (en) * 2017-06-05 2019-08-06 International Business Machines Corporation Implicit leader election in a distributed storage network
US10289333B2 (en) * 2017-06-14 2019-05-14 Western Digital Technologies, Inc. Data storage device configured to perform operations using a wireless interface
GB201709499D0 (en) * 2017-06-15 2017-08-02 Microsoft Technology Licensing Llc Memory management in non-volatile memory
US10108538B1 (en) * 2017-07-31 2018-10-23 Google Llc Accessing prologue and epilogue data
US10489257B2 (en) 2017-08-08 2019-11-26 Micron Technology, Inc. Replaceable memory
JP2019057178A (ja) * 2017-09-21 2019-04-11 東芝メモリ株式会社 メモリシステムおよび制御方法
CN109558271B (zh) * 2017-09-26 2023-02-24 深圳大心电子科技有限公司 数据备份方法、数据恢复方法以及存储控制器
US11288180B2 (en) * 2018-01-19 2022-03-29 Micron Technology, Inc. Management of storage resources allocated from non-volatile memory devices to users
JP6443572B1 (ja) 2018-02-02 2018-12-26 富士通株式会社 ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
JP6710232B2 (ja) * 2018-02-27 2020-06-17 三菱重工業株式会社 管理装置、管理方法およびプログラム。
CN108563401B (zh) * 2018-03-27 2021-05-28 深圳忆联信息系统有限公司 一种ssd性能加速方法
JP6901427B2 (ja) * 2018-03-27 2021-07-14 キオクシア株式会社 ストレージ装置、コンピュータシステムおよびストレージ装置の動作方法
KR20200140560A (ko) * 2019-06-07 2020-12-16 삼성전자주식회사 전자 장치 및 그 시스템
US11221776B2 (en) * 2019-12-30 2022-01-11 Micron Technology, Inc. Metadata indication for a memory device
US11789748B2 (en) * 2020-10-05 2023-10-17 SK Hynix Inc. Firmware parameters optimizing systems and methods
CN112363670B (zh) * 2020-10-14 2023-02-03 天津津航计算技术研究所 一种sata ncq命令调度方法
JP7535967B2 (ja) * 2021-03-19 2024-08-19 株式会社Kokusai Electric 管理装置、データ処理方法、プログラム、半導体装置の製造方法および処理システム
US11809711B2 (en) 2022-01-18 2023-11-07 Silicon Motion, Inc. Flash memory scheme capable of decreasing waiting time of trim command

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6073221A (en) * 1998-01-05 2000-06-06 International Business Machines Corporation Synchronization of shared data stores through use of non-empty track copy procedure
US6745305B2 (en) * 2000-12-13 2004-06-01 Ncr Corporation Zeroed block optimization in disk mirroring applications
JP4288037B2 (ja) * 2002-02-25 2009-07-01 インターナショナル・ビジネス・マシーンズ・コーポレーション 記録ディスクを用いた記録装置、記録システムおよびそのバックアップ方法
US7024526B2 (en) * 2002-10-31 2006-04-04 Hitachi, Ltd. Apparatus and method of null data skip remote copy
JP4225378B2 (ja) * 2003-12-17 2009-02-18 インターナショナル・ビジネス・マシーンズ・コーポレーション 複製装置、複製方法、複製プログラム、ブロック識別情報取得プログラム、及び記録媒体
US8122193B2 (en) 2004-12-21 2012-02-21 Samsung Electronics Co., Ltd. Storage device and user device including the same
US9207876B2 (en) 2007-04-19 2015-12-08 Microsoft Technology Licensing, Llc Remove-on-delete technologies for solid state drive optimization
US8706950B2 (en) 2008-03-01 2014-04-22 Kabushiki Kaisha Toshiba Memory system
JP5052376B2 (ja) 2008-03-21 2012-10-17 株式会社日立製作所 ストレージシステム及びストレージシステムにおける論理ユニットの引継方法
JP4164118B1 (ja) 2008-03-26 2008-10-08 眞澄 鈴木 フラッシュメモリを用いた記憶装置
EP2353075A1 (en) * 2008-11-07 2011-08-10 Dell Compellent Thin import for a data storage system
JP5317689B2 (ja) 2008-12-27 2013-10-16 株式会社東芝 メモリシステム
JP5275052B2 (ja) 2009-01-08 2013-08-28 株式会社東芝 不揮発性半導体記憶装置
JP4764490B2 (ja) 2009-03-30 2011-09-07 株式会社東芝 ハードウェア使用状況に応じたユーザー評価装置
US8364931B2 (en) * 2009-06-29 2013-01-29 Mediatek Inc. Memory system and mapping methods using a random write page mapping table
KR101759926B1 (ko) 2009-07-23 2017-07-21 삼성전자주식회사 메모리 반도체 장치, 그 제조 방법 및 동작 방법
US8386537B2 (en) 2009-12-15 2013-02-26 Intel Corporation Method for trimming data on non-volatile flash media
JP2011128998A (ja) 2009-12-18 2011-06-30 Toshiba Corp 半導体記憶装置
JP5214656B2 (ja) 2010-03-29 2013-06-19 株式会社東芝 評価装置および評価プログラム
US8661189B2 (en) 2010-08-31 2014-02-25 Apple Inc. Systems and methods for trimming logical block addresses corresponding to a data structure residing in non-volatile memory
JP5066241B2 (ja) * 2010-09-24 2012-11-07 株式会社東芝 メモリシステム
KR101893897B1 (ko) 2010-10-29 2018-08-31 삼성전자주식회사 메모리 시스템 및 사용자 장치 그리고 그것의 데이터 관리 방법
JP2012123499A (ja) * 2010-12-07 2012-06-28 Toshiba Corp メモリシステム
JP5002719B1 (ja) 2011-03-10 2012-08-15 株式会社東芝 情報処理装置、外部記憶装置、ホスト装置、中継装置、制御プログラム及び情報処理装置の制御方法
JP5405513B2 (ja) 2011-03-22 2014-02-05 株式会社東芝 メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法、及びプログラム
JP2012221251A (ja) 2011-04-08 2012-11-12 Toshiba Corp メモリシステムの制御方法、情報処理装置、及びプログラム
EP2745203B1 (en) 2011-08-19 2016-09-21 Kabushiki Kaisha Toshiba Information processing apparatus
JP5112566B1 (ja) 2011-12-16 2013-01-09 株式会社東芝 半導体記憶装置、不揮発性半導体メモリの検査方法、及びプログラム
JP5659178B2 (ja) 2012-03-16 2015-01-28 株式会社東芝 不揮発性記憶装置及び不揮発性メモリの制御方法
US9201784B2 (en) 2012-09-07 2015-12-01 Kabushiki Kaisha Toshiba Semiconductor storage device and method for controlling nonvolatile semiconductor memory

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10963160B2 (en) 2018-08-14 2021-03-30 SK Hynix Inc. Apparatus and method for checking valid data in block capable of storing large volume data in memory system
US10942848B2 (en) 2019-01-11 2021-03-09 SK Hynix Inc. Apparatus and method for checking valid data in memory system

Also Published As

Publication number Publication date
TWI516920B (zh) 2016-01-11
TW201604688A (zh) 2016-02-01
EP2862050B1 (en) 2019-10-16
US20150143032A1 (en) 2015-05-21
JP5586718B2 (ja) 2014-09-10
TWI556101B (zh) 2016-11-01
US20170024156A1 (en) 2017-01-26
US9501230B2 (en) 2016-11-22
EP2862050A1 (en) 2015-04-22
CN104412218B (zh) 2017-05-03
US9880766B2 (en) 2018-01-30
TW201401047A (zh) 2014-01-01
WO2013190878A1 (en) 2013-12-27
JP2014026635A (ja) 2014-02-06
CN104412218A (zh) 2015-03-11

Similar Documents

Publication Publication Date Title
EP2862050B1 (en) Storage medium storing control program, method of controlling information processing device, information processing system, and information processing device
JP5989875B2 (ja) 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置
US9811277B2 (en) Information processing system
JP6212137B2 (ja) ストレージ装置及びストレージ装置の制御方法
US20180081821A1 (en) Metadata Management in a Scale Out Storage System
US9176881B2 (en) Computer system and storage control method
US10936412B1 (en) Method and system for accessing data stored in data cache with fault tolerance
US20080028164A1 (en) File storage control device and method
US8359431B2 (en) Storage subsystem and its data processing method for reducing the amount of data to be stored in a semiconductor nonvolatile memory
JP6429963B2 (ja) ストレージ装置及びストレージ装置の制御方法
US10733105B1 (en) Method for pipelined read optimization to improve performance of reading data from data cache and storage units
US20190243758A1 (en) Storage control device and storage control method
US20110153954A1 (en) Storage subsystem
US20230075437A1 (en) Techniques for zoned namespace (zns) storage using multiple zones
US10489301B1 (en) Method and system for metadata churn absorption
US10908818B1 (en) Accessing deduplicated data from write-evict units in solid-state memory cache
US10565120B1 (en) Method for efficient write path cache load to improve storage efficiency
US10474588B1 (en) Method and system for memory-based data caching
US11782842B1 (en) Techniques for reclaiming dirty cache pages

Legal Events

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