Managing an archived file system

A determination is made that an archive that includes at least one file is present in association with an operating system file system. An additional file system is generated for accessing the archive. The generated additional file system is included in the operating system file system. An application is allowed to access the at least one file via the generated additional file system.

BACKGROUND

The disclosure relates to a method, system, and article of manufacture for managing an archived file system.

A file archiver is an application that may combine one or more files into one archive file, or a series of archive files. Many file archivers use data compression in order to reduce the size of the archive file. Certain file archivers take a plurality of files and concatenate the contents of the plurality of files sequentially into the archive file. The process of generating an archive file may be termed archiving or packing. Reconstructing the original files from an archive file may be termed unarchiving, unpacking or extracting.

One or more files or directories may be compressed and stored in an archive. The archive may have to be decompressed before an application can access the files or directories that are compressed and stored in the archived. For example, in certain versions of the Unix operating system the “tape archive” (TAR) file format may be used. On certain Windows platforms, the ZIP archive format may be used to archive files.

Different archiving software may use different compression and decompression algorithms, and may also use different encryption and decryption mechanisms to restrict access to the files or directories stored in the archive. In addition, different archiving software may provide different interfaces to add files to an archive, and to extract and access the files from the archive.

If an application needs to access files or directories that have been stored in an archive, the archive may have to be uncompressed and/or unarchived by the archiving software before the application can access the files or the directories. The archive file cannot be directly used by the application or by operating system commands for manipulating files or directories, such as, commands for copying files, listing the files in a directory, etc.

SUMMARY OF THE DESCRIBED EMBODIMENTS

Provided are a method, system, and article of manufacture, wherein a determination is made that an archive that includes at least one file is present in association with an operating system file system. An additional file system is generated for accessing the archive. The generated additional file system is included in the operating system file system. An application is allowed to access the at least one file via the generated additional file system.

In additional embodiments, the additional file system is a virtual archives file system. The archive is decompressed via a decompression module of an archive processing module corresponding to the archive, wherein decompressing the archive generates the at least one file. The at least one file is exposed to the application, via at least one interface provided by the virtual archives file system.

In yet additional embodiments, the virtual archives file system is mounted to a directory. The at least one file is stored in the directory to expose the at least one file to the application. The application accesses the directory to perform an operation on the at least one file.

In further embodiments, the additional file system receives a request from the application to access the at least one file. The additional file system provides the at least one file to the application, wherein the at least one file has already been stored in the additional file system via a decompression of the archive, and wherein the decompression of the archive occurs before receiving the request to access the at least one file.

In yet further embodiments, the additional file system is accessible to the application via an Input/Output (I/O) manager provided by an operating system that supports that operating system file system, and wherein the additional file system allows at least read and write operations on the at least one file via the I/O manager.

DETAILED DESCRIPTION

In the following description, reference is made to the accompanying drawings which form a part hereof and which illustrate several embodiments. It is understood that other embodiments may be utilized and structural and operational changes may be made. For example, while the following description describes embodiments with reference to a backup of data, it is understood that alternative embodiments may be utilized for archiving of data, migration of data, etc.

Certain embodiments provide a file system that virtualizes archives as an operating system file system, such that applications like Web servers, File Transmission Protocol (FTP) servers, and operating system commands can access the files in they archives directly by using the operating system provided I/O system calls.

FIG. 1illustrates a block diagram of a computing environment100in accordance with certain embodiments. The computational environment100includes a computational platform102that may comprise any suitable computational platform, including those presently known in the art, such as, personal computers, workstations, mainframes, midrange computers, network appliances, palm top computers, telephony devices, blade computers, hand held computers, etc. While the computational platform102has not been shown coupled to a network, in certain embodiments the computational platform102may be coupled to a network, such as, the Internet, an intranet, a storage area network, a wide area network, a local area network, etc.

The computational platform102includes one or more operating system file systems104, one or more archives106, at least one archive processing module108, one or more applications110, and an I/O manager112.

The operating system file system104includes any suitable operating system file system, including those presently known in the art, such as the Network File System (NFS), the File Allocation Table (FAT) file system, the Journal File System (JFS), New Technology File System (NTFS), etc. The operating system file systems104included in the computational platform102may be supported by the operating system (not shown) that executes on the computational platform102.

