CN107066202B - Storage device with multiple solid state disks - Google Patents

Storage device with multiple solid state disks Download PDF

Info

Publication number
CN107066202B
CN107066202B CN201611089871.0A CN201611089871A CN107066202B CN 107066202 B CN107066202 B CN 107066202B CN 201611089871 A CN201611089871 A CN 201611089871A CN 107066202 B CN107066202 B CN 107066202B
Authority
CN
China
Prior art keywords
data
physical address
group
storage device
write
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
CN201611089871.0A
Other languages
Chinese (zh)
Other versions
CN107066202A (en
Inventor
殷雪冰
路向峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Memblaze Technology Co Ltd
Original Assignee
Beijing Memblaze Technology Co Ltd
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 Beijing Memblaze Technology Co Ltd filed Critical Beijing Memblaze Technology Co Ltd
Priority to CN201611089871.0A priority Critical patent/CN107066202B/en
Publication of CN107066202A publication Critical patent/CN107066202A/en
Application granted granted Critical
Publication of CN107066202B publication Critical patent/CN107066202B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID 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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

A storage device having a plurality of solid state disks is provided. The storage device includes a network adapter, a controller, and a plurality of drives coupled to the controller; the network adapter couples the storage device to a network and receives an access request from a client indicating that first data is written to a first logical address for the storage device; the controller generates a first physical address for the first logical address and generates a write command to one of the plurality of drivers instructing to write the first data to the first physical address; the controller also determines whether check data is generated, and if so, generates first check data based on the first data, and generates a second write command to one of the plurality of drivers, which instructs to write the first check data to a second physical address. The invention solves the problem of write amplification in RAID storage equipment formed by solid-state disks and prolongs the service life of the storage equipment.

Description

Storage device with multiple solid state disks
The application is a divisional application of a patent application with the application number of "201310077076. X", the application date of "2013.3.11", the invention name of "storage device with multiple solid-state disks".
Technical Field
The present invention relates to Solid State Storage Devices (SSDs), and more particularly, to Storage devices for accessing multiple Solid state disks simultaneously.
Background
Like a mechanical hard disk, a solid state memory device is also a large capacity, non-volatile storage device for computer systems. Solid state memory devices typically use Flash memory (Flash) as a storage medium. High performance solid state storage devices are used in high performance computers.
The memory Target (Target) is one or more logic units (L omic Unit) sharing a Chip Enable (CE) signal within a NAND Flash package, each logic Unit having a logic Unit number (L UN, &lttttranslation =) L "&gtt L &ltt/t &gttomic UnitNumber.) the NAND Flash package may include one or more dies (Die) typically, the logic Unit may correspond to a single Die the logic Unit may include multiple planes (planes) within the logic Unit may be accessed in parallel, while the multiple logic units within the NAND Flash Chip may perform command and report status independently of each Other, in a Flash portion"// www.micron.com// media/Documents/Products/Other 20 Documents/audio/hardware 3 d ". Open" the Target Unit (file) provides a meaning with respect to the prior art, a file portion (file) 3, file portion 3, which is known as a file Unit.
The solid-state storage device may have an expansion card shape, may be mounted to a PCIE or similar interface on a motherboard. Solid State storage devices may also have 3.5, 2.5, or 1.8 inch drive shapes, mountable in a rack or Disk array device, commonly referred to as Solid State disks (Solid State disks).
Referring to fig. 1, a set of pages of a solid state storage device is referred to as a "stride", each stride including a set of pages from each channel, wherein the set of pages of each channel is referred to as a "stripe" (strip), for a write request identified as L BA (L organic Block Address), a mapping from L BA to PBA (Physical Block Address) within the stride is performed, and each stripe within the stride (stripes with id's of 31, 52, 44, 67 in fig. 1, respectively) is filled.
However, there may be multiple solid state disks or multiple memory cards in a storage device, each of which may have different capacities and capabilities, and each of which may exhibit different characteristics over time. Considering the specific capabilities of the respective solid state disk or memory card when writing data will help to improve the performance of the storage device. And, the amount of data carried in a write request may be different from the data capacity of the "stride". It is necessary to provide corresponding means to match the access requests from the client with the capacity of the storage units of the storage device.
Disclosure of Invention
The invention solves the problem of write amplification in RAID storage equipment formed by solid-state disks and prolongs the service life of the storage equipment.
According to a first aspect of the present invention, there is provided a method for accessing a plurality of drives of a storage device, the method comprising: receiving a request to write first data to a first logical address for the storage device;
generating a first physical address for the first logical address; generating a write command instructing to write the first data to the first physical address; determining whether to generate check data; and if so, generating first check data based on the first data, and writing the first check data into a second physical address.
The method according to the first aspect of the invention, further comprising: storing metadata on one or more of the plurality of drives, the metadata indicating that the first physical address and the second physical address have an associative relationship.
The method according to the first aspect of the invention, wherein a first physical address is generated for the first logical address by selecting a first drive of the plurality of drives, the first physical address indicating a storage location in the first drive.
The method according to the first aspect of the present invention, wherein a write pointer is provided for each drive, the write pointer indicating a physical address at which data is written, the first physical address is generated based on the write pointer of the selected first drive, and the write pointer of the first drive is incremented.
The method according to the first aspect of the present invention, wherein in response to receiving a request to write first data to a first logical address for the storage device, a group of storage units is allocated, the group of storage units comprising a plurality of storage units, each of the plurality of storage units being located at one of the plurality of drives.
The method according to the first aspect of the present invention, wherein the storage unit is one or more pages.
The method according to the first aspect of the invention, wherein a write pointer is provided for a group of memory cells, the write pointer indicating one memory cell of the group of memory cells, the first physical address is generated based on the write pointer of the assigned group of memory cells, and the write pointer of the assigned group of memory cells is made to indicate another memory cell of the group of memory cells.
The method according to the first aspect of the invention, wherein in response to allocating the group of memory cells, one memory cell is selected from the group of memory cells to generate the first physical address for the first logical address based on the states of the plurality of drives in which the respective memory cell of the group of memory cells is located, the first physical address indicating the selected memory cell.
The method according to the first aspect of the present invention, wherein a write queue is provided for each of the plurality of drives for storing the write command before sending the write command to the drive.
The method according to the first aspect of the present invention, wherein the generation of the check data is determined if N data for generating the check data have been received, N being a natural number.
The method according to the first aspect of the present invention, wherein if N data for generating the check data have not been received, predetermined data is padded to form N data for generating the check data, and it is determined that the check data is generated.
The method according to the first aspect of the present invention, wherein if N data for generating the check data have not been received, N data for generating the check data are formed by performing a garbage collection operation, and it is determined to generate the check data.
The method according to the first aspect of the invention, wherein generating the check data is indicated in the request.
The method according to the first aspect of the present invention, wherein the value of N is indicated in the request.
The method according to the first aspect of the present invention, wherein if N data for generating the check data have not been received and the generation of the check data is indicated in the request, padding the data to form N data for generating the check data, and generating the check data.
The method according to the first aspect of the present invention, wherein if N data for generating the check data have not been received and an event occurrence of the check data is compulsorily calculated, the data is padded to form N data for generating the check data, and the check data is generated.
The method according to the first aspect of the present invention, wherein if N data for generating the check data have not been received and the generation of the check data is indicated in the request, performing a garbage collection operation to form N data for generating the check data, and generating the check data.
The method according to the first aspect of the present invention, wherein if N data for generating the check data have not been received and an event for compulsorily calculating the check data occurs, a garbage collection operation is performed to form N data for generating the check data and generate the check data.
According to a second aspect of the present invention, there is provided an apparatus for accessing a plurality of drives of a storage device, the apparatus comprising: means for receiving a request to write first data to a first logical address for the storage device; means for generating a first physical address for the first logical address; means for generating a write command that indicates to write the first data to the first physical address; means for determining whether to generate check data; and the module is used for generating first check data based on the first data and writing the first check data into a second physical address under the condition that the check data is determined to be generated.
According to a third aspect of the present invention, there is provided a storage device comprising a network adapter, a controller, and a plurality of drives coupled to the controller; the network adapter couples the storage device to a network and receives an access request from a client indicating to write first data to a first logical address for the storage device; the controller generates a first physical address for the first logical address and generates a write command to one of the plurality of drivers instructing to write the first data to the first physical address; the controller also determines whether check data is generated, and if so, generates first check data based on the first data, and generates a second write command to one of the plurality of drivers, which instructs to write the first check data to a second physical address.
The storage device according to the third aspect of the present invention, further comprising: the controller stores metadata in one or more of the plurality of drives, the metadata indicating that the first physical address and the second physical address have an associative relationship.
The storage apparatus according to a third aspect of the present invention, wherein the controller generates a first physical address for the first logical address by selecting a first drive of the plurality of drives, the first physical address indicating a storage location in the first drive.
A storage device according to a third aspect of the invention, wherein a write pointer is maintained in the controller for each drive, the write pointer indicating a physical address at which data is written; the controller also generates the first physical address based on the selected write pointer of the first drive and increments the write pointer of the first drive.
The memory device according to a third aspect of the present invention, wherein the controller allocates a group of memory cells in response to receiving a request to write first data to a first logical address for the memory device, the group of memory cells including a plurality of memory cells, each of the plurality of memory cells being located in one of the plurality of drives.
The storage device according to a third aspect of the present invention, wherein the controller maintains a write pointer for the group of storage units, the write pointer indicating one storage unit of the group of storage units, the controller generates the first physical address based on the write pointer of the allocated group of storage units, and causes the write pointer of the allocated group of storage units to indicate another storage unit of the group of storage units.
The memory device according to a third aspect of the present invention, wherein in response to allocation of the memory cell group, the controller refers to states of the plurality of drives in which the respective memory cells of the memory cell group are located, and selects one memory cell from the memory cell group based on the states to generate a first physical address for the first logical address, the first physical address indicating the selected memory cell.
The storage apparatus according to a third aspect of the present invention, wherein the controller provides a write queue for each of the plurality of drives, the write queue for storing the write command before sending the write command to the drive.
The storage device according to a third aspect of the present invention, wherein the controller determines to generate the check data if the storage device has received N data for generating the check data, N being a natural number.
The storage device according to a third aspect of the present invention, wherein if the storage device has not received N data for generating the check data, the controller pads predetermined data to form N data for generating the check data, and determines to generate the check data.
The storage device according to a third aspect of the present invention, wherein if the storage device has not received N data for generating the parity data, the controller initiates a garbage collection operation for one or more of the plurality of drives to form N data for generating the parity data, and determines to generate the parity data.
The storage device according to the third aspect of the present invention, wherein the value of N is indicated in the request.
The storage device according to a third aspect of the present invention, wherein generation of the check data is indicated in the request.
The storage device according to the third aspect of the present invention, wherein the value of N is indicated in the request.
According to the storage device of the third aspect of the present invention, if N data for generating the check data have not been received and the generation of the check data is indicated in the request, the data is padded to form N data for generating the check data, and the check data is generated.
According to the storage device of the third aspect of the present invention, if N data for generating the check data have not been received and an event occurrence of the check data is compulsorily calculated, the data is padded to form N data for generating the check data, and the check data is generated.
According to the storage device of the third aspect of the present invention, if the N data for generating the check data have not been received and the generation of the check data is indicated in the request, a garbage collection operation is performed to form the N data for generating the check data, and the check data is generated.
According to the storage device of the third aspect of the present invention, if N data for generating the check data have not been received and an event for compulsorily calculating the check data occurs, a garbage collection operation is performed to form N data for generating the check data and generate the check data.
According to a fourth aspect of the present invention, there is provided a computer system comprising a motherboard, an expansion card disposed on the motherboard, a CPU, and a plurality of drivers coupled to the expansion card; the CPU sends a request for writing first data into a first logic address to the expansion card; the expansion card generates a first physical address for the first logical address, generates a write command and sends the write command to one of the plurality of drivers, wherein the write command indicates that the first data is written into the first physical address; the expansion card also determines whether check data is generated, if so, first check data is generated based on the first data, a second write command is generated and sent to one of the plurality of drivers, and the second write command indicates that the first check data is written into a second physical address.
The computer system according to the fourth aspect of the present invention, further comprising: the expansion card stores metadata in one or more of the plurality of drives, the metadata indicating that the first physical address and the second physical address have an association relationship.
The computer system according to the fourth aspect of the present invention, wherein the expansion card generates a first physical address for the first logical address by selecting a first drive of the plurality of drives, the first physical address indicating a storage location in the first drive.
The computer system according to the fourth aspect of the present invention, wherein a write pointer is maintained in the expansion card for each drive, the write pointer indicating a physical address at which data is written; the expansion card also generates the first physical address based on the selected write pointer of the first drive and increments the write pointer of the first drive.
The computer system according to a fourth aspect of the present invention, wherein the expansion card allocates a group of memory cells, the group of memory cells including a plurality of memory cells, each of the plurality of memory cells being located in one of the plurality of drives, in response to receiving a request to write first data to a first logical address for the memory device.
The computer system according to a fourth aspect of the present invention, wherein the expansion card maintains a write pointer for the group of memory cells, the write pointer indicating one memory cell of the group of memory cells, the expansion card generating the first physical address based on the write pointer of the assigned group of memory cells and causing the write pointer of the assigned group of memory cells to indicate another memory cell of the group of memory cells.
The computer system according to a fourth aspect of the present invention, wherein in response to allocation of the memory cell group, the expansion card inquires of states of the plurality of drives in which the respective memory cells of the memory cell group are located, and selects one memory cell from the memory cell group based on the states to generate a first physical address for the first logical address, the first physical address indicating the selected memory cell.
The computer system according to the fourth aspect of the present invention, wherein the expansion card provides a write queue for each of the plurality of drives, the write queue for storing the write command before sending the write command to the drive.
The computer system according to the fourth aspect of the present invention, wherein the generation of the check data is determined if the expansion card has received N data for generating the check data, N being a natural number.
The computer system according to the fourth aspect of the present invention, wherein if the expansion card has not received N data for generating the verification data, the expansion card fills predetermined data to form N data for generating the verification data, and determines to generate the verification data.
The computer system according to the fourth aspect of the present invention, wherein if the expansion card has not received N data for generating the check data, the expansion card initiates a garbage collection operation for one or more of the plurality of drives to form N data for generating the check data, and determines to generate the check data.
The computer system according to the fourth aspect of the invention, wherein the value of N is indicated in the request.
The computer system according to the fourth aspect of the invention, wherein the value of N is indicated in the request.
The computer system according to the fourth aspect of the present invention, wherein the generation of the check data is indicated in the request.
The computer system according to the fourth aspect of the invention, wherein the value of N is indicated in the request.
The computer system according to the fourth aspect of the present invention, wherein if N data for generating the check data has not been received and the generation of the check data is indicated in the request, the data is padded to form N data for generating the check data, and the check data is generated.
The computer system according to the fourth aspect of the present invention, wherein if N data for generating the check data have not been received and an event for compulsorily calculating the check data occurs, the data is padded to form N data for generating the check data, and the check data is generated.
The computer system according to the fourth aspect of the present invention, wherein if N data for generating the check data has not been received and the generation of the check data is indicated in the request, a garbage collection operation is performed to form N data for generating the check data, and the check data is generated.
The computer system according to the fourth aspect of the present invention, wherein if N data for generating the check data have not been received and an event for compulsorily calculating the check data occurs, a garbage collection operation is performed to form N data for generating the check data and generate the check data.
Drawings
The invention, as well as a preferred mode of use and further objectives and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein:
fig. 1 illustrates a data organization of a solid state disk in the prior art;
FIG. 2 is a data organization of a storage device according to an embodiment of the invention;
FIG. 3 is a block diagram of a computer system according to an embodiment of the present invention;
FIG. 4 is a flow diagram of a method of accessing a plurality of drives according to an embodiment of the invention;
FIG. 5 is a flow diagram of a method of accessing a plurality of drives according to a further embodiment of the present invention;
FIG. 6 is a flow diagram of a method of accessing a plurality of drives in accordance with a still further embodiment of the present invention; and
FIG. 7 is a block diagram of a memory device according to an embodiment of the present invention.
Detailed Description
FIG. 2 is a data organization of a storage device according to an embodiment of the invention. The storage device includes solid state disk 200, solid state disk 220 … …, solid state disk 260. Each solid state disk may be a 3.5, 2.5, or 1.8 inch drive with standard dimensions. The solid state disk 200 may include a flash memory chip 201 and a flash memory chip 202. Solid state disk 220 includes flash memory chip 221, and solid state disk 260 includes flash memory chip 261. Solid state disk 200 may also include a different number of flash memory chips. And solid state disk 200, solid state disk 220, and solid state disk 260 may each include a different number and/or different capacity of flash memory chips. The flash memory chips in the solid state disk may be organized into multiple channels to trade off between the number of interface pins used and the parallel access of multiple flash memory chips. For example, various ways of organizing flash memory chips into channels are provided in chinese patent application No. 201210448894.1, 201210449387. X.
By way of example, flash chip 201 includes a plurality of blocks, such as block 0, block 1, block 2, and block 3. Other numbers of blocks may be included in a flash memory chip. A plurality of pages are included in each block. For NAND flash, read and write operations are performed in units of pages, and erase operations are performed in units of blocks, depending on the physical structure of the NAND flash. By way of example, flash memory chip 201 also includes plane 0 and plane 1. Plane 0 includes blocks 0 and 2, and plane 1 includes blocks 1 and 3. Plane 0 and plane 1 each have page registers so that blocks located at plane 0 and blocks located at plane 1 can operate in parallel. Flash memory chips may have different numbers of pages. The flash memory chip may also include one or more dies.
According to an embodiment of the present invention, pages 211 of solid state disk 200, pages 231 of solid state disk 220, and pages 261 of solid state disk 260 are grouped together to form a group of storage units. A way to map logical addresses from hosts to groups of storage units is provided in chinese patent application nos. 201310003789.1 and 201310003898.3. The pages in the group of memory cells are operated together, in which user data as well as check data generated from the user data can be stored. When one or more pages in a group of memory cells are corrupted, the corrupted data may be recovered based on other pages in the group of memory cells. For example, a group of memory cells may include N + P pages, where N pages are used to store user data and P pages are used to store parity data. Preferably, the group of storage units is allocated such that when one or more of the solid state disks 200, 220, and 260 are removed, the data stored in the removed solid state disk can be restored using the remaining solid state disks. In one example, pages 211, 231, and 261 have the same physical address in solid state disk 200, solid state disk 220, and solid state disk 260, respectively, so that the respective pages making up the group of storage units can be easily determined without additional metadata. In this way, page 1 of block 0 of chip 201 of disk 200, page 1 of block 0 of chip 221 of disk 220, and page 1 of block 0 of chip 261 of disk 260 constitute another memory cell group. Although the group of memory cells is shown in the embodiment of FIG. 2 as including 3 pages, it is understood that the group of memory cells may have other different numbers of pages.
In one embodiment, the group of storage units includes pages from each of the plurality of solid state disks (200, 220, and 260). In another embodiment, the group of storage units includes pages from one or more of the plurality of solid state disks. The group of storage units may also include multiple pages from one solid state disk.
With continued reference to FIG. 2, in one embodiment, page 215, page 235, and page 265 comprise a group of memory cells. Page 215, page 235, and page 265 may have the same or different physical addresses, and thus additional metadata needs to be provided to indicate that page 215, page 235, and page 265 constitute a group of memory cells. The metadata may be stored in Out-Of-Band (Out-Of-Band) data Of the pages 215, 235, and 265, may be stored in a user data area Of the pages 215, 235, and 265 (accordingly, a storage capacity Of the user data is reduced), and may be stored in other pages. Since a page in the flash memory may be damaged, a plurality of pages constituting a storage unit group are indicated using metadata, the damaged page can be effectively excluded, and pages having the same or different physical addresses are used to constitute the storage unit group, thereby improving the utilization rate of a storage space.
The expansion card 314 may be used to couple multiple storage disks to the Computer 300. the expansion card 314 may be coupled to the motherboard 310 via various interfaces, including but not limited to SATA (Serial advanced Technology Attachment), USB (Universal Serial Bus), PCIE, SCSI (SCSI System Interface, Small Computer System Interface), SmartMess (Integrated Drive, flash Drive, etc.), a solid state memory device, such as a solid state memory device, a flash memory device, etc., and may be used to convert a number of storage disks to a number of storage addresses based on a flash memory device, such as a flash memory device, etc., and may be used to access the storage disks via various interfaces, including but not limited to SATA (Peripheral Technology Interface), PCIE, SCSI (Universal Serial Bus), IDE (SCSI System Interface, Small Computer System Interface), SmartMeshIy (Integrated Drive, flash Drive, etc.) via a flash memory device, or other solid state memory device, such as a flash memory device, a.
In one embodiment, expansion card 314 may not be included in motherboard 310, and disks 320, 322, 324, and 326 may be coupled to motherboard 310 via interfaces such as PCIE, IDE, SCSI, and/or SATA disposed on motherboard 310. And, providing flash translation layer software in an operating system or application program of the computer 300 to translate the logical address based disk access request into a physical address based disk access request. The flash translation layer component may also be provided in a CPU, chipset, or other integrated circuit.
Control circuitry may be disposed on the expansion card 314 to implement various operations to be described in fig. 4-6 to control access to the disks 320, 322, 324, 326. The control Circuit may be in the form of an FPGA (Field-programmable gate array), an ASIC (Application Specific Integrated Circuit), or a combination thereof. The control circuitry may also include one or more processors or controllers. The flash translation layer component can be implemented in hardware circuit form in FPGA, ASIC, and can also be implemented in software form running in a processor or controller.
FIG. 4 is a flow diagram of a method of accessing multiple drives according to an embodiment of the invention. At step 400, a write request is received. The write request may come from the CPU 312 of the computer 300. The write request may be issued by an operating system or application software running on the computer 300 and instructing the writing of data to a storage device, such as a solid state disk. The write request may carry or indicate a logical address, where the logical address indicates a logical address space exhibited by the storage device.
At step 410, a physical address is obtained. The logical address is obtained based on the write request, for example, the logical address may be extracted from the write request, or the logical address may be extracted indirectly based on an indication in the write request (e.g., an indication of a storage space in which the logical address is stored, or an offset from a previous logical address). Then, the logical address is converted into the physical address through the mapping table. In a further embodiment, a plurality of pages in a plurality of solid state disks are grouped together to form a group of storage units. The logical addresses are converted into addresses for the groups of memory cells by means of a mapping table or a sequential mapping. For successively received write requests, their logical addresses are converted to the same bank address until the N pages of data in the bank are filled. And then obtain the physical address based on the address of the group of memory cells. The resulting physical address indicates a memory cell in the group of memory cells. While write requests or logical addresses may not require maintenance of the memory cell group structure.
At step 420, the data indicated by the write request is written to the storage device based on the physical address. In one embodiment, a write queue is provided for each solid state disk to write data to the storage device based on physical addresses in a first-in-first-out manner. In another embodiment, a shared write queue is provided for multiple or all solid state disks. In a further embodiment, the group of memory cells includes a plurality of pages, and the write request corresponds to data less than the capacity of the group of memory cells. The write data is also cached to generate check data for the corresponding group of memory cells. In one embodiment, metadata indicating the storage unit group information is also written to the storage device.
At step 430, a determination is made as to whether check data is generated. If not, return to step 400 to receive additional write requests. If so, then check data is calculated at step 440. And calculating to obtain the check data of P pages based on the user data of the N pages. For example, parity may be used to calculate the check data, or other check data generation methods commonly used in all fields may be used. In one embodiment, user data corresponding to a group of memory cells is temporarily stored before calculation of the check data, and the memory area where the user data is temporarily stored may be released after calculation of the check data. A physical address for storing the check data of the P pages is also determined based on the memory cell group address.
At step 450, the parity data is written to the memory device based on the physical address. A write queue may be provided to write the check data to the memory device in a first-in-first-out manner. In one embodiment, metadata indicating the storage unit group information is also written to the storage device.
FIG. 5 is a flow diagram of a method of accessing multiple drives according to further embodiments of the present invention. The flow chart shown in fig. 5 further illustrates various ways of obtaining a physical address based on a logical address corresponding to a write request, relative to the flow chart in fig. 4.
At step 500, a write request is received.
One way to obtain the physical address is shown by steps 511 and 512. At step 511, one of a plurality of solid state disks is allocated. The solid state disk may be dispensed in a variety of ways. For example, solid state disks may be distributed in a round robin fashion; the solid state disk can be allocated by inquiring the state of the solid state disk and selecting the solid state disk in an idle state; solid state disks may also be allocated by comparing the lengths of the write queues corresponding to the solid state disks, and selecting the solid state disk with the shorter write queue. At step 512, for the selected solid state disk, the logical address is mapped to a physical address indicating the solid state disk. The physical address may indicate a physical location of a page of the solid state disk. In one embodiment, a plurality of pages from one or more solid state disks allocated for a contiguous plurality of write requests make up a group of storage units. The N pages of the storage unit group may be from each of the N solid state disks, and the N pages may be located at the same location or different locations on the respective solid state disks. The N pages of the bank of memory cells may also be from one or less than N solid state disks.
Yet another way to obtain a physical address is shown by steps 513 and 514. At step 513, one of the plurality of solid state disks is allocated. The solid state disk may be dispensed in a variety of ways. For example, solid state disks may be distributed in a round robin fashion; the solid state disk can be allocated by inquiring the state of the solid state disk and selecting the solid state disk in an idle state; solid state disks may also be allocated by comparing the lengths of the write queues corresponding to the solid state disks, and selecting the solid state disk with the shorter write queue. At step 514, for the selected solid state disk, the write pointer of the solid state disk is taken as the physical address to write data, and the write pointer is incremented. In this way, each solid state disk has a write pointer for itself, the write pointer indicating the location where data is to be written, so that successive write operations on one solid state disk can be performed at successive physical addresses of the solid state disk, which in turn can reduce the write amplification effect caused during erase leveling, thereby improving the lifetime of the storage device. The physical address may indicate a physical location of a page of the solid state disk. In one embodiment, a plurality of pages from one or more solid state disks allocated for a contiguous plurality of write requests make up a group of storage units. The N pages of the storage unit group may be from each of the N solid state disks, and the N pages may be located at the same location or different locations on the respective solid state disks. The N pages of the bank of memory cells may also be from one or less than N solid state disks.
Another way to obtain the physical address is shown by steps 515 and 516. At step 515, a group of memory cells is allocated. The group of memory cells includes a plurality of pages. The pages that make up the storage unit are from multiple solid state disks. For example, a group of memory cells may include N + P pages, with N pages for storing user data and P pages for storing parity data. The N + P pages are from N + P solid state disks, one page for each solid state disk. In another embodiment, the N + P pages are from less than N + P solid state disks. In one embodiment, during initialization of a storage device comprising a plurality of solid state disks, the number of groups of storage units and the mapping of the groups of storage units to physical pages are determined. The multiple pages of the storage unit group may be located in the same location or different locations of the multiple solid state disks. Preferably, the groups of memory cells are allocated such that successive write operations on one solid state disk can be performed at successive physical addresses of the solid state disk. For example, if a page of the currently allocated memory cell group has the physical address P (i), when the next memory cell group is allocated, the memory cell group corresponding to the physical address P (i +1) is selected. In another example, the N + P pages of the bank K are from each of the N + P solid state disks, and the N + P pages have the same physical address P (K), while each page of the bank K +1 has the same physical address P (K + 1); then after memory cell K is allocated, memory cell group K +1 is allocated. At step 516, for the allocated group of memory cells, the write pointer for the group of memory cells is taken as the physical address to write the data, and the write pointer is incremented. In this way, the current set of memory cells has a write pointer for itself that indicates the location where data is to be written.
Through step 517 and step 518, another way of obtaining a physical address is shown. At step 517, a group of memory cells is allocated. In step 518, for the allocated group of memory cells, the physical page in the group of memory cells that has not yet been allocated is selected, and the address of the physical page is taken as the allocated physical address. The physical pages in the set of physical units that have not yet been allocated may be selected in a variety of ways. For example, a physical page may be selected based on the free states of a plurality of disks corresponding to a plurality of physical pages that have not been allocated in the physical unit group; the physical page may also be selected based on write queue lengths of a plurality of disks corresponding to a plurality of physical pages in the group of storage units that have not yet been allocated.
At step 520, the data indicated by the write request is written to the storage device based on the physical address.
At step 530, a determination is made as to whether verification data is generated. If not, return to step 500 to receive additional write requests. If so, then check data is calculated at step 540. A physical address is also determined for the check data. For example, for user data in a group of memory cells, physical addresses of P pages belonging to the group of memory cells are allocated for the corresponding check data, the P pages being used for storing the check data. For another example, a physical address is assigned to user data and check data generated based on the user data, and the user data and the check data are stored in the same memory cell group.
At step 550, the parity data is written to the memory device based on the physical address.
FIG. 6 is a flow chart of a method of accessing multiple drives according to still further embodiments of the present invention. The flow diagram shown in fig. 6 further illustrates various ways of determining whether to generate parity data relative to the flow diagram in fig. 4. Generally, when all user data of a group of memory cells is received, verification data is generated based on the user data. The verification data may also need to be generated in other situations, such as shutdown or power down.
At step 600, a write request is received. At step 610, a physical address is obtained. At step 620, the data indicated by the write request is written to the storage device based on the physical address.
Step 632 illustrates one way to obtain a determination of whether to generate parity data. At step 632, it is determined whether all user data for a group of memory cells has been received. If not, return to step 600 to receive additional write requests. If so, then the verification data is calculated at step 640. All user data of a memory cell group may be, for example, N pages to be stored in the memory cell group. In one embodiment, when data corresponding to a plurality of write requests received sequentially reaches the size of N pages, it is determined that all user data for one memory cell group has been received. In another embodiment, when N pages in a group of memory cells have been allocated, it is determined that all user data for one group of memory cells has been received.
Step 634 illustrates another way of obtaining the check data to determine whether to generate it. In step 634, it is determined whether m (< N) page data has been received, and all user data for one group of memory cells has not been received; but an event occurs that requires the mandatory calculation of the check data. The forced calculation of the check data may be due to unexpected situations such as power failure and shutdown of the computer, or may be due to the fact that a flush buffer request issued by an operating system or an application program is received or m pages of data have been cached for too long. If the check data is not calculated, the temporarily stored m pages of data will be lost, and the completed group of memory cells cannot be obtained on the memory device. If the determination of step 634 is negative, then return to step 600 to receive other write requests; if so, then the verification data is calculated at step 640. And to calculate the check data, the N-m pages of data are also padded with a predetermined data value (e.g., 0, 1, or other predetermined value) such that the received m pages of data and the padded N-m pages of data constitute N pages of data, and the P pages of check data may be calculated in step 640. A garbage collection operation may also be performed on the storage device or solid state disk, filling in N-m pages of data with write requests generated in the garbage collection operation. In another embodiment, the received data may not be aligned by page boundaries, and accordingly, the populated data may not be aligned by page boundaries.
Step 636 illustrates another way of obtaining the determination of whether to generate check data. In step 636, it is determined whether m (< N) pages of data have been received, and not all user data for a group of memory cells have been received; but only m pages of data to be written are indicated in the write request. Indicating in the write request that the data to be written is only m pages, meaning that the write operation from the operating system or application has been completed, and implying that there may be no subsequent write requests for some future time; it may also mean that the operating system or application predicts that a write request is unlikely to occur in the future. In this case, continuing to temporarily store m pages of data increases power consumption and decreases performance of the memory device because the memory space is occupied. If the determination of step 636 is negative, then return to step 600 to receive other write requests; if so, then the verification data is calculated at step 640. And to calculate the check data, the N-m pages of data are also padded with a predetermined data value (e.g., 0, 1, or other predetermined value) such that the received m pages of data and the padded N-m pages of data constitute N pages of data, and the P pages of check data may be calculated in step 640. A garbage collection operation may also be performed on the storage device or solid state disk, filling in N-m pages of data with write requests generated in the garbage collection operation. In another embodiment, the received data may not be aligned by page boundaries, and accordingly, the populated data may not be aligned by page boundaries.
Step 638 illustrates another way of obtaining the check data to determine whether to generate it. At step 638, it is determined whether m (< N) page data has been received, and not all user data for a group of memory cells has been received; but perform garbage collection operations on the storage device. If not, return to step 600 to receive other write requests; if so, the N-m pages of data are filled with write requests generated in garbage collection operations and P-page check data is computed in step 640. In another embodiment, the received data may not be aligned by page boundaries, and accordingly, the populated data may not be aligned by page boundaries.
At step 650, the parity data is written to the memory device based on the physical address.
With the embodiments of the present invention described above, data can be written to multiple solid state disks of a storage device simultaneously, improving the parallelism of write operations. In addition, the storage unit group provides extra protection to data, and the reliability of the storage device is improved.
The controller 714 is used for coupling a plurality of storage disks to the storage device 700, the controller 714 can be coupled through a plurality of interfaces including, but not limited to, SATA7, USB7, PCI, PCIE, SCSI7, IDE7 and the like, the controller 714 can also be indirectly coupled to the storage disks through the chipset or expansion card, the plurality of storage disks include disks 720, 722, 724 and 726, the controller 714 can be coupled with different numbers of storage disks, a Flash Translation layer (FT L a yer, FT L) component can be included in the controller 714 and used for converting storage disk access requests based on logical addresses into storage disk access requests based on physical addresses, the storage disks can be Flash memory disks, and the storage disks can be solid state memory disks, solid state memory storage disk memory chips, ferroelectric memory chips, and the like.
In one embodiment, flash translation layer software is provided in the operating system or other program of the storage device 700 to translate logical address based storage disk access requests into physical address based storage disk access requests. The flash translation layer component may also be provided in a CPU, chipset, or other integrated circuit.
A controller 714, which may be used to implement the various operations described above in fig. 4-6 to control access to the disks 720, 722, 724, 726. The controller 714 may be in the form of an FPGA, an ASIC, or a combination thereof. The controller 714 may also include one or more processors or controllers. The flash translation layer component can be implemented in hardware circuit form in FPGA, ASIC, and can also be implemented in software form running in a processor or controller.
Network adapters 730, 732 are also disposed on the backplane 710. Two network adapters are provided to improve the reliability of the storage device. One or other number of network adapters may also be provided. The storage device 700 is coupled to a network 734 through network adapters 730, 732. Network 734 may be an ethernet, PCIE network, or fibre channel network. Clients 740, 742 are also coupled to network 734 and access storage device 700 through network 734. In other embodiments, clients 740, 742 may be directly coupled to network adapters 730 and/or 732 without network 734.
The description of the present invention has been presented for purposes of illustration and description, and is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art.

Claims (10)

1. A storage device comprising a network adapter, a controller, and a plurality of drives coupled to the controller;
the network adapter couples the storage device to a network and receives access requests from clients,
the access request indicates to write first data to a first logical address for the storage device;
the controller generates a first physical address for the first logical address, the first physical address indicating a storage area in the storage unit group where the first data is temporarily stored, and a plurality of pages of the storage unit group have the same physical address in the plurality of drives, respectively;
generating a write command to one of the plurality of drivers, wherein the write command instructs to write the first data into the storage position indicated by the first physical address;
the controller also determines whether check data is generated, if so, first check data is generated based on the first data, and a second write command is generated and sent to one of the plurality of drivers, wherein the second write command indicates that the first check data and the first data are written into a storage position indicated by a second physical address;
the second physical address indicates a memory area in the memory cell group in which the first parity data and the first data are stored, so that the first data and the first parity data are stored in the same memory cell group;
and releasing the memory area temporarily storing the first data in the memory unit group;
after the memory cell group K is allocated, allocating a memory cell group K + 1; wherein the N + P pages of the memory cell group K come from each of the N + P drivers, and the N + P pages have the same physical address P (K); each page of the memory cell group K +1 has the same physical address P (K + 1).
2. The storage device of claim 1, further comprising:
the controller stores metadata in one or more of the plurality of drives, the metadata indicating that the first physical address and the second physical address have an associative relationship.
3. The storage device of claim 1, wherein the controller generates a first physical address for the first logical address by selecting a first drive of the plurality of drives, the first physical address indicating a storage location in the first drive.
4. The storage device of claim 3, wherein a write pointer is maintained in the controller for each drive, the write pointer indicating a physical address at which data is written; the controller also generates the first physical address based on the selected write pointer of the first drive and increments the write pointer of the first drive.
5. The storage device of claim 1, wherein the controller, in response to receiving a request to write first data to a first logical address for the storage device, allocates a group of storage units, the group of storage units comprising a plurality of storage units, each of the plurality of storage units located at one of the plurality of drives.
6. The storage device of claim 5, wherein the controller maintains a write pointer for a group of storage units, the write pointer indicating one storage unit of the group of storage units, the controller generating the first physical address based on the write pointer of the assigned group of storage units and causing the write pointer of the assigned group of storage units to indicate another storage unit of the group of storage units.
7. The memory device of claim 5, wherein in response to assigning the group of memory cells, the controller queries a state of a plurality of drives in which respective memory cells of the group of memory cells reside, and selects one memory cell from the group of memory cells based on the state to generate a first physical address for the first logical address, the first physical address indicating the selected memory cell.
8. The storage device of claim 1, wherein the controller determines to generate the check data if the storage device has received N data for generating the check data, N being a natural number.
9. The storage device of claim 1 or 8, wherein if the storage device has not received N data for generating the check data, the controller populates predetermined data to form N data for generating the check data and determines to generate the check data.
10. The storage device of claim 1 or 8, wherein if the storage device has not received N data to generate parity data, the controller initiates a garbage collection operation for one or more of the plurality of drives to form N data to generate parity data and determines to generate parity data.
CN201611089871.0A 2013-03-11 2013-03-11 Storage device with multiple solid state disks Active CN107066202B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611089871.0A CN107066202B (en) 2013-03-11 2013-03-11 Storage device with multiple solid state disks

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201310077076.XA CN103176858B (en) 2013-03-11 2013-03-11 Storage device with multiple solid-state discs
CN201611089871.0A CN107066202B (en) 2013-03-11 2013-03-11 Storage device with multiple solid state disks

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201310077076.XA Division CN103176858B (en) 2013-03-11 2013-03-11 Storage device with multiple solid-state discs

Publications (2)

Publication Number Publication Date
CN107066202A CN107066202A (en) 2017-08-18
CN107066202B true CN107066202B (en) 2020-07-28

Family

ID=48636758

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201611089871.0A Active CN107066202B (en) 2013-03-11 2013-03-11 Storage device with multiple solid state disks
CN201310077076.XA Active CN103176858B (en) 2013-03-11 2013-03-11 Storage device with multiple solid-state discs

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201310077076.XA Active CN103176858B (en) 2013-03-11 2013-03-11 Storage device with multiple solid-state discs

Country Status (1)

Country Link
CN (2) CN107066202B (en)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014139390A1 (en) * 2013-03-11 2014-09-18 北京忆恒创源科技有限公司 Storage device and accessing method thereof
CN103593260B (en) * 2013-10-17 2016-10-05 华为技术有限公司 The guard method of a kind of metadata and device
CN104407813B (en) * 2014-11-20 2019-02-19 上海宝存信息科技有限公司 A kind of RAID system and method based on solid storage medium
CN111625477B (en) * 2016-07-01 2023-09-05 北京忆恒创源科技股份有限公司 Processing method and device for read request for accessing erase block
CN108241468B (en) * 2016-12-23 2021-12-07 北京忆芯科技有限公司 IO command processing method and solid-state storage device
CN109558333B (en) * 2017-09-27 2024-04-05 北京忆恒创源科技股份有限公司 Solid state storage device namespaces with variable additional storage space
CN109669626B (en) * 2017-10-16 2021-12-03 建兴储存科技(广州)有限公司 Solid state storage device and related data management method thereof
US11733918B2 (en) * 2020-07-28 2023-08-22 Samsung Electronics Co., Ltd. Systems and methods for processing commands for storage devices

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101582903A (en) * 2009-06-24 2009-11-18 杭州华三通信技术有限公司 Storing method of streaming media resource and device
CN101719103A (en) * 2009-11-25 2010-06-02 成都市华为赛门铁克科技有限公司 Memory device and information processing method based on same
WO2012064464A1 (en) * 2010-11-08 2012-05-18 Greenliant Llc Memory controller and system for storing blocks of data in non-volatile memory devices in a redundant manner
CN203191968U (en) * 2013-03-11 2013-09-11 北京忆恒创源科技有限公司 Storage equipment with a plurality of solid-state discs

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050015655A1 (en) * 2003-06-30 2005-01-20 Clayton Michele M. Intermediate station
CN100470506C (en) * 2007-06-08 2009-03-18 马彩艳 Flash memory management based on sector access
US20100161932A1 (en) * 2008-12-18 2010-06-24 Ori Moshe Stern Methods for writing data from a source location to a destination location in a memory device
CN101777013A (en) * 2009-01-12 2010-07-14 成都市华为赛门铁克科技有限公司 Solid state disk and data read-write method
TWI497293B (en) * 2009-12-17 2015-08-21 Ibm Data management in solid state storage devices
EP2565772A4 (en) * 2010-12-30 2013-05-01 Huawei Tech Co Ltd Storage array, storage system, and data access method
CN102662606B (en) * 2012-03-12 2015-07-08 记忆科技(深圳)有限公司 Raid configuration information processing method and raid controller
CN102830942B (en) * 2012-06-28 2016-06-22 记忆科技(深圳)有限公司 The method of solid state hard disc disk array mapping and solid state hard disc thereof

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101582903A (en) * 2009-06-24 2009-11-18 杭州华三通信技术有限公司 Storing method of streaming media resource and device
CN101719103A (en) * 2009-11-25 2010-06-02 成都市华为赛门铁克科技有限公司 Memory device and information processing method based on same
WO2012064464A1 (en) * 2010-11-08 2012-05-18 Greenliant Llc Memory controller and system for storing blocks of data in non-volatile memory devices in a redundant manner
CN203191968U (en) * 2013-03-11 2013-09-11 北京忆恒创源科技有限公司 Storage equipment with a plurality of solid-state discs

Also Published As

Publication number Publication date
CN103176858B (en) 2017-05-03
CN103176858A (en) 2013-06-26
CN107066202A (en) 2017-08-18

Similar Documents

Publication Publication Date Title
CN107066202B (en) Storage device with multiple solid state disks
US11068170B2 (en) Multi-tier scheme for logical storage management
AU2015258208B2 (en) Resource allocation and deallocation for power management in devices
US8230159B2 (en) System, method, and computer program product for sending logical block address de-allocation status information
US10223009B2 (en) Method and system for efficient cache buffering supporting variable stripe sizes to enable hardware acceleration
CN103218270B (en) There is the computer of multiple solid-state disk
CN109101185B (en) Solid-state storage device and write command and read command processing method thereof
CN103150261A (en) Method and device for simultaneously accessing multiple solid-state disks
CN107797934B (en) Method for processing de-allocation command and storage device
CN106873903B (en) Data storage method and device
US20190243758A1 (en) Storage control device and storage control method
CN107797938B (en) Method for accelerating de-allocation command processing and storage device
JP7146054B2 (en) System controller and system garbage collection methods
CN108877862B (en) Data organization of page stripes and method and device for writing data into page stripes
CN203191967U (en) Computer system
KR101517183B1 (en) Data storage device and data storing method thereof
CN203191968U (en) Storage equipment with a plurality of solid-state discs
US11314428B1 (en) Storage system and method for detecting and utilizing wasted space using a file system
CN110928482A (en) Partial page stripes and memory devices using the same and methods thereof
US11907123B2 (en) Flash memory garbage collection
CN108664210B (en) IO command control method, IO command control system and solid-state storage device
US20240143227A1 (en) Data Storage Device and Method for Reducing Flush Latency
US11829647B1 (en) Storage system and method for using a queue monitor in a block allocation process
US11599298B1 (en) Storage system and method for prediction-based pre-erase of blocks to improve sequential performance
WO2014139390A1 (en) Storage device and accessing method thereof

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing

Patentee after: Beijing yihengchuangyuan Technology Co.,Ltd.

Address before: 100192 Room 302, 3 / F, building B-2, Dongsheng Science Park, 66 xixiaokou Road, Haidian District, Beijing

Patentee before: MEMBLAZE TECHNOLOGY (BEIJING) Co.,Ltd.

CP03 Change of name, title or address