ossfs を使用して Object Storage Service (OSS) にラージオブジェクトをアップロードする際に、次のエラーが表示されることがあります。
There is no enough disk space for used as cache(or temporary) directory by s3fsossfs は、マルチパートアップロード中に一時キャッシュファイルを /tmp ディレクトリに書き込みます。アップロードを開始する前に、ossfs は次の数式を使用して必要なディスク領域を推定します。
推定必要領域 = multipart_size × アップロードスレッド数これは、ご利用の構成に基づく推定値であり、実際のオブジェクトサイズではありません。推定必要領域が /tmp を含むパーティションの利用可能なディスク領域を超えると、ossfs はこのエラーを出力してアップロードを拒否します。
このエラーは、次の 2 つのシナリオで発生します。
シナリオ 1:利用可能なディスク領域が、実際にオブジェクトサイズよりも小さい場合。たとえば、オブジェクトが 300 GB であるのに対し、空き領域が 200 GB しかない場合です。
シナリオ 2:
-o multipart_sizeまたはスレッド数が大きすぎる値に設定されているため、ossfs が必要な領域を過大に見積もってしまう場合。たとえば、空き領域が 300 GB、オブジェクトが 100 GB の環境で、-o multipart_sizeを 100 GB、スレッド数を 5 に設定すると、ossfs は必要な領域を 500 GB (100 GB × 5) と推定します。これは、利用可能な 300 GB を超えています。
ソリューション
シナリオ 1 の場合:/tmp を含むパーティションの利用可能なディスク領域を増やします。
シナリオ 2 の場合:-o multipart_size とスレッド数を調整して、その積が利用可能なディスク領域を超えないようにすることで、推定必要領域を減らします。
デフォルトの -o multipart_size は 10 MB で、パートの最大数は 1,000 です。
合計パート数が 1,000 の制限内に収まるようにしてください。-o multipart_size を大きすぎる値に設定すると、実際のディスク領域が十分であっても、ossfs がディスク要件を過大に見積もり、このエラーが発生する可能性があります。