이 콘텐츠는 선택한 언어로 제공되지 않습니다.
8.5. Migrating Volumes
Data can be redistributed across bricks while the trusted storage pool is online and available.Before replacing bricks on the new servers, ensure that the new servers are successfully added to the trusted storage pool.
Note
Before performing a
replace-brick
operation, review the known issues related to replace-brick
operation in the Red Hat Storage 3.0 Release Notes.
8.5.1. Replacing a Subvolume on a Distribute or Distribute-replicate Volume 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
This procedure applies only when at least one brick from the subvolume to be replaced is online. In case of a Distribute volume, the brick that must be replaced must be online. In case of a Distribute-replicate, at least one brick from the subvolume from the replica set that must be replaced must be online.
To replace the entire subvolume with new bricks on a Distribute-replicate volume, follow these steps:
- Add the new bricks to the volume.
gluster volume add-brick VOLNAME [<stripe|replica> <COUNT>] NEW-BRICK
# gluster volume add-brick VOLNAME [<stripe|replica> <COUNT>] NEW-BRICKgluster volume add-brick VOLNAME [<stripe|replica> <COUNT>] NEW-BRICKgluster volume add-brick VOLNAME [<stripe|replica> <COUNT>] NEW-BRICKgluster volume add-brick VOLNAME [<stripe|replica> <COUNT>] NEW-BRICK
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example 8.1. Adding a Brick to a Distribute Volume
gluster volume add-brick test-volume server5:/exp5
# gluster volume add-brick test-volume server5:/exp5 Add Brick successful
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Verify the volume information using the command:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Note
In case of a Distribute-replicate or stripe volume, you must specify the replica or stripe count in theadd-brick
command and provide the same number of bricks as the replica or stripe count to theadd-brick
command. - Remove the bricks to be replaced from the subvolume.
- Start the
remove-brick
operation using the command:gluster volume remove-brick VOLNAME [replica <COUNT>] <BRICK> start
# gluster volume remove-brick VOLNAME [replica <COUNT>] <BRICK> start# gluster volume remove-brick VOLNAME [replica <COUNT>] <BRICK> start# gluster volume remove-brick VOLNAME [replica <COUNT>] <BRICK> start
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example 8.2. Start a remove-brick operation on a distribute volume
#gluster volume remove-brick test-volume server2:/exp2 start Remove Brick start successful
#gluster volume remove-brick test-volume server2:/exp2 start Remove Brick start successful
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - View the status of the
remove-brick
operation using the command:gluster volume remove-brick VOLNAME [replica <COUNT>] BRICK status
# gluster volume remove-brick VOLNAME [replica <COUNT>] BRICK status# gluster volume remove-brick VOLNAME [replica <COUNT>] BRICK status# gluster volume remove-brick VOLNAME [replica <COUNT>] BRICK status# gluster volume remove-brick VOLNAME [replica <COUNT>] BRICK status# gluster volume remove-brick VOLNAME [replica <COUNT>] BRICK status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example 8.3. View the Status of remove-brick Operation
gluster volume remove-brick test-volume server2:/exp2 status
# gluster volume remove-brick test-volume server2:/exp2 status Node Rebalanced-files size scanned failures status ------------------------------------------------------------------ server2 16 16777216 52 0 in progress
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Keep monitoring theremove-brick
operation status by executing the above command. When the value of the status field is set tocomplete
in the output ofremove-brick
status command, proceed further. - Commit the
remove-brick
operation using the command:#gluster volume remove-brick VOLNAME [replica <COUNT>] <BRICK> commit
#gluster volume remove-brick VOLNAME [replica <COUNT>] <BRICK> commit#gluster volume remove-brick VOLNAME [replica <COUNT>] <BRICK> commit#gluster volume remove-brick VOLNAME [replica <COUNT>] <BRICK> commit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example 8.4. Commit the remove-brick Operation on a Distribute Volume
#gluster volume remove-brick test-volume server2:/exp2 commit
#gluster volume remove-brick test-volume server2:/exp2 commit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Verify the volume information using the command:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Verify the content on the brick after committing the
remove-brick
operation on the volume. If there are any files leftover, copy it through FUSE or NFS mount.- Verify if there are any pending files on the bricks of the subvolume.Along with files, all the application-specific extended attributes must be copied. glusterFS also uses extended attributes to store its internal data. The extended attributes used by glusterFS are of the form
trusted.glusterfs.*
,trusted.afr.*
, andtrusted.gfid
. Any extended attributes other than ones listed above must also be copied.To copy the application-specific extended attributes and to achieve a an effect similar to the one that is described above, use the following shell script:Syntax:copy.sh <glusterfs-mount-point> <brick>
# copy.sh <glusterfs-mount-point> <brick>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example 8.5. Code Snippet Usage
If the mount point is/mnt/glusterfs
and brick path is/export/brick1
, then the script must be run as:copy.sh /mnt/glusterfs /export/brick
# copy.sh /mnt/glusterfs /export/brick
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - To identify a list of files that are in a split-brain state, execute the command:
#gluster volume heal test-volume info
#gluster volume heal test-volume info
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - If there are any files listed in the output of the above command, delete those files from the mount point and manually retain the correct copy of the file after comparing the files across the bricks in a replica set. Selecting the correct copy of the file needs manual intervention by the System Administrator.
8.5.2. Replacing an Old Brick with a New Brick on a Replicate or Distribute-replicate Volume 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
A single brick can be replaced during a hardware failure situation, such as a disk failure or a server failure. The brick that must be replaced could either be online or offline. This procedure is applicable for volumes with replication. In case of a Replicate or Distribute-replicate volume types, after replacing the brick, self-heal is triggered to heal the data on the new brick.
Procedure to replace an old brick with a new brick on a Replicate or Distribute-replicate volume:
- Ensure that the new brick (
sys5:/home/gfs/r2_5
) that replaces the old brick (sys0:/home/gfs/r2_0
) is empty. Ensure that all the bricks are online. The brick that must be replaced can be in an offline state. - Bring the brick that must be replaced to an offline state, if it is not already offline.
- Identify the PID of the brick to be replaced, by executing the command:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Log in to the host on which the brick to be replaced has its process running and kill the brick.
#kill -9 <PID>
#kill -9 <PID>#kill -9 <PID>#kill -9 <PID>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Ensure that the brick to be replaced is offline and the other bricks are online by executing the command:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- Create a FUSE mount point from any server to edit the extended attributes. Using the NFS and CIFS mount points, you will not be able to edit the extended attributes.
- Perform the following operations to change the Automatic File Replication extended attributes so that the heal process happens from the other brick (
sys1:/home/gfs/r2_1
) in the replica pair to the new brick (sys5:/home/gfs/r2_5
).Note that/mnt/r2
is the FUSE mount path.- Create a new directory on the mount point and ensure that a directory with such a name is not already present.
#mkdir /mnt/r2/<name-of-nonexistent-dir>
#mkdir /mnt/r2/<name-of-nonexistent-dir>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Delete the directory and set the extended attributes.
#rmdir /mnt/r2/<name-of-nonexistent-dir>
#rmdir /mnt/r2/<name-of-nonexistent-dir>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow #setfattr -n trusted.non-existent-key -v abc /mnt/r2 #setfattr -x trusted.non-existent-key /mnt/r2
#setfattr -n trusted.non-existent-key -v abc /mnt/r2 #setfattr -x trusted.non-existent-key /mnt/r2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Ensure that the extended attributes on the other bricks in the replica (in this example,
trusted.afr.r2-client-0
) is not set to zero.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- Execute the
replace-brick
command with theforce
option:gluster volume replace-brick r2 sys0:/home/gfs/r2_0 sys5:/home/gfs/r2_5 commit force
# gluster volume replace-brick r2 sys0:/home/gfs/r2_0 sys5:/home/gfs/r2_5 commit force volume replace-brick: success: replace-brick commit successful
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Check if the new brick is online.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Ensure that after the self-heal completes, the extended attributes are set to zero on the other bricks in the replica.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Note that in this example, the extended attributestrusted.afr.r2-client-0
andtrusted.afr.r2-client-1
are set to zero.
8.5.3. Replacing an Old Brick with a New Brick on a Distribute Volume 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
Important
In case of a Distribute volume type, replacing a brick using this procedure will result in data loss.
- Replace a brick with a commit
force
option:gluster volume replace-brick VOLNAME <BRICK> <NEW-BRICK> commit force
# gluster volume replace-brick VOLNAME <BRICK> <NEW-BRICK> commit force# gluster volume replace-brick VOLNAME <BRICK> <NEW-BRICK> commit force# gluster volume replace-brick VOLNAME <BRICK> <NEW-BRICK> commit force
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example 8.6. Replace a brick on a Distribute Volume
gluster volume replace-brick r2 sys0:/home/gfs/r2_0 sys5:/home/gfs/r2_5 commit force
# gluster volume replace-brick r2 sys0:/home/gfs/r2_0 sys5:/home/gfs/r2_5 commit force volume replace-brick: success: replace-brick commit successful
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Verify if the new brick is online.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Note
All the
replace-brick
command options except the commit force
option are deprecated.