Deep Inspection¶
Under some rare circumstances it can be helpful to be able to locate BeeGFS storage objects on the underlying file system of the metadata and storage servers, as well as referencing them with files or directories on the BeeGFS file system.
Warning
Modifying the content of files and extended attributes, deleting, or otherwise changing the directory structure of the metadata or storage servers is likely to cause irreversible data loss!
Find storage chunks belonging to a file¶
This can be achieved by querying the file with beegfs-ctl --getentryinfo --verbose
. The command
will print out (among other information) a list of storage targets the file is striped across as
well as the relative path to its chunk files (which is the same on all targets).
Example:
$ beegfs-ctl --getentryinfo --verbose /mnt/beegfs/file
Entry type: file
EntryID: 0-5D285750-1
Metadata node: node1.beeg.local [ID: 1]
Stripe pattern details:
+ Type: RAID0
+ Chunksize: 512k
+ Number of storage targets: desired: 2; actual: 2
+ Storage targets:
+ 1 @ node1.beeg.local [ID: 1]
+ 2 @ node2.beeg.local [ID: 2]
Chunk path: u0/0/r/root/0-5EC39809-1
Dentry path: 38/51/root/
In this example, the chunk files belonging to /mnt/beegfs/file
are striped across the targets
1 and 2, which are located on storage node 1 and 2. Assuming the target data directories are put
under /beegfs/storage
on each node, the chunk files are located at
/beegfs/storage/chunks/u0/0/r/root/0-5EC39809-1
.
Find the metadata file of file or directory¶
This can be achieved by querying the file or directory with beegfs-ctl --getentryinfo --verbose
.
The command will print out (among other information) the metadata node where the files metadata is
located as well as the relative path to the directory where its inode is stored.
Note
File inodes are inlined within the files dentry, so if you query a file, you will get the path to the files dentry instead (see example above).
Normally inodes are found under inodes/
and dentries under dentries/
. If the file or
directory is meta mirrored, you need to look under buddymir/inodes
respectively
buddymir/dentries
.
Example: Query a directory
$ beegfs-ctl --getentryinfo --verbose /mnt/beegfs/dir
Entry type: directory
EntryID: 0-5D285EEB-1
ParentID: root
Metadata node: node1.beeg.local [ID: 1]
Stripe pattern details:
+ Type: RAID0
+ Chunksize: 512k
+ Number of storage targets: desired: 2
+ Storage Pool: 1 (Default)
Inode hash path: 54/57/0-5D285EEB-1
In this example, the directory inode is located on metadata node 1. Assuming the metadata directory
is put under /beegfs/meta
, the inode file is located at
/beegfs/meta/inodes/54/57/0-5D285EEB-1
.