32ビットアプリケーションがファイルシステムの読み取りまたは書き込みを停止する
ファイル・システムでの32ビット・アプリケーションの読取り/書込みの失敗をトラブルシューティングします。
症状: 一定期間正常に機能すると、32ビット・アプリケーションが突然ファイル・システムへの読取りまたは書込みを停止します。読取り/書込み操作は、次のようなエラーで失敗します。
Applications fail to install on FSS mount point: "Value too large for defined data type" - OCI FSS/Mount Target Resources (Doc ID 2672465.1)
アプリケーションの起動に失敗し、次のようなエラーが発生することがあります。
RCV: Value too large for defined data type
原因: 32ビットアプリケーションでは、より大きいファイルIDを消費できません。File Storageサービスは64ビット・アプリケーションと連携するように設計されているため、File Storageで生成されたファイルIDは、レガシー・アプリケーションで消費するには大きすぎます。ファイル識別子の最大値の詳細は、次のとおりです。
- アプリケーションが符号付き32ビット整数を使用してファイル識別子を格納する場合、オーバーフローまでにアプリケーションが処理できる最大値は
2147483647 (2**(31-1))
です。 - アプリケーションが符号なし32ビット整数を使用してファイル識別子を格納する場合、オーバーフローまでにアプリケーションが処理できる最大値は
4294967295 (2**(32-1))
です。 - アプリケーションが符号付き64ビット整数を使用してファイル識別子を格納する場合、オーバーフロー前にアプリケーションが処理できる最大値は
9223372036854775807 (2**(63-1))
です。
生成される新しいファイルIDのサイズを確認するには、接続されているインスタンスでターミナルを開き、次のコマンドを実行します。
touch <File_Storage_mount_point>/test; ls -i <File_Storage_mount_point>/test
即時解答: カーネル・パラメータenable_ino64=0
を設定します。
NFS.enable_ino64=0
を設定すると、NFSクライアントに readdir()および stat()システムコールの32ビットiノード番号(完全な64ビットiノード番号ではなく)を返すように指示されます。この解決策では、インスタンスの再起動が必要です。
root
ユーザーとしてインスタンスのターミナル・ウィンドウを開き、次のコマンドを入力して現在のnfs.enable_ino64=0
設定を確認します。# cat /sys/module/nfs/parameters/enable_ino64
64ビットiノードが有効であることを示す
Y
が返されます。- 次のコマンドを実行して、
nfs.enable_ino64=0
を設定します。echo "options nfs enable_ino64=0" > /etc/modprobe.d/nfs.conf
- インスタンスを再起動します。
-
次のコマンドを使用して、設定が更新されたことを確認します。
# cat /sys/module/nfs/parameters/enable_ino64
システムは、64ビットiノードが無効になっていて32ビットに返されたことを示す
N
を返します。 - ファイルシステムがインスタンスにマウントされていることを確認するか、ファイルシステムをマウントします。ファイル・システムのマウントを参照してください。
中間ソリューション: レガシーの32ビットアプリケーションで使用する新しいファイルシステムを作成します。元のファイル・システムからファイルを削除しても、ファイルIDの生成は0にリセットされないため、小さいファイルIDで再度開始するには、新しいファイル・システムを作成する必要があります。特定の時間が経過すると、32ビットアプリケーションではファイルIDが大きすぎます。
このソリューションは、アプリケーションの性質およびそれが生成するファイルに応じて、すべての場合に適用できません。たとえば、本番ファイル・システムから非本番ファイル・システムにファイルをコピーするデータ・リフレッシュを実行している場合、このオプションは機能します。ただし、有機的に増大するファイルシステムを持つアプリケーションでは、このオプションは動作しない可能性があります。
長期的なソリューション: アプリケーションを64ビット・バージョンにアップグレードします。