OSSFSベースのアリクラウドOSSのローカル使用

8776 ワード

概要:制限
ossfsが提供する機能と性能は、ローカルファイルシステムと比較して、いくつかの限界があります.詳細は次のとおりです.
  • ランダムまたは追加でファイルを書くと、ファイル全体が書き換えられます.
  • メタデータ操作、例えばlist directoryは、ossサーバ
  • へのリモートアクセスが必要であるため、パフォーマンスが劣る.
  • ファイル/フォルダのrename操作は原子の
  • ではありません.
  • 複数のクライアントが同じoss bucketをマウントする場合、ユーザに依存して各クライアントの動作を調整します.たとえば、複数のクライアントが同じファイルを書くのを避けるなどします.
  • はhard linkをサポートしていません.
  • は、高同時読み取り/書き込みのシーンには適していません.これにより、システムのloadが
  • 上昇します.
    一、ossfsをインストールする前に、対応する依存ライブラリをインストールする.
    Ubuntu 14.04:
    
    sudo apt-get install automake autotools-dev g++ git libcurl4-gnutls-dev \
                         libfuse-dev libssl-dev libxml2-dev make pkg-config
    CentOS 7.0:
    
    sudo yum install automake gcc-c++ git libcurl-devel libxml2-devel \
                     fuse-devel make openssl-devel

    ossfsソースコードをインストールしgithubから取得できます
    git clone https://github.com/aliyun/ossfs.git
    cd ossfs
    ./autogen.sh
    ./configure
    make
    sudo make install

    二、相応のファイル設定bucket name、access key/id情報を構成し、/etc/passwd-ossfsファイルに保存する.このファイルの権限は正しく設定しなければならないので、640に設定することを提案する.
    echo my-bucket:my-access-key-id:my-access-key-secret > /etc/passwd-ossfs
    chmod 640 /etc/passwd-ossfs

    oss対応のbucketをローカルマウントポイントossfs my-bucket my-mount-point-ourl=my-oss-endpointにマウント
    example:
     my-bucket  bucket   /tmp/ossfs   ,AccessKeyId faint, AccessKeySecret 123,oss endpoint http://oss-cn-hangzhou.aliyuncs.com
    
    echo my-bucket:faint:123 > /etc/passwd-ossfs
    chmod 640 /etc/passwd-ossfs
    mkdir /tmp/ossfs
    ossfs my-bucket /tmp/ossfs -ourl=http://oss-cn-hangzhou.aliyuncs.com

    ossのアンインストール
      bucket:
    
    umount /tmp/ossfs # root user
    fusermount -u /tmp/ossfs # non-root user

    問題:
    ossfs test /ossfsfile -ourl=http://oss-cn-hangzhou.aliyuncs.com
    [ERR] curl.cpp:CheckBucket(2625): Check bucket failed, OSS response: 
    <Error>
      <Code>RequestTimeTooSkewedCode>
      <Message>The difference between the request time and the current time is too large.Message>
      <RequestId>58F6D89ECBB6F0795271EEBARequestId>
      <HostId>test.oss-cn-hangzhou.aliyuncs.comHostId>
      <MaxAllowedSkewMilliseconds>900000MaxAllowedSkewMilliseconds>
      <RequestTime>2017-04-19T04:21:16.000ZRequestTime>
      <ServerTime>2017-04-19T03:25:18.000ZServerTime>
    Error>
    
    [ERR] curl.cpp:CheckBucket(2625): Check bucket failed, OSS response: 
    <Error>
      <Code>RequestTimeTooSkewedCode>
      <Message>The difference between the request time and the current time is too large.Message>
      <RequestId>58F6D89ECBB6F0795271EEC1RequestId>
      <HostId>test.oss-cn-hangzhou.aliyuncs.comHostId>
      <MaxAllowedSkewMilliseconds>900000MaxAllowedSkewMilliseconds>
      <RequestTime>2017-04-19T04:21:16.000ZRequestTime>
      <ServerTime>2017-04-19T03:25:18.000ZServerTime>
    Error>
    
    [CRT] s3fs.cpp:s3fs_check_service(3690): invalid credentials - result of checking service.
    ossfs: Check OSS service failed. Run with -f option for more details.

    上の間違いの最も主要な一言は:
    The difference between the request time and the current time is too large.

    要求された時間と現在の時間の違いが大きすぎてローカル時間を表示しようとすることを意味します.
    [root@storm1 tmp]# date
    Wed Apr 19 16:47:47 CST 2017

    やはり1時間の差は同期時間を更新するだけです
    ntpdate cn.pool.ntp.org
    19 Apr 15:52:39 ntpdate[71442]: step time server 51.15.41.135 offset -3357.358058 sec

    再マウント
    ossfs test /ossfsfile -ourl=http://oss-cn-hangzhou.aliyuncs.com

    エラーが発生した場合にdebug情報ログを追加してみます
    ossfs test /ossfsfile -ourl=http://oss-cn-hangzhou.aliyuncs.com -o dbglevel=debug -f -d > /tmp/fs.log 2>&1

    ログ情報を表示し、解決します.