title: gfs2_edit(8)

text:
# gfs2_edit(8)

## NAME
gfs2_edit - Display, print or edit GFS2 or GFS internal structures.

## SYNOPSIS
gfs2_edit [OPTION]... [DEVICE]

## DESCRIPTION
The gfs2_edit command is a tool used to examine, edit or display internal data structures of a GFS2 or GFS file system. The gfs2_edit command can be run interactively, as described below in INTERACTIVE MODE.

Caution: Several options of the gfs2_edit command alter the file system metadata and can cause file system corruption. These options should be used with great care.

## OPTIONS
-p [struct | block] [blocktype] [blockalloc [val]] [blockbits] [blockrg] [find sb|rg|rb|di|in|lf|jd|lh|ld|ea|ed|lb|13|qc] [field <field> [val]]

Print a gfs2 data structure in human-readable format to stdout. You can enter either a block number or a data structure name. Block numbers may be specified in hex (e.g., 0x10) or decimal (e.g., 16). You can specify the following well-known locations with the -p option.

sb, superblock - Print the superblock.

root - Print the root directory.

master - Print the master system directory.

jindex - Print the journal index system directory.

per_node - Print the per_node system directory.

inum - Print the system inum file.

statfs - Print the system statfs file.

rindex, rgindex - Print the resource group index system file.

rg X - Print the resource group information for RG X (zero-based).

rgs - Print the resource group information.

quota - Print the contents of the system quota file.

identify - Identify a data block rather than print the block's contents.

size - Print the device size information.

journalX - Print the contents of journal X, where X is a journal number from 0 to <the number of journals in your file system - 1>. Only the journal headers and journal descriptors are dumped. For journal descriptors, this option prints out every file system block number logged in that section of the journal. The actual journaled blocks are not printed.

If you specify a block number rather than a structure name, gfs2_edit will print out a breakdown of the structure for that block. For example: gfs2_edit -p sb will print the superblock, but so does gfs2_edit -p 0x10 and gfs2_edit -p 16.

If you specify -p without a block or structure name, gfs2_edit prints the superblock.

You can specify more than one data structure with a single -p option. For example, gfs2_edit -p inum statfs /dev/sda1 prints the system inum file and the system statfs file on /dev/sda1.

Optionally, you may specify the keyword blocktype to print out the gfs2 block type for the specified block. Valid gfs2 block types are: 0 (Clump), 1 (Superblock), 2 (Resource Group Header), 3 (Resource Group Bitmap), 4 (Dinode), 5 (Indirect Block), 6 (Leaf), 7 (Journaled data), 8 (Log Header), 9 (Log descriptor), 10 (Extended attribute), 11 (Eattr Data), 12 (Log Buffer), 13 (Invalid), and 14 (Quota Change).

Optionally, you may specify the keyword blockalloc with an optional value to assign. If no value is specified, the blockalloc keyword will print the block allocation type for the specified block. Valid block allocation types are: 0 (Free block), 1 (Data block), 2 (Unlinked block), and 3 (Metadata block). If a value from 0 to 3 is specified, the resource group bitmap will be changed to the new value. This may be used, for example, to artificially free or allocate a block in order to test fsck.gfs2's ability to detect and fix the problem.

Optionally, you may specify the keyword blockbits. This option will locate and print the block containing the bitmap corresponding to the specified block.

Optionally, you may specify the keyword blockrg. This option will locate and print the block number of the resource group that holds information about the specified block.

You may also use gfs2_edit to find the next occurrence of a metadata block of a certain type. Valid metadata types are: none (unused metadata clump block), sb (superblock), rg (resource group), rb (rg bitmap), di (disk inode aka dinode), in (indirect block list), lf (directory leaf), jd (journaled data), lh (journal log header), ld (journal log descriptor), ea (extended attribute), ed (ea data block), lb (log buffer), 13 (unused block type 13), qc (quota change). The block AFTER the one specified with -p is the starting point for the search. For example, if you specify gfs2_edit -p rg 12 find rg /dev/your/device, it will find the rg that follows rg 12 (normally, this would be rg 13). Note, however, that since metadata often appears in the journals, it could be a copy of a different RG, inside a journal. Also note that gfs2_edit will only find allocated metadata blocks unless the type specified is none, sb, rg or rb. In other words, if you try to find a disk inode, it will only find an allocated dinode, not a deallocated one.

Optionally, you may specify the keyword field followed by a valid metadata field name. Right now, only the fields in disk inodes and resource groups are allowed. If no value is specified after the field, the value of the field will be printed to stdout. If a value is specified, the field's value will be changed. This may be used, for example, to artificially change the di_size field for an inode in order to test fsck.gfs2's ability to detect and fix the problem.

-s [structure | block]

Specify a starting block for interactive mode. Any of the well-known locations found in the -p option may be specified. If you want to start on a particular resource group, specify it in quotes, e.g. -s "rg 3"

-h, -help, -usage

Print help information.

-c [0 | 1]

Use alternate color scheme for interactive mode: 0=normal (dark colors on white background), or 1 (light colors on black background).

-V

Print program version information only.

-x

Print in hex mode.

-z <0-9>

Compress metadata with gzip compression level 1 to 9 (default 9). 0 means no compression at all.

rg <rg> <device>

Print the contents of Resource Group <rg> on <device>. <rg> is a number from 0 to X - 1, where X is the number of RGs.

rgcount <device>

Print the number of Resource Groups in the file system on <device>.

rgflags <rg> [new_value] <device>

Print and/or modify the rg_flags value of Resource Group <rg> on <device>. <rg> is a number from 0 to X - 1, where X is the number of RGs. If new_value is not specified, the current rg_flags value will be printed but not modified. If new_value is specified, the rg_flags field will be overwritten with the new value.

printsavedmeta <filename.gz>

Print off a list of blocks from <filename.gz> that were saved with the savemeta option.

savemeta <device> <filename.gz>

Save off the GFS2 metadata (not user data) for the file system on the specified device to a file given by <filename>. You can use this option to analyze file system problems without revealing sensitive information that may be contained in the files. This option works quickly by using the system bitmap blocks in the resource groups to determine the location of all the metadata. If there is corruption in the bitmaps, resource groups or rindex file, this method may fail and you may need to use the savemetaslow option. The destination file is compressed using gzip unless -z 0 is specified.

savemetaslow <device> <filename.gz>

Save off GFS2 metadata, as with the savemeta option, examining every block in the file system for metadata. This option is less prone to failure due to file system corruption than the savemeta option, but it is extremely slow. The destination file is compressed using gzip unless -z 0 is specified.

savergs <device> <filename.gz>

Save off only the GFS2 resource group metadata for the file system on the specified device to a file given by <filename>. The destination file is compressed using gzip unless -z 0 is specified.

restoremeta <filename> <dest device>

Take a compressed or uncompressed file created with the savemeta option and restores its contents on top of the specified destination device. WARNING: When you use this option, the file system and all data on the destination device is destroyed. Since only metadata (but no data) is restored, every file in the resulting file system is likely to be corrupt. The ONLY purpose of this option is to examine and debug file system problems by restoring and examining the state of the saved metadata. If the destination file system is the same size or larger than the source file system where the metadata was saved, the resulting file system will be the same size as the source. If the destination device is smaller than the source file system, gfs2_edit will restore as much as it can, then quit, leaving you with a file system that probably will not mount, but from which you might still be able to figure out what is wrong with the source file system.

## INTERACTIVE MODE
If you specify a device on the gfs2_edit command line and you specify no options other than -c, gfs2_edit will act as an interactive GFS2 file system editor for the file system you specify. There are three display modes: hex mode, structure mode and pointers mode. You use the m key to switch between the modes, as described below. The modes are as follows:

Hex mode (default)

Display or edit blocks of the file system in hexadecimal and ascii. Lines at the top indicate the currently displayed block in both hex and decimal. If the block contains a GFS2 data structure, the name of that structure will appear in the upper right corner of the display. If the block is a well-known block, such as the superblock or rindex, there will be a line to indicate what it is.

In hex mode, you can edit blocks by pressing <enter> and entering hexadecimal digits to replace the highlighted hex digits. Do NOT precede the numbers with "0x". For example, if you want to change the value at offset 0x60 from a 0x12 to 0xef, position your cursor to offset 0x60, so that the 12 is highlighted, then press <enter> and type in "ef". Press <escape> or <enter> to exit edit mode.

In hex mode, different colors indicate different things. For example, in the default color scheme, the GFS2 data structure will be black, data offsets will be light blue, and actual data (anything after the gfs2 data structure) will be red.

Structure mode

Decode the file system block into its GFS2 structure and display the values of that structure. This mode is most useful for jumping around the file system. For example, you can use the arrow keys to position down to a pointer and press J to jump to that block.

Pointers mode

Display any additional information appearing on the block. For example, if an inode has block pointers, this will display them and allow you to scroll through them. You can also position to one of them and press J to jump to that block.

## Interactive mode command keys:
q or <esc>

The q or <escape> keys are used to exit gfs2_edit.

<arrow/movement keys> up, down, right, left, pg-up, pg-down, home, end

The arrow keys are used to highlight an area of the display. The J key may be used to jump to the block that is highlighted.

m - Mode switch

The m key is used to switch between the three display modes. The initial mode is hex mode. Pressing the m key once switches to structure mode. Pressing it a second time switches from structure mode to pointers mode. Pressing it a third time takes you back to hex mode again.

j - Jump to block

The j key jumps to the block number that is currently highlighted. In hex mode, hitting J will work when any byte of the pointer is highlighted.

g - Goto block

The g key asks for a block number, then jumps there. Note that in many cases, you can also arrow up so that the current block number is highlighted, then press <enter> to enter a block number to jump to.

h - Help display

The h key causes the interactive help display to be shown.

e - Extended mode

The e key causes gfs2_edit to switch to extended ("pointers") mode.

c - Color scheme

The c key causes gfs2_edit to switch to its alternate color scheme.

f - Forward block

The f key causes you to scroll forward one block. This does not affect the "jump" status. In other words, if you use the f key to move forward several blocks, pressing <backspace> will not roll you back up.

<enter> - Edit value

The <enter> key causes you to go from display mode to edit mode. If you are in hex mode and you hit enter, you can type new hex values at the cursor's current location. Note: pressing <enter> in structure mode allows you to enter a new value, with the following restrictions: For gfs2 disk inodes and resource groups, it will actually change the value on disk. However, inode numbers may not be changed. For all other structures, the values entered are ignored. If you use the up arrow key to highlight the block number, then press <enter>, you may then enter a new block number, or any of the well-known block locations listed above (e.g. sb, rindex, inum, rg 17, etc.) and gfs2_edit will jump to the block specified. If you specify a slash character followed by a metadata type, gfs2_edit will search for the next occurrence of that metadata block type, and jump there. It will take you to block 0 if it does not find any more blocks of the specified metadata type.

