EC2で運用中のownCloudに、S3をgoofysでゴリ押し連携

EC2で運用中のownCloudに、S3をgoofysでゴリ押し連携:


概要(実装とは関係ないので、読み飛ばしてOK)

うちの会社では、他社とのファイルやり取りのため、ownCloudを運用しています。

EBSの容量もほどほどに、S3を外部ストレージとして設定したことで、ownCloudが「バックアップ不要の無限ストレージ」になったのだと勝手に思い込んでいました。

ある日、スタッフから 「ownCloudにアクセスできない」 と連絡を受けました。

原因はEBSの容量不足でした。
あれ、外部ストレージ設定も行っているのになぜ、、

どうやらowncloudではユーザー毎にS3バケットを用意して個別に外部ストレージ設定を行う必要があるようです。1

そんな面倒なことしてられない!ということで、今回はEC2にS3をマウントさせ、直接ファイル参照させるゴリ押しの方法で問題解決に挑みます。


構成イメージ


改修前

  • スタッフごとにアカウントを作成

  • AmazonS3ディレクトリにファイルをアップ


改修後

  • 社内で共通アカウントを作成
  • ルートディレクトリ直下にファイルをアップ


インストール作業


fuseのインストール

$ sudo yum install fuse 


Goのインストール

Goのダウンロードページからダウンロードを行います。

Goは触ったことがないのでよく分かっていませんが、Featured downloads内のLinuxのURLで良さそうです。

// インストール 
$ sudo wget https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz 
$ sudo tar -C /usr/local -xzf /usr/local/src/go1.11.2.linux-amd64.tar.gz 
$ sudo rm go1.11.2.linux-amd64.tar.gz 
 
// パス設定 
$ export GOROOT=/usr/local/go 
$ export PATH=$PATH:$GOROOT/bin 
$ env | grep -i go 
PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/.local/bin:/home/ec2-user/bin:/usr/local/go/bin 
GOROOT=/usr/local/go 
 
// バージョン確認 
$ go version 
go version go1.11.2 linux/amd64 


goofysのインストール

// インストール 
$ export GOPATH=${HOME}/go 
$ go get github.com/kahing/goofys 
$ export PATH=${PATH}:${GOPATH}/bin 
 
// バージョン 
$ goofys --version 
goofys version 0.19.0-use 'make build' to fill version hash correctly 


マウント設定


AWSの設定

$ sudo aws configure 
AWS Access Key ID [None]: [アクセスキーID] 
AWS Secret Access Key [None]: [シークレットキー] 
Default region name [None]: ap-northeast-1 
Default output format [None]: json 


ownCloudのユーザー作成

ownCloudより、共通アカウントとするユーザーを作成します。

ユーザーを作成することで、サーバー内にユーザーディレクトリが作成されます。


マウント作業

goofysの設定についてはこちらを参考にさせていただきました。

$ sudo su - 
# cd /owncloud ←ownCloudがインストールされているディレクトリ 
# cd data/user ←作成した共通アカウント 
 
// アカウント内のファイルがあれば削除 
# rm -Rf Documents 
# rm -Rf ownCloud\ Manual.pdf 
# rm -Rf Photos/ 
 
// マウント 
# id owncloud ←ownCloudの動作ユーザー 
uid=33(owncloud) gid=33(owncloud) groups=33(owncloud) 
# goofys -o allow_other --uid 33 --gid 33 --cheap xxx-owncloud /owncloud/data/user/files 
 
// チェック 
# df -h 
Filesystem                   Size  Used Avail Use% Mounted on 
devtmpfs                     969M   56K  969M   1% /dev 
tmpfs                        979M     0  979M   0% /dev/shm 
/dev/a5yhQeLVw3               40G   19G   21G  47% / 
xxx-owncloud                 1.0P     0  1.0P   0% /owncloud/data/user ←1ペタバイトが見えた! 


ファイルの読み込み

ownCloudでは、対象ディレクトリにファイルをコピペしただけでは利用できないようです。2

ファイルキャッシュを更新する必要があるため、下記コマンドを放ちます。

sudo -u apache /var/www/owncloud/occ file:scan [ユーザーアカウント] 


あとがき

ownCloudはファイル共有もできとても便利ですが、サーバー容量問題やS3連携時の遅さが気になっていました。

需要は不明ですが、うまくいったので同じ問題に悩むシステム管理者に届けば良いなと思います。


参考サイト

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)