<div dir="ltr">Yes, You might want to take a look at XGET, which is a part of the XCPU clustering framework (<a href="http://www.xcpu.org/" target="_blank">http://www.xcpu.org</a>).
It was primarily designed to transfer boot images (kernel and initrd)
across the nodes in a cluster in a very scalable manner, but it can be
used to transfer any big files/directories across the network.<br>
It creates an ad-hoc tree at runtime wherein a client can also "act as
a server" for the other clients. Boot image distribution for over 1024
nodes has been done in less than 10 seconds. <br><br>More recently, Perceus (<a href="http://www.perceus.org/" target="_blank">http://www.perceus.org</a>)
has been using XGET as the default mechanism for scalable VNFS transfer
across nodes and comes bundled with XCPU modules that makes configuring
it a lot easier.<br><font color="#888888">
<br>  -- Abhishek</font> (who wonders how can it take more than 3 days for such posts to get through on the Beowulf ML)<br><br><div class="gmail_quote">On Fri, Aug 8, 2008 at 9:37 AM, Henning Fehrmann <span dir="ltr"><<a href="mailto:henning.fehrmann@aei.mpg.de">henning.fehrmann@aei.mpg.de</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hi everybody,<br>
<br>
Coping a big file onto all nodes in a cluster is a rather common problem.<br>
I would have thought that there might be a standard tool for<br>
distributing the files in an efficient way. So far, I haven't found one.<br>
<br>
Assuming one has a network design which allows non blocking full duplex<br>
wire-speed connections between N/2 pairs of nodes where N is the number<br>
of nodes in the cluster. It is basically a non blocking coreswitch.<br>
<br>
In this case the following scheme would be convenient and rather simple:<br>
<br>
The file is placed on node n1 and one builds a chain of nodes n1 , n2 .... nN.<br>
<br>
One splits the file into many packages (p1..pM), lets say a fragment fits<br>
into one TCP package. In the first step n1 transmits the package p1 to node n2.<br>
In the second step n1 transmits the package p2 to n2 and n2 transmits p1 to node n3.<br>
<br>
The transmission of a single package is fast. The time of passing a particular<br>
package through the whole chain of nodes is short compared with time of the<br>
entire copying process. E.g., using jumbo frames a package can have the size of ca 10kB.<br>
In Gb network the transmission time of a single package between nodes is<br>
of the order of 0.1 ms.  Even in a cluster with 1024 nodes it takes<br>
in an ideal case just 0.1s to pass a package from node n1 through all nodes to n1024.<br>
<br>
On each node the package is stored and, in the end, one reassembles the file.<br>
For big files (size >> 10Mb) the required time is approximately<br>
the same as one needs for copying the file between two nodes plus 0.1s.<br>
<br>
One needs basically a daemon which handles copying requests and establishes<br>
the connection to next node in the chain.<br>
<br>
Has somebody written such a tool?<br>
<br>
Cheers,<br>
Henning Fehrmann<br>
<br>
_______________________________________________<br>
Beowulf mailing list, <a href="mailto:Beowulf@beowulf.org">Beowulf@beowulf.org</a><br>
To change your subscription (digest mode or unsubscribe) visit <a href="http://www.beowulf.org/mailman/listinfo/beowulf" target="_blank">http://www.beowulf.org/mailman/listinfo/beowulf</a><br>
</blockquote></div><br></div>