SwiftFSはOpenStack Swift1のコンテナをFUSE(Filesystem in Userspace)を使用しマウントするファイルシステムです。
- ConoHaオブジェクトストレージ (https://www.conoha.jp/)
- Rackspace Cloud Files (http://www.rackspace.com/cloud/files)
現状ではLinux(amd64)環境でのみ動作します。
以下のコマンドを実行することで、カレントディレクトリにswiftfsコマンドがインストールされます。
curl -sL https://github.com/hironobu-s/swiftfs/releases/download/current/swiftfs.amd64.gz | zcat > swiftfs && chmod +x swiftfs
Redhat, CentOSの場合はRPMパッケージも利用できます(CentOS6.7, CentOS7.2で確認してます)。
rpm -Uvh https://github.com/hironobu-s/swiftfs/releases/download/current/swiftfs-0.2.1-1.el6.x86_64.rpm
まず、OpenStack APIへの認証情報を設定する必要があります。コマンドラインオプションと環境変数のどちらかで渡すことができます。
--os-user-id (OpenStack) User ID [$OS_USERID]
--os-username (OpenStack) Username [$OS_USERNAME]
--os-password (OpenStack) Password [$OS_PASSWORD]
--os-tenant-id (OpenStack) Tenant Id [$OS_TENANT_ID]
--os-tenant-name (OpenStack) Tenant Name [$OS_TENANT_NAME]
--os-auth-url (OpenStack) Auth URL(required) [$OS_AUTH_URL]
--os-region-name (OpenStack) Region Name [$OS_REGION_NAME]
swiftfsコマンドにコンテナ名マウントポイントを指定します。
$ swiftfs CONTAINER-NAME MOUNTPOINT
fusermountコマンドを使用します。
$ fusermount -u MOUNTPOINT
swiftfsコマンドに-hオプションをつけて実行すると、オプションの一覧が表示されます。
--debug
デバッグ出力をONにします
--no-daemon
swiftfsコマンドをフォアグラウンドで実行します。デバッグ用です。
--logfile, -l
指定したファイルにデバッグ情報などが書き込まれます。
----object-cache-time
オブジェクトの一覧をキャッシュする秒数を設定します。オブジェクト一覧の取得にはAPIを実行する必要があり、キャッシュすることにより回数が減りパフォーマンスが向上します。ただし、複数ノードからswiftfsでマウントしている場合、キャッシュにより差異が出てしまうことがあります。デフォルト値は-1で、これはキャッシュしないことを意味します。
--create-container, -c
コマンドライン引数で指定されたコンテナが存在しなかった場合にコンテナを作成します。このオプションを指定しない場合、コンテナが存在しない場合エラーになります。
- chmod/chownのサポート
- HTTP圧縮のサポート(net/httpパッケージが未サポート)
ObjectListをキャッシュしたいマルチスレッドで書き込むとまれに正しく書き込めないことがある(たぶん直った)- オブジェクト数が増えた時のパフォーマンス確保
- その他バグフィクス
MIT License
Hironobu Saitoh hiro@hironobu.org
Footnotes
-
OpenStackの分散オブジェクトストレージシステム ↩