この Topic では、ossfs 2.0 の使用時によくある問題とそのソリューションについて説明します。
一般的な情報
ossfs 2.0 のエラーメッセージには、HTTP リクエストのエラー情報が含まれています。問題をトラブルシューティングするには、ログで 4** や 5** などの対応する HTTP 応答ステータスコードと、OSS から返されたメッセージを確認してください。
マウントに関する問題
マウントエラー:ERROR: failed to mount ossfs2, see more details in log file
問題分析:これは一般的なエラーです。具体的なエラーの詳細はログで確認してください。一般的な原因には、不適切な権限や構成パラメーターが含まれます。例:

AccessKey にバケットへのアクセスに必要な権限がありません。ご利用の AccessKey に正しい権限があり、バケット名が正しく構成されていることを確認してください。

構成した AccessKey パラメーターが正しくありません。

解決策:ログのエラーメッセージに基づいて構成を修正し、再度バケットをマウントしてください。
マウントエラー:MOUNTPOINT: Directory does not exist: /mnt/ossfs2
問題分析:このエラーは、ディレクトリが作成されていないために発生します。
解決策:ディレクトリを作成してから、マウント操作を実行してください。
マウントエラー:MOUNTPOINT: directory /mnt/ossfs2 is not empty.
問題分析:マウントポイントのディレクトリが空ではありません。ossfs 2.0 では、マウントディレクトリが空である必要があります。
解決策:別のファイルシステムがすでにそのディレクトリにマウントされているかどうかを確認してください。マウントされている場合は、umount コマンドを使用してアンマウントします。他のファイルシステムがマウントされていない場合は、ディレクトリ内に残っているファイルがないか確認してください。別の空のディレクトリにマウントすることもできます。
マウントエラー:version `FUSE_3.12' not found
問題分析:このエラーは、一部のインストールファイルが欠落していることを示します。その結果、ossfs 2.0 はシステムにインストールされている libfuse ライブラリを使用しようとしますが、そのバージョンが古すぎます。
解決策:対応するパッケージをアンインストールしてから、再インストールしてください。
マウントエラー:fuse: device not found, try 'modeprobe fuse' first またはログに fuse_session_mount failed with error: No such file or directory
問題分析:/dev/fuse デバイスにアクセスできません。この問題は、必要なアクセス権限がないコンテナー環境でよく発生します。
解決策:コンテナー環境でマウントする場合は、特権モードでコンテナーを起動してください。
読み取りと書き込みの問題
ファイル書き込みエラー:File too large
問題分析:デフォルトでは、ossfs 2.0 は 8 MiB のパートサイズを使用し、最大 78.125 GiB のファイルサイズをサポートします。この制限を超えるファイルを書き込もうとすると、このエラーが発生します。
解決策:バケットをマウントする際に、upload_buffer_size オプションを構成することで、サポートされる最大ファイルサイズを増やすことができます。upload_buffer_size を構成すると、より多くのメモリリソースが必要になることにご注意ください。ossfs 2.0 では、total_mem_limit を構成してメモリ使用量をコントロールできます。詳細については、「マウントオプション」をご参照ください。
ファイル書き込みエラー:Invalid argument
問題分析:ossfs 2.0 はファイルのランダム書き込みをサポートしていません。ファイルの末尾へのシーケンシャルな追加のみをサポートします。現在のファイルの末尾以外の位置に書き込むと、`Invalid argument` エラーが発生します。ログのエラーメッセージは次のとおりです:

解決策:アプリケーションがランダム書き込みを必要とする場合は、ossfs 1.0 に切り替えてください。ランダム書き込みは、多くの場合、同じファイルハンドルへの同時書き込みが原因で発生します。このシナリオでは、ossfs 2.0 はシーケンシャル書き込みに最適化されており、シングルスレッドプロセスで良好なスループットを提供します。この問題を解決するには、シングルスレッドのシーケンシャル書き込みに切り替えることができます。
マウントポイントでの `git clone` の失敗 (ファイルの読み取り時に予期しない `No such file or directory` エラー)
問題分析:デフォルトでは、ossfs 2.0 は同じファイルへの同時書き込みと読み取りをサポートしていません。ファイルが書き込み中に読み取られると、操作によって古いデータが返されたり、読み取りエラーが発生したりする可能性があります。`git clone` コマンドは、書き込み中に読み取るアクセスモードを使用します。ログには次のエラーメッセージが表示されます:

この場合、errno 2 は Linux のエラーコード ENOENT であり、ファイルデータが正しく読み取られなかったことを示します。他のアプリケーションで読み取りエラーが発生した場合は、ログで同様のエラーメッセージを確認してください。読み取り操作で `file not found` エラーが返されない場合、これはアプリケーションがまだファイルを閉じておらず、ファイルが OSS にアップロードされていないことが原因である可能性があります。
解決策:このようなコマンドの使用は避けてください。git clone を使用してリポジトリをローカルディスクにクローンし、cp コマンドを使用してファイルをマウントポイントにコピーすることができます。
同時書き込みエラー:Device or resource busy
問題分析:ossfs 2.0 では、ファイルが同時に複数回開かれた場合、シーケンシャル書き込みに使用できるファイルハンドルは 1 つだけです。他のファイルハンドルからの後続の書き込み操作は失敗します。次のエラーメッセージが返されます:

解決策:同じファイルへの同時書き込みは避けてください。ossfs 2.0 はシーケンシャル書き込みに最適化されており、シングルスレッドプロセスで良好なスループットを提供します。
その他の問題
アンマウントエラー: umount: /mnt/ossfs2: target is busy.
問題分析:このエラーは、プロセスが /mnt/ossfs2 マウントディレクトリ内のファイルにアクセスしているために発生し、ディレクトリのアンマウントが妨げられています。
解決策:
lsof /mnt/ossfs2を使用して、ディレクトリにアクセスしているプロセスを見つけます。プロセスを停止します。
ディレクトリを再度アンマウントします。
ossfs 2.0 を使用すると多数の 404 ログが表示される
背景情報:ossfs 2.0 を使用すると、ログに多くの `404 Not Found` レコードが表示されることがあります。ほとんどの場合、これはシステムエラーではなく、ossfs 2.0 がローカルファイルシステムのセマンティクスをシミュレートするための想定された動作です。
ファイルに対する操作を実行する前に、オペレーティングシステムはターゲットオブジェクトが存在するかどうかを確認します。このプロセスにより、OSS への多くのプローブ要求が生成される可能性があります。オブジェクトが存在しない場合、`404` ステータスコードが返されます。
ossfs 2.0 がオブジェクトの存在を確認するために使用するプロセスは次のとおりです:
GetObjectMeta リクエストを送信して、
objectなどの指定されたパスがオブジェクトとして存在するかどうかをクエリします。オブジェクトが存在する場合、システムはオブジェクトのメタデータを返します。オブジェクトが存在しない場合、システムは `404` エラーを返し、次のステップに進みます。
説明オブジェクトが存在しない場合でも、ossfs 2.0 はそのパスがディレクトリを表すかどうかを判断する必要があります。
`404` エラーを受信した後、ossfs 2.0 は ListObjects リクエストを送信して、指定されたパスがディレクトリであるかどうかを判断します。これは、プレフィックス
object/を持つオブジェクトをクエリすることによって行われます。結果が空の場合、パスは存在しないと見なされます。結果が空でない場合、パスは既存のディレクトリと見なされ、システムはその内容をリストします。
問題分析:
stat などのコマンドを使用して存在しないファイルにアクセスすると、システムは `404` エラーを返します。これは、ローカルファイルシステムの `No such file or directory` エラーにマッピングされます。
バッチ操作でファイルやディレクトリを作成する前に、オペレーティングシステムはまずターゲットファイルが存在するかどうかを確認します。ファイルが存在しない場合にのみ、作成リクエストが送信されます。このチェック中に生成される `404` エラーは想定されたものであり、システム例外を示すものではありません。
解決策:`404` エラーは正常ですが、頻繁なプローブ要求は、高同時実行またはバッチ操作のシナリオでパフォーマンスを低下させる可能性があります。次の構成を使用してパフォーマンスを最適化できます:
これらのオプションを構成すると、ossfs 2.0 はローカルキャッシュの有効期限が切れるまで、OSS 内のファイルに加えられた変更を検出できなくなります。
--attr_timeoutの値を大きくして、メタデータキャッシュの期間を延長します。デフォルトは 60 秒です。これにより、メタデータの有効期限が切れる前にクエリされたファイルやディレクトリに対して、OSS への繰り返しリクエストが送信されるのを防ぎます。
--oss_negative_cache_sizeと--oss_negative_cache_timeoutを構成して、ネガティブキャッシュを有効にします。ファイルが初めてクエリされて存在しない場合、この結果はメモリキャッシュに保存されます。同じファイルに対する後続のクエリは、キャッシュの有効期限が切れる前にローカルのネガティブキャッシュをチェックするため、OSS への新しいリクエストの送信を回避できます。
--oss_negative_cache_size:OSS ファイルのネガティブキャッシュ内のエントリ数を指定します。デフォルトは 10000 です。--oss_negative_cache_timeout:OSS ファイルのネガティブキャッシュの有効期限を指定します。デフォルトは 0 です。