This disclosure relates generally to data management, and more specifically to automatic data cluster discovery and configuration.
The approaches described in this section could be pursued but are not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
Some data storage architectures may require that data storage devices (also known as data nodes) form data clusters. New data nodes can be used to expand an existing cluster or to form a new cluster. When a new data node is deployed, the new data node can join an existing cluster or, if no cluster exists, form a new cluster. Conventionally, such additions to existing data clusters are configured manually. Manual configuration can be time-consuming and require qualified staff to perform it.
Additionally, in traditional storage systems, when a new storage device is added, the new storage device exports one or more network shares onto the network, with each network share having its own namespace. Thus, a user must decide how to utilize these network shares, often resulting in misconfiguration and inefficient use of resources.
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
In accordance with one embodiment, a data node capable of auto-joining a data ring is provided. The data node may connect to a network. After connecting, the data node can send an advertisement to the network to notify other data nodes of its presence and status. The advertisement can include information concerning the data node. Additionally, the data node can monitor the network for advertisements broadcast by other data nodes. Advertisements of a data node joined to a data ring can include a ring identifier, data node identifier, various attributes, a software version, an allowable number of nodes, and so forth.
The data node can continue monitoring the network for a predetermined time period. If no advertisements are received within the predetermined time period, the data node creates a new data ring. If some advertisements are received within the predetermined time period, the data node joins one of the data rings described by the received advertisements. To determine which data ring to join when multiple rings are detected, the data node uses various predetermined criteria. Some examples of predetermined criteria can include capacity of the data rings, number of nodes in the data rings, how much free space the data rings have, compatibility of the new data node and rings' software versions, or any combination of these or other criteria. In some embodiments, the data node randomly chooses which data ring to join.
The following description and the drawings set forth in detail certain illustrative features of the one or more aspects. These features are indicative, however, of but a few of the various ways in which the principles of various aspects may be employed, and this description is intended to include all such aspects and their equivalents.
Embodiments are illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements.
The following detailed description includes references to the accompanying drawings, which form a part of the detailed description. The drawings show illustrations in accordance with exemplary embodiments. These exemplary embodiments, which are also referred to herein as “examples,” are described in enough detail to enable those skilled in the art to practice the present subject matter. The embodiments can be combined, other embodiments can be utilized, or structural, logical, and electrical changes can be made without departing from the scope of what is claimed.
The approaches and principles disclosed herein relate to computer-implemented methods and systems for auto-discovery and auto-joining of a data node to a data ring within a computer network infrastructure. The computer network infrastructure includes a plurality of data nodes each having storage resources for storing various data objects and enabling access to them from other nodes. Moreover, the storage resources of a single node may include one or a plurality of hard drives, solid state drives, or other memory devices such as RAM (random-access memory) or ROM (read-only memory). Data nodes may be joined in a data ring having a global namespace.
When a new data node is added to the computer network infrastructure, it may automatically discover data rings existing in the computer network infrastructure and join one of the discovered rings according to predefined criteria. If no data rings are discovered, the data node may automatically create a new data ring.
The present disclosure provides systems and methods for auto-discovery and auto-joining data nodes to data rings. Data nodes may be joined in data rings forming common storage pools that have a common global namespace. To form such a ring or to join a new data node to an existing ring, a data node may automatically discover existing data rings and automatically join one of them. If no data rings are discovered, the data ring may automatically create a new data ring. Thus, manual operations related to ring creation and joining new data node to rings may be avoided. This process is illustrated in more detail with reference to
As shown in
The data ring 120 may have a common global namespace associated with the nodes A-F 130. Because of the common global namespace, the nodes A-F 130 may be presented to a user as a single entity. Thus, in contrast to conventional systems, the data nodes A-F 130 may be combined into a common storage pool with the capacity of all constituent nodes. Thus, the data nodes 130 may be bound together to potentially scale to very large file systems.
The ring 120 may communicate with a management system 150 via a network 110. The management system 150 may control configuration of the ring 120 and manage various processes in the ring 120. When a new node 140 is connected to a computer network infrastructure 100 such as, for example, a LAN, it may either join the ring 120 or form a new ring using a system 600 for auto-joining data node to data ring.
The network 110 can include the Internet or any other network capable of communicating data between devices. Suitable networks can include or interface with any one or more of, for instance, a local intranet, a PAN (Personal Area Network), a LAN (Local Area Network), a WAN (Wide Area Network), a MAN (Metropolitan Area Network), a virtual private network (VPN), a storage area network (SAN), a frame relay connection, an Advanced Intelligent Network (AIN) connection, a synchronous optical network (SONET) connection, a digital T1, T3, E1 or E3 line, Digital Data Service (DDS) connection, DSL (Digital Subscriber Line) connection, an Ethernet connection, an ISDN (Integrated Services Digital Network) line, a dial-up port such as a V.90, V.34 or V.34bis analog modem connection, a cable modem, an ATM (Asynchronous Transfer Mode) connection, or an FDDI (Fiber Distributed Data Interface) or CDDI (Copper Distributed Data Interface) connection. Furthermore, communications may also include links to any of a variety of wireless networks, including WAP (Wireless Application Protocol), GPRS (General Packet Radio Service), GSM (Global System for Mobile Communication), CDMA (Code Division Multiple Access) or TDMA (Time Division Multiple Access), cellular phone networks, GPS (Global Positioning System), CDPD (cellular digital packet data), RIM (Research in Motion, Limited) duplex paging network, Bluetooth radio, or an IEEE 802.11-based radio frequency network. The network 110 can further include or interface with any one or more of an RS-232 serial connection, an IEEE-1394 (Firewire) connection, a Fiber Channel connection, an IrDA (infrared) port, a SCSI (Small Computer Systems Interface) connection, a USB (Universal Serial Bus) connection or other wired or wireless, digital or analog interface or connection, mesh or Digi® networking. The network 110 includes a network of data processing nodes that are interconnected for the purpose of data communication.
Referring now to
The mDNS protocol is published as Request for Comments (RFC) 6762 and the DNS Service Discovery protocol is published as Request for Comments (RFC) 6763 and are incorporated herein by reference in their entirety for all purposes.
The new node 240 may send an advertisement 242 to the network 210. The advertisement 242 may include node ID, software version, and some other attributes. If the new node 240 has no ring ID it may advertise none, and the ring ID may be updated after the new node 240 joins a ring.
Auto-discovery may commence with the new node 240 listening for advertisements made by other devices on the network 210.
Advertisements 232 and 234 from nodes 222 and 224 joined to the ring 220 may differ from advertisement 236 emitted by the single node 226. Although all advertisements can include information related to the node (e.g., node ID, software version, and the like), the nodes 222 and 224 joined to the ring 220 also include ring information 238. The ring information 238 can include ring ID, an allowable number of nodes, and other attributes.
The new node 240, after listening for a while and hearing advertisements 232, 234, 236 from the nodes 222, 224,226, may decide to join the ring 220. On the other hand, the new node 240 may monitor (or listen) on the network 210 for a predetermined period of time and receive no advertisement.
Referring now to
Devices in the network to which the new data node is connected can be notified about the new data node at operation 420.
At operation 430, the data node may monitor for advertisements of other devices and/or rings for a predetermined period of time. It may be determined whether the advertisements are received within the time period at operation 440. If no advertisements are received, the data node may create a new data ring at operation 480. Upon creation of a new ring, a ring ID may be generated. Then, the advertisement is updated with the new ring ID.
However, if advertisements are received, it may be determined at operation 450. If all advertisements received are from data nodes in the same ring, the data node may join the data ring, from which the only advertisement is received at operation 460. After joining the ring, the advertisement with ring attributes can be updated. If advertisements identifying more than one ring is received, the data node can determine which data ring to join based on predetermined criteria at operation 470. It should be understood that the new node may also choose to join no rings and create a new data ring based on the new data node at operation 480. For example, the new node may decide not to join any rings when the ring attributes are not compatible with the new node. Alternatively, the new node may decide not to join an existing ring and not to create a new data ring. Instead the node may continue with operation 415, that is continue advertising until there is a ring to join or no other rings are available.
The predetermined criteria may include various factors. For example, the determination can be made based on whether the software of the joining node is compatible with the software that is run by other members of the ring. Other factors may also be considered in the decision process, for example, the combined free space of the data nodes in the rings can be compared. The ring with the smallest free space can be chosen. Alternatively, a ring with the least number of data nodes can be selected.
In some embodiments, a ring can have its auto-join functionality disabled. If this is the case, the new data node may not automatically join the ring. Accordingly, the ring with the auto-join disabled can be ignored by the new data node.
In some embodiments, only a certain maximum number of member data nodes can be allowed by a ring. This number can be based on the software version of the data node associated with the ring. If data nodes in the same ring allow different number of members, the allowable number of members in the ring is determined by the data node allowing the least number of members.
If, for some reason, the data node is rejected by a ring, the node may go into auto-discovery process again and ignore the rejecting ring. In such case, the process of determining a data ring to join can be repeated over all remaining rings.
In some embodiments, to ensure random selection of rings, the rings can be sorted by their ring IDs which may be random. For example, a node may first try to join the ring with the smallest ID. It should be understood that the foregoing criteria for joining rings represent just a few non-exhaustive examples and other criteria can be used as well.
When the ring is selected, the data node may join the ring at operation 460. After joining the new data node, the capacity of the node becomes available to the ring without having to perform any configurations. Additionally, the configuration of the ring can be shared with the node, for example, access permissions can be propagated to the node and kept in synch with the ring.
As shown in
In various embodiments, the predefined criteria may include a number of the data nodes in the data ring, amount of free space in the data rings, allowable number of the data nodes in the data ring, actual number of the data nodes in the data ring, compatibility of software versions of the data node and the data ring, and so forth. In other embodiments, the data node may be joined to a random data ring. If that random data ring rejects the data node, the data node may attempt joining another random data ring, and so forth. Once a data ring is determined, the data node may join the data ring at operation 550. In some embodiments, after the data node joins to the data ring, the storage within the data node may be added to a global namespace associated with the data ring.
The example computer system 700 includes a processor or multiple processors 702, a hard disk drive 704, a main memory 706 and a static memory 708, which communicate with each other via a bus 710. The computer system 700 may also include a network interface device 712. The hard disk drive 704 may include a computer-readable medium 720, which stores one or more sets of instructions 722 embodying or utilized by any one or more of the methodologies or functions described herein. The instructions 722 can also reside, completely or at least partially, within the main memory 706 and/or within the processors 702 during execution thereof by the computer system 700. The main memory 706 and the processors 702 also constitute machine-readable media.
While the computer-readable medium 720 is shown in an exemplary embodiment to be a single medium, the term “computer-readable medium” should be taken to include a single medium or multiple 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 medium” shall also be taken to include any medium that is capable of storing, encoding, or carrying a set of instructions for execution by the machine and that causes the machine to perform any one or more of the methodologies of the present application, or that is capable of storing, encoding, or carrying data structures utilized by or associated with such a set of instructions. The term “computer-readable medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical and magnetic media. Such media can also include, without limitation, hard disks, floppy disks, NAND or NOR flash memory, digital video disks, RAM, ROM, and the like.
The exemplary embodiments described herein can be implemented in an operating environment comprising computer-executable instructions (e.g., software) installed on a computer, in hardware, or in a combination of software and hardware. The computer-executable instructions can be written in a computer programming language or can be embodied in firmware logic. If written in a programming language conforming to a recognized standard, such instructions can be executed on a variety of hardware platforms and for interfaces to a variety of operating systems. Although not limited thereto, computer software programs for implementing the present method can be written in any number of suitable programming languages such as, for example, C, Python, Javascript, Go, or other compilers, assemblers, interpreters or other computer languages or platforms.
Thus, automatic ring discovery and configuration are described. Although embodiments have been described with reference to specific exemplary embodiments, it will be evident that various modifications and changes can be made to these exemplary embodiments without departing from the broader spirit and scope of the present application. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.
The present application claims the benefit of U.S. provisional application No. 61/825,890, filed May 21, 2013, and entitled “Automatic Data Ring Discovery and Configuration”. The disclosure of the aforementioned application is incorporated herein by reference for all purposes.
Number | Date | Country | |
---|---|---|---|
61825890 | May 2013 | US |