Duplicating data in data storage devices of a link volume

The data storage system addresses the challenges of managing data across multiple devices by creating a link volume for efficient data redundancy and scalability, offering a cost-effective solution to traditional RAID systems.

DE112016004457B4Active Publication Date: 2025-01-30WESTERN DIGITAL TECHNOLOGIES INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
DE112016004457
Authority / Receiving Office
DE · DE
Patent Type
Patents
Current Assignee / Owner
Priority Date
2015-09-30
Filing Date
2016-09-27
Publication Date
2025-01-30
Estimated Expiration
2036-09-27

AI Technical Summary

Technical Problem

Existing data storage systems face challenges in securely managing data across multiple devices of varying capacities and media types without the high costs associated with RAID systems, and they lack efficient methods to handle data redundancy and scalability.

Method used

A data storage system that creates a logical or link volume by copying data across multiple data storage devices, providing RAID-like functionality without the costs of traditional RAID systems, allowing for data redundancy and scalability while supporting devices of different capacities and media types.

Benefits of technology

Enables secure, efficient, and cost-effective data redundancy and scalability across multiple data storage devices, maintaining data integrity and accessibility without the overhead of traditional RAID systems.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

A device comprising: a communication interface (312, 314) configured to be coupled with a set of external single data storage devices (320), a control unit (311) coupled to the communication interface, wherein the control unit is configured, to create a link volume (330) (505) which includes the set of external individual data storage devices, to identify the set of stored files (510) to be duplicated in the link volume, to determine one or more levels of protection for the set of files (515), where one or more protection levels are applied to the linking volume, to duplicate the set of files over or in the link volume based on one or more levels of protection (520) so that a minimum number of copies of the set of files exist on the link volume, to determine (805) that a first external single data storage device from the set of external single data storage devices is to be temporarily removed from the linking volume, to identify a second set of files from the set of files (810), which are duplicated in the first external single data storage device, to copy the second set of files to other external single data storage devices in the set of external single data storage devices based on one or more levels of protection (815), so that the minimum number of copies of the set of files is maintained in the linking volume; to determine (820) that the first external single data storage device has been reinserted into the linking volume, and to remove the second set of files from the first set of the single data storage device (825).
Need to check novelty before this filing date? Find Prior Art

Description

background

[0001] Distributing data storage across one or more data storage devices can lead to increased data security through data redundancy. One type of data storage device can be a direct attached storage device (DAS). DAS devices can provide one or more computing devices with direct access to data via a connecting cable (e.g., via a direct or physical connection). Another type of data storage device can be a network attached storage device (NAS). NAS devices can provide access to data across computer networks (e.g., through a wired and / or wireless network). US 8,706,755 B2 discloses a distributed file system for storing and retrieving files in a plurality of storage devices. US 7,844,775 B2 relates to the distribution of data in a distributed storage system. Short description of the drawings

[0002] In the accompanying drawings, various embodiments are shown for illustrative purposes and should not be construed as limiting the scope of this disclosure in any way. Furthermore, various features of different disclosed embodiments may be combined to form additional embodiments that are part of this disclosure. Fig. 1 is a diagram of a data storage system according to one embodiment. Fig. 2 is a diagram of a data storage system according to one embodiment. Fig. 3 is a diagram of a data storage system according to one embodiment. Fig. 4 is a diagram of an example file list according to one embodiment. Fig. 5 is a flow diagram illustrating a process for replicating data across a link volume according to one embodiment. Fig. 6 is a flow diagram illustrating a process for adding a data storage device to a link volume according to one embodiment. Fig. 7 is a flow diagram illustrating a process for removing a data storage device from a link volume according to one embodiment. Fig. 8 is a flow diagram illustrating a process for temporarily removing a data storage device from a link volume according to one embodiment. Fig. 9 is a diagram of a computing device, according to one embodiment. Detailed description

[0003] According to the invention, an apparatus, a method, and a computer-readable medium are provided having the features of the independent claims; dependent claims relate to preferred embodiments. While certain embodiments are described, these embodiments are presented merely by way of example and are not intended to limit the scope. Indeed, the novel methods and systems described herein may be embodied in a variety of other forms. Furthermore, various omissions, substitutions, and changes in the form of the methods and systems described herein may be made without departing from the scope of the invention.

[0004] The headings provided herein are for convenience only and do not necessarily affect the scope or meaning of the claimed invention. Disclosed herein are example implementation configurations and / or embodiments relating to replication data (e.g., files) across a link volume that may include a plurality of data storage devices (e.g., external standalone or single-unit data storage devices). overview

[0005] Data storage devices / systems may provide one or more computing devices with file-level data storage. An example of a data storage device / system may be a DAS device. The DAS device may be coupled to a computing device (e.g., a laptop computer, a desktop computer, etc.) via an interconnect cable (e.g., a Thunderbolt cable, an eSATA (external serial advanced technology attachment) cable, a USB (universal serial bus) cable, etc.) coupled to a DAS interface (e.g., a communications interface such as USB 2.X, USB 3.X, Thunderbolt, eSATA, etc.) of the DAS device. A DAS device may provide a convenient mechanism for data transfer between computing devices, increasing storage capacity, e.g.,increase the storage space of a computing device and / or provide increased data security through data redundancy. Another example of a data storage device / data storage system may be a NAS device. A NAS device may be coupled to a network via a NAS interface (e.g., a network interface or a communications interface such as Ethernet, 802.11 (Wi-Fi), etc.). A NAS device may provide file-level data storage over a network (e.g., a computer network), with the stored data being accessible to a group of clients. A NAS device may, for example, include hardware, software, or a combination of such elements configured to operate as a file server.NAS devices / systems can provide a convenient mechanism for sharing data across multiple computers or remotely accessing data stored on the NAS devices / systems. Compared to traditional file servers, the benefits of NAS devices / systems can include the ability to access data from multiple locations (e.g., remote locations), faster data access, easier administration, and / or simpler configuration.

[0006] Certain embodiments disclosed herein provide the ability to group a plurality of data storage devices (e.g., individual external data storage devices such as portable hard drives, NAS drives / devices, etc.) into a linked volume. The files stored in the plurality of data storage devices can be replicated across the linked volume (e.g., copied to or onto other data storage devices within the linked volume). This may allow a user to advantageously utilize existing data storage devices to back up files and / or other data (for protection against data loss) more cheaply, easily, efficiently, and quickly. Data storage devices

[0007] Fig. 1 is a diagram of a data storage system 100 according to one embodiment. In the data storage system 100, a data storage device 120 may be communicatively coupled to one or more client devices (e.g., computing devices) to provide file-based data storage services with the one or more client devices (e.g., the one or more computing devices). Types of client devices (e.g., computing devices) that may have access to the data storage device 120 may include, but are not limited to, phones 137 (e.g., smartphones, cellular phones, etc.), cable set-top boxes 136, smart TVs 135, video game consoles 134, laptop computers 133, tablet computers 132, desktop computers 131, portable computers, and / or other types of computing devices. In one embodiment, the data storage device 120 may be a standalone external data storage device.This data storage device 120 may, for example, be a data storage device that is not located within a computing device (e.g., not within a container or enclosure of a computing device). In another example, the data storage device 120 may be a data storage device that can provide access to data without being directly coupled to a computing device (which may, for example, be a NAS device).

