すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:ossfsを使用したLinuxシステムのローカルディレクトリへのOSSバケットのマウント

最終更新日:Mar 11, 2024

ossfsを使用すると、Object Storage Service (OSS) バケットをLinuxシステムのローカルディレクトリにマウントして、アプリケーションがバケット内のリソースにローカルリソースであるかのようにアクセスできるようにすることができます。 マウント機能は、リソース共有を容易にします。

重要

ossfsのパフォーマンスと機能は、ネットワークを介してデータをクラウドに同期する必要があるため、ローカルファイルシステムほど優れていません。 データベースなど、I/O要件の高いアプリケーションにossfsを使用する場合は注意が必要です。

制御ポリシー機能の動作

s3fsはFilesystem in Userspace (FUSE) ベースのファイルシステムで、Amazon S3バケットをローカルファイルシステムにマウントできます。 ossfsはs3fsに基づいて構築され、以下を含むすべてのs3fs機能が組み込まれています。

  • ファイルとディレクトリのアップロードとダウンロード、ユーザー権限など、ポータブルオペレーティングシステムインターフェイス (POSIX) 標準で説明されているほとんどの機能のサポート。

  • デフォルトでは、データアップロードのマルチパートアップロードと再開可能アップロード。

  • データ整合性チェックのためのMD5検証。

ランタイム環境

ossfsはFUSEベースのファイルシステムであり、FUSE互換マシンでのみ動作します。 ossfsは、次のシステム用のインストーラーパッケージを提供します。 他の環境でossfsを実行するには、ソースコードを使用して必要なプログラムをビルドする必要があります。

  • Linux

    • CentOS 7.0以降

    • Ubuntu 14.04以降

    • Anolis7以降。

  • ヒューズ

    • FUSE 2.8.4以降

      説明

      次のコマンドを実行して、FUSEのバージョンを確認できます。

      fusermount -V

制限事項

ossfsは、バケットをローカルファイルシステムにマッピングします。 ossfsには次の制限が適用されます。

  • ossfsは、高同時読み取りおよび書き込み操作を必要とするシナリオには適していません。

  • ossfsはハードリンクをサポートしていません。

  • アーカイブオブジェクトのリアルタイムアクセスが無効になっているバケット内の、復元されていないCold Archiveオブジェクト、復元されていないDeep Cold Archiveオブジェクト、または復元されていないArchiveオブジェクトにはアクセスできません。

  • バケットが複数のクライアントにマウントされ、データが同時にマウントポイントに書き込まれる場合、ossfsは一貫性を保証しません。

ossfsの使用

次のコマンドは、ecs-userユーザーとして実行されます。 コマンドをrootユーザーとして実行するには、コマンドからsudoを削除します。

ossfsのダウンロード

次の表に、一般的に使用されるLinuxディストリビューション用のossfsインストーラーパッケージへのダウンロードリンクを示します。 別のディストリビューションでossfsを使用する場合は、ソースコードのコンパイルが必要です。 ソースコードのURLとソースコードのコンパイル方法の詳細については、GitHubをご参照ください。

Linuxディストリビューション

ダウンロードリンク

Ubuntu 22.04 (x64)

ossfs_1.91.1_ubuntu22.04_amd64.deb

Ubuntu 20.04 (x64)

ossfs_1.91.1_ubuntu20.04_amd64.deb

Ubuntu 18.04 (x64)

ossfs_1.91.1_ubuntu18.04_amd64.deb

Ubuntu 16.04 (x64)

ossfs_1.91.1_ubuntu16.04_amd64.deb

Ubuntu 14.04 (x64)

ossfs_1.91.1_ubuntu14.04_amd64.deb

CentOS 8.0 (x64)

ossfs_1.91.1_centos8.0_x86_64.rpm

CentOS 7.0 (x64)

ossfs_1.91.1_centos7.0_x86_64.rpm

Anolis8/Alibaba Cloud Linux 3

ossfs_1.91.1_anolisos8.0_x86_64.rpm

Anolis7/Alibaba Cloud Linux 2

ossfs_1.91.1_anolisos7.0_x86_64.rpm

ossfsのインストールと設定

  1. ossfsをインストールします。

    • Ubuntu

      たとえば、次のコマンドを順番に実行して、Ubuntu 16.04 (x64) にossfsをインストールします。

      sudo wget https://gosspublic.alicdn.com/ossfs/ossfs_1.91.1_ubuntu16.04_amd64.deb
      sudo apt-getアップデート
      sudo apt-get gdebi-coreをインストールする
      sudo gdebi ossfs_1.91.1_ubuntu16.04_amd64.deb 
    • CentOS/Anolis

      たとえば、次のコマンドを実行して、CentOS 7.0 (x64) にossfsをインストールします。

      sudo wget https://gosspublic.alicdn.com/ossfs/ossfs_1.91.1_centos7.0_x86_64.rpm
      sudo yum install ossfs_1.91.1_centos7.0_x86_64.rpm 

      クライアントがYellowdog Updater, Modified (YUM) を使用してRPMパッケージをインストールする場合、クライアントノードネットワーク環境が適切でない場合、YUMを使用して依存関係をダウンロードできない可能性があります。 この問題を解決するには、YUMを使用して、同じオペレーティングシステムバージョンを実行するノードに通常のネットワーク経由で依存関係をダウンロードし、必要なノードに依存関係をコピーします。 たとえば、ossfsはFUSE 2.8.4以降で実行されます。 次のコマンドを実行して、最新バージョンのFUSEをYUMソースからローカルデバイスにダウンロードできます。

      sudo yum install -- downloadonly -- downloaddir=./ fuse
      重要

      他の依存関係をダウンロードするには、fuseを必要なパッケージの名前に置き換えます。

  2. アップロードされたオブジェクトのContent-Typeとファイル名拡張子を一致させる場合は、mime.typesファイルを追加します。

    mime.typesファイルを追加しない場合、OSSはデフォルトでアップロードされたオブジェクトのContent-Typeをapplication/octet-streamに設定します。

    次の例は、mime.typesファイルを追加する方法を示しています。

    • Ubuntu

      次のコマンドを実行して、mime.typesファイルを追加します。

      sudo apt-get install mime-support
    • CentOS/Anolis

      次のコマンドを実行して、mime.typesファイルを追加します。

      sudo yum install mailcap
  3. FUSEのバージョンを確認します。

    fusermount -V

