メニュー 閉じる

CentOS8でs3qlを使ってオブジェクトストレージをマウントする

概要

オブジェクトストレージは大容量、低価格で利用でき、拡張性が高いため世の中で注目されています。
一般的にREST API(RESTful API)でファイルをアップロード・ダウンロードするような使い方のオブジェクトストレージですが、Linuxからファイルシステムとしてマウントする方法も存在します。

ちなみにオブジェクトストレージで有名なのはAWSのS3(Simple Storage Service)ですが、世の中にはS3と互換性がある(S3 Compatibleな)オブジェクトストレージが存在します。
今回は、このS3 Compatibleなオブジェクトストレージを使って、Linuxからオブジェクトストレージをマウントする方法について紹介したいと思います。

今回の利用構成

  • オブジェクトストレージ
    • Linode
    • Linode以外の他のS3 Compatibleなオブジェクトストレージでも、似たような使い方が可能です。
  • Linux
    • CentOS Linux release 8.1.1911 (Core)

オブジェクトストレージをマウントする仕組み

オブジェクトストレージをマウントするには、FUSE(Filesystem in Userspace)という仕組みを使います。
いくつか方法はあるのですが、有名どころとしてはs3fsとs3qlの2つです。

色々調べると、s3fsはLinuxのパッケージマネージャ(dnf等)で導入が可能なのですが、性能面で不利な模様。
今回はs3qlを使ってみることにします。

s3qlの導入

s3qlの導入方法は検索をすると色々出てくるのですが、古い情報が多く一筋縄には行きませんでした。
正確な情報を知るためにはユーザーズガイドを参照する方が良いでしょう。

ということで、s3ql version3.4.0の導入方法について。
s3qlはコンパイルが必要になるので、色々とパッケージの導入が必要です。

  1. dnfで必要なパッケージを導入します。
    $ sudo dnf install fuse3-devel libattr-devel sqlite-devel python36-devel
    
  2. pipを使って、Pythonモジュールを追加します。
    なお普通にpyfuse3をインストールすると、記事執筆時点では2.0.0がインストールされるのですが、このバージョンではs3qlのテストに失敗します。そのため1つ前のバージョンを明示的に指定してインストールしています。

    $ sudo pip3 install pyfuse3==1.3.1 attrs pytest pytest_trio dugong defusedxml apsw google-auth-oauthlib
    
  3. s3qlをダウンロードしてbuild、test、installします。
    buildやtest、installに失敗するときは必要なPythonモジュールが不足していることが考えられます。

    $ wget https://github.com/s3ql/s3ql/releases/download/release-3.4.0/s3ql-3.4.0.tar.bz2
    $ tar xjvf s3ql-3.4.0.tar.bz2
    $ cd s3ql-3.4.0/
    $ python3 setup.py build_ext --inplace
    $ python3 -m pytest tests/
    $ sudo python3 setup.py install
    

以上で無事s3qlのインストール完了となります。

s3qlの利用

インストールまで完了すると、普通のファイルシステムと同じようなコマンド群が使えるようになります。
例えばmount.s3ql、mkfs.s3qlといったコマンドです。

s3qlはオブジェクトストレージを通常のファイルシステムとして使えるようにするものなので、まずはマウントをする必要があります。
とはいえ、オブジェクトストレージを利用するためには認証情報が必要なので、予めファイルとして作っておきます。
詳細はユーザーズガイドに掲載されていますので参考にしてみてください。

認証情報のファイルは、/root/.s3ql/authinfo2に作成しておけばマウント時に自動的に読み込まれます。

$ sudo su -
# mkdir /root/.s3ql/
# vim /root/.s3ql/authinfo2
# chmod 600 /root/.s3ql/authinfo2

ファイルの中身はLinodeで使う場合は以下の様になります。

[s3c]
storage-url: s3c://<バケットのURL>/<Prefix>/
backend-login: <Access Key>
backend-password: <Secret Key>
  • s3c:S3 Copmatibleなオブジェクトストレージを示します
  • バケットのURL:(例)newark.us-east-1.linodeobjects.com
  • Prefix:何でも可(バケットのファイル名の頭に付く文字列)
  • Access Key:LinodeオブジェクトストレージのAccess Key
  • Secret Key:LinodeオブジェクトストレージのSecret Key
Access KeyとSecret Keyは、Linodeコントロールパネルから作成できます。
※Secret Keyは作成時しか表示されないためメモを取っておきましょう。

さて、認証情報を作成できたらファイルシステムとして利用できるようにします。

# mkfs.s3ql --plain s3c://<バケットのURL>/<Prefix>/
# mount.s3ql s3c://<バケットのURL>/<Prefix>/ /mnt/path/to/

まとめ

以上でオブジェクトストレージをマウントでき、通常のファイルシステムのように利用できるようになります。
ここでは/etc/fstabへの記載方法などは紹介していませんが、ユーザーズガイドの方に注意書きとともに掲載されているので、参照してみてください。

コメントを残す