The archive106may include, any suitable archive, including those presently known in the art, such as a ZIP archive, a Java Archive (JAR), a Tape Archive (TAR), a GZIP archive, etc. The archive106may include one or more files that may have undergone compression before archiving.

The archive processing module108, also referred to as a file archiver, may include a compression module114and a decompression module116. The compression module114may compress files that are to be archived in the archive106. For example, a ZIP compression module may compress a plurality of files and store the resulting ZIP archive in the archive106. The decompression module116may decompress the files stored in the archive106. For example, the decompression module116may decompress compressed files stored in a ZIP archive. While embodiments will be illustrated with compression and decompression of archives, alternative embodiments may utilize the packing and unpacking of archives, in addition to or instead of the compression and decompression of archives.

The application110may include any suitable application or command, including those presently known in the art, that are capable of interfacing with the operating system file system104via the I/O manager112, where the I/O manager112may be provided by the operating system that executes in the computational platform102. The I/O manager112allows the application110to perform I/O on unarchived files stored in the operating system file system104.

In certain embodiments, the operating system file system104includes a virtual archives file system118in addition to other operating system file systems120, such as, NFS, JFS, FAT, NTFS, etc. The virtual archives file system118allows the application110to access the files stored in the archive106without any decompression by using the exposed files and directories120generated by the virtual archives file system118.

Therefore,FIG. 1illustrates a virtual archives file system118that that virtualizes the archives106as an operating system file system104, such that applications114like Web servers, File Transmission Protocol (FTP) servers, and other operating system commands can access the files in archives106directly by using the operating system provided I/O system calls in the I/O manager112.

FIG. 2illustrates a block diagram that includes additional elements included in the computing environment100ofFIG. 1, in accordance with certain embodiments.

The applications110included in the computational platform102of the computing environment100may include applications, such as a list command200, a copy command202, a remove command204, a Web server206application, etc., where the list command200lists the files in a directory, where the copy command202copies a file from one location to another, where the remove command204removes a file from a directory, and where the Web server206application may attempt to perform I/O with files stored in the computational platform102.

The I/O manager112may include various I/O system calls, such as open208, close210, read212, write214, where the open system call208opens a file, the close system call210closes a file, the read system call212reads from a file, and the write system call writes to a file. Applications110, such as the Web server206, may use the I/O system calls in the I/O manager112to access the files stored in the computational platform102.

The archive processing module108may include a GZIP utility216, a TAR utility218, and a JAR utility220, where the GZIP utility216may create archives in the GZIP format, the TAR utility218may create archives in the TAR format, and the JAR utility220may create archives in the JAR format.

The operating system file system104may include file systems such as NTFS222, JFS224, FAT226, etc., in addition to the virtual archives file system118. The virtual archives file system118includes exposed archive files and directories118, where the exposed archive files and directories118are used by the applications110to access the files in the archive106, where the archive106stores archived files in formats such as GZIP, JAR, TAR, etc. However, the applications110do not have to execute the archive processing modules108to access the archived files stored in the archive106, but instead access the archived files directly via the exposed files and directories120of the virtual archives file system118.

FIG. 3illustrates a block diagram of the virtual archives file system118, in accordance with certain embodiments.

The virtual archives file system118may be implemented as one of the kernel modules of the operating system file system. The virtual archives file system118implements the kernel file system specific system calls such as mount300, unmount302, read304, write306, open308, release310, read directory312, and other file system specific calls314. For example, the mount command300may carry the archive file as one of the arguments to the virtual archives file system118and may mount the virtual archives file system118into a specified file directory on which the files and the directories of the archive would be laid like other files and directories.

FIG. 4illustrates a block diagram that shows an exemplary archive and the corresponding files/directories exposed by the virtual archives file system118, in accordance with certain embodiments.

When the archive “testsoftware.tar” is mounted404as a virtual archives file system118to the directory /usr406, then the application110will have access to the exposed files and directories408as follows:/usr/testsoftware/bin/test.exe/usr/testsoftware/lib/core.lib/usr/testsoftware/bin/core.so/usr/testsoftware/doc/guide.pdf.