<home>

If you are in pointers mode, this takes you back to the starts of the pointers you are viewing. Otherwise it takes you back to the superblock.

<backspace>

This takes you back to the block you were displaying before a jump.

<space>

This takes you forward to the block you were displaying when you hit <backspace>.

## EXAMPLES
gfs2_edit /dev/roth_vg/roth_lv

Display and optionally edit the file system on /dev/roth_vg/roth_lv

gfs2_edit -p sb /dev/vg0/lvol0

Print the superblock of the gfs2 file system located on /dev/vg0/lvol0.

gfs2_edit -p identify 2746 2748 /dev/sda2

Print out what kind of blocks are at block numbers 2746 and 2748 on device /dev/sda2.

gfs2_edit -p rindex /dev/sda1

Print the resource group index system file located on device /dev/sda1.

gfs2_edit savemeta /dev/sda1 /tmp/our_fs.gz

Save off all metadata (but no user data) to file /tmp/our_fs.gz

gfs2_edit -p root /dev/my_vg/my_lv

Print the contents of the root directory in /dev/my_vg/my_lv.

gfs2-edit -x -p 0x3f7a /dev/sda1

Print the contents of block 16250 of /dev/sda1 in hex.

gfs2_edit -p 12345 /dev/sdc2

Print the gfs2 data structure at block 12345.

gfs2_edit rgcount /dev/sdb1

Print how many Resource Groups exist for /dev/sdb1.

gfs2_edit -p rg 17 /dev/sdb1

Print the contents of the eighteenth Resource Group on /dev/sdb1.

gfs2_edit rgflags 3 /dev/sdb1

Print the rg_flags value for the fourth Resource Group on /dev/sdb1.

gfs2_edit rgflags 3 8 /dev/sdb1

Set the GFS2_RGF_NOALLOC flag on for the fourth Resource Group on /dev/sdb1.

gfs2_edit -p 25 blockalloc /dev/roth_vg/roth_lv

Print the block allocation type of block 25. May produce this output: 3 (Metadata)

gfs2_edit -p 25 blockalloc 1 /dev/roth_vg/roth_lv

Change the block allocation type of block 25 to data. May produce this output: 1

gfs2_edit -p 25 blocktype /dev/roth_vg/roth_lv

Print the metadata block type of block 25. May produce this output: 4 (Block 25 is type 4: Dinode)

gfs2_edit -p 25 field di_size /dev/roth_vg/roth_lv

Print the di_size field of block 25. May produce this output: 134217728

gfs2_edit -x -p 25 field di_size /dev/roth_vg/roth_lv

Print the di_size field of block 25, in hexadecimal. May produce this output: 0x8000000

gfs2_edit -p 25 field di_size 0x4000 /dev/roth_vg/roth_lv

Change the di_size field of block 25 to the hexadecimal value 0x4000. May produce this output: 16384

## KNOWN BUGS
The directory code does not work well. It might be confused

by directory "sentinel" entries.


title: gfs2_grow(8)

text:
# gfs2_grow(8)

## NAME
gfs2_grow - Expand a GFS2 filesystem

## SYNOPSIS
gfs2_grow [OPTION]... <DEVICE|MOUNTPOINT>...

## DESCRIPTION
gfs2_grow expands a GFS2 filesystem after the device upon which the filesystem resides has also been expanded. gfs2_grow expands the GFS2 filesystem to utilize any unused space between the current end of the filesystem and the end of the block device. When this operation is complete, the resource group index for the filesystem is updated so that all nodes in the cluster can use the extra storage space that has been added.

See lvmlockd(8) for the procedure to extend and refresh the logical volume prior to running gfs2_grow.

The DEVICE or MOUNTPOINT arguments must be paths to mounted filesystems; expansion of unmounted filesystems is not supported. gfs2_grow need only be run on one node in the cluster. The other nodes will see the expansion has occurred and automatically start to use the newly available space.

gfs2_grow must be run as the superuser. When the filesystem cannot be resized due to detected errors, gfs2_grow will leave the filesystem in a consistent state.

## OPTIONS
-D

Print out debugging information about the filesystem layout.

-h

Prints out a short usage message and exits.

-q

Be quiet. Don't print anything.

-K

Do not attempt to discard the block device contents. Issuing discards to the device allows some solid state devices and sparse or thin-provisioned storage devices to optimise free space. Other devices may emulate this behaviour by zeroing the device contents, which can be a slow process.

-T

Test. Do all calculations, but do not write any data to the disk and do not expand the filesystem. This is used to discover what the tool would have done were it run without this flag. This option can be used to display the current state of a mounted GFS2 filesystem.

-V

Version. Print out version information, then exit.

## NOTES
Shrinking GFS2 filesystems is currently unsupported.

## SEE ALSO
mkfs.gfs2(8) gfs2_jadd(8) lvextend(8) lvmlockd(8)

branch: sisyphus


title: gfs2_jadd(8)

text:
# gfs2_jadd(8)

## NAME
gfs2_jadd - Add journals to a gfs2 filesystem

## SYNOPSIS
gfs2_jadd [options] <device|mountpoint> ...

## DESCRIPTION
gfs2_jadd is used to add journals (and a few other per-node files) to a gfs2 filesystem. When this operation is complete, the journal index is updated so that machines mounting the filesystem will see the newly created journals in addition to the existing journals. Machines which are already running in the cluster are unaffected.

gfs2_jadd must be run on a mounted filesystem. Adding journals to unmounted filesystems is not supported. gfs2_jadd need only be run on one node in the cluster; the added journals will be visible across the cluster.

gfs2_jadd must be run as root. gfs2_jadd only updates the journal index at the end of the process if no error conditions are encountered, otherwise the filesystem is left in its original state.

## OPTIONS
-c megabytes

Initial size of each journal's quota change file

-D

Print out debugging information about the filesystem layout.

-h

Prints out a short usage message and exits.

-J size

The size of the new journals in megabytes. The defaults to 32MB (the minimum size allowed is 8MB). If journals of different sizes are required, gfs2_jadd will need to be run once for each different size of journal.

-j number

The number of new journals to add.

-q

Be quiet. Don't print anything.

-V

Version. Print version information, then exit.

## NOTES
The journals added by gfs2_jadd are not guaranteed to be laid out contiguously as they are with mkfs.gfs2(8). Therefore it may be beneficial to performance to create the filesystem with the required number of journals instead of adding journals later.

## SEE ALSO
mkfs.gfs2(8) gfs2_grow(8)


title: gfs2_lockcapture(8)

text:
# gfs2_lockcapture(8)

## NAME
gfs2_lockcapture - capture locking information from GFS2 file systems and DLM.

## SYNOPSIS
gfs2_lockcapture [-dqyP] [-o output directory] [-r number of runs] [-s seconds to sleep] [-n name of GFS2 file system]

gfs2_lockcapture [-dqyi]

## DESCRIPTION
gfs2_lockcapture is used to capture the GFS2 lockdump data and corresponding DLM data for GFS2 file systems. The number of captures and their frequency can be configured. By default all of the mounted GFS2 file systems will have their data collected unless GFS2 file systems are specified.

Please note that sysrq -t (thread) and -m (memory) dumps and the pid directories in /proc are collected unless they are disabled with the -P option.

## OPTIONS
-h, --help

Prints out a short usage message and exits.

-d, --debug

Enables debug logging.

-q, --quiet

Disables logging to console.

-y, --no_ask

Disables all questions and assumes yes.

-i, --info

Prints information about the mounted GFS2 file systems.

-P, --disable_process_gather

The gathering of process information will be disabled.

-o <output directory>, --path_to_output_dir=<output directory>

The directory where all the collect data will be stored.

-r <number of runs>, --num_of_runs=<number of runs>

The number of runs capturing the lockdump data. The default is 3 runs.

-s <seconds to sleep>, --seconds_sleep=<seconds to sleep>

The number of seconds to sleep between runs of capturing the lockdump data. The default is 120 seconds.

-n <name of GFS2 filesystem>, --fs_name=<name of GFS2 filesystem>

The name of the GFS2 filesystem(s) that will have their lockdump data captured. By default, all mounted GFS2 file systems will have their data captured.

## NOTES
The output of the following commands will be captured:

- uname -a

- uptime

- ps h -AL -o "tid,s,cmd"

- df -h

- lsof

- mount -l

- dlm_tool ls

- dlm_tool lockdebug -v -s -w <lockspace name>

- echo "t" > /proc/sysrq-trigger (If /proc/1/stack does not exist)

- echo "m" > /proc/sysrq-trigger (If /proc/1/stack does not exist)

## AUTHOR

```
Shane Bradley <sbradley@fedoraproject.org>
```

## FILES
/proc/mounts

/proc/slabinfo

/sys/kernel/config/dlm/cluster/lkbtbl_size

/sys/kernel/config/dlm/cluster/dirtbl_size

/sys/kernel/config/dlm/cluster/rsbtbl_size

/sys/kernel/debug/gfs2/

/sys/kernel/debug/dlm/

/proc/<int>/ (If /proc/1/stack does exists)

/var/log/messages

/var/log/cluster/


title: gfs2_trace(8)

text:
# gfs2_trace(8)

## NAME
gfs2_trace - can enable trace events, disable trace events, and capture data from GFS2 trace events.

## SYNOPSIS
gfs2_trace [-dqEN] [-e trace event name] [-n trace event name] [-o output filename]

## DESCRIPTION
gfs2_trace can enabled and disable trace events on all trace events or selected trace events. gfs2_trace can capture the output of the trace events and write the output to a file. When capturing trace events, the script will exit when control-c is pressed. The trace events will be then written to the selected file.

## OPTIONS
-h, --help

Prints out a short usage message and exits.

-d, --debug

enables debug logging.

-q, --quiet

disables logging to console.

-l, --list

lists the enabled state and filters for the GFS2 trace events

-E, --enable_all_trace_events

enables all trace_events for GFS2

-e <trace event name>, ----enable_trace_event=<trace event name>

selected trace_events that will be enabled for GFS2

-N, --disable_all_trace_events

disables all trace_events for GFS2

-n <trace event name>, ----disable_trace_event=<trace event name>

selected trace_events that will be enabled for GFS2

-c <output filename>, --capture=<output filename>

enables capturing of trace events and will save the data to a file


glocktop

title: glocktop(8)

text:
# glocktop(8)

## NAME
glocktop - Display or print active GFS2 locks.

## SYNOPSIS
glocktop [OPTIONS]

## DESCRIPTION
The glocktop tool is used to display active GFS2 inter-node locks, also known as glocks. Simply put, it's a tool to filter and interpret the contents of the glocks debugfs file. The glocks debugfs file shows all glocks known to GFS2, their holders, and technical data such as flags. The glocktop tool will only show the glocks that are important: glocks that are being held or for which there are waiters. It also interprets the debugfs file of DLM (Distributed Lock Manager).