バケットのマウントとバケット内のデータへのアクセス

  1. ローカルファイルシステムにマウントするバケットを選択します。

    説明
    • 低頻度アクセス (IA) バケットやアーカイブオブジェクトのリアルタイムアクセスが有効になっているバケットはマウントしないことをお勧めします。 これは、ローカルディレクトリからそのようなバケットへのアップロードが2つのアップロード要求を開始する可能性があるためです。最初は0バイトのオブジェクトを作成し、2番目は実際のデータをアップロードしてバケットにオブジェクトを作成します。

      0バイトのオブジェクトでは、IAまたはアーカイブに64 KBの30日間のストレージに料金が発生します。 これにより、追加のストレージコストが発生します。

  2. バケットへのアクセスに使用するアカウント情報を設定します。

    /etc/passwd-ossfsファイルに次の情報を書き込みます。バケット名と、バケットに対するアクセス権限を持つRAMユーザーのAccessKeyペア (AccessKey IDとAccessKey secret) です。 次に、ファイルの権限を640に設定します。

    sudo sh -c 'echo <BucketName >:< yourAccessKeyId >:< yourAccessKeySecret> > /etc/passwd-ossfs'
    ### ルートユーザーロールを使用する場合は、次のコマンドを実行します。:###
    # echo <BucketName >:< yourAccessKeyId >:< yourAccessKeySecret> > /etc/passwd-ossfs
    sudo chmod 640 /etc/passwd-ossfs 

    BucketName、yourAccessKeyId、およびyourAccessKeySecretを、実際のバケット名、AccessKey ID、およびAccessKeyシークレットに置き換えます。 例:

    sudo sh -c 'エコーバケットテスト: LTALbZcdVCmQ ****:MOk8x0y9hxQ31coh7A5e2MZEUz **** > /etc/passwd-ossfs'
    sudo chmod 640 /etc/passwd-ossfs 
  3. バケットを指定されたディレクトリにマウントします。

    sudo ossfs <BucketName> <mountfolder> -o url=<エンドポイント>

    次のコマンドは、中国 (杭州) リージョンのbucket-testという名前のバケットを /tmp/ossfsディレクトリにマウントします。

    sudo mkdir /tmp/ossfs
    sudo ossfs bucket-test /tmp/ossfs -o url=http://oss-cn-hangzhou-internal.aliyuncs.com 
    重要

    ECS (Elastic Compute Service) インスタンスでossfsを使用し、マウントするバケットがECSインスタンスと同じリージョンにある場合、そのリージョンの内部OSSエンドポイントを使用できます。 たとえば、この例では、OSSエンドポイントをoss-cn-hangzhou-internal.aliyuncs.comに変更して、トラフィックコストを削減できます。 内部OSSエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

  4. ローカルファイルシステムからバケット内のオブジェクトを読み取ります。

    1. バケット内のオブジェクトのリストを照会します。

      sudo ls -lh /tmp/ossfs

      image

      説明

      リストディレクトリなどのメタデータ関連の操作には、OSSへのリモートアクセスが含まれ、ある程度の遅延があります。

    2. オブジェクトをコピーします。

      sudo cp /tmp/ossfs/bird.jpeg /root

      上記のコマンドは、bird.jpegオブジェクトを /rootディレクトリにコピーします。

    3. バケットにオブジェクトを 1 つアップロードします。

      sudo cp /root/forest.jpeg /tmp/ossfs

      上記のコマンドは、バケットがマウントされているローカルディレクトリにforest.jpegファイルを追加します。

      image

      説明

      アップロードが中断されて再開されない場合、オブジェクトのアップロードされた部分はパーツとしてバケットに保存されます。 追加のストレージ料金を回避するには、次の方法を使用して不要になったパーツを削除することを推奨します。

  5. バケットをマウントしたままにしない場合は、バケットのマウントを解除します。

    sudo fusermount -u /tmp/ossfs

参考資料

  • ossfsマウント設定の詳細については、「高度な設定」をご参照ください。

  • ossfsコマンドのオプションとパラメーターの詳細については、「共通オプション」をご参照ください。

  • ossfsに関するよくある質問のリストについては、「FAQ」をご参照ください。