[0008] The data storage device 120 can provide various client devices (e.g., telephones 137, cable set-top boxes 136, smart TVs 135, video game consoles 134, laptop computers 133, tablet computers 132, desktop computers 131) with access to various types of user data stored in or on the data storage device 120. The data storage device 120 can also enable users to store various types of user data in or on the data storage device 120. The data storage device 120 can include magnetic media, hard disk media, and / or solid-state media.While a particular description herein refers to solid-state memory in general, it should be understood that solid-state memory may include one or more of various types of non-volatile solid-state memory devices, such as flash integrated circuits, chalcogenide random access memory (C-RAM), phase-change memory (PC-RAM or PRAM), programmable metallization cell RAM (PMC-RAM or PMCm), unified acoustic memory (OUM), resistive random access memory (PRAM), NAND memory (e.g., single-level cell (SLC) memory, multi-level cell (MLC) memory, or any combination thereof), NOR memory, EEPROM memory, ferroelectric memory (FeRAM), magnetoresistive RAM (MRAM), other discrete non-volatile memory NVM chips, or any combination thereof.

[0009] With further reference to Fig. 1, the data storage device 120 (e.g., a magnetic disk drive, a hybrid hard disk drive, a solid-state drive, etc.) may include a (in Fig. 1) configured to receive data commands and to execute such commands in one or more non-volatile memory components of the data storage device 120. Such commands may include data read / write commands and the like. The controller may be configured to receive data commands from a communications interface (e.g., a NAS interface and / or a DAS interface) located in a computing device. Data commands may specify a block address in the data storage device 120, and data may be accessed and transferred based on such commands. The data commands may also be referred to as data access requests.

[0010] Data storage device 120 may be configured to store data on one or more magnetic recording disks and / or solid-state storage devices / arrays. In one embodiment, data storage device 120 may include a cable box, a backup disk drive, a media storage unit, a streaming media device, a digital camera, or any other electronic device that can be accessed directly or wirelessly.

[0011] In certain embodiments, the data storage device 120 may store data received from a client device, such that the data storage device 120 acts as a data store for the client device. To facilitate this function, the data storage device 120 may implement a logical or link interface. The link interface may present itself to the client device memory as a set of logical addresses (e.g., sequential / consecutive addresses) where data may be stored. Internally, the controller may map logical addresses to various physical memory addresses in the non-volatile memory of the data storage device 120. Mapping data indicating the mapping of logical addresses to physical memory addresses may be maintained in the data storage device 120.

[0012] In one embodiment, the data storage device 120 may be a DAS device. The DAS device may be directly coupled to a client device (e.g., a desktop computer 131) via a connection cable 121. The connection cable 121 may be coupled to a communications interface (e.g., a USB 2.X interface, a USB 3.X interface, a Thunderbolt interface, etc.) of the DAS device (e.g., the data storage device 120). In another embodiment, the data storage device 120 may also be a NAS device. The NAS device may also be coupled to the client devices (e.g., computing devices) 131-137 via a network 105. The NAS device may be coupled to the network 105 via a network interface (e.g., an Ethernet interface, an 802.11 (Wi-Fi) interface, etc.).Each of the client devices 131-137 may also be coupled to the network 105 via a network interface. In one embodiment, the network 105 may include a public network (e.g., the Internet), a private network (e.g., a local area network (LAN), a wide area network (WAN) such as the Internet), a wired network (e.g., the Ethernet network), a wireless network (e.g., an 802.11 network or a Wi-Fi network), a cellular network (e.g., an LTE network), routers, hubs, switches, server computers, other types of computer networks, and / or a combination thereof.

[0013] In one embodiment, data storage device 120 may receive data access requests from client devices 131-137 via the communications interface (e.g., the DAS interface, such as the USB 2.X, USB 3.X, Thunderbolt interface) and / or via the network interface (e.g., Ethernet, 802.11, etc.). The data access requests may be messages, commands, and / or requests to access data in the data storage device. For example, a data access request may indicate that a computing device wishes to read data from data storage device 120. In another example, a data access request may indicate that a computing device wishes to write data to data device 120.

[0014] Although data storage devices / drives / systems can provide various benefits, as described above, in certain configurations, such systems may be associated with various aspects and / or disadvantages. Users may purchase various data storage devices (e.g., various standalone external data storage devices, such as NAS devices, portable external hard drives, etc.) that may have different storage capacities, different storage media (e.g., magnetic media, solid-state media, etc.), and may be manufactured by different companies / intermediaries. The user may store different data in each of the data storage devices (e.g., one portable external hard drive may store family photos; another portable external hard drive may store work-related documents, etc.).The user may not remember which files are stored on which data storage device. Even if the user does not remember which files are stored on which data storage device, files cannot be backed up until the user remembers to back up the files. Although RAID systems can back up files (and other data) automatically, RAID systems are often expensive, which can deter users from purchasing and / or using RAID systems. Furthermore, if one of the data storage devices in a RAID system fails or becomes inoperable, the RAID system can rebuild the failed data storage device, which can be a time-consuming process (for example, taking hours or even days).In addition, RAID systems may not be able to utilize data storage devices with different storage capacities (e.g., different memory sizes) and / or different media.

[0015] It may be beneficial to provide a data storage system capable of providing backup capabilities (e.g., capable of duplicating or copying data such as files) using a plurality of data storage devices (e.g., a plurality of individual external data storage devices) of different storage capacities, different media, and / or manufactured by different intermediaries / companies. This may allow users to leverage their investment in existing data storage devices (e.g., existing external portable hard disk drives, NAS devices, etc.). The system may create a logical or interconnected volume by collectively copying the plurality of data storage devices.The data storage system can also automatically replicate data / copy files across the linked volume (as discussed in more detail below). The data storage system can provide RAID-like functionality without the costs associated with a RAID system. The data storage system can also allow additional storage space (for example, adding an additional external standalone data storage device, such as a portable external hard disk drive) to be added more inexpensively. The data storage system can also maintain data replication when a data storage device is removed from the linked volume without rebuilding a drive (like a RAID system).

[0016] Fig. 2 is a diagram of a data storage system 200 according to one embodiment. The data storage system 200 includes a computing device 211, a computing device 213, an interconnect cable 250, and a data storage device 220. Each of the computing devices 211 and 213 may be a laptop computer, a desktop computer, a server computer, a tablet computer, a smartphone, a set-top box, a smart TV, a video game console, etc. The data storage device 220 may include a controller 230, a DAS interface 241 (e.g., USB 2.X, USB 3.X, Thunderbolt, eSATA, etc.), a NAS interface 243 (e.g., Ethernet, Wi-Fi, etc.), and non-volatile memory components 245. In one embodiment, non-volatile storage components 245 may include non-volatile magnetic media and / or solid-state memory, such as NAND flash memory. Controller 230 may provide overall control for data storage device 220.In certain embodiments, the data storage device 220 may be a hard disk drive. The non-volatile storage components 245 may include one or more platters, and the data storage device 220 may further include one or more heads (not shown) actuated radially across the platter(s) and a spindle motor for rotating the platter(s). Alternatively or in addition to magnetic rotating media, solid-state memory and / or other non-volatile memories, such as MRAM and / or phase-change memory, may be used. In certain embodiments, the data storage device 220 may, for example, be a hybrid drive that includes both magnetic media and solid-state media (the non-volatile storage components 245 may, for example, include both magnetic disks and solid-state media / memory).In one embodiment, the non-volatile memory components 245 may be coupled to the controller via one or more serial bus connectors. Examples of serial bus connectors include, but are not limited to, Serial ATA (SATA) connectors, Peripheral Component Interconnect Express (PCIe) connectors, and SATA Express connectors. In one embodiment, the data storage device 220 may be formed by external standalone data storage devices (e.g., NAS devices / drives, portable external hard drives, etc.).

