Patent Publication Number: US-8117312-B2

Title: Network attached storage device and method using same

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
     This Application is a Divisional Application claiming priority from the Application having Ser. No. 10/713,399, now U.S. Pat. No. 7,734,701. 
    
    
     FIELD OF THE INVENTION 
     This invention relates to an apparatus and method to write information to an information storage medium using a network attached storage device. More specifically, the invention relates to an apparatus and method to write computer files to an information storage medium using a network attached storage device. 
     BACKGROUND OF THE INVENTION 
     Storage area networks (SANs) are dedicated networks that connect one or more hosts or servers to storage devices and subsystems, such as an automated media library. SANs may include an appliance, such as a networked attached storage device (“NASD”). 
     A NASD comprises storage elements or devices that connect to a network and provide file access services to, for example, one or more host computer systems. NASD devices attach directly to networks, such as local area networks, using traditional protocols such as Ethernet and TCP/IP, and serve files to one or more hosts or clients connected to the network. A NASD typically consists of an engine, which implements the file access services, and one or more storage devices, on which data is stored. A computer host system that accesses a NASD typically uses a file system device driver to access the stored data. The file system device driver typically implements file access commands. The file system driver disposed in a NASD interprets these commands and performs the internal device input/output (I/O) operations necessary to execute those file access commands. 
     Using prior art apparatus and methods, when a user, i.e. a host computer, designates a certain size for a file system, a corresponding number of storage blocks are allocated to that file system. Thus using these prior art methods, storage blocks are allocated for future anticipated file system needs. Certain file systems and the files they contain do not require all the allotted storage blocks, and therefore, certain storage blocks are not used. 
     What is needed is a method to allocate storage space to a file system when files are actually written to that file system, thereby allowing a better allocation of information storage resources. Applicant&#39;s network attached storage device, and method using same, allocates storage space to a file system when files are actually written to that file system. In addition, Applicants&#39; method can provide point-in-time copies of a file system. 
     SUMMARY OF THE INVENTION 
     Applicants&#39; invention includes a network attached storage device comprising a first file system, a first file system driver, a redirection pseudo device driver, a second file system, and a second file system driver. Applicant&#39;s invention further includes a method using Applicant&#39;s network attached storage device to write information to an information storage medium comprising a plurality of storage blocks. 
     Applicant&#39;s method opens a first file with write permission. In certain embodiments, the method opens the first file using a first file system driver. The first file system driver stores the entire first file system in a second file managed by a second file system driver. The second file system driver then locates an Extent Descriptor associated with the second file, and reads an address from that Extent Descriptor, where the address points to one or more storage blocks disposed in the information storage medium. In certain embodiments, a redirection pseudo device driver provides the mapping of block level IO commands generated by the first file system driver to file system IO commands issued to the second file system driver. The second file system driver performs the locating and reading steps to the storage blocks disposed in the information storage medium. 
     The method then determines if the one or more first storage blocks have been allocated for the file. In the event the one or more storage blocks have not been allocated for the file, the method then allocates those one or more first storage blocks, and writes the file to those one or more first storage blocks. In certain embodiments, a second file system driver performs the determining, allocating, and writing steps. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The invention will be better understood from a reading of the following detailed description taken in conjunction with the drawings in which like reference designators are used to designate like elements, and in which: 
         FIG. 1  is a block diagram of Applicant&#39;s network attached storage device; 
         FIG. 2  is a block diagram showing Applicant&#39;s file management protocol; 
         FIG. 3  is a block diagram showing Applicant&#39;s second file system driver mapping a file comprising an entire first file system to a plurality of Extent Descriptors; and 
         FIG. 4  is a flow chart summarizing the steps of Applicant&#39;s method. 
     
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     This invention is described in preferred embodiments in the following description with reference to the Figures, in which like numbers represent the same or similar elements. The invention will be described as embodied in an apparatus and method to write host computer files to an information storage medium. The following description of Applicant&#39;s apparatus and method is not meant, however, to limit Applicant&#39;s invention to data processing applications, as the invention herein can be applied generally to computer file storage and management. 
     Referring now to  FIG. 1 , host computer  110  communicates with one or more storage devices  130  via Network Attached Storage (“NASD”) device  120  and one or more communication links, such as communication links  115  and  135 . In certain embodiments, storage device  130  is disposed in an automated media library. 
     In certain embodiments, communication links  115  and  135  each separately comprise, for example, a serial interconnection, such as RS-232 or RS-432, an ethernet interconnection, a SCSI interconnection, a Fibre Channel interconnection, an ESCON interconnection, a FICON interconnection, a Local Area Network (LAN), a private Wide Area Network (WAN), a public wide area network, Storage Area Network (SAN), Transmission Control Protocol/Internet Protocol (TCP/IP), the Internet, and combinations thereof. In certain embodiments, communication link  115  comprises a local area network, and communication link  135  comprises a storage area network which includes a plurality of Fibre Channel links. 
     Host computer  110  comprises a computer system, such as a mainframe, personal computer, workstation, etc., including an operating system  112  such as Windows, AIX, Unix, MVS, LINUX, etc. (Windows is a registered trademark of Microsoft Corporation; AIX is a registered trademark and MVS is a trademark of IBM Corporation; and UNIX is a registered trademark in the United States and other countries licensed exclusively through The Open Group.) In certain embodiments, host computer  110  further includes a storage management program  114 . Storage management program  114  may include the functionality of storage management type programs known in the art that manage the transfer of data to a data storage and retrieval system, such as the IBM DFSMS software or the IBM Tivoli Storage Manager software. The storage management program  114  may be implemented as a separate, installed application program. Alternatively, storage management program  114  may include device drivers, backup software, and the like. 
     Applicant&#39;s NASD  120  includes networking software  121  which communicates with one or more host computers using communication link  115 . NASD  120  further includes first file system  123 , first file system driver  124 , redirection pseudo device driver  125 , second file system  127 , second file system driver  128 , and storage device driver  129 . 
     Storage device  130  includes information storage medium  132 . In certain embodiments, storage device  130  comprises an external RAID controller and storage medium  132  comprises a hard disk array. In certain embodiments, storage device  130  in combination with storage medium  132  comprises a direct access storage device (“DASD”). 
     In certain embodiments, NASD  120  is integral with host computer  110 . In certain embodiments, NASD  120  is integral with a data storage and retrieval system. In certain embodiments, NASD  120  is external to one or more host computers and one or more data storage and retrieval systems. In the embodiment shown in  FIG. 1 , NASD  120  communicates with a single host computer, i.e. host  110 . In other embodiments, NASD  120  communicates with more than one host computer. 
       FIG. 2  summarizes Applicant&#39;s file management protocol. In the illustrated embodiment of  FIG. 2 , the storage device  130  of  FIG. 1  comprises a direct access storage device (“DASD”)  210 . Logical Block Array (“LBA”)  215  comprises a plurality of DASD files  220  stored on DASD  210 . In certain embodiments, LBA  215  includes all the DASD files stored on DASD  210 . In certain embodiments, LBA  220  includes fewer than all the DASD files stored on DASD  210 . The plurality of DASD files  220  comprises (N) individual DASD files, such as DASD files  221 ,  222 ,  223 ,  224 , and  225 . 
     Each of the (N) DASD files  220  comprises a plurality of individual host computer files. For example, DASD file  223  comprises Logical Block Array (“LBA”)  230 . LBA  230  includes (M) host computer files  240 . In certain embodiments LBA  240  comprises all the host computer files comprising DASD file  223 . In certain embodiments, LBA  240  includes fewer than all the host computer files comprising DASD file  223 . 
     A user, such as host computer  110  ( FIG. 1 ), accessing DASD  210  uses first file system driver  124  ( FIGS. 1 ,  2 ) which provides all that user&#39;s host computer files stored on DASD  210 . Therefore, when a user accesses DASD  210  via the first file system, that user “sees” each individual user file stored on DASD  210 . 
     Referring now to  FIG. 3 , the first file system driver uses file  310  provided by the second file system driver  128 . Second file system driver  128  ( FIGS. 1 ,  3 ) maps file  310  to a plurality of Extent Descriptors. In the illustrated embodiment of  FIG. 3 , that plurality of Extent Descriptors include Extent Descriptor  330 , Extent Descriptor  340 , Extent Descriptor  350 , and Extend Descriptor  360 . A user, i.e. a host computer, viewing file  310  would determine that file  310  comprises 209 KB. In the illustrated embodiment of  FIG. 3 , each physical block comprises 1 KB. In the illustrated embodiment of  FIG. 3 , however, only 9 KB of storage space have actually been allocated to file  310 . 
     Extent Descriptor  330  indicates that a first portion of file  310  is saved on DASD file  223  starting at address  105 , i.e. beginning at location  373 . Extent Descriptor  330  further indicates that four 1 KB blocks, i.e. blocks  374 , have actually been allocated to user file  312 . Extent Descriptor  330  further indicates that version “W” is stored in blocks  374 . 
     Extent Descriptor  340  indicates that a second portion of file  310  is saved on DASD file  223  starting at address  100 , i.e. beginning at location  371 . Extent Descriptor  340  further indicates that two 1 KB blocks, i.e. blocks  372 , have actually been allocated to user file  314 . Extent Descriptor  330  further indicates that version “X” is stored in blocks  374 . 
     Extent Descriptor  350  comprises what is sometimes called a “skip descriptor.” By reciting an address of “FFFF,” Extent Descriptor indicates that user file  316  is not yet written to DASD file  223 , and therefore, no storage blocks have been allocated for file  316 . Extent Descriptor  330  recites no version identifier. 
     Extent Descriptor  360  indicates that a third portion of file  310  is saved on DASD file  223  starting at address  112 , i.e. beginning at location  375 . Extent Descriptor  360  further indicates that three 1 KB blocks, i.e. blocks  376 , have actually been allocated to user file  318 . Extent Descriptor  360  further indicates that version “Z” is stored in blocks  376 . 
     Applicant&#39;s invention further includes a method to write host computer files to an information storage medium using a NASD comprising a first file system, such as first file system  123  ( FIG. 1 ), a first file system driver, such as first file system driver  124  ( FIG. 1 ), a redirction pseudo device driver, such as redirection pseudo device driver  125  ( FIG. 1 ), a second file system, such as second file system  127  ( FIG. 1 ), and a second file system driver, such as second file system driver  128  ( FIG. 1 ). 
     Referring now to  FIG. 4 , in step  405  Applicant&#39;s method provides a NASD, such as NASD  120  ( FIG. 1 ), comprising a first file system, a first file system driver, a redirection pseudo device driver, a second file system, and a second file system driver. In step  410 , Applicant&#39;s method opens a file with write permission. 
     Using Applicant&#39;s apparatus and method, an open of a file in the file system of the first file system driver with write permission does not automatically increment the versioning of the underlying file in the file system of the second file system driver. Rather, a new version is only made upon notification. The user, i.e. a host computer, provides such a notification. In certain embodiments, when to make such a user notification is determined by one or more user policies. For example, a user policy may require that a new version number be assigned to all files modified after midnight of each day. In certain embodiments, such a user policy is set in firmware disposed in the redirection pseudo device driver, such as redirection pseudo device driver  125  ( FIG. 1 ). In certain embodiments, such a user policy is set in firmware disposed in the second file system driver, such as second file system driver  128  ( FIG. 1 ). 
     In certain embodiments, step  410  is performed by a host computer, such as host computer  110  ( FIG. 1 ). In certain embodiments, step  410  is performed by a NASD, such as NASD computer  120  ( FIG. 1 ). In certain embodiments, step  410  is performed by a first file system driver, such as first file system driver  124 . 
     Applicant&#39;s method transitions from step  410  to step  415  wherein Applicants&#39; NASD generates map block IOs to file system calls to the second file system driver. In certain embodiments, step  415  is performed by the first file system driver. 
     Applicants&#39; method transitions from step  415  to step  420  wherein Applicants&#39; NASD locates one or more Extent Descriptors associated with the file of step  410 . In certain embodiments, step  420  is performed by a second file system driver. Each of the Extent Descriptor(s) of step  420  comprises an address. If one or more storage blocks have been previously allocated to the file of step  410 , then the address in an Extent Descriptor points to one or more of those storage blocks. Alternatively, if one or more storage blocks have not been allocated to the file, then the address in the Extent Descriptor comprises a “fictitious address” which does not point to allocated storage blocks. 
     Applicant&#39;s method transitions from step  420  to step  430  wherein Applicants&#39;NASD examines the Extent Descriptor(s) of step  420  to identify storage blocks possibly allocated to one or more regions of a second file containing user data. In certain embodiments, step  430  is performed by a second file system driver. 
     Applicant&#39;s method transitions from step  430  to step  440  wherein Applicants&#39; NASD determines if one or more storage blocks have actually been allocated to the file of step  410 . In certain embodiments, step  440  is performed by the second file system driver. In certain embodiments, step  440  is performed by the redirection pseudo device driver. 
     If Applicant&#39;s NASD determines in step  440  that one or more storage blocks have not previously been allocated to the file, then the method transitions from step  440  to step  470  wherein Applicants&#39; NASD allocates one or more storage blocks to the file of step  410 . If Applicant&#39;s NASD determines in step  440  that one or more storage blocks have been previously allocated, then the method transitions from step  440  to step  450  wherein Applicants&#39; NASD determines if the user, i.e. the sending host computer, provided a new version notification for the file in step  417 . 
     In certain embodiments, the user notification of step  417  comprises a request to take a “Snap Shot.” In these embodiments, each version of a file in the second file system represents a Snap Shot Copy of the user file system at the time the versioning notification was made. In these embodiments, step  450  includes determining if the user is making a Snap Shot request. 
     If Applicant&#39;s NASD determines in step  450  that the user opening the file of step  405  did not provide a new version notification, then the method transitions from step  450  to step  455  wherein Applicants&#39; NASD writes the file of step  405  in place, i.e. to the previously allocated physical storage location. 
     Alternatively, if Applicant&#39;s NASD determines in step  450  that the user opening the file of step  405  did provide a new version notification, then the method transitions from step  450  to step  460  wherein Applicants&#39; NASD assigns a new version number to the file of step  405 . Applicant&#39;s method transitions from step  460  to step  470  wherein Applicants&#39; NASD allocates one or more storage blocks of information storage medium  132  ( FIG. 1 ) for the new version. 
     Applicant&#39;s method transitions from step  470  to step  480  wherein Applicants&#39; NASD creates and saves a new Extent Descriptor for the new version, where that new Extent Descriptor recites the newly-allocated storage blocks of step  470  and the new version number of step  460 . In certain embodiments, step  480  is performed by a second file system driver. Applicant&#39;s method transitions from step  480  to step  490  wherein Applicants&#39; NASD writes the file of step  410  to the storage blocks of step  470 . 
     Using Applicant&#39;s method, reads are allowed from any version of a file. Writes, however, may only be performed on the “active,” i.e. the highest version number, of the file. When writing to an Extent Descriptor that already has a storage block allocation, if the version number of the Extent is the same as the active version of the file, then the write is made in place. If the version of the Extent Descriptor is less than the active version of the file, then one or more new storage blocks are allocated, and the Extent Descriptor is altered to point to the new allocations and is given a version equal to the active version. 
     In certain embodiments, the Extent Descriptors are saved in duplicate. In certain embodiments, all modifications to meta information, i.e. version numbers and Extent Descriptors, are committed synchronously to a file write and not cached until file close, background commit, or volume unmount. 
     In certain embodiments, Applicants&#39; invention includes instructions residing in non-volatile memory  122  ( FIG. 1 ), where certain of those instructions are executed by Applicants&#39; first file system driver to perform steps  410  and  420  recited in  FIG. 4 , and where other of those instructions are executed by Applicants&#39; second file system driver to perform steps  420  through  490  recited in  FIG. 4 . In other embodiments, Applicants&#39; invention includes instructions residing in any other computer program product, where those instructions are executed by a computer external to, or internal to, Applicants&#39; NASD, to perform steps  410  through  490  recited in  FIG. 4 . In either case, the instructions may be encoded in an information storage medium comprising, for example, a magnetic information storage medium, an optical information storage medium, an electronic information storage medium, and the like. By “electronic storage media,” Applicants mean, for example, a device such as a PROM, EPROM, EEPROM, Flash PROM, compactflash, smartmedia, and the like. 
     While the preferred embodiments of the present invention have been illustrated in detail, it should be apparent that modifications and adaptations to those embodiments may occur to one skilled in the art without departing from the scope of the present invention as set forth in the following claims.