Method and system for verifying an erased state of a data block
The method and system verify the erased state of SSD data blocks by assigning identifiers and states, ensuring complete erasure and enhancing SSD reliability and security.
Patent Information
- Application Number
- JP2023532502
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-11-30
- Filing Date
- 2021-11-18
- Publication Date
- 2025-06-25
- Estimated Expiration
- 2041-11-18
AI Technical Summary
Solid state drives (SSDs) face reliability issues due to cumulative changes in memory element characteristics during program and erase cycles, leading to reduced durability, and there are concerns about incomplete data erasure, especially in secure settings.
A method and system for verifying the erased state of data blocks by assigning a block identifier and an erased state to each block, using a block identifier to indicate system data, user data, or unmapped data, and an erase state to indicate erased or un-erased, with a verification process to ensure all user and unmapped data are erased.
Ensures complete data erasure without reading data from the host system, improving security and verification speed, and extending SSD lifespan by evenly distributing program and erase cycles.
Smart Images

Figure 0007698340000002 
Figure 0007698340000003 
Figure 0007698340000004
Abstract
Description
Technical Field
[0001] The present disclosure generally relates to methods and systems for verifying the erased state of data blocks, and more particularly, to methods and systems for verifying the erased state of data blocks in a solid state device by assigning a block identifier and an erased state to each of a plurality of data blocks.
Background Art
[0002] A solid state drive (SSD) is a solid state storage device that uses an integrated circuit assembly and stores data, for example, using flash components. A solid state drive (SSD) includes a high-speed interface connected to a controller chip and a plurality of memory elements or memory devices. The controller chip converts a high-speed protocol received via the high-speed interface into a protocol required by the memory elements. The memory elements include solid state memory devices (e.g., semiconductor devices). The controller controls the occurrence of read events and erase events in the memory elements. The memory elements in the SSD include a plurality of blocks. The plurality of blocks are the smallest erasable units in the memory. A block is subdivided into pages that are the smallest readable units of the memory, and a page is subdivided into sectors. Each sector has, for example, at least 512 bytes. Further, each byte generally has 8 consecutive bits. In a program and erase cycle (or write and erase), all pages within a block are erased, and then some but not all pages within the block are subsequently programmed (e.g., data is written).
[0003] As a result, solid state drives may have reliability issues. For example, during program and erase cycles, when a relatively high gate voltage is applied to the memory elements, it may cause cumulative and permanent changes in the memory element characteristics. For example, charges may be trapped in the gate oxide of the memory element via stress-induced leakage current (SILC). As the charges accumulate, the program or erase effect of the memory element becomes less reliable and the overall durability of the memory element decreases. Therefore, as a method of extending the life of the SSD, for example, program and erase cycles can be equally distributed among all the memory elements in the SSD to wear out all the memory elements at a similar rate.
[0004] In addition, regarding the ability (or inability) to securely erase a solid state memory device (SSD), there are also industrial concerns, especially in government and other security-conscious settings. For example, there is a history where manufacturers did not properly overwrite data when instructed to explicitly overwrite data by firmware-based secure erase / sanitization commands, and there are incomplete erasures as a result of improper overwrites that did not take into account the over-provisioned area. Therefore, there is a need for a method and system for verifying the erased state of each data block on a solid state drive (SSD). SUMMARY OF THE INVENTION PROBLEMS TO BE SOLVED BY THE INVENTION
[0005] According to one aspect, a method for verifying the erased state of a data block in a solid state memory device is disclosed, the method including assigning to each data block of a plurality of data blocks on a solid state drive a block identifier indicating whether it is system data, user data, or unmapped data, and an erase state indicating erased or un-erased.
[0006] According to another aspect, a solid state memory device is disclosed, the device including a solid state drive including a controller and a plurality of data blocks, a block identifier for each of the plurality of data blocks indicating whether it is system data, user data, or unmapped data, and a processor configured to assign an erase state indicating erased or not erased.
Brief Description of the Drawings
[0007] The scope of the present disclosure is best understood by reading the following detailed description of the exemplary embodiments in conjunction with the accompanying drawings. The drawings included are the following figures.
Figure 1
Figure 2
Figure 3
Modes for Carrying Out the Invention
[0008] Further applicable fields of the present disclosure will become apparent from the detailed description provided below. It should be understood that the detailed description of the exemplary embodiments is intended for illustrative purposes only and is not necessarily intended to limit the scope of the present disclosure.
[0009] System for Verifying Erasure State of Data Block FIG. 1 shows an embodiment of a solid state memory device 100. The embodiment of the solid state memory device 100 shown in FIG. 1 is provided by way of example only and may not cover all possible configurations of the solid state memory device 100 suitable for performing the functions as discussed herein, which will be apparent to those skilled in the art. For example, the computer system 300 shown in FIG. 3 and described in more detail below can be a suitable configuration of the solid state memory device 100.
[0010] According to an exemplary embodiment, the solid state memory device 100 can include an application layer 110, a system layer 120, and an SSD memory layer 130 (e.g., an SSD). The application layer 110 communicates with the system layer 120, and the communication can be performed, for example, via a central processing device (CPU) of a computing device. The system layer 120 communicates with the SSD memory layer 130, and the communication can be performed, for example, via a PCIe (Peripheral Component Interconnect Express) interface.
[0011] The application layer 110 can include a plurality of applications 112 (e.g., App-1, App-2, …, App-n), which can include software or programs that are capable of accessing media, data, and content when executed, for example, by a CPU or other processor.
[0012] The system layer 120 can be, for example, an operating system (OS) that manages computer hardware resources and provides common services for application software. The system layer 120 can represent operating systems such as Microsoft Windows and Linux. As shown in FIG. 1, the system layer 120 includes a file system 124 configured to issue write commands to, for example, a solid state drive controller 132.
[0013] According to one embodiment, the system layer 120 can also include or support a cache system or a memory system 122 for content. In one embodiment, the cache system or the memory system 122 can be, for example, a static random access memory (SRAM) or another type of memory. The file system 124 is shown within the cache system or the memory system 122 of FIG. 1, but the file system 124 can be located or configured elsewhere. For example, the file system 124 can be found on a network server or can be accessed via a distributed system. The SSD storage layer 130 includes an SSD controller 132 and a plurality of erasable data blocks 134. The SSD controller 132 is configured to receive, for example, write commands issued by the file system 124 of the system layer 120. Each of the erasable data blocks 134 of FIG. 1 is configured to store a page of data or content. For example, the erasable data block 134 is generally considered to be the smallest unit that can be erased at one time, for example, in a NAND flash memory.
[0014] Process for Verifying Erasure State of Data Block According to an exemplary embodiment, a method for verifying an erased state of a data block in a solid state memory device is disclosed. As shown in FIG. 2, in step 202, a block identifier and an erased state are assigned to each data block of a plurality of data blocks on a solid state drive. The block identifier indicates whether it is system data, user data, or unmapped data, and the erased state indicates erased or not erased. In step 204, the block identifier and the erased state of each data block of the plurality of data blocks can be described by a 1-byte bitmask. In step 206, the block identifier and the erased state of each data block of the plurality of data blocks can be read from a vendor-specific log. In step 208, a secure erase operation can be performed, and the secure erase operation is configured to erase all user data and unmapped data on the plurality of data blocks. In step 210, a verification process after the secure erase operation can be performed, and the verification process includes reading the state of each of the plurality of data blocks and verifying that the un-erased data blocks of the plurality of data blocks are system data blocks.
[0015] According to one embodiment, as disclosed above, each block is an erasable block to which a block identifier (e.g., type) and an erased state (erased or not erased) are assigned. For example, the block identifier (or type) of a block can include system data, user data, and unmapped data. The system data can be, for example, a block including SSD system data. The user data can be a block including data stored by a user, and the unmapped data can be a temporary block for firmware management, and the temporary block can be either a system data block or a user data block. For example, as described above, data can be written to one or more of a plurality of data blocks using a controller.
[0016] According to an exemplary embodiment, the following table illustrates, for example, an exemplary block status bitmap as described above in step 204.
[0017] [Table 1]
[0018] According to an exemplary embodiment, all user data types and unmap data types are expected to be erased after the security erase operation. Further, the verification process includes reading the status of all blocks and verifying that the only "not erased" block is the system data type block.
[0019] According to an exemplary embodiment, the command log can be accessed by the host system via a playback-protected vendor interface. The log search process can include preparing a request command (including playback protection) by the host software and sending the request to the solid state drive. The solid state drive receives the command and verifies the playback protection data. If the playback protection data cannot be verified, the command fails. Alternatively, if the playback protection data is verified, the solid state drive responds by sending the log back to the host.
[0020] According to one embodiment, the following source code shows a process that can check the erase state of the drive and can aggregate block statistics. enum BlockStatus : uint8_t { USER_NOT_ERASED = 0x12, USER_ERASED = 0x11, FW_NOT_ERASED = 0x22, FW_ERASED = 0x21, UNMAP_NOT_ERASED = 0x42, UNMAP_ERASED = 0x41 }; inline constexpr uint32_t ERASE_LOG_LEN = 8192; using EraseLog = std::array<uint8_t, ERASE_LOG_LEN>; struct EraseVerifyStats { uint32_t userNotErased{0}; uint32_t userErased{0}; uint32_t fwNotErased{0}; uint32_t fwErased{0}; uint32_t unmappedNotErased{0}; uint32_t unmappedErased{0}; }; bool eraseVerifyLogStats(const EraseLog &log, EraseVerifyStats &stats) { stats = EraseVerifyStats(); for(const auto &val : log) { switch (val) { case BlockStatus::USER_ERASED : ++stats.userErased; break; case BlockStatus::USER_NOT_ERASED : ++stats.userNotErased; break; case BlockStatus::FW_ERASED : ++stats.fwErased; break; case BlockStatus::FW_NOT_ERASED : ++stats.fwNotErased; break; case BlockStatus::UNMAP_ERASED : ++stats.unmappedErased; break; case BlockStatus::UNMAP_NOT_ERASED : ++stats.unmappedNotErased; break; } } return !stats.userNotErased && !stats.unmappedNotErased; }
[0021] An example of the output from the command-line utility is shown below. For example, different solid-state drives have different block counts, and the end of the block status information can be marked by 0xFF. Therefore, the block output is cut off after the first 0xFF is encountered. ERASE LOG BLOCKS 00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15 000000|22 22 22 22 22 22 22 22 22 22 42 42 42 42 42 42 000016|42 42 22 42 42 42 42 42 42 42 42 42 42 42 42 42 000032|22 42 22 22 22 22 12 22 22 42 42 42 42 42 42 42 000048|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000064|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000080|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000096|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000112|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000128|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000144|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000160|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000176|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000192|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000208|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000224|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000240|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000256|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000272|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000288|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000304|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000320|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000336|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000352|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000368|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000384|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000400|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000416|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000432|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000448|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000464|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000480|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000496|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000512|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000528|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000544|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000560|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000576|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000592|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000608|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000624|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000640|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000656|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000672|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000688|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000704|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000720|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000736|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000752|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000768|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000784|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000800|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000816|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000832|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000848|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000864|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000880|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000896|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000912|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000928|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000944|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000960|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 000976|42 42 42 42 42 42 42 42 42 42 42 42 42 42 FF BLOCK STATISTICS [0x12] User::Not Erased!: 1 [0x11] User::Erased: 0 [0x22] Firmware::Not Erased: 18 [0x21] Firmware::Erased: 0 [0x42] Unmapped::Not Erased!: 971 [0x41] Unmapped::Erased: 0 ERASURE STATUS: Drive not erased!
[0022] According to an exemplary embodiment, the disclosed method and system provide additional advantages of data erasure verification without requiring data to be read from the device to the host system / software suite. Additionally, the method and system provide dramatic improvements in both the security of operation (less concern about unauthorized users accessing the data) and the speed of the verification operation.
[0023] Computer System Architecture FIG. 3 shows a computer system 300. In computer system 300, each embodiment or portion thereof of the present disclosure may be implemented as computer-readable code. For example, the solid-state storage device 100 of FIG. 1 can be implemented in computer system 300 using hardware, software, firmware, a non-transitory computer-readable medium storing commands, or a combination thereof, or can be implemented in one or more computer systems or other processing systems. Hardware, software, or any combination thereof can embody the modules and components used to implement the method of FIG. 2.
[0024] When programmable logic is used, such logic can be executed on a commercially available processing platform configured by executable software code to be a specific purpose computer or a specific purpose device (e.g., programmable logic array, application specific integrated circuit, etc.). Those skilled in the art can understand that the embodiments of the disclosed subject matter can be implemented using various computer system configurations, including multi-core multiprocessor systems, minicomputers, mainframe computers, computers linked or clustered using distributed functions, and general-purpose or small computers that can be embedded in virtually any device. For example, at least one processor device and memory can be used to implement the above-described embodiments.
[0025] The processor units or devices described herein can be a single processor, multiple processors, or combinations thereof. The processor device can have one or more processor "cores". The terms "computer program medium", "non-transitory computer-readable medium", and "computer-usable medium" discussed herein are generally used to refer to tangible media such as removable storage unit 318, removable storage unit 322, and hard disks installed in hard disk drive 312.
[0026] Various embodiments of the present disclosure are described with respect to this exemplary computer system 300. After reading this specification, those skilled in the art will appreciate how to implement the present disclosure using other computer systems and / or computer architectures. Operations may be described as a continuous process, but some of the operations may actually be performed in parallel, simultaneously, and / or in a distributed environment, using program code stored locally or remotely for access by a single or multi-processor machine. Further, in some embodiments, the order of operations can be reconfigured without departing from the spirit of the disclosed subject matter.
[0027] Processor device 304 can be a dedicated or general-purpose processor device specifically configured to execute the functions described herein. Processor device 304 can be connected to a communication infrastructure 306 such as a bus, message queue, network, multi-core message passing scheme, etc. The network can be any network suitable for executing the functions as disclosed herein and can include a local area network (LAN), wide area network (WAN), wireless network (e.g., WiFi), mobile communication network, satellite network, Internet, optical fiber, coaxial cable, infrared, radio frequency (RF), or any combination thereof. Other suitable network types and configurations will also be apparent to those skilled in the art. Computer system 300 may also include a main memory 308 (e.g., random access memory, read-only memory, etc.) and may also include a secondary memory 310. Secondary memory 310 can include a hard disk drive 312 and a removable storage drive 314 such as a floppy (registered trademark) disk drive, magnetic tape drive, optical disk drive, flash memory, etc.
[0028] Removable storage drive 314 can read from and / or write to a removable storage unit 318 in a known manner. Removable storage unit 318 can include a removable storage medium that can be read and written by removable storage drive 314. For example, if removable storage device drive 314 is a floppy (registered trademark) disk drive or a universal serial bus port, removable storage device unit 318 can be a floppy (registered trademark) disk or a portable flash drive, respectively. In one embodiment, removable storage unit 318 can be a non-transitory computer-readable medium.
[0029] In some embodiments, the secondary memory 310 can include alternative means for enabling a computer program or other commands to be loaded into the computer system 300, such as a removable storage unit 322 and an interface 320. Such alternative means can include, for example, a program cartridge and a cartridge interface (such as found in a video game system), a removable memory chip (such as an EEPROM, PROM, etc.) and associated socket, and a removable storage unit 322 and an interface 320, which will be apparent to those skilled in the art.
[0030] Data stored in the computer system 300 (e.g., in the main memory 308 and / or the secondary memory 310) may be stored on any type of suitable computer-readable medium, such as an optical storage device (e.g., a compact disk, a digital versatile disk, a Blu-ray (registered trademark) disk, etc.) or a magnetic tape storage device (e.g., a hard disk drive). The data may be structured in any type of suitable database configuration, such as a relational database, a structured query language (SQL) database, a distributed database, an object database, etc. Appropriate configurations and storage types will be apparent to those skilled in the art.
[0031] The computer system 300 may also include a communication interface 324. The communication interface 324 may be configured to enable software and data to be transferred between the computer system 300 and external devices. Exemplary communication interfaces 324 may include a modem, a network interface (e.g., an Ethernet (registered trademark) card), a communication port, and PCMCIA slots and cards, etc. The software and data transferred via the communication interface 324 may be in the form of electrical signals, electromagnetic signals, optical signals, or other signals, as would be apparent to those skilled in the art. The signals can move via a communication path 326. The communication path 326 can be implemented using wires, cables, optical fibers, telephone lines, cellular phone links, radio frequency links, etc. that can be configured to carry the signals.
[0032] The computer system 300 may further include a display interface 302. The display interface 302 may be configured to enable data to be transferable between the computer system 300 and an external display 330. Exemplary display interfaces 302 may include a High-Definition Multimedia Interface (HDMI), a Digital Visual Interface (DVI), a Video Graphics Array (VGA), etc. The display 330 can be of any suitable type for displaying data transmitted via the display interface 302 of the computer system 300, including a cathode ray tube (CRT) display, a liquid crystal display (LCD), a light-emitting diode (LED) display, a capacitive touch display, a thin film transistor (TFT) display, etc.
[0033] Computer program media and computer-usable media can refer to memories such as main memory 308 and secondary memory 310, which can be semiconductor memories (e.g., DRAM, etc.). These computer program products can be means for providing software to computer system 300. A computer program (e.g., computer control logic) may be stored in main memory 308 and / or secondary memory 310. The computer program can also be received via communication interface 324. Such a computer program, when executed, can enable computer system 300 to implement the methods discussed herein. In particular, the computer program, when executed, can enable processor device 304 to implement the method shown in FIG. 2 as described herein. Thus, such a computer program can represent a controller of computer system 300. When the present disclosure is implemented using software, the software is stored in a computer program product and can be loaded into computer system 300 using removable storage drive 314, interface 320, and hard disk drive 312, or communication interface 324.
[0034] The processor device 304 may comprise one or more modules or engines configured to execute the functions of the computer system 300. Each of the modules or engines may be implemented using hardware, and in some examples, may utilize program code stored in the main memory 308 or the secondary memory 310 and / or software corresponding to the program. In such cases, the program code may be compiled by the processor device 304 (e.g., by a compilation module or engine) prior to execution by the hardware of the computer system 300. For example, the program code may be source code written in a programming language that is translated into a low-level language such as assembly language or machine code. The source code is used for execution by the processor device 304 and / or any additional hardware components of the computer system 300. The compilation process may include lexical analysis, preprocessing, syntax analysis, semantic analysis, syntax-directed translation, code generation, code optimization, and the use of any other techniques. Any other techniques may be suitable for translating the program code into a low-level language suitable for controlling the computer system 300 to execute the functions disclosed herein. As a result of such a process, it will be apparent to those skilled in the art that the computer system 300 becomes a specially configured computer system 300 that is uniquely programmed to execute the functions described above.
[0035] Techniques consistent with the present disclosure provide, among other features, systems and methods for verifying the erased state of data blocks. While various exemplary embodiments of the disclosed systems and methods have been described above, it should be understood that each embodiment is presented for purposes of example only and not limitation. Each example is not exhaustive and does not limit the present disclosure to the forms disclosed. Various changes and modifications are possible in light of the foregoing teachings, and various changes and modifications may be made without departing from the scope or range by practicing the present disclosure.
Claims
1. A method for verifying the erased state of data blocks in a solid state memory device, comprising: assigning to each of a plurality of data blocks on a solid state drive a block identifier indicating whether it is system data, user data, or unmapped data, and an erase state indicating erased or not erased.
2. The method of claim 1, further comprising describing the block identifier and the erase state of each of the plurality of data blocks with a 1-byte bitmask.
3. The method of claim 2, further comprising reading from a vendor-specific log the block identifier and the erase state of each of the plurality of data blocks.
4. The method of claim 3, further comprising performing a security erase operation configured to erase all user data and unmapped data on the plurality of data blocks.
5. The method of claim 4, further comprising performing a verification process after the security erase operation, the verification process including reading the state of each of the plurality of data blocks and verifying that un-erased data blocks of the plurality of data blocks are system data blocks.
6. The system data is a data block including solid state drive data, the user data is a data block including data stored by a user, the unmapped data is a data block that is a temporary block for firmware management, and the temporary block for firmware management previously included either system data or user data. The method of claim 1.
7. The method of claim 1, wherein each of the plurality of data blocks is an erasable data block.
8. The method of claim 1, further comprising writing data to one or more of the plurality of data blocks using a controller.
9. The verification process according to claim 5, which does not require data on the plurality of data blocks to be read from the solid state storage device to a host system or software suite.
10. The method according to claim 1, wherein the solid state storage device is a computing device.
11. A solid state drive including a controller and a plurality of data blocks, a processor configured to assign a block identifier indicating whether each data block of the plurality of data blocks is system data, user data, or unmapped data, and an erase state indicating erased or unerased, a solid state storage device.
12. The device according to claim 11, wherein the block identifier and the erase state of each data block of the plurality of data blocks are described by a 1-byte bit mask.
13. The processor is configured to read the block identifier and the erase state of each data block of the plurality of data blocks from a vendor-specific log, according to the device of claim 12.
14. The processor is configured to execute a security erase operation that erases all of the user data and the unmapped data on the plurality of data blocks, according to the device of claim 13.
15. The processor is configured to execute a verification process after the security erase operation, the verification process including reading the state of each of the plurality of data blocks and verifying that the unerased data blocks of the plurality of data blocks are system data blocks, according to the device of claim 14.
16. The system data is a data block including solid state drive data, the user data is a data block including data stored by a user, the unmapped data is a data block that is a temporary block for firmware management, and the temporary block for firmware management previously included either system data or user data, according to the device of claim 11.
17. The device according to claim 11, wherein each of the plurality of data blocks is an erasable data block. **Claim 18** The controller is configured to write data to one or more of the plurality of data blocks using the controller, the device according to claim 11. **Claim 19** The verification process does not require data on the plurality of data blocks to be read from the solid-state memory device to a host system or software suite, the device according to claim 15. **Claim 20** The solid-state memory device is a computing device, the device according to claim 11.
Citation Information
Patent Citations
High-efficiency SSD deleted data recovery method and system
CN112596949A
Reproducing device and recording device
JP2001076431A
Memory card
JP2006039886A
Storage device and computer with the same
JP2012174086A
Solid-state memory formatting
JP2012515955A