Re: How can i replace died hard disk (a brick) with new hard disk (new brick).

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



hi,
These are the Steps:
1) Check that all the bricks are running. It is okay if the brick that is going to be replaced is down.
2) Bring the brick that is going to be replaced down if not already.
    - Get the pid of the brick by executing 'gluster volume <volname> status'

12:37:49 ⚡ gluster volume status
Status of volume: r2
Gluster process                        Port    Online    Pid
------------------------------------------------------------------------------
Brick pranithk-laptop:/home/gfs/r2_0            49152    Y    5342 <<--- this is the brick we want to replace lets say.
Brick pranithk-laptop:/home/gfs/r2_1            49153    Y    5354
Brick pranithk-laptop:/home/gfs/r2_2            49154    Y    5365
Brick pranithk-laptop:/home/gfs/r2_3            49155    Y    5376
....

    - Login to the machine where the brick is running and kill the brick.

root@pranithk-laptop - /mnt/r2
12:38:33 ⚡ kill -9 5342

    - Confirm that the brick is not running anymore and the other bricks are running fine.

12:38:38 ⚡ gluster volume status
Status of volume: r2
Gluster process                        Port    Online    Pid
------------------------------------------------------------------------------
Brick pranithk-laptop:/home/gfs/r2_0            N/A    N    5342 <<---- brick is not running, others are running fine.
Brick pranithk-laptop:/home/gfs/r2_1            49153    Y    5354
Brick pranithk-laptop:/home/gfs/r2_2            49154    Y    5365
Brick pranithk-laptop:/home/gfs/r2_3            49155    Y    5376
....

3) Set up metadata so that heal will happen from the other brick in replica pair to the one that is going to be replaced (In this case it is from /home/gfs/r2_1 -> /home/gfs/r2_5):
     - Create a directory on the mount point that doesn't already exist. Then delete that directory, do the same for metadata changelog by doing setfattr. This operation marks the pending changelog which will tell self-heal damon/mounts to perform self-heal from /home/gfs/r2_1 to /home/gfs/r2_5.

       mkdir /mnt/r2/<name-of-nonexistent-dir>
       rmdir /mnt/r2/<name-of-nonexistent-dir>
       setfattr -n trusted.non-existent-key -v abc /mnt/r2
       setfattr -x trusted.non-existent-key  /mnt/r2
       NOTE: '/mnt/r2' is the mount path.

    - Check that there are pending xattrs:

getfattr -d -m. -e hex /home/gfs/r2_1
# file: home/gfs/r2_1
security.selinux=0x756e636f6e66696e65645f753a6f626a6563745f723a66696c655f743a733000
trusted.afr.r2-client-0=0x000000000000000300000002 <<---- xattrs are marked from source brick pranithk-laptop:/home/gfs/r2_1
trusted.afr.r2-client-1=0x000000000000000000000000
trusted.gfid=0x00000000000000000000000000000001
trusted.glusterfs.dht=0x0000000100000000000000007ffffffe
trusted.glusterfs.volume-id=0xde822e25ebd049ea83bfaa3c4be2b440

3) Replace the brick with 'commit force' option
- Execute replace-brick command

root@pranithk-laptop - /mnt/r2
12:58:46 ⚡ gluster volume replace-brick r2 `hostname`:/home/gfs/r2_0 `hostname`:/home/gfs/r2_5 commit force
volume replace-brick: success: replace-brick commit successful

- Check that the new brick is now online
root@pranithk-laptop - /mnt/r2
12:59:21 ⚡ gluster volume status
Status of volume: r2
Gluster process                        Port    Online    Pid
------------------------------------------------------------------------------
Brick pranithk-laptop:/home/gfs/r2_5            49156    Y    5731 <<<---- new brick is online
Brick pranithk-laptop:/home/gfs/r2_1            49153    Y    5354
Brick pranithk-laptop:/home/gfs/r2_2            49154    Y    5365
Brick pranithk-laptop:/home/gfs/r2_3            49155    Y    5376
...

- Once self-heal completes the changelogs will be removed.

12:59:27 ⚡ getfattr -d -m. -e hex /home/gfs/r2_1
getfattr: Removing leading '/' from absolute path names
# file: home/gfs/r2_1
security.selinux=0x756e636f6e66696e65645f753a6f626a6563745f723a66696c655f743a733000
trusted.afr.r2-client-0=0x000000000000000000000000 <<---- Pending changelogs are cleared.
trusted.afr.r2-client-1=0x000000000000000000000000
trusted.gfid=0x00000000000000000000000000000001
trusted.glusterfs.dht=0x0000000100000000000000007ffffffe
trusted.glusterfs.volume-id=0xde822e25ebd049ea83bfaa3c4be2b440

Pranith

On 08/25/2014 10:41 AM, B.K.Raghuram wrote:
Had come across this suggestion in sometime back. Is this a valid way to go about replacing a brick or is it not safe?


_______________________________________________
Gluster-users mailing list
Gluster-users@xxxxxxxxxxx
http://supercolony.gluster.org/mailman/listinfo/gluster-users

[Index of Archives]     [Gluster Development]     [Linux Filesytems Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux