# US 7,165,145 B2 · System and method to protect data stored in a storage system

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 7,165,145 B2
- Document ID: US7165145B2
- Status: Granted
- Kind: B2
- Application number: 10/612,081
- Filed: 2003-07-02
- Published: 2005-01-06
- Granted: 2007-01-16
- Earliest claimed: 2003-07-02
- Assignees: FalconStor Software, Inc.
- Inventors: Wai Lam
- Web page: https://patentgrep.com/patent/US7165145B2

## CPC

- G06F 11/2064: {while ensuring consistency}
- G06F 11/2074: {Asynchronous techniques}
- G06F 12/0804: with main memory updating (G06F12/0806 takes precedence)
- G06F 12/0866: for peripheral storage systems, e.g. disk cache
- G06F 2201/84: Using snapshots, i.e. a logical point-in-time copy of the data
- Y10S 707/99953: Recoverability
- Y10S 707/99955: Archiving or backup
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- Y10S: TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS

## Abstract

A method for generating a snapshot that records data transmitted to a storage system prior to a selected moment in time, while allowing a client server to continue sending data to the storage system, is disclosed. A snapshot marker is inserted into a cache, data continues to be flushed to disk until the snapshot marker is flushed from the cache, and a snapshot is performed. Additionally, a method for recording data stored in a storage system is disclosed that includes initiating a transaction with the storage system according to standard protocols, transmitting to the storage system a command representing a snapshot request, and performing a snapshot of the data. In accordance with one implementation, the command is transmitted as a SCSI command descriptor block.

## Claims

### Claim 1

A method for storing data in a storage system, the storage system having a cache and at least one storage device, the data comprising data items transmitted to the storage system, the method comprising:
receiving data items by the cache;
inserting a marker into the cache, wherein the marker is an indication that one or more of the data items received by the cache are to be transmitted to at least one storage device prior to performing a data processing operation; and
transmitting to the at least one storage device the one or more of the data items.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
flushing from the cache the one or more of the data items, prior to performing the data processing operation.

### Claim 3 (depends on 2)

The method of claim 2, further comprising flushing the marker from the cache, prior to performing the data processing operation.

### Claim 4 (depends on 3)

The method of claim 3, further comprising flushing the one or more of the data items prior to the flushing of the marker.

### Claim 5 (depends on 2)

The method of claim 2, wherein the cache receives data items and flushes data items on a first-in-first-out basis.

### Claim 6 (depends on 1)

The method of claim 1, wherein the one or more of the data items are received by the cache prior to the insertion of the marker into the cache.

### Claim 7 (depends on 1)

The method of claim 1, wherein the cache comprises non-volatile memory.

### Claim 8 (depends on 1)

The method of claim 1, wherein the cache comprises volatile memory.

### Claim 9 (depends on 1)

The method of claim 1, wherein the data is transmitted to the storage system over a network.

### Claim 10 (depends on 9)

The method of claim 9, wherein the network is a WAN.

### Claim 11 (depends on 9)

The method of claim 9, wherein the network is a LAN.

### Claim 12 (depends on 9)

The method of claim 9, wherein the network is a Fibre-Channel-based SAN.

### Claim 13 (depends on 9)

The method of claim 9, wherein the network is an internet.

### Claim 14 (depends on 9)

The method of claim 9, wherein the network is an intranet.

### Claim 15 (depends on 1)

The method of claim 1, wherein the at least one storage device is a block-level storage device.

### Claim 16 (depends on 1)

The method of claim 1, further comprising:
performing the data processing operation.

### Claim 17 (depends on 1)

The method of claim 1, wherein the data processing operation comprises performing a snapshot of data stored in the storage system.

### Claim 18 (depends on 1)

The method of claim 1, further comprising:
transmitting the one or more of the data items to the at least one storage device.

### Claim 19

