ファイル名で探す plocate コマンド
今回はヒトゲノム解析センターの SHIROKANE に導入している plocate コマンドを紹介します。
plocate コマンドとは
2022 年 4 月に導入した plocate コマンドは、 SHIROKANE に存在する数多くのファイルから利用者がアクセスできるファイルを瞬時に検索することができます。
plocate コマンドは、SHIROKANE のホームディスクおよびアーカイブディスクにあるファイルを、ファイル名やファイルパスに含まれる文字列をキーにして検索するツールです。検索結果には検索文字列を含むディレクトリにあるファイルも含まれます。ホームディレクトリ以外に存在する自身がアクセスできるファイルも含まれます。plocate コマンドは、ファイル名やファイルパスに含まれる文字列でしか検索を行わず、検索結果に表示されるファイルは、実行したユーザが ls コマンドにて存在を確かめることができるものに限られます。「含まれる文字列」以外での検索、例えば、自身が所有者となっているファイルを検索するというようなことはできません。
plocate コマンドの最大の特長は検索が高速であることです。このコマンドの検索は、ホームディスクやアーカイブディスクに対しておこわなれるものではなく、ファイルのメタデータを収集したデータベースを対象に実行されます。このため、待ち時間なく検索結果が表示されます。ただし、データベースに登録されていないファイルは登録されるまで検索ができません。 SHIROKANE では毎週土曜日にデータベース更新を行っていますので、最大で直近の 1 週間以内に作成したファイルは検索結果に含まれないことになります。
plocate コマンドの SHIROKANE 利用者向けの情報は次のアドレスです。
https://supcom.hgc.jp/internal/mediawiki/id/1656
SHIROKANE での plocate コマンドの仕組み
plocate コマンドは Linux にある mlocate コマンドを基にしています。どちらのコマンドともできることに違いはありませんが、 plocate コマンドでは io_uring という非同期 I/O を行えるインターフェイスを用いることで高速な検索結果表示を可能にしています。
【参考】 plocate 公式サイト ( https://plocate.sesse.net/ )
io_uring は Linux カーネルバージョン 5.1 から実装されました。カーネルバージョンが古い Shirokane5 の計算ノードに plocate コマンドはインストールできず、Shirokane6 の計算ノードに本コマンドはインストールされています。このため SHIROKANE で plocate コマンドを実行すると、実際には plocate コマンドがインストールされている計算ノードに SSH を行い、 plocate コマンドを代行させ、結果を受け取るといった処理が行われています。また、検索に利用するデータベースはホームディスクでなく plocate コマンドがインストールされている計算ノードの SSD に配置して検索速度を向上させています。