[Gluster-users] volume failing to heal after replace-brick

Jordan Tomkinson jordan at catalyst-au.net
Fri Feb 6 03:37:46 UTC 2015


Solving my own issue here. gluster can be frustrating at times.

Documentation, bug tracker and mailing list all say that various
replace-brick functions are deprecated in 3.6 and self-heal daemon is
responsible for migrating data. the CLI even says tell you when you try
any command:

All replace-brick commands except commit force are deprecated. Do you
want to continue? (y/n)

Yet it seems replace-brick still works, and is infact the only way to
migrate data from one brick to another as SHD clearly does not work as
per my previous message.

Round 2 - aka ignoring everything everybody says and doing it the old way

$ gluster volume info test
 
Volume Name: test
Type: Replicate
Volume ID: 34716d2f-8fd1-40a4-bcab-ecfe3f6d116b
Status: Started
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: ds1:/export/test
Brick2: ds2:/export/test

$ gluster volume replace-brick test ds2:/export/test ds2:/export/test2
start force
All replace-brick commands except commit force are deprecated. Do you
want to continue? (y/n) y
volume replace-brick: success: replace-brick started successfully
ID: 6f8054cc-03b8-4a1e-afc5-2aecf70d909b

$ gluster volume replace-brick test ds2:/export/test ds2:/export/test2
status    
All replace-brick commands except commit force are deprecated. Do you
want to continue? (y/n) y
volume replace-brick: success: Number of files migrated = 161   
Migration complete

$ gluster volume replace-brick test ds2:/export/test ds2:/export/test2
commit
All replace-brick commands except commit force are deprecated. Do you
want to continue? (y/n) y
volume replace-brick: success: replace-brick commit successful

$ gluster volume info test
 
Volume Name: test
Type: Replicate
Volume ID: 34716d2f-8fd1-40a4-bcab-ecfe3f6d116b
Status: Started
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: ds1:/export/test
Brick2: ds2:/export/test2

fuse clients can now see all data as expected.

I can't begin to express how frustrating this experience has been.


On 06/02/15 10:51, Jordan Tomkinson wrote:
> Hi,
>
> Using Gluster 3.6.1, I'm trying to replace a brick but after issuing a
> volume heal nothing gets healed and my clients see an empty volume.
>
> I have reproduced this on a test volume, shown here.
>
> $ gluster volume status test
>
> Status of volume: test
> Gluster process                        Port    Online    Pid
> ------------------------------------------------------------------------------
> Brick ds1:/export/test            49153    Y    7093
> Brick ds2:/export/test            49154    Y    11472
> NFS Server on localhost                    2049    Y    11484
> Self-heal Daemon on localhost                N/A    Y    11491
> NFS Server on 10.42.0.207                2049    Y    7110
> Self-heal Daemon on 10.42.0.207                N/A    Y    7117
>  
> Task Status of Volume test
> ------------------------------------------------------------------------------
> There are no active volume tasks
>
> I then mount the volume from a client and store some files.
>
> Now I replace ds2:/export/test with an empty disk mounted on
> ds2:/export/test2
>
> $ gluster volume replace-brick test ds2:/export/test ds2:/export/test2
> commit force
> volume replace-brick: success: replace-brick commit successful
>
> At this point, doing an ls on the volume mounted from a fuse client
> shows an empty volume, basically the contents of the new empty brick.
>
> So i issue a volume heal full
>
> $ gluster volume heal test full
> Launching heal operation to perform full self heal on volume test has
> been successful
> Use heal info commands to check status
>
> $ gluster volume heal test info
> Gathering list of entries to be healed on volume test has been successful
>
> Brick ds1:/export/test
> Number of entries: 0
>
> Brick ds2:/export/test2
> Number of entries: 0
>
>
> Nothing gets healed from ds1:/export/test to ds2:/export/test2 and my
> clients still see an empty volume.
>
> I can see the data on ds1:/export/test if i look inside the brick
> directory, but nothing on ds2:/export/test2
>
> tailing glustershd.log, nothing is printed after running the heal command.
>
> the only log is one line from etc-glusterfs-glusterd.vol.log
> [2015-02-06 02:48:39.906224] I
> [glusterd-volume-ops.c:482:__glusterd_handle_cli_heal_volume]
> 0-management: Received heal vol req for volume test
>
> Any ideas?
>
>
>

-- 
Jordan Tomkinson
System Administrator
Catalyst IT Australia




More information about the Gluster-users mailing list