## OPTIONS
-d <delay>

Specify a time delay (in seconds) between reports. (Default is 30 seconds)

-h

Print help information.

-i

Interactive mode. In this mode, glocktop acts more like the top command. It shows the pertinent glocks on the terminal session (as many as it can fit). The advantage is that it uses different colors to draw attention to what's important. The disadvantage is that it's limited by the size of your display, so you may not see all the glocks.

-D

Omit DLM status. This may be used to reduce the amount of output for interactive mode.

-n <iterations>

End the program after the specified number of iterations (reports). The default is to keep running until interrupted.

-r

Show resource group reservation information. Normally, glocktop omits resource group reservation information to condense the output. This information is only important when debugging information related to the GFS2 block allocator and file system fragmentation.

-s <freq>

Print glock summary information every <freq> reports. The glock summary information is bulky and often not needed, so it's only printed once every 10 reports. You can eliminate it entirely from the output by specifying a value of 0. If you want the statistics to print after every report, specify freq as 1.

-t

Trace directory path. A lot of GFS2 glock performance problems are caused by an application's contention for one or two directories. These show up as regular inodes in the output, but there's no good way to tell from the output which directory is contended. Ordinarily, glocktop won't try to look up the full pathname of a contended directory because it's slow, especially if there are millions of glocks. This option instructs glocktop to try to determine the full directory path names when it can, so you can tell the full path (within the mount point) of contended directories.

-H

Don't show Held glocks, unless there are also waiters for the lock. Ordinarily, glocktop will show glocks that are held (but not iopen glocks which are almost always held by the thousands) as well as glocks for which there are waiters. If it only showed glocks with waiters, you could see, for example, that a glock is being blocked on one node, but you couldn't see the information for a different node currently holding the lock and thus, blocking the waiter. This option forces glocktop to stop printing information for glocks with no waiters (on that node). The advantage is that the output is smaller and easier to look at. The disadvantage is that you can't see information from the node that's blocking the waiter, unless both waiter and holder are on the same node.

## OUTPUT LINES
@ name

This is the GFS2 file system name for which the information is printed. It also gives the time stamp of the report, and the cluster node name.

G:

This line represents a glock (internode GFS2 lock).

G: s:UN n:2/609b4 f:lIqob t:EX d:EX/0 a:0 v:0 r:3 m:200 (inode)

D:

This line gives you glocktop's interpretation of the glock's state as far as DLM (distributed lock manager) is concerned.

D: Granted PR on node 2 to pid 17511 [python]

H:

This line represents a glock holder: a process that's either holding the glock, or is waiting to hold it. The value after S: represents how this holder needs the lock: EX (Exclusive), SH (Shared), PR (Protected Read), or UN (Unlocked). The value after F: indicates the holder flags: a W indicates the holder is Waiting for the lock to be granted. An H indicates the holder is currently holding the lock.

H: s:EX f:W e:0 p:17511 [python] gfs2_unlink+0x7e/0x250 [gfs2]

U:

These lines represent glocktop's user interpretation of the data, both glock and holder. Lines that begin with (N/A:...) can probably be ignored because they ought to be unimportant: system files such as journals, etc.

U: W inode 183f5 Is:Shared, Want:Exclusive [Demote pending, Reply pending, Queued, Blocking]

U: W ---> waiting pid 17511 [python] (Granted PR on node 2 to pid 17511 [python])

C:

These lines give you the call trace (call stack) of the process that's either holding or waiting to hold the glock.

S

These lines give you the summary of all glocks for this file system: How many of each category are unlocked, locked, how many are held in EX, SH, and DF, and how many are waiting. G Waiting is how many glocks have waiters. P Waiting is how many processes are waiting. Thus, you could have one glock that's got ten processes waiting, or ten glocks that have ten processes waiting.

## EXAMPLE OUTPUT

```
# glocktop
```

```
@ nate_bob1       Wed Jan 27 07:24:14 2016  @host-050

 G:  s:EX n:9/1 f:Iqb t:EX d:EX/0 a:0 v:0 r:2 m:200 (journal)

  D: Granted EX on node 2 to pid 17468 [ended]

  H: s:EX f:eH e:0 p:17468 [(ended)] gfs2_glock_nq_num+0x5b/0xa0 [gfs2]

  U: (N/A:Journl)  H journal    1         Held:Exclusive   [Queued, Blocking]

  U: (N/A:Journl)  H  --->  held by pid 17468 [(ended)]  (Granted EX on node 2 to pid 17468 [ended])

 G:  s:SH n:1/1 f:Iqb t:SH d:EX/0 a:0 v:0 r:2 m:200 (non-disk)

  D: Granted PR on node 2 to pid 17468 [ended]

  H: s:SH f:eEH e:0 p:17468 [(ended)] gfs2_glock_nq_num+0x5b/0xa0 [gfs2]

  U: (N/A:Not EX)  H non-disk   1         Held:Shared   [Queued, Blocking]

  U: (N/A:Not EX)  H  --->  held by pid 17468 [(ended)]  (Granted PR on node 2 to pid 17468 [ended])

 G:  s:EX n:2/181ec f:yIqob t:EX d:EX/0 a:1 v:0 r:3 m:200 (inode)

  D: Granted EX on this node to pid 17468 [ended]

  H: s:EX f:H e:0 p:17468 [(ended)] init_per_node+0x17d/0x280 [gfs2]

  I: n:12/98796 t:8 f:0x00 d:0x00000201 s:24

  U: (N/A:System)  H inode      181ec     Held:Exclusive   [Dirty, Queued, Blocking]

  U: (N/A:System)  H  --->  held by pid 17468 [(ended)]  (Granted EX on this node to pid 17468 [ended])

 G:  s:EX n:2/181ed f:Iqob t:EX d:EX/0 a:0 v:0 r:3 m:200 (inode)

  D: Granted EX on this node to pid 17468 [ended]

  H: s:EX f:H e:0 p:17468 [(ended)] init_per_node+0x1b0/0x280 [gfs2]

  I: n:13/98797 t:8 f:0x00 d:0x00000200 s:1048576

  U: (N/A:System)  H inode      181ed     Held:Exclusive   [Queued, Blocking]

  U: (N/A:System)  H  --->  held by pid 17468 [(ended)]  (Granted EX on this node to pid 17468 [ended])

 G:  s:SH n:2/183f5 f:ldrIqob t:EX d:UN/0 a:0 v:0 r:5 m:10 (inode)

  D: Granted PR on node 2 to pid 17511 [python]

  H: s:EX f:W e:0 p:17511 [python] gfs2_unlink+0x7e/0x250 [gfs2]

  I: n:1/99317 t:4 f:0x00 d:0x00000003 s:2048

  U:  W inode      183f5     Is:Shared, Want:Exclusive   [Demote pending, Reply pending, Queued, Blocking]

  U:  W  --->  waiting pid 17511 [python]  (Granted PR on node 2 to pid 17511 [python])

  C:              gfs2_unlink+0xdc/0x250 [gfs2]

  C:              vfs_unlink+0xa0/0xf0

  C:              do_unlinkat+0x163/0x260

  C:              sys_unlink+0x16/0x20

 G:  s:SH n:2/805b f:Iqob t:SH d:EX/0 a:0 v:0 r:3 m:200 (inode)

  D: Granted PR on node 2 to pid 17468 [ended]

  H: s:SH f:eEcH e:0 p:17468 [(ended)] init_journal+0x185/0x500 [gfs2]

  I: n:5/32859 t:8 f:0x01 d:0x00000200 s:134217728

  U: (N/A:Not EX)  H inode      805b      Held:Shared   [Queued, Blocking]

  U: (N/A:Not EX)  H  --->  held by pid 17468 [(ended)]  (Granted PR on node 2 to pid 17468 [ended])
S    glocks  nondisk    inode    rgrp   iopen   flock quota jrnl    Total
S  --------- ------- -------- ------- ------- ------- ----- ---- --------
S  Unlocked:       1        5       4       0       0     0    0       10
S    Locked:       2      245       6      58       0     0    1      313
S     Total:       3      250      10      58       0     0    1      323
S
S   Held EX:       0        2       0       0       0     0    1        3
S   Held SH:       1        1       0      57       0     0    0       59
S   Held DF:       0        0       0       0       0     0    0        0
S G Waiting:       0        1       0       0       0     0    0        1
S P Waiting:       0        1       0       0       0     0    0        1
S  DLM wait:       0
@ nate_bob0       Wed Jan 27 07:24:14 2016  @host-050

 G:  s:EX n:2/180e9 f:yIqob t:EX d:EX/0 a:1 v:0 r:3 m:200 (inode)

  D: Granted EX on this node to pid 17465 [ended]

  H: s:EX f:H e:0 p:17465 [(ended)] init_per_node+0x17d/0x280 [gfs2]

  I: n:9/98537 t:8 f:0x00 d:0x00000201 s:24

  U: (N/A:System)  H inode      180e9     Held:Exclusive   [Dirty, Queued, Blocking]

  U: (N/A:System)  H  --->  held by pid 17465 [(ended)]  (Granted EX on this node to pid 17465 [ended])

 G:  s:UN n:2/609b4 f:lIqob t:EX d:EX/0 a:0 v:0 r:3 m:200 (inode)

  D: Granted EX on node 2 to pid 14367 [ended]

  H: s:EX f:W e:0 p:16297 [delete_workqueu] gfs2_delete_inode+0x9d/0x450 [gfs2]

  U:  W inode      609b4     Is:Unlocked, Want:Exclusive   [Queued, Blocking]

  U:  W  --->  waiting pid 16297 [delete_workqueu]  (Granted EX on node 2 to pid 14367 [ended])

  C:              gfs2_delete_inode+0xa5/0x450 [gfs2]

  C:              generic_delete_inode+0xde/0x1d0

  C:              generic_drop_inode+0x65/0x80

  C:              gfs2_drop_inode+0x37/0x40 [gfs2]

 G:  s:SH n:2/19 f:Iqob t:SH d:EX/0 a:0 v:0 r:3 m:200 (inode)

  D: Granted PR on this node to pid 17465 [ended]

  H: s:SH f:eEcH e:0 p:17465 [(ended)] init_journal+0x185/0x500 [gfs2]

  I: n:4/25 t:8 f:0x01 d:0x00000200 s:134217728

  U: (N/A:Not EX)  H inode      19        Held:Shared   [Queued, Blocking]

  U: (N/A:Not EX)  H  --->  held by pid 17465 [(ended)]  (Granted PR on this node to pid 17465 [ended])

 G:  s:EX n:2/180ea f:Iqob t:EX d:EX/0 a:0 v:0 r:3 m:200 (inode)

  D: Granted EX on this node to pid 17465 [ended]

  H: s:EX f:H e:0 p:17465 [(ended)] init_per_node+0x1b0/0x280 [gfs2]

  I: n:10/98538 t:8 f:0x00 d:0x00000200 s:1048576

  U: (N/A:System)  H inode      180ea     Held:Exclusive   [Queued, Blocking]

  U: (N/A:System)  H  --->  held by pid 17465 [(ended)]  (Granted EX on this node to pid 17465 [ended])

 G:  s:EX n:9/0 f:Iqb t:EX d:EX/0 a:0 v:0 r:2 m:200 (journal)

  D: Granted EX on this node to pid 17465 [ended]

  H: s:EX f:eH e:0 p:17465 [(ended)] gfs2_glock_nq_num+0x5b/0xa0 [gfs2]

  U: (N/A:Journl)  H journal    0         Held:Exclusive   [Queued, Blocking]

  U: (N/A:Journl)  H  --->  held by pid 17465 [(ended)]  (Granted EX on this node to pid 17465 [ended])

 G:  s:UN n:2/4fe12 f:ldIqob t:EX d:UN/0 a:0 v:0 r:4 m:10 (inode)

  H: s:EX f:W e:0 p:17523 [python] gfs2_rename+0x344/0x8b0 [gfs2]

  H: s:SH f:AW e:0 p:17527 [python] gfs2_permission+0x176/0x210 [gfs2]

  U:  W inode      4fe12     Is:Unlocked, Want:Exclusive   [Demote pending, Queued, Blocking]

  U:  W  --->  waiting pid 17523 [python]

  C:              gfs2_permission+0x17f/0x210 [gfs2]

  C:              __link_path_walk+0xb3/0x1000

  C:              path_walk+0x6a/0xe0

  C:              filename_lookup+0x6b/0xc0

  U:  W  --->  waiting pid 17527 [python]

  C:              do_unlinkat+0x107/0x260

  C:              sys_unlink+0x16/0x20

  C:              system_call_fastpath+0x16/0x1b

  C:              0xffffffffffffffff

 G:  s:SH n:1/1 f:Iqb t:SH d:EX/0 a:0 v:0 r:2 m:200 (non-disk)

  D: Granted PR on node 2 to pid 14285 [ended]

  D: Granted PR on this node to pid 17465 [ended]

  H: s:SH f:eEH e:0 p:17465 [(ended)] gfs2_glock_nq_num+0x5b/0xa0 [gfs2]

  U: (N/A:Not EX)  H non-disk   1         Held:Shared   [Queued, Blocking]

  U: (N/A:Not EX)  H  --->  held by pid 17465 [(ended)]  (Granted PR on node 2 to pid 14285 [ended]) (Granted PR on this node to pid 17465 [ended])
S    glocks  nondisk    inode    rgrp   iopen   flock quota jrnl    Total
S  --------- ------- -------- ------- ------- ------- ----- ---- --------
S  Unlocked:       1        8       7       0       0     0    0       16
S    Locked:       2      208       3      41       0     0    1      256
S     Total:       3      216      10      41       0     0    1      272
S
S   Held EX:       0        2       0       0       0     0    1        3
S   Held SH:       1        1       0      41       0     0    0       43
S   Held DF:       0        0       0       0       0     0    0        0
S G Waiting:       0        2       0       0       0     0    0        2
S P Waiting:       0        3       0       0       0     0    0        3
S  DLM wait:       0
```

