# US 8,572,401 B1 · Systems and methods for securing data of volume mirrors

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

- Number: US 8,572,401 B1
- Document ID: US8572401B1
- Status: Granted
- Kind: B1
- Application number: 12/533,783
- Filed: 2009-07-31
- Granted: 2013-10-29
- Earliest claimed: 2009-07-31
- Assignees: Symantec Corporation
- Applicants: Roshni Jaywantsingh Patil
- Inventors: Roshni Jaywantsingh Patil
- Web page: https://patentgrep.com/patent/US8572401B1

## CPC

- G06F 21/6218: {to a system of files or objects, e.g. local or distributed file system or database}
- G06F 11/2094: {Redundant storage or storage space (G06F11/2056 takes precedence)}
- G06F 11/2097: {maintaining the standby controller/processing unit updated (initialisation or re-synchronisation thereof G06F11/1658 and subgroups)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Various computer-implemented methods for securing data of replicated volumes are disclosed. In one example, an exemplary method for performing such a task may include: 1) identifying a set of plexes of a replicated volume, 2) identifying, within the set of plexes, at least one non-trusted plex, 3) intercepting data to be replicated to the non-trusted plex, 4) encrypting the data to be replicated to the non-trusted plex, and then 5) writing the encrypted data to the non-trusted plex. Various other methods, systems, and computer-readable media are also disclosed.

## Claims

### Claim 1

A computer-implemented method for securing data of volume mirrors, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:
identifying a set of plexes of a replicated volume;
identifying, within the set of plexes, at least one non-trusted plex;
intercepting data to be replicated to the non-trusted plex, the data to be replicated to the non-trusted plex originating from an attempt by an application to write the data to the replicated volume;
simulating, before encrypting the data to be replicated to the non-trusted plex, successful synchronous replication of the data to the non-trusted plex so that the application is not slowed by encrypting the data to be replicated to the non-trusted plex during the attempt by the application to write the data to the replicated volume;
encrypting the data to be replicated to the non-trusted plex;
asynchronously replicating the encrypted data to the non-trusted plex;
wherein the computer-implemented method avoids the performance of unnecessary decryption operations by:
refraining from encrypting data to be replicated to trusted plexes;
preferring to fulfill read requests for the replicated volume through trusted plexes instead of non-trusted plexes.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, further comprising:
receiving a request to read the data from the replicated volume;
retrieving the data from the non-trusted plex;
decrypting the data retrieved from the non-trusted plex.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, further comprising determining whether the application requires a short response time on write attempts;
wherein simulating successful synchronous replication of the data to the non-trusted plex is performed in response to determining that the application requires a short response time on write attempts.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, further comprising:
before asynchronously replicating the encrypted data to the non-trusted plex:
creating a dirty region log for the non-trusted plex;
setting a dirty flag in the dirty region log for the data to be replicated;
receiving confirmation from the non-trusted plex of successful replication of the encrypted data to the non-trusted plex;
clearing the dirty flag in response to receiving the confirmation from the non-trusted plex of successful replication of the encrypted data to the non-trusted plex.

### Claim 5 (depends on 1)

The computer-implemented method of claim 1, wherein intercepting the data to be replicated to the non-trusted plex comprises:
detecting that the non-trusted plex has become detached from the replicated volume;
tracking data changes to the replicated volume with a dirty region log.

### Claim 6 (depends on 5)

The computer-implemented method of claim 5, wherein encrypting the data to be replicated to the non-trusted plex comprises encrypting data tracked as changed in the dirty region log.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, further comprising assigning an encryption key for each non-trusted plex in the set of plexes.

### Claim 8 (depends on 1)

The computer-implemented method of claim 1, wherein asynchronously replicating the encrypted data to the non-trusted plex comprises writing the encrypted data to an encrypted storage replication log on a bunker site.

### Claim 9 (depends on 8)

The computer-implemented method of claim 8, further comprising:
determining that a primary site containing the replicated volume has failed;
identifying a remote site comprising an asynchronous replication of the replicated volume, the remote site further comprising a decryption key for the encrypted data;
transferring synchronously-replicated data from the encrypted storage replication log to the remote site.

