<html><body><div style="font-family: garamond,new york,times,serif; font-size: 12pt; color: #000000"><div><br></div><div><br></div><hr id="zwchr"><blockquote style="border-left:2px solid #1010FF;margin-left:5px;padding-left:5px;color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;" data-mce-style="border-left: 2px solid #1010FF; margin-left: 5px; padding-left: 5px; color: #000; font-weight: normal; font-style: normal; text-decoration: none; font-family: Helvetica,Arial,sans-serif; font-size: 12pt;"><b>From: </b>"Sahina Bose" &lt;sabose@redhat.com&gt;<br><b>To: </b>"Krutika Dhananjay" &lt;kdhananj@redhat.com&gt;, "Shyam" &lt;srangana@redhat.com&gt;<br><b>Cc: </b>"Gluster Devel" &lt;gluster-devel@gluster.org&gt;<br><b>Sent: </b>Thursday, September 3, 2015 3:56:10 PM<br><b>Subject: </b>Re: [Gluster-devel] Gluster Sharding and Geo-replication<br><div><br></div><br><br><div class="moz-cite-prefix">On 09/03/2015 12:13 PM, Krutika Dhananjay wrote:<br></div><blockquote cite="mid:550072460.12279311.1441262638234.JavaMail.zimbra@redhat.com"><div style="font-family: garamond,new york,times,serif; font-size:
        12pt; color: #000000" data-mce-style="font-family: garamond,new york,times,serif; font-size: 12pt; color: #000000;"><div><br></div><div><br></div><hr id="zwchr"><blockquote style="border-left:2px solid
