[Gluster-devel] List the count of files to be healed from bricks in a replicate volume
Venkatesh Somyajulu
vsomyaju at redhat.com
Tue Sep 17 06:31:44 UTC 2013
Hi,
As a part of improvements in "gluster volume heal commands", we need a command which can give indication regarding the Number of files which requires self heal. Although this information can be retrieved by "gluster volume heal volume-name info" command. But it collects the list of files with names which is a time consuming operation. So a command just informing the number of files which requires self-heal is needed.
Xattrop directory contains the hard links represented in the gfid form to dummy link.
Example:
under indices/xatttop/ we have 6 entries:
1111111 ----------. 3 root root 0 Aug 27 17:13 00000000-0000-0000-0000-000000000001 line-1
1111111 ----------. 3 root root 0 Aug 27 17:13 85998df6-571a-4329-a38c-111111111111 line-2
1111111 ----------. 3 root root 0 Aug 27 17:13 xattrop-11111111-1111-1111-1111-111111111111 line-3
2222222 ----------. 3 root root 0 Aug 27 17:13 00000000-0000-0000-0000-000000000002 line-4
2222222 ----------. 3 root root 0 Aug 27 17:13 85998df6-571a-4329-a38c-222222222222 line-5
2222222 ----------. 3 root root 0 Aug 27 17:13 xattrop-22222222-2222-2222-2222-222222222222 line-6
Here we have two dummy "xattrop" prefixed entries (line-3 and line-6). line-1 and line-2 are hard links to line-3. line-4 and line-5 are hard links to line-6.
So 1,2,4,5 are the entries which requires self-heal.
I am planning to introduce one more directory dummy_xattrop under indices. [indices/dummy_xattrop]
which will contain only the dummy xattrop entries of indices/xattrop directory.
Example:
under indices/dummy_xattrop:
1111111 ----------. 3 root root 0 Aug 27 17:13 xattrop-dummy-11111111-1111-1111-1111-111111111111 line-7
2222222 ----------. 3 root root 0 Aug 27 17:13 xattrop-dummy-22222222-2222-2222-2222-222222222222 line-8
line-7 entry is hard link to line-3 entry and line-8 entry is hard link to line-6 entry.
Now if we need the no. of files to be healed from this brick then
a = hard link counts for inode 1111111 and subtract 2 [ here 2 links corresponds to line-3 and line-7 as they are dummy]
b = hard link counts for inode 2222222 and subtract 2 [ here 2 links corresponds to line-6 and line-8 as they are dummy]
No of entries corresponding to this brick = a+b. In a similar fashion for other bricks also we can determine the number of entries present.
Advantages:
-----------
1. No of network calls involved are very few. Involved system call are readdir of indices/dummy_xattrop which is expected to contain very few entries and stat
for each entry.
2. Very quick way of retrieving this information.
3. Command is expected to work at both volume level and replica-group level.
Output will give the entries per brick.
Replica-0:
BRICK1: 192.168.122.2:/rep-0_brick1 count:10
Brick2: 192.168.122.3:/rep_0-brick2 count:20
Replica-1:
BRICK1: 192.168.122.4:/rep-1_brick1 count:10
BRICK2: 192.168.122.5:/rep-1_brick2 count:20
Regards,
Venkatesh Somyajulu
More information about the Gluster-devel
mailing list