[0017] The controller 230 may receive data access requests (e.g., data and memory access commands) from a DAS interface 212 (e.g., a USB interface, a Thunderbolt interface) of the computing device 211. The data access requests communicated through the DAS interface 212 may include write and read commands issued by the computing device 211. The data access requests may specify an LBA or a range of LBAs in the data storage device 220, and the controller 230 may execute the received data access requests in the non-volatile memory components 245. The controller 230 may also receive a data access request from a NAS interface 214 (e.g., a communication interface, such as an Ethernet interface, a Wi-Fi interface, etc.) of the computing device 213.The controller may determine an LBA and / or a range of LBAs in the data storage device 220 based on the data access requests, and may execute the received data access requests in the non-volatile memory components 245. In a hybrid hard disk drive, data may be stored in magnetic media of a storage component as well as in non-volatile solid-state memory.

[0018] Data storage device 220 may store data received from computing devices 211 and 213, such that data storage device 220 acts as memory for computing devices 211 and 213. To facilitate this storage function, controller 230 may implement a logical interface. The logical interface may present the memory of data storage device 220 to computing devices 211 and 213 as a set of logical addresses (e.g., contiguous addresses) where data may be stored. Controller 230 may map logical addresses to various physical memory addresses in non-volatile memory components 245 and / or other memory module(s).

[0019] The data storage device 220 may be configured to implement data redundancy, wherein user data stored in the non-volatile memory components 245 is maintained in one or more internal and / or external drives. The control device 230 may, for example, be a (in Fig. 2) configured to implement redundancy functionality. The data redundancy management module may implement a redundant array or number of independent disks (RAID) technology, in which the non-volatile storage components 245 include a plurality of internal drives, disks, or other data storage partitions combined into a logical unit for data redundancy and performance improvement purposes. Additionally or alternatively, the data redundancy management module may be configured to utilize one or more internal storage modules in combination with one or more external storage devices to implement RAID, as discussed in further detail below.

[0020] For RAID purposes, the non-volatile memory components 245 may include an array of one or more storage devices, such as hard disk drives or other memory modules configured to store user data. In certain embodiments, such as internal memory modules / disks, each may be directly coupled to the controller 230 to provide a high-bandwidth interface for reading and writing user data. The non-volatile memory components 245 may include one or more additional memory modules configured to store parity information.

[0021] The controller 230 may be configured to partition and replicate user data among the physical RAID storage modules, resulting in storage virtualization; the array may be accessed by the computing devices 211 and 213 as a single drive. Data may be distributed among the RAID storage modules / drives according to any desired or practical RAID level, depending on the level of redundancy and / or desired performance. For example, the data storage device 220 may be configured to implement RAID 0, RAID 1, RAID 5, RAID 6, RAID 10, or another RAID technology or erasure coding technology, depending on data reliability, availability, performance, and / or capacity considerations or requirements.

[0022] Computing device 211 may be coupled to data storage device 220 by an interconnect cable 250. Interconnect cable 250 may directly connect computing device 211 and data storage device 220. Interconnect cable 250 may use one or more communication interfaces (such as a bus interface) and / or protocols that enable computing device 211 to communicate with data storage device 220. DAS interfaces 212 and 241 may be USB interfaces, Thunderbolt interfaces, a serial attached SCSI (SAS) interface, eSATA interface, etc.

[0023] In one embodiment, the interconnect cable 250 may include one or more data lines (e.g., one or more wires, pins, etc.) that enable the computing device 211 to communicate data with the data storage device 220. The interconnect cable 250 may, for example (in Fig. 2) so that the computing device 211 can read data from and / or write data to the data storage device 220. The computing device 211 can communicate data to and from the data storage device using the DAS interface 212 (e.g., the DAS interface 212). In another embodiment, the computing device 211 can provide an input voltage to the data storage device 220, and the data storage device 220 can use the input voltage to operate one or more components of the data storage device 220 (e.g., the controller 230, the non-volatile memory components 245, a motor, etc.). The interconnect cable 250 can include one or more voltage lines (e.g., wires, pins, etc.) that can receive the input voltage from the computing device 211 via the DAS interface 212.The one or more voltage lines may provide the input voltage (received from the computing device 211) to the data storage device 220 via the communication interface 240. In another embodiment, the data storage device 220 may be coupled to a separate voltage source (e.g., it may be coupled to a battery, an AC adapter, a wall outlet, etc.).

[0024] In one embodiment, the connecting cable 250 may comprise a (in Fig. 2) bridge unit. The connecting cable 250 can, for example, contain a USB bridge, a Thunderbolt bridge, or any other type of bridge. The bridge unit can convert between different types of communication interfaces and / or protocols. If a connected storage device communicates in a first protocol but not in a second protocol, the bridge unit can, for example, convert the second protocol to the first protocol or vice versa.

[0025] Computing device 213 may be communicatively coupled to data storage device 220 via a network 205 (e.g., one or more of a Wi-Fi network, a LAN, a cellular network, etc.). Computing device 213 may send data (e.g., files, images, movies, etc.) and / or data access requests to data storage device 220 via NAS interface 214 (e.g., a communications interface, an Ethernet interface, a Wi-Fi interface, etc.) and network 205. Data storage device 220 may receive the data and / or data access requests from computing device 213 via NAS interface 214.

[0026] In one embodiment, a data storage system may utilize a plurality of data storage devices (e.g., a plurality of data storage devices 220) to create an interconnect volume by copying the plurality of data storage devices together, as discussed in detail below. The data storage system may also replicate data across the interconnect volume to provide RAID-like functionality without the costs associated with a RAID system, as discussed in detail below. Multiplying data across or within a link volume

[0027] Fig. 3 illustrates a diagram of a data storage system 300 according to one embodiment. The data storage system 300 includes a computing device 310, a network 305, a link multiplier or hub 306, and an interconnect volume 330. The network 305 may include a public network (e.g., the Internet), a private network (e.g., a local area network (LAN)), a wide area network (WAN), such as the Internet, a wired network (e.g., the Ethernet network), a wireless network (e.g., an 802.11 network or a Wi-Fi network), a cellular network (LTE network - Long Term Evolution Network), routers, hubs, switches, server computers, or other types of computer networks, and / or a combination thereof. The link hub 306 may include a plurality of DAS interfaces (e.g.,a plurality of connectors that enable the connector hub 306 to couple to a plurality of data storage devices 320 and the computing device 310. The connector hub 306 may be a USB hub that includes a plurality of USB ports (interfaces). Although the connector hub 306 is shown in . Fig. 3 as being separate from the computing device 310, it should be appreciated that in other embodiments, the connection hub 306 may be part of the computing device 310. In one embodiment, the computing device 310 may be a NAS device.

[0028] The interconnected volume 330 includes a plurality of data storage devices 320. In one embodiment, the interconnected volume 330 may be a logical grouping or a set of data storage devices. The interconnected volume 330 may also be referred to as a set of data storage devices. The data storage devices 320 may each be a NAS device and / or a DAS device. The data storage devices 320 may include different types of media. For example, the data storage devices 320 may include magnetic media, hard disk media, and / or solid-state media. In one embodiment, the data storage devices 320 may be stand-alone external data storage devices. The data storage devices 320 may be stand-alone external NAS devices or external DAS devices (e.g., portable external hard disk drives).

[0029] Computing device 310 includes a DAS interface 312 (e.g., a communications interface such as USB 2.X, USB 3.X, Thunderbolt, eSATA, etc.) and a NAS interface 314 (e.g., a network / communications interface such as Ethernet, 802.11 (Wi-Fi), etc.). DAS interface 312 is coupled to interconnect hub 306, enabling computing device 310 to communicate with (e.g., transmit and / or receive data) data storage devices 320 coupled to interconnect hub 306. NAS interface 314 is coupled to network 305, enabling computing device 310 to communicate with (e.g., transmit and / or receive data) data storage devices 320 coupled to network 305. The computing device 310 also includes a memory module 311.

[0030] In one embodiment, the storage module 311 may create the link volume 330. The storage module 311 may, for example, receive input (e.g., user input received from a graphical user interface (GUI) presented / provided by the storage module 311, parameters from a configuration file, etc.) identifying the data storage devices 320 to be included in the link volume 330. The storage module 311 may group and / or collect the data storage devices 320 into a set of data storage devices (e.g., it may assign the data storage devices 320 to the link volume 330 or it may include the data storage devices 320 in the link volume 330).Files stored in the data storage devices 320 may be replicated (e.g., copied) to one or more other data storage devices 320 in the link volume 330, as discussed in further detail below.

[0031] In one embodiment, the storage module 311 may receive inputs (e.g., user input from a GUI interface presented / provided by the storage module 311, parameters from a configuration file, etc.) indicating how much storage space in each of the data storage devices 320 should be allocated for file replication. The storage module 311 may allocate the specified amount of storage space in each of the data storage devices 320 for file replication (as discussed in detail below). For example, the storage module 311 may allocate one gigabyte of storage space in each data storage device 320 for file replication.

[0032] In one embodiment, the storage module 311 may identify a set of files stored in a data storage device 320 (e.g., one or more files) that are to be replicated across or within the link volume 330 (e.g., copied to one or more other data storage devices 320 of the link volume). The storage module 311 may identify the set of files based on file types. For example, the storage module 311 may identify image files (e.g., files containing digital images), video files (e.g., files containing digital videos), word processing files / documents, etc. The storage module 311 may also identify the set of files based on file sizes.For example, the storage module 311 may identify files that are larger than a threshold size (e.g., larger than one megabyte), smaller than a threshold size (e.g., less than 100 megabytes), and / or that are between a range of sizes (e.g., between 5 and 50 megabytes). The storage module 311 may also identify the set of files based on the frequency with which the files have been accessed. For example, the storage module 311 may identify files that have been accessed more than a threshold frequency or less than a threshold frequency. The storage module 311 may also identify the set of files based on the extensions (e.g., file extensions) of the set of files. For example, the storage module 311 may identify files that have a ".jpg" extension (e.g., Joint Photographic Expert Group (JPEG) files). In another example, storage module 311 may identify files that have a ".mpg" extension (e.g., Moving Image Expert Group (MPEG) files). Storage module 311 may also identify the set of files based on input received from a user. For example, a user may select one or more files through a GUI interface (presented / provided by storage module 311) to identify the set of files. In another example, a user may select a folder through the GUI interface, and storage module 311 may identify the files in the folder and subfolders of the folder.

[0033] In one embodiment, storage module 311 may determine a protection level for the set of files. The set of files may be replicated across link volume 330 based on the protection level, as discussed in further detail below. In one embodiment, the protection level may be provided by data / information indicative of a priority or importance of the set of files. For example, a higher protection level may indicate that the set of files has a higher importance (or higher priority), and a lower protection level may indicate that the set of files has a lower importance (or lower priority). It should be appreciated that in some embodiments, different numbers of protection levels may be used (e.g., two protection levels, five protection levels, etc.).The storage module 311 may create more copies of a set of files when the protection level is higher, and it may create fewer copies of the set of files when the protection level is lower. For example, the storage module 311 may copy the set of files to multiple data storage devices 320 (e.g., four data storage devices 320) when the protection level is higher, and it may copy the set of files to fewer data storage devices 320 (e.g., two data storage devices 320) when the protection level is lower. In another embodiment, the protection level may be given by data / information indicative of how many copies of the set of files should exist across or within the link volume 330.The protection level may indicate the number of data storage devices 320 into which the set of files should be replicated (e.g., copied), and / or it may indicate the number of copies of the set of files. For example, a protection level of "3" may indicate that the set of files should be copied to three different data storage devices 320 (e.g., that three copies of the set of files should exist across or within the link volume 330). In one embodiment, the storage module 311 may maintain a minimum number of copies of a file existing in the link volume based on the protection level. The storage module 311 may maintain at least two copies or at least three copies of a file in different data storage devices 320 of the link volume 330. In one embodiment, the protection level may be applied to the link volume 330.For example, the protection level may specify the minimum number of copies of a file (or set of files) that the storage module 311 should maintain across all data storage devices 320 of the link volume 330.

[0034] In one embodiment, a user may update the protection level for a file or set of files. For example, the user may provide user input (via a GUI interface provided / displayed by storage module 311) to indicate that the protection level for a file should be increased or decreased. Storage module 311 may create additional copies of the files and / or remove copies of a file based on the updated protection level. Storage module 311 may update the file list to indicate that copies of the file have been created or removed. Storage module 311 may also update the file list to indicate that the protection level for a file or set of files has been updated.

[0035] In one embodiment, different sets of files may be assigned different protection levels. For example, a user may specify that image files (e.g., family photos) should have a high protection level, and may specify that music files (e.g., digital music files such as MPEG-2 Audio Layer III (MP3) files) should have a lower protection level. Storage module 311 may record data indicative of the protection levels via the GUI interface (which may be provided / presented by storage module 311).

[0036] As discussed above, the storage module 311 may replicate one or more sets of files across or within the link volume 330. For example, a first file stored on a first data storage device 320 (of the link volume 330) may be replicated (e.g., copied) to one or more additional data storage devices 320 (of the link volume 330) based on the protection level. In one embodiment, the storage module 311 may identify the one or more additional data storage devices 320 for replicating the set of files based on one or more storage parameters. Examples of storage parameters include, but are not limited to, a type of the first file (e.g., an image file, a video file, a word processing document / file, etc.).), a size of the first file, one or more health states of the one or more additional data storage devices 320, and a frequency with which the first file has been accessed. In one embodiment, the set of files stored on a data storage device may be unique across the linked volume 330 prior to replicating the set of files. For example, a first file may originally be stored on only a first data storage device 320 (e.g., an original data storage device) prior to replicating the first file. After the first file is replicated / copied to other data storage devices, the first file is no longer unique across the linked volume because other data storage devices may have a copy of the first file.