### Claim 10 (depends on 1)

The computer-implemented method of claim 1, wherein intercepting data to be replicated to the non-trusted plex comprises detecting a snapshot of the replicated volume to be stored in the non-trusted plex.

### Claim 11 (depends on 10)

The computer-implemented method of claim 10, further comprising:
tracking changes made to the replicated volume with a data change object;
identifying a request to restore the snapshot of the replicated volume from the non-trusted plex;
using the data change object to identify changed data since the snapshot was created;
decrypting the changed data from the non-trusted plex;
writing the decrypted changed data to the replicated volume.

### Claim 12 (depends on 11)

The computer-implemented method of claim 11, further comprising:
before writing the decrypted changed data to the replicated volume, receiving a request to read data changed since the snapshot was created;
reading the data changed since the snapshot was created from the non-trusted plex.

### Claim 13 (depends on 1)

The computer-implemented method of claim 1, wherein:
intercepting the data to be replicated to the non-trusted plex comprises intercepting application data;
encrypting the data to be replicated to the non-trusted plex comprises encrypting the application data.

### Claim 14 (depends on 13)

The computer-implemented method of claim 13, further comprising writing, to the non-trusted plex, unencrypted metadata relating to the data to be replicated.

### Claim 15 (depends on 1)

The computer-implemented method of claim 1, further comprising making a decryption key for the non-trusted plex available to a trusted application.

### Claim 16 (depends on 1)

The computer-implemented method of claim 1, wherein encrypting the data to be replicated to the non-trusted plex comprises encrypting the data using the same level of granularity as used when synchronizing the data.

### Claim 17 (depends on 1)

The computer-implemented method of claim 1, wherein asynchronously replicating the encrypted data to the non-trusted plex comprises writing the data to the non-trusted plex on at least one of:
a remote site in a campus center;
a non-trusted storage site;
a cloud environment.

### Claim 18

A system for securing data of replicated volumes, the system comprising:
an identification module programmed to:
identify a set of plexes of a replicated volume;
identify, within the set of plexes, at least one non-trusted plex;
an interception module programmed to intercept data to be replicated to the non-trusted plex, the data to be replicated to the non-trusted plex originating from an attempt by an application to write the data to the replicated volume;
an encryption module programmed to encrypt the data to be replicated to the non-trusted plex;
a writing module programmed to:
simulate, before encrypting the data to be replicated to the non-trusted plex, successful synchronous replication of the data to the non-trusted plex so that the application is not slowed by encrypting the data to be replicated to the non-trusted plex during the attempt by the application to write the data to the replicated volume;
asynchronously replicate the encrypted data to the non-trusted plex;
wherein the system avoids the performance of unnecessary decryption operations due to:
the encryption module being programmed to refrain from encrypting data to be replicated to trusted plexes;
a request module programmed to prefer fulfilling read requests for the replicated volume through trusted plexes instead of non-trusted plexes;
at least one processor configured to execute the identification module, the interception module, the encryption module, the writing module, and the request module.

### Claim 19

A non-transitory computer-readable-storage medium comprising one or more computer-executable instructions that, when executed by at least one processor of a computing device, cause the computing device to:
identify a set of plexes of a replicated volume;
identify, within the set of plexes, at least one non-trusted plex;
intercept data to be replicated to the non-trusted plex, the data to be replicated to the non-trusted plex originating from an attempt by an application to write the data to the replicated volume;
simulate, before encrypting the data to be replicated to the non-trusted plex, successful synchronous replication of the data to the non-trusted plex so that the application is not slowed by encrypting the data to be replicated to the non-trusted plex during the attempt by the application to write the data to the replicated volume;
encrypt the data to be replicated to the non-trusted plex;
asynchronously replicate the encrypted data to the non-trusted plex;
wherein the computer-executable instructions cause the computing device to avoid the performance of unnecessary decryption operations by:
refraining from encrypting data to be replicated to trusted plexes;
preferring to fulfill read requests for the replicated volume through trusted plexes instead of non-trusted plexes.
