<div dir="ltr">By volumes, I meant translators. <br><br>Glusterfs builds a graph which is rooted at the bottom most translator in the volume-specification file. This behaviour can be changed through the --volume-name option. With --volume-name option, the graph will be rooted at the translator provided as the argument to the option. This is helpful for debugging.<br>
<br>As far as your volume specification file is concerned, its correct and you can obtain both functionalities of read-ahead and write-behind by simply starting glusterfs without the --volume-name option, since the graph will be already rooted at the read-ahead translator.<br>
<br>regards,<br><div class="gmail_quote">On Mon, Oct 13, 2008 at 12:43 PM, Deian Chepishev <span dir="ltr">&lt;<a href="mailto:dchepishev@nexbrod.com">dchepishev@nexbrod.com</a>&gt;</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;">
Hello Raghavendra,<br>
<div class="Ih2E3d"><br>
Raghavendra G wrote:<br>
&gt; Hi Deian,<br>
&gt;<br>
&gt; On Fri, Oct 10, 2008 at 8:51 PM, Deian Chepishev<br>
</div><div class="Ih2E3d">&gt; &lt;<a href="mailto:dchepishev@nexbrod.com">dchepishev@nexbrod.com</a> &lt;mailto:<a href="mailto:dchepishev@nexbrod.com">dchepishev@nexbrod.com</a>&gt;&gt; wrote:<br>
&gt;<br>
&gt; &nbsp; &nbsp; Hi guys,<br>
&gt;<br>
&gt; &nbsp; &nbsp; I have a few questions about UNIFY and volume creation.<br>
&gt;<br>
&gt; &nbsp; &nbsp; You will find my config files at the end of this post. I will post my<br>
&gt; &nbsp; &nbsp; questions before the config.<br>
&gt;<br>
&gt; &nbsp; &nbsp; 1. I want to use writebehind and readahead translators, because I<br>
&gt; &nbsp; &nbsp; think<br>
&gt; &nbsp; &nbsp; it speeds the transfer. Can you please take a look i let me know if it<br>
&gt; &nbsp; &nbsp; is correctly written.<br>
&gt; &nbsp; &nbsp; I basically do this:<br>
&gt; &nbsp; &nbsp; create one volume from the exported bricks lets say &quot;unify&quot;<br>
&gt; &nbsp; &nbsp; create another volume named &quot;writebehind&quot; with subvolumes unify<br>
&gt; &nbsp; &nbsp; then create another volume named &quot;readahead&quot; with subvolumes<br>
&gt; &nbsp; &nbsp; writebehind<br>
&gt; &nbsp; &nbsp; then mount the volume named writebehind.<br>
&gt;<br>
&gt;<br>
&gt; If you are using &nbsp;--volume-name option to glusterfs to attach to<br>
&gt; writebehind, then you are bypassing readahead and hence will not get<br>
&gt; readahead functionality. If you want to have both read-ahead and<br>
&gt; write-behind functionalities, do not specify --volume-name option (or<br>
&gt; give readahead as the argument to the option, if at all you want to<br>
&gt; use it).<br>
<br>
</div>===&gt; I am even more confused by your answer :).<br>
I want to have single volume for which I want load both translators<br>
readahead and writebehind. That is why I thought that this is<br>
accomplished with the above mentioned definition scheme. Looks like I am<br>
wrong.<br>
<br>
What is the correct way to define the volume in order to have both<br>
translators loaded for it ?<br>
<div class="Ih2E3d"><br>
&gt;<br>
&gt;<br>
&gt; &nbsp; &nbsp; I have the following server and client files:<br>
&gt;<br>
&gt;<br>
&gt; &nbsp; &nbsp; volume brick<br>
&gt; &nbsp; &nbsp; &nbsp;type storage/posix<br>
&gt; &nbsp; &nbsp; &nbsp;option directory /storage/gluster-export/data/<br>
&gt; &nbsp; &nbsp; end-volume<br>
&gt;<br>
&gt; &nbsp; &nbsp; volume brick-ns<br>
&gt; &nbsp; &nbsp; &nbsp;type storage/posix<br>
&gt; &nbsp; &nbsp; &nbsp;option directory /storage/gluster-export/ns<br>
&gt; &nbsp; &nbsp; end-volume<br>
&gt;<br>
&gt; &nbsp; &nbsp; ### Add network serving capability to above brick.<br>
&gt;<br>
&gt; &nbsp; &nbsp; volume server<br>
&gt; &nbsp; &nbsp; &nbsp;type protocol/server<br>
&gt; &nbsp; &nbsp; &nbsp;option transport-type tcp/server<br>
&gt; &nbsp; &nbsp; &nbsp;subvolumes brick brick-ns<br>
</div>&gt; &nbsp; &nbsp; &nbsp;option auth.ip.brick.allow <a href="http://10.1.124." target="_blank">10.1.124.</a> &lt;<a href="http://10.1.124" target="_blank">http://10.1.124</a>.&gt;*<br>
&gt; &nbsp; &nbsp; &nbsp;option auth.ip.brick-ns.allow <a href="http://10.1.124." target="_blank">10.1.124.</a> &lt;<a href="http://10.1.124" target="_blank">http://10.1.124</a>.&gt;*<br>
<div class="Ih2E3d">&gt; &nbsp; &nbsp; end-volume<br>
&gt;<br>
&gt; &nbsp; &nbsp; =========================<br>
&gt;<br>
&gt; &nbsp; &nbsp; Client:<br>
&gt;<br>
&gt; &nbsp; &nbsp; volume brick1-stor01<br>
&gt; &nbsp; &nbsp; &nbsp;type protocol/client<br>
&gt; &nbsp; &nbsp; &nbsp;option transport-type tcp/client<br>
</div>&gt; &nbsp; &nbsp; &nbsp;option remote-host <a href="http://10.1.124.200" target="_blank">10.1.124.200</a> &lt;<a href="http://10.1.124.200" target="_blank">http://10.1.124.200</a>&gt;<br>
<div class="Ih2E3d">&gt; &nbsp; &nbsp; &nbsp;option remote-subvolume brick<br>
&gt; &nbsp; &nbsp; end-volume<br>
&gt;<br>
&gt; &nbsp; &nbsp; volume brick1-stor02<br>
&gt; &nbsp; &nbsp; &nbsp;type protocol/client<br>
&gt; &nbsp; &nbsp; &nbsp;option transport-type tcp/client<br>
</div>&gt; &nbsp; &nbsp; &nbsp;option remote-host <a href="http://10.1.124.201" target="_blank">10.1.124.201</a> &lt;<a href="http://10.1.124.201" target="_blank">http://10.1.124.201</a>&gt;<br>
<div class="Ih2E3d">&gt; &nbsp; &nbsp; &nbsp;option remote-subvolume brick<br>
&gt; &nbsp; &nbsp; end-volume<br>
&gt;<br>
&gt; &nbsp; &nbsp; volume brick-ns1<br>
&gt; &nbsp; &nbsp; &nbsp;type protocol/client<br>
&gt; &nbsp; &nbsp; &nbsp;option transport-type tcp/client<br>
</div>&gt; &nbsp; &nbsp; &nbsp;option remote-host <a href="http://10.1.124.200" target="_blank">10.1.124.200</a> &lt;<a href="http://10.1.124.200" target="_blank">http://10.1.124.200</a>&gt;<br>
<div class="Ih2E3d">&gt; &nbsp; &nbsp; &nbsp;option remote-subvolume brick-ns<br>
&gt; &nbsp; &nbsp; end-volume<br>
&gt;<br>
&gt;<br>
&gt; &nbsp; &nbsp; volume brick-ns2<br>
&gt; &nbsp; &nbsp; &nbsp;type protocol/client<br>
&gt; &nbsp; &nbsp; &nbsp;option transport-type tcp/client<br>
</div>&gt; &nbsp; &nbsp; &nbsp;option remote-host <a href="http://10.1.124.201" target="_blank">10.1.124.201</a> &lt;<a href="http://10.1.124.201" target="_blank">http://10.1.124.201</a>&gt;<br>
<div><div></div><div class="Wj3C7c">&gt; &nbsp; &nbsp; &nbsp;option remote-subvolume brick-ns &nbsp;# Note the different remote<br>
&gt; &nbsp; &nbsp; volume name.<br>
&gt; &nbsp; &nbsp; end-volume<br>
&gt;<br>
&gt; &nbsp; &nbsp; volume afr-ns<br>
&gt; &nbsp; &nbsp; &nbsp;type cluster/afr<br>
&gt; &nbsp; &nbsp; &nbsp;subvolumes brick-ns1 brick-ns2<br>
&gt; &nbsp; &nbsp; end-volume<br>
&gt;<br>
&gt; &nbsp; &nbsp; volume unify<br>
&gt; &nbsp; &nbsp; &nbsp;type cluster/unify<br>
&gt; &nbsp; &nbsp; &nbsp;option namespace afr-ns<br>
&gt; &nbsp; &nbsp; &nbsp;option scheduler rr<br>
&gt; &nbsp; &nbsp; &nbsp;option scheduler alu &nbsp; # use the ALU scheduler<br>
&gt; &nbsp; &nbsp; &nbsp;option alu.limits.min-free-disk &nbsp;5% &nbsp; &nbsp; &nbsp;# Don&#39;t create files one a<br>
&gt; &nbsp; &nbsp; volume with less than 5% free diskspace<br>
&gt; &nbsp; &nbsp; &nbsp;option alu.limits.max-open-files 10000 &nbsp; # Don&#39;t create files on a<br>
&gt; &nbsp; &nbsp; volume with more than 10000 files open<br>
&gt; &nbsp; &nbsp; &nbsp;option alu.order<br>
&gt; &nbsp; &nbsp; disk-usage:read-usage:write-usage:open-files-usage:disk-speed-usage<br>
&gt; &nbsp; &nbsp; &nbsp;option alu.disk-usage.entry-threshold 100GB &nbsp; # Kick in if the<br>
&gt; &nbsp; &nbsp; discrepancy in disk-usage between volumes is more than 2GB<br>
&gt; &nbsp; &nbsp; &nbsp;option alu.disk-usage.exit-threshold &nbsp;50MB &nbsp; # Don&#39;t stop writing to<br>
&gt; &nbsp; &nbsp; the least-used volume until the discrepancy is 1988MB<br>
&gt; &nbsp; &nbsp; &nbsp;option alu.open-files-usage.entry-threshold 1024 &nbsp; # Kick in if the<br>
&gt; &nbsp; &nbsp; discrepancy in open files is 1024<br>
&gt; &nbsp; &nbsp; &nbsp;option alu.open-files-usage.exit-threshold 32 &nbsp; # Don&#39;t stop<br>
&gt; &nbsp; &nbsp; until 992<br>
&gt; &nbsp; &nbsp; files have been written the least-used volume<br>
&gt; &nbsp; &nbsp; &nbsp;option alu.stat-refresh.interval 10sec &nbsp; # Refresh the statistics<br>
&gt; &nbsp; &nbsp; used<br>
&gt; &nbsp; &nbsp; for decision-making every 10 seconds<br>
&gt; &nbsp; &nbsp; &nbsp;subvolumes brick1-stor01 brick1-stor02<br>
&gt; &nbsp; &nbsp; end-volume<br>
&gt;<br>
&gt; &nbsp; &nbsp; volume writebehind<br>
&gt; &nbsp; &nbsp; &nbsp;type performance/write-behind<br>
&gt; &nbsp; &nbsp; &nbsp;option aggregate-size 512kb # default is 0bytes<br>
&gt; &nbsp; &nbsp; &nbsp;option flush-behind on &nbsp; &nbsp;# default is &#39;off&#39;<br>
&gt; &nbsp; &nbsp; &nbsp;subvolumes unify<br>
&gt; &nbsp; &nbsp; end-volume<br>
&gt;<br>
&gt; &nbsp; &nbsp; volume readahead<br>
&gt; &nbsp; &nbsp; &nbsp;type performance/read-ahead<br>
&gt; &nbsp; &nbsp; &nbsp;option page-size 512kB<br>
&gt; &nbsp; &nbsp; &nbsp;option page-count 4<br>
&gt; &nbsp; &nbsp; &nbsp;option force-atime-update off<br>
&gt; &nbsp; &nbsp; &nbsp;subvolumes writebehind<br>
&gt; &nbsp; &nbsp; end-volume<br>
&gt;<br>
<br>
<br>
</div></div>Thank you.<br>
<br>
Regards,<br>
<font color="#888888">Deian<br>
</font><div><div></div><div class="Wj3C7c"><br>
_______________________________________________<br>
Gluster-users mailing list<br>
<a href="mailto:Gluster-users@gluster.org">Gluster-users@gluster.org</a><br>
<a href="http://zresearch.com/cgi-bin/mailman/listinfo/gluster-users" target="_blank">http://zresearch.com/cgi-bin/mailman/listinfo/gluster-users</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Raghavendra G<br><br>
</div>