throbber
(19) United States
`(12) Patent Application Publication (10) Pub. No.: US 2006/0080515 A1
`(43) Pub. Date:
`Apr. 13, 2006
`Spiers et al.
`
`US 20060080515A1
`
`(54) NON-VOLATILE MEMORY BACKUP FOR
`NETWORK STORAGE SYSTEM
`
`(75) Inventors: John Spiers, Louisville, CO (US);
`Mark Lo?redo, Libertyville, IL (US);
`Mark G. Hayden, Fair?eld, CA (US);
`Mike A. Hayward, Boulder, CO (US)
`
`Correspondence Address:
`KENNETH C. WINTERTON
`HOLLAND & HART LLP
`P. 0. BOX 8749
`DENVER, CO 80201-8749 (US)
`
`(73) Assignee: LEFTHAND NETWORKS,
`Boulder, CO (US)
`
`INC.,
`
`(21) Appl. No.:
`
`10/711,901
`
`(22) Filed:
`
`Oct. 12, 2004
`
`Publication Classi?cation
`
`(51) Int, C],
`G06F 12/00
`
`(2006.01)
`
`(52) US. Cl. ............................................. .. 711/162; 714/14
`
`(57)
`
`ABSTRACT
`
`A data storage system including a primary data storage
`device and a backup data storage device stores data With
`enhanced performance. The primary data storage device has
`a primary data storage device memory for holding data, and
`the backup data storage device has a backup volatile
`memory, a backup non-volatile memory, and a processor.
`The backup storage device processor causes a copy of data
`provided to the primary data storage device to be provided
`to the backup data storage device volatile memory, and in
`the event of a poWer interruption moves the data from the
`backup volatile memory to the backup non-volatile memory.
`In such a manner, data stored at the backup data storage
`device is not lost in the event of a poWer interruption. The
`backup data storage device further includes a backup poWer
`source such as a capacitor, a battery, or any other suitable
`poWer source, and upon detection of a poWer interruption,
`switches to the backup poWer source and receives poWer
`from the backup poWer source While moving the data from
`the backup volatile memory to the backup non-volatile
`memory.
`
`250
`RECEIVE DATA TO BE STORED J
`FROM APPLICATION
`
`‘
`SEND COMMAND TO BACKUP
`DEVICE TO STORE DATA J
`
`254
`
`'1
`
`258
`
`NO
`
`RECEIVE
`ACKNOWLEDGEMENT
`
`REPORT TO APPLICATION THAT
`DATA IS STORED
`
`T
`ANALYZE PHYSICAL ADDRESS(ES)
`OF DATA AND RE-ORDER DATA, AND
`ANY OTHER DATA PRESENT, BASED
`ON PHYSICAL ADDRESS(ES)
`
`262
`
`266
`
`2
`WRITE DATA TO STORAGE DEVICE J
`
`T
`VERIFY DATA HAS BEEN WRITTEN
`TO THE STORAGE DEVICE MEDIA
`
`2
`
`REMOVE DATA FROM BACKUP DEVICE K
`
`T
`
`

`

`Patent Application Publication Apr. 13, 2006 Sheet 1 0f 14
`
`US 2006/0080515 A1
`
`APPLICATION
`
`I104
`
`APPLICATION
`
`f 104
`
`100
`
`f 108
`
`NAS
`
`f 108
`
`NAS
`
`FIG.1
`
`

