WO1999014692A1 - Monitoring document changes with persistent update sequence numbers - Google Patents

Monitoring document changes with persistent update sequence numbers Download PDF

Info

Publication number
WO1999014692A1
WO1999014692A1 PCT/US1998/019048 US9819048W WO9914692A1 WO 1999014692 A1 WO1999014692 A1 WO 1999014692A1 US 9819048 W US9819048 W US 9819048W WO 9914692 A1 WO9914692 A1 WO 9914692A1
Authority
WO
WIPO (PCT)
Prior art keywords
record
document
persistent
log
change information
Prior art date
Application number
PCT/US1998/019048
Other languages
French (fr)
Inventor
Sitaram C. V. Raju
Srikanth Shoroff
Kyle G. Peltonen
Original Assignee
Microsoft Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corporation filed Critical Microsoft Corporation
Priority to EP98946055A priority Critical patent/EP1023677A1/en
Priority to JP2000512158A priority patent/JP3556170B2/en
Publication of WO1999014692A1 publication Critical patent/WO1999014692A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Definitions

  • the invention relates generally to computers and file systems, and more particularly to monitoring document changes such as when indexing the contents and properties of documents on a file system.
  • Index Server Programs which track file activity on a file system, such as a program which automatically generates and maintains an index of a file system's documents, are becoming important user tools as storage mechanisms store an ever-increasing number of files.
  • Microsoft Corporation's Index Server product indexes the contents and properties of documents on one or more file systems, and provides users with a search engine to query the index and quickly locate matching documents.
  • a desirable feature of Index Server is that it runs in the background to automatically keep its internal indexes up-to-date as the user modifies documents. Newly created documents are indexed, modified documents are re-indexed, and deleted documents are removed from Index Server's indexes as the user changes them.
  • Index Server monitors the file system for changes to documents using Win32 Application Programming Interfaces (APIs)
  • FindFirstChangeNotification and FindNextChangeNotification These APIs function reasonably well but inefficiently, as they provide information on virtually all file activity, including transitory information that is not important to the overall indexing scheme. Moreover, existing mechanisms often provide change notification before the document is available for indexing, (e.g., when the file is still locked open by the user) .
  • Index Server While Index Server and other such programs have thus become important user tools, under certain circumstances such programs are halted. The user can continue to modify documents even when these background programs are halted, however, resulting in a situation in which the file system activity is not properly tracked. For example, Index Server may crash due to a program error, a condition referred to as an abrupt shutdown. For a dynamic indexing program such as Index Server, this results in out-of-date indexes. Moreover, a feature of Index Server is that during low resource conditions, (e.g., disk space is low), the program will stop accepting document change notifications. The user can continue to make document changes during the low resource condition, however Index Server's indexes are not kept up-to-date as the Index Server program will not accept changes until sufficient disk space becomes available. Again, such a situation results in out-of-date indexes.
  • low resource conditions e.g., disk space is low
  • Index Server needs to determine the list of documents that were changed since Index Server was halted or since it stopped accepting change information.
  • One possible solution is to simply re- index all files from scratch upon every start-up, however this solution becomes unacceptably slow even with only a few thousand documents.
  • a more sophisticated solution is to compare each document in the file system with the information on that file maintained in Index Server's indexes, and synchronize any differences between the two.
  • Properties stored in the index include the document name, the physical path of the document, the write time, i.e., the time that the file was last modified, and the document's ID, which is a unique identifier for every document in the internal index.
  • a tree traversal of the indexed volume is performed, which scans every file on the indexed volume.
  • the tree traversal may use well-known algorithms such as a breadth-first or depth-first searching algorithms.
  • a process looks for whether documents present in the file system are also present in the index. Documents which are not present in the indexes but are seen in the file system are new documents that were created after the shutdown of Index Server, and thus each such document is added to a list of documents to be indexed.
  • documents which are present in the indexes but are not seen in the file system are documents that were deleted after shutdown of Index Server, and thus each such document is removed from the internal indexes.
  • the current write time of the document in the file system is compared with the write time of that document in the internal indexes. Those documents having write times in the file system that are more recent than the write times in the indexes have been modified since the shutdown, and are thus re-indexed.
  • Another objective of the present invention is to provide the method and system for use with a document indexing program.
  • Yet another object of the present invention is to make the indexing process more efficient.
  • Still another objective is to provide a method and system of the above kind that is reliable, robust, efficient, flexible and extensible.
  • the present invention provides a method and system for updating at least one other file of document information, such as an index.
  • a record is read from the persistent log, and processed to obtain a document identifier, change information about a document, and a sequence number representative of the relative position of the record in the log file (and thus the relative time of the change) .
  • the processing may include placing the record in an in memory queue, serializing the record into persistent storage, and retrieving the record from persistent storage.
  • the index or other file is updated based on the change information of the document that is stored in the record, and the sequence number of the highest record processed is recorded in a persistent data structure.
  • the sequence number is retrieved from the persistent data structure, and the index is updated by reading records from the log based on the retrieved sequence number.
  • FIGURE 1 is a block diagram representing a computer system in which the present invention may be incorporated;
  • FIG. 2 is a block diagram illustrating various components of the present invention
  • FIG. 3 is a block diagram illustrating a log of USN records maintained by a file system
  • FIG. 4 is a block diagram illustrating various components of the present invention
  • FIG. 5 is a flow diagram representing the general steps taken to initially index a set of documents
  • FIG. 6 is a flow diagram representing the general steps taken to perform a tree traversal with seen array processing for updating documents
  • FIG. 7 is a flow diagram representing the general steps taken to handle notifications in accordance with one aspect of the present invention.
  • FIG. 8 is a flow diagram representing the general steps taken to index documents based on notifications in accordance with another aspect of the present invention.
  • FIG. 9 is a flow diagram representing the general steps taken to restart the indexing program in accordance with another aspect of the present invention.
  • FIG. 10 is a flow diagram representing general steps taken when a corrupt index is detected.
  • FIG. 11 is an alternate block diagram illustrating various components of the present invention including multiple volumes and alternate file systems.
  • FIG. 1 and the following discussion are intended to provide a brief general description of a suitable computing environment in which the invention may be implemented.
  • the invention will be described in the general context of computer-executable instructions, such as program modules, being executed by a personal computer.
  • program modules include routines, programs, objects, components, data structures and the like that perform particular tasks or implement particular abstract data types.
  • the invention may be practiced with other computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers and the like.
  • the invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network.
  • program modules may be located in both local and remote memory storage devices.
  • an exemplary system for implementing the invention includes a general purpose computing device in the form of a conventional personal computer 20 or the like, including a processing unit 21, a system memory 22, and a system bus 23 that couples various system components including the system memory to the processing unit 21.
  • the system bus 23 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures.
  • the system memory includes read-only memory (ROM) 24 and random access memory (RAM) 25.
  • ROM read-only memory
  • RAM random access memory
  • the personal computer 20 may further include a hard disk drive 27 for reading from and writing to a hard disk, not shown, a magnetic disk drive 28 for reading from or writing to a removable magnetic disk 29, and an optical disk drive 30 for reading from or writing to a removable optical disk 31 such as a CD-ROM or other optical media.
  • the hard disk drive 27, magnetic disk drive 28, and optical disk drive 30 are connected to the system bus 23 by a hard disk drive interface 32, a magnetic disk drive interface 33, and an optical drive interface 34, respectively.
  • the drives and their associated computer-readable media provide nonvolatile storage of computer readable instructions, data structures, program modules and other data for the personal computer 20.
  • exemplary environment described herein employs a hard disk, a removable magnetic disk 29 and a removable optical disk 31, it should be appreciated by those skilled in the art that other types of computer readable media which can store data that is accessible by a computer, such as magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, random access memories (RAMs) , read-only memories (ROMs) and the like may also be used in the exemplary operating environment.
  • RAMs random access memories
  • ROMs read-only memories
  • a number of program modules may be stored on the hard disk, magnetic disk 29, optical disk 31, ROM 24 or RAM 25, including an operating system 35 (preferably Windows NT) , one or more application programs 36, other program modules 37 and program data 38.
  • a user may enter commands and information into the personal computer 20 through input devices such as a keyboard 40 and pointing device 42.
  • Other input devices may include a microphone, joystick, game pad, satellite dish, scanner or the like.
  • serial port interface 46 that is coupled to the system bus, but may be connected by other interfaces, such as a parallel port, game port or universal serial bus (USB) .
  • a monitor 47 or other type of display device is also connected to the system bus 23 via an interface, such as a video adapter 48.
  • personal computers typically include other peripheral output devices (not shown) , such as speakers and printers.
  • the personal computer 20 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 49.
  • the remote computer 49 may be another personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the personal computer 20, although only a memory storage device 50 has been illustrated in FIG. 1.
  • the logical connections depicted in FIG. 1 include a local area network (LAN) 51 and a wide area network (WAN) 52.
  • LAN local area network
  • WAN wide area network
  • the personal computer 20 When used in a LAN networking environment, the personal computer 20 is connected to the local network 51 through a network interface or adapter 53. When used in a WAN networking environment, the personal computer 20 typically includes a modem 54 or other means for establishing communications over the wide area network 52, such as the Internet.
  • the modem 54 which may be internal or external, is connected to the system bus 23 via the serial port interface 46.
  • program modules depicted relative to the personal computer 20, or portions thereof may be stored in the remote memory storage device. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.
  • the above- identified computer system 20 preferably includes Microsoft Corporation' s Windows NT operating system, the Windows NT file system (NTFS) and Index Server (or another document monitoring program) .
  • NTFS Windows NT file system
  • Index Server or another document monitoring program
  • the present invention is not limited to indexing, but rather applies to any type of program which monitors changes to files of a file system, documents in a search engine and so on, including backup programs, replication programs and so on.
  • the invention will operate with sources of data other than a file system, such as a database, that is arranged to provide an ordered list of changes to a change monitoring process for modifying a data structure such as an index.
  • the present invention will be primarily described with respect to content and property indexing of file system documents, particularly using Microsoft's Index Server 60.
  • the Windows NT file system (NTFS) 64 maintains a persistent list of document changes in an Update Sequence Number (USN) Log file 62. More particularly, as files are added, deleted or modified, NTFS appends USN records to a per-volume stream (the USN log file 62) that identify the files and describe the various modifications thereto. Notifications are provided to Index Server 60 from the USN Log file 62 via the NT file system 64.
  • USN Update Sequence Number
  • each USN record 62 ⁇ - 62 n includes a document identifier identifying the document that was updated, a ti estamp corresponding to the time of the update, a reason field identifying the type of change, and a 64-bit number called the update sequence number (USN) .
  • the USN is the offset of a particular record in the stream, and, since records are appended to the stream, USN's possess the property that they are monotonically increasing. For example, if a document named a. doc has been modified before a document named b.doc, then the USN for this particular modification of a. doc is less than the USN for the modification of b.doc.
  • alternative methods for generating USNs are feasible, (e.g., a persistent USN counter on disk that is incremented for every new record) , and there is no intention to limit the present invention to any particular implementation thereof. Accordingly, any data that tracks the position of one change relative to other changes (in time or otherwise) may serve as the USN.
  • the document identifier may be either a number (FileReferenceNumber) that uniquely identifies the documents on a volume or can be the full path (FileName) on a volume, (e.g., c: ⁇ directoryl ⁇ patent.doc).
  • the kernel-mode file system 64 is responsible for adding notification records, and thus the notifications will continue to be added even if Index Server 60 is shutdown .
  • Index Server 60 obtains its notifications from the USN Log 62 via the Windows NT file system ReadUsn API 66.
  • the ReadUsn API provides an interface for the user- mode change monitoring program such as Index Server 60 to read the kernel-mode USN Log 62, which can receive notifications from any appropriate source of data (e.g., the Windows NT file system 64 or a database).
  • any change monitoring program with the proper security privileges can read the USN Log file 62.
  • the ReadUsn API takes a StartUsn parameter, from which the reading of the USN Log file 62 begins. ReadUsn returns USN records 62 ⁇ - 62 n in increasing USN order.
  • Index Server 60 uses these USN record notifications to maintain one or more data structures such as indexes 68.
  • a USN notification record e.g., 62 2
  • Index Server 60 queues the notification record in a linked list called the ChangeList 70.
  • this ChangeList 70 is maintained in the (high-speed) RAM 25.
  • Index Server 60 uses a serializing process 72 to periodically serialize the notifications in the ChangeList 70 into a persistent log on the disk called ChangeLog 74. Then, although not necessary to the present invention, the ChangeList 70 may be moved to another in-memory list called the serialized-ChangeList 75, which serves as a cache.
  • the serialized-ChangeList 75 may be read for speed purposes.
  • the serialized-ChangeList 75 is empty, (e.g., after a restart) , then the persistent ChangeLog 74 will be read.
  • the ChangeList 70 is emptied, and the maximum USN that is serialized from the ChangeList 70 is persistently written to a UsnFlushed table 76. Note that as described in more detail below, a table is used because USNs are per volume, and Index Server 60 supports multiple volumes, each volume having one or more indexes 68 associated therewith.
  • the notification records are read by Index Server 60 from the head of the ChangeLog 74 (or when records are present, from the in- memory cache, i.e., the serialized-ChangeList 75) by a search engine 78 or the like.
  • each notification record e.g., 62 2
  • the corresponding serialized notification record 62 2 is removed from the head of the ChangeLog 74.
  • the ReadUsn API 66 may be configured to report file change activity only when the final handle has been closed on the file. As can be appreciated, for indexing purposes this provides a significant efficiency advantage over the use of the FindFirstChangeNotification and FindNextChangeNotification APIs 80, 82 which provide information on virtually all file activity, including transitory information that occurs while the file is open and is possibly inaccessible to the search engine. As described below with reference to FIG. 11, however, these APIs 80, 82 are still generally needed when indexing other file system changes, such as FAT (file allocation table) - based file systems 84.
  • FAT file allocation table
  • Index Server 60 serializes the
  • the first time Index Server 60 is installed and run on a system, all appropriate documents in the file system 64 are indexed. Note that this refers to the very first time Index Server 60 is run, essentially when all indexes are empty.
  • a tree traversal is performed as represented in FIG. 5. Beginning at step 500 of FIG. 5, a variable UsnMax is set equal to the maximum USN value in the USN Log 62. Note that the maximum USN in the USN Log 62 may be found using the ReadUsn API 66.
  • a USN of zero (0) is written to the UsnFlushed table 76. As will be discussed in more detail below, the zero will remain in the UsnFlushed table 76 until the tree traversal indexing completes successfully, providing an indication of whether the documents were indexed properly.
  • the tree traversal indexing process selects a document of the file system 64 using a breadth- first or depth-first search algorithm or the like.
  • the selected document is indexed by Index Server 60.
  • the document may be placed in a list for subsequent indexing by Index Server 60 (e.g., after step 508) .
  • the tree traversal continues until all appropriate documents have been scanned.
  • the maximum value of the USN in the USN log 62, UsnMax is written to the UsnFlushed table 76. In this manner, all appropriate documents are initially indexed. While time-consuming, under normal circumstances such an initial scan will not be repeated with the present invention.
  • an alternative method for updating the index 68 when starting with a clean/empty index, is to avoid the tree traversal and instead process each USN record in the USN log 62 beginning at record one.
  • record one is the first USN notification record after the volume was created or freshly formatted.
  • this updating process requires that the USN record one has not been deallocated, as described below.
  • this type of updating is generally slower than a tree traversal if the volume has been in use for a long time, as many notification records will exist, possibly more than the current count of files on disk.
  • such a USN- based index construction process also does not work for volumes that have been upgraded from an earlier format that did not have USN logging to a format that now supports USN logging.
  • the initial indexing process then continues to FIG. 9, where the Index Server 60 will monitor changes to documents by reading the USN Log 62 beginning at the value in the UsnFlushed table 76, which at this time ordinarily equals UsnMax. However, it is possible that the initial tree traversal was not successfully completed. Thus, beginning at step 900 of FIG. 9, the USN value is read from the UsnFlushed table 76 and tested to determine if this value equal zero. If zero, this indicates that the tree traversal was not successfully completed (i.e., step 510 did not properly execute following a successful tree traversal) . If so, a tree traversal is again attempted.
  • the initial tree traversal is successful, and thus the USN does not equal zero at step 900 whereby the process branches to step 902.
  • the StartUsn parameter is set equal to the value in the USN Log 62, so that the USN log 62 will be read from the last- indexed USN forward, that is, beginning at UsnMax,
  • the process continues to FIG. 7 wherein the USN records will be read and indexed in keeping with the invention. Note that changes to documents may have occurred between the time that UsnMax was written to the UsnFlushed table 76 (step 506) and the time that step 802 was executed, whereby the value in the UsnFlushed table 76 is no longer the maximum USN in the USN Log 62.
  • Index Server 60 runs in the background waiting for notifications of document changes. Index Server 60 may wait for notifications in one of two ways. First, the wait can be implemented by polling, whereby Index Server 60 periodically checks if there are new USN notifications. More preferably, however, the wait is accomplished by blocking where a separate thread waits until it is signaled that there is a new USN notification.
  • FIGS. 7 - 8 generally represent the Index Server 60 process during its typical operation.
  • Index Server 60 creates a separate thread that waits for a new USN notification (or periodically polls for notifications) .
  • Index Server 60 performs its other operations between polling operations, such as periodically serializing the ChangeList 72 to the ChangeLog 74 (steps 706 - 712) and indexing files based on any change notifications serialized in the ChangeLog 74 (steps 800 - 806) .
  • step 702 tests whether the notification is a valid notification corresponding to a changed document, or an indication of an error.
  • step 702 branches to step 704 where the USN notification record is placed in the in- memory-linked ChangeList (FIFO queue) 70.
  • the in-memory ChangeList 70 is periodically serialized into the persistent ChangeLog 74.
  • step 706 detects the appropriate period for serializing, and until the period is reached returns to step 700 to await and queue new notifications.
  • step 706 branches to step 708 wherein the ChangeList 70 is serialized into the persistent ChangeLog 74.
  • step 710 the ChangeList 70 is moved into the in-memory, serialized ChangeList (cache) 75 and the ChangeList 70 is emptied.
  • step 710 writes the number of the last USN that was serialized into the UsnFlushed table 76.
  • FIG. 8 represents the general re-indexing operation based on the USN notification records serialized into the ChangeLog 74. Note that because indexing preferably executes on a separate thread than the thread that waits for notifications, the steps in FIG. 8 run in parallel with those in FIG. 7. Alternatively, in the polling model, the steps of FIG. 8 can be integrated with those in FIG. 7 such as by executing steps 800 - 806 while awaiting new USN notifications and between periodic serializing times. In any event, step 800 determines if a serialized notification is pending in the ChangeLog 74, and if not, returns to wait for one or more notification records. Note that the wait for new records in the persistent ChangeLog 74 is not the same as the wait for new USN notification records in the USN Log 62.
  • the first notification record is read from the head of the FIFO ChangeLog 74 (or the cache 75, if records are present therein) at step 802. Then, the indexes 68 are updated according to the document identified in the notification record at step 804, and if successfully updated, the notification record is removed from the head of the ChangeLog 74 (or the cache 75) at step 806. Step 806 returns to step 800 where the next notification record, if any, is processed in the same manner.
  • Index Server 60 Before a planned shutdown such as a shutdown due to low resource conditions, Index Server 60 will empty the ChangeList 70 and stop reading USN notifications from the USN log 62. Similarly after an abrupt shutdown to do a crash, Index Server 60 will be unable to read USN notifications from the USN log 62. However the file system 64 is responsible for adding notification records to the USN log 62, and thus notification records will continue to be added to the USN log 62 even when Index Server 60 shuts down.
  • Index Server 60 after Index Server 60 is restarted, (e.g., the low resource situation is cleared) , Index Server 60 returns to the restart process of FIG. 9, i.e, Index Server 60 reads the last successfully processed USN from the UsnFlushed table 76 and starts reading the USN Log 62 from that USN value onwards.
  • an error may result from an attempt to read a record from a portion of the USN Log 62 that is no longer present. More particularly, since the file system 64 creates and appends a new notification record to the USN Log 62 for every document change, the USN Log 62 continues to increase in size. In order to conserve space, the maximum size of the USN Log 62, and a size of the USN Log 62 to deallocate when the maximum size is reached, are user-configurable. As a result, the file system 64 may periodically deallocate a portion of the USN Log 62 from the front of the USN Log 62. Deallocation from the front of a file is described in U.S. Patent Application Serial No.
  • Index Server 60 needs to update its indexes, but cannot use the now- deallocated USN Log 62. Accordingly, to accomplish the updating, Index Server 60 performs a seen-array-proceessing tree traversal by performing the steps of FIG. 6. However, step 740 first saves the maximum USN in the USN Log 62 in the UsnMax variable. Then, a USN of zero is written to the UsnFlushed table 76 at step 742. As previously described, a USN of zero UsnFlushed table 76 acts as a flag to indicate whether the traversal is successful, i.e., if successful the USN in the UsnFlushed table 76 is changed from zero.
  • the seen array processing is performed, shown in more detail in FIG. 6 beginning at step 600.
  • an array of Boolean flags called the seen array, one flag for each document in the indexes, has each of its entries set equal to a value of doc_not_seen.
  • a document in the filesystem 62 is selected using a tree traversal algorithm, for example by using a well-known algorithm such as breadth-first or depth-first searching.
  • Step 604 tests whether the selected document is present in the internal indexes 68. If the document is not present in the internal indexes 68, then it is a new document that was added while Index Server 60 was not able to process the notifications.
  • step 606 which adds non- indexed documents to a to-be-indexed list, will be performed for such a document. If the document was in one or more of the indexes 68, step 604 branches to step 608 whereby the document's seen array flag is set equal to doc_seen.
  • a synchronization test is performed at step 610 compare the time at which the document was last updated in the index (the index write time) against the last time the document was written in the filesystem 64. If the write times indicate synchronization, the process branches to step 612. If the two are not synchronized, step 610 branches to step 606 where the document is added to the to-be-indexed list, and then the process continues to step 612.
  • Step 612 repeats the seen-array-processing by returning to step 602 until no additional documents are found in the tree traversal. Once all documents have been scanned, the process continues to step 614.
  • documents which are in the indexes 68 but are not found in a traversal of an appropriate tree were deleted while Index Server 60 was unable to receive USN notification records corresponding to the deletions. Accordingly, at step 614 any documents whose flags are still unchanged from doc-not- seen are removed from the indexes 68.
  • any documents in the to-be-indexed list are indexed by Index Server 60.
  • Step 616 returns to step 744 of FIG. 7, wherein the saved UsnMax value is written to the UsnFlushed table 76. Note that if the tree traversal was not performed successfully, a zero remains in the UsnFlushed table 76, whereby the tree traversal would be attempted again.
  • the Index Server process 60 then continues to FIG. 9, where the Index Server 60 will monitor changes to documents by reading the USN Log 62 beginning at the value in the UsnFlushed table 76, which at this time ordinarily equals UsnMax.
  • Index Server 60 can handle the rare case wherein such persistent data structures become corrupted.
  • a test for such corruption can be performed wherever appropriate, such as by file system checks, or by Index Server 60 itself.
  • Index Server 60 deletes all its internal indexes 68 at step 1002 and empties the ChangeList 70 and ChangeLog 74 at step 1004. Then, a USN of zero is written to the UsnFlushed table 76 and an. initial tree traversal of the volume is done, just as if the volume were being indexed for the very first time. As can be readily appreciated, this properly reconstructs the indexes 68.
  • Index Server 60 allows just a portion of the volume to be indexed. For example, instead of indexing the entire c: ⁇ volume, a user may wish to index only the directories c: ⁇ dirl, c: ⁇ dir2 and the directory trees rooted under those two directories. In such an event, instead of traversing the entire volume during the initial tree traversal, only the relevant directory trees need to be traversed. Since the NT filesystem 64 maintains a USN log 62 for the entire volume on a per volume basis, only those USN notifications that refer to documents in the specified list of directories need to be processed.
  • the USN notification record contains the full path of the document, such as c: ⁇ dirl ⁇ patent.doc, and further that the list of directories being indexed is ⁇ c: ⁇ dirl, c: ⁇ dir2 ⁇ . Since c: ⁇ dirl is a prefix of c: ⁇ dirl ⁇ patent.doc, this particular USN notification record should be processed. However, for a document such as c: ⁇ dir3 ⁇ review.doc, there is no prefix match, and thus any USN notification record therefor should be ignored.
  • a filtering mechanism may be used, such as described in U.S. Patent Application Serial No.
  • Index Server 60 allows the list of directories being indexed to be changed dynamically when the Index Server 60 is running. To this end, when a directory tree is newly added to an index 68, a tree traversal (as described above) is performed to add documents in that tree to the indexes 68. Then, the directory is added to the list of directories that are used to filter USN notification records. Conversely, when a directory tree is removed, the tree is removed from the list of directories that are used to filter USN notification records. Seen-array processing as previously described with reference to FIG. 6 is then performed to remove all documents in that directory tree from Index Server's internal indexes 68.
  • Index Server 60 can index more than one volume, e.g., c: ⁇ and d: ⁇ . If both volumes are NTFS volumes, the NT file system 64 provides a separate USN log 62 for each NT volume, and USN notification records from two different volumes are independent from one another. To maintain the independent relationship, Index Server 60 assigns a unique identifier, called a Volumeld, to each volume. When a USN notification is read from the USN log 62, it is tagged with the unique Volumeld for that volume.
  • the format of the UsnFlushed table 76 is arranged to store a UsnMax for every volume that is being indexed, and to grow as new volumes are indexed.
  • the UsnMax for each Volumeld is written to the UsnFlushed table 76. If there are no notifications for a given Volumeld, then the UsnMax for that Volumeld is not updated.
  • the volumes indexed by Index Server 60 need not be restricted to local volumes only, but instead may be remote shares in the UNC naming convention, i.e. ⁇ server_name ⁇ share . Each remote share is also assigned a unique Volumeld.
  • Index Server 60 and the present invention are sufficiently flexible and extensible to allow the combination of the scan-based FindFirstChangeNotification and FindNextChangeNotification monitoring scheme with the USN-based monitoring scheme of the present invention.
  • the invention is also compatible with file systems that provide no notification mechanism, whereby indexes for the files thereof are updated by periodically scanning those files for changes.
  • the Windows NT operating system allows for simultaneously loaded different file systems, such as NTFS and FAT, on a volume by volume basis.
  • Index Server 60 persistently remembers which monitoring scheme is being used for a given volume and uses that monitoring scheme after startup.
  • the significant speed and efficiency advantages described herein are found with a USN-based monitoring scheme or the like.
  • an improved method and system for determining which documents have changed between a shutdown and start-up of a file system monitoring program such as a document indexing program determines changed documents in a substantially faster manner, while making the indexing process more efficient.
  • the method and system is reliable, robust, efficient, flexible and extensible.