#1010FF;margin-left:5px;padding-left:5px;color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;" data-mce-style="border-left: 2px solid
#1010FF; margin-left: 5px; padding-left: 5px; color: #000; font-weight: normal; font-style: normal; text-decoration: none; font-family: Helvetica,Arial,sans-serif; font-size: 12pt;"><b>From: </b>"Shyam" <a class="moz-txt-link-rfc2396E" href="mailto:srangana@redhat.com" target="_blank" data-mce-href="mailto:srangana@redhat.com">&lt;srangana@redhat.com&gt;</a><br><b>To: </b>"Krutika Dhananjay" <a class="moz-txt-link-rfc2396E" href="mailto:kdhananj@redhat.com" target="_blank" data-mce-href="mailto:kdhananj@redhat.com">&lt;kdhananj@redhat.com&gt;</a><br><b>Cc: </b>"Aravinda" <a class="moz-txt-link-rfc2396E" href="mailto:avishwan@redhat.com" target="_blank" data-mce-href="mailto:avishwan@redhat.com">&lt;avishwan@redhat.com&gt;</a>, "Gluster Devel" <a class="moz-txt-link-rfc2396E" href="mailto:gluster-devel@gluster.org" target="_blank" data-mce-href="mailto:gluster-devel@gluster.org">&lt;gluster-devel@gluster.org&gt;</a><br><b>Sent: </b>Wednesday, September 2, 2015 11:13:55 PM<br><b>Subject: </b>Re: [Gluster-devel] Gluster Sharding and Geo-replication<br><div><br></div>On 09/02/2015 10:47 AM, Krutika Dhananjay wrote:<br> &gt;<br> &gt;<br> &gt; ------------------------------------------------------------------------<br> &gt;<br> &gt; &nbsp; &nbsp; *From: *"Shyam" <a class="moz-txt-link-rfc2396E" href="mailto:srangana@redhat.com" target="_blank" data-mce-href="mailto:srangana@redhat.com">&lt;srangana@redhat.com&gt;</a><br> &gt; &nbsp; &nbsp; *To: *"Aravinda" <a class="moz-txt-link-rfc2396E" href="mailto:avishwan@redhat.com" target="_blank" data-mce-href="mailto:avishwan@redhat.com">&lt;avishwan@redhat.com&gt;</a>, "Gluster Devel"<br> &gt; &nbsp; &nbsp; <a class="moz-txt-link-rfc2396E" href="mailto:gluster-devel@gluster.org" target="_blank" data-mce-href="mailto:gluster-devel@gluster.org">&lt;gluster-devel@gluster.org&gt;</a><br> &gt; &nbsp; &nbsp; *Sent: *Wednesday, September 2, 2015 8:09:55 PM<br> &gt; &nbsp; &nbsp; *Subject: *Re: [Gluster-devel] Gluster Sharding and Geo-replication<br> &gt;<br> &gt; &nbsp; &nbsp; On 09/02/2015 03:12 AM, Aravinda wrote:<br> &gt; &nbsp; &nbsp; &nbsp;&gt; Geo-replication and Sharding Team today discussed about the approach<br> &gt; &nbsp; &nbsp; &nbsp;&gt; to make Sharding aware Geo-replication. Details are as below<br> &gt; &nbsp; &nbsp; &nbsp;&gt;<br> &gt; &nbsp; &nbsp; &nbsp;&gt; Participants: Aravinda, Kotresh, Krutika, Rahul Hinduja, Vijay Bellur<br> &gt; &nbsp; &nbsp; &nbsp;&gt;<br> &gt; &nbsp; &nbsp; &nbsp;&gt; - Both Master and Slave Volumes should be Sharded Volumes with same<br> &gt; &nbsp; &nbsp; &nbsp;&gt; &nbsp; &nbsp;configurations.<br> &gt;<br> &gt; &nbsp; &nbsp; If I am not mistaken, geo-rep supports replicating to a non-gluster<br> &gt; &nbsp; &nbsp; local FS at the slave end. Is this correct? If so, would this<br> &gt; &nbsp; &nbsp; limitation<br> &gt; &nbsp; &nbsp; not make that problematic?<br> &gt;<br> &gt; &nbsp; &nbsp; When you state *same configuration*, I assume you mean the sharding<br> &gt; &nbsp; &nbsp; configuration, not the volume graph, right?<br> &gt;<br> &gt; That is correct. The only requirement is for the slave to have shard<br> &gt; translator (for, someone needs to present aggregated view of the file to<br> &gt; the READers on the slave).<br> &gt; Also the shard-block-size needs to be kept same between master and<br> &gt; slave. Rest of the configuration (like the number of subvols of DHT/AFR)<br> &gt; can vary across master and slave.<br><div><br></div>Do we need to have the sharded block size the same? As I assume the file <br> carries an xattr that contains the size it is sharded with <br> (trusted.glusterfs.shard.block-size), so if this is synced across, it <br> would do. If this is true, what it would mean is that "a sharded volume <br> needs a shard supported slave to ge-rep to".<br></blockquote><div>Yep. Even I feel it should probably not be necessary to enforce same-shard-size-everywhere as long as shard translator on the slave takes care not to further "shard" the individual shards gsyncD would write to, on the slave volume.<br></div><div>This is especially true if different files/images/vdisks on the master volume are associated with different block sizes.<br></div><div>This logic has to be built into the shard translator based on parameters (client-pid, parent directory of the file being written to).<br></div><div>What this means is that shard-block-size attribute on the slave would essentially be a don't-care parameter. I need to give all this some more thought though.<br></div></div></blockquote><br><br> I think this may help with coping with changes in shard block size configuration in master. Otherwise, once user changes the shard block size in master, the slave will be affected.<br> Are there any other shard volume options that if changed on master, would affect slave? How do we ensure master and slave are in sync w.r.t the shard configuration?</blockquote><div>The shard-block-size itself will be tied to a file since its creation in the form of an xattr. Subsequent changes to the block size of a volume should have no impact on already existing sharded files.<br></div><div>So it is probably not necessary for the shard size option to even be synced to the slave volume, as long as the block-size xattr is correctly synced to the slave's copy of the file.</div><div><br></div><div>Also, shard-block-size is the only tunable option as of today in shard translator. In future, there could be few more options introduced for<br></div><div>performance optimizations but that should probably not mean anything to the slave volume.<br></div><div><br></div><div>-Krutika<br></div><div><br></div><blockquote style="border-left:2px solid #1010FF;margin-left:5px;padding-left:5px;color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;" data-mce-style="border-left: 2px solid #1010FF; margin-left: 5px; padding-left: 5px; color: #000; font-weight: normal; font-style: normal; text-decoration: none; font-family: Helvetica,Arial,sans-serif; font-size: 12pt;"><br><br><blockquote cite="mid:550072460.12279311.1441262638234.JavaMail.zimbra@redhat.com"><div style="font-family: garamond,new york,times,serif; font-size:
        12pt; color: #000000" data-mce-style="font-family: garamond,new york,times,serif; font-size: 12pt; color: #000000;"><div><br></div><div>-Krutika<br></div><div><br></div><blockquote style="border-left:2px solid
