KR20150113158A - 정보 처리 시스템, 제어 프로그램, 및 정보 처리 디바이스 - Google Patents

정보 처리 시스템, 제어 프로그램, 및 정보 처리 디바이스 Download PDF

Info

Publication number
KR20150113158A
KR20150113158A KR1020157023650A KR20157023650A KR20150113158A KR 20150113158 A KR20150113158 A KR 20150113158A KR 1020157023650 A KR1020157023650 A KR 1020157023650A KR 20157023650 A KR20157023650 A KR 20157023650A KR 20150113158 A KR20150113158 A KR 20150113158A
Authority
KR
South Korea
Prior art keywords
storage unit
data
storage
status
address
Prior art date
Application number
KR1020157023650A
Other languages
English (en)
Other versions
KR101803622B1 (ko
Inventor
다이스케 하시모토
고이치 나가이
다카노리 와타나베
Original Assignee
가부시끼가이샤 도시바
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 가부시끼가이샤 도시바 filed Critical 가부시끼가이샤 도시바
Publication of KR20150113158A publication Critical patent/KR20150113158A/ko
Application granted granted Critical
Publication of KR101803622B1 publication Critical patent/KR101803622B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/008Reliability or availability analysis
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0647Migration mechanisms
    • 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/0653Monitoring storage devices or 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/80Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
    • G11C29/816Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout
    • G11C29/82Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout for EEPROMs
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • 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 저장 유닛으로부터 취득된 신뢰성 정보에 기초하여 제 1 저장 유닛의 저장 스테이터스를 결정하고, 제 2 저장 유닛 상의 기록을 실행하며 제 1 및 제 2 저장 유닛들 중의 적어도 하나 상의 판독을 실행하고, 기록에 따라 제 1 및 제 2 저장 유닛들에서 저장된 데이터의 어드레스들을 업데이트한다.

Description

정보 처리 시스템, 제어 프로그램, 및 정보 처리 디바이스{INFORMATION PROCESSING SYSTEM, CONTROL PROGRAM, AND INFORMATION PROCESSING DEVICE}
관련 출원들에 대한 교차-참조
이 출원은 2013년 3월 18일자로 출원된 일본 특허 출원 제2013-055548호로부터 우선권의 이익을 주장하며, 이 일본 특허 출원의 전체 내용은 참조를 위해 본원에 편입된다.
본원에서 개시된 실시형태들은 제 1 저장 유닛의 데이터를 제 2 저장 유닛으로 마이그레이팅(migrating)하기 위한 정보 처리 시스템, 제어 프로그램, 및 정보 처리 디바이스에 관한 것이다.
개인용 컴퓨터 또는 서버를 위한 2차 저장 디바이스가 플래시 메모리를 이용하여 구성될 때, 일부의 경우들에 있어서, 예를 들어, 에러들이 종종 발생하기 때문에, 저장 영역으로서 이용될 수 없는 결함 블록 또는 판독될 수 없는 결함 영역이 있다. 결함 블록들의 수 또는 결함 영역들의 수가 상한 값을 초과할 때, 새로운 결함 블록 또는 결함 영역이 등록될 수 없으므로, 플래시 메모리에서의 기록-요청된 데이터의 기록은 보장될 수 없다. 그러므로, 결함 블록들의 수 또는 결함 영역들의 수가 상한 값을 초과할 때, 플래시 메모리에서 자유 영역(free area)이 있을 경우에도, 데이터의 기록은 갑자기 불가능하게 된다.
그러므로, 저장 디바이스의 열화를 모니터링하고, 저장 디바이스의 수명 종료 전에 정보 처리 디바이스로부터 저장 디바이스로의 데이터의 기록을 제한하는 방법이 있다. 이 방법으로, 또 다른 저장 디바이스에 사용자 데이터를 백업하고, 저장 디바이스의 수명 종료 전에 사용자 데이터를 마이그레이팅하며 저장 디바이스의 수명 종료로 인한 데이터 손실을 방지하는 것이 가능하다.
그러나, 이 방법은 다른 저장 디바이스에서 사용자 데이터를 백업하기 위한 작업이 수행되어야 하기 때문에 복잡하다. 또한, 백업을 위한 원래의 저장 디바이스에서의 데이터 기록이 정보 처리 디바이스에 의해 제한되므로, 정보 처리 디바이스에서 로딩된 다양한 애플리케이션 프로그램의 동작이 제한되고 애플리케이션 프로그램들의 처리 속도가 떨어질 가능성이 있다.
이하에 열거된 관련된 기술에 관한 문헌들이 있다.
특허 문헌 1: 미국 특허 출원 공개 제2012/0284453호
특허 문헌 2: 미국 특허 출원 공개 제2012/0246388호
특허 문헌 3: 미국 특허 출원 공개 제2009/0222617호
특허 문헌 4: 미국 특허 제8,230,164호
특허 문헌 5: 미국 특허 제7,861,122호
특허 문헌 6: 미국 특허 제7,840,836호
특허 문헌 7: 미국 특허 출원 공개 제2007/0214187호
특허 문헌 8: 미국 특허 제7,606,946호
특허 문헌 9: 미국 특허 제6,529,992호
특허 문헌 10: 미국 특허 제7,222,259호
특허 문헌 11: 미국 특허 제7,424,639호
특허 문헌 12: 미국 특허 제7,739,544호
특허 문헌 13: 미국 특허 제7,525,749호
특허 문헌 14: 미국 특허 제8,037,380호
특허 문헌 15: 미국 특허 출원 공개 제2010/0325199호
특허 문헌 16: 미국 특허 출원 공개 제2011/0239083호
특허 문헌 17: 일본 특허 제5,052,376호
특허 문헌 18: 일본 특허 출원 공개 제2010-225021호
특허 문헌 19: 일본 특허 제3,565,687호
특허 문헌 20: 미국 특허 제8,176,367호
특허 문헌 21: 미국 특허 출원 공개 제2011/0197045호
특허 문헌 22: 일본 특허 제4,643,456호
특허 문헌 23: 일본 특허 제4,764,490호
특허 문헌 24: 일본 특허 출원 공개 제2011-209879호
특허 문헌 25: WO2013/027642
비-특허 문헌 1: Information technology(정보 기술) ATA/ATAPI Command Set-3 (ACS-3), d2161r4-ATAATAPI_Command_Set_-_3.pdf, Sep. 04. 2012, http://www.t13.org/
비-특허 문헌 2: NVM Express Revision 1.1, Oct. 11. 2012, NVM_Express_1_1.pdf, http://www.nvmexpress.org/
비-특허 문헌 3: Serial ATA International Organization: Serial ATA Revision 3.1 Gold Revision, Jul. 18. 2011, http://www.serialata.org/
비-특허 문헌 4: PCI Express Base Specification Revision 3.0, Nov. 10. 2010, http://www.pcisig.com/
비-특허 문헌 5: Serial ATA Technical Proposal: SATA31_TPR_C108 Title: Device Sleep, http://www.serialata.org/
비-특허 문헌 6: SCSI Primary Commands-4 (SPC-4), INCITS T10/1731-D, Revision 36e, http://www.t10.org/
비-특허 문헌 7: Masaru Kitsuregawa, "Yokuwakaru Storage Networking", First Edition, Ohm, Ltd., May 20, 2011, p. 6 내지 9 및 p. 67 내지 93
도 1은 제 1 실시형태에서의 정보 처리 시스템의 기능적 구성 예의 블록도이고;
도 2는 제어 프로그램을 SSD에 저장함에 있어서의 정보 처리 시스템의 기능적 구성 예의 블록도이고;
도 3은 제어 프로그램을 또 다른 외부 저장 디바이스에 저장함에 있어서의 정보 처리 시스템의 기능적 구성 예의 블록도이고;
도 4는 제어 프로그램을 웹(WEB)으로부터 설치함에 있어서의 정보 처리 시스템의 기능적 구성 예의 블록도이고;
도 5는 제어 프로그램을 광학 드라이브로부터 설치함에 있어서의 정보 처리 시스템의 기능적 구성 예의 블록도이고;
도 6은 제어 프로그램을 USB 메모리로부터 설치함에 있어서의 정보 처리 시스템의 기능적 구성 예의 블록도이고;
도 7은 정보 처리 디바이스의 계층적 기능 구성 예의 블록도이고;
도 8은 정보 처리 시스템의 외부 구성의 도면이고;
도 9는 정보 처리 시스템의 또 다른 외부 구성의 도면이고;
도 10은 NAND 메모리 칩의 기능적 구성 예의 블록도이고;
도 11은 NAND 메모리 칩 내에 포함된 하나의 평면(plane)의 구성 예의 회로도이고;
도 12는 4-레벨 데이터 저장 방법에서의 문턱 전압 분포의 도면이고;
도 13은 SSD의 기능적 구성 예의 블록도이고;
도 14는 SSD의 관리 정보의 도면이고;
도 15는 SSD의 LBA 및 관리 단위 사이의 관계의 도면이고;
도 16은 LBA로부터 물리 어드레스를 특정하기 위한 절차를 설명하기 위한 플로우차트이고;
도 17은 SSD로부터의 판독 동작의 예를 설명하기 위한 플로우차트이고;
도 18은 SSD로부터의 판독 동작의 예를 설명하기 위한 플로우차트이고;
도 19는 SSD로부터의 판독 동작의 예를 설명하기 위한 플로우차트이고;
도 20a 및 도 20b는 SSD로부터의 판독 동작의 예를 설명하기 위한 플로우차트이고;
도 21은 NAND GC를 수행함에 있어서의 동작 절차를 설명하기 위한 플로우차트이고;
도 22는 삭제 통지가 수신될 때에 수행된 SSD의 동작 예를 설명하기 위한 플로우차트이고;
도 23은 에러가 발생할 때에 수행된 SSD의 동작 예를 설명하기 위한 플로우차트이고;
도 24는 통계 정보 취득 처리를 설명하기 위한 플로우차트이고;
도 25는 배드 논리 섹터 테이블의 도면이고;
도 26은 배드 클러스터 테이블의 도면이고;
도 27a 및 도 27b는 통계 정보의 예로서 작용하는 SMART 정보의 도면이고;
도 28은 통계 정보의 원시 값(Raw Value) 및 SSD의 거부 비율 사이의 관계의 그래프이고;
도 29는 에러 명령 응답 핸들링 처리를 설명하기 위한 플로우차트이고;
도 30은 또 다른 에러 명령 응답 핸들링 처리를 설명하기 위한 플로우차트이고;
도 31은 수명 종료 처리가 수행되기 전에 정보 처리 디바이스에 의해 관리된 데이터의 구성 예의 도면이고;
도 32는 부트 로더(Boot Loader)의 내부 데이터의 도면이고;
도 33은 메타데이터의 구성 예의 도면이고;
도 34는 애플리케이션 프로그램이 논리 드라이브에 대한 액세스 요청을 OS로 송신할 때에 수행된 절차의 플로우차트이고;
도 35는 예를 들어, 정보 처리 디바이스가 시작될 때에 수행된 제어 프로그램의 처리 절차를 설명하기 위한 플로우차트이고;
도 36은 저장 유닛의 수명 사이클을 설명하기 위한 상태 천이도이고;
도 37은 저장 유닛의 수명 사이클을 설명하기 위한 상태 천이도이고;
도 38은 데이터 마이그레이션 출발지 저장 유닛 및 데이터 마이그레이션 목적지 저장 유닛이 접속되는 상태에서 정보 처리 디바이스에 의해 관리된 데이터의 구성 예의 도면이고;
도 39는 저장 유닛의 수명 사이클의 상태 천이도이고;
도 40은 수명 종료 처리에서 제어 프로그램에 의해 수행된 처리를 설명하기 위한 플로우차트이고;
도 41은 논리 드라이브 스테이터스 테이블(status table)의 도면이고;
도 42는 기록 요청이 애플리케이션 프로그램으로부터 OS로 송신될 때에 수행된 OS의 처리 절차를 설명하기 위한 플로우차트이고;
도 43은 삭제 요청이 애플리케이션 프로그램으로부터 OS로 송신될 때에 수행된 OS의 처리 절차를 설명하기 위한 플로우차트이고;
도 44는 판독 요청이 애플리케이션 프로그램으로부터 OS로 송신될 때에 수행된 OS의 처리 절차를 설명하기 위한 플로우차트이고;
도 45는 백그라운드 백업(background backup)의 처리 절차를 설명하기 위한 플로우차트이고;
도 46은 데이터 마이그레이션이 완료될 때에 수행된 제어 프로그램의 동작 절차를 설명하기 위한 플로우차트이고;
도 47은 데이터 마이그레이팅 상태에서 논리 드라이브로부터의 판독의 개념도이고;
도 48은 데이터 마이그레이팅 상태에서 논리 드라이브에서의 기록의 개념도이고;
도 49는 제 2 실시형태에서의 정보 처리 시스템의 기능적 구성 예의 블록도이고;
도 50은 데이터 마이그레이션 로그의 도면이고;
도 51은 데이터 마이그레이션 로그에서의 로그의 기록 예의 도면이고;
도 52는 수명 종료 처리를 설명하기 위한 플로우차트이고;
도 53a 및 도 53b는 논리 드라이브로부터의 판독의 동작 절차를 설명하기 위한 플로우차트이고;
도 54는 LBA 데이터 삭제 요청이 애플리케이션 프로그램으로부터 OS로 송신될 때에 수행된 OS의 처리 절차를 설명하기 위한 플로우차트이고;
도 55는 논리 드라이브에서의 기록의 동작 절차를 설명하기 위한 플로우차트이고;
도 56은 데이터 마이그레이션 로그를 이용하여 수행된 데이터 마이그레이팅 상태의 모니터링 절차를 설명하기 위한 플로우차트이고;
도 57은 저장 유닛이 수명 종료에 도달할 때에 발생하는 논리 드라이브의 상태들의 천이의 도면이고;
도 58은 제 3 실시형태에서의 정보 처리 시스템의 기능적 구성 예의 블록도이고;
도 59는 정상 상태에서의 어레이 LBA(array LBA; ALBA) 및 저장 유닛 LBA(storage unit LBA; SLBA)에 대한 변환 방법을 설명하기 위한 도면이고;
도 60은 마이그레이션 상태 천이 직후의 어레이 LBA(ALBA) 및 저장 유닛 LBA(SLBA)에 대한 변환 방법을 설명하기 위한 도면이고;
도 61은 데이터 마이그레이션 로그의 도면이고;
도 62는 수명 종료 처리를 설명하기 위한 플로우차트이고;
도 63은 예를 들어, RAID 제어기가 시작될 때에 수행된 제어 유닛의 처리 절차를 설명하기 위한 플로우차트이고;
도 64는 판독 요청을 실행함에 있어서의 RAID 제어기의 처리 절차를 설명하기 위한 플로우차트이고;
도 65는 판독 요청을 실행함에 있어서의 RAID 제어기의 또 다른 처리 절차를 설명하기 위한 플로우차트이고;
도 66은 기록 요청을 실행함에 있어서의 RAID 제어기의 처리 절차를 설명하기 위한 플로우차트이고;
도 67은 기록 처리의 구체적인 예의 도면이고;
도 68은 데이터 마이그레이션 로그를 이용하여 수행된 데이터 마이그레이팅 상태에 대한 모니터링 절차를 설명하기 위한 플로우차트이고;
도 69는 저장 유닛들의 상태들의 천이의 도면이고;
도 70은 하나의 저장 유닛의 데이터 마이그레이팅 상태 및 또 다른 저장 유닛의 고장이 동시에 발생하는 예의 도면이고;
도 71은 2 개의 저장 유닛들의 데이터 마이그레이팅 상태 및 또 다른 저장 유닛의 고장이 동시에 발생하는 예의 도면이고;
도 72는 하나의 저장 유닛의 데이터 마이그레이팅 상태에서, 정정불가능한 ECC 에러가 또 다른 저장 유닛에서 발생하는 예의 도면이고;
도 73은 제 4 실시형태에서의 정보 처리 시스템의 기능적 구성 예의 블록도이고;
도 74는 제 4 실시형태에서의 정보 처리 시스템의 또 다른 기능적 구성 예의 블록도이고;
도 75는 스테이터스 테이블의 도면이고;
도 76은 제 5 실시형태에서의 정보 처리 시스템의 기능적 구성 예의 블록도이고;
도 77은 제 6 실시형태에서의 정보 처리 시스템의 기능적 구성 예의 블록도이고;
도 78은 제 6 실시형태에서의 정보 처리 시스템의 또 다른 기능적 구성 예의 블록도이고;
도 79는 정상 상태로부터 낮은 신뢰성 상태로의 제어 유닛의 천이 동작을 설명하기 위한 플로우차트이고;
도 80은 제어 유닛이 CPU로부터 저장 유닛에 대한 저장 유닛 정보 요청을 수신할 때에 수행된 처리 절차의 예를 설명하기 위한 플로우차트이고;
도 81은 제어 유닛이 CPU로부터 저장 유닛에 대한 저장 유닛 정보 요청을 수신할 때에 수행된 또 다른 처리 절차의 예를 설명하기 위한 플로우차트이고;
도 82는 정보 처리 디바이스에서의 드라이브 디스플레이 화면 예의 도면이고;
도 83은 정보 처리 디바이스에서의 또 다른 드라이브 디스플레이 화면 예의 도면이고;
도 84는 정보 처리 디바이스에서의 또 다른 디스플레이 화면 예의 도면이고; 그리고
도 85는 제 6 실시형태에서의 정보 처리 시스템의 또 다른 기능적 구성 예의 블록도이다.
실시형태에 따르면, 정보 처리 시스템은 판독가능하고 기록가능한 제 1 메모리를 포함하는 제 1 저장 유닛, 판독가능하고 기록가능한 제 2 메모리를 포함하는 제 2 저장 유닛, 및 제 1 저장 유닛 및 제 2 저장 유닛에 접속가능한 정보 처리 디바이스를 포함한다. 정보 처리 디바이스는 제 1 저장 유닛으로부터 취득된 신뢰성 정보에 기초하여, 제 1 저장 유닛의 저장 스테이터스를 결정하기 위한 제 1 처리, 제 1 저장 유닛의 저장 스테이터스가 제 1 처리에 의해 보호된 상태로서 인식될 때, 제 2 저장 유닛 상에서의 기록을 실행하고 제 1 및 제 2 저장 유닛들 상에서의 판독을 실행하기 위한 제 2 처리, 및 제 2 처리에 의한 기록에 따라 제 1 및 제 2 저장 유닛들에서 저장된 데이터의 어드레스들을 업데이트하기 위한 제 3 처리를 실행하도록 구성된 제어 유닛을 포함한다.
실시형태들에 따른 정보 처리 시스템들, 제어 프로그램들, 및 정보 처리 디바이스들은 첨부한 도면들을 참조하여 이하에서 상세하게 설명된다. 발명은 실시형태들에 의해 제한되지 않는다.
(제 1 실시형태)
시스템의 구성
정보 처리 시스템의 예인, 제 1 실시형태에서의 컴퓨터 시스템의 구성이 도 1에서 도시되어 있다. 정보 처리 시스템(1)은 정보 처리 디바이스(111), 하나 또는 복수의 저장 유닛들, 정보 처리 디바이스(111) 및 저장 유닛들을 접속하도록 구성된 인터페이스(19)를 포함한다. 이 실시형태에서, 비휘발성 저장 디바이스인 SSD(Solid State Drive; 고체 상태 드라이브)는 저장 유닛으로서 이용된다. 그러나, 저장 유닛은 하드 디스크 드라이브(hard disk drive; HDD), 하이브리드 드라이브, SD 카드, USB 메모리, NAND 플래시 메모리 칩, 자기 테이프, 내장된 멀티미디어 카드(embedded Multi Media Card; eMMC), 및 미국 특허 출원 공개 제2012/0117354호에서 설명된 저장 디바이스 및 메모리 노드와 같은 다른 저장 디바이스들일 수 있다. 하나의 저장 디바이스 내에 포함된 복수의 저장 영역들은 각각 별도의 저장 유닛들로서 시용될 수 있다. 이 실시형태에서의 다음의 설명에서는, 직렬 고급 기술 결합(Serial Advanced Technology Attachment; SATA) 인터페이스가 인터페이스(19)로서 이용된다. 그러나, PCI Express(Peripheral Component Interconnect Express; PCIe), 범용 직렬 버스(Universal Serial Bus; USB), 직렬 결합된 SCSI(Serial Attached SCSI; SAS), Thunderbolt(등록 상표), Ethernet(등록 상표), 파이버 채널(Fibre channel) 등이 이용될 수 있다. CPU(제어 회로)(5)는 정보 처리 디바이스(111)에서의 중앙 처리 유닛이다. 정보 처리 디바이스(111)에서의 다양한 계산들 및 제어들은 CPU(5)에 의해 수행된다. CPU(5) 및 칩셋(7)은 직접 매체 인터페이스(Direct Media Interface; DMI)와 같은 인터페이스에 의해 접속된다. CPU(5)는 칩셋(7)을 통해 저장 유닛(2) 및 DVD 드라이브와 같은 광학 드라이브(10)의 제어를 수행한다. CPU(5)는 주 메모리(6)의 제어를 수행한다. 주 메모리(6)로서, 예를 들어, 동적 랜덤 액세스 메모리(Dynamic Random Access Memory; DRAM), 자기저항 랜덤 액세스 메모리(Magnetoresistive Random Access Memory; MRAM), 저항 랜덤 액세스 메모리(Resistance Random Access Memory; ReRAM), 및 강유전성 랜덤 액세스 메모리(Ferroelectric Random Access Memory; FeRAM)가 채택될 수 있다.
사용자는 키보드(14) 또는 마우스(15)와 같은 입력 디바이스를 통해 정보 처리 디바이스(111)의 제어를 수행한다. 키보드(14) 또는 마우스(15)로부터의 신호는 예를 들어, USB(Universal Serial Bus) 제어기(13) 및 칩셋(7)을 통해 CPU(5)에 의해 처리된다. CPU(5)는 디스플레이 제어기(8)를 통해 화상 데이터 및 텍스트 데이터를 디스플레이(디스플레이 디바이스)에 전송한다. 사용자는 디스플레이(9)를 통해, 정보 처리 디바이스(111)로부터 전송된 화상 데이터 및 텍스트 데이터를 시각적으로 인식할 수 있다.
CPU(5)는 정보 처리 디바이스(111)의 동작을 제어하도록 제공된 처리기이다. CPU(5)는 예를 들어, 저장 유닛(2)으로부터 주 메모리(6)로 로딩된 오퍼레이팅 시스템(operating system; OS)(100)을 실행한다. 또한, 광학 드라이브(10)가 삽입된 광학 디스크 상에서의 판독 처리 및 기록 처리 중의 적어도 하나의 실행을 가능하게 할 때, CPU(5)는 처리를 실행한다. CPU(5)는 ROM(11) 내에 저장된 통합된 확장가능한 펌웨어 인터페이스(Unified Extensible Firmware Interface; UEFI) 펌웨어, 시스템 기본 입력/출력 시스템(Basic Input/Output System; BIOS) 등을 실행한다. UEFI 펌웨어 및 시스템 BIOS는 정보 처리 디바이스(111)에서의 하드웨어 제어를 위한 프로그램들이다. 게다가, CPU(5)는 칩셋(7)을 통해 네트워크 제어기(12)를 제어한다. 네트워크 제어기(12)로서, 예를 들어, 로컬 영역 네트워크(Local Area Network; LAN) 제어기 및 무선 LAN 제어기가 있다.
주 메모리(6)는 프로그램 및 데이터를 일시적으로 저장하고, CPU(5)의 작업 메모리로서 기능한다. 주 메모리(6)는 OS(100)를 저장하기 위한 저장 영역(6A) 및 제어 프로그램(200)을 저장하기 위한 저장 영역(6B)을 포함한다. 예를 들어, Windows(등록 상표)로서 일반적으로 알려진 바와 같이, OS(100)는 전체적인 정보 처리 디바이스(111)를 관리하기 위한 프로그램으로서, 예를 들어, 정보 처리 디바이스(111)의 입력 및 출력 디바이스를 관리하고, 저장 유닛 및 메모리를 관리하고, 소프트웨어가 정보 처리 디바이스(111)의 하드웨어 및 저장 디바이스를 이용하는 것을 가능하게 하기 위한 제어를 수행하기 위한 프로그램이다. 이 실시형태에서 설명된 예에서, 제어 프로그램(200)은 OS(100)의 일부이다. 그러나, 제어 프로그램(200) 및 OS(100)는 독립적인 프로그램들일 수 있다. 이 실시형태에서, 제어 프로그램(200)은 인터페이스(19)를 통해 주 메모리(6)로 판독되고 실행된 프로그램으로서 설명된다. 그러나, 제어 프로그램(200)은 ROM(11) 내에 저장될 수 있고, UEFI 펌웨어 또는 시스템 BIOS의 일부로서 동작한다. 제어 프로그램(200)은 정보 처리 디바이스(111)에서 하드웨어로서 구현될 수 있다. 주 메모리(6)에서는, 메타데이터(300) 및 논리 드라이브 스테이터스 테이블(450)이 저장된다.
디스플레이 제어기(8)는 정보 처리 디바이스(111)의 디스플레이(9)를 제어하도록 구성된 비디오 재생 제어기이다. 칩셋(7)은 CPU(5)의 로컬 버스에 접속된 브릿지 디바이스(bridge device)이다. 칩셋(7)은 인터페이스(19)를 통해 다양한 종류들의 소프트웨어 및 데이터를 저장하도록 구성된 저장 디바이스들인 저장 유닛(2) 및 저장 유닛(3)을 제어한다. 저장 유닛(2) 및 저장 유닛(3)은 칩셋(7)을 통해 CPU(5)에 접속될 수 있거나, CPU(5)에 직접적으로 접속될 수 있다.
정보 처리 디바이스(111)는 논리 섹터의 단위로 저장 유닛(2) 및 저장 유닛(3)을 액세스한다. 기록 명령(기록 요청), 판독 명령(판독 요청), 플래시 명령 등은 인터페이스(19)를 통해 저장 유닛(2) 및 저장 유닛(3)에 입력된다.
칩셋(7)은 또한, ROM(11), 광학 드라이브(10), 네트워크 제어기(12), 및 USB 제어기(13)가 액세스 제어를 거치게 하기 위한 기능을 가진다. 키보드(14) 및 마우스(15)는 USB 제어기(13)에 접속된다.
제어 프로그램의 형태
이 실시형태에서는, 예를 들어, 도 2에서 도시된 바와 같이, 정보 처리 디바이스(111)가 오프(off)일 때, 제어 프로그램(200)은 저장 유닛(2)의 NAND 플래시 메모리(NAND 메모리)(16)의 영역(16B)에서 저장된다. 도 2에서 도시된 바와 같이, 정보 처리 디바이스(111)가 시작되거나 프로그램이 시작될 때, 제어 프로그램(200)은 NAND 메모리(16)의 영역(16B)으로부터 주 메모리(6) 상의 영역(6B)으로 로딩된다. 다른 한편으로, 복수의 저장 유닛들이 정보 처리 디바이스(111)에 접속될 때, 예를 들어, 저장 유닛(2) 및 저장 유닛(3)으로부터 별도인 저장 유닛(20)이 정보 처리 디바이스(111)에 접속될 때에는, 도 3에서 도시된 바와 같이, 제어 프로그램(200)은 저장 유닛(20)의 영역(20B)에서 저장될 수 있다. 다음으로, 정보 처리 디바이스(111)가 시작되거나 프로그램이 시작될 때, 제어 프로그램(200)은 영역(20B)으로부터 주 메모리(6) 상의 영역(6B)으로 로딩된다. 특히, 저장 유닛(20)이 OS를 저장하도록 구성된 시스템 드라이브로서 이용되고 저장 유닛(2)이 문서, 정지 화상 데이터, 동화상 데이터와 같은 사용자 데이터를 저장하도록 구성된 데이터 드라이브로서 이용될 때, 저장 유닛(2) 및 저장 유닛(20)의 역할들을 명확하게 구별하는 측면에서, 시스템 드라이브로서 기능하는 저장 유닛(20) 내에 제어 프로그램(200)을 저장하는 것이 바람직하다. 예를 들어, 시스템 드라이브로서 기능하는 저장 유닛(20)은 OS 및 애플리케이션 프로그램을 주로 저장하도록 구성된 저장 드라이브로서 이용되고, 데이터 드라이브로서 기능하는 저장 유닛(2)은 사용자 데이터를 저장하도록 구성된 저장 드라이브로서 이용된다.
사용자에 의한 제어 프로그램(200)의 셋업(setup)을 위한 노력을 절감하는 측면에서, 예를 들어, 도 2 및 도 3에서 도시된 바와 같이, 제어 프로그램(200)이 저장 유닛(2) 또는 저장 유닛(20) 내에 저장되는 상태에서, 정보 처리 시스템(1)이 제조업체로부터 출하되고, 가게에 전시되고, 사용자에게 전달되는 것이 바람직하다. 다른 한편으로, 사용자가 제어 프로그램(200)의 설치의 속성을 선택하는 것을 가능하게 하는 측면에서, 그리고 최신 제어 프로그램이 사용자에게 제공되는 것을 가능하게 하는 측면에서, 웹으로부터의 다운로드 또는 DVD-ROM 또는 USB 메모리와 같은 외부 저장 매체로부터의 설치에 의해, 제어 프로그램(200)이 저장 유닛(2) 또는 저장 유닛(20) 내에 저장될 수 있는 것이 바람직하다.
도 4는 웹으로부터의 다운로드의 예이다. 제어 프로그램(200)은 웹 서버(21)에서의 저장 매체(22)의 영역(22B)에서 저장된다. 제어 프로그램(200)은 인터넷, 로컬 네트워크, 또는 무선 LAN과 같은 네트워크를 거쳐 예를 들어, 네트워크 제어기(12)를 통해 저장 유닛의 NAND 메모리(16) 상의 영역(16B)에서 다운로딩(또는 설치)된다. 저장 매체(22)로서, 예를 들어, SSD, HDD, 하이브리드 드라이브, 또는 자기 테이프가 이용된다. 도 3의 경우에는, 제어 프로그램(200)이 저장 유닛(20) 상의 영역(20B)으로 다운로딩되거나 저장 유닛(20) 상의 영역(20B)에서 설치된다.
도 5는 광학 매체로부터의 설치의 예이다. 제어 프로그램은 DVD-ROM, CD-ROM, DVD-RW, 또는 Blu-ray(등록 상표) 디스크와 같은 광학 매체(23) 내에 저장된다. 광학 매체(23)가 광학 드라이브(10) 상에 설정될 때, 제어 프로그램(200)은 광학 드라이브(10)를 통해 저장 유닛(2)의 NAND 메모리(16) 상의 영역(16B)(또는 영역(20B))에서 설치된다.
도 6은 USB 메모리로부터의 설치의 예이다. 제어 프로그램(200)은 USB 메모리(24)의 영역(24B)에서 저장된다. USB 메모리(24)가 USB 제어기(13)에 접속될 때, 제어 프로그램(200)은 USB 제어기(13)를 통해 저장 유닛(2)의 NAND 메모리(16) 상의 영역(16B)(또는 영역(20B))에서 설치된다. 당연히, USB 메모리(24) 대신에, SD 카드와 같은 다른 외부 메모리들이 이용될 수 있다. 사용자에 의한 취득의 용이함의 측면에서, 정보 처리 시스템(1) 또는 저장 유닛(2)이 출하될 때, 광학 매체(23) 및 USB 메모리(24)는 부속품들로서 정보 처리 시스템(1) 또는 저장 유닛(2)과 함께 패키징되는 것이 바람직하다. 다른 한편으로, 광학 매체(23) 및 USB 메모리(24)는 소프트웨어 상품들로서 독립적으로 판매될 수 있거나 잡지 또는 서적의 부록들로서 첨부될 수 있다.
소프트웨어의 계층 구조
정보 처리 디바이스(111)의 소프트웨어 레벨에서의 계층 구조가 도 7에서 도시되어 있다. 통상적으로, 주 메모리(6) 상에 로딩된 애플리케이션 프로그램(400)은 저장 유닛(2) 및 저장 유닛(3)과 같은 저장 유닛들과 직접적으로 통신하지 않고, 주 메모리(6)에 로딩된 OS(100)를 통해 저장 유닛들과 통신한다. OS(100)는 UEFI 펌웨어 또는 시스템 BIOS를 통해 저장 유닛들과 통신한다. 이하에서 설명된 수명 종료 처리(저장 유닛의 수명의 종료 시의 처리 또는 수명-도달된 처리) 전에는, OS(100)가 저장 유닛(2)을 논리 유닛으로서 기능하는 논리 드라이브(4)(도 38 참조)로서 인식하고, 애플리케이션 프로그램(400)에 논리 드라이브(4)를 액세스가능한 저장 드라이브로서 통지한다. 애플리케이션 프로그램(400)이 판독 요청 또는 기록 요청과 같은 명령을 논리 드라이브(4)에 송신할 필요가 있을 때, 애플리케이션 프로그램(400)은 파일 단위에서의 논리 드라이브에 대한 액세스를 위한 요청을 OS(100)에 송신한다. OS(100)는 주 메모리(6) 내에 저장된 메타데이터(300)를 참조하고, 액세스-요청된 파일에 대응하는 저장 유닛(2)의 논리 어드레스(Logical block Address; LBA)를 특정하고, 인터페이스를 통해 명령, LBA, 및 데이터를 저장 유닛(2)에 송신한다. 저장 유닛(2)으로부터 응답을 수신할 시에, OS(100)는 응답을 애플리케이션 프로그램(400)에 송신한다. 논리 드라이브(4)가 이하에서 설명된 마이그레이션 상태로 변화할 때, OS(100)는 저장 유닛(2) 및 저장 유닛(3)을 논리 드라이브(4)로서 인식한다.
정보 처리 디바이스의 구성
정보 처리 시스템(1)의 구성 예가 설명된다. 도 8은 정보 처리 시스템(1)으로서 기능하는 데스크톱 컴퓨터의 개략도이다. 데스크톱 컴퓨터는 컴퓨터 본체(31), 디스플레이(9), 키보드(14), 및 마우스(15)를 포함한다. 컴퓨터 본체(31)는 주요 하드웨어가 장착된 마더보드(motherboard; 30), 저장 유닛(2), 및 전력 공급 디바이스(32)를 포함한다. 저장 유닛(2)은 SATA 케이블을 통해 마더보드(30)에 물리적으로 접속되고, 마더보드(30) 상에 장착된 칩셋(7)을 통해, 마더보드 상에 또한 장착된 CPU(5)에 전기적으로 접속된다. 전력 공급 디바이스(32)는 데스크톱 컴퓨터에서 이용된 다양한 종류들의 전력을 생성하고, 전력 공급 케이블을 통해 전력을 마더보드(30), 저장 유닛(2) 등에 공급한다. 저장 유닛(3)은 SATA 케이블을 통해 마더보드(30)에 물리적으로 접속될 수 있다. 결과적으로, 저장 유닛(3)은 마더보드(30) 상에 장착된 칩셋(7)을 통해, 마더보드 상에 또한 장착된 CPU(5)에 전기적으로 접속된다.
도 9는 정보 처리 시스템(1)으로서 기능하는 휴대용 컴퓨터의 개략도이다. 휴대용 컴퓨터는 컴퓨터 본체(34) 및 디스플레이 유닛(35)을 포함한다. 디스플레이 유닛(35)에서는, 예를 들어, 액정 디스플레이(Liquid Crystal Display; LCD)에 의해 구성된 디스플레이 디바이스(9)가 편입된다. 디스플레이 유닛(35)은 컴퓨터 본체(34)의 상부 표면이 노출되는 개방 위치와, 컴퓨터 본체(34)의 상부 표면이 덮여 있는 폐쇄 위치와의 사이에서 피봇(pivot)할 수 있도록 컴퓨터 본체(34)에 부착된다. 컴퓨터 본체(34)는 얇은 박스와 같은 하우징을 포함한다. 전원 스위치(36), 키보드(14), 터치 패드(33) 등은 컴퓨터 본체(34)의 상부 표면 상에 배치된다. 데스크톱 컴퓨터에서와 같이, 컴퓨터 본체(34)는 저장 유닛(2), 마더보드, 및 전력 공급 디바이스를 포함한다.
본 발명이 적용된 정보 처리 시스템(1)은 상기한 것 외에도, 스틸 카메라(still camera) 또는 비디오 카메라와 같은 화상 픽업 장치일 수 있거나, 태블릿 컴퓨터, 스마트폰, 게임 장치, 카 내비게이션 시스템, 프린터 장치, 스캐너 장치, 서버 시스템 등일 수 있다.
저장 디바이스의 구성 (1)
저장 유닛(2)의 구성이 설명된다. 이 실시형태에서의 설명에서, 저장 유닛(2)의 주요 구성요소는 NAND 메모리(16)이다. 이 실시형태에서의 설명에서, 저장 유닛(2) 및 저장 유닛(3)은 동일한 구성을 가진다. 다른 한편으로, 본 발명은 저장 유닛(3)이 저장 유닛(2)의 구성과는 상이한 구성을 가질 때에 또한 적용될 수 있다. 예를 들어, 저장 유닛(2)은 주요 구성요소로서 NAND 메모리(16)를 포함하는 SSD이고, 저장 유닛(3)은 주요 구성요소로서 자기 디스크를 포함하는 하드 디스크 드라이브이다. 저장 유닛(2) 및 저장 유닛(3)이 그 안에 통계 정보(65)를 저장한 것이 바람직하다. 그러나, 본 발명은 저장 유닛(2)이 그 안에 통계 정보(65)를 저장하였고 저장 유닛(3)은 그 안에 통계 정보(65)를 저장하지 않았을 때에 또한 적용될 수 있다. 데이터 마이그레이션 목적지인 저장 유닛(3)의 저장 용량이 데이터 마이그레이션 출발지인 저장 유닛(2)의 저장 용량과 동일하거나 이보다 더 큰 것이 바람직하다. 그러나, 본 발명은 저장 유닛(3)의 저장 용량이 저장 유닛(2)의 저장 용량보다 더 작을 때에 또한 적용될 수 있다.
NAND 메모리의 구성
도 10에서는, 이 실시형태에서의 저장 유닛(2) 및 저장 유닛(3)의 구성요소들로서 이용된 NAND 메모리(16) 내에 포함된 NAND 메모리 칩(80)의 내부 구성 예가 도시되어 있다. NAND 메모리(16)는 하나 또는 복수의 NAND 메모리 칩들(80)을 포함한다.
NAND 메모리 칩(80)은 복수의 메모리 셀들이 매트릭스 형상으로 배치되는 메모리 셀 어레이를 포함한다. 메모리 셀 어레이 내에 포함된 메모리 셀 트랜지스터는 반도체 기판 상에 형성된 적층된 게이트 구조를 가지는 금속 산화물 반도체 전계 효과 트랜지스터(Metal Oxide Semiconductor Field Effect Transistor; MOSFET)에 의해 구성된다. 적층된 게이트 구조는 게이트 절연막을 거쳐 반도체 기판 상에 형성된 전하 저장층(플로팅 게이트 전극)과, 게이트간 절연막을 거쳐 플로팅 게이트 전극 상에 형성된 제어 게이트 전극을 포함한다. 메모리 셀 트랜지스터의 문턱 전압은 플로팅 게이트 전극에서 축적된 전자들의 수에 따라 변화한다. 메모리 셀 트랜지스터는 문턱 전압에서의 차이에 따라 데이터를 저장한다.
이 실시형태에서의 설명에서, 각각의 메모리 셀들은 상위 페이지 및 하위 페이지를 이용하여 데이터를 기록하기 위한 2 비트/셀에 대한 4-레벨 저장 방법의 기록 방식을 채택한다. 그러나, 본 발명의 본질은, 메모리 셀들이 단일 페이지를 이용하여 데이터를 기록하기 위한 1 비트/셀의 2-레벨 저장 방법의 기록 방식, 상위 페이지, 중간 페이지, 및 하위 페이지를 이용하여 데이터를 기록하기 위한 3 비트/셀에 대한 8-레벨 저장 방법의 기록 방식, 또는 4 비트/셀 이상에 대한 멀티-레벨 저장 방법의 기록 방식을 채택할 때에 동일하다. 메모리 셀 트랜지스터는 플로팅 게이트 전극을 포함하는 구조로 제한되지 않고, 전자 저장층으로서 기능하는 질화물 계면 상에서 전자들을 트랩(trap)시킴으로써 문턱 전압을 조절할 수 있는 금속-산화물-질화물-산화물-실리콘(Metal-Oxide-Nitride-Oxide-Silicon; MONOS) 타입과 같은 구조일 수 있다. 유사하게, MONOS 타입의 메모리 셀 트랜지스터는 1 비트를 저장하도록 구성될 수 있거나, 멀티-레벨을 저장하도록 구성될 수 있다. 메모리 셀 트랜지스터는 비휘발성 저장 매체로서, 미국 특허 제8,189,391호, 미국 특허 출원 공개 제2010/0207195호, 및 미국 특허 출원 공개 제2010/0254191호에서 설명된 바와 같이 메모리 셀들이 3차원적으로 배치되는 반도체 저장 매체일 수 있다.
도 10에서 도시된 바와 같이, NAND 메모리 칩(80)은 데이터를 저장하기 위한 메모리 셀들을 매트릭스 형상으로 배치함으로써 구성된 메모리 셀 어레이(82)를 포함한다. 메모리 셀 어레이(82)는 복수의 비트 라인들, 복수의 워드 라인들, 및 공통 소스 라인을 포함한다. 전기적으로 데이터-재기록가능한(data-rewritable) 메모리 셀들은 비트 라인들 및 워드 라인들의 교차점들에서 매트릭스 형상으로 배치된다. 비트 라인들을 제어하기 위한 비트 라인 제어 회로(83) 및 워드 라인들을 제어하기 위한 워드 라인 제어 회로(85)는 메모리 셀 어레이(82)에 접속된다. 즉, 비트 라인 제어 회로(83)는 비트 라인들을 통해 메모리 셀 어레이(82)에서의 메모리 셀들의 데이터를 판독하고, 비트 라인들을 통해 기록 제어 전압을 메모리 셀 어레이(82)에서의 메모리 셀들에 인가하고, 메모리 셀들에서 데이터를 기록한다.
열 디코더(column decoder; 84), 데이터 입력/출력 버퍼(89), 및 데이터 입력/출력 단자(88)는 비트 라인 제어 회로(83)에 접속된다. 메모리 셀 어레이(82)로부터 판독된 메모리 셀들의 데이터는 비트 라인 제어 회로(83) 및 데이터 입력/출력 버퍼(89)를 통해 데이터 입력/출력 단자(88)로부터 외부로 출력된다. 외부로부터 데이터 입력/출력 단자(88)로의 기록 데이터 입력은 데이터 입력/출력 버퍼(89)를 통해 열 디코더(84)에 의해 비트 라인 제어 회로(83)에 입력되고, 지정된 메모리 셀들에서 기록된다.
메모리 셀 어레이(82), 비트 라인 제어 회로(83), 열 디코더(84), 데이터 입력/출력 버퍼(89), 및 워드 라인 제어 회로(85)는 제어 회로(86)에 접속된다. 제어 회로(86)는 제어 신호 입력 단자(87)에 입력된 제어 신호에 따라, 메모리 셀 어레이(82), 비트 라인 제어 회로(83), 열 디코더(84), 데이터 입력/출력 버퍼(89), 및 워드 라인 제어 회로(85)를 제어하기 위한 제어 신호들 및 제어 전압들을 생성한다. NAND 메모리 칩(80)에서의 메모리 셀 어레이(82) 이외의 회로 섹션은 NAND 제어기(NAND controller; NANDC)(81)로서 지칭된다.
도 11은 도 10에서 도시된 메모리 셀 어레이(82)의 구성을 도시한다. 메모리 셀 어레이(82)는 NAND 셀 타입 메모리 셀 어레이이고, 복수의 NAND 셀들을 포함하도록 구성된다. 하나의 NAND 셀은 직렬로 접속된 메모리 셀들에 의해 형성된 메모리 스트링(MS), 및 메모리 스트링(MS)의 양 단부들에 접속된 선택 게이트들(S1 및 S2)을 포함한다. 선택 게이트(S1)는 비트 라인(BL)에 접속되고, 선택 게이트(S2)는 소스 라인(SRC)에 접속된다. 동일한 행(row)에서 배치된 메모리 셀들(MC)의 제어 게이트들은 워드 라인들(WL0 내지 WLm-1)에 공통으로 접속된다. 제 1 선택 게이트들(S1)은 선택 라인(SGD)에 공통으로 접속되고, 제 2 선택 게이트들(S2)은 선택 라인(SDS)에 공통으로 접속된다.
메모리 셀 어레이(82)는 하나 또는 복수의 평면들을 포함한다. 평면은 복수의 블록들을 포함한다. 블록들의 각각은 복수의 NSND 셀들을 포함한다. 데이터는 블록의 단위로 소거된다.
하나의 워드 라인에 접속된 복수의 메모리 셀들은 하나의 물리 섹터를 구성한다. 데이터는 각각의 물리 섹터에 대해 기록 및 판독된다. 물리 섹터는 이하에서 설명된 LBA의 논리 섹터와 관련되지 않는다. 하나의 물리 섹터에서는, 예를 들어, 2 개의 물리 페이지들(2 페이지들)과 동등한 데이터가 2 비트/셀 기록 방식(4-레벨)의 경우에 저장된다. 다른 한편으로, 1 비트/셀 기록 방식(2-레벨)의 경우, 예를 들어, 하나의 물리 페이지(1 페이지)와 동등한 데이터가 하나의 물리 섹터에서 저장된다. 3 비트/셀 기록 방식(8-레벨)의 경우, 예를 들어, 3 개의 물리 페이지들(3 페이지들)과 동등한 데이터가 하나의 물리 섹터에서 저장된다.
판독 동작, 프로그램 검증 동작, 및 프로그램 동작 동안에는, 이하에서 설명된 SSDC(41)로부터 수신된 행 어드레스(Row Address)와 같은 물리 어드레스에 따라, 하나의 워드 라인이 선택되고 하나의 물리 섹터가 선택된다. 물리 섹터에서의 페이지의 스위칭은 물리 어드레스에 따라 수행된다. 이 실시형태에서, NAND 메모리(16)는 2 비트/셀 기록 방식을 채택하고, SSDC(41)는 2 개의 페이지들, 즉, 상위 페이지 및 하위 페이지가 물리 페이지들로서 물리 섹터에 할당되는 것으로 가정하여 물리 섹터를 처리한다. 물리 어드레스들은 모든 페이지들에 할당된다.
2 비트/셀의 4-레벨 NAND 메모리는 하나의 메모리 셀에서의 문턱 전압이 4 개의 종류들의 분포들을 가질 수 있도록 구성된다. 도 12는 4-레벨 NAND 셀 타입 플래시 메모리의 메모리 셀들 내에 저장된 2-비트 4-레벨 데이터(데이터 "11", ""01", "10", 및 "00") 및 메모리 셀들의 문턱 전압 분포 사이의 관계를 도시한다. 도 12에서, VA1은 그 하위 페이지가 이미 기록되어 있고 그 상위 페이지가 아직 기록되어 있지 않은 물리 섹터에 관하여, 2 개의 데이터가 판독될 때에 선택된 워드 라인에 인가된 전압을 나타낸다. VA1V는 A1에서의 기록이 수행될 때에 기록이 완료된 것인지 여부를 검사하기 위하여 인가된 검증 전압을 나타낸다.
VA2, VB2, 및 VC2는 그 하위 페이지 및 상위 페이지가 이미 기록되어 있는 물리 섹터에 관하여, 4 개의 데이터가 판독될 때에 선택된 워드 라인에 인가된 전압들을 나타낸다. VA2V, VB2V, 및 VC2V는, 문턱 전압 분포들에서의 기록이 수행될 때, 기록이 완료된 것인지 여부를 검사하기 위하여 인가된 검증 전압들을 나타낸다. Vread1 및 Vread2는, 데이터의 판독이 수행될 때, NAND 셀들에서의 선택되지 않은 메모리 셀에 인가되며, 선택되지 않은 메모리 셀의 유지된 데이터에 관계 없이 선택되지 않은 메모리 셀을 도전시키는 판독 전압들을 나타낸다. 또한, Vev1 및 Vev2는 메모리 셀들의 데이터가 소거될 때, 소거가 완료된 것인지 여부를 검사하기 위하여 메모리 셀들에 인가된 소거 검증 전압들을 나타낸다. Vev1 및 Vev2는 네거티브 값들을 가진다. Vev1 및 Vev2의 크기는 인접한 메모리 셀들의 간섭의 영향을 고려하여 결정된다. 전압들의 크기 관계들은 다음과 같다:
Vev1<VA1<VA1V<Vread1
Vev2<VA2<VA2V<VB2<VB2V<VC2<VC2V<Vread2
소거 검증 전압들 Vev1, Vev2, 및 Vev3은 위에서 설명된 바와 같이 네거티브 값들이다. 그러나, 소거 검증 동작에서 메모리 셀(MC)의 제어 게이트에 실제적으로 인가된 전압은 네거티브 값이 아니고, 제로 또는 포지티브 값이다. 즉, 실제적인 소거 검증 동작에서는, 메모리 셀(MC)의 백 게이트(back gate)에 포지티브 전압이 주어지고, 백 게이트 전압보다 더 작은 제로 또는 포지티브 값의 전압이 메모리 셀(MC)의 제어 게이트에 인가된다. 다시 말해서, 소거 검증 전압들(Vev1, Vev2, 및 Vev3)은 네거티브 값들을 등가적으로 가지는 전압이다.
블록 소거 후의 메모리 셀의 문턱 전압 분포(ER)의 상한 값은 또한 네거티브 값이다. 데이터 "11"이 메모리 셀에 할당된다. 하위 페이지 및 상위 페이지 기록 상태에서의 데이터 "11", "01", "10", 및 "00"의 메모리 셀들은 각각 포지티브 문턱 전압 분포들(ER2, A2, B2, 및 C2)을 가진다(A2, B2, 및 C2의 하한 값들도 포지티브 값들임). 데이터 "01"의 문턱 전압 분포(A2)는 최저 전압 값을 가지고, 데이터 "00"의 문턱 전압 분포(C2)는 최고 전압 값을 가지고, 다양한 문턱 전압 분포들의 전압 값들은 A2<B2<C2의 관계를 가진다. 하위 페이지 기록 및 상위 페이지 기록 상태에서의 데이터 "10"의 메모리 셀은 포지티브 문턱 전압 분포(A)를 가진다(A1의 하한 값도 포지티브 값임). 도 12에서 도시된 문턱 전압 분포는 예일 뿐이다. 본 발명은 이것으로 제한되지 않는다. 예를 들어, 도 12를 참조한 설명에서는, 모든 문턱 전압 분포들(A2, B2, 및 C2)이 포지티브 문턱 전압 분포들이다. 그러나, 문턱 전압 분포(A2)가 네거티브 전압 분포이고 문턱 전압 분포(B2 및 C2)가 포지티브 전압 분포들일 때, 분포들은 또한 본 발명의 범위 내에 포함된다. 문턱 전압 분포들(ER1 및 ER2)이 포지티브 값들이더라도, 본 발명은 이것으로 제한되지 않는다. 이 실시형태에서, ER2, A2, B2, 및 C2 사이의 대응 관계는 "11", "01", "10", 및 "00" 이다. 그러나, 대응 관계는 "11", "01", "00", 및 "10"과 같은 또 다른 대응 관계일 수 있다.
하나의 메모리 셀의 2-비트 데이터는 하위 페이지 데이터 및 상위 페이지 데이터를 포함한다. 하위 페이지 데이터 및 상위 페이지 데이터는 별도의 기록 동작들, 즉, 2 개의 기록 동작들에 따라 메모리 셀에 기록된다. 데이터가 "*@"로서 표현될 때, *는 상위 페이지 데이터를 나타내고, @는 하위 페이지 데이터를 나타낸다.
우선, 하위 페이지 데이터의 기록은 도 12의 제 1 및 제 2 섹션들을 참조하여 설명된다. 모든 메모리 셀들이 소거된 상태에서 문턱 전압 분포(ER)를 가지고 데이터 "11"를 저장한다고 가정된다. 도 12에서 도시된 바와 같이, 하위 페이지 데이터의 기록이 수행될 때, 메모리 셀들의 문턱 전압 분포(ER)는 하위 페이지 데이터의 값("1" 또는 "0")에 따라 2 개의 문턱 전압 분포들(ER1 및 A1)로 분할된다. 하위 페이지 데이터의 값이 "1"일 때에는, 소거된 상태에서의 문턱 전압 분포(ER)가 유지되므로 ER1=ER이다. 그러나, 문턱 전압 분포들(ER 및 ER1) 사이의 관계는 ER1>ER일 수도 있다.
다른 한편으로, 하위 페이지 데이터의 값이 "0"일 때, 메모리 셀들의 터널 산화막들에 높은 전기장이 인가되고, 전자들은 플로팅 게이트 전극으로 주입되고, 메모리 셀들의 문턱 전압(Vth)은 미리 결정된 값만큼 증가된다. 구체적으로, 검증 전압(VA1V)이 설정되고, 문턱 전압이 검증 전압(VA1V) 이상이 되도록 증가될 때까지 기록 동작이 반복된다. 그 결과, 메모리 셀들은 기록된 상태로 변화한다(데이터 "10"). 기록 동작이 미리 결정된 횟수로 반복되더라도 메모리 셀들이 문턱 전압에 도달하지 않을 때에는(또는 문턱 전압에 도달하지 않은 메모리 셀들의 수가 문턱 값 이상임), 물리 페이지에서의 기록은 "프로그램 에러"(프로그램 실패 또는 기록 에러)이다.
상위 페이지 데이터의 기록은 도 12의 제 2 및 제 3 섹션들을 참조하여 설명된다. 상위 페이지 데이터의 기록은 칩의 외부로부터 입력된 기록 데이터(상위 페이지 데이터) 및 메모리 셀들 내에 이미 기록된 하위 페이지 데이터에 기초하여 수행된다.
즉, 도 12의 제 2 및 제 3 섹션들에서 도시된 바와 같이, 업데이트 데이터의 값이 "1"일 때에는, 메모리 셀들의 문턱 전압(Vth)의 상승을 방지하기 위하여, 높은 전기장이 메모리 셀들의 터널 산화막들에 인가되지 않는다. 그 결과, 데이터 "11"(소거된 상태의 문턱 전압 분포(ER1))을 가지는 메모리 셀들은 데이터 "11"을 유지하고(ER2), 데이터 "10"(문턱 전압 분포(A1))을 가지는 메모리 셀들은 데이터 "10"을 유지한다(B2). 그러나, 분포들 사이의 전압 마진(voltage margin)을 확보한다는 측면에서, 검증 전압(VA1V)보다 더 큰 포지티브 검증 전압(VB2V)을 이용하여 문턱 전압 분포의 상한 값을 조절함으로써, 문턱 전압 분포의 폭을 좁히는 것에 의해 얻어진 문턱 전압 분포(B2)를 형성하는 것이 바람직하다. 하한 값 조절이 미리 결정된 횟수로 반복되더라도 메모리 셀들이 문턱 전압에 도달하지 않을 때에는(또는 문턱 전압에 도달하지 않은 메모리 셀들의 수가 미리 결정된 값 이상임), 물리 페이지에서의 기록은 "프로그램 에러"이다.
다른 한편으로, 상위 페이지 데이터의 값이 "0"일 때, 메모리 셀들의 터널 산화막들에 높은 전기장이 인가되고, 전자들은 플로팅 게이트 전극으로 주입되고, 메모리 셀들의 문턱 전압(Vth)은 미리 결정된 값만큼 증가된다. 구체적으로, 검증 전압들(VA2V 및 VC2V)이 설정되고, 문턱 전압이 검증 전압들(VA2V 및 VC2V)) 이상이 되도록 증가될 때까지 기록 동작이 반복된다. 그 결과, 데이터 "11"(소거된 상태의 문턱 전압 분포(ER1))을 가지는 메모리 셀들은 문턱 전압 분포(A2)의 데이터 "01"로 변화하고, 데이터 "10"(A1)을 가지는 메모리 셀들은 문턱 전압 분포(C2)의 데이터 "00"로 변화한다. 이 때, 검증 전압들(VA2V 및 VC2V)이 이용되고, 문턱 전압 분포들(A2 및 C2)의 하한 값들은 조절된다. 기록 동작이 미리 결정된 횟수로 반복되더라도 메모리 셀들이 문턱 전압에 도달하지 않을 때에는(또는 문턱 전압에 도달하지 않은 메모리 셀들의 수가 문턱 값 이상임), 물리 페이지에서의 기록은 "프로그램 에러"이다.
다른 한편으로, 소거 동작에서는, 소거 검증 전압(Vev)이 설정되고, 문턱 전압이 검증 전압(Vev) 이하가 되도록 감소될 때까지 소거 동작이 반복된다. 그 결과, 메모리 셀들은 기록된 상태로 변화한다(데이터 "00"). 소거 동작이 미리 결정된 횟수로 반복되더라도 메모리 셀들이 문턱 전압에 도달하지 않을 때에는(또는 문턱 전압에 도달하지 않은 메모리 셀들의 수가 미리 결정된 값 이상임), 물리 페이지에 대한 소거는 "소거 에러"(소거 실패)이다.
일반적인 4-레벨 저장 방법에서의 데이터 기록 방식의 예가 위에서 설명되어 있다. 3 비트/셀 이상의 멀티-비트 저장 방식에서는, 상위 순서 페이지 데이터에 따르면, 문턱 전압 분포를 8 개 이상의 종류들로 분할하기 위한 동작이 위에서 설명된 동작에 추가될 뿐이다. 그러므로, 기본적인 동작은 동일하다.
저장 디바이스의 구성 (2)
저장 유닛(2) 및 저장 유닛(3)의 구성 예가 설명된다. 이 실시형태에서는, 도 13에서 도시된 바와 같이, SSD로서 기능하는 저장 유닛(2) 및 저장 유닛(3)은 비휘발성 반도체 메모리로서 기능하는 NAND 플래시 메모리(16)(이하, NAND 메모리로서 축약됨), 인터페이스(19)를 통한 정보 처리 디바이스(111)로의 신호들의 송신 및 정보 처리 디바이스(111)로부터의 신호들의 수신을 수행하도록 구성된 인터페이스 제어기(interface controller; IFC)(42), IFC(42) 및 NAND 메모리(16) 사이의 중간 버퍼로서 기능하는 캐시 메모리(cache memory; CM)를 포함하는 반도체 메모리로서 기능하는 RAM(Random Access Memory)(40), NAND 메모리(16) 및 RAM(40)의 관리 및 제어와, 인터페이스 제어기(42)의 제어를 집행하도록 구성된 SSD 제어기(SSD controller; SSDC)(41), 및 이 구성요소들을 접속하도록 구성된 버스(43)를 포함한다.
RAM(40)으로서, 예를 들어, DRAM(Dynamic Random Access Memory) 또는 SRAM(Static Random Access Memory)과 같은 휘발성 RAM, 또는 FeRAM (Ferroelectric Random Access Memory), MRAM (Magnetoresistive Random Access Memory), PRAM (Phase Change Random Access Memory), 또는 ReRAM (Resistance Random Access Memory)과 같은 비휘발성 RAM이 채택될 수 있다. RAM(40)은 SSDC(41) 내에 포함될 수 있다.
NAND 메모리(16)는 복수의 NAND 메모리 칩들(80)을 포함한다. NAND 메모리(16)는 정보 처리 디바이스(111)에 의해 지정된 사용자 데이터를 저장하고, 사용자 데이터를 관리하기 위한 관리 테이블을 저장하고, 백업을 위하여, RAM(40)에 의해 관리된 관리 정보를 저장한다. NAND 메모리(16)는 복수의 메모리 셀들이 매트릭스 형상으로 배치되는 메모리 셀 어레이(82)를 포함한다. 각각의 메모리 셀들은 상위 페이지 및 하위 페이지를 이용하여 멀티-레벨 저장을 수행할 수 있다. NAND 메모리(16)는 복수의 메모리 칩들을 포함한다. 메모리 칩들의 각각은 데이터 소거의 단위들인 복수의 블록들을 배열함으로써 구성된다. NAND 메모리(16)에서는, 데이터의 기록 및 데이터의 판독이 각각의 페이지에 대해 수행된다. 블록은 복수의 페이지들을 포함한다.
RAM(40)은 정보 처리 디바이스(111) 및 NAND 메모리(16) 사이의 데이터 전달을 위한 캐시로서 기능하는 캐시 메모리(CM)(46)를 포함한다. RAM(40)은 관리 정보 저장을 위한 메모리 및 작업 영역을 위한 메모리로서 기능한다. RAM(40)의 영역(40A)에서 관리된 관리 테이블들은, NAND 메모리(16)의 영역(40M)에서 저장되며 저장 유닛(2) 및 저장 유닛(3)이 시작될 때에 로딩된 다양한 관리 테이블들이다. 관리 데이터는 주기적으로, 스탠바이 명령이 수신될 때, 플래시 명령이 수신될 때, 또는 전력 공급이 차단될 때에 NAND 메모리(16)의 영역(40M)에서 백업된다.
SSDC(41)의 기능은 NAND 메모리(16) 내에 저장된 시스템 프로그램(펌웨어)을 실행하도록 구성된 처리기, 다양한 하드웨어 회로들 등에 의해 실현된다. SSDC(41)는 정보 처리 디바이스(111)로부터의 기록 요청, 캐시 플래시 요청, 및 판독 요청과 같은 다양한 명령들에 응답하여, 정보 처리 디바이스(111) 및 NAND 메모리(16) 사이의 데이터 전달 제어, RAM(40) 및 NAND 메모리(16) 내에 저장된 다양한 관리 테이블의 업데이트 및 관리, NAND 메모리(16)로부터 판독된 데이터의 ECC 복호화 등을 실행한다.
정보 처리 디바이스(111)가 판독 요청 또는 기록 요청을 저장 유닛(2)으로 송신할 때, 정보 처리 디바이스(111)는 인터페이스(19)를 통해 논리 어드레스로서 작용하는 LBA를 입력한다. LBA는 0으로부터 시작하는 논리 섹터들(크기: 예컨대, 512 바이트)에 직렬 번호들이 부여되는 논리 어드레스이다. 정보 처리 디바이스(111)가 판독 요청 또는 기록 요청을 저장 유닛(2)에 대해 발행할 때, 정보 처리 디바이스(111)는 LBA와 함께, 판독 요청 또는 기록 요청이 발행하는 논리 섹터의 크기를 입력한다.
IFC(42)는, 정보 처리 디바이스(111)로부터 판독 요청, 기록 요청, 다른 요청들, 및 데이터를 수신하고, 수신된 요청들 및 데이터를 SSDC(41)로 송신하고, SSDC(41)의 제어에 따라 데이터를 RAM(40)으로 송신하기 위한 기능을 가진다.
저장 유닛(2) 및 저장 유닛(3)에서 이용된 관리 정보(44)의 구성 예가 도 14에서 도시되어 있다. 위에서 설명된 바와 같이, 관리 정보(44)는 비휘발성 방식으로 NAND 메모리(16)의 영역(40M)에서 저장된다. 영역(40M)에서 저장된 관리 정보는 저장 유닛(2)이 시작될 때에 RAM(40)의 영역(40A)으로 로딩되어 이용된다. 영역(40A)에서의 관리 정보(44)는 주기적으로 또는 전력 공급이 차단될 때에 영역(40M)에서 백업된다. RAM(40)이 MRAM 또는 FeRAM과 같은 비휘발성 RAM일 때, 관리 정보(44)는 RAM(40) 내에만 저장될 수 있다. 다음으로, 관리 정보(44)는 NAND 메모리(16) 내에 저장되지 않는다. NAND 메모리(6)에서의 기록 양을 감소시키기 위해서는, 관리 정보(44)에서 저장된 데이터가 RAM(40)의 영역(40A)에서 저장된 데이터를 압축함으로써 얻어진 데이터인 것이 바람직하다. NAND 메모리(16)에서 기록 빈도를 감소시키기 위해서는, RAM(40)의 영역(40A)에서 저장된 관리 정보(44)의 업데이트 정보(차이 정보)가 추가적으로 기록되는 것이 바람직하다.
도 14에서 도시된 바와 같이, 관리 정보는 자유 블록 테이블(free block table; FBT)(60), 배드 블록 테이블(bad block table; BT)(61), 활성 블록 테이블(active block table; ABT)(62), 트랙 테이블(트랙 단위에서의 논리-대-물리 변환 테이블)(63), 클러스터 테이블(클러스터 단위에서의 논리-대-물리 변환 테이블)(64), 및 통계 정보(65)를 포함한다.
도 15에서 도시된 바와 같이, LBA는 0으로부터 시작하는 논리 섹터들(크기: 예컨대, 512 바이트)에 직렬 번호들이 부여되는 논리 어드레스이다. 이 실시형태에서는, 저장 유닛(2)의 논리 어드레스(LBA)에 대한 관리 단위들로서, LBA의 하위 순서 (s+1)번째 비트로부터 상위 순서의 비트열(bit row)들에 의해 구성된 클러스터 어드레스와, LBA의 하위 순서 (s+t+1)번째 비트로부터 상위 순서의 비트열들에 의해 구성된 트랙 어드레스가 정의된다. 즉, 논리 섹터는 정보 처리 디바이스(111)로부터의 최소 액세스 단위이다. 클러스터는 SSD에서 "작은 데이터(small data)"를 관리하기 위한 관리 단위이다. 클러스터 크기는 논리 섹터 크기의 자연수 배만큼 크도록 정의된다. 트랙은 SSD에서 "큰 데이터(large data)"를 관리하기 위한 관리 단위이다. 트랙 크기는 클러스터 크기의 2 이상의 자연수 배만큼 크도록 정의된다. 그러므로, 트랙 어드레스는 LBA를 트랙 크기에 의해 나눔으로써 얻어진다. 트랙에서의 어드레스는 LBA를 트랙 크기에 의해 나눔으로써 얻어진 나머지이다. 클러스터 어드레스는 LBA를 클러스터 크기에 의해 나눔으로써 얻어진다. 클러스터에서의 어드레스는 LBA를 클러스터 크기에 의해 나눔으로써 얻어진 나머지이다. 다음의 설명에서는, 편의를 위하여, 트랙의 크기가 하나의 물리 블록에서 레코딩가능한 데이터의 크기(SSDC(41)에 의해 수행된 ECC 처리의 중복 비트(redundant bit)가 물리 블록 내에 포함될 때, 중복 비트를 제거함으로써 얻어진 크기)와 동일하다. 클러스터의 크기는 하나의 물리 페이지에서 레코딩가능한 데이터의 크기(SSDC(41)에 의해 수행된 ECC 처리의 중복 비트가 물리 페이지 내에 포함될 때, 중복 비트를 제거함으로써 얻어진 크기)와 동일하다.
자유 블록 테이블(FBT)(60)은 NAND 메모리(16)에서의 기록이 수행될 때에 기록을 위해 새롭게 할당될 수 있는 이용-미할당된(use-unallocated) 물리 블록(자유 블록: FB)의 블록 어드레스(물리 블록 ID)를 관리한다. 자유 블록 테이블(FBT)(60)은 각각의 물리 블록 ID에 대한 소거 카운트를 관리한다. 물리 블록이 소거될 때, 자유 블록 테이블(FBT)(60)은 블록의 소거 카운트(erase count)를 증분(increment)시킨다.
배드 블록 테이블(BBT)(61)은, 예를 들어, 에러들이 종종 발생하기 때문에 저장 영역으로서 이용될 수 없는 물리 블록으로서 작용하는 배드 블록(bad block; BB)의 블록 ID를 관리한다. FBT(60)에서와 같이, 소거 카운트는 각각의 물리 블록 ID에 대해 관리될 수 있다.
활성 블록 테이블(ABT)(62)은, 이용이 할당되는 물리 블록인 활성 블록(active block; AB)을 관리한다. 활성 블록 테이블(ABT)(62)은 각각의 물리 블록 ID에 대한 소거 카운트를 관리한다. 물리 블록이 소거될 때, 활성 블록 테이블(ABT)(62)은 블록의 소거의 횟수들을 증분시킨다.
트랙 테이블(63)은 트랙 어드레스와, 트랙 어드레스에 대응하는 트랙 데이터가 저장되는 물리 블록의 물리 블록 ID와의 사이의 대응 관계를 관리한다.
클러스터 테이블(64)은 클러스터 어드레스와, 클러스터 어드레스에 대응하는 클러스터 데이터가 저장되는 물리 블록의 물리 블록 ID와, 클러스터 어드레스에 대응하는 클러스터 데이터가 저장되는 물리 블록에서의 페이지 어드레스와의 사이의 대응 관계를 관리한다.
SSDC(41)는 통계 정보(65)에서, 저장 유닛(2)의 신뢰성에 관련된 다양한 파라미터들(X01 내지 X32)을 신뢰성 정보로서 저장한다(도 27 참조).
신뢰성 정보의 예로서 이용된 통계 정보(65)의 값들(원시 값들)은, 총 배드 블록 카운트(통계 정보(X01)), 총 배드 논리 섹터 카운트(통계 정보(X02)), 총 소거 카운트(통계 정보(X03)), 평균 소거 카운트(통계 정보(X04)), NAND 메모리의 총 프로그램 에러 카운트(통계 정보(X05)), NAND 메모리의 총 소거 에러 카운트(통계 정보(X06)), 총 판독 논리 섹터 카운트(통계 정보(X07), 총 기록 논리 섹터 카운트(통계 정보(X08)), 총 정정불가능한 ECC 에러 카운트(통계 정보(X09)), 총 재시도 판독 카운트(통계 정보(X10)), 정정된 n비트-m비트 ECC 이벤트 카운트(통계 정보(X11)), 인터페이스(19)의 데이터 붕괴 에러 카운트(통계 정보(X12)), 인터페이스(19)의 링크 속도 다운 시프트 카운트(통계 정보(X13)), 인터페이스(19)의 레인 카운트 다운 시프트(lane count down shift) 카운트(통계 정보(X14)), 인터페이스(19)의 에러 카운트(통계 정보(X15)), RAM(40)의 에러 카운트(통계 정보(X16)), 저장 유닛(2)의 전력 온(power on) 시간(통계 정보(X17)), 전력 사이클(power cycle) 카운트(통계 정보(X18)), 비의도적인 전력 다운 카운트(통계 정보(X19)), 온도가 추천된 동작 온도의 최대 값을 초과하는 누적 시간(통계 정보(X20)), 온도가 추천된 동작 온도의 최소 값 미만으로 떨어지는 누적 시간(통계 정보(X21)), 명령의 응답 시간의 최대 값(통계 정보(X22)), 명령의 응답 시간의 평균 값(통계 정보(X23)), NAND 메모리의 응답 시간의 최대 값(통계 정보(X24)), NAND 메모리의 응답 시간의 평균 값(통계 정보(X25)), 현재 온도(통계 정보(X26)), 최고 온도(통계 정보(X27)), 최저 온도(통계 정보(X28)), 시스템 데이터 중복성(통계 정보(X29)), RAM(40)에서의 기록된 데이터 양의 합계(통계 정보(X30)), 통계 정보 증가 비율(통계 정보(X31)), 및 NAND GC 에러 플래그(통계 정보(X32))를 포함한다.
총 배드 블록 카운트(통계 정보(X01))가 설명된다. 저장 유닛(2)에서의 NAND 메모리(16)의 하나의 물리 블록이 배드 블록에 추가될 때마다, SSDC(41)는 통계 정보(X01)를 하나씩 증분시킨다. SSDC(41)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전)에는 통계 정보(X01)를 제로(zero)로 재설정하는 것이 바람직하다. 테스트 처리 동안에 에러가 블록에서 발생할 때, 또는 문턱 전압 분포의 작은 분포간(inter-distribution) 마진을 갖는 블록이 검출될 때에는, SSDC(41)가 블록을 배드 블록에 미리 추가하는 것이 바람직하다. SSDC(41)는 통계 정보(65)에서 통계 정보(X01)를 저장하지 않으면서, BBT(61)로부터 통계 정보(X01)를 직접적으로 계산할 수 있다. 통계 정보(X01)의 더 큰 값은 신뢰성이 더욱 열화됨을 표시한다.
총 배드 논리 섹터 카운트(통계 정보(X02))가 설명된다. 판독 명령 및 LBA가 정보 처리 디바이스(111)로부터 수신되고, NAND 플래시 메모리(16)로부터의 판독 동안에 판독 데이터가 ECC 정정을 거치게 될 수 없을 때, SSDC(41)는 LBA를, 관리 정보(44)에서의 배드 논리 섹터 테이블에서 배드 논리 섹터로서 등록할 수 있다(도 25 참조). SSDC(41)는 배드 논리 섹터 테이블에서 등록된 LBA들의 수를 통계 정보(65)에서 총 배드 논리 섹터 카운트(통계 정보(X02))로서 저장한다. 판독 명령이 정보 처리 디바이스(111)로부터 수신될 때, SSDC(41)는 RAM(40) 상의 배드 논리 섹터 테이블을 판독하고, 배드 논리 섹터 테이블에서 수신된 LBA를 검색한다. LBA가 배드 논리 섹터 테이블에서 발견될 때, SSDC(41)는 NAND 플래시 메모리(16)로부터 데이터를 판독하지 않으면서 판독 에러를 정보 처리 디바이스(111)에 통지한다. 기록 명령이 배드 논리 섹터의 LBA에 관하여 정보 처리 디바이스(111)로부터 수신되고 기록 처리가 수행될 때, SSDC(41)는 배드 논리 섹터 테이블로부터 기록된 LBA를 삭제한다. 삭제 통지가 배드 논리 섹터의 LBA에 관하여 정보 처리 디바이스(111)로부터 수신되고 삭제 통지 처리가 수행될 때, SSDC(41)는 배드 논리 섹터 테이블로부터 삭제 통지 처리를 거친 LBA를 삭제한다. 저장 유닛(2)에 대한 소거 명령(보안 소거 명령)이 정보 처리 디바이스(111)로부터 수신될 때, SSDC(41)는 배드 논리 섹터 테이블을 소거한다. 저장 유닛(2)에 대한 소거 명령으로서, 예를 들어, ACS-3의 F4h Security Erase Unit(보안 소거 유닛) 명령 또는 NVM Express Revision 1.1의 80h Format NVM(포맷 NVM) 명령이 이용될 수 있다. LBA 단위(논리 섹터 단위)에서 배드 논리 섹터 테이블을 관리하는 대신에, 도 26에서 도시된 바와 같이, SSDC(41)는 클러스터 단위에서 배드 논리 섹터 테이블을 배드 클러스터 테이블로서 관리할 수 있다. SSDC(41)는 통계 정보(X02)로서, 배드 논리 섹터 테이블에서 등록된 LBA들의 수 또는 배드 클러스터 테이블에서 등록된 클러스터 어드레스들의 수를 관리한다. SSDC(41)는 통계 정보(65)에서 통계 정보(X02)를 저장하지 않으면서, 배드 논리 섹터 테이블 및 배드 클러스터 테이블로부터 통계 정보(X02)를 직접적으로 계산할 수 있다. 통계 정보(X02)의 더 큰 값은 신뢰성이 더욱 열화됨을 표시한다.
총 소거 카운트(통계 정보(X03))가 설명된다. 통계 정보(X03)는 저장 유닛(2)에서의 NAND 메모리(16)의 모든 블록들의 소거 카운트의 누적 값을 표시한다. 저장 유닛(2)에서의 NAND 메모리(16)의 하나의 물리 블록이 소거될 때마다, SSDC(41)는 통계 정보(X03)를 하나씩 증분시킨다. 통계 정보(X03)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전)에는 제로로 재설정되는 것이 바람직하다. SSDC(41)는 통계 정보(65)에서 통계 정보(X03)를 저장하지 않으면서, FBT(60), BBT(61), 및 ABT(62)로부터 통계 정보(X03)를 직접적으로 계산할 수 있다. 통계 정보(X03)의 더 큰 값은 신뢰성이 더욱 열화됨을 표시한다.
평균 소거 카운트(통계 정보(X04))가 설명된다. SSDC(41)는 NAND 메모리(16)의 모든 블록들에 관하여 하나의 블록 당 평균 소거 카운트를 계산하고, 평균 소거 카운트를 통계 정보(65)에서 통계 정보(X04)로서 저장한다. SSDC(41)는 관리 정보(44)가 저장되는 블록과 같은 블록들의 일부를, 통계 정보(X04)의 집계 대상으로부터 제외할 수 있다. 통계 정보(X04)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전)에는 제로로 재설정되는 것이 바람직하다. SSDC(41)는 통계 정보(65)에서 통계 정보(X04)를 저장하지 않으면서, FBT(60), BBT(61), 및 ABT(62)로부터 통계 정보(X04)를 직접적으로 계산할 수 있다. SSDC(41)는 평균 소거 카운트 대신에 소거 카운트의 최대 값 또는 소거 카운트의 최소 값을 이용할 수 있다. 통계 정보(X04)의 더 큰 값은 신뢰성이 더욱 열화됨을 표시한다.
NAND 메모리의 총 프로그램 에러 카운트(통계 정보(X05))가 설명된다. 프로그램 에러가 저장 유닛(2)에서의 NAND 메모리(16)에서 하나의 기록 단위로 발생할 때마다, SSDC(41)는 통계 정보(X05)를 하나씩 증분시킨다(또는 블록 단위로 증분시킬 수 있음). 통계 정보(X05)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전)에는 제로로 재설정되는 것이 바람직하다. 통계 정보(X05)의 더 큰 값은 신뢰성이 더욱 열화됨을 표시한다.
NAND 메모리의 총 소거 에러 카운트(통계 정보(X06))가 설명된다. 통계 정보(X06)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전)에는 제로로 재설정되는 것이 바람직하다. 소거 에러가 저장 유닛(2)에서의 NAND 메모리(16)에서 하나의 블록으로 발생할 때마다, SSDC(41)는 통계 정보(X06)를 하나씩 증분시킨다. SSDC(41)는 복수의 블록들을 소거 단위로서 집합적으로 설정할 수 있고, 하나의 소거 단위에서 소거 에러가 발생할 때마다 통계 정보(X06)를 하나씩 증분시킬 수 있다. 통계 정보(X06)의 더 큰 값은 신뢰성이 더욱 열화됨을 표시한다.
총 판독 논리 섹터 카운트(통계 정보(X07))가 설명된다. SSDC(41)는 IFC(42)에 의해 판독 데이터로서 정보 처리 디바이스(111)에 송신된 데이터의 논리 섹터들의 수들의 누적 수를 통계 정보(65)에서 통계 정보(X07)로서 저장한다. 통계 정보(X07)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전)에는 제로로 재설정되는 것이 바람직하다. 통계 정보(X07)의 더 큰 값은 신뢰성이 더욱 열화됨을 표시한다.
총 기록 논리 섹터 카운트(통계 정보(X08))가 설명된다. SSDC(41)는 IFC(42)에 의해 기록 데이터로서 정보 처리 디바이스(111)로부터 수신된 데이터의 논리 섹터들의 총 수를 통계 정보(65)에서 통계 정보(X08)로서 저장한다. 통계 정보(X08)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전)에는 제로로 재설정되는 것이 바람직하다. 통계 정보(X08)의 더 큰 값은 신뢰성이 더욱 열화됨을 표시한다.
총 정정불가능한 ECC 에러 카운트(통계 정보(X09))가 설명된다. 에러 비트가 ECC 정정에 의해 정정될 수 없을 때, SSDC(41)는 하나의 판독 단위마다 통계 정보(X09)를 하나씩 증분시킨다. SSDC(41)는 정정될 수 없는 에러 비트들의 수의 추정된 값을 추가할 수 있거나, 정정될 수 없는 에러 블록들의 수를 추가할 수 있다. 통계 정보(X09)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전)에는 제로로 재설정되는 것이 바람직하다. 통계 정보(X09)의 더 큰 값은 신뢰성이 더욱 열화됨을 표시한다.
총 재시도 판독 카운트(통계 정보(X10))가 설명된다. 데이터 판독 동안에 에러 비트들의 수가 더 크고 에러 정정이 불가능(ECC 에러)일 때, SSDC(41)는 ECC 이득을 이용하여 에러 정정을 실행하는 것이 바람직하다. 특히, SSDC(41)가 도 12에서 도시된 판독 레벨들(VA1, VA2, VB2, 및 VC2)을 디폴트 값들로부터 시프트하여 판독을 수행할 때에는, 에러-정정될 수 없는 데이터가 때때로 에러-정정될 수 있다. SSDC(41)는 총 재시도 판독 카운트를 통계 정보(X09)에서 통계 정보(X10)로서 저장할 수 있고, 수명 종료 예측 및 수명 종료 결정을 위하여 총 재시도 판독 카운트를 이용할 수 있다. 통계 정보(X10)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전)에는 제로로 재설정되는 것이 바람직하다. 통계 정보(X10)의 더 큰 값은 신뢰성이 더욱 열화됨을 표시한다.
정정된 n비트-m비트 ECC 이벤트 카운트(통계 정보(X11))가 설명된다. 정정된 n비트-m비트 ECC 이벤트 카운트에서는, n 및 m이 자연수들이고, 0≤n≤m≤정정가능한 비트들의 최대 수이다. ECC 정정이 ECC 정정 단위(예컨대, 물리 페이지)에 대해 수행될 때, 모든 에러 비트들이 정상적으로 정정되고, 정정된 에러 비트들의 수가 n 이상이며 m 이하일 경우에는, SSDC(41)가 하나의 ECC 정정 단위에 대하여 정정된 n비트-m비트 ECC 이벤트 카운트를 하나씩 증분시킨다. ECC 정정에 의해 하나의 정정 단위 당 최대 64 비트들이 정정될 수 있을 경우, 예를 들어, SSDC(41)는 8 개의 파라미터들 "정정된 1비트-8비트 ECC 이벤트 카운트", "정정된 9비트-16비트 ECC 이벤트 카운트", "정정된 17비트-24비트 ECC 이벤트 카운트", "정정된 25비트-32비트 ECC 이벤트 카운트", "정정된 33비트-40비트 ECC 이벤트 카운트", "정정된 41비트-48비트 ECC 이벤트 카운트", "정정된 49비트-56비트 ECC 이벤트 카운트", 및 "정정된 57비트-64비트 ECC 이벤트 카운트"를 예약한다. ECC 정정들이 정상적으로 수행될 경우, 하나의 ECC 정정 단위에서의 ECC 정정이 수행될 때마다, SSDC(41)는 8 개의 파라미터들 중의 임의의 하나를 하나씩 증분시킨다. 통계 정보(X11)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전)에는 제로로 재설정되는 것이 바람직하다. 통계 정보(X11)의 더 큰 값은 신뢰성이 더욱 열화됨을 표시한다.
인터페이스(19)의 데이터 붕괴 에러 카운트(통계 정보(X12))가 설명된다. 신호의 데이터 붕괴가 인터페이스(19) 상에서 검출될 때마다, SSDC(41)는 통계 정보(X12)를 하나씩 증분시킨다. 인터페이스(19) 상에서 송신되고 수신된 데이터는 예를 들어, 순환 중복성 검사(Cyclic Redundancy Check; CRC) 코드, 보스-차우드리-호켄겜(Bose-Chaudhuri-Hocquenghem; BCH) 코드, 리드-솔로몬(Reed-Solomon; RS) 코드, 저밀도 패리티 검사(Low-Density Parity-Check; LDPC) 코드 등을 이용하여 SSDC(41), IFC(42), 및 칩셋(7)에 의해 에러 검출 및 에러 정정을 거치게 된다. 에러가 검출될 때, 또는 에러 정정이 수행될 수 없을 때에는, SSDC(41)가 통계 정보(X12)를 하나씩 증분시킨다. 예를 들어, 인터페이스(19)가 SATA 표준에 기초할 때, SATA 표준에서의 R 에러(수신 에러, R_ERR)가 한 번 발생할 때마다, SSDC(41)는 통계 정보(X12)를 하나씩 증분시킨다. 통계 정보(X12)로서, SATA 표준의 파이 이벤트 카운터(Phy Event Counter)들 중의 임의의 하나가 채택될 수 있다. 통계 정보(X12)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전)에는 제로로 재설정되는 것이 바람직하다. 통계 정보(X11)의 더 큰 값은 신뢰성이 더욱 열화됨을 표시한다.
인터페이스(19)의 링크 속도 다운 시프트 카운트(통계 정보(X13))가 설명된다. SSDC(41), IFC(42), 및 칩셋(7)이 인터페이스(19)의 통신 속도가 설계 값보다 더 작도록 감소하는 것을 검출할 때, SSDC(41)는 통계 정보(X13)를 하나씩 증분시킨다. 예를 들어, 인터페이스(19), IFC(42), 및 SSDC(41)가 최대 6 Gbps의 SATA 통신 속도에서 설계되지만, 인터페이스(19), IFC(42), 및 SSDC(41)와, 저장 유닛(2) 및 정보 처리 디바이스(111) 사이에서 실제로 확립된 통신 속도가 3 Gbps와 같이 더 낮은 통신 속도인 것으로 검출될 때, SSDC(41)는 이것을 SATA 통신에서 에러로서 간주하고, 통계 정보(X13)를 하나씩 증분시킨다. 예를 들어, 인터페이스(19), IFC(42), 및 SSDC(41)가 최대 8 Gbps의 Express 통신 속도에서 설계되지만, 인터페이스(19), IFC(42), 및 SSDC(41)와, 저장 유닛(2) 및 정보 처리 디바이스(111) 사이에서 실제로 확립된 통신 속도가 5 Gbps와 같이 더 낮은 통신 속도인 것으로 검출될 때, SSDC(41)는 이것을 PCI Express 통신에서 에러로서 간주하고, 통계 정보(X13)를 하나씩 증분시킨다. 통계 정보(X13)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전)에는 제로로 재설정되는 것이 바람직하다. 통계 정보(X13)의 더 큰 값은 신뢰성이 더욱 열화됨을 표시한다.
인터페이스(19)의 레인 카운트 다운 시프트 카운트(통계 정보(X14))가 설명된다. SSDC(41), IFC(42), 및 칩셋(7)이 인터페이스(19)의 활성 송신 라인들의 수가 설계 값보다 더 작도록 감소하는 것을 검출할 때, SSDC(41)는 통계 정보(X14)를 하나씩 증분시킨다. 예를 들어, 인터페이스(19), IFC(42), 및 SSDC(41)가 최대 8 레인(Lane)들의 PCI Express 송신 라인의 수(레인들의 수)로 설계되지만, 인터페이스(19), IFC(42), 및 SSDC(41)와, 저장 유닛(2) 및 정보 처리 디바이스(111) 사이에서 실제로 확립된 송신 라인들의 수가 4 레인들과 같이 송신 라인들의 더 작은 수인 것으로 검출될 때, SSDC(41)는 이것을 PCI Express 통신에서 에러로서 간주하고, 통계 정보(X14)를 하나씩 증분시킨다. 통계 정보(X14)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전)에는 제로로 재설정되는 것이 바람직하다. 통계 정보(X14)의 더 큰 값은 신뢰성이 더욱 열화됨을 표시한다.
인터페이스(19)의 에러 카운트(통계 정보(X15))가 설명된다. SSDC(41), IFC(42), 및 칩셋(7)이 인터페이스(19)의 (X12 이외의) 인터페이스(19)에서의 다른 비정상(abnormality)을 한 번 검출할 때마다, SSDC(41)는 통계 정보(X15)를 하나씩 증분시킨다. 통계 정보(X15)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전)에는 제로로 재설정되는 것이 바람직하다. 통계 정보(X15)의 더 큰 값은 신뢰성이 더욱 열화됨을 표시한다.
RAM(40)의 에러 카운트(통계 정보(X16))가 설명된다. SSDC(41)가 RAM(40)에서 데이터를 기록할 때, SSDC(41) 또는 RAM(40)의 ECC 인코딩 유닛 또는 에러-검출-코드 생성 유닛은 데이터를 인코딩하고 RAM(40)에서 데이터를 기록한다. SSDC(41)가 RAM(40)으로부터 데이터를 판독할 때, SSDC(41) 또는 RAM(40)의 ECC 디코딩 유닛 또는 에러 검출 유닛은 데이터가 에러 정정 또는 에러 검출을 거치게 하고, RAM(40)으로부터 데이터를 판독한다. SSDC(41)가 RAM(40)으로부터 데이터를 판독할 때에 에러 정정이 수행될 수 없거나 에러가 검출될 경우, SSDC(41)는 통계 정보(X16)를 하나씩 증분시킨다. 통계 정보(X16)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전)에는 제로로 재설정되는 것이 바람직하다. 통계 정보(X16)의 더 큰 값은 신뢰성이 더욱 열화됨을 표시한다.
저장 유닛(2)의 전력 온 시간(통계 정보(X17))이 설명된다. 저장 유닛(2)을 위한 전력 공급 장치가 ON인 동안에는, SSDC(41)가 클록(clock)을 카운트하거나 내부 타이밍 회로로부터 시간 정보를 수신할 때, SSDC(41)가 경과된 시간으로서 통계 정보(X17)를 증분시킨다. 대안적으로, SSDC(41)는 정보 처리 디바이스(111)로부터 정보 처리 디바이스(111)의 시간 정보를 주기적으로 수신할 수 있고, 시간 정보에서의 차이를 증분시킬 수 있다. 전력 온 시간의 예들로서, 예를 들어, 전력 온 시간(hour) 및 전력 온 초(second)가 있다. 통계 정보(X17)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전)에는 제로로 재설정되는 것이 바람직하다. 통계 정보(X17)의 더 큰 값은 신뢰성이 더욱 열화됨을 표시한다.
전력 사이클 카운트(통계 정보(X18))가 설명된다. 전력이 저장 유닛(2)에 공급되고 저장 유닛(2)이 시작될 때마다, SSDC(41)는 통계 정보(X18)를 하나씩 증분시킨다. 전력 공급 및 시작 동안에는, 어떤 경우에, NAND 플래시 메모리(16)에 대하여 판독 동작이 발생하고 기록 동작이 발생한다. 그러므로, 통계 정보(18)의 더 큰 값은 신뢰성이 더욱 열화됨을 표시한다. 통계 정보(X18)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전)에는 제로로 재설정되는 것이 바람직하다.
비의도적인 전력 다운 카운트(통계 정보(X19))가 설명된다. 통상적으로, 저장 유닛(2)을 위한 전력 공급 장치가 턴오프될 때, 예를 들어, 정보 기술 ATA/ATAPI Command Set-3(ACS-3)에서 설명된 E0h Standby Immediate 명령을 저장 유닛(2)에 대해 발행하거나, NVM Express Revision 1.1에서 설명된 Shutdown Notification(CC.SHN)를 01b로 설정한다. 이러한 방법으로, 정보 처리 디바이스(111)는 저장 유닛(2)을, 전력 공급 장치가 차단될 수 있는 상태로 천이시키고, 그 다음으로, 저장 유닛(2)을 위한 전력 공급 장치를 차단시킨다. 다른 한편으로, 어떤 경우에는, 저장 유닛(2)이 전력 공급 장치가 차단될 수 있는 상태에 있지 않을 때에, 전력 공급 차단이 비의도적으로 발생한다. 이것은 비의도적인 전력 다운(투박한 전력 다운(Ungraceful Power Down), 안전하지 않은 셧다운(Unsafe Shutdown), 및 의도되지 않은 전력 다운)으로 칭해진다. 저장 유닛(2)이 부적절한 전력 공급 차단 후에 처음으로 시작될 때, SSDC(41)는 통계 정보(X19)를 하나씩 증분시킨다. 부적절한 전력 공급 차단 시에 사용자 데이터가 파괴되거나 NAND 메모리(16)로부터 그리고 NAND 메모리(16)로의 많은 양의 판독 및 기록 동작이 발생하므로, 부적절한 전력 공급 차단은 또한 저장 유닛(2)의 신뢰성 열화를 야기시킨다. 그러므로, 통계 정보(X19)의 더 큰 값은 신뢰성이 더욱 열화됨을 표시한다. 통계 정보(X19)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전)에는 제로로 재설정되는 것이 바람직하다.
온도가, 추천된 동작 온도의 최대 값을 초과하는 누적 시간(통계 정보(X20))이 설명된다. 온도계가 저장 유닛(2) 내에, 예를 들어, 저장 유닛(2)의 기판 상에, SSDC(41) 내에, 또는 NAND 메모리(16) 내에 장착될 때, SSDC(41)는 온도계로부터 온도 정보를 주기적으로 수신한다. 수신된 온도가 추천된 동작 온도(예컨대, 100℃)를 초과할 때, SSDC(41)는 클록, 내부 클록, 또는 정보 처리 디바이스(111)로부터 취득된 시간 정보에 기초하여, 추천된 동작 온도 이상의 온도에서의 동작의 시간(hour)들의 수를 증분시킨다. 통계 정보(X20)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전)에는 제로로 재설정되는 것이 바람직하다. 통계 정보(X20)의 더 큰 값은 신뢰성이 더욱 열화됨을 표시한다.
온도가 추천된 동작 온도의 최소 값 미만으로 떨어지는 누적 시간(통계 정보(X21))이 설명된다. 온도계가 저장 유닛(2) 내에 장착될 때, SSDC(41)는 온도계로부터 온도 정보를 주기적으로 수신한다. 수신된 온도가 추천된 동작 온도(예컨대, -40℃) 미만으로 떨어질 때, SSDC(41)는 클록, 내부 클록, 또는 정보 처리 디바이스(111)로부터 취득된 시간 정보에 기초하여, 추천된 동작 온도 이상의 온도에서의 동작의 시간(hour)들의 수를 증분시킨다. 통계 정보(X21)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전)에는 제로로 재설정되는 것이 바람직하다. 통계 정보(X21)의 더 큰 값은 신뢰성이 더욱 열화됨을 표시한다.
명령의 응답 시간 최대 값(통계 정보(X22))이 설명된다. SSDC(41)는 정보 처리 디바이스(111)로부터의 명령의 수신으로부터, 정보 처리 디바이스(111)로의 응답의 송신(또는 명령의 실행의 완료)까지 요구된 시간(또는 클록들의 수)을 측정하고, 시간의 최대 값을 통계 정보(65)에서 통계 정보(X22)로서 저장한다. 통계 정보(X22)를 초과하는 응답 시간이 발생할 때, SSDC(41)는 통계 정보(X22)를 응답 시간으로 중첩기록(overwrite)한다. SSDC(41)는 명령들의 각각에 대하여 통계 정보(X22)를 저장할 수 있다. 통계 정보(X22)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전), 또는 저장 유닛(2)의 출하 동안에는 제로로 재설정되는 것이 바람직하다.
명령의 응답 시간 평균 값(통계 정보(X23))이 설명된다. SSDC(41)는 정보 처리 디바이스(111)로부터의 명령의 수신으로부터, 정보 처리 디바이스(111)로의 응답의 송신(또는 명령의 실행의 완료)까지 요구된 시간(또는 클록들의 수)을 측정하고, 시간의 평균 값을 통계 정보(65)에서 통계 정보(X23)로서 저장한다. 예를 들어, SSDC(41)는 RAM(40)에서 고정된 수의 응답 시간 리스트들을 저장하고, 응답 시간 리스트들의 평균 값을 계산함으로써 통계 정보(X23)를 계산한다. SSDC(41)는 명령들의 각각에 대하여 통계 정보(X23)를 저장할 수 있다. 통계 정보(X23)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전), 또는 저장 유닛(2)의 출하 동안에는 제로로 재설정되는 것이 바람직하다.
NAND 메모리의 응답 시간 최대 값(통계 정보(X24))이 설명된다. SSDC(41)는 SSDC(41)에 의한 NAND 메모리(16)로의 명령의 발행으로부터, 응답의 수신(또는 명령 실행 완료 통지의 수신)까지 요구된 시간(또는 클록들의 수)을 측정하고, 시간의 최대 값을 통계 정보(65)에서 통계 정보(X24)로서 저장한다. 통계 정보(X24)를 초과하는 응답 시간이 발생할 때, SSDC(41)는 통계 정보(X24)를 응답 시간으로 중첩기록한다. SSDC(41)는 명령들의 각각에 대하여 통계 정보(X24)를 저장할 수 있다. 통계 정보(X24)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전), 또는 저장 유닛(2)의 출하 동안에는 제로로 재설정되는 것이 바람직하다.
NAND 메모리의 응답 시간 평균 값(통계 정보(X25))이 설명된다. SSDC(41)는 NAND 메모리(16)에 대한 명령의 발행으로부터 응답의 수신(또는 명령 실행 완료 통지의 수신)까지 요구된 시간(또는 클록들의 수)을 측정하고, 시간의 평균 값을 통계 정보(65)에서 통계 정보(X25)로서 저장한다. 예를 들어, SSDC(41)는 RAM(40)에서 고정된 수의 응답 시간 리스트들을 저장하고, 응답 시간 리스트들의 평균 값을 계산함으로써 통계 정보(X25)를 얻는다. SSDC(41)는 명령들의 각각에 대하여 통계 정보(X25)를 저장할 수 있다. 통계 정보(X25)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전), 또는 저장 유닛(2)의 출하 동안에는 제로로 재설정되는 것이 바람직하다.
현재 온도(통계 정보(X26))가 설명된다. 온도계가 저장 유닛(2) 내에 장착될 때, SSDC(41)는 온도계로부터 온도 정보를 주기적으로 수신한다. SSDC(41)는 온도계로부터 최후에 수신된 온도를 통계 정보(X26)에서 현재 온도로서 저장한다. 현재 온도가 극도로 높을 때(예컨대, 85℃ 이상), SSDC(41)는 저장 유닛(2)의 신뢰성이 악영향을 받는 것으로 결정한다. 온도가 극도로 낮을 때(예컨대, -10℃ 이하), SSDC(41)는 저장 유닛(2)의 신뢰성이 악영향을 받는 것으로 결정한다.
최고 온도(통계 정보(X27))가 설명된다. SSDC(41)는 현재 온도(X26)의 최대 값을 통계 정보(X27)에서 최고 온도로서 저장한다. 최고 온도가 극도로 높을 때(예컨대, 85℃ 이상), 저장 유닛(2)의 신뢰성은 악영향을 받는다. SSDC(41)가 온도계로부터 통계 정보(X27)보다 더 높은 현재 온도를 수신할 때, SSDC(41)는 통계 정보(X27)를 현재 온도로 중첩기록한다. 통계 정보(X27)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전), 또는 저장 유닛(2)의 출하 동안에는, 저장 유닛(2)의 동작 온도와 비교하여 충분히 낮은 온도(예컨대, -40℃)로 재설정되는 것이 바람직하다.
최저 온도(통계 정보(X28))가 설명된다. SSDC(41)는 현재 온도(X26)의 최소 값을 통계 정보(X28)에서 최저 온도로서 저장한다. 최저 온도가 극도로 낮을 때(예컨대, -40℃ 이하), SSDC(41)는 저장 유닛(2)의 신뢰성이 악영향을 받는 것으로 결정한다. SSDC(41)가 온도계로부터 통계 정보(X28)보다 더 낮은 현재 온도를 수신할 때, SSDC(41)는 통계 정보(X28)를 현재 온도로 중첩기록한다. 통계 정보(X28)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전), 또는 저장 유닛(2)의 출하 동안에는, 저장 유닛(2)의 동작 온도와 비교하여 충분히 높은 온도(예컨대, 120℃)로 재설정되는 것이 바람직하다.
시스템 데이터 중복성(통계 정보(X29))이 설명된다. NAND 메모리(16)의 관리 정보 영역(40M)에서의 데이터와 같은 시스템 데이터, 또는 NAND 메모리(16)에서 저장된 시스템 프로그램(펌웨어)이 파괴되고 판독할 수 없을 때, 저장 유닛(2)이 정상 동작을 수행할 수 없을 가능성이 있다. 저장 유닛(2)의 신뢰성의 개선을 위하여, SSDC(41)는 RAID1, RAID5, 또는 RAID6을 이용하여 복수의 물리 블록들 또는 복수의 채널들에 걸쳐 시스템 데이터를 중복성으로 하고, 영역(40M)에서 시스템 데이터를 저장한다. SSDC(41)는 시스템 데이터의 중복성을 수치 값으로 변환하고, 수치 값을 통계 정보(65)에서 시스템 데이터 중복성(통계 정보(X29))으로서 저장한다. 중복성 X29=R일 때, 최대 (R-1) 블록들까지의 데이터 손실이 복원될 수 있다. 예를 들어, SSDC(41)가 RAID1을 이용하여 4 개의 블록들 상에서 관리 정보(45)를 관리할 때, 관리 정보(45)는 블록 A, 블록 B, 블록 C, 및 블록 D에서 각각 클론(clone)들로서 저장된다. 다음으로, 관리 정보(45)는 모두 합하여 4 개의 클론들을 유지하므로, 관리 정보(45)의 중복성(X29)은 4이다. 예를 들어, 블록 A의 데이터가 파괴되고 판독될 수 없을 때, SSDC(41)는 블록 B, 블록 C, 또는 블록 D로부터의 데이터 판독을 수행함으로써 관리 정보(45)를 판독할 수 있다. 다음으로, 관리 정보(45)는 모두 합하여 3 개의 클론들을 유지하므로, 관리 정보(45)의 중복성(X29)은 3이다. 예를 들어, SSDC(41)가 RAID5를 이용하여 4 개의 블록들 상에서 관리 정보(45)를 관리할 때, 관리 정보(45)는 예를 들어, 4 개의 RAID5들에 의해 각각 블록 A, 블록 B, 블록 C, 및 블록 D에서 각각 저장된다. 다음으로, 최대 하나의 블록의 데이터가 손실되더라도, 데이터가 복원될 수 있으므로, 관리 정보의 중복성(X29)은 2이다. 하나의 블록에 대한 데이터가 손실되는 상태에서, 중복성(X29)은 1이다. 증복성(X29)이 감소할 때, 시스템 데이터는 복원될 수 없을 가능성이 더 많고, 저장 유닛(2)의 고장율이 증가한다. 통계 정보(X29)의 더 작은 값은 신뢰성이 더욱 열화됨을 표시한다. 증복성(X29)이 감소할 때, SSDC(41)는 데이터가 손실되는 블록에서 복원된 데이터를 중첩기록함으로써 중복성을 회복시키는 것이 바람직하다.
RAM(40)에서의 기록된 데이터 양의 합계(통계 정보(X30))가 설명된다. SSDC(41)는 저장 유닛(2)의 RAM(40)에서 기록된 데이터 기록 양들의 누적 값을 통계 정보(65)에서 통계 정보(X30)로서 저장한다. 하나의 페이지의 데이터가 RAM(40)에서 기록될 때마다, SSDC(41)는 통계 정보(X30)를 하나씩 증분시킨다. 통계 정보(X30)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전)에는 제로로 재설정되는 것이 바람직하다. 통계 정보(X30)의 더 큰 값은 신뢰성이 더욱 열화됨을 표시한다.
통계 정보 증가 비율(통계 정보(X31))이 설명된다. SSDC(41)는 관리 정보(44)에서 통계 정보(X01 내지 X25)의 최신이 아닌 정보(예컨대, 고정된 시간 전의 값들, 저장 유닛(2)이 전력 온 될 때의 시간에서의 값들, 및 저장 유닛(2)이 마지막으로 전력 다운될 때의 시간에서의 값들)를 별도로 저장한다. SSDC(41)는 예를 들어, 다음의 공식들 중의 임의의 하나에 따라 통계 정보(X31)를 계산한다.
통계 정보 증가 비율 = (최신 통계 정보) - (과거 정보)
통계 정보 증가 비율 = ((최신 통계 정보) - (과거 정보)) / (과거 정보가 취득된 후의 경과된 시간)
통계 정보 증가 비율 = ((최신 통계 정보) - (과거 정보)) / (과거 정보가 취득된 후의 NAND 액세스의 횟수)
통계 정보(X31)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전)에는 제로로 재설정되는 것이 바람직하다. 통계 정보(X31)의 더 큰 값은 신뢰성이 더욱 열화됨을 표시한다.
NAND GC 에러 플래그(통계 정보(X32))가 설명된다. 통계 정보(X32)가 1일 때, 동작을 위해 충분한 자유 블록들의 수는 NAND 메모리(16)에서 저장된 데이터의 가비지 수집(garbage collection; GC)(이하, NAND GC로서 지칭됨)으로도 취득될 수 없다. 통계 정보(X32)는 저장 유닛(2)의 제조 동안(예컨대, 테스트 처리 이전)에는 제로로 재설정되는 것이 바람직하다. 통계 정보(X32)의 더 큰 값은 신뢰성이 더욱 열화됨을 표시한다.
SSDC(41)는 통계 정보(65)에서, 위에서 설명된 모든 파라미터들을 저장할 수 있거나, 파라미터들 중의 임의의 하나의 일부를 저장할 수 있다. SSDC(41)는 RAM(40) 상의 영역(40A)에서 통계 정보(65)의 최신 정보를 저장하고, NAND 메모리(16) 상의 영역(40A)에서 최신 정보를 백업 데이터로서 주기적으로 백업하는 것이 바람직하다. 다른 한편으로, SSDC(41)는 RAM(40) 및 NAND 메모리(16) 중의 하나에서 최신 정보를 저장할 수 있고, 통계 정보를 정보 처리 디바이스(111)로 송신할 수 있으며 정보 처리 디바이스(111) 또는 정보 처리 디바이스(111)에 접속된 저장 디바이스에서 통계 정보를 저장할 수 있다.
순방향 LBA 룩업 변환
SSDC(41)가 LBA로부터 물리 어드레스를 특정하는 절차(순방향 LBA 룩업 변환)가 도 16을 참조하여 설명된다. LBA가 지정될 때, SSDC(41)는 LBA로부터 트랙 어드레스, 클러스터 어드레스, 및 클러스터내(intra-cluster) 어드레스를 계산한다.
우선, SSDC(41)는 트랙 테이블(63)을 검색하고, 계산된 트랙 어드레스에 대응하는 물리 블록 ID를 특정한다(단계들(S100 및 S101)). SSDC(41)는 특정된 물리 블록 ID가 유효한 것인지 여부를 결정한다(단계(S102)). 물리 블록 ID가 널(null)이 아니고 유효한 값일 때(단계(S102)에서 예), SSDC(41)는 ABT(62)를 검색하고, 물리 블록 ID가 ABT(62) 내에 입력되어 있는지 여부를 결정한다(단계(S103)). 물리 블록 ID가 ABT(62) 내에 입력되어 있을 때(단계(S104)에서 예), 물리 블록 ID에 의해 지정된 물리 블록의 헤드 위치로부터 트랙내(intra-track) 어드레스에 의해 시프트된 위치는 지정된 LBA에 대응하는 NAND 메모리(16) 상의 물리적 위치이다(단계(S105)). 이러한 경우에는, LBA에 대응하는 NAND 메모리(16) 상의 물리적 위치를 특정하기 위하여 클러스터 테이블(64)이 불필요하다. 이러한 LBA는 "트랙 단위로 관리된 LBA"로서 지칭된다. 단계(S104)에서, 물리 블록 ID가 ABT(62) 내에 입력되지 않을 때(단계(S104)에서 아니오), 지정된 LBA는 그것에 대응하는 물리 어드레스를 가지지 않는다. 이러한 상태는 "미기록된 상태"로서 지칭된다(단계(S106)).
단계(S102)에서, 지정된 트랙 어드레스에 대응하는 물리 어드레스가 널이고 무효한 값일 때(단계(S102)에서 아니오), SSDC(41)는 LBA로부터 클러스터 어드레스를 계산하고, 클러스터 테이블(64)을 검색하고, 클러스터 테이블(64)로부터, 계산된 클러스터 어드레스에 대응하는 물리 블록 ID 및 그것에 대응하는 물리 블록내(intra-physical block) 어드레스를 취득한다(단계(S107)). 물리 블록 ID 및 물리 블록내 페이지 어드레스에 의해 지정된 물리 페이지의 헤드 위치로부터 클러스터내 어드레스에 의해 시프트된 위치는 지정된 LBA에 대응하는 NAND 메모리(16) 상의 물리적 위치이다. 이러한 경우에는, LBA에 대응하는 NAND 메모리(16) 상의 물리적 위치가 트랙 테이블(63)만으로부터 특정될 수 없고, 클러스터 테이블(64)이 참조될 필요가 있다. 이러한 LBA는 "클러스터 단위로 관리된 LBA"로서 지칭된다(단계(S108)).
판독 동작
정보 처리 디바이스(111)에 의한 저장 유닛(2) 및 저장 유닛(3)으로부터의 판독 동작은 도 17 및 도 18을 참조하여 설명된다. 이 실시형태에서 설명된 판독 동작에서는, 정보 기술 ATA/ATAPI Command Set-3(ACS-3)에서 설명된 60h READ FPDMA QUEUED는 판독 명령으로서 이용된다. 그러나, 25h READ DMA EXT와 같은 다른 판독 명령들이 채택될 수 있다. 판독 명령의 타입에 있어서의 차이는 본 발명의 본질에 영향을 주지 않는다. 예를 들어, NVM Express Revision 1.1에서 설명된 02h Read는 판독 명령으로서 이용될 수 있다. 저장 유닛(2)이 정보 처리 디바이스(111)로부터 판독 명령을 수신할 때(단계(S110)), SSDC(41)는 판독 명령을 RAM(40) 상의 판독 명령 큐에 추가하고(단계(S111)), 판독 명령의 수신 통지를 정보 처리 디바이스(111)에 반송한다.
다른 한편으로, 판독 명령이 RAM(40) 상의 판독 명령 큐(read command queue)에서 존재할 때, SSDC(41)는 판독 처리가 실행될 수 있는지 여부를 결정한다(단계(S120)). 판독 처리가 실행될 수 있는 것으로 결정할 시에, SSDC(41)는 도 16에서 도시된 순방향 LBA 룩업 변환 절차에 따라 정보 처리 디바이스(111)로부터 수신된 데이터의 물리적 위치를 특정한다(단계(S121)). SSDC(41)는 특정된 위치에서의 물리 페이지로부터 데이터를 판독하고(단계(S123)), 판독 데이터에서의 ECC 중복성 비트를 이용하여 판독 데이터가 ECC 복호화를 거치게 하고(단계(S124)), IFC(42)를 통해 복호화된 데이터를 정보 처리 디바이스(111)로 송신하고(단계(S125)), 통계 정보(65)를 업데이트한다. SSDC(41)는 RAM(40)에서의 NAND 메모리(16)로부터 판독된 데이터를 한 번 기록할 수 있고, RAM(40)에서 기록된 데이터를 복호화할 수 있고, 복호화된 데이터를 정보 처리 디바이스(111)로 송신할 수 있거나, 또는 RAM(40)에서 복호화된 데이터를 한 번 기록할 수 있고 RAM(40)에서 기록된 데이터를 정보 처리 디바이스(111)로 송신할 수 있다.
단계(S124)에서, SSDC(41)는 ECC에 의한 복호화를 시도한다. 그러나, 복호화가 수행될 수 없을 때, SSDC(41)는 ABT(62)로부터, 복호화될 수 없는 페이지를 포함하는 물리 블록을 삭제하고, 물리 블록을 BBT(61)에서 등록하고, 통계 정보(65)의 총 정정불가능한 ECC 에러 카운트(통계 정보(X09))를 증분시킨다. 다음으로, SSDC(41)는 블록의 데이터를 FBT(60)로부터 할당된 자유 블록으로 복사하고, 자유 블록의 물리 블록 ID를 ABT(62)에서 등록하고, 복사 출발지 물리 블록 ID로부터 복사 목적지 물리 블록 ID까지의 트랙 테이블(63) 및 클러스터 테이블(64)의 물리 블록들을 재기록한다.
기록 동작
정보 처리 디바이스(111)에 의한 저장 유닛(2) 및 저장 유닛(3)에서의 기록 동작은 도 19, 도 20a 및 도 20b를 참조하여 설명된다. 이 실시형태에서 설명된 기록 동작에서는, 정보 기술 ATA/ATAPI Command Set-3(ACS-3)에서 설명된 61h WRITE FPDMA QUEUED는 기록 명령으로서 이용된다. 그러나, 35h WRITE DMA EXT와 같은 다른 기록 명령들이 채택될 수 있다. 기록 명령의 타입에 있어서의 차이는 본 발명의 본질에 영향을 주지 않는다. 예를 들어, NVM Express Revision 1.1에서 설명된 01h Write는 기록 명령으로서 이용될 수 있다. 예를 들어, 저장 유닛(2)이 정보 처리 디바이스(111)로부터 기록 명령을 수신할 때(단계(S130)), SSDC(41)는 기록 명령을 RAM(40) 상의 기록 명령 큐에 추가하고(단계(S131)), 기록 명령의 수신 통지를 정보 처리 디바이스(111)에 반송한다.
다른 한편으로, 기록 명령이 RAM(40) 상의 기록 명령 큐(write command queue)에서 존재할 때, SSDC(41)는 기록 처리가 실행될 수 있는지 여부를 결정한다(단계(S140)). 기록 처리가 실행될 수 있는 것으로 결정할 시에, SSDC(41)는 기록이 가능한 것으로 정보 처리 디바이스(111)에 통지하고, 정보 처리 디바이스(111)로부터 기록 데이터를 수신하고, 수신된 데이터가 ECC 인코딩을 거치게 하고, RAM(40)의 캐시 메모리(46)에서 인코딩된 데이터를 저장한다. SSDC(41)는 캐시 메모리(46)에서 인코딩되지 않은 데이터를 저장할 수 있고, NAND 메모리(16)에서 데이터를 기록할 때에 데이터를 인코딩할 수 있다.
그 후에, SSDC(41)는 FBT(60)를 판독하고(단계(S141)), FBT(60)로부터 자유 블록의 물리 블록 ID를 취득한다. 자유 블록이 존재하지 않을 때(단계(S142)에서 아니오), SSDC(41)는 이하에서 설명된 NAND 메모리(16)의 NAND GC를 수행한다(단계(S143)). NAND GC 후에, SSDC(41)는 FBT(60)를 판독하고(단계(S144)), FBT(60)로부터 자유 블록의 물리 블록 ID를 취득한다. SSDC(41)는 물리 블록 ID가 취득되는 자유 블록에 대하여 소거 동작을 적용한다. 소거 에러가 발생할 때, SSDC(41)는 물리 블록 ID를 BBT(61)에 추가하고, FBT(60)로부터 물리 블록 ID를 삭제하고, 자유 블록을 다시 취득하기 위하여 (S141)로부터 다시 처리를 실행한다. 소거 에러가 한 번 발생하는 물리 블록에서도, 소거 동작이 다시 수행될 경우, 물리 블록은 때때로, 소거 에러를 야기시키지 않으면서 정상적으로 소거될 수 있다. 그러므로, 배드 블록들의 수에 있어서의 불필요한 증가를 방지하는 측면에서, SSDC(41)는 블록들의 각각에 대하여, FBT(60) 및 ABT(62)에서 통계 정보(X06)로서 작용하는 각각의 블록에 대한 소거 에러 카운트의 항목(item)을 예약하고, 블록의 소거 에러가 발생할 때에 항목을 증분시키고, 각각의 블록에 대한 소거 에러 카운트가 미리 결정된 값 이상으로 되도록 증가할 때에 블록을 BBT(61)에서 등록하는 것이 바람직하다. 더욱 바람직하게는, 소거 에러들이 연속적으로 발생하는 물리 블록만을 배드 블록으로서 설정하기 위하여, SSDC(41)는 "각각의 블록에 대한 소거 에러 카운트" 대신에 "각각의 블록에 대한 소거 카운트 연속 에러들"의 항목을 제공하고, 블록의 소거 에러가 발생할 때에 항목을 증분시키고, 에러 없이 소거가 수행될 수 있을 때에 항목을 제로로 재설정하고, "각각의 블록에 대한 소거 카운트 연속 에러들"이 미리 결정된 값 이상으로 되도록 증가할 때에 블록을 BBT(61)에서 등록한다.
그 후에, 기록 명령에서 지정된 LBA가 미기록된 상태에 있는지 여부를 알아내기 위하여, SSDC(41)는 도 16에서 도시된 순방향 룩업 변환 절차에 따라 LBA에 대응하는 유효한 데이터가 이미 NAND 메모리(16)에서 저장되어 있는지 여부를 결정한다(단계들(S145 및 S146)).
LBA가 미기록 상태에 있을 때(단계(S146)에서 예), SSDC(41)는 자유 블록에서 캐시 메모리(46) 내에 저장된 수신 데이터를 기록하고(단계(S147)), 기록된 자유 블록(새로운 물리 블록)의 ID 및 자유 블록의 소거 카운트를 ABT(62)에서 등록하고, FBT(60)로부터, 기록된 물리 블록의 ID 및 자유 블록의 소거 카운트를 삭제한다(단계(S151)). 다음으로, SSDC(41)는 트랙 단위에서의 섹션(트랙 섹션)을 갖는 수신 데이터의 LBA를 분할하고, 트랙 섹션이 데이터로 채워져 있는지 여부를 결정하여, LBA가 트랙 단위로 관리되는지 또는 클러스터 단위로 관리되는지 여부를 결정한다(단계(S152)). 즉, 트랙 섹션이 데이터로 채워져 있을 때, LBA는 트랙 단위로 관리되고, 트랙 섹션이 데이터로 채워져 있지 않을 때, LBA는 클러스터 단위로 관리된다. LBA가 클러스터 단위로 관리될 때, SSDC(41)는 클러스터 테이블(64)을 재기록하고, 새로운 물리 블록 ID를 LBA와 연관시키고(단계(S153)), 트랙 테이블(63)을 재기록하고, 무효인 물리 블록 ID(예컨대, 널)를 LBA와 연관시킨다. LBA가 트랙 유닛으로 관리될 때, SSDC(41)는 트랙 테이블을 재기록하고, 새로운 물리 블록 ID를 LBA와 연관시킨다(단계(S154)).
다른 한편으로, 단계(S146)에서, LBA가 미기록된 상태에 있지 않을 때, SSDC(41)는 순방향 룩업 변환에 의해 얻어진 물리 블록 ID에 기초하여, NAND 메모리(16)로부터 물리 블록 ID에 대응하는 물리 블록에서의 모든 데이터를 판독하고, RAM(40)에서 데이터를 기록한다(단계(S148)). 다음으로, SSDC(41)는 캐시 메모리(46)에서 저장된 데이터와, NAND 메모리(16)로부터 판독되며 RAM(40)에서 기록되는 데이터를 RAM(40)에서 중첩기록하고(단계(S149)), 자유 블록에서 조합된 데이터를 기록한다(단계(S150)).
단계(S150)에서, 프로그램 에러가 발생할 때, SSDC(41)는 물리 블록 ID를 BBT(61)에 추가하고, FBT(60)로부터 물리 블록 ID를 삭제하고, 자유 블록을 다시 취득하기 위하여 단계(S141)로부터 다시 처리를 실행한다. 프로그램 에러가 한 번 발생하는 물리 블록에서도, 기록 동작이 다시 수행될 경우, 물리 블록은 때때로, 프로그램 에러를 야기시키지 않으면서 정상적으로 기록될 수 있다. 그러므로, 배드 블록들의 수에 있어서의 불필요한 증가를 방지하는 측면에서, SSDC(41)는 블록들의 각각에 대하여, FBT(60) 및 ABT(62)에서 통계 정보(X05)로서 작용하는 각각의 블록에 대한 프로그램 에러의 발생 횟수의 항목을 예약하고, 블록의 프로그램 에러가 발생할 때에 항목을 증분시키고, 각각의 블록에 대한 프로그램 에러 카운트가 미리 결정된 값 이상으로 되도록 증가할 때에 블록을 BBT(61)에서 등록한다. 더욱 바람직하게는, 프로그램 에러들이 연속적으로 발생하는 물리 블록만을 배드 블록으로서 설정하기 위하여, SSDC(41)는 "각각의 블록에 대한 프로그램 에러 카운트" 대신에 "각각의 블록에 대한 기록 연속 에러들의 횟수"의 항목을 제공하고, 블록의 프로그램 에러가 발생할 때에 항목을 증분시키고, 에러 없이 기록이 수행될 수 있을 때에 항목을 제로로 재설정하고, "각각의 블록에 대한 기록 연속 에러들의 횟수"가 미리 결정된 값 이상으로 되도록 증가할 때에 블록을 BBT(61)에서 등록한다.
SSDC(41)는 기록된 자유 블록(새로운 물리 블록)의 ID 및 소거 카운트를 ABT(62)에서 등록하고, FBT(60)로부터 기록된 물리 블록의 ID를 삭제한다(단계(S151)). LBA가 클러스터 단위로 관리될 때, SSDC(41)는 클러스터 테이블(64)의 과거 물리 블록 ID를 새로운 물리 블록 ID로 재기록한다(단계들(S152 및 S153)). LBA가 트랙 단위로 관리될 때, SSDC(41)는 트랙 테이블의 과거 물리 블록 ID를 새로운 물리 블록 ID로 재기록한다(단계들(S152 및 S153)). 또한, SSDC(41)는 과거 물리 블록 ID 및 과거 물리 블록 ID의 소거 카운트를 FBT(60)에 추가하고, ABT(62)로부터 과거 물리 블록 ID 및 과거 물리 블록 ID의 소거 또는 횟수를 삭제한다(단계(S155)). SSDC(41)는 위에서 설명된 기록 처리에 기초하여 통계 정보(65)를 업데이트한다.
NAND GC
통상적으로, 저장 유닛(2)의 총 LBA 용량(총 논리 섹터 카운트)은 저장 유닛(2)의 NAND 메모리(16)의 총 용량보다 더 작도록 설계된다(오버 프로비저닝(over provisioning)). 그러므로, 기록 동작이 트랙 단위로 계속 수행되는 한, 자유 블록들은 고갈되지 않는다. 다른 한편으로, 클러스터 단위에서의 기록의 큰 횟수가 미기록된 LBA에 대해 발생할 때, 클러스터보다 더 큰 용량을 가지는 물리 블록은 클러스터 단위에서의 하나의 기록에 할당된다. 그러므로, 기록되어야 할 데이터 용량보다 더 많은 NAND 메모리(16)의 물리 블록들이 필요하다. 결과적으로, 자유 블록들은 고갈될 가능성이 있다. 자유 블록들이 고갈될 때, 자유 블록은 이하에서 설명된 NAND 메모리(16)의 배치를 통해 새롭게 취득될 수 있다.
SSDC(41)에 의한 NAND GC는 도 21을 참조하여 설명된다. 물리 블록 내에 저장된 모든 클러스터들은 항상 유효한 클러스트들이 아니다. 유효한 클러스터와 동등하지 않은 무효인 클러스터는 LBA에 맵핑되지 않는다. 유효한 클러스터는 최신 데이터가 저장되는 클러스터이다. 무효인 클러스터는, 동일한 LBA의 데이터가 또 다른 장소에서 기록되며 참조되지 않는 클러스터이다. 물리 블록에서는, 무효인 클러스터의 공간에 의해 데이터에 대한 자유 공간이 있다. 자유 블록은 유효한 클러스터의 데이터를 수집하고 상이한 블록에서 데이터를 재기록하기 위한 NAND GC를 실행함으로써 취득될 수 있다.
우선, SSDC(41)는 선택된 물리 블록 ID=i를 제로로 설정하고, 자유 공간 누적 양 S를 제로로 설정한다(단계(S160)). SSDC(41)는 ID i=0인 물리 블록이 트랙 테이블(63) 내에 입력되는지 여부를 결정한다(단계(S161)). 물리 블록이 트랙 테이블 내에 입력될 때, SSDC(41)는 i를 1 증분시키고(단계(S162)), 다음 ID 번호를 가지는 물리 블록에 관하여 동일한 결정을 수행한다(단계(S161)). 즉, 물리 블록 ID가 트랙 테이블(63) 내에 포함될 때, 물리 블록의 데이터는 트랙 단위로 관리되므로, 데이터는 NAND GC 대상이 아니다.
ID=i인 물리 블록이 트랙 단위로 관리되지 않을 때(단계(S161)에서 아니오), SSDC(41)는 클러스터 테이블(64)을 참조하고 ID=i인 물리 블록 내에 포함된 유효한 클러스터의 모든 어드레스들을 취득한다(단계(S163)). SSDC(41)는 취득된 유효한 클러스터의 총 용량에 대한 크기 v를 계산한다(단계(S164)). 크기 v가 물리 블록 크기보다 더 작을 때(단계(S165)에서 예), SSDC(41)는 현재의 물리 블록의 ID를 NAND GC 대상 블록 리스트에 추가한다(단계(S166)). 또한, SSDC(41)는 현재의 물리 블록의 취득된 클러스터 용량 v를 취득된 클러스터 누적 양 S에 추가하고, 취득된 클러스터 누적 양 S를 업데이트한다(단계(S167)).
단계(S168)에서, 크기 v가 물리 블록 크기보다 더 작지 않거나 취득된 클러스터 누적 양 S가 물리 블록 크기에 도달하지 않을 때, SSDC(41)는 i를 1 증분시키고(단계(S162)), 다음 ID 번호를 가지는 물리 블록에 관하여 동일한 방식으로 단계들(S161 내지 S167)에서의 절차들을 실행한다. 단계(S168)에서, SSDC(41)는 취득된 클러스터 누적 양 S가 물리 블록 크기에 도달할 때까지 단계들(S161 내지 S167)에서의 절차를 반복한다.
단계(S168)에서, 취득된 클러스터 누적 양 S가 물리 블록 크기에 도달할 때, SSDC(41)는 NAND GC 대상 블록 리스트 상의 모든 물리 블록들에 관하여 모든 유효한 클러스터들의 데이터를 판독하며 RAM(40)에서 데이터를 기록하고(단계(S169)), NAND GC 대상 블록 리스트 상의 모든 물리 블록들을 소거하고(단계(S170)), ABT(62)로부터 소거된 모든 물리 블록들을 삭제하며 물리 블록들을 FBT(60)에 추가한다(단계(S171)). 다음으로, SSDC(41)는 소거 카운트를 증분시킨다. 단계(S170)에서 수행된 소거 처리의 대상은 단계(S172)에서 데이터가 기록되는 블록으로 제한될 수 있다. 이것은 블록들의 소거 카운트를 억제하는 측면에서 바람직하다.
소거 에러가 발생할 때, SSDC(41)는 물리 블록 ID를 BBT(61)에 추가하고, FBT(60)로부터 물리 블록 ID를 삭제한다. 소거 에러가 한 번 발생하는 물리 블록에서도, 소거가 다시 수행될 경우, 물리 블록은 때때로, 소거 에러를 야기시키지 않으면서 정상적으로 소거될 수 있다. 그러므로, 배드 블록들의 수에 있어서의 불필요한 증가를 방지하기 위하여, SSDC(41)는 블록들의 각각에 대하여, FBT(60) 및 ABT(62)에서 "각각의 블록에 대한 소거 에러 카운트"의 항목을 예약하고, 블록의 소거 에러가 발생할 때에 항목을 증분시키고, 각각의 블록에 대한 소거 에러 카운트가 미리 결정된 값 이상으로 되도록 증가할 때에 블록을 BBT(61)에서 등록하는 것이 바람직하다. 더욱 바람직하게는, 소거 에러들이 연속적으로 발생하는 물리 블록만을 배드 블록으로서 설정하기 위하여, SSDC(41)는 "각각의 블록에 대한 소거 에러 카운트" 대신에 "각각의 블록에 대한 소거 카운트 연속 에러들"의 항목을 예약하고, 블록의 소거 에러가 발생할 때에 항목을 증분시키고, 에러 없이 소거가 수행될 수 있을 때에 항목을 제로로 재설정하고, "각각의 블록에 대한 소거 카운트 연속 에러들"이 미리 결정된 값 이상으로 되도록 증가할 때에 블록을 BBT(61)에서 등록한다.
SSDC(41)는 FBT(60)로부터 새로운 자유 블록을 취득하고, 취득된 자유 블록에서, RAM(40) 내에 기록된 데이터를 기록하고(단계(S172)), 데이터가 기록되어 있는 자유 블록의 물리 블록 ID 및 블록의 소거 카운트를 ABT(62)에 추가하고, FBT(60)로부터, 데이터가 기록되어 있는 블록의 블록 ID를 삭제한다(단계(S173)). 또한, SSDC(41)는 이번의 NAND GC에 대응시키기 위하여, 클러스터 테이블(64)에서 클러스터 어드레스, 물리 블록 ID, 및 물리 블록내 페이지 어드레스를 업데이트한다(단계(S174)). SSDC(41)는 NAND GC의 처리 내용들에 기초하여 통계 정보(65)를 업데이트한다.
단계(S172)에서, 프로그램 에러가 발생할 때, SSDC(41)는 물리 블록 ID를 BBT(61)에 추가하고, FBT(60)로부터 물리 블록 ID를 삭제하고, 자유 블록을 다시 취득한다. 프로그램 에러가 한 번 발생하는 물리 블록에서도, 기록 동작이 다시 수행될 경우, 물리 블록은 때때로, 프로그램 에러를 야기시키지 않으면서 정상적으로 기록될 수 있다. 그러므로, 배드 블록들의 수에 있어서의 불필요한 증가를 방지하기 위하여, SSDC(41)는 블록들의 각각에 대하여, FBT(60) 및 ABT(62)에서 "각각의 블록에 대한 프로그램 에러 카운트"의 항목을 예약하고, 블록의 프로그램 에러가 발생할 때에 항목을 증분시키고, "각각의 블록에 대한 프로그램 에러 카운트"가 미리 결정된 값 이상으로 되도록 증가할 때에 블록을 BBT(61)에서 등록하는 것이 바람직하다. 더욱 바람직하게는, 프로그램 에러들이 연속적으로 발생하는 물리 블록만을 배드 블록으로서 설정하기 위하여, SSDC(41)는 "각각의 블록에 대한 프로그램 에러 카운트" 대신에 "각각의 블록에 대한 기록 연속 에러들의 횟수"의 항목을 예약하고, 블록의 프로그램 에러가 발생할 때에 항목을 증분시키고, 에러 없이 기록이 수행될 수 있을 때에 항목을 제로로 재설정하고, "각각의 블록에 대한 기록 연속 에러들의 횟수"가 미리 결정된 값 이상으로 되도록 증가할 때에 블록을 BBT(61)에서 등록한다.
도 21에서 도시된 절차에서, 자유 블록에서의 데이터를 우선적으로 필터링하기 위한 NAND GC가 수행된다. 그러나, 단계(S164)에서 물리 블록 크기로부터 취득된 클러스터의 용량을 감산하여 v를 계산하고, 단계(S165)에서 v가 0보다 더 작은지 여부를 결정하고, v가 0보다 더 작을 때에 단계(S168)로 시프트하고, v가 0보다 더 작지 않을 때에는 단계(S163)로 시프트함으로써, 자유 블록을 우선적으로 취득하기 위한 NAND GC가 수행될 수 있다.
삭제 통지
SSDC(41)에 의한 삭제 통지 처리가 도 22를 참조하여 설명된다. 삭제 통지는, 데이터의 삭제가 정보 처리 디바이스(111) 상의 OS(100)에 의해 수행될 때에 정보 처리 디바이스(111)로부터 저장 유닛(2)으로 송신된 명령이다. 삭제 통지 처리를 위해 이용된 명령은 일반적으로 트림 명령(trim command)으로 칭해진다. 트림 명령의 예들은 정보 기술 ATA/ATAPI Command Set-3(ACS-3)에서 설명된 06h Data Set Management (06h 데이터 세트 관리) 명령 및 NVM Express Revision 1.1에서 설명된 09h Data Set Management(09h 데이터 세트 관리) 명령의 할당해제를 포함한다. 삭제 통지 처리는, 데이터가 OS(100) 상에서 또는 파일 시스템 상에서 삭제될 때, 삭제된 데이터가 존재하는 논리 어드레스 영역(LBA 영역)이 LBA 및 섹터들의 수의 세트를 포함하는 LBA 범위 엔트리(Range Entry)로서 저장 디바이스에 통지되고, 이것에 의해, 영역이 저장 유닛(2) 및 저장 유닛(3) 상에서 마찬가지로 자유 영역으로서 취급될 수 있는 방식이다. SSDC(41)는 삭제 통지에 따라 자유 블록을 새롭게 취득할 수 있다. 트림 명령의 기능은 명령뿐만 아니라, 예를 들어, 정보 기술 ATA/ATAPI Command Set-3(ACS-3)에서 설명된 SCT Command Transport(SCT 명령 전송), NVM Express Revision 1.1에서 설명된 08h Write Zeroes(08h 제로 기록) 명령, 및 벤더 고유 명령(vendor unique command)과 같은 다른 명령들에 의해 실현될 수 있다.
저장 유닛(2) 및 저장 유닛(3)이 정보 처리 디바이스(111)로부터 삭제 통지를 수신할 때(단계(S180)), SSDC(41)는 도 16에서 도시된 절차에 따라 삭제 통지에서 지정된 LBA가 순방향 LBA 룩업 변환을 거치게 한다. 삭제 통지 내에 포함된 LBA가 트랙 단위로 관리될 때(단계(S181)에서 예), SSDC(41)는 물리 블록 ID를 FBT(60)에 추가하고 ABT(62)로부터 물리 블록 ID를 삭제한다(단계(S184)). 다른 한편으로, 삭제 통지 내에 포함된 LBA가 클러스터 단위로 관리될 때(단계(S181)에서 아니오), SSDC(41)는 클러스터 테이블(64)로부터 물리 블록에 대응하는 모든 클러스터들을 삭제하고(단계(S182)), LBA에 대응하는 트랙에 대응하는 물리 블록 ID에서의 적절한 유효한 값(예컨대, FFFF)을 트랙 테이블(63)에서 기록하고(단계(S183)), 물리 블록 ID를 FBT(60)에 추가하며 ABT(62)로부터 물리 블록 ID를 삭제한다(단계(S184)). SSDC(41)는 NAND GC 이외의 삭제 통지 처리를 통해 자유 블록을 취득할 수 있다.
통상적으로, 기록을 위해 충분한 자유 블록들의 수는 NANG GC에 의해 취득될 수 있다. 기록을 위해 충분한 자유 블록들의 수가 NAND GC에 의해서도 취득될 수 없을 때에는, SSDC(41)가 통계 정보(65)의 NAND GC 에러 플래그를 1로 설정하고, 정보 처리 디바이스(111)에 의한 통계 정보(65)의 취득을 통해 자유 블록이 취득될 수 없는 것을 정보 처리 디바이스(111)에 통지하는 것이 바람직하다. 예를 들어, NAND GC 에러 플래그가 1로 변화할 때의 시간으로부터 저장 유닛(2)이 실제적으로 동작을 중지시킬 때까지의 시간에 대해 마진을 부여하기 위하여, 조건{(NAND GC가 수행된 후의 자유 블록들의 수) < (기록을 위해 필요한 자유 블록들의 수) + (마진)}이 충족될 때에 NAND GC 실패 플래그를 1로 설정하고, 신뢰성 정보로서의 자유 블록의 취득에 있어서의 실패를 정보 처리 디바이스(111)에 통지하는 것이 바람직하다.
NAND GC는, 기록 요청이 정보 처리 디바이스(111)로부터 수신될 때뿐만 아니라, 예를 들어, 명령이 정보 처리 디바이스로부터 최후로 수신된 후에 미리 결정된 시간이 경과할 때, 또는 대기(standby), 아이들링(idling), 또는 슬립(sleep) 상태로의 시프트를 위한 명령이 정보 처리 디바이스(111)로부터 수신될 때에도 실행될 수 있거나, 또는 예를 들어, SSDC(41)가 ACS-3에서 설명된 SCT Command Transport, 다른 벤더 명령들 등을 통해 정보 처리 디바이스(111)로부터 NAND GC를 시작하기 위한 명령을 수신할 때에 실행될 수 있다.
에러 처리
SSDC(41)에 의한 NAND 메모리(16)에 관한 에러 처리가 도 23을 참조하여 설명된다. 정보 처리 디바이스(111)로부터의 기록 요청에 대한 처리 및 NANG GC 처리와 같은 다양한 종류들의 처리는 통상적으로 위에서 설명된 바와 같이 수행된다. 그러나, 일부의 경우들에는, 예를 들어, 프로그램 에러가 NAND 메모리(16)에 대한 기록 동작(프로그램 동작)에서 발생하거나, 소거 동작이 NAND 메모리(16)에 대한 소거 동작에서 발생하거나, 또는 ECC 에러(에러 정정 처리에서의 실패)가 NAND 메모리(16)에 대한 판독 동작에서 발생한다. 이 경우, 에러에 대한 예외 처리가 필요하다.
에러들 중의 임의의 하나가 발생할 때(단계(S190)), SSDC(41)는 에러가 발생하는 물리 블록을 BBT(61)에 추가하고(단계(S191)), ABT(62) 및 FBT(60)로부터 에러가 발생하는 물리 블록을 삭제하여(단계(S192)), 그 후에, 에러가 발생하는 물리 블록을 액세스하는 것을 불가능하게 한다. 다음으로, SSDC(41)는 에러가 발생하는 물리 블록의 데이터를 또 다른 물리 블록으로 복사할 수 있다. SSDC(41)는 에러 처리에 기초하여 통계 정보(65)를 업데이트한다.
에러 처리의 예들은 판독 처리, 기록 처리, 및 NAND GC 처리에 관하여 위에서 설명된다. 그러나, 에러 처리는 예들로 제한되지 않고, NAND 메모리(16)에 대한 모든 종류들의 판독 처리, 기록 처리, 및 소거 처리에 적용될 수 있다.
수명 종료를 결정하기 위한 처리
정보 처리 디바이스(111)가 저장 유닛(2)을 이용하고 있을 때, 통계 정보(65)에서 저장된 값들은 열화되고 저장 유닛(2)은 수명 종료에 도달하게 된다. 예를 들어, 정보 처리 디바이스(111)가 저장 유닛(2)을 이용하고 있는 동안, NAND 메모리(16)의 블록들은 신뢰성에 있어서 열화되고, 배드 블록들의 수가 증가하고, 자유 블록들의 수 및 활성 블록들의 수의 합이 감소한다. 또한, 정보 처리 디바이스(111)가 저장 유닛(2)을 이용하고 있을 때, SSDC(41)가 NAND GC를 실행하더라도, 기록 처리를 수행하기 위해 충분한 자유 블록들의 수가 취득될 수 없다. 이것은 저장 유닛(2)의 수명 종료의 예이다. 다음의 설명에서는, 저장 유닛(2)의 수명 종료가 종료될 때에 수행된 제어 프로그램(200)에 의한 처리가 설명된다.
시작될 때, 제어 프로그램(200)은 주 메모리(6) 내에 상주하고, 저장 유닛(2)의 통계 정보(65)와 같은 신뢰성 정보를 모니터링한다. 저장 유닛(2)의 통계 정보(65)를 항상 모니터링하기 위하여, OS(100)가 영역(16B)(또는 (20B))으로부터 영역(6A)으로 판독될 때 또는 그 직후에, 제어 프로그램(200)은 영역(16B)(또는 영역(20B))으로부터 영역(6B)으로 판독되는 것이 바람직하다(도 2 및 도 3 참조).
예를 들어, 도 24에서 도시된 바와 같이, 제어 프로그램(200)은 고정된 시간마다(예컨대, 1 분마다) 또는 각각의 고정된 처리 횟수로(예컨대, 저장 유닛(2)에 대한 100 번의 액세스들마다, 또는 저장 유닛(2)에 의해 수신된 데이터의 각각의 10GB에서) 저장 유닛(2)으로부터 통계 정보(65)와 같은 신뢰성 정보를 취득한다. 저장 유닛(2)이 수명 종료에 더 근접할수록 신뢰성 정보의 취득의 빈도를 증가시킴으로써, 사용자 데이터의 더욱 견고한 보호를 수행하는 것이 가능하다. 통계 정보를 취득하는 방법으로서, 예를 들어, INCITS ACS-3에서 설명된, 메모리에 대한 자기 진단 기능으로서 이용된 S.M.A.R.T(Self-Monitoring Analysis and Reporting Technology; 자기-모니터링 분석 및 보고 기술)의 명령인 B0h/D0h SMART READ DATA 명령 또는 B0h/D5h SMART READ LOG 명령이 이용될 수 있다. NVM Express Revision 1.1에서 설명된 02h Get Log Page 명령이 이용될 수 있다. ACS-3에서 설명된 SCT Command Transport 또는 다른 벤더 고유 명령들이 이용될 수 있다. SCSI Primary Commands-4 (SPC-4), INCITS T10/1731-D, 및 Revision 36e(http://www.t10.org/)에서 설명된 4Dh LOG SENSE 명령이 이용될 수 있다.
도 27에서 도시된 예에서, SSDC(41)는 통계 정보(65)에 기초하여 테이블 데이터를 생성하거나 통계 정보(65)에서 테이블 데이터를 직접적으로 저장하고, 테이블 데이터를 신뢰성 정보로서 정보 처리 디바이스(111)로 송신한다. 통계 정보(65)로서 S.M.A.R.T를 이용할 때, 도 27에서 도시된 바와 같이, SSDC(41)는 속성 ID를 통계 정보(65)의 구성요소들의 각각에 대해 할당한다. SSDC(41)는 속성 ID를 통계 정보(65)의 구성요소들의 일부에만 할당할 수 있다. 통계 정보(65)의 구성요소들 중에서, 신뢰성이 더욱 열화될수록 그 값이 증가하는 구성요소에 관하여, SSDC(41)는 예를 들어, 이하에서 설명된 바와 같이 표준화된 값인 속성 값을 계산한다.
속성 값 = SMAL + SMAB X (1-AMALR) X (RMAX-원시 값) / RMAX
원시 값은 통계 정보(65)에서 저장된 값 자체이다. RMAX는 신뢰성의 보장을 가능하게 하기 위한 원시 값의 상한 값이다. SMAB는 속성 값의 초기 값으로서 미리 설정된 파라미터이다. 예를 들어, SMAB로서 100이 설정된다. SMAL(=속성 문턱치)은, 원시 값이 상한 값 RMAX와 동일할 때에 속성 값이 도달해야 하는 값이고, 미리 설정된 파라미터이다. 예를 들어, SMAL로서 30이 설정된다. AMALR은 관계 AMALR=SMAL/SMAB로부터 유도된 파라미터이고, 0 이상이며 1 보다 더 작다. 이러한 방법으로, SSDC(41)는 SMART 정보의 속성 값(도 27에서의 "값")을 계산하고, 속성 값을 제어 프로그램(200)으로 송신한다. 속성 문턱치는 도 27에서 "문턱치"이다. 원시 값은 도 27에서 "원시 데이터"이다.
예를 들어, SSDC(41)가 평균 소거 카운트(통계 정보(X04))를 원시 값으로서 이용할 때, 현재의 평균 소거 카운트가 1000일 경우에는, 원시 데이터=1000이다. NAND 메모리(16)의 신뢰성의 보장을 가능하게 하기 위한 최대 소거 카운트가 10000인 것으로 가정될 경우, RMAX=10000이다. SSDC(41)가 소거 카운트=0의 초기 상태에서 속성 값의 초기 값을 100으로 설정하도록 설계될 경우, SMAB=100이다. 소거 카운트가 RMAX=10000에 도달할 때, 속성 값은 SMAL에 도달한다.
통계 정보(65)의 구성요소들 중에서, 신뢰성이 더욱 열화될수록 그 값이 감소하는 구성요소에 관하여, SSDC(41)는 예를 들어, 이하에서 설명된 바와 같이 표준화된 값인 속성 값을 계산한다.
속성 값 = SMAL + SMAB X (1-AMALR) X (원시 값 - RMIN) / (RINIT - RMIN)
RMIN은 신뢰성의 보장을 가능하게 하기 위한 원시 값의 하한 값이다. RINIT는 원시 값의 초기 값이다.
X01 내지 X32에 대한 RMAX, AMALR, 및 SMAB로서 상이한 값들이 각각 채택될 수 있다. AMALR=0.3이 SMAB=100에서 채택될 때, 채택되어야 할 통계 정보에 관하여, 속성 값의 최상의 값은 100(예컨대, 출하 직후에 100)이다. 신뢰성이 더욱 열화될수록 속성 값이 점차적으로 감소하고, 저장 유닛(2)이 신뢰성에 있어서 보장될 수 없거나(통계 정보의 원시 값이 RMAX 이하임) 저장 유닛(2)이 수명 종료에 막 도달하려고 할 때, 속성 값은 30 이하의 값에 도달한다. 제어 프로그램(200)은 속성 값이 문턱치를 초과하는지 여부를 검출하기 위한 수단으로서, ACS-3에서 설명된 명령인 B0h/DAh SMART RETURN STATUS를 이용할 수 있고, 속성 값이 문턱치를 초과하는지 여부에 따라, 명령의 출력으로부터 수명 종료를 결정할 수 있다.
저장 유닛(2)의 제조업자는 도 28에서 도시된 바와 같이 통계 정보의 원시 값 및 저장 유닛(2)의 불량률(fraction defective) 사이의 관계를 개발 단계에서 유도하고, 불량률이 허용가능한 값을 초과할 때의 원시 값을 RMAX로서 채택하는 것이 바람직하다. 예를 들어, 제조업자는 저장 유닛(2)의 개발 단계에서, 테스트를 위한 많은 수의(예컨대, 100개의) 저장 유닛들(2)의 그룹에 대해 높은 온도에서의 기록 동작을 반복하면서 기록된 데이터가 고정된 시간 동안에 정확하게 저장되는 것을 계속하는지 여부를 검증하기 위한 마모 테스트를 수행해야 하고, 이와 동시에, 통계 정보를 모니터링하는 것을 계속해야 하며, 불량률이 고정된 비율에 도달할 때의 포인트에서 통계 정보의 원시 값을 RMAX로서 채택하기만 해야 한다. 제조업자는 마모된 저장 유닛(2)을 어떤 시간 이상 동안에 고온 상태에서 만지지 않도록 내버려 두어야 하고, 그 후에, 저장 유닛(2)의 온도를 낮추고, 저장 유닛(2)에 대한 판독 동작을 수행해야 하고, 판독 데이터가 ECC 정정을 거치게 될 수 없을 때(또는 ECC 정정을 거치게 될 수 없는 고정된 수 이상의 데이터가 있음), 이것을 저장 유닛(2)의 고장으로서 정의해야 하고, 동등한 테스트들이 수행되는 저장 유닛들(2)의 수에 의해 고장들의 수를 나눔으로써 얻어진 값을 불량률로서 채택하기만 해야 한다. 제조업자는 불량률이 허용가능한 불량률보다 통계적으로 유의미하게 더 낮은 원시 값을 RMAX로서 채택하기만 한다. 제조업자는 어떤 정도의 마진을 RMAX에 부여할 수 있고, RMAX로서, RMAX' = RMAX - 마진으로서 채택할 수 있다.
제조업자는 도 27에서의 "최악"을 제어 프로그램(200)에 의한 저장 유닛(2)의 수명 종료의 진단을 위한 인덱스로서 채택할 수 있다. "최악"는 SSDC(41)에 의해 속성 값의 최악 값으로서 계산된다. 예를 들어, 최악은 예를 들어, 저장 유닛(2)의 출하 후(또는 제조 후)의 속성 값의 최소 값이다. 대안적으로, 제조업자는 최악으로서, 과거의 고정된 시간 범위에서의 속성 값의 최소 값을 채택할 수 있거나, 최악 값으로서, 어떤 고정된 횟수로(고정된 데이터 양에 의해) 통신 또는 처리가 수행되었던 과거로부터 현재까지의 기간에서의 최소 값을 채택할 수 있다.
제조업자는 도 27에서의 "원시 데이터"(원시 값)을 제어 프로그램(200)에 의한 저장 유닛(2)의 수명 종료의 진단을 위한 사양으로서 채택할 수 있다. 통계 정보의 원시 값은 저장 유닛(2)으로부터 저장 프로그램(200)으로 원시 데이터로서 송신된다. 다음으로, 제어 프로그램(200)은 RMAX를 제어 프로그램(200)에서 이미 유지하고, RMAX를 취득하기 위하여 저장 유닛(2)으로부터 RMAX를 별도로 판독하거나 또 다른 저장 디바이스로부터 RMAX를 판독하고, RMAX 및 원시 데이터를 비교하고, 원시 데이터 > RMAX 또는 원시 데이터 ≥ RMAX일 때, 저장 유닛(2)이 수명 종료에 도달한 것으로 결정한다. 예를 들어, NAND GC 실패 플래그의 경우, NAND GC 실패 플래그가 1일 때, 제어 프로그램(200)은 저장 유닛(2)이 수명 종료에 도달한 것으로 결정한다. 예를 들어, 총 배드 블록 카운트의 경우, 총 배드 블록 카운트가 미리 결정된 값을 초과할 때, 제어 프로그램(200)은 저장 유닛(2)이 수명 종료에 도달한 것으로 결정한다. 저장 유닛(2)으로부터 정보 처리 디바이스(111)로 송신된 원시 데이터로서, 통계 정보의 원시 값은 항상 출력될 필요가 없다. 예를 들어, SSDC(41)는 통계 정보의 원시 값이 4칙 연산들을 거치게 함으로써 얻어진 값을 원시 데이터로서 제어 프로그램(200)으로 송신할 수 있다. 제어 프로그램(200)은 저장 유닛(2)이 수명 종료에 도달하였는지 여부를 결정하기 위하여, 원시 데이터를, RMAX가 4칙 연산들을 거치게 하여 얻어진 값과 비교할 수 있다. SSDC(41)는 예를 들어, 통계 정보의 원시 값을 암호화함으로써 얻어진 해시된 데이터(hashed data)를 제어 프로그램(200)으로 송신할 수 있다. 제어 프로그램(200)은 저장 유닛(2)이 수명 종료에 도달한 것인지 여부를 결정하기 위하여, 원시 데이터를 복호화할 수 있고, 원시 데이터를 복호화 후의 데이터의 RMAX와 비교할 수 있다.
위에서 설명된 바와 같이, 제어 프로그램(200)은 저장 유닛(2)이 수명 종료에 도달한 것인지 여부(저장 유닛(2)이 비정상 상태에 있는지 여부)를 결정한다. 제어 프로그램(200)이 저장 유닛(2)이 수명 종료에 도달한 것으로 결정할 때(제어 프로그램(200)이 저장 유닛(2)이 비정상 상태에 있는 것으로 결정할 때), 제어 프로그램(200)은 이하에서 설명된 수명 종료 처리(단계(S205))로 시프트한다. 통계 정보(65)는 통계 정보(X01 내지 X32) 이외의 다양한 형태들을 채택할 수 있다. 본 발명은 이 형태들에 마찬가지로 적용될 수 있다. 본 발명은 통계 정보 및 불량률 사이의 관계에서 포지티브 상관이 존재할 때 뿐만 아니라, 통계 정보 및 불량률 사이의 관계에서 네거티브 상관이 존재할 때에도 적용될 수 있다. 통계 정보는 예를 들어, 출하 후에 저장 유닛(2)에 의해 경험되는 최저 온도이다. 다음으로, 제어 프로그램(200)은 RMAX 대신에 신뢰성의 보장을 가능하게 하기 위한 하한 값 RMIN을 채택해야 하고, 통계 정보가 RMIN 미만으로 떨어질 때, 저장 유닛(2)이 수명 종료에 도달한 것으로 결정하기만 해야 한다.
이 실시형태에서, 제어 프로그램(200)은 도 24에서 도시된 바와 같이 S.M.A.R.T를 이용하여 고정된 시간마다(예컨대, 1 분마다) 통계 정보를 취득한다(단계(S200)에서 예). 제어 프로그램(200)은 통계 정보 취득 명령인, ACS-3에서 설명된 B0h/D0h SMART READ DATA를 저장 유닛(2)으로 송신하고(단계(S201)), 저장 유닛(2)으로부터 통계 정보를 포함하는 데이터를 수신하고(단계(S202)), 수신된 데이터를 진단한다(단계(S203)). 진단 방법은 위에서 설명된 바와 같다. 제어 프로그램(200)이 단계(S204)에서, 저장 유닛(2)이 수명 종료에 도달한 것으로 결정할 때, 또는 제어 프로그램(200)이 저장 유닛(2)이 수명 종료에 막 도달한 것으로 결정할 때(단계(204)에서 예), 제어 프로그램(200)은 수명 종료 처리로 시프트한다(단계(S205)). 저장 유닛(2)이 수명 종료에 도달하지 않았더라도, 예를 들어, 통계 정보가 미리 설정된 RMAX를 초과하거나, 정상 동작에서 불가능한 비정상 값을 표시할 때에는, 또한, 제어 프로그램(200)이 단계(S205)에서의 처리로 시프트하는 것이 바람직하다.
제어 프로그램(200)은 SMART 외에, 저장 유닛(2)으로부터 취득될 수 있는 ACS-3에서 설명된 솔리드 스테이트 디바이스(Solid State Device) 통계(로그 어드레스 04h, 로그 페이지 07h)를 이용하여 수명 종료 결정을 수행할 수 있다. 예를 들어, 제어 프로그램(200)이 오프셋 8-15의 이용 내구성 표시자 백분율(Percentage Used Endurance Indicator)의 값이 100%를 초과한 것으로 결정할 때, 제어 프로그램(200)은 수명 종료 처리로 시프트할 수 있다.
제어 프로그램(200)은 SMART 외에, ACS-3에서 설명된 ECh IDENTIFY DEVICE 명령에 따라 취득될 수 있는 Identify Device Data를 이용하여 수명 종료 결정을 수행할 수 있다. 예를 들어, 제어 프로그램(200)이 플래그가 Identify Device Data에서의 특정 비트에서 설정되는 것으로 결정할 때, 제어 프로그램(200)은 수명 종료 처리로 시프트할 수 있다. 특히, 저장 유닛(2)이 특허 문헌 3의 발명을 채택하는 SSD일 경우, SSDC(41)가 판독 전용 모드(read only mode)로 시프트할 때, SSDC(41)는 Identify Device Data에서의 특정 비트에서 플래그를 설정할 수 있다. 결과적으로, 제어 프로그램(200)은 저장 유닛(2)이 판독 전용 모드로 천이하는 것을 인식하기 위하여 Identify Device Data를 취득할 수 있고, 수명 종료 처리로 시프트할 수 있다.
제어 프로그램(200)은 특허 문헌 22 및 특허 문헌 23에서 설명된 수명 예측 기술들을 이용하여 저장 유닛(2)에 대한 수명 예측을 수행할 수 있고, 저장 유닛(2)의 수명 종료가 고정된 기간에서 막 종료할려고 하는 것으로 결정할 때, 수명 종료 처리로 시프트할 수 있다.
제어 프로그램(200)은 통계 정보(65) 이외의 신뢰성 정보를 이용하여 수명 종료 처리로 시프트할 수 있다. 예를 들어, 도 29에서 도시된 바와 같이, 제어 프로그램(200)은 OS(100)로부터, OS(100)에 의해 저장 유닛(2)으로부터 수신된 응답 정보(도 7 참조)를 취득(모니터링)하고, 응답 정보를 신뢰성 정보로서 이용한다(단계(S210)). 응답 정보가 에러 응답일 때(단계(S211)), 제어 프로그램(200)은 저장 유닛(2)이 비정상 상태에 도달한 것으로 결정한다. 제어 프로그램(200)은 수명 종료 처리로 시프트한다(단계(S205)). 모니터링되어야 할 응답은 임의의 명령에 대한 응답일 수 있다. 그러나, CPU(5) 상의 부하에서의 감소의 측면에서는, ACS-3에서 설명된 61h WRITE FPDMA QUEUED 및 35h WRITE DMA EXT 및 NVM Express Revision 1.1에서 설명된 01h Write 명령과 같은, 저장 유닛(2)으로의 기록 명령들에 대한 응답들만을 모니터링하는 것이 바람직하다. 특히, 저장 유닛(2)이 특허 문헌 3의 발명을 채택하는 SSD일 경우, 저장 유닛(2)이 수명 종료에 도달하였을 때에는, 저장 유닛(2)으로의 기록 명령에 대한 응답이 에러로서 반송된다. 그러므로, 통계 정보를 취득하지 않으면서 수명 종료를 결정하는 것이 가능하다. 당연히, 본 발명은 저장 유닛(2)이 특허 문헌 3의 발명을 채택하는 SSD가 아닐 때에 적용될 수 있다.
저장 유닛(2)이 특허 문헌 3의 발명을 채택하는 저장 유닛(2)일 경우, 이하에서 설명된 저장 유닛(2)의 부트 로더(Boot Loader) 영역의 재기록 시에, 저장 유닛(2)이 기록 명령에 응답하여 에러를 반송하는 상태에서는, SSDC(41)가 특허 문헌 3의 판독 전용 모드 상태에서의 특수한 기록 명령(예컨대, ACS-3에서 설명된 SCT command Transport 및 다른 벤더 고유 명령들)에 응답하여 에러를 반송하지 않도록 구성되고 기록이 특수한 기록 명령을 이용하여 저장 유닛(2)에서 수행되는 것이 바람직하다. 특수한 기록 명령은 저장 유닛(2) 이외의 저장 디바이스에서의 기록을 위해 이용될 필요가 없다. 대안적으로, OS(100)가 기록 명령으로서 어떤 기록 명령(예컨대, 61h WRITE FPDMA QUEUED)만을 이용하는 OS일 경우, SSDC(41)는, SSDC(41)가 특허 문헌 3의 Read Only(판독 전용)에 도달할 때, 기록 명령(예컨대, 61h WRITE FPDMA QUEUED) 3에 응답하여 에러를 반송하고, 또 다른 기록 명령(예컨대, 30h WRITE SECTOR(S))에 응답하여 에러를 반송하지 않고, 또 다른 기록 명령(예컨대, 30h WRITE SECTOR(S))을 이용하여 저장 유닛(2)에서의 부트 로더 영역의 기록을 수행하도록 구성될 수 있다.
당연히, 모니터링되어야 할 명령은 기록 명령 이외의 명령일 수 있다. 예를 들어, 명령 응답으로서, ACS-3에서 설명된 B0H/D4H SMART EXECUTE OFF-LINE IMMEDIATE 명령에 대한 응답(출력) 또는 보고가 모니터링될 수 있거나, 90h EXECUTE DEVICE DIAGNOSTIC에 대한 응답이 모니터링될 수 있다. 예를 들어, 제어 프로그램(200)은 저장 유닛(2)으로부터 취득된 SMART의 자체-테스트(self-test)의 결과를 이용하여 수명 종료 처리로 시프트할 수 있다. 제어 프로그램(200)은 ACS-3에서 설명된 B0h/D4h SMART EXECUTE OFF-LINE IMMEDIATE 명령을 저장 유닛(2)으로 송신하고, 이것에 의하여, SSDC(41)가 자체-테스트를 실행한다. 제어 프로그램(200)은 자체-테스트의 결과를 신뢰성 정보로서 취득하기 위하여, ACS-3에서 설명된 B0h/D0h SMART READ DATA 및 B0h/D5h SMART Read Log 명령을 저장 유닛(2)으로 송신한다. 예를 들어, 에러가 자체-테스트의 취득된 결과 내에 포함될 때, 제어 프로그램(200)은 저장 유닛(2)이 수명 종료에 도달한 것으로 결정한다.
어떤 명령 응답이 에러 응답이더라도, 명령이 다시 송신될 경우, 명령 응답은 에러가 아닐 가능성이 있다. 다음으로, 저장 유닛(2)이 수명 종료에 도달하지 않았을 가능성이 있으므로, 재현성을 가지는 명령 에러가 발생할 때에만 수명 종료 처리를 수행한다는 측면에서, 명령 에러가 복수 회 발생할 때에 수명 종료 처리를 수행하는 것이 바람직하다. 또한, 에러 재현성을 엄격하게 결정한다는 측면에서, 명령 에러가 복수 회 연속적으로 발생할 때에 수명 종료 처리를 수행하는 것이 바람직하다. 대안적으로, 도 30에서 도시된 바와 같이, 에러 응답이 저장 유닛(2)에 대한 명령의 모니터링 동안에 명령에 대한 응답으로서 수신될 때(단계(S220) 및 단계(S221)에서의 예), 제어 프로그램(200) 또는 OS(100)는 명령을 저장 유닛(2)으로 다시 송신할 수 있고(명령 재시도)(단계(S222)), 에러 응답이 재시도된 명령에 대한 응답으로서 수신될 때(단계(S223)에서의 예), 수명 종료 처리를 수행한다(단계(S205)).
제어 프로그램(200)은 정보 처리 디바이스(111)로부터 취득된 신뢰성 정보를 이용하여 수명 종료 처리로 시프트할 수 있다. 예를 들어, 온도계가 정보 처리 디바이스(111)에서 설정될 때, 제어 프로그램(200)은 온도계로부터 출력된 온도를 모니터링할 수 있고, 온도가 상한 값을 초과하거나 하한 값 미만으로 떨어질 때, 신뢰성 열화 시간 처리로서 수명 종료 처리를 수행할 수 있다.
정상 상태에서의 데이터 구성
도 31은 수명 종료 처리(S205)가 수행되기 전에 정보 처리 디바이스(111)에 의해 관리된 데이터의 구성 예의 도면이다. 위에서 설명된 바와 같이, 정보 처리 디바이스(111)는 NAND 메모리(16)의 물리 어드레스를 직접적으로 지정하여 저장 유닛(2)이 데이터를 판독하거나 기록할 것을 요청하는 것이 아니라, 논리 어드레스인 LBA를 지정하여 데이터 판독 또는 기록 명령을 저장 유닛(2)으로 송신한다. 저장 유닛(2)에서의 SSDC(41)는 관리 정보(44)에서 저장된 맵핑 정보에 기초하여 NAND 메모리(16)의 LBA 및 물리 어드레스를 동적으로 맵핑한다. 이러한 방법으로, 정보 처리 디바이스(111)에 의해 직접적으로 관리될 수 있는 데이터는 LBA에 따라 관리된다. 정보 처리 디바이스(111)에 의해 관리될 수 있는 어드레스 공간으로서, LBA 영역(2001)은 저장 유닛(2)에 맵핑된다. LBA 영역(2001)은 부트 로더 영역(2002), 메타데이터 영역(2003), 및 사용자 데이터 영역(2004)을 포함한다. 영역들의 일부는 ACS-3의 SMART Read Log 명령 또는 Read Log 명령에 의해 액세스가능한 로그 페이지 어드레스와 같은 LBA 영역 이외의 영역에 할당될 수 있다. 저장 유닛(2)은 논리 드라이브(4)에 할당된다.
부트 로더 영역(2002)은 정보 처리 디바이스(111)의 시작 동안에 판독된 영역이다. 이 실시형태에서, 부트 로더 영역(2002)은 LBA의 고정된 영역에 할당된다. 그러나, 정보 처리 디바이스(111)는 부트 로더 영역(2002)을 동적으로 할당할 수 있다. 부트 로더 영역의 예로서, 예를 들어, 마스터 부트 레코드(Master Boot Record; MBR)이 있다. MBR에서는, 예를 들어, LBA=0x000의 합계(모두 합하여 512 바이트)에서 하나의 논리 섹터의 영역은 고정된 부트 로더 영역으로서 할당된다. 부트 로더 영역의 예로서, 예를 들어, GUID 파티션 테이블(GUID partition table; GPT)이 있다. 이 실시형태에서, 부트 로더 영역(2002)은 도 32에서 도시된 바와 같이, 메타데이터 영역(2003)의 헤드 LBA가 저장되는 메타데이터 포인터 영역(2005), 저장 스테이터스(storage status)가 저장되는 스테이터스 저장 영역(2006), 및 데이터 마이그레이션 대상 저장 디바이스가 저장되는 어드레스 영역(2007)(데이터 마이그레이션 대상 관리 영역(2007))을 포함한다. 예를 들어, 저장 유닛(2)이 데이터 마이그레이션 출발지이고 저장 유닛(3)이 데이터 마이그레이션 목적지일 때, 저장 유닛(3)의 저장 유닛 식별 명칭은 저장 유닛(2)의 데이터 마이그레이션 대상 관리 영역(2007)에서 저장되고, 저장 유닛(2)의 저장 유닛 식별 명칭은 저장 유닛(3)의 데이터 마이그레이션 대상 관리 영역(3007)에서 저장된다. 이 실시형태에서, 스테이터스 저장 영역(2006)에서 저장된 데이터는 값들 0 내지 5를 취할 수 있다. 각각의 값들은 다음과 같이 저장 목적지에서의 저장 유닛의 상태들을 표시한다:
0: 초기 저장 상태
1: 정상 상태
2 : 낮은 신뢰성 상태
3 : 데이터 마이그레이션 출발지 상태(보호된 상태)
4: 데이터 마이그레이션 목적지 상태
5: 폐기 대상 상태
정보 처리 디바이스(111)는 시작될 때에 포인터(2005)를 판독하고, 메타데이터 영역(2003)의 LBA를 특정하고, LBA 영역(2001)의 메타데이터 영역(2003)으로부터 주 메모리(6)의 메타데이터 영역(6C)까지 메타데이터(300)를 판독한다. 파일의 재기록이 발생할 때, OS(100)는 주 메모리(6)의 메타데이터 영역(6C)의 메타데이터(300)를 재기록하고, 저장 유닛(2)의 메타데이터 영역(2003)에서 메타데이터 영역(6C)의 메타데이터(300)를 주기적으로 백업하고, 저장 유닛(2)의 메타데이터 영역(2003)에서 메타데이터(300)의 저널(journal)을 순차적으로 레코딩한다.
도 33은 메타데이터(300)의 구성 예이다. 파일 ID는 데이터를 식별하기 위하여 애플리케이션 프로그램(400)에 의해 이용된 데이터의 어드레스 또는 파일 명칭이다. 논리 드라이브 어드레스는 논리 드라이브(4)(도 31 및 도 38 참조)를 특정하기 위하여 이용된 논리 드라이브들의 각각에 할당된 어드레스이다. 저장 유닛 식별 명칭은 저장 유닛(2) 또는 저장 유닛(3)과 같은 물리적 저장 디바이스를 특정하기 위하여 이용된 물리적 저장 디바이스에 할당된 어드레스이다. 이 실시형태에서, WWN(World Wide Name)은 저장 유닛 식별 명칭으로서 이용된다. 상이한 값들이 WWN으로서 저장 디바이스들에 각각 할당되므로, WWN은 물리적 저장 디바이스를 구별하기 위하여 이용될 수 있다. WWN은 예를 들어, ACS-3에서 설명된 ECh Identify Device 명령에 의해 판독된 데이터의 워드108-111에서 저장된다. 대안적으로, 저장 유닛 식별 명칭으로서, 예를 들어, ACS-3에서 설명된 ECh Identify Device 명령에 의해 판독된 데이터의 워드10-19에 할당된 직렬 번호가 이용될 수 있거나, NVM Express Revision 1.1에서 설명된 06h Identify 명령에 의해 판독된 데이터의 바이트23:04에 할당된 직렬 번호(SN)가 이용될 수 있거나, 또는 네트워크 프로토콜에서의 매체 액세스 제어(Media Access Control) 어드레스 또는 인터넷 프로토콜(Internet Protocol; IP) 어드레스가 이용될 수 있다. 저장 유닛 식별 명칭은 저장 디바이스의 제조 동안에 미리 저장 디바이스 내에 기록될 수 있거나, 저장 디바이스가 정보 처리 디바이스(111)에 접속될 때, 정보 처리 디바이스(111)에 의해 새롭게 할당될 수 있다. 메타데이터(300)에 의해 맵핑된 사용자 데이터 영역(2004)의 LBA 어드레스는 메타데이터(300)의 LBA에서 저장된다. 메타데이터 영역(2003) 또는 부트 로더 영역(2002)의 LBA와 같은, 사용자 데이터 영역(2004) 이외의 영역의 LBA는 메타데이터(300)의 LBA에서 저장될 수 있다. 섹터 카운트는 데이터 길이를 표시한다.
메타데이터(300)는 파일 ID 및 논리 드라이브 어드레스로부터 저장 유닛 식별 명칭, LBA, 및 섹터 카운트를 순방향 룩업하기 위하여 OS(100)에 의해 이용되거나, 저장 유닛 식별 명칭, LBA, 및 섹터 카운트로부터 논리 드라이브 어드레스 및 파일 ID를 역방향 룩업하기 위하여 OS(100)에 의해 이용된다. 통상적으로, 애플리케이션 프로그램(400)은 저장 유닛(2) 및 LBA를 직접적으로 지정하고, 저장 유닛 및 저장 디바이스로부터의 판독 및 저장 유닛 및 저장 디바이스에서의 기록을 수행하지 않는다. OS(100)는 저장 유닛(2)을 논리 드라이브(4)로서 인식(장착(mounting))한다. 애플리케이션 프로그램(400)이 논리 드라이브 어드레스 및 파일 ID를 OS(100)로 송신할 때, OS(100)는 메타데이터(300)를 판독하고, 논리 드라이브 및 파일 ID에 대응하는 저장 유닛 및 LBA를 특정하고, 명령 및 LBA를 저장 유닛으로 송신한다.
논리 드라이브는 도 7에서 도시된 OS(100) 및 제어 프로그램(200)에 의해, 하위 순서 계층들인 하나 또는 복수의 물리 드라이브들, 또는 물리 드라이브들의 일부에서의 LBA 영역에 할당된다. 결과적으로, 상위 순서 계층인 애플리케이션 프로그램(400)은 논리 드라이브를 하나의 드라이브로서 가상적으로 인식한다. 이 실시형태에서는, 수명 종료 처리(S205) 전의 상태에서, 논리 드라이브(4)가 물리적 저장 디바이스와 같은 저장 유닛(2)에 할당된다. 수명 종료 처리(S205) 전의 상태에서도, 저가 디스크들의 중복 어레이들(Redundant Arrays of Inexpensive Disks; RAID)의 저장 어레이, 예를 들어, RAID0 또는 RAID5의 저장 어레이는 복수의 물리적 저장 디바이스들을 이용하여 구성될 수 있다. 저장장치 어레이는 하나의 논리 드라이브(4)로서 인식될 수 있다. 본 발명은 또한 그 경우에 적용될 수 있다.
도 34는 애플리케이션 프로그램(400)이 논리 드라이브(4)에 대한 액세스 요청을 OS(100)로 송신할 때에 수행된 절차의 플로우차트이다. 애플리케이션 프로그램(400)이 액세스 요청(예컨대, 파일 판독 요청 또는 파일 기록 요청), 논리 드라이브 어드레스, 및 파일 ID를 OS(100)로 송신할 때(단계(S300)), OS(100)는 메타데이터 영역(6C)으로부터 메타데이터(300)를 판독한다(단계(S301)). OS(100)는 논리 드라이브 어드레스 및 파일 ID를 저장 유닛 식별 명칭 및 LBA로 순방향 룩업-변환(forward lookup-transform)하고(단계(S302)), 명령 및 LBA를 저장 유닛 식별 명칭에 대응하는 저장 유닛으로 송신한다(단계(S303)). 저장 유닛은 명령ㅇ에 따라 사용자 데이터 영역(2004)에서의 기록 동작 및 사용자 데이터 영역(2004)으로부터의 판독 동작을 수행하고, 응답 또는 데이터를 OS(100)로 송신한다(단계(S304)). OS(100)는 저장 유닛으로부터 응답 및 데이터를 수신하고, 응답 및 데이터를 애플리케이션 프로그램(400)으로 송신하고, 처리가 종료된다(단계(S305)).
이 실시형태에서, 저장 유닛(2)에 관한 수명 종료 처리(S205)가 수행되기 전의 상태에서는, 논리 드라이브(4)가 저장 유닛(2)만으로 구성되므로, 메타데이터(300)에서 논리 드라이브(4)에 대응하는 모든 저장 유닛 식별 명칭들은 저장 유닛(2)의 WWN들이다. 다른 한편으로, 논리 드라이브에서 RAID 어레이의 구축에서와 같이, 복수의 저장 유닛 식별 명칭들은 수명 종료 처리(S205)가 수행되기 전에 메타데이터(300)에서의 하나의 논리 드라이브 어드레스에 할당될 수 있다.
저장 스테이터스 영역(2006)에서는, OS(100)에 대한 저장 유닛에 관한 정보가 저장된다. 도 35는 정보 처리 디바이스(111)가 시작될 때, 그리고 저장 유닛이 인터페이스(19)에 접속될 때에 수행된 제어 프로그램(200)의 처리 절차를 도시한다. 제어 프로그램(200)은 인터페이스(19)를 통해 저장 유닛의 부트 로더 영역(2002)의 저장 스테이터스 영역(2006)을 판독하고, 판독 값에 따라, OS(100)에 통지된 저장 유닛의 상태를 변경한다. 저장 스테이터스가 0일 때(단계(S311)), 제어 프로그램(200)은 저장 유닛이 초기 저장 유닛인 것으로 OS(100)에게 통지한다. OS(100)는 저장 유닛을 초기 저장 유닛으로서 인식한다(단계(S312)). 저장 유닛의 공장 출하 동안, 또는 정보 처리 디바이스(111)가 ACS-3의 F4h Security Erase Unit 명령, NVM Express Revision 1.1의 80h Format NVM 명령 등을 이용함으로써 저장 유닛을 소거할 때, 저장 유닛의 저장 스테이터스 영역(2006)의 값은 저장 스테이터스=0으로 변경된다. 정보 처리 디바이스(111)가 저장 유닛을 포맷(format)할 때, 저장 유닛의 저장 스테이터스 영역(2006)의 값은 저장 스테이터스=0으로 변경된다.
저장 스테이터스가 1일 때(단계(S313)), 제어 프로그램(200)은 저장 유닛이 정상 상태에 있는 것으로 OS(100)에게 통지한다. OS(100)는 저장 유닛을 정상 상태에 있는 것으로 인식한다(단계(S314)). 수명 종료 처리(S205) 전의 저장 유닛(2)의 저장 스테이터스는 저장 스테이터스=1이다.
저장 스테이터스가 2일 때(단계(S315)), 제어 프로그램(200)은 저장 유닛이 낮은 신뢰성 상태에 있는 것으로 OS(100)에게 통지한다. 제어 프로그램(200)은 저장 유닛을 낮은 신뢰성 상태에 있는 것으로 인식하고(단계(S316)), 수명 종료 처리(S205)를 수행한다.
저장 스테이터스가 3일 때(단계(S317)), 제어 프로그램(200)은 저장 유닛이 데이터 마이그레이션 출발지로서 기능하여 데이터 마이그레이션 작업을 수행하고 있는 것으로 OS(100)에게 통지한다. OS(100)는 저장 유닛을 보호된 상태에 있는 것으로 인식한다(단계(S318)).
저장 스테이터스가 4일 때(단계(S319)), 제어 프로그램(200)은 저장 유닛이 데이터 마이그레이션 목적지로서 기능하여 데이터 마이그레이션 작업을 수행하고 있는 것으로 OS(100)에게 통지한다. OS(100)는 저장 유닛을 데이터 마이그레이션 목적지 상태에 있는 것으로 인식한다(단계(S320)).
저장 스테이터스가 5일 때(단계(S321)), 제어 프로그램(200)은 저장 유닛이 폐기 대상 상태에 있는 것으로 OS(100)에게 통지한다. OS(100)는 저장 유닛을 폐기 대상 상태에 있는 것으로 인식한다(단계(S322)). 저장 스테이터스가 0 내지 5 이외의 것일 때에는, OS(100)가 저장 유닛을 허가되지 않은 저장 유닛으로서 간주하고 저장 유닛을 장착하지 않는다(단계(S323)).
도 36 및 도 37은 저장 유닛의 수명 사이클을 설명하기 위한 상태 천이도들이다. 저장 유닛의 제조 직후, 저장 유닛의 출하 직후, 저장 유닛의 소거 직후, 그리고 저장 유닛의 포맷 직후의 저장 유닛의 저장 스테이터스 영역(2006)의 값은 초기 저장 상태를 표시하는 저장 스테이터스=0이다(단계(S330)). 그 후에, 저장 스테이터스는 정상 상태를 표시하는 저장 스테이터스=1로 변경되고, 이것에 의해, 저장 유닛은 OS(100)에 의해 정상 저장 유닛으로서 이용된다(단계(S331)). 저장 유닛이 신뢰성에 있어서 더욱 열화됨에 따라, 저장 유닛은 낮은 신뢰성 상태를 표시하는 저장 스테이터스=2로 천이한다(단계(S332)). 보호된 상태를 표시하는 저장 스테이터스=3으로 천이한 후에(단계(S333)), 저장 유닛은 폐기 대상 상태를 표시하는 저장 스테이터스=5로 변화한다(단계(S334)). 다음으로, 최종적으로, 저장 유닛은 정보 처리 시스템(1)의 조작자 또는 관리자에 의해 폐기된다.
도 37은 정보 처리 디바이스(111) 상의 데이터 마이그레이션 목적지 상태에 있는 것으로 인식된 저장 유닛의 수명 사이클을 도시한다. 다음으로, 단계(S330)에서의 저장 상태=0의 초기 저장 상태 후에는, 데이터 마이그레이션 목적지 상태(저장 스테이터스=4)로 천이한 후에(단계(S330b)), 데이터 마이그레이션 출발지 상태에서의 저장 유닛이 탈착되고, 이것에 의해, 저장 유닛은 저장 스테이터스=1의 정상 상태에서 이용된다(단계(S331)).
도 38은 저장 유닛(2)이 낮은 신뢰성 상태에 있는 것으로 인식될 때, 저장 유닛(2)과 상이한 저장 유닛(3)이 접속되는 상태를 도시한다. LBA 영역(3001)은, 정보 처리 디바이스(111)에 의해 관리될 수 있는 어드레스 공간으로서 접속된 저장 유닛(3)에 할당된다. LBA 영역(3001)은 부트 로더 영역(3002), 메타데이터 영역(3003), 및 사용자 데이터 영역(3004)을 포함한다.
저장 유닛(2)이 낮은 신뢰성 상태에 있는 것으로 인식될 때, 도 39의 파선부에 의해 표시된 바와 같이, 초기 저장 상태에서의 저장 유닛이 저장 유닛이 정보 처리 디바이스(111)에 접속될 때에 데이터 마이그레이션 목적지 상태에 있는 것으로 인식되는 대신에, 정보 처리 디바이스(111)에 이미 접속된 정상 상태에서의 저장 유닛(3)이 데이터 마이그레이션 목적지 상태에 있는 것으로 인식될 수 있다.
수명 종료 처리(저장 유닛의 수명의 종료 시의 처리)
수명 종료 처리(S205)에서 제어 프로그램(200)에 의해 수행된 처리의 플로우차트는 도 40에서 도시되어 있다. 접속된 저장 유닛(2)이 수명 종료에 도달하였거나 수명 종료에 막 도달하고, 수명 종료 처리가 시작될 때, 제어 프로그램(200)은 부트 로더 영역(2002)의 저장 스테이터스 영역(2006)이 저장 스테이터스=2에 있는지 여부를 결정한다(단계(S340)). 결정의 결과가 부정적일 때, 제어 프로그램(200)은 저장 스테이터스 영역(2006)을 저장 스테이터스=2로 재기록하고(단계(S341)), 절차를 단계(S342)로 시프트한다. 단계(S340)에서의 결정 결과가 긍정적일 때, 제어 프로그램(200)은 절차를 단계(S342)로 시프트한다.
단계(S342)에서와 같이, 제어 프로그램(200)은 디스플레이(9) 상에서, "새로운 저장 유닛을 인터페이스(19)에 접속하세요"와 같은 새로운 저장 유닛의 접속을 촉구하기 위한 메시지를 디스플레이하는 것이 바람직하다. 제어 프로그램(200)은 저장 스테이터스=0(초기 저장 상태)에서의 저장 유닛이 접속되어 있는지 여부를 결정한다(단계(S343)).
새로운 저장 유닛이 접속될 때(저장 유닛(3)이 접속될 때), 제어 프로그램(200)은 저장 유닛(2)의 부트 로더 영역(2002)을, 저장 스테이터스=0(초기 저장 상태)에서의 접속된 저장 유닛(3)의 부트 로더 영역(3002)으로 복사한다(단계(S344), 도 32 참조). 제어 프로그램(200)은 저장 유닛(3)의 부트 로더(3002)의 저장 스테이터스 영역(3006)을 저장 스테이터스=4(데이터 마이그레이션 목적지 스테이터스)로 재기록한다(단계(S345)).
단계(S340)에서의 "예"의 시점 또는 단계(S341)의 시점에서, 저장 스테이터스=0(초기 저장 상태)에서의 저장 유닛이 이미 접속되어 있을 때, 또는 데이터 마이그레이션 목적지로서 할당될 수 있는 저장 스테이터스=1(정상 상태)에서의 저장 유닛이 이미 접속되어 있을 때, 제어 프로그램(200)은 저장 유닛을 저장 유닛(3)으로서 설정할 수 있고, 저장 유닛(2)의 부트 로더 영역(2002)을 저장 유닛(3)의 부트 로더 영역(3002)으로 복사할 수 있고, 저장 유닛(3)의 부트 로더 영역(3002)의 저장 스테이터스 영역(3006)을 저장 스테이터스=4로 재기록할 수 있다.
제어 프로그램(200)은 저장 유닛(3)의 부트 로더 영역(3002)의 데이터 마이그레이션 대상 관리 영역(3007)에서 저장 유닛(2)의 저장 유닛 식별 명칭을 기록한다(단계(S346)). 제어 프로그램(200)은 저장 유닛(2)의 부트 로더 영역(2002)의 저장 스테이터스 영역(2006)을 저장 스테이터스=3(보호된 상태)으로 재기록한다(단계(S347)). 제어 프로그램(200)은 저장 유닛(2)의 부트 로더 영역(2002)의 데이터 마이그레이션 대상 관리 영역(2007)에서 저장 유닛(3)의 저장 유닛 식별 명칭을 기록한다(단계(S346)). 저장 유닛(2)의 데이터 마이그레이션 대상 관리 영역(2007) 및 저장 유닛(3)의 데이터 마이그레이션 대상 관리 영역(3007)을 쳐다보면, 사용자는 저장 유닛(2) 및 저장 유닛(3)이 데이터 마이그레이션 처리를 위한 쌍인 것으로 인식할 수 있다.
제어 프로그램(200)은 주 메모리(6), 또는 저장 유닛(2)의 메타데이터 저장 영역(2003)으로부터 최신 메타데이터(300)를 판독하고, 저장 유닛(3)의 메타데이터 저장 영역(3003)에서 판독된 최신 메타데이터(300)를 기록하고, 최신 메타데이터(300)를 복사한다(단계(S349)). 제어 프로그램(200)은 OS(100)로 하여금 저장 유닛(2) 및 저장 유닛(3)을 하나의 논리 드라이브(4)로서 인식하게 한다(단계(S350)). 제어 프로그램(200)은, 스테이터스가 "정상 상태"로부터 "데이터 마이그레이팅 상태"로 변화하도록, 주 메모리(6) 상의 영역(6D)에서의 논리 드라이브 스테이터스 테이블(450)을 업데이트한다(단계(S351)).
도 41은 주 메모리(6)의 영역(6D)에서 저장된 논리 드라이브 스테이터스 테이블(450)을 도시한다. 논리 드라이브 스테이터스 테이블(450)에서는, 복수의 논리 드라이브들 및 복수의 스테이터스들 사이의 대응성이 관리된다. 제어 프로그램(200)은 논리 드라이브들의 상태(정상 상태 또는 데이터 마이그레이팅 상태)에 기초하여 임의의 시간에 논리 드라이브 스테이터스 테이블(450)을 업데이트한다.
이 실시형태에서는, 도 38에서 도시된 바와 같이, 수명 종료 처리(S205)에 따라, 저장 유닛(2) 및 저장 유닛(3)이 단일의 논리 드라이브로서 기능하는 논리 드라이브(4)로서 인식된다. 논리 드라이브(4)가 저장 유닛(3)을 이용하여 구축될 때까지 새로운 저장 유닛(3)이 접속된 후의 데이터의 판독 및 기록은 최대로 메타데이터(300)의 데이터 양과 동등한 정도에서 발생한다. 그러므로, 저장 유닛이 RAID 저장 어레이에서 교체되고 논리 드라이브로서 장착될 때까지의 시간과 비교하여, 저장 유닛(3)의 장착은 극도로 높은 속도로 수행된다.
수명 종료 처리(S205) 전에, 주 메모리(6)의 메타데이터 영역(6C)에서의 메타데이터(300) 및 메타데이터(300)의 저널은 OS(100)에 의해 데이터 마이그레이션 출발지 저장 유닛(2)의 메타데이터 영역(2003)에서 주기적으로 백업된다. 그러나, 수명 종료 처리(S205) 후에는, 주 메모리(6)의 메타데이터 영역(6C)에서의 메타데이터(300) 및 메타데이터(300)의 저널이 OS(100)에 의해 데이터 마이그레이션 목적지 저장 유닛(3)의 메타데이터 영역(3003)에서 주기적으로 백업된다. 결과적으로, 최신 메타데이터와 근접한 메타데이터는 메타데이터 영역(3003)에서 저장된다. 수명 종료 처리(S205) 전의 과거 메타데이터는 메타데이터 영역(2003)에서 저장된다.
상기 설명에서는, 저장 스테이터스=2의 낮은 신뢰성 상태가 정의된다. 그러나, 제어 프로그램(200)이 신뢰성 정보 및 문턱치의 비교의 결과로서, 저장 유닛(2)이 수명 종료에 도달한 것으로 결정할 때, 제어 프로그램(200)은 저장 스테이터스를 저장 스테이터스=2의 낮은 신뢰성 상태로 시프트하지 않으면서, 저장 유닛(2)의 저장 상태를 저장 스테이터스=3의 데이터 마이그레이션 출발지 상태(보호된 상태)로 즉시 시프트할 수 있다. 즉, 수명 종료 처리가 시작될 때, 도 40의 단계(S340)에서, 제어 프로그램(200)은 저장 유닛(2)의 부트 로더 영역(2002)의 저장 스테이터스 영역(2006)이 저장 스테이터스=3(데이터 마이그레이션 출발지 상태)인지 여부를 결정한다. 결정의 결과가 부정적일 때, 도 40의 단계(S341)에서, 제어 프로그램(200)은 저장 스테이터스 영역(2006)을 저장 스테이터스=3로 재기록하고, 절차를 단계(S342)로 시프트한다. 후속 절차는 단계(S347)가 삭제되는 것을 제외하고는 도 40에서 도시된 절차와 동일하다.
논리 드라이브에서의 기록
도 42는 파일 데이터 기록 요청이 애플리케이션 프로그램(400)으로부터 OS(100)로 송신될 때에 수행된 OS(100)의 처리 절차를 도시한다. OS(100)는 애플리케이션 프로그램(400)으로부터 기록 요청, 논리 드라이브 어드레스, 파일 ID 및 데이터를 수신한다(단계(S360)). OS(100)는 주 메모리(6)로부터 논리 드라이브 스테이터스 테이블(450)을 판독하고(단계(S361)), 주 메모리(6)로부터 메타데이터(300)를 판독하고(단계(S362)), 메타데이터(300)를 참조하여 데이터 기록을 위한 LBA를 할당한다(단계(S363)).
OS(100)는 논리 드라이브 스테이터스 테이블(450)에 기초하여 기록 명령에 의해 지정된 논리 드라이브가 정상 상태 또는 데이터 마이그레이팅 상태에 있는지 여부를 결정한다(단계(S364)). 논리 드라이브가 정상 상태에 있을 때, OS(100)는 기록 명령, LBA, 및 기록 데이터를 저장 유닛(2)으로 송신한다(단계(S365)). OS(100)는 저장 유닛(2)으로부터 응답을 수신한다(단계(S366)). OS(100)는 주 메모리(6) 상의 메타데이터를 업데이트하고, 기록 파일 ID를 저장 유닛(2), LBA, 및 섹터 카운트에 맵핑한다(단계(S367)). OS(100)는 응답을 애플리케이션 프로그램(400)으로 송신한다(단계(S371)).
논리 드라이브가 데이터 마이그레이팅 상태에 있을 때, OS(100)는 기록 명령, LBA, 및 기록 데이터를 데이터 마이그레이션 목적지 저장 유닛(3)으로 송신한다(단계(S368)). OS(100)는 저장 유닛(3)으로부터 응답을 수신한다(단계(S369)). OS(100)는 주 메모리(6) 상의 메타데이터를 재기록하고, 기록 파일 ID를 저장 유닛(3), LBA, 및 섹터 카운트에 맵핑한다(단계(S370)). OS(100)는 응답을 애플리케이션 프로그램(400)으로 송신한다(단계(S371)). 즉, 논리 드라이브가 데이터 마이그레이팅 상태에 있을 때, 데이터 마이그레이션 목적지 저장 유닛(3)에서의 기록에 따르면, OS(100)는 저장 유닛(2) 및 저장 유닛(3)의 저장된 데이터의 어드레스들이 변경되도록, 주 메모리(6) 상의 메타데이터를 업데이트한다. 기록에서 수반된 저장된 데이터의 어드레스에 대한 메타데이터를 위한 업데이트 처리는 저장 유닛(3)에서의 기록 처리와 동시에 그리고 이와 병렬로 수행될 수 있고, 저장 유닛(3)에서의 기록 처리에서 수행될 수 있고, 저장 유닛(3)에서의 기록 처리가 수행되기 전에 수행될 수 있고, 저장 유닛(3)에서의 기록 처리가 수행된 후에 수행될 수 있다.
논리 드라이브에 대한 파일 삭제 요청
도 43은 파일 삭제 요청이 애플리케이션 프로그램(400)으로부터 OS(100)로 송신될 때에 수행된 OS(100)의 처리 절차를 도시한다. OS(100)는 애플리케이션 프로그램(400)으로부터 삭제 명령, 논리 드라이브 어드레스, 및 파일 ID를 수신한다(단계(S900)). OS(100)는 주 메모리(6)로부터 논리 드라이브 스테이터스 테이블(450)을 판독하고(단계(S901)), 주 메모리(6)로부터 메타데이터(300)를 판독하고(단계(S902)), 메타데이터(300)를 참조하여 논리 드라이브 어드레스 및 파일 ID를 저장 유닛 식별 명칭 및 LBA로 순방향 룩업-변환한다(단계(S903)). OS(100)는 메모리(6)에서의 메타데이터로부터, 삭제 대상 파일의 파일 ID가 포함되는 행을 삭제하거나, 주 메모리(6)에서의 메타데이터 상의 삭제 대상 파일의 파일 ID를 무효인 ID로 재기록하여, 메타데이터(300)로부터 삭제 대상 파일 ID를 삭제한다(단계(S904)).
OS(100)는 논리 드라이브 스테이터스 테이블(450)에 기초하여 삭제 명령에 의해 지정된 논리 드라이브가 정상 상태 또는 데이터 마이그레이팅 상태에 있는지 여부를 결정한다(단계(S905)). 논리 드라이브가 정상 상태에 있을 때, OS(100)는 삭제 통지 및 LBA를 저장 유닛(2)으로 송신한다(단계(S906)). OS(100)는 저장 유닛(2)으로부터 응답을 수신한다. OS(100)는 응답을 애플리케이션 프로그램(400)으로 송신한다(단계(S910)).
논리 드라이브가 데이터 마이그레이팅 상태에 있을 때, OS(100)는 순방향 룩업 변환 후의 저장 유닛 식별 명칭이 데이터 마이그레이션 출발지 저장 유닛(2) 또는 데이터 마이그레이션 목적지 저장 유닛(3)인지 여부를 결정한다(단계(S907)). 순방향 룩업 변환 후의 저장 유닛 식별 명칭이 저장 유닛(2)일 때, OS(100)는 삭제 통지 및 LBA를 저장 유닛(2)으로 송신하고(단계(S908)), 저장 유닛(2)으로부터 응답을 수신하고, 응답을 애플리케이션 프로그램(400)으로 송신한다(단계(S910)). 순방향 룩업 변환 후의 저장 유닛 식별 명칭이 저장 유닛(3)일 때, OS(100)는 삭제 통지 및 LBA를 저장 유닛(3)으로 송신하고(단계(S909)), 저장 유닛(3)으로부터 응답을 수신하고, 응답을 애플리케이션 프로그램(400)으로 송신한다(단계(S910)).
논리 드라이브로부터의 데이터 판독
도 44는 파일 데이터에 대한 판독 요청이 애플리케이션 프로그램(400)으로부터 OS(100)로 송신될 때에 수행된 OS(100)의 처리 절차를 도시한다. OS(100)는 애플리케이션 프로그램(400)으로부터 판독 요청, 논리 드라이브 어드레스, 및 파일 ID를 수신한다(단계(S380)). OS(100)는 주 메모리(6)로부터 논리 드라이브 스테이터스 테이블(450)을 판독하고(단계(S381)), 주 메모리(6)로부터 메타데이터(300)를 판독하고(단계(S382)), 메타데이터(300)를 참조하여 논리 드라이브 어드레스 및 파일 ID를 데이터 판독을 위한 저장 유닛 식별 명칭, LBA, 및 섹터 카운트로 순방향 룩업-변환한다(단계(S383)).
순방향 룩업 변환 후의 저장 유닛 식별 명칭이 저장 유닛(2)을 지정할 때(단계(S384)), OS(100)는 판독 명령, LBA, 및 섹터 카운트를 저장 유닛(2)으로 송신한다(단계(S385)). OS(100)는 저장 유닛(2)으로부터 응답 및 판독 데이터를 수신한다(단계(S386)). OS(100)는 판독 데이터 및 응답을 애플리케이션 프로그램(400)으로 송신한다(단계(S389)).
순방향 룩업 변환 후의 저장 유닛 식별 명칭이 저장 유닛(3)을 지정할 때(단계(S384)), OS(100)는 판독 명령, LBA, 및 섹터 카운트를 저장 유닛(3)으로 송신한다(단계(S387)). OS(100)는 저장 유닛(3)으로부터 응답 및 판독 데이터를 수신한다(단계(S388)). OS(100)는 판독 데이터 및 응답을 애플리케이션 프로그램(400)으로 송신한다(단계(S389)). 예를 들어, LBA=0이 데이터 마이그레이팅된 상태를 표시하고 LBA=1이 데이터 마이그레이팅되지 않은 상태를 표시할 때, 판독이 LBA=0 및 섹터 카운트=1로 수행될 경우에는, 판독이 저장 유닛(2) 및 저장 유닛(3) 중의 저장 유닛(3)으로부터 수행되고, 판독이 LBA=1 및 섹터 카운트=1로 수행될 경우에는, 판독이 저장 유닛(2) 및 저장 유닛(3) 중의 저장 유닛(2)으로부터 수행되고, 판독이 LBA=0 및 섹터 카운트=2로 수행될 경우에는, 판독이 저장 유닛(2) 및 저장 유닛(3)의 양자로부터 수행된다.
이러한 방법으로, 데이터 마이그레이션 출발지 저장 디바이스에서의 기록은 금지되고, 데이터 마이그레이션 출발지 저장 디바이스로부터 데이터 마이그레이션 목적지 저장 디바이스로의 데이터 마이그레이션은 데이터 마이그레이션 목적지 저장 유닛(3)에서의 기록을 이용하여 실현된다. 그러므로, 정보 처리 시스템(1)의 관리자, 조작자, 또는 사용자에 의한 백업 작업은 불필요하다. 데이터 마이그레이션에서는, 사용자 데이터(2004)의 복사가 수행되지 않는다. 데이터 마이그레이션은 사용자 데이터(2004)의 새로운 기록 처리를 이용하여 수행된다. 그러므로, 애플리케이션 프로그램(400)의 기록 처리 성능은 데이터 마이그레이션 동안에도 열화되지 않는다. 수명 종료 처리(S205) 후에, 저장 유닛(2)에서 발생하는 기록 처리는 최대로 저장 스테이터스 영역(2006)에서의 기록 처리만으로 제한된다. 그러므로, 저장 유닛(2)에서의 기록 처리는 거의 발생하지 않는다. 이러한 방법으로, 저장 유닛(2)에 대한 수명 종료 처리(S205) 후에도, 논리 드라이브(4) 자체는 애플리케이션 프로그램(400)을 위한 판독가능하고 기록가능한 드라이브로서 인식된다. 그러나, 실제로는, 정보 처리 디바이스(111)에 대하여, 저장 유닛(2)은 저장 유닛(2)이 판독 전용 디바이스인 것처럼 취급된다.
라이트 백 백업(Write back backup)
데이터 마이그레이션 출발지 저장 유닛(2)에서의 데이터가 주 메모리(6)에서의 캐시 메모리 영역으로 판독될 때에는, 캐시 메모리 영역으로 판독된 데이터를 데이터 마이그레이션 목적지 저장 유닛(3)에서 기록하고(라이트 백) 데이터의 파일 ID를 기록 목적지 LBA에 맵핑하기 위하여, 메타데이터(300)가 업데이트될 수 있다. 이것은 도 45를 참조하여 이하에서 설명된다.
OS(100)는 애플리케이션 프로그램(400)으로부터 판독 요청, 논리 드라이브 어드레스, 및 파일 ID를 수신한다(단계(S400)). OS(100)는 주 메모리(6)로부터 논리 드라이브 스테이터스 테이블(450)을 판독하고(단계(S401)), 주 메모리(6)로부터 메타데이터(300)를 판독하고(단계(S402)), 메타데이터(300)를 참조하여 논리 드라이브 어드레스 및 파일 ID를 데이터 판독을 위한 저장 유닛 식별 명칭, LBA, 및 섹터 카운트로 순방향 룩업-변환한다(단계(S403)).
순방향 룩업 변환 후의 저장 유닛 식별 명칭이 저장 유닛(3)을 지정할 때(단계(S404)), OS(100)는 판독 명령, LBA, 및 섹터 카운트를 저장 유닛(3)으로 송신한다(단계(S409)). OS(100)는 저장 유닛(3)으로부터 응답 및 판독 데이터를 수신한다(단계(S410)). OS(100)는 저장 유닛(3)으로부터 판독된 판독 데이터 및 응답을 애플리케이션 프로그램(400)으로 송신한다(단계(S411)).
순방향 룩업 변환 후의 저장 유닛 식별 명칭이 저장 유닛(2)을 지정할 때(단계(S404)), OS(100)는 판독 명령, LBA, 및 섹터 카운트를 저장 유닛(2)으로 송신한다(단계(S405)). OS(100)는 기록 명령, LBA, 및 섹터 카운트를 저장 유닛(3)으로 송신한다(단계(S406)). OS(100)는 저장 유닛(2)으로부터 응답 및 판독 데이터를 수신한다(단계(S407)). OS(100)는 저장 유닛(2)으로부터 판독된 데이터를 저장 유닛(3)으로 송신함으로써, 저장 유닛(2)으로부터 판독된 데이터를 저장 유닛(3)에서 기록하기 위한 백그라운드 기록을 수행한다(단계(S408)). OS(100)는 저장 유닛(2)으로부터 수신된 데이터 및 응답을 애플리케이션 프로그램(400)으로 송신한다(단계(S412)). OS(100)는 주 메모리(6) 상의 메타데이터를 업데이트하여, 기록 파일 ID를 저장 유닛(3), LBA, 및 섹터 카운트에 맵핑한다(단계(S413)).
이러한 방법으로, 논리 드라이브(4)로부터 정보 처리 디바이스(111)로 판독된 데이터의 백그라운드에서는, 저장 유닛(3)으로의 데이터 마이그레이션이 수행될 수 있다. 설명된 백그라운드 백업이 수행되어야 하는 LBA 영역의 크기는 감소된다. 데이터 마이그레이팅 상태의 시작으로부터 완료까지의 기간은 더욱 감소된다. 특히, 논리 드라이브(4)의 판독 동작에서는, 저장 유닛(2)으로부터의 데이터 판독 및 저장 유닛(3)으로의 데이터 라이트 백이 병렬로 수행됨으로써, 데이터 마이그레이션이 더 높은 속도로 수행될 수 있다.
백그라운드 백업(Background backup)
논리 드라이브(4)는 논리 드라이브 스테이터스 테이블(450)에서 데이터 마이그레이팅 상태에 있고, 애플리케이션 프로그램(400) 및 OS(100)로부터 논리 드라이브(4)로의 액세스가 거의 발생하지 않을 때(아이들링 동안)에는, 데이터 마이그레이션 출발지 저장 유닛(2)으로부터 데이터 마이그레이션 목적지 저장 유닛(3)으로의 백그라운드에서 백업이 수행된다(백그라운드 백업). 제어 프로그램(200)은 주 메모리(6)로부터 메타데이터(300)를 판독하고, 저장 유닛(2)에 맵핑된 파일 ID를 검색한다. 저장 유닛(2)에 맵핑된 파일이 존재할 경우, 제어 프로그램(200)은 파일의 LBA로부터의 판독을 수행하기 위하여 판독 명령을 저장 유닛(2)으로 송신하고 데이터를 판독한다. 제어 프로그램(200)은 기록 명령 및 판독 데이터를 저장 유닛(3)의 LBA로 송신하고, 기록을 수행하고, 주 메모리(6) 상의 메타데이터(300)를 재기록하고, 파일 ID를 저장 유닛(3)에 맵핑한다.
데이터 마이그레이션 완료 시간
도 46은 데이터 마이그레이션 완료 시간에서의 제어 프로그램의 동작 절차를 도시한다. 논리 드라이브(4)의 스테이터스가 논리 드라이브 스테이터스 테이블(450)에서 "데이터 마이그레이팅 상태"일 때(단계(S420)), 제어 프로그램(200)은 주 메모리(6) 상의 메타데이터(300)를 주기적으로 판독하고(단계(S421)), 저장 유닛(2)에 맵핑된 마이그레이션 대상 파일 ID가 존재하는지 여부를 주기적으로 검사한다(단계(S422)). 예를 들어, 제어 프로그램(200)은 저장 유닛(2)에 맵핑된 마이그레이션 대상 파일 ID가 논리 드라이브(4)에서 저장된 모든 파일들의 파일 ID들 중에서 존재하는지 여부를 주기적으로 검사한다. 마이그레이션 대상 파일 ID가 존재할 때에는, 데이터 마이그레이션이 아직 완료되지 않았으므로, 제어 프로그램(200)은 데이터 마이그레이팅 상태의 스테이터스를 지속시킨다.
다른 한편으로, 마이그레이션 대상 파일 ID가 존재하지 않을 때에는, 제어 프로그램(200)은 데이터 마이그레이션 목적지 저장 유닛(3)의 저장 스테이터스 영역(3006)을 저장 스테이터스=1(정상 상태)로 재기록하고(단계(S423)), 데이터 마이그레이션 출발지 저장 유닛(2)의 영역(2006)을 저장 스테이터스=5(폐기 대상 상태)로 재기록한다(단계(S424)). 제어 프로그램(200)은 논리 드라이브(4)로부터 저장 유닛(2)을 분리시키고, 저장 유닛(2) 및 저장 유닛(3) 중의 저장 유닛(3)만을 논리 드라이브(4)로서 인식(장착)하고(단계(S425)), 논리 드라이브(4)의 스테이터스를, 논리 드라이브 스테이터스 테이블(450)에서 "데이터 마이그레이팅 상태"로부터 "정상 상태"로 재기록한다(단계(S426)).
결과적으로, 저장 유닛(2)은 물리적으로(기계적으로) 탈착될 수 있고 언제든지 폐기될 수 있다. 저장 유닛(3)은 수명 종료 처리(S205) 전에 저장 유닛(2)의 역할을 행한다. 그 후에, 저장 유닛(3)은 저장 유닛(2)으로서 간주될 수 있다. 정보 처리 디바이스(111)의 데이터 구성은 수명 종료 처리(S205) 전의 데이터 구성인, 도 31에서 도시된 상태로 복귀한다.
정보 처리 디바이스(111)로부터 저장 유닛(2)을 안전하게 탈착하기 위해서는, 저장 유닛(2)이 논리 드라이브(4)로부터 분리된 후에, 정보 기술 ATA/ATAPI Command Set-3(ACS-3)에서 설명된 E0h Standby Immediate 명령 등을 저장 유닛(2)으로 송신하거나, 예를 들어, NVM Express Revision 1.1에서 설명된 Shutdown Notification (CC.SHN)을 01b로 설정하여, 저장 유닛(2)을 전력 공급 차단이 가능한 상태로 천이시키는 것이 바람직하다.
폐기될 수 있는 저장 유닛(2)의 전력 소비를 감소시키기 위해서는, 저장 유닛(2)이 논리 드라이브(4)로부터 분리된 후, 정보 기술 ATA/ATAPI Command Set-3(ACS-3)에서 설명된 E0h Standby Immediate 명령 및 E6h SLEEP 명령과 같은 상태 천이 명령들이 저장 유닛(2)으로 송신될 수 있거나, 저장 유닛(2)에 대한 전력 공급이 차단될 수 있거나, 저장 유닛(2)은 Serial ATA Revision 3.1 Gold Revision에서 설명된 파샬 상태(Partial state) 및 슬럼버 상태(Slumber state)로 천이될 수 있거나, 저장 유닛(2)을 DevSleep 상태로 천이시키기 위하여 "Serial ATA Technical PropOSal: SATA31_TPR_C108 Title: Device Sleep"에서 설명된 DEVSLP 신호가 활성화될 수 있거나, 또는 저장 유닛(2)이 PCI Express Base Specification Revision 3.0에서 설명된 D1 상태, D2 상태, 또는 D3 상태로 천이될 수 있거나 PCI Express Base Specification Revision 3.0에서 설명된 L1 상태, L2 상태, 또는 L3 상태로 천이될 수 있다.
도 47은 저장 유닛(2)이 저장 스테이터스=3(보호된 상태)에 있고 저장 유닛(3)이 저장 스테이터스=4(데이터 마이그레이션 목적지 상태)에 있는 상태에서 정보 처리 디바이스(111)에 의한 논리 드라이브(4)로부터의 판독 상태의 개념도이다. 저장장치들(2 및 3)에서는, 맵핑 소스들에서의 LBA들이 중첩되지 않는다. 이 상태에서, 데이터는 저장 유닛들(2 및 3) 중의 적어도 하나로부터 판독된다.
도 48은 저장 유닛(2)이 저장 스테이터스=3(보호된 상태)에 있고 저장 유닛(3)이 저장 스테이터스=4(데이터 마이그레이션 목적지 상태)에 있는 상태에서 정보 처리 디바이스(111)에 의한 논리 드라이브(4)에서의 기록 상태의 개념도이다. 이 상태에서, 기록은 저장 유닛(2) 및 저장 유닛(3) 중의 저장 유닛(3)에 대해서만 수행된다. 즉, 저장 유닛(2)은 저장 유닛(2)이 판독 전용 디바이스인 것처럼 기능한다. 데이터가 저장 유닛(3)에서 기록될 때, 저장 유닛(2)으로의 과거 맵핑들은 무효화된다.
위에서 설명된 바와 같이, 이 실시형태에 따라, 저장 유닛(2)이 수명 종료에 도달하였거나 수명 종료에 막 도달할려고 할 때, 저장 스테이터스 영역(2006)의 재기록만이 저장 유닛(2)의 재기록으로서 발생한다. 그러므로, 재기록 처리가 거의 수행되지 않고, 저장 유닛(2)은 저장 유닛(2)이 판독 전용 디바이스인 것처럼 취급된다. 다른 한편으로, 논리 드라이브는 판독가능하고 기록가능한 드라이브로서 거동한다. 그러므로, 애플리케이션 프로그램(400)에 대하여, 논리 드라이브(4)는 수명 종료 전과 동일하게 거동한다. 저장 유닛(2)으로부터 저장 유닛(3)으로의 데이터의 데이터 마이그레이션은, 논리 드라이브(4)에서의 기록이 애플리케이션 프로그램(400) 또는 SS(100)로부터 요청될 때에 발생한다. 데이터 마이그레이션은 저장 유닛(2)으로부터 저장 유닛(3)으로의 엔티티 데이터(entity data)의 복사가 아니라, 애플리케이션 프로그램(400) 또는 OS(100)로부터 저장 유닛(3)으로의 데이터 기록 처리 및 메타데이터 재기록에 의해 논리 데이터 천이의 형태로 수행된다. 결과적으로, 저장 유닛(2)으로부터 저장 유닛(3)으로의 데이터 마이그레이션은 애플리케이션 프로그램(400) 또는 OS(100)로부터 저장 유닛(2)으로의 정상적인 데이터 기록의 백그라운드에서 실행될 수 있다. 논리 데이터 전달에서는, 엔티티 데이터의 복사와 비교하여, NAND 플래시 메모리(16)에서의 판독 처리량 및 기록 처리량이 현저하게 작고 인터페이스(19)의 대역 이용 비율이 현저하게 작다. 위에서 설명된 바와 같이, 이 실시형태에서의 데이터 마이그레이션 처리는, 저장 유닛(2)으로부터 데이터를 판독하고 저장 유닛(3)에서 데이터를 기록하기 위한 처리가 애플리케이션 프로그램(400) 또는 OS(100)로부터 논리 드라이브(4)로의 액세스로부터 독립적으로 수행되는 비교 예에서의 백업 처리와 비교하여 현저하게 높은 속도로 수행된다. 즉, 데이터 마이그레이션 시간은 애플리케이션 프로그램(400) 또는 OS(100)로부터의 기록이 발생하는 LBA에 대해 실질적으로 제로이다.
애플리케이션 프로그램(400) 또는 OS(100)로부터의 기록이 발생하지 않는 LBA에 대해서는, 백업 처리가 별도로 필요하다. 그러나, 새로운 저장 디바이스의 장착 전에 데이터가 복사되어야 하는 비교 예에서의 백업 처리 또는 RAID 어레이의 재구축과는 다르게, 백업 처리는 저장 유닛(2) 및 저장 유닛(3)이 장착된 후에 아이들링 시간에 백그라운드에서 수행될 수 있다. 그러므로, 애플리케이션 프로그램(400)에서 성능 열화를 억제하는 것이 가능하다. 새로운 저장 디바이스의 장착 전에 사용자 데이터 및 패리티 데이터의 재구축이 필요한 RAID 등에 의한 논리 드라이브의 재구축 및 새로운 저장 디바이스의 장착 전에 사용자 데이터의 복사가 필요한 비교 예에서의 백업 처리와 다르게, 이 실시형태에 따른 데이터 마이그레이션 목적지 저장 디바이스의 접속에서 수반된 논리 드라이브 재구축에서는, 도 40에서 도시된 바와 같이, 저장 스테이터스 영역 및 저장 유닛 식별 명칭 영역의 재기록 및 메타데이터 영역의 복사만이 필요하다. 그러므로, 극도로 높은 속도로 논리 드라이브 재구축을 수행하는 것이 가능하다.
(제 2 실시형태)
제 1 실시형태에서 설명된 예에서, 주 메모리(6)에서 저장된 메타데이터(300)는 저장 유닛(3)으로 마이그레이팅된 데이터를 검색하기 위한 정보로서 이용된다. 결과적으로, 예를 들어, OS(100)가 메타데이터(300)를 판독함으로써, 지정된 파일 ID를 갖는 논리 드라이브(4)의 데이터를 판독하도록 애플리케이션 프로그램(400)에 의해 요청될 때, OS(100)는 저장 유닛(2) 및 저장 유닛(3) 중의 어느 것으로부터 데이터가 판독되어야 하는지에 관한 정보와, 어느 LBA로부터 데이터가 판독되어야 하는지에 관한 정보를 취득할 수 있다. 제 2 실시형태에서 설명된 예에서, 저장 유닛(3)에서 저장된 데이터 마이그레이션 로그 영역(550)은 저장 유닛(3)으로 마이그레이팅된 데이터를 검색하기 위한 정보로서 이용된다. 예를 들어, OS(100)가 데이터 마이그레이션 로그 영역(550)을 판독함으로써, 논리 드라이브(4)의 데이터를 판독하도록 애플리케이션 프로그램(400)에 의해 명령받을 때, OS(100)는 저장 유닛(2) 및 저장 유닛(3) 중의 어느 것으로부터 데이터가 판독되어야 하는지에 관한 정보를 취득할 수 있다. 이 실시형태에서, 애플리케이션 프로그램(400)은 LBA를 직접적으로 지정함으로써, 판독 요청 및 기록 요청을 OS(100)로 송신한다. 이 실시형태의 발명은 또한, 애플리케이션 프로그램(400)이 제 1 실시형태에서와 같이 파일 ID를 지정하여 판독 명령 및 기록 명령을 OS(100)로 송신할 때에 적용될 수 있다. 다음으로, 제어 프로그램(200) 또는 OS(100)는 메타데이터(300)를 판독함으로써 파일 ID를 LBA로 변환할 수 있다. 변환된 LBA에 관한 판독 및 기록 처리는 이 실시형태에서와 동일한 방식으로 수행된다.
도 49에는, 제 2 실시형태에서의 정보 처리 시스템(1)의 구성이 도시되어 있다. 정보 처리 시스템(1)의 기본적인 구성은 제 1 실시형태에서의 그것과 동일하다. 논리 드라이브는 OS(100)가 인식할 수 있는 논리적으로 구축된 드라이브이다. 논리 드라이브 ID(드라이브 명칭, 용적 번호(volume number), 논리 유닛 번호 등)는 논리 드라이브에 할당된다. OS(100)는 물리 디바이스들로서 기능하는 하나 또는 복수의 저장 유닛들을 논리 드라이브로서 인식한다. 논리 드라이브는 논리 섹터들(논리 블록들)로 분할된다. LBA들은 각각의 논리 섹터들에 할당된다. 논리 드라이브는 도 7에서 도시된 OS(100) 및 제어 프로그램(200)에 의해, 하위 순서 계층들인 하나 또는 복수의 물리 드라이브들, 및 물리 드라이브들의 일부에서의 LBA 영역에 할당된다. OS(100)는 논리 드라입의 LBA 및 물리 드라이브의 LBA를 서로 변환한다. 상위 순서 계층인 애플리케이션 프로그램(400)은 논리 드라이브를 하나의 드라이브로서 가상적으로 인식한다. 이 실시형태에서는, 수명 종료 처리(S205) 전의 상태에서, 논리 드라이브(4)가 단일의 물리적 저장 유닛으로서 기능하는 저장 유닛(2)에 할당된다. 이 경우, 논리 드라이브의 LBA 및 물리 드라이브의 LBA는 동일한 값을 가진다. 수명 종료 처리(S205) 전의 상태에서도, 저가 디스크들의 중복 어레이들(RAID)의 저장 어레이, 예를 들어, RAID0 또는 RAID5의 저장 어레이는 복수의 물리적 저장 디바이스들을 이용하여 구성될 수 있고, 하나의 논리 드라이브(4)로서 인식될 수 있다. 이 실시형태는 이러한 경우에도 적용될 수 있다. 애플리케이션 프로그램(400)은 LBA에 의해 형성된 논리 드라이브 ID 및 논리 어드레스를 포함하는 명령을 OS(100)에 부여함으로써 특정한 논리 드라이브에서의 특정한 논리 섹터를 액세스할 수 있다. 논리 드라이브 ID는 전체 LBA 영역이 아니라 저장 유닛의 LBA 영역의 일부에 할당될 수 있다. 결과적으로, 저장 유닛(2) 및 저장 유닛(3)은 복수의 논리 드라이브들로 분할되어 관리될 수 있다. 별도의 논리 드라이브 ID들은 각각의 논리 드라이브들에 할당될 수 있다.
이 실시형태에서는, 일 예로서, 제 1 실시형태에서 설명된 저장 유닛(2)으로서 기능하는 SSD가 저장 유닛(2)으로서 이용되고, 제 1 실시형태에서 설명된 저장 유닛(3)으로서 기능하는 SSD가 저장 유닛(3)으로서 이용된다. 신뢰성 열화 후에 저장 유닛(2)을 폐기하여 설정 공간을 감소시키고 전체 시스템(1)의 전력 소비를 감소시키기 위해서는, 저장 유닛(2)이 물리적으로 탈착가능하게 정보 처리 디바이스(111)에 부착가능할 수 있는 것이 바람직하다.
데이터 마이그레이션 목적지 저장 유닛(3)의 저장 용량은 데이터 마이그레이션 출발지 저장 유닛(2)의 저장 용량과 동일하거나 이보다 더 큰 것이 바람직하다. 그러나, 본 발명은 저장 유닛(3)의 저장 용량이 저장 유닛(2)의 저장 용량보다 더 작을 때에도 적용될 수 있다.
이 실시형태에서, 저장 유닛(3)은, 저장 유닛(2)이 수명 종료에 도달하였거나 수명 종료에 막 도달한 것으로 결정된 후에 정보 처리 디바이스(111)에 새롭게 접속된 저장 유닛이다. 본 발명은 또한, 저장 유닛(2)이 수명 종료에 도달하였거나 수명 종료에 막 도달한 것으로 결정된 후에, 정보 처리 디바이스(111)에 이미 접속된 정상 상태에서의 저장 유닛(3)이 새로운 접속 없이 마이그레이션 목적지로서 이용될 때에 적용될 수 있다. 저장 유닛(3)의 접속 전의 설정 공간을 감소시키며 전체 시스템(1)의 전력 소비를 감소시키고, 저장 유닛(3)의 신뢰성 열화 후에 저장 유닛(3)을 폐기하고, 설정 공간을 감소시키고, 전체 시스템(1)의 전력 소비를 감소시키기 위해서는, 저장 유닛(3)이 물리적으로 탈착가능하게 정보 처리 디바이스(111)에 부착가능한 것이 바람직하다.
주 메모리(6) 내에 저장된 제어 프로그램(200)은 저장 유닛(2) 및 저장 유닛(3)의 통계 정보, 각각의 저장 유닛들의 스테이터스 관리 영역들(510), 논리 드라이브 ID 관리 영역들(520), 및 데이터 마이그레이션 로그 영역(550)의 제어 및 관리를 수행하고, 통계 정보에 기초하여 수명 종료 처리, 데이터 마이그레이션 처리 등을 수행한다.
저장 유닛(2) 및 저장 유닛(3)은 스테이터스 관리 영역들(510) 및 논리 드라이브 ID 관리 영역들(520)을 각각 포함한다. 저장 유닛(3)은 데이터 마이그레이션 로그 영역(550)을 포함한다.
이 실시형태에서, 스테이터스 관리 영역들(510)에서 저장된 데이터는 값들 0 내지 5를 취할 수 있다. 각각의 값들은 다음과 같이 스테이터스 관리 영역들(510)에 대응하는 저장 유닛들의 상태들을 표시한다:
0: 초기 저장 상태
1: 정상 상태
2 : 낮은 신뢰성 상태
3 : 데이터 마이그레이션 출발지 상태(보호된 상태)
4: 데이터 마이그레이션 목적지 상태
5: 폐기 대상 상태
정보 처리 시스템(1)은, 스테이터스 관리 영역들(510), 논리 드라이브 ID 관리 영역들(520), 및 데이터 마이그레이션 로그 영역(550)이 각각의 저장 유닛들에서 저장되는 것이 아니라 주 메모리(6)에서 저장되도록 구성될 수 있다. 동일한 논리 드라이브 ID는 데이터 마이그레이션 출발지 저장 유닛(2) 및 데이터 마이그레이션 목적지 저장 유닛(3)의 논리 드라이브 ID 관리 영역들(520)에서 저장된다.
데이터 마이그레이션 로그 영역(550)은 데이터 마이그레이션 목적지 저장 유닛(3) 내에 포함된다. 정보 처리 디바이스(111)가 저장 유닛(3)의 LBA에서의 기록을 수행하거나, 정보 처리 디바이스(111)가 삭제 통지를 논리 드라이브(4)에 송신하여 저장 유닛(2)의 LBA에서의 데이터를 무효화할 때, 제어 프로그램(200)은 논리 드라이브(4)의 업데이트 로그(데이터 마이그레이션 로그)로서, 도 50에서 도시된 바와 같이, 데이터 마이그레이션 로그 영역(550)에서 기록 대상 LBA 및 기록 대상 섹터 크기를 저장한다. 제어 프로그램(200)은 논리 드라이브(4)에서의 데이터 기록 동안, 삭제 통지 동안, 그리고 저장 유닛(3)의 아이들링 동안에 언제든지 데이터 마이그레이션 로그 영역(550)의 가비지 수집 및 최적화를 수행한다. 예를 들어, 데이터 마이그레이션 로그 영역(550)에서 LBA=cLBA ~ LBA+X-1의 섹터 크기 X를 가지는 LBA 영역(이하, (cLBA, X)로서 설명됨)을 저장할 시에, (cLBA, X)와 중첩하는 LBA가 이미 데이터 마이그레이션 로그 영역(550)에서 저장되어 있을 때, 또는 (cLBA, X)로 계속되는 LBA 영역이 이미 데이터 마이그레이션 로그 영역(550)에서 레코딩되어 있을 때에는, 제어 프로그램(200)이 새로운 로그로서, 데이터 마이그레이션 로그 영역(550)에서 저장된 LBA 영역 및 LBA(cLBA, X)를 조합(병합)함으로써 얻어진 LBA 영역을 레코딩하고 조합 출발지 LBA 영역들의 로그들을 삭제하는 것이 바람직하다. 예를 들어, A=(cLBA, X)의 LBA 영역 A가 데이터 마이그레이션 로그 영역(550)에서 새롭게 레코딩되고 B=(cLBA-a, a)의 LBA 영역 B가 이미 데이터 마이그레이션 로그 영역(550)에서 저장될 때에는, LBA 영역 A 및 LBA 영역 B가 연속적인 LBA 영역들이다. 다음으로, 제어 프로그램(200)은, B=(cLBA-a, a)가 데이터 마이그레이션 로그 영역(550)에서 저장되는 영역을, A+B의 LBA 영역인 (cLBA-a, a+X)의 로그 데이터로 중첩기록함으로써, 데이터 마이그레이션 로그 영역(550)의 로그 데이터 양을 증가시키지 않으면서 데이터 마이그레이션 로그 영역(550)을 업데이트할 수 있다. 이하에서 설명된 데이터 마이그레이션이 완료될 때, 제어 프로그램(200)은 데이터 마이그레이션 로그 영역(550)을 삭제하거나 할당해제할 수 있고, 데이터 마이그레이션 데이터 영역(550)을 사용자 데이터 저장과 같은 다른 용도들에 할당할 수 있다.
도 51은 데이터 마이그레이션 로그 영역(55)에서의 로그의 기록의 예이다. 수명 종료 전의 논리 드라이브(4)의 LBA=cLBA에서의 데이터 D(cLBA)는 저장 유닛(2)의 LBA=cLBA에서 저장된다. 저장 유닛(2)이 수명 종료에 도달하였을 때, 예를 들어, 논리 드라이브(4)의 LBA = cLBA에서 하나의 섹터 크기를 가지는 데이터 D(cLBA)의 기록이 수행될 경우에는, 제어 프로그램(200)이 OS(100)를 제어하여 저장 유닛(3)의 LBA=cLBA에서의 기록을 수행한다. 제어 프로그램(200)은 로그 데이터로서, 데이터 마이그레이션 로그 영역(550)에서 LBA = LBA와 섹터 카운트=1을 저장한다. 저장 유닛(2)이 수명 종료에 도달한 후, OS(100)가 논리 드라이브(4)에서의 LBA = cLBA에서 섹터 크기=X의 데이터 D(cLBA), D(cLBA+1), ..., 및 D(cLBA+X-1)를 기록할 때, 제어 프로그램(200)은 OS(100)를 제어하여 LBA=cLBA, cLBA+1, ..., 및 cLBA+X-1에서 데이터를 기록한다. 제어 프로그램(200)은 로그 데이터로서, 데이터 마이그레이션 로그 영역(550)에서 LBA = cLBA와 섹터 카운트=X를 저장한다.
도 51에서는, LBA=1, LBA=3, 및 LBA=4에서의 기록이 저장 유닛(3)의 LBA=1, LBA=3, 및 LBA=4에서 수행된다. LBA=1 및 섹터 카운트=1의 로그들이 데이터 마이그레이션 로그들로서 레코딩된다. LBA=3 및 섹터 카운트=1과, LBA=4 및 섹터 카운트=1의 로그들은 LBA=3 및 섹터 카운트=2의 로그들과 통합되어 레코딩된다.
제어 프로그램(200)은 스테이터스 관리 영역들(510), 논리 드라이브 ID 관리 영역들(520), 및 데이터 마이그레이션 로그 영역(550)으로서 LBA 영역을 할당할 수 있다. 대안적으로, 제어 프로그램(200)은 스테이터스 관리 영역들(510), 논리 드라이브 ID 관리 영역들(520), 및 데이터 마이그레이션 로그 영역(550)으로서, LBA 영역이 아닌 논리 어드레스 영역(예컨대, 로그 페이지 어드레스 영역)을 할당할 수 있다. 로그 페이지 어드레스 영역이 할당될 때, 예를 들어, 로그 페이지 영역의 판독은 비-특허 문헌 1의 ACS-3에서 설명된 2Fh Read Log Ext에 따라 수행되고, 로그 페이지 어드레스 영역에서의 기록은 비-특허 문헌 1의 ACS-3에서 설명된 3Fh Write Log Ext에 따라 수행된다.
제 1 실시형태에서의 도 24 및 도 29에서 도시된 바와 동일한 방식으로, 제어 프로그램(200)은 CPU(5)에 접속된 각각의 저장 유닛들이 수명 종료에 도달하였는지, 수명 종료에 막 도달하는지, 또는 막 고장날려고 하는지 여부를 결정한다. 저장 유닛들이 수명 종료에 도달하였거나, 수명 종료에 막 도달하거나, 또는 막 고장날려고 할 때, 제어 프로그램(200)은 저장 유닛들의 수명 종료 처리를 수행한다. 제 1 실시형태에서와 같이, 수명 종료 결정은 도 24에서 도시된 매 고정된 시간에서, 각각의 고정된 수의 종류들의 처리에서, 또는 각각의 고정된 데이터 송신 및 수신에서, 또는 저장 유닛으로부터 수신된 명령 응답이 도 29 및 도 30에서 도시된 바와 같이 에러 응답일 때에 수행된다.
수명 종료 처리
도 52는 제어 프로그램(200)이 저장 유닛(2)이 수명 종료에 도달한 것으로 결정할 때에 수행된 제 1 실시형태에서의 저장 유닛(2)의 수명 종료 처리를 도시한다. 제어 프로그램(200)이 저장 유닛(2)이 수명 종료에 도달한 것으로 결정할 때(단계(S430)), 제어 프로그램(200)은 저장 유닛(2)의 스테이터스를 1의 정상 상태로부터 2 의 낮은 신뢰성 상태로 재기록한다(단계(S431)). 제어 프로그램(200)은 새로운 저장 유닛인 저장 유닛(3)을 인터페이스(19)의 자유 포트(free port)에 접속하기 위하여, 디스플레이 디바이스 또는 포트 근처에 설정된 LED 등을 통해 정보 처리 시스템의 관리자, 조작자, 또는 사용자에게 통지하는 것이 바람직하다(단계(S432)). 대안적으로, 저장 유닛(2) 또는 저장 유닛(3)의 인터페이스(19)로의 물리적 부착 및 저장 유닛(2) 또는 저장 유닛(3)의 인터페이스(19)로부터의 물리적 탈착을 자동으로 수행하는 기계 장치가 저장장치 로딩/언로딩(storage load/inload) 장치(도면에서 도시되지 않음)로서 정보 처리 시스템(1) 상에 장착될 때, 제어 프로그램은 저장장치 로딩/언로딩 장치를 제어하여, 새로운 저장 유닛인 저장 유닛(3)을 인터페이스(19)에 접속할 수 있다.
저장 유닛(3)이 새로운 저장 유닛으로서 접속될 때(단계(S433)), 제어 프로그램(200)은 저장 유닛(3)의 스테이터스(510)를 4의 데이터 마이그레이션 목적지 상태로 재기록하고(단계(S434)), 저장 유닛(2)의 논리 드라이브 ID 관리 영역(520)의 데이터를 저장 유닛(3)의 논리 드라이브 ID 관리 영역(520)으로 복사하여, 저장 유닛들(2 및 3)의 논리 드라이브 ID들을 일치시킨다(단계(S435)). 현재의 예에서는, 저장 유닛(2)이 도 49에서 도시된 바와 같이 논리 드라이브(4)로서 할당되므로, 논리 드라이브(4)의 ID는 저장 유닛(3)의 논리 드라이브 ID 관리 영역(520)에서 기록된다. 제어 프로그램(200)은 저장 유닛(2)의 스테이터스(510)를 데이터 보호된 상태(데이터 마이그레이션 출발지 상태)로 재기록하고(단계(S436)), OS(100)로 하여금 저장 유닛(2) 및 저장 유닛(3)을, 동일한 논리 드라이브인 논리 드라이브(4)로서 인식하게 한다(단계(S437)). 수명 종료 처리 후에, 저장 유닛(2)의 스테이터스는 3이고, 저장 유닛(3)의 스테이터스는 4이다. 논리 드라이브(4), 저장 유닛(2), 및 저장 유닛(3)은 데이터 마이그레이팅 상태로 천이한다.
이 실시형태에서, 각각의 저장 유닛들의 스테이터스들은 비휘발성 방식으로 저장 유닛들의 스테이터스 관리 영역들(510)에서 저장된다. 도 35에서 도시된 바와 같이, 제어 프로그램(200)은 OS(100)가 시작될 때마다 스테이터스 관리 영역들(510)을 판독함으로써 저장 유닛들의 스테이터스들을 인식한다. 제어 프로그램(200)은, 저장 유닛들의 스테이터스들을 인식함으로써, 그리고 논리 드라이브 ID 관리 영역들(520)로부터 저장 유닛들의 논리 드라이브 ID들을 판독함으로써, 논리 드라이브(4)가 데이터 마이그레이팅 상태에 있는지 여부를 인식한다.
논리 드라이브로부터의 판독
제어 프로그램(200)은 애플리케이션 프로그램(400)으로부터의 판독 요청에 응답하여 도 53a 및 도 53b에서 도시된 바와 같이 데이터를 판독한다. 제어 프로그램(200)은 애플리케이션 프로그램(400)으로부터 판독 요청, 판독 대상 논리 드라이브 ID, 판독 대상 LBA, 및 섹터 카운트를 수신한다(단계(S440)). 제어 프로그램(200)은 논리 드라이브 ID 관리 영역들(520)의 데이터가 판독 대상 논리 드라이브 ID와 동일한 모든 저장 유닛들을 검색하고, 저장 유닛(2) 및 저장 유닛(3)을 특정한다(단계(S441)). 제어 프로그램(200)은 검색된 저장 유닛들의 스테이터스 관리 영역들(510)의 값들을 판독하고 저장 유닛들의 스테이터스들을 결정하여, 검색된 저장 유닛들의 각각이 저장 유닛(2) 및 저장 유닛(3) 중의 어느 것인지를 특정한다(단계(S442)). 스테이터스 관리 영역들(510)의 판독 처리에서 수반된 정보 처리 시스템(1)의 성능 열화를 억제하기 위해서는, 제어 프로그램(200)이 정보 처리 디바이스(111)의 시작 동안에, 주 메모리(6) 상의 저장 유닛(2) 및 저장 유닛(3)의 스테이터스 관리 영역들(510)의 데이터를 캐시 데이터로서 로딩하고, 그 후에, 주 메모리(6)로부터 스테이터스 관리 영역들(510)의 데이터를 판독하는 것이 바람직하다.
대상 논리 드라이브에 속하는 저장 유닛의 스테이터스가 1일 때, 논리 드라이브의 스테이터스는 정상 상태이다(단계(S443)에서 예). 제어 프로그램(200)은 OS(100)를 제어하여, 판독 명령, 판독 대상 LBA, 및 섹터 카운트를 저장 유닛(2)으로 송신한다(단계(S444)). 제어 프로그램(200)은 저장 유닛(2)으로부터 응답 및 판독 데이터를 수신한다(단계(S445)). 제어 프로그램(200)은 판독 데이터 및 응답을 애플리케이션 프로그램(400)으로 송신한다(단계(S446)).
대상 논리 드라이브에 속하는 저장 유닛의 스테이터스가 1이 아닐 때, 논리 드라이브의 스테이터스는 데이터 마이그레이팅 상태이다(단계(S443)에서 아니오). 제어 프로그램(200)은 저장 유닛(3)의 데이터 마이그레이션 로그 영역(550)을 판독하고(단계(S447)), 판독 대상 LBA가 데이터 마이그레이션 로그 내에 포함되는지 여부를 결정한다(단계(S448)). 판독 대상 LBA가 데이터 마이그레이션 로그 내에 포함될 때(단계(S448)에서 예), 제어 프로그램(200)은 판독 명령, 판독 대상 LBA, 및 섹터 카운트를 저장 유닛(3)으로 송신한다(단계(S452)). 제어 프로그램(200)은 저장 유닛(3)으로부터 응답 및 판독 데이터를 수신한다(단계(S453)). 제어 프로그램(200)은 판독 데이터 및 응답을 애플리케이션 프로그램(400)으로 송신한다(단계(S455)).
판독 대상 LBA가 데이터 마이그레이션 로그 내에 포함되지 않을 때(단계(S448)에서 아니오), 제어 프로그램(200)은 판독 명령, 판독 대상 LBA, 및 섹터 카운트를 저장 유닛(2)으로 송신한다(단계(S449)). 제어 프로그램(200)은 저장 유닛(2)으로부터 응답 및 판독 데이터를 수신한다(단계(S450)). 제어 프로그램(200)은 판독 데이터 및 응답을 애플리케이션 프로그램(400)으로 송신한다(단계(S455)).
데이터 마이그레이션 로그 내에 포함된 LBA 영역 및 데이터 마이그레이션 로그 내에 포함되지 않은 LBA 영역이 판독 대상 LBA 영역에서 혼합될 때, 제어 프로그램(200)은 판독 대상 LBA 영역을 데이터 마이그레이션 로그 내에 포함된 LBA 영역 및 데이터 마이그레이션 로그 내에 포함되지 않은 LBA 영역으로 분할하고, 각각의 영역들에 대하여 위에서 설명된 처리를 수행한다.
라이트 백 백업(Write back backup)
예를 들어, 도 53a 및 도 53b에서는, 단계(S451)에서의 라이트 백 백업이 수행될 수 있거나, 또는 수행되어야 할 필요가 없다. 단계(S451)에서는, 데이터 마이그레이션 하에서의 데이터 마이그레이션 출발지 저장 유닛(2)의 데이터가 주 메모리(6)에서의 캐시 메모리 영역으로 판독될 때, 캐시 메모리 영역으로 판독된 데이터는 데이터 마이그레이션 하에서 데이터 마이그레이션 목적지 저장 유닛(3)에서 기록되고, 기록 목적지 LBA 및 섹터 카운트는 데이터 마이그레이션 로그 영역(550)에서 기록된다. 결과적으로, 논리 드라이브(4)로부터 정보 처리 디바이스(111)로 판독된 데이터의 백그라운드에서 저장 유닛(3)으로의 데이터 천이를 수행하는 것이 가능하다. 백그라운드에서 백업되어야 하는 LBA 영역의 크기가 감소되고, 데이터 마이그레이팅 상태의 시작부터 완료까지의 기간이 더욱 감소된다. 특히, 논리 드라이브(4)에 대한 판독 동작에서는, 저장 유닛(2)으로부터의 데이터 판독 및 저장 유닛(3)에서의 데이터 라이트 백이 병렬로 수행됨으로써, 데이터 마이그레이션이 높은 속도로 수행될 수 있다.
논리 드라이브에 대한 데이터 삭제 요청
도 54는 LBA 데이터 삭제 요청이 애플리케이션 프로그램(400)으로부터 OS(100)로 송신될 때에 수행된 OS(100)의 처리 절차를 도시한다. OS(100)는 애플리케이션 프로그램(400)으로부터 데이터 삭제 요청, 논리 드라이브 어드레스, 및 삭제 대상 LBA를 수신한다(단계(S920)). 제어 프로그램(200)은 논리 드라이브 ID 관리 영역들(520)의 데이터가 LBA 데이터 삭제 대상의 논리 드라이브 ID와 동일한 모든 저장 유닛들을 검색하고, 저장 유닛(2) 및 저장 유닛(3)을 특정한다(단계(S921)). 제어 프로그램(200)은 검색된 저장 유닛들의 스테이터스 관리 영역들(510)의 값들을 판독하고(단계(S922)) 스테이터스들을 결정하여, 검색된 저장 유닛들의 각각이 저장 유닛(2) 및 저장 유닛(3) 중의 어느 것인지를 특정한다.
대상 논리 드라이브에 속하는 저장 유닛의 스테이터스가 1일 때(단계(S923)에서의 예), 논리 드라이브의 스테이터스는 정상 상태이다. OS(100)는 삭제 통지 및 LBA를 저장 유닛(2)으로 송신한다(단계(S924)). OS(100)는 저장 유닛(2)으로부터 응답을 수신한다. OS(100)는 응답을 애플리케이션 프로그램(400)으로 송신한다(단계(S930)).
대상 논리 드라이브에 속하는 저장 유닛의 스테이터스가 1이 아닐 때(단계(S923)에서의 아니오), 논리 드라이브의 스테이터스는 데이터 마이그레이팅 상태이다. 제어 프로그램(200)은 저장 유닛(3)의 데이터 마이그레이션 로그 영역(550)을 판독하고(단계(S925)), 데이터 삭제 대상 LBA가 데이터 마이그레이션 로그 내에 포함되는지 여부를 결정한다(단계(S926)). 삭제 대상 LBA가 데이터 마이그레이션 로그 내에 포함될 때, 삭제 대상 데이터는 저장 유닛(3) 내에 저장된다. 제어 프로그램(200)은 삭제 통지 및 LBA를 저장 유닛(3)으로 송신한다(단계(S927)). 저장 유닛(3)은 삭제 통지 대상 LBA의 데이터를 무효화하고, 저장 유닛(3)으로부터 응답을 수신하고, 응답을 애플리케이션 프로그램(400)으로 송신한다(단계(S930)).
삭제 대상 LBA가 데이터 마이그레이션 로그 내에 포함되지 않을 때(단계(S926)), 삭제 대상 데이터는 저장 유닛(2) 내에 저장된다. 제어 프로그램(200)은 삭제 통지 및 LBA를 저장 유닛(2)으로 송신하고(단계(S928)), 저장 유닛(2)으로부터 응답을 수신한다. 제어 프로그램(200)은 삭제 통지를 저장 유닛(2)으로 송신할 필요가 없다. 애플리케이션 프로그램(400)으로부터의 삭제 명령의 대상으로서 설정된 LBA는 애플리케이션 프로그램(400) 및 OS(100)를 위해 추후에 판독될 필요가 없는 데이터이고, 저장 유닛(3)으로 마이그레이팅되어야 할 필요가 없는 데이터이다. 그러므로, 제어 프로그램(200)은 데이터 마이그레이션 로그 영역(550)에서 삭제 대상 LBA 및 섹터 카운트를 레코딩함으로써, 삭제 대상 LBA로부터 저장 유닛(2)으로의 맵핑을 무효화한다(단계(S929)). 제어 프로그램(200)은 응답을 애플리케이션 프로그램(400)으로 송신한다(단계(S930)).
데이터 마이그레이션 로그 내에 포함된 LBA 영역 및 데이터 마이그레이션 로그 내에 포함되지 않은 LBA 영역이 삭제 대상 LBA 영역에서 혼합될 때, 제어 프로그램(200)은 삭제 대상 LBA 영역을 데이터 마이그레이션 로그 내에 포함된 LBA 영역 및 데이터 마이그레이션 로그 내에 포함되지 않은 LBA 영역으로 분할하고, 각각의 영역들에 대하여 위에서 설명된 처리를 수행한다.
이러한 방법으로, 데이터 삭제 요청의 처리에서는, 제어 프로그램(200)이 데이터 마이그레이션 로그 영역(550)을 업데이트한다. 그러므로, 데이터는 저장 유닛(2)으로부터 저장 유닛(3)으로 논리적으로 마이그레이팅된다. 데이터 삭제는 데이터 마이그레이팅 동작으로서 마찬가지로 이용된다.
논리 드라이브에서의 기록
제어 프로그램(200)은 애플리케이션 프로그램(400)으로부터의 기록 명령에 응답하여 도 55에서 도시된 바와 같이 데이터를 기록한다. 제어 프로그램(200)은 애플리케이션 프로그램(400)으로부터 기록 요청, 기록 대상 논리 드라이브 ID, 기록 대상 LBA, 및 섹터 카운트를 수신한다(단계(S460)). 제어 프로그램(200)은 논리 드라이브 ID 관리 영역들(520)의 데이터가 기록 대상 논리 드라이브 ID와 동일한 모든 저장 유닛들을 검색하고, 저장 유닛(2) 및 저장 유닛(3)을 특정한다(단계(S461)). 제어 프로그램(200)은 검색된 저장 유닛들의 스테이터스 관리 영역들(510)의 값들을 판독하고 저장 유닛들의 스테이터스들을 결정하여, 검색된 저장 유닛들의 각각이 저장 유닛(2) 및 저장 유닛(3) 중의 어느 것인지를 특정한다(단계(S462)).
대상 논리 드라이브에 속하는 저장 유닛의 스테이터스가 정상 상태일 때, 논리 드라이브의 스테이터스는 정상 상태이다(단계(S463)에서 예). 제어 프로그램(200)은 기록 명령, 기록 대상 LBA, 및 섹터 카운트를 저장 유닛(2)으로 송신한다(단계(S464)). 제어 프로그램(200)은 애플리케이션으로부터 수신된 기록 데이터를 저장 유닛(2)으로 송신한다(단계(S465)).
대상 논리 드라이브에 속하는 저장 유닛의 스테이터스가 데이터 마이그레이팅 상태일 때, 논리 드라이브의 스테이터스는 데이터 마이그레이팅 상태이다(단계(S443)에서 아니오). 제어 프로그램(200)은 기록 명령, 기록 대상 LBA, 및 섹터 카운트를 데이터 마이그레이션 목적지 저장 유닛(3)으로 송신한다(단계(S466)). 제어 프로그램(200)은 애플리케이션으로부터 수신된 기록 데이터를 저장 유닛(3)으로 송신한다(단계(S467)). 제어 프로그램(200)은 저장 유닛(3)의 데이터 마이그레이션 로그 영역(550)을 판독하고(단계(S468)), 기록 대상 LBA가 데이터 마이그레이션 로그 내에 포함되는지 여부를 결정한다(단계(S469)). 기록 대상 LBA가 데이터 마이그레이션 로그 내에 포함될 때, 기록 대상 LBA는 이미 데이터 마이그레이션을 거치게 된다. 그러므로, 제어 프로그램(200)은 데이터 마이그레이션 로그 영역(550)을 업데이트하지 않는다. 기록 대상 LBA가 데이터 마이그레이션 로그 내에 포함되지 않을 때, 기록 대상 LBA는 마이그레이션이 새롭게 완료되는 LBA이다. 그러므로, 제어 프로그램(200)은 데이터 마이그레이션 로그 영역(550)에서 기록 대상 LBA 및 섹터 카운트를 레코딩한다(단계(S470)). 저장 유닛(3)은 기록 대상 LBA에서 기록 데이터를 기록한다.
이러한 방법으로, 데이터 마이그레이션 동안에는, OS(100)가 기록 요청을 데이터 마이그레이션 출발지 저장 유닛(2)으로 송신하지 않으며 기록 요청을 데이터 마이그레이션 목적지 저장 유닛(3)으로 송신하도록 제어된다. 데이터 마이그레이션 로그는 저장 유닛(3)의 데이터 마이그레이션 로그 영역(550)에서 레코딩된다. 논리 드라이브(4)가 애플리케이션 프로그램(400)으로부터 기록 요청을 수신할 때마다, 저장 유닛(2)에서 저장된 유효한 데이터는 점차적으로 저장 유닛(3)으로 마이그레이팅된다. 새로운 데이터 기록은 데이터 마이그레이팅 동작으로서 마찬가지로 이용된다.
애플리케이션 프로그램(400)으로부터의 데이터 기록 요청이 균일한 확률 분포로 저장 유닛(2)의 모든 LBA들에 송신되는 것으로 가정될 경우, 충분하게 큰 양의 데이터가 전체로서 기록될 때, 저장 유닛(2)의 거의 모든 유효한 데이터는 저장 유닛(3)으로 전달된다. 유효한 데이터는 저장 유닛(2)에서 거의 남겨져 있지 않다. 저장 유닛(2)의 저장 용량인, 논리 섹터들의 총 수는 C2로서 정의되고, 저장 유닛(3)의 논리 섹터들의 총 수는 C3으로서 정의되고, 예를 들어, C2=C3=C이다.ㅇ 모든 LBA들에 대한 기록 분포가 모델 케이스로서 균일한 확률 분포인 것으로 가정될 경우, LBA=cLBA가 어떤 기록 요청에 의해 기록될 확률은 1/C이다. n 개의 기록 요청들이 처리될 때, LBA=cLBA가 전혀 기록되지 않을 확률은 (1-(1/C)^n이다. ^n은 n 제곱이다. 그러므로, 기록 요청들이 n 회 처리된 후에 기록이 완료되는 논리 섹터들의 수의 예상된 값은 C-C×(1-(1/C)^n이다.
하나의 논리 섹터의 기록이 하나의 기록 요청에 따라 수행될 경우, 저장 유닛(2) 및 저장 유닛(3)의 저장 용량보다 N배 큰 용적을 가지는 데이터가 기록될 때에는, 처리된 기록 명령들의 수가 n=NC이므로, 기록이 수행되지 않는 논리 섹터들의 수의 예상된 값 E는 E=C×(1-(1/C)^(NC)이다. 예를 들어, Gbyte 단위에서의 저장 유닛(2)의 저장 용량 G가 국제 디스크 드라이브 장비 및 재료 협회(International Disk Drive Equipment and Materials Association; IDEMA) 표준에 기초하여 G=512GB (=476.9 GiByte)일 때에는, C=97,696,368+1,953,504×G=512-50)=1,000,215,216이며, 일반적으로, C는 충분히 큰 정수이므로, 예상된 값 E는 E=C×^(-N)로서 근사화될 수 있다(e는 자연 대수의 밑(base)임). 그러므로, 예상된 값 E는 N에 있어서의 증가에 대하여 지수함수적으로 감소한다. 예를 들어, G=512GByte (=476.9 GiByte)의 용량을 가지는 논리 드라이브(4)에 대하여, 논리 드라이브(4)의 1 회전과 동등한 476.9 GiByte의 데이터 기록이 발생할 때에는, 논리 드라이브(4)의 약 63.2%의 LBA들에서의 기록이 완료된다. 논리 드라이브(4)의 절반 이상의 데이터의 저장 유닛(2)으로부터 저장 유닛(3)으로의 전달이 완료되는 것으로 간주될 수 있다. 예를 들어, G=512GByte (=476.9 GiByte)의 용량을 가지는 논리 드라이브(4)에 대하여, 논리 드라이브(4)의 4.6 회전과 동등한 13 TiByte의 데이터 기록이 발생할 때에는, 논리 드라이브(4)의 약 99%의 LBA들에서의 기록이 완료된다. 논리 드라이브(4)의 실질적으로 모든 데이터의 저장 유닛(2)으로부터 저장 유닛(3)으로의 전달이 완료되는 것으로 간주될 수 있다. Ki=1024, Mi=1024×i, Gi=1024×i, 및 Ti=1024×i이다.
데이터 마이그레이션 상태의 모니터링
제어 프로그램(200)은 데이터 마이그레이션 로그 영역(550)을 판독하여, 데이터 마이그레이팅 상태에서의 논리 드라이브(4)의 데이터 마이그레이션 상태를 모니터링한다. 도 56은 데이터 마이그레이션 로그를 이용하여 데이터 마이그레이션 상태를 모니터링하기 위한 모니터링 절차를 도시한다. 예를 들어, 제어 프로그램(200)은 데이터 마이그레이션 상태를 모니터링하기 위하여 미리 결정된 시간이 경과할 때마다 데이터 마이그레이션 로그 영역(550)을 판독한다(단계들(S480 및 S481)). 모든 마이그레이션 대상 LBA들이 데이터 마이그레이션 로그 영역(550) 내에 포함될 때, 제어 프로그램(200)은 데이터 마이그레이션이 완료된 것으로 결정한다. 예를 들어, 데이터 마이그레이션 출발지 저장 유닛(2)의 모든 LBA들이 데이터 마이그레이션 로그 영역(550) 내에 포함될 때에는, 제어 프로그램(200)이 데이터 마이그레이션이 완료된 것으로 결정한다(단계(S482)). 대안적으로, 데이터 마이그레이션의 완료의 결정으로서, 예를 들어, 제어 프로그램(200)은 저장 유닛(3)의 모든 LBA들이 데이터 마이그레이션 로그 영역(550) 내에 포함되는지 여부를 결정할 수 있다.
제어 프로그램(200)이 데이터 마이그레이션이 완료된 것으로 결정할 때, 제어 프로그램(200)은 데이터 마이그레이션 출발지 저장 유닛(2)의 스테이터스를 5의 폐기 대상 상태로 변경하고, 데이터 마이그레이션 목적지 저장 유닛(3)의 스테이터스를 1의 정상 상태로 변경하여(단계(S483)), 논리 드라이브(4)의 데이터 마이그레이팅 상태를 종료시키고 논리 드라이브(4)에 대한 데이터 마이그레이션 상태 모니터링을 종료시킨다. 저장 유닛(2)의 전력 소비를 감소시키기 위해서는, 제어 프로그램(200)이 저전력 소비 모드로의 천이 요청을 저장 유닛(2)으로 송신하는 것이 바람직하다. 데이터 마이그레이팅 상태의 종료 후에, 제어 프로그램(200)은 디스플레이(9) 또는 포트 근처에 설정된 LED를 통해, 인터페이스 (19) 로부터 저장 유닛 (2) 을 탈착할 것을 정보 처리 시스템의 관리자, 조작자, 또는 사용자에게 통지하거나, 인터페이스 (19) 로부터 저장 유닛 (2) 을 탈착하도록 저장장치 로딩/언로딩 장치를 제어하는 것이 바람직하다.
전체 스테이터스의 천이
도 57은 저장 유닛(2)이 수명 종료에 도달하였을 때에 수행된 논리 드라이브(4)의 스테이터스의 천이를 도시한다. 저장 유닛(2)이 정상 상태에 있을 때, 저장 유닛(2)의 스테이터스는 1이고, 저장 유닛(3)은 CPU(5)에 접속되지 않는다(단계 1). 제어 프로그램(200)이 저장 유닛(2)이 수명 종료에 도달한 것으로 결정할 때, 제어 프로그램(200)은 저장 유닛(2)의 스테이터스를 2로 변경한다(단계 2). 저장 유닛(3)은 제어 프로그램(200)에 의한 통지 또는 제어에 기초하여 새로운 저장 유닛으로서 인터페이스(19)에 접속된다(단계 3). 저장 유닛(3)이 접속될 때, 제어 프로그램(200)은 데이터 마이그레이팅 상태로의 천이를 완료하기 위하여, 저장 유닛(2)의 스테이터스를 3으로 변경하고 저장 유닛(3)의 스테이터스를 4로 변경한다(단계 4). 제어 프로그램(200)이 데이터 마이그레이션 로그 영역(550)의 정보에 기초하여, 저장 유닛(2)의 모든 유효한 데이터가 저장 유닛(3)으로 마이그레이팅되는 것으로 결정할 때, 제어 프로그램(200)은 저장 유닛(2)의 스테이터스를 5로 변경하고 저장 유닛(3)의 스테이터스를 1로 변경한다. 그 후에, 저장 유닛(3)은 저장 유닛(3)이 원래의 저장 유닛(2)인 것처럼 거동한다(처리는 단계 1로 복귀함). 그 후에, 저장 유닛(3), 즉, 새로운 저장 유닛이 수명 종료에 도달한 것으로 추가로 결정될 때, 동일한 단계들 2 내지 5가 반복된다. 이러한 방법으로, 정보 처리 디바이스(111)의 저장 유닛들 중의 임의의 하나가 수명 종료에 도달하였거나, 수명 종료에 막 도달하였거나, 막 고장날려고 할 때에도, 이 실시형태에 따라, 저장 유닛(2)의 데이터를 새로운 저장 유닛으로 용이하게 마이그레이팅하는 것이 가능하다.
백그라운드 백업(Background backup)
예를 들어, OS(100)가 고정된 시간 이상 동안 애플리케이션 프로그램(400)으로부터 요청을 수신하지 않는 아이들링 동안에는, OS(100)가 애플리케이션 프로그램(400)으로부터 스탠바이 모드 천이 요청을 수신하거나, 정보 처리 디바이스(111) 및 OS(100)가 셧다운될 때, 제어 프로그램(200)은 저장 유닛(3)으로의 데이터 마이그레이션이 완료되지 않은 LBA에 대하여, 저장 유닛(2)으로부터 데이터를 자동으로 판독하고 저장 유닛(3)에서 데이터를 자동으로 기록하기 위한 백업 동작을 수행하기 위한 백그라운드 백업을 수행하는 것이 바람직하다. 예를 들어, 백그라운드 백업 동작은, 저장 유닛(3)의 데이터 마이그레이션 로그 영역(550)을 판독하고, 데이터 마이그레이션 로그 영역(550) 내에 포함되지 않은 cLBA에 대하여 저장 유닛(2)으로부터의 데이터 판독을 수행하고, 데이터 마이그레이션 로그 영역(550)에서 cLBA 및 기록 데이터의 섹터 크기를 로그 데이터로서 저장하는 제어 프로그램(200)에 의해 수행된다. 데이터 마이그레이션 로그 영역(550)에서의 cLBA의 저장에서, 연속적인 LBA 영역들이 존재할 때, 또는 중첩되는 LBA 영역들이 존재할 때에는, LBA 영역들을 병합함으로써 얻어진 LBA 영역이 데이터 마이그레이션 로그 영역(550)에서 저장되고, 병합 전의 LBA 영역들이 데이터 마이그레이션 로그 영역(550)으로부터 삭제되는 것이 바람직하다.
데이터 마이그레이션 로그 영역(550)의 데이터 크기를 감소시키고, 이하에서 설명된 데이터 마이그레이션 종료 결정을 높은 속도로 수행하기 위해서는, 데이터 마이그레이션 로그 영역(550)에서 등록된 cLBA 영역 이외의 cLBA 영역들 중에서 마이그레이팅되지 않은 단편화된 cLBA 영역들에 대해, 백그라운드 백업이 우선적으로 수행되는 것이 바람직하다. 제어 프로그램(200)은 마이그레이팅되지 않은 단편화된 LBA 영역을 우선적으로 백업하고, 마이그레이팅되지 않은 단편화된 LBA 영역이 데이터 마이그레이션을 거치게 함으로써, 새롭게 마이그레이팅된 LBA 영역을, 새롭게 마이그레이팅된 LBA 영역 전후에 연속적으로 위치된 마이그레이팅된 LBA 영역들과 병합함으로써 형성된 LBA 영역으로서, 새롭게 마이그레이팅된 LBA 영역을 데이터 마이그레이션 로그 영역(550)에서 저장한다. 예를 들어, 영역 LBA=0(LBA=0, 섹터 크기=1) 및 영역 LBA=2(LBA=2, 섹터 크기=1)의 데이터가 이미 백업되고 데이터 마이그레이션 로그에서 등록될 때, 제어 프로그램(200)은 연속적인 LBA0 내지 LBA2의 LBA 영역들(LBA=0, 섹터 크기=3)을 마이그레이션 완료된 상태로 변경할 수 있다. 결과적으로, 데이터 마이그레이션 로그 영역(550)의 데이터 양이 감소된다.
예를 들어, 위에서 설명된 바와 같이, 애플리케이션 프로그램(400)이 512 GByte(=476.9 GiByte)의 SSD에서 모두 합하여 476.9 GiByte의 데이터를 기록할 때, 제어 프로그램(200)은 저장 용량의 36.8 %의 용량인 175.5 GiB의 영역에 대해 백그라운드 백업을 수행하고, 이것에 의해, 저장 유닛(2)의 모든 LBA 영역들에 대해 데이터 마이그레이션이 완료된다. SSD인 저장 유닛(2) 및 SSD인 저장 유닛(3)의 전형적인 판독 속도 및 전형적인 기록 속도는 예를 들어, 약 400 MiB/초이다. 476.9 GiB의 LBA 영역들에서의 저장 유닛(2)으로부터의 판독은 약 449 초 내에 완료되고, 저장 유닛(3)에서의 기록은 약 449 초 내에 완료된다. 그러므로, 이러한 상황 하에서, 백그라운드 백업은 최대로 약 15 분 내에 완료된다. 저장 유닛(2)으로부터의 판독 및 저장 유닛(3)에서의 기록이 병렬로 수행될 때, 판독 및 기록은 약 8 분 내에 완료된다.
또한, 예를 들어, 위에서 설명된 바와 같이, 애플리케이션 프로그램(400)이 512 GByte(=476.9 GiByte)의 SSD에서 모두 합하여 13 TiByte의 데이터를 기록할 때, 제어 프로그램(200)은 저장 용량의 1 %의 용량인 4.8 GiB의 영역에 대해 백그라운드 백업을 수행하고, 이것에 의해, 저장 유닛(2)의 모든 LBA 영역들에 대해 데이터 마이그레이션이 완료된다. SSD인 저장 유닛(2) 및 SSD인 저장 유닛(3)의 전형적인 판독 속도 및 전형적인 기록 속도는 예를 들어, 약 400 MiB/초이다. 4.8 GiB의 LBA 영역들에서의 저장 유닛(2)으로부터의 판독은 약 12 초 내에 완료되고, 저장 유닛(3)에서의 기록은 약 12 초 내에 완료된다. 그러므로, 이러한 상황 하에서, 백그라운드 백업은 최대로 약 24 분 내에 완료된다. 저장 유닛(2)으로부터의 판독 및 저장 유닛(3)에서의 기록이 병렬로 수행될 때, 판독 및 기록은 약 12 분 내에 완료된다.
다른 한편으로, 이 실시형태를 적용하지 않으면서, 512 GB의 용량을 가지는 저장 유닛(2)으로부터 모든 데이터를 판독하고 저장 유닛(3)에서 데이터를 기록함으로써, 데이터를 백업하기 위한 비교 예의 데이터 백업을 위해서는 20 분 내지 41 분의 시간이 요구된다. 즉, 비교 예와 비교하여, 이 실시형태의 적용에 따르면, 실질적인 백업을 위해 요구된 시간은 저장 용량 × 1과 동등한 데이터 기록 후에 63 %만큼, 그리고 저장 용량 × 4.6과 동등한 데이터 기록 후에 99 %만큼 감소한다.
이러한 방법으로, 이 실시형태의 적용에 따르면, 사용자에 의한 데이터 백업 작업이 불필요하고, 백그라운드 백업에 따른 정보 처리 디바이스(111) 상에서의 처리의 부하는 실질적으로 감소된다. 애플리케이션 프로그램(400)은 저장 유닛(3)에서의 저장 유닛(2)으로부터의 데이터 백업에 의해 거의 양향을 받지 않으면서 논리 드라이브(4)를 이용할 수 있다. 이 실시형태에서의 데이터 마이그레이션 처리의 대부분은 논리 데이터 전달이다. 엔티티 데이터의 복사와 비교하여, NAND 플래시 메모리(16)에서의 판독 처리량 및 기록 처리량이 현저하게 작고 인터페이스(19)의 대역 이용 비율이 현저하게 작다. 스테이터스 관리 영역들(510)의 크기와 동등한 양의 재기록만이 신뢰성에 있어서 열화된 저장 유닛(2)에서 발생하고, 저장 유닛(2)에서의 추가의 데이터 기록으로 인한 저장 유닛(2)의 고장율을 감소시키는 것이 가능하다. 새로운 데이터가 논리 드라이브(4)에서 기록될 때, 저장 유닛(2)보다는, 높은 신뢰성을 가지는 저장 유닛(3)에서 데이터가 기록된다. 그러므로, 기록 데이터의 손실을 방지하는 것이 가능하다. 저장 유닛(2)이 수명 종료에 도달하였고 추가의 데이터 기록이 방지될 때에도, 저장 유닛들의 상위 계층인 논리 드라이브(4)는 판독 및 기록의 양자를 수행할 수 있는 드라이브로서 거동한다. 그러므로, 애플리케이션 프로그램과 같은 상위 소프트웨어 계층은 논리 드라이브(4)가 수명 종료 모드 또는 정상 상태에 있는지 여부에 관계 없이 논리 드라이브(4)를 동등하게 취급할 수 있다. 그러므로, 이 실시형태를 도입하기 위한 애플리케이션 프로그램 수정이 필요하지 않고, 이 실시형태에 따른 시스템으로의 시프트가 용이하다.
(제 3 실시형태)
제 3 실시형태에서 설명된 예에서는, 본 발명은 저장 어레이를 포함하는 정보 처리 시스템(1)에 적용된다. 도 58은 제 3 실시형태에 따른 정보 처리 시스템(1)을 도시한다. 정보 처리 시스템(1)은 저장 어레이 디바이스(1003), 저장 유닛들(2A 내지 2D), 저장 유닛(3)과, 저장 어레이 디바이스(1003), 저장 유닛들(2A 내지 2D), 및 저장 유닛(3)을 접속하도록 구성된 인터페이스(19), 클라이언트(1002), 그리고 클라이언트(1002) 및 저장 어레이 디바이스(1003)를 접속하도록 구성된 저장 네트워크(1000)를 포함한다. 정보 처리 시스템(1)에서는, 저장 유닛들(2A 내지 2D)이 저장 어레이 디바이스(1003)에 접속되고, 논리 유닛들로서 기능하는 논리 슬롯들로서 각각 인식된다. RAID(저가 디스크들의 중복 어레이들) 어레이는 논리 슬롯들을 이용하여 구축된다. 데이터 마이그레이션 목적지로서 기능하는 저장 유닛(3)은 저장 어레이 디바이스(1003)에 추가로 접속될 수 있다. 이 실시형태에서, 4 개의 저장 유닛들은 수명 종료 처리 전에 RAID 어레이를 구성한다. 그러나, RAID 어레이는 임의적인 2 개 내지 복수의 저장 유닛들을 이용하여 구축될 수 있다. 이 실시형태에서, RAID5는 RAID 어레이로서 이용된다. 그러나, 이 실시형태는 또한, 저장 어레이가 RAID0, RAID2, RAID3, RAID4, RAID6, 및 RAID Z과 같은 다른 RAID 기법들 및 다른 저장 어레이 구현 형태들을 이용하여 구축될 때에 적용될 수 있다.
네트워크(1000)는 저장 액세스를 위한 저장 네트워크이다. 예를 들어, Fibre Channel 또는 Ethernet(등록 상표)이 이용된다. 특히, 저장 네트워크(1000)로서, 예를 들어, 저장 영역 네트워크(Storage Area Network; SAN) 또는 네트워크 연결 저장장치(Network Attached Storage; NAS)가 이용된다. SAN으로서, 예를 들어, 파이버 채널 저장 영역 네트워크(Fibre Channel Storage Area Network; FC-SAN) 또는 인터넷 프로토콜 저장 영역 네트워크(Internet Protocol Storage Area Network; IP-SAN)가 이용된다. SAN의 상위 계층 프로토콜로서, 예를 들어, 소형 컴퓨터 시스템 인터페이스(Small Computer System Interface; SCSI)가 이용된다. 이 실시형태에서 설명된 예에서, IP-SAN은 저장 네트워크(1000)로서 채택된다. IP-SAN의 상위 계층 프로토콜로서, 인터넷 소형 컴퓨터 시스템 인터페이스(Internet Small Computer System Interface; iSCSI)가 이용된다. 저장 네트워크(1000)는 네트워크 스위치(10001) 및 허브(도면에서 도시되지 않음)를 포함한다.
클라이언트(1002)는 저장 네트워크(1000)에 접속되며 희망하는 처리를 수행하도록 구성된 컴퓨터이다. 전형적으로, 클라이언트(1002)는 처리기, 주 메모리, 통신 인터페이스 및 로컬 입력/출력 디바이스와 같은 하드웨어 자원들을 포함한다. 클라이언트(1002)는 디바이스 드라이버, 오퍼레이팅 시스템(OS), 및 애플리케이션 프로그램(도면에서 도시되지 않음)과 같은 소프트웨어 자원들을 포함한다. 결과적으로, 클라이언트(1002)는 처리기에 의한 제어 하에 다양한 프로그램들을 실행하고, 하드웨어 자원들과 협력하여 처리를 실현한다. 예를 들어, 클라이언트(1002)는 처리기에 의한 제어 하에서 업무 애플리케이션 프로그램을 실행함으로써, 저장 네트워크(1000)를 통해 저장 어레이 디바이스(1003)를 I/O 액세스하고 희망하는 업무 시스템을 실현한다. 클라이언트(1002)는 데이터베이스 관리 시스템(database management system; DBMS)이 동작하고 있는 데이터베이스 서버(DB 서버)일 수 있다. 다음으로, 저장 네트워크(1000) 또는 또 다른 네트워크(도면에서 도시되지 않음)를 통해 DB 서버에 접속된 클라이언트(도면에서 도시되지 않음)로부터 데이터 판독 요청을 수신할 시에, 클라이언트(1002)는 저장 어레이 디바이스(1003)로부터 데이터를 판독하고 판독된 데이터를 클라이언트로 송신한다. 클라이언트로부터 데이터 기록 요청을 수신할 시에, 클라이언트(1002)는 클라이언트로부터 기록 데이터를 수신하고, 저장 어레이 디바이스(1003)에서 데이터를 기록한다.
저장 어레이 디바이스(1003)는 RAID의 구성 단위들로서 논리 슬롯들 0 내지 3을 이용한다. 논리 슬롯들은 제 2 실시형태에서의 논리 디바이스들에 대응한다. 저장 유닛들(2A 내지 2D)이 수명 종료에 도달하기 전의 정상 상태에서는, 저장 유닛들(2A 내지 2D)이 인터페이스(19)를 통해 저장 어레이 디바이스(1003)에 접속된다. 저장 유닛(2A)은 논리 슬롯 0에 할당되고, 저장 유닛(2B)은 논리 슬롯 1에 할당되고, 저장 유닛(2C)은 논리 슬롯 2에 할당되고, 저장 유닛(2D)은 논리 슬롯 3에 할당된다. 결과적으로, 저장 어레이 디바이스(1003)는 4 개의 저장 유닛들(2A 내지 2D)에 대응하는 4 개의 논리 슬롯들을, RAID5를 이용하여 가상적인 하나의 논리 디바이스로서 클라이언트(1002)에 통지한다. 클라이언트(1002)는 저장 어레이 디바이스를 액세스하기 위한 LBA(이하, "어레이 LBA" 또는 "ALBA"로서 지칭됨)를 송신한다. RAID 제어기(1005)에서의 제어 유닛(200)은 어레이 LBA를 논리 슬롯 번호들과, 저장 유닛들(2A 내지 2D)을 액세스하기 위한 LBA들(이하, "저장 유닛 LBA들" 또는 "SLBA들"로서 지칭됨)을 액세스하기 위한 LBA들로 변환한다. 제어 유닛(200)은 액세스 명령을, 논리 슬롯 번호들에 의해 특정된 저장 유닛들(2A 내지 2D) 중에서 적어도 하나의 저장 유닛의 SLBA로 송신한다.
저장 어레이 디바이스(1003)는 단독으로 클라이언트(1002)에 데이터 저장 서비스를 제공할 수 있다. 대안적으로, 저장 어레이 디바이스(1003) 및 도시되지 않은 또 다른 저장 어레이 디바이스에 의해 가상적으로 구성된 하나의 가상적인 저장 디바이스는 클라이언트(1002)에 데이터 저장 서비스를 제공할 수 있다. 저장 어레이 디바이스(1003)에서는, 클라이언트(1002)에 제공되어야 할 하나 이상의 논리 디바이스(logical device; LDEV)들이 저장 어레이 디바이스(1003)에서 형성된다.
논리 디바이스는 클라이언트(1002)에 의해 인식될 수 있는 논리 저장 디바이스이다. 논리 유닛(logical unit; LU)은 논리 디바이스에 할당된다. 클라이언트(1002)는 물리 다비이스 상에 형성된 논리 디바이스를 논리 유닛으로서 인식한다. 논리 유닛 번호(logical unit number; LUN)들은 논리 유닛들에 대해 부여된다. 논리 유닛은 논리 섹터들(논리 블록들)로 분할된다. 어레이 LBA들은 논리 섹터들에 할당된다. 클라이언트(1002)는 논리 유닛 번호 및 어레이 LBA에 의해 형성된 논리 어드레스를 포함하는 명령을 명령 저장 어레이 디바이스(1003)에 부여함으로써 특정한 논리 유닛에서의 특정한 논리 섹터를 액세스할 수 있다. iSCSI가 이용되는 이 실시형태에서, 클라이언트(1002) 및 저장 어레이 디바이스(1003)는, iSCSI 명칭들이 할당된 iSCSI 노드들인 개시자(initiator) 및 대상으로서 각각 기능한다. 그러므로, 클라이언트(1002) 및 저장 어레이 디바이스(1003)는 IP 어드레스 및 TCP 포트 번호의 조합에 의해 특정된 네트워크 포탈(network portal)을 통해 iSCSI PDU를 송신 및 수신한다. 그러므로, 클라이언트(1002)는 iSCSI 명칭, IP 어드레스, 및 TCP 포트 번호를 지정함으로써, 네트워크(1000) 상의 저장 어레이 디바이스(1003)를 인식하고, 저장 어레이 디바이스(1003)의 논리 유닛에서 논리 섹터를 액세스한다.
저장 유닛들(2A 내지 2D)은 인터페이스(19)를 통해 저장 어레이 디바이스(1003)에 접속된 저장 유닛들이다. 저장 유닛들(2A 내지 2D)로서, 예를 들어, 제 1 실시형태에서 설명된 저장 유닛(2)과 동등한 저장 유닛들이 각각 이용될 수 있다. 이 실시형태에서는, 일 예로, 저장 유닛들(2A 내지 2D)로서, 제 1 실시형태에서 설명된 SSD가 이용된다. 신뢰성 열화 후에 저장 유닛들(2A 내지 2D)을 폐기하고, 설정 공간을 감소시키고, 전체 정보 처리 시스템(1)의 전력 소비를 감소시키는 측면에서는, 저장 유닛들(2A 내지 2D)이 물리적으로 탈착가능하게 저장 어레이 디바이스(1003)에 부착가능한 것이 바람직하다.
저장 유닛(3)은, 저장 유닛들(2A 내지 2D) 중의 임의의 하나가 수명 종료에 도달하였거나 수명 종료에 막 도달한 것으로 결정된 후에 저장 어레이 디바이스(1003)에 새롭게 접속된 저장 유닛이다. 예를 들어, 제 1 실시형태에서 설명된 저장 유닛(3)과 동등한 저장 유닛들이 이용될 수 있다. 이 실시형태에서는, 저장 유닛(3)으로서, 제 1 실시형태에서 설명된 SSD가 이용된다. 저장 유닛(3)의 접속 전의 설정 공간을 감소시키고, 전체 정보 처리 시스템(1)의 전력 소비를 감소시키고, 저장 유닛(3)의 신뢰성 열화 후에 저장 유닛(3)을 폐기하여 설정 공간을 감소시키고 전체 정보 처리 시스템(1)의 전력 소비를 감소시키기 위해서는, 저장 유닛(3)이 물리적으로 탈착가능하게 정보 처리 디바이스(1003)에 부착가능한 것이 바람직하다.
RAID 제어기(1005)는 저장 인터페이스(1007)에 접속된 저장 유닛의 RAID 어레이의 구축 및 관리를 제어하고, 제어 유닛(200)을 포함한다. 제어 유닛(200)은 RAID 제어기(1005) 내의 메모리에서 저아된 펌웨어 및 소프트웨어, 또는 RAID 제어기(1005)에서의 하드웨어와 같은 다양한 구현 형태들을 취한다. 네트워크 인터페이스(1004)를 통해 클라이언트(1002), 네트워크 스위치(6009) 등으로부터 명령을 수신할 시에, 제어 유닛(200)은 저장 인터페이스(1007)를 통해 판독 명령, 기록 명령, 다른 명령들, 및 데이터를 저장 유닛들로 송신하고, 저장 유닛들로부터 응답들 및 데이터를 수신하고, 네트워크 인터페이스(1004)를 통해 응답 및 데이터를 클라이언트(1002)로 송신한다. 제어 유닛(200)은 저장 유닛들(2A 내지 2D) 및 저장 유닛(3)의 통계 정보, 스테이터스 관리 영역들(510), 슬롯 번호 관리 영역들(530), 및 데이터 마이그레이션 로그 영역(550)의 제어 및 관리를 수행하고, 통계 정보에 기초하여 수명 종료 처리, 데이터 마이그레이션 처리 등을 수행한다. 스테이터스 관리 영역들(510), 슬롯 번호 관리 영역들(530), 및 데이터 마이그레이션 로그 영역(550)은 저장 유닛들에서 저장되는 것이 아니라, RAID 제어기(1005)에서의 메모리 영역(도면에서 도시되지 않음)과 같이, 정보 처리 시스템(1) 내의 저장 영역에서 저장될 수 있다. 이 실시형태에서, 스테이터스 관리 영역들(510)에서 저장된 데이터는 값들 0 내지 5를 취할 수 있다. 각각의 값들은 다음과 같이 그것에 대응하는 저장 유닛의 상태들을 표시한다:
0: 초기 저장 상태
1: 정상 상태
2 : 낮은 신뢰성 상태
3 : 데이터 마이그레이션 출발지 상태(보호된 상태)
4: 데이터 마이그레이션 목적지 상태
5: 폐기 대상 상태
도 59에는, 이 실시형태에서의 정상 상태에서의 어레이 LBA(ALBA) 및 저장 유닛 LBA(SLBA)에 대한 변환 방법이 도시되어 있다. RAID5를 채택하는 제어 유닛(200)은 3 개의 연속적인 논리 섹터들 ALBA=3q, 3q+1, 및 3q+2(q는 0 이상인 임의적인 정수)를 세트로서 이용하여, 각각의 논리 섹터들의 데이터인 어레이 데이터 D(ALBA=3q), D(ALBA=3q+1), 및 D(ALBA=3q+2)에 대하여 하나의 논리 섹터와 동등한 패리티 데이터 P(3q, 3q+2)를 생성한다.
패리티 데이터 P(3q, 3q+2)는, P(3q, 3q+2)=(D(ALBA=3q) XOR D(ALBA=3q+1) XOR DALBA-3q+2)와 같은 방식으로 D(ALBA=3q), D(ALBA=3q+1), 및 D(ALBA=3q+2)에서의 논리 섹터들에서 동일한 오프셋을 가지는 각각의 비트들을 배타적 OR 함으로써 계산된다. 예를 들어, 패리티 데이터 P(0,2)는 ALBA=0의 데이터인 D(0), ALBA=1의 데이터인 D(1), 및 ALBA=2의 데이터인 D(2)로부터 제어 유닛(200)에 의해 계산된다. 정상 상태에서는, 어레이 데이터 D(ALBA=3q), D(ALBA=3q+1), 및 D(ALBA=3q+2)와, 패리티 데이터 P(3q, 3q+2)가 도 59에서 도시된 바와 같이 저장 유닛들(2A 내지 2D)에서 분산 방식으로 관리된다. 예를 들어, ALBA=1의 경우, 그것에 대응하는 데이터 D(1)은 논리 슬롯 1에 할당된 저장 유닛(2B)의 LBA=SLBA=0에서 저장된다. 클라이언트(1002)로부터 ALBA=1을 수신할 시에, 제어 유닛(200)은 논리 슬롯 번호=1 및 SLBA=0을 특정한다.
예를 들어, 클라이언트(1002)로부터 ALBA=1에 대한 판독 명령을 수신할 시에, 제어 유닛(200)은 D(1)의 저장 목적지인 논리 슬롯 번호=1 및 SLBA=0을 특정하고, SLBA=0에 대한 판독 명령을 논리 슬롯 번호=1에 접속된 저장 유닛(2B)으로 송신하고, 판독 데이터를 수신하고, 수신된 판독 데이터를 클라이언트(1002)로 송신한다. 응답이 저장 유닛(2B)으로부터 수신되지 않을 때, 또는 에러 응답이 저장 유닛(2B)으로부터 수신될 때, 제어 유닛(200)은 SLBA=0에 대한 판독 명령을 논리 슬롯 1 이외의 논리 슬롯 0 및 논리 슬롯들 2 및 3에 접속된 저장 유닛(2A), 저장 유닛(2C), 및 저장 유닛(2D)으로 송신하고, 배타적 OR를 통해 수신된 데이터 D(0), D(2), 및 P(0,2)로부터 D(1)을 복원하고, 복원된 D(1)을 클라이언트(1002)로 송신한다. D(0), D(2), 및 P(0,2)에 대한 데이터 판독은 D(1)의 판독 동안에 병렬로 수행될 수 있다.
예를 들어, 클라이언트(1002)로부터 ALBA=1에 대한 기록 명령 및 기록 데이터를 수신할 시에, 제어 유닛(200)은 D(1)의 저장 목적지인 논리 슬롯 번호=1 및 SLBA=0을 특정하고, SLBA=0에 대한 기록 명령을 논리 슬롯 번호=1을 가지는 저장 유닛(2B)으로 송신하고, 기록되어야 할 데이터를 기록하고, 논리 슬롯 번호 1 이외의 슬롯들에 접속되며 SLBA=0에서 저장된 패리티 데이터를 가지지 않는 저장 유닛들인 저장 유닛(2A) 및 저장 유닛(2C)의 SLBA=1로부터 데이터 D(0) 및 D(2)를 판독하고, D(0), D(1), 및 D(2)로부터 패리티 데이터 P(0,2)를 계산하고, 저장 유닛(2D)의 SLBA=0에서 패리티 데이터 P(0,2)를 기록한다.
도 60에는, 논리 슬롯 1의 마이그레이션 상태 천이 직후의 어레이 LBA 및 저장 유닛 LBA에 대한 변환 방법이 도시되어 있다. 마이그레이션 상태 천이 직후에, 어레이 LBA 및 저장 유닛 LBA에 대한 변환 방법은 도 59에서 도시된 정상 상태에서의 그것과 동일하다.
도 58에서 도시된 바와 같이, 저장 유닛들(2A 내지 2D) 및 저장 유닛(3)은 스테이터스 관리 영역들(510) 및 논리 슬롯 번호 관리 영역들(530)을 각각 포함한다. 저장 유닛(3)은 데이터 마이그레이션 로그 영역(550)을 포함한다. 이하에서 설명된 데이터 마이그레이션이 완료될 때, 제어 유닛(200)은 데이터 마이그레이션 로그 영역(550)을 삭제하거나 할당해제할 수 있고, 데이터 마이그레이션 로그 영역(550)을 사용자 데이터 저장과 같은 또 다른 용도들에 할당할 수 있다. 제어 유닛(200)은 LBA 영역을 스테이터스 관리 영역들(510), 논리 슬롯 번호 관리 영역들(530), 및 데이터 마이그레이션 로그 영역(550)에 할당할 수 있다. 대안적으로, 제어 유닛(200)은 LBA 영역이 아닌 영역(예컨대, 로그 페이지 어드레스가 할당된 로그 영역)을 스테이터스 관리 영역들(510), 논리 슬롯 번호 관리 영역들(530), 및 데이터 마이그레이션 로그 영역(550)에 할당할 수 있다. LBA 영역이 아닌 영역에서는, 판독이 비-특허 문헌 1의 ACS-3에서 설명된 2Fh Read Log Ext에 따라 수행되고, 기록은 비-특허 문헌 1의 ACS-3에서 설명된 3Fh Write Log Ext에 따라 수행된다. 이하에서 설명된 로그 마이그레이팅 상태의 로그는 데이터 마이그레이션 로그 영역(550)에서 저장된다.
데이터 마이그레이션 로그 영역(550)에서 레코딩된 로그 데이터로서, 이 실시형태에서는, 도 61에서 도시된 테이블 데이터가 이용된다. 섹터 카운트 X의 데이터가 데이터 마이그레이팅 상태에서 저장 유닛(3)의 LBA(=SLBA)에서 기록될 때, 제어 유닛(200)은 데이터 마이그레이션 로그 영역(550)에서 (SLBA, X)를 추가적으로 기록한다. LBA=SLBA ~ LBA+X-1의 영역과 중첩하거나 이에 연속적인 LBA들이 데이터 마이그레이션 로그 영역(550)에서 이미 레코딩될 때, LBA들을 조합함으로써 얻어진 로그를 데이터 마이그레이션 로그 영역(550)에서 레코딩하고, 데이터 마이그레이션 로그 영역(550)으로부터 조합된 로그를 삭제하는 것이 바람직하다. 예를 들어, (SLBA, X)의 LBA 영역 A가 데이터 마이그레이션 로그 영역(550)에서 새롭게 기록될 때와, (SLBA-a, a)의 LBA 영역 B가 데이터 마이그레이션 로그 영역(550)에서 이미 레코딩될 때에는, LBA 영역 A 및 LBA 영역 B가 연속적이므로, (SLBA-a, a)의 로그를, A+B의 영역을 표시하는 (SLBA-a, a+X)의 데이터로 중첩기록함으로써 로그 데이터 양을 증가시키지 않으면서 데이터 마이그레이션 로그 영역(550)을 업데이트하는 것이 가능하다.
제 1 실시형태에서의 도 24 및 도 29에서 도시된 바와 동일한 방식으로, 제어 유닛(200)은 저장 인터페이스(1007)에 접속된 각각의 저장 유닛들이 수명 종료에 도달하였는지, 수명 종료에 막 도달하는지, 또는 막 고장날려고 하는지 여부를 결정한다. 저장 유닛들이 수명 종료에 도달하였거나, 수명 종료에 막 도달하거나, 또는 막 고장날려고 할 때, 제어 유닛(200)은 수명 종료 처리를 수행한다. 제 1 실시형태에서와 같이, 수명 종료 결정은 도 24에서 도시된 매 고정된 시간에서, 각각의 고정된 수의 종류들의 처리에서, 또는 각각의 고정된 데이터 송신 및 수신에서, 또는 저장 유닛으로부터 수신된 명령 응답이 도 29 및 도 30에서 도시된 바와 같이 에러 응답일 때에 수행된다.
도 62는 예를 들어, 제어 유닛(200)이 저장 유닛(2B)이 수명 종료에 도달한 것으로 결정할 때에 수행된 저장 유닛(28)의 수명 종료 처리를 도시한다. 제어 유닛(200)이 저장 유닛(2B)이 수명 종료에 도달한 것으로 결정할 때(단계(S500)), 제어 유닛(200)은 저장 유닛(2B)의 스테이터스를 1로부터 2로 재기록한다(단계(S501)). 제어 유닛(200)은 새로운 저장 유닛을 저장 인터페이스(1007)의 자유 슬롯에 접속하기 위하여 디스플레이 디바이스, LED 등을 통해 네트워크 관리자에게 통지하는 것이 바람직하다(단계(S502)). 대안적으로, 저장 유닛들(2A 내지 2D) 또는 저장 유닛(3)의 저장 인터페이스(1007)로의 물리적 부착 및 저장 유닛들(2A 내지 2D) 또는 저장 유닛(3)의 저장 인터페이스(1007)로부터의 물리적 탈착을 자동으로 수행하는 기계 장치가 저장장치 로딩/언로딩 장치(도면에서 도시되지 않음)로서 정보 처리 시스템(1) 상에 장착될 때, 제어 유닛(200)은 저장장치 로딩/언로딩 장치를 제어하여, 새로운 저장 유닛을 저장 인터페이스(1007)에 접속할 수 있다(단계(S502)).
저장 유닛(3)이 새로운 저장 유닛으로서 접속될 때(단계(S503)), 제어 프로그램(200)은 저장 유닛(3)의 스테이터스(510)를 4로 재기록하고(단계(S504)), 저장 유닛(2B)의 논리 슬롯 번호 관리 영역들(530)의 데이터를 저장 유닛(3)의 논리 슬롯 번호 관리 영역들(530)로 복사한다(단계(S505)). 현재의 예에서는, 저장 유닛(2B)이 도 57에서 도시된 바와 같이 논리 슬롯 1로서 할당되므로, 저장 유닛(3)의 논리 슬롯 번호 관리 영역들(530)에서 1이 기록된다. 제어 프로그램(200)은 저장 유닛(2B)의 스테이터스(510)를 3으로 재기록하고(단계(S506)), RAID 제어기(1005)로 하여금 저장 유닛(2B) 및 저장 유닛(3)을 동일한 논리 슬롯인 논리 슬롯 1로서 인식한다(단계(S507)). 수명 종료 처리 후에, 저장 유닛(2B)의 스테이터스는 3이고, 저장 유닛(3)의 스테이터스는 4이다. 논리 슬롯 1은 데이터 마이그레이팅 상태로 천이한다.
이 실시형태에서, 각각의 저장 유닛들의 스테이터스들은 비휘발성 방식으로 저장 유닛들의 스테이터스 관리 영역들(510)에서 저장된다. 도 63은 RAID 제어기(1005)가 시작될 때, 그리고 저장 유닛들이 저장 인터페이스(1007)에 접속될 때에 수행된 제어 유닛(200)의 처리 절차를 도시한다. RAID 제어기(1005)가 시작할 때마다, 제어 유닛(200)은 스테이터스 관리 영역들(510)을 판독하여 저장 유닛들의 스테이터스들을 인식한다. 제어 유닛(200)은 저장 유닛들의 스테이터스들을 인식하고 논리 슬롯 번호 관리 영역들(530)로부터 저장 유닛들의 논리 슬롯 번호들을 판독하여, 논리 슬롯들 0 내지 3의 각각이 데이터 마이그레이팅 상태에 있는지 여부를 결정한다.
즉, 저장 스테이터스=0일 때(단계(S511)), 제어 유닛(200)은 저장 유닛들을 초기 저장 상태에 있는 것으로서 인식한다(단계(S512)). 저장 스테이터스=1일 때(단계(S513)), 제어 유닛(200)은 저장 유닛들을 정상 상태에 있는 것으로서 인식한다(단계(S514)). 저장 스테이터스=2일 때(단계(S515)), 제어 유닛(200)은 저장 유닛을 낮은 신뢰성 상태에 있는 것으로서 인식한다(단계(S516)). 저장 스테이터스=3일 때(단계(S517)), 제어 유닛(200)은 데이터 마이그레이션 작업 동안에 저장 유닛들을 데이터 마이그레이션 출발지 상태(보호된 상태)에 있는 것으로서 인식한다(단계(S518)). 저장 스테이터스=4일 때(단계(S519)), 제어 유닛(200)은 데이터 마이그레이션 작업 동안에 저장 유닛들을 데이터 마이그레이션 목적지 상태에 있는 것으로서 인식한다(단계(S520)). 저장 스테이터스=5일 때(단계(S521)), 제어 유닛(200)은 저장 유닛들을 폐기 대상 상태에 있는 것으로서 인식한다(단계(S522)). 저장 스테이터스가 0 내지 5 이외의 것일 때, 제어 유닛(200)은 저장 유닛들을 허가되지 않은 저장 유닛들로서 간주한다(단계(S523)).
논리 드라이브(1)로부터의 판독
도 64는 판독 요청이 클라이언트(1002)로부터 저장 어레이 디바이스(1003)로 송신될 때에 수행된 제어 유닛(200)의 처리 절차를 도시한다. 제어 유닛(200)은 클라이언트(1002)로부터 판독 대상 어레이 LBA인 ALBA=cALBA에 대한 판독 명령을 수신한다(단계(S530)). 제어 유닛(200)은 cALBA로부터 논리 슬롯 번호 cSLOT과, 판독 대상 저장 유닛 LBA인 SLBA=cSLBA를 계산한다(단계(S531)). 제어 유닛(200)은 cSLT의 논리 유닛의 저장 유닛이 고장 중인지 여부를 결정한다(단계(S532)). cSLOT의 논리 슬롯의 저장 유닛이 고장 중이 아닐 때, 그 후에, 제어 유닛(200)은 cSLOT의 논리 슬롯의 저장 유닛이 데이터 마이그레이팅 상태에 있는지 여부를 결정한다(단계(S533)).
cSLOT의 논리 슬롯의 저장 유닛이 데이터 마이그레이팅 상태에 있을 때(단계(S533)), 제어 유닛(200)은 cSLOT의 슬롯들 이외의 슬롯으로부터 패리티를 포함하는 데이터를 판독하고, 데이터를 이용하여 cSLOT의 cSLBA의 데이터를 복원하고, 복원된 데이터를 클라이언트(1002)로 송신한다(단계(S534)). 제어 유닛(200)은 cSLOT의 cSLBA의 복원된 데이터를 데이터 마이그레이션 목적지 저장 유닛(3)으로 라이트 백하고, 데이터 마이그레이션 로그 영역(550)에서 데이터 마이그레이션 로그를 레코딩한다(단계(S535)). cSLOT의 논리 슬롯의 저장 유닛이 데이터 마이그레이션을 수행하고 있지 않을 때(단계(S533)), 제어 유닛(200)은 cSLOT의 저장 유닛들로부터 데이터 D(cSLBA)를 판독하고, 판독 데이터를 클라이언트(1002)로 송신한다. 이러한 방법으로, 판독 대상 논리 슬롯이 데이터 마이그레이팅 상태에 있을 때, 판독 대상 데이터는 판독 대상 이외의 슬롯으로부터 복원된다. 결과적으로, 데이터 마이그레이팅 상태에서의 저장 유닛의 데이터가 손실되더라도, 손실을 치유하는 것이 가능하다. 또한, 데이터 마이그레이팅 상태에서의 저장 유닛으로부터의 판독이 감소되어 판독 방해(데이터가 판독되는 메모리 셀과 동일한 블록 내에 포함된 선택되지 않은 메모리 셀의 플로팅 게이트에서 매우 작은 전하들이 저장되므로, 저장된 데이터에서 에러가 발생하는 현상)를 억제한다.
cSLOT의 논리 슬롯의 저장 유닛이 고장 중일 때, 제어 유닛(200)은 데이터 마이그레이팅 상태에서의 슬롯이 존재하는지 여부를 결정한다(단계(S537)). 데이터 마이그레이팅 상태에서의 슬롯이 존재하지 않을 때, 제어 유닛(200)은 cSLOT의 슬롯 이외의 슬롯으로부터 데이터를 판독하고, 데이터를 이용하여 cSLOT의 cSLBA의 데이터를 복원하고, 복원된 데이터를 클라이언트(1002)로 송신한다(단계(S538)). 이러한 방법으로 판독 대상 슬롯이 고장 중이고 데이터 마이그레이팅 상태에서의 슬롯이 다른 슬롯들에서 존재하지 않을 때, 제어 유닛(200)은 판독 대상 이외의 슬롯으로부터 판독 대상 데이터를 복원한다.
cSLOT의 논리 슬롯의 저장 유닛이 고장이고 데이터 마이그레이팅 상태에서의 슬롯이 존재할 때(단계(S537)), 제어 유닛(200)은 데이터 마이그레이션 로그 영역(550)을 판독하고, 데이터 마이그레이션 출발지 및 데이터 마이그레이션 목적지의 어느 것에서 판독 대상 SLBA의 데이터가 존재하는지를 결정한다(단계(S539)). 제어 유닛(200)은 데이터 마이그레이션 목적지 저장 유닛, 데이터 마이그레이션 출발지 저장 유닛, 및 정상-상태 저장 유닛으로부터 판독된 데이터로부터 cSLOT의 cSLBA의 데이터를 복원하고, 복원된 데이터를 클라이언트(1002)로 송신한다(단계(S540)). 데이터 마이그레이션 출발지의 데이터가 이용될 때, 제어 유닛(200)은 이용된 데이터 마이그레이션 출발지 데이터를 데이터 마이그레이션 목적지 저장 유닛(3)으로 라이트 백하고, 데이터 마이그레이션 목적지 데이터 마이그레이션 로그 영역(550)에서 데이터 마이그레이션 로그를 레코딩한다(단계(S541)).
논리 드라이브(2)로부터의 판독
도 65는 판독 요청이 클라이언트(1002)로부터 저장 어레이 디바이스(1003)로 송신될 때에 수행된 제어 유닛(200)의 또 다른 처리 절차를 도시한다. 도 65에서 도시된 처리 절차에서는, 도 64의 단계(S533)에서의 결정이 부정적일 때에 수행된 처리가 단계들(S534 및 S535)로부터 단계들(S550 내지 S554)로 변경된다. 도 65에서, 도 64의 단계(S541)에서의 처리는 삭제된다. cSLOT의 논리 슬롯의 저장 유닛이 데이터 마이그레이팅 상태에 있을 때(단계(S533)), 제어 유닛(200)은 데이터 마이그레이션 목적지 저장 유닛(3)으로부터 데이터 마이그레이션 로그를 판독하고, cSLBA의 데이터가 데이터 마이그레이션 로그에서 포함되는지 여부를 결정한다(단계(S551)). cSLBA의 데이터가 데이터 마이그레이션 로그에서 포함될 때, 제어 유닛(200)은 데이터 마이그레이션 목적지 저장 유닛(3)으로부터 cSLBA의 데이터를 판독하고 판독 데이터를 클라이언트(1002)로 송신한다(단계(S554)). cSLBA의 데이터가 데이터 마이그레이션 로그에서 포함되지 않을 때, 제어 유닛(200)은 데이터 마이그레이션 출발지 저장 유닛으로부터 cSLBA의 데이터를 판독하고 판독 데이터를 클라이언트(1002)로 송신한다(단계(S552)). 제어 유닛(200)은 데이터 마이그레이션 출발지로부터 판독된 데이터를 데이터 마이그레이션 목적지 저장 유닛(3)으로 라이트 백하고 데이터 마이그레이션 목적지 저장 유닛(3)의 로그(550)를 업데이트한다(단계(S553)).
논리 드라이브에서의 기록
도 66은 이 실시형태에서 클라이언트(1002)로부터의 기록 명령에 대한 처리를 설명하기 위한 플로우차트이다. 클라이언트(1002)로부터, 어레이 LBA인 cLBA 및 섹터 길이를 포함하는 기록 명령을 수신할 시에(단계(S560)), 제어 유닛(200)은 클라이언트(1002)로부터 기록 데이터를 수신한다(단계(S561)). 제어 유닛(200)은 cALBA로부터, 데이터가 기록되어야 할 논리 슬롯 번호 cSLOT을 계산하고, cALBA로부터, 데이터가 기록되어야 할 저장 유닛 LBA인 cSLBA를 검색하고, cALBA로부터 cSLBA의 패리티 데이터 저장 목적지의 논리 슬롯 번호 cPSLOT을 계산한다(단계(S562)). 제어 유닛(200)은 모든 슬롯들의 cSLBA의 데이터를 병렬로 판독한다. 고장난 슬롯이 있을 때, 제어 유닛(200)은 고장난 슬롯 이외의 슬롯으로부터 데이터를 판독하고, 고장난 슬롯의 데이터를 복원한다(단계(S563)). 그 후에, 제어 유닛(200)은 본체 데이터 기록 태스크 및 패리티 데이터 태스크를 병렬로 처리한다.
본체 데이터 기록 태스크는 이하에서 설명된 바와 같이 실행된다. 제어 유닛(200)은 cSLOT이 고장 중인지 여부를 결정한다(단계(S564)). cSLOT이 고장 중일 때, 제어 유닛(200)은 데이터를 기록하지 않고 태스크를 종료시킨다. cSLOT이 고장 중이 아닐 때, 제어 유닛(200)은 cSLOT이 데이터 마이그레이팅 상태에 있는지 여부를 결정한다(단계(S565)). cSLOT이 데이터 마이그레이팅 상태에 있지 않을 때, 제어 유닛(200)은 클라이언트(1002)로부터의 수신 데이터를 슬롯 cSLOT의 cSLBA에서 기록한다(단계(S566)). cSLOT이 데이터 마이그레이팅 상태에 있을 때, 제어 유닛(200)은 슬롯 cSLOT에 할당된 데이터 마이그레이션 출발지 저장 유닛 및 데이터 마이그레이션 목적지 저장 유닛 중의 데이터 마이그레이션 목적지 저장 유닛의 cSLBA에서 수신 데이터를 기록한다(단계(S567)). 제어 유닛(200)은 cSLBA 및 섹터 크기를 데이터 마이그레이션 목적지 저장 유닛의 데이터 마이그레이션 로그 영역(550)에서 데이터 마이그레이션 로그로서 레코딩한다(단계(S568)). cSLBA 전후의 연속적인 LBA들 및 중첩하는 LBA들의 데이터 마이그레이션 로그들이 데이터 마이그레이션 로그 영역(550)에서 존재할 때, 제어 유닛(200)은 로그들을 조합함으로써 얻어진 데이터 마이그레이션 로그를 데이터 마이그레이션 로그(550)에서 기록하고, 조합 출발지 데이터 마이그레이션 로그들을 삭제(무효화)한다(단계(S568)).
데이터 마이그레이션 로그(550)로부터의 데이터 마이그레이션 로그의 삭제는 논리적 삭제이기만 하면 된다. 데이터 마이그레이션 로그는 NAND 메모리(16)의 블록 소거에 의해 물리적으로 소거될 필요가 없다. 예를 들어, 로그를 무효화하기 위한 플래그가 데이터 마이그레이션 로그(550)에서 기록되거나 업데이트 후의 데이터 마이그레이션 로그(550)가 업데이트 전의 데이터 마이그레이션 로그(550)와는 상이한 영역에서 저장되고, 데이터 마이그레이션 로그(550)의 저장 위치를 표시하는 포인터가 업데이트됨으로써, 데이터 마이그레이션 로그는 데이터 마이그레이션 로그(550)로부터 논리적으로 삭제된다.
패리티 데이터 기록 태스크는 이하에서 설명된 바와 같이 실행된다. 제어 유닛(200)은 모든 논리 슬롯들로부터 RAID 제어기(1005)에서의 메모리로 판독된 데이터를, 클라이언트(1002)로부터 수신된 기록 데이터로 중첩기록하고 패리티 데이터를 재계산한다(단계(S570)). 제어 유닛(200)은 cPSLOT이 고장 중인지 여부를 결정한다(단계(S571)). cPSLOT이 고장 중일 때, 제어 유닛(200)은 패리티 데이터를 기록하지 않고 태스크를 종료시킨다. cPSLOT이 고장 중이 아닐 때, 제어 유닛(200)은 cPSLOT이 데이터 마이그레이팅 상태에 있는지 여부를 결정한다(단계(S572)). cPSLOT이 데이터 마이그레이팅 상태에 있지 않을 때, 제어 유닛(200)은 슬롯 cPSLOT의 cSLBA에서 패리티 데이터를 기록한다(단계(S573)). cPSLOT이 데이터 마이그레이팅 상태에 있을 때, 제어 유닛(200)은 슬롯 cPSLOT에 할당된 데이터 마이그레이션 출발지 저장 유닛 및 데이터 마이그레이션 목적지 저장 유닛 중의 데이터 마이그레이션 목적지 저장 유닛의 cSLBA에서 패리티 데이터를 기록한다(단계(S574)). 제어 유닛(200)은 cSLBA 및 섹터 크기를 데이터 마이그레이션 목적지 저장 유닛의 데이터 마이그레이션 로그 영역(550)에서 데이터 마이그레이션 로그로서 레코딩한다. cSLBA 전후의 연속적인 LBA들 및 중첩하는 LBA의 데이터 마이그레이션 로그들이 데이터 마이그레이션 로그(550)에서 존재할 때, 제어 유닛(200)은 데이터 마이그레이션 로그들을 조합함으로써 얻어진 데이터 마이그레이션 로그를 데이터 마이그레이션 로그 영역(550)에서 기록하고, 데이터 마이그레이션 로그(550)로부터 조합 출발지 데이터 마이그레이션 로그들을 삭제한다(단계(S575)).
이러한 방법으로, 제어 유닛(200)은 클라이언트로부터의 기록 요청에 응답하여, SLBA의 기록 명령을 데이터 마이그레이팅 상태에 있지 않은 논리 슬롯들 0, 2, 및 3에 할당된 저장 유닛들(2A, 2C, 및 2D)로 송신한다. 다른 한편으로, 데이터 마이그레이션 하의 논리 슬롯 1에 대하여, 제어 유닛(200)은 기록 명령을 데이터 마이그레이션 출발지 저장 유닛(2B)으로 송신하지 않고, 기록 명령을 데이터 마이그레이션 목적지 저장 유닛(3)으로 송신하고, 저장 유닛(3)의 데이터 마이그레이션 로그 영역(550)에서 데이터 마이그레이션 로그를 레코딩한다.
더욱 상세한 예가 도 67에서 도시되어 있다. 도 67에서 도시된 예에서, 논리 슬롯 1이 데이터 마이그레이팅 상태에 있을 때, 저장 유닛(2B)은 데이터 마이그레이션 출발지로서 할당되고, 저장 유닛(3)은 데이터 마이그레이션 목적지로서 할당되고, 논리 슬롯들 0, 2, 및 3이 정상 상태에 있을 때, 저장 어레이 디바이스(1003)의 ALBA=1에서의 D(1) 기록, ALBA=7에서의 D(7) 기록, 및 ALBA=16에서의 D(16) 기록의 요청이 클라이언트(1002)로부터 송신된다.
예 1
클라이언트(1002)로부터 ALBA=1에서의 데이터 D(1)new에 대한 기록 명령을 수신할 시에, 제어 유닛(200)은 ALBA=1로부터 SLBA=0 및 논리 슬롯 1을 특정한다. 논리 슬롯 1이 데이터 마이그레이팅 상태에 있지 않을 때, D(1)new는 저장 유닛(2B)의 SLBA=0에서 기록된다. 그러나, 현재의 예에서는, 논리 슬롯 1이 데이터 마이그레이팅 상태에 있다. 그러므로, 제어 유닛(200)은 저장 유닛(3)에서 D(1)new를 기록한다. 제어 유닛(200)은 위에서 설명된 판독 동작에 기초하여 논리 슬롯 0의 저장 유닛(2A)으로부터 D(0)을 판독하며 논리 슬롯 2의 저장 유닛(2C)으로부터 D(2)를 판독하고, 배타적 OR를 통해 D(0), D(1)new, 및 D(2)로부터 새로운 패리티 데이터 P(0,2)new를 계산하고, 논리 슬롯 3의 저장 유닛(2D)의 SLBA=0에서 P(0,2)new를 저장한다. 처리 속도의 개선을 위해서는, 저장 유닛(3)으로의 D(1)new에 대한 기록 명령, 저장 유닛(2A)으로의 D(0)에 대한 판독 명령, 및 저장 유닛(2C)으로의 D(2)에 대한 판독 명령이 제어 유닛(200)으로부터 병렬로 송신된다. 또한, D(0) 및 D(2)의 판독이 완료되는 시점에서는, D(1)의 기록의 완료를 대기하지 않고, P(0<2)new를 계산하고, 기록 명령을 저장 유닛(2D)으로 송신하는 것이 바람직하다. 제어 유닛(200)은 저장 유닛(3)의 데이터 마이그레이션 로그 영역(550)에서, 저장 유닛(3)에서 기록이 수행되는 SLBA 및 섹터 카운트를 표시하는 (SLBA, 섹터 카운트)를 레코딩한다. 예를 들어, 이 예에서는, 저장 유닛(3)의 SLBA=0으로부터 하나의 섹터의 SLBA 영역에서 기록이 수행된다. 그러므로, (0, 1)은 데이터 마이그레이션 로그 영역(550)에서 추가적으로 기록된다. 위에서 설명된 바와 같이, 연속적인 LBA 영역들 및 중첩하는 LBA 영역들이 데이터 마이그레이션 로그 영역(550)에서 이미 레코딩될 때, LBA 영역들을 병합함으로써 얻어진 SLBA 영역은 데이터 마이그레이션 로그 영역(550)에서 레코딩된다. 데이터 마이그레이팅 상태에 있지 않은 논리 슬롯에서 기록이 수행될 때, 데이터 마이그레이션 로그(550)의 업데이트는 수행되지 않는다.
예 2
클라이언트(1002)로부터 ALBA=7에 대한 새로운 데이터 D(7)new에 대한 기록 명령을 수신할 시에, 제어 유닛(200)은 ALBA=7로부터 SLBA=2 및 논리 슬롯 2을 특정한다. 논리 슬롯 2가 데이터 마이그레이팅 상태에 있지 않을 때, D(7)new는 저장 유닛(2B)의 SLBA=0에서 기록된다. 제어 유닛(200)은 판독 동작에 기초하여 논리 슬롯 0 및 논리 슬롯 3으로부터 D(6) 및 D(8)의 판독을 수행하고, 패리티 데이터 P(6, 8)new를 계산하고, 논리 슬롯 1에서 패리티 데이터 P(6, 8)new를 저장한다. 논리 슬롯 1이 데이터 마이그레이팅 상태에 있으므로, 제어 유닛(200)은 저장 유닛(2B)이 아니라 저장 유닛(3)에서 P(6, 8)new를 기록하고, 저장 유닛(3)의 데이터 마이그레이션 로그 영역(550)에서, 저장 유닛(3)에서 기록이 수행되는 SLBA 및 섹터 카운트를 표시하는 (SLBA, 섹터 카운트)=(2, 1)을 레코딩한다.
예 3
클라이언트(1002)로부터 ALBA=16에 대한 새로운 데이터 D(16)new에 대한 기록 명령을 수신할 시에, 제어 유닛(200)은 ALBA=16으로부터 SLBA=5 및 논리 슬롯 1을 특정한다. 현재의 예에서는, 논리 슬롯 1이 데이터 마이그레이팅 상태에 있으므로, 제어 유닛(200)은 저장 유닛(3)에서 D(16)new를 기록한다. 제어 유닛(200)은 판독 동작에 기초하여 논리 슬롯 0의 저장 유닛(2A)으로부터 D(15)를 판독하며 논리 슬롯 2의 저장 유닛(2D)으로부터 D(17)을 판독하고, 배타적 OR를 통해 D(15), D(16)new, 및 D(17)로부터 새로운 패리티 데이터 P(15, 17)new를 계산하고, 논리 슬롯 2의 저장 유닛(2C)의 SLBA=5에서 P(15, 17)new를 저장한다. 제어 유닛(200)은 저장 유닛(3)의 데이터 마이그레이션 로그 영역(550)에서, 저장 유닛(3)에서 기록이 수행되는 SLBA 및 섹터 카운트를 표시하는 (SLBA, 섹터 카운트)를 레코딩한다. 예를 들어, 이 예에서는, 저장 유닛(3)의 SLBA=5로부터 하나의 섹터의 LBA 영역에서 기록이 수행된다. 그러므로, (5, 1)은 데이터 마이그레이션 로그 영역(550)에서 추가적으로 기록된다. 위에서 설명된 바와 같이, 연속적인 SLBA 영역들 및 중첩하는 SLBA 영역들이 데이터 마이그레이션 로그 영역(550)에서 이미 레코딩될 때, SLBA 영역들을 병합함으로써 얻어진 SLBA 영역은 데이터 마이그레이션 로그 영역(550)에서 레코딩된다. 데이터 마이그레이팅 상태에 있지 않은 슬롯에서 기록이 수행될 때, 데이터 마이그레이션 로그(550)의 업데이트는 수행되지 않는다. 이러한 방법으로, 제 2 실시형태에서와 같이, 기록 요청이 클라이언트(1002)로부터 수신될 때마다, 기록 요청에 대응하는 SLBA의 데이터는 데이터 마이그레이션 출발지 저장 유닛(2B)이 아니라 데이터 마이그레이션 목적지 저장 유닛(3)에서 기록되고, 데이터 마이그레이션 로그는 레코딩된다. 결과적으로, 새로운 데이터 기록 및 데이터 마이그레이팅 동작들을 동시에 수행하는 것이 가능하다.
백그라운드 백업
예를 들어, 명령이 고정된 시간 이상 동안에 클라이언트(1002)로부터 수신되지 않거나 스탠바이 모드 천이 요청이 클라이언트(1002)로부터 수신되는 아이들링 동안에는, 제어 유닛(200)이 저장 유닛(2)으로부터 저장 유닛(3)으로의 백그라운드 백업을 수행한다. 제어 유닛(200)은 저장 유닛(3)의 데이터 마이그레이션 로그 영역(550)을 판독하고, 저장 유닛(2B)으로부터 데이터 마이그레이션 로그 영역(550)에서 레코딩되지 않은 SLBA로의 판독을 수행하고, 저장 유닛(3)에서 데이터를 기록하고, 저장 유닛(3)의 데이터 마이그레이션 로그 영역(550)에서 SLBA 및 기록 데이터의 섹터 크기를 저장하여, 백그라운드 백업을 수행한다. 데이터 마이그레이션 로그(550)에서의 SLBA의 저장에서, 연속적인 SLBA 영역들이 존재할 때, 또는 중첩되는 SLBA 영역들이 존재할 때에는, SLBA 영역들을 병합함으로써 얻어진 SLBA 영역이 데이터 마이그레이션 로그(550)에서 저장되고, 병합 전의 SLBA 영역들이 데이터 마이그레이션 로그 영역(550)으로부터 삭제되는 것이 바람직하다.
데이터 마이그레이션 로그 영역(550)에서 저장된 데이터 마이그레이션 로그의 데이터 크기를 감소시키고 이하에서 설명된 데이터 마이그레이션 종료 결정을 높은 속도로 수행하기 위해서는, 데이터 마이그레이션 로그(550)에서 등록된 SLBA 영역 이외의 SLBA 영역들 중에서 마이그레이팅되지 않은 단편화된 SLBA 영역들에 대해, 백그라운드 백업이 우선적으로 수행되는 것이 바람직하다. 제어 프로그램(200)은 마이그레이팅되지 않은 단편화된 SLBA 영역을 백업하고, 마이그레이팅되지 않은 단편화된 SLBA 영역이 데이터 마이그레이션을 거치게 함으로써, 새롭게 마이그레이팅된 SLBA 영역을, 새롭게 마이그레이팅된 SLBA 영역 전후에 연속적으로 위치된 마이그레이팅된 SLBA 영역들과 병합함으로써 형성된 SLBA 영역으로서, 새롭게 마이그레이팅된 SLBA 영역을 데이터 마이그레이션 로그(550)에서 저장한다.
데이터 마이그레이션 상태의 모니터링
제어 유닛(200)은 데이터 마이그레이션 로그 영역(550)을 판독하여, 데이터 마이그레이션 하의 논리 슬롯의 데이터 마이그레이션 상태를 모니터링한다. 도 68은 데이터 마이그레이션 로그를 이용하여 데이터 마이그레이션 상태를 모니터링하기 위한 모니터링 절차를 도시한다. 예를 들어, 제어 유닛(200)은 미리 결정된 시간이 경과할 때마다 데이터 마이그레이션 로그 영역(550)으로부터 데이터 마이그레이션 로그를 판독한다(단계들(S600 및 S601)). 모든 마이그레이션 대상 SLBA들이 데이터 마이그레이션 로그(550) 내에 포함될 때, 제어 유닛(200)은 데이터 마이그레이션이 완료된 것으로 결정한다. 예를 들어, 데이터 마이그레이션 출발지 저장 유닛(2B)의 모든 SLBA들이 데이터 마이그레이션 로그(550) 내에 포함될 때에는, 제어 유닛(200)이 데이터 마이그레이션이 완료된 것으로 결정한다(단계(S602)). 데이터 마이그레이션의 완료의 결정으로서, 예를 들어, 제어 유닛(200)은 데이터 마이그레이션 목적지 저장 유닛(3)의 모든 SLBA들이 데이터 마이그레이션 로그(550) 내에 포함되는지 여부를 결정할 수 있다.
제어 유닛(200)이 데이터 마이그레이션이 완료된 것으로 결정할 때, 제어 유닛(200)은 데이터 마이그레이션 출발지 저장 유닛(2)의 스테이터스를 5의 폐기 대상 상태로 변경하고, 데이터 마이그레이션 목적지 저장 유닛(3)의 스테이터스를 1의 정상 상태로 변경하여(단계(S603)), 논리 슬롯 1의 데이터 마이그레이팅 상태를 종료시키고 논리 슬롯 1에 대한 데이터 마이그레이션 상태 모니터링을 종료시킨다. 저장 유닛(2B)의 전력 소비를 감소시키는 측면에서는, 제어 유닛(200)이 저전력 소비 모드로의 천이 요청을 저장 유닛(2)으로 송신하는 것이 바람직하다. 데이터 마이그레이팅 상태의 종료 후에, 제어 유닛(200)은 디스플레이(9) 또는 포트 근처에 설정된 LED를 통해, 인터페이스 (19) 로부터 저장 유닛 (2B) 을 탈착할 것을 사용자 또는 관리자에게 통지하거나, 인터페이스 (19) 로부터 저장 유닛 (2B) 을 탈착하도록 저장장치 로딩/언로딩 장치를 제어하는 것이 바람직하다.
전체 스테이터스들의 천이
도 69는 저장 유닛(2B)이 수명 종료에 도달하였을 때에 발생하는 저장 유닛들의 스테이터스들의 천이를 도시한다. 모든 저장 유닛들(2A 내지 2D)이 정상 상태에 있을 때, 모든 저장 유닛들(2A 내지 2D)의 스테이터스들은 1이고, 저장 유닛(3)은 저장 인터페이스(1007)에 접속되지 않는다(단계 1). 제어 유닛(200)이 저장 유닛(2B)이 수명 종료에 도달한 것으로 결정할 때, 제어 유닛(200)은 저장 유닛(2B)의 스테이터스를 2로 변경한다(단계 2). 새로운 저장 유닛인 저장 유닛(3)은 제어 유닛(200)으로부터의 통지 또는 명령에 기초하여 저장 인터페이스(1007)에 접속된다(단계 3). 저장 유닛(3)이 접속될 때, 제어 유닛(200)은 데이터 마이그레이션 출발지 저장 유닛(2B)의 스테이터스를 3으로 변경하고 데이터 마이그레이션 목적지 저장 유닛(3)의 스테이터스를 4로 변경하여, 논리 슬롯 1의 상태를 데이터 마이그레이팅 상태로 시프트한다(단계 4). 제어 유닛(200)이 데이터 마이그레이션 로그 영역(550)으로부터 판독된 정보에 기초하여, 저장 유닛(2B)의 모든 유효한 데이터가 저장 유닛(3)으로 마이그레이팅되는 것으로 결정할 때, 제어 유닛(200)은 저장 유닛(2B)의 스테이터스를 5로 변경하고 저장 유닛(3)의 스테이터스를 1로 변경한다. 그 후에, 저장 유닛(2A), 저장 유닛(3), 저장 유닛(2C), 및 저장 유닛(2D)은 저장 유닛(2A), 저장 유닛(3), 저장 유닛(2C), 및 저장 유닛(2D)이 원래의 저장 유닛(2A), 원래의 저장 유닛(2B), 원래의 저장 유닛(2C), 및 원래의 저장 유닛(2D)인 것처럼 거동한다(처리가 단계 1로 복귀함). 그 후에, 저장 유닛(2A), 저장 유닛(3), 저장 유닛(2C), 및 저장 유닛(2D) 중의 임의의 하나가 수명 종료에 도달한 것으로 추가로 결정될 때, 동일한 단계들 2 내지 5가 반복된다. 이러한 방법으로, 저장 어레이 디바이스(1003)의 저장 유닛들 중의 임의의 하나가 수명 종료에 도달하였거나, 수명 종료에 막 도달하거나, 막 고장날려고 할 때에도, 이 실시형태에 따라, 저장 유닛의 데이터를 새로운 저장 유닛으로 용이하게 마이그레이팅하는 것이 가능하다. 이 실시형태에서는, 데이터 마이그레이팅 동작이 백그라운드에서 수행되므로, 백업 동작으로 인한 성능 열화를 억제하는 것이 가능하다.
하나의 저장 유닛의 데이터 마이그레이팅 상태 및 또 다른 저장 유닛의 고장이 동시에 발생함
도 70에서 도시된 예에서는, 하나의 저장 유닛의 데이터 마이그레이팅 상태 및 또 다른 저장 유닛의 고장이 동시에 발생한다. 도 70에서 도시된 예에서, 논리 슬롯 1이 데이터 마이그레이팅 상태에 있고, 저장 유닛(2B)이 데이터 마이그레이션 출발지로서 할당되고, 저장 유닛(3)이 데이터 마이그레이션 목적지로서 할당되고, 논리 슬롯들 0, 2, 및 3이 정상 상태에 있을 때, 논리 슬롯 3의 저장 유닛(2D)에서 고장이 발생한다.
SLBA=0으로부터의 판독의 경우, 논리 슬롯 0의 D(0) 및 논리 슬롯 2의 D(2)의 판독을 위해서는 데이터 복원이 불필요하다. 논리 슬롯 1의 D(1)의 판독은 데이터 마이그레이션 목적지 저장 유닛(3)으로부터 최신 데이터인 D(1)new를 판독함으로써 실현될 수 있다. SLBA=2로부터의 판독의 경우, 논리 슬롯 0의 D(6) 및 논리 슬롯 2의 D(7)의 판독을 위해서는 데이터 복원이 불필요하다. 논리 슬롯 3의 D(8)의 판독은 데이터 마이그레이션 목적지 저장 유닛(3)으로부터의 D(6) 및 D(7) 및 P(6, 8)new를 배타적 OR하여 데이터를 복원함으로써 실현될 수 있다. SLBA=5로부터의 판독의 경우, 논리 슬롯 0의 D(15)의 판독을 위해서는 데이터 복원이 불필요하다. 논리 슬롯 1의 D(16)의 판독은 데이터 마이그레이션 목적지 저장 유닛(3)으로부터 최신 데이터인 D(16)new를 판독함으로써 실현될 수 있다. 논리 슬롯 3의 D(17)의 판독은 D(15), 데이터 마이그레이션 목적지 저장 유닛(3)의 D(16)new, 및 논리 슬롯 2의 P(15, 17)new를 배타적 OR하여 데이터를 복원함으로써 실현될 수 있다.
2 개의 저장 유닛들의 데이터 마이그레이팅 상태들 및 하나의 저장 유닛의 고장이 동시에 발생함
도 71에서 도시된 예에서는, 2 개의 저장 유닛들의 데이터 마이그레이팅 상태들 및 또 다른 저장 유닛의 고장이 동시에 발생한다. 도 71에서 도시된 예에서는, 논리 슬롯 1 및 논리 슬롯 2가 데이터 마이그레이팅 상태에 있고, 저장 유닛들(2B 및 2C)이 데이터 마이그레이션 출발지들로서 할당되고, 저장 유닛들(3B 및 3C)이 데이터 마이그레이션 목적지들로서 할당되고, 논리 슬롯들 0 및 3이 정상 상태에 있을 때, 논리 슬롯 3의 저장 유닛(2D)에서 고장이 발생한다.
SLBA=0으로부터의 판독의 경우, 논리 슬롯 0의 D(0) 및 논리 슬롯 2의 D(2)의 판독을 위해 데이터 복원이 불필요하고, 논리 슬롯 1의 D(1)의 판독은 데이터 마이그레이션 목적지 저장 유닛(3B),으로부터 D(1)new를 판독함으로써 실현될 수 있다. SLBA=2로부터의 판독의 경우, 논리 슬롯 0의 D(6)의 판독을 위해서는 데이터 복원이 불필요하다. 논리 슬롯 2의 D(7)의 판독은 데이터 마이그레이션 목적지 저장 유닛(3C)으로부터 최신 데이터인 D(7)new를 판독함으로써 실현될 수 있다. 논리 슬롯 3의 D(8)의 판독은 D(6) 및 D(7)new 및 P(6, 8)new를 배타적 OR하여 데이터를 복원함으로써 실현될 수 있다. SLBA=5로부터의 판독의 경우, 논리 슬롯 0의 D(15)의 판독을 위해서는 데이터 복원이 불필요하다. 논리 슬롯 1의 D(16)의 판독은 데이터 마이그레이션 목적지 저장 유닛(3B)으로부터 최신 데이터인 D(16)new를 판독함으로써 실현될 수 있다. 논리 슬롯 3의 D(17)의 판독은 D(15), 데이터 마이그레이션 목적지 저장 유닛(3B)의 D(16)new, 및 논리 슬롯 2의 데이터 마이그레이션 목적지 저장 유닛(3C)의 P(15, 17)new를 배타적 OR하여 데이터를 복원함으로써 실현될 수 있다.
하나의 저장 유닛의 데이터 마이그레이팅 상태 및 데이터 판독 불가능 에러가 동시에 발생함
도 72에서 도시된 예에서는, 정정불가능한 ECC 에러(uncorrectable ECC error; UECC error)와 같은 판독 에러가 데이터 마이그레이션 동안에 하나의 저장 유닛에서 발생한다.
예 1
ALBA=2에 대하여 데이터 D(2)에 대한 판독 명령을 수신할 시에, 제어 유닛(200)은 ALBA=2로부터 SLBA=0 및 논리 유닛 2를 특정한다. UECC 에러가 논리 슬롯 2의 저장 유닛(2C)로부터의 데이터 D(2)의 판독 시에 발생할 때, D(2)는 데이터 마이그레이션 목적지 저장 유닛(3)의 D(1)new 및 논리 슬롯 3의 P(0, 2)new를 배타적 OR하여 복원될 수 있다.
예 2
클라이언트(1002)로부터 ALBA=8에 대한 새로운 데이터 D(8)에 대한 판독 명령을 수신할 시에, 제어 유닛(200)은 ALBA=8로부터 SLBA=2 및 논리 슬롯 3을 특정한다. UECC 에러가 논리 슬롯 3의 저장 유닛(2D)로부터의 데이터 D(8)의 판독 시에 발생할 때, D(8)는 D(6), D(7)new, 및 저장 유닛(3)의 P(6, 8)new를 배타적 OR하여 복원될 수 있다.
예 3
클라이언트(1002)로부터 ALBA=9에 대하여 새로운 데이터 D(9)에 대한 판독 명령을 수신할 시에, 제어 유닛(200)은 ALBA=9로부터 SLBA=3 및 논리 슬롯 1을 특정한다. UECC 에러가 논리 슬롯 1의 저장 유닛(2B)로부터의 데이터 D(9)의 판독 시에 발생할 때, D(9)는 D(10), D(11), 및 P(9, 10)를 배타적 OR하여 복원될 수 있다.
(제 4 실시형태)
제 4 실시형태에서, 본 발명은 저장 네트워크를 포함하는 정보 처리 시스템(1)에 적용된다. 이 실시형태에서, 정보 처리 시스템(1)은 도 73에서 도시된 바와 같이 구성된다. 정보 처리 시스템(1)은 도 74에서 도시된 바와 같이 구성될 수 있다. 도 73에서 도시된 바와 같이, 이 실시형태에서의 정보 처리 시스템(1)은 저장 유닛(2), 저장 유닛(3), 하나 또는 복수의 다른 저장 유닛들(6004), 하나 또는 복수의 메타데이터 서버들(6003), 서버(6001)와, 저장 유닛(2), 저장 유닛(3), 저장 유닛(6004), 메타데이터 서버(6003), 및 서버(6001)를 서로 접속하도록 구성된 저장 네트워크(1000), 하나 또는 복수의 클라이언트들(6002), 그리고 서버(6001) 및 클라이언트(6002)를 서로 접속하도록 구성된 네트워크(6000)를 포함한다. 도 74의 경우, 저장 네트워크(1000)는 채널 확장기 및 WAN과 같은 장거리 네트워크를 통해 저장 네트워크(6001b)에 접속된다. 저장 유닛(3)은 저장 네트워크(6001b)에 접속된다.
저장 유닛들(2 및 3)은 스테이터스 관리 영역들(510)을 포함한다. 저장 유닛들(2 및 3)은 제 1 실시형태에서의 데이터 마이그레이션 대상 관리 영역들과 동일한 데이터 마이그레이션 대상 관리 영역들(2007 및 3007)(도 32 참조)을 포함할 수 있거나, 제 2 실시형태에서의 논리 드라이브 ID 관리 영역들과 동일한 논리 드라이브 ID 관리 영역들(520)을 포함할 수 있다. 위에서 설명된 바와 같이, 스테이터스 관리 영역들(510)은 그것에 대응하는 저장 유닛들이 다음의 상태들에 있음을 각각 표시한다:
0: 초기 저장 상태
1: 정상 상태
2 : 낮은 신뢰성 상태
3 : 데이터 마이그레이션 출발지 상태(보호된 상태)
4: 데이터 마이그레이션 목적지 상태
5: 폐기 대상 상태
메타데이터 서버(6003)는 제 1 실시형태에서의 것들과 동일한 OS(100), 제어 유닛(200), 메타데이터(300), 및 논리 드라이브 스테이터스 테이블(450)을 저장하도록 구성된 주 메모리(6)와, OS(100) 및 제어 유닛(200)을 실행하도록 구성된 산술 유닛인 CPU(5)를 포함한다. 메타데이터 서버(6003)는 제 1 실시형태에서의 정보 처리 디바이스(111)의 OS(100) 및 제어 유닛(200)과 동등한 기능들을 행한다. 메타데이터 서버(6003)의 주 메모리(6)에서 저장된 메타데이터(300)는 예를 들어, 도 33에서 도시된 구조를 가진다. 주 메모리(6) 상의 메타데이터 및 메타데이터의 저널은 메타데이터 서버(6003)에서의 비휘발성 저장 유닛, 저장 네트워크(1000)에서의 비휘발성 저장 유닛, 저장 유닛(2), 저장 유닛(3) 등에서 백업된다. 논리 드라이브 스테이터스 테이블(450)은 예를 들어, 도 40에서 도시된 구조를 가진다. 논리 드라이브 스테이터스 테이블(450)은 논리 드라이브가 정상 상태 또는 데이터 마이그레이팅 상태에 있음을 표시한다. 예를 들어, 서버(6001)로부터 파일 ID를 수신할 시에, 메타데이터 서버(6003)는 메타데이터 영역(300)으로부터 파일 ID를 검색하고, 논리 드라이브 어드레스, 저장 유닛 어드레스인 저장 유닛 식별 명칭, LBA, 섹터 카운트 등을 특정한다. 저장 유닛 어드레스인 저장 유닛 식별 명칭으로서, 예를 들어, 인터넷 프로토콜(Internet Protocol; IP) 어드레스, 매체 액세스 제어(Media Access Control; MAC) 어드레스, 또는 월드 와이드 네임(World Wide Name: WWN)이 이용될 수 있다. 스테이터스 테이블(510)은 저장 네트워크(1000)에 접속된 저장 유닛들(2 및 3)의 스테이터스들을 저장한다.
논리 드라이브 스테이터스 테이블(450)은 도 41에서 도시된 바와 같이 구성될 수 있다. 도 75에서 도시된 스테이터스 테이블(650)은 메타데이터 서버(6003)의 주 메모리(6)에서 저장될 수 있다. 논리 드라이브 스테이터스 테이블(450)은 주 메모리(6)에서 저장될 필요가 없다. 스테이터스 테이블(650)에서는, 논리 드라이브 어드레스, 저장 유닛 식별 명칭, 논리 드라이브 스테이터스, 및 저장 스테이터스가 관리된다. 스테이터스 테이블(650)은 논리 드라이브 스테이터스 테이블(450) 및 스테이터스 관리 영역들(510) 대신에 이용된다. 다음으로, 저장 유닛들(2 및 3)에서의 스테이터스 관리 영역들은 불필요하다. 도 75에서, 논리 드라이브 어드레스 B는 저장 유닛 식별 명칭들이 b1 및 b2인 2 개의 저장 유닛들을 포함한다. 저장 유닛들은 데이터 마이그레이팅 상태에 있다. 저장 유닛 식별 명칭 b1을 가지는 저장 유닛은 데이터 마이그레이션 출발지이다. 저장 유닛 식별 명칭 b2를 가지는 저장 유닛은 데이터 마이그레이션 목적지이다.
저장 네트워크(1000)는 저장 액세스를 위한 네트워크이다. 예를 들어, Fibre Channel 또는 Ethernet(등록 상표)이 이용된다. 특히, 저장 네트워크(1000)로서, 예를 들어, 저장 영역 네트워크(Storage Area Network; SAN) 또는 네트워크 연결 저장장치(Network Attached Storage; NAS)가 이용된다. SAN으로서, 예를 들어, 파이버 채널 저장 영역 네트워크(Fibre Channel Storage Area Network; FC-SAN) 또는 인터넷 프로토콜 저장 영역 네트워크(Internet Protocol Storage Area Network; IP-SAN)가 이용된다. SAN의 상위 계층 프로토콜로서, 예를 들어, 소형 컴퓨터 시스템 인터페이스(Small Computer System Interface; SCSI)가 이용된다. 이 실시형태에서 설명된 예에서, iSCSI는 상위 계층 프로토콜로서 이용된다. 저장 네트워크(1000)는 네트워크 스위치(6009) 및 허브(도면에서 도시되지 않음)를 포함한다.
네트워크(6000)는 클라이언트가 서버(6001)를 액세스하고 다양한 서비스들을 이용하도록 하기 위한 네트워크이다. 예를 들어, Fibre Channel 또는 Ethernet(등록 상표)이 네트워크(6000)로서 이용된다. 예를 들어, 네트워크(6000)로서, WAN, LAN 등이 있다. 네트워크(6000)는 네트워크 스위치(도면에서 도시되지 않음) 및 허브(도면에서 도시되지 않음)를 포함한다.
클라이언트(1002)는 네트워크(6000)에 접속되며 희망하는 처리를 수행하도록 구성된 컴퓨터이다. 클라이언트(1002)는 전형적으로 처리기, 주 메모리, 통신 인터페이스 및 로컬 입력/출력 디바이스와 같은 하드웨어 자원들을 포함한다. 또한, 클라이언트(1002)는 디바이스 드라이버, 오퍼레이팅 시스템(OS), 및 애플리케이션 프로그램(400)(도면에서 도시되지 않음)과 같은 소프트웨어 자원들을 포함한다. 결과적으로, 클라이언트(1002)는 처리기에 의한 제어 하에 다양한 프로그램들을 실행하고, 하드웨어 자원들과 협력하여 처리를 실현한다. 예를 들어, 클라이언트(1002)는 처리기에 의한 제어 하에서 업무 애플리케이션 프로그램을 실행함으로써, 네트워크(6000)를 통해 서버(6001)를 I/O 액세스하고 희망하는 업무 시스템을 실현한다.
서버(6001)는 저장 네트워크(1000) 및 네트워크(6000)에 접속되며 클라이언트(1002)로부터의 요청에 따라 희망하는 처리를 수행하도록 구성된 컴퓨터이다. 서버(6001)는 전형적으로 처리기, 주 메모리, 통신 인터페이스 및 로컬 입력/출력 디바이스와 같은 하드웨어 자원들을 포함한다. 또한, 서버(6000)는 디바이스 드라이버, 오퍼레이팅 시스템(OS), 및 애플리케이션 프로그램(도면에서 도시되지 않음)과 같은 소프트웨어 자원들을 포함한다. 결과적으로, 서버(6001)는 처리기에 의한 제어 하에 다양한 프로그램들을 실행하고, 하드웨어 자원들과 협력하여 처리를 실현한다. 예를 들어, 서버(6001)는 클라이언트(1002)로부터의 요청에 응답하여 처리기에 의한 제어 하에서 애플리케이션 서비스 프로그램을 실행함으로써, 저장 네트워크(6000)를 통해 저장 유닛(2), 저장 유닛(3), 또는 저장 유닛(6004)을 I/O 액세스하고 희망하는 애플리케이션 서비스 프로그램을 실현한다.
예를 들어, 클라이언트(6002)로부터 파일 데이터 판독 요청 및 파일 ID를 수신할 시에, 서버(6001)는 파일 ID를 메타데이터 서버(6003)로 송신하고, 메타데이터 서버(6003)로부터의 파일이 저장되는 저장 유닛의 LBA와, IP 어드레스, MAC 어드레스, 또는 WWN과 같은 저장 유닛 어드레스를 수신하고, 저장 유닛 어드레스를 지정하는 패킷을 저장 네트워크(1000)로 송신하여 판독 명령을 저장 유닛으로 송신하고, 저장 유닛으로부터 판독 데이터를 수신하고, 판독 데이터를 클라이언트(1002)로 송신한다. 예를 들어, 클라이언트(1002)로부터 파일 데이터 기록 요청 및 파일 ID를 수신할 시에, 서버(6001)는 파일 ID를 메타데이터 서버(6003)로 송신하고, 메타데이터 서버(6003)로부터의 파일이 저장되어야 하는 저장 유닛의 저장 유닛 어드레스 및 LBA를 수신하고, 클라이언트(6002)로부터 기록 데이터를 수신하고, 데이터를 저장 유닛으로 송신하여 데이터를 기록한다. 서버(6001)는 데이터베이스 관리 시스템(DBMS)이 동작하고 있는 서버인 데이터베이스 서버(DB 서버)일 수 있다.
수명 종료를 결정하기 위한 처리
시작될 때, 제어 유닛(200)은 저장 유닛(2)에 관하여 통계 정보(65)와 같은 신뢰성 정보를 모니터링한다. 예를 들어, 도 24에서 도시된 바와 같이, 제어 유닛(200)은 매 고정된 시간(예컨대, 매 1 분)에서 또는 각각의 고정된 횟수의 처리에서 저장 유닛(2)으로부터 통계 정보(65)를 취득한다. 제 1 실시형태에서와 같이, 제어 유닛(200)은 취득된 신뢰성 정보에 기초하여, 저장 유닛(2)이 수명 종료에 도달하였는지 여부를 결정한다. 제어 유닛(200)이 저장 유닛(2)이 수명 종료에 도달한 것으로 결정할 때, 제어 유닛(200)은 이하에서 설명된 수명 종료 처리를 실행한다.
수명 종료 처리
접속된 저장 유닛(2)이 수명 종료에 도달하였거나 수명 종료에 막 도달하고 수명 종료 처리가 시작될 때, 저장 유닛(2)의 스테이터스(510)를 저장 스테이터스=2(낮은 신뢰성 상태)로 변경한 후에는, 제어 유닛(200)이 새로운 저장 유닛의 접속을 촉구하기 위한 메시지를 메타데이터 서버(6003), 서버(6001), 및 클라이언트(6002)의 디스플레이(9) 등의 상에서 디스플레이한다. 새로운 저장 유닛(3)이 접속될 때, 제어 유닛(200)은 스테이터스 테이블(450)의 저장 유닛(3)의 스테이터스(510)를 저장 스테이터스=4(데이터 마이그레이션 목적지 상태)로 재기록하고, 또한, 저장 유닛(2)의 스테이터스(510)를 저장 스테이터스=3(보호된 상태)로 재기록한다. 제어 유닛(200)은 OS(100)로 하여금 저장 유닛(2) 및 저장 유닛(3)을 하나의 논리 드라이브(4)로서 인식하게 한다. 제어 유닛(200)은 주 메모리(6) 상의 논리 드라이브 스테이터스 테이블(450) 또는 스테이터스 테이블(650)에서 저장된 논리 드라이브(4)의 스테이터스를 "정상 상태"로부터 "데이터 마이그레이팅 상태"로 재기록한다.
데이터 마이그레이팅 상태에서의 논리 드라이브로부터의 판독
클라이언트(6002)로부터 판독 요청 및 파일 ID를 수신할 시에, 서버(6001)는 파일 ID를 메타데이터 서버(6003)로 송신한다. 메타데이터 서버(6003)는 메타데이터(300)로부터 파일 ID에 대응하는 논리 드라이브(4)를 특정하고, 주 메모리(6)로부터 논리 드라이브 스테이터스 테이블(450) 및 스테이터스 테이블(650)을 판독하고, 특정된 논리 드라이브(4)의 스테이터스가 데이터 마이그레이팅 상태인 것을 인식한다. 메타데이터 서버(6003)는 메타데이터(300)로부터, 파일 ID에 의해 지정된 파일이 저장되는 저장 유닛(2 또는 3)의 저장 유닛 어드레스 및 LBA를 취득하고, 취득된 저장 유닛 어드레스 및 취득된 LBA를 서버(6001)로 송신한다. 서버(6001)는 수신된 저장 유닛 어드레스 및 수신된 LBA를 지정하는 패킷을 저장 네트워크(1000)로 송신하여 판독 명령을 저장 유닛(2 또는 3)으로 송신하고, 저장 유닛으로부터 판독 데이터를 수신하고, 판독 데이터를 클라이언트(1002)로 송신한다.
논리 드라이브에서의 기록
예를 들어, 클라이언트(1002)로부터 파일 데이터 기록 요청 및 파일 ID를 수신할 시에, 서버(6001)는 파일 ID를 메타데이터 서버(6003)로 송신한다. 메타데이터 서버(6003)는 논리 드라이브 스테이터스 테이블(450) 또는 스테이터스 테이블(650)로부터 논리 드라이브(4)의 스테이터스를 결정하고, 논리 드라이브(4)를 정상 상태에 있는 것으로서 인식한다. 다음으로, 메타데이터 서버(6003)는 주 메모리(6)로부터 메타데이터(300)를 판독하고, 메타데이터(300)를 참조하여 데이터 기록을 위한 LBA를 할당한다. 메타데이터 서버(6003)는 LBA와, 저장 유닛(2)의 저장 유닛 어드레스 및 LBA를 서버(6001)로 송신한다. 서버(6001)는 수신된 저장 유닛 어드레스 및 수신된 LBA를 지정하는 패킷을 저장 네트워크(1000)로 송신하여 기록 명령을 저장 유닛(2)으로 송신하고, 저장 유닛(2)에서 기록 데이터를 저장한다. 제어 유닛(200)은 메타데이터(300)를 재기록하고, 기록 데이터의 LBA 및 섹터 카운트를 저장 유닛(2) 및 기록 파일 ID에 맵핑한다.
제어 유닛(200)이 논리 드라이브(4)를 데이터 마이그레이팅 상태에 있는 것으로 인식할 때, 제어 유닛(200)은 주 메모리(6)로부터 메타데이터(300)를 판독하고, 메타데이터(300)를 참조하여 데이터 기록을 위한 LBA를 할당한다. 메타데이터 서버(6003)는 LBA와, 저장 유닛(3)의 저장 유닛 어드레스 및 LBA를 서버(6001)로 송신한다. 서버(6001)는 저장 유닛(3)의 수신된 저장 유닛 어드레스 및 수신된 LBA를 지정하는 기록 요청 패킷을 저장 네트워크(1000)로 송신하여 기록 명령을 저장 유닛(3)으로 송신하고, 저장 유닛(3)에서 기록 데이터를 저장한다. 제어 유닛(200)은 메타데이터(300)를 업데이트하고, 파일 ID로부터 저장 유닛(2)으로의 맵핑들을 무효화하고, 파일 ID를 저장 유닛(3), 기록된 LBA 및 섹터 카운트에 맵핑하여, 저장 유닛(3)에서의 기록을 이용하여 저장 유닛(2)으로부터 저장 유닛(3)으로의 데이터 마이그레이션을 실현한다.
백그라운드 백업
논리 드라이브(4)가 논리 드라이브 스테이터스 테이블(450)에서 데이터 마이그레이팅 상태의 스테이터스에 있을 때, 제어 유닛(200)은 클라이언트(6002)에 의한 논리 드라이브(4)에 대한 액세스가 (아이들링 동안에) 거의 발생하지 않을 때에 데이터 마이그레이션 출발지 저장 유닛(2)으로부터 데이터 마이그레이션 목적지 저장 유닛(3)으로의 백그라운드 백업을 수행할 수 있다. 제어 유닛(200)은 주 메모리(6)로부터 메타데이터(300)를 판독하고, 저장 유닛(2)에 맵핑된 파일 ID를 검색한다. 저장 유닛(2)에 맵핑된 파일이 존재할 경우, 제어 유닛(200)은 서버(6001)를 통해 판독 명령을 저장 유닛(2)으로 송신하여 파일의 LBA로부터의 판독을 수행하고, 판독 데이터를 수신한다. 제어 유닛(200)은 기록 명령 및 판독 데이터를 저장 유닛(3)의 LBA로 송신하고, 기록을 수행하고, 주 메모리(6) 상의 메타데이터(300)를 재기록하고, 파일 ID로부터 저장 유닛(2)으로의 맵핑들을 무효화하고, 파일 ID를 저장 유닛(3)으로 맵핑한다.
서버-프리(server-free) 백업(무서버 백업(server-less backup))은 제어 유닛(200)의 백그라운드 백업 동작으로서 채택될 수 있다. 그 경우, 예를 들어, 확장된 복사 명령이 이용될 수 있다. 확장된 복사 명령으로서, 예를 들어, SCSI Primary Commands-4 (SPC-4), INCITS T10/1731-D, Revision 36e(http://www.t10.org/)에서 설명된 83h EXTENDED COPY 명령이 이용될 수 있다. 제어 유닛(200)은 백업 대상 LBA 및 저장 유닛(3)의 어드레스를 포함하는 확장된 복사 명령을 저장 유닛(2)으로 송신한다. 다음으로, 저장 유닛(2)은 LBA로부터 데이터를 판독하고, 판독 데이터를 저장 유닛(3)으로 송신한다. 저장 유닛(3)은 LBA에서 수신 데이터를 기록한다.
데이터 마이그레이션 완료 시간
논리 드라이브 스테이터스 테이블(450)에서는, 논리 드라이브(4)의 스테이터스가 "데이터 마이그레이팅 상태"일 때, 제어 유닛(200)은 주 메모리(6) 상의 메타데이터(300)를 주기적으로 판독하고, 저장 유닛(2)에 맵핑된 마이그레이션 대상 파일 ID가 존재하는지 여부를 주기적으로 검사한다. 예를 들어, 제어 유닛(200)은 저장 유닛(2)에 맵핑된 마이그레이션 대상 파일 ID가 논리 드라이브(4)에서 저장된 모든 파일들의 파일 ID들 중에서 존재하는지 여부를 주기적으로 검사한다. 마이그레이션 대상 파일 ID가 존재하지 않을 때, 제어 유닛(200)은 데이터 마이그레이션 목적지 저장 유닛(3)의 스테이터스(510)를 저장 스테이터스=1(정상 상태)로 재기록하고, 데이터 마이그레이션 출발지 저장 유닛(2)의 스테이터스(510)를 저장 스테이터스=5(폐기 대상 상태)로 재기록한다. 제어 유닛(200)은 저장 유닛(2)을 논리 드라이브(4)로부터 분리하고, 저장 유닛(3)을 논리 드라이브(4)로서 인식하고, 논리 드라이브 스테이터스 테이블(450) 또는 스테이터스 테이블(450)에서의 논리 드라이브(4)의 스테이터스를 "데이터 마이그레이팅 상태"로부터 "정상 상태"로 재기록한다.
위에서 설명된 바와 같이, 데이터 마이그레이팅 상태에서는, 논리 드라이브(4)에서의 데이터 기록 시에, 기록 명령이 데이터 마이그레이션 출발지 저장 유닛(2)으로 송신되지 않고, 데이터 마이그레이션 목적지 저장 유닛(3)으로 송신된다. 논리 드라이브(4)로부터의 데이터 판독은 저장 유닛(2 또는 3)으로부터 실행된다. 논리 드라이브(4)에서는, 기록 요청이 클라이언트(6002)로부터 수신될 때마다, 저장 유닛(2)에서 저장된 유효한 데이터가 점차적으로 저장 유닛(3)으로 마이그레이팅된다. 새로운 데이터 기록 동작은 또한 데이터 마이그레이팅 동작으로서 작용한다.
(제 5 실시형태)
제 5 실시형태에서, 본 발명은 복수의 데이터 센터(data center; DC)들 및 데이터 센터(DC)들을 접속하도록 구성된 장거리 네트워크를 포함하는 정보 처리 시스템(1)에 적용된다. 이 실시형태에서, 정보 처리 시스템(1)은 도 76에서 도시된 바와 같이 구성된다. 이 실시형태에서, 정보 처리 시스템(1)은 데이터 마이그레이션 출발지 데이터 센터(3002)(저장 유닛(3002)), 데이터 마이그레이션 목적지 데이터 센터(3003)(저장 유닛(3003)), 또 다른 데이터 센터인 데이터 센터(3005), 서버(3006), 데이터 센터 관리 서버(3007), 및 디바이스들을 접속하도록 구성된 장거리 네트워크(300)를 포함한다. 이 실시형태에서, 데이터 센터 관리 서버(3007)는 데이터 센터(3002)를 논리 유닛으로서 기능하는 논리 데이터 센터(3004)로서 인식한다. 데이터 센터(3002)가 신뢰성에 있어서 열화될 때, 데이터 센터 관리 서버(3007)는 데이터 센터(3002) 및 데이터 센터(3003)를 논리 데이터 센터(3004)로서 인식한다.
데이터 센터들(3002 및 3003)은 스테이터스 관리 영역들(510)을 포함한다. 저장 유닛들(3002 및 3003)은 제 1 실시형태에서의 데이터 마이그레이션 대상 관리 영역들(2007 및 3007)(도 32 참조)에 대응하는 데이터 마이그레이션 대상 관리 영역들(2007 및 3007)을 포함할 수 있다. 저장 유닛들(3002 및 3003)은 제 2 실시형태에서의 논리 드라이브 ID 관리 영역들(520)에 대응하는 논리 데이터 센터 ID 관리 영역들(520)을 포함할 수 있다. 위에서 설명된 바와 같이, 스테이터스 관리 영역들(510)은 그것에 대응하는 저장 유닛들이 다음의 상태들에 있음을 표시한다:
0: 초기 저장 상태
1: 정상 상태
2 : 낮은 신뢰성 상태
3 : 데이터 마이그레이션 출발지 상태(보호된 상태)
4: 데이터 마이그레이션 목적지 상태
5: 폐기 대상 상태
데이터 센터 관리 서버(3007)는 제 1 실시형태에서의 것들과 동일한 OS(100), 제어 유닛(200), 메타데이터(300), 및 논리 데이터 센터 스테이터스 테이블(450)을 저장하는 주 메모리(6)와, OS(100) 및 제어 유닛(200)을 실행하도록 구성된 산술 유닛인 CPU(5)를 포함한다. 데이터 센터 관리 서버(3007)는 제 1 실시형태에서의 정보 처리 디바이스(111)의 OS(100) 및 제어 유닛(200)과 동등한 기능들을 행한다. 데이터 센터 관리 서버(3007)의 주 메모리(6)에서 저장된 메타데이터(300)는 예를 들어, 도 33에서 도시된 구조를 가진다. 주 메모리(6) 상의 메타데이터 및 메타데이터의 저널은 데이터 센터 관리 서버(3007) 내의 비휘발성 저장 유닛과, 장거리 네트워크(3000) 내의 데이터 센터들(3002, 3003, 및 3005)에서 백업된다. 논리 데이터 센터 스테이터스 테이블(450)은 예를 들어, 도 40에서 도시된 구조를 가진다. 논리 데이터 센터 스테이터스 테이블(450)은 논리 데이터 센터(3004)가 정상 상태 또는 데이터 마이그레이팅 상태에 있음을 표시한다. 예를 들어, 서버(3006)로부터 파일 ID를 수신할 시에, 데이터 센터 관리 서버(3007)는 메타데이터 영역(300)으로부터 파일 ID를 검색하고, 파일 ID에 대응하는 논리 데이터 센터 ID, 데이터 센터 ID, LBA, 섹터 카운트 등을 특정한다. 스테이터스 테이블들(510)은 데이터 센터들(3002 및 3003)의 스테이터스들을 저장한다.
도 41에서 도시된 구조에서 논리 데이터 센터 스테이터스 테이블(450)을 구성하는 것 외에, 도 75에서 도시된 스테이터스 테이블(650)은 데이터 센터 관리 서버(3007)로서 채택될 수 있다. 스테이터스 테이블(650)에서는, 논리 데이터 센터 ID, 데이터 센터 ID, 논리 데이터 센터 스테이터스, 및 데이터 센터 스테이터스가 관리된다. 이 경우, 저장 유닛들(2 및 3)에서의 스테이터스 관리 영역들은 불필요하다. 제어 유닛(200)은 메타데이터 영역(300) 대신에, 제 2 실시형태에서와 같은 데이터 마이그레이션 로그 저장 영역을 이용하여 데이터 센터(3002)로부터 데이터 센터(3003)로의 데이터의 마이그레이션을 관리할 수 있다.
수명 종료를 결정하기 위한 처리
시작될 때, 제어 유닛(200)은 데이터 센터(3002)에 관하여 신뢰성 정보를 모니터링한다. 예를 들어, 도 24에서 도시된 바와 같이, 제어 유닛(200)은 매 고정된 시간(예컨대, 매 1 분)에서 또는 각각의 고정된 횟수의 처리에서 데이터 센터(3002)로부터 통계 정보(65)를 취득한다. 제 1 실시형태에서와 같이, 제어 유닛(200)은 취득된 통계 정보(65)에 기초하여, 데이터 센터(3002)가 수명 종료에 도달하였는지 여부를 결정한다. 제어 유닛(200)이 데이터 센터(3002)가 수명 종료에 도달한 것으로 결정할 때, 제어 유닛(200)은 이하에서 설명된 수명 종료 처리를 실행한다.
수명 종료 처리
접속된 데이터 센터(3002)가 수명 종료에 도달하였거나 수명 종료에 막 도달하고 수명 종료 처리가 시작될 때, 데이터 센터(3002)의 스테이터스(510)를 데이터 센터 스테이터스=2(낮은 신뢰성 상태)로 변경한 후에는, 제어 유닛(200)이 새로운 데이터 센터의 접속을 촉구하기 위한 메시지를 데이터 센터 관리 서버(3007) 등의 디스플레이 상에 디스플레이한다. 새로운 데이터 센터(3003)가 접속될 때, 제어 유닛(200)은 스테이터스 테이블(450)의 데이터 센터(3003)의 스테이터스(510)를 데이터 센터 스테이터스=4(데이터 마이그레이션 목적지 상태)로 재기록하고, 또한, 데이터 센터(3002)의 스테이터스(510)를 데이터 센터 스테이터스=3(보호된 상태)로 재기록한다. 제어 유닛(200)은 OS(100)로 하여금 데이터 센터(3002) 및 데이터 센터(3003)를 하나의 논리 데이터 센터(3004)로서 인식하게 한다. 제어 유닛(200)은 주 메모리(6) 상의 논리 데이터 센터 스테이터스 테이블(450)의 스테이터스를 "정상 상태"로부터 "데이터 마이그레이팅 상태"로 재기록한다.
(데이터 마이그레이팅 상태에서의 논리 데이터 센터로부터의 판독)
서버(3006)로부터 판독 요청 및 파일 ID를 수신할 시에, 데이터 센터 관리 서버(3007)는 메타데이터(300)로부터 파일 ID에 대응하는 논리 데이터 센터(3004)를 특정하고, 주 메모리(6)로부터 논리 데이터 센터 스테이터스 테이블(450)을 판독하고, 특정된 논리 데이터 센터(3004)의 스테이터스가 데이터 마이그레이팅 상태인 것으로 인식한다. 데이터 센터 관리 서버(3007)는 메타데이터(300)로부터, 파일 ID에 의해 지정된 파일이 데이터 센터(3002 또는 3003)의 데이터 센터 어드레스 및 LBA를 취득하고, 취득된 데이터 센터 어드레스 및 취득된 LBA를 서버(3006)로 송신한다. 서버(3001)는 수신된 데이터 센터 어드레스 및 수신된 LBA를 지정하는 패킷을 네트워크(3000)로 송신하여 판독 명령을 데이터 센터(3002 또는 3003)로 송신하고, 데이터 센터(3002 또는 3003)로부터 판독 데이터를 수신한다.
논리 데이터 센터에서의 기록
서버(3006)로부터 기록 요청 및 파일 ID를 수신할 시에, 데이터 센터 관리 서버(3007)는 논리 데이터 센터 스테이터스 테이블(450)로부터 논리 데이터 센터(3004)의 스테이터스를 결정하고, 논리 데이터 센터(3004)를 정상 상태에 있는 것으로 인식한다. 다음으로, 데이터 센터 관리 서버(3007)는 주 메모리(6)로부터 메타데이터(300)를 판독하고, 메타데이터(300)를 참조하여 데이터 기록을 위한 LBA를 할당한다. 데이터 센터 관리 서버(3007)는 LBA와, 데이터 센터(3002)의 데이터 센터 ID 및 LBA를 서버(3006)로 송신한다. 서버(3006)는 수신된 데이터 센터 ID 및 수신된 LBA를 지정하는 패킷을 네트워크(3000)로 송신하여 기록 명령을 데이터 센터(3002)로 송신하고, 데이터 센터(3002)에서 기록 데이터를 저장한다.
데이터 센터 관리 서버(3007)가 논리 데이터 센터(3004)를 데이터 마이그레이팅 상태에 있는 것으로 인식할 때, 데이터 센터 관리 서버(3007)는 주 메모리(6)로부터 메타데이터(300)를 판독하고, 메타데이터(300)를 참조하여 데이터 기록을 위한 LBA를 할당한다. 데이터 센터 관리 서버(3007)는 LBA와, 데이터 센터(3003)의 데이터 센터 ID 및 LBA를 서버(3006)로 송신한다. 서버(3006)는 데이터 센터(3003)의 수신된 데이터 센터 ID 및 수신된 LBA를 지정하는 패킷을 네트워크(3000)로 송신하여 기록 명령을 데이터 센터(3003)로 송신하고, 데이터 센터(3003)에서 기록 데이터를 저장한다.
백그라운드 백업
논리 데이터 센터(3004)가 논리 드라이브 스테이터스 테이블(450)에서 데이터 마이그레이팅 상태의 스테이터스에 있을 때, 제어 유닛(200)은 서버(3006)에 의한 논리 데이터 센터(3004)에 대한 액세스가 (아이들링 동안에) 거의 발생하지 않을 때에 데이터 마이그레이션 출발지 데이터 센터(3002)로부터 데이터 마이그레이션 목적지 데이터 센터(3003)로의 백그라운드 백업을 수행할 수 있다. 제어 유닛(200)은 주 메모리(6)로부터 메타데이터(300)를 판독하고, 데이터 센터(3002)에 맵핑된 파일 ID를 검색한다. 데이터 센터(3002)에 맵핑된 파일이 존재할 경우, 제어 유닛(200)은 서버(3006)를 통해 판독 명령을 데이터 센터(3002)로 송신하여 파일의 LBA로부터의 판독을 수행하고, 데이터 센터(3002)로부터 판독 데이터를 수신한다. 제어 유닛(200)은 기록 명령 및 판독 데이터를 데이터 센터(3003)의 LBA로 송신하고, 기록을 수행하고, 주 메모리(6) 상의 메타데이터(300)를 재기록하고, 파일 ID를 데이터 센터(3003)에 맵핑한다.
서버-프리 백업은 제어 유닛(200)의 백그라운드 백업 동작으로서 채택될 수 있다. 그 경우, 예를 들어, 확장된 복사 명령이 이용될 수 있다. 확장된 복사 명령으로서, 예를 들어, SCSI Primary Commands-4 (SPC-4), INCITS T10/1731-D, Revision 36e(http://www.t10.org/)에서 설명된 83h EXTENDED COPY 명령이 이용될 수 있다. 제어 유닛(200)은 백업 대상 LBA 및 데이터 센터(3003)의 ID를 포함하는 확장된 복사 명령을 데이터 센터(3002)로 송신한다. 다음으로, 데이터 센터(3002)는 LBA로부터 데이터를 판독하고, 판독 데이터를 데이터 센터(3003)로 송신한다. 데이터 센터(3003)는 LBA에서 수신 데이터를 기록한다.
데이터 마이그레이션 완료 시간
논리 드라이브 스테이터스 테이블(450)에서는, 논리 데이터 센터(3004)의 스테이터스가 "데이터 마이그레이팅 상태"일 때, 제어 유닛(200)은 주 메모리(6) 상의 메타데이터(300)를 주기적으로 판독하고, 데이터 센터(3002)에 맵핑된 마이그레이션 대상 파일 ID가 존재하는지 여부를 주기적으로 검사한다. 예를 들어, 제어 유닛(200)은 데이터 센터(3002)에 맵핑된 마이그레이션 대상 파일 ID가 논리 데이터 센터(3004)에서 저장된 모든 파일들의 파일 ID들 중에서 존재하는지 여부를 주기적으로 검사한다. 마이그레이션 대상 파일 ID가 존재하지 않을 때, 제어 유닛(200)은 데이터 마이그레이션 목적지 데이터 센터(3003)의 스테이터스(510)를 데이터 센터 스테이터스=1(정상 상태)로 재기록하고, 데이터 마이그레이션 출발지 데이터 센터(3002)의 스테이터스(510)를 데이터 센터 스테이터스=5(폐기 대상 상태)로 재기록한다. 제어 유닛(200)은 논리 데이터 센터(3004)로부터 데이터 센터(3002)를 분리하고, 데이터 센터(3003)를 논리 데이터 센터(3004)로서 인식하고, 논리 데이터 센터(3004)의 스테이터스를 논리 드라이브 스테이터스 테이블(450)에서 "데이터 마이그레이팅 상태"로부터 "정상 상태"로 재기록한다.
위에서 설명된 바와 같이, 데이터 마이그레이션 동안에는, 논리 데이터 센터(3004)에서의 데이터 기록 시에, 기록 명령이 데이터 마이그레이션 출발지 데이터 센터(3002)로 송신되지 않고, 데이터 마이그레이션 목적지 데이터 센터(3003)로 송신된다. 논리 데이터 센터(3004)로부터의 데이터 판독은 데이터 센터(3002 또는 3003)로부터 실행된다. 논리 데이터 센터(3004)에서는, 기록 요청이 서버(3006)로부터 수신될 때마다, 데이터 센터(3002)에서 저장된 유효한 데이터가 점차적으로 데이터 센터(3003)로 마이그레이팅된다. 새로운 데이터 기록 동작은 또한 데이터 마이그레이팅 동작으로서 작용한다.
(제 6 실시형태)
중계 유닛
제 1 및 제 2 실시형태들에서는, 제어 유닛(200)이 저장 유닛(2)이 수명 종료에 도달하였거나, 수명 종료에 막 도달하거나, 막 고장날려고 하는 것으로 결정하거나, 또는 저장 유닛(2)이 신뢰성에 있어서 열화되는 것으로 결정할 때, 제어 유닛(200)은 저장 유닛(2)에서의 기록을 방지하도록 기록 요청을 처리한다. 결과적으로, 저장 유닛(2)의 신뢰성에 있어서의 추가의 열화를 억제하고 새로운 기록 데이터의 손실을 방지하는 것이 가능하다. 저장 유닛(2)에서의 데이터 기록을 안전하게 제한하기 위해서는, 정보 처리 디바이스, 클라이언트, 및 서버가 저장 유닛에서의 기록을 자발적으로 수행하는 것을 방지하는 것이 바람직하다. 이 실시형태에서, 정보 처리 시스템은 중계 유닛(5000)을 포함한다. 중계 유닛(5000)에서의 제어 유닛(200)은 저장 유닛(2)의 통계 정보와 같은 신뢰성 정보를 모니터링한다. 중계 유닛(500)이 저장 유닛(2)이 수명 종료에 도달하였거나, 수명 종료에 막 도달하거나, 막 고장날려고 하는 것으로, 또는 저장 유닛(2)이 신뢰성에 있어서 열화되는 것으로 결정할 때, 제어 유닛(200)은 정보 처리 디바이스(111), 클라이언트, 및 서버에 대하여, 저장 유닛(2)이 판독 전용 디바이스임을 표시하는 정보를 통지함으로써, 정보 처리 디바이스(111), 클라이언트, 및 서버가 저장 유닛(2)에서의 기록을 자발적으로 수행하는 것을 방지한다. 이 실시형태는 독립적으로 수행될 수 있다. 다른 한편으로, 이 실시형태가 제 1 실시형태, 제 2 실시형태 등과 조합될 때, 신뢰성에 있어서 열화된 저장 유닛(2)에서의 기록을 더욱 견고하게 억제하는 것이 가능하다. 예를 들어, 이 실시형태가 제 1 실시형태, 제 2 실시형태 등과 조합될 때, 중계 유닛(500)은 저장 유닛(2)이 판독 및 기록 중의 판독만을 지원하는 저장 유닛임을 표시하는 저장 유닛 정보를 송신한다. CPU(5)와, 주 메모리(6)에서 저장된 제어 유닛(200)은 저장 유닛(2)을 판독 전용 저장 유닛으로서 인식하고, 저장 유닛(2)을 보호된 상태(데이터 마이그레이션 출발지 상태)에 있는 것으로 인식한다.
도 77은 중계 유닛(500)이 데스크톱 개인용 컴퓨터 또는 노트북 개인용 컴퓨터와 같은 정보 처리 시스템(1) 상에 장착되는 예이다. 중계 유닛(5000)은 정보 처리 디바이스(111) 내부에 장착될 수 있거나, 정보 처리 디바이스(111) 외부에 장착될 수 있다. 중계 유닛(5000)은 인터페이스(19)를 통해 저장 유닛(2)에 접속되고, 인터페이스(5001) 및 칩셋(7)을 통해 CPU(5)에 접속된다. 중계 유닛(5000)은 칩셋(7)을 통하지 않고 CPU(5)에 직접 접속될 수 있다. 중계 유닛(5000)은 칩셋(7) 내에 내장될 수 있다.
중계 유닛(5000)은 제어 유닛(200)을 포함한다. 도 77에서 도시된 바와 같이, 전체 제어 유닛(200)은 중계 유닛(5000) 내에 포함된다. 도 78에서 도시된 바와 같이, 제어 유닛(200)의 일부는 중계 유닛(5000) 내에 포함될 수 있고, 제어 유닛(200)의 일부는 주 메모리(6) 내에 포함될 수 있다. 제어 유닛(200)의 일부는 중계 유닛(5000) 내에 포함될 수 있고, 제어 유닛(200)의 일부는 ROM(11)과 같이, 정보 처리 디바이스(111) 내의 또 다른 메모리부 내에 포함될 수 있다. 제어 유닛(200)은 펌웨어 또는 소프트웨어의 형태로 구현될 수 있거나, 하드웨어의 형태로 구현될 수 있다.
인터페이스(19) 및 인터페이스(5001)로서, 예를 들어, 직렬 고급 기술 결합(Serial Advanced Technology Attachment; SATA), PCI Express(Peripheral Component Interconnect Express; PCIe), 범용 직렬 버스(Universal Serial Bus; USB), 직렬 결합된 SCSI(Serial Attached SCSI; SAS), Thunderbolt(등록 상표), Ethernet(등록 상표), 및 파이버 채널(Fibre channel)이 이용될 수 있다. 인터페이스(19) 및 인터페이스(5001)는 동일한 표준의 인터페이스들일 수 있거나, 상이한 표준들의 인터페이스들일 수 있다. 이 실시형태에서, 인터페이스(19) 및 인터페이스(5000)는 SATA 인터페이스들이다.
제 1 실시형태에서의 도 24 및 도 29에서 도시된 바와 동일한 방식으로, 제어 유닛(200)은 저장 유닛(2)이 수명 종료에 도달하였는지, 수명 종료에 막 도달하는지, 또는 막 고장날려고 하는지 여부를 결정한다. 제어 유닛(200)이 저장 유닛(2)이 수명 종료에 도달하였거나, 수명 종료에 막 도달하거나, 또는 막 고장날려고 하는 것으로 결정할 때, 도 79에서 도시된 바와 같이, 제어 유닛(200)은 수명 종료 처리를 수행하기 위하여 정상 상태로부터 낮은 신뢰성 상태로 천이한다(단계(S800)). 정상 상태 및 낮은 신뢰성 상태는 제어 유닛(200)의 모드들이다. 저장 유닛(2)이 정상일 때, 제어 유닛(200)은 정상 상태에서 동작한다. 제어 유닛(200)이 저장 유닛(2)이 수명 종료에 도달하였거나, 수명 종료에 막 도달하거나, 막 고장날려고 하는 것으로, 또는 저장 유닛(2)이 신뢰성에 있어서 열화되는 것으로 결정할 때, 제어 유닛(200)은 낮은 신뢰성 상태에서 동작한다. 제 1 실시형태에서와 같이, 수명 종료 결정은 도 24에서 도시된 매 고정된 시간에서, 각각의 고정된 횟수의 처리에서, 또는 고정된 데이터의 매 송신 및 수신에서, 또는 저장 유닛(2)으로부터 수신된 명령 응답이 도 29 및 도 30에서 도시된 바와 같이 에러 응답일 때에 수행된다.
제어 유닛(200)은 인터페이스(5001)를 통해 CPU(5)로부터 수신된 명령 및 데이터를 인터페이스(19)를 통해 저장 유닛(2)으로 송신한다. 제어 유닛(200)은 인터페이스(19)를 통해 저장 유닛(2)으로부터 수신된 응답 및 데이터를 인터페이스(5001)를 통해 CPU(5)로 송신한다. 인터페이스(5001) 및 인터페이스(19)의 프로토콜들이 상이할 때에는, 프로토콜 변환을 수행한 후에, 제어 유닛(200)은 변환 후의 명령, 응답, 및 데이터를 CPU(5) 및 저장 유닛(2)으로 송신한다. 저장 유닛(2)의 저장 유닛 정보를 CPU(5)로 송신할 때, 제어 유닛(200)은 제어 유닛(200)이 정상 상태 또는 낮은 신뢰성 상태에 있는지 여부에 따라 저장 유닛 정보를 스위칭한다. 즉, 정상 상태에서, 제어 유닛(200)은 저장 유닛(2)이 판독가능하고 기록가능한 저장 유닛임을 표시하는 저장 유닛 정보를 CPU(5)로 송신한다. 낮은 신뢰성 상태에서, 제어 유닛(200)은 저장 유닛(2)이 판독만 가능한 저장 유닛임을 표시하는 저장 유닛 정보를 CPU(5)로 송신한다.
CPU(5)로부터 저장 유닛(2)에 대한 저장 유닛 정보 요청을 수신할 시에, 제어 유닛(200)은 저장 유닛 정보 요청의 응답으로서, 저장 유닛(2)이 판독가능하고 기록가능한 저장 유닛임을 표시하는 저장 유닛 정보를 CPU(5)로 송신한다. 낮은 신뢰성 상태에서, 제어 유닛(200)은 저장 유닛(2)이 판독만 가능한 저장 유닛임을 표시하는 저장 유닛 정보를 CPU(5)로 송신한다. 저장 유닛 정보 요청의 예로서, ACS-3에서 설명된 ECh IDENTIFY DEVICE 명령, SCSI Primary Commands-4 (SPC-4)에서 설명된 A3h REPORT IDENTIFYING INFORMATION 명령, INFORMATION TECHNOLOGY Multi-Media Commands-6 (MMC-6) (http://www.t10.org/)에서 설명된 46h GET CONFIGURATION 명령, 및 NVM Express Revision 1.1에서 설명된 06h Identify 명령이 이용된다.
도 80은 제어 유닛(200)이 CPU(5)로부터 저장 유닛(2)에 대한 저장 유닛 정보 요청을 수신할 때에 수행된 처리 절차의 예를 도시한다. 제어 유닛(200)이 CPU(5)로부터 저장 유닛(2)에 대한 저장 유닛 정보 요청을 수신할 때(단계(S801)), 제어 유닛(200)은 제어 유닛(200)이 정상 상태 또는 낮은 신뢰성 상태에 있는지 여부에 기초하여, 저장 유닛(2)이 낮은 신뢰성 상태에 있는지 여부를 결정한다(단계(S802)). 저장 유닛(2)이 정상 상태에 있을 때, 제어 유닛(200)은 저장 유닛 정보 요청을 저장 유닛(2)으로 송신하고(단계(S803)), 저장 유닛(2)으로부터 저장 유닛 정보를 수신하고, 수신된 저장 유닛 정보를 CPU(5)로 송신한다(단계(S804)). 저장 유닛(2)이 낮은 신뢰성 상태에 있을 때, 제어 유닛(200)은 저장 유닛 정보 요청을 저장 유닛(2)으로 송신하고(단계(S805)), 저장 유닛(2)으로부터 저장 유닛 정보를 수신하고, 수신 데이터를 재기록하여 저장 유닛(2)이 ROM 디바이스인 것처럼 표시하기 위해 저장 유닛 정보를 변경하고, 변경된 저장 유닛 정보를 CPU(5)로 송신한다(단계(S806)). 제어 유닛(200)은 단계(S801)에서 CPU(5)로부터 저장 유닛 정보 요청을 수신하지 않으면서, (S802 내지 S806)에서의 처리를 자발적으로 수행할 수 있다. 제어 유닛(200)은 단계(S801) 및 단계(S802) 사이에서 저장 유닛 정보 요청을 저장 유닛(2)으로 송신할 수 있고, 단계들(S803 및 S805)에서는 저장 유닛 정보 요청을 저장 유닛(2)으로 송신할 필요가 없다.
도 81에서 도시된 바와 같이, 낮은 신뢰성 상태에서, 제어 유닛(200)은 저장 유닛 정보 요청을 저장 유닛(2)으로 송신하지 않으면서, 저장 유닛(2)이 ROM 디바이스인 것처럼 표시하는 저장 유닛 정보를 생성할 수 있고, 저장 유닛 정보를 CPU(5)로 송신한다. 즉, CPU(5)로부터 저장 유닛(2)에 대한 저장 유닛 정보 요청을 수신할 시에(단계(S810)), 제어 유닛(200)은 제어 유닛(200)이 정상 상태 또는 낮은 신뢰성 상태에 있는지 여부에 기초하여, 저장 유닛(2)이 낮은 신뢰성 상태에 있는지 여부를 결정한다(단계(S811)). 저장 유닛(200)이 정상 상태에 있을 때, 제어 유닛(200)은 저장 유닛 정보 요청을 저장 유닛(2)으로 송신하고(단계(S812)), 수신된 저장 유닛 정보를 CPU(5)로 송신한다(단계(S813)). 제어 유닛(200)이 낮은 신뢰성 상태에 있을 때, 제어 유닛(200)은 저장 유닛 정보 요청을 저장 유닛(2)으로 송신하지 않으면서, 저장 유닛(2)이 ROM 디바이스인 것처럼 표시하기 위한 저장 유닛 정보를 생성하고, 생성된 저장 유닛 정보를 CPU(5)로 송신한다(단계(S814)).
정상 상태에서 동작할 때, 저장 유닛(2)이 판독가능하고 기록가능한 저장 유닛임을 표시하는 저장 유닛 정보로서, 예를 들어, 제어 유닛(200)은 저장 유닛(2)이 ATA 디바이스임을 CPU(5)에 명시적으로 통지하는 것이 바람직하다. 예를 들어, ATA/ATAPI Command Set-3 (ACS-3)에서 설명된 Device Signature에서, LBA(7:0)를 01h로 대체하고, LBA(15:8)를 00h로 대체하고, LBA(23:16)를 00h로 대체함으로써, 그리고 LBA (7:0), LBA (15:8), 및 LBA (23:16)를 CPU(5)에 출력함으로써 저장 유닛(2)이 ATA 디바이스임을 CPU(5)에 통지하는 것이 가능하다.
낮은 신뢰성 상태에서 동작할 때, 저장 유닛(2)이 판독만 가능한 가능한 저장 유닛임을 표시하는 저장 유닛 정보로서, 예를 들어, 제어 유닛(200)은 저장 유닛(2)이 ATAPI 디바이스임을 CPU(5)에 명시적으로 통지한다. 예를 들어, ACS-3에서 설명된 Device Signature에서, LBA(7:0)를 01h로 대체하고, LBA(15:8)를 14h로 대체하고, LBA(23:16)를 EBh로 대체함으로써, 그리고 LBA (7:0), LBA (15:8), 및 LBA (23:16)를 CPU(5)에 출력함으로써 저장 유닛(2)이 ATAPI 디바이스임을 CPU(5)에 통지하는 것이 가능하다. 또한, 낮은 신뢰성 상태에서 동작할 때, 예를 들어, 저장 유닛(2)이 판독만 가능한 저장 유닛임을 표시하는 저장 유닛 정보로서, CPU(5)로부터 INCITS Multi-Media Commands-6 (MMC-6)에서 설명된 46h GET CONFIGURATION 명령을 수신할 시에, 제어 유닛(200)은 모든 기록 기능들이 Random Writable(Feature Number=0020h), Incremental Streaming Writable(Feature Number=0021h), 및 Write Once(Feature Number=0025h)와 같은 Features에서 지원되지 않음을 CPU(5)에 통지한다. 결과적으로, OS(100)가 Windows(등록 상표) 등일 때에도, OS(100)로 하여금 저장 유닛(2)을 판독가능한 디바이스로서 인식하게 하는 것이 가능하다. OS(100)와, OS(100)보다 상위인 계층에서의 애플리케이션 프로그램(400)에 대하여, 저장 유닛(2)은 저장 유닛(2)이 판독 전용 디바이스인 것처럼 보인다. 그러므로, OS(100) 및 애플리케이션 프로그램(400)이 실수로 기록 명령을 저장 유닛(2)으로 송신하는 것을 방지하는 것이 가능하다.
대안적으로, 낮은 신뢰성 상태에서 동작할 때, 저장 유닛(2)이 판독만 가능한 가능한 저장 유닛임을 표시하는 저장 유닛 정보로서, 예를 들어, 제어 유닛(200)은 저장 유닛(2)이 ATA 디바이스임을 CPU(5)에 명시적으로 통지할 수 있다. CPU(5)로부터 ACS-3에서 설명된 ECh IDENTIFY DEVICE 명령을 수신할 시에, 제어 유닛(200)은 모든 기록 기능들이 지원되지 않음을 표시하는 정보를 CPU(5)에 통지할 수 있다.
저장 유닛(2)이 판독만 가능한 저장 유닛인지 여부를 통지하는 방법은 위에서 설명된 형태들 외에 다양한 형태들을 취할 수 있다. CPU(5)가 저장 유닛(2)이 판독만 가능한 저장 유닛임을 표시하는 정보를 수신할 때, OS(100)는 판독 전용 저장 유닛, 예를 들어, ATAPI 판독 전용 저장 유닛을 위한 드라이버를 저장 유닛(2)에 적용된 드라이버 소프트웨어로서 적용한다. OS(100) 상에서는, 저장 유닛(2)이 CD-ROM, DVD-ROM, 또는 BD-ROM과 같은 판독 전용 저장 유닛으로서 인식된다. 예를 들어, 도 82 및 도 83에서 도시된 바와 같이, OS(100)는 디스플레이 디바이스(9)를 통해 아이콘 그래픽 등으로, 저장 유닛(2)이 CD-ROM, DVD-ROM, 또는 BD-ROM과 같은 판독 전용 디바이스임을 정보 처리 디바이스(111)의 관리자, 조작자, 및 사용자에게 명시적으로 통지하는 것이 바람직하다. 사용자가 저장 유닛(2)에서 파일 등을 기록하는 것을 시도할 때, 도 84에서 도시된 바와 같이, OS(100)는 디스플레이 디바이스(9)를 통해 저장 유닛(2)이 기록-보호된 것임을 통지하는 것이 더욱 바람직하다.
CPU(5) 및 OS(100)가 저장 유닛(2)을 판독만 가능한 저장 유닛으로서 인식할 때에도, 예를 들어, OS(100)가 판독 전용 저장 유닛을 위한 드라이버를 저장 유닛(2)에 적용할 때에는, CPU(5)가 판독 명령을 저장 유닛(2)으로 송신할 수 있다. CPU(5)가 판독 명령을 저장 유닛(2)으로 송신할 때, 제어 유닛(200)은 판독 명령을 저장 유닛(2)으로 송신하고, 제어 유닛(200)은 저장 유닛(2)으로 판독 데이터를 수신하고, 제어 유닛(200)은 판독 데이터를 CPU(5)로 송신한다. 이러한 방법으로, CPU(5)는 제어 유닛(200)이 정상 상태 또는 낮은 신뢰성 상태에 있는지 여부에 관계 없이 저장 유닛(2)으로부터 데이터를 판독할 수 있다.
저장 유닛(2)의 데이터 파괴 또는 고장으로 인한 사용자 데이터 손실을 방지하는 측면에서는, 낮은 신뢰성 상태에서의 제어 유닛(200)이 기록 명령을 저장 유닛(2)으로 전혀 송신하지 않도록 구성되는 것이 바람직하다. 그러나, 예를 들어, 저장 유닛(2)에서 OS(100)의 시스템 정보와 같은 데이터의 일부를 기록하는 것이 필요할 때, 예외로서, 제어 유닛(200)은 저장 유닛(2)에서의 데이터의 기록을 허용할 수 있다. 그러나, 기록 데이터의 데이터 양이 저장 유닛(2)의 용량과 비교하여 충분히 작은 것이 바람직하다. 사용자가 실수로 기록 명령을 송신하고 저장 유닛(2)에서 데이터를 기록하는 것을 방지하기 위해서는, 저장 유닛(2)에 대한 정상적인 기록 명령이 CPU(5)로부터 수신되더라도, 제어 유닛(200)이 기록 명령을 저장 유닛(2)으로 송신하지 않는 것이 더욱 바람직하다. 예외로서, 저장 유닛(2)에서 데이터를 기록하는 것이 필요할 때에만, 예를 들어, 특수한 명령에 의한 기록 명령이 CPU(5)로부터 수신될 때에만, 제어 유닛(200)이 기록 명령을 저장 유닛(2)으로 송신한다. 예를 들어, ACS-3에서 설명된 35h WRITE DMA EXT 또는 61h WRITE FPDMA QUEUED와 같은 기록 명령이 CPU(5)의 저장 유닛(2)에 대한 정상적인 기록 명령으로서 이용될 때, CPU(5)로부터 35h WRITE DMA EXT 명령 또는 61h WRITE FPDMA QUEUED 명령을 정상적인 기록 명령으로서 수신할 시에, 정상 상태에서의 제어 유닛(200)은 명령을 저장 유닛(2)으로 전달한다. 정상적인 기록 명령으로서 CPU(5)로부터 35h WRITE DMA EXT 명령 또는 61h WRITE FPDMA QUEUED 명령을 수신할 시에, 낮은 신뢰성 상태에서의 제어 유닛(200)은 기록 명령을 저장 유닛(2)으로 송신하지 않는다. 다른 한편으로, 특수한 기록 명령으로서, CPU(5)로부터 INCITS ACS-3에서 설명된 30h Write Sectors 명령, 3Fh Write Log Ext 명령, 또는 SCT Command Transport, 다른 벤더 고유 명령들 등을 수신할 시에, 낮은 신뢰성 상태에서의 제어 유닛(200)은 명령을 저장 유닛(2)으로 전달한다.
상기 설명에서, 정보 처리 시스템(1)은 데스크톱 개인용 컴퓨터 또는 노트북 개인용 컴퓨터와 같은 컴퓨터 시스템이다. 그러나, 정보 처리 시스템(1)은 예를 들어, 도 85에서 도시된 저장 네트워크를 포함하는 정보 처리 시스템일 수 있다. 도 85에서는, 저장 네트워크(1000)가 인터페이스(19) 및 인터페이스(5001)로서 이용되고, 네트워크 스위치(6009)는 중계 유닛(5000)으로서 이용된다.
예를 들어, SAN(저장 영역 네트워크) 또는 NAS(네트워크 연결 저장장치)가 저장 네트워크(1000)로서 이용된다. SAN으로서, 예를 들어, 파이버 채널 저장 영역 네트워크(Fibre Channel Storage Area Network; FC-SAN) 또는 인터넷 프로토콜 저장 영역 네트워크(Internet Protocol Storage Area Network; IP-SAN)가 이용된다. SAN의 상위 계층 프로토콜로서, 예를 들어, 소형 컴퓨터 시스템 인터페이스(Small Computer System Interface; SCSI)가 이용된다. 예를 들어, IP-SAN은 저장 네트워크(1000)로서 채택될 수 있다. iSCSI (인터넷 소형 컴퓨터 시스템 인터페이스)는 IP-SAN의 상위 계층 프로토콜로서 채택될 수 있다.
네트워크 스위치(6009)는 저장 네트워크(1000) 상에서 클라이언트들, 서버들, 및 저장 유닛들과 같은 복수의 네트워크 장치들을 접속하도록 구성된 네트워크 디바이스이다. 네트워크 장치로부터 패킷을 수신할 시에, 네트워크 스위치(6009)는 수신 패킷의 목적지 어드레스에 기초하여 수신 패킷을 목적지에서의 네트워크 장치로 송신한다.
네트워크 스위치(6009)는 제어 유닛(200)을 포함한다. 제어 유닛(200)은 도 85에서 도시된 바와 같이 네트워크 스위치(6009) 내에 완전히 포함될 수 있다. 대안적으로, 제어 유닛(200)의 일부가 네트워크 스위치(6009) 내에 포함될 수 있고 제어 유닛(200)의 또 다른 일부가 클라이언트(7000A)의 주 메모리(6) 내에 포함될 수 있거나, 제어 유닛(200)의 일부가 네트워크 스위치(6009) 내에 포함될 수 있고 제어 유닛(200)의 또 다른 일부가 클라이언트(7000A)의 ROM과 같이, 시스템(1) 내의 또 다른 부분 내에 포함될 수 있다. 제어 유닛(200)은 펌웨어 또는 소프트웨어의 형태로 구현될 수 있거나, 하드웨어의 형태로 구현될 수 있다.
제 1 실시형태에서의 도 24 및 도 29에서 도시된 바와 동일한 방식으로, 제어 유닛(200)은 저장 인터페이스(1000)에 접속된 각각의 저장 유닛들이 수명 종료에 도달하였는지, 수명 종료에 막 도달하는지, 또는 막 고장날려고 하는지 여부를 결정한다. 저장 유닛들이 수명 종료에 도달하였거나, 수명 종료에 막 도달하거나, 또는 막 고장날려고 할 때, 제어 유닛(200)은 정상 상태로부터, 저장 유닛만이 수명 종료 처리를 거치게 하는 것을 목표로 하는 낮은 신뢰성 상태로 천이한다. 정상 상태 및 낮은 신뢰성 상태는 저장 네트워크(1000)에 접속된 하나 또는 복수의 저장 유닛들의 각각에 대응하도록 제공된 제어 유닛(200)의 모드들이다. 예를 들어, 저장 유닛(2A)이 정상일 때, 제어 유닛(200)은 정상 상태, 즉, 저장 유닛(2A)을 위한 모드에서 동작한다. 예를 들어, 제어 유닛(200)이 저장 유닛(2A)이 수명 종료에 도달하였거나, 수명 종료에 막 도달하거나, 막 고장날려고 하는 것으로 결정하거나, 또는 저장 유닛(2A)이 신뢰성에 있어서 열화되는 것으로 결정할 때, 제어 유닛(200)은 낮은 신뢰성 상태, 즉, 저장 유닛(2A)을 위한 모드에서 동작한다. 제어 유닛(200)이 정상 상태로부터, 저장 유닛이 수명 종료 처리를 거치게 하는 것을 목적으로 하는 낮은 신뢰성 상태로 천이할 때에도, 제어 유닛(200)은 저장 유닛이 수명 종료 처리를 거치게 하지 않기 위하여 정상 상태에서 동작한다. 제 1 실시형태에서와 같이, 수명 종료 결정은 도 24에서 도시된 매 고정된 시간에서, 각각의 고정된 수의 종류들의 처리에서, 또는 각각의 고정된 데이터 송신 및 수신에서, 또는 저장 유닛으로부터 수신된 명령 응답이 도 29 및 도 30에서 도시된 바와 같이 에러 응답일 때에 수행된다.
이 실시형태에서는, 일 예로서, 2 개의 클라이언트들(7000A 및 7000B) 및 2 개의 저장 유닛들(2A 및 2B)이 저장 네트워크(1000)에 접속된다. 그러나, 다른 임의적인 구성이 시스템(1)의 네트워크 장치들의 구성으로서 채택될 수 있다. 서버(7000A)는 클라이언트(7000A) 대신에 이용될 수 있다. 서버(7000B)는 클라이언트(7000B) 대신에 이용될 수 있다. 어드레스들이 저장 네트워크 상의 클라이언트(7000A), 클라이언트(7000B), 저장 유닛(2A), 및 저장 유닛(2B)에 각각 할당된다. 어드레스들로서, 예를 들어, IP 어드레스들 또는 MAC 어드레스들이 이용될 수 있다. 예를 들어, 클라이언트(7000A)의 CPU(5)가 저장 유닛(2A)의 어드레스만을 지정하는 명령 및 데이터를 저장 네트워크(1000)로 송신할 때, 네트워크 스위치(6009)는 명령 및 데이터를 구성하는 패킷에서의 어드레스로부터 저장 유닛(2A)을 특정한다. 네트워크 스위치(6009)는 패킷을 저장 유닛(2A)에만 송신한다. 예를 들어, 저장 유닛(2A)이 클라이언트(7000A)의 어드레스만을 지정하는 응답 및 데이터를 저장 네트워크(1000)로 송신할 때, 네트워크 스위치(6009)는 응답 및 데이터를 구성하는 패킷에서의 어드레스로부터 클라이언트(7000A)를 특정한다. 네트워크 스위치(6009)는 패킷을 클라이언트(7000A)에만 송신한다. 어드레스 지정에서는, 단일 네트워크 장치뿐만 아니라 복수의 네트워크 장치들이 지정될 수 있다.
예를 들어, 저장 유닛(2A)의 저장 유닛 정보를 예를 들어, 클라이언트(7000A)로 송신할 때, 제어 유닛(200)은 제어 유닛(200)의 저장 유닛(2A)에 대한 모드가 정상 상태 또는 낮은 신뢰성 상태인지 여부에 따라 클라이언트(7000A)에 송신된 저장 유닛(2A)의 저장 유닛 정보를 스위칭한다. 즉, 제어 유닛(200)의 저장 유닛(2A)에 대한 모드가 정상 상태일 때, 제어 유닛(200)은 저장 유닛(2A)이 판독가능하고 기록가능한 저장 유닛임을 표시하는 저장 유닛 정보를 클라이언트(7000A)로 송신한다. 제어 유닛(200)의 저장 유닛(2A)에 대한 모드가 낮은 신뢰성 상태일 때, 제어 유닛(200)은 저장 유닛(2A)이 판독 전용 저장 유닛임을 표시하는 저장 유닛 정보를 클라이언트(7000A)로 송신한다. 저장 유닛(2A)의 저장 유닛 정보는 동일한 방식으로 마찬가지로 클라이언트(7000B)로 송신된다. 저장 유닛(2B)의 저장 유닛 정보는 또한, 동일한 방식으로 클라이언트(7000A) 및 클라이언트(7000B)로 송신된다.
위에서 설명된 바와 같이, 이 실시형태에서는, 제어 유닛(200)이 저장 유닛(2)이 수명 종료에 도달하였거나, 수명 종료에 막 도달하거나, 막 고장날려고 하는 것으로 결정하거나, 저장 유닛(2)이 신뢰성에 있어서 열화되는 것으로 결정할 때, 제어 유닛(200)은 CPU(5)에 송신된 저장 유닛(2)의 저장 유닛 정보를 처리하거나 생성함으로써, CPU(5) 및 OS(100)로 하여금 저장 유닛이 판독만 가능한 저장 유닛임을 인식하게 한다. 결과적으로, 저장 유닛(2)에서의 데이터 기록을 방지하는 것이 가능하다. 저장 유닛(2)이 판독만 가능한 저장 유닛임을 인식하기 위한 처리는 OS(100)와 같은 하위 소프트웨어 계층에서 수행된다. 그러므로, 애플리케이션 프로그램(400) 및 사용자와 같은 상위 소프트웨어 계층은 저장 유닛(2)의 특수한 제어를 수행할 필요가 없다. 추가적인 장점들 및 수정들은 당해 분야의 당업자들에게 용이하게 발생할 것이다. 그러므로, 그 더 넓은 형태들에서의 발명은 본원에서 도시되고 설명된 구체적인 세부사항들 및 대표적인 실시형태들로 제한되지 않는다. 따라서, 첨부된 청구항들 및 그 등가물들에 의해 정의된 바와 같은 일반적인 발명 개념의 사상 또는 범위로부터 이탈하지 않으면서, 다양한 수정들이 행해질 수도 있다.

Claims (54)

  1. 정보 처리 시스템으로서,
    판독가능하고 기록가능한 제 1 메모리를 포함하는 제 1 저장 유닛;
    판독가능하고 기록가능한 제 2 메모리를 포함하는 제 2 저장 유닛;
    상기 제 1 저장 유닛 및 상기 제 2 저장 유닛에 접속가능한 정보 처리 디바이스를 포함하고,
    상기 정보 처리 디바이스는,
    상기 제 1 저장 유닛으로부터 취득된 신뢰성 정보에 기초하여 상기 제 1 저장 유닛의 저장 스테이터스(status)를 결정하기 위한 제 1 처리,
    상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 제 1 처리에 의해 보호된 상태로서 인식될 때, 상기 제 1 저장 유닛 및 상기 제 2 저장 유닛 중 상기 제 2 저장 유닛 상에서만 기록을 실행하고, 상기 제 1 저장 유닛 및 상기 제 2 저장 유닛 중 적어도 하나의 저장 유닛 상에서 판독을 실행하기 위한 제 2 처리, 및
    상기 제 2 처리에 의한 상기 기록에 따라 상기 제 1 저장 유닛 및 상기 제 2 저장 유닛에서 저장된 데이터의 어드레스들을 업데이트하기 위한 제 3 처리
    를 실행하도록 구성된 제어 유닛을 포함하는 것인, 정보 처리 시스템.
  2. 제 1 항에 있어서,
    상기 제어 유닛은 상기 제 1 처리에서 상기 신뢰성 정보 및 문턱치의 비교를 수행하고, 상기 비교에 기초하여, 상기 제 1 저장 유닛의 수명 종료 조건이 충족된다고 결정할 때, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태인 것으로 결정하는 것인, 정보 처리 시스템.
  3. 제 1 항에 있어서,
    상기 제어 유닛은, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 제 1 처리에 의해 낮은 신뢰성 상태로서 인식될 때, 상기 제 2 저장 유닛이 상기 제 1 저장 유닛에서 저장된 데이터의 데이터 마이그레이션 목적지 상태에 있는 것으로 인식하고, 상기 제 1 저장 유닛의 상기 저장 스테이터스를 상기 보호된 상태로 변경하기 위한 제 4 처리를 실행하는 것인, 정보 처리 시스템.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 제어 유닛은, 상기 제 3 처리에서, 동일한 어드레스의 데이터가 상기 제 1 저장 유닛 및 상기 제 2 저장 유닛 중 하나의 저장 유닛에서 존재하도록, 상기 제 1 저장 유닛 및 상기 제 2 저장 유닛에서 상기 저장된 데이터의 상기 어드레스들을 관리하는 것인, 정보 처리 시스템.
  5. 제 4 항에 있어서,
    상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태로서 인식될 때, 상기 제어 유닛은, 상기 제 3 처리에서, 상기 제 1 저장 유닛 및 상기 제 2 저장 유닛을 동일한 논리 유닛으로서 인식하는 것인, 정보 처리 시스템.
  6. 제 5 항에 있어서,
    판독가능하고 기록가능한 제 3 메모리들을 포함하며 상기 정보 처리 디바이스에 접속가능한 하나 또는 복수의 제 3 저장 유닛들을 더 포함하고,
    상기 제어 유닛은, RAID를 구성하기 위하여 상기 하나 또는 복수의 제 3 저장 유닛들 및 상기 제 1 저장 유닛을 제어하기 위한 제 5 처리를 실행하고, 상기 제 5 처리에서, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태로서 인식될 때, 상기 RAID를 구성하기 위하여 상기 하나 또는 복수의 제 3 저장 유닛들 및 상기 논리 유닛을 제어하는 것인, 정보 처리 시스템.
  7. 제 3 항 내지 제 6 항 중 어느 한 항에 있어서,
    상기 제 1 처리에서, 상기 제어 유닛은, 상기 신뢰성 정보 및 상기 문턱치의 비교를 수행하고, 상기 비교에 기초하여, 상기 제 1 저장 유닛의 수명 종료 조건이 충족된다고 결정할 때, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 낮은 신뢰성 상태인 것으로 결정하는 것인, 정보 처리 시스템.
  8. 제 1 항 내지 제 7 항 중 어느 한 항에 있어서,
    상기 제 2 처리에서, 상기 제어 유닛은, 상기 제 2 저장 유닛에서 상기 제 1 저장 유닛으로부터 판독된 데이터를 기록하기 위한 처리를 상기 판독 처리와 병렬로 실행하는 것인, 정보 처리 시스템.
  9. 제 1 항 내지 제 8 항 중 어느 한 항에 있어서, 메타데이터를 저장하도록 구성된 메타데이터 저장 유닛을 더 포함하고,
    상기 제 3 처리에서, 상기 제어 유닛은, 상기 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태가 아닌 것으로 상기 제 1 처리에 의해 결정될 때, 상기 메타데이터에서, 상기 제 1 저장 유닛에서 기록된 데이터의 어드레스로부터 상기 제 1 저장 유닛으로의 맵핑을 레코딩하고, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태인 것으로 상기 제 1 처리에 의해 결정될 때, 상기 메타데이터에서, 상기 제 2 저장 유닛에서 기록된 데이터의 어드레스로부터 상기 제 2 저장 유닛으로의 맵핑을 레코딩하며,
    상기 제 2 처리에서, 판독 처리 시에, 상기 제어 유닛은, 판독 대상 어드레스로부터 상기 제 1 저장 유닛으로의 맵핑이 상기 메타데이터에서 레코딩될 때에 상기 제 1 저장 유닛으로부터 상기 데이터를 판독하고, 상기 판독 대상 어드레스로부터 상기 제 2 저장 유닛으로의 맵핑이 상기 메타데이터에서 레코딩될 때에 상기 제 2 저장 유닛으로부터 상기 데이터를 판독하는 것인, 정보 처리 시스템.
  10. 제 1 항 내지 제 8 항 중 어느 한 항에 있어서,
    상기 제어 유닛은, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태인 것으로 상기 제 1 처리에 의해 결정될 때, 상기 제 1 저장 유닛에서 저장된 제 1 메타데이터를 상기 제 2 저장 유닛에서 제 2 메타데이터로서 저장하고, 상기 제 2 메타데이터를 이용하여 상기 제 1 저장 유닛 및 상기 제 2 저장 유닛에서 상기 저장된 데이터의 상기 어드레스들을 관리하기 위한 제 6 처리를 실행하며,
    상기 제 3 처리에서, 상기 제어 유닛은, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태가 아닌 것으로 상기 제 1 처리에 의해 결정될 때, 상기 제 1 메타데이터에서, 상기 제 1 저장 유닛에서 기록된 데이터의 어드레스로부터 상기 제 1 저장 유닛으로의 맵핑을 레코딩하고, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태인 것으로 상기 제 1 처리에 의해 결정될 때, 상기 제 2 메타데이터에서, 상기 제 2 저장 유닛에서 기록된 데이터의 어드레스로부터 상기 제 2 저장 유닛으로의 맵핑을 레코딩하는 것인, 정보 처리 시스템.
  11. 제 9 항 또는 제 10 항에 있어서,
    상기 제 1 저장 유닛으로의 상기 맵핑이 상기 메타데이터에서 존재하지 않을 때, 상기 제어 유닛은 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태 이외의 다른 상태인 것으로 결정하는 것인, 정보 처리 시스템.
  12. 제 9 항 내지 제 11 항 중 어느 한 항에 있어서,
    상기 제어 유닛은, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태인 것으로 상기 제 1 처리에 의해 결정된 후에, 상기 제 1 저장 유닛에서 저장된 데이터에 대한 삭제 처리 명령이 수신될 때에는, 상기 삭제 대상 데이터의 어드레스로부터 상기 제 1 저장 유닛으로의 맵핑을 무효화하기 위하여 상기 메타데이터를 변경하기 위한 제 7 처리를 실행하는 것인, 정보 처리 시스템.
  13. 제 1 항 내지 제 8 항 중 어느 한 항에 있어서, 데이터 마이그레이션 로그 영역을 더 포함하고,
    상기 제 3 처리에서, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태인 것으로 상기 제 1 처리에 의해 결정될 때, 상기 제어 유닛은 상기 제 1 저장 유닛에서 기록된 데이터의 어드레스를 상기 데이터 마이그레이션 로그 영역에서 레코딩하며,
    상기 제 2 처리에서, 상기 제어 유닛은, 판독 처리 시에 판독 대상 어드레스가 상기 데이터 마이그레이션 로그 영역에서 레코딩될 때에 상기 제 2 저장 유닛으로부터 데이터를 판독하고, 상기 판독 대상 어드레스가 상기 데이터 마이그레이션 로그 영역에서 레코딩되지 않을 때에 상기 제 1 저장 유닛으로부터 데이터를 판독하는 것인, 정보 처리 시스템.
  14. 제 13 항에 있어서,
    상기 제어 유닛은, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태인 것으로 상기 제 1 처리에 의해 결정된 후에, 상기 제 1 저장 유닛에서 저장된 데이터에 대한 삭제 처리 명령이 수신될 때에는, 상기 삭제 처리 명령에 의한 삭제 대상 데이터의 어드레스를 상기 데이터 마이그레이션 로그 영역에서 레코딩하기 위한 제 8 처리를 실행하는 것인, 정보 처리 시스템.
  15. 제 13 항에 있어서,
    상기 제어 유닛은, 상기 제 1 저장 유닛에서 기록된 데이터 중에서 상기 제 2 저장 유닛으로 마이그레이팅되어야 할 데이터를 선택하고, 마이그레이팅되어야 할 상기 데이터에 대응하는 모든 어드레스들이 상기 데이터 마이그레이션 로그 영역에서 저장될 때, 상기 제 1 저장 유닛의 상기 보호된 상태를 종료시키기 위한 제 9 처리를 실행하는 것인, 정보 처리 시스템.
  16. 제 13 항 내지 제 15 항 중 어느 한 항에 있어서,
    상기 데이터 마이그레이션 로그 영역은 상기 제 2 저장 유닛에서 저장되는 것인, 정보 처리 시스템.
  17. 제 13 항 내지 제 16 항 중 어느 한 항에 있어서,
    상기 제 3 처리에서, 상기 데이터 마이그레이션 로그 영역에서 제 1 어드레스를 레코딩할 시에, 상기 제 1 어드레스와 중첩되거나 상기 제 1 어드레스에 연속적인 제 2 어드레스가 상기 데이터 마이그레이션 로그 영역에서 이미 저장되어 있을 때, 상기 제어 유닛은 상기 데이터 마이그레이션 로그 영역에서 상기 제 1 어드레스 및 상기 제 2 어드레스를 조합함으로써 얻어진 제 3 어드레스를 레코딩하고, 상기 제 2 어드레스를 무효화하는 것인, 정보 처리 시스템.
  18. 제 1 항에 있어서,
    상기 제 1 저장 유닛 및 상기 정보 처리 디바이스와의 통신을 수행하도록 구성된 중계 유닛을 더 포함하고,
    상기 중계 유닛은, 상기 제 1 저장 유닛으로부터 취득된 신뢰성 정보에 기초하여 상기 제 1 저장 유닛의 상태를 결정하고, 상기 저장 유닛의 상기 상태가 상기 보호된 상태인 것으로 결정될 때, 상기 제 1 저장 유닛이 판독 및 기록 동작들 중의 판독 동작만을 지원하는 저장 유닛임을 표시하는 저장 유닛 정보를 상기 정보 처리 디바이스로 송신하며,
    상기 저장 유닛 정보를 수신할 시에, 상기 제어 유닛은, 상기 제 1 처리에서, 상기 제 1 저장 유닛의 상태가 상기 보호된 상태인 것으로 결정하는 것인, 정보 처리 시스템.
  19. 판독가능하고 기록가능한 제 1 메모리를 포함하는 제 1 저장 유닛과 판독가능하고 기록가능한 제 2 메모리를 포함하는 제 2 저장 유닛에 접속될 수 있는 정보 처리 디바이스에 로딩된 제어 프로그램으로서, 상기 제어 프로그램은, 상기 정보 처리 디바이스로 하여금,
    상기 제 1 저장 유닛으로부터 취득된 신뢰성 정보에 기초하여 상기 제 1 저장 유닛의 저장 스테이터스를 결정하기 위한 제 1 처리;
    상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 제 1 처리에 의해 보호된 상태로서 인식될 때, 상기 제 1 저장 유닛 및 상기 제 2 저장 유닛 중 상기 제 2 저장 유닛 상에서만 기록을 실행하고, 상기 제 1 저장 유닛 및 상기 제 2 저장 유닛 중 적어도 하나의 저장 유닛 상에서 판독을 실행하기 위한 제 2 처리, 및
    상기 제 2 처리에 의한 상기 기록에 따라 상기 제 1 저장 유닛 및 상기 제 2 저장 유닛에서 저장된 데이터의 어드레스들을 업데이트하기 위한 제 3 처리
    를 실행하게 하는 것인, 제어 프로그램.
  20. 제 19 항에 있어서,
    상기 정보 처리 디바이스는, 상기 제 1 처리에서 상기 신뢰성 정보 및 문턱치의 비교를 수행하고, 상기 비교에 기초하여, 상기 제 1 저장 유닛의 수명 종료 조건이 충족된다고 결정할 때, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태인 것으로 결정하는 것인, 제어 프로그램.
  21. 제 19 항에 있어서, 상기 정보 처리 디바이스로 하여금, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 제 1 처리에 의해 낮은 신뢰성 상태로서 인식될 때, 상기 제 2 저장 유닛이 상기 제 1 저장 유닛에서 저장된 데이터의 데이터 마이그레이션 목적지 상태에 있는 것으로 인식하고, 상기 제 1 저장 유닛의 상기 저장 스테이터스를 상기 보호된 상태로 변경하기 위한 제 4 처리를 또한 실행하게 하는 것인, 제어 프로그램.
  22. 제 19 항 내지 제 21 항 중 어느 한 항에 있어서,
    상기 정보 처리 디바이스는, 상기 제 3 처리에서, 동일한 어드레스의 데이터가 상기 제 1 저장 유닛 및 상기 제 2 저장 유닛 중 하나의 저장 유닛에서 존재하도록, 상기 제 1 저장 유닛 및 상기 제 2 저장 유닛에서 상기 저장된 데이터의 상기 어드레스들을 관리하는 것인, 제어 프로그램.
  23. 제 22 항에 있어서,
    상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태로서 인식될 때, 상기 정보 처리 디바이스는 상기 제 3 처리에서, 상기 제 1 저장 유닛 및 상기 제 2 저장 유닛을 동일한 논리 유닛으로서 인식하는 것인, 제어 프로그램.
  24. 제 23 항에 있어서,
    상기 정보 처리 디바이스는 판독가능하고 기록가능한 제 3 메모리들을 포함하는 하나 또는 복수의 제 3 저장 유닛들에 접속가능하고,
    상기 제어 프로그램은 또한, 상기 정보 처리 디바이스로 하여금, RAID를 구성하기 위하여 상기 하나 또는 복수의 제 3 저장 유닛들 및 상기 제 1 저장 유닛을 제어하기 위한 제 5 처리를 실행하게 하며,
    상기 정보 처리 디바이스는, 상기 제 5 처리에서, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태로서 인식될 때, 상기 RAID를 구성하기 위하여 상기 하나 또는 복수의 제 3 저장 유닛 및 상기 논리 유닛을 제어하는 것인, 제어 프로그램.
  25. 제 21 항 내지 제 24 항 중 어느 한 항에 있어서,
    상기 제 1 처리에서, 상기 정보 처리 디바이스는, 상기 신뢰성 정보 및 상기 문턱치의 비교를 수행하고, 상기 비교에 기초하여, 상기 제 1 저장 유닛의 수명 종료 조건이 충족된다라고 결정할 때, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 낮은 신뢰성 상태인 것으로 결정하는 것인, 제어 프로그램.
  26. 제 19 항 내지 제 25 항 중 어느 한 항에 있어서,
    상기 제 2 처리에서, 상기 정보 처리 디바이스는 상기 제 2 저장 유닛에서 상기 제 1 저장 유닛으로부터 판독된 데이터를 기록하기 위한 처리를 상기 판독 처리와 병렬로 실행하는 것인, 제어 프로그램.
  27. 제 19 항 내지 제 26 항 중 어느 한 항에 있어서,
    상기 정보 처리 디바이스는 메타데이터를 저장하도록 구성된 메타데이터 저장 유닛에 접속되고,
    상기 제 3 처리에서, 상기 정보 처리 디바이스는, 상기 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태가 아닌 것으로 상기 제 1 처리에 의해 결정될 때, 상기 메타데이터에서, 상기 제 1 저장 유닛에서 기록된 데이터의 어드레스로부터 상기 제 1 저장 유닛으로의 맵핑을 레코딩하고, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태인 것으로 상기 제 1 처리에 의해 결정될 때, 상기 메타데이터에서, 상기 제 2 저장 유닛에서 기록된 데이터의 어드레스로부터 상기 제 2 저장 유닛으로의 맵핑을 레코딩하며,
    상기 제 2 처리에서, 판독 처리 시에, 상기 정보 처리 디바이스는, 판독 대상 어드레스로부터 상기 제 1 저장 유닛으로의 맵핑이 상기 메타데이터에서 레코딩될 때에 상기 제 1 저장 유닛으로부터 상기 데이터를 판독하고, 상기 판독 대상 어드레스로부터 상기 제 2 저장 유닛으로의 맵핑이 상기 메타데이터에서 레코딩될 때에 상기 제 2 저장 유닛으로부터 상기 데이터를 판독하는 것인, 제어 프로그램.
  28. 제 19 항 내지 제 26 항 중 어느 한 항에 있어서, 상기 정보 처리 디바이스로 하여금, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태인 것으로 상기 제 1 처리에 의해 결정될 때, 상기 제 1 저장 유닛에서 저장된 제 1 메타데이터를 상기 제 2 저장 유닛에서 제 2 메타데이터로서 저장하고, 상기 제 2 메타데이터를 이용하여 상기 제 1 저장 유닛 및 상기 제 2 저장 유닛에서 상기 저장된 데이터의 상기 어드레스들을 관리하기 위한 제 6 처리를 또한 실행하게 하고,
    상기 제 3 처리에서, 상기 정보 처리 디바이스는, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태가 아닌 것으로 상기 제 1 처리에 의해 결정될 때, 상기 제 1 메타데이터에서, 상기 제 1 저장 유닛에서 기록된 데이터의 어드레스로부터 상기 제 1 저장 유닛으로의 맵핑을 레코딩하고, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태인 것으로 상기 제 1 처리에 의해 결정될 때, 상기 제 2 메타데이터에서, 상기 제 2 저장 유닛에서 기록된 데이터의 어드레스로부터 상기 제 2 저장 유닛으로의 맵핑을 레코딩하는 것인, 제어 프로그램.
  29. 제 27 항 또는 제 28 항에 있어서,
    상기 제 1 저장 유닛으로의 상기 맵핑이 상기 메타데이터에서 존재하지 않을 때, 상기 정보 처리 디바이스는 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태 이외의 다른 상태인 것으로 결정하는 것인, 제어 프로그램.
  30. 제 27 항 내지 제 29 항 중 어느 한 항에 있어서, 상기 정보 처리 디바이스로 하여금, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태인 것으로 상기 제 1 처리에 의해 결정된 후에, 상기 제 1 저장 유닛에서 저장된 데이터에 대한 삭제 처리 명령이 수신될 때에는, 상기 삭제 대상 데이터의 어드레스로부터 상기 제 1 저장 유닛으로의 맵핑을 무효화하기 위하여 상기 메타데이터를 변경하기 위한 제 7 처리를 또한 실행하게 하는 것인, 제어 프로그램.
  31. 제 19 항 내지 제 26 항 중 어느 한 항에 있어서,
    상기 정보 처리 디바이스는 데이터 마이그레이션 로그 영역에 접속되고,
    상기 제 3 처리에서, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태인 것으로 상기 제 1 처리에 의해 결정될 때, 상기 정보 처리 디바이스는 상기 제 1 저장 유닛에서 기록된 데이터의 어드레스를 상기 데이터 마이그레이션 로그 영역에서 레코딩하며,
    상기 제 2 처리에서, 상기 정보 처리 디바이스는, 판독 처리 시에 판독 대상 어드레스가 상기 데이터 마이그레이션 로그 영역에서 레코딩될 때에 상기 제 2 저장 유닛으로부터 데이터를 판독하고, 상기 판독 대상 어드레스가 상기 데이터 마이그레이션 로그 영역에서 레코딩되지 않을 때에 상기 제 1 저장 유닛으로부터 데이터를 판독하는 것인, 제어 프로그램.
  32. 제 31 항에 있어서, 상기 정보 처리 디바이스로 하여금, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태인 것으로 상기 제 1 처리에 의해 결정된 후에, 상기 제 1 저장 유닛에서 저장된 데이터에 대한 삭제 처리 명령이 수신될 때에는, 상기 삭제 처리 명령에 의한 삭제 대상 데이터의 어드레스를 상기 데이터 마이그레이션 로그 영역에서 레코딩하기 위한 제 8 처리를 또한 실행하게 하는 것인, 제어 프로그램.
  33. 제 31 항에 있어서, 상기 정보 처리 디바이스로 하여금, 상기 제 1 저장 유닛에서 기록된 데이터 중에서 상기 제 2 저장 유닛으로 마이그레이팅되어야 할 데이터를 선택하고, 마이그레이팅되어야 할 상기 데이터에 대응하는 모든 어드레스들이 상기 데이터 마이그레이션 로그 영역에서 저장될 때, 상기 제 1 저장 유닛의 상기 보호된 상태를 종료시키기 위한 제 9 처리를 또한 실행하게 하는 것인, 제어 프로그램.
  34. 제 31 항 내지 제 33 항 중 어느 한 항에 있어서, 상기 정보 처리 디바이스로 하여금, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태인 것으로 상기 제 1 처리 유닛에 의해 결정될 때, 상기 데이터 마이그레이션 로그 영역을 상기 제 2 저장 유닛에 할당하기 위한 제 11 처리를 또한 실행하게 하는 것인, 제어 프로그램.
  35. 제 31 항 내지 제 34 항 중 어느 한 항에 있어서,
    상기 제 3 처리에서, 상기 데이터 마이그레이션 로그 영역에서 제 1 어드레스를 레코딩할 시에, 상기 제 1 어드레스와 중첩되거나 상기 제 1 어드레스에 연속적인 제 2 어드레스가 상기 데이터 마이그레이션 로그 영역에서 이미 저장되어 있을 때, 상기 정보 처리 디바이스는 상기 데이터 마이그레이션 로그 영역에서 상기 제 1 어드레스 및 상기 제 2 어드레스를 조합함으로써 얻어진 제 3 어드레스를 레코딩하고, 상기 제 2 어드레스를 무효화하는 것인, 제어 프로그램.
  36. 제 19 항에 있어서,
    상기 정보 처리 디바이스는 중계 유닛을 통해 상기 제 1 저장 유닛에 접속가능하고,
    상기 중계 유닛으로부터, 상기 제 1 저장 유닛이 판독 및 기록 동작들 중의 판독 동작만을 지원하는 저장 유닛임을 표시하는 저장 유닛 정보를 수신할 시에, 상기 정보 처리 디바이스는 상기 제 1 처리에서, 상기 제 1 저장 유닛의 상기 상태가 상기 보호된 상태인 것으로 결정하는 것인, 제어 프로그램.
  37. 판독가능하고 기록가능한 제 1 메모리를 포함하는 제 1 저장 유닛 및 판독가능하고 기록가능한 제 2 메모리를 포함하는 제 2 저장 유닛에 접속할 수 있는 정보 처리 디바이스로서,
    상기 정보 처리 디바이스는,
    상기 제 1 저장 유닛으로부터 취득된 신뢰성 정보에 기초하여 상기 제 1 저장 유닛의 저장 스테이터스를 결정하기 위한 제 1 처리,
    상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 제 1 처리에 의해 보호된 상태로서 인식될 때, 상기 제 1 저장 유닛 및 상기 제 2 저장 유닛 중 상기 제 2 저장 유닛 상에서만 기록을 실행하고, 상기 제 1 저장 유닛 및 상기 제 2 저장 유닛 중 적어도 하나의 저장 유닛 상에서 판독을 실행하기 위한 제 2 처리, 및
    상기 제 2 처리에 의한 상기 기록에 따라 상기 제 1 저장 유닛 및 상기 제 2 저장 유닛에서 저장된 데이터의 어드레스들을 업데이트하기 위한 제 3 처리
    를 실행하도록 구성된 제어 유닛을 포함하는 것인, 정보 처리 디바이스.
  38. 제 37 항에 있어서,
    상기 제어 유닛은, 상기 제 1 처리에서 상기 신뢰성 정보 및 문턱치의 비교를 수행하고, 상기 비교에 기초하여, 상기 제 1 저장 유닛의 수명 종료 조건이 충족된다고 결정할 때, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태인 것으로 결정하는 것인, 정보 처리 디바이스.
  39. 제 37 항에 있어서,
    상기 제어 유닛은, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 제 1 처리에 의해 낮은 신뢰성 상태로서 인식될 때, 상기 제 2 저장 유닛이 상기 제 1 저장 유닛에서 저장된 데이터의 데이터 마이그레이션 목적지 상태에 있는 것으로 인식하고 상기 제 1 저장 유닛의 상기 저장 스테이터스를 상기 보호된 상태로 변경하기 위한 제 4 처리를 실행하는 것인, 정보 처리 디바이스.
  40. 제 37 항 내지 제 39 항 중 어느 한 항에 있어서,
    상기 제어 유닛은, 상기 제 3 처리에서, 동일한 어드레스의 데이터가 상기 제 1 저장 유닛 및 상기 제 2 저장 유닛 중 하나의 저장 유닛에서 존재하도록, 상기 제 1 저장 유닛 및 상기 제 2 저장 유닛에서 상기 저장된 데이터의 상기 어드레스들을 관리하는 것인, 정보 처리 디바이스.
  41. 제 40 항에 있어서,
    상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태로서 인식될 때, 상기 제어 유닛은 상기 제 3 처리에서, 상기 제 1 저장 유닛 및 상기 제 2 저장 유닛을 동일한 논리 유닛으로서 인식하는 것인, 정보 처리 디바이스.
  42. 제 41 항에 있어서,
    상기 정보 처리 디바이스는 판독가능하고 기록가능한 제 3 메모리들을 포함하는 하나 또는 복수의 제 3 저장 유닛들에 접속가능하고,
    상기 제어 유닛은, RAID를 구성하기 위하여 상기 하나 또는 복수의 제 3 저장 유닛들 및 상기 제 1 저장 유닛을 제어하기 위한 제 5 처리를 실행하고, 상기 제 5 처리에서, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태로서 인식될 때, 상기 RAID를 구성하기 위하여 상기 하나 또는 복수의 제 3 저장 유닛들 및 상기 논리 유닛을 제어하는 것인, 정보 처리 디바이스.
  43. 제 39 항 내지 제 42 항 중 어느 한 항에 있어서,
    상기 제 1 처리에서, 상기 제어 유닛은, 상기 신뢰성 정보 및 상기 문턱치의 비교를 수행하고, 상기 비교에 기초하여, 상기 제 1 저장 유닛의 수명 종료 조건이 충족된다고 결정할 때, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 낮은 신뢰성 상태인 것으로 결정하는 것인, 정보 처리 디바이스.
  44. 제 37 항 내지 제 43 항 중 어느 한 항에 있어서,
    상기 제 2 처리에서, 상기 제어 유닛은, 상기 제 2 저장 유닛에서 상기 제 1 저장 유닛으로부터 판독된 데이터를 기록하기 위한 처리를 상기 판독 처리와 병렬로 실행하는 것인, 정보 처리 디바이스.
  45. 제 37 항 내지 제 44 항 중 어느 한 항에 있어서,
    상기 정보 처리 디바이스는 메타데이터를 저장하도록 구성된 메타데이터 저장 유닛에 접속되고,
    상기 제 3 처리에서, 상기 제어 유닛은, 상기 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태가 아닌 것으로 상기 제 1 처리에 의해 결정될 때, 상기 메타데이터에서, 상기 제 1 저장 유닛에서 기록된 데이터의 어드레스로부터 상기 제 1 저장 유닛으로의 맵핑을 레코딩하고, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태인 것으로 상기 제 1 처리에 의해 결정될 때, 상기 메타데이터에서, 상기 제 2 저장 유닛에서 기록된 데이터의 어드레스로부터 상기 제 2 저장 유닛으로의 맵핑을 레코딩하며,
    상기 제 2 처리에서, 판독 처리 시에, 상기 제어 유닛은, 판독 대상 어드레스로부터 상기 제 1 저장 유닛으로의 맵핑이 상기 메타데이터에서 레코딩될 때에 상기 제 1 저장 유닛으로부터 상기 데이터를 판독하고, 상기 판독 대상 어드레스로부터 상기 제 2 저장 유닛으로의 맵핑이 상기 메타데이터에서 레코딩될 때에 상기 제 2 저장 유닛으로부터 상기 데이터를 판독하는 것인, 정보 처리 디바이스.
  46. 제 37 항 내지 제 44 항 중 어느 한 항에 있어서,
    상기 제어 유닛은, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태인 것으로 상기 제 1 처리에 의해 결정될 때, 상기 제 1 저장 유닛에서 저장된 제 1 메타데이터를 상기 제 2 저장 유닛에서 제 2 메타데이터로서 저장하고, 상기 제 2 메타데이터를 이용하여 상기 제 1 저장 유닛 및 상기 제 2 저장 유닛에서 상기 저장된 데이터의 상기 어드레스들을 관리하기 위한 제 6 처리를 실행하며,
    상기 제 3 처리에서, 상기 제어 유닛은, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태가 아닌 것으로 상기 제 1 처리에 의해 결정될 때, 상기 제 1 메타데이터에서, 상기 제 1 저장 유닛에서 기록된 데이터의 어드레스로부터 상기 제 1 저장 유닛으로의 맵핑을 레코딩하고, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태인 것으로 상기 제 1 처리에 의해 결정될 때, 상기 제 2 메타데이터에서, 상기 제 2 저장 유닛에서 기록된 데이터의 어드레스로부터 상기 제 2 저장 유닛으로의 맵핑을 레코딩하는 것인, 정보 처리 디바이스.
  47. 제 45 항 또는 제 46 항에 있어서,
    상기 제 1 저장 유닛으로의 상기 맵핑이 상기 메타데이터에서 존재하지 않을 때, 상기 제어 유닛은 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태 이외의 다른 상태인 것으로 결정하는 것인, 정보 처리 디바이스.
  48. 제 45 항 내지 제 47 항 중 어느 한 항에 있어서,
    상기 제어 유닛은, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태인 것으로 상기 제 1 처리에 의해 결정된 후에, 상기 제 1 저장 유닛에서 저장된 데이터에 대한 삭제 처리 명령이 수신될 때에는, 상기 삭제 대상 데이터의 어드레스로부터 상기 제 1 저장 유닛으로의 맵핑을 무효화하기 위하여 상기 메타데이터를 변경하기 위한 제 7 처리를 실행하는 것인, 정보 처리 디바이스.
  49. 제 37 항 내지 제 44 항 중 어느 한 항에 있어서,
    상기 정보 처리 디바이스는 데이터 마이그레이션 로그 영역에 접속되고,
    상기 제 3 처리에서, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태인 것으로 상기 제 1 처리에 의해 결정될 때, 상기 제어 유닛은 상기 제 1 저장 유닛에서 기록된 데이터의 어드레스를 상기 데이터 마이그레이션 로그 영역에서 레코딩하며,
    상기 제 2 처리에서, 상기 제어 유닛은, 판독 처리 시에 판독 대상 어드레스가 상기 데이터 마이그레이션 로그 영역에서 레코딩될 때에 상기 제 2 저장 유닛으로부터 데이터를 판독하고, 상기 판독 대상 어드레스가 상기 데이터 마이그레이션 로그 영역에서 레코딩되지 않을 때에 상기 제 1 저장 유닛으로부터 데이터를 판독하는 것인, 정보 처리 디바이스.
  50. 제 49 항에 있어서,
    상기 제어 유닛은, 상기 제 1 저장 유닛의 상기 저장 스테이터스가 상기 보호된 상태인 것으로 상기 제 1 처리에 의해 결정된 후에, 상기 제 1 저장 유닛에서 저장된 데이터에 대한 삭제 처리 명령이 수신될 때에는, 상기 삭제 처리 명령에 의한 삭제 대상 데이터의 어드레스를 상기 데이터 마이그레이션 로그 영역에서 레코딩하기 위한 제 8 처리를 실행하는 것인, 정보 처리 디바이스.
  51. 제 49 항에 있어서,
    상기 제어 유닛은, 상기 제 1 저장 유닛에서 기록된 데이터 중에서 상기 제 2 저장 유닛으로 마이그레이팅되어야 할 데이터를 선택하고, 마이그레이팅되어야 할 상기 데이터에 대응하는 모든 어드레스들이 상기 데이터 마이그레이션 로그 영역에서 저장될 때, 상기 제 1 저장 유닛의 상기 보호된 상태를 종료시키기 위한 제 9 처리를 실행하는 것인, 정보 처리 디바이스.
  52. 제 49 항 내지 제 51 항 중 어느 한 항에 있어서,
    상기 데이터 마이그레이션 로그 영역은 상기 제 2 저장 유닛에서 저장되는 것인, 정보 처리 디바이스.
  53. 제 49 항 내지 제 52 항 중 어느 한 항에 있어서,
    상기 제 3 처리에서, 상기 데이터 마이그레이션 로그 영역에서 제 1 어드레스를 레코딩할 시에, 상기 제 1 어드레스와 중첩되거나 상기 제 1 어드레스에 연속적인 제 2 어드레스가 상기 데이터 마이그레이션 로그 영역에서 이미 저장되어 있을 때, 상기 제어 유닛은 상기 데이터 마이그레이션 로그 영역에서 상기 제 1 어드레스 및 상기 제 2 어드레스를 조합함으로써 얻어진 제 3 어드레스를 레코딩하고, 상기 제 2 어드레스를 무효화하는 것인, 정보 처리 디바이스.
  54. 제 37 항에 있어서,
    상기 정보 처리 디바이스는 중계 유닛을 통해 상기 제 1 저장 유닛에 접속가능하고,
    상기 중계 유닛으로부터, 상기 제 1 저장 유닛이 판독 및 기록 동작들 중의 판독 동작만을 지원하는 저장 유닛임을 표시하는 저장 유닛 정보를 수신할 시에, 상기 정보 처리 디바이스는 상기 제 1 처리에서, 상기 제 1 저장 유닛의 상기 상태가 상기 보호된 상태인 것으로 결정하는 것인, 정보 처리 디바이스.
KR1020157023650A 2013-03-18 2013-08-29 정보 처리 시스템, 제어 프로그램, 및 정보 처리 디바이스 KR101803622B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2013055548A JP6005566B2 (ja) 2013-03-18 2013-03-18 情報処理システム、制御プログラムおよび情報処理装置
JPJP-P-2013-055548 2013-03-18
PCT/JP2013/073859 WO2014147865A1 (en) 2013-03-18 2013-08-29 Information processing system, control program, and information processing device

Publications (2)

Publication Number Publication Date
KR20150113158A true KR20150113158A (ko) 2015-10-07
KR101803622B1 KR101803622B1 (ko) 2017-12-28

Family

ID=49261689

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157023650A KR101803622B1 (ko) 2013-03-18 2013-08-29 정보 처리 시스템, 제어 프로그램, 및 정보 처리 디바이스

Country Status (7)

Country Link
US (3) US9619170B2 (ko)
EP (1) EP2976713B1 (ko)
JP (1) JP6005566B2 (ko)
KR (1) KR101803622B1 (ko)
CN (1) CN105009085B (ko)
TW (1) TWI544326B (ko)
WO (1) WO2014147865A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180032352A (ko) * 2016-09-22 2018-03-30 삼성전자주식회사 가변 소거 유닛 크기를 가지는 스토리지 디바이스 및 이를 포함하는 레이드 스토리지 시스템
US10424238B2 (en) 2016-04-21 2019-09-24 Samsung Display Co., Ltd. Display device
KR102636753B1 (ko) * 2023-07-10 2024-02-16 스마트마인드 주식회사 워크스페이스 마이그레이션 방법 및 이러한 방법을수행하는 장치
KR102668905B1 (ko) * 2023-07-10 2024-05-24 스마트마인드 주식회사 서버 마이그레이션 방법 및 이러한 방법을 수행하는 장치

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11249652B1 (en) 2013-01-28 2022-02-15 Radian Memory Systems, Inc. Maintenance of nonvolatile memory on host selected namespaces by a common memory controller
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US10445229B1 (en) 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US9304685B2 (en) 2013-09-10 2016-04-05 Kabushiki Kaisha Toshiba Storage array system and non-transitory recording medium storing control program
KR20150122825A (ko) * 2014-04-23 2015-11-03 에스케이하이닉스 주식회사 메모리 컨트롤 유닛 및 그것을 포함하는 데이터 저장 장치
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
KR102360211B1 (ko) * 2015-01-21 2022-02-08 삼성전자주식회사 메모리 시스템의 동작 방법
CN104615550B (zh) * 2015-01-27 2019-01-18 华为技术有限公司 一种存储设备坏块的处理方法、装置及存储设备
TWI510916B (zh) * 2015-02-05 2015-12-01 緯創資通股份有限公司 儲存裝置壽命監控系統以及其儲存裝置壽命監控方法
US10552047B2 (en) * 2015-02-23 2020-02-04 Toshiba Memory Corporation Memory system
US9696935B2 (en) 2015-04-24 2017-07-04 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device
US20160321010A1 (en) 2015-04-28 2016-11-03 Kabushiki Kaisha Toshiba Storage system having a host directly manage physical data locations of storage device
CN104978240B (zh) * 2015-04-30 2018-03-13 努比亚技术有限公司 一种数据恢复方法及终端
US9959046B2 (en) * 2015-12-30 2018-05-01 Samsung Electronics Co., Ltd. Multi-streaming mechanism to optimize journal based data storage systems on SSD
US9946596B2 (en) 2016-01-29 2018-04-17 Toshiba Memory Corporation Global error recovery system
US10255092B2 (en) * 2016-02-09 2019-04-09 Airwatch Llc Managed virtual machine deployment
US9886209B2 (en) * 2016-02-16 2018-02-06 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Controlling file placement on a disk drive to improve file access
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
CN107203552B (zh) * 2016-03-17 2021-12-28 阿里巴巴集团控股有限公司 垃圾回收方法及装置
US11112990B1 (en) 2016-04-27 2021-09-07 Pure Storage, Inc. Managing storage device evacuation
US11809727B1 (en) 2016-04-27 2023-11-07 Pure Storage, Inc. Predicting failures in a storage system that includes a plurality of storage devices
US9841921B2 (en) * 2016-04-27 2017-12-12 Pure Storage, Inc. Migrating data in a storage array that includes a plurality of storage devices
US9858003B2 (en) 2016-05-02 2018-01-02 Toshiba Memory Corporation Storage system that reliably stores lower page data
KR102452994B1 (ko) * 2016-09-06 2022-10-12 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그 동작 방법
CN107025066A (zh) * 2016-09-14 2017-08-08 阿里巴巴集团控股有限公司 在基于闪存的存储介质中写入存储数据的方法和装置
US9971510B2 (en) * 2016-10-16 2018-05-15 Mediatek Inc. Method for managing memory and associated microcontroller
WO2018094708A1 (zh) * 2016-11-26 2018-05-31 华为技术有限公司 数据迁移的方法、主机、及固态存储设备
KR20180061851A (ko) * 2016-11-30 2018-06-08 삼성전자주식회사 바이트 액세서블 인터페이스 및 블록 액세서블 인터페이스를 지원하는 스토리지 장치 및 이를 포함하는 전자 시스템
US10452290B2 (en) 2016-12-19 2019-10-22 Pure Storage, Inc. Block consolidation in a direct-mapped flash storage system
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US10410560B2 (en) * 2017-03-16 2019-09-10 Intel Corporation Display controller testing through high speed communications switch
WO2018176265A1 (zh) * 2017-03-29 2018-10-04 华为技术有限公司 分布式存储系统的访问方法和相关装置和相关系统
CN109144708B (zh) 2017-06-16 2021-07-09 宏达国际电子股份有限公司 电子计算装置及调整一内存回收函数的触发机制的方法
US10228873B2 (en) * 2017-06-28 2019-03-12 International Business Machines Corporation Swapping tape cartridges in tape libraries
KR102661931B1 (ko) * 2017-09-21 2024-05-02 삼성전자주식회사 오류 정정 코드를 지원하는 장치 및 그것의 테스트 방법
US11314635B1 (en) * 2017-12-12 2022-04-26 Amazon Technologies, Inc. Tracking persistent memory usage
KR102485812B1 (ko) * 2017-12-19 2023-01-09 에스케이하이닉스 주식회사 메모리 시스템과 메모리 시스템의 동작방법 및 메모리 시스템을 포함하는 데이터 처리 시스템
JP7011160B2 (ja) 2018-01-15 2022-01-26 株式会社バッファロー ストレージ装置、ストレージシステム、及びプログラム
JP2019139628A (ja) * 2018-02-14 2019-08-22 富士ゼロックス株式会社 情報処理装置、情報処理システム及びプログラム
JP6901427B2 (ja) * 2018-03-27 2021-07-14 キオクシア株式会社 ストレージ装置、コンピュータシステムおよびストレージ装置の動作方法
KR102620255B1 (ko) * 2018-05-18 2024-01-04 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
CN108648778B (zh) * 2018-05-21 2020-10-09 深圳忆联信息系统有限公司 一种固态硬盘读系统及其方法
CN110688056B (zh) * 2018-07-05 2024-10-01 北京忆恒创源科技股份有限公司 Nvm组的存储介质替换
JP7089423B2 (ja) * 2018-07-12 2022-06-22 ルネサスエレクトロニクス株式会社 情報処理装置及び制御方法
CN110737393B (zh) * 2018-07-20 2023-08-11 伊姆西Ip控股有限责任公司 数据读取方法、设备和计算机程序产品
JP7053399B2 (ja) 2018-07-31 2022-04-12 キオクシア株式会社 情報処理システム
US11621039B2 (en) * 2018-08-03 2023-04-04 Kioxia Corporation Semiconductor memory device, memory system, and write method
US10943651B2 (en) * 2018-08-03 2021-03-09 Toshiba Memory Corporation Semiconductor memory device, memory system, and write method
KR20200019513A (ko) * 2018-08-14 2020-02-24 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그 동작 방법
CN110865985B (zh) * 2018-08-28 2024-04-16 阿里巴巴新加坡控股有限公司 数据同步方法、装置、电子设备和存储介质
CN111104047B (zh) * 2018-10-25 2023-08-25 伊姆西Ip控股有限责任公司 管理冗余磁盘阵列的方法、设备和计算机可读存储介质
TWI709042B (zh) 2018-11-08 2020-11-01 慧榮科技股份有限公司 用來進行關於容錯式磁碟陣列的映射資訊管理之方法與裝置以及儲存系統
TWI701595B (zh) * 2018-12-28 2020-08-11 技嘉科技股份有限公司 記憶體的效能優化方法以及使用其的主機板
KR20200085513A (ko) 2019-01-07 2020-07-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
US10762048B2 (en) * 2019-01-28 2020-09-01 International Business Machines Corporation Dynamically increasing available storage space in a storage volume
WO2020155431A1 (en) * 2019-01-31 2020-08-06 Huawei Technologies Co., Ltd. Method and apparatus for accessing caches in clustered storage systems
US12087382B2 (en) * 2019-04-11 2024-09-10 Pure Storage, Inc. Adaptive threshold for bad flash memory blocks
US10924587B1 (en) * 2019-05-01 2021-02-16 Amazon Technologies, Inc. Live migration for highly available data stores
US11119994B1 (en) * 2019-06-06 2021-09-14 Amazon Technologies, Inc. Record-by-record live migration using segmentation
US11309032B2 (en) 2019-11-26 2022-04-19 Samsung Electronics Co., Ltd. Operating method of memory system including memory controller and nonvolatile memory device
JP7321917B2 (ja) 2019-12-16 2023-08-07 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置およびファイルアクセス方法
JP7271410B2 (ja) * 2019-12-16 2023-05-11 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置およびファイル記録方法
JP7316204B2 (ja) 2019-12-16 2023-07-27 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置およびファイルアクセス方法
JP7521249B2 (ja) 2020-04-17 2024-07-24 株式会社リコー 画像形成装置、nand型フラッシュメモリの寿命予測方法、及びプログラム
US11175828B1 (en) * 2020-05-14 2021-11-16 EMC IP Holding Company LLC Mitigating IO processing performance impacts in automated seamless migration
US11733900B2 (en) 2020-06-15 2023-08-22 Samsung Electronics Co., Ltd. Prompt and gradual migration schemes
US12026055B2 (en) 2020-07-13 2024-07-02 Samsung Electronics Co., Ltd. Storage device with fault resilient read-only mode
KR20220103378A (ko) 2021-01-15 2022-07-22 에스케이하이닉스 주식회사 메모리 시스템에 저장된 데이터를 처리하는 장치 및 방법
CN112988081B (zh) * 2021-05-17 2021-08-17 浙江正泰仪器仪表有限责任公司 一种电量数据存储、抄读方法
CN114828004B (zh) * 2022-04-28 2024-01-26 广州通则康威科技股份有限公司 小程序自动获取无线网络设备ip的方法及装置
US12007902B2 (en) * 2022-11-09 2024-06-11 Andes Technology Corporation Configurable memory system and memory managing method thereof

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3070168B2 (ja) 1991-08-27 2000-07-24 ダイキン工業株式会社 加湿装置
JP3565687B2 (ja) 1997-08-06 2004-09-15 沖電気工業株式会社 半導体記憶装置およびその制御方法
US6529992B1 (en) 1999-07-26 2003-03-04 Iomega Corporation Self-contained application disk for automatically launching application software or starting devices and peripherals
JP3767818B2 (ja) 2002-10-28 2006-04-19 株式会社サスライト 着脱式デバイス及びプログラムの起動方法
JP2004220450A (ja) 2003-01-16 2004-08-05 Hitachi Ltd ストレージ装置、その導入方法、及びその導入プログラム
JP2004272527A (ja) 2003-03-07 2004-09-30 Hitachi Ltd ディスクアレイ装置および障害回復制御方法
JP4327585B2 (ja) 2003-12-25 2009-09-09 株式会社東芝 記憶装置
JP4815825B2 (ja) 2005-03-10 2011-11-16 日本電気株式会社 ディスクアレイ装置及びその再構築方法
JP2006293760A (ja) 2005-04-12 2006-10-26 Toshiba Corp 情報処理装置
JP2006331158A (ja) * 2005-05-27 2006-12-07 Hitachi Ltd ストレージシステム
JP4643456B2 (ja) 2006-01-13 2011-03-02 株式会社日立製作所 アクセスの設定方法
JP2007199953A (ja) 2006-01-25 2007-08-09 Fujitsu Ltd ディスクアレイ装置およびディスクアレイ制御方法
US7861122B2 (en) 2006-01-27 2010-12-28 Apple Inc. Monitoring health of non-volatile memory
US7747813B2 (en) 2006-11-24 2010-06-29 Sandforce, Inc. Multi-memory device system and method for managing a lifetime thereof
TW200837551A (en) 2007-03-02 2008-09-16 A Data Technology Co Ltd Storage device capable of cooperating to adjust reliability, method for establishing and input data thereof
US20090063895A1 (en) * 2007-09-04 2009-03-05 Kurt Smith Scaleable and maintainable solid state drive
JP5142692B2 (ja) 2007-12-11 2013-02-13 株式会社東芝 不揮発性半導体記憶装置
US8706950B2 (en) 2008-03-01 2014-04-22 Kabushiki Kaisha Toshiba Memory system
JP4643671B2 (ja) 2008-03-11 2011-03-02 株式会社東芝 メモリシステム
JP5052376B2 (ja) 2008-03-21 2012-10-17 株式会社日立製作所 ストレージシステム及びストレージシステムにおける論理ユニットの引継方法
US8037380B2 (en) 2008-07-08 2011-10-11 International Business Machines Corporation Verifying data integrity of a non-volatile memory system during data caching process
US8041991B2 (en) * 2008-11-18 2011-10-18 Lsi Corporation System and method for recovering solid state drive data
JP5275052B2 (ja) 2009-01-08 2013-08-28 株式会社東芝 不揮発性半導体記憶装置
JP5457698B2 (ja) 2009-03-25 2014-04-02 株式会社東芝 ファイルバックアップ装置およびその方法
JP4764490B2 (ja) 2009-03-30 2011-09-07 株式会社東芝 ハードウェア使用状況に応じたユーザー評価装置
US8284601B2 (en) 2009-04-01 2012-10-09 Samsung Electronics Co., Ltd. Semiconductor memory device comprising three-dimensional memory cell array
US8176367B2 (en) * 2009-05-28 2012-05-08 Agere Systems Inc. Systems and methods for managing end of life in a solid state drive
KR101626117B1 (ko) 2009-06-22 2016-05-31 삼성전자주식회사 클라우드 스토리지를 제공하는 클라이언트, 중개 서버 및 방법
JP2011164994A (ja) 2010-02-10 2011-08-25 Toshiba Corp メモリシステム
JP5017407B2 (ja) 2010-03-24 2012-09-05 株式会社東芝 半導体記憶装置
JP5214656B2 (ja) 2010-03-29 2013-06-19 株式会社東芝 評価装置および評価プログラム
US8677093B2 (en) 2010-04-19 2014-03-18 Hitachi, Ltd. Method and apparatus to manage tier information
JP2012022619A (ja) * 2010-07-16 2012-02-02 Alpine Electronics Inc 電子装置およびデータ記録制御方法
JP5238791B2 (ja) 2010-11-10 2013-07-17 株式会社東芝 転送機能を有するメモリノードを相互に接続したストレージ装置及びデータ処理方法
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 株式会社東芝 メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法、及びプログラム
JP2012203443A (ja) 2011-03-23 2012-10-22 Toshiba Corp メモリシステムおよびメモリシステムの制御方法
EP2745203B1 (en) 2011-08-19 2016-09-21 Kabushiki Kaisha Toshiba Information processing apparatus
JP2013047913A (ja) 2011-08-29 2013-03-07 Toshiba Corp 情報処理装置、情報処理装置の制御方法、制御ツール、及びホスト装置
JP5611909B2 (ja) 2011-08-19 2014-10-22 株式会社東芝 情報処理装置、性能評価ツール、外部記憶装置の性能評価方法
JP5740296B2 (ja) 2011-12-16 2015-06-24 株式会社東芝 半導体記憶装置、半導体記憶装置の制御方法、制御プログラム
JP5586718B2 (ja) 2012-06-19 2014-09-10 株式会社東芝 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置
US9201784B2 (en) 2012-09-07 2015-12-01 Kabushiki Kaisha Toshiba Semiconductor storage device and method for controlling nonvolatile semiconductor memory
US8904119B2 (en) * 2012-10-31 2014-12-02 Lsi Corporation Method and structures for performing a migration of a logical volume with a serial attached SCSI expander

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10424238B2 (en) 2016-04-21 2019-09-24 Samsung Display Co., Ltd. Display device
KR20180032352A (ko) * 2016-09-22 2018-03-30 삼성전자주식회사 가변 소거 유닛 크기를 가지는 스토리지 디바이스 및 이를 포함하는 레이드 스토리지 시스템
KR102636753B1 (ko) * 2023-07-10 2024-02-16 스마트마인드 주식회사 워크스페이스 마이그레이션 방법 및 이러한 방법을수행하는 장치
KR102668905B1 (ko) * 2023-07-10 2024-05-24 스마트마인드 주식회사 서버 마이그레이션 방법 및 이러한 방법을 수행하는 장치

Also Published As

Publication number Publication date
JP2014182503A (ja) 2014-09-29
US9619170B2 (en) 2017-04-11
TW201437802A (zh) 2014-10-01
CN105009085A (zh) 2015-10-28
TWI544326B (zh) 2016-08-01
KR101803622B1 (ko) 2017-12-28
US20170160968A1 (en) 2017-06-08
US10089027B2 (en) 2018-10-02
EP2976713A1 (en) 2016-01-27
EP2976713B1 (en) 2021-05-05
JP6005566B2 (ja) 2016-10-12
US20180011649A1 (en) 2018-01-11
CN105009085B (zh) 2018-06-15
US20160011818A1 (en) 2016-01-14
WO2014147865A1 (en) 2014-09-25
US9811277B2 (en) 2017-11-07

Similar Documents

Publication Publication Date Title
KR101803622B1 (ko) 정보 처리 시스템, 제어 프로그램, 및 정보 처리 디바이스
US20230342039A1 (en) Information processing apparatus, method for controlling information processing apparatus, non-transitory recording medium storing control tool, host device, non-transitory recording medium storing performance evaluation tool, and performance evaluation method for external memory device
US20210141681A1 (en) Information processing device, external storage device, host device, relay device, control program, and control method of information processing device
US9910748B2 (en) Rebuilding process for storage array
US10474527B1 (en) Host-assisted error recovery
US9304685B2 (en) Storage array system and non-transitory recording medium storing control program
US10146435B2 (en) Storage system and data write method
JP5668163B2 (ja) 情報処理装置
JP5535383B2 (ja) ホスト装置および制御ツール
JP2016157470A (ja) 情報記録システム
JP7362863B2 (ja) 情報処理装置
JP6913797B2 (ja) 情報処理装置
JP2015084241A (ja) 情報処理装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right
GRNT Written decision to grant