このトピックでは、ossfsを設定してマウント操作を実行する方法について説明します。
前提条件
ossfsがインストールされています。 詳細については、「ossfsのインストール」をご参照ください。
アカウント情報の指定
ossfsを使用してObject Storage Service (OSS) バケットにアクセスする場合は、AccessKey IDやAccessKey secretなどのアカウント情報を指定する必要があります。 アカウント情報は、$bucket_name:$access_key_id:$access_key_secret
形式でアカウント設定ファイルに書き込む必要があります。 マウント操作を実行すると、ossfsはアカウント設定ファイルからアカウント情報を読み込みます。
AccessKey IDとAccessKeyシークレットの作成方法については、「AccessKeyペアの作成」をご参照ください。
アカウント設定ファイルのデフォルトパスは /etc/passwd-ossfsです。 -opasswd_file=passwd-pathオプションを使用して、設定ファイルを指定することもできます。 デフォルトパスのアカウント設定ファイルの権限は640できます。 別のパスのアカウント設定ファイルの権限を600する必要があります。
アカウント構成ファイルには、複数のアカウントのレコードを含めることができます。各レコードは別々の行にあります。 ossfsを使用してバケットをマウントすると、ossfsはバケット名を正しいアカウントに一致させます。
設定例:
### 1. Store account information in account configuration file /etc/passwd-ossfs and set the permissions of the configuration file to 640. echo bucket-test-1:AAAI************:AAA8x************************* > /etc/passwd-ossfs echo bucket-test-2:BBBI************:BBB8x************************* >> /etc/passwd-ossfs chmod 640 /etc/passwd-ossfs ### 2. Create mount points /tmp/ossfs-1 and /tmp/ossfs-2 and mount buckets bucket-test-1 and bucket-test-2 in the China (Hangzhou) region at the two mount points, respectively. mkdir /tmp/ossfs-1 mkdir /tmp/ossfs-2 ossfs bucket-test-1 /tmp/ossfs-1 -ourl=http://oss-cn-hangzhou.aliyuncs.com ossfs bucket-test-2 /tmp/ossfs-2 -ourl=http://oss-cn-hangzhou.aliyuncs.com
複数のバケットを同時にマウントする必要がある場合は、次の方法でアカウント情報を管理できます。1. すべてのバケットのアカウント情報を1つのアカウント設定ファイルに保存します。 2. 各バケットのアカウント情報を個別のアカウント設定ファイルに保存し、-opasswd_fileオプションを使用して、マウント操作ごとに対応するアカウント設定ファイルを指定します。
設定例:
## Store account information in account configuration file /etc/passwd-ossfs-3 and set the permissions of the configuration file to 600. echo bucket-test-3:CCCIbZcdVCmQ****:CCC8x0y9hxQ31coh7A5e2MZEUz**** > /etc/passwd-ossfs-3 chmod 600 /etc/passwd-ossfs-3 ## Create mount point /tmp/ossfs-3 and mount the bucket-test-3 bucket in the China (Hangzhou) region at the mount point. mkdir /tmp/ossfs-3 ossfs bucket-test-3 /tmp/ossfs-3 -ourl=http://oss-cn-hangzhou.aliyuncs.com -opasswd_file=/etc/passwd-ossfs-3 ## Store account information in account configuration file /etc/passwd-ossfs-4 and set the permissions of the configuration file to 600. echo bucket-test-4:DDDIbZcdVCmQ****:DDD8x0y9hxQ31coh7A5e2MZEUz**** > /etc/passwd-ossfs-4 chmod 600 /etc/passwd-ossfs-4 ## Create mount point /tmp/ossfs-4 and mount the bucket-test-4 bucket in the China (Hangzhou) region at the mount point. mkdir /tmp/ossfs-4 ossfs bucket-test-4 /tmp/ossfs-4 -ourl=http://oss-cn-hangzhou.aliyuncs.com -opasswd_file=/etc/passwd-ossfs-4
インスタンスRAMロールの使用
Elastic Compute Service (ECS) インスタンスのResource Access Management (RAM) ロールに基づいて、ossfsを使用してバケットをマウントすることもできます。 ECSインスタンスにRAMロールをアタッチして、ECSインスタンスからOSSにアクセスするには、Security Token Service (STS) が提供する一時的なアクセス資格情報を使用します。 STSの一時的なアクセス資格情報は自動的に生成および更新されます。 アプリケーションは、インスタンスメタデータURLを使用してSTSの一時的なアクセス資格情報を取得できます。 インスタンスRAMロールは、AccessKeyペアをリークから保護し、きめ細かい権限制御と管理を可能にするのに役立ちます。 インスタンスRAMロールの詳細については、「概要」をご参照ください。
このセクションでは、EcsRamRoleOssTestインスタンスRAMロールに基づいてossfsを使用してバケットをマウントする方法について説明します。
EcsRamRoleOssTestという名前のRAMロールを作成します。
詳細については、「インスタンスRAMロール」をご参照ください。
RAMロールにOSSリソースへのアクセス権限を付与します。
詳細については、「RAMロールへの権限の付与」をご参照ください。 この例では、OSSへの読み取り専用アクセスを許可するために、AliyunOSSReadOnlyAccessポリシーがRAMロールにアタッチされています。 実際のビジネスアプリケーションでは、カスタムポリシーをRAMロールにアタッチできます。 詳細については、「カスタムポリシーの作成」をご参照ください。
RAMロールをECSインスタンスにアタッチします。
詳細については、「インスタンスRAMロール」をご参照ください。
インスタンスメタデータURLに基づいてossfsを使用してマウント操作を実行します。
説明インスタンスメタデータURLに基づいてossfsを使用してマウント操作を実行する場合、通常モードでのみインスタンスメタデータにアクセスできます。 詳細については、「インスタンスメタデータの取得」をご参照ください。
ECSインスタンスにログインします。
を含めるには、-oram_roleマウント操作のオプションを使用して、OSSバケットをマウントします。
次の例では、中国 (杭州) リージョンの /tmp/ossfsディレクトリにBucket1という名前のバケットをマウントします。 このコマンドでは、
100.100.100.200
はECSインスタンスメタデータサービスのデフォルトのIPアドレスです。ossfs bucket1 /tmp/ossfs -ourl=http://oss-cn-hangzhou.aliyuncs.com -oram_role=http://100.100.100.200/latest/meta-data/ram/security-credentials/EcsRamRoleOssTest
アクセス許可の設定
デフォルトでは、ossfsがバケットをマウントするディレクトリには、マウントポイントの所有者のみがアクセスできます。 マウントポイントの所有者は、マウント操作を実行するユーザーです。 他のユーザーまたはユーザーグループがマウントポイントにアクセスできるようにデフォルトの権限設定を変更するには、ossfsを実行するときに次のオプションを使用します。
オプション | 説明 |
uid | ディレクトリの所有者のユーザーID (UID) を指定します。 |
gid | ディレクトリの所有者のグループID (GID) を指定します。 |
umask | マウントポイントのファイルとディレクトリのアクセス許可マスクを指定します。 たとえば、-oumask=007を使用してマウントポイントのファイルの権限を770に設定したり、-oumask=077を使用してマウントポイントのファイルの権限を700に設定したりできます。 |
設定例:
すべてのユーザーからのアクセスを許可する権限を777に設定します。
ossfs bucket_name mount_point -ourl=endpoint -oallow_other
マウントポイントのファイルとディレクトリの権限を770に設定して、マウントポイントの所有者と同じグループのユーザーからのアクセスのみを許可します。
ossfs bucket_name mount_point -ourl=endpoint -oumask=007
マウント操作でユーザーIDとグループIDを指定し, 指定したユーザーと同じグループのユーザーからのアクセスを許可する権限を770に設定します。
この例では、ユーザーwwwが使用されています。 idコマンドを実行してユーザーのUIDとGIDを取得し、バケットをマウントするときにuidとgidオプションを指定できます。
id www uid=1000(www) gid=1000(web) groups=1000(web) ossfs bucket_name mount_point -ourl=endpoint -oallow_other -ouid=1000 -ogid=1000 -omp_umask=007 -oumask=007
特定のディレクトリをマウントする
バケット全体をローカルファイルシステムにマウントするだけでなく、次のコマンド構文を使用してバケット内の特定のディレクトリをローカルファイルシステムにマウントできます。
ossfs bucket:/prefix mount_point -ourl=endpoint
ディレクトリをマウントするときは、ディレクトリ ${prefix}/ がバケットに存在することを確認してください。 ossutilのstatコマンドを実行して、そのようなディレクトリオブジェクトが存在するかどうかを確認できます。
次のサンプルコマンドは、中国 (杭州) リージョンのbucket-ossfs-testバケットのfolderディレクトリをローカルディレクトリ /tmp/ossfs-folderにマウントします。
ossfs bucket-ossfs-test:/folder /tmp/ossfs-folder -ourl=http://oss-cn-hangzhou.aliyuncs.com
起動時にディレクトリを自動的にマウントする
バケット名、AccessKey ID、AccessKeyシークレットなどの情報を/etc/passwd-ossfsファイルの権限を640に変更します。
詳細については、「ossfsのインストール」をご参照ください。
起動時に自動マウントを有効にします。
説明次の例は、一般的なディストリビューションとバージョンの起動時に自動マウントを有効にする方法を示しています。 その他のディストリビューションおよびバージョンについては、関連ドキュメントを参照して、起動時に自動マウントを有効にします。
Ubuntu 14.04以降およびCentOS 6.5以降のfstabファイルを使用して起動時に自動マウントを有効にする
次の行を /etc/fstabファイルに追加します。
ossfs#bucket_name mount_point fuse _netdev,url=url,allow_other 0 0
パラメーター:
パラメーター
説明
bucket_name
マウントするバケットの名前。
mount_point
バケットをマウントするローカルディレクトリ。
url=url
バケットが配置されているリージョンのエンドポイント。
0 0
ファイルシステムのオプション。
/etc/fstabファイルを保存します。 mount -aコマンドを実行します。 エラーが報告されない場合、設定は正しく構成されています。
上記の手順を完了すると、Ubuntu 14.04以降で起動時の自動マウントが有効になります。 CentOS 6.5以降の場合は、次のコマンドも実行する必要があります。
chkconfig netfs on
CentOS 7.0以降のスクリプトを使用して起動時に自動マウントを有効にする
/etc/init.d/ ディレクトリにossfsファイルを作成し、テンプレートの内容をこのファイルにコピーします。 your_xxxを実際の情報に置き換えます。
次のコマンドを実行して、ossfsスクリプトに実行権限を付与します。
chmod a+x /etc/init.d/ossfs
上記のコマンドを実行した後、スクリプトを実行できます。 スクリプトの内容が正しい場合、OSSバケットは指定されたディレクトリにマウントされます。
次のコマンドを実行して、起動時に自動的に有効になるサービスとしてossfsスクリプトを起動します。
chkconfig ossfs on
上記の手順を完了すると、ossfsは起動時にバケットを自動的にマウントします。
Supervisorを使用してossfsを開始する
次の手順では、sudo権限を持つuser1ユーザーのインストールパスを使用します。 インストールパスを実際のインストールパスに置き換えます。
次のコマンドを実行してSupervisorをインストールします。
CentOS
sudo yum install supervisor
Ubuntu
sudo apt-get install supervisor
ossfsスタートアップスクリプトを作成します。
次のコマンドを実行して、start_ossfs.shファイルを作成します。
mkdir /home/user1/ossfs_scripts
起動スクリプトを記述します。
vi /home/user1/ossfs_scripts/start_ossfs.sh
次のコードは、start_ossfs.shファイルの内容の例です。
# Unmount the bucket. fusermount -u /mnt/ossfs # Mount the bucket again. You must use the -f parameter to run ossfs on the frontend. exec ossfs bucket_name mount_point -ourl=endpoint -f
を編集します。Edit thesupervisord.confファイルを作成します。
Centos
sudo vi /etc/supervisord.conf
Ubuntu
sudo vi /etc/supervisor/supervisord.conf
ファイルの最後に次の内容を追加します。
[program:ossfs] command=bash /home/user1/ossfs_scripts/start_ossfs.sh logfile=/var/log/ossfs.log log_stdout=true log_stderr=true logfile_maxbytes=1MB logfile_backups=10
次のコマンドを実行してSupervisorを実行します。
supervisord
Supervisorが期待どおりに実行されるかどうかを確認します。
次のコマンドを実行して、Supervisorプロセスを確認します。
ps aux | grep supervisor
次のコマンドを実行してossfsプロセスを確認します。
ps aux | grep ossfs
次の図は、2044や2452などのIDがossfsのプロセスIDである出力例を示しています。
次のコマンドを実行してossfsプロセスをシャットダウンします。
重要killallコマンドは使用しないでください。 killallコマンドを実行すると、コマンドはSIGTERM信号を送信してossfsプロセスを停止します。 この場合、Supervisorはossfsプロセスを再起動しません。
kill -9 processID
ossfsプロセスがシャットダウンされた後、Supervisorはossfsプロセスを再起動します。
次のコマンドを実行してossfsプロセスを確認します。
ps aux | grep ossfs
ログデバッグの有効化
ossfsを使用すると問題が発生する可能性があります。 問題の分析と特定を支援するために、ログデバッグ機能を有効にできます。 次のいずれかの方法を使用して、ログデバッグを有効にできます。
バケットをローカルディレクトリにマウントするときに、-d -odbglevel=debugオプションを追加します。 ossfsは、ログをシステムログに書き込みます。
CentOS
ログは /var/log/messagesに保存されます。
Ubuntu
ログは /var/log/syslogに保存されます。
バケットをローカルディレクトリにマウントするときに、-d -odbglevel=debug -fオプションを追加します。 ossfsはフロントエンドモードで実行され、ログを画面に表示します。
マウントされたファイルシステムのマウント解除
umount [マウントポイントのパス]
コマンドを使用して、ローカルディスクにマウントされたOSSファイルシステムをアンマウントできます。
次のコードは、/tmp/ossfs
にマウントされたファイルシステムをアンマウントする方法の例を示しています。
umount /tmp/ossfs