Hi, <br>&nbsp; &nbsp; &nbsp; As I test, AFR can migrate file (from Server2 to Server1 )which create at Server1 down <br>time. But if a file is created when Server1 alive, then Server1 goes down (and all <br>the data lose.) And restart Server1 (as well, glusterfs process), data can <b>not </b>be <br>
replicated by AFR automatically.<br>&nbsp;&nbsp;&nbsp;&nbsp; And this case is common when we use cheap storage as glusterfs server.We have not<br>modify data at backend, but in enterprise environment , failure can not be avoid. <br>&nbsp;&nbsp;&nbsp;&nbsp; How can I deal with these cases? <br>
<br><br>Thanks &amp; Regards<br>Baggio <br><br>&nbsp;<br><br><div class="gmail_quote">2008/7/4 Krishna Srinivas &lt;<a href="mailto:krishna@zresearch.com">krishna@zresearch.com</a>&gt;:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
AFR will take care of things as long as you dont modify the<br>
backend yourself.<br>
<br>
Regards :)<br>
<font color="#888888">Krishna<br>
</font><div><div></div><div class="Wj3C7c"><br>
On Fri, Jul 4, 2008 at 12:06 PM, baggio liu &lt;<a href="mailto:baggioss@gmail.com">baggioss@gmail.com</a>&gt; wrote:<br>
&gt; Thanks for your response. &nbsp;:)<br>
&gt;<br>
&gt; You mean, when some nodes failvoer, we should guarantee namespace/data<br>
&gt; right by manually ?? afr can not work well at this case ??<br>
&gt;<br>
&gt;<br>
&gt; Thanks<br>
&gt;<br>
&gt; Baggio<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; 2008/7/4 Krishna Srinivas &lt;<a href="mailto:krishna@zresearch.com">krishna@zresearch.com</a>&gt;:<br>
&gt;&gt;<br>
&gt;&gt; Baggio,<br>
&gt;&gt;<br>
&gt;&gt; If the xattr versions are same on both the directories of AFR, then<br>
&gt;&gt; it assumes that contents are also same, so when you wipe the<br>
&gt;&gt; data on the first brick, you also need to make sure that when you<br>
&gt;&gt; bring it back up, the version on the brick2 is more that version<br>
&gt;&gt; on brick1. use &quot;getfattr&quot; to get version and createtime attrs<br>
&gt;&gt; on the directories. the xattrs are trusted.glusterfs.version and<br>
&gt;&gt; trusted.glusterfs.createtime.<br>
&gt;&gt;<br>
&gt;&gt; Krishna<br>
&gt;&gt;<br>
&gt;&gt; On Fri, Jul 4, 2008 at 11:10 AM, baggio liu &lt;<a href="mailto:baggioss@gmail.com">baggioss@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt; Hi,<br>
&gt;&gt; &gt; &nbsp; &nbsp;I have make some tests.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; 1. AFR is up (namespace and data brick between Server1 and Server2 have<br>
&gt;&gt; &gt; AFR)<br>
&gt;&gt; &gt; 2. touch file f1<br>
&gt;&gt; &gt; 3. Server1 crashes (remove data and namespace in Server1 )<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; 4. ls on mount point, f1 exists and everything is normal (ls read from<br>
&gt;&gt; &gt; Server2)<br>
&gt;&gt; &gt; 5. gclusterfsd start on Server1<br>
&gt;&gt; &gt; 6. ls on mount point does not show f1 anymore (ls read only from<br>
&gt;&gt; &gt; brick1?)<br>
&gt;&gt; &gt; 7. cat f1 on client, and content of it can be seen, but ls can not work<br>
&gt;&gt; &gt; well.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; GlusterFS version 1.3.9 release<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Server1 spec vol:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; volume brick<br>
&gt;&gt; &gt; &nbsp; type storage/posix<br>
&gt;&gt; &gt; &nbsp; option directory /mnt/glusterfs/brick00<br>
&gt;&gt; &gt; end-volume<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; volume ns<br>
&gt;&gt; &gt; &nbsp; type storage/posix<br>
&gt;&gt; &gt; &nbsp; option directory /mnt/glusterfs/ns<br>
&gt;&gt; &gt; end-volume<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; volume server<br>
&gt;&gt; &gt; &nbsp; type protocol/server<br>
&gt;&gt; &gt; &nbsp; option transport-type tcp/server<br>
&gt;&gt; &gt; &nbsp; option ib-verbs-work-request-send-size &nbsp;131072<br>
&gt;&gt; &gt; &nbsp; option ib-verbs-work-request-send-count 64<br>
&gt;&gt; &gt; &nbsp; option ib-verbs-work-request-recv-size &nbsp;131072<br>
&gt;&gt; &gt; &nbsp; option ib-verbs-work-request-recv-count 64<br>
&gt;&gt; &gt; &nbsp; option auth.ip.brick.allow *<br>
&gt;&gt; &gt; &nbsp; option auth.ip.ns.allow *<br>
&gt;&gt; &gt; &nbsp; subvolumes brick ns<br>
&gt;&gt; &gt; end-volume<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Server2 spec vol:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; volume remote-ns<br>
&gt;&gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; type protocol/client<br>
&gt;&gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; option transport-type tcp/client<br>
&gt;&gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; option remote-host [server1 ip]<br>
&gt;&gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; option remote-subvolume ns<br>
&gt;&gt; &gt; end-volume<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; volume local-ns<br>
&gt;&gt; &gt; &nbsp; type storage/posix<br>
&gt;&gt; &gt; &nbsp; option directory /mnt/glusterfs/ns<br>
&gt;&gt; &gt; end-volume<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; volume ns<br>
&gt;&gt; &gt; &nbsp;type cluster/afr<br>
&gt;&gt; &gt; &nbsp;subvolumes remote-ns local-ns<br>
&gt;&gt; &gt; end-volume<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; volume remote-brick00<br>
&gt;&gt; &gt; &nbsp; type protocol/client<br>
&gt;&gt; &gt; &nbsp; option transport-type tcp/client<br>
&gt;&gt; &gt; &nbsp; option remote-host <a href="http://172.16.208.20" target="_blank">172.16.208.20</a><br>
&gt;&gt; &gt; &nbsp; option remote-port 6996<br>
&gt;&gt; &gt; &nbsp; option remote-subvolume brick<br>
&gt;&gt; &gt; end-volume<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; volume local-brick00<br>
&gt;&gt; &gt; &nbsp; type storage/posix<br>
&gt;&gt; &gt; &nbsp; option directory /mnt/glusterfs/brick00<br>
&gt;&gt; &gt; end-volume<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; volume brick00<br>
&gt;&gt; &gt; &nbsp;type cluster/afr<br>
&gt;&gt; &gt; &nbsp;subvolumes remote-brick00 local-brick00<br>
&gt;&gt; &gt; end-volume<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; volume unify<br>
&gt;&gt; &gt; &nbsp; type cluster/unify<br>
&gt;&gt; &gt; &nbsp; option namespace ns<br>
&gt;&gt; &gt; &nbsp; option scheduler rr<br>
&gt;&gt; &gt; &nbsp; subvolumes brick00<br>
&gt;&gt; &gt; end-volume<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; BTW, I&#39;m not very clear about what arnulf said, but in my may, this<br>
&gt;&gt; &gt; problem<br>
&gt;&gt; &gt; can be seen.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Baggio<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; 2008/7/4 Krishna Srinivas &lt;<a href="mailto:krishna@zresearch.com">krishna@zresearch.com</a>&gt;:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; 1. AFR is up<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2. touch file f1<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; 3. brick1 crashes<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; 4. ls on mount point, f1 exists and everything is normal (ls read<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; from<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; brick2)<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; 5. file system repair removes f1 from brick1<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Glusterfs removes f1 from brick1? Or do you manually remove it?<br>
&gt;&gt; &gt;&gt; Could you also check with a later release. As a related bug was<br>
&gt;&gt; &gt;&gt; fixed.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Thanks<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; 6. gclusterfsd start on brick1<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; 7. ls on mount point does not show f1 anymore (ls read only from<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; brick1?)<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; 8. cat f1 on mount point replicates file and it becomes visible<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; On Fri, Jul 4, 2008 at 7:03 AM, baggio liu &lt;<a href="mailto:baggioss@gmail.com">baggioss@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt; Hi,<br>
&gt;&gt; &gt;&gt; &gt; &nbsp; &nbsp;A file can&#39;t &quot;ls &quot; ,but can &quot;less &quot;.<br>
&gt;&gt; &gt;&gt; &gt; &nbsp; &nbsp;I think this action is a little weird. If this action can not be<br>
&gt;&gt; &gt;&gt; &gt; supp<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;<br>
&gt;<br>
</div></div></blockquote></div><br>