Abstract

A method and system for improved monitoring of document changes in a search engine, such as by an indexing program. Once an indexing or other such monitoring program is halted, upon restart the monitoring program needs to update its own files, such as its indexes, to reflect document changes that occurred while halted. A file system such as the Windows NT file system persistently logs document change information on disk in a monotonically increasing, uniquely-numbered persistent record, which further identifies the file that has changed. The method and system utilize the logged change information to efficiently maintain the indexes or the like, and to rapidly update the indexes after a shutdown and subsequent restart.

Description

MONITORING DOCUMENT CHANGES WITH PERSISTENT UPDATE SEQUENCE NUMBERS
FIELD OF THE INVENTION The invention relates generally to computers and file systems, and more particularly to monitoring document changes such as when indexing the contents and properties of documents on a file system.
BACKGROUND OF THE INVENTION
Programs which track file activity on a file system, such as a program which automatically generates and maintains an index of a file system's documents, are becoming important user tools as storage mechanisms store an ever-increasing number of files. For example, Microsoft Corporation's Index Server product indexes the contents and properties of documents on one or more file systems, and provides users with a search engine to query the index and quickly locate matching documents. A desirable feature of Index Server is that it runs in the background to automatically keep its internal indexes up-to-date as the user modifies documents. Newly created documents are indexed, modified documents are re-indexed, and deleted documents are removed from Index Server's indexes as the user changes them. To this end, Index Server monitors the file system for changes to documents using Win32 Application Programming Interfaces (APIs)
FindFirstChangeNotification and FindNextChangeNotification. These APIs function reasonably well but inefficiently, as they provide information on virtually all file activity, including transitory information that is not important to the overall indexing scheme. Moreover, existing mechanisms often provide change notification before the document is available for indexing, (e.g., when the file is still locked open by the user) .
While Index Server and other such programs have thus become important user tools, under certain circumstances such programs are halted. The user can continue to modify documents even when these background programs are halted, however, resulting in a situation in which the file system activity is not properly tracked. For example, Index Server may crash due to a program error, a condition referred to as an abrupt shutdown. For a dynamic indexing program such as Index Server, this results in out-of-date indexes. Moreover, a feature of Index Server is that during low resource conditions, (e.g., disk space is low), the program will stop accepting document change notifications. The user can continue to make document changes during the low resource condition, however Index Server's indexes are not kept up-to-date as the Index Server program will not accept changes until sufficient disk space becomes available. Again, such a situation results in out-of-date indexes.
Once the indexes become out-of-date, Index Server needs to determine the list of documents that were changed since Index Server was halted or since it stopped accepting change information. One possible solution is to simply re- index all files from scratch upon every start-up, however this solution becomes unacceptably slow even with only a few thousand documents.
A more sophisticated solution is to compare each document in the file system with the information on that file maintained in Index Server's indexes, and synchronize any differences between the two. Properties stored in the index include the document name, the physical path of the document, the write time, i.e., the time that the file was last modified, and the document's ID, which is a unique identifier for every document in the internal index. After start-up, a tree traversal of the indexed volume is performed, which scans every file on the indexed volume. The tree traversal may use well-known algorithms such as a breadth-first or depth-first searching algorithms. During the tree traversal, a process looks for whether documents present in the file system are also present in the index. Documents which are not present in the indexes but are seen in the file system are new documents that were created after the shutdown of Index Server, and thus each such document is added to a list of documents to be indexed.
Conversely, documents which are present in the indexes but are not seen in the file system are documents that were deleted after shutdown of Index Server, and thus each such document is removed from the internal indexes. For documents both existing in the internal indexes and seen during the tree traversal, the current write time of the document in the file system is compared with the write time of that document in the internal indexes. Those documents having write times in the file system that are more recent than the write times in the indexes have been modified since the shutdown, and are thus re-indexed.
While the above-described tree-traversal solution is significantly faster than re-indexing all documents at start-up, the solution is still too slow for large indexes. For example, indexes having hundreds of thousands or even millions of documents may require a processing time on the order of hours to complete this process. .As indexes grow larger and larger, the time becomes even more unacceptable.
OBJECTS AND SUMMARY OF THE INVENTION
Accordingly, it is an objective of the present invention to provide an improved method and system for determining which documents have changed between a shutdown and start-up of a file system activity-tracking program or the like.
In accomplishing that objective, it is a related objective to provide a method and system as characterized above that determines the changed documents in a substantially faster manner. Another objective of the present invention is to provide the method and system for use with a document indexing program.
Yet another object of the present invention is to make the indexing process more efficient.
Still another objective is to provide a method and system of the above kind that is reliable, robust, efficient, flexible and extensible.
Briefly, in a computer system having a file system of documents, wherein the file system serially stores document change information in a persistent log of records, the present invention provides a method and system for updating at least one other file of document information, such as an index. A record is read from the persistent log, and processed to obtain a document identifier, change information about a document, and a sequence number representative of the relative position of the record in the log file (and thus the relative time of the change) . The processing may include placing the record in an in memory queue, serializing the record into persistent storage, and retrieving the record from persistent storage. The index or other file is updated based on the change information of the document that is stored in the record, and the sequence number of the highest record processed is recorded in a persistent data structure.
In the event of a shutdown of the updating / monitoring (e.g., indexing) program, upon restart, the sequence number is retrieved from the persistent data structure, and the index is updated by reading records from the log based on the retrieved sequence number.
Other objects and advantages will become apparent from the following detailed description when taken in conjunction with the drawings, in which: BRIEF DESCRIPTION OF THE DRAWINGS
FIGURE 1 is a block diagram representing a computer system in which the present invention may be incorporated;
FIG. 2 is a block diagram illustrating various components of the present invention;
FIG. 3 is a block diagram illustrating a log of USN records maintained by a file system;
FIG. 4 is a block diagram illustrating various components of the present invention; FIG. 5 is a flow diagram representing the general steps taken to initially index a set of documents;
FIG. 6 is a flow diagram representing the general steps taken to perform a tree traversal with seen array processing for updating documents; FIG. 7 is a flow diagram representing the general steps taken to handle notifications in accordance with one aspect of the present invention;
FIG. 8 is a flow diagram representing the general steps taken to index documents based on notifications in accordance with another aspect of the present invention;
FIG. 9 is a flow diagram representing the general steps taken to restart the indexing program in accordance with another aspect of the present invention;
FIG. 10 is a flow diagram representing general steps taken when a corrupt index is detected; and
FIG. 11 is an alternate block diagram illustrating various components of the present invention including multiple volumes and alternate file systems.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
Exemplary Operating Environment
Figure 1 and the following discussion are intended to provide a brief general description of a suitable computing environment in which the invention may be implemented. Although not required, the invention will be described in the general context of computer-executable instructions, such as program modules, being executed by a personal computer. Generally, program modules include routines, programs, objects, components, data structures and the like that perform particular tasks or implement particular abstract data types.
Moreover, those skilled in the art will appreciate that the invention may be practiced with other computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers and the like. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
With reference to FIG. 1, an exemplary system for implementing the invention includes a general purpose computing device in the form of a conventional personal computer 20 or the like, including a processing unit 21, a system memory 22, and a system bus 23 that couples various system components including the system memory to the processing unit 21. The system bus 23 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. The system memory includes read-only memory (ROM) 24 and random access memory (RAM) 25. A basic input/output system 26 (BIOS), containing the basic routines that help to transfer information between elements within the personal computer 20, such as during start-up, is stored in ROM 24. The personal computer 20 may further include a hard disk drive 27 for reading from and writing to a hard disk, not shown, a magnetic disk drive 28 for reading from or writing to a removable magnetic disk 29, and an optical disk drive 30 for reading from or writing to a removable optical disk 31 such as a CD-ROM or other optical media. The hard disk drive 27, magnetic disk drive 28, and optical disk drive 30 are connected to the system bus 23 by a hard disk drive interface 32, a magnetic disk drive interface 33, and an optical drive interface 34, respectively. The drives and their associated computer-readable media provide nonvolatile storage of computer readable instructions, data structures, program modules and other data for the personal computer 20. Although the exemplary environment described herein employs a hard disk, a removable magnetic disk 29 and a removable optical disk 31, it should be appreciated by those skilled in the art that other types of computer readable media which can store data that is accessible by a computer, such as magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, random access memories (RAMs) , read-only memories (ROMs) and the like may also be used in the exemplary operating environment.
A number of program modules may be stored on the hard disk, magnetic disk 29, optical disk 31, ROM 24 or RAM 25, including an operating system 35 (preferably Windows NT) , one or more application programs 36, other program modules 37 and program data 38. A user may enter commands and information into the personal computer 20 through input devices such as a keyboard 40 and pointing device 42. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner or the like. These and other input devices are often connected to the processing unit 21 through a serial port interface 46 that is coupled to the system bus, but may be connected by other interfaces, such as a parallel port, game port or universal serial bus (USB) . A monitor 47 or other type of display device is also connected to the system bus 23 via an interface, such as a video adapter 48. In addition to the monitor 47, personal computers typically include other peripheral output devices (not shown) , such as speakers and printers. The personal computer 20 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 49. The remote computer 49 may be another personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the personal computer 20, although only a memory storage device 50 has been illustrated in FIG. 1. The logical connections depicted in FIG. 1 include a local area network (LAN) 51 and a wide area network (WAN) 52. Such networking environments are commonplace in offices, enterprise-wide computer networks. Intranets and the Internet.
When used in a LAN networking environment, the personal computer 20 is connected to the local network 51 through a network interface or adapter 53. When used in a WAN networking environment, the personal computer 20 typically includes a modem 54 or other means for establishing communications over the wide area network 52, such as the Internet. The modem 54, which may be internal or external, is connected to the system bus 23 via the serial port interface 46. In a networked environment, program modules depicted relative to the personal computer 20, or portions thereof, may be stored in the remote memory storage device. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.
Moni toring Document Changes
For purposes of the present invention, the above- identified computer system 20 preferably includes Microsoft Corporation' s Windows NT operating system, the Windows NT file system (NTFS) and Index Server (or another document monitoring program) . It should be understood that the present invention is not limited to indexing, but rather applies to any type of program which monitors changes to files of a file system, documents in a search engine and so on, including backup programs, replication programs and so on. Moreover, the invention will operate with sources of data other than a file system, such as a database, that is arranged to provide an ordered list of changes to a change monitoring process for modifying a data structure such as an index. Nevertheless, for purposes of simplicity, the present invention will be primarily described with respect to content and property indexing of file system documents, particularly using Microsoft's Index Server 60.
As represented in FIG. 2, the Windows NT file system (NTFS) 64 maintains a persistent list of document changes in an Update Sequence Number (USN) Log file 62. More particularly, as files are added, deleted or modified, NTFS appends USN records to a per-volume stream (the USN log file 62) that identify the files and describe the various modifications thereto. Notifications are provided to Index Server 60 from the USN Log file 62 via the NT file system 64.
As shown in FIG. 3, each USN record 62ι - 62n includes a document identifier identifying the document that was updated, a ti estamp corresponding to the time of the update, a reason field identifying the type of change, and a 64-bit number called the update sequence number (USN) .
The USN is the offset of a particular record in the stream, and, since records are appended to the stream, USN's possess the property that they are monotonically increasing. For example, if a document named a. doc has been modified before a document named b.doc, then the USN for this particular modification of a. doc is less than the USN for the modification of b.doc. Note that alternative methods for generating USNs are feasible, (e.g., a persistent USN counter on disk that is incremented for every new record) , and there is no intention to limit the present invention to any particular implementation thereof. Accordingly, any data that tracks the position of one change relative to other changes (in time or otherwise) may serve as the USN.
The document identifier may be either a number (FileReferenceNumber) that uniquely identifies the documents on a volume or can be the full path (FileName) on a volume, (e.g., c:\directoryl\patent.doc). In this architecture, the kernel-mode file system 64 is responsible for adding notification records, and thus the notifications will continue to be added even if Index Server 60 is shutdown .
Index Server 60 obtains its notifications from the USN Log 62 via the Windows NT file system ReadUsn API 66. As shown in FIG. 4, the ReadUsn API provides an interface for the user- mode change monitoring program such as Index Server 60 to read the kernel-mode USN Log 62, which can receive notifications from any appropriate source of data (e.g., the Windows NT file system 64 or a database). With this API 66, any change monitoring program with the proper security privileges can read the USN Log file 62. The ReadUsn API takes a StartUsn parameter, from which the reading of the USN Log file 62 begins. ReadUsn returns USN records 62χ - 62n in increasing USN order.
In accordance with one aspect of the present invention, Index Server 60 (or similar change monitoring program) uses these USN record notifications to maintain one or more data structures such as indexes 68. To use the notifications, when a USN notification record (e.g., 622) is received by Index Server 60, Index Server 60 queues the notification record in a linked list called the ChangeList 70. For purposes of speed, this ChangeList 70 is maintained in the (high-speed) RAM 25. Index Server 60 then uses a serializing process 72 to periodically serialize the notifications in the ChangeList 70 into a persistent log on the disk called ChangeLog 74. Then, although not necessary to the present invention, the ChangeList 70 may be moved to another in-memory list called the serialized-ChangeList 75, which serves as a cache. Instead of reading from the persistent ChangeLog 74, (described below) , which involves disk reads, the serialized-ChangeList 75 may be read for speed purposes. Of course, if the serialized-ChangeList 75 is empty, (e.g., after a restart) , then the persistent ChangeLog 74 will be read. In any event, the ChangeList 70 is emptied, and the maximum USN that is serialized from the ChangeList 70 is persistently written to a UsnFlushed table 76. Note that as described in more detail below, a table is used because USNs are per volume, and Index Server 60 supports multiple volumes, each volume having one or more indexes 68 associated therewith. For maintaining the indexes 68, the notification records are read by Index Server 60 from the head of the ChangeLog 74 (or when records are present, from the in- memory cache, i.e., the serialized-ChangeList 75) by a search engine 78 or the like. As previously described, each notification record (e.g., 622) identifies which document has changed and thus is to be re-indexed, or, if a delete notification record, which document has been deleted and thus is to be removed from the index. Once a document has been successfully indexed or removed, (or after a failure event has been logged if the document cannot be indexed for some reason) , the corresponding serialized notification record 622 is removed from the head of the ChangeLog 74. When writing to persistent data structures, well known transaction techniques such as shadow copying or write ahead logging are used to ensure that persistent data structures are not corrupted due to abrupt crashes. The ReadUsn API 66 may be configured to report file change activity only when the final handle has been closed on the file. As can be appreciated, for indexing purposes this provides a significant efficiency advantage over the use of the FindFirstChangeNotification and FindNextChangeNotification APIs 80, 82 which provide information on virtually all file activity, including transitory information that occurs while the file is open and is possibly inaccessible to the search engine. As described below with reference to FIG. 11, however, these APIs 80, 82 are still generally needed when indexing other file system changes, such as FAT (file allocation table) - based file systems 84.
In keeping with the invention, before a clean (non- abrupt) shut down, Index Server 60 serializes the
ChangeList 70 to the persistent ChangeLog 74 without waiting for the serialization period, and persistently writes to the UsnFlushed table 76 the USN of the last change notification that was successfully serialized. After restart, Index Server 60 reads the USN Log 62 starting from this persistently saved USN, and the document name and change information in each USN record (e.g., 62ι) gives the list of changes. As can be readily appreciated, unlike tree traversal and seen array processing, (described in detail below) , the time to determine the list of changes is independent of the size of indexes 68. Typically the number of modifications is small, which means that the USN- based method of the present invention takes seconds to a few minutes to determine the list of changes, which ordinarily is substantially faster than tree-traversal and seen array processing techniques.
Turning to an explanation of the operation of the invention with particular reference to the flow diagrams of FIGS. 5 - 8, the first time Index Server 60 is installed and run on a system, all appropriate documents in the file system 64 are indexed. Note that this refers to the very first time Index Server 60 is run, essentially when all indexes are empty. To accomplish the initial indexing, a tree traversal is performed as represented in FIG. 5. Beginning at step 500 of FIG. 5, a variable UsnMax is set equal to the maximum USN value in the USN Log 62. Note that the maximum USN in the USN Log 62 may be found using the ReadUsn API 66. Next, at step 502, a USN of zero (0) is written to the UsnFlushed table 76. As will be discussed in more detail below, the zero will remain in the UsnFlushed table 76 until the tree traversal indexing completes successfully, providing an indication of whether the documents were indexed properly.
At step 504, the tree traversal indexing process selects a document of the file system 64 using a breadth- first or depth-first search algorithm or the like. At step 506 the selected document is indexed by Index Server 60. Alternatively, the document may be placed in a list for subsequent indexing by Index Server 60 (e.g., after step 508) . In any event, via step 508 the tree traversal continues until all appropriate documents have been scanned. Then, at step 510 the maximum value of the USN in the USN log 62, UsnMax, is written to the UsnFlushed table 76. In this manner, all appropriate documents are initially indexed. While time-consuming, under normal circumstances such an initial scan will not be repeated with the present invention.
Note that an alternative method for updating the index 68, when starting with a clean/empty index, is to avoid the tree traversal and instead process each USN record in the USN log 62 beginning at record one. Note that record one is the first USN notification record after the volume was created or freshly formatted. However, this updating process requires that the USN record one has not been deallocated, as described below. Moreover, this type of updating is generally slower than a tree traversal if the volume has been in use for a long time, as many notification records will exist, possibly more than the current count of files on disk. Of course, such a USN- based index construction process also does not work for volumes that have been upgraded from an earlier format that did not have USN logging to a format that now supports USN logging.
In any event, the initial indexing process then continues to FIG. 9, where the Index Server 60 will monitor changes to documents by reading the USN Log 62 beginning at the value in the UsnFlushed table 76, which at this time ordinarily equals UsnMax. However, it is possible that the initial tree traversal was not successfully completed. Thus, beginning at step 900 of FIG. 9, the USN value is read from the UsnFlushed table 76 and tested to determine if this value equal zero. If zero, this indicates that the tree traversal was not successfully completed (i.e., step 510 did not properly execute following a successful tree traversal) . If so, a tree traversal is again attempted. Note that it is possible to checkpoint a tree traversal as an optimization, such that if the tree traversal fails, when restarting the tree traversal (when the UsnMax is still zero) , it is not necessary to start from the very beginning. For example, the sub-directories that have been successfully traversed can be persistently noted in a table or the like on disk. Then, if there is a crash before the tree traversal completes, the table is read from disk, and noted directories need not be traversed again. The restart process can be refined to require less work by using more directory levels.
Ordinarily, the initial tree traversal is successful, and thus the USN does not equal zero at step 900 whereby the process branches to step 902. At step 902, the StartUsn parameter is set equal to the value in the USN Log 62, so that the USN log 62 will be read from the last- indexed USN forward, that is, beginning at UsnMax, The process continues to FIG. 7 wherein the USN records will be read and indexed in keeping with the invention. Note that changes to documents may have occurred between the time that UsnMax was written to the UsnFlushed table 76 (step 506) and the time that step 802 was executed, whereby the value in the UsnFlushed table 76 is no longer the maximum USN in the USN Log 62. If so, the notification records are then read and indexed as described below with respect to FIGS. 7 - 8. It also frequently occurs that no new USN notification records greater than or equal to UsnMax are present in the USN Log 62, i.e., no new records have been added because no documents have yet changed. In keeping with the invention, when there are no notifications pending, Index Server 60 runs in the background waiting for notifications of document changes. Index Server 60 may wait for notifications in one of two ways. First, the wait can be implemented by polling, whereby Index Server 60 periodically checks if there are new USN notifications. More preferably, however, the wait is accomplished by blocking where a separate thread waits until it is signaled that there is a new USN notification.
FIGS. 7 - 8 generally represent the Index Server 60 process during its typical operation. Beginning at step 700, Index Server 60 creates a separate thread that waits for a new USN notification (or periodically polls for notifications) . Note that if the polling model is used, Index Server 60 performs its other operations between polling operations, such as periodically serializing the ChangeList 72 to the ChangeLog 74 (steps 706 - 712) and indexing files based on any change notifications serialized in the ChangeLog 74 (steps 800 - 806) . Whether by polling or blocking, if a new USN notification (or other message such as an error code) is received, step 702 tests whether the notification is a valid notification corresponding to a changed document, or an indication of an error.
In the typical situation where a notification is received and no error is present, step 702 branches to step 704 where the USN notification record is placed in the in- memory-linked ChangeList (FIFO queue) 70. As previously described, the in-memory ChangeList 70 is periodically serialized into the persistent ChangeLog 74. To this end, step 706 detects the appropriate period for serializing, and until the period is reached returns to step 700 to await and queue new notifications. When the cycle for serialization is reached, step 706 branches to step 708 wherein the ChangeList 70 is serialized into the persistent ChangeLog 74. Then, at step 710, the ChangeList 70 is moved into the in-memory, serialized ChangeList (cache) 75 and the ChangeList 70 is emptied. Of course, the serialization period need not be an actual time duration, but can alternatively be based on some other factor, such as the number of notifications in the ChangeList 70. Once the change list has been emptied, step 710 writes the number of the last USN that was serialized into the UsnFlushed table 76.
FIG. 8 represents the general re-indexing operation based on the USN notification records serialized into the ChangeLog 74. Note that because indexing preferably executes on a separate thread than the thread that waits for notifications, the steps in FIG. 8 run in parallel with those in FIG. 7. Alternatively, in the polling model, the steps of FIG. 8 can be integrated with those in FIG. 7 such as by executing steps 800 - 806 while awaiting new USN notifications and between periodic serializing times. In any event, step 800 determines if a serialized notification is pending in the ChangeLog 74, and if not, returns to wait for one or more notification records. Note that the wait for new records in the persistent ChangeLog 74 is not the same as the wait for new USN notification records in the USN Log 62. If at least one record is present, the first notification record is read from the head of the FIFO ChangeLog 74 (or the cache 75, if records are present therein) at step 802. Then, the indexes 68 are updated according to the document identified in the notification record at step 804, and if successfully updated, the notification record is removed from the head of the ChangeLog 74 (or the cache 75) at step 806. Step 806 returns to step 800 where the next notification record, if any, is processed in the same manner.
Before a planned shutdown such as a shutdown due to low resource conditions, Index Server 60 will empty the ChangeList 70 and stop reading USN notifications from the USN log 62. Similarly after an abrupt shutdown to do a crash, Index Server 60 will be unable to read USN notifications from the USN log 62. However the file system 64 is responsible for adding notification records to the USN log 62, and thus notification records will continue to be added to the USN log 62 even when Index Server 60 shuts down.
In accordance with another aspect of the present invention, after Index Server 60 is restarted, (e.g., the low resource situation is cleared) , Index Server 60 returns to the restart process of FIG. 9, i.e, Index Server 60 reads the last successfully processed USN from the UsnFlushed table 76 and starts reading the USN Log 62 from that USN value onwards.
Note that at step 702 of FIG. 7, an error may result from an attempt to read a record from a portion of the USN Log 62 that is no longer present. More particularly, since the file system 64 creates and appends a new notification record to the USN Log 62 for every document change, the USN Log 62 continues to increase in size. In order to conserve space, the maximum size of the USN Log 62, and a size of the USN Log 62 to deallocate when the maximum size is reached, are user-configurable. As a result, the file system 64 may periodically deallocate a portion of the USN Log 62 from the front of the USN Log 62. Deallocation from the front of a file is described in U.S. Patent Application Serial No. 08/813,621, entitled "Method and Mechanism for Freeing Disk Space in a File System, " assigned to the assignee of the present invention and herein incorporated by reference in its entirety. Deallocated USN records are no longer available for reading, and an error code (identifying a failed attempt to read deallocated space) is returned when attempting to read a deallocated USN record. In a situation where there is a large number of notifications received by Index Server 60 in a very short time, whereby Index Server 60 is unable to keep up with the pace of incoming notifications, and a corresponding portion of the USN Log 62 has been deallocated, then Index Server 60 will receive the appropriate error code. In such an event, Index Server 60 needs to update its indexes, but cannot use the now- deallocated USN Log 62. Accordingly, to accomplish the updating, Index Server 60 performs a seen-array-proceessing tree traversal by performing the steps of FIG. 6. However, step 740 first saves the maximum USN in the USN Log 62 in the UsnMax variable. Then, a USN of zero is written to the UsnFlushed table 76 at step 742. As previously described, a USN of zero UsnFlushed table 76 acts as a flag to indicate whether the traversal is successful, i.e., if successful the USN in the UsnFlushed table 76 is changed from zero.
Next, the seen array processing is performed, shown in more detail in FIG. 6 beginning at step 600. First at step 600, an array of Boolean flags called the seen array, one flag for each document in the indexes, has each of its entries set equal to a value of doc_not_seen. Then at step 602 a document in the filesystem 62 is selected using a tree traversal algorithm, for example by using a well-known algorithm such as breadth-first or depth-first searching. Step 604 tests whether the selected document is present in the internal indexes 68. If the document is not present in the internal indexes 68, then it is a new document that was added while Index Server 60 was not able to process the notifications. Accordingly, step 606, which adds non- indexed documents to a to-be-indexed list, will be performed for such a document. If the document was in one or more of the indexes 68, step 604 branches to step 608 whereby the document's seen array flag is set equal to doc_seen. A synchronization test is performed at step 610 compare the time at which the document was last updated in the index (the index write time) against the last time the document was written in the filesystem 64. If the write times indicate synchronization, the process branches to step 612. If the two are not synchronized, step 610 branches to step 606 where the document is added to the to-be-indexed list, and then the process continues to step 612. Step 612 repeats the seen-array-processing by returning to step 602 until no additional documents are found in the tree traversal. Once all documents have been scanned, the process continues to step 614. As can be appreciated, documents which are in the indexes 68 but are not found in a traversal of an appropriate tree were deleted while Index Server 60 was unable to receive USN notification records corresponding to the deletions. Accordingly, at step 614 any documents whose flags are still unchanged from doc-not- seen are removed from the indexes 68. Lastly, at step 616, any documents in the to-be-indexed list are indexed by Index Server 60.
Step 616 returns to step 744 of FIG. 7, wherein the saved UsnMax value is written to the UsnFlushed table 76. Note that if the tree traversal was not performed successfully, a zero remains in the UsnFlushed table 76, whereby the tree traversal would be attempted again. The Index Server process 60 then continues to FIG. 9, where the Index Server 60 will monitor changes to documents by reading the USN Log 62 beginning at the value in the UsnFlushed table 76, which at this time ordinarily equals UsnMax.
Even though care (e.g., transactional copying) is taken to keep persistent data structures such as the indexes 68 and the ChangeLog 74 from getting corrupted, Index Server 60 can handle the rare case wherein such persistent data structures become corrupted. A test for such corruption can be performed wherever appropriate, such as by file system checks, or by Index Server 60 itself. As generally shown in FIG. 10, when Index Server 60 becomes aware of the corruption at step 1000, Index Server 60 deletes all its internal indexes 68 at step 1002 and empties the ChangeList 70 and ChangeLog 74 at step 1004. Then, a USN of zero is written to the UsnFlushed table 76 and an. initial tree traversal of the volume is done, just as if the volume were being indexed for the very first time. As can be readily appreciated, this properly reconstructs the indexes 68.
As another enhancement, Index Server 60 allows just a portion of the volume to be indexed. For example, instead of indexing the entire c:\ volume, a user may wish to index only the directories c:\dirl, c:\dir2 and the directory trees rooted under those two directories. In such an event, instead of traversing the entire volume during the initial tree traversal, only the relevant directory trees need to be traversed. Since the NT filesystem 64 maintains a USN log 62 for the entire volume on a per volume basis, only those USN notifications that refer to documents in the specified list of directories need to be processed. By way of example, assume the USN notification record contains the full path of the document, such as c:\dirl\patent.doc, and further that the list of directories being indexed is {c:\dirl, c:\dir2}. Since c:\dirl is a prefix of c:\dirl\patent.doc, this particular USN notification record should be processed. However, for a document such as c:\dir3\review.doc, there is no prefix match, and thus any USN notification record therefor should be ignored. To filter only relevant documents and/or notification records, a filtering mechanism may be used, such as described in U.S. Patent Application Serial No. 08/813,618, entitled "Scope Testing of Documents in a Search Engine Using Document to Folder Mapping, " assigned to the assignee of the present invention and herein incorporated by reference in its entirety. Such a mechanism allows a list of directories to be compiled for inclusive filtering based thereon, and another such list for exclusive filtering.
Moreover, Index Server 60 allows the list of directories being indexed to be changed dynamically when the Index Server 60 is running. To this end, when a directory tree is newly added to an index 68, a tree traversal (as described above) is performed to add documents in that tree to the indexes 68. Then, the directory is added to the list of directories that are used to filter USN notification records. Conversely, when a directory tree is removed, the tree is removed from the list of directories that are used to filter USN notification records. Seen-array processing as previously described with reference to FIG. 6 is then performed to remove all documents in that directory tree from Index Server's internal indexes 68.
Although not necessary to the invention, Index Server 60 can index more than one volume, e.g., c:\ and d:\. If both volumes are NTFS volumes, the NT file system 64 provides a separate USN log 62 for each NT volume, and USN notification records from two different volumes are independent from one another. To maintain the independent relationship, Index Server 60 assigns a unique identifier, called a Volumeld, to each volume. When a USN notification is read from the USN log 62, it is tagged with the unique Volumeld for that volume. The format of the UsnFlushed table 76 is arranged to store a UsnMax for every volume that is being indexed, and to grow as new volumes are indexed. When the ChangeList 70 is serialized into the ChangeLog 74, the UsnMax for each Volumeld is written to the UsnFlushed table 76. If there are no notifications for a given Volumeld, then the UsnMax for that Volumeld is not updated. Note that the volumes indexed by Index Server 60 need not be restricted to local volumes only, but instead may be remote shares in the UNC naming convention, i.e. \\server_name\share . Each remote share is also assigned a unique Volumeld.
Lastly, as shown in FIG. 11, Index Server 60 and the present invention are sufficiently flexible and extensible to allow the combination of the scan-based FindFirstChangeNotification and FindNextChangeNotification monitoring scheme with the USN-based monitoring scheme of the present invention. The invention is also compatible with file systems that provide no notification mechanism, whereby indexes for the files thereof are updated by periodically scanning those files for changes. The Windows NT operating system allows for simultaneously loaded different file systems, such as NTFS and FAT, on a volume by volume basis. To this end, Index Server 60 persistently remembers which monitoring scheme is being used for a given volume and uses that monitoring scheme after startup. Of course, the significant speed and efficiency advantages described herein are found with a USN-based monitoring scheme or the like.
As can be seen from the foregoing detailed description, there is provided an improved method and system for determining which documents have changed between a shutdown and start-up of a file system monitoring program such as a document indexing program. The method and system determines changed documents in a substantially faster manner, while making the indexing process more efficient. The method and system is reliable, robust, efficient, flexible and extensible.
While the invention is susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that there is no intention to limit the invention to the specific forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions, and equivalents falling within the spirit and scope of the invention.

