ossfsを使用すると、Object Storage Service (OSS) バケットをLinuxオペレーティングシステムのローカルディレクトリにマウントできます。 これにより、アプリケーションがローカルリソースにアクセスするのと同じ方法で、アプリケーションがバケット内のリソースにアクセスできます。 マウント機能は、リソース共有を容易にします。
前提条件
OSSが有効化され、OSSバケットが作成されます。 詳細については、「OSSの使用を開始」および「バケットの作成」をご参照ください。
ossfsのインストールと設定
ossfsをインストールします。
Ubuntu
次のコマンドを順番に実行して、Ubuntu 16.04 (x64) にossfsをインストールします。
sudo wget https://gosspublic.alicdn.com/ossfs/ossfs_1.91.3_ubuntu16.04_amd64.deb sudo apt-get update sudo apt-get install gdebi-core sudo gdebi ossfs_1.91.3_ubuntu16.04_amd64.deb
CentOSまたはAnolis
CentOS/Anolis
次のコマンドを実行して、CentOS 7.0 (x64) にossfsをインストールします。
sudo wget https://gosspublic.alicdn.com/ossfs/ossfs_1.91.3_centos7.0_x86_64.rpm sudo yum install ossfs_1.91.3_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を必要なパッケージの名前に置き換えます。
アップロードされたオブジェクトのコンテンツタイプとファイル名拡張子を一致させる場合は、mime.typesファイルを追加します。 ossfsは、/etc/mime.types内のコンテンツを照会して、オブジェクトのコンテンツタイプを設定します。
mime.typesファイルを追加しない場合、OSSはデフォルトでアップロードされたオブジェクトのコンテンツタイプをapplication/octet-streamに設定します。
次のコマンドを実行して、mime.typesファイルを追加します。
Ubuntu
次のコマンドを実行して、mime.typesファイルを追加します。
sudo apt-get install mime-support
CentOSまたはAnolis
次のコマンドを実行して、mime.typesファイルを追加します。
sudo yum install mailcap
バケットのマウントとバケット内のデータへのアクセス
ローカルディレクトリにマウントするバケットを選択します。
説明ローカルディレクトリから前のバケットにオブジェクトをアップロードするときに2つのアップロード要求が開始される可能性があるため、低頻度アクセス (IA) バケットまたはアーカイブオブジェクトのリアルタイムアクセスが有効になっているバケットをローカルディレクトリにマウントしないことをお勧めします。 最初のリクエストは0バイトのオブジェクトを作成し、2番目のリクエストはバケット内のオブジェクトに実際のデータをアップロードします。 IAまたはArchiveストレージクラスに基づく0バイトのオブジェクトに対して、30日間の64 KBのストレージ料金が請求されます。 この結果、予想外の保管コストが発生する。
バケットへのアクセスに使用するアカウント情報を設定します。
/etc/passwd-ossfsファイルに次の情報を書き込みます。バケット名と、バケットに対するアクセス権限を持つRAMユーザーのAccessKeyペア (AccessKey IDとAccessKey secret) です。 次に、ファイルの権限を640に設定します。
sudo sh -c 'echo <BucketName>:<yourAccessKeyId>:<yourAccessKeySecret> > /etc/passwd-ossfs' ### Run the following command if you use a root user role:### # echo <BucketName>:<yourAccessKeyId>:<yourAccessKeySecret> > /etc/passwd-ossfs sudo chmod 640 /etc/passwd-ossfs
BucketName、yourAccessKeyId、およびyourAccessKeySecretを、実際のバケット名、AccessKey ID、およびAccessKeyシークレットに置き換えます。 例:
sudo sh -c 'echo bucket-test:LTAI************:MOk8x0y9hx******************** > /etc/passwd-ossfs' sudo chmod 640 /etc/passwd-ossfs
バケットを指定されたディレクトリにマウントします。
説明ossfsを使用して指定したディレクトリにバケットをマウントした後のオブジェクトの読み取りと書き込みのパフォーマンスを確保するために、ossfs V1.91.2およびV1.91.3の提案に基づいて適切なパラメーターを指定することを推奨します。
ossfsを使用してバケットを指定されたディレクトリにマウントした後のデータアクセスのセキュリティを確保するには、正しいアカウント情報とアクセス許可を設定することを推奨します。 詳細については、「ossfsの設定とマウント」をご参照ください。
sudo ossfs <BucketName> <mountfolder> -o url=<Endpoint>
次のコマンドを実行して、中国 (杭州) リージョンの
bucket-test
という名前のバケットを/tmp/ossfs
ディレクトリにマウントします。sudo mkdir /tmp/ossfs sudo ossfs bucket-test /tmp/ossfs -o url=http://oss-cn-hangzhou-internal.aliyuncs.com
重要データの読み取り時に発生するトラフィックコストを削減するために、ossfsをElastic Compute Service (ECS) インスタンスにデプロイし、-o urlを使用して、内部エンドポイントを使用して宛先バケットにアクセスするように指定することを推奨します。 この例では、内部エンドポイントは http://oss-cn-hangzhou-internal.aliyuncs.com です。 内部エンドポイントを使用するには、ECSインスタンスと宛先バケットが同じリージョンにある必要があります。 詳細については、「リージョンとエンドポイント」をご参照ください。
ローカルファイルシステムからバケット内のオブジェクトを読み取ります。
バケット内のオブジェクトのリストを照会します。
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