In certain embodiments, if a user types the command ‘Is’ in the korn shell, the user would see ‘testsoftware’ as one of the directories under /usr, and similarly ‘bin’, ‘lib’, and ‘doc’ would be seen as directories under /usr/testsoftware. An editor command would be able to open the file guide.pdf by using any of the editing applications included in the applications110. Similarly text.exe can be executed from the directory/usr/testsofware/bin and supporting files can be loaded directly by the operating system loader.

Therefore,FIG. 4illustrates certain embodiments in which even though a plurality of files are stored in an archive, the plurality of files can be individually accessed directly by the applications110by using the exposed archive files and directories120stored in the virtual archives file system118. The virtual archives file system118uses the other operating system file systems120, such as JFS, NFS, FAT, etc., to read the actual archives and different compression modules114and decompression modules116to handle the different types of archives. The virtual archives file system118loads the archives from the storage using the associated file system when the virtual archives file system118is mounted to a directory. The virtual archives file system118may also call the decompression module116corresponding to an archive, when the virtual archives file system118receives a read system call from the application110. Additionally, the virtual archives file system118may call the compression module114corresponding to an archive, when the virtual archives file system118receives a write system call from the application110.

Therefore,FIG. 4illustrates certain embodiments in which in response to the mounting of the virtual archives file system118, the exposed archive files and directories408allow the applications110to directly access the archived files without any archive processing modules108being called by the applications110.

FIG. 5illustrates a first flowchart for managing archived files in the computing environment100, in accordance with certain embodiments. Certain operations shown in the flowchart ofFIG. 5may be implemented in computing platform102by the virtual archives file system118and by the applications110.

Control starts at block500, where the virtual archives file system118is loaded in the computational platform102. The operating system may mount (at block502) the virtual archives file system118into a directory.

On being mounted to a directory, the virtual archives file system118may load (at block504) an archive106from storage using the corresponding operating system file system104with which the archive106is associated. The virtual archives file system118decompresses (at block506) the archive106by using the corresponding decompression module116.

Subsequently, the virtual archives file system118may provide (at block508) interfaces to the files and directories of the decompressed archive to applications110via the exposed archive files and directories120generated by the virtual archives file system118.

The virtual archives file system118determines (at block510) whether there are additional archives to process. If so, control returns to block504. If not, applications110interface (at block512) with the files and directories of the archive106via the virtual archives file system118, such that the applications110do not have to request decompression or unarchiving of the archives106.

Therefore,FIG. 5illustrates certain environments in which a virtual archives file system118exposes archived files, such that the archived files can be accessed without decompression or unarchiving being requested by the user applications110.

FIG. 6illustrates a second flowchart for managing archived files implemented n the computing environment100, in accordance with certain embodiments.

Control starts at block600, where it is determined that an archive106that includes at least one file is present in association with an operating system file system104. An additional file system is generated (at block602) for accessing the archive, where the additional file system may include the virtual archives file system118.

Control proceeds to block604, where the generated additional file system118is included in the operating system file system104. An application110is allowed (at block606) to access the at least one file via the generated additional file system118.

Therefore,FIGS. 1-6illustrate certain embodiments that provide a virtual archives file system118that uses the archive106as a storage device and virtualizes the archive106as a file system to user applications110. The user applications110can perform different kinds of I/O operations, such as open, close, write, delete, list, etc., over the archive without decomposing the archive. The user applications110directly accesse the archives106using I/O system calls because the archives are virtualized as an operating system file system to the user applications110.

For example, Web sites managed by a user mode Web server application can be archived using a compression utility and stored in secondary devices such as a digital video disc (DVD). The archived Web sites can be directly accessed from the archives without decomposing the archive, just as the Web site was accessed before compression.

Therefore, certain embodiments provide a virtual archives file system118that allows archived contents to be accessed as files and directories using the standard I/O interfaces provided by the operating system. Disk space may be saved because users may create a file system and assign the file system to one or more archives that are mounted to the virtual archives file system118, where the virtual archives file system118virtualizes the archives as an operating system file system.

