Solaris オペレーティング環境では、新たに 2G バイトを超えるファイルをサポートします。このため、開発者が非同期 I/O によって大規模ファイルを処理できるように、新しいインタフェースを提供します。
2G バイト以上の大規模ファイルをサポートします。UFS、NFS、および CacheFS の各ファイルシステムで大規模ファイルに対応するセマンティクスをサポートします。アプリケーションから作成したりアクセスしたりできるファイルの最大サイズは、次のとおりです。
UFS によってマウントされたファイルシステムでは、1 テラバイト
NFS および CacheFS によってマウントされたファイルシステムでは、NFS サーバーの限界まで
既存の入出力インタフェースが変更されて、大規模ファイルを扱うときのエラーを検出できるようになりました。新しいデータ型 (通常、接尾辞として 64 または 64_t が付く) と新しいインタフェース (通常、接尾辞として 64 が付く) が、大規模ファイル用に追加されています。
UFS ファイルシステムで大規模ファイルのサポートを無効にするための、新しい mount オプションを用意しています。このオプションを使うと、システム管理者は大規模ファイルを安全に扱うことのできない古いアプリケーションでも継続して使用することができます。
デフォルトの mount オプションは largefiles です。largefiles オプションを指定してマウントされたファイルシステムでは、2G バイト以上のサイズのファイルを作成できます。
ただし、このオプションを指定してマウントされたファイルシステムには、2G バイト以上のサイズのファイルがなくてもかまいません。
largefiles オプションを指定してマウントされたファイルシステムに 2G バイト以上のサイズのファイルが作成されると、fsck コマンドを実行して大規模ファイルが存在しないことを確認するまでは nolargefiles オプションを指定してそのファイルシステムをマウントすることはできません。
Solaris 2.x 上で既存のアプリケーションを実行する場合、次の点について確認する必要があります。
アプリケーションが大規模ファイルに対応できるためには (「Solaris 2.6 で大規模ファイルを扱っても安全 (large-file safe)」)、アプリケーションのソースコードを調べて、既存のインタフェースが適切であること、そして正しいエラー処理特性を備えていることを確認する必要があります。
アプリケーションが大規模ファイルを取り扱えるようにするには (「大規模ファイルを使用できる (large-file aware)」)、アプリケーションのソースコードを調べて修正しなくてはなりません。次は、修正すべき箇所の例です。
%ld から %lld などの出力およびメモリ内部の書式文字列
サイズ情報またはオフセット情報の一時記憶領域に使用する変数は、正しいサイズに設定して切り捨てられるのを防ぐ必要がある
関数のパラメタと戻り値を調べて、必要に応じて修正する
詳細については、『NFS の管理』と『Solaris のシステム管理』を参照してください。
Solaris オペレーティング環境では、非同期 I/O によって大規模ファイルを処理できるように、開発者に新しいインタフェースを提供します。次のインタフェースが、64 ビット AIO に対応します。
aio_read64
aio_write64
lio_listio64
aio_suspend64
aio_error64
aio_return64
次のインタフェースは存在しますが、サポートされません。
aio_fsync64
aio_cancel64
これらのインタフェースは、KAIO と共に使用できます。KAIO は、raw ファイルの入出力に最適化されたパスです。raw ファイルに対して、KAIO と共にこれらのインタフェースを使用すると性能が大幅に向上します。
Solaris オペレーティング環境では POSIX に先行して、次の AIO インタフェースをサポートします。これらのインタフェースは、大規模ファイルに対応できるように変更されています。
aioread64
aiowrite64