8.5.1. TRANSPARENT_RECALL¶
8.5.1.1. SYNOPSIS¶
transparent_recall file [--config CONF]
8.5.1.2. DESCRIPTION¶
transparent_recall is a tool for recalling individual files via Ngenea Hub
Performing recalls via Ngenea Hub allows for monitoring progress via the Ngenea Hub UI. Individual recall tasks performed on demand, but for reporting are grouped together into one job per hour.
transparent_recall can be called directly to recall files, but typically would be installed as a filesystem policy rule. See TRANSPARENT RECALL POLICY for more info.
8.5.1.3. OPTION SUMMARY¶
file One or more directory to export events from
--config CONF Alternative configuration file location
-h, --help Print help message and exit
8.5.1.3.1. OPTIONS¶
--config
The path to an alternative configuration file.
If not specified, the default configuration paths will be used. The default paths are in the user's HOME directory $HOME/.config/ngenea/ngenea-client.conf, and the global configuration at /etc/ngenea/ngenea-client.conf
See the CONFIGURATION section below and ngenea-client.conf(5) for more information.
Command line options take precedence over any corresponding config file settings.
--queue
Queue to perform the transparent recall on.
-h, --help
Prints the help message.
8.5.1.4. CONFIGURATION¶
transparent_recall requires authentication to be able to perform recalls via Ngenea Hub. To authenticate, a valid client_key must be placed in the configuration file.
A client key can be generated via the Ngenea Hub REST API, or using the ngclient(1) authenticate command.
Minimally, the configuration must include this client_key, as well as the site where recalls are performed.
[settings]
client_key = ...
site = thissite
The site must match the the node where the recall was triggered.
The queue can be specified in the configuration; otherwise, it will be set to the default option, default.
transparent_recall will respect any ngclient(1) recall configuration options, except for recursive. This includes timeout; by default it will wait indefinitely for the recall to complete.
See ngenea-client.conf(5) for more information on the configuration format and additional options.
8.5.1.5. TRANSPARENT RECALL POLICY¶
Transparent recall, by definition, is intended to be triggered automatically when an offline file is opened for reading or writing.
To enable transparent recall functionality using transparent_recall, the following rules can be added to the filesystem placement policy.
/* BEGIN: NGENEA TRANSPARENT RECALL POLICY */
define(xattr_stbsz,[INTEGER(XATTR('dmapi.APXstbsz'))])
RULE FileOpen EVENT 'OPEN'
ACTION(SetDataEvent(0, OP_READ, CASE WHEN xattr_stbsz IS NULL THEN 0 ELSE xattr_stbsz END) AND
SetDataEvent(1, OP_WRITE+OP_TRUNC, 0))
WHERE LENGTH(XATTR('dmapi.APXguuid'))>0 AND CountSubstr(MISC_ATTRIBUTES,'V')>0
RULE FileOpen_else EVENT 'OPEN' DIRECTORIES_PLUS
RULE FileData EVENT 'DATA'
ACTION(system_lw('/usr/bin/python3 /usr/bin/transparent_recall ' || getDetail('path_name') )=0)
WHERE LENGTH(XATTR('dmapi.APXguuid'))>0 AND CountSubstr(MISC_ATTRIBUTES,'V')>0
RULE FileData_else EVENT 'DATA' DIRECTORIES_PLUS
/* END: NGENEA TRANSPARENT RECALL POLICY */
If transparent recall (EVENT) rules are already installed for ngenea (native), these rules should replace those equivalent rules.
Don't replace any rules besides the ngenea EVENT rules, e.g. don't replace any SET POOL rules.
See mmchpolicy(1) for how to change the filesystem placement policy
8.5.1.5.1. Adjusting the transparent recall queue¶
If a alternative queue has been established, for example transparent-recall
it can be used for all transparent recall
operations by using this policy alternative:
ACTION(system_lw('/usr/bin/python3 /usr/bin/transparent_recall --queue transparent-recall ' || getDetail('path_name') )=0)
This substitutes the main ACTION
to allow for all transparent recall operations to go through the custom
queue exclusively. This means transparent recalls will not be effected by any other operations happening on the main
For more details on how to create and enable these custom queues, refer to the configuration section of the ngeneahub documentation.
8.5.1.5.2. WARNING¶
Due to limitations of GPFS, the above policy will not work on any paths which contain whitespace. Transparent recall will simply error.
An alternative policy substitutes the system_lw line for
ACTION(system('/usr/bin/python3 /usr/bin/transparent_recall ''' || getDetail('path_name') || '''')=0)
This will handle paths containing whitespace, but not those containing single quotes. Again, transparent recall will error.
There is currently no approach which works in all cases. You must chose the version which is most compatible with the sorts of paths you have on your system.
You can also provide an alternative queue for this revised policy similar to the above:
ACTION(system('/usr/bin/python3 /usr/bin/transparent_recall --queue transparent-recall ''' || getDetail('path_name') || '''')=0)
8.5.1.6. TROUBLESHOOTING¶
When attempting to read an offline file, if the read process reports "Operation not permitted", and it's not due to permissions, the most likely cause is that the recall failed.
Logs for the transparent_recall command invocation can be found at /var/adm/ras/mmfs.log.latest
Logs for the transparent recall job can be viewed via Ngenea Hub.
WARNING - if reading a file triggers a recall, the read request will block until recall exits; it can't be interrupted (Ctrl+C) or killed (kill -9). If the recall job is 'stuck' and no timeout is set, the only way to make the read process exit is to kill the recall job via Ngenea Hub.
8.5.2. AVAILABILITY¶
Distributed as part of the ngenea-hub-client rpm, or the ngclient wheel (Python) for non-Red Hat based systems.
Note - transparent_recall makes use of flock(2), so can only be used on Unix-base operating systems.
8.5.2.1. SEE ALSO¶
ngclient(1), ngenea-client.conf(5), ngrecall(1), mmchpolicy(1)
8.5.2.2. LICENSE¶
2021 ArcaPix Limited
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.