[0037] In one embodiment, storage module 311 may replicate certain types of files to different data storage devices 320. For example, storage module 311 may identify data storage devices that include magnetic media and solid-state media (e.g., flash memory). Image files may be replicated (copied) to data storage devices 320 with magnetic media, and word processing documents may be copied to data storage devices with solid-state media (e.g., flash memory). In another embodiment, storage module 311 may replicate files of different file sizes to different data storage devices 320.For example, files with sizes larger than a threshold size may be copied to a first data storage device 320, and files with sizes smaller than a threshold size may be copied to a second data storage device 320.

[0038] In one embodiment, the storage module 311 may identify the health states of the data storage devices 320 (the interconnect volume 330). For example, the storage module 311 may determine to obtain operational information about a data storage device 320. The storage module 311 may obtain the operational information using various methods, such as self-monitoring, analytics, and reporting technology (SMART) diagnostics. The operational information may include data / information such as how long a data storage device 320 has been in operation, how many read and / or write operations have been performed on a data storage device 320, a number of errors (e.g., read / write errors) that have occurred on the data storage device 320, an estimated downtime for the data storage device 320, etc.The storage module 311 may determine a health status for the data storage device 320 based on the operational information(s). For example, the storage module 311 may determine (e.g., generate / calculate) a metric or value (or a set of metrics / values) to indicate the health of a data storage device 320. The storage module 311 may identify data storage devices 320 having health statuses above (e.g., greater than) a value or set of values.

[0039] In one embodiment, storage module 311 may generate and / or update a file list to indicate the one or more data storage devices 320 to which a set of files has been copied. For example, a file may be replicated (e.g., copied) into three data storage devices 320 (of link volume 330). Storage module 311 may update the file list to indicate that the file has been replicated into three data storage devices. The file list is discussed in further detail below.

[0040] In one embodiment, storage module 311 may monitor one or more files (e.g., a set of files across the link volume). Storage module 311 may monitor files stored on one data storage device and copies of the files replicated to one or more additional data storage devices 320. Storage module 311 may determine that one or more copies of a first file have been modified based on the analysis of the one or more copies of the first file.

[0041] In one embodiment, storage module 311 may apply a hash function / algorithm (such as MD5) to determine whether any copies of the first file have been modified. For example, storage module 311 may generate hashes of the first or more copies of the first file (e.g., apply the hash function / algorithm to the one or more copies of the first file). Storage module 311 may compare the hash values ​​of the one or more copies to determine whether any copies of the first file have been modified (e.g., updated). For example, if a first hash value of one copy of the first file does not match a second hash value of another copy of the first file, storage module 311 may determine that one or more copies of the first file have been modified.In another embodiment, storage module 311 may compare timestamps and / or file sizes of copies of the first file to determine whether any copies of the first file have been modified. For example, storage module 311 may determine that a first timestamp and / or file size of one copy of the first file is different from a second timestamp and / or file size of another copy of the first file.

[0042] In one embodiment, storage module 311 may update one or more files that have been modified. Storage module 311 may update the one or more files (that have been modified) across link volume 330 (e.g., across all data storage devices 320 that contain the one or more files). For example, storage module 311 may determine (based on hashes, timestamps, and / or file sizes, as discussed above) that one or more copies of a first file have been modified. Storage module 311 may update the first file across link volume 330.For example, the storage module 311 may identify the last copy of the first file, and it may copy the last copy of the first file to all of the data storage devices 320 that contain the first file (for example, it may copy the last copy of the first file to all of the data storage devices 320 in which the first file is replicated or stored).

[0043] In one embodiment, storage module 311 may receive a request to add an additional data storage device (e.g., a single DAS device, such as a portable external hard drive, a single NAS device, etc.) to linked volume 330. A user may connect or couple the additional data storage device to hub 306, and may provide other input via the GUI interface (which may be provided and / or displayed by storage module 311) and / or provide a configuration file to indicate that the additional data storage device is to be added to linked volume 330.In one embodiment, data storage device 311 may also receive user input (e.g., via a GUI interface or a configuration file) specifying a storage space in the additional data storage device that can be used for file replication. For example, storage module 311 may receive user input indicating that two gigabytes of storage space in the additional storage device can be used for file replication. In another example, storage module 311 may receive user input indicating that 50% of the total storage space / capacity of the additional data storage device can be used for file replication.

[0044] The storage module 311 may add the additional data storage device to the linked volume 330 based on the request. For example, the storage module 311 may update the file list to indicate that the additional storage device has been added to the linked volume 330. In one embodiment, the storage module 311 may identify files in the additional data storage device that are unique to the linked volume 330 after the additional data storage device has been added to the linked volume 330. For example, the storage module 311 may identify files that have not been replicated (e.g., copied) to other data storage devices 320 in the linked volume 330.In another example, a user may provide user input identifying one or more files that have not been replicated to the other data storage devices 320. The storage module 311 may replicate one or more of the files (that have not been replicated) based on a protection level (as discussed above). In another embodiment, the storage module 311 may replicate (e.g., copy) files from another data storage device 320 to the additional data storage device after the additional data storage device has been added to the link volume 330.

[0045] In one embodiment, the storage module 311 may receive a request to remove a first data storage device 320 from the link volume 330. For example, a user may disconnect / detach the first data storage device from the link hub 306 and may provide user input via a GUI interface (which may be provided and / or displayed by the storage module 311) and / or a configuration file to indicate that the first data storage device 320 is to be removed from the link volume 330. The storage module 311 may identify a set of files (e.g., one or more files) replicated to the first data storage device 320.For example, the storage module 311 may identify a set of files that were copied to the first data storage device 320 from other data storage devices 320 in the link volume 330 (e.g., replicated to the first data storage device 320). The storage module 311 may copy the set of files (replicated to the first data storage device 320) to one or more other data storage devices 320 in the link volume 330. For example, based on storage parameters (as discussed above), the storage module 311 may identify one or more other data storage devices 320 and copy the set of files to the one or more other data storage devices 320. This allows the storage module 311 to access the set of files via thein the linked volume 330 based on the one or more protection levels for the set of files. The storage module 311 may copy a first file from the set of files to another data storage device 320 to maintain a minimum number of copies of the first file in different data storage devices 320 based on the protection level for the first file. The storage module 311 may remove the first data storage device 320 from the linked volume 330 based on the request. For example, the storage module 311 may detach the first data storage device 320 from the linked volume 330 and / or it may update a file list to indicate that the first data storage device is not longitudinally part of the linked volume 330.The storage module 311 may also remove the set of files from the first data storage device 320 (i.e., it may delete the set of files replicated in the first data storage device 320).

[0046] In another embodiment, the storage module 311 may determine that a first data storage device 320 from the link volume 330 is inoperative (e.g., has failed, is no longer working, etc.). The storage module 311 may periodically communicate with the first data storage device 320 (e.g., send / receive messages, images, data, etc.). The storage module 311 may determine that the first data storage device is inoperative when the storage module 311 is no longer able to periodically communicate with the first data storage device 320. In another example, the storage module 311 may receive data from the first data storage device 320 (e.g., error messages) indicating that the first data storage device 320 is inoperative.The storage module 311 may identify a set of files that were copied (e.g., replicated) to the first data storage device 320 from other data storage devices 320 in the linked volume 330. The storage module 311 may replicate (e.g., copy) the set of files to other data storage devices 320 to maintain a minimum number of copies of the set of files in the linked volume 330.

