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.