• 質問: ossfs はどのプログラムに適していますか。
    • ossfs は OSS バケットをローカルにマウントします。 OSS をサポートしていないプログラムでデータを OSS に自動的に同期させるには、ossfs が最適な選択肢です。
  • 質問: ossfs にはどのような制限がありますか。
    • データはネットワークを介してクラウドに同期させる必要があるため、ossfs のパフォーマンスと機能はローカルファイルシステムのものとは異なる場合があります。 マウントされた ossfs ディスクで頻繁に I / O 操作を行ってデータベースまたは他のアプリケーションを実行したい場合は、これを慎重に検討する必要があります。 ossfs は、次の点でローカルファイルシステムと異なります。
      • システムは OSS サーバーにリモートからアクセスする必要があるため、リストディレクトリなどのメタデータ操作のパフォーマンスは低下します。
      • ファイル / フォルダーの名前変更操作は、アトミックではありません。
      • 複数のクライアントが 1 つの OSS バケットに接続されている場合は、各クライアントの動作を手動で調整する必要があります。 たとえば、複数のクライアントが同じファイルに書き込まないようにする必要があります。
      • ハードリンクはサポートされていません。
  • 質問: ossfs に Alibaba Cloud ホストを使用する必要はありますか。
    • ossfs は Alibaba Cloud イントラネットと組み合わせて使用する必要はありません。 外部のインターネットホストでも使用できます。
  • 質問: ossfs は同時に複数の OSS バケットをマウントできますか。
    • はい、passwd-ossfs ファイルに複数の OSS 構成情報エントリを書き込みます。 異なる OSS アカウントからのバケットがサポートされています。
  • 質問: ossfs を yum/apt-get にインストールしたところ、"conflicts with file from package fuse-devel" という内容のエラーが発生しました。
    • ユーザーのシステムには旧バージョンの fuse があります。 関連するパッケージマネージャーを使用して ossfs をアンインストールした後、再インストールしてください。
  • 質問: ossfs が正しく動作していません。どのようにデバッグすればいいでしょうか。
    • マウント時に -d -o f2 パラメーターを使用できます。 ossfs はログの内容をシステムログに書き込みます。 centos システムでは、in/var/log/messages にあります。
    • マウント時に -f -d -o f2 パラメーターを使用することもでき、ossfs はログを画面に出力します。
  • 質問: バケットをマウントしようとすると、"ossfs: unable to access MOUNTPOINT /tmp/ossfs: Transport endpoint is not connected” というエラーが表示されるのはなぜですか。
    • まず、対応するディレクトリに対して umount コマンドを実行します。
    • ossfs でマウントするときは、入力した URL パラメーターが正しいこと、およびバケット、AccessKey ID、およびAccessKey secret が一致していることを確認します。
    • URL にはバケット名を含めないでください。 たとえば、OSS コンソールでバケットドメイン名が ossfs-test-1.oss-cn-hangzhou.aliyuncs.com の場合は、URL を http://oss-cn-hangzhou.aliyuncs.com に設定します。
  • 質問: ossfs に “ossfs: unable to access MOUNTPOINT /tmp/odat: No such file or directory” と表示されるのはなぜですか。
    • このエラーは、ディレクトリがまだ作成されていない場合に発生します。 マウントする前にディレクトリを作成する必要があります。
  • 質問: バケットをローカルにマウントし、そのディレクトリに対して ls コマンドを実行した後に "operation not permitted" エラーが発生するのはなぜですか。
    • バケット内に、ディレクトリ名が見えない文字を含む OSS オブジェクトを含んでいないかどうか確認してください。 ファイルシステムには、ファイル / ディレクトリ名に対する厳しい制限があります。 ディレクトリ名が制限を満たさない場合、このエラーが発生します。 別のツールを使用してこれらのオブジェクトの名前を変更して ls コマンドを実行すると、ディレクトリの内容が正しく表示されるようになります。
  • 質問: 1 つのディレクトリにたくさんのファイルがあります。 なぜこれほど遅いのでしょうか。
    • ディレクトリ内に n 個のファイルがあると仮定すると、少なくともこのディレクトリの ls コマンドには、最低限の n oss http リクエストが必要です。 多数のファイルがある場合、重大なパフォーマンス上の問題を引き起こす可能性があります。
    • 2 つの方法で最適化することができます。
      • "-omax_stat_cache_size = xxx" パラメーターを使用して統計キャッシュのサイズを増やしてください。これにより、ファイルのメタデータがローカルキャッシュにあるため、最初の ls コマンドは遅くなりますが、その後の ls コマンドは速くなります。 既定値は 1000 で、約 4 MB のメモリが必要です。ユーザーのマシンのメモリのサイズに応じて適切な値に調整します。
      • ls -f コマンドを使用して、OSS による n 個の HTTP リクエストを排除します。
  • 質問: ossfs のマウント中にアクセス権を設定するにはどうすればよいですか。
    • 他のユーザーにマウントされたフォルダーへのアクセスを許可する場合は、ossfs の実行時に次のように allow_other パラメーターを指定します。
      • ossfs your_bucket your_mount_point -ourl=your_endpoint -o
                          allow_other
    • "allow_other" パラメーターがファイルにアクセスできないのはなぜですか。
      • 注記: "allow_other" は、マウントディレクトリ内の他のユーザーに付与されている許可であり、内部のファイルではありません。 フォルダー内のファイルを変更したい場合は、chmod コマンドを使用します。
    • "allow_other" は既定では、マウントディレクトリ 777 のアクセス権を与えますが、マウントディレクトリのアクセス権 770 が欲しい場合はどうすればよいですか。
      • umask によって設定することができます。
  • 質問: 他のユーザーのフォルダー (/tmp/ossfs) のマウントを許可したいのですが、どうずればよいですか。

    • 方法 1: 他のユーザーに属するフォルダー (/tmp/ossfs) のマウントを許可したい場合は、ユーザーとしてマウントフォルダーを作成し、ossfs を使用する必要があります。
      • sudo -u user mkdir /tmp/ossfs
      • sudo -u user ossfs bucket-name /tmp/ossfs
    • 方法 2: 最初に、id コマンドによって指定されたユーザーの uid/gid 情報を取得します。 たとえば、www ユーザーの uid / gid 情報を取得するには、次のように入力します。次にマウント時に uid / gid パラメーターを指定します。

      • ossfs your_bucket your_mountpoint -ourl=your_url -ouid=your_uid
                            -ogid=your_gid

      注記: uid / gidは数字です。

  • 質問: root ユーザーではない場合、アンマウントの ossfs はどのようにディレクトリをマウントできますか。
    • fusermount -u your_mountpoint
  • 質問: デバイス起動時に ossfs を自動的にマウントするにはどうすればよいですか。
    • ステップ1: バケット名、AccessKeyId / Secret、およびその他の情報を /etc/passwd-ossfs に書き込み、このファイルのアクセス許可を "640" に変更します。
      • echo your_bucket_name:your_access_key_id:your_access_key_secret >
                            /etc/passwd-ossfs
      • chmod 640 /etc/passwd-ossfs
  • ステップ 2: 適切な設定を行います (設定方法は各システムのバージョンにより異なります)。
    • ステップ 2A: fstab メソッドを使用して、ossfs を自動的にマウントします (Ubuntu 14.04 と CentOS 6.5 に適用されます)。
      • /etc/fstab に次のコマンドを追加します。
      • ossfs#your_bucket_name your_mount_point fuse _netdev,url=your_url,allow_other 0
                            0
      • 上記のコマンドで、"your_xxx" を実際のバケット名、およびその他の情報に置き換えます。
      • /etc/fstab ファイルを保存します。 mount -a コマンドを実行します。 エラーが報告されなければ、正しく設定されています。
      • これで、Ubuntu 14.04 は自動的に ossfs をマウントすることができます。 CentOS 6.5 の場合は、次のコマンドも実行します。
      • chkconfig netfs on
    • ステップ 2B: ブートスクリプトを使用して、ossfs をマウントします (CentOS 7.0 以降に適用されます)。
      • /etc/init.d/ ディレクトリにファイル ossfs を作成します。 「テンプレートファイル」の内容を新しいファイルにコピーします。 ここで、"your_xxx" を自分の情報に置き換えます。
      • コマンド chmod a+x /etc/init.d/ossfs を実行します。
      • 上記のコマンドは、新しい ossfs スクリプトに実行権限を付与します。 これでこのスクリプトを実行できます。 スクリプトの内容にエラーが発生しなければ、OSS バケットは指定されたディレクトリにマウントされています。
      • コマンド chkconfig ossfs on を実行します。
      • 上記のコマンドは ossfs ブートスクリプトを別のサービスとして設定するため、デバイスの起動時に自動的に起動されます。
      • これで、ossfs は起動時に自動的にマウントされるようになりました。 まとめると、Ubuntu 14.04 または CentOS 6.5 を使用している場合は、ステップ 1 と 2A を実行します。 CentOS 7.0 を使用している場合は、ステップ 1 および 2B を実行します。
  • 質問: fusermount: failed to open current directory: Permission denied エラーを解決するには、どうすればよいですか。
    • これはヒューズのバグです。 現在のユーザーには、現在のディレクトリ (マウント解除されたディレクトリ) に対する読み取り権限が必要です。 この問題を解決するには、cd コマンドを実行して読み取り権限を持つディレクトリに変更した後、再度 ossfs コマンドを実行します。
  • 質問: www ユーザーを使用して ossfs をマウントする必要があります。 この場合、どのように自動マウントを設定すればよいですか。

    • 前述の質問に対する回答をご参照ください。 前述のステップ 1 を実行します。 /etc/init.d/ossfs ファイル内のコマンドを次のように変更して、ステップ 2B を実行します。

      sudo -u www ossfs your_bucket your_mountpoint -ourl=your_url

    • sudo を使用して、/etc/sudoers を編集できるようにブートスクリプトを設定します。 Defaults requiretty 行を、 #Defaults requiretty に変更します (この行をコメントアウトします)。
  • 質問: fusermount: failed to open current directory: Permission denied エラーを解決するには、どうすればよいですか。
    • これはヒューズのバグです。 現在のユーザーには、現在のディレクトリ (マウント解除されたディレクトリ) に対する読み取り権限が必要です。 この問題を解決するには、cd コマンドを実行して読み取り権限を持つディレクトリに変更した後、もう一度 ossfs コマンドを実行します。
  • 質問: ECS を使って ossfs をマウントすることでファイルをスキャンするコストをどのように回避できますか。

    • プログラムは ossfs によってマウントされたディレクトリをスキャンし、OSS へのリクエストに変換します。リクエストの数が多い場合、コストが発生します (1 セント/ 1 万倍)。 updatedb の場合は、/etc/updatedb.confを変更することによりスキップできます。 具体的な方法は次のとおりです。

      1. PRUNEFS =fuse.ossfs を追加します。
      2. マウントされたディレクトリを PRUNEPATHS = に追加します。
    • どのプロセスがカタログを一掃したのかは、どのように判断できますか。
      1. 最初に auditd をインストールします。: sudo apt-get install auditd
      2. auditdを起動します。: sudo service auditd を起動します。
      3. モニターマウントディレクトリを設定します。: auditctl -w /mnt/ossfs
      4. auditorium ログで、どのディレクトリがこのディレクトリにアクセスしたかを確認することができます。: ausearch -i | grep /mnt/ossfs
  • 質問: ossfs を使用して、OSS all "application/ocdet-stream にアップロードする content-type ファイルは何ですか。
    • ossfs は、/etc/mime.types の内容を照会して、ファイルの Content-Type を決定します。ファイルが存在することを確認してください。存在しない場合は、追加する必要があります。
      1. Ubuntu の場合は、udo apt-get install mime-support を使って追加します。
      2. Centos の場合は、sudo Yum install mailcap を使って追加します。
      3. フォームごとに 1 行ずつ手動で追加することもできます。それぞれの形式は次のとおりです。: Application/JavaScript JS
  • 質問: どのようにして、スーパーバイザーを使用して ossfs を起動することができますか。
  1. スーパーバイザーをインストールするには、Ubuntu で sudo apt-Get install supervisor を実行します。
  2. ディレクトリを作成し、ossfs STARTUP スクリプトを編集します。
    mkdir /root/ossfs_scripts
    vi /root/ossfs_scripts/start_ossfs.sh 
    以下のデータを記述します。:
    # Unload
    fusermount -u /mnt/ossfs
    # Re-mounted, you must add-F parameter to run ossfs, let ossfs run at the front desk
    exec ossfs my-bucket my-mount-point -ourl=my-oss-endpoint -f
  3. 次の段落を最後に追加するため、/etc/Supervisor/supervisord. conf を編集します。
    [program:ossfs]
    command=bash /root/ossfs_scripts/start_ossfs.sh
    logfile=/var/log/ossfs.log
    log_stdout=true
    log_stderr=true
    logfile_maxbytes=1MB
    logfile_backups=10
  4. スーパーバイザーを実行します。:
    supervisord
    supervisord
  5. すべて問題ないことを確認します。
    ps aux | grep supervisor  # should be able to see the supervisor Process
    ps aux | grep ossfs #  should be able to see ossfs Process
    kill -9 ossfs  # Kill ossfs process, the supervisor must restart it, do not use killall, because killall sends sigterm, the process Exits normally, and the Supervisor no longer reruns ossfs.
    ps aux | grep ossfs # should be able to see ossfs Process
    エラーが発生した場合は、/var/log/supervisor/supervisord.log および /var/log/ossfs.log を確認します。
  • 質問: fuse の警告が表示されます(エラー内容: "Library too old, some operations may not work")。

    これは、ossfs がコンパイル時に使用する libfuse のバージョンが原因で発生します。バージョンが実行時にリンクされる libfuse のバージョンよりも高い場合にこのエラーが発生します。 これは、libfuse をユーザーご自身でインストールしたことが原因である場合が多いです。 libfuse を再度インストールせずに、提供する RPM パッケージを使用して ossfs をインストールします。

    ボックスで提供する RPM バッグとボックスは、そのボックスを含んでいます。実行環境にチェーンがあり、ossfs が旧バージョンの fuse にリンクされている場合、上記の警告が表示されます。

  1. どのようにしたら ossfs ランタイムリンクの fuse バージョンを確認することができますか。
    • LDD $ (which ossfs) | grep Fuse を実行します。
    • たとえば、結果は "/lib64/libfuse. So. 2" です。その後、LS-L/lib64/libfuse を介して fuse のバージョンを確認できます。
  2. ossfs を正しいバージョンにリンクするにはどうすればよいですか。
    • まず、rpm-QL ossfs | grep fuse を使用して libfuse のディレクトリを見つけます。
    • たとえば、結果は "/usr/lib/libfuse. So. 2 " になります。fig =/usr/lib ossfs... を実行し、ossfs を実行します。
  3. この警告を無視してもいいですか。
    • このバグは確認しない方がよいでしょう。
  • 質問: ossfs でファイル情報 (サイズなど) が他のツールで見られる情報と一致しないのはなぜですか。

ossfs は既定では、ファイルのメタ情報 (サイズ / パーミッションなどを含む) をキャッシュするので、ファイル情報は、スピードアップのために OSS に送られる ls リクエストを毎回必要とはしません。 ユーザーが他のプログラム (SDK / Webサイトコンソール / osscmd など) を渡した場合、ファイルは変更されているため ossfs でファイル情報を確認できますが、適時には更新されません。

ossfs のキャッシュを無効にしたい場合は、次のパラメーターを追加します。"-omax_stat_cache_size=0"