Search Images Maps Play YouTube News Gmail Drive More »
Advanced Patent Search | Web History | Sign in

Patents

Described are methods, systems, and apparatus, including computer program products, for achieving distributed asynchronous ordered replication. Distributed asynchronous ordered replication includes creating a first journal for a first set of I/O data, creating a second journal for a second set of I/O data, and temporarily preventing committal, of the second set of I/O data until the second journal is created. In some examples, the first and second journals comprise entries. The entries of the first and second journals include counter values. The entries of the first journal typically have a different counter value than the entries of the second journal.

InventorRichard Testardi
Original AssigneeTexas Memory Systems, Inc.
Primary Examiner: Tim T. Vo
Secondary Examiner: Jay A Morrison
Attorney: Locke Lord Bissell & Liddell LLP
Current U.S. Classification1/1; 707/999.001; 707/999.002; 707/999.008; 707/999.202

View patent at USPTO
Search USPTO Assignment Database
Download USPTO Public PAIR data

Citations

Cited PatentFiling dateIssue dateOriginal AssigneeTitle
US6434681Dec 2, 1999Aug 13, 2002EMC CorporationSnapshot copy facility for a data storage system permitting continued host read/write access
US6732124Feb 9, 2000May 4, 2004Fujitsu LimitedData processing system with mechanism for restoring file systems based on transaction logs
US6947956Jun 6, 2002Sep 20, 2005International Business Machines CorporationMethod and apparatus for selective caching of transactions in a computer system
US6947981Mar 26, 2002Sep 20, 2005Hewlett-Packard Development Company, L.P.Flexible data replication mechanism
US6959373Aug 13, 2002Oct 25, 2005Incipient, Inc.Dynamic and variable length extents
US7010721Sep 29, 2003Mar 7, 2006International Business Machines CorporationFile system journal management
US7076508Aug 12, 2002Jul 11, 2006International Business Machines CorporationMethod, system, and program for merging log entries from multiple recovery log files
US7149769Mar 26, 2002Dec 12, 2006Hewlett-Packard Development Company, L.P.System and method for multi-destination merge in a storage area network
US7177886Feb 7, 2003Feb 13, 2007International Business Machines CorporationApparatus and method for coordinating logical data replication with highly available data replication
US20020147774Apr 1, 2002Akamai Technologies, Inc.Content storage and replication in a managed internet content storage environment
US20030140209Aug 13, 2002Fast path caching
US20030140210Aug 13, 2002Dynamic and variable length extents
US20030187947Mar 26, 2002System and method for multi-destination merge in a storage area network
US20030212789May 9, 2002International Business Machines CorporationMethod, system, and program product for sequential coordination of external database application events with asynchronous internal database events
US20030217119May 16, 2002Replication of remote copy data for internet protocol (IP) transmission
US20050207052Mar 18, 2005Predictable journal architecture

Referenced by

Citing PatentFiling dateIssue dateOriginal AssigneeTitle
US7788335Jan 2, 2003Aug 31, 2010F5 Networks, Inc.Aggregated opportunistic lock and aggregated implicit lock management for locking aggregated files in a switched file system
US7877511Jan 13, 2004Jan 25, 2011F5 Networks, Inc.Method and apparatus for adaptive services networking
US7925629Mar 28, 2007Apr 12, 2011NetApp, Inc.Write ordering style asynchronous replication utilizing a loosely-accurate global clock
US7958347Feb 2, 2006Jun 7, 2011F5 Networks, Inc.Methods and apparatus for implementing authentication
US8005953May 19, 2009Aug 23, 2011F5 Networks, Inc.Aggregated opportunistic lock and aggregated implicit lock management for locking aggregated files in a switched file system
US8015427Apr 23, 2007Sep 6, 2011NetApp, Inc.System and method for prioritization of clock rates in a multi-core processor
US8099571Aug 6, 2008Jan 17, 2012NetApp, Inc.Logical block replication with deduplication
US8117244Nov 11, 2008Feb 14, 2012F5 Networks, Inc.Non-disruptive file migration
US8150800Mar 28, 2007Apr 3, 2012NetApp, Inc.Advanced clock synchronization technique
US8180747Nov 11, 2008May 15, 2012F5 Networks, Inc.Load sharing cluster file systems
US8195760Apr 16, 2008Jun 5, 2012F5 Networks, Inc.File aggregation in a switched file system
US8195769Mar 30, 2009Jun 5, 2012F5 Networks, Inc.Rule based aggregation of files and transactions in a switched file system
US8204860Feb 9, 2010Jun 19, 2012F5 Networks, Inc.Methods and systems for snapshot reconstitution
US8239354Mar 3, 2005Aug 7, 2012F5 Networks, Inc.System and method for managing small-size files in an aggregated file system
USRE43346Mar 14, 2007May 1, 2012F5 Networks, Inc.Transaction aggregation in a switched file system

Claims

1. A method of maintaining committal of I/O data to achieve distributed asynchronous ordered replication, the method comprising:

creating a first journal for a first set of I/O data to be committed to a local storage device, the first journal comprising entries, the entries comprising a first counter value that is the same for all entries of the first journal and the order of entries in the first journal being independent of the order of the first set of I/O data committed to the local storage;

creating a second journal for a second set of I/O data to be committed to the local storage device, the second journal comprising entries, the entries comprising a second counter value that is the same for all entries of the second journal and the order of entries in the second journal being independent of the order of the second set of I/O data committed to the local storage;

temporarily preventing committal, to the local storage device, of the second set of I/O data until the second journal is created; and

beginning committal of the second set of I/O data to the local storage device before the first set of I/O data is finished committal.

2. The method of claim 1 further comprising committing the first set to I/O data to the local storage device and to the first journal at substantially the same time.

3. The method of claim 1 wherein the local storage device comprises a plurality of storage devices.

4. The method of claim 3 wherein the first journal is a plurality of journals.

5. The method of claim 3 wherein the second journal is a plurality of journals.

6. The method of claim 1 wherein the second journal is created in response to the first journal filling up.

7. The method of claim 1 wherein the second journal is created in response to a replication interval occurring.

8. The method of claim 7 wherein the replication interval occurs every 30 seconds.

9. The method of claim 1 further comprising sending the first journal to a remote storage device.

10. The method of claim 9 further comprising after sending the first journal to the remote storage device, applying the first journal to the remote storage device.

11. The method of claim 9 further comprising after sending the first journal to the remote storage device, sending the second journal to the remote storage device.

12. The method of claim 11 further comprising applying the entries of the first and second journals to the remote storage device, ordered by the entries' counter value.

13. The method of claim 12 wherein entries with equal counter values are applied in a preferred order.

14. The method of claim 13 wherein the preferred order is a random order.

15. The method of claim 13 wherein the preferred order is that which the journal entries are read in.

16. The method of claim 13 wherein the preferred order is according to the age of first and second journals.

17. A system for distributed asynchronous ordered replication, the system comprising:

a fast path for performing journal operations;

a control path; and

a first storage device comprising
a first journal for a first set of I/O data, the first journal comprising journal entries, the entries comprising a first counter value that is the same for all entries of the first journal, the order of entries in the first journal being independent of the order of the first set of I/O data committed to the local storage, and representing an I/O operation of the first set of I/O data performed by the fast path; and
a second journal for a second set of I/O data, the second journal comprising journal entries, the entries comprising a second counter value that is the same for all entries of the second journal, and the order of entries in the second journal being independent of the order of the second set of I/O data committed to the local storage, and representing I/O operation of the second set of I/O data performed by the fast path;
wherein the second counter value is different than the first counter value and wherein the control path temporarily prevents the fast path from performing the second set of I/O data until the second journal is created, allowing for performance of the second set of I/O data before finishing performance of the first set of I/O data.

18. The system of claim 17 wherein journal entries of the first and second journals represent I/O operations performed by the fast path on the first storage.

19. The system of claim 18 further comprising a second storage for backing up the first storage.

20. The system of claim 19 wherein journal entries of the first and second journals are applied to the second storage ordered by counter value, wherein entries with equal counter values are applied in a preferred order.

21. The system of claim 20 wherein the preferred order is a random order.

22. The system of claim 20 wherein the preferred order is that which the journal entries are read in.

23. The system of claim 20 wherein the preferred order is according to the age of the first and second journals.

24. The system of claim 17 wherein the journal entries of the first journal are written at substantially the same time the fast path performs the I/O operations represented by the first set of I/O data and the journal entries of the second journal are written at substantially the same time the fast path performs the I/O operations represented by the second set of I/O data.

25. A computer program product, tangibly embodied in a machine-readable storage device, for maintaining committal of I/O data to achieve distributed asynchronous ordered replication, the computer program product including instructions being operable to cause a data processing apparatus to:

create a first journal for a first set of I/O data to be committed to a local storage device, the first journal comprising entries, the entries comprising a first counter value that is the same for all entries of the first journal and the order of entries in the first journal being independent of the order of the first set of I/O data committed to the local storage;

create a second journal for a second set of I/O data to be committed to the local storage device, the second journal comprising entries, the entries comprising a second counter value that is the same for all entries of the second journal and the order of entries in the second journal being independent of the order of the second set of I/O data committed to the local storage;

temporarily prevent committal, to the local storage device, of the second set of I/O data until the second journal is created; and

begin committal of the second set of I/O data to the local storage device before the first set of I/O data is finished committal.

26. A system for maintaining committal of I/O data to achieve distributed asynchronous ordered replication without using a universal timestamp for ordering journal entries, the system comprising:

a local storage device;

means for creating a first journal for a first set of I/O data to be committed to the local storage device, the first journal comprising entries, the entries comprising a first counter value that is the same for all entries of the first journal and the order of entries in the first journal being independent of the order of the first set of I/O data committed to the local storage;

means for creating a second journal for a second set of I/O data to be committed to the local storage device, the second journal comprising entries, the entries comprising a second counter value that is the same for all entries of the second journal and the order of entries in the second journal being independent of the order of the second set of I/O data committed to the local storage;

means for temporarily preventing committal, to the local storage device, of the second set of I/O data until the second journal is created; and
means for beginning committal of the second set of I/O data to the local storage device before the first set of I/O data is finished committal.