すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:JindoFuse ユーザーガイド

最終更新日:Mar 26, 2026

JindoFuse は、Object Storage Service (OSS) および OSS-HDFS に対して、移植可能なオペレーティングシステムインタフェース (POSIX) を提供します。これにより、OSS バケットまたは OSS-HDFS のパスをローカルディレクトリとしてマウントでき、標準の Linux コマンド — lsmkdircatcp など — を OSS や OSS-HDFS に対して直接実行できます。

説明

JindoFuse は POSIX 仕様の完全な実装を行っていません。これは、ファイルシステムインタフェースを介して OSS または OSS-HDFS にアクセスするワークロード向けに最適化されています。開始前に、「サポートされる POSIX 操作」セクションを確認し、ご利用のワークロードで必要となる操作がサポートされていることをご確認ください。

前提条件

開始する前に、以下の条件を満たしていることをご確認ください。

  • JindoSDK のインストールおよび構成

    • E-MapReduce (EMR) クラスター内:JindoSDK はプリインストール済みです。OSS-HDFS にアクセスするには、EMR V3.42.0 以降、または EMR V5.8.0 以降をご利用ください。

    • EMR 以外の環境では、最初に JindoSDK をインストールします。「EMR 以外の環境に JindoSDK をデプロイする」をご参照ください。OSS-HDFS にアクセスするには、JindoSDK V4.X 以降が必要です。

  • 必要な FUSE(ユーザー空間ファイルシステム)依存関係のインストール(「依存関係のインストール」をご参照ください)

  • マウント対象の OSS バケットまたは OSS-HDFS のパス

  • 対象バケットに対する読み取りまたは書き込み権限を持つ有効な Alibaba Cloud 認証情報(AccessKey ID および AccessKey Secret)

依存関係のインストール

EMR V3.44.0 以降、EMR V5.10.0 以降、または JindoSDK V4.6.2 以降を実行するクラスターには、必要な依存関係が既に含まれています。該当するクラスターをお使いの場合は、本セクションをスキップしてください。

それより古いバージョンのクラスターでは、必要な依存関係は JindoSDK のバージョンによって異なります。

JindoSDK 4.5.0 以前 — fuse3 をインストールします。

# CentOS
sudo yum install -y fuse3 fuse3-devel

# Debian
sudo apt install -y fuse3 libfuse3-dev

JindoSDK 4.5.1 以降 — libfuse 3.7 以降をビルドおよびインストールします。以下のコマンドでは、fuse-3.11 をコンパイルします。

# ビルド依存関係のインストール(Debian の場合:apt install -y pkg-config meson ninja-build)
sudo yum install -y meson ninja-build

# CentOS のみ:devtoolset-8 から新しい C++ コンパイラをインストール
sudo yum install -y scl-utils
sudo yum install -y alinux-release-experimentals
sudo yum install -y devtoolset-8-gcc devtoolset-8-gdb devtoolset-8-binutils devtoolset-8-make devtoolset-8-gcc-c++
sudo su -c "echo 'source /opt/rh/devtoolset-8/enable' > /etc/profile.d/g++.sh"
source /opt/rh/devtoolset-8/enable
sudo ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/local/bin/gcc
sudo ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/local/bin/g++

# libfuse のダウンロードおよびコンパイル
wget https://github.com/libfuse/libfuse/releases/download/fuse-3.11.0/fuse-3.11.0.tar.xz
xz -d fuse-3.11.0.tar.xz
tar xf fuse-3.11.0.tar
cd fuse-3.11.0/
mkdir build; cd build
meson ..
sudo ninja install

JindoFuse のマウント

  1. ローカルマウントポイントを作成します。

    mkdir -p <mount_point>

    <mount_point> をローカルパス(例:/mnt/oss)に置き換えます。

  2. OSS または OSS-HDFS のパスをマウントします。

    jindo-fuse <mount_point> -ouri=<oss_path>

    <oss_path> をマッピング対象の OSS または OSS-HDFS のパスに置き換えます。このパスは、バケットのルートディレクトリまたはサブディレクトリ(例:oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/subdir/)のいずれかになります。OSS と OSS-HDFS のマウントコマンドは同一であり、パス内のエンドポイントのみが異なります。このコマンドは、バックグラウンドでデーモンプロセスを起動します。

  3. JindoFuse が正常に実行中であることを確認します。

    ps -ef | grep jindo-fuse

    jindo-fuse プロセスが期待通りの起動パラメーターとともに一覧表示された場合、マウントはアクティブです。

マウントポイント経由でのファイルアクセス

