<div dir="ltr">We have a v3.6.5 two node cluster with a distributed-replicate volume (2x2<br>bricks, everything formatted with ext4 on CentOS 6.6) which regularly omits<br>some files from directory listings on the client side, and also regularly<br>duplicates the listing of some other files.<br><br>Summary of the issue and steps we&#39;ve tried so far:<br><br>- There is only one client system connected to this volume.<br><br>- That client populates files in this volume by copying them from a local<br>  filesystem into the gluster mount point, via &#39;cp&#39; within a single process (it<br>  is a single-threaded Python script that invokes call() to run cp via a<br>  subprocess shell), so we believe we have ruled out any possibility of<br>  concurrency or race-condition problems as there is only one source of writes<br>  and the files are copied sequentially.<br><br>- The two Gluster servers provide 7 volumes in total, but only one of the<br>  volumes has been observed with this behavior.<br><br>- There are no errors or warnings in the Gluster logs, on client or server.<br><br>- We have tried clearing all the extended attributes on all the bricks, but<br>  that did not resolve the problem.<br><br>- We have deleted everything on the brick filesystems (including .glusterfs/),<br>  but copying the files over again (via the gluster mount point on the client)<br>  results in the same missing &amp; duplicate issue.<br><br>- We ran a rebalance/fix-layout on the volume, but that did not resolve the<br>  problem.<br><br>- Interestingly, the set of files which are missing from the directory listings<br>  is the same each time we delete everything and try again with an empty<br>  directory; and the set of files which are duplicated in the listing output is<br>  also the same each time.<br><br>- When all of the files have been copied over to the gluster volume, running an<br>  &#39;ls&#39; from the client will show most, but not all of the files. Examining the<br>  bricks directly shows that all of the files are present (and properly<br>  distributed and replicated). If an &#39;rm *&#39; is then done from the client, all<br>  of the files which were visible are deleted, but the files which had not been<br>  visible on the client now are shown by &#39;ls&#39; and some of them are shown twice in<br>  the output. Examining the bricks directly again shows that all of the files in<br>  the client&#39;s ls output are present, but there are no improper duplicates (only<br>  the correctly-replicated copies that should be present). Running another &#39;rm *&#39;<br>  correctly deletes all of the files both from the client&#39;s view, as well as<br>  removing all copies on the underlying bricks.<br><br>As requested in IRC, the following is output from getfattr for a file which was<br>missing in the initial directory listing output on the client, as well as the<br>getfattr output for its parent directory (I&#39;ve included the same directory from<br>all four bricks, though in this distributed+replicate layout, the file was only<br>(properly) located on the bricks in each gluster hosts&#39; /export/zones1).<br><br>As for an example of a file which appeared fine from the beginning, I&#39;ll need<br>to follow up with that in a bit once I can get the client I&#39;m doing this for to<br>repeat the test, but pausing after the initial copy and before deleting the set<br>of visible files.<br><br>FWIW, these files were copied to an empty volume after a rebalance operation<br>had been run.<br><br>(Host gluster-001)<br>-bash-4.1# getfattr -d -e hex -m . /export/zones1/brick/landing/arrivals/xx/xx_user1/G03_Interim\ ELA\ PT\ Beetles\ \(IAB\)_2015-08-11.tar.gz.gpg<br>getfattr: Removing leading &#39;/&#39; from absolute path names<br># file: export/zones1/brick/landing/arrivals/xx/xx_user1/G03_Interim ELA PT Beetles (IAB)_2015-08-11.tar.gz.gpg<br>trusted.afr.dirty=0x000000000000000000000000<br>trusted.afr.zones-client-0=0x000000000000000000000000<br>trusted.afr.zones-client-1=0x000000000000000000000000<br>trusted.gfid=0x8823094f0ea14f049bbc4f98895f7192<br><br>-bash-4.1# getfattr -d -e hex -m . /export/zones1/brick/landing/arrivals/xx/xx_user1<br>getfattr: Removing leading &#39;/&#39; from absolute path names<br># file: export/zones1/brick/landing/arrivals/xx/xx_user1<br>trusted.afr.dirty=0x000000000000000000000000<br>trusted.afr.zones-client-0=0x000000000000000000000000<br>trusted.afr.zones-client-1=0x000000000000000000000000<br>trusted.gfid=0xdc7b9acea4084541a830935e48f4a2a1<br>trusted.glusterfs.dht=0x0000000100000000000000007fffd0ea<br><br>-bash-4.1# getfattr -d -e hex -m . /export/zones2/brick/landing/arrivals/xx/xx_user1<br>getfattr: Removing leading &#39;/&#39; from absolute path names<br># file: export/zones2/brick/landing/arrivals/xx/xx_user1<br>trusted.afr.dirty=0x000000000000000000000000<br>trusted.afr.zones-client-2=0x000000000000000000000000<br>trusted.afr.zones-client-3=0x000000000000000000000000<br>trusted.gfid=0xdc7b9acea4084541a830935e48f4a2a1<br>trusted.glusterfs.dht=0x00000001000000007fffd0ebffffffff<br><br>(Host gluster-002)<br>-bash-4.1# getfattr -d -e hex -m . /export/zones1/brick/landing/arrivals/xx/xx_user1/G03_Interim\ ELA\ PT\ Beetles\ \(IAB\)_2015-08-11.tar.gz.gpg<br>getfattr: Removing leading &#39;/&#39; from absolute path names<br># file: export/zones1/brick/landing/arrivals/xx/xx_user1/G03_Interim ELA PT Beetles (IAB)_2015-08-11.tar.gz.gpg<br>trusted.afr.dirty=0x000000000000000000000000<br>trusted.afr.zones-client-0=0x000000000000000000000000<br>trusted.afr.zones-client-1=0x000000000000000000000000<br>trusted.gfid=0x8823094f0ea14f049bbc4f98895f7192<br><br>-bash-4.1# getfattr -d -e hex -m . /export/zones1/brick/landing/arrivals/xx/xx_user1<br>getfattr: Removing leading &#39;/&#39; from absolute path names<br># file: export/zones1/brick/landing/arrivals/xx/xx_user1<br>trusted.afr.dirty=0x000000000000000000000000<br>trusted.afr.zones-client-0=0x000000000000000000000000<br>trusted.afr.zones-client-1=0x000000000000000000000000<br>trusted.gfid=0xdc7b9acea4084541a830935e48f4a2a1<br>trusted.glusterfs.dht=0x0000000100000000000000007fffd0ea<br><br>-bash-4.1# getfattr -d -e hex -m . /export/zones2/brick/landing/arrivals/xx/xx_user1<br>getfattr: Removing leading &#39;/&#39; from absolute path names<br># file: export/zones2/brick/landing/arrivals/xx/xx_user1<br>trusted.afr.dirty=0x000000000000000000000000<br>trusted.afr.zones-client-2=0x000000000000000000000000<br>trusted.afr.zones-client-3=0x000000000000000000000000<br>trusted.gfid=0xdc7b9acea4084541a830935e48f4a2a1<br>trusted.glusterfs.dht=0x00000001000000007fffd0ebffffffff<br><br>Volume configuration server-side:<br>-bash-4.1# mount | grep zones<br>/dev/mapper/vg.zones1-lv.zones1 on /export/zones1 type ext4 (rw,noatime)<br>/dev/mapper/vg.zones2-lv.zones2 on /export/zones2 type ext4 (rw,noatime)<br>-bash-4.1# gluster volume info zones<br>Volume Name: zones<br>Type: Distributed-Replicate<br>Volume ID: 53ff45b1-8dc7-47ef-8a26-3245414e4990<br>Status: Started<br>Number of Bricks: 2 x 2 = 4<br>Transport-type: tcp<br>Bricks:<br>Brick1: 10.1.1.122:/export/zones1/brick<br>Brick2: 10.1.1.121:/export/zones1/brick<br>Brick3: 10.1.1.122:/export/zones2/brick<br>Brick4: 10.1.1.121:/export/zones2/brick<br>Options Reconfigured:<br>client.ssl: off<br>server.ssl: off<br>performance.cache-size: 256MB<br>auth.ssl-allow: *<br>-bash-4.1# gluster volume status zones<br>Status of volume: zones<br>Gluster process                                      Port    Online  Pid<br>---------------------------------------------------------------------------<br>Brick 10.1.1.122:/export/zones1/brick                49165   Y       25189<br>Brick 10.1.1.121:/export/zones1/brick                49164   Y       697<br>Brick 10.1.1.122:/export/zones2/brick                49166   Y       25194<br>Brick 10.1.1.121:/export/zones2/brick                49161   Y       703<br>NFS Server on localhost                              2049    Y       25213<br>Self-heal Daemon on localhost                        N/A     Y       25222<br>NFS Server on 10.1.1.121                             2049    Y       719<br>Self-heal Daemon on 10.1.1.121                       N/A     Y       736<br><br>Task Status of Volume zones<br>---------------------------------------------------------------------------<br>Task                 : Rebalance<br>ID                   : 75f0b7ae-ed26-417b-a285-9ad81e40073c<br>Status               : completed<br><br>Mountpoint on client side:<br>-bash-4.1# mount | grep zones<br>10.1.1.122:/zones on /opt/edware/zones type fuse.glusterfs (rw,default_permissions,allow_other,max_read=131072)</div>