WO2014139390A1 - 存储设备及其访问方法 - Google Patents
存储设备及其访问方法 Download PDFInfo
- Publication number
- WO2014139390A1 WO2014139390A1 PCT/CN2014/073155 CN2014073155W WO2014139390A1 WO 2014139390 A1 WO2014139390 A1 WO 2014139390A1 CN 2014073155 W CN2014073155 W CN 2014073155W WO 2014139390 A1 WO2014139390 A1 WO 2014139390A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- physical address
- write
- storage
- storage unit
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
Definitions
- the present invention relates to a solid state storage device (SSD) and, more particularly, to a method and apparatus for simultaneously accessing a plurality of solid state disks.
- SSD solid state storage device
- Solid-state storage devices are also high-capacity, non-volatile storage devices for computer systems.
- Solid-state storage devices generally use flash (Flash) as a storage medium.
- Flash Flash
- High-performance solid-state storage devices are used in high-performance computers.
- a memory target is one or more logic units (Logic Units) of a shared chip enable (CE, Chip Enable) signal within a NAND flash package.
- Each logical unit has a logical unit number (LUN, Logic Unit Number).
- LUN logical unit number
- Die die
- the logic unit corresponds to a single die.
- a logical unit can include multiple planes (Plane). Multiple planes within a logical unit can be accessed in parallel, while multiple logical units within a NAND flash chip can execute command and report states independently of each other. Available from
- Solid-state storage devices can have an expansion card shape that can be mounted to a PCIE or similar interface on the motherboard. Solid state storage devices can also have a 3.5, 2.5, or 1.8-inch drive shape that can be mounted into a rack or disk array device, commonly referred to as a Solid State Disk.
- FIG. 1 Chinese Patent Application Publication No. CN102656567A discloses data management within a solid state storage device.
- a set of pages of a solid state storage device is referred to as a "stride", each step comprising a set of pages from each channel, wherein a set of pages for each channel is referred to as a "strip" ( strip ).
- LBA Logical Block Address
- PBA Physical Block Address
- the ids in Fig. 1 are bars of 31, 52, 44, and 67, respectively).
- the filling of multiple bars within the step can be continuous or parallel. In this way, the introduction of RAID (Redundant Array of Independent Disks) mode into solid-state storage devices improves the performance and reliability of solid-state storage devices.
- RAID Redundant Array of Independent Disks
- each SSD or memory card may have different capacities and performances. Each SSD or memory card may exhibit different characteristics over time. .
- the specific performance of each SSD or memory card will help improve the performance of the storage device.
- the amount of data carried in the write request may be different from the data capacity of the "step".
- Corresponding means are needed to match the access request from the client to the storage unit's storage unit capacity.
- a method for accessing a plurality of drivers of a storage device 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 indicating writing the first data to the first physical address; determining whether to generate verification data; if yes, based on the first data Generating first parity data and writing the first parity data to a second physical address.
- the method of the first aspect of the present invention further comprising: storing metadata on one or more of the plurality of drivers, the metadata indicating that the first physical address, the second physical address have an association relationship.
- a method wherein a first physical address is generated for the first logical address by selecting a first one of the plurality of drivers, the first physical address indicating the first drive Storage location.
- a method wherein a write pointer is provided for each drive, the write pointer indicates a physical address of the write data, the first physical address is generated based on the selected write pointer of the first drive, and The write pointer of the first drive is incremented.
- a method wherein the storage unit group is allocated in response to receiving a request to write the first data to the first logical address for the storage device, the storage group comprising a plurality of storage units, Each of the plurality of memory cells is located in one of the plurality of drivers.
- a method wherein a write pointer is provided for a storage unit group, the write pointer indicates a storage unit in the storage unit group, and the first physical address is generated based on a write pointer of the allocated storage unit group And causing the write pointer of the allocated memory cell group to indicate another memory cell in the memory cell group.
- the method according to the first aspect of the present invention wherein, in response to the allocating the storage unit group, one of the storage unit groups is selected based on a state of the plurality of drives in which the respective storage units of the storage unit group are located
- the first logical address generates a first physical address, the first physical address indicating the selected storage unit.
- a method wherein a write queue is provided for each of the plurality of drivers for storing a write command prior to transmitting the write command to the drive.
- the predetermined data is filled to form N pieces of data for generating the check data, and it is determined that the check data is generated.
- N pieces of data for generating check data are formed by performing a garbage collection operation, and determining to generate check data .
- a method according to the first aspect of the invention wherein the generation of the verification data is indicated in the request.
- a method wherein if N data for generating check data has not been received, and an event of forcibly calculating the check data occurs, filling the data to form N data for generating check data And generate checksum data.
- N data and generate check data The method according to the first aspect of the present invention, wherein if the N data for generating the check data has not been received, and the event of forcibly calculating the check data occurs, performing a garbage collection operation to form a N for generating the check data Data, and generate check data.
- apparatus for accessing a plurality of drivers of a storage device, the apparatus comprising: for receiving a first logical address for writing the first data to the storage device a module for requesting; a module for generating a first physical address for the first logical address; a module for generating a write command, the write command indicating writing the first data to the first physical address a module for determining whether to generate verification data, configured to generate first verification data based on the first data, and write the first verification data to a second physics in the case of determining to generate verification data
- the module of the address for receiving a first logical address for writing the first data to the storage device a module for requesting; a module for generating a first physical address for the first logical address; a module for generating a write command, the write command indicating writing the first data to the first physical address a module for determining whether to generate verification data, configured to generate first verification data based on the first data, and write the first verification data to a second physics in the case of determining to generate
- a storage device comprising: a network adapter, a controller, and a plurality of drivers coupled to the controller; the network adapter coupling the storage device to a network and receiving from a client An access request indicating that the first data is written to the 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 send Giving one of the plurality of drivers indicating that the first data is written to the first physical address; the controller further determining whether to generate verification data, and if so, generating a first school based on the first data Detecting data, and generating a second write command to send to one of the plurality of drivers indicating that the first parity data is written to the second physical address.
- the storage device further comprising: the controller storing metadata in one or more of the plurality of drives, the metadata indicating the first physical address, the first The two physical addresses have an association relationship.
- a storage device wherein the controller generates a first physical address for the first logical address by selecting a first one of the plurality of drivers, the first physical address indicating The storage location in the first drive.
- a storage device wherein a write pointer is maintained for each drive in the controller, the write pointer indicates a physical address of the write data; the controller is further based on the write of the selected first drive The pointer generates the first physical address and increments a write pointer of the first driver.
- a storage device wherein the controller allocates a storage unit group, the storage group including a plurality of requests in response to receiving a request to write the first data to the first logical address for the storage device a storage unit, each of the plurality of storage units being located in one of the plurality of drives.
- a storage device wherein the controller maintains a write pointer for a storage unit group, the write pointer indicates one of the storage unit groups, and the controller is based on the allocated storage unit group A write pointer generates the first physical address and causes a write pointer of the allocated set of memory cells to indicate another memory location in the set of memory cells.
- a storage device in response to the allocating the storage unit group, the controller queries a state of a plurality of drives in which the respective storage units of the storage unit group are located, and from the storage based on the status A memory cell is selected in the cell group to generate a first physical address for the first logical address, the first physical address indicating the selected memory cell.
- a storage device according to a third aspect of the present invention, wherein the controller provides a write queue for each of the plurality of drivers, the write queue for storing a write command before transmitting a write command to the drive .
- a storage device wherein if the storage device has received N pieces of data for generating check data, the controller determines to generate check data, N being a natural number.
- a storage device wherein, if the storage device has not received N data for generating check data, the controller fills in predetermined data to form N pieces for generating check data Data, and determine to generate checksum data.
- the controller initiates one or more of the plurality of drives The garbage collection operation forms N data for generating check data, and determines to generate check data.
- a storage device according to a third aspect of the invention, wherein the value of the N is indicated in the request.
- a storage device wherein the generation of the check data is indicated in the request.
- a storage device wherein the value of the N is indicated in the request.
- a storage device wherein, if N data for generating check data has not been received, and the request indicates generation of check data, filling data to form N for generating check data Data, and generate check data.
- a storage device wherein, if N data for generating check data has not been received, and an event of forcibly calculating the check data occurs, filling the data to form N pieces for generating check data Data, and generate check data.
- a storage device wherein if N pieces of data for generating check data have not been received, and the request indicates generation of check data, performing a garbage collection operation to form a check data for generating N data, and generate check data.
- the garbage collection operation is performed to form a checksum data for generating the check data. N data and generate check data.
- a computer system comprising: a main board, an expansion card disposed on the main board, a CPU, and a plurality of drivers coupled to the expansion card; the CPU writes the first data into the first a request for a logical address is sent to the expansion card; the expansion card generates a first physical address for the first logical address, and generates a write command to send to one of the plurality of drivers, the write command indication Writing the first data to the first physical address; the expansion card further determining whether to generate verification data, and if so, generating first verification data based on the first data, and generating a second write command to send To one of the plurality of drivers, the second write command instructs writing the first parity data to a second physical address.
- a computer system further comprising: the expansion card storing metadata in one or more of the plurality of drivers, the metadata indicating the first physical address, the first The two physical addresses have an association relationship.
- a computer system according to a fourth aspect of the present invention, wherein the expansion card generates a first physical address for the first logical address by selecting a first one of the plurality of drivers, the first physical address indicating The storage location in the first drive.
- a computer system wherein a write pointer is maintained for each drive in the expansion card, the write pointer indicating a physical address of the write data; the expansion card is further based on the selected first drive write The pointer generates the first physical address and increments a write pointer of the first driver.
- a computer system wherein the expansion card allocates a storage unit group in response to receiving a request to write first data to a first logical address for the storage device, the storage group including a storage unit, each of the plurality of storage units being located in one of the plurality of drives.
- a computer system wherein the expansion card maintains a write pointer for a storage unit group, the write pointer indicates a storage unit of the storage unit group, and the expansion card is based on the allocated storage unit group
- a write pointer generates the first physical address and causes a write pointer of the allocated set of memory cells to indicate another memory location in the set of memory cells.
- a computer system wherein, in response to allocating a storage unit group, the expansion card queries a state of a plurality of drives in which respective storage units of the storage unit group are located, and from the storage based on the status A memory cell is selected in the cell group to generate a first physical address for the first logical address, the first physical address indicating the selected memory cell.
- the expansion card provides a write queue for each of the plurality of drivers, the write queue for storing a write command before transmitting a write command to the drive .
- a computer system wherein if the expansion card has received N pieces of data for generating check data, it is determined to generate check data, N being a natural number.
- a computer system wherein, if the expansion card has not received N data for generating check data, the expansion card fills predetermined data to form N pieces for generating check data Data, and determine to generate checksum data.
- a computer system wherein, if the expansion card has not received N data for generating verification data, the expansion card is initiated for one or more of the plurality of drivers
- the garbage collection operation forms N data for generating check data, and determines to generate check data.
- a computer system according to a fourth aspect of the invention, wherein the value of the N is indicated in the request.
- a computer system according to a fourth aspect of the present invention; wherein the value of the N is indicated in the request.
- a computer system according to a fourth aspect of the present invention, wherein the generation of the verification data is indicated in the request.
- N pieces of data N pieces of data
- the request indicates generating check data padding data to form N pieces of data for generating check data, and generating check data.
- a computer system according to a fourth aspect of the present invention, wherein if the verification data is not yet received
- N data N data, and an event that forcibly calculates the check data occurs.
- the data is filled to form N pieces of data for generating check data, and check data is generated.
- a computer system according to a fourth aspect of the present invention, wherein if the verification data is not yet received
- N pieces of data N pieces of data, and the request indicates generation of check data.
- a garbage collection operation is performed to form N pieces of data for generating check data, and check data is generated.
- a computer system according to a fourth aspect of the present invention, wherein if the verification data is not yet received
- N data N data, and an event that forces calculation of the check data occurs.
- a garbage collection operation is performed to form N pieces of data for generating check data, and check data is generated.
- Figure 1 shows the data organization of the SSD in the prior art
- FIG. 2 is a data organization of a storage device in accordance with an embodiment of the present invention.
- FIG. 3 is a block diagram of a computer system in accordance with an embodiment of the present invention.
- FIG. 4 is a flow chart of a method of accessing multiple drivers in accordance with an embodiment of the present invention.
- FIG. 5 is a flow chart of a method of accessing multiple drivers in accordance with a further embodiment of the present invention.
- FIG. 6 is a flow diagram of a method of accessing multiple drivers in accordance with still further embodiments of the present invention
- FIG. 7 is a block diagram of a memory device in accordance with an embodiment of the present invention.
- 2 is a data organization of a storage device in accordance with an embodiment of the present invention.
- the storage device includes a solid state disk 200, a solid state disk 220, and a solid state disk 260.
- Each solid state disk can be a 3.5, 2.5 or 1.8 inch drive of standard size.
- the solid state disk 200 can include a flash memory chip 201 and a flash memory chip 202.
- SSD 220 includes a flash memory chip 221, and the solid state disk 260 includes a flash memory chip 261.
- the solid state disk 200 can also include a different number of flash memory chips.
- the SSD 200, the SSD 220, and the SSD 260 can each include different numbers and/or different capacities of flash chips. Flash chips in a solid state disk can be organized into multiple channels to trade off between the number of interface pins used and the parallel access of multiple flash chips. For example, in the Chinese patent application No. 201210448894.1, 201210449387.X, various ways of organizing flash memory chips into channels are provided.
- flash chip 201 includes a plurality of blocks, such as block 0, block 1, block 2, and block 3. Other numbers of blocks can also be included in the flash chip. Multiple pages are included in each block. For NAND flash, the read and write operations are performed in units of pages, and the erase operation is performed in units of blocks, which is determined by the physical structure of the NAND flash memory.
- flash chip 201 also includes plane 0 and plane 1. Plane 0 includes block 0 and block 2, while plane 1 includes block 1 and block 3. Plane 0 and plane 1 each have a page register such that the block at plane 0 and the block at plane 1 can operate in parallel. Flash chips can have different numbers of pages.
- the flash chip can also include one or more dies.
- page 211 of solid state disk 200, page 231 of solid state disk 220, and page 261 of solid state disk 260 are grouped together to form a group of memory cells.
- the application number is 201310003789.1 with
- a method of mapping logical addresses from a host to a storage unit group is provided in Chinese Patent Application No. 201310003898.3.
- the individual pages in the storage unit group are operated together, wherein user data and verification data generated by the user data can be stored.
- corrupted data can be recovered based on other pages in the storage unit group.
- 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.
- the set of memory cells is allocated such that when one or more of the solid state disks 200, 220, and 260 are removed, the remaining solid state disks can be utilized to recover data stored in the removed solid state disks.
- page 211, page 231, and page 261 have the same physical address in solid state disk 200, solid state disk 220, and solid state disk 260, respectively, so that individual pages constituting the memory cell group can be easily determined without additional Metadata.
- 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.
- the memory cell group includes three pages, it will be understood that the memory cell group can have other different numbers of pages.
- the memory cell group includes pages of each of a plurality of solid state disks (200, 220, and 260). In another embodiment, the memory cell group includes pages from one or more of the plurality of solid state disks. A plurality of pages from one solid state disk may also be included in the storage unit group.
- page 215, page 235, and page 265 form 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 comprise a group of memory cells.
- Metadata may be stored in out-of-band data on pages 215, 235, and 265, and may also be stored in user data areas on pages 215, 235, and 265 (reducing users accordingly) The storage capacity of the data), you can also store metadata in other pages.
- the damaged pages in the flash memory may be damaged, using metadata to indicate a plurality of pages constituting the memory cell group, the damaged pages can be effectively excluded, and the memory cell groups are composed of pages having the same or different physical addresses, thereby improving the storage space. Utilization rate.
- Computer 300 includes a motherboard 310.
- a central processing unit (CPU) 312 and an expansion card 314 are disposed on the main board 310.
- a chipset, a memory, and the like may also be disposed on the main board 310.
- Expansion card 314 is used to couple multiple storage disks to computer 300.
- the expansion card 314 can be coupled to the main board 310 through various interfaces such as PCIE (Peripheral Component Interconnect Express), PCI (Peripheral Component Interconnect), and the like.
- PCIE Peripheral Component Interconnect Express
- PCI Peripheral Component Interconnect
- the expansion card 314 can couple the storage disk through a variety of interfaces including, but not limited to, SATA (Serial Advanced Technology Attachment), USB (Universal Serial Bus), PCIE, SCSK Small Computer. System Interface, Small computer system interface), IDE (Integrated Drive Electronics), etc.
- the plurality of storage disks includes disks 320, 322, 324, and 326.
- the expansion card 314 can couple a different number of storage disks.
- the expansion card 314 may include a Flash Translation Layer (FTL) component to convert the logical address based storage disk access request into a physical address based storage disk access request.
- the storage disk may be a solid state disk, the solid state disk uses a flash memory chip as a storage medium, and the solid state disk is also applicable to other types of memory chips, such as phase change memory, resistive memory, ferroelectric memory, and the like.
- the expansion card 314 may not be included in the motherboard 310, and the disks 320, 322, 324, and 326 are coupled to the motherboard through interfaces such as PCIE, IDE, SCSI, and/or SATA disposed on the motherboard 310. 310.
- a flash translation layer software is provided in an operating system or application of the computer 300 for converting the logical address based storage disk access request into a physical address based storage disk access request. Flash translation layer components can also be placed in a CPU, chipset, or other integrated circuit.
- Control circuitry may be disposed on expansion card 314 for performing the operations described in Figures 4-6 to control access to 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 circuit can also include one or more processors or controllers. Flash translation layer components can be implemented as hardware circuits in FPGAs, ASICs, or as software running on a processor or controller.
- a write request is received.
- the write request can come from the CPU 312 of the computer 300.
- the write request can be issued by an operating system or application running on computer 300 and instructing the data to be written to a storage device such as a solid state disk.
- the write request may carry or indicate a logical address, and the logical address indicates a logical address space presented by the storage device.
- a physical address is obtained.
- Obtaining a logical address based on a write request may extract a logical address from a write request, or based on an indication in a write request (eg, an indication of a storage space storing a logical address, or an offset from a previous logical address) Indirectly extract logical addresses.
- the logical address is converted to a physical address by a mapping table.
- a 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 memory cells. The logical address is converted to an address for the storage unit group by a mapping table or a sequential mapping.
- the data indicated by the write request is written to the storage device based on the physical address.
- a write queue is provided for each solid state disk to write data to the storage device based on the physical address in a first in first out manner.
- a shared write queue is provided for multiple or all SSDs.
- the plurality of pages are included in the group of memory cells, and the data corresponding to the write request pair is less than the capacity of the group of memory cells.
- the write data is also cached to generate check data for the corresponding storage unit group.
- metadata indicating storage unit group information is also written to the storage device.
- step 430 it is determined whether or not verification data is generated. If not, return to step 400 to receive other write requests. If so, the verification data is calculated in step 440.
- the parity data of P pages is calculated based on the user data of N pages. For example, parity data can be calculated using parity, or other verification data generation methods that are commonly used in all fields can be used.
- user data corresponding to one storage unit group is temporarily stored before the verification data is calculated, and after the verification data is calculated, the storage area temporarily storing the user data may be released.
- the physical address of the parity data for storing P pages is also determined based on the memory cell group address.
- the verification data is written to the storage device based on the physical address.
- a write queue can be provided to write the parity data to the storage device in a first in first out manner.
- metadata indicating storage unit group information is also written to the storage device.
- 5 is a flow chart of a method of accessing multiple drivers in accordance with a further embodiment of the present invention. The flowchart shown in FIG. 5 further shows various ways of acquiring a physical address based on the logical address corresponding to the write request with respect to the flowchart in FIG.
- a write request is received.
- one of the plurality of solid state disks is assigned.
- SSDs can be dispensed in a variety of ways.
- the solid state disk can be allocated by rotating; the solid state disk can be allocated by querying the state of the solid state disk and selecting the solid state disk in the idle state; and writing can also be selected by comparing the length of the write queue corresponding to the solid state disk SSDs are allocated in a manner that queues shorter SSDs.
- a logical address is mapped to a physical address indicating the SSD for the selected SSD.
- the physical address can indicate the physical location of the page of the solid state disk.
- a plurality of pages from one or more SSDs that are allocated for successive multiple write requests comprise a group of memory cells.
- the N pages of the memory cell group can come from each of the N solid state disks, and the N pages can be located at the same location or at different locations of each solid state disk.
- the N pages of the storage unit group can also come from one or less than N SSDs.
- one of the plurality of solid state disks is assigned.
- SSDs can be dispensed in a variety of ways.
- the solid state disk can be allocated by rotating; the solid state disk can be allocated by querying the state of the solid state disk and selecting the solid state disk in the idle state; and writing can also be selected by comparing the length of the write queue corresponding to the solid state disk SSDs are allocated in a manner that queues shorter SSDs.
- the write pointer of the SSD is taken as the physical address to which the data is to be written, and the write pointer is incremented.
- each solid state disk has a write pointer for itself, and the write pointer indicates where the data is to be written so that successive write operations on one solid state disk can be at successive physical addresses of the solid state disk.
- the physical address can indicate the physical location of the page of the solid state disk.
- a plurality of pages from one or more SSDs that are allocated for successive multiple write requests comprise a group of memory cells.
- N pages can come from each of the N solid state disks, and N pages can be located at the same location or at different locations of each solid state disk.
- the N pages of the storage unit group can also come from one or less than N solid state disks.
- a storage unit group includes a plurality of pages.
- the plurality of pages constituting the storage unit are from a plurality of solid state disks.
- a group of memory cells may include N+P pages, N pages for storing user data, and P pages for storing parity data.
- N+P pages come from N+P SSDs, and each SSD provides one page.
- N+P pages are from less than N+P solid state disks.
- the number of memory cell groups and the manner in which memory cell groups are mapped to physical pages is determined.
- the plurality of pages of the storage unit group can be located at the same location or at different locations of the plurality of solid state disks.
- the set of memory cells is allocated such that successive write operations on one solid state disk can occur at successive physical addresses of the solid state disk. For example, if one page of the currently allocated memory cell group has a 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.
- N+P pages of memory cell group K are from each of N+P solid state disks, and the N+P pages have the same physical address P(K), and the memory cell group K+ Each page of 1 has the same physical address ⁇ ( K+1 ); then, after the storage unit ⁇ is allocated, the storage unit group K+1 is allocated.
- the write pointer of the group of memory cells is taken as the physical address of the data to be written, and the write pointer is incremented. In this way, the current bank of memory cells has a write pointer for itself, and the write pointer indicates where the data is to be written.
- a group of storage units is allocated.
- a physical page that has not been allocated in the storage unit group is selected, and the address of the physical page is taken as the assigned physical address.
- the data indicated by the write request is written to the storage device based on the physical address.
- step 530 it is determined whether or not verification data is generated. If not, return to step 500 to receive other write requests. If so, the verification data is calculated in step 540.
- a physical address is also determined for the parity data. For example, for the user data in the storage unit group, the physical addresses of the P pages belonging to the storage unit group are allocated for the corresponding verification data, and the P pages are used to store the verification data. For another example, for the user data and the verification data generated based on the user data, the physical address is assigned, and the user data and the verification data are stored in the same storage unit group.
- the verification data is written to the storage device based on the physical address.
- FIG. 6 is a flow diagram of a method of accessing multiple drivers in accordance with still further embodiments of the present invention.
- the flowchart shown in Fig. 6, with respect to the flowchart in Fig. 4, further shows various ways of determining whether or not to generate check data.
- the verification data is generated based on the user data. In other cases, such as shutdown or power down, it is also necessary to generate verification data.
- a write request is received.
- a physical address is obtained.
- the data indicated by the write request is written to the storage device based on the physical address.
- Step 632 shows a way to obtain a determination to determine whether to generate check data.
- it is determined whether all user data for one storage unit group has been received. If not, then return to step 600 to receive other write requests. If so, the check data is calculated at step 640.
- the total user data of one storage unit group may be, for example, N pages to be stored in the storage unit group. In one embodiment, when the data corresponding to the plurality of write requests sequentially received reaches the size of N pages, it is determined that all of the user data for one of the memory cell groups has been received. In another embodiment, when N pages in the memory cell group have been allocated, it is determined that all user data for one memory cell group has been received.
- Step 634 shows another way of obtaining a determination to determine whether to generate verification data.
- it is judged whether m ( ⁇ N ) page data has been received, and all user data for one memory cell group has not been received; however, an event requiring forced calculation of the parity data has occurred.
- the forced calculation of the verification data may be due to an unexpected situation such as a power failure or shutdown of the computer. It may also be a flush buffer request received by the operating system or application or the m page data has been cached for too long. If the verification data is not calculated, the temporarily stored m page data will be lost, and the completed storage unit group will not be obtained on the storage device.
- the check data is calculated.
- the Nm page data is also filled with a predetermined data value (for example, 0, 1, or other predetermined value), so that the received m page data and the padded Nm page data constitute N pages of data, and The P page check data is calculated in step 640.
- the received data may not be aligned by page boundaries, and accordingly, the padded data may not be aligned by page boundaries.
- Step 636 shows another way to obtain a determination whether to generate check data.
- it is judged whether or not m ( ⁇ N ) page data has been received, and all user data for one memory cell group has not been received; however, it is indicated in the write request that the data to be written has only m pages.
- the write request it indicates that the data to be written has only m pages, which means that the write operation from the operating system or application has been completed, and implies that there may be no subsequent write requests in the future; it may mean The operating system or application predicts that write requests are unlikely to occur in the future. In this case, continuing to temporarily store m pages of data increases power consumption and reduces the performance of the storage device due to the storage space being occupied.
- the check data is calculated.
- the Nm page data is also filled with a predetermined data value (for example, 0, 1, or other predetermined value), so that the received m page data and the padded Nm page data constitute N pages of data, and The P page check data is calculated in step 640. It is also possible to perform a garbage collection operation on a storage device or a solid state disk, and fill the Nm page data with a write request generated in the garbage collection operation.
- the received data may not be aligned by page boundaries Accordingly, the filled data may not be aligned by page boundaries.
- Step 638 shows another way to obtain a determination to determine whether to generate verification data.
- it is determined whether m ( ⁇ N ) page data has been received, and all user data for one memory cell group has not been received; however, a garbage collection operation is performed on the storage device. If not, then return to step 600 to receive other write requests; if so, the N-m page data is filled using the write request generated in the garbage collection operation, and the P page check data is calculated in step 640.
- the received data may not be aligned by page boundaries, and correspondingly, the padded data may not be aligned by page boundaries.
- the verification data is written to the storage device based on the physical address.
- data can be simultaneously written to a plurality of solid state disks of the storage device, improving the degree of parallelism of the write operation. Moreover, additional protection of data is provided by the storage unit group, which improves the reliability of the storage device.
- FIG. 7 is a block diagram of a memory device in accordance with an embodiment of the present invention.
- a block diagram of a computer system in accordance with an embodiment of the present invention has been disclosed above in FIG.
- the embodiment of Figure 7 is a storage device that provides storage services over a network.
- Storage device 700 includes a backplane 710.
- a controller 714 is disposed on the backboard 710.
- a chipset, a memory, and the like may also be disposed on the backplane 710.
- Controller 714 is used to couple multiple storage disks to storage device 700.
- the controller 714 can couple the storage disks through a variety of interfaces including, but not limited to, SATA7, USB7, PCI, PCIE, SCSI7, IDE7, and the like.
- Controller 714 can also be indirectly coupled to the storage disk by a chipset or expansion card.
- a plurality of storage disks include disks 720, 722, 724, and 726. Controller 714 can couple a different number of storage disks.
- the controller 714 can include a Flash Translation Layer (FTL) component to translate the logical address based storage disk access request into a physical address based storage disk access request.
- FTL Flash Translation Layer
- the storage disk may be a solid state disk, the solid state disk uses a flash memory chip as a storage medium, and the solid state disk is also applicable to other types of memory chips, such as phase change memory, resistive memory, ferroelectric memory, and the like.
- flash translation layer software is provided in an operating system or other program of storage device 700 for converting a logical address based storage disk access request into a physical address based storage disk access request. Flash translation layer components can also be placed in a CPU, chipset, or other integrated circuit.
- Controller 714 can be used to implement the operations described above in Figures 4-6 to control access to disks 720, 722, 724, 726. Controller 714 can be in the form of an FPGA, an ASIC, or a combination thereof. Controller 714 can also include one or more processors or controllers. Flash translation layer components can be implemented as hardware circuits in FPGAs or ASICs, or as software running in a processor or controller.
- Network adapters 730, 732 are also disposed on the backplane 710. Two network adapters are provided to increase the reliability of the storage device. One or a different number of network adapters are also available.
- Storage device 700 is coupled to network 734 by network adapters 730, 732.
- Network 734 can be an Ethernet, PCIE network, or Fibre Channel network.
- Clients 740, 742 are also coupled to network 734 and access storage device 700 via network 734. In other embodiments, clients 740, 742 may be directly coupled to network adapters 730 and/or 732 via network 734.
- the description of the present invention has been presented for purposes of illustration and description. Many modifications and variations will be apparent to those skilled in the art.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
提供了用于访问存储设备的多个驱动器的方法与装置。该方法包括:接收将第一数据写入用于所述存储设备的第一逻辑地址的请求;为所述第一逻辑地址生成第一物理地址;生成写入命令,其指示将所述第一数据写入所述第一物理地址;确定是否生成校验数据;若是,基于所述第一数据生成第一校验数据,并将所述第一校验数据写入第二物理地址。
Description
说 明 书 存储设备及其访问方法 技术领域
本发明涉及固态存储设备 ( Solid Storage Device, SSD ) , 更具体地, 本发明 涉及用于同时访问多个固态盘的方法与装置。 背景技术
同机械式硬盘相类似, 固态存储设备也是用于计算机系统的大容量、 非易失性 存储设备。 固态存储设备一般以闪存 ( Flash ) 作为存储介质。 高性能的固态存储设 备被用于高性能计算机。
存储器目标 ( Target )是 NAND闪存封装内的共享芯片使能 ( CE, Chip Enable ) 信号的一个或多个逻辑单元( Logic Unit )。每个逻辑单元具有逻辑单元号( LUN, Logic Unit Number ) 。 NAND闪存封装内可包括一个或多个管芯 (Die ) 。 典型地, 逻辑单 元对应于单一的管芯。 逻辑单元可包括多个平面 (Plane ) 。 逻辑单元内的多个平面 可以并行存取, 而 NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报 告状态。 在可从
http://www.micron.eom/~/media/Documents/Products/Other%20Documents/ONFI3_0Gol d.ashx获得的 "Open NAND Flash Interface Specification ( Revision 3.0 ) " 中, 提供 了关于目标 (target ) 、 逻辑单元、 LUN、 平面 (Plane ) 的含义, 其为现有技术的一 部分。
固态存储设备可具有扩展卡形状, 可安装到主板上的 PCIE或者类似的接口。 固 态存储设备还可具有 3.5、 2.5或 1.8英寸驱动器形状, 可安装到机架或盘阵设备中, 其一般被称为固态盘 ( Solid State Disk ) 。
公开号为 CN102656567A的中国专利申请公开了固态存储器件内的数据管理。 参看图 1 , 固态存储器件的一组页被称为 "步距(stride ) " , 每个步距包括来自每个 通道的一组页,其中每个通道的一组页被称为 "条" ( strip )。对于标识了 LBA ( Logic Block Address , 逻辑块地址)的写入请求, 实施在步距内的从 LBA到 PBA ( Physical Block Address , 物理块地址) 的映射, 并填充步距内的每个条 (图 1中的 id分别为 31、 52、 44、 67的条)。 对步距内多个条的填充可以是连续或并行的。 这样, 将 RAID ( Redundant Array of Independent Disks , 独立磁盘冗余阵列)模式引入到固态存储设 备中, 提高了固态存储设备的性能与可靠性。
然而, 存储设备中可能多个固态盘或多个存储卡, 每个固态盘或存储卡可能具 有不同的容量和性能,随着时间的流逝,各个固态盘或存储卡也会表现出不同的特性。 在写入数据时, 考虑各个固态盘或存储卡的特定性能将有助于提高存储设备的性能。 以及, 写入请求中所携带的数据量可能与 "步距" 的数据容量不同。 需要提供相应的 手段来匹配来自客户端的访问请求与存储设备的存储单元的容量。 发明内容
本发明解决了固态盘形成的 RAID存储设备中写放大问题,延长了存储设备的使用寿 命。
根据本发明的第一方面, 提供了一种用于访问存储设备的多个驱动器的方法, 所述方法包括: 接收将第一数据写入用于所述存储设备的第一逻辑地址的请求; 为所述第一逻辑地址生成第一物理地址; 生成写入命令, 其指示将所述第一数 据写入所述第一物理地址; 确定是否生成校验数据; 若是, 基于所述第一数据生成第 一校验数据, 并将所述第一校验数据写入第二物理地址。
根据本发明的第一方面的方法, 还包括: 在所述多个驱动器中的一个或多个上 存储元数据, 所述元数据指示所述第一物理地址、 所述第二物理地址具有关联关系。
根据本发明的第一方面的方法, 其中通过选择所述多个驱动器中的第一驱动器 来为所述第一逻辑地址生成第一物理地址,所述第一物理地址指示所述第一驱动器中 的存储位置。
根据本发明的第一方面的方法, 其中为每个驱动器提供写指针, 写指针指示写 入数据的物理地址,基于所选择的第一驱动器的写指针生成所述第一物理地址, 并使 所述第一驱动器的写指针递增。
根据本发明的第一方面的方法, 其中响应于接收将第一数据写入用于所述存储 设备的第一逻辑地址的请求, 分配存储单元组, 所述存储组包括多个存储单元, 所述 多个存储单元中的每个位于所述多个驱动器之一。
根据本发明的第一方面的方法, 其中所述存储单元为一个或多个页。
根据本发明的第一方面的方法, 其中为存储单元组提供写指针, 写指针指示所 述存储单元组中的一个存储单元,基于所分配的存储单元组的写指针生成所述第一物 理地址, 并使所分配的存储单元组的写指针指示所述存储单元组中的另一个存储单 元。
根据本发明的第一方面的方法, 其中响应于分配存储单元组, 基于所述存储单 元组的各个存储单元所在的多个驱动器的状态,从所述存储单元组中选择一个存储单 元来为所述第一逻辑地址生成第一物理地址,所述第一物理地址指示所选择的存储单 元。
根据本发明的第一方面的方法, 其中为所述多个驱动器中的每个驱动器提供写 队列, 用于在将写入命令发送给驱动器之前存储写入命令。
根据本发明的第一方面的方法, 其中如果已经收到用于生成校验数据的 N个数 据, 则确定生成校验数据, N是自然数。
根据本发明的第一方面的方法, 其中如果尚未收到用于生成校验数据的 N个数 据, 填充预定数据来形成用于生成校验数据的 N个数据, 并确定生成校验数据。
根据本发明的第一方面的方法, 其中如果尚未收到用于生成校验数据的 N个数 据, 通过执行垃圾回收操作来形成用于生成校验数据的 N个数据, 并确定生成校验 数据。
根据本发明的第一方面的方法, 其中在所述请求中指示生成校验数据。
根据本发明的第一方面的方法, 其中所述请求中指示所述 N的值。
根据本发明的第一方面的方法, 其中如果尚未收到用于生成校验数据的 N个数 据, 且所述请求中指示生成校验数据, 填充数据来形成用于生成校验数据的 N个数 据, 并生成校验数据。
根据本发明的第一方面的方法, 其中如果尚未收到用于生成校验数据的 N个数 据, 且强制计算校验数据的事件发生, 填充数据来形成用于生成校验数据的 N个数 据, 并生成校验数据。
根据本发明的第一方面的方法, 其中如果尚未收到用于生成校验数据的 N个数 据, 且所述请求中指示生成校验数据,执行垃圾回收操作来形成用于生成校验数据的
N个数据, 并生成校验数据。
根据本发明的第一方面的方法, 其中如果尚未收到用于生成校验数据的 N个数 据, 且强制计算校验数据的事件发生,执行垃圾回收操作来形成用于生成校验数据的 N个数据, 并生成校验数据。
根据本发明的第二方面, 提供了一种用于访问存储设备的多个驱动器的装置, 所述装置包括:用于接收将第一数据写入用于所述存储设备的第一逻辑地址的请求的 模块;用于为所述第一逻辑地址生成第一物理地址的模块;用于生成写入命令的模块, 所述写入命令指示将所述第一数据写入所述第一物理地址;用于确定是否生成校验数 据的模块; 用于在确定生成校验数据的情况下基于所述第一数据生成第一校验数据, 并将所述第一校验数据写入第二物理地址的模块。
根据本发明的第三方面, 提供了一种存储设备, 包括网络适配器、 控制器以及 耦合到所述控制器的多个驱动器; 所述网络适配器将所述存储设备耦合到网络, 并接 收来自客户端的访问请求,所述访问请求指示将第一数据写入用于所述存储设备的第 一逻辑地址; 所述控制器为所述第一逻辑地址生成第一物理地址, 并生成写入命令发 送给所述多个驱动器之一, 其指示将所述第一数据写入所述第一物理地址; 所述控制 器还确定是否生成校验数据, 若是, 基于所述第一数据生成第一校验数据, 并生成第 二写入命令发送给所述多个驱动器之一,其指示将所述第一校验数据写入第二物理地 址。
根据本发明的第三方面的存储设备, 还包括: 所述控制器将元数据存储于所述 多个驱动器中的一个或多个, 所述元数据指示所述第一物理地址、所述第二物理地址 具有关联关系。
根据本发明的第三方面的存储设备, 其中所述控制器通过选择所述多个驱动器 中的第一驱动器来为所述第一逻辑地址生成第一物理地址,所述第一物理地址指示所 述第一驱动器中的存储位置。
根据本发明的第三方面的存储设备, 其中在所述控制器中为每个驱动器维护写 指针, 写指针指示写入数据的物理地址; 所述控制器还基于所选择的第一驱动器的写 指针生成所述第一物理地址, 并使所述第一驱动器的写指针递增。
根据本发明的第三方面的存储设备, 其中所述控制器响应于接收将第一数据写 入用于所述存储设备的第一逻辑地址的请求, 分配存储单元组, 所述存储组包括多个 存储单元, 所述多个存储单元中的每个位于所述多个驱动器之一。
根据本发明的第三方面的存储设备,其中所述控制器为存储单元组维护写指针, 写指针指示所述存储单元组中的一个存储单元,所述控制器基于所分配的存储单元组 的写指针生成所述第一物理地址,并使所分配的存储单元组的写指针指示所述存储单 元组中的另一个存储单元。
根据本发明的第三方面的存储设备, 其中响应于分配存储单元组, 所述控制器 查询所述存储单元组的各个存储单元所在的多个驱动器的状态,并基于所述状态从所 述存储单元组中选择一个存储单元来为所述第一逻辑地址生成第一物理地址,所述第 一物理地址指示所选择的存储单元。
根据本发明的第三方面的存储设备, 其中所述控制器为所述多个驱动器中的每 个驱动器提供写队列, 所述写队列用于在将写入命令发送给驱动器之前存储写入命 令。
根据本发明的第三方面的存储设备, 其中如果所述存储设备已经收到用于生成 校验数据的 N个数据, 则所述控制器确定生成校验数据, N是自然数。
根据本发明的第三方面的存储设备, 其中如果所述存储设备尚未收到用于生成 校验数据的 N个数据, 则所述控制器填充预定数据来形成用于生成校验数据的 N个 数据, 并确定生成校验数据。
根据本发明的第三方面的存储设备, 其中如果所述存储设备尚未收到用于生成 校验数据的 N个数据, 则所述控制器发起用于所述多个驱动器的一个或多个的垃圾 回收操作来形成用于生成校验数据的 N个数据, 并确定生成校验数据。
根据本发明的第三方面的存储设备, 其中所述请求中指示所述 N的值。
根据本发明的第三方面的存储设备, 其中在所述请求中指示生成校验数据。 根据本发明的第三方面的存储设备, 其中所述请求中指示所述 N的值。
根据本发明的第三方面的存储设备, 其中如果尚未收到用于生成校验数据的 N 个数据, 且所述请求中指示生成校验数据, 填充数据来形成用于生成校验数据的 N 个数据, 并生成校验数据。
根据本发明的第三方面的存储设备, 其中如果尚未收到用于生成校验数据的 N 个数据, 且强制计算校验数据的事件发生, 填充数据来形成用于生成校验数据的 N 个数据, 并生成校验数据。
根据本发明的第三方面的存储设备, 其中如果尚未收到用于生成校验数据的 N 个数据, 且所述请求中指示生成校验数据,执行垃圾回收操作来形成用于生成校验数 据的 N个数据, 并生成校验数据。
根据本发明的第三方面的存储设备, 其中如果尚未收到用于生成校验数据的 N 个数据, 且强制计算校验数据的事件发生,执行垃圾回收操作来形成用于生成校验数 据的 N个数据, 并生成校验数据。
根据本发明的第四方面, 提供了一种计算机系统, 包括主板、 布置于主板上的 扩展卡、 CPU以及耦合到所述扩展卡的多个驱动器; 所述 CPU把将第一数据写入第 一逻辑地址的请求发送给所述扩展卡;所述扩展卡为所述第一逻辑地址生成第一物理 地址, 并生成写入命令发送给所述多个驱动器之一, 所述写入命令指示将所述第一数 据写入所述第一物理地址; 所述扩展卡还确定是否生成校验数据, 若是, 基于所述第 一数据生成第一校验数据, 并生成第二写入命令发送给所述多个驱动器之一, 所述第 二写入命令指示将所述第一校验数据写入第二物理地址。
根据本发明的第四方面的计算机系统, 还包括: 所述扩展卡将元数据存储于所 述多个驱动器中的一个或多个, 所述元数据指示所述第一物理地址、所述第二物理地 址具有关联关系。
根据本发明的第四方面的计算机系统, 其中所述扩展卡通过选择所述多个驱动 器中的第一驱动器来为所述第一逻辑地址生成第一物理地址,所述第一物理地址指示 所述第一驱动器中的存储位置。
根据本发明的第四方面的计算机系统, 其中在所述扩展卡中为每个驱动器维护 写指针, 写指针指示写入数据的物理地址; 所述扩展卡还基于所选择的第一驱动器的 写指针生成所述第一物理地址, 并使所述第一驱动器的写指针递增。
根据本发明的第四方面的计算机系统, 其中所述扩展卡响应于接收将第一数据 写入用于所述存储设备的第一逻辑地址的请求, 分配存储单元组, 所述存储组包括多 个存储单元, 所述多个存储单元中的每个位于所述多个驱动器之一。
根据本发明的第四方面的计算机系统, 其中所述扩展卡为存储单元组维护写指 针, 写指针指示所述存储单元组中的一个存储单元, 所述扩展卡基于所分配的存储单 元组的写指针生成所述第一物理地址,并使所分配的存储单元组的写指针指示所述存 储单元组中的另一个存储单元。
根据本发明的第四方面的计算机系统, 其中响应于分配存储单元组, 所述扩展 卡查询所述存储单元组的各个存储单元所在的多个驱动器的状态,并基于所述状态从 所述存储单元组中选择一个存储单元来为所述第一逻辑地址生成第一物理地址,所述 第一物理地址指示所选择的存储单元。
根据本发明的第四方面的计算机系统, 其中所述扩展卡为所述多个驱动器中的 每个驱动器提供写队列,所述写队列用于在将写入命令发送给驱动器之前存储写入命 令。
根据本发明的第四方面的计算机系统, 其中如果所述扩展卡已经收到用于生成 校验数据的 N个数据, 则确定生成校验数据, N是自然数。
根据本发明的第四方面的计算机系统, 其中如果所述扩展卡尚未收到用于生成 校验数据的 N个数据, 则所述扩展卡填充预定数据来形成用于生成校验数据的 N个 数据, 并确定生成校验数据。
根据本发明的第四方面的计算机系统, 其中如果所述扩展卡尚未收到用于生成 校验数据的 N个数据, 则所述扩展卡发起用于所述多个驱动器的一个或多个的垃圾 回收操作来形成用于生成校验数据的 N个数据, 并确定生成校验数据。
根据本发明的第四方面的计算机系统, 其中所述请求中指示所述 N的值。
根据本发明的第四方面的计算机系统 . 其中所述请求中指示所述 N的值。
根据本发明的第四方面的计算机系统 其中在所述请求中指示生成校验数据。 根据本发明的第四方面的计算机系统 其中所述请求中指示所述 N的值。
根据本发明的第四方面的计算机系统 其中如果尚未收到用于生成校验数据的
N个数据, 且所述请求中指示生成校验数据 填充数据来形成用于生成校验数据的 N 个数据, 并生成校验数据。
根据本发明的第四方面的计算机系统 , 其中如果尚未收到用于生成校验数据的
N个数据, 且强制计算校验数据的事件发生 填充数据来形成用于生成校验数据的 N 个数据, 并生成校验数据。
根据本发明的第四方面的计算机系统 , 其中如果尚未收到用于生成校验数据的
N个数据, 且所述请求中指示生成校验数据 执行垃圾回收操作来形成用于生成校验 数据的 N个数据, 并生成校验数据。
根据本发明的第四方面的计算机系统 , 其中如果尚未收到用于生成校验数据的
N个数据, 且强制计算校验数据的事件发生 执行垃圾回收操作来形成用于生成校验 数据的 N个数据, 并生成校验数据。 附图说明
当连同附图阅读时, 通过参考后面对示出性的实施例的详细描述, 将最佳地理 解本发明以及优选的使用模式和其进一步的目的和优点, 其中附图包括:
图 1展示了现有技术中的固态硬盘的数据组织;
图 2是根据本发明的实施例的存储设备的数据组织;
图 3是根据本发明实施例的计算机系统的框图;
图 4是根据本发明实施例的访问多个驱动器的方法的流程图;
图 5是根据本发明进一步实施例的访问多个驱动器的方法的流程图;
图 6是根据本发明依然进一步实施例的访问多个驱动器的方法的流程图; 以及 图 7是根据本发明实施例的存储设备的框图。 具体实施方式 图 2是根据本发明的实施例的存储设备的数据组织。 存储设备包括固态盘 200、 固态盘 220 ··· ···固态盘 260。 每个固态盘可以是具有标准尺寸的 3.5、 2.5或 1.8英寸 驱动器。 固态盘 200可包括闪存芯片 201与闪存芯片 202。 固态盘 220包括闪存芯片
221 , 而固态盘 260包括闪存芯片 261。 固态盘 200也可包括不同数量的闪存芯片。 以及固态盘 200、固态盘 220与固态盘 260可分别包括不同数量和 /或不同容量的闪存 芯片。 固态盘中的闪存芯片可组织为多个通道, 以在所使用的接口引脚数量和多个闪 存芯片的并行访问之间进行取舍。例如,在申请号为 201210448894.1、 201210449387. X 的中国专利申请中提供了多种将闪存芯片组织为通道的方式。
作为举例, 闪存芯片 201包括多个块, 例如块 0、 块 1、 块 2和块 3。 闪存芯片 中也可以包括其他数量的块。 在每个块中包括多个页。 对于 NAND闪存, 以页为单 位进行读、 写操作, 而以块为单位实施擦除操作, 这是由 NAND闪存的物理结构决 定的。 作为举例, 闪存芯片 201还包括平面 0与平面 1。 平面 0包括块 0与块 2, 而 平面 1包括块 1与块 3。 平面 0与平面 1各自具有页寄存器, 使得位于平面 0的块与 位于平面 1的块可以并行操作。 闪存芯片可以具有不同数量的页。 闪存芯片还可以包 括一个或多个管芯。
根据本发明的实施例, 固态盘 200的页 211、 固态盘 220的页 231与固态盘 260 的页 261被分组在一起, 组成存储单元组。 在申请号为 201310003789.1与
201310003898.3的中国专利申请中提供了将来自主机的逻辑地址映射到存储单元组 的方式。存储单元组中的各个页被一起操作, 其中可以存储用户数据以及由用户数据 产生的校验数据。 当存储单元组中的一个或多个页损坏时, 可基于存储单元组中的其 他页来恢复损坏的数据。 例如, 存储单元组可包括 N+P个页, 其中 N个页用于存储 用户数据, 而 P个页用于存储校验数据。 优选地, 分配存储单元组, 使得当移除固态 盘 200、 220与 260中的一个或多个时, 可利用剩余的固态盘恢复所移除固态盘中存 储的数据。 在一个例子中, 页 211、 页 231与页 261分别在固态盘 200、 固态盘 220 与固态盘 260中具有相同的物理地址, 这样可以容易地确定组成存储单元组的各个 页, 而无须附加的元数据。 以这种方式, 盘 200的芯片 201的块 0的页 1、 盘 220的 芯片 221的块 0的页 1与盘 260的芯片 261的块 0的页 1组成另一个存储单元组。虽 然在图 2的实施例中示出了存储单元组包括 3个页, 可以理解, 存储单元组可以具有 其他不同数量的页。
在一个实施例中, 存储单元组中包括来个多个固态盘 ( 200、 220与 260 ) 的每 一个的页。在另一个实施例中,存储单元组中包括来自多个固态盘的一个或多个的页。 存储单元组中也可以包括来自一个固态盘的多个页。
继续参照图 2 , 在一个实施例中, 页 215、 页 235与页 265组成存储单元组。 页 215、 页 235与页 265可具有相同或不同的物理地址, 因而需要提供附加的元数据来 指示页 215、 页 235与页 265组成了存储单元组。 可以在页 215、 页 235与页 265的 带外( Out-Of-Band )数据中存储元数据, 还可以在页 215、 页 235与页 265的用户数 据区中存储元数据(相应地降低用户数据的存储容量), 还可以在其他页中存储元数 据。 由于闪存中的页可能损坏, 利用元数据指示组成存储单元组的多个页, 可以有效 地将损坏的页排除, 并利用具有相同或不同物理地址的页组成存储单元组,从而提高 存储空间的利用率。
图 3是根据本发明实施例的计算机系统的框图。 计算机 300包括主板 310。 主 板 310上布置有中央处理单元 ( CPU, Central Processing Unit ) 312以及扩展卡 314。 主板 310上还可布置有芯片组、存储器等部件。扩展卡 314用于将多个存储盘耦合到 计算机 300。扩展卡 314可通过诸如 PCIE( Peripheral Component Interconnect Express , ' 速夕卜围组件互连 ) 、 PCI ( Peripheral Component Interconnect , 夕卜围组件互连 )等多 种接口耦合到主板 310。 扩展卡 314可通过多种接口耦合存储盘, 多种接口包括但不 限于 SATA ( Serial Advanced Technology Attachment , 串行高級技术附件 ) 、 USB ( Universal Serial Bus ,通用串行总线)、 PCIE、 SCSK Small Computer System Interface ,
小型计算机系统接口 ) 、 IDE ( Integrated Drive Electronics , 集成驱动器电子) 等。 多个存储盘包括盘 320、 322、 324和 326。 扩展卡 314可耦合不同数量的存储盘。 扩 展卡 314中可包括闪存转换层( Flash Translation Layer, FTL )部件, 用以将基于逻辑 地址的存储盘访问请求转换为基于物理地址的存储盘访问请求。 存储盘可以是固态 盘, 固态盘以闪存芯片作为存储介质, 固态盘也适用于其他类型的存储芯片, 例如, 相变存储器、 电阻存储器、 铁电存储器等。
在一个实施例中, 主板 310中可以不包括扩展卡 314, 而通过设置在主板 310 上的诸如 PCIE、 IDE, SCSI, 和 /或 SATA等接口, 将盘 320、 322、 324和 326耦合 到主板 310。 以及, 在计算机 300的操作系统或应用程序中提供闪存转换层软件, 用 以将基于逻辑地址的存储盘访问请求转换为基于物理地址的存储盘访问请求。还可以 将闪存转换层部件设置在 CPU、 芯片组或其他集成电路中。
扩展卡 314上可布置有控制电路, 用以实施将在图 4-图 6中描述的各操作来控 制对盘 320、 322、 324、 326的访问。 控制电路可以是 FPGA ( Field-programmable gate array, 现场可编程门阵列) 、 ASIC ( Application Specific Integrated Circuit, 应用专用 集成电路) 或者其组合的形式。 控制电路也可以包括一个或多个处理器或者控制器。 闪存转换层部件可在 FPGA、 ASIC中以硬件电路形式实现, 也可釆用运行在处理器 或控制器中的软件形式实现。
图 4是根据本发明实施例的访问多个驱动器的方法的流程图。 在步骤 400 , 接 收写请求。 写请求可以来自计算机 300的 CPU 312。 写请求可由运行在计算机 300上 的操作系统或者应用软件发出, 并指示将数据写入到诸如固态盘的存储设备中。 写请 求中可以携带或者指示逻辑地址, 逻辑地址指示存储设备所展现的逻辑地址空间。
在步骤 410 , 获取物理地址。 基于写请求获得逻辑地址, 例如可以从写请求中 提取逻辑地址, 也可以基于写请求中的指示(例如, 对存储逻辑地址的存储空间的指 示, 或相对于前一逻辑地址的偏移)来间接提取逻辑地址。 接着, 通过映射表将逻辑 地址转换为物理地址。 在进一步的实施例中, 多个固态盘中的多个页被分组在一起, 组成存储单元组。通过映射表或顺序映射方式将逻辑地址转换为用于存储单元组的地 址。 对于连续接收到的写请求, 将其逻辑地址转换为相同的存储单元组地址, 直到填 充了存储单元组中的 N个数据页。 进而基于存储单元组的地址获得物理地址。 所得 到的物理地址指示了该存储单元组中的存储单元。而写请求或者逻辑地址可以无需维 护存储单元组结构。
在步骤 420 , 基于物理地址, 将写请求所指示的数据写入存储设备。 在一个实 施例中, 为每个固态盘提供写队列, 以先进先出的方式基于物理地址将数据写入存储 设备。 在另一个实施例中, 为多个或所有固态盘提供共享的写队列。 在进一步的实施 例中, 存储单元组中包括多个页, 而写入请求对对应的数据少于存储单元组的容量。 则还緩存写入数据, 用以为对应的存储单元组生成校验数据。 在一个实施例中, 还向 存储设备写入指示存储单元组信息的元数据。
在步骤 430 , 判断是否生成校验数据。 若否, 则返回步骤 400以接收其他的写 请求。 若是, 则在步骤 440计算校验数据。 基于 N个页的用户数据计算得到 P个页 的校验数据。 例如, 可釆用奇偶校验计算校验数据, 也可以釆用所有领域惯用的其他 校验数据生成方式。 在一个实施例中, 计算校验数据之前, 临时存储对应于一个存储 单元组的用户数据, 而在计算校验数据后, 可释放临时存储用户数据的存储区。 还基 于存储单元组地址, 确定用于存储 P个页的校验数据的物理地址。
在步骤 450 , 基于物理地址, 将校验数据写入存储设备。 可提供写队列, 以先 进先出方式将校验数据写入存储设备。在一个实施例中,还向存储设备写入指示存储 单元组信息的元数据。
图 5是根据本发明进一步实施例的访问多个驱动器的方法的流程图。 图 5中所 示出的流程图,相对于图 4中的流程图, 进一步展示了基于写请求所对应的逻辑地址 获取物理地址的多种方式。
在步骤 500 , 接收写请求。
通过步骤 511与步骤 512, 展示了一种获取物理地址的方式。 在步骤 511 , 分配 多个固态盘之一。 可通过多种方式分配固态盘。 例如, 可通过轮转方式分配固态盘; 可通过查询固态盘的状态, 并选择处于空闲状态的固态盘的方式分配固态盘; 还可通 过比较对应于固态盘的写入队列的长度,选择写入队列较短的固态盘的方式分配固态 盘。 在步骤 512, 针对选定的固态盘, 将逻辑地址映射到指示该固态盘的物理地址。 物理地址可指示该固态盘的页的物理位置。在一个实施例中, 为连续的多个写请求分 配的来自一个或多个固态盘的多个页组成存储单元组。存储单元组的 N个页可来自 N 个固态盘的每一个, N个页可位于各固态盘的相同位置或不同位置。 存储单元组的 N 个页也可以来自一个或少于 N个固态盘。
通过步骤 513与步骤 514, 展示了又一种获取物理地址的方式。 在步骤 513 , 分 配多个固态盘之一。可通过多种方式分配固态盘。例如,可通过轮转方式分配固态盘; 可通过查询固态盘的状态, 并选择处于空闲状态的固态盘的方式分配固态盘; 还可通 过比较对应于固态盘的写入队列的长度,选择写入队列较短的固态盘的方式分配固态 盘。 在步骤 514, 针对选定的固态盘, 将该固态盘的写指针作为要写入数据的物理地 址, 并递增该写指针。 以此方式, 每个固态盘具有用于其自身的写指针, 写指针指示 了要写入数据的位置,使得在一个固态盘上的连续的写操作可在该固态盘的连续的物 理地址上进行, 进而可降低在擦除均衡过程中所引起的写放大效应,从而提高存储设 备的使用寿命。 物理地址可指示该固态盘的页的物理位置。 在一个实施例中, 为连续 的多个写请求分配的来自一个或多个固态盘的多个页组成存储单元组。存储单元组的
N个页可来自 N个固态盘的每一个, N个页可位于各固态盘的相同位置或不同位置。 存储单元组的 N个页也可以来自一个或少于 N个固态盘。
通过步骤 515与步骤 516, 展示了又一种获取物理地址的方式。 在步骤 515 , 分 配存储单元组。 存储单元组包括多个页。 构成存储单元在的多个页来自多个固态盘。 例如, 存储单元组可包括 N+P个页, N个页用于存储用户数据, 而 P个页用于存储 校验数据。 N+P个页来自 N+P个固态盘, 每个固态盘提供一个页。 在另一个实施例 中, N+P个页来自少于 N+P个固态盘。 在一个实施例中, 包括多个固态盘的存储设 备初始化期间,确定存储单元组的数量以及存储单元组到物理页的映射方式。存储单 元组的多个页可位于多个固态盘的相同位置或不同位置。 优选地, 分配存储单元组, 使得在一个固态盘上的连续的写操作可在该固态盘的连续的物理地址上进行。 例如, 若当前分配的存储单元组的一个页具有物理地址 P(i) , 当分配下一存储单元组时, 选 择物理地址 P(i+1)所对应的存储单元组。 在另一个例子中, 存储单元组 K的 N+P个 页来自 N+P个固态盘的每一个, 且该 N+P个页具有相同的物理地址 P(K) , 而存储单 元组 K+1的每个页具有相同的物理地址 Ρ ( K+1 ); 则在分配存储单元 Κ之后, 分配 存储单元组 K+l。 在步骤 516, 针对分配的存储单元组, 将该存储单元组的写指针作 为要写入数据的物理地址, 并递增该写指针。 以此方式, 当前存储单元组具有用于其 自身的写指针, 写指针指示了要写入数据的位置。
通过步骤 517与步骤 518 , 展示了又一种获取物理地址的方式。 在步骤 517 , 分 配存储单元组。 在步骤 518 , 针对分配的存储单元组, 选择存储单元组中尚未被分配 的物理页, 将该物理页的地址作为所分配的物理地址。可通过多种方式选择物理单元 组中的尚未被分配物理页。 例如, 可基于物理单元组中尚未被分配的多个物理页所对 应的多个磁盘的空闲状态来选择物理页;还可以基于存储单元组中尚未被分配的多个
物理页所对应的多个磁盘的写队列长度来选择物理页。
在步骤 520 , 基于物理地址, 将写请求所指示的数据写入存储设备。
在步骤 530 , 判断是否生成校验数据。 若否, 则返回步骤 500以接收其他的写 请求。 若是, 则在步骤 540计算校验数据。 还为校验数据确定物理地址。 例如, 对于 存储单元组中的用户数据,为相对应的校验数据分配属于该存储单元组的 P个页的物 理地址, 该 P个页用于存储校验数据。 又例如, 对于用户数据和基于用户数据所生成 的校验数据, 分配物理地址, 并使得该用户数据与校验数据存储于同一存储单元组。
在步骤 550 , 基于物理地址, 将校验数据写入存储设备。
图 6是根据本发明依然进一步实施例的访问多个驱动器的方法的流程图。 图 6 中所示出的流程图,相对于图 4中的流程图, 进一步展示了确定是否生成校验数据的 多种方式。 一般而言, 当接收到一个存储单元组的全部用户数据后, 基于这些用户数 据生成校验数据。 在诸如关机或掉电等其他一些情况下, 也需要生成校验数据。
在步骤 600 , 接收写请求。 在步骤 610, 获取物理地址。 在步骤 620 , 基于物理 地址, 将写请求所指示的数据写入存储设备。
步骤 632展示了一种获取确定是否生成校验数据的方式。 在步骤 632, 确定 是否已经接收到用于一个存储单元组的全部用户数据。若否, 则返回步骤 600以接收 其他的写请求。 若是, 则在步骤 640计算校验数据。 一个存储单元组的全部用户数据 可以是例如将存储在该存储单元组中的 N个页。 在一个实施例中, 在顺序接收的多 个写请求所对应的数据达到 N个页的大小时, 确定已经接收到用于一个存储单元组 的全部用户数据。 在另一个实施例中, 存储单元组中的 N个页已经被分配时, 确定 已经接收到用于一个存储单元组的全部用户数据。
步骤 634展示了另一种获取确定是否生成校验数据的方式。 在步骤 634, 判 断是否已经接收了 m ( <N ) 页数据, 尚未接收到用于一个存储单元组的全部用户数 据; 但是出现了要求强制计算校验数据的事件。 强制计算校验数据可能是由于计算机 掉电、 关机等意外情况,还可以是接收到操作系统或应用程序发出的冲刷緩冲区请求 或者 m页数据已经緩存了太长时间。 如不计算校验数据, 所临时存储的 m页数据将 丢失, 在存储设备上也无法得到完成的存储单元组。 若步骤 634的判断为否, 则返回 步骤 600以接收其他的写请求; 若为是, 则在步骤 640计算校验数据。 以及为计算校 验数据, 还使用预定数据值 (例如, 0、 1或者其他预定值) 填充 N-m页数据, 使得 接收到的 m页数据和填充的 N-m页数据构成了 N页数据, 并可在步骤 640中计算 P 页校验数据。还可以在存储设备或固态盘上执行垃圾回收操作,使用垃圾回收操作中 产生的写请求填充 N-m页数据。 在另一个实施例中, 接收的数据可能不是按页边界 对齐的, 相应地, 所填充的数据也可以不是按页边界对齐的。
步骤 636展示了另一种获取确定是否生成校验数据的方式。 在步骤 636, 判 断是否已经接收了 m ( <N ) 页数据, 尚未接收到用于一个存储单元组的全部用户数 据; 但是在写请求中指示了要写入的数据只有 m页。 在写请求中指示了要写入的数 据只有 m页, 意味着在来自操作系统或应用程序的写入操作已经完成, 并暗示着在 将来一段时间内可能没有后续的写请求;也可以意味着操作系统或应用程序预测在将 来一段时间不大可能出现写请求。 在此情况下, 继续临时存储 m页数据会增加耗电, 并因存储空间被占用而降低存储设备的性能。 若步骤 636的判断为否, 则返回步骤 600以接收其他的写请求; 若为是, 则在步骤 640计算校验数据。 以及为计算校验数 据, 还使用预定数据值 (例如, 0、 1或者其他预定值) 填充 N-m页数据, 使得接收 到的 m页数据和填充的 N-m页数据构成了 N页数据, 并可在步骤 640中计算 P页校 验数据。还可以在存储设备或固态盘上执行垃圾回收操作,使用垃圾回收操作中产生 的写请求填充 N-m页数据。 在另一个实施例中, 接收的数据可能不是按页边界对齐
的, 相应地, 所填充的数据也可以不是按页边界对齐的。
步骤 638展示了另一种获取确定是否生成校验数据的方式。 在步骤 638 , 判 断是否已经接收了 m ( <N ) 页数据, 尚未接收到用于一个存储单元组的全部用户数 据; 但是要在存储设备上执行垃圾回收操作。 若否, 则返回步骤 600以接收其他的写 请求; 若是, 则使用垃圾回收操作中产生的写请求填充 N-m页数据, 并在步骤 640 中计算 P页校验数据。 在另一个实施例中, 接收的数据可能不是按页边界对齐的, 相 应地, 所填充的数据也可以不是按页边界对齐的。
在步骤 650 , 基于物理地址, 将校验数据写入存储设备。
通过上面描述的本发明的实施例, 可将将数据同时写入到存储设备的多个固 态盘, 提高了写操作的并行度。 并且, 通过存储单元组提供对数据额外的保护, 提高 了存储设备的可靠性。
图 7是根据本发明实施例的存储设备的框图。 上面在图 3中已经公开了根据 本发明实施例的计算机系统的框图。而图 7的实施例为通过网络提供存储服务的存储 设备。 存储设备 700包括背板 710。 背板 710上布置有控制器 714。 背板 710上还可 布置有芯片组、 存储器等部件。 控制器 714用于将多个存储盘耦合到存储设备 700。 控制器 714可通过多种接口耦合存储盘,多种接口包括但不限于 SATA7、USB7、PCI、 PCIE、 SCSI7、 IDE7等。 控制器 714还可通过芯片组或者扩展卡间接耦合到存储盘。 多个存储盘包括盘 720、 722、 724和 726。 控制器 714可耦合不同数量的存储盘。 控 制器 714中可包括闪存转换层( Flash Translation Layer, FTL )部件, 用以将基于逻辑 地址的存储盘访问请求转换为基于物理地址的存储盘访问请求。 存储盘可以是固态 盘, 固态盘以闪存芯片作为存储介质, 固态盘也适用于其他类型的存储芯片, 例如, 相变存储器、 电阻存储器、 铁电存储器等。
在一个实施例中, 在存储设备 700的操作系统或其他程序中提供闪存转换层 软件, 用以将基于逻辑地址的存储盘访问请求转换为基于物理地址的存储盘访问请 求。 还可以将闪存转换层部件设置在 CPU、 芯片组或其他集成电路中。
控制器 714,可用以实施上面在图 4-图 6中描述的各操作来控制对盘 720、722、 724、 726的访问。 控制器 714可以是 FPGA、 ASIC或者其组合的形式。 控制器 714 也可以包括一个或多个处理器或者控制器。 闪存转换层部件可在 FPGA、 ASIC中以 硬件电路形式实现, 也可釆用运行在处理器或控制器中的软件形式实现。
背板 710上还布置有网络适配器 730、 732。 提供两个网络适配器, 以提高存 储设备的可靠性。 也可以提供一个或其他数量的网络适配器。 通过网络适配器 730、 732, 存储设备 700耦合到网络 734。 网络 734可以是以太网、 PCIE网或光纤通道网 络。 客户端 740、 742也耦合到网络 734, 并通过网络 734访问存储设备 700。 在其他 实施例中,客户端 740、 742可不经由网络 734而直接耜合到网络适配器 730和 /或 732。 已经为了示出和描述的目的而展现了对本发明的描述, 并且不旨在以所公开 的形式穷尽或限制本发明。 对所属领域技术人员, 许多调整和变化是显而易见的。
Claims
权 利 要 求 书
1 . 一种用于访问存储设备的多个驱动器的方法, 所述方法包括:
接收将第一数据写入用于所述存储设备的第一逻辑地址的请求;
为所述第一逻辑地址生成第一物理地址;
生成写入命令,其指示将所述第一数据写入所述第一物理地址所指示的存储位置; 确定是否生成校验数据;
若是,基于所述第一数据生成第一校验数据,并将所述第一校验数据写入第二物 理地址所指示的存储位置。
2. 根据权利要求 1所述的方法, 还包括:
在所述多个驱动器中的一个或多个上存储元数据,所述元数据指示所述第一物理 地址、 所述第二物理地址具有关联关系。
3 . 根据权利要求 1所述的方法, 其中通过选择所述多个驱动器中的第一驱动器 来为所述第一逻辑地址生成第一物理地址,所述第一物理地址指示所述第一驱动 器中的存储位置。
4.根据权利要求 3所述的方法, 其中为每个驱动器提供写指针, 写指针指示写入 数据的物理地址,基于所选择的第一驱动器的写指针生成所述第一物理地址,并 使所述第一驱动器的写指针递增。
5.根据权利要求 1所述的方法, 其中响应于接收将第一数据写入用于所述存储设 备的第一逻辑地址的请求,分配存储单元組,所述存储单元組包括多个存储单元, 所述多个存储单元中的每个位于所述多个驱动器之一。
6.根据权利要求 5所述的方法, 其中为存储单元組提供写指针, 写指针指示所述 存储单元組中的一个存储单元,基于所分配的存储单元組的写指针生成所述第一 物理地址,并使所分配的存储单元組的写指针指示所述存储单元組中的另一个存 储单元。
7. 根据权利要求 5 所述的方法, 其中响应于分配存储单元組, 基于所述存储单 元組的各个存储单元所在的多个驱动器的状态,从所述存储单元組中选择一个存 储单元来为所述第一逻辑地址生成第一物理地址,所述第一物理地址指示所选择 的存储单元。
8. 根据权利要求 1所述的方法, 其中如果已经收到用于生成校验数据的 N个数 据, 则确定生成校验数据, N是自然数。
9.根据权利要求 1或 8所述的方法,其中如果尚未收到用于生成校验数据的 N个 数据, 填充预定数据来形成用于生成校验数据的 N 个数据, 并确定生成校验数 据。
10.根据权利要求 1 或 8所述的方法, 其中如果尚未收到用于生成校验数据的 N
个数据, 通过执行垃圾回收操作来形成用于生成校验数据的 N 个数据, 并确定 生成校验数据。
11 . 根据权利要求 8所述的方法, 其中在所述请求中指示生成校验数据。
12. 一种用于访问存储设备的多个驱动器的装置, 所述装置包括:
用于接收将第一数据写入用于所述存储设备的第一逻辑地址的请求的模块; 用于为所述第一逻辑地址生成第一物理地址的模块;
用于生成写入命令的模块,所述写入命令指示将所述第一数据写入所述第一物理 地址所指示的存储位置;
用于确定是否生成校验数据的模块;
用于在确定生成校验数据的情况下基于所述第一数据生成第一校验数据,并将所 述第一校验数据写入第二物理地址的模块所指示的存储位置。
13. 一种存储设备, 包括网络适配器、控制器以及耦合到所述控制器的多个驱 动器;
所述网络适配器将所述存储设备耜合到网络,并接收来自客户端的访问请求, 所述访问请求指示将第一数据写入用于所述存储设备的第一逻辑地址; 所述控制器为所述第一逻辑地址生成第一物理地址, 并生成写入命令发送给 所述多个驱动器之一,其指示将所述第一数据写入所述第一物理地址所指示的存 储位置;
所述控制器还确定是否生成校验数据, 若是, 基于所述第一数据生成第一校 验数据,并生成第二写入命令发送给所述多个驱动器之一, 其指示将所述第一校 验数据写入第二物理地址所指示的存储位置。
14. 根据权利要求 13所述的存储设备, 还包括:
所述控制器将元数据存储于所述多个驱动器中的一个或多个,所述元数据指示所 述第一物理地址、 所述第二物理地址具有关联关系。
15根据权利要求 13所述的存储设备, 其中所述控制器通过选择所述多个驱动器 中的第一驱动器来为所述第一逻辑地址生成第一物理地址,所述第一物理地址指 示所述第一驱动器中的存储位置。
16. 根据权利要求 15所述的存储设备, 其中在所述控制器中为每个驱动器维护 写指针, 写指针指示写入数据的物理地址; 所述控制器还基于所选择的第一驱动 器的写指针生成所述第一物理地址, 并使所述第一驱动器的写指针递增。
17. 根据权利要求 13所述的存储设备, 其中所述控制器响应于接收将第一数据 写入用于所述存储设备的第一逻辑地址的请求,分配存储单元組,所述存储組包 括多个存储单元, 所述多个存储单元中的每个位于所述多个驱动器之一。
18. 根据权利要求 17所述的存储设备, 其中所述控制器为存储单元組维护写指
针, 写指针指示所述存储单元組中的一个存储单元,所述控制器基于所分配的存 储单元組的写指针生成所述第一物理地址,并使所分配的存储单元組的写指针指 示所述存储单元組中的另一个存储单元。
19. 根据权利要求 17所述的存储设备, 其中响应于分配存储单元組, 所述控制 器查询所述存储单元組的各个存储单元所在的多个驱动器的状态,并基于所述状 态从所述存储单元組中选择一个存储单元来为所述第一逻辑地址生成第一物理 地址, 所述第一物理地址指示所选择的存储单元。
20. 根据权利要求 13所述的存储设备, 其中如果所述存储设备已经收到用于生 成校验数据的 N个数据, 则所述控制器确定生成校验数据, N是自然数。
21 . 根据权利要求 13或 20所述的存储设备, 其中如果所述存储设备尚未收到用 于生成校验数据的 N 个数据, 则所述控制器填充预定数据来形成用于生成校验 数据的 N个数据, 并确定生成校验数据。
22. 根据权利要求 13或 20所述的存储设备, 其中如果所述存储设备尚未收到用 于生成校验数据的 N 个数据, 则所述控制器发起用于所述多个驱动器的一个或 多个的垃圾回收操作来形成用于生成校验数据的 N 个数据, 并确定生成校验数 据。
23. 一种计算机系统, 包括主板、 布置于主板上的扩展卡、 CPU以及耦合到所述 扩展卡的多个驱动器;
所述 CPU把将第一数据写入第一逻辑地址的请求发送给所述扩展卡; 所述扩展卡为所述第一逻辑地址生成第一物理地址,并生成写入命令发送给所述 多个驱动器之一,所述写入命令指示将所述第一数据写入所述第一物理地址所指 示的存储位置;
所述扩展卡还确定是否生成校验数据,若是, 基于所述第一数据生成第一校验数 据,并生成第二写入命令发送给所述多个驱动器之一,所述第二写入命令指示将 所述第一校验数据写入第二物理地址所指示的存储位置。
24. 根据权利要求 23所述的计算机系统, 还包括:
所述扩展卡将元数据存储于所述多个驱动器中的一个或多个,所述元数据指示所 述第一物理地址、 所述第二物理地址具有关联关系。
25. 根据权利要求 23所述的计算机系统, 其中所述扩展卡通过选择所述多个驱 动器中的第一驱动器来为所述第一逻辑地址生成第一物理地址,所述第一物理地 址指示所述第一驱动器中的存储位置。
26. 根据权利要求 25所述的计算机系统, 其中在所述扩展卡中为每个驱动器维 护写指针, 写指针指示写入数据的物理地址; 所述扩展卡还基于所选择的第一驱 动器的写指针生成所述第一物理地址, 并使所述第一驱动器的写指针递增。
27. 根据权利要求 23所述的计算机系统, 其中所述扩展卡响应于接收将第一数 据写入用于所述存储设备的第一逻辑地址的请求,分配存储单元組, 所述存储組 包括多个存储单元, 所述多个存储单元中的每个位于所述多个驱动器之一。
28. 根据权利要求 27所述的计算机系统, 其中所述扩展卡为存储单元組维护写 指针, 写指针指示所述存储单元組中的一个存储单元,所述扩展卡基于所分配的 存储单元組的写指针生成所述第一物理地址,并使所分配的存储单元組的写指针 指示所述存储单元組中的另一个存储单元。
29. 根据权利要求 27所述的计算机系统, 其中响应于分配存储单元組, 所述扩 展卡查询所述存储单元組的各个存储单元所在的多个驱动器的状态,并基于所述 状态从所述存储单元組中选择一个存储单元来为所述第一逻辑地址生成第一物 理地址, 所述第一物理地址指示所选择的存储单元。
30. 根据权利要求 23所述的计算机系统,其中如果所述扩展卡已经收到用于生成 校验数据的 N个数据, 则确定生成校验数据, N是自然数。
31 . 根据权利要求 23或 30所述的计算机系统, 其中如果所述扩展卡尚未收到用 于生成校验数据的 N 个数据, 则所述扩展卡填充预定数据来形成用于生成校验 数据的 N个数据, 并确定生成校验数据。
32. 根据权利要求 23或 30所述的计算机系统, 其中如果所述扩展卡尚未收到用 于生成校验数据的 N 个数据, 则所述扩展卡发起用于所述多个驱动器的一个或 多个的垃圾回收操作来形成用于生成校验数据的 N 个数据, 并确定生成校验数 据。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310076773.3 | 2013-03-11 | ||
CN201310076787.5 | 2013-03-11 | ||
CN201310076773.3A CN103218270B (zh) | 2013-03-11 | 2013-03-11 | 具有多个固态盘的计算机 |
CN201310076787.5A CN103150261B (zh) | 2013-03-11 | 2013-03-11 | 用于同时访问多个固态盘的方法与装置 |
CN201310077076.XA CN103176858B (zh) | 2013-03-11 | 2013-03-11 | 具有多个固态盘的存储设备 |
CN201310077076.X | 2013-03-11 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2014139390A1 true WO2014139390A1 (zh) | 2014-09-18 |
Family
ID=51535870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2014/073155 WO2014139390A1 (zh) | 2013-03-11 | 2014-03-10 | 存储设备及其访问方法 |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2014139390A1 (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
CN103150261A (zh) * | 2013-03-11 | 2013-06-12 | 北京忆恒创源科技有限公司 | 用于同时访问多个固态盘的方法与装置 |
CN103176858A (zh) * | 2013-03-11 | 2013-06-26 | 北京忆恒创源科技有限公司 | 具有多个固态盘的存储设备 |
CN103218270A (zh) * | 2013-03-11 | 2013-07-24 | 北京忆恒创源科技有限公司 | 具有多个固态盘的计算机 |
-
2014
- 2014-03-10 WO PCT/CN2014/073155 patent/WO2014139390A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
CN103150261A (zh) * | 2013-03-11 | 2013-06-12 | 北京忆恒创源科技有限公司 | 用于同时访问多个固态盘的方法与装置 |
CN103176858A (zh) * | 2013-03-11 | 2013-06-26 | 北京忆恒创源科技有限公司 | 具有多个固态盘的存储设备 |
CN103218270A (zh) * | 2013-03-11 | 2013-07-24 | 北京忆恒创源科技有限公司 | 具有多个固态盘的计算机 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6163532B2 (ja) | メモリシステムコントローラを含む装置 | |
CN103218270B (zh) | 具有多个固态盘的计算机 | |
US8850114B2 (en) | Storage array controller for flash-based storage devices | |
CN107066202B (zh) | 具有多个固态盘的存储设备 | |
TWI483178B (zh) | 包含記憶體系統控制器之裝置及相關方法 | |
JP5918359B2 (ja) | メモリシステムコントローラを含む装置および関連する方法 | |
US9990146B2 (en) | Apparatus and method of data sequencing | |
US8250283B1 (en) | Write-distribute command for RAID mirroring | |
CN103150261B (zh) | 用于同时访问多个固态盘的方法与装置 | |
CN108073357A (zh) | 以raid方式存储数据的存储装置 | |
CN113485636A (zh) | 一种数据访问方法、装置和系统 | |
US9245613B2 (en) | Storage interface apparatus for solid state drive tester | |
CN110489056A (zh) | 控制器以及包括该控制器的存储器系统 | |
CN108877862B (zh) | 页条带的数据组织以及向页条带写入数据的方法与装置 | |
CN203191967U (zh) | 计算机系统 | |
US9652172B2 (en) | Data storage device performing merging process on groups of memory blocks and operation method thereof | |
CN114168067B (zh) | 使用虚设虚拟功能的NVMe简单复制命令支持 | |
CN203191968U (zh) | 具有多个固态盘的存储设备 | |
WO2014139390A1 (zh) | 存储设备及其访问方法 | |
CN108664210B (zh) | 一种io命令控制的方法及控制系统、固态存储设备 | |
CN103914409B (zh) | 用于具有多处理器的存储设备的方法 | |
CN114579484A (zh) | 数据存储装置及其操作方法 | |
CN111752866A (zh) | 存储设备的虚拟校验数据缓存 | |
CN110928482A (zh) | 部分页条带与使用部分页条带的存储设备及其方法 | |
CN113168288B (zh) | 便利i/o故障处置的方法、计算机系统和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 14763469 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 14763469 Country of ref document: EP Kind code of ref document: A1 |