このトピックでは、s3fs、goofys、およびRcloneを使用して、さまざまなオペレーティングシステムのローカルファイルシステムにObject Storage Service (OSS) バケットをマウントする方法について説明します。 これにより、ローカルファイルに対する操作と同じ方法でOSSオブジェクトに対する操作を実行でき、データを共有できます。
前提条件
RAM (Resource Access Management) ユーザーが作成され、AccessKeyペアが取得されます。 詳細については、「RAM ユーザーの作成」をご参照ください。
システム権限またはカスタム権限がRAMユーザーに付与されます。
システム権限: AliyunOSSFullAccessポリシーをRAMユーザーにアタッチして、RAMユーザーがOSSを管理できるようにするか、AliyunOSSReadOnlyAccessポリシーをRAMユーザーにアタッチして、RAMユーザーがOSSオブジェクトにのみアクセスできるようにすることができます。
カスタム権限: RAMユーザーにカスタム権限を付与して、ビジネスシナリオに基づいてきめ細かいOSS権限制御を実装できます。 詳細については、「RAMポリシーの一般的な例」をご参照ください。
s3fs
s3fsを使用して、LinuxまたはmacOSのローカルファイルシステムにOSSバケットをマウントできます。 OSSバケットをローカルファイルシステムにマウントした後、ローカルファイルに対する操作と同じ方法でOSSオブジェクトに対する操作を実行でき、データを共有できます。 s3fsの詳細については、『GitHub』をご参照ください。 s3fsを使用してOSSバケットをローカルファイルシステムにマウントするときに発生する可能性のある問題を解決する方法については、「FAQ」をご参照ください。
主な機能
POSIXファイルシステムのほとんどの機能をサポートします。 たとえば、オブジェクトとディレクトリをアップロードおよびダウンロードしたり、シンボリックリンクやユーザー権限を設定したりできます。
ランダム書き込み機能をサポートし、既存のオブジェクトにデータを追加できます。
ハードリンクをサポートしていません。
マルチパートアップロードを使用してラージオブジェクトをアップロードします。
ローカルファイルをキャッシュとして使用します。
s3fsを使用してオブジェクトをアップロードまたはダウンロードする場合、オブジェクトをローカルにキャッシュする必要があります。 ダウンロードまたはアップロードの速度は、ディスクの読み取り /書き込みパフォーマンスによって異なります。 ローカルキャッシュのサイズは無限に大きくなる可能性があります。 ローカルキャッシュを定期的にクリアすることを推奨します。
手順
s3fsを使用してOSSバケットをローカルファイルシステムにマウントするには、次の手順を実行します。
s3fsをインストールします。
次の項目は、Ubuntu、CentOS、およびmacOSにs3fsをインストールするためのコマンドの実行方法の例です。 他のオペレーティングシステムでs3fsをインストールするコマンドを実行する方法の詳細については、「インストール」をご参照ください。
Ubuntu
sudo aptインストールs3fs
CentOS
sudo yumインストールepel-release sudo yumインストールs3fs-fuse
Mac
brew install -- cask macfuse brew install gromgit/fuse/s3fs-mac
バケットへのアクセスに使用するアカウント情報を設定します。
バケットへのアクセスに使用できるAccessKeyペアを /.passwd-s3fsファイルに格納します。
echo ACCESS_KEY_ID:ACCESS_KEY_SECRET > ${HOME}/.passwd-s3fs
/.passwd-s3fsファイルの権限を600に設定します。
chmod 600 ${HOME}/.passwd-s3fs
バケツをマウントします。
次のコマンドを実行して、マウントターゲットを作成します。
mkdir /tmp/oss-bucket
次のコマンドを実行して、中国 (杭州) リージョンのexamplebucketバケットを /tmp/oss-bucketにマウントします。
s3fs examplebucket /tmp/oss-bucket -o passwd_file=$HOME/.passwd-s3fs -ourl=http://oss-cn-hangzhou.aliyuncs.com
説明Elastic Compute Service (ECS) インスタンスがOSSバケットと同じリージョンにある場合、内部endpoin t oss-cn-hangzhou-internal.aliyuncs.comを使用してECSインスタンスからOSSバケットにアクセスできます。 詳細は、「リージョンとエンドポイント」をご参照ください。
s3fsでサポートされているパラメーターの詳細については、[オプション] をご参照ください。
グーフィー
goofysを使用すると、LinuxまたはmacOSのローカルファイルシステムにバケットをマウントできます。 goofysはPOSIXの特定の機能のみをサポートします。 詳細については、『GitHub』をご参照ください。
主な機能
シーケンシャル書き込み機能のみをサポートします。
オブジェクトの権限と属性は保存されません。
シンボリックリンクとハードリンクはサポートしていません。
作成時刻 (ctime) 、アクセス時刻 (atime) 、変更時刻 (mtime) は同じである。
ローカルキャッシュに依存しません。
オブジェクトメタデータに対する操作はサポートされていません。 オブジェクトメタデータに依存する特定のシナリオでは、goofysには使用制限があります。
s3fsと比較して、goofysはローカルキャッシュに依存しません。 この場合、goofysはcpやmvなどの操作で読み書きのパフォーマンスが向上します。 詳細については、Benchmarkをご覧ください。
ランダム書き込みはサポートされていません。 goofysは読み取り専用のシナリオに適しています。
ビジネス要件に基づいてgoofysを使用できます。
手順
goofysを使用してOSSバケットをローカルファイルシステムにマウントするには、次の手順を実行します。
goofysをインストールします。
次の項目では、LinuxおよびmacOSでgoofysをインストールするためのコマンドの実行方法の例を示します。 他のオペレーティングシステムでgoofysをインストールするコマンドを実行する方法の詳細については、「インストール」をご参照ください。
Linux
curl -SL "https://github.com/kahing/goofys/releases/latest/download/goofys" -o $HOME/goofys chmod u + x $ホーム /グーフィー
Mac
醸造キャスクをインストールosxfuse brew install goofys
バケットへのアクセスに使用するアカウント情報を設定します。
次のコマンドを実行して、設定ファイルを作成します。
mkdir ~/.aws
次のコマンドを実行して、設定ファイルを開きます。
vi ~/.aws /資格情報
AccessKeyペアを指定します。 AccessKeyペアは、AccessKey IDとAccessKeyシークレットで構成されます。
[デフォルト] aws_access_key_id=OSSへのアクセスに使用されるAccessKey ID。 aws_secret_access_key=OSSへのアクセスに使用されるAccessKeyシークレットです。
バケツをマウントします。
次の例では、中国 (杭州) リージョンのexamplebucketバケットが /mnt/oss-bucketにマウントされています。
次のコマンドを実行して、マウントターゲットを作成します。
mkdir /mnt/oss-bucket
次のコマンドを実行して、examplebucketバケットを /mnt/oss-bucketにマウントします。
$HOME/goofys -- エンドポイントhttp://oss-cn-hangzhou.aliyuncs.com -- サブドメインexamplebucket /mnt/oss-bucket
説明仮想ドメイン名を有効にするには、前の例の -- subdomainオプションが必要です。 マウントするバケット、バケットが配置されているリージョンのエンドポイント、マウントターゲットなどの他のオプションは、要件に基づいて置き換えることができます。
ECSインスタンスがOSSバケットと同じリージョンにある場合、内部endpoin t oss-cn-hangzhou-internal.aliyuncs.comを使用してECSインスタンスからOSSバケットにアクセスできます。
Rclone
Rcloneは、クラウド内のデータを管理するために使用されるコマンドラインプログラムであり、50を超えるクラウドストレージサービス間のデータ同期をサポートします。 Rcloneを使用すると、Windowsのローカルファイルシステムにバケットをマウントできます。 これにより、ローカルディスクを使用してデータを共有するのと同じ方法でバケットを使用できます。
主な機能
ファイル同期、ファイル転送、ファイル暗号化、およびバケットのマウントをサポートします。
さまざまなオペレーティングシステムのローカルファイルシステムにバケットをマウントでき、さまざまなプロトコルを使用してサービスを提供します。
詳細については、「Rcloneがファイルをクラウドストレージに同期する」をご参照ください。
手順
Rcloneを使用してOSSバケットをWindowsのローカルファイルシステムにマウントするには、次の手順を実行します。
画面の指示に従って、Winfspをダウンロードしてインストールします。
この例では、winfsp-1.12.22339がダウンロードされます。 winfsp-1.12.22339をダウンロードするには、WinFsp 2023tにアクセスしてください。
ダウンロードRclone.
この例では、rclone-v1.60.1-windows-amd64がダウンロードされます。 rclone-v1.60.1-windows-amd64をダウンロードするには、ダウンロードをご覧ください。 Rcloneはコマンドラインプログラムです。 インストールパッケージをダウンロードしたら、D:\Rcloneなどのローカルディレクトリに解凍するだけです。
Rcloneを設定します。
環境変数にD:\Rcloneを追加します。
コマンドラインインターフェイス (CLI) を開き、rclone -- versionと入力して、enterキーを押します。
rclone 1.60.1が返されると、Rcloneがインストールされます。
rclone configコマンドを入力し、Enterキーを押します。
nを入力し、Enterキーを押して、新しいリモートを作成します。
この例では、新しいリモートの名前はtest-remoteです。
oss-diskなどのディスク名を入力し、Enterキーを押します。
Amazon S3準拠ストレージを含むオプションを選択するか、5と入力してenterキーを押します。
Alibaba Cloud Object Storage System (OSS) を含むオプションを選択するか、2と入力してenterキーを押します。
CLIにenv_auth> が表示されたら、Enterキーを押します。
CLIにaccess_key_id> が表示されたら、OSSへのアクセスに使用するAccessKey IDを入力し、enterキーを押します。
CLIにsecret_access_key> が表示されたら、OSSへのアクセスに使用されるAccessKeyシークレットを入力し、enterキーを押します。
CLIにendpoint> が表示されたら、OSSへのアクセスに使用するエンドポイントを入力し、enterキーを押します。
たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをo oss-cn-hangzhou.aliyuncs.comに設定します。 Windowsを実行するECSインスタンスがOSSバケットと同じリージョンにある場合、内部endpoin t oss-cn-hangzhou-internal.aliyuncs.comを使用してECSインスタンスからOSSバケットにアクセスできます。
CLIにacl> が表示されたら、オブジェクトアクセス制御リスト (ACL) を選択し、Enterキーを押します。
このオプションは、新しくアップロードされたオブジェクトに対してのみ使用できます。 要件に基づいてオブジェクトACLを選択できます。 この例では、オブジェクトACLをデフォルトに設定するために1が入力されます。 defaultは、オブジェクトACLがプライベートであることを示します。
CLIにstorage_class> が表示されたら、オブジェクトストレージクラスを選択してEnterキーを押します。
この例では、オブジェクトストレージクラスをデフォルトに設定するために1が入力されています。 defaultは、オブジェクトストレージクラスがバケットから継承されることを示します。
CLIに高度な設定の編集?(y/n) が表示されたら、nと入力してenterキーを押します。
qを入力して設定を完了します。
バケツをマウントします。
次のサンプルコードは、examplebucketという名前のバケットをE: にマウントし、D:\disk-cacheをキャッシュディレクトリとして使用する方法の例を示しています。
rclone mount oss-disk:/examplebucket E: -- cache-dir D:\disk-cache -- vfs-cache-mode writes
「the service rclone has been started」メッセージが返された場合、examplebucketはE: にマウントされます。 この場合、examplebucket(E :) を表示できます。