Claims

WHAT IS CLAIMED IS:
1. In a computer system having a file system of documents, wherein the file system stores document change information in a persistent log of records, a method of updating at least one other file of document information, comprising the steps of, reading a record from the persistent log, processing the record to obtain change information about a document and a sequence number representative of the position of the document change information relative to other document change information, updating the other file based on the change information of the document, and recording the sequence number of the record in a persistent storage.
2. The method of claim 1 wherein the step of processing the record includes the steps of writing the record to a memory, periodically serializing the record into a persistent data structure and reading the record from the persistent data structure.
3. The method of claim 1 wherein the step of processing the record includes the steps of writing the record to a memory, periodically serializing the record into a cache, structure and reading the record from the cache.
4. The method of claim 1 wherein the records are serially added to the log file and the sequence number corresponds to a location of each record in the log file.
5. The method of claim 1 wherein the step of updating the other file includes the steps of obtaining a document identifier and the change information from the record that was read from the persistent data structure, providing the document identifier and the change information to a search engine for updating the other file, and removing the record from the persistent data storage.
6. The method of claim 1 further comprising the steps of retrieving the sequence number of the record from the persistent storage, and reading a record from the persistent log based on the sequence number retrieved.
7. The method of claim 6 further comprising the steps of reading at least one other record from the persistent log that is later in sequence than the record corresponding to the retrieved sequence number, and processing that record to obtain change information about a document corresponding thereto.
8. The method of claim 1 further comprising the steps of receiving directory information from a user, reading a plurality of sequential records from the log file, filtering the plurality of records based on the directory information to obtain a subset of records, and processing the subset of records to obtain change information about a plurality of documents and sequence numbers representative of the location of the records in the log file.
9. The method of claim 1 wherein the step of reading a record from the persistent log includes the steps of waiting for a notification of a new record added to the persistent log, and receiving the notification.
10. The method of claim 9 wherein the step of waiting for the notification of the new record comprises the step of polling for the notification.
11. The method of claim 9 wherein the step of waiting for the notification of the new record comprises the step of awaiting the receipt of a signal indicative of the new record.
12. The method of claim 1 wherein the other file is an index containing document properties, and wherein the step of updating the other file includes the step of modifying the index based on a changed property of the document .
13. The method of claim 1 wherein the documents are stored on a plurality of volumes, wherein the file system serially stores document change information in a plurality of persistent logs of records, with each log corresponding to a volume, and further comprising the step of attaching a volume identifier to each record read from one of the logs.
14. In a computer system having a file system of documents, wherein the file system stores information about changed documents in a persistent log of records, and wherein each record contains a document identifier corresponding to the document, a system for of updating at least one index which includes document properties, comprising, means for receiving a notification of a new record in the log, an interface for reading the new record from the persistent log, means for processing the record to obtain the document identifier and change information about the document corresponding thereto, and a search engine for updating the index based on the document identifier and the change information.
15. The system of claim 14 wherein each record further includes a sequence number indicative of the relative position of the record in the log, and wherein the means for processing the record includes means for obtaining the sequence number therefrom, and further comprising a persistent data structure for recording the sequence number of the new record.
16. The system of claim 15 further comprising means for retrieving the sequence number from the persistent data structure, and means for providing a value based on that sequence number to the interface for reading a record corresponding to the value.
17. The system of claim 15 wherein the documents are stored on a plurality of separate volumes and wherein the file system serially stores the document change information in a plurality of persistent logs of records, with each log corresponding to a volume, further comprising means for attaching a volume identifier to each record read from one of the logs, and wherein the persistent data structure for recording the sequence number of the new record includes a plurality of locations for recording a sequence number for each separate volume.
18. The system of claim 15 further comprising at least one other file system that does not store information about changed documents in a persistent log of records, and further comprising means for receiving other change notifications from the other file system and means for updating another index based on the other change notifications.
19. The system of claim 14 further comprising a memory for storing the record read from the log, means for serializing the record into a persistent data structure, and wherein the means for processing the record includes means for reading the persistent data structure.
20. The system of claim 14 wherein the means for receiving a notification includes means for receiving a signal from the file system.
21. The system of claim 14 wherein the means for receiving a notification includes a polling mechanism.
22. In a computer system having a file system of documents, wherein the file system stores document change information in a persistent log of records, a method of updating at least one index of document information, comprising the steps of, reading a record from the persistent log, processing the record to obtain change information about a document and a sequence number representative of the relative position of the record in the log file, updating the index based on the change information of the document, and recording the sequence number of the record in a persistent data structure.
23. The method of claim 22 further comprising the steps of retrieving the sequence number of the record from the persistent data structure, and reading a record from the persistent log based on the sequence number retrieved.
24. The method of claim 23 further comprising the steps of reading at least one other record from the persistent log that is later in sequence than the record based on to the retrieved sequence number, and processing the other record to obtain change information about a document corresponding thereto.
25. The method of claim 22 further comprising the steps of receiving directory information from a user, reading a plurality of sequential records from the log file, filtering the plurality of records based on the directory information to obtain a subset of records, processing the subset of records to obtain change information about a plurality of documents and sequence numbers representative of the location of the records in the log file, updating the index based on the change information of the documents, and recording the sequence number of the record having the highest sequence number in a persistent data structure.
26. The method of claim 22 further comprising the steps of waiting for a notification of a new record added to the persistent log and receiving the notification.
27. The method of claim 26 wherein the step of waiting for the notification of the new record comprises the step of polling the file system for the notification.
28. The method of claim 26 wherein the step of waiting for the notification of the new record comprises the step of awaiting the receipt of a signal from the file system.
29. The method of claim 22 wherein the step of processing the record includes the steps of writing the record to a memory, periodically serializing the record into a persistent data structure and reading the record from the persistent data structure.
30. The method of claim 29 wherein the step of updating the index includes the steps of obtaining a document identifier and the change information from the record that was read from the persistent data structure, providing the document identifier and the change information to a search engine for updating the indexes, and removing the record from the persistent data structure,
31. The method of claim 22 wherein the documents are stored on a plurality of volumes and wherein the file system serially stores document change information in a plurality of persistent logs of records, with each log corresponding to a volume, further comprising the step of attaching a volume identifier to each record read from one of the logs, the volume identifier corresponding to the volume of that log, and wherein the step of recording the sequence number of the record in a persistent data structure includes the step of recording the sequence number in association with the volume identifier.
32. The method of claim 22 further comprising the steps of detecting an error when reading a record, and in response, determining a set of documents indexed in the index, selecting a tree of documents in the file system and selecting each document in that tree, determining if each selected document is indexed in the index, and if not, indexing that document in the index, determining if a document is indexed in the index but is not in the tree and if so, removing the indexing of that document from the index, and if a selected document is in the tree and is indexed in the index, determining if the document in the tree is synchronized with the document in the index, and if not, re-indexing that document.
33. The method of claim 22 further comprising the steps of detecting a corrupt index, and reconstructing the index by scanning a tree of documents in the file system.
34. In a computer system having a source of changeable data wherein change information about changes to the changeable data are provided in a persistent log of records, a method of updating a data structure, comprising the steps of, reading a record from the persistent log, processing the record to obtain data change information and a sequence number representative of the position of that change information relative to other change information, updating the data structure based on the change information of the document, and recording the sequence number of the record in a persistent storage.
35. The method of claim 34 wherein the step of processing the record includes the steps of writing the record to a memory, periodically serializing the record into a persistent data structure and reading the record from the persistent data structure.
36. The method of claim 34 wherein the source of data is a file system.
37. The method of claim 34 wherein the source of data is a database.
38. The method of claim 34 wherein the data structure is a file.
39. The method of claim 34 wherein the data structure is an index.
40. The method of claim 39 wherein the step of updating the other file includes the steps of obtaining a document identifier and the change information from the record that was read from the persistent data structure, providing the document identifier and the change information to a search engine for updating the index, and removing the record from the persistent data storage.
PCT/US1998/019048 1997-09-17 1998-09-11 Monitoring document changes with persistent update sequence numbers WO1999014692A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP98946055A EP1023677A1 (en) 1997-09-17 1998-09-11 Monitoring document changes with persistent update sequence numbers
JP2000512158A JP3556170B2 (en) 1997-09-17 1998-09-11 Method and system for monitoring document changes using persistent update sequence numbers

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/932,714 US6067541A (en) 1997-09-17 1997-09-17 Monitoring document changes in a file system of documents with the document change information stored in a persistent log
US08/932,714 1997-09-17