JindoFuse を /mnt/oss/ にマウントした状態で、標準の Linux コマンドを使用してファイルを操作できます。

# 最上位ディレクトリの内容を一覧表示
ls /mnt/oss/

# ディレクトリを作成
mkdir /mnt/oss/dir1

# ファイルに書き込み
echo "hello world" > /mnt/oss/dir1/hello.txt

# ファイルを読み取り
cat /mnt/oss/dir1/hello.txt
# 出力:hello world

# ディレクトリおよびその内容を削除
rm -rf /mnt/oss/dir1/

JindoFuse のアンマウント

マウントポイントをアンマウントするには、以下のコマンドを実行します。

umount <mount_point>

または、マウント時に -oauto_unmount オプションを指定します。このオプションを指定すると、jindo-fuse プロセスに SIGINT を送信することで、プロセス終了前に自動的にマウントポイントがアンマウントされます。

killall -9 jindo-fuse

サポートされる POSIX 操作

ほとんどの標準的なファイルシステム操作が、OSS および OSS-HDFS の両方で動作します。下記の表には、すべてのサポート対象操作を記載し、OSS と OSS-HDFS の違いをハイライトしています。

操作説明OSSOSS-HDFS
getattr()ファイル属性の取得サポートサポート
mkdir()ディレクトリの作成サポートサポート
rmdir()ディレクトリの削除サポートサポート
unlink()ファイルの削除サポートサポート
rename()ファイル名の変更サポートサポート
read()逐次読み取りサポートサポート
pread()ランダム読み取りサポートサポート
write()逐次書き込みサポートサポート
pwrite()ランダム書き込み非サポートサポート
flush()データをカーネルキャッシュへフラッシュJindoFuse 6.7.0 より前:追加モードのみ。JindoFuse 6.7.0 以降:デフォルトでサポート。「OSS における flush() の動作」をご参照ください。サポート
fsync()データをディスクへフラッシュ追加モードのみサポート
release()ファイルの解放サポートサポート
readdir()ディレクトリの読み取りサポートサポート
create()ファイルの作成サポートサポート
open() O_APPEND追加モードで開くサポート。「AppendObject の制限事項」をご参照ください。サポート
open() O_TRUNC上書きモードで開くサポートサポート
ftruncate()オープン中のファイルを切り詰め非サポートサポート
truncate()クローズされたファイルを切り詰め非サポートサポート
lseek()読み取り/書き込み位置の設定非サポートサポート
chmod()ファイル権限の変更非サポートサポート
access()ファイル権限の確認サポートサポート
utimes()タイムスタンプの変更非サポートサポート
setxattr()拡張属性の設定非サポートサポート
getxattr()拡張属性の取得非サポートサポート
listxattr()拡張属性の一覧表示非サポートサポート
removexattr()拡張属性の削除非サポートサポート
lock()POSIX ファイルロック非サポートサポート
fallocate()ディスク領域の事前割り当て非サポートサポート
symlink()シンボリックリンクの作成非サポート内部使用のみサポート。キャッシュ加速は非サポート
readlink()シンボリックリンクの読み取り非サポートサポート

高度な使用方法

マウントパラメーター

マウント時にパラメーターを指定することで、JindoFuse の動作を制御できます。マウント時に指定したパラメーターは、構成ファイル内の値よりも優先されます。

