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

Object Storage Service:ossfsの設定とマウント操作の実行

最終更新日:Nov 08, 2024

このトピックでは、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を使用してバケットをマウントする方法について説明します。

  1. EcsRamRoleOssTestという名前のRAMロールを作成します。

  2. RAMロールにOSSリソースへのアクセス権限を付与します。

    詳細については、「RAMロールへの権限の付与」をご参照ください。 この例では、OSSへの読み取り専用アクセスを許可するために、AliyunOSSReadOnlyAccessポリシーがRAMロールにアタッチされています。 実際のビジネスアプリケーションでは、カスタムポリシーをRAMロールにアタッチできます。 詳細については、「カスタムポリシーの作成」をご参照ください。

  3. RAMロールをECSインスタンスにアタッチします。

  4. インスタンスメタデータURLに基づいてossfsを使用してマウント操作を実行します。

    説明

    インスタンスメタデータURLに基づいてossfsを使用してマウント操作を実行する場合、通常モードでのみインスタンスメタデータにアクセスできます。 詳細については、「インスタンスメタデータの取得」をご参照ください。

    1. ECSインスタンスにログインします。

    2. を含めるには、-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

起動時にディレクトリを自動的にマウントする

  1. バケット名、AccessKey ID、AccessKeyシークレットなどの情報を/etc/passwd-ossfsファイルの権限を640に変更します。

    詳細については、「ossfsのインストール」をご参照ください。

  2. 起動時に自動マウントを有効にします。

    説明

    次の例は、一般的なディストリビューションとバージョンの起動時に自動マウントを有効にする方法を示しています。 その他のディストリビューションおよびバージョンについては、関連ドキュメントを参照して、起動時に自動マウントを有効にします。

    Ubuntu 14.04以降およびCentOS 6.5以降のfstabファイルを使用して起動時に自動マウントを有効にする

    1. 次の行を /etc/fstabファイルに追加します。

      ossfs#bucket_name mount_point fuse _netdev,url=url,allow_other 0 0

      パラメーター:

      パラメーター

      説明

      bucket_name

      マウントするバケットの名前。

      mount_point

      バケットをマウントするローカルディレクトリ。

      url=url

      バケットが配置されているリージョンのエンドポイント。

      0 0

      ファイルシステムのオプション。

    2. /etc/fstabファイルを保存します。 mount -aコマンドを実行します。 エラーが報告されない場合、設定は正しく構成されています。

    3. 上記の手順を完了すると、Ubuntu 14.04以降で起動時の自動マウントが有効になります。 CentOS 6.5以降の場合は、次のコマンドも実行する必要があります。

      chkconfig netfs on

    CentOS 7.0以降のスクリプトを使用して起動時に自動マウントを有効にする

    1. /etc/init.d/ ディレクトリにossfsファイルを作成し、テンプレートの内容をこのファイルにコピーします。 your_xxxを実際の情報に置き換えます。

    2. 次のコマンドを実行して、ossfsスクリプトに実行権限を付与します。

      chmod a+x /etc/init.d/ossfs

      上記のコマンドを実行した後、スクリプトを実行できます。 スクリプトの内容が正しい場合、OSSバケットは指定されたディレクトリにマウントされます。

    3. 次のコマンドを実行して、起動時に自動的に有効になるサービスとしてossfsスクリプトを起動します。

      chkconfig ossfs on
    4. 上記の手順を完了すると、ossfsは起動時にバケットを自動的にマウントします。

Supervisorを使用してossfsを開始する

重要

次の手順では、sudo権限を持つuser1ユーザーのインストールパスを使用します。 インストールパスを実際のインストールパスに置き換えます。

  1. 次のコマンドを実行してSupervisorをインストールします。

    CentOS

    sudo yum install supervisor

    Ubuntu

    sudo apt-get install supervisor
  2. ossfsスタートアップスクリプトを作成します。

    1. 次のコマンドを実行して、start_ossfs.shファイルを作成します。

      mkdir /home/user1/ossfs_scripts
    2. 起動スクリプトを記述します。

      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
  3. を編集します。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
  4. 次のコマンドを実行してSupervisorを実行します。

    supervisord
  5. Supervisorが期待どおりに実行されるかどうかを確認します。

    1. 次のコマンドを実行して、Supervisorプロセスを確認します。

      ps aux | grep supervisor
    2. 次のコマンドを実行してossfsプロセスを確認します。

      ps aux | grep ossfs

      次の図は、2044や2452などのIDがossfsのプロセスIDである出力例を示しています。

      Dingtalk_20231225172213.jpg

    3. 次のコマンドを実行してossfsプロセスをシャットダウンします。

      重要

      killallコマンドは使用しないでください。 killallコマンドを実行すると、コマンドはSIGTERM信号を送信してossfsプロセスを停止します。 この場合、Supervisorはossfsプロセスを再起動しません。

      kill -9 processID

      ossfsプロセスがシャットダウンされた後、Supervisorはossfsプロセスを再起動します。

    4. 次のコマンドを実行してossfsプロセスを確認します。

      ps aux | grep ossfs

ログデバッグの有効化

ossfsを使用すると問題が発生する可能性があります。 問題の分析と特定を支援するために、ログデバッグ機能を有効にできます。 次のいずれかの方法を使用して、ログデバッグを有効にできます。

  • バケットをローカルディレクトリにマウントするときに、-d -odbglevel=debug -ocurldbgオプションを追加します。 ossfsは、ログをシステムログに書き込みます。

    • CentOS

      ログは /var/log/messagesに保存されます。

    • Ubuntu

      ログは /var/log/syslogに保存されます。

  • バケットをローカルディレクトリにマウントするときに、-d -odbglevel=debug -ocurldbg -fオプションを追加します。 ossfsはログを画面に表示します。