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) | |
Ubuntu 20.04 (x64) | |
Ubuntu 18.04 (x64) | |
Ubuntu 16.04 (x64) | |
Ubuntu 14.04 (x64) | |
CentOS 8.0 (x64) | |
CentOS 7.0 (x64) | |
Anolis8/Alibaba Cloud Linux 3 | |
Anolis7/Alibaba Cloud Linux 2 |
ossfsのインストールと設定
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を必要なパッケージの名前に置き換えます。
アップロードされたオブジェクトの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
FUSEのバージョンを確認します。
fusermount -V
バケットのマウントとバケット内のデータへのアクセス
ローカルファイルシステムにマウントするバケットを選択します。
説明低頻度アクセス (IA) バケットやアーカイブオブジェクトのリアルタイムアクセスが有効になっているバケットはマウントしないことをお勧めします。 これは、ローカルディレクトリからそのようなバケットへのアップロードが2つのアップロード要求を開始する可能性があるためです。最初は0バイトのオブジェクトを作成し、2番目は実際のデータをアップロードしてバケットにオブジェクトを作成します。
0バイトのオブジェクトでは、IAまたはアーカイブに64 KBの30日間のストレージに料金が発生します。 これにより、追加のストレージコストが発生します。
バケットへのアクセスに使用するアカウント情報を設定します。
/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
バケットを指定されたディレクトリにマウントします。
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エンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。ローカルファイルシステムからバケット内のオブジェクトを読み取ります。
バケット内のオブジェクトのリストを照会します。
sudo ls -lh /tmp/ossfs
説明リストディレクトリなどのメタデータ関連の操作には、OSSへのリモートアクセスが含まれ、ある程度の遅延があります。
オブジェクトをコピーします。
sudo cp /tmp/ossfs/bird.jpeg /root
上記のコマンドは、
bird.jpeg
オブジェクトを/root
ディレクトリにコピーします。バケットにオブジェクトを 1 つアップロードします。
sudo cp /root/forest.jpeg /tmp/ossfs
上記のコマンドは、バケットがマウントされているローカルディレクトリに
forest.jpeg
ファイルを追加します。説明アップロードが中断されて再開されない場合、オブジェクトのアップロードされた部分はパーツとしてバケットに保存されます。 追加のストレージ料金を回避するには、次の方法を使用して不要になったパーツを削除することを推奨します。
手動でパーツを削除します。 詳細については、「パーツの削除」をご参照ください。
ライフサイクルルールを設定して部品を自動的に削除します。 詳細については、「最終変更時刻に基づくライフサイクルルール」をご参照ください。
バケットをマウントしたままにしない場合は、バケットのマウントを解除します。
sudo fusermount -u /tmp/ossfs