Additionally, if the virtual archives file system118is mounted, the operating system loader can load the executable modules from the archives directly into memory and execute the modules.

The described techniques may be implemented as a method, apparatus or article of manufacture involving software, firmware, micro-code, hardware and/or any combination thereof. The term “article of manufacture” as used herein refers to code or logic implemented in a medium, where such medium may comprise hardware logic [e.g., an integrated circuit chip, Programmable Gate Array (PGA), Application Specific Integrated Circuit (ASIC), etc.] or a computer readable medium, such as magnetic storage medium (e.g., hard disk drives, floppy disks, tape, etc.), optical storage (CD-ROMs, optical disks, etc.), volatile and non-volatile memory devices [e.g., Electrically Erasable Programmable Read Only Memory (EEPROM), Read Only Memory (ROM), Programmable Read Only Memory (PROM), Random Access Memory (RAM), Dynamic Random Access Memory (DRAM), Static Random Access Memory (SRAM), flash, firmware, programmable logic, etc.]. Code in the computer readable medium is accessed and executed by a processor. The medium in which the code or logic is encoded may also comprise transmission signals propagating through space or a transmission media, such as an optical fiber, copper wire, etc. The transmission signal in which the code or logic is encoded may further comprise a wireless signal, satellite transmission, radio waves, infrared signals, Bluetooth, etc. The transmission signal in which the code or logic is encoded is capable of being transmitted by a transmitting station and received by a receiving station, where the code or logic encoded in the transmission signal may be decoded and stored in hardware or a computer readable medium at the receiving and transmitting stations or devices. Additionally, the “article of manufacture” may comprise a combination of hardware and software components in which the code is embodied, processed, and executed. Of course, those skilled in the art will recognize that many modifications may be made without departing from the scope of embodiments, and that the article of manufacture may comprise any information bearing medium. For example, the article of manufacture comprises a storage medium having stored therein instructions that when executed by a machine results in operations being performed.

Devices that are in communication with each other need not be in continuous communication with each other, unless expressly specified otherwise. In addition, devices that are in communication with each other may communicate directly or indirectly through one or more intermediaries. Additionally, a description of an embodiment with several components in communication with each other does not imply that all such components are required. On the contrary a variety of optional components are described to illustrate the wide variety of possible embodiments.

FIG. 7illustrates an exemplary computer system700, wherein in certain embodiments the computing platform102of the computing environment100ofFIG. 1may be implemented in accordance with the computer architecture of the computer system700. The computer system700may also be referred to as a system or a machine, and may include a circuitry702that may in certain embodiments include a processor704. The system700may also include a memory706(e.g., a volatile memory device), and storage708. Certain elements of the system700may or may not be found in the computing platform102. The storage708may include a non-volatile memory device (e.g., EEPROM, ROM, PROM, RAM, DRAM, SRAM, flash, firmware, programmable logic, etc.), magnetic disk drive, optical disk drive, tape drive, etc. The storage708may comprise an internal storage device, an attached storage device and/or a network accessible storage device. The system700may include a program logic710including code712that may be loaded into the memory706and executed by the processor704or circuitry702. In certain embodiments, the program logic710including code712may be stored in the storage708. In certain other embodiments, the program logic710may be implemented in the circuitry702. Therefore, whileFIG. 7shows the program logic710separately from the other elements, the program logic710may be implemented in the memory706and/or the circuitry702.

At least certain of the operations illustrated inFIGS. 5 and 6may be performed in parallel as well as sequentially. In alternative embodiments, certain of the operations may be performed in a different order, modified or removed.

Furthermore, many of the software and hardware components have been described in separate modules for purposes of illustration. Such components may be integrated into a fewer number of components or divided into a larger number of components. Additionally, certain operations described as performed by a specific component may be performed by other components.

The data structures and components shown or referred to inFIGS. 1-7are described as having specific types of information. In alternative embodiments, the data structures and components may be structured differently and have fewer, more or different fields or different functions than those shown or referred to in the figures. Therefore, the foregoing description of the embodiments has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the embodiments to the precise form disclosed. Many modifications and variations are possible in light of the above teaching.