The term Network Attached Storage (NAS) refers to a dedicated data storage device(s) connected directly to a computer network to provide centralized data access and storage services to one or more network clients such as, e.g., a personal computer. In some circumstances it may be useful to back up data residing on the one or more network clients to a network attached storage device.
Described herein are exemplary systems and methods to implement a network aware storage device. The methods described herein may be embodied as logic instructions stored on a computer-readable medium. When executed on a processor, the logic instructions cause a general processor to be programmed as a special-purpose machine that implements the described methods. The processor, when configured by the logic instructions to execute the methods recited herein, constitutes structure for performing the described methods.
Network attached storage devices 110a, 110b, 110c may be implemented as one or more communicatively connected storage devices. Exemplary storage devices may comprise, but are not limited to, the Media Vault™ line of storage devices commercially available form Hewlett-Packard Corporation of Palo Alto, Calif., USA. In some embodiments, at least a portion of communication network 120 may be implemented as a private, dedicated network such as, e.g., a local area network (LAN) or a wide area network (WAN). Alternatively, portions of communication network 120 may be implemented using public communication networks such as, e.g., the Internet, pursuant to a suitable communication protocol such as, e.g. TCP/IP.
Network clients 112a, 112b, 112c, 112d, 112e, 112f may be implemented as computing devices such as, e.g., a networked computer 112a, a laptop computer 112b, a desktop computer 112c, a personal digital assistant (PDA) 112d, a smart phone 112e, other computing devices 112f or the like. Applications running on network clients 112a, 112b, 112c, 112d, 112e, 112f may initiate file access requests to access information stored in network attached storage devices 110a, 110b, 110c. Network attached storage devices 110a, 110b, 110c receive file access requests and, in response, locate and return the requested information to the network client that originated the request.
In some embodiments, a network attached storage device such as device 110a or 110b may function as a media server. Media files such as, for example, music or video files, may be stored on the network attached storage device. One or more of client devices 112a, 112b, 112c, 112d, 112e, 112f, may initiate a request for media content from a network attached storage device. In response, the network attached storage device can either transmit a copy of the media file to the requesting client or may initiate a playback routine to play the media file to the requesting client device. In such embodiments, users of the network attached storage device may choose to load copyrighted works from a storage media (e.g., a compact disc, a digital video disc, or the like) onto the network attached storage device.
Network interface 210 may comprise an input/output (I/O) port to provide a physical connection with a network. For example, network interface 210 may comprise an Ethernet port. Network interface 210 may comprise a network interface card (NIC), also commonly referred to as a network adapter or a network card. The NIC manages I/O operations to enable NAS device 200 to communicate over a network. Alternatively, the operations of the NIC may be implemented on a main circuit board such as, e.g., a motherboard of NAS device 200.
NAS device 200 further comprises at least one processor 212. As used herein, the term “processor” means any type of computational element, such as but not limited to, a microprocessor, a microcontroller, a complex instruction set computing (CISC) microprocessor, a reduced instruction set (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, or any other type of processor or processing circuit.
NAS device 200 further comprises system random access memory and/or read-only memory 230. Memory 230 comprises an operating system 240 for managing operations of NAS device 200. In one embodiment, operating system 240 comprises a hardware interface module 254 that provides an interface to system hardware. The particular embodiment of operating system 240 is not critical to the subject matter described herein. Operating system 240 may be embodied as a UNIX operating system or any derivative thereof (e.g., Linux, Solaris, etc.) or as a Windows® brand operating system.
Operating system 240 comprises (or interfaces with) a file system(s) 250 that manages files used in the operation of NAS device 200. For example, file system(s) 250 may implement one or more file systems such as FAT, NTFS, ext3, reiser, or the like. In one embodiment, operating system 240 may comprise a file cache management system 244 interposed logically between the file system(s) 250 and underlying modules such as, e.g., the hardware interface module 254. File cache management system 244 interfaces with the file system(s) 250 to manage the file cache 256 as a resource that may be shared between users of the computer system, e.g., on a per-workload basis.
Operating system 240 further comprises a system call interface module 242 that provides an interface between the operating system 240 and one or more application modules that execute on NAS device 200.
NAS device 200 further comprises storage media 280. In some embodiments, NAS device 200 may be implemented as a network aware storage device which operates essentially as a local caching device, yet relies on network-bases storage for longer-term storage needs. In such embodiments, storage media 280 may be embodied as one or more magnetic disk drives. Alternatively, NAS device 200 may rely on solid state cache 258 as a cache memory device. Still alternatively, storage media 280 may comprise optical, magneto-optical, or electro-optical storage media.
NAS device 200 further comprises a network caching module 260. In some embodiments, a network caching module 260 is embodied as a software module that executes on processor(s) 212. By way of example and not limitation, a network caching module 260 may receive and process backup requests and data retrieval requests from clients of NAS device 200. Operations implemented by some embodiments of network caching module 260, are described with reference to
Referring to
At operation 315 it is determined whether the file identified in the backup request resides on the local media, i.e., in the solid state cache 258 or in the storage media 280. If at operation 315, the file identified in the backup request resides on the local media, then control passes to operation 320 and the backup request is executed against the file(s) on the local media identified in the backup request. In some embodiments the backup request may include a portion of the file(s) identified in the backup request, and executing the backup request may comprise storing the backup request and the associated data in at least one of the solid state cache 258 or in the storage media 280.
By contrast, if at operation 315 the file(s) do not reside on the local media, then control passes to operation 325 and a remote backup operation is implemented. In some embodiments of a remote backup operation the NAS device 200 may forward the backup request to a remote network-based storage device such as device 140, which manages the backup operation external to the NAS device 200. In other embodiments, the NAS device my retrieve at least a portion of the file(s) identified in the search request and implement the update process within NAS device 200.
Referring to
Referring to
At operation 515 it is determined whether the file identified in the data retrieval request resides on the local media, i.e., in the solid state cache 258 or in the storage media 280. If at operation 515, the file identified in the backup request resides on the local media, then control passes to operation 520, where it is determined whether the file(s) identified in the data retriefval request are current. In some embodiments, the NAS device 200 may compare timestamps associated with the last update on the file(s) identified in the data retrieval request to determine whether the file(s) are current. Alternate embodiments may utilize a hash of timestamp, name, and file size to create an identifiable key to determine if the file matches. If, at operation 520, the file(s) identified in the data retrieval request are current, the control passes to operation 535 and the data retrieval request is executed against the file(s) on the local media identified in the backup request.
By contrast, if at operation 515 the file(s) do not reside on the local media, or if at operation 520 the files are not current, then control passes to operation 530 and a remote retrieval operation is implemented. Control then passes to operation 535 and the data retrieval request is executed against the file(s) on the local media identified in the backup request. In some embodiments of remote data retrieval operation the NAS device 200 may forward the data retrieval request to a remote network-based storage device such as device 140, which manages the data retrieval operation external to the NAS device 200. In other embodiments, the NAS device 200 may retrieve at least a portion of the file(s) identified in the data retrieval request.
Referring to
Thus, described herein are exemplary systems and methods to implement a network a network aware storage device. According to the principles described, a NAS device may be constructed using a relatively small amount of local storage, but may provide virtually unlimited storage by using network-based storage techniques. Some embodiments may be provided as computer program products, which may comprise a machine-readable or computer-readable medium having stored thereon instructions used to program a computer (or other electronic devices) to perform a process discussed herein. The machine-readable medium may comprise, but is not limited to, floppy diskettes, hard disk, optical disks, CD-ROMs, magneto-optical disks, ROMs, RAMs, erasable programmable ROMs (EPROMs), electrically erasable EPROMs (EEPROMs), magnetic or optical cards, flash memory, or other suitable types of media or computer-readable media suitable for storing electronic instructions and/or data. Moreover, data discussed herein may be stored in a single database, multiple databases, or otherwise in select forms (such as in a table).
Reference in the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is comprised in at least an implementation. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/US2009/035347 | 2/26/2009 | WO | 00 | 8/18/2011 |