[0047] In one embodiment, the storage module 311 may determine that a first data storage device 320 of the interconnect volume 330 is to be temporarily removed from the interconnect volume 330 (e.g., temporarily unplugged or decoupled from the interconnect hub 306 or the network 305). For example, a user may provide user input via a GUI interface (which may be provided and / or displayed by the storage module 311) and / or a configuration file to indicate that the first data storage device 320 is to be temporarily removed from the interconnect volume 330 (e.g., to indicate that the first data storage device 320 is being removed from the interconnect volume 330 and that it will be reinserted into the interconnect volume 330 at a later time).The storage module may identify a set of files (e.g., one or more files) replicated in the first data storage device 320, and may copy the set of files (replicated in the first data storage device 320) to one or more other data storage devices 320 in the linked volume 330, as discussed above. This may enable the storage volume 311 to replicate the set of files across or within the linked volume 330 based on the one or more levels of protection for the set of files, as discussed above (e.g., to maintain a minimum number of copies of the set of files).

[0048] In another embodiment, the storage module 311 may determine that the first data storage device 320 (which was temporarily removed from the link volume 330) has been reinserted into the link volume 330. A user may reconnect or couple the data storage device 320 to the network 305 or the hub 306, or the user may input via a GUI interface (which may be provided and / or displayed by the storage module 311) and / or through a configuration file to indicate that the first data storage device 320 has been reinserted into the link volume.The storage module 311 may remove the set of files that were replicated to the first data storage device 320 because the set of files was replicated to other data storage devices 320 of the link volume 330 when the first data storage device 320 was temporarily removed from the link volume 330.

[0049] In one embodiment, storage module 311 may cause files stored and / or replicated in data storage device 320 of link volume 330 to be encrypted. For example, storage module 311 may include an encryption module (e.g., software, hardware, firmware, or a combination thereof) that can encrypt files. In another example, data storage devices 320 may include encryption modules, and storage module 311 may send messages, commands, data, etc., to the encryption modules to indicate that the files stored and / or replicated in data storage devices 320 are to be encrypted.

[0050] In one embodiment, the storage module 311 may monitor the health states of the data storage devices 320. The storage module 311 may identify one or more data storage devices 320 with health states that are below or less than a set of values. For example, the storage module 311 may identify data storage devices 320 with an estimated lifetime that is below a certain value. In another example, the storage module 311 may identify a data storage device 320 where errors have occurred in the data storage device 320 (for example, where errors have occurred during data reading / writing to the data storage device 320).The storage module 311 may copy the files in the one or more data storage devices 320 (e.g., files originally stored in the one or more data storage devices 320 and files replicated to the one or more data storage devices 320) to other data storage devices 320 in the linked volume when the health states of the one or more drives are below the set of values.

[0051] Fig. 4 is a diagram of an example file list 400 according to one embodiment. Although the Fig. While the file list 400 shown in Figure 4 is presented in the form of a table, it should be appreciated that the data / information presented in the file list 400 may be presented using various other formats in other embodiments. The file list 400 includes a plurality of rows. In one embodiment, each row may represent a file stored and / or replicated in one or more data storage devices of a link volume.

[0052] In one embodiment, the file list 400 includes a "File Name" column, a "Metadata" column, a "Source Drive" column, and a "Copy Drives" column. The File Name column may specify the path (which may be optional) and name of a file represented by a row. For example, the file list 400 indicates that the file represented by the first row has a path / file name of "(Path 1) / File 1." The Metadata column may specify metadata associated with a file identified by the File Name column. For example, the file list 400 indicates that "File 1" may include a timestamp, a file size, a hash indication (e.g., a hash value generated using a hash function / algorithm, etc.). It should be appreciated that the Fig. 4 are only examples and that other metadata (e.g. a file owner / author, security attributes such as read-only or read-only, etc.) may be included in the metadata column.

[0053] The original drive column may indicate where a file was originally stored before the file was replicated across or within the linked volume 330 (e.g., before the file was copied to one or more other data storage devices within the linked volume 330). For example, the file list 400 indicates that the file "File 1" was originally stored on the data storage device identified as "Drive 2." The original drive column may include a name, serial number, model number, and / or other data that can be used to identify data storage devices. The copy drive column may indicate which data storage devices a file has been replicated to. For example, the file list 400 indicates that the file "File 1" has been replicated (e.g., copied) to the data storage devices identified as "Drive 1" and "Drive 3."In one embodiment, the file list 400 may also include a list of all of the data storage devices located in the link volume. For example, the file list 400 may include names, serial numbers, model numbers, and / or other data that can be used to identify the data storage devices located in the link volume.

[0054] In one embodiment, the file list 400 may be generated and / or updated by a storage module, as discussed above. For example, the storage module may update the file list 400 when data storage devices are added to or removed from the linked volume (as discussed above). The storage module may also update the file table when (as discussed above) one or more protection levels for one or more files are updated.

[0055] Fig. 5 is a flow diagram illustrating a process 500 for replicating data across or within a link volume according to one embodiment. The process 500 may be performed by a controller and / or a storage module, as described above in connection with Fig. 1 to 3. The controller and the memory module may each be processing logic that includes hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions running on a processor to perform a hardware simulation), firmware, or a combination thereof.

[0056] The process 500 begins at block 505, where the process 500 creates a link volume. For example, the process 500 may receive input identifying data storage devices to be included in the link volume, and it may copy / assemble the data storage devices 320 (e.g., it may associate the data storage devices 320 with the link volume 330, or it may include the data storage devices 320 in the link volume 330), as discussed above. At block 510, the process 500 may identify a set of files to be replicated across the link volume. For example, the process 500 may receive (via a GUI interface) user input identifying one or more files to be replicated across the link volume, as discussed above.

[0057] At block 515, process 500 determines the protection level for the set of files. Process 500 may receive user input indicating, for example, one or more protection levels for the set of files, as discussed above. At block 520, process 500 may replicate the set of files across the link volume. For example, based on the one or more protection levels, process 500 may copy the set of files to one or more additional data storage devices of the link volume. At block 520, process 500 may monitor the set of files. For example, process 500 may analyze hashes of the set of files and / or timestamps of the set of files. Process 500 may determine that one or more copies of a file (or a plurality of files) have been modified.For example, as discussed above, process 500 may determine that hash values ​​of the copies of the file are different or that the timestamps of the copies of the file are different. Process 500 may update the file across the linked volume at block 535. For example, as discussed above, process 500 may copy a final copy of the file to other data storage devices that contain a copy of the file.

[0058] Fig. 6 is a flowchart illustrating a process 600 for adding a data storage device to a link volume according to one embodiment. The process 600 may be performed by a controller and / or a storage module, as described in connection with Fig. 1 to 3 and discussed above. The controller and the control module may each be processing logic that includes hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions running on a processor to perform a hardware simulation), firmware, or a combination thereof.

[0059] Process 600 begins at block 605, where process 600 receives a request to add a data storage device to the linked volume. Process 600 may receive user input via a GUI interface and / or may detect that a data storage device has been connected to a connector hub or network, as discussed above. At block 601, process 600 may add the data storage device to the linked volume. Process 600 may, as discussed above, update a file table to indicate that the data storage device is part of the linked volume.