```

```

From this example output, we can see there are two GFS2 file systems mounted on system host-050: nate_bob1 and nate_bob0. In nate_bob1, we can see six glocks, but we can ignore all of them marked (N/A:...) because they are system files or held in SHared mode, and therefore other nodes should be able to hold the lock in SHared as well.

There is one glock, for inode 183f5, which is has a process waiting to hold it. The lock is currently in SHared mode (s:SH on the G: line) but process 17511 (python) wants to hold the lock in EXclusive mode (S:EX on the H: line). That process has a call stack that indicates it is trying to hold the glock from gfs2_unlink. The DLM says the lock is currently granted on node 2 in PR (Protected Read) mode.

For file system nate_bob0, there are 7 glocks listed. All but two are uninteresting. Locks 2/609b4 and 2/4fe12 have processes waiting to hold them.

In the summary data for nate_bob0, you can see there are 3 processes waiting for 2 inode glocks (so one of those glocks has multiple processes waiting).

Since DLM wait is 0 in the summary data for both GFS2 mount points, nobody is waiting for DLM to grant the lock.

## KNOWN BUGS AND LIMITATIONS
Since the GFS2 debugfs files are completely separate from the DLM debugfs files, and locks can change status in a few nanoseconds time, there will always be a lag between the GFS2 view of a lock and the DLM view of a lock. If there is some kind of long-term hang, they are more likely to match. However, under ordinary conditions, by the time glocktop gets around to fetching the DLM status of a lock, the information has changed. Therefore, don't be surprised if the DLM's view of a lock is at odds with its glock.

Since iopen glocks are held by the thousands, glocktop skips most of the information related to them unless there's a waiter. For that reason, iopen lock problems may be difficult to debug with glocktop.

It doesn't handle very large numbers (millions) of glocks.


title: mkfs.gfs2(8)

text:
# mkfs.gfs2(8)

## NAME
mkfs.gfs2 - create a gfs2 filesystem

## SYNOPSIS
mkfs.gfs2 [options] device [block-count]

## DESCRIPTION
mkfs.gfs2 is used to create a gfs2 file system.

## OPTIONS
The default values of the following options have been chosen for best results. In most cases, there should be no need to choose different values. The exceptions to this are the number of journals (-j) and the lock table (-t), as these options will be specific to your cluster.

-b bytes

Set the filesystem block size to bytes which must be a power of two. The minimum block size is 512 and the block size cannot exceed the machine's memory page size, which on most architectures is 4096 bytes. The default block size is 4096 bytes.

-c megabytes

Initial size of each journal's quota change file. The default is 1MB.

-D

Enable debugging output.

-h

Print out a help message describing the available options, then exit.

-J megabytes

The size of each journal. The minimum size is 8 megabytes and the maximum is 1024. If this is not specified, a value based on a sensible proportion of the file system will be chosen.

-j journals

The number of journals for mkfs.gfs2 to create. At least one journal is required for each machine that will mount the filesystem concurrently. If this option is not specified, only one journal will be created. This number may be used as an indicator of the number of nodes in the cluster in order to optimize the layout of the filesystem. As such, it is best to set this option with the maximum number of mounters in mind than to add more journals later.

-K

Do not attempt to discard the block device contents. Issuing discards to the device allows some solid state devices and sparse or thin-provisioned storage devices to optimise free space. Other devices may emulate this behaviour by zeroing the device contents, which can be a slow process.

-O

Override. This option prevents mkfs.gfs2 from asking for confirmation before writing the filesystem.

-o

Specify extended options. Multiple options can be separated by commas. Valid extended options are:

help

Display an extended options help summary, then exit.

sunit=bytes

This is used to specify the stripe unit for a RAID device or striped logical volume. This option ensures that resource groups will be stripe unit aligned and overrides the stripe unit value obtained by probing the device. This value must be a multiple of the file system block size and must be specified with the swidth option.

swidth=bytes

This is used to specify the stripe width for a RAID device or striped logical volume. This option ensures that resource groups will be stripe aligned and overrides the stripe width value obtained by probing the device. This value must be a multiple of the sunit option and must also be specified with it.

align=[0|1]

Disable or enable the alignment of resource groups. The default behaviour is to align resource groups to the stripe width and stripe unit values obtained from probing the device or specified with the swidth and sunit extended options.

format=<number>

Set the filesystem format version. Testing only.

-p protocol

Specify the locking protocol to use when no locking protocol is specified at mount time. Valid locking protocols are:

lock_dlm

This is the default. It enables DLM-based locking for use in shared storage configurations.

lock_nolock

This enables single-node locking

-q

Quiet mode. Do not print anything.

-r megabytes

mkfs.gfs2 will try to make resource groups approximately this large. The minimum resource group size is 32 MB and the maximum is 2048 MB. A large resource group size may increase performance on very large file systems. If not specified, mkfs.gfs2 will choose the resource group size based on the size and alignment characteristics of the target device.

-t clustername:lockspace

The "lock table" pair used to uniquely identify this filesystem in a cluster. The cluster name segment (maximum 32 characters) must match the name given to your cluster in its configuration; only members of this cluster are permitted to use this file system. The lockspace segment (maximum 30 characters) is a unique file system name used to distinguish this gfs2 file system. Valid clusternames and lockspaces may only contain alphanumeric characters, hyphens (-) and underscores (_).

-U UUID

Specify the filesystem UUID. The argument must be string of hexadecimal digits separated by hyphens, of the form "1b4e28ba-2fa1-11d2-883f-b9a761bde3fb". If this option is omitted, the filesystem's UUID is randomly generated. Note that no attempt is made to prevent UUID clashes between filesystems.

-V

Print program version information, then exit.

block-count

Use block-count as the size of the filesystem instead of using the whole device. block-count is specified as a number of filesystem blocks.

## EXAMPLE

```
# mkfs.gfs2 -t mycluster:mygfs2 -p lock_dlm -j 2 /dev/vg0/lv_gfs2
```

```
This will create a gfs2 filesystem on the block device /dev/vg0/lv_gfs2.  It
will belong to a cluster named "mycluster" and use the "mygfs2" lock space.  It
will use DLM for locking and create journals for a two-node cluster.
```

```
# mkfs.gfs2 -t mycluster:mygfs2 -p lock_nolock -j 3 /dev/vg0/lv_gfs2
```

```
This will create a filesystem on the block device /dev/vg0/lv_gfs2.  It
will belong to a cluster named "mycluster" and use the "mygfs2" lockspace, but
it will have no cluster locking by default as lock_nolock is used.  It will
have journals for a three-node cluster.
```

```

```

## SEE ALSO
gfs2(5), gfs2_jadd(8), gfs2_grow(8)


title: tunegfs2(8)

text:
# tunegfs2(8)

## NAME
tunegfs2 - View and manipulate gfs2 superblocks

## SYNOPSIS
tunegfs2 [OPTIONS] /dev/blockdevice

## DESCRIPTION
tunegfs2 allows viewing and manipulating the values contained in a GFS or GFS2 superblock. It is able to modify the UUID (on GFS2 only), label, lockproto and locktable.

The values in the GFS2 superblock are read only on mount. Any changes on a live filesystem will not take effect until the next time it is mounted. Making changes on a live filesystem is not recommended for this reason.

## OPTIONS
-h

Prints out usage information for this command.

-l

List contents of the filesystem superblock. Includes the current values of the parameters that can be set by this program.

-L <label>