A system for storing data in a storage system, the data comprising data items transmitted to the storage system, wherein the storage system comprises:
a cache configured to:
receive data items;
at least one storage device configured to:
store data items; and
a controller configured to:
insert a marker into the cache, wherein the marker is an indication that one or more of the data items received by the cache are to be transmitted to the at least one storage device prior to performing a data processing operation; and
cause the one or more of the data items to be transmitted to the at least one storage device.

### Claim 20 (depends on 19)

The system of claim 19, wherein the controller is further configured to:
cause the one or more of the data items to be flushed from the cache prior to performing the data processing operation.

### Claim 21 (depends on 20)

The system of claim 20, wherein the controller is further configured to:
cause the marker to be flushed from the cache prior to performing the data processing operation.

### Claim 22 (depends on 21)

The system of claim 21, wherein the controller is configured to:
cause the one or more of the data items to be flushed from the cache prior to causing the marker to be flushed.

### Claim 23 (depends on 19)

The system of claim 19, wherein the cache is configured to:
receive the one or more of the data items prior to the insertion of the marker into the cache.

### Claim 24 (depends on 19)

The system of claim 19, wherein the cache comprises non-volatile memory.

### Claim 25 (depends on 19)

The system of claim 19, wherein the cache comprises volatile memory.

### Claim 26 (depends on 19)

The system of claim 19, wherein the data is transmitted to the storage system over a network.

### Claim 27 (depends on 26)

The system of claim 26, wherein the cache is configured to:
receive data items and flushes data items on a first-in-first-out basis.

### Claim 28 (depends on 26)

The system of claim 26, wherein the network is a WAN.

### Claim 29 (depends on 26)

The system of claim 26, wherein the network is a LAN.

### Claim 30 (depends on 26)

The system of claim 26, wherein the network is a Fibre-Channel-based SAN.

### Claim 31 (depends on 26)

The system of claim 26, wherein the network is an internet.

### Claim 32 (depends on 26)

The system of claim 26, wherein the network is an intranet.

### Claim 33 (depends on 19)

The system of claim 19, wherein the at least one storage device comprises a block-level storage device.

### Claim 34 (depends on 19)

The system of claim 19, wherein the controller is further configured to:
perform the data processing operation.

### Claim 35 (depends on 19)

The system of claim 19, wherein the data processing operation comprises performing a snapshot of data stored in the storage system.

### Claim 36 (depends on 19)

The system of claim 19, wherein the controller is further configured to:
transmit the one or more of the data items to the at least one storage device.

### Claim 37

A method for storing data in a storage system, the storage system having a cache and at least one storage device, the data comprising data items transmitted to the storage system, the method comprising:
receiving data items by the cache;
inserting a marker into the cache, wherein the marker is an indication that one or more of the data items received by the cache are to be flushed from the cache prior to performing a data processing operation; and
flushing from the cache the one or more of the data items.

### Claim 38 (depends on 37)

The method of claim 37, further comprising:
flushing the marker from the cache; and
performing the data processing operation when it is determined that the marker has been flushed from the cache.

### Claim 39 (depends on 38)

The method of claim 38, wherein performing the data processing operation comprises performing a snapshot of data stored in the storage system.

### Claim 40

A system for storing data in a storage system, the data comprising data items transmitted to the storage system, wherein the storage system comprises:
a cache configured to:
receive data items; and
a controller configured to:
insert a marker into the cache, wherein the marker is an indication that one or more of the data items received by the cache are to be flushed from the cache prior to performing a data processing operation; and
cause the one or more of the data items to be flushed from the cache.

### Claim 41 (depends on 40)

The system of claim 40, wherein the controller is further configured to:
flush the marker from the cache; and
perform the data processing operation when it is determined that the marker has been flushed from the cache.

### Claim 42 (depends on 41)

The system of claim 41, wherein the controller is configured to:
perform a snapshot of data stored in the storage system when it is determined that the marker has been flushed from the cache.