[0060] Fig. 7 is a flow diagram illustrating a process 700 for removing a data storage device from a linked volume according to one embodiment. The process 700 may be described above in connection with Fig. 1 to 3, may be executed by a controller and / or a memory module. The controller and the memory module may each be processing logic including hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions running on a processor to perform a hardware simulation), firmware, or a combination thereof.

[0061] The process 700 begins at block 705, where the process 700 determines that a data storage device is no longer functional, or where the process 700 receives a request to remove the data storage device from the linked volume. For example, the process 700 may receive one or more error messages from the data storage device, as discussed above. In another example, the process 700 may receive user input indicating that a user wishes to remove the data storage device from the linked volume. At block 710, the process 700 may identify a set of files replicated to the data storage device, as discussed above.At block 715, the process 700 may copy the set of files to one or more other data storage devices in the link volume based on the protection level (e.g., to maintain a minimum number of copies of the set of files across or within the link volume). For example, as discussed above, the process 700 may identify one or more other data storage devices based on health states of the one or more data storage devices, and may copy the set of files to the one or more other data storage devices. At block 720, the process 700 may remove the data storage device from the link volume. For example, as discussed above, the process 700 may update a file list to indicate that the data storage device is no longer part of the link volume.

[0062] Fig. 8 is a flow diagram illustrating a process 800 for temporarily removing a data storage device from a link volume according to one embodiment. The process 800 may be performed as described above in connection with Fig. 1 to 3, may be executed by a controller and / or a memory module. The controller and the memory module may each be processing logic that includes hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions running on a processor to perform a hardware simulation), firmware, or a combination thereof.

[0063] The process 800 begins at block 805, where the process 800 determines that a data storage device is to be temporarily removed from the link volume. For example, the process 800 may receive (via a GUI interface) user input identifying the data storage device to be temporarily removed from the link volume. At block 810, the process 800 may identify a set of files replicated in the data storage device, as discussed above. At block 815, the process 800 may copy the set of files to one or more other data storage devices in the link volume based on the protection level (e.g., to maintain a minimum number of copies of the set of files across the link volume).For example, process 800 may identify one or more other data storage devices based on health conditions of the one or more data storage devices, and may copy the set of files to the one or more other data storage devices, as discussed above. At block 820, process 800 may determine that the data storage device has been reinserted into the link volume. Process 800 may determine that the data storage devices have been reconnected to an interconnect hub or network, as discussed above. At block 825, process 800 may remove the set of files that were replicated to the data storage device (e.g., delete the set of files). Process 800 may remove the set of files because the set of files was copied to one or more other data storage devices at block 815.

[0064] Fig. 9 is a diagram of a computing device 900 according to one embodiment. The computing device 900 may include instructions that may cause the computing device 900 to perform any one or more of the methods (e.g., operations, methods, functions, etc.) discussed herein. The computing device 900 may be a mobile phone, a smartphone, a notebook computer, a rack-mounted server, a router computer, a server computer, a personal computer, a mainframe computer, a laptop computer, a tablet computer, a desktop computer, etc., with a set of instructions to cause the machine to perform any one or more of the methods discussed herein. In alternative embodiments, the machine may be connected to other machines on a LAN, an intranet, an extranet, or the Internet (e.g., in a network).The machine may operate in the capacity of a server machine in a client-server network environment. The machine may be a personal computer (PC), a set-top box (STB), a server, a network router, a switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be performed by the machine in question. While only a single machine is illustrated, the term "machine" is also intended to include any collection of machines that individually or collectively execute a set (or a plurality of sets) of instructions to perform any one or more of the methods discussed herein.

[0065] The example computing device 900 includes a processing device (e.g., a processor, a controller, a central processing unit (CPU), etc.) 902, a main memory 904 (e.g., a read-only memory (ROM), a flash memory, a dynamic random access memory (DRAM), such as a synchronous DRAM (SDRAM), a network access interface 908, a direct access interface 909, an output device 910, an input device 912, and a data storage device 918, each of which communicates with each other via a bus 930.

[0066] Processing device 902 represents one or more general-purpose processing devices, such as a microprocessor, a central processing unit, or the like. Specifically, processing device 902 may be a complex instruction set computing (CISC) microprocessor, a reduced instruction set computing (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets or processors implementing a combination of instruction sets. Processing device 902 may also be one or more special-purpose processing devices, such as an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a digital signal processor (DSP), a network processor, or the like.The processing device 902 is configured to execute the memory module 311 to perform the operations and steps discussed herein.

[0067] The computing device 900 may include a network access interface 908 (e.g., a network interface card, a Wi-Fi interface, etc.) that may be connected to a network (e.g., the network described in Fig.1). The computing device may also include a direct access interface 909 (e.g., a USB interface, an eSATA interface, a Thunderbolt interface, etc.). The computing device 900 may also include an output device 910 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)) and an input device 912 (e.g., a mouse, a keyboard, etc.). In one embodiment, the output device 910 and the input device 912 may be combined into a single component or device (e.g., an LCD touchscreen).

[0068] The data storage device 918 may include a computer-readable storage medium 928 on which one or more sets of instructions (e.g., the storage module 311) embodying any one or more of the methods or functions discussed herein are stored. The storage module 311 may also reside entirely or at least partially in the main memory 904 and / or the processing device 902 during their execution by the computing device 900. The main memory 904 and the processing device 902 may also represent computer-readable media. The instructions may further be transmitted or received via the network access interface 908 and / or the direct access interface 909.

[0069] While one example embodiment depicts computer-readable storage medium 928 as a single medium, the term "computer-readable storage medium" should be used to include a single medium or a plurality of media (e.g., a centralized or distributed database and / or associated caches and servers) that store the one or more sets of instructions. The term "computer-readable storage medium" should also be used to include any medium capable of storing, copying, or executing a set of instructions for execution by the machine, and causing the machine to perform any one or more of the methods of the present disclosure.The term “computer-readable storage medium” shall be used mutatis mutandis to include, but not be limited to, solid-state storage, optical media and magnetic media. Additional examples

[0070] Those of ordinary skill in the art will appreciate that, in some embodiments, other types of distributed data storage systems may be implemented while remaining within the scope of the present disclosure. Furthermore, the actual steps performed in the processes discussed herein may differ from those described or illustrated in the figures. Depending on the embodiment, certain of the steps described above may be removed, and others may be added.

[0071] While these embodiments have been described, these embodiments have been presented merely by way of example and are not intended to limit the scope. Indeed, the methods and systems described herein may be embodied in a variety of other forms. Furthermore, various omissions, substitutions, and changes may be made in the form of the methods and systems described herein. The appended claims and their equivalents are intended to cover such forms and modifications as if they were within the scope. The various components illustrated in the figures may be implemented, for example, as software and / or firmware in a processor, ASIC / FPGA, or dedicated hardware.Furthermore, the features and attributes of the specific embodiments discussed above may be combined in various ways to form additional embodiments, all of which fall within the scope of the invention. While the present disclosure provides certain preferred embodiments and applications, other embodiments that would be apparent to those of ordinary skill in the art, including embodiments that do not incorporate all of the features and advantages set forth herein, are also within the scope of this disclosure. Accordingly, it is intended that the scope of the present disclosure be defined solely by reference to the appended claims.