Change the filesystem label. Note that the GFS2 filesystem label is also the locktable name.

-o [lockproto=<proto>] [locktable=<table>]

Set mount options. Currently supported options include lockproto and locktable

-U <uuid>

Set the filesystem UUID

-V

Print out the information on the version of the tool.

-r <version>

Set the filesystem format version.

## SEE ALSO
gfs2(5)


ggaoectl

package: ggaoed

title: ggaoectl(8)

summary: command-line interface for ggaoed

text:
# ggaoectl(8)

## NAME
ggaoectl - command-line interface for ggaoed

## SYNOPSIS

ggaoectl

[-c file | --config file] reload

ggaoectl

[-c file | --config file] monitor [interval] [name]…

ggaoectl

[-c file | --config file] stats [name]…

ggaoectl

[-c file | --config file] show-config [name]…

ggaoectl

[-c file | --config file] show-macmask [name]…

ggaoectl

[-c file | --config file] show-reserve [name]…

ggaoectl

[-c file | --config file] clear-stats [name]…

ggaoectl

[-c file | --config file] clear-config name …

ggaoectl

[-c file | --config file] clear-macmask name …

ggaoectl

[-c file | --config file] clear-reserve name …

ggaoectl

{-h | --help}

ggaoectl

{-V | --version}

## DESCRIPTION
ggaoectl is an AoE target. It allows exporting files and block devices over the network using the ATA over Ethernet protocol.

## OPTIONS
-c file--config file

Use the specified config file instead of /etc/ggaoed.conf. The location of the daemon's control socket is read from this config file.

-h--help

Show a short help text.

-V--version

Print the version number and exit.

## COMMANDS
reload

Tell ggaoed to reload its configuration file. This is the same as sending a SIGHUP signal to ggaoed.

monitor interval name

Monitor the performance of devices and/or network interfaces. If no name parameters are given, all devices and interfaces are monitored; otherwise only the named ones are monitored. If the firt argument is a number, it is interpreted as the time in seconds to wait between measurements. See below the section about the description of the output.

stats name

Dump the detailed statistics for the specified devices and/or network interfaces. If no name parameters are given, all devices and interfaces are dumped. See below the section about the description of the output.

show-config name

Dump the AoE configuration info for the specified devices. The AoE configuration info is an arbitrary block of data with a maximum length of 1024. AoE initiators can manipulate and query this data according their needs. This command dumps the current value in both hexadecimal and string format.

show-macmask name

Dump the AoE MAC Mask list for the specified devices. The AoE MAC Mask list is the dynamic equivalent of ggaoed's ACLs. This command shows the MAC addresses currently on the list.

show-reserve name

Dump the AoE Reserve/Release list for the specified devices. The AoE Reserve/Release list can be used by Windows clients to provide cluster fencing support. This command shows the MAC addresses that are on the reserve list.

clear-stats name

Clear the device/interface statistics by setting all the counters to zero.

clear-config name

Clear the AoE configuration space of the specified device(s).

clear-macmask name

Clear the AoE MAC Mask list of the specified device(s).

clear-reserve name

Clear the AoE Reserve list of the specified device(s).

For all the commands mentioned above, name can also contain glob-like metacharacters; if so, make sure to properly escape them from the shell.

## MONITOR OUTPUT
The monitor command prints the following output fields for disks:

rrqm/s

Number of read requests per second.

rkB/s

Kilobytes read per second.

wrqm/s

Number of write requests per second.

wkB/s

Kilobytes written per second.

oth

Number of other (not read/write) requests.

avgqsz

Average queue length (number of I/O requests being processed).

qs

Number of queue stalls when the kernel refused to accept more I/O requests.

qf

Number of times the queue was full.

ae

Number of read/write errors.

pe

Number of AoE protocol errors.

svctm

Average request servicing time in milliseconds.

For network interfaces, the following fields are printed:

rrqm/s

Number of read requests per second.

rkB/s

Kilobytes read per second.

wrqm/s

Number of write requests per second.

wkB/s

Kilobytes written per second.

drp

Number of packets dropped by the network stack.

avrun

Average number of packets processed in a batch.

## STATISTICS
The stats command prints the following output fields for disks:

read_cnt

Number of read requests.

read_bytes

Total number of bytes read.

read_time

Sum of the servicing time for read requests. Divide by read_cnt to get the average time needed to service a read request.

write_cnt

Number of write requests.

write_bytes

Total number of bytes written.

write_time

Sum of the servicing time for write requests. Divide by write_cnt to get the average time needed to service a write request.

other_cnt

Number of all requests except ATA read/write ones.

other_time

Sum of the servicing time for request times except ATA read/write.

io_slots

Number of I/O slots submitted so far. Dividing the sum of read_cnt and write_cnt by io_slots gives the average number of incoming requests merged into a single I/O request.

io_runs

Number of times any I/O have been submitted.

queue_length

Sum of the queue length at the time a new request was accepted. Divide by the sum of read_cnt, write_cnt and other_cnt to get the average queue length.

queue_stall

Number of queue stalls when the kernel refused to submit more I/O for the device.

queue_over

Number of times the length of the queue was over the configured limit. This can happen if the initiator (client) retransmits requests before ggaoed could process them.

ata_err

Number of read/write errors.

proto_err

Number of AoE protocol errors.

The following information is available for network interfaces:

rx_cnt

Number of packets received.

rx_bytes

Total number of bytes received.

rx_runs

Number of times one or more packets were received in a batch.

tx_cnt

Number of packets sent.

tx_bytes

Total number of bytes sent.

tx_runs

Number of times one or more packets were sent out in a batch.

rx_buffers_full

Number of times the receiving ring buffer was full. If it happens frequently the ring buffer is likely too small.

tx_buffers_full

Number of times the sending ring buffer was full and the request had to be deferred.

dropped

Number of packets dropped by the networking stack.

ignored

Number of packets ignored because either they were not valid AoE requests or were not addressed to us.

broadcast

Number of broadcast requests processed.

## FILES
/etc/ggaoed.conf

## SEE ALSO
AoEr11 (ATA over Ethernet, revision 11), ggaoed(8), ggaoed.conf(5)

## AUTHOR
Gábor Gombás <gombasg@digikabel.hu>


ggaoed

title: ggaoed(8)

summary: GG's AoE target

text:
# ggaoed(8)

## NAME
ggaoed - GG's AoE target

## SYNOPSIS

ggaoed

[-c file | --config file] [-d | --debug] [-n | --nofork]

ggaoed

{-h | --help}

ggaoed

{-V | --version}

## DESCRIPTION
ggaoed is an AoE target. It allows exporting files and block devices over the network using the ATA over Ethernet protocol.

## OPTIONS
-c file--config file

Use the specified config file instead of /etc/ggaoed.conf.

-d--debug

Debug mode: do not fork to the background, send all output to stderr istead of syslog, and turn on I/O tracing by default.

-h--help

Show a short help text.

-n--nofork

Do not fork to the background. Useful if you want to run ggaoed under a debugger.

-V--version

Print the version number and exit.

## SIGNALS
When ggaoed receives a SIGHUP signal, it re-reads its configuration file. Devices that are no longer present in the configuration are unexported, and new devices are exported.

## DEPENDENCIES
ggaoed requires at least Linux kernel 2.6.27 with eventfd(2), timerfd and epoll(2) support enabled.

## FILES
/etc/ggaoed.conf

## SEE ALSO
ggaoed.conf(5), ggaoectl(8)

## AUTHOR
Gábor Gombás <gombasg@digikabel.hu>


title: gluster-setgfid2path(8)

text:
# gluster-setgfid2path(8)

## NAME
gluster-setgfid2path - Gluster tool to set GFID to Path xattrs

## SYNOPSIS
gluster-setgfid2path file

## DESCRIPTION
New feature introduced with Gluster release 3.12, to find full path from GFID. This feature can be enabled using Volume set command gluster volume set <VOLUME> storage.gfid2path enable

Once gfid2path feature is enabled, it starts recording the necessary xattrs required for the feature. But it will not add xattrs for the already existing files. This tool provides facility to update the gfid2path xattrs for the given file path.

## EXAMPLES
To add xattrs of a single file,

```
gluster-setgfid2path /bricks/b1/hello.txt
```

```

```

To set xattr for all the existing files, run the below script on each bricks.

```
BRICK=/bricks/b1
find $BRICK -type d \( -path "${BRICK}/.trashcan" -o -path \

    "${BRICK}/.glusterfs" \) -prune -o -type f \

    -exec gluster-setgfid2path {} \;
```

```

```

## SEE ALSO

```
gluster(8)
```

## COPYRIGHT

```
Copyright(c) 2017   Red Hat, Inc.   <http://www.redhat.com>
```


gluster

title: gluster(8)

text:
# gluster(8)

## NAME
gluster - Gluster Console Manager (command line utility)

## SYNOPSIS
gluster

To run the program and display gluster prompt:

gluster [--remote-host=<gluster_node>] [--mode=script] [--xml]

(or)

To specify a command directly:

gluster [commands] [options] [--remote-host=<gluster_node>] [--mode=script] [--xml]

## DESCRIPTION
The Gluster Console Manager is a command line utility for elastic volume management. You can run the gluster command on any export server. The command enables administrators to perform cloud operations, such as creating, expanding, shrinking, rebalancing, and migrating volumes without needing to schedule server downtime.

## COMMANDS

### Volume Commands
volume info [all|<VOLNAME>]

Display information about all volumes, or the specified volume.

volume list

List all volumes in cluster

volume status [all | <VOLNAME> [nfs|shd|<BRICK>|quotad]] [detail|clients|mem|inode|fd|callpool|tasks|client-list]

Display status of all or specified volume(s)/brick

volume create <NEW-VOLNAME> [stripe <COUNT>] [[replica <COUNT> [arbiter <COUNT>]]|[replica 2 thin-arbiter 1]] [disperse [<COUNT>]] [disperse-data <COUNT>] [redundancy <COUNT>] [transport <tcp|rdma|tcp,rdma>] <NEW-BRICK> ... <TA-BRICK>

Create a new volume of the specified type using the specified bricks and transport type (the default transport type is tcp). To create a volume with both transports (tcp and rdma), give 'transport tcp,rdma' as an option.

volume delete <VOLNAME>

Delete the specified volume.

volume start <VOLNAME>

Start the specified volume.

volume stop <VOLNAME> [force]

Stop the specified volume.

volume set <VOLNAME> <OPTION> <PARAMETER> [<OPTION> <PARAMETER>] ...

Set the volume options.

volume get <VOLNAME/all> <OPTION/all>

Get the value of the all options or given option for volume <VOLNAME> or all option. gluster volume get all all is to get all global options

volume reset <VOLNAME> [option] [force]

Reset all the reconfigured options

volume barrier <VOLNAME> {enable|disable}

