WO2001080008A2 - Methods and apparatus for persistent volatile computer memory and related applications thereof - Google Patents
Methods and apparatus for persistent volatile computer memory and related applications thereof Download PDFInfo
- Publication number
- WO2001080008A2 WO2001080008A2 PCT/US2001/012138 US0112138W WO0180008A2 WO 2001080008 A2 WO2001080008 A2 WO 2001080008A2 US 0112138 W US0112138 W US 0112138W WO 0180008 A2 WO0180008 A2 WO 0180008A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- persistent
- computer
- memory
- operating system
- volatile memory
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/468—Specific access rights for resources, e.g. using capability register
Definitions
- the present invention relates to preserving the contents of computer memory.
- the present invention relates to methods and apparatus for preserving the contents of a volatile memory during a system failure and applications thereof.
- Prior art computer systems typically include a volatile memory for the storage and manipulation of information by an operating system and various software applications, and a non-volatile memory for mass storage of data and computer programs.
- software applications behave in unexpected ways, they can cause the operating system to fail in catastrophic ways, referred to colloquially as a "system crash.”
- system crashes there is no guarantee that the information stored in volatile memory can be salvaged.
- the computer system will be interrupted while writing information to nonvolatile mass storage, damaging or corrupting the contents of the non- volatile memory.
- the user remedies the system crash by resetting the system.
- the operating system typically loses the ability to reference the information contained in the volatile memory or actually initializes the volatile memory, changing or destroying its contents.
- a reboot operation typically destroys the information the computer would need to verify or repair the contents of the non- volatile memory.
- a second set of prior art solutions to this problem has focused on hardware modifications to preserve the contents of volatile memory during a crash.
- Some prior art systems are arranged such that every read or write request to an operating system is simultaneously routed to a non- volatile memory. Such a system guarantees a record of memory contents that can be reconstructed during a boot cycle, but suffers from slowness during normal operation, because each transaction is conducted twice, and slowness during a boot cycle, because the operating system must locate the non- volatile record of transactions and reload them.
- Other prior art systems attempt the same techniques and suffer from the same problems, but reduce the magnitude of the delays by greater selectivity in the transactions actually recorded, or recording transactions in a way that is more amenable to reconstruction.
- Non-volatile memories such as electrically erasable programmable read-only memories (EEPROMs), Flash ROM, or battery-backed random-access memory.
- EEPROMs electrically erasable programmable read-only memories
- Flash ROM often requires a charge pump to achieve the higher voltages needed to write to the memory, and suffers a shorter life than normal volatile RAM because of this process.
- Battery-backed RAMs rely on batteries that are subject to catastrophic failure or charge depletion.
- RAID array where RAID is an acronym for "redundant array of inexpensive disks”
- the computer processes each write transaction to non-volatile storage in parallel, writing it to each device in the array. If the computer fails, then the nonvolatile storage device with the most accurate set of contents available can be used as a master, copying all its contents to the other devices in the array (RAID level 1).
- RAID level 5 Another solution only stores one copy of the transaction information across multiple mass storage devices, but also stores parity information concerning the transaction data
- a computer whose information is stored in a volatile memory resistant to loss or corruption resulting from system or application crashes would avoid the problems associated with the loss and recreation of data.
- a computer that used this persistent volatile memory to store write transactions directed to non-volatile storage would similarly avoid wholesale duplication.
- the elimination of time-consuming data reconstruction would help make possible a fault-tolerant computer that offered continuous availability.
- the present invention provides those benefits.
- the present invention relates to methods and apparatus for providing a persistent volatile computer memory.
- One object of the invention is to provide at least one region of volatile memory whose contents are resistant to loss or corruption from system or application crashes and the ensuing reboot cycle.
- Another object of the invention is to store the contents of write transactions to non- volatile storage in a region of volatile memory whose contents are resistant to loss or corruption from system or application crashes and the ensuing reboot cycle, where they are used to repair and complete the contents of the non- volatile storage devices.
- Still another object of the invention is to ensure the availability of transaction information following the failure of a computer system without having to perform the same transaction.
- one feature of the invention is the partitioning of computer memory into two types of regions: a non-persistent region directly accessible to the operating system and a persistent region that is not directly accessible to the operating system.
- Another feature of the invention is an intermediary program, such as a device driver, that serves as an intermediary between the operating system and the persistent memory region, processing requests from the operating system directed to the persistent region of memory.
- the contents of the persistent memory region are resistant to initialization or modification during a boot cycle.
- the intermediary program processes write requests atomically, preventing the results of incomplete or partial transactions from subsequent loading from the persistent memory region by computer applications.
- one feature of the invention is a modified BIOS, wherein the modification effectively partitions the memory into two types of regions: a non-persistent region directly accessible to the operating system and a persistent region that is not directly accessible to the operating system.
- Another feature of the invention is a intermediary program, such as a device driver, that processes read requests and write requests from the operating system to this persistent memory region.
- Net another feature of the invention is that the contents of the persistent memory region are resistant to initialization or modification during a boot cycle.
- one feature of the invention is the partitioning of computer memory into two types of regions: a non-persistent region directly accessible to the operating system and a persistent region that is not directly accessible to the operating system.
- Another feature of the invention is a program that maps the persistent region onto physical memory locations, enabling the operating system to indirectly access the persistent region.
- one feature of the invention is the presence of non-volatile storage and persistent volatile memory, where the persistent volatile memory is used to store write transactions posted to non- volatile storage.
- Another feature of the invention is an intermediary program, such as a device driver, that serves as an intermediary between the operating system and non- volatile storage that processes write requests from the operating system directed to non-volatile storage, stores their contents in persistent volatile memory, and then completes the write to non-volatile storage.
- the contents of the persistent memory region are resistant to initialization or modification during a boot cycle.
- the intermediary program processes write requests atomically, preventing the results of incomplete or partial transactions from subsequent loading from the persistent memory region by computer applications.
- one feature of the invention is a computer program that receives write transactions directed to non-volatile storage by the operating system, stores the contents of the write transaction in persistent volatile memory, and then completes the write to non- volatile storage.
- Another feature of the invention is the marking of transactions in persistent volatile memory as "complete” or "in progress” for use during the reboot and recovery process.
- the invention is a method providing improved recovery from system failures.
- the method receives a write transaction from the operating system, stores the contents of the write transaction in persistent volatile memory, and then stores the contents of the write transaction in non- olatile storage.
- Another feature of the invention is the marking of transactions in persistent volatile memory as "complete” or "in progress” for use during the reboot and recovery process.
- Yet another feature of the invention is the selection of those write transactions in persistent volatile memory marked "in progress", copying the contents of the uncompleted write transactions from the persistent volatile memory to the non- volatile storage, and then marking the uncompleted write transactions as completed after the successful completion of the copy to non- volatile storage.
- the invention features a method for storing transactional information in a computer.
- the method comprises the steps of: (a) receiving transactional information; (b) storing the particular transactional information in a persistent volatile memory on the computer; and (c) retrieving the transactional information after a computer failure by accessing the transactional information stored in the persistent volatile memory on the computer.
- the method may also comprise flushing the persistent volatile memory to a persistent mass storage device.
- the flushing occurs when the transactional information stored in the persistent volatile memory exceeds some predetermined threshold.
- the flushing occurs when a predefined amount of time has elapsed since the storage of the transactional information in the persistent volatile memory.
- the flushing occurs when a program, such as the operating system of the computer, is not busy. Alternatively, the flushing occurs when a file is closed or when the computer is shut down.
- the invention features a method for providing persistent mass storage of transactional information.
- the method comprises the steps of: (a) receiving transactional information; (b) determining whether the transactional information meets a predetermined criteria; and (c) storing the transactional information that meets the predetermined criteria in a persistent cache.
- the transactional information comprises unbuffered writes to disk, which are writes requested by an application and in which notification to the application of the completion of the write is necessary.
- an unbuffered write can include copying a file from one directory to another directory, backing up and/or updating a file, and initializing a file.
- the invention features a persistent volatile memory and an intermediary program.
- the intermediary program receives transactional information and stores the transactional information in the persistent volatile memory.
- the contents of the persistent volatile memory remain unaltered through a system failure.
- the intermediary program is a filter driver module that identifies particular transactional information to store in the persistent volatile memory.
- the invention includes a flushing thread to flush the contents of the persistent volatile memory to a persistent non- volatile memory.
- FIG. 1 is a block diagram of an embodiment of a computer known to the prior art.
- FIG. 2 is a block diagram of an embodiment of a computer constructed in accordance with the present invention.
- FIG. 3 is a functional block diagram of the embodiment of the present invention depicted in FIG. 2.
- FIG. 4 is a flowchart depicting the state of a look-ahead buffer while processing a write request atomically in accord with the present invention.
- FIG. 5 is a flowchart depicting the recovery of completed transaction information during a boot cycle in accord with the present invention.
- FIG. 6 is a flowchart depicting the operation of an embodiment of the present invention.
- FIG. 7 is an embodiment of an interface presented to the user to solicit information for the configuration of the present invention.
- FIG. 8 is an flowchart describing the operation of an embodiment of the invention directed to the contents of non- volatile storage;
- FIG. 9 is a flowchart depicting an embodiment of the operation of the computer of FIG. 1 to store unbuffered writes in persistent memory
- FIG. 10 is a flowchart depicting an embodiment of the steps of flushing persistent memory as shown in FIG. 9.
- a computer 10 known to the prior art typically includes a microprocessor 12, a memory 14 for storing programs and/or data, an input/output (I/O) controller 16, and a system bus 18 allowing communication among these components.
- the memory 14 in such a computer typically includes random-access memory (RAM) 20, read-only memory (ROM) 22, and non-volatile random-access memory (NVRAM) 24.
- the RAM 20 typically contains an operating system 26 and one or more device drivers 28 that permit access to various peripherals by the operating system 26.
- the ROM 22 typically contains a basic input- output system (BIOS) 30 that handles the boot process of the computer 10.
- BIOS basic input- output system
- One or more input devices such as an alphanumeric keyboard or a mouse, and one or more output devices, such as a display or a printer, are also typically included in the computer 10.
- the computer 10 will also include a network connection.
- the computer 10 typically has a mass storage device 32 such as a magnetic disk or magneto-optical drive.
- some computers 10 have redundant arrays of inexpensive disks (RAID arrays) used as failure-tolerant mass storage 32.
- applicant's invention provides a persistent volatile memory in a computer while avoiding the failings of the prior art. This is achieved by partitioning the volatile computer memory into two regions: a non-persistent memory region that is directly accessible to the operating system and typically is initialized or modified during a boot cycle, and a persistent memory region whose contents are not initialized or modified during a boot cycle.
- the operating system can indirectly access this persistent memory region through an intermediary program such as a device driver.
- the intermediary program invokes operating-system level functionality to enable the operating system to access this persistent memory region only after the boot cycle is completed. This invention is particularly useful in a system-critical fault-tolerant computer that offers continuous availability.
- FIGS. 2 & 3 One embodiment of the present invention is shown in FIGS. 2 & 3.
- the system includes a computer 10' with RAM 20 partitioned into two different regions.
- the first memory region 40 is directly accessible to the operating system and is typically initialized or modified during a boot cycle.
- a device driver 28' handles read requests 50 and write requests 52 from the operating system 26 directed to the second memory region 42.
- a modified BIOS 30' prevents the operating system 26 from directly accessing the contents of the second memory region 42.
- the second memory region 42 is not directly accessible to the operating system 26 and therefore is not modified or initialized during a boot cycle.
- configuration information 44 regarding the location and size of the second memory region 42 is stored in an entry in NNRAM 24.
- a computer 10 typically invokes a BIOS 30 that typically provides low-level access to peripherals; identifies RAM 20 available to the processor 12; initializes this RAM 20, typically destroying its contents; and then installs the operating system 26 into RAM 20, giving the operating system access to the entire RAM 20 to move information into and out of memory as necessary. If the computer 10 is started after having been powered down, all of its memory will have been initialized.
- BIOS 30 typically provides low-level access to peripherals
- a computer 10' constructed in accordance with the present invention invokes a modified BIOS 30.
- the modified BIOS 30' retrieves configuration information 44 from ⁇ NRAM 24.
- This configuration information 44 includes the start address and the size of persistent memory. If both these values are zero or non-existent, then the modified BIOS 30' knows that the invention is either not installed or disabled. If the size is non-zero, but the start address is zero, then the start address is recalculated by subtracting the size of the persistent memory from the total memory size and storing this result as the new start address.
- the modified BIOS 30' then divides the RAM 20 into two memory regions: a first non-persistent memory region 40 ranging from address 0 up to, but not including, the persistent memory start address, and a second persistent memory region 42 consisting of all memory from the persistent memory start address up to, but not including, the sum of the persistent memory start address and the persistent memory size.
- the system then initializes the first memory region 40.
- the modified BIOS 30' still provides low-level access to peripherals, but installs the operating system 26 into the first memory region 40 of RAM 20, and preventing the operating system 26 from directly accessing the second memory region 42 during the boot cycle and normal computer operation.
- the operating system 26 is, in effect, unaware of the second memory region 42.
- the operating system 26 typically initializes or installs its own programs into the first memory region 40, often modifying the contents of the first memory region 40, but does not modify the contents of the second memory region 42 of which it is unaware. This renders the contents of the second memory region 42 persistent through a boot cycle.
- the operating system 26 will load device drivers 28 to permit access to various peripheral devices.
- the operating system 26 loads a device driver 28' that is aware of the second memory region 42 and is able to access its contents.
- the device driver 28' is aware of the second memory region 42 because it is also aware of and accesses the configuration information 44 stored in NNRAM 24.
- the device driver 28' serves as an intermediary between the operating system 26 and the second memory region 42.
- the device driver 28' takes a read request 50 from the operating system 26 and returns information from the appropriate location in the second memory region 42.
- the device driver 28' takes a write request 52 from the operating system 26 and stores information at the appropriate location in the second memory region 42.
- an intermediary program installs and configures the invention, and then invokes operating-system level functionality to enable the operating system to access this second set of memory regions only after the boot cycle is completed.
- the operating system 26 is the Windows 2000 operating system.
- the second memory region 42 accessible through the device driver 28 appears to the operating system 26 as a RAM disk, though the contents of a normal RAM disk do not survive a boot cycle, in contrast to the present invention.
- a Windows 2000 read request 50 or write request 52 includes an offset value (in bytes) and a length value (in bytes).
- the device driver 28' computes the appropriate location in the second memory region 42 by adding the offset value in the request to the start address of the persistent memory region.
- the second memory region 42 includes 1 MB of configuration information, so the appropriate location is actually the sum of the offset value, the start address of the persistent memory, and 1 MB.
- the device driver 28 copies a number of bytes equal in size to the length value from the computed location in the second memory region 42 to the user's buffer.
- the device driver 28 copies a number of bytes equal in size to the length value passed by the operating system 26 from the user's buffer to the computed location in the second memory region 42.
- This interaction permits the operating system 26 to indirectly access the second memory region 42 without threatening the integrity of the contents of the second memory region 42 during a boot cycle.
- Windows 2000 is the operating system 26
- the device driver 28' invokes the functionality of the operating system 26 to map the computed location onto the virtual address space of the operating system 26 for the copy operation.
- Other operating system 26 functionality completes the copy operation and unmaps the computed location from the virtual address space of the operating system 26.
- a look-aside buffer in the second persistent memory region 42 and uses it for the atomic update and storage of transaction information; only when the write request 52 has been buffered and completed is it transferred out of the look-aside buffer.
- a look-aside buffer includes a set of bits that describe its state.
- FIG. 4 shows how the state of the look-aside buffer changes to reflect various stages in the processing of a write request 52.
- the buffer state is 0 (Step 10).
- the driver 28' stores the computed location and the length (in bytes) of the request in the look-aside buffer and the state of the buffer becomes 1 (Step 12).
- the actual contents of the write request are copied into the buffer (Step 14).
- the buffer state becomes 2 (Step 16). If the copy fails because of, for example, a system crash, the buffer state remains at 1. Once the buffer state is set to 2, the contents of the write request are copied out of the look-aside buffer to their computed location in the second persistent memory region 42 (Step 18).
- Step 10 The effect of the value of the state of the look-aside buffer on the subsequent boot process is depicted in FIG. 5.
- the device driver 28' locates all the look-aside buffers in the second persistent memory region 42. If there are no more look-aside buffers to check (Step 22), the system boot process continues (Step 24). If there are more look- aside buffers (Step 22), the device driver proceeds to examine the state of each look-aside buffer, one at a time, in the second persistent memory region 42 (Step 26).
- the device driver 28' If the state of the buffer presently under examination is 0, the device driver 28' knows that there is no information stored in the look-aside buffer and the device driver 28' checks the next look-aside buffer (Step 22). If the buffer state is 1, the device driver 28' knows that the information in the look-aside buffer is the result of an incomplete transaction and should not be moved into the second persistent memory region 42 for recovery by a computer application. The device driver 28' sets the state of this buffer to 0 (Step 30) and checks the next look-aside buffer (Step 22). If the buffer under examination is in state 2, then the device driver 28' knows that the contents of the look-aside buffer are the result of a completed transaction that did not get copied into the second persistent memory region 42.
- the device driver 28' copies the contents of the look-aside buffer to the computed location in the second persistent memory region 42 (Step 28).
- the buffer state is set to 0 (Step 30) and the device driver 28' checks the next lookaside buffer (Step 22).
- the device driver 28' will have checked the state of all the look-aside buffers, and the system boot will continue (Step 24).
- the programs are a modified BIOS and a device driver.
- the programs divide the memory into two portions: a first region directly accessible to the operating system in Step 42 and making a second region that is not directly accessible to the operating system in Step 44.
- a device driver 28' or similar intermediary program provides indirect access to the second memory region 42 to the operating system. In step 46, the device driver 28' waits for a read request 50 or a write request 52 from the operating system 26.
- the device driver 28' decides (Step 48) whether a read request has been received, and if one has, then the intermediary program reads (Step 50) from the appropriate location in the second memory region 42 and returns the result to the operating system 26. Similarly, if the device driver 28 decides (Step 52) that a write request 52 has been received, then the device driver stores (Step 54) information at the appropriate location in the second memory region 42. If neither type of request has been received, then the device driver returns to step 36 and continues to wait for requests. Typically, read and write requests from the operating system to the first memory region operate as they would have before the installation of the present invention.
- the computer programs comprising the present invention are on a magnetic disk drive and selecting an icon invokes the installation of the programs, initializing the present invention.
- the programs implement the invention on the computer, and the programs either contain or access the data needed to implement all of the functionality of the invention on the computer.
- this prompt takes the form of a dialog box, though other forms of prompting are feasible, typically including asking the user a series of questions or requiring the user to manually edit a configuration file.
- the dialog box typically permits the user to choose the size of the persistent memory and choose a designation through which the operating system accesses it.
- a dialog box includes a slider element 60, a pop-up menu element 62, and a text-entry element 64.
- the slider element 60 permits the user to select the size of the persistent memory. For example, the slider element 60 permits the user to select a persistent memory from 10 to 100 MB in size in 10 MB increments. Of course, particular numerical values may vary between implementations.
- the pop-up menu element 62 permits the user to assign a drive letter to the device driver 28' to permit the operating system to address it.
- the text-entry element 64 permits the user to designate a file name for the backing store file.
- a pop-up menu element 66 permits the user to designate the transaction size for the atomic update feature described above.
- the user selects the OK button 68 which initiates the embodiment of the present invention in the computer.
- the invention is installed and typically becomes effective after the next boot cycle.
- the present invention is implemented in RAM, but it may also be implemented in a storage-based virtual memory system or some other memory apparatus.
- redundant mass storage elements may be provided as RAID level 1 disk arrays, RAID level 5 disk arrays, or other mass storage element configured to provide RAID level 1 or RAID level 5 type functionality.
- Some current methods require copying, after a system failure, of one disk in a RAID level 1 disk array in its entirety to the other disks in the array. Other methods use parity information to reconstruct the data (RAID level 5). Resynchronization of the RAID device after system failure monopolizes system resources as the resynchronization occurs.
- the persistent volatile memory of the present invention enables the creation of a list of write transactions resistant to system failures. After a failure, recovery need only involve the recreation of data using the transactions in the list stored in persistent memory.
- Step 100 the computer follows the process described above to create two regions of volatile memory: a non-persistent memory region that is directly accessible to the operating system and typically is initialized or modified during a boot cycle, and a persistent memory whose contents are not initialized or modified during a boot cycle.
- a disk write list is created in persistent memory (Step 102).
- the amount of persistent memory allocated for the disk write list can vary with system configuration, but typically is at least one page (4 kb) in size.
- the disk write list is used to store a list of pending write transactions posted to mass storage.
- Step 104 the system typically runs an operating system and various programs. Some of these programs are application programs, which provide the operator of the system with various functionalities utilizing the system, while other programs provide the system itself with additional functionality. Referring to FIG. 1, an example of the latter is a device driver 28, which permits the operating system 26 to access various peripherals.
- the present invention uses a specialized device driver 28 that permits the operating system 26 to access mass storage 32, which is, in some embodiments, a RAID array.
- mass storage 32 which is, in some embodiments, a RAID array.
- the CPU will typically issue a write request to mass storage via the specialized device driver.
- the device driver records this write transaction in the disk write list in persistent memory and marks the transaction "in progress" (Step 106).
- the entry in the disk write list includes the start address for the write, the length of the data to be written, the mass storage volume identifier for the write being performed, and the status of the transaction as "in progress.” Then the device driver attempts to complete the posting of the contents of the write transaction to a start address in mass storage.
- Step 108 Under normal circumstances there is no system failure during the transaction (Step 108), the write is successfully completed, and the device driver deletes the now-completed entry in the disk write list (Step 110). In other embodiments, upon successful completion of a mass storage with the entry in the write list is marked "complete.” Normal system operation continues (Step 104).
- Step 108 the system will need to be rebooted (Step 112).
- the operating system through the device driver checks for entries in the disk write list in persistent memory (Step 114). If the disk write list has no entries in it, the system proceeds to normal system operation (Step 104).
- the operating system processes each entry in the disk write list. For each entry, the operating system assumes that the system failure (Step 108) occurred during the write transaction, and proceeds to complete the posting to the storage volume identified in the entry.
- the storage volume is a RAID level 1 device
- the system reads data from the start address equal in length to the length in the disk write list from the primary disk and writes it to the secondary disks in the array.
- the storage volume is a RAID level 5 device
- the system reads the data from all of the data volumes at the specified location in the specified length and reconstructs the corresponding parity data.
- the entry in the disk write list corresponding to the completed transaction is deleted (Step 116).
- the process continues for each entry in the disk write list (Step 114).
- normal system operation resumes (Step 104).
- the present invention may also be employed to improve the performance of unbuffered writes (i.e., writes requested by a software application in which notification to the application of the completion of the write is necessary) to the persistent mass storage 32.
- unbuffered writes include, without limitation, copying a file from one directory to another directory, backing up and/or updating a file, initializing a file (e.g., writing zeros to the file), and the like.
- the application can be a database management system (DBMS) that verifies all updates to files before that file can be made available again to the application 18. It should be noted that a request to access the file for a read or write transaction can be from a different query from the same application or can be from a different application altogether.
- DBMS database management system
- an application program executing on a computer typically writes transactional information to disk and the operating system of the computer transmits a confirmation message to the application when the write completes. If the application program does not receive a confirmation message after a predetermined time, the application often performs the previous write to disk again and subsequently waits for another confirmation message. This process is generally wasteful and decreases the performance of the application program.
- the application generates a write to the persistent mass storage 32 (e.g., disk).
- the operating system 26 instead uses the device driver 28 to write the information to the persistent volatile memory 42.
- the operating system 26 transmits the confirmation to the application.
- the application receives the confirmation soon after the generation of the write, as a write to memory (e.g., persistent volatile memory 42) is faster than a write to the persistent mass storage 32. Therefore, in one embodiment the application receives the confirmation from the operating system 26 before the transactional infomiation is stored in the persistent mass storage 32.
- the filter driver 28 may be a passive filter or an active filter.
- a passive filter is a filter that monitors the information that the filter driver 28 stores in the persistent volatile memory 42.
- the computer 10 configures the passive filter driver module 28 to monitor all unbuffered writes requested by a particular application , such as a DBMS. This may be used to help determine performance decreases associated with multiple unbuffered writes by a particular application.
- the filter driver 28 receives an instruction to store in the persistent volatile memory 42 and performs some modification on the instruction before storing the instruction.
- the active filter driver 28 may receive a certain type of transactional information, such as an unbuffered write to initialize a file by writing zeros to the file.
- the active filter driver 28 may alter the unbuffered write to write ones to the file if the operating system 26 determines the writing of ones to be necessary for initialization.
- the filter driver 28 is created by a file systems filter driver kit (FDDK), developed by Open Systems Resources, Incorporated of Amherst, New Hampshire.
- FDDK file systems filter driver kit
- a logical flow chart depicts the operation of the computer 10 on unbuffered writes.
- the application generates (step 205) an unbuffered write and the filter driver 28 detects (step 210) the unbuffered write.
- the filter driver 28 updates (step 212) the table described above with information associated with the unbuffered write. For example, the filter driver 28 updates the status field to a reserved state to denote that the detected unbuffered write is about to be copied to the persistent volatile memory 42.
- the filter driver 28 stores (step 215) the transactional information in the persistent volatile memory 42.
- all writes unbuffered writes and buffered writes
- the filter driver 28 stores the transactional information in volatile memory 40, makes a copy of the transactional information stored in the volatile memory 40, and then transfers the copy into the persistent volatile memory 42.
- the operating system 26 additionally starts a timer to enable future recordation of the time elapsed from the transferring of the transactional information to the persistent volatile memory 42.
- the operating system 26 stores the time read from a predetermined register located in the computer 10.
- the filter driver 28 then updates (step 220) the table to denote that the transfer of the transactional information to the persistent volatile memory 42 is complete.
- the filter driver 28 updates the status field associated with the particular transactional information to an in-use state.
- the filter driver 28 can determine that the transmittal of particular session information did not complete prior to the computer failure (i.e., the status field associated with the transactional information will not be set to an in-use state). If the filter driver 28 determines that the transactional information was not transmitted to the persistent volatile memory 42, then the filter driver 28 repeats step 215 to store the transactional information in the persistent volatile memory.
- the operating system 26 then notifies (step 223) the application that the transactional information has been stored in the persistent volatile memory 42. In one embodiment, the notification occurs as a confirmation message to the application.
- the operating system 26 determines (step 225) whether the operating system 26 should flush, or transfer, the persistent volatile memory 42 to the persistent mass storage 32.
- the filter driver 8 includes a thread responsible for flushing the persistent volatile memory 42 to the persistent mass storage 32. As described further below, the thread can flush the persistent volatile memory 42 when a particular event occurs, such as when the operating system 26 transmits a message to the filter driver 28 instructing the filter driver 28 to flush the persistent volatile memory 42. In another embodiment, the thread may poll the persistent volatile memory 42 to determine whether the data stored in the persistent volatile memory should be flushed.
- FIG. 10 illustrates an embodiment of the steps performed by the operating system
- the operating system 26 determines (step 230) whether the data stored in the persistent volatile memory 42 exceeds or is about to exceed some predetermined threshold (e.g., the allotted size of the persistent volatile memory 42). If so, the operating system 26 flushes (step 233) the persistent volatile memory 42 to the persistent mass storage 32. If not, the operating system 26 does not flush (step 234) the persistent volatile memory 42.
- the operating system 26 can also flush (step 235) the persistent volatile memory 42 if the operating system 26 determines (step 235) that a predefined amount of time since the transferring of the transactional information has elapsed.
- the operating system 26 uses the timer described above to make this determination. In another embodiment, the operating system 26 records the current time stored in the register described above. Using this recorded time and the previously recorded time, the operating system 26 determines the amount of time that has elapsed since the transferring the transactional information to the persistent volatile memory 42. If the elapsed time is greater than a predefined amount of time, the operating system 26 flushes (step 233) the persistent volatile memory 42.
- the operating system 26 determines (step 240) to flush the persistent volatile memory 42 when the operating system 26 is not servicing the application (i.e., the operating system is not busy). For example, the operating system 26 flushes the persistent volatile memory 42 when the application is idle.
- the operating system 26 determines (step 245) whether the application requests to write the transactional information to a file that has previously been closed. In one embodiment, the application transmits a message to the operating system 26 when the application closes. If so, the operating system 26 flushes (step 233) the persistent volatile memory 42. The operating system 26 additionally flushes (step 233) the persistent volatile memory 42 when the computer 10 is in the process of being (step 250) shut down.
- the filter driver 28 additionally updates (step 255) the table to denote that the transactional information has been stored in the persistent mass storage 42.
- the transactional information By storing the transactional information in a persistent volatile memory 42, the information is accessible to the computer 10 at any instant in time. Therefore, a retrieval of such information does not significantly hamper the performance of the computer 10. Additionally, the persistent volatile memory 42 (and the persistent mass storage 32) enable the session information to be accessible to the computer after a computer failure, which would ordinarily erase the information from a volatile memory.
- the transaction is a catalog merchandise order phoned in by a customer and entered into the computer 10 by a customer representative.
- the customer enters the order into an application associated with the catalog and the application generates (step 205) the writes to a database file that should occur for the order.
- the order transaction involves checking an inventory database file, confirming that the item is available, placing the order and confirming that the order has been placed. Considering these steps as a single transaction, then all of the steps are to be completed before the transaction is successful and the inventory database file is actually changed to reflect the new order.
- the application associated with the catalog checks the inventory database file and confirms that the item is available. If the item is available, the application places the order. In some prior art computer systems, the application stores the transactional information in RAM 20 so that the application (e.g., the DBMS) can commit the information to persistent mass storage 32 at a later time. If the computer 10 failures (e.g., crashes) at this point in time, the order would have been placed, but the information previously stored in RAM 20 is erased. Consequently, the transactional information has not been reflected in the inventory database file and, therefore, to retrieve this information to update the inventory database file, the application frequently has to repeat the transaction again. [0072] Unlike the above scenario, the invention uses the filter driver 28 to determine
- step 210) that the transaction involves an unbuffered write to the inventory database file.
- the filter driver 28 then stores (step 215) the transactional information to the persistent volatile memory 42 so that the transactional information can survive a crash of the computer 10. Thus, if the failure of the computer 10 occurs, the transactional information has already been stored in the persistent volatile memory 42.
- the operating system 26 notifies (step 223) the application of the completion of the write and consequently determines (step 225) whether to flush the persistent volatile memory 42, as described above.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Library & Information Science (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Storage Device Security (AREA)
Abstract
Description
Claims
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP01925016A EP1277115A2 (en) | 2000-04-14 | 2001-04-13 | Methods and apparatus for persistent volatile computer memory and related applications thereof |
AU2001251617A AU2001251617A1 (en) | 2000-04-14 | 2001-04-13 | Methods and apparatus for persistent volatile computer memory and related applications thereof |
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/550,108 US6842823B1 (en) | 2000-04-14 | 2000-04-14 | Methods and apparatus for persistent volatile computer memory |
US09/550,108 | 2000-04-14 | ||
US09/664,483 | 2000-09-18 | ||
US09/664,483 US6802022B1 (en) | 2000-04-14 | 2000-09-18 | Maintenance of consistent, redundant mass storage images |
US09/790,750 US6901481B2 (en) | 2000-04-14 | 2001-02-22 | Method and apparatus for storing transactional information in persistent memory |
US09/790,750 | 2001-02-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
WO2001080008A2 true WO2001080008A2 (en) | 2001-10-25 |
WO2001080008A3 WO2001080008A3 (en) | 2002-06-06 |
Family
ID=27415580
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2001/012138 WO2001080008A2 (en) | 2000-04-14 | 2001-04-13 | Methods and apparatus for persistent volatile computer memory and related applications thereof |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP1277115A2 (en) |
AU (1) | AU2001251617A1 (en) |
WO (1) | WO2001080008A2 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9767015B1 (en) * | 2013-11-01 | 2017-09-19 | Amazon Technologies, Inc. | Enhanced operating system integrity using non-volatile system memory |
US10229011B2 (en) | 2013-09-25 | 2019-03-12 | Amazon Technologies, Inc. | Log-structured distributed storage using a single log sequence number space |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8930330B1 (en) | 2011-06-27 | 2015-01-06 | Amazon Technologies, Inc. | Validation of log formats |
US9195542B2 (en) | 2013-04-29 | 2015-11-24 | Amazon Technologies, Inc. | Selectively persisting application program data from system memory to non-volatile data storage |
US10387399B1 (en) | 2013-11-01 | 2019-08-20 | Amazon Technologies, Inc. | Efficient database journaling using non-volatile system memory |
US9740606B1 (en) | 2013-11-01 | 2017-08-22 | Amazon Technologies, Inc. | Reliable distributed messaging using non-volatile system memory |
US10089220B1 (en) | 2013-11-01 | 2018-10-02 | Amazon Technologies, Inc. | Saving state information resulting from non-idempotent operations in non-volatile system memory |
US9760480B1 (en) | 2013-11-01 | 2017-09-12 | Amazon Technologies, Inc. | Enhanced logging using non-volatile system memory |
US10303663B1 (en) | 2014-06-12 | 2019-05-28 | Amazon Technologies, Inc. | Remote durable logging for journaling file systems |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69126104T2 (en) * | 1990-11-30 | 1997-08-28 | Casio Computer Co Ltd | Wrist watch |
GB2281644A (en) * | 1993-09-02 | 1995-03-08 | Ibm | Fault tolerant transaction-oriented data processing. |
WO1995012848A1 (en) * | 1993-11-03 | 1995-05-11 | Eo, Inc. | Recovery boot process |
US5694583A (en) * | 1994-09-27 | 1997-12-02 | International Business Machines Corporation | BIOS emulation parameter preservation across computer bootstrapping |
US5794252A (en) * | 1995-01-24 | 1998-08-11 | Tandem Computers, Inc. | Remote duplicate database facility featuring safe master audit trail (safeMAT) checkpointing |
US5799305A (en) * | 1995-11-02 | 1998-08-25 | Informix Software, Inc. | Method of commitment in a distributed database transaction |
-
2001
- 2001-04-13 AU AU2001251617A patent/AU2001251617A1/en not_active Abandoned
- 2001-04-13 WO PCT/US2001/012138 patent/WO2001080008A2/en not_active Application Discontinuation
- 2001-04-13 EP EP01925016A patent/EP1277115A2/en not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10229011B2 (en) | 2013-09-25 | 2019-03-12 | Amazon Technologies, Inc. | Log-structured distributed storage using a single log sequence number space |
US9767015B1 (en) * | 2013-11-01 | 2017-09-19 | Amazon Technologies, Inc. | Enhanced operating system integrity using non-volatile system memory |
Also Published As
Publication number | Publication date |
---|---|
EP1277115A2 (en) | 2003-01-22 |
AU2001251617A1 (en) | 2001-10-30 |
WO2001080008A3 (en) | 2002-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6802022B1 (en) | Maintenance of consistent, redundant mass storage images | |
EP0566966B1 (en) | Method and system for incremental backup copying of data | |
US6460054B1 (en) | System and method for data storage archive bit update after snapshot backup | |
US6618794B1 (en) | System for generating a point-in-time copy of data in a data storage system | |
US6341341B1 (en) | System and method for disk control with snapshot feature including read-write snapshot half | |
US7685180B2 (en) | System and article of manufacture for transparent file restore | |
US8074035B1 (en) | System and method for using multivolume snapshots for online data backup | |
US6061770A (en) | System and method for real-time data backup using snapshot copying with selective compaction of backup data | |
US7480819B1 (en) | Method for boot recovery | |
US7627727B1 (en) | Incremental backup of a data volume | |
US8732121B1 (en) | Method and system for backup to a hidden backup storage | |
US8051044B1 (en) | Method and system for continuous data protection | |
US5379398A (en) | Method and system for concurrent access during backup copying of data | |
JP3641183B2 (en) | Method and system for providing instantaneous backup in a RAID data storage system | |
US7185048B2 (en) | Backup processing method | |
US6842823B1 (en) | Methods and apparatus for persistent volatile computer memory | |
JP6064608B2 (en) | Storage device, backup program, and backup method | |
US20050204186A1 (en) | System and method to implement a rollback mechanism for a data storage unit | |
US6901481B2 (en) | Method and apparatus for storing transactional information in persistent memory | |
US6944789B2 (en) | Method and apparatus for data backup and recovery | |
US7293146B1 (en) | Method and apparatus for restoring a corrupted data volume | |
US6880053B2 (en) | Instant refresh of a data volume copy | |
CN115793985A (en) | A safe storage method, device, equipment and storage medium | |
US7165160B2 (en) | Computing system with memory mirroring and snapshot reliability | |
EP1277115A2 (en) | Methods and apparatus for persistent volatile computer memory and related applications thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AK | Designated states |
Kind code of ref document: A2 Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A2 Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG |
|
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) | ||
AK | Designated states |
Kind code of ref document: A3 Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A3 Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2001925016 Country of ref document: EP |
|
WWP | Wipo information: published in national office |
Ref document number: 2001925016 Country of ref document: EP |
|
NENP | Non-entry into the national phase |
Ref country code: JP |
|
WWW | Wipo information: withdrawn in national office |
Ref document number: 2001925016 Country of ref document: EP |