[0072] The words "example" or "exemplary" are used herein to mean to serve as an example, instance, or illustration. Any aspect or design described herein as an "example" or "exemplary" is not necessarily to be construed as preferential or advantageous over other aspects or designs. Rather, the use of the words "example" or "exemplary" is intended to present concepts in a concrete manner. As used in this disclosure, the term "or" is intended to mean "inclusive-or" rather than "exclusive-or." This means that, unless otherwise specified or clear from the context, the term "X includes A or B" is intended to mean any of the naturally inclusive permutations.This means that if X contains A, X contains B, or X contains both A and B, then "X contains A or B" is satisfied in any of the above cases. Furthermore, as used in this disclosure and the appended claims, the articles "a" and "an" should generally be interpreted to mean "one" or "more" unless otherwise specified or clear from the context to refer to a singular form. Furthermore, the use of the term "an embodiment" or "an embodiment" or "an implementation" or "a realization" throughout is not intended to mean the same embodiment or implementation unless described as such. Furthermore, the terms "first," "second," "third," "fourth," etc.as used here have the meaning of labels to distinguish between different elements, and they may not necessarily have an ordinal meaning corresponding to their numerical designation.

[0073] All of the processes described above may be embodied in, and fully automated by, software code modules executed by one or more general-purpose or special-purpose computers or processors. The code modules may be stored in any type of memory-readable medium or other computer storage device or collection of storage devices. Alternatively, some or all of the methods may be embodied in specialized computer hardware.

Claims

[1] A device comprising: a communication interface (312, 314) configured to be coupled to a set of external individual data storage devices (320), a control device (311) coupled to the communication interface, the control device being configured to create (505) a link volume (330) comprising the set of external individual data storage devices, to identify (510) the set of stored files to be replicated in the link volume, to determine one or more protection levels for the set of files (515), wherein the one or more protection levels are applied to the link volume, to replicate (520) the set of files across or in the link volume based on the one or more protection levels so that a minimum number of copies of the set of files exist on the link volume, to determine (805) that a first external single data storage device from the set of external single data storage devices is to be temporarily removed from the link volume, to identify a second set of files from the set of files (810), which are duplicated in the first external single data storage device, to copy (815) the second set of files to other external single data storage devices in the set of external single data storage devices based on the one or more protection levels so that the minimum number of copies of the set of files is maintained in the link volume; to determine (820) that the first external single data storage device has been reinserted into the link volume, and to remove the second set of files from the first set of the single data storage device (825). [2] The apparatus of claim 1, wherein the controller is further configured to monitor (525) the set of files in the link volume, to determine (530) that one or more copies of a first file from the first set of files has been modified, and to update the first file in the link volume (535). [3] The apparatus of claim 2, wherein the control means is constructed to determine that one or more copies of the first file from the first set of files have been modified by comparing one or more hashes of the one or more copies of the first file. [4] The apparatus of claim 2, wherein the controller is configured to determine that one or more copies of a first file from the first set of files have been modified by comparing one of: the timestamp associated with one or more copies of the first file, or the file sizes associated with one or more copies of the first file. [5] The apparatus of claim 1, wherein replicating (520) the set of files in the link volume comprises: Identifying a first file from the set of files, the first file being located in a first external single data storage device of the set of external single data storage devices, Identifying one or more additional data storage devices from the set of external individual data storage devices based on a set of storage parameters, and copying the first file to the one or more additional data storage devices based on the protection level. [6] The apparatus of claim 5, wherein the controller is further configured to update a file list to indicate that the set of files is copied to the one or more additional data storage devices. [7] The apparatus of claim 5, wherein the set of storage parameters comprises one or more of: a type of the first file, a size of the first file, one or more health states of the one or more additional data storage devices, one or more types of the one or more additional data storage devices or a frequency with which the first file was accessed. [8] The apparatus of claim 1, wherein creating the link volume comprises aggregating a set of individual external drives to form the link volume. [9] The apparatus of claim 1, wherein creating the link volume comprises allocating a space size for replicating files in each single external data storage device of the set of single external data storage devices. [10] The apparatus of claim 1, wherein the set of files is identified based on one or more of: File types of the set of files, File sizes of the set of files, Frequency with which the set of files has been accessed, or Extensions to the set of files. [11] The apparatus of claim 1, wherein the set of files in the link volume is unique prior to replicating the set of files. [12] The apparatus of claim 1, wherein the controller is further configured to include a request to add an additional single external data storage device to the link volume and adding the additional single external data storage device to the link volume based on the request. [13] The device according to claim 1, wherein the control device is further configured to receive a request to remove a first external single data storage device from the set of external single data storage devices (705), for identifying (710) a third set of files replicated in the first external single data storage device, for copying (715) the third set of files to other external individual data storage devices in the set of external individual data storage devices and for removing (720) the first external single data storage device from the set of external single data storage devices. [14] The apparatus of claim 1, wherein the controller is further configured to determine (705) that a first external single data storage device from the set of external single data storage devices is inoperative, to identify (710) a third set of files replicated in the first external single data storage device, to copy the third set of files to other external single data storage devices in the set of external single data storage devices (715), and to remove the first single external data storage device from the set of single external data storage devices (720). [15] The apparatus of claim 1, wherein the control means is further configured to cause the set of files to be encrypted. [16] The apparatus of claim 1, wherein the set of individual external data storage devices comprises one or more direct access storage devices or a network access storage device. [17] A method comprising: Connecting to a set of external individual data storage devices (320), Creating (505) a link volume (330) comprising the set of external individual data storage devices, Identifying (510) a stored set of files to be replicated in the link volume, Determining (515) one or more protection levels for the set of files, wherein the one or more protection levels are applied to the link volume, replicating (520) the set of files across the link volume based on the one or more protection levels such that a minimum number of copies of the set of files exist on the link volume, Determining (805) that a first external single data storage device from the set of external single data storage devices is to be temporarily removed from the link volume, Identifying (810) a second set of files from the set of files replicated in the first external single data storage device, Copying (815) the second set of files to other external single data storage devices in the set of external single data storage devices based on the one or more protection levels such that the minimum number of copies of the set of files is maintained in the link volume, Determining (820) that the first external single data storage device has been reinserted into the link volume, and Removing (825) the second set of files from the first set of the single data storage device. [18] A non-transitory computer-readable medium having stored thereon or in it instructions which, when executed by a processor, cause the processor to perform operations comprising: Creating (505) a link volume (330) comprising a set of external individual data storage devices (320), Identifying (510) a set of stored files to be replicated across the link volume, Determining (515) one or more protection levels for the set of files, wherein the one or more protection levels are applied to the link volume, Replicating (520) the set of files in the link volume based on the one or more protection levels so that a minimum number of copies of the set of files exist on the link volume, Determining (805) that a first external single data storage device from the set of external single data storage devices is to be temporarily removed from the link volume, Identifying (810) a second set of files from the set of files replicated in the first external single data storage device, Copying (815) the second set of files to other external single data storage devices in the set of external single data storage devices based on the one or more protection levels so that the minimum number of copies of the set of files is maintained in the link volume, Determining (820) that the first external single data storage device has been reinserted into the link volume, and Removing (825) the second set of files from the first set of the single data storage device.

Citation Information

Patent Citations

  • Distribution of data in a distributed shared storage system

    US7844775B2

  • Distributed file system for intelligently managing the storing and retrieval of data

    US8706755B2