Barrier/unbarrier file operations on a volume

volume clear-locks <VOLNAME> <path> kind {blocked|granted|all}{inode [range]|entry [basename]|posix [range]}

Clear locks held on path

volume help

Display help for the volume command.

### Brick Commands
volume add-brick <VOLNAME> <NEW-BRICK> ...

Add the specified brick to the specified volume.

volume remove-brick <VOLNAME> <BRICK> ...

Remove the specified brick from the specified volume.

Note: If you remove the brick, the data stored in that brick will not be available. You can migrate data from one brick to another using replace-brick option.

volume reset-brick <VOLNAME> <SOURCE-BRICK> {{start} | {<NEW-BRICK> commit}}

Brings down or replaces the specified source brick with the new brick.

volume replace-brick <VOLNAME> <SOURCE-BRICK> <NEW-BRICK> commit force

Replace the specified source brick with a new brick.

volume rebalance <VOLNAME> start

Start rebalancing the specified volume.

volume rebalance <VOLNAME> stop

Stop rebalancing the specified volume.

volume rebalance <VOLNAME> status

Display the rebalance status of the specified volume.

### Log Commands
volume log <VOLNAME> rotate [BRICK]

Rotate the log file for corresponding volume/brick.

volume profile <VOLNAME> {start|info [peek|incremental [peek]|cumulative|clear]|stop} [nfs]

Profile operations on the volume. Once started, volume profile <volname> info provides cumulative statistics of the FOPs performed.

volume top <VOLNAME> {open|read|write|opendir|readdir|clear} [nfs|brick <brick>] [list-cnt <value>] | {read-perf|write-perf} [bs <size> count <count>] [brick <brick>] [list-cnt <value>]

Generates a profile of a volume representing the performance and bottlenecks/hotspots of each brick.

volume statedump <VOLNAME> [[nfs|quotad] [all|mem|iobuf|callpool|priv|fd|inode|history]... | [client <hostname:process-id>]]

Dumps the in memory state of the specified process or the bricks of the volume.

volume sync <HOSTNAME> [all|<VOLNAME>]

Sync the volume information from a peer

### Peer Commands
peer probe <HOSTNAME>

Probe the specified peer. In case the <HOSTNAME> given belongs to an already probed peer, the peer probe command will add the hostname to the peer if required.

peer detach <HOSTNAME>

Detach the specified peer.

peer status

Display the status of peers.

pool list

List all the nodes in the pool (including localhost)

peer help

Display help for the peer command.

### Quota Commands
volume quota <VOLNAME> enable

Enable quota on the specified volume. This will cause all the directories in the filesystem hierarchy to be accounted and updated thereafter on each operation in the the filesystem. To kick start this accounting, a crawl is done over the hierarchy with an auxiliary client.

volume quota <VOLNAME> disable

Disable quota on the volume. This will disable enforcement and accounting in the filesystem. Any configured limits will be lost.

volume quota <VOLNAME> limit-usage <PATH> <SIZE> [<PERCENT>]

Set a usage limit on the given path. Any previously set limit is overridden to the new value. The soft limit can optionally be specified (as a percentage of hard limit). If soft limit percentage is not provided the default soft limit value for the volume is used to decide the soft limit.

volume quota <VOLNAME> limit-objects <PATH> <SIZE> [<PERCENT>]

Set an inode limit on the given path. Any previously set limit is overridden to the new value. The soft limit can optionally be specified (as a percentage of hard limit). If soft limit percentage is not provided the default soft limit value for the volume is used to decide the soft limit.

NOTE: valid units of SIZE are : B, KB, MB, GB, TB, PB. If no unit is specified, the unit defaults to bytes.

volume quota <VOLNAME> remove <PATH>

Remove any usage limit configured on the specified directory. Note that if any limit is configured on the ancestors of this directory (previous directories along the path), they will still be honored and enforced.

volume quota <VOLNAME> remove-objects <PATH>

Remove any inode limit configured on the specified directory. Note that if any limit is configured on the ancestors of this directory (previous directories along the path), they will still be honored and enforced.

volume quota <VOLNAME> list <PATH>

Lists the usage and limits configured on directory(s). If a path is given only the limit that has been configured on the directory(if any) is displayed along with the directory's usage. If no path is given, usage and limits are displayed for all directories that has limits configured.

volume quota <VOLNAME> list-objects <PATH>

Lists the inode usage and inode limits configured on directory(s). If a path is given only the limit that has been configured on the directory(if any) is displayed along with the directory's inode usage. If no path is given, usage and limits are displayed for all directories that has limits configured.

volume quota <VOLNAME> default-soft-limit <PERCENT>

Set the percentage value for default soft limit for the volume.

volume quota <VOLNAME> soft-timeout <TIME>

Set the soft timeout for the volume. The interval in which limits are retested before the soft limit is breached.

volume quota <VOLNAME> hard-timeout <TIME>

Set the hard timeout for the volume. The interval in which limits are retested after the soft limit is breached.

volume quota <VOLNAME> alert-time <TIME>

Set the frequency in which warning messages need to be logged (in the brick logs) once soft limit is breached.

volume inode-quota <VOLNAME> enable/disable

Enable/disable inode-quota for <VOLNAME>

volume quota help

Display help for volume quota commands

NOTE: valid units of time and their symbols are : hours(h/hr), minutes(m/min), seconds(s/sec), weeks(w/wk), Days(d/days).

### Geo-replication Commands
Note: password-less ssh, from the primary node (where these commands are executed) to the secondary node <SECONDARY_HOST>, is a prerequisite for the geo-replication commands.

system:: execute gsec_create

Generates pem keys which are required for push-pem

volume geo-replication <PRIMARY_VOL> <SECONDARY_HOST>::<SECONDARY_VOL> create [[ssh-port n][[no-verify]|[push-pem]]] [force]

Create a new geo-replication session from <PRIMARY_VOL> to <SECONDARY_HOST> host machine having <SECONDARY_VOL>. Use ssh-port n if custom SSH port is configured in secondary nodes. Use no-verify if the rsa-keys of nodes in primary volume is distributed to secondary nodes through an external agent. Use push-pem to push the keys automatically.

volume geo-replication <PRIMARY_VOL> <SECONDARY_HOST>::<SECONDARY_VOL> {start|stop} [force]

Start/stop the geo-replication session from <PRIMARY_VOL> to <SECONDARY_HOST> host machine having <SECONDARY_VOL>.

volume geo-replication [<PRIMARY_VOL> [<SECONDARY_HOST>::<SECONDARY_VOL>]] status [detail]

Query status of the geo-replication session from <PRIMARY_VOL> to <SECONDARY_HOST> host machine having <SECONDARY_VOL>.

volume geo-replication <PRIMARY_VOL> <SECONDARY_HOST>::<SECONDARY_VOL> {pause|resume} [force]

Pause/resume the geo-replication session from <PRIMARY_VOL> to <SECONDARY_HOST> host machine having <SECONDARY_VOL>.

volume geo-replication <PRIMARY_VOL> <SECONDARY_HOST>::<SECONDARY_VOL> delete [reset-sync-time]

Delete the geo-replication session from <PRIMARY_VOL> to <SECONDARY_HOST> host machine having <SECONDARY_VOL>. Optionally you can also reset the sync time in case you need to resync the entire volume on session recreate.

volume geo-replication <PRIMARY_VOL> <SECONDARY_HOST>::<SECONDARY_VOL> config [[!]<options> [<value>]]

View (when no option provided) or set configuration for this geo-replication session. Use "!<OPTION>" to reset option <OPTION> to default value.

### Bitrot Commands
volume bitrot <VOLNAME> {enable|disable}

Enable/disable bitrot for volume <VOLNAME>

volume bitrot <VOLNAME> signing-time <time-in-secs>

Waiting time for an object after last fd is closed to start signing process.

volume bitrot <VOLNAME> signer-threads <count>

Number of signing process threads. Usually set to number of available cores.

volume bitrot <VOLNAME> scrub-throttle {lazy|normal|aggressive}

Scrub-throttle value is a measure of how fast or slow the scrubber scrubs the filesystem for volume <VOLNAME>

volume bitrot <VOLNAME> scrub-frequency {hourly|daily|weekly|biweekly|monthly}

Scrub frequency for volume <VOLNAME>

volume bitrot <VOLNAME> scrub {pause|resume|status|ondemand}

Pause/Resume scrub. Upon resume, scrubber continues where it left off. status option shows the statistics of scrubber. ondemand option starts the scrubbing immediately if the scrubber is not paused or already running.

volume bitrot help

Display help for volume bitrot commands

### Snapshot Commands
snapshot create <snapname> <volname> [no-timestamp] [description <description>] [force]

Creates a snapshot of a GlusterFS volume. User can provide a snap-name and a description to identify the snap. Snap will be created by appending timestamp in GMT. User can override this behaviour using "no-timestamp" option. The description cannot be more than 1024 characters. To be able to take a snapshot, volume should be present and it should be in started state.

snapshot restore <snapname>

Restores an already taken snapshot of a GlusterFS volume. Snapshot restore is an offline activity therefore if the volume is online (in started state) then the restore operation will fail. Once the snapshot is restored it will not be available in the list of snapshots.

snapshot clone <clonename> <snapname>

Create a clone of a snapshot volume, the resulting volume will be GlusterFS volume. User can provide a clone-name. To be able to take a clone, snapshot should be present and it should be in activated state.

snapshot delete ( all | <snapname> | volume <volname> )

If snapname is specified then mentioned snapshot is deleted. If volname is specified then all snapshots belonging to that particular volume is deleted. If keyword *all* is used then all snapshots belonging to the system is deleted.

snapshot list [volname]

Lists all snapshots taken. If volname is provided, then only the snapshots belonging to that particular volume is listed.

snapshot info [snapname | (volume <volname>)]

This command gives information such as snapshot name, snapshot UUID, time at which snapshot was created, and it lists down the snap-volume-name, number of snapshots already taken and number of snapshots still available for that particular volume, and the state of the snapshot. If snapname is specified then info of the mentioned snapshot is displayed. If volname is specified then info of all snapshots belonging to that volume is displayed. If both snapname and volname is not specified then info of all the snapshots present in the system are displayed.

snapshot status [snapname | (volume <volname>)]

This command gives status of the snapshot. The details included are snapshot brick path, volume group(LVM details), status of the snapshot bricks, PID of the bricks, data percentage filled for that particular volume group to which the snapshots belong to, and total size of the logical volume. If snapname is specified then status of the mentioned snapshot is displayed. If volname is specified then status of all snapshots belonging to that volume is displayed. If both snapname and volname is not specified then status of all the snapshots present in the system are displayed.

snapshot config [volname] ([snap-max-hard-limit <count>] [snap-max-soft-limit <percent>]) | ([auto-delete <enable|disable>]) | ([activate-on-create <enable|disable>])

