検索

1.4. Ceph ファイルシステムの POSIX コンプライアンスとの相違点

download PDF

本セクションでは、Ceph File System(CephFS)が厳格な POSIX セマンティクスと異なる状況を一覧表示します。

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

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.