`

`Patent Application Publication Apr. 13, 2006 Sheet 2 0f 14
`
`US 2006/0080515 A1
`
`108
`
`_/ 112
`
`NETWORK ATTACHED STORAGE
`
`NETWORK INTERFACE
`
`OPERATING
`SYSTEM
`g)
`
`MEMORY
`
`Kl
`
`BUS
`
`>,
`L 128
`
`STORAGE
`DEV|CE(S)
`
`STORAGE
`CONTROLLER
`
`BACKUP
`DEV|CE(S)
`
`)
`(
`(
`136 / \132 \140
`
`FIG.2
`
`

`

`Patent Application Publication Apr. 13, 2006 Sheet 3 0f 14
`
`US 2006/0080515 A1
`
`132
`
`STORAGE
`CONTROLLER
`
`<
`
`Bus
`
`140
`k STORAGE DEVICE
`
`144
`
`BACKUP
`DEVICE
`
`WRITE-BACK
`CACHE
`
`148 J
`
`FIG.3
`
`

`

`Patent Application Publication Apr. 13, 2006 Sheet 4 0f 14
`
`US 2006/0080515 A1
`
`152
`l
`
`POWER
`SUPPLY
`
`144
`j
`
`156
`
`BACKUP DEV|CE
`
`|NTERFACE
`
`160 \ PROCESSOR
`
`VOLATILE
`\ MEMORY
`
`_* 168
`
`NON-
`VOLATILE
`MEMORY
`\
`k 164
`
`FlG.4
`
`

`

`Patent Application Publication Apr. 13, 2006 Sheet 5 0f 14
`
`US 2006/0080515 A1
`
`176
`
`210
`
`194
`
`218
`
`190
`
`144
`
`P
`
`184
`
`329
`
`C
`
`22:22
`
`PROCESSOR
`
`180
`
`r
`
`— is
`
`_
`
`HHHHHHHHHHWHW #190
`
`Y J
`172
`
`

`

`Patent Application Publication Apr. 13, 2006 Sheet 6 0f 14
`
`US 2006/0080515 A1
`
`250
`RECEIVE DATA TO BE STORED J
`FROM APPLICATION
`254
`I’
`SEND COMMAND TO BACKUP J
`DEVICE TO STORE DATA
`
`NO
`
`RECEIVE
`ACKNOWLEDGEMENT
`
`REPORT TO APPLICATION THAT
`DATA IS STORED
`
`I
`
`258
`
`262
`
`K
`
`266
`
`ANALYZE PHYSICAL ADDRESS(ES)
`OF DATA AND RE-ORDER DATA, AND
`ANY OTHER DATA PRESENT, BASED
`ON PHYSICAL ADDRESS(ES)
`2
`I
`WRITE DATA TO STORAGE DEVICE J
`
`I
`
`2
`
`VERIFY DATA HAS BEEN WRITTEN
`TO THE STORAGE DEVICE MEDIA
`278
`I
`REMOVE DATA FROM BACKUP DEVICE J
`
`FIG.6
`
`

`

`Patent Application Publication Apr. 13, 2006 Sheet 7 0f 14
`
`US 2006/0080515 A1
`
`300
`_/
`
`304
`
`POWER ON
`+
`LOAD PROCESSOR OPERATING
`INSTRUCTIONS FROM PROM
`308
`+
`BEGIN CHARGING CAPACITORS J
`+
`312
`INITIALIZE, TEST, AND zERO
`SDRAM J
`+
`316
`CHECK NvRAM STATUS IN
`EEPROM J
`
`320
`
`|s NvRAM
`VALID?
`
`3/24
`UPDATE EEPROM STATISTICS
`
`328
`TRANSFER NvRAM TO SDRAM J
`+
`332
`\ MARK SDRAM VALID <—
`
`336
`
`CAPACITORS
`CHARGED '2
`
`ENABLE WRITES
`+
`ENABLE SDRAM TO NvRAM
`TRANSFER
`+
`MARK NvRAM AS INVALID IN
`EEPROM
`
`340
`~/
`344
`‘/
`348
`~/
`
`FIG.7
`
`

`

`Patent Application Publication Apr. 13, 2006 Sheet 8 0f 14
`
`US 2006/0080515 A1
`
`/1
`
`RESET
`
`|
`
`388
`
`IS SDRAM-NVRAM
`XFER IN PROGRESS?
`
`YES
`
`INITIALIZE, TEST, AND ZERO
`SDRAM J
`i
`368
`CHECK NVRAM STATUS IN J @322“; igmgFTEg
`EEPROM
`
`392
`K
`
`N0
`
`372
`
`384
`
`(
`
`TRANSFER NVRAM YES
`TO SDRAM
`
`NO
`
`376
`
`380
`
`| UPDATE EEPROM STATISTICS lI/i
`
`AF] MARK SDRAMVALID hi
`396
`
`CAPACITORS
`CHARGED ?
`YES
`ENABLE WRITES
`L
`ENABLE SDRAM TO NVRAM
`408
`#
`MARK NVRAM AS INVALID IN J
`
`400
`|~/
`404
`
`|
`
`|
`
`EEPROM %
`
`412
`
`FIG.8
`
`

`

`Patent Application Publication Apr. 13, 2006 Sheet 9 0f 14
`
`US 2006/0080515 A1
`
`V
`
`READY
`
`420
`
`E IS DESCR|PTOR PO|NTER
`FIFO EMPTY?
`
`O
`READ DESCR|PTOR PO|NTER FIFO AND
`LOAD DESCR|PTOR BASE ADDRESS
`+
`ASSERT BUS REQUEST
`
`424
`
`428
`
`432
`
`BUS GRANTED?
`
`436
`
`READ DESCR|PTOR AND WRITE
`DESCR|PTOR DATA TO LOCAL RAM
`
`440
`
`444
`
`460
`
`464
`
`2
`47
`
`480
`
`488
`
`496
`
`NO
`
`448
`/~
`|NCREMENT BAD
`DESCR|PTOR
`COUNT IN
`EEPROM
`
`452
`/~
`GENERATE BAD
`DESCR|PTOR
`|NTERRUPT
`
`YES
`456 6:)
`DECODE COMMAND TYPE |
`HALT PROCESSOR
`SRC=HOST
`YES TRANSFER FROM HOST
`DEST=SDRAM
`MEMORY TO SDRAM
`
`4
`68
`
`304
`GENERATE
`UNKNOWN ERROR
`|NTERRUPT
`
`NO
`SRC=SDRAM
`DEST=HOST
`
`NO
`SRC=SDRAM
`DEST=NvRAM
`
`NO
`
`476
`YES TRANSFER FROM SDRAM
`TO HOST MEMORY
`
`484
`YES TRANSFER FROM SDRAM
`TO NvRAM
`
`492
`
`SRC=NVRAIVI
`DEST=SDRAM
`
`YES TRANSFER FROM NvRAM
`TO SDRAM
`
`NO
`
`500
`
`SDRAM
`|N|T|AL|zAT|ON
`
`YES
`
`SEND SDRAM
`INITIALIZATION CYCLES
`
`NO
`
`FIG.9
`
`

`

`Patent Application Publication Apr. 13, 2006 Sheet 10 0f 14
`
`US 2006/0080515 A1
`
`468
`C TRANSFER FROM HOST DJ
`MEMORY TO SDRAM
`+
`508
`ASSERT BUS REQUEST ~/
`
`512
`
`532
`
`READ DATA FROM
`HOST MEMORY
`Jr
`WRITE DATA TO SDRAM
`{I
`GENERATE CRC VALUE
`Jr
`ASSERT BUS REQUEST
`
`J
`5
`J
`524
`J
`5
`J
`
`BUS GRANT ?
`
`536
`
`CALCULATE DESCRIPTOR
`CRC RESULT ADDRESS
`540
`#
`STORE CRC RESULT AND _/
`DESCRIPTOR STATUS
`
`FIG.10
`
`

`

`Patent Application Publication Apr. 13, 2006 Sheet 11 0f 14
`
`US 2006/0080515 A1
`
`TRANSFER FROM SDRAM
`TO HOST MEMORY
`
`45. 76
`
`2% 4S
`
`SET SDRAM WRITE ADDRESS J

`548
`READ SDRAM DATA ~/
`I
`552
`WRITE DATA TO INTF FIFO J
`AND GENERATE CRC
`+
`556
`ASSERT BUS REQUEST J
`4
`
`&
`
`564
`YES
`READ DATA FROM INTF FIFO, J
`WRITE DATA TO BUS
`568
`I
`ASSERT BUS REQUEST J
`
`560
`
`572
`
`CALCULATE DESCRIPTOR CRC _/
`RESULT ADDRESS
`I
`580
`SToRE CRC RESULT AND J
`DESCRIPTOR STATUS
`
`FIG.11
`
`

`

`Patent Application Publication Apr. 13, 2006 Sheet 12 0f 14
`
`US 2006/0080515 A1
`
`484
`
`592
`
`'
`
`TRANSFER FROM
`SDRAM TO NVRAM
`
`584
`INITIALIZE NvRAM BLOCK J 664
`ERASE ADDRESS
`588 \ MARK NvRAM
`+
`SEND NvRAM BLOCK J 668
`AS \fL'D
`ERASE COMMAND
`\ ASSERT BUS
`NO
`REQUEST
`BLOCK ERASE DONE ? V
`596
`YE
`SET SDRAM READ ADDRESS; J 672
`CALCULATSE
`INITIALIZE CRC
`600
`iv
`676
`READ SDRAM DATA
`|~/6O4 ,\ iggicgég??
`+
`ADDRESS
`WR|TE DATA TO INTF F|FO, J
`GENERATE CRC
`+
`680
`605
`STORE CRC
`J'
`RESULT AND
`SEND NvRAM PAGE WR|TE CMD |_/612
`DESCRWTOR
`+
`J STATUS
`READ DATA FROM INTF FIFO RAM;
`WR|TE DATA TO NvRAM PAGE RAM '
`
`1
`<—6 6
`660 MARK NVRAM
`\ TRANSFER
`ADDRESS
`656
`+
`\ MARK BLOCK
`As BAD IN PAGE
`
`NO
`
`INCREMENT
`64?“ BAD BLOCK 4
`COUNT
`
`PAGE BURST DONE ?
`
`620
`
`SET SDRAM READ ADDRESS;
`INITIALIZE CRC
`+
`YES
`NvRAM WR|TE DONE ? /J READ SDRAM DATA
`M
`628/~| WR|TE DATA TO INTF FIFO |
`
`NO
`
`624
`
`|
`
`632/4SEND NvRAM PAGE READ CMD|
`636
`READ DATA FROM |NTF FIFO
`640/
`AND FROM NVRAM PAGE RAM
`644
`
`FlG.12
`
`NO
`
`’?
`COMPARE OK .
`
`YES
`
`

`

`Patent Application Publication Apr. 13, 2006 Sheet 13 0f 14
`
`US 2006/0080515 A1
`
`492
`C TRANSFER FROM DJ
`NvRAM TO SDRAM
`4
`684
`SET NvRAM READ ADDRESS J
`T
`688
`SEND NvRAM PAGE J
`READ COMMAND
`692
`#
`READ DATA FROM NvRAM J
`PAGE RAM; vvR|TE DATA TO
`INTF F|FO
`696
`T
`SET SDRAM WRITE ADDRESS; J
`INITIALIZE CRC
`4
`700
`READ DATA FROM INTF FIFO J
`AND GENERATE CRC VALUES
`4
`704
`ASSERT BUS REQUEST J
`4
`
`708
`
`BUS GRANT ? &
`
`712
`YES
`CALCULATE DESCRIPTOR CRC J
`RESULT ADDRESS
`+
`716
`STORE CRC RESULT AND _/
`DESCRIPTOR STATUS
`
`FIG.13
`
`

`

`Patent Application Publication Apr. 13, 2006 Sheet 14 0f 14
`
`US 2006/0080515 A1
`
`)
`INCREMENT BLOCK
`ERASE ADDRESS
`
`+
`INCREMENT BAD
`BLOCK COUNT IN
`EEPROM
`I,
`PAGE BURST LEN ‘
`
`796 /
`
`800\
`DATA READ FROM
`INTF FIFO
`DATA WRITE TO
`FLASH PAGE RAM
`804
`
`BURST DONE?
`
`START LED BLINK
`
`756
`NVRAIVI STATUS IS
`BAD VCAP
`IN XFER
`
`,,
`
`764W —’, 780\ —’,812\
`760\
`POWER FAIL DEFECT
`_> INIT FLASH BLOCK
`SET SDRAM READ
`SET SDRAM READ
`ERASE ADDRESS
`ADDRESS BURST
`ADDRESS BURST
`AUTOMATIC
`720
`, POWER SWITCH 4')
`LEN ROTATE
`LEN ROTATE
`724
`To CAPS
`SEND FLASH BLOCK
`AMOUNT BYTE
`AMOUNT BYTE
`I
`ERASE COMMAND
`ENABLES
`ENABLES
`816
`r ABORT CURRENT
`|N|T+CRC
`|N|T+CRC
`728 AEg'$F:|’g$:TT|'EOF§'C|
`”\ START READ OF
`START READ OF )
`4'
`SDRAM DATA
`SDRAM DATA 820
`M
`'NCRE'V'ENT
`DATA WRITTEN TO
`DAUDNVTVFRLILE? To
`POWER FA'L
`INTF FIFO £4
`732 CCEEEIRFJRMIN
`GENERATE CRC
`SEND FLASH PAGE
`VALUES DURING
`READ COMMAND 828
`vvRITE TO FIFO H
`*
`DATA READ FROM /
`PAGE BURST LEN =
`|NTF FHIO
`512
`DATA READ FROM
`SEND FLASH PAGE
`FLASH PAGE RAM
`vvRITE COMMAND 832
`I
`COMPARE
`DATA OK,
`-
`
`MARK FLASH
`_> NVRAIVI STATUS IS
`BLgiié?Spiglg IN
`/ DISABLED XFER *
`740
`(ADDRESS 524)
`NVRAM STATUS IS 4
`4,
`BAD BLOCK MAX
`r
`\*l UP DATE FLASH
`856
`xFER ADDRESS
`(xFER ADDRESS +=
`/ PAGE BURST LEN)
`852 '—
`
`FIG.14
`
`_ IN EEPROM MARK
`} NVRAM INVALID
`744
`
`IN EEPROM INCR NvRAM
`HALT AND POWER
`COPY COUNT & STOP LED
`DOWN
`7 48 Q IN EEPROM MARK
`876’
`NvRAM vALID
`
`UPDATE xFER
`ADDRESS (XFER
`ADDRESS += PAGE
`BURST LEN)
`UPDATE XFER
`LENGTH xFER
`J;
`LENGTH PAGE
`BURST LEN)
`
`\
`
`

`

`US 2006/0080515 A1
`
`Apr. 13, 2006
`
`NON-VOLATILE MEMORY BACKUP FOR
`NETWORK STORAGE SYSTEM
`
`FIELD OF THE INVENTION
`
`[0001] The present invention relates to non-volatile data
`backup in a storage system, and, more speci?cally, to a data
`backup device utilizing volatile memory and non-volatile
`memory.
`
`BACKGROUND OF THE INVENTION
`
`[0002] Data storage systems are used in numerous appli
`cations and have Widely varying complexity related to the
`application storing the data, the amount of data required to
`be stored, and numerous other factors. A common require
`ment is that the data storage system securely store data,
`meaning that stored data Will not be lost in the event of a
`poWer loss or other failure of the storage system. In fact,
`many applications store data at primary data storage systems
`and this data is then backed-up, or archived, at predeter
`mined time intervals in order to provide additional levels of
`data security.
`[0003] In many applications, a key measure of perfor
`mance is the amount of time the storage system takes to store
`data sent to it from a host computer. Generally, When storing
`data, a host computer Will send a Write command, including
`data to be Written, to the storage system. The storage system
`Will store the data and report to the host computer that the
`data has been stored. The host computer generally keeps the
`Write command open, or in a “pending” state, until the
`storage system reports that the data has been stored, at Which
`point the host computer Will close the Write command. This
`is done so that the host computer retains the data to be
`Written until the storage system has stored the data. In this
`manner, data is kept secure and in the event of an error in the
`storage system, the host computer retains the data and may
`attempt to issue another Write command.
`
`[0004] When a host computer issues a Write command,
`overhead Within the computer is consumed While Waiting for
`the storage system to report that the Write is complete. This
`is because the host computer dedicates a portion of memory
`to the data being stored, and because the host computer uses
`computing resources to monitor the Write command. The
`amount of time required for the storage system to Write data
`depends on a number of factors, including the amount of
`read/Write operations pending When the Write command Was
`received, and the latency of the storage devices used by the
`storage system. Some applications utiliZe methods of reduc
`ing the amount of time required for the storage system to
`report that the Write command is complete, such as, for
`example, utiliZing a Write back cache Which reports that a
`Write command is complete before that data is Written to the
`media in the storage system. While this increases the per
`formance of the storage system, if there is a failure Within
`the storage system prior to the data being Written to the
`media, the data may be lost.
`
`SUMMARY OF THE INVENTION
`
`[0005] The present invention has recogniZed that a sig
`ni?cant amount of resources may be consumed in perform
`ing Write operations to Write data to a data storage device
`Within a data storage system. The resources consumed in
`such operations may be computing resources associated With
`
`a host computer, or other applications, Which utiliZe the data
`storage system to store data. Computing resources associ
`ated With the host computer may be underutilized When the
`host computer is Waiting to receive an acknoWledgment that
`the data has been Written to the storage device. This Wait
`time is a result of the speed and efficiency With Which the
`data storage system stores data.
`
`[0006] The present invention increases resource utiliZation
`When storing data at a storage system by reducing the
`amount of time a host computer Waits to receive an acknoWl
`edgment that data has been stored by increasing the speed
`and efficiency of data storage in a data storage system.
`Consequently, in a computing system utiliZing the present
`invention, host computing resources are preserved, thus
`enhancing the ef?ciency of the computing system.
`[0007] In one embodiment, the present invention provides
`a data storage system comprising (a) a ?rst data storage
`device including a ?rst data storage device memory for
`holding data, (b) a second data storage device including (i)
`a second data storage device volatile memory, (ii) a second
`data storage device non-volatile memory, and (iii) a proces
`sor for causing a copy of data provided to the ?rst data
`storage device to be provided to the second data storage
`device volatile memory, and in the event of a poWer inter
`ruption moving the data from the second data storage device
`volatile memory to the second data storage device non
`volatile memory. In such a manner, data stored at the second
`data storage device is not lost in the event of a poWer
`interruption.
`[0008] The ?rst data storage device, in an embodiment
`comprises at least one hard disk drive having an enabled
`volatile Write-back cache and a storage media capable
`storing data. The ?rst data storage device may, upon receiv
`ing data to be stored on the storage media, store the data in
`the volatile Write-back cache and generate an indication that
`the data has been stored before storing the data on the media.
`The ?rst data storage device may also include a processor
`executing operations to modify the order in Which the data
`is stored on the media after the data is stored in the
`Write-back cache. In the event of a poWer interruption, data
`in the Write-back cache may be lost, hoWever, a copy of the
`data Will continue to be available at the second data storage
`device, thus data is not lost in such a situation.
`
`[0009] In an embodiment, the second data storage device
`further comprises a secondary poWer source. The secondary
`poWer source may comprise a capacitor, a battery, or any
`other suitable poWer source. The second data storage device,
`upon detection of a poWer interruption, sWitches to the
`secondary poWer source and receives poWer from the sec
`ondary poWer source While moving the data from the second
`data storage device volatile memory to the second data
`storage device non-volatile memory. Upon completion of
`moving the data from the second data storage device volatile
`memory to the second data storage device non-volatile
`memory, the second data storage device shuts doWn, thus
`preserving the secondary poWer source.
`
`[0010] In one embodiment, the second data storage device
`non-volatile memory comprises an electrically erasable pro
`grammable read-only-memory, or a ?ash memory. The sec
`ond data storage device volatile memory may be a random
`access memory, such as a SDRAM. In this embodiment,
`upon detection of a poWer interruption, the processor reads
`
`

`

`US 2006/0080515 Al
`
`Apr. 13, 2006
`
`the data from the second data storage device volatile
`memory, Writes the data to the second data storage device
`non-volatile memory, and veri?es that the data stored in the
`second data storage device non-volatile memory is correct.
`The processor may verify that the data stored in the second
`data storage device non-volatile memory is correct by com
`paring the data from the second data storage device non
`volatile memory With the data from the second data storage
`device volatile memory, and re-Writing the data to the
`second data storage device non-volatile memory When the
`comparison indicates that the data is not the same. In another
`embodiment, the processor, upon detection of a poWer
`interruption, reads the data from the second data storage
`device volatile memory, computes an ECC for the data, and
`Writes the data and ECC to the second data storage device
`non-volatile memory.
`
`[0011] In a further embodiment, the ?rst data storage
`device and second data storage device are operably inter
`connected to a storage server. The storage server is operable
`to cause data to be provided to each of the ?rst and second
`data storage devices. The storage server may comprise an
`operating system, a CPU, and a disk I/O controller. The
`storage server, in an embodiment, (a) receives block data to
`be Written to the ?rst data storage device, the block data
`comprising unique block addresses Within the ?rst data
`storage device and data to be stored at the unique block
`addresses, (b) stores the block data in the second data
`storage device, (c) manipulates the block data, based on the
`unique block addresses, to enhance the efficiency of the ?rst
`data storage device When the ?rst data storage device stores
`the block data to the ?rst data storage device memory, and
`(d) issues one or more Write commands to the ?rst data
`storage device to Write the block data to the ?rst data storage
`device memory. Manipulating the block data may include
`reordering the block data based on the unique block
`addresses such that seek time Within the ?rst data storage
`device is reduced.
`
`[0012] Another embodiment of the invention provides a
`method for storing data in a data storage system. The method
`comprising: (a) providing a ?rst data storage device com
`prising a ?rst memory for holding data; (b) providing a
`second data storage device comprising a second volatile
`memory and a second non-volatile memory; (c) storing data
`to be stored at the ?rst data storage device at the second data
`storage device in the second volatile memory; and (d)
`moving the data from the second volatile memory to the
`second non-volatile memory in the event of a poWer inter
`ruption. The ?rst data storage device may comprise at least
`one hard disk drive having a volatile Write-back cache and
`a storage media capable storing the data. The ?rst data
`storage device, upon receiving data to be stored on the
`storage media, stores the data in the volatile Write-back
`cache and generates an indication that the data has been
`stored at the ?rst data storage device before storing the data
`on the media.
`
`[0013] In one embodiment, the second data storage device
`further comprises a secondary poWer source. The secondary
`poWer source may comprise a capacitor, a battery, or other
`suitable poWer source. In this embodiment, the moving step
`comprises: (a) sWitching the second memory device to the
`secondary poWer source; (b) reading the data from the
`second data storage device volatile memory; and (c) Writing
`the data to the second data storage device non-volatile
`
`memory. In another embodiment, the moving step further
`comprises: (d) sWitching the second memory device oif
`folloWing the Writing step. The moving step comprises, in
`another embodiment: (a) detecting a poWer interruption; (b)
`reading the data from the second data storage device volatile
`memory; (c) computing an ECC for the data; and (d) Writing
`the data and ECC to the second data storage device non
`volatile memory.
`
`[0014] In another embodiment, the moving step com
`prises: (a) detecting a poWer interruption; (b) reading the
`data from the second data storage device volatile memory;
`(c) Writing the data to the second data storage device
`non-volatile memory; and (d) verifying that the data stored
`in the second data storage device non-volatile memory is
`correct. The verifying step comprises, in an embodiment: (i)
`comparing the data from the second data storage device
`non-volatile memory With the data from the second data
`storage device volatile memory; and (ii) re-Writing the data
`to the second data storage device non-volatile memory When
`the comparing step indicates that the data is not the same.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`[0015] FIG. 1 is a block diagram illustration of a netWork
`having applications and netWork attached storage;
`
`[0016] FIG. 2 is a block diagram illustration of a data
`storage system of an embodiment of the present invention;
`
`[0017] FIG. 3 is a block diagram illustration of a data
`storage system of another embodiment of the present inven
`tion;
`[0018] FIG. 4 is a block diagram illustration of a backup
`device of an embodiment of the present invention;
`
`[0019] FIG. 5 is a block diagram illustration of a PCI
`backup device of an embodiment of the present invention;
`
`[0020] FIG. 6 is a How chart diagram illustrating the
`operational steps performed by a storage controller of an
`embodiment of the present invention;
`
`[0021] FIG. 7 is a How chart diagram illustrating the
`operational steps performed by a backup device processor
`folloWing the poWer on of the backup device of an embodi
`ment of the present invention;
`
`[0022] FIG. 8 is a How chart diagram illustrating the
`operational steps performed by a backup device processor
`folloWing a reset of the backup device of an embodiment of
`the present invention;
`[0023] FIG. 9 is a How chart diagram illustrating the
`operational steps performed by a backup device processor
`When receiving commands, for an embodiment of the
`present invention;
`[0024] FIG. 10 is a How chart diagram illustrating the
`operational steps performed by a backup device processor
`When transferring data from host memory to SDRAM, for an
`embodiment of the present invention;
`[0025] FIG. 11 is a How chart diagram illustrating the
`operational steps performed by a backup device processor
`When transferring data from SDRAM to host memory, for an
`embodiment of the present invention;
`[0026] FIG. 12 is a How chart diagram illustrating the
`operational steps performed by a backup device processor
`
`

`

`US 2006/0080515 A1
`
`Apr. 13, 2006
`
`When transferring data from SDRAM to NVRAM, for an
`embodiment of the present invention;
`[0027] FIG. 13 is a How chart diagram illustrating the
`operational steps performed by a backup device processor
`When transferring data from NVRAM to SDRAM, for an
`embodiment of the present invention; and
`[0028] FIG. 14 is a How chart diagram illustrating the
`operational steps performed by a backup device processor
`When a poWer failure is detected, for an embodiment of the
`present invention.
`DETAILED DESCRIPTION
`[0029] Referring to FIG. 1, a block diagram illustration of
`a computing netWork and associated devices, of an embodi
`ment of the present invention. In this embodiment, a net
`Work 100 has various connections to applications 104 and
`netWork attached storage (NAS) devices 108. The netWork
`100, as Will be understood, may be any computing netWork
`utiliZed for communications betWeen attached netWork
`devices, and may include, for example, a distributed net
`Work, a local area netWork, and a Wide area netWork, to
`name but a feW. The applications 104 may be any of a
`number of computing applications connected to the netWork,
`and may include, for example, a database application, an
`email server application, an enterprise resource planning
`application, a personal computer, and a netWork server
`application, to name but a feW. The NAS devices 108 are
`utiliZed in this embodiment for storage of data provided by
`the applications 104. Such network attached storage is
`utiliZed to store data from one application, and make the data
`available to the same application, or another application.
`Furthermore, such NAS devices 108 may provide a rela
`tively large amount of data storage, and also provide data
`storage that may be backed up, mirrored, or otherWise
`secured such that loss of data is unlikely. UtiliZing such NAS
`devices 108 can reduce the requirements of individual
`applications requiring such measures to prevent data loss,
`and by storing data at one or more NAS devices 108, data
`may be securely retained With a reduced cost for the appli
`cations 104. Furthermore, such NAS devices 108 may
`provide increased performance relative to, for example,
`local storage of data. This improved performance may result
`from relatively high speed at Which the NAS devices 108
`may store data.
`[0030] A key performance measurement of NAS devices
`108 is the rate at Which data may be Written to the devices
`and the rate at Which data may be read from the devices. In
`one embodiment, the NAS devices 108 of the present
`invention receive data from applications 104, and acknoWl
`edge back to the application 104 that the data is securely
`stored at the NAS device 108, before the data is actually
`stored on storage media located Within the NAS 108. In this
`embodiment, the performance of the NAS is increased,
`because there is no requirement for the NAS device to Wait
`for the data to be stored at storage media. For example, one
`or more hard disk drives may be utiliZed in the NAS 108,
`With the NAS reporting to the application 104 that a data
`Write is complete before the data is stored on storage media
`Within the hard disk drive(s). In order to provide security to
`the data before it is stored on storage media, the NAS
`devices 108, of this embodiment, store the data in a non
`volatile memory, such that if a poWer failure, or other failure,
`occurs prior to Writing the data to the storage media, the data
`may still be recovered.
`
`[0031] Referring noW to FIG. 2, a block diagram illustra
`tion of a NAS device 108 of an embodiment of the present
`invention is noW described. In this embodiment, the NAS
`108 includes a netWork interface 112, Which provides an
`appropriate physical connection to the netWork and operates
`as an interface betWeen the netWork 100 and the NAS device
`108. The netWork interface 112 may provide any available
`physical connection to the netWork 100, including optical
`?ber, coaxial cable, and tWisted pair, to name but a feW. The
`netWork interface 112 may also operate to send and receive
`data over the netWork 100 using any of a number of
`transmission protocols, such as, for example, iSCSI and
`Fibre Channel. The NAS 108 includes an operating system
`120, With an associated memory 124. The operating system
`120 controls operations for the NAS device 108, including
`the communications over the netWork interface 112. The
`NAS device 108 includes a data communication bus 128
`that, in one embodiment, is a PCI bus. The NAS device 108
`also includes a storage controller 132 that is coupled to the
`bus 128. The storage controller 132, in this embodiment,
`controls the operations for the storage and retrieval of data
`stored at the data storage components of the NAS device
`108. The NAS device 108 includes one or more storage
`devices 140, Which are utiliZed to store data. In one embodi
`ment, the storage devices 140 include a number of hard disk
`drives. It Will be understood that the storage device(s) 140
`could be any type of data storage device, including storage
`devices that store data on storage media, such as magnetic
`media, tape media, and optical media. The storage devices
`may also include solid-state storage devices that store data
`in electronic components Within the storage device. In one
`embodiment, as mentioned, the storage device(s) 140 com
`prise a number of hard disk drives. In another embodiment,
`the storage device(s) 140 comprise a number of hard disk
`drives con?gured in a RAID con?guration. The NAS device
`108 also includes one or more backup devices 144 con
`nected to the bus 128. In the embodiment of FIG. 2, the
`NAS device 108 includes one backup device 144, having a
`non-volatile memory, in Which the storage controller 132
`causes a copy of data to be stored at storage devices 140 to
`be provided to the backup device 144 in order to help
`prevent data loss in the event of a poWer interruption or other
`failure Within the NAS device 108. In other embodiments,
`more than one backup device 144 may be utiliZed in the
`NAS device 108.
`
`[0032] Referring noW to FIG. 3, a storage controller 132,
`storage device 140, and backup memory 144 of an embodi
`ment are described in more detail. In this embodiment, the
`storage device 140 is a hard disk drive having an enabled
`Write-back cache 148. It Will be understood that the storage
`device 140 may comprise a number of hard disk drives,
`and/or one or more other storage devices, and that the
`embodiment of FIG. 3 is described With a single hard disk
`drive for the purposes of discussion and illustration only.
`The principles and concepts as described With respect to
`FIG. 3 fully apply to other systems having more or other
`types of storage devices. As mentioned, the storage device
`140 includes an enabled Write-back cache 148. A Write-back
`cache 140 is utiliZed in this embodiment to store data Written
`to the storage device 140 before the data is actually Written
`to the media Within the storage device 140. When the data
`is stored in the Write-back cache 148, the storage device 140
`acknoWledges that the data has been stored. By utiliZing the
`Write-back cache 148, the storage device 140 in most cases
`
`

`

`US 2006/0080515 A1
`
`Apr. 13, 2006
`
`has signi?cantly improved performance relative to the per
`formance of a storage device that does not have an enabled
`Write-back cache.
`
`[0033] As is understood, storage devices may utilize a
`Write-back cache to enhance performance by reducing the
`time related to the latency Within the storage device. For
`example, in a hard disk drive, prior to Writing data to the
`storage media, the drive must ?rst position the read/Write
`head at the physical location on the media Where the data is
`to be stored, referred to as a seek. Seek operations move an
`actuator arm having the read/Write head located thereon to a
`target data track on the media. Once the read/Write head is
`positioned at the proper track, it then Waits for the particular
`portion of the media Where the data is to be stored to rotate
`into position Where data may then be read or Written. The
`time required to position the actuator arm and Wait for the
`media to move into the location Where data may be read or
`Written depends upon a number of factors, and is largely
`dependent upon the location of the actuator arm prior to
`moving it to the target track. In order to reduce seek times
`for Write operations, a disk drive may evaluate data stored in
`the Write-back cache 148, and select data to be Written Which
`requires a reduced seek time compared to other data in the
`Write-back cache, taking into consideration the current loca
`tion of the read/Write head on the storage media. The data
`Within the Write-back cache may thus be Written to the media
`in a different order than received, in order to reduce this seek
`time and enhance the performance of the storage device.
`
`[0034] A disad

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket