U.S. patent number 7,685,169 [Application Number 11/057,409] was granted by the patent office on 2010-03-23 for multiple concurrent active file systems.
This patent grant is currently assigned to NetApp, Inc.. Invention is credited to John Edwards, David Hitz, Blake Lewis.
United States Patent |
7,685,169 |
Hitz , et al. |
March 23, 2010 |
Multiple concurrent active file systems
Abstract
Maintenance of plural active file systems, wherein each of the
active file systems initially access data shared with another of
the active file systems, and wherein changes made to each of the
active file systems are not reflected in other active file systems.
When a second active file system is created based on a first active
file system, the first active file system and the second active
file system initially share data. When changes are made to the
first active file system, modified data is recorded in the first
active file system in a location that is not shared with the second
active file system. When changes are made to the second active file
system, modified data is recorded in the second active file system
in a location that is not shared with the first active file system.
Also, creation of the plural active file systems.
Inventors: |
Hitz; David (Los Altos, CA),
Edwards; John (Sunnyvale, CA), Lewis; Blake (Los Altos
Hills, CA) |
Assignee: |
NetApp, Inc. (Sunnyvale,
CA)
|
Family
ID: |
29710381 |
Appl.
No.: |
11/057,409 |
Filed: |
February 14, 2005 |
Prior Publication Data
|
|
|
|
Document
Identifier |
Publication Date |
|
US 20050182799 A1 |
Aug 18, 2005 |
|
Related U.S. Patent Documents
|
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
Issue Date |
|
|
10165188 |
Jun 7, 2002 |
6857001 |
|
|
|
Current U.S.
Class: |
707/999.201 |
Current CPC
Class: |
G06F
16/10 (20190101); G06F 2201/84 (20130101); Y10S
707/99938 (20130101); Y10S 707/99952 (20130101); Y10S
707/99953 (20130101); Y10S 707/99931 (20130101) |
Current International
Class: |
G06F
17/30 (20060101) |
Field of
Search: |
;707/200-206,1,2,8,10,100 ;709/203 |
References Cited
[Referenced By]
U.S. Patent Documents
Foreign Patent Documents
|
|
|
|
|
|
|
1316707 |
|
Oct 2001 |
|
CN |
|
0 359 384 |
|
Mar 1990 |
|
EP |
|
0 359 384 |
|
Jul 1991 |
|
EP |
|
0 453 193 |
|
Oct 1991 |
|
EP |
|
0 453 193 |
|
Jul 1993 |
|
EP |
|
0 359 384 |
|
Jan 1998 |
|
EP |
|
94 92 1242 |
|
Jun 1998 |
|
EP |
|
1 003 103 |
|
May 2000 |
|
EP |
|
1003103 |
|
May 2000 |
|
EP |
|
1197836 |
|
Apr 2002 |
|
EP |
|
WO 89/03086 |
|
Apr 1989 |
|
WO |
|
WO 91/13404 |
|
Sep 1991 |
|
WO |
|
WO 94/29795 |
|
Dec 1994 |
|
WO |
|
WO 94/29796 |
|
Dec 1994 |
|
WO |
|
WO 94/29807 |
|
Dec 1994 |
|
WO |
|
WO 99/45456 |
|
Sep 1999 |
|
WO |
|
WO 99/46680 |
|
Sep 1999 |
|
WO |
|
WO 99/66401 |
|
Dec 1999 |
|
WO |
|
WO9966401 |
|
Dec 1999 |
|
WO |
|
WO0007104 |
|
Feb 2000 |
|
WO |
|
WO0011553 |
|
Mar 2000 |
|
WO |
|
WO0114991 |
|
Mar 2001 |
|
WO |
|
WO0114991 |
|
Mar 2001 |
|
WO |
|
WO 01/31446 |
|
May 2001 |
|
WO |
|
WO0131446 |
|
May 2001 |
|
WO |
|
WO 01/43368 |
|
Jun 2001 |
|
WO |
|
WO0143368 |
|
Jun 2001 |
|
WO |
|
WO 02/17057 |
|
Feb 2002 |
|
WO |
|
WO0217057 |
|
Feb 2002 |
|
WO |
|
WO 02/29572 |
|
Apr 2002 |
|
WO |
|
WO 02/29573 |
|
Apr 2002 |
|
WO |
|
WO0229572 |
|
Apr 2002 |
|
WO |
|
WO0229573 |
|
Apr 2002 |
|
WO |
|
WO0229573 |
|
Apr 2002 |
|
WO |
|
WO 03/105026 |
|
Dec 2003 |
|
WO |
|
Other References
Siddha S B et al.: "A Persistent Snapshot Device Driver for Linux",
Proceedings of Annual Linux Showcase and Conference, Nov. 10, 2001,
pp. 173-182. cited by other .
Bobrowski. "Protecting your data: overview and comparison of backup
and recovery features in database servers." DBMS, Jul. 1993, pp.
55-59, vol. 6, No. 8. cited by other .
IBM. "Migrated Data Backup Utility." IBM Technical Disclosure
Bulletin, Jun. 1994, pp. 505-507, vol. 37, No. 6B. cited by other
.
Srinivasan. "Recoverable File System for Microprocessor Systems."
Microprocessors and Microsystems, May 1985, pp. 179-183, vol. 9,
No. 4, Guildford, Surrey, Great Britain. cited by other .
David Hitz et al. TR3002 "File System Design for a NFS File Server
Appliance", published by Network Appliance, Inc. on Jan. 19, 1994,
23 pages. cited by other .
Tatu Ylonen et al. "Concurrent Shadow Paging: Snapshots, Read-Only
Transactions, and On-The-Fly Multilevel Incremental Dumping",
published by Helsinki University of Technology, 22 pages. cited by
other .
Veritas File System 3.4 Administrator's Guide, published by
Veritas, Nov. 2000, 227 pages. cited by other .
Suresh B. Siddha et al. "A Persistent Snapshot Device for Linux",
published by the Usenix Association, Nov. 2001, 11 pages. cited by
other .
Sin StorEdge Instant Image 2.0 System Administrator's Guide,
published by Sun Microsystems, Feb. 2000, 106 pages. cited by other
.
Suresh B. Siddha. "Persistent Snapshots", published by Indian
Institute of Science, Jan. 2000, 30 pages. cited by other .
Christian Czezatke et al. "LinLogFS: A Log-Structured Filesystem
for Linux", published by Usenix Association, Jun. 2000, 13 pages.
cited by other .
"The Enterprise Challenge Served by Snapshot", White Paper,
published by LSI Logic Corporation, 2001, 8 pages. cited by other
.
Nabil Osorio et al. "Guidelines for Using Snapshot Storage Systems
for Oracle Databases", published by Oracle Corporation, Oct. 2001,
13 pages. cited by other .
Raymond A. Lorie, "Physical Integrity in a Large Segmented
Database", published by ACM Transactions on Database Systems, vol.
2, No. 1, Mar. 1977, 14 pages. cited by other .
Norman C. Hutchinson et al. "Logical vs. Physical File System
Backup", published by Usenix Association, Feb. 1999, 12 pages.
cited by other .
Hugo Patterson et al. "SnapMirror: File System Based Asynchronous
Mirroring for Disaster Recovery", published by Usenix Association,
Jan. 2002, 14 pages. cited by other .
Peter Smith et al. "Heterogeneous Process Migration: The Tui
System", published by University of British Columbia, Mar. 14,
1997, 42 pages. cited by other .
Douglas S. Santry et al. "Deciding When to Forget in the Elephant
File System", published by University of British Columbia, Dec.
1999, 14 pages. cited by other .
"Usage Guide for Sun StorEdge Instant Image Software with Oracle
8", published by Sun Microsystems, Feb. 2001, 64 pages. cited by
other .
Walter F. Tichy, "RCS--A System for Version Control", published by
Purdue University, Jul. 1985, 18 pages. cited by other .
"Veritas Database Edition for Oracle: Guidelines for Using Storage
Checkpoint and Storage Rollback with Oracle Databases", published
by Veritas White Paper, Aug. 2001, 19 pages. cited by other .
"Veritas File System 3.4 for Solaris 9, Release Notes", published
by Veritas, May 2002, 24 pages. cited by other .
"Veritas Volume Manager 3.1.1: Administrator's Guide", published by
Veritas, Feb. 2001, 295 pages. cited by other .
"Veritas File System Administrator's Guide Solaris 5.0", published
by Symantec Corporation, 2006, 294 pages. cited by other .
"Veritas Database Edition for Sybase: Implementing VERIYAS
FlashSnap in the Sybase ASE 12.0 Environment", published by Veritas
White Paper, 11 pages. cited by other .
"Veritas Volume Manager 3.1 Administrator's Guide for HP-UX 11i and
HP-UX 11i Version 1.5", published by Hewlett Packard, Jun. 2001,
432 pages. cited by other .
Tatu Ylonen et al. "Concurrent Shadow Paging: Fine Granularity
Locking with Support for Extended Lock Modes and Early Releasing of
Locks", published by Helsinki University of Technology, 28 pages.
cited by other .
"Sun Microsystem's Preliminary Invalidity Contentions and
Accompanying Document Production for U.S. Patent 6,857,001", filed
in the U.S. District Court, Northern CA District, San Francisco,
189 pages. cited by other .
Bobrowski, Steven. "Protecting Your Data: Overview and Comparison
of Backup and Recovery Features in Database Servers". Jul. 1993.
cited by other .
"Migrated Data Backup Utility", Jun. 1994, IBM Technical Disclosure
Bulletin, pp. 505-508. cited by other .
B. Srinivasan et al. "Recoverable File System for Microprocessor
Systems". May 1985, pp. 179-183. XP 002031805. cited by other .
Leffler, et al. The Design and Implementation of 4.3BSD UNIX
Operating System, Addison-Wesley Publishing Company, Copyright
1989, p. vii, 203-205. cited by other .
Network Appliance, Inc.'s Objections and Responses to Sun
Microsystem, Inc.'s First Set of Document Requests, Network
Appliance, Inc., v. Sun Microsystems, Inc., Case No.
3:07-CV-06053-EDL, Jan. 22, 2008, 133 pages. cited by other .
Network Appliance, Inc.'s Objections and Responses to Sun
Microsystem, Inc.'s First Set of Interrogatories, Network
Appliance, Inc., v. Sun Microsystems, Inc., Case No.
3:07-CV-06053-EDL, Jan. 22, 2008, 21 pages. cited by other .
Network Appliance, Inc.'s Objections and Responses to Sun
Microsystem, Inc.'s Second Set of Document Requests, Network
Appliance, Inc., v. Sun Microsystems, Inc., Case No.
3:07-CV-06053-EDL, Mar. 20, 2008, 44 pages. cited by other .
NetApp's Objections and Responses to Sun Microsystem, Inc.'s Third
Set of Document Requests, Network Appliance, Inc., v. Sun
Microsystems, Inc., Case No. 3:07-CV-06053-EDL, May 5, 2008, 51
pages. cited by other .
NetApp's Objections and Responses to Sun Microsystem, Inc.'s Second
Set of Interrogatories, Network Appliance, Inc., v. Sun
Microsystems, Inc., Case No. 3:07-CV-06053-EDL, May 5, 2008, 7
pages. cited by other .
Network Appliance, Inc., International Application No.
PCT/US03/17497, International Filing Date: Jun. 3, 2003, PCT
Notification of Transmittal of the International Preliminary
Examination Report, Date of Mailing: Feb. 4, 2004, 4 pages. cited
by other .
Agrawal, Rakesh and Dewitt, David J., "Integrated Concurrency
Control and Recovery Mechanisms: Design and Performance
Evaluation," ACM Transactions on Database Systems, vol. 10, No. 4,
Dec. 1985, 36 pages. cited by other .
Bach, Maurice J., "The Design of the Unix Operating System,"
Chapter 4: Internal Representation of Files, Prentice Hall, 1990,
31 pages. cited by other .
Bach, Maurice J., "The Design of the Unix Operating System,"
Chapter 5: System Calls for the File System, Prentice Hall, 1990,
pp. 91-145. cited by other .
Baker, Mary, et al., "Non-Volatile Memory for Fast, Reliable File
Systems," ACM, 1992, 13 pages. cited by other .
Borg, Anita, et al., "Fault Tolerance Under Unix," ACM Transactions
on Computer Systems, vol. 7, No. 1, Feb. 1989, 24 pages. cited by
other .
Dion, "The Cambridge File Server," ACM SIGOPS, Operating Systems
Review, vol. 14, No. 4, 1980, pp. 26-35. cited by other .
Fridrich, et al., "The Felix File Server," ACM
0-89791-062-1-12/81-0037, 1981, pp. 37-44. cited by other .
Gait, Jason, "The Optical File Cabinet: A Random-Access File System
for Write-Once Optical Disks", IEEE Computer, Jun. 1988, pp. 11-22.
cited by other .
Gait, J., "A Checkpointing Page Store for Write-Once Optical Disk,
" IEEE Transactions on Computers, vol. 39, No. 1, Jan. 1990, pp.
2-9. cited by other .
Gait, J., "Phoenix: A Safe In-Memory File System," Communications
of the ACM, vol. 33, No. 1, Jan. 1990, pp. 81-86. cited by other
.
Gray, Jim, et al., "The Recovery Manager of the System R Database
Manager," ACM Computing Surveys, vol. 13, No. 2, Jun. 1981, 20
pages. cited by other .
Hagmann, Robert, "Reimplementing the Cedar File System Using
Logging and Group Commit," ACM, 1987, 8 pages. cited by other .
Hecht, Matthew S. and Gabbe, John D., "Shadowed Management of Free
Disk Pages with a Linked List," ACM Transactions on Database
Systems, vol. 8, No. 4, Dec. 1983, Dec. 1983, 12 pages. cited by
other .
Kent, Jack Marshall, "Performance and Implementation Issues in
Database Crash Recovery," Princeton University Dissertation, Oct.
1985, 210 pages. cited by other .
Lampson, Butler W. and Sturgis, Howard E., "Crash Recovery in a
Distributed Data Storage System," Jun. 1979, 28 pages. cited by
other .
Landau, Charles R., "The Checkpoint Mechanism in KeyKOS," IEEE,
1992, 6 pages. cited by other .
Murphy, Daniel L., "Storage Organization and Management in Tenex,"
Fall Joint Computer Conference, 1972, 12 pages. cited by other
.
Ousterhout, John, "Beating the I/O Bottleneck: A Case for
Log-Structured File System," Oct. 1988, 19 pages. cited by other
.
Popek, Gerald J. and Walker, Bruce J. "The Locus Distributed System
Architecture," 1985, Cataloged May 1986, The MIT Press, Cambridge,
MA. cited by other .
Popek, Gerald J. and Walker, Bruce J., "The Locus Distributed
System Architecture," Chapter 3, 1985, Cataloged May 1986, The MIT
Press, Cambridge, MA, 48 pages. cited by other .
Quinlan, Sean, "A Cached WORM File System," Software-Practice and
Experience, vol. 21, No. 12, Dec. 1991, 11 pages. cited by other
.
Rosenblum, Mendel and Ousterhout, John K., "The LFS Storage
Manager," USENIX Technical Conference, Anaheim, CA, Jun. 1990, 16
pages (SUN00006851 - SUN00006866). cited by other .
Rosenblum, Mendel and Ousterhout, John K., "The Design and
Implementation of a Log-Structured File System," Jul. 1991, 15
pages (SUN00006867 - SUN00006881). cited by other .
Rosenblum, Mendel and Ousterhout, John K., "The Design and
Implementation of a Log-Structured File System," Jul. 1991, 15
pages (SUN00007382 - SUN00007396). cited by other .
Rosenblum, Mendel and Ousterhout, John K., "The LFS Storage
Manager," Usenix Technical Conference, Anaheim, CA, Jun. 1990, 16
pages (Sun 00007397 - SUN00007412). cited by other .
Rosenblum, Mendel, "The Design and Implementation of a
Log-Structured File System," UC Berkeley, 1992, 100 pages. cited by
other .
Salem, Kenneth and Garcia-Molina, Hector, "Checkpointing
Memory--Resident Database," IEEE 1989, 11 pages. cited by other
.
Schilling, Jorg, "Design and Implementation of a Fast File System
for UNIX with Special Consideration of Technical Parameters of
Optical Storage Media and Multimedia Applications," Technical
University of Berlin Thesis, May 1991, 119 pages. cited by other
.
Schilling, Jorg, "Entwurf und Implementierung eines Schnellen
Filesystems fur UNIX Unter Besonderer Berucksichtioung der
Technischen Parameter Optischer Speichermedien und Multimedialer
Anwendungen," Matrikel-Nr. 45181. 118 pages. cited by other .
Seltzer, Margo and Stonebraker, Michael, "Transaction Support in
Read Optimized and Write Optimized File Systems," Proceedings of
the 16th VLDB Conference, 1990, 12 pages. cited by other .
Seltzer, Margo Ilene, "File System Performance and Transaction
Support, "University of California at Berkeley Dissertation, 1992,
131 pages. cited by other .
Seltzer, Margo, et al., "An Implementation of a Log-Structured File
System for Unix," 1993 Winter USENIX, Jan. 1993, San Diego, CA, 18
pages cited by other .
Sidebotham, "Volumes: The Andrew File System Data structuring
Primitive," EUUG Conference Proceedings, Manchester, UK, 1986, pp.
1-8. cited by other .
Singhal, Vivek, et al., "Texas: An Efficient, Portable Persistent
Store," Proceedings of the Fifth International Workshop on
Persistent Object Systems, San Miniato, Pisa, Italy, Sep. 1992, 25
pages. cited by other .
Svobodova, "File Servers for Network-Based Distributed Systems,"
ACM Computing Surveys, vol. 16, No. 4, 1984, pp. 353-398. cited by
other .
Walker, Bruce, et al., "The LOCUS Distributed Operating System,"
ACM, 1983, 22 pages. cited by other .
Network Appliance, Inc. v. Sun Microsystems, Inc., "Network
Appliance's Patent Local Rule 3-1 Disclosure of Asserted Claims and
Preliminary Infringement Contentions for U.S. Patent No.
5,819,292," filed Jan. 22, 2008 in the United States District Court
Northern District of California San Francisco Division, Case No.
3:07-CV-06053-EDL, 6 pages. cited by other .
Network Appliance, Inc. v. Sun Microsystems, Inc., "Network
Appliance's Patent Local Rule 3-1 Disclosure of Asserted Claims and
Preliminary Infringement Contentions for U.S. Patent No.
6,892,211," filed Jan. 22, 2008 in the United States District Court
Northern District of California San Francisco Division, Case No.
3:07-CV-06053-Edl, 8 pages. cited by other .
Network Appliance, Inc. v. Sun Microsystems, Inc.,
"Defendant-Counterclaim Plaintiff Sun Microsystems, Inc.'s
Preliminary Invalidity Contentions and Accompanying Document
Production for U.S. Patent No. 6,892,211 [Patent L.R. 3-3 and
3-4]," filed Mar. 6, 2008 in the United States District Court
Northern District of California San Francisco Division, Case No.
3:07-CV-06053-EDL, 173 pages. cited by other .
Network Appliance, Inc. v. Sun Microsystems, Inc.,
"Defendant-Counterclaim Plaintiff Sun Microsystems, Inc.'s
Preliminary Invalidity Contentions and Accompanying Document
Production for U.S. Patent No. 5,819,292 [Patent L.R. 3-3 and
3-4]," filed Mar. 6, 2008 in the United States District Court
Northern District of California San Francisco Division, Case No.
3:07-CV-06053-EDL, 40 pages. cited by other .
Network Appliance, Inc. v. Sun Microsystems, Inc., "Order Granting
in Part and Denying in Part Sun's Motion for Partial Stay of the
Case Pending Reexamination; Overruling Evidentiary Objections;
Denying in Part and Granting in Part Motions to Seal", dated May
23, 2008 in United States District Court for the Northern District
of California, San Francisco Division. Case No. CV-07-06053-EDL, 9
pages. cited by other .
Network Appliance, Inc. v. Sun Microsystems, Inc., "Sun
Microsystems, Inc.'s Local Rule 3-6 Invalidity Contentions for U.S.
Patent No. 6,892,211", dated Nov. 10, 2008 in United States
District Court for the Northern District of California, San
Francisco Division. Case No. 3:07-CV-06053-EDL, 108 pages including
Exhibits. cited by other .
Network Appliance, Inc. v. Sun Microsystems, Inc., "Sun
Microsystems, Inc.'s Local Rule 3-6 Invalidity Contentions for U.S.
Patent No. 5,819,292", dated Nov. 19, 2008 in United States
District Court for the Northern District of California, San
Francisco Division. Case No. 3:07-CV-06053-EDL, 72 pages including
Exhibits. cited by other .
Network Appliance, Inc. v. Sun Microsystems, Inc., "Defendant Sun
Microsystems, Inc.'s Amended Answer and Counterclaim to Plaintiff
Network Appliance, Inc.'s Complaint for Patent Infringement", dated
Mar. 24, 2009 in United States District Court for the Northern
District of California, San Francisco Division. Case No.
3:07-CV-06053-EDL, 58 pages. cited by other .
"NetApp, Inc.'s Amended Reply to Sun's Amended Answer and
Counterclaims", filed Apr. 2, 2009 in United States District Court
for the Northern District of California, San Francisco Division,
Case No. 3:07-CV- 06053-EDL, 40 pages. cited by other .
"Transmittal of Communication to Third Party Requester Inter Partes
Reexamination" and "Order Granting Reexamination Request", issued
by the United States Patent and Trademark Office, Reexamination
Control No. 95/000,324 of Patent No. 6,857,001, mailed Apr. 4,
2008, 52 pages. cited by other .
"Amendment", United States Patent and Trademark Office,
Reexamination Control No. 95/000,324 of Patent No. 6,857,001, filed
Jun. 4, 2008, 43 pages. cited by other .
"Third Party Requester's Comments to Patent Owner's Response to
Office Action mailed on Apr. 4, 2008 in Inter-Partes Re-Examination
of U.S. Patent No. 6,857,001", United States Patent and Trademark
Office, Reexamination Control No. 95/000,324 of Patent No.
6,857,001, filed Jul. 7, 2008, 115 pages. cited by other .
"Amendment to Correct Non-Compliant Amendment", United States
Patent and Trademark Office, Reexamination Control No. 95/000,324
of Patent No. 6,857,001, filed Apr. 10, 2009, 44 pages. cited by
other .
"Third Party Requester's Comments to Patent Owner's Response to
Office Action mailed on Apr. 4, 2008 in Inter-Partes Re-Examination
of U.S. Patent No. 6,857,001", United States Patent and Trademark
Office, Reexamination Control No. 95/000,324 of Patent No.
6,857,001, filed Apr. 27, 2009, 116 pages. cited by other .
"Action Closing Prosecution", issued by United States Patent and
Trademark Office, Reexamination Control No. 95/000,324 of Patent
No. 6,857,001, mailed Jun. 19, 2009, 42 pages. cited by other .
"Amendment in Response to Action Closing Prosecution (37 C.F.R.
.sctn.1.949)", United States Patent and Trademark Office,
Reexamination Control No. 95/000,324 of Patent No. 6,857,001, filed
Jul. 20, 2009, 55 pages. cited by other .
"NetApp, Inc.'s Second Amended Reply to Sun's Amended Answer and
Counterclaims", filed Sep. 9, 2009 in United States District Court,
Northern District of California, San Francisco Division, Case No.
3:07-CV-06053-EDL, 40 pages. cited by other .
"Third Party Requester's Comments to Patent Owner's Response to
ACP, dated Jun. 19, 2009 in Inter-Partes Re-Examination of U.S.
Patent No. 6,857,001", United States Patent and Trademark Office,
Reexamination Control No. 95/000,324 of Patent No. 6,857,001, filed
Aug. 18, 2009, 22 pages. cited by other .
"Complaint for Patent Infringement and Demand for Jury Trial",
filed Sep. 5, 2007 in United States District Court for the Eastern
District of Texas, Lufkin Division. Civil Action No. 9:07CV206, 18
pages. cited by other .
"Defendant Sun Microsystems, Inc.'s Answer and Counterclaim to
Plaintiff Network Appliance, Inc.'s Complaint for Patent
Infringement", filed Oct. 25, 2007 in United Stales District Court
for the Eastern District of Texas, Lufkin Division. Civil Action
No. 9:07CV206, 64 pages. cited by other .
"Network Appliance's Reply to Sun's Answer and Counterclaims",
filed Dec. 7, 2007 in United States District Court for the Northern
District of California, San Francisco Division. Case No.
3:07-CV:06053-EDL, 39 pages. cited by other .
European Search Report, published by the European Patent Office,
mailed Apr. 16, 2007, 4 pages. cited by other .
PCT International Search Report, published by the PCT Office for
International Application No. PCT/US03-17497, mailed Sep. 8, 2003,
3 pages. cited by other .
"Plaintiff NetApp, Inc.'s Response to Sun's Opening Claim
Construction Brier", filed Jul. 21, 2008 in United States District
Court, Northern District of California, San Francisco Division,
Case No. 3:07-CV-06053-EDL, 47 pages. cited by other .
"Sun Microsystems, Inc.'s Opening Claim Construction Brier", filed
Jul. 7, 2008 in Uhited States District Court, Northern District of
California, San Francisco Division, Case No. 3:07-CV-06053-EDL, 43
pages. cited by other .
"Plaintiff NetApp, Inc's Opening Claim Construction Brief", filed
Jul. 7, 2008 in United States District Court, Northern District of
California, San Francisco Division, Case No. 3:07-CV-06053-EDL, 41
pages. cited by other .
"Sun Microsystems, Inc.'s Responsive Claim Construction Brier",
filed Jul. 21, 2008 in United States District Court, Northern
District of California, San Francisco Division, Case No.
3:07-CV-06053-EDL, 49 pages. cited by other .
"NetApp, Inc.'s Reply to Sun Microsystems, Inc.'s Responsive Claim
Construction Brier", filed Aug. 1, 2008 in United States District
Court, Northern District of California, San Francisco Division,
Case No. 3:07-CV-06053-EDL, 29 pages. cited by other .
"Sun Microsystems, Inc.'s Reply Claim Construction Brier", filed
Aug. 1, 2008 in United States District Court, Northern District of
California, San Francisco Division, Case No. 3:07-CV-06053-EDL, 41
pages. cited by other .
"Order Construing Claims", filed Sep. 10, 2008 in United States
District Court, Northern District of California, San Francisco
Division, Case No. 3:07-CV-06053-EDL, 60 pages. cited by other
.
"Further Order Construing Claims", filed Sep. 29, 2008 in United
States District Court, Northern District of California, San
Francisco Division, Case No. 3:07-CV-06053-EDL, 2 pages. cited by
other .
Joint Report RE: Claim Construction of "Incore Root Inode", filed
Nov. 5, 2008 in United States District Court, Northern District of
California, San Francisco Division, Case No. 3:07-CV-06053-EDL, 2
pages. cited by other.
|
Primary Examiner: Lewis; Cheryl
Attorney, Agent or Firm: Cesari and McKenna, LLP
Parent Case Text
CROSS-REFERENCE TO RELATED APPLICATION
This application is a continuation and claims the benefit of U.S.
application Ser. No. 10/165,188, filed on Jun. 7, 2002, now U.S.
Pat. No. 6,857,001, which is hereby incorporated by reference in
its entirety.
Claims
What is claimed is:
1. A method of operating a plurality of active file systems, the
method comprising the steps of: making one or more snapshots of a
first active file system of the plurality of active file systems,
each of the one or more snapshots initially sharing data with the
first active file system; converting each of the one or more
snapshots to an active file system by making said each of the one
or more snapshots writable to obtain one or more second active file
systems of the plurality of active file systems; and operating a
plurality of file system processors as file servers, each processor
of the plurality of processors being associated with a different
active file system of the plurality of active file systems; wherein
said each processor is capable of receiving file server requests
directed to the active file system associated with said each
processor and making file server responses to the received
requests; and changes made by said each processor to the active
file system associated with said each processor in response to the
received requests are recorded in the active file system associated
with said each processor in a location that is not shared with
other active file systems of the plurality of active file systems,
so that the changes are not reflected in the active file systems of
the plurality of active file systems other than the file system
associated with said each processor.
2. A method according to claim 1, further comprising: severing a
snapshot pointer between two active file systems of the plurality
of active file systems.
3. A method according to claim 1, further comprising: making a
snapshot of an active file system of the one or more second active
file systems.
4. A method according to claim 3, further comprising: converting
the snapshot of the active file system of the one or more second
active file systems to an active file system by making the snapshot
of the active file system of the one or more second active file
systems writable, to obtain a third active file system of the
plurality of active file systems.
5. A method according to claim 4, wherein the step of operating
comprises operating a file system processor as file server of the
third active file system.
6. A storage system, comprising: at least one storage device; an
interface to at least one computing device or network for receiving
and sending information; and a plurality of file system processors
configured to make one or more snapshots of a first active file
system in the storage system, each of the one or more snapshots
initially sharing data with the first active file system; convert
each of the one or more snapshots to an active file system in the
storage system by making said each of the one or more snapshots
writable to obtain one or more second active file systems; wherein
each processor of the plurality of processors is associated with a
different active file system of the first and second active file
systems; said each processor is capable of receiving file server
requests directed to the active file system associated with said
each processor and making file server responses to the received
requests; and changes made by said each processor to the active
file system associated with said each processor in response to the
received requests are recorded in the active file system associated
with said each processor in a location that is not shared with
other active file systems of the first and second active file
systems, so that the changes are not reflected in the active file
systems of the first and second active file systems other than the
file system associated with said each processor.
7. A storage system according to claim 6, wherein: at least one
processor of the plurality of processors is configured to sever a
snapshot pointer between the first active file system and one of
the one or more second active file systems.
8. A storage system according to claim 6, wherein: at least one
processor of the plurality of processors is configured to make a
snapshot of an active file system of the one or more second active
file systems.
9. A storage system according to claim 8, wherein: at least one
processor of the plurality of processors is configured to convert
the snapshot of the active file system of the one or more second
active file systems to an active file system by making the snapshot
of the active file system of the one or more second active file
systems writable, to obtain a third active file system of the
plurality of active file systems.
10. A storage system according to claim 9, wherein a third file
system processor configured to receive file server requests
directed to the third active file system and make file server
responses to the received requests directed to the third active
file system.
11. An article of manufacture comprising one or more memories
storing instructions, the instructions executable by a plurality of
processors, the instructions comprising program code that
configures the processors to perform steps comprising: making one
or more snapshots of a first active file system of a plurality of
active file systems, each of the one or more snapshots initially
sharing data with the first active file system; converting each of
the one or more snapshots to an active file system by making said
each of the one or more snapshots writable to obtain one or more
second active file systems of the plurality of active file systems;
and operating at least some processors of the plurality of
processors as file servers, each processor of the at least some
processors being associated with a different active file system of
the plurality of active file systems; wherein said each processor
is capable of receiving file server requests directed to the active
file system associated with said each processor and making file
server responses to the received requests; and changes made by said
each processor to the active file system associated with said each
processor in response to the received requests are recorded in the
active file system associated with said each processor in a
location that is not shared with other active file systems of the
plurality of active file systems, so that the changes are not
reflected in the active file systems of the plurality of active
file systems other than the file system associated with said each
processor.
12. An article of manufacture according to claim 11, wherein: the
program code further configures the processors to sever a snapshot
pointer between the first active file system and an active file
system of the one or more second active file systems.
13. An article of manufacture according to claim 11, wherein: the
program code further configures the processors to make a snapshot
of an active file system of the one or more second active file
systems.
14. An article of manufacture according to claim 13, wherein: the
program code further configures the processors to convert the
snapshot of the active file system of the one or more second active
file systems to an active file system by making the snapshot of the
active file system of the one or more second active file systems
writable, to obtain a third active file system of the plurality of
active file systems.
15. An article of manufacture according to claim 14, wherein: the
program code further configures a processor of the plurality of
processors to operate as a file server of the third active file
system.
16. A method of operating data storage implementing a Write
Anywhere File system Layout (WAFL), the method comprising: making a
snapshot of organizational data of a first active file system at a
consistency point of the first active file system, the snapshot
pointing to original non-organizational data of the first active
file system; compressing the snapshot to obtain a compressed
snapshot; storing the compressed snapshot; modifying the original
non-organizational data of the first active file system in response
to first active file system access requests to obtain modified
non-organizational data of the first active file system; and
storing the modified non-organizational data of the first active
file system so as not to overwrite the original non-organizational
data of the first file system; wherein, after the step of storing
the modified non-organizational data, the snapshot points to the
original non-organizational data, and the organizational data of
the first active file system point to the modified
non-organizational data of the first file system and to the
non-organizational data of the first file system that has not been
modified.
17. A method according to claim 16, wherein the step of compressing
comprises using a hash code.
18. A storage system, comprising: at least one storage device; an
interface to at least one computing device or network for receiving
and sending information; and a controller that controls storage and
retrieval of the information on the at least one storage device,
the controller operating under program control to implement a Write
Anywhere File system Layout (WAFL) on the at least one storage
device, the controller being coupled to the interface; wherein the
controller is configured to perform steps comprising: making a
snapshot of organizational data of a first active file system at a
consistency point of the first active file system, the snapshot
pointing to original non-organizational data of the first active
file system, compressing the snapshot to obtain a compressed
snapshot, storing the compressed snapshot, modifying the original
non-organizational data of the first active file system in response
to first active file system access requests to obtain modified
non-organizational data of the first active file system, and
storing the modified non-organizational data of the first active
file system so as not to overwrite the original non-organizational
data of the first file system; and after the step of storing the
modified non-organizational data, the snapshot points to the
original non-organizational data, and the organizational data of
the first active file system point to the modified
non-organizational data of the first file system and to the
non-organizational data of the first file system that has not been
modified.
19. A storage system according to claim 18, wherein: the controller
is further configured to use a hash code in performing the step of
compressing.
20. An article of manufacture comprising one or more memories
storing instructions, the instructions executable by a controller
to implement a Write Anywhere File system Layout (WAFL) on at least
one storage device, the instructions comprising program code that
configures the controller to perform steps comprising: making a
snapshot of organizational data of a first active file system at a
consistency point of the first active file system, the snapshot
pointing to original non-organizational data of the first active
file system; compressing the snapshot to obtain a compressed
snapshot; storing the compressed snapshot; modifying the original
non-organizational data of the first active file system in response
to first active file system access requests to obtain modified
non-organizational data of the first active file system; and
storing the modified non-organizational data of the first active
file system so as not to overwrite the original non-organizational
data of the first file system; wherein after the step of storing
the modified non-organizational data, the snapshot points to the
original non-organizational data, and the organizational data of
the first active file system point to the modified
non-organizational data of the first file system and to the
non-organizational data of the first file system that has not been
modified.
21. An article of manufacture according to claim 20, wherein the
program code configures the controller to use a hash code in the
course of performing the step of compressing.
Description
BACKGROUND OF THE INVENTION
1. Field of the Invention
This invention relates to multiple concurrent writeable file
systems.
2. Description of the Related Art
A file system provides a structure for storing information, for
example application programs, file system information, other data,
etc. (hereinafter collectively referred to as simply data) on
storage devices such as disk drives, CD-ROM drives, etc. One
problem with many file systems is that if the file system is
damaged somehow, a large quantity of data can be lost.
In order to prevent such loss of data, backups are often created of
a file system. One very efficient method for creaking a backup of a
file system is to create a snapshot of the file system. A snapshot
is an image of the file system at a consistency point, a point at
which the file system is self-consistent. A file system is
self-consistent if the data stored therein constitutes a valid file
system image.
In some file systems, for example Write Anywhere File system Layout
(WAFL) file systems, a snapshot of a file system can be created by
copying information regarding the organization of data in the file
system. Then, as long as the data itself is preserved on the
storage device, the data can be accessed through the snapshot. A
mechanism is provided in these file systems for preserving this
data, for example through a block map.
Conventionally, snapshots are read-only. A read-only snapshot can
be used to recall previous versions of data and to repair damage to
a file system. These capabilities can be extremely useful. However,
these types of snapshots do not provide certain other capabilities
that might be useful.
SUMMARY OF THE INVENTION
It would be advantageous if snapshots could be written to as well,
so that a user desiring to modify a snapshot could do so. This
would have several advantages: It would become possible to correct
an erroneous entry that had been memorialized in a snapshot. It
would become possible to delete material that was desired to be
purged from the file system. It would become possible to make
changes to an "experimental" version of the file system (or on data
maintained by the file system). An "experimental" version of the
file system would be a version of the file system for which
catastrophic errors would not cause loss of data in a "real" active
version of the file system. It would become possible to reverse
erroneous upgrades to operation of the file system, or to operation
of some programs or databases operating under the aegis of that
file system.
A writable snapshot is actually another active file system. Because
this active file system is based on data from another active file
system, experimental modifications and changes for the active file
system can be made to the writable snapshot without risking harm to
the original active file system. In addition, because a snapshot
can be created by simply copying organizational information and
preserving existing data, writable snapshots (i.e., new active file
systems) can be created easily and with utilization of few system
resources.
These advantages and others are provided in an embodiment of the
invention, described herein, in which plural active file systems
are maintained, wherein each of the active file systems initially
access data shared with another of the active file systems, and
wherein changes made to each of the active file systems are not
reflected in other active file systems.
In the preferred embodiment, when a second active file system is
created based on a first active file system, the first active file
system and the second active file system initially share data. When
changes are made to the first active file system, modified data is
recorded in the first active file system in a location that is not
shared with the second active file system. When changes are made to
the second active file system, modified data is recorded in the
second active file system in a location that is not shared with the
first active file system.
Further snapshots preferably are made of ones of the plural active
file systems, each snapshot forming an image of its respective
active file system at a past consistency point. Each snapshot
includes a complete hierarchy for file system data, separate and
apart from active file system data for the plural active file
systems. One of these snapshots in turn can be converted into a new
active file system by making the snapshot writable and by severing
snapshot pointers from any of the active file systems to the new
active file system.
The invention also encompasses memories that include instructions
for performing the foregoing operations and storage systems that
implement those operations.
This brief summary has been provided so that the nature of the
invention may be understood quickly. A more complete understanding
of the invention may be obtained by reference to the following
description of the preferred embodiments thereof in connection with
the attached drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 illustrates creation of a snapshot that can be converted
into an active file system according to the invention.
FIG. 2 illustrates divergence of an active file system from a
snapshot of that file system.
FIG. 3 illustrates the relationship between the active file system
and the snapshot in FIG. 2.
FIG. 4 illustrates a chain of snapshots that can be converted into
active file systems according to the invention.
FIG. 5 illustrates the relationship between the active file system
and the snapshots in FIG. 4.
FIG. 6 illustrates a snapshot that has been converted into an
active file system according to the invention.
FIG. 7 illustrates the relationship between the active file system,
new active file system, and snapshot in FIG. 6.
FIG. 8 illustrates a more complex chain of snapshots that can be
converted into active file systems according to the invention.
FIG. 9 illustrates the chain shown in FIG. 8 with one of the
snapshots converted into an active file system according to the
invention.
FIG. 10 illustrates some more possible relationships between plural
active file systems and their associated snapshots according to the
invention.
FIG. 11 shows a block diagram of a storage system including plural
active file systems according to the invention.
FIG. 12 shows a block diagram of a file system cluster including
multiple concurrent active file systems being used by multiple
concurrent file servers according to the invention.
DESCRIPTION OF THE PREFERRED EMBODIMENT
Related Applications
Inventions described herein can be used in conjunction with
inventions described in the following documents: U.S. patent
application Ser. No. 09/642,061 U.S. Pat. No. 7,072,916, filed Aug.
18, 2000, in the name of inventors Lewis, Edwards and Viswanathan,
titled "Instant Snapshot." U.S. patent application Ser. No.
09/932,578, filed Aug. 17, 2001, in the name of inventors Lewis,
Edwards and Viswanathan, titled "Instant Snapshot." U.S. patent
application Ser. No. 08/071,643, filed Jun. 3, 1993, in the name of
inventors Hitz, Malcolm, Lau and Rakitzis, titled "Write Anywhere
File-System Layout," now abandoned. U.S. patent application Ser.
No. 08/454,921, filed May 31, 1995, in the name of inventors Hitz,
Malcolm, Lau and Rakitzis, titled "Write Anywhere File-System
Layout," now U.S. Pat. No. 5,819,292. U.S. patent application Ser.
No. 09/108,022, filed Jun. 30, 1998, in the name of inventors Hitz,
Malcolm, Lau and Rakitzis, titled "Write Anywhere File-System
Layout," now U.S. Pat. No. 5,963,962. U.S. patent application Ser.
No. 09/153,094, filed Sep. 14, 1998, in the name of inventors Hitz,
Malcolm, Lau and Rakitzis, titled "Write Anywhere File-System
Layout," now U.S. Pat. No. 6,289,356 B1. U.S. patent application
Ser. No. 09/954,522, filed Sep. 11, 2001, in the name of inventors
Hitz, Malcolm, Lau and Rakitzis, titled "Write Anywhere File-System
Layout," now U.S. Pat. No. 6,721,764, titled "Copy on Write File
System Consistency and Block Usage." U.S. patent application Ser.
No. 09/642,065, filed Aug. 18, 2000, in the name of inventors
Doucette, Lewis and Edwards, titled "Improved Space Allocation in a
Write Anywhere File System," now U.S. Pat. No. 6,636,879, titled
"Space Allocation in a Write Anywhere File System."
These documents are hereby incorporated by reference as if fully
set forth herein. These documents are referred to as the
"incorporated disclosures".
Lexicography
The following terms refer or relate to aspects of the invention as
described below. The descriptions of general meanings of these
terms are not intended to be limiting, only illustrative. data--In
general, any information. With regard to a storage device or file
system, any information stored in the storage device or file
system, including but not limited to application programs and data,
multimedia data, organizational data for the storage device or file
system, etc. organizational data--In general, data that specifies
the layout of other data in a file system. In a Write Anywhere File
system Layout (WAFL) design, the organizational data includes a
root inode that points either directly or indirectly (i.e., through
other inodes) to blocks of data for all files in the file system.
In a WAFL design, all data including the organizational data (and
thus root inode and other inodes) are stored in blocks. inode--In
general, an information node. In a WAFL design, an information node
that contains data about other blocks in the file system.
self-consistent (in the context of a file system)--In general, a
file system is self-consistent when the data stored in the file
system, including data about the organization of the file system,
constitutes a valid file system image. consistency point--In
general, a consistency point refers either to (a) a time when a
file system is self-consistent; or to (b) a set of data in a file
system at a time of a consistency point. snapshot--In general, a
snapshot is a written record of the data maintained by the file
system at a time of a consistency point. Although in a preferred
embodiment, each snapshot is both (a) maintained in a format
similar to the active file system and (b) is referenceable using
the file system namespace, there is no particular limitation of the
invention to require either of those conditions. active file
system--In general, an active file system is a set of data that can
be accessed and modified. file system hierarchy--In general, a file
system hierarchy refers to either (a) an organization of data into
a namespace, or (b) a set of data blocks and their interconnections
used to record and access information, whether data or metadata,
being maintained on a storage device.
As noted above, these descriptions of general meanings of these
terms are not intended to be limiting, only illustrative. Other and
further applications of the invention, including extensions of
these terms and concepts, would be clear to those of ordinary skill
in the art after perusing this application. These other and further
applications are part of the scope and spirit of the invention, and
would be clear to those of ordinary skill in the art, without
further invention or undue experimentation.
Snapshots and Active File Systems
FIG. 1 illustrates creation of a snapshot that can be converted
into an active file system according to the invention.
File system 100 in FIG. 1 resides on one or more storage devices,
for example hard disk drives, CD-ROMs, or other devices. In a
preferred embodiment, file system 100 is a WAFL system, although
this does not have to be the case. WAFL file systems are described
in detail in the incorporated disclosures.
File system 100 includes root inode 110 and data 120, as well as
other data. All of the inodes and data in file system 100
preferably are stored in blocks, although this also does not have
to be the case.
Root inode 110 stores parts of the organizational data for file
system 100. In particular, root inode 110 points to data and to
other inodes and data that in turn point to data for all
information stored in file system 100. Thus, any information stored
in a file system 100 can be reached by starting at root inode
110.
Snapshot 130 has been formed from file system 100. In FIG. 1,
elements of snapshot 130 are shown using dashed lines to assist in
distinguishing those elements from file system 100. According to a
preferred embodiment of the invention, the snapshot can be formed
by simply copying root inode 110 to snapshot root inode 140 at a
consistency point for file system 100. In some embodiments,
additional organizational data may have to be copied. Then, as long
as all of the data and inodes pointed to by root inode 110 (and any
other copied organizational data) are preserved, snapshot root
inode 140 will point to a valid copy of file system 100.
After snapshot root inode 140 has been created, snapshot 130 and
file system 100 actually share data on the storage device or
devices. Thus, snapshot 130 preferably includes the same physical
data 120 on the storage device or devices as file system 100, as
indicated by the duel solid and dashed borders around data 120 in
FIG. 1. In other words, the snapshot and the file system overlap.
This allows for rapid creation of snapshot 130 with efficient use
of storage space and other system resources.
File system 100 preferably includes snapshot data 150 that points
to snapshots of file system 100. In particular, pointers 160 in the
snapshot data preferably point to root inodes of those
snapshots.
Snapshot 130 also preferably includes snapshot data 170 that points
to other snapshots. However, snapshot data 170 of snapshot 130 can
be different from snapshot data 150 of file system 100 because
snapshot 130 preferably does not point to itself. This difference
is shown in FIG. 1 by the cutout of snapshot 130 around snapshot
data 150 in file system 100.
Preferably, a snapshot of a file system according to the invention
includes a complete hierarchy for file system data, separate and
apart from active file system data for the active file systems.
This hierarchy is included in the root inode for the snapshot and
possibly in other nodes and data copied for the snapshot (not
shown).
There is no particular requirement for the file system hierarchies
for a snapshot to duplicate the name space originally used for the
associated active file system. In one preferred embodiment, file
names in a snapshot's root inode (and other organizational data)
can be compressed using a hash code or other technique, so as to
minimize the organizational data that must be stored for each
snapshot. However, in an alternative embodiment, in some
circumstances possibly preferable, it might be superior to maintain
the original name space and other organizational data for each
snapshot in a form relatively easy to read by a human user. This
might have the salutary effect of aiding human users with backup
and restore operations based on such snapshots.
FIG. 2 illustrates divergence of an active file system from a
snapshot of that file system.
Because file system 100 is active, a mechanism must be provided for
changing data in the file system. However, in order to maintain the
integrity of snapshot 130, data pointed to by snapshot root inode
140 must be preserved. Thus, for example, when data 120 is changed
in file system 100, modified data 120' is stored in the storage
device or devices. Root inode 110 of file system 100 and any
intervening inodes and organizational data are updated to point to
modified data 120'. In addition, the unmodified data 120 is
preserved on the storage device or devices. Snapshot root inode 140
continues to point to this unmodified data, thereby preserving the
integrity of snapshot 130.
Likewise, when data is deleted from active file system 100,
pointers to that data are removed from the file system. However,
the data itself is preserved if it is included in snapshot 130.
(This data can actually be deleted when the snapshot itself is
removed.)
In actual practice, changes to root inode 110, other inodes, and
data for many changes to file system 100 are accumulated before
being written to the storage device or devices. After such changes
have been written, file system 100 is self-consistent (i.e., at a
consistency point). Preferably, snapshots are only made at such
consistency point.
According to the invention, snapshot 130 can be converted into a
new active file system by making the snapshot writable. In order to
modify data in a writable snapshot 130, modified data is written to
the storage device or devices. Root inode 140 and any intervening
inodes and organizational data pointing to the modified data are
updated. Furthermore, an unmodified copy of the data is preserved
if it is still included in file system 100. This process is
substantially identical to the process that occurs when
modifications are made to file system 100, only the unmodified data
that is preserved is data pointed to by root inode 110.
In other words, when changes are made to the first active file
system (e.g., file system 100), modified data is recorded in the
first active file system in a location that is not shared with the
second active file system (e.g., writable snapshot 130). Likewise,
when changes are made to the second active file system, modified
data is recorded in the second active file system in a location
that is not shared with the first active file system. As a result,
changes made to the first active file system not reflected in the
second active file system, and changes made to the second active
file system not reflected in the first active file system.
When created, snapshot 130 substantially overlaps file system 100.
If the snapshot is made writable shortly after its creation, the
new active file system formed by the writable snapshot will
initially share almost all of its data with the existing active
file system. As a result, the invention allows for creation of an
entire new active file system with efficient utilization of
resources such as processing time and storage space.
The process of storing modified data and preserving unmodified data
causes file system 100 and snapshot 130 (whether read-only or
writable) to diverge from one another. This divergence is
representationally shown in FIG. 2 by a reduction in overlap
between file system 100 and snapshot 130.
FIG. 3 illustrates the relationship between the active file system
and the snapshot in FIG. 2. This type of diagram provides a
simplified view of the relationship between file systems and their
snapshots. In FIG. 3, file system 100 points to snapshot 130. In
addition, both file system 100 and snapshot 130 point to other
snapshots (not shown).
FIG. 4 illustrates a chain of snapshots that can be converted into
active file systems according to the invention. In this figure,
second snapshot 180 has been created from file system 100. Because
snapshot 100 still pointed to snapshot 130 at the time of the
creation of the second snapshot, snapshot 180 includes snapshot
data 190 that points to snapshot 130.
Either or both of snapshots 130 and 180 can be turned into active
file systems by making those snapshots writable. As a data is
written to any of the active file systems (i.e., file system 100,
writable snapshot 130, or writable snapshot 180), the file systems
will diverge from one another.
FIG. 5 illustrates the relationship between the active file system
and the snapshots in FIG. 4. In FIG. 5, file system 100 points to
snapshots 130 and 180. Likewise, snapshot 180 points to snapshot
130, which in turn can point to another snapshot or snapshots.
FIG. 6 illustrates a snapshot that has been converted into an
active file system according to the invention. In this figure,
snapshot 180 has been turned into active file system 180' by being
made writable. Because this new active file system can be modified,
it no longer represents a true snapshot of file system 100. As a
result, the snapshot pointer to snapshot 180 in snapshot data 150
of file system 100 has been severed, for example by being
deleted.
FIG. 7 illustrates the relationship between the active file system,
new active file system, and snapshot in FIG. 6. In this figure,
active file system 100 points to snapshot 130. Likewise, active
file system 180' also points to snapshot 130. As discussed above,
file system 100 preferably no longer includes a snapshot pointer to
snapshot 180. However, file system 100 can still included a pointer
to file system 180', for example to allow traversal from one file
system to the other. This inter-file-system pointer is shown as a
dashed line in FIG. 7 to distinguish it from a snapshot
pointer.
FIG. 8 illustrates a more complex chain of snapshots that can be
converted into active file systems according to the invention. In
FIG. 8, file system 800 is an active file system. Four snapshots
have been made of this file system. Snapshot 810 is the oldest,
snapshot 820 is the next oldest, snapshot 830 is the next oldest
after its snapshot 820, and snapshot 840 is the newest. Any
snapshots older than snapshot 810 have been deleted, thereby
freeing up storage space that was occupied by data that was not
overlapped by any of the other snapshots or the active file system.
Each of snapshots 810 to 840 can be turned into an active file
system by being made writable.
FIG. 9 illustrates the chain shown in FIG. 8 with one of the
snapshot converted into an active file system according to the
invention.
In FIG. 9, snapshot 830 has been converted into active file system
830' in which data can be modified, added, and deleted. As a
result, file system 800 preferably no longer points to snapshot 830
as a snapshot. Active file system 830' can continue to point to
snapshots 810 and 820.
FIG. 10 illustrates some more possible relationships between plural
active file systems and their associated snapshots according to the
invention.
The top portion of FIG. 10 corresponds to FIG. 9, except that
additional snapshots have been made from the active file systems.
Thus, snapshot 1000 has been made of file system 800, and snapshot
1010 has been made of file system 830'. In addition, snapshot 810
has been deleted to free up space on the storage device or
devices.
Both of active file systems 800 and 830' can trace back to a common
snapshot 820. However, when that snapshot is deleted, the active
file systems will no longer share a common snapshot. This situation
has occurred with respect to file system 1020 and snapshots 1030 to
1050. This arrangement illustrates that it is possible to have a
"forest" (i.e., a collection of unconnected trees) formed by the
links between active file systems and their associated snapshots,
all on one storage device or set of storage devices. Despite the
fact that the file systems and their snapshots no longer point to a
common snapshot, these snapshots and even the active file systems
could still share some data (i.e., overlap), thereby preserving the
efficiency of the invention.
In the foregoing discussion, new active file systems are created
from snapshots. However, the invention does not require the actual
creation of a snapshot in order to create a new active file system.
Rather, all that is required is creation of structures along the
lines of those found in a snapshot, namely organizational data
along the lines of that found in a snapshot's root inode, along
with preservation of the data pointed to by that organizational
data.
Furthermore, the invention is not limited to the particular
arrangements discussed above. Rather, those arrangements illustrate
some possible types of relationships between active file systems,
snapshots, and new active file systems. Other arrangements are
possible and are within the scope of the invention.
System Elements
FIG. 11 shows a block diagram of a storage system including plural
active file systems according to the invention.
A system 1100 includes at least one file system processor 1110
(i.e., controller) and at least one storage device 1120 such as a
hard disk or CD-ROM drive. The system also preferably includes
interface 1130 to at least one computing device or network for
receiving and sending information. In an alternative embodiment,
processor 1100 is the processor for a computing device connected to
the storage system via interface 1130.
Processor 1110 performs the tasks associated with the file system,
as described herein, under control of program and data memory, the
program and data memory including appropriate software for
controlling processor 1110 to perform operations on storage device
1120 (and possibly for controlling storage device 1120 to cooperate
with processor 1110).
In a preferred embodiment, at least one such storage device 1120
includes one or more boot records 1140. Each boot record 1140
includes two or more (preferably two) entries designating a root
data block (i.e., inode) in a file system hierarchy for an active
file system. Where there is a single active file system, there
preferably is a single such boot record; where there is more than
one such active file system, there preferably is more than one such
boot record.
As noted above, more than one active file system might be present
in storage device 1120. In such cases, the file system maintainer
(i.e., processor 1110 operating under program control) preferably
will designate and orderly maintain more than one boot record 1140,
one for each such active file system.
Read-only snapshots also can be present in storage device 1120. In
this case, pointers from active file systems to snapshots and from
snapshots to other snapshots are stored in the storage device, as
discussed above.
High Availability
FIG. 12 shows a block diagram of a file system cluster including
multiple concurrent active file systems being used by multiple
concurrent file servers according to the invention.
A file system cluster includes a plurality of file system
processors 1200 and one or more file system disks 1210. In a
preferred embodiment, each such processor 1200 is disposed for
operating as a file server, capable of receiving file server
requests and making file server responses, such as using a known
file server protocol. In a preferred embodiment, the one or more
file system disks 1210 include a plurality of such disks, so that
no individual disk 1210 presents a single point of failure for the
entire highly-available cluster. The Write Anywhere File system
Layout (WAFL), which preferably is used with the invention,
incorporates such an arrangement.
As discussed above, the plurality of processors 1200 can maintain
multiple parallel writeable active file systems 1210, along with
all associated snapshots for those parallel writeable active file
systems. The active file systems and snapshots can be maintained on
the same set of disks 1220. Thus, the set of processors 1200 and
the set of disks 1220 can provide a highly available cluster
without need for substantial duplication of resources.
ALTERNATIVE EMBODIMENTS
The invention can be embodied in methods for creating and
maintaining plural active file systems, as well as in software
and/or hardware such as a storage device or devices that implement
the methods, and in various other embodiments.
In the preceding description, a preferred embodiment of the
invention is described with regard to preferred process steps and
data structures. However, those skilled in the art would recognize,
after perusal of this application, that embodiments of the
invention may be implemented using one or more general purpose
processors or special purpose processors adapted to particular
process steps and data structures operating under program control,
that such process steps and data structures can be embodied as
information stored in or transmitted to and from memories (e.g.,
fixed memories such as DRAMs, SRAMs, hard disks, caches, etc., and
removable memories such as floppy disks, CD-ROMs, data tapes, etc.)
including instructions executable by such processors (e.g., object
code that is directly executable, source code that is executable
after compilation, code that is executable through interpretation,
etc.), and that implementation of the preferred process steps and
data structures described herein using such equipment would not
require undue experimentation or further invention.
Furthermore, although preferred embodiments of the invention are
disclosed herein, many variations are possible which remain within
the content, scope and spirit of the invention, and these
variations would become clear to those skilled in the art after
perusal of this application.
* * * * *