Displays and sets the snapshot config values. snapshot config without any keywords displays the snapshot config values of all volumes in the system. If volname is provided, then the snapshot config values of that volume is displayed.

Snapshot config command along with keywords can be used to change the existing config values. If volname is provided then config value of that volume is changed, else it will set/change the system limit.

snap-max-soft-limit and auto-delete are global options, that will be inherited by all volumes in the system and cannot be set to individual volumes.

snap-max-hard-limit can be set globally, as well as per volume. The lowest limit between the global system limit and the volume specific limit, becomes the "Effective snap-max-hard-limit" for a volume.

snap-max-soft-limit is a percentage value, which is applied on the "Effective snap-max-hard-limit" to get the "Effective snap-max-soft-limit".

When auto-delete feature is enabled, then upon reaching the "Effective snap-max-soft-limit", with every successful snapshot creation, the oldest snapshot will be deleted.

When auto-delete feature is disabled, then upon reaching the "Effective snap-max-soft-limit", the user gets a warning with every successful snapshot creation.

When auto-delete feature is disabled, then upon reaching the "Effective snap-max-hard-limit", further snapshot creations will not be allowed.

activate-on-create is disabled by default. If you enable activate-on-create, then further snapshot will be activated during the time of snapshot creation.

snapshot activate <snapname>

Activates the mentioned snapshot. Note : By default the snapshot is activated during snapshot creation.

snapshot deactivate <snapname>

Deactivates the mentioned snapshot.

snapshot help

Display help for the snapshot commands.

### Self-heal Commands
volume heal <VOLNAME>

Triggers index self heal for the files that need healing.

volume heal <VOLNAME> [enable | disable]

Enable/disable self-heal-daemon for volume <VOLNAME>.

volume heal <VOLNAME> full

Triggers self heal on all the files.

volume heal <VOLNAME> info

Lists the files that need healing.

volume heal <VOLNAME> info split-brain

Lists the files which are in split-brain state.

volume heal <VOLNAME> statistics

Lists the crawl statistics.

volume heal <VOLNAME> statistics heal-count

Displays the count of files to be healed.

volume heal <VOLNAME> statistics heal-count replica <HOSTNAME:BRICKNAME>

Displays the number of files to be healed from a particular replica subvolume to which the brick <HOSTNAME:BRICKNAME> belongs.

volume heal <VOLNAME> split-brain bigger-file <FILE>

Performs healing of <FILE> which is in split-brain by choosing the bigger file in the replica as source.

volume heal <VOLNAME> split-brain source-brick <HOSTNAME:BRICKNAME>

Selects <HOSTNAME:BRICKNAME> as the source for all the files that are in split-brain in that replica and heals them.

volume heal <VOLNAME> split-brain source-brick <HOSTNAME:BRICKNAME> <FILE>

Selects the split-brained <FILE> present in <HOSTNAME:BRICKNAME> as source and completes heal.

### Other Commands
get-state [<daemon>] [[odir </path/to/output/dir/>] [file <filename>]] [detail|volumeoptions]

Get local state representation of mentioned daemon and store data in provided path information

help

Display the command options.

quit

Exit the gluster command line interface.

## FILES
/var/lib/glusterd/*

## SEE ALSO

```
fusermount(1), mount.glusterfs(8), glusterfs(8), glusterd(8)
```

## COPYRIGHT

```
Copyright(c) 2006-2011  Gluster, Inc.  <http://www.gluster.com>
```


glusterfs

title: glusterfs(8)

summary: clustered file system

text:
# glusterfs(8)

## NAME
GlusterFS - clustered file system

## SYNOPSIS
glusterfs [options] [mountpoint]

## DESCRIPTION
GlusterFS is a clustered file system, capable of scaling to several peta-bytes. It aggregates various storage bricks over Infiniband RDMA or TCP/IP and interconnect into one large parallel network file system. Storage bricks can be made of any commodity hardware, such as x86-64 server with SATA-II RAID and Infiniband HBA.

GlusterFS is fully POSIX compliant file system. On client side, it has dependency on FUSE package, on server side, it works seemlessly on different operating systems. Currently supported on GNU/Linux and Solaris.

## OPTIONS

### Basic options
-f, --volfile=VOLUME-FILE

File to use as VOLUME-FILE.

-l, --log-file=LOGFILE

File to use for logging (the default is <INSTALL-DIR>/var/log/glusterfs/<MOUNT-POINT>.log).

-L, --log-level=LOGLEVEL

Logging severity. Valid options are TRACE, DEBUG, INFO, WARNING, ERROR and CRITICAL (the default is INFO).

-s, --volfile-server=SERVER

Server to get the volume from. This option overrides --volfile option.

--volfile-max-fetch-attempts=MAX-ATTEMPTS

Maximum number of connect attempts to server. This option should be provided with --volfile-server option (the default is 1).

### Advanced options
--acl

Mount the filesystem with POSIX ACL support.

--localtime-logging

Enable localtime log timestamps.

--debug

Run in debug mode. This option sets --no-daemon, --log-level to DEBUG, and --log-file to console.

--enable-ino32=BOOL

Use 32-bit inodes when mounting to workaround application that doesn't support 64-bit inodes.

--fopen-keep-cache[=BOOL]

Do not purge the cache on file open (default: false).

--mac-compat=BOOL

Provide stubs for attributes needed for seamless operation on Macs (the default is off).

-N, --no-daemon

Run in the foreground.

-p, --pid-file=PIDFILE

File to use as PID file.

--read-only

Mount the file system in 'read-only' mode.

--selinux

Enable SELinux label (extended attributes) support on inodes.

-S, --socket-file=SOCKFILE

File to use as unix-socket.

--volfile-id=KEY

Key of the volume file to be fetched from the server.

--volfile-server-port=PORT

Port number of volfile server.

--volfile-server-transport=TRANSPORT

Transport type to get volume file from server (the default is tcp).

--volume-name=VOLUME-NAME

Volume name to be used for MOUNT-POINT (the default is top most volume in VOLUME-FILE).

--worm

Mount the filesystem in 'worm' mode.

--xlator-option=VOLUME-NAME.OPTION=VALUE

Add/Override a translator option for a volume with the specified value.

--subdir-mount=SUBDIR-MOUNT-PATH

Mount subdirectory instead of the '/' of volume.

### Fuse options
--attr-times-granularity=NANOSECONDS

Declare supported granularity of file attribute times (default is 0 which kernel handles as unspecified; valid real values are between 1 and 1000000000).

--attribute-timeout=SECONDS

Set attribute timeout to SECONDS for inodes in fuse kernel module (the default is 1).

--background-qlen=N

Set fuse module's background queue length to N (the default is 64).

--congestion-threshold=N

Set fuse module's congestion threshold to N (the default is 48).

--direct-io-mode=BOOL|auto

Specify fuse direct I/O strategy (the default is auto).

--dump-fuse=PATH

Dump fuse traffic to PATH

--entry-timeout=SECONDS

Set entry timeout to SECONDS in fuse kernel module (the default is 1).

--gid-timeout=SECONDS

Set auxiliary group list timeout to SECONDS for fuse translator (the default is 0).

--kernel-writeback-cache=BOOL

Enable fuse in-kernel writeback cache.

--negative-timeout=SECONDS

Set negative timeout to SECONDS in fuse kernel module (the default is 0).

--auto-invalidation=BOOL

controls whether fuse-kernel can auto-invalidate attribute, dentry and page-cache. Disable this only if same files/directories are not accessed across two different mounts concurrently [default: on].

--volfile-check

Enable strict volume file checking.

### Miscellaneous Options
-?, --help

Display this help.

--usage

Display a short usage message.

-V, --version

Print the program version.

## FILES
/var/lib/glusterd/vols/*/*.vol

## EXAMPLES
mount a volume named foo on server bar with log level DEBUG on mount point /mnt/foo

\# glusterfs --log-level=DEBUG --volfile-id=foo --volfile-server=bar /mnt/foo

## SEE ALSO

```
fusermount(1), mount.glusterfs(8), gluster(8)
```

## COPYRIGHT

```
Copyright(c) 2006-2011  Red Hat, Inc.  <http://www.redhat.com>
```


glusterfsd

title: glusterfsd(8)

summary: Clustered Filesystem.

text:
# glusterfsd(8)

## NAME
GlusterFS - Clustered Filesystem.

## SYNOPSIS
glusterfsd [options] [mountpoint]

## DESCRIPTION
GlusterFS is a clustered file-system capable of scaling to several peta-bytes. It aggregates various storage bricks over Infiniband RDMA or TCP/IP interconnect into one large parallel network file system. Storage bricks can be made of any commodity hardware such as x86-64 server with SATA-II RAID and Infiniband HBA.

GlusterFS is fully POSIX compliant FileSystem. On client side, it has dependency on FUSE package, on server side, it works seemlessly on different OSes. (Currently supported on GNU/Linux, Solaris).

## OPTIONS
Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options.

### Basic options
-f, --volfile=VOLUME-FILE

File to use as VOLUME-FILE [default:/etc/glusterfs/glusterfs.vol]

-l, --log-file=LOGFILE

File to use for logging [default:/var/log/glusterfs/glusterfs.log]

-L, --log-level=LOGLEVEL

Logging severity. Valid options are TRACE, DEBUG, INFO, WARNING, ERROR and CRITICAL [default: WARNING]

-s, --volfile-server=SERVER

Server to get the volume from. This option overrides --volfile option

### Advanced options
--localtime-logging

Enable localtime log timestamps.

--debug

Run in debug mode. This option sets --no-daemon, --log-level to DEBUG and --log-file to console

-N, --no-daemon

Run in foreground

--read-only

Makes the filesystem read-only

-p, --pid-file=PIDFILE

File to use as pid file

-S SOCKFILE

Socket file to used for inter-process communication

--brick-name DIRECTORY

Directory to be used as export directory for GlusterFS

--brick-port PORT

Brick Port to be registered with Gluster portmapper

--volfile-id=KEY

KEY of the volume file to be fetched from server

--volfile-server-port=PORT

Port number of volfile server

--volfile-server-transport=TRANSPORT

Transport type to get volume file from server [default: tcp]

--volume-name=VOLUME-NAME

Volume name to be used for MOUNT-POINT [default: top most volume in VOLUME-FILE]

--xlator-option=VOLUME-NAME.OPTION=VALUE

Add/override a translator option for a volume with the specified value

### Fuse options
--attribute-timeout=SECONDS

Set attribute timeout to SECONDS for inodes in fuse kernel module [default: 1]

--entry-timeout=SECONDS

Set entry timeout to SECONDS in fuse kernel module [default: 1]

--direct-io-mode=BOOL

Enable/Disable direct-io mode in fuse module [default: enable]

--resolve-gids

