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を消費できません。ファイル・ストレージ・サービスは64ビット・アプリケーションで動作するように設計されているため、ファイル・ストレージで生成されたファイル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
を設定すると、(完全な64ビットinode番号ではなく) readdir()およびstat()システム・コールの32ビットinode番号を返すようにNFSクライアントに指示されます。この解決策では、インスタンスの再起動が必要です。
root
ユーザーとしてインスタンスでターミナル・ウィンドウを開き、次のコマンドを入力して現在のnfs.enable_ino64=0
設定を確認します。# cat /sys/module/nfs/parameters/enable_ino64
システムは、64ビットinodeが有効になっていることを示す
Y
を返します。- 次のコマンドを実行して、
nfs.enable_ino64=0
を設定します。echo "options nfs enable_ino64=0" > /etc/modprobe.d/nfs.conf
- インスタンスを再起動します。
-
次のコマンドを使用して、設定が更新されたことを確認します:
# cat /sys/module/nfs/parameters/enable_ino64
システムは、64ビットinodeが無効になって32ビットに戻ることをことを示す
N
を返します。 - ファイル・システムがインスタンスにマウントされていることを確認します。されていなければ、ファイル・システムをマウントします。ファイル・システムのマウントを参照してください。
中間的な解決策: レガシー32ビット・アプリケーションで使用する新しいファイル・システムを作成します。元のファイル・システムからファイルを削除しても、ファイルIDの生成は0にリセットされないため、新しいファイル・システムを作成して小さいファイルIDからやり直す必要があります。一定時間が経過すると、ファイルIDは32ビット・アプリケーションには大きくなりすぎることに注意してください。
この解決策は、アプリケーションの性質や生成されるファイルによっては適用できない場合もあります。たとえば、本番ファイル・システムから非本番ファイル・システムにファイルをコピーするデータ・リフレッシュを実行する場合、このオプションでうまくいきます。ただし、ファイル・システムが組織的に拡大しているようなアプリケーションでは、このオプションでうまくいかないことがあります。
長期的な解決策: アプリケーションを64ビット・バージョンにアップグレードします。