jindo-fuse <mount_point> -ouri=[<oss_path>] -ofs.oss.endpoint=[<endpoint>] -ofs.oss.accessKeyId=[<access_key_id>] -ofs.oss.accessKeySecret=[<access_key_secret>]
パラメーター必須最低バージョン説明
uriはいJindoData 4.3.0マウント対象の OSS パス(ルートまたはサブディレクトリ)-ouri=oss://examplebucket/
fいいえJindoData 4.3.0JindoFuse をデーモンではなく前景で実行します。このオプションを使用する場合は、ターミナルログを有効化してください。-f
dいいえJindoData 4.3.0デバッグモードを有効化します(同時に前景実行も有効化されます)。このオプションを使用する場合は、ターミナルログを有効化してください。-d
auto_unmountいいえJindoData 4.3.0JindoFuse プロセス終了時にマウントポイントを自動的にアンマウントします-oauto_unmount
roいいえJindoData 4.3.0読み取り専用モードでマウントします。書き込み操作は拒否されます-oro
direct_ioいいえJindoData 4.3.0読み取りおよび書き込み時にページキャッシュをバイパスします-odirect_io
kernel_cacheいいえJindoData 4.3.0カーネルキャッシュを使用して読み取りパフォーマンスを向上させます-okernel_cache
auto_cacheいいえJindoData 4.3.0kernel_cache」と同様ですが、ファイルサイズまたは更新時刻が変更された際にキャッシュを無効化します。デフォルトで有効です。
entry_timeoutいいえJindoData 4.3.0ディレクトリエントリ名をキャッシュする時間(秒単位)。デフォルト値:60。キャッシュを無効化するには 0 を設定します。-oentry_timeout=60
attr_timeoutいいえJindoData 4.3.0ファイル属性をキャッシュする時間(秒単位)。デフォルト値:60。キャッシュを無効化するには 0 を設定します。-oattr_timeout=60
negative_timeoutいいえJindoData 4.3.0失敗した検索結果をキャッシュする時間(秒単位)。デフォルト値:60。キャッシュを無効化するには 0 を設定します。-onegative_timeout=0
max_idle_threadsいいえJindoData 4.3.0カーネルコールバックで使用可能なアイドルスレッド数。デフォルト値:10-omax_idle_threads=10
xengineいいえJindoData 4.3.0ローカルキャッシュ加速機能を有効化します-oxengine
preadいいえJindoData 4.5.1逐次読み取りではなくランダム読み取りを使用します。ランダム読み取りの頻度が逐次読み取りよりはるかに多いワークロードに使用します。-opread
no_symlinkいいえJindoData 4.5.1シンボリックリンクのサポートを無効化します-ono_symlink
no_writebackいいえJindoData 4.5.1ライトバックキャッシュを無効化します-ono_writeback
no_flockいいえJindoData 4.5.1flock ファイルロックの無効化-ono_flock
no_xattrいいえJindoData 4.5.1拡張属性(xattr)のサポートを無効化します-ono_xattr

構成パラメーター

これらのパラメーターは、JindoSDK 構成ファイルで設定します。マウント時のパラメーターがこれをオーバーライドします。

パラメーターデフォルト値説明
logger.dir/tmp/bigboot-logログ出力先ディレクトリ。存在しない場合は自動的に作成されます。
logger.syncfalsefalse = ログを非同期で書き込みます
logger.consoleloggerfalseログをターミナルに出力します
logger.level2ログ出力の最小レベル。0=TRACE、1=DEBUG、2=INFO、3=WARN、4=ERROR、5=CRITICAL、6=OFF
logger.verbose0詳細ログ出力の最小レベル(0–99)。0 で詳細ログを無効化します。
logger.cleaner.enablefalse自動ログクリーンアップを有効化します
fs.oss.endpointJindoFS へのアクセスに使用するエンドポイント(例:oss-cn-xxx.aliyuncs.com
fs.oss.accessKeyIdJindoFS 用の AccessKey ID
fs.oss.accessKeySecretJindoFS 用の AccessKey Secret

よくある質問

エラーの原因を特定するにはどうすればよいですか?

JindoFuse は、オペレーティングシステムが事前に定義したエラーコードしか表示できません。そのため、根本原因の診断には十分な情報が得られないことが多くあります。JindoSDK からの詳細なエラーメッセージを確認するには、jindosdk.log ファイルを確認してください。このファイルは、logger.dir 構成パラメーターで指定されたディレクトリ(デフォルト:/tmp/bigboot-log)に保存されています。

OSS における flush() の動作

OSS 上での flush() の動作は、JindoFuse のバージョンによって異なります。

JindoFuse 6.7.0 より前:

  • 追記モード: ファイルを閉じる (close()) と、flush() がトリガーされ、バッファーデータがカーネルキャッシュにフラッシュされ、その後 AppendObject を介して OSS に書き込まれます。制限事項については、「AppendObject の制限事項」をご参照ください。

  • その他のモード: flush() は効果がありません。ファイルを閉じても OSS へデータは書き込まれません。

JindoFuse 6.7.0 以降:

fs.oss.fuse.flush.enable パラメーターはデフォルトで true です。この設定では、以下のように動作します。

  • flush() は、ファイルを開いたモード(open()O_APPEND など)に関係なく、OSS へデータを書き込みます。OSS-HDFS には影響しません。

  • データは PutObject またはマルチパートアップロード(MPU)を使用して書き込まれ、AppendObject は使用されません。

  • 既存のオブジェクトに対して flush() を呼び出す、または新規オブジェクトに対して flush() を複数回呼び出すと、JindoFuse がデータを再読み取り・再アップロードするため、I/O コストが増加します。

fs.oss.fuse.flush.enable=false を設定することで、追加モードのみの動作へ復元できます。