Resolve all auxiliary groups in fuse translator (max 32 otherwise)

--auto-invalidation=BOOL

controls whether fuse-kernel can auto-invalidate attribute, dentry and page-cache. Disable this only if same files/directories are not accessed across two different mounts concurrently [default: on]

### Miscellaneous Options
-?, --help

Give this help list

--usage

Give a short usage message

-V, --version

Print program version

## FILES
/etc/glusterfs/*.vol

## EXAMPLES
Start a GlusterFS server on localhost with volume name foo

glusterfsd -s localhost --volfile-id foo.server.media-disk-1 -p /var/lib/glusterd/vols/foo/run/server-media-disk-1.pid -S /tmp/<uniqueid>.socket --brick-name /media/disk-1 -l /var/log/glusterfs/bricks/media-disk-1.log --brick-port 24009 --xlator-option foo-server.listen-port=24009

## SEE ALSO

```
fusermount(1), mount.glusterfs(8), gluster(8)
```

## COPYRIGHT

```
Copyright(c) 2006-2011  Gluster, Inc.  <http://www.gluster.com>
```


mount.glusterfs

title: mount.glusterfs(8)

text:
# mount.glusterfs(8)

## NAME
mount.glusterfs - script to mount native GlusterFS volume

## SYNOPSIS
mount -t glusterfs [-o <options>] <volumeserver>:/<volume>[/<subdir>] <mountpoint>

mount -t glusterfs [-o <options>] <server1>,<server2>,

<server3>,..<serverN>:/<volname>[/<subdir>] <mount_point>

mount -t glusterfs [-o <options>] <path/to/volumefile> <mountpoint>

## DESCRIPTION
This tool is part of glusterfs(8) package, which is used to mount using GlusterFS native binary.

mount.glusterfs is meant to be used by the mount(8) command for mounting native GlusterFS client. This subcommand, however, can also be used as a standalone command with limited functionality.

## OPTIONS

### Basic options
log-file=LOG-FILE

File to use for logging [default:/var/log/glusterfs/glusterfs.log]

log-level=LOG-LEVEL

Logging severity. Valid options are TRACE, DEBUG, WARNING, ERROR, CRITICAL INFO and NONE [default: INFO]

acl

Mount the filesystem with POSIX ACL support

fopen-keep-cache[=BOOL]

Do not purge the cache on file open (default: false)

worm

Mount the filesystem in 'worm' mode

aux-gfid-mount

Enable access to filesystem through gfid directly

ro

Mount the filesystem read-only

enable-ino32=BOOL

Use 32-bit inodes when mounting to workaround broken applications that don't support 64-bit inodes

mem-accounting

Enable internal memory accounting

capability

Enable file capability setting and retrival

thin-client

Enables thin mount and connects via gfproxyd daemon

localtime-logging

Use local timestamps instead of UTC in mount log entries

### Advanced options
attribute-timeout=SECONDS

Set attribute timeout to SECONDS for inodes in fuse kernel module [default: 1]

entry-timeout=SECONDS

Set entry timeout to SECONDS in fuse kernel module [default: 1]

background-qlen=N

Set fuse module's background queue length to N [default: 64]

gid-timeout=SECONDS

Set auxiliary group list timeout to SECONDS for fuse translator [default: 0]

negative-timeout=SECONDS

Set negative timeout to SECONDS in fuse kernel module [default: 0]

volume-name=VOLUME-NAME

Volume name to be used for MOUNT-POINT [default: top most volume in VOLUME-FILE]

direct-io-mode=BOOL|auto

Specify fuse direct I/O strategy [default: auto]

congestion-threshold=N

Set fuse module's congestion threshold to N [default: 48]

ubdir-mount=N

Set the subdirectory mount option [default: NULL, ie, no subdirectory mount]

backup-volfile-servers=SERVERLIST

Provide list of backup volfile servers in the following format [default: None] If use IPv6 address in SERVERLIST, it is required to use '[' and ']' to surround IPv6 address. $ mount -t glusterfs -obackup-volfile-servers=<server2>: <server3>:...:<serverN> <server1>:/<volname> <mount_point> $ mount -t glusterfs -obackup-volfile-servers=<[ipv6_addr2]>: <[ipv6_addr3]>:...:<[ipv6_addrN]> <ipv6_addr1>:/<volname> <mount_point>

backupvolfile-server=SERVER

Provide list of backup volfile servers in the following format [default: None] $ mount -t glusterfs -obackupvolfile-server=<server2> <server1>:/<volname> <mount_point>

fetch-attempts=N

Deprecated option - placed here for backward compatibility [default: 1]

lru-limit=N

Set fuse module's limit for number of inodes kept in LRU list to N [default: 65536]

inode-table-size=N

Set the inode hash table size to N - this must be a power of 2 greater than or equal to 65536 and will be rounded up if not [default: 65536]

invalidate-limit=N

Suspend fuse invalidations implied by 'lru-limit' if number of outstanding invalidations reaches N

background-qlen=N

Set fuse module's background queue length to N [default: 64]

no-root-squash=BOOL

disable root squashing for the trusted client [default: off]

root-squash=BOOL

enable root squashing for the trusted client [default: on]

use-readdirp=BOOL

Use readdirp() mode in fuse kernel module [default: on]

dump-fuse=PATH

Dump fuse traffic to PATH

kernel-writeback-cache=BOOL

Enable fuse in-kernel writeback cache [default: off]

attr-times-granularity=NS

Declare supported granularity of file attribute [default: 0]

auto-invalidation=BOOL

controls whether fuse-kernel can auto-invalidate attribute, dentry and page-cache. Disable this only if same files/directories are not accessed across two different mounts concurrently [default: on]

## FILES
/etc/fstab

A typical GlusterFS entry in /etc/fstab looks like below server1:/mirror /mnt/mirror glusterfs log-file=/var/log/mirror.log,acl 0 0

/proc/mounts

An example entry of a GlusterFS mountpoint in /proc/mounts looks like below server1:/mirror /mnt/glusterfs fuse.glusterfs rw,allow_other,default_permissions,max_read=131072 0 0

## SEE ALSO
glusterfs(8), mount(8), gluster(8)

## COPYRIGHT
Copyright(c) 2006-2013 Red Hat, Inc. <http://www.redhat.com>


glusterd

title: glusterd(8)

text:
# glusterd(8)

## NAME
Glusterd - Gluster elastic volume management daemon

## SYNOPSIS
glusterd [OPTION...]

## DESCRIPTION
The glusterd daemon is used for elastic volume management. The daemon must be run on all export servers.

## OPTIONS

### Basic options
-l <LOGFILE>, --log-file=<LOGFILE>

File to use for logging.

-L <LOGLEVEL>, --log-level=<LOGLEVEL>

Logging severity. Valid options are TRACE, DEBUG, INFO, WARNING, ERROR and CRITICAL (the default is INFO).

--localtime-logging

Enable localtime log timestamps.

--debug

Run the program in debug mode. This option sets --no-daemon, --log-level to DEBUG and --log-file to console.

-N, --no-daemon

Run the program in the foreground.

### Miscellaneous Options:
-?, --help

Display this help.

--usage

Display a short usage message.

-V, --version

Print the program version.

## FILES
/var/lib/glusterd/*

## SEE ALSO

```
fusermount(1), mount.glusterfs(8), glusterfs(8), gluster(8)
```

## COPYRIGHT

```
Copyright(c) 2006-2011  Gluster, Inc.  <http://www.gluster.com>
```


goa-daemon

package: gnome-online-accounts

title: goa-daemon(8)

summary: GNOME Online Accounts Daemon

text:
# goa-daemon(8)

## NAME
goa-daemon - GNOME Online Accounts Daemon

## SYNOPSIS
goa-daemon [--help] [--replace] [--version]

## DESCRIPTION
The goa-daemon program provides the org.gnome.OnlineAccounts name on the session message bus. Users or administrators should never need to start this daemon as it will be automatically started by dbus-daemon(1) whenever an application sends a D-Bus message to the org.gnome.OnlineAccounts name on the session bus.

## CONFIGURATION FILE
The goa-daemon program stores configuration in the $XDG_CONFIG_HOME/goa-1.0/accounts.conf (typically ~/.config/goa-1.0/accounts.conf) file. The format of this file is private and 3rd party programs or libraries should never read it. This file does not contain any passwords or secrets.

See the XDG Base Directory Specification[1] for more information about $XDG_CONFIG_HOME.

## SECRETS
The goa-daemon program stores secrets (such as OAuth tokens) in GNOME Keyring[2]. The format of the stored secrets is private and 3rd party programs or libraries should never read, modify or delete these secrets.

## OPTIONS
--replace

Replace existing instance.

--version

Show program version.

--help

Show help options.

## AUTHOR
Written by David Zeuthen <zeuthen@gmail.com> with a lot of help from many others.

## BUGS
Please send bug reports to either the distribution bug tracker or the upstream bug tracker at https://gitlab.gnome.org/GNOME/gnome-online-accounts/issues. There are some debugging tips at https://wiki.gnome.org/Projects/GnomeOnlineAccounts/Debugging

## SEE ALSO
dbus-daemon(1)

## NOTES
1.

XDG Base Directory Specification

http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html

2.

GNOME Keyring

https://wiki.gnome.org/Projects/GnomeKeyring


addgnupghome

title: addgnupghome(8)

summary: Create .gnupg home directories

text:
# addgnupghome(8)

## NAME
addgnupghome - Create .gnupg home directories

## SYNOPSIS
addgnupghome account_1 account_2...account_n

## DESCRIPTION
If GnuPG is installed on a system with existing user accounts, it is sometimes required to populate the GnuPG home directory with existing files. Especially a ‘trustlist.txt’ and a keybox with some initial certificates are often desired. This script helps to do this by copying all files from ‘/etc/skel/.gnupg’ to the home directories of the accounts given on the command line. It takes care not to overwrite existing GnuPG home directories.

addgnupghome is invoked by root as:

```
addgnupghome account1 account2 ... accountn
```


applygnupgdefaults

title: applygnupgdefaults(8)

text:
# applygnupgdefaults(8)

## NAME
applygnupgdefaults - Run gpgconf --apply-defaults for all users.

## SYNOPSIS
applygnupgdefaults

## DESCRIPTION
This is a legacy script. Modern application should use the per component global configuration files under ‘/etc/gnupg/’.

This script is a wrapper around gpgconf to run it with the command --apply-defaults for all real users with an existing GnuPG home directory. Admins might want to use this script to update he GnuPG configuration files for all users after ‘/etc/gnupg/gpgconf.conf’ has been changed. This allows enforcing certain policies for all users. Note, that this is not a bulletproof way to force a user to use certain options. A user may always directly edit the configuration files and bypass gpgconf.

applygnupgdefaults is invoked by root as:

```
applygnupgdefaults
```