#1010FF;margin-left:5px;padding-left:5px;color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;" data-mce-style="border-left: 2px solid
#1010FF; margin-left: 5px; padding-left: 5px; color: #000; font-weight: normal; font-style: normal; text-decoration: none; font-family: Helvetica,Arial,sans-serif; font-size: 12pt;">&gt;<br> &gt; -Krutika<br> &gt;<br> &gt;<br> &gt;<br> &gt; &nbsp; &nbsp; &nbsp;&gt; - In Changelog record changes related to Sharded files also. Just<br> &gt; &nbsp; &nbsp; like<br> &gt; &nbsp; &nbsp; &nbsp;&gt; &nbsp; &nbsp;any regular files.<br> &gt; &nbsp; &nbsp; &nbsp;&gt; - Sharding should allow Geo-rep to list/read/write Sharding internal<br> &gt; &nbsp; &nbsp; &nbsp;&gt; &nbsp; &nbsp;Xattrs if Client PID is gsyncd(-1)<br> &gt; &nbsp; &nbsp; &nbsp;&gt; - Sharding should allow read/write of Sharded files(that is in<br> &gt; &nbsp; &nbsp; .shards<br> &gt; &nbsp; &nbsp; &nbsp;&gt; &nbsp; &nbsp;directory) if Client PID is GSYNCD<br> &gt; &nbsp; &nbsp; &nbsp;&gt; - Sharding should return actual file instead of returning the<br> &gt; &nbsp; &nbsp; &nbsp;&gt; &nbsp; &nbsp;aggregated content when the Main file is requested(Client PID<br> &gt; &nbsp; &nbsp; &nbsp;&gt; &nbsp; &nbsp;GSYNCD)<br> &gt; &nbsp; &nbsp; &nbsp;&gt;<br> &gt; &nbsp; &nbsp; &nbsp;&gt; For example, a file f1 is created with GFID G1.<br> &gt; &nbsp; &nbsp; &nbsp;&gt;<br> &gt; &nbsp; &nbsp; &nbsp;&gt; When the file grows it gets sharded into chunks(say 5 chunks).<br> &gt; &nbsp; &nbsp; &nbsp;&gt;<br> &gt; &nbsp; &nbsp; &nbsp;&gt; &nbsp; &nbsp; &nbsp;f1 &nbsp; G1<br> &gt; &nbsp; &nbsp; &nbsp;&gt; &nbsp; &nbsp; &nbsp;.shards/G1.1 &nbsp; G2<br> &gt; &nbsp; &nbsp; &nbsp;&gt; &nbsp; &nbsp; &nbsp;.shards/G1.2 &nbsp; G3<br> &gt; &nbsp; &nbsp; &nbsp;&gt; &nbsp; &nbsp; &nbsp;.shards/G1.3 &nbsp; G4<br> &gt; &nbsp; &nbsp; &nbsp;&gt; &nbsp; &nbsp; &nbsp;.shards/G1.4 &nbsp; G5<br> &gt; &nbsp; &nbsp; &nbsp;&gt;<br> &gt; &nbsp; &nbsp; &nbsp;&gt; In Changelog, this is recorded as 5 different files as below<br> &gt; &nbsp; &nbsp; &nbsp;&gt;<br> &gt; &nbsp; &nbsp; &nbsp;&gt; &nbsp; &nbsp; &nbsp;CREATE G1 f1<br> &gt; &nbsp; &nbsp; &nbsp;&gt; &nbsp; &nbsp; &nbsp;DATA G1<br> &gt; &nbsp; &nbsp; &nbsp;&gt; &nbsp; &nbsp; &nbsp;META G1<br> &gt; &nbsp; &nbsp; &nbsp;&gt; &nbsp; &nbsp; &nbsp;CREATE G2 PGS/G1.1<br> &gt; &nbsp; &nbsp; &nbsp;&gt; &nbsp; &nbsp; &nbsp;DATA G2<br> &gt; &nbsp; &nbsp; &nbsp;&gt; &nbsp; &nbsp; &nbsp;META G1<br> &gt; &nbsp; &nbsp; &nbsp;&gt; &nbsp; &nbsp; &nbsp;CREATE G3 PGS/G1.2<br> &gt; &nbsp; &nbsp; &nbsp;&gt; &nbsp; &nbsp; &nbsp;DATA G3<br> &gt; &nbsp; &nbsp; &nbsp;&gt; &nbsp; &nbsp; &nbsp;META G1<br> &gt; &nbsp; &nbsp; &nbsp;&gt; &nbsp; &nbsp; &nbsp;CREATE G4 PGS/G1.3<br> &gt; &nbsp; &nbsp; &nbsp;&gt; &nbsp; &nbsp; &nbsp;DATA G4<br> &gt; &nbsp; &nbsp; &nbsp;&gt; &nbsp; &nbsp; &nbsp;META G1<br> &gt; &nbsp; &nbsp; &nbsp;&gt; &nbsp; &nbsp; &nbsp;CREATE G5 PGS/G1.4<br> &gt; &nbsp; &nbsp; &nbsp;&gt; &nbsp; &nbsp; &nbsp;DATA G5<br> &gt; &nbsp; &nbsp; &nbsp;&gt; &nbsp; &nbsp; &nbsp;META G1<br> &gt; &nbsp; &nbsp; &nbsp;&gt;<br> &gt; &nbsp; &nbsp; &nbsp;&gt; Where PGS is GFID of .shards directory.<br> &gt; &nbsp; &nbsp; &nbsp;&gt;<br> &gt; &nbsp; &nbsp; &nbsp;&gt; Geo-rep will create these files independently in Slave Volume and<br> &gt; &nbsp; &nbsp; &nbsp;&gt; syncs Xattrs of G1. Data can be read only when all the chunks are<br> &gt; &nbsp; &nbsp; &nbsp;&gt; synced to Slave Volume. Data can be read partially if main/first file<br> &gt; &nbsp; &nbsp; &nbsp;&gt; and some of the chunks synced to Slave.<br> &gt; &nbsp; &nbsp; &nbsp;&gt;<br> &gt; &nbsp; &nbsp; &nbsp;&gt; Please add if I missed anything. C &amp; S Welcome.<br> &gt; &nbsp; &nbsp; &nbsp;&gt;<br> &gt; &nbsp; &nbsp; &nbsp;&gt; regards<br> &gt; &nbsp; &nbsp; &nbsp;&gt; Aravinda<br> &gt; &nbsp; &nbsp; &nbsp;&gt;<br> &gt; &nbsp; &nbsp; &nbsp;&gt; On 08/11/2015 04:36 PM, Aravinda wrote:<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; Hi,<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt;<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; We are thinking different approaches to add support in<br> &gt; &nbsp; &nbsp; Geo-replication<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; for Sharded Gluster Volumes[1]<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt;<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; *Approach 1: Geo-rep: Sync Full file*<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; &nbsp; &nbsp;- In Changelog only record main file details in the same brick<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; where it is created<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; &nbsp; &nbsp;- Record as DATA in Changelog whenever any addition/changes<br> &gt; &nbsp; &nbsp; to the<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; sharded file<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; &nbsp; &nbsp;- Geo-rep rsync will do checksum as a full file from mount and<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; syncs as new file<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; &nbsp; &nbsp;- Slave side sharding is managed by Slave Volume<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; *Approach 2: Geo-rep: Sync sharded file separately*<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; &nbsp; &nbsp;- Geo-rep rsync will do checksum for sharded files only<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; &nbsp; &nbsp;- Geo-rep syncs each sharded files independently as new files<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; &nbsp; &nbsp;- [UNKNOWN] Sync internal xattrs(file size and block count)<br> &gt; &nbsp; &nbsp; in the<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; main sharded file to Slave Volume to maintain the same state as<br> &gt; &nbsp; &nbsp; in Master.<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; &nbsp; &nbsp;- Sharding translator to allow file creation under .shards<br> &gt; &nbsp; &nbsp; dir for<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; gsyncd. that is Parent GFID is .shards directory<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; &nbsp; &nbsp;- If sharded files are modified during Geo-rep run may end up<br> &gt; &nbsp; &nbsp; stale<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; data in Slave.<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; &nbsp; &nbsp;- Files on Slave Volume may not be readable unless all sharded<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; files sync to Slave(Each bricks in Master independently sync<br> &gt; &nbsp; &nbsp; files to<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; slave)<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt;<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; First approach looks more clean, but we have to analize the Rsync<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; checksum performance on big files(Sharded in backend, accessed<br> &gt; &nbsp; &nbsp; as one<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; big file from rsync)<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt;<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; Let us know your thoughts. Thanks<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt;<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; Ref:<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; [1]<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt;<br> &gt; &nbsp; &nbsp; <a class="moz-txt-link-freetext" href="http://www.gluster.org/community/documentation/index.php/Features/sharding-xlator" target="_blank" data-mce-href="http://www.gluster.org/community/documentation/index.php/Features/sharding-xlator">http://www.gluster.org/community/documentation/index.php/Features/sharding-xlator</a><br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; --<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; regards<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; Aravinda<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt;<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt;<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; _______________________________________________<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; Gluster-devel mailing list<br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; <a class="moz-txt-link-abbreviated" href="mailto:Gluster-devel@gluster.org" target="_blank" data-mce-href="mailto:Gluster-devel@gluster.org">Gluster-devel@gluster.org</a><br> &gt; &nbsp; &nbsp; &nbsp;&gt;&gt; <a class="moz-txt-link-freetext" href="http://www.gluster.org/mailman/listinfo/gluster-devel" target="_blank" data-mce-href="http://www.gluster.org/mailman/listinfo/gluster-devel">http://www.gluster.org/mailman/listinfo/gluster-devel</a><br> &gt; &nbsp; &nbsp; &nbsp;&gt;<br> &gt; &nbsp; &nbsp; &nbsp;&gt;<br> &gt; &nbsp; &nbsp; &nbsp;&gt;<br> &gt; &nbsp; &nbsp; &nbsp;&gt; _______________________________________________<br> &gt; &nbsp; &nbsp; &nbsp;&gt; Gluster-devel mailing list<br> &gt; &nbsp; &nbsp; &nbsp;&gt; <a class="moz-txt-link-abbreviated" href="mailto:Gluster-devel@gluster.org" target="_blank" data-mce-href="mailto:Gluster-devel@gluster.org">Gluster-devel@gluster.org</a><br> &gt; &nbsp; &nbsp; &nbsp;&gt; <a class="moz-txt-link-freetext" href="http://www.gluster.org/mailman/listinfo/gluster-devel" target="_blank" data-mce-href="http://www.gluster.org/mailman/listinfo/gluster-devel">http://www.gluster.org/mailman/listinfo/gluster-devel</a><br> &gt; &nbsp; &nbsp; &nbsp;&gt;<br> &gt; &nbsp; &nbsp; _______________________________________________<br> &gt; &nbsp; &nbsp; Gluster-devel mailing list<br> &gt; &nbsp; &nbsp; <a class="moz-txt-link-abbreviated" href="mailto:Gluster-devel@gluster.org" target="_blank" data-mce-href="mailto:Gluster-devel@gluster.org">Gluster-devel@gluster.org</a><br> &gt; &nbsp; &nbsp; <a class="moz-txt-link-freetext" href="http://www.gluster.org/mailman/listinfo/gluster-devel" target="_blank" data-mce-href="http://www.gluster.org/mailman/listinfo/gluster-devel">http://www.gluster.org/mailman/listinfo/gluster-devel</a><br> &gt;<br> &gt;<br></blockquote><div><br></div></div><br><br><pre>_______________________________________________
Gluster-devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Gluster-devel@gluster.org" target="_blank" data-mce-href="mailto:Gluster-devel@gluster.org">Gluster-devel@gluster.org</a><a class="moz-txt-link-freetext" href="http://www.gluster.org/mailman/listinfo/gluster-devel" target="_blank" data-mce-href="http://www.gluster.org/mailman/listinfo/gluster-devel">http://www.gluster.org/mailman/listinfo/gluster-devel</a></pre></blockquote><br></blockquote><div><br></div></div></body></html>