Publications (1)

Publication Number Publication Date
WO1999014692A1 true WO1999014692A1 (en) 1999-03-25

Family

ID=25462783

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1998/019048 WO1999014692A1 (en) 1997-09-17 1998-09-11 Monitoring document changes with persistent update sequence numbers

Country Status (4)

Country Link
US (1) US6067541A (en)
EP (1) EP1023677A1 (en)
JP (1) JP3556170B2 (en)
WO (1) WO1999014692A1 (en)

Cited By (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002318809A (en) * 2001-04-19 2002-10-31 Nec Corp Index construction type search engine and index construction method and program
EP1476824A1 (en) * 2002-01-15 2004-11-17 Network Appliance, Inc. Active file change notification
EP1609079A2 (en) * 2003-02-07 2005-12-28 Systems Research & Development Data set comparison and net change processing
WO2006059251A3 (en) * 2004-08-19 2006-10-05 Copernic Technologies Inc Electronic mail indexing systems and methods
WO2007062254A2 (en) * 2005-11-28 2007-05-31 Commvault Systems, Inc. Systems and methods for data management
EP1974296A1 (en) * 2005-12-19 2008-10-01 Commvault Systems, Inc. Systems and methods for performing data replication
US7536291B1 (en) 2004-11-08 2009-05-19 Commvault Systems, Inc. System and method to support simulated storage operations
US7617253B2 (en) 2005-12-19 2009-11-10 Commvault Systems, Inc. Destination systems and methods for performing data replication
US7617262B2 (en) 2005-12-19 2009-11-10 Commvault Systems, Inc. Systems and methods for monitoring application data in a data replication system
US7636743B2 (en) 2005-12-19 2009-12-22 Commvault Systems, Inc. Pathname translation in a data replication system
US7651593B2 (en) 2005-12-19 2010-01-26 Commvault Systems, Inc. Systems and methods for performing data replication
US20100088318A1 (en) * 2006-10-06 2010-04-08 Masaki Kan Information search system, method, and program
CN102799380A (en) * 2012-07-13 2012-11-28 杭州边锋网络技术有限公司 Desktop shortcut control system and method
US8510516B2 (en) 2003-04-03 2013-08-13 Commvault Systems, Inc. Systems and methods for sharing media in a computer network
US8868494B2 (en) 2010-03-29 2014-10-21 Commvault Systems, Inc. Systems and methods for selective data replication
US8886595B2 (en) 2003-11-13 2014-11-11 Commvault Systems, Inc. System and method for performing an image level snapshot and for restoring partial volume data
US8892523B2 (en) 2012-06-08 2014-11-18 Commvault Systems, Inc. Auto summarization of content
US8930319B2 (en) 1999-07-14 2015-01-06 Commvault Systems, Inc. Modular backup and retrieval system used in conjunction with a storage area network
US8930496B2 (en) 2005-12-19 2015-01-06 Commvault Systems, Inc. Systems and methods of unified reconstruction in storage systems
US8935210B2 (en) 2005-12-19 2015-01-13 Commvault Systems, Inc. Systems and methods for performing replication copy storage operations
US9003117B2 (en) 2003-06-25 2015-04-07 Commvault Systems, Inc. Hierarchical systems and methods for performing storage operations in a computer network
US9002799B2 (en) 2005-12-19 2015-04-07 Commvault Systems, Inc. Systems and methods for resynchronizing information
US9003374B2 (en) 2006-07-27 2015-04-07 Commvault Systems, Inc. Systems and methods for continuous data replication
US9003137B2 (en) 2000-01-31 2015-04-07 Commvault Systems, Inc. Interface systems and methods for accessing stored data
US9002785B2 (en) 2010-03-30 2015-04-07 Commvault Systems, Inc. Stubbing systems and methods in a data replication environment
US9020990B2 (en) 2003-11-13 2015-04-28 Commvault Systems, Inc. Stored data reverification management system and method
US9021198B1 (en) 2011-01-20 2015-04-28 Commvault Systems, Inc. System and method for sharing SAN storage
US9047296B2 (en) 2009-12-31 2015-06-02 Commvault Systems, Inc. Asynchronous methods of data classification using change journals and other data structures
US9047357B2 (en) 2008-12-10 2015-06-02 Commvault Systems, Inc. Systems and methods for managing replicated database data in dirty and clean shutdown states
US9104340B2 (en) 2003-11-13 2015-08-11 Commvault Systems, Inc. Systems and methods for performing storage operations using network attached storage
US9122600B2 (en) 2006-12-22 2015-09-01 Commvault Systems, Inc. Systems and methods for remote monitoring in a computer network
US9158835B2 (en) 2006-10-17 2015-10-13 Commvault Systems, Inc. Method and system for offline indexing of content and classifying stored data
US9170890B2 (en) 2002-09-16 2015-10-27 Commvault Systems, Inc. Combined stream auxiliary copy system and method
US9262435B2 (en) 2013-01-11 2016-02-16 Commvault Systems, Inc. Location-based data synchronization management
US9286398B2 (en) 2000-01-31 2016-03-15 Commvault Systems, Inc. Systems and methods for retrieving data in a computer network
US9298715B2 (en) 2012-03-07 2016-03-29 Commvault Systems, Inc. Data storage system utilizing proxy device for storage operations
US9342537B2 (en) 2012-04-23 2016-05-17 Commvault Systems, Inc. Integrated snapshot interface for a data storage system
US9448731B2 (en) 2014-11-14 2016-09-20 Commvault Systems, Inc. Unified snapshot storage management
US9471578B2 (en) 2012-03-07 2016-10-18 Commvault Systems, Inc. Data storage system utilizing proxy device for storage operations
US9495382B2 (en) 2008-12-10 2016-11-15 Commvault Systems, Inc. Systems and methods for performing discrete data replication
US9495251B2 (en) 2014-01-24 2016-11-15 Commvault Systems, Inc. Snapshot readiness checking and reporting
US9509652B2 (en) 2006-11-28 2016-11-29 Commvault Systems, Inc. Method and system for displaying similar email messages based on message contents
US9507525B2 (en) 2004-11-05 2016-11-29 Commvault Systems, Inc. Methods and system of pooling storage devices
US9632874B2 (en) 2014-01-24 2017-04-25 Commvault Systems, Inc. Database application backup in single snapshot for multiple applications
US9639426B2 (en) 2014-01-24 2017-05-02 Commvault Systems, Inc. Single snapshot for multiple applications
US9639529B2 (en) 2006-12-22 2017-05-02 Commvault Systems, Inc. Method and system for searching stored data
US9648105B2 (en) 2014-11-14 2017-05-09 Commvault Systems, Inc. Unified snapshot storage management, using an enhanced storage manager and enhanced media agents
US9740764B2 (en) 2008-01-30 2017-08-22 Commvault Systems, Inc. Systems and methods for probabilistic data classification
US9753812B2 (en) 2014-01-24 2017-09-05 Commvault Systems, Inc. Generating mapping information for single snapshot for multiple applications
US9774672B2 (en) 2014-09-03 2017-09-26 Commvault Systems, Inc. Consolidated processing of storage-array commands by a snapshot-control media agent
US9886346B2 (en) 2013-01-11 2018-02-06 Commvault Systems, Inc. Single snapshot for multiple agents
US9898213B2 (en) 2015-01-23 2018-02-20 Commvault Systems, Inc. Scalable auxiliary copy processing using media agent resources
US9904481B2 (en) 2015-01-23 2018-02-27 Commvault Systems, Inc. Scalable auxiliary copy processing in a storage management system using media agent resources
US10042716B2 (en) 2014-09-03 2018-08-07 Commvault Systems, Inc. Consolidated processing of storage-array commands using a forwarder media agent in conjunction with a snapshot-control media agent
US10372675B2 (en) 2011-03-31 2019-08-06 Commvault Systems, Inc. Creating secondary copies of data based on searches for content
US10379988B2 (en) 2012-12-21 2019-08-13 Commvault Systems, Inc. Systems and methods for performance monitoring
US10389810B2 (en) 2016-11-02 2019-08-20 Commvault Systems, Inc. Multi-threaded scanning of distributed file systems
US10503753B2 (en) 2016-03-10 2019-12-10 Commvault Systems, Inc. Snapshot replication operations based on incremental block change tracking
US10540516B2 (en) 2016-10-13 2020-01-21 Commvault Systems, Inc. Data protection within an unsecured storage environment
US20200110819A1 (en) * 2018-10-08 2020-04-09 International Business Machines Corporation Low cost fast recovery index in storage class memory
US10642886B2 (en) 2018-02-14 2020-05-05 Commvault Systems, Inc. Targeted search of backup data using facial recognition
US10732885B2 (en) 2018-02-14 2020-08-04 Commvault Systems, Inc. Block-level live browsing and private writable snapshots using an ISCSI server
US10922189B2 (en) 2016-11-02 2021-02-16 Commvault Systems, Inc. Historical network data-based scanning thread generation
US10984041B2 (en) 2017-05-11 2021-04-20 Commvault Systems, Inc. Natural language processing integrated with database and data storage management
US11010261B2 (en) 2017-03-31 2021-05-18 Commvault Systems, Inc. Dynamically allocating streams during restoration of data
US11042318B2 (en) 2019-07-29 2021-06-22 Commvault Systems, Inc. Block-level data replication
US11159469B2 (en) 2018-09-12 2021-10-26 Commvault Systems, Inc. Using machine learning to modify presentation of mailbox objects
US11442820B2 (en) 2005-12-19 2022-09-13 Commvault Systems, Inc. Systems and methods of unified reconstruction in storage systems
US11494417B2 (en) 2020-08-07 2022-11-08 Commvault Systems, Inc. Automated email classification in an information management system
US11593223B1 (en) 2021-09-02 2023-02-28 Commvault Systems, Inc. Using resource pool administrative entities in a data storage management system to provide shared infrastructure to tenants
US11809285B2 (en) 2022-02-09 2023-11-07 Commvault Systems, Inc. Protecting a management database of a data storage management system to meet a recovery point objective (RPO)

Families Citing this family (119)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6604118B2 (en) 1998-07-31 2003-08-05 Network Appliance, Inc. File system image transfer
US7174352B2 (en) * 1993-06-03 2007-02-06 Network Appliance, Inc. File system image transfer
EP0979497A1 (en) * 1997-10-08 2000-02-16 Koninklijke Philips Electronics N.V. Vocabulary and/or language model training
US6516351B2 (en) 1997-12-05 2003-02-04 Network Appliance, Inc. Enforcing uniform file-locking for diverse file-locking protocols
US6269362B1 (en) * 1997-12-19 2001-07-31 Alta Vista Company System and method for monitoring web pages by comparing generated abstracts
WO1999042934A2 (en) * 1998-02-20 1999-08-26 Storm Systems, Llc File system performance enhancement
JPH11261556A (en) * 1998-03-16 1999-09-24 Fujitsu Ltd Information distribution receiving system, information distributing device, information receiver and information distribution/receiving method
JPH11328851A (en) * 1998-05-19 1999-11-30 Sony Corp Terminal device and reproduction method
US6216123B1 (en) * 1998-06-24 2001-04-10 Novell, Inc. Method and system for rapid retrieval in a full text indexing system
US6269459B1 (en) * 1998-08-25 2001-07-31 Advanced Micro Devices, Inc. Error reporting mechanism for an AGP chipset driver using a registry
TW428146B (en) * 1999-05-05 2001-04-01 Inventec Corp Data file updating method by increment
US6457015B1 (en) * 1999-05-07 2002-09-24 Network Appliance, Inc. Adaptive and generalized status monitor
US6681370B2 (en) * 1999-05-19 2004-01-20 Microsoft Corporation HTML/XML tree synchronization
US7039860B1 (en) * 1999-10-01 2006-05-02 Netspinner Solutions As Creating web pages category list prior to the list being served to a browser
US6366907B1 (en) * 1999-12-15 2002-04-02 Napster, Inc. Real-time search engine
US6526418B1 (en) * 1999-12-16 2003-02-25 Livevault Corporation Systems and methods for backing up data files
US6625623B1 (en) * 1999-12-16 2003-09-23 Livevault Corporation Systems and methods for backing up data files
US8676667B1 (en) * 2000-02-24 2014-03-18 Richard Paiz Parallel computer network and method for real time financial resource management, inventory control, and online purchasing
AU2001240061A1 (en) * 2000-03-09 2001-09-17 The Web Access, Inc. Method and apparatus for organizing data by overlaying a searchable database with a directory tree structure
US7822735B2 (en) * 2000-05-29 2010-10-26 Saora Kabushiki Kaisha System and method for saving browsed data
US7313588B1 (en) * 2000-07-13 2007-12-25 Biap Systems, Inc. Locally executing software agent for retrieving remote content and method for creation and use of the agent
US7062486B2 (en) * 2000-12-05 2006-06-13 International Business Machines Corporation Method, system and program product for enabling authorized access and request-initiated translation of data files
US6847983B2 (en) 2001-02-28 2005-01-25 Kiran Somalwar Application independent write monitoring method for fast backup and synchronization of open files
US6985915B2 (en) 2001-02-28 2006-01-10 Kiran Somalwar Application independent write monitoring method for fast backup and synchronization of files
US20020147775A1 (en) * 2001-04-06 2002-10-10 Suda Aruna Rohra System and method for displaying information provided by a provider
US20020169872A1 (en) * 2001-05-14 2002-11-14 Hiroshi Nomiyama Method for arranging information, information processing apparatus, storage media and program tranmission apparatus
US7236940B2 (en) 2001-05-16 2007-06-26 Perot Systems Corporation Method and system for assessing and planning business operations utilizing rule-based statistical modeling
US7831442B1 (en) 2001-05-16 2010-11-09 Perot Systems Corporation System and method for minimizing edits for medical insurance claims processing
US7822621B1 (en) 2001-05-16 2010-10-26 Perot Systems Corporation Method of and system for populating knowledge bases using rule based systems and object-oriented software
US7085932B1 (en) * 2001-05-25 2006-08-01 Evresearch, Ltd. Extensible and flexible electronic information tracking systems and methods
US7216088B1 (en) * 2001-07-26 2007-05-08 Perot Systems Corporation System and method for managing a project based on team member interdependency and impact relationships
EP1304626A1 (en) 2001-10-18 2003-04-23 Sun Microsystems, Inc. Managing modified documents
US7313531B2 (en) * 2001-11-29 2007-12-25 Perot Systems Corporation Method and system for quantitatively assessing project risk and effectiveness
JP2003337699A (en) * 2002-03-13 2003-11-28 Saora Inc Information processing device and method, and storage medium with program stored therein
US7120641B2 (en) * 2002-04-05 2006-10-10 Saora Kabushiki Kaisha Apparatus and method for extracting data
US20030195896A1 (en) * 2002-04-15 2003-10-16 Suda Aruna Rohra Method and apparatus for managing imported or exported data
US6857001B2 (en) * 2002-06-07 2005-02-15 Network Appliance, Inc. Multiple concurrent active file systems
US6976038B2 (en) * 2002-10-17 2005-12-13 International Business Machines Corporation Method and apparatus for real time creation and modification of a change log for multi-server synchronization
WO2004059462A1 (en) * 2002-12-27 2004-07-15 Internet Forex Products Inc. Updating variable data at clients
US8131691B1 (en) * 2002-12-30 2012-03-06 Symantec Operating Corporation System and method for updating a search engine index based on which files are identified in a file change log
US7890469B1 (en) 2002-12-30 2011-02-15 Symantec Operating Corporation File change log
US7228299B1 (en) * 2003-05-02 2007-06-05 Veritas Operating Corporation System and method for performing file lookups based on tags
WO2004111877A1 (en) * 2003-05-19 2004-12-23 Saora Kabushiki Kaisha Method for processing information, apparatus therefor and program therefor
US7225208B2 (en) * 2003-09-30 2007-05-29 Iron Mountain Incorporated Systems and methods for backing up data files
US20050086192A1 (en) * 2003-10-16 2005-04-21 Hitach, Ltd. Method and apparatus for improving the integration between a search engine and one or more file servers
US7203712B2 (en) * 2004-02-26 2007-04-10 International Business Machines Corporation Algorithm to find LOB value in a relational table after key columns have been modified
US8688634B2 (en) * 2004-02-27 2014-04-01 International Business Machines Corporation Asynchronous peer-to-peer data replication
US7490083B2 (en) 2004-02-27 2009-02-10 International Business Machines Corporation Parallel apply processing in data replication with preservation of transaction integrity and source ordering of dependent updates
US7636710B2 (en) * 2004-03-04 2009-12-22 Symantec Operating Corporation System and method for efficient file content searching within a file system
US7130971B2 (en) * 2004-03-30 2006-10-31 Hitachi, Ltd. Assuring genuineness of data stored on a storage device
US20050289107A1 (en) * 2004-06-25 2005-12-29 Yan Arrouye Methods and systems for managing data
US7693856B2 (en) * 2004-06-25 2010-04-06 Apple Inc. Methods and systems for managing data
US20050289127A1 (en) * 2004-06-25 2005-12-29 Dominic Giampaolo Methods and systems for managing data
US8150837B2 (en) * 2004-06-25 2012-04-03 Apple Inc. Methods and systems for managing data
US8521720B2 (en) * 2004-06-25 2013-08-27 Apple Inc. Methods and systems for managing data
US8131674B2 (en) 2004-06-25 2012-03-06 Apple Inc. Methods and systems for managing data
US7730012B2 (en) * 2004-06-25 2010-06-01 Apple Inc. Methods and systems for managing data
US7774326B2 (en) 2004-06-25 2010-08-10 Apple Inc. Methods and systems for managing data
US8156123B2 (en) * 2004-06-25 2012-04-10 Apple Inc. Method and apparatus for processing metadata
US7962449B2 (en) * 2004-06-25 2011-06-14 Apple Inc. Trusted index structure in a network environment
US9081872B2 (en) 2004-06-25 2015-07-14 Apple Inc. Methods and systems for managing permissions data and/or indexes
US8538997B2 (en) 2004-06-25 2013-09-17 Apple Inc. Methods and systems for managing data
US7437358B2 (en) 2004-06-25 2008-10-14 Apple Inc. Methods and systems for managing data
JP2006053745A (en) * 2004-08-11 2006-02-23 Saora Inc Data processing method, device and program
US7487138B2 (en) * 2004-08-25 2009-02-03 Symantec Operating Corporation System and method for chunk-based indexing of file system content
US20060106896A1 (en) * 2004-11-12 2006-05-18 International Business Machines Corporation System and method for creating list of backup files based upon program properties
US20060259527A1 (en) * 2005-05-13 2006-11-16 Devarakonda Murthy V Changed files list with time buckets for efficient storage management
US20060259521A1 (en) * 2005-05-16 2006-11-16 Anthony Armenta Interface for synchronization of documents between a host computer and a portable device
US7783993B2 (en) * 2005-09-23 2010-08-24 Palm, Inc. Content-based navigation and launching on mobile devices
US7809778B2 (en) * 2006-03-08 2010-10-05 Omneon Video Networks Idempotent journal mechanism for file system
US8108388B2 (en) * 2006-04-26 2012-01-31 Microsoft Corporation Significant change search alerts
US8126874B2 (en) * 2006-05-09 2012-02-28 Google Inc. Systems and methods for generating statistics from search engine query logs
CA2560179A1 (en) * 2006-09-20 2008-03-20 Ibm Canada Limited - Ibm Canada Limitee Temporal model exploring
JP5082409B2 (en) * 2006-12-01 2012-11-28 富士通株式会社 Document management program, document management apparatus, and document management method
US7917516B2 (en) * 2007-06-08 2011-03-29 Apple Inc. Updating an inverted index
KR100912870B1 (en) * 2007-06-12 2009-08-19 삼성전자주식회사 System and method for checking the integrity of contents and meta data
US7849399B2 (en) * 2007-06-29 2010-12-07 Walter Hoffmann Method and system for tracking authorship of content in data
NO327653B1 (en) * 2007-12-20 2009-09-07 Fast Search & Transfer As Procedure for dynamically updating an index and a search engine that implements the same
US8555292B2 (en) 2008-06-27 2013-10-08 Microsoft Corporation Synchronizing communication over shared memory
US8495030B2 (en) 2011-01-06 2013-07-23 International Business Machines Corporation Records declaration filesystem monitoring
US8261030B2 (en) * 2008-11-18 2012-09-04 Microsoft Corporation Using delete notifications to free related storage resources
US8156300B2 (en) * 2008-11-18 2012-04-10 Microsoft Corporation Delete notifications for an entire storage volume
US8255641B2 (en) * 2008-11-18 2012-08-28 Microsoft Corporation Modifying delete notifications in a storage stack
US9378216B2 (en) * 2009-09-29 2016-06-28 Oracle America, Inc. Filesystem replication using a minimal filesystem metadata changelog
US8671265B2 (en) 2010-03-05 2014-03-11 Solidfire, Inc. Distributed data storage system providing de-duplication of data using block identifiers
JP5396314B2 (en) 2010-03-10 2014-01-22 株式会社日立製作所 Unauthorized operation detection system and unauthorized operation detection method
JP5417533B2 (en) * 2010-06-28 2014-02-19 株式会社日立製作所 Computer system management method and client computer
US8533850B2 (en) 2010-06-29 2013-09-10 Hitachi, Ltd. Fraudulent manipulation detection method and computer for detecting fraudulent manipulation
US9268811B1 (en) 2010-10-25 2016-02-23 Symantec Corporation Replay of writes in replication log
US8341134B2 (en) 2010-12-10 2012-12-25 International Business Machines Corporation Asynchronous deletion of a range of messages processed by a parallel database replication apply process
US8566336B2 (en) * 2011-03-30 2013-10-22 Splunk Inc. File identification management and tracking
US9185163B2 (en) 2011-04-08 2015-11-10 Microsoft Technology Licensing, Llc Receiving individual documents to serve
US9158767B2 (en) 2011-04-08 2015-10-13 Microsoft Technology Licensing, Llc Lock-free indexing of documents
US8990612B2 (en) 2011-04-08 2015-03-24 Microsoft Technology Licensing, Llc Recovery of a document serving environment
EP2541473A1 (en) 2011-06-27 2013-01-02 Amadeus S.A.S. Method and system for a pre-shopping reservation system with increased search efficiency
US9235620B2 (en) 2012-08-14 2016-01-12 Amadeus S.A.S. Updating cached database query results
US8973135B2 (en) 2011-09-29 2015-03-03 Microsoft Technology Licensing, Llc Selectively scanning objects for infection by malware
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US11487707B2 (en) * 2012-04-30 2022-11-01 International Business Machines Corporation Efficient file path indexing for a content repository
JP5887236B2 (en) * 2012-09-24 2016-03-16 株式会社日立ソリューションズ Business document processing apparatus, business document processing method, and business document processing program
US9418129B2 (en) * 2013-03-08 2016-08-16 Oracle International Corporation Adaptive high-performance database redo log synchronization
US9727625B2 (en) 2014-01-16 2017-08-08 International Business Machines Corporation Parallel transaction messages for database replication
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US9977810B2 (en) 2014-08-21 2018-05-22 Dropbox, Inc. Multi-user search system with methodology for personal searching
US10606822B2 (en) 2014-11-01 2020-03-31 Hewlett Packard Enterprise Development Lp Dynamically updating metadata
US9384226B1 (en) 2015-01-30 2016-07-05 Dropbox, Inc. Personal content item searching system and method
US9183303B1 (en) 2015-01-30 2015-11-10 Dropbox, Inc. Personal content item searching system and method
CN107273368A (en) * 2016-04-06 2017-10-20 中兴通讯股份有限公司 Mass data storage management method, device and data-storage system
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US10733241B2 (en) * 2016-10-12 2020-08-04 Salesforce.Com, Inc. Re-indexing query-independent document features for processing search queries
US11481362B2 (en) * 2017-11-13 2022-10-25 Cisco Technology, Inc. Using persistent memory to enable restartability of bulk load transactions in cloud databases
CN111859028A (en) * 2019-04-30 2020-10-30 伊姆西Ip控股有限责任公司 Method, apparatus and computer program product for creating an index for streaming storage
US11892983B2 (en) 2021-04-29 2024-02-06 EMC IP Holding Company LLC Methods and systems for seamless tiering in a distributed storage system
US11762682B2 (en) 2021-10-27 2023-09-19 EMC IP Holding Company LLC Methods and systems for storing data in a distributed system using offload components with advanced data services
US20230127387A1 (en) * 2021-10-27 2023-04-27 EMC IP Holding Company LLC Methods and systems for seamlessly provisioning client application nodes in a distributed system
US11677633B2 (en) 2021-10-27 2023-06-13 EMC IP Holding Company LLC Methods and systems for distributing topology information to client nodes
US11922071B2 (en) 2021-10-27 2024-03-05 EMC IP Holding Company LLC Methods and systems for storing data in a distributed system using offload components and a GPU module

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1994029801A1 (en) * 1993-06-04 1994-12-22 Taligent, Inc. Document framework system
EP0778527A1 (en) * 1995-12-04 1997-06-11 International Business Machines Corporation System and method for backing up and restoring groupware documents

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0465019B1 (en) * 1990-06-29 1997-05-14 Oracle Corporation Method and apparatus for managing state identifiers for efficient recovery
US5469562A (en) * 1992-06-26 1995-11-21 Digital Equipment Corporation Durable atomic storage update manager
US5506983A (en) * 1992-07-06 1996-04-09 Microsoft Corporation Method and system for transactioning of modifications to a tree structured file
US5685003A (en) * 1992-12-23 1997-11-04 Microsoft Corporation Method and system for automatically indexing data in a document using a fresh index table
US5617566A (en) * 1993-12-10 1997-04-01 Cheyenne Advanced Technology Ltd. File portion logging and arching by means of an auxilary database
EP0678812A1 (en) * 1994-04-20 1995-10-25 Microsoft Corporation Replication verification
JPH09204442A (en) * 1996-01-24 1997-08-05 Dainippon Screen Mfg Co Ltd Document data retrieval system
US5799324A (en) * 1996-05-10 1998-08-25 International Business Machines Corporation System and method for management of persistent data in a log-structured disk array
US5740432A (en) * 1996-05-28 1998-04-14 Sun Microsystems, Inc. Log file optimization in a client/server computing system
US5903898A (en) * 1996-06-04 1999-05-11 Oracle Corporation Method and apparatus for user selectable logging
US5907848A (en) * 1997-03-14 1999-05-25 Lakeview Technology, Inc. Method and system for defining transactions from a database log
US5890154A (en) * 1997-06-06 1999-03-30 International Business Machines Corp. Merging database log files through log transformations
US5878414A (en) * 1997-06-06 1999-03-02 International Business Machines Corp. Constructing a transaction serialization order based on parallel or distributed database log files

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1994029801A1 (en) * 1993-06-04 1994-12-22 Taligent, Inc. Document framework system
EP0778527A1 (en) * 1995-12-04 1997-06-11 International Business Machines Corporation System and method for backing up and restoring groupware documents

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
GREEN R J ET AL: "Designing a fast, on-line backup system for a log-structured file system", DIGITAL TECHNICAL JOURNAL, 1996, DIGITAL EQUIPMENT CORP, USA, vol. 8, no. 2, ISSN 0898-901X, pages 32 - 45, XP002088807 *
GREEN R. J. ET AL.: "Designing a fast, on-line backup system for a log-structured file system", DIGITAL TECHNICAL JOURNAL, 1996, DIGITAL EQUIPMENT CORP., vol. 8, no. 2, pages 32 - 45

Cited By (162)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8930319B2 (en) 1999-07-14 2015-01-06 Commvault Systems, Inc. Modular backup and retrieval system used in conjunction with a storage area network
US9286398B2 (en) 2000-01-31 2016-03-15 Commvault Systems, Inc. Systems and methods for retrieving data in a computer network
US9003137B2 (en) 2000-01-31 2015-04-07 Commvault Systems, Inc. Interface systems and methods for accessing stored data
JP2002318809A (en) * 2001-04-19 2002-10-31 Nec Corp Index construction type search engine and index construction method and program
EP1476824A1 (en) * 2002-01-15 2004-11-17 Network Appliance, Inc. Active file change notification
EP1476824A4 (en) * 2002-01-15 2007-02-21 Network Appliance Inc Active file change notification
US9170890B2 (en) 2002-09-16 2015-10-27 Commvault Systems, Inc. Combined stream auxiliary copy system and method
EP1609079A2 (en) * 2003-02-07 2005-12-28 Systems Research & Development Data set comparison and net change processing
EP1609079A4 (en) * 2003-02-07 2007-01-17 Ibm Data set comparison and net change processing
US7200602B2 (en) 2003-02-07 2007-04-03 International Business Machines Corporation Data set comparison and net change processing
US8892826B2 (en) 2003-04-03 2014-11-18 Commvault Systems, Inc. Systems and methods for performing storage operations in a computer network
US9201917B2 (en) 2003-04-03 2015-12-01 Commvault Systems, Inc. Systems and methods for performing storage operations in a computer network
US9251190B2 (en) 2003-04-03 2016-02-02 Commvault Systems, Inc. System and method for sharing media in a computer network
US8510516B2 (en) 2003-04-03 2013-08-13 Commvault Systems, Inc. Systems and methods for sharing media in a computer network
US9021213B2 (en) 2003-04-03 2015-04-28 Commvault Systems, Inc. System and method for sharing media in a computer network
US9940043B2 (en) 2003-04-03 2018-04-10 Commvault Systems, Inc. Systems and methods for performing storage operations in a computer network
US9003117B2 (en) 2003-06-25 2015-04-07 Commvault Systems, Inc. Hierarchical systems and methods for performing storage operations in a computer network
US8886595B2 (en) 2003-11-13 2014-11-11 Commvault Systems, Inc. System and method for performing an image level snapshot and for restoring partial volume data
US9405631B2 (en) 2003-11-13 2016-08-02 Commvault Systems, Inc. System and method for performing an image level snapshot and for restoring partial volume data
US9619341B2 (en) 2003-11-13 2017-04-11 Commvault Systems, Inc. System and method for performing an image level snapshot and for restoring partial volume data
US9104340B2 (en) 2003-11-13 2015-08-11 Commvault Systems, Inc. Systems and methods for performing storage operations using network attached storage
US9208160B2 (en) 2003-11-13 2015-12-08 Commvault Systems, Inc. System and method for performing an image level snapshot and for restoring partial volume data
US9020990B2 (en) 2003-11-13 2015-04-28 Commvault Systems, Inc. Stored data reverification management system and method
EP1805603A2 (en) * 2004-08-19 2007-07-11 Copernic Technologies, Inc. Idle cpu indexing systems and methods
EP1805667A2 (en) * 2004-08-19 2007-07-11 Copernic Technologies, Inc. Indexing systems and methods
EP1805667A4 (en) * 2004-08-19 2009-08-12 Copernic Technologies Inc Indexing systems and methods
EP1805603A4 (en) * 2004-08-19 2009-08-05 Copernic Technologies Inc Idle cpu indexing systems and methods
WO2006059251A3 (en) * 2004-08-19 2006-10-05 Copernic Technologies Inc Electronic mail indexing systems and methods
US9507525B2 (en) 2004-11-05 2016-11-29 Commvault Systems, Inc. Methods and system of pooling storage devices
US10191675B2 (en) 2004-11-05 2019-01-29 Commvault Systems, Inc. Methods and system of pooling secondary storage devices
US7536291B1 (en) 2004-11-08 2009-05-19 Commvault Systems, Inc. System and method to support simulated storage operations
US10198451B2 (en) 2005-11-28 2019-02-05 Commvault Systems, Inc. Systems and methods for using metadata to enhance data identification operations
WO2007062254A3 (en) * 2005-11-28 2007-09-20 Commvault Systems Inc Systems and methods for data management
US11256665B2 (en) 2005-11-28 2022-02-22 Commvault Systems, Inc. Systems and methods for using metadata to enhance data identification operations
US9606994B2 (en) 2005-11-28 2017-03-28 Commvault Systems, Inc. Systems and methods for using metadata to enhance data identification operations
US9098542B2 (en) 2005-11-28 2015-08-04 Commvault Systems, Inc. Systems and methods for using metadata to enhance data identification operations
WO2007062254A2 (en) * 2005-11-28 2007-05-31 Commvault Systems, Inc. Systems and methods for data management
US7711700B2 (en) 2005-11-28 2010-05-04 Commvault Systems, Inc. Systems and methods for classifying and transferring information in a storage network
US9298382B2 (en) 2005-12-19 2016-03-29 Commvault Systems, Inc. Systems and methods for performing replication copy storage operations
US9639294B2 (en) 2005-12-19 2017-05-02 Commvault Systems, Inc. Systems and methods for performing data replication
US9020898B2 (en) 2005-12-19 2015-04-28 Commvault Systems, Inc. Systems and methods for performing data replication
US7617262B2 (en) 2005-12-19 2009-11-10 Commvault Systems, Inc. Systems and methods for monitoring application data in a data replication system
US7636743B2 (en) 2005-12-19 2009-12-22 Commvault Systems, Inc. Pathname translation in a data replication system
US9971657B2 (en) 2005-12-19 2018-05-15 Commvault Systems, Inc. Systems and methods for performing data replication
EP1974296B1 (en) * 2005-12-19 2016-05-18 Commvault Systems, Inc. Systems and methods for performing data replication
US9002799B2 (en) 2005-12-19 2015-04-07 Commvault Systems, Inc. Systems and methods for resynchronizing information
US7651593B2 (en) 2005-12-19 2010-01-26 Commvault Systems, Inc. Systems and methods for performing data replication
US7617253B2 (en) 2005-12-19 2009-11-10 Commvault Systems, Inc. Destination systems and methods for performing data replication
US8935210B2 (en) 2005-12-19 2015-01-13 Commvault Systems, Inc. Systems and methods for performing replication copy storage operations
US8930496B2 (en) 2005-12-19 2015-01-06 Commvault Systems, Inc. Systems and methods of unified reconstruction in storage systems
US9208210B2 (en) 2005-12-19 2015-12-08 Commvault Systems, Inc. Rolling cache configuration for a data replication system
US11442820B2 (en) 2005-12-19 2022-09-13 Commvault Systems, Inc. Systems and methods of unified reconstruction in storage systems
US9633064B2 (en) 2005-12-19 2017-04-25 Commvault Systems, Inc. Systems and methods of unified reconstruction in storage systems
US7661028B2 (en) 2005-12-19 2010-02-09 Commvault Systems, Inc. Rolling cache configuration for a data replication system
EP1974296A1 (en) * 2005-12-19 2008-10-01 Commvault Systems, Inc. Systems and methods for performing data replication
US7870355B2 (en) 2005-12-19 2011-01-11 Commvault Systems, Inc. Log based data replication system with disk swapping below a predetermined rate
US9996430B2 (en) 2005-12-19 2018-06-12 Commvault Systems, Inc. Systems and methods of unified reconstruction in storage systems
US9003374B2 (en) 2006-07-27 2015-04-07 Commvault Systems, Inc. Systems and methods for continuous data replication
US20100088318A1 (en) * 2006-10-06 2010-04-08 Masaki Kan Information search system, method, and program
US8301603B2 (en) * 2006-10-06 2012-10-30 Nec Corporation Information document search system, method and program for partitioned indexes on a time series in association with a backup document storage
US10783129B2 (en) 2006-10-17 2020-09-22 Commvault Systems, Inc. Method and system for offline indexing of content and classifying stored data
US9158835B2 (en) 2006-10-17 2015-10-13 Commvault Systems, Inc. Method and system for offline indexing of content and classifying stored data
US9509652B2 (en) 2006-11-28 2016-11-29 Commvault Systems, Inc. Method and system for displaying similar email messages based on message contents
US9967338B2 (en) 2006-11-28 2018-05-08 Commvault Systems, Inc. Method and system for displaying similar email messages based on message contents
US11175982B2 (en) 2006-12-22 2021-11-16 Commvault Systems, Inc. Remote monitoring and error correcting within a data storage system
US10671472B2 (en) 2006-12-22 2020-06-02 Commvault Systems, Inc. Systems and methods for remote monitoring in a computer network
US9639529B2 (en) 2006-12-22 2017-05-02 Commvault Systems, Inc. Method and system for searching stored data
US9122600B2 (en) 2006-12-22 2015-09-01 Commvault Systems, Inc. Systems and methods for remote monitoring in a computer network
US11416328B2 (en) 2006-12-22 2022-08-16 Commvault Systems, Inc. Remote monitoring and error correcting within a data storage system
US11256724B2 (en) 2008-01-30 2022-02-22 Commvault Systems, Inc. Systems and methods for probabilistic data classification
US10628459B2 (en) 2008-01-30 2020-04-21 Commvault Systems, Inc. Systems and methods for probabilistic data classification
US9740764B2 (en) 2008-01-30 2017-08-22 Commvault Systems, Inc. Systems and methods for probabilistic data classification
US10783168B2 (en) 2008-01-30 2020-09-22 Commvault Systems, Inc. Systems and methods for probabilistic data classification
US10708353B2 (en) 2008-08-29 2020-07-07 Commvault Systems, Inc. Method and system for displaying similar email messages based on message contents
US11082489B2 (en) 2008-08-29 2021-08-03 Commvault Systems, Inc. Method and system for displaying similar email messages based on message contents
US11516289B2 (en) 2008-08-29 2022-11-29 Commvault Systems, Inc. Method and system for displaying similar email messages based on message contents
US9495382B2 (en) 2008-12-10 2016-11-15 Commvault Systems, Inc. Systems and methods for performing discrete data replication
US9396244B2 (en) 2008-12-10 2016-07-19 Commvault Systems, Inc. Systems and methods for managing replicated database data
US9047357B2 (en) 2008-12-10 2015-06-02 Commvault Systems, Inc. Systems and methods for managing replicated database data in dirty and clean shutdown states
US9047296B2 (en) 2009-12-31 2015-06-02 Commvault Systems, Inc. Asynchronous methods of data classification using change journals and other data structures
US8868494B2 (en) 2010-03-29 2014-10-21 Commvault Systems, Inc. Systems and methods for selective data replication
US9483511B2 (en) 2010-03-30 2016-11-01 Commvault Systems, Inc. Stubbing systems and methods in a data replication environment
US9002785B2 (en) 2010-03-30 2015-04-07 Commvault Systems, Inc. Stubbing systems and methods in a data replication environment
US9578101B2 (en) 2011-01-20 2017-02-21 Commvault Systems, Inc. System and method for sharing san storage
US9021198B1 (en) 2011-01-20 2015-04-28 Commvault Systems, Inc. System and method for sharing SAN storage
US11228647B2 (en) 2011-01-20 2022-01-18 Commvault Systems, Inc. System and method for sharing SAN storage
US10372675B2 (en) 2011-03-31 2019-08-06 Commvault Systems, Inc. Creating secondary copies of data based on searches for content
US11003626B2 (en) 2011-03-31 2021-05-11 Commvault Systems, Inc. Creating secondary copies of data based on searches for content
US9298715B2 (en) 2012-03-07 2016-03-29 Commvault Systems, Inc. Data storage system utilizing proxy device for storage operations
US9928146B2 (en) 2012-03-07 2018-03-27 Commvault Systems, Inc. Data storage system utilizing proxy device for storage operations
US9898371B2 (en) 2012-03-07 2018-02-20 Commvault Systems, Inc. Data storage system utilizing proxy device for storage operations
US9471578B2 (en) 2012-03-07 2016-10-18 Commvault Systems, Inc. Data storage system utilizing proxy device for storage operations
US10698632B2 (en) 2012-04-23 2020-06-30 Commvault Systems, Inc. Integrated snapshot interface for a data storage system
US9342537B2 (en) 2012-04-23 2016-05-17 Commvault Systems, Inc. Integrated snapshot interface for a data storage system
US11269543B2 (en) 2012-04-23 2022-03-08 Commvault Systems, Inc. Integrated snapshot interface for a data storage system
US9928002B2 (en) 2012-04-23 2018-03-27 Commvault Systems, Inc. Integrated snapshot interface for a data storage system
US8892523B2 (en) 2012-06-08 2014-11-18 Commvault Systems, Inc. Auto summarization of content
US11580066B2 (en) 2012-06-08 2023-02-14 Commvault Systems, Inc. Auto summarization of content for use in new storage policies
US9418149B2 (en) 2012-06-08 2016-08-16 Commvault Systems, Inc. Auto summarization of content
US10372672B2 (en) 2012-06-08 2019-08-06 Commvault Systems, Inc. Auto summarization of content
CN102799380A (en) * 2012-07-13 2012-11-28 杭州边锋网络技术有限公司 Desktop shortcut control system and method
US10379988B2 (en) 2012-12-21 2019-08-13 Commvault Systems, Inc. Systems and methods for performance monitoring
US10853176B2 (en) 2013-01-11 2020-12-01 Commvault Systems, Inc. Single snapshot for multiple agents
US9262435B2 (en) 2013-01-11 2016-02-16 Commvault Systems, Inc. Location-based data synchronization management
US9336226B2 (en) 2013-01-11 2016-05-10 Commvault Systems, Inc. Criteria-based data synchronization management
US9430491B2 (en) 2013-01-11 2016-08-30 Commvault Systems, Inc. Request-based data synchronization management
US11847026B2 (en) 2013-01-11 2023-12-19 Commvault Systems, Inc. Single snapshot for multiple agents
US9886346B2 (en) 2013-01-11 2018-02-06 Commvault Systems, Inc. Single snapshot for multiple agents
US9753812B2 (en) 2014-01-24 2017-09-05 Commvault Systems, Inc. Generating mapping information for single snapshot for multiple applications
US10942894B2 (en) 2014-01-24 2021-03-09 Commvault Systems, Inc Operation readiness checking and reporting
US9892123B2 (en) 2014-01-24 2018-02-13 Commvault Systems, Inc. Snapshot readiness checking and reporting
US10572444B2 (en) 2014-01-24 2020-02-25 Commvault Systems, Inc. Operation readiness checking and reporting
US10223365B2 (en) 2014-01-24 2019-03-05 Commvault Systems, Inc. Snapshot readiness checking and reporting
US9632874B2 (en) 2014-01-24 2017-04-25 Commvault Systems, Inc. Database application backup in single snapshot for multiple applications
US9639426B2 (en) 2014-01-24 2017-05-02 Commvault Systems, Inc. Single snapshot for multiple applications
US9495251B2 (en) 2014-01-24 2016-11-15 Commvault Systems, Inc. Snapshot readiness checking and reporting
US10671484B2 (en) 2014-01-24 2020-06-02 Commvault Systems, Inc. Single snapshot for multiple applications
US10419536B2 (en) 2014-09-03 2019-09-17 Commvault Systems, Inc. Consolidated processing of storage-array commands by a snapshot-control media agent
US10798166B2 (en) 2014-09-03 2020-10-06 Commvault Systems, Inc. Consolidated processing of storage-array commands by a snapshot-control media agent
US11245759B2 (en) 2014-09-03 2022-02-08 Commvault Systems, Inc. Consolidated processing of storage-array commands by a snapshot-control media agent
US10044803B2 (en) 2014-09-03 2018-08-07 Commvault Systems, Inc. Consolidated processing of storage-array commands by a snapshot-control media agent
US10891197B2 (en) 2014-09-03 2021-01-12 Commvault Systems, Inc. Consolidated processing of storage-array commands using a forwarder media agent in conjunction with a snapshot-control media agent
US9774672B2 (en) 2014-09-03 2017-09-26 Commvault Systems, Inc. Consolidated processing of storage-array commands by a snapshot-control media agent
US10042716B2 (en) 2014-09-03 2018-08-07 Commvault Systems, Inc. Consolidated processing of storage-array commands using a forwarder media agent in conjunction with a snapshot-control media agent
US9648105B2 (en) 2014-11-14 2017-05-09 Commvault Systems, Inc. Unified snapshot storage management, using an enhanced storage manager and enhanced media agents
US10628266B2 (en) 2014-11-14 2020-04-21 Commvault System, Inc. Unified snapshot storage management
US9921920B2 (en) 2014-11-14 2018-03-20 Commvault Systems, Inc. Unified snapshot storage management, using an enhanced storage manager and enhanced media agents
US11507470B2 (en) 2014-11-14 2022-11-22 Commvault Systems, Inc. Unified snapshot storage management
US10521308B2 (en) 2014-11-14 2019-12-31 Commvault Systems, Inc. Unified snapshot storage management, using an enhanced storage manager and enhanced media agents
US9996428B2 (en) 2014-11-14 2018-06-12 Commvault Systems, Inc. Unified snapshot storage management
US9448731B2 (en) 2014-11-14 2016-09-20 Commvault Systems, Inc. Unified snapshot storage management
US10346069B2 (en) 2015-01-23 2019-07-09 Commvault Systems, Inc. Scalable auxiliary copy processing in a data storage management system using media agent resources
US10996866B2 (en) 2015-01-23 2021-05-04 Commvault Systems, Inc. Scalable auxiliary copy processing in a data storage management system using media agent resources
US11513696B2 (en) 2015-01-23 2022-11-29 Commvault Systems, Inc. Scalable auxiliary copy processing in a data storage management system using media agent resources
US9898213B2 (en) 2015-01-23 2018-02-20 Commvault Systems, Inc. Scalable auxiliary copy processing using media agent resources
US10168931B2 (en) 2015-01-23 2019-01-01 Commvault Systems, Inc. Scalable auxiliary copy processing in a data storage management system using media agent resources
US9904481B2 (en) 2015-01-23 2018-02-27 Commvault Systems, Inc. Scalable auxiliary copy processing in a storage management system using media agent resources
US11836156B2 (en) 2016-03-10 2023-12-05 Commvault Systems, Inc. Snapshot replication operations based on incremental block change tracking
US10503753B2 (en) 2016-03-10 2019-12-10 Commvault Systems, Inc. Snapshot replication operations based on incremental block change tracking
US11238064B2 (en) 2016-03-10 2022-02-01 Commvault Systems, Inc. Snapshot replication operations based on incremental block change tracking
US11443061B2 (en) 2016-10-13 2022-09-13 Commvault Systems, Inc. Data protection within an unsecured storage environment
US10540516B2 (en) 2016-10-13 2020-01-21 Commvault Systems, Inc. Data protection within an unsecured storage environment
US10389810B2 (en) 2016-11-02 2019-08-20 Commvault Systems, Inc. Multi-threaded scanning of distributed file systems
US11669408B2 (en) 2016-11-02 2023-06-06 Commvault Systems, Inc. Historical network data-based scanning thread generation
US11677824B2 (en) 2016-11-02 2023-06-13 Commvault Systems, Inc. Multi-threaded scanning of distributed file systems
US10798170B2 (en) 2016-11-02 2020-10-06 Commvault Systems, Inc. Multi-threaded scanning of distributed file systems
US10922189B2 (en) 2016-11-02 2021-02-16 Commvault Systems, Inc. Historical network data-based scanning thread generation
US11615002B2 (en) 2017-03-31 2023-03-28 Commvault Systems, Inc. Dynamically allocating streams during restoration of data
US11010261B2 (en) 2017-03-31 2021-05-18 Commvault Systems, Inc. Dynamically allocating streams during restoration of data
US10984041B2 (en) 2017-05-11 2021-04-20 Commvault Systems, Inc. Natural language processing integrated with database and data storage management
US10642886B2 (en) 2018-02-14 2020-05-05 Commvault Systems, Inc. Targeted search of backup data using facial recognition
US11422732B2 (en) 2018-02-14 2022-08-23 Commvault Systems, Inc. Live browsing and private writable environments based on snapshots and/or backup copies provided by an ISCSI server
US10740022B2 (en) 2018-02-14 2020-08-11 Commvault Systems, Inc. Block-level live browsing and private writable backup copies using an ISCSI server
US10732885B2 (en) 2018-02-14 2020-08-04 Commvault Systems, Inc. Block-level live browsing and private writable snapshots using an ISCSI server
US11159469B2 (en) 2018-09-12 2021-10-26 Commvault Systems, Inc. Using machine learning to modify presentation of mailbox objects
US20200110819A1 (en) * 2018-10-08 2020-04-09 International Business Machines Corporation Low cost fast recovery index in storage class memory
US11709615B2 (en) 2019-07-29 2023-07-25 Commvault Systems, Inc. Block-level data replication
US11042318B2 (en) 2019-07-29 2021-06-22 Commvault Systems, Inc. Block-level data replication
US11494417B2 (en) 2020-08-07 2022-11-08 Commvault Systems, Inc. Automated email classification in an information management system
US11928031B2 (en) 2021-09-02 2024-03-12 Commvault Systems, Inc. Using resource pool administrative entities to provide shared infrastructure to tenants
US11593223B1 (en) 2021-09-02 2023-02-28 Commvault Systems, Inc. Using resource pool administrative entities in a data storage management system to provide shared infrastructure to tenants
US11809285B2 (en) 2022-02-09 2023-11-07 Commvault Systems, Inc. Protecting a management database of a data storage management system to meet a recovery point objective (RPO)

Also Published As

Publication number Publication date
US6067541A (en) 2000-05-23
JP3556170B2 (en) 2004-08-18
JP2001516928A (en) 2001-10-02
EP1023677A1 (en) 2000-08-02

Similar Documents

Publication Publication Date Title
US6067541A (en) Monitoring document changes in a file system of documents with the document change information stored in a persistent log
JP4219589B2 (en) Transactional file system
JP2531776B2 (en) How to recover your database
EP0415346B1 (en) Method and system for dynamic volume tracking in an installable file system
US6567928B1 (en) Method and apparatus for efficiently recovering from a failure in a database that includes unlogged objects
KR101137081B1 (en) Real-time file system repairs
JP2679779B2 (en) Transaction processing method and apparatus
EP1918836B1 (en) Apparatus and method for a hardware-based file system
US6560615B1 (en) Method and apparatus for implementing a highly efficient, robust modified files list (MFL) for a storage system volume
US8131691B1 (en) System and method for updating a search engine index based on which files are identified in a file change log
US5608901A (en) Method and system for improving the contiguity of sectors of a file
US20040267822A1 (en) Rapid restoration of file system usage in very large file systems
US7546305B2 (en) File archival
US5740434A (en) System for maintenance of database integrity
AU2002252661A1 (en) File archival
JPH07230401A (en) Method and system for file maintenance
Berkeley Oracle Berkeley DB

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): DE GB JP

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
REEP Request for entry into the european phase

Ref document number: 1998946055

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 1998946055

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 2000 512158

Country of ref document: JP

Kind code of ref document: A

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

WWP Wipo information: published in national office

Ref document number: 1998946055

Country of ref document: EP