本トピックでは、ossfs 2.0 が Object Storage Service (OSS) バケット内のファイルとフォルダをどのように検出するかについて説明します。
オブジェクトストレージと従来のストレージの主な違い
オブジェクトストレージは、従来のファイルシステムの階層的なフォルダ構造とは異なり、フラットなアドレス空間を使用してデータを格納します。主な違いは次のとおりです:
階層的な関連性がない:OSS バケットにはファイルやフォルダという概念がなく、すべてのデータはオブジェクトとして格納されます。
命名規則の違い:
従来のファイルシステム:同じフォルダ内に 'a' という名前のファイルと 'a/' という名前のフォルダを共存させることはできません。
オブジェクトストレージ:'a' と 'a/' は 2 つの独立したオブジェクトです。これらは共存可能であり、論理的な関連性はありません。
ossfs 2.0 のファイルシステムシミュレーションメカニズム
ossfs 2.0 を使用して OSS バケットをマウントすると、ossfs は次のようにファイルシステムをシミュレートします。
フォルダツリーの構築:オブジェクト名に基づいて、スラッシュ (
/) をパス区切り文字として使用し、仮想的なフォルダ構造を構築します。検出ロジック:オブジェクト名に含まれるスラッシュ (
/) 区切り文字とサブオブジェクト間の関係を分析することで、オブジェクトタイプ (ファイルまたはフォルダ) を推測します。
オブジェクトの検出原理
ossfs 1.0 や ossfs 2.0 などのツール、または Cloud Storage Gateway (CSG) などのプロダクトを使用して OSS バケットをマウントする場合、バケット内にオブジェクトを作成する際はファイルシステムの命名規則に従ってください。a と a/ のように、末尾のスラッシュの有無のみが異なる名前のオブジェクトを作成しないでください。
シナリオ | 検出結果 | 条件またはロジック |
バケットにオブジェクト | ファイル | 末尾に |
バケットにオブジェクト | フォルダ | オブジェクト名が |
バケットにオブジェクト | フォルダ | サブオブジェクトのパス |
バケットにオブジェクト | 未定義の動作 | バケット内のオブジェクトの命名が、ファイルシステムの規則に従っていません。 |
バケットにオブジェクト | 未定義の動作 | バケット内のオブジェクトの命名が、ファイルシステムの規則に従っていません。 |