1.4. Ceph File System の制限と POSIX 規格


Ceph File System は、以下の点で厳密な POSIX セマンティクスから乖離しています。

  • クライアントがファイルの書き込みに失敗した場合、書き込み操作は必ずしも Atomic ではありません。例えば、O_SYNC フラグで開かれた 8MB のバッファーを持つファイルに対して、クライアントが write() システムコールを呼び出したところ、予期せぬ終了で、書き込み操作が部分的にしかできなくなってしまうことがあります。ローカルファイルシステムを含め、ほとんどのファイルシステムがこのような動作をします。
  • 書き込み操作が同時に行われる状況では、オブジェクトの境界を超えた書き込み操作は必ずしも Atomic ではありません。例えば、ライター A"aa|aa"、ライター B"bb|bb" を同時に書いた場合、"|" はオブジェクトの境界であり、本来の"aa|aa""bb|bb" ではなく、"aa|bb" が書かれてしまいます。
  • POSIX には telldir()seekdir() というシステムコールがあり、カレントディレクトリーのオフセットを取得して、そこまでシークすることができます。CephFS はいつでもディレクトリーを断片化できるため、ディレクトリーの安定した整数オフセットを返すことは困難です。そのため、0 以外のオフセットで seekdir() システムコールを呼び出しても、動作する場合がありますが、動作を保証するものではありません。seekdir() をオフセット 0 で呼び出すと必ず動作します。これは、rewinddir() システムコールと同等のものです。
  • スパースファイルは、stat() システムコールの st_blocks フィールドに正しく伝わりませんでした。st_blocks フィールドには、ファイルサイズをブロックサイズで割った商が常に入力されているため、CephFS では、割り当てられたり書き込まれたりしたファイルの一部を明示的に追跡しません。この動作により、du などのユーティリティーが使用スペースを過大評価してしまいます。
  • mmap() システムコールでファイルを複数のホストのメモリーにマッピングした場合、書き込み操作が他のホストのキャッシュに一貫して伝わらない。つまり、あるページがホスト A でキャッシュされ、ホスト B で更新された場合、ホスト A のページはコヒーレントに無効にはなりません。
  • CephFS クライアントには、スナップショットへのアクセス、作成、削除、名前の変更に使用される隠れた .snap ディレクトリーがあります。このディレクトリーは readdir() システムコールから除外されていますが、同名のファイルやディレクトリーを作成しようとしたプロセスはエラーを返します。この隠しディレクトリーの名前は、マウント時に -o snapdirname=.<new_name> オプションを使用するか、client_snapdir 設定オプションを使用して変更できます。

関連情報

関連情報

  • Red Hat OpenStack Platform で Ceph File System へのインターフェイスとして NFS Ganesha を使用する場合、そのような環境をデプロイメントする方法は、CephFS via NFS Back End Guide for Shared File System ServiceCephFS with NFS-Ganesha のデプロイメントセクションを参照してください。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.