最近のownCloud攻略

艦これのイベント攻略やりながらownCloudのクラウド移行とかやってるからマジ辛いぜ!

  • Amazon S3をexternal storageとして使用すると、その配下のファイルは再共有できない仕様の模様。
    • そういう使い方をしたい場合はFUSEのs3fsなどを使う必要あり。
    • 幸い、最近のFreeBSDにはFUSEカーネルモジュール (fuse.ko) が入っており、fusefs-s3fsのpkgを入れてあげれば使える。
    • ただしfstabに書く方法は不明。仕方がないのでrc.localで逃げた。Apacheが上る前にマウントしたいのでrc.confからApache外してrc.localから起動するように変更。
  • external storageでS3を使うと、時々ファイルのロック周りでエラーが出る場合あり。手作業でMariaDBからロックの行を消してあげればとりあえず復旧できる。
  • もともとOwnCloudのexternal storageでバケツに入れていたファイルはどういうわけかs3fsから「見えるけど触れない」状態になってしまう。パーミッション0000でchmodするとI/O errorになる。仕方ないので別のバケツを作って試行中。
  • s3fsが若干不安定で、時々FUSE側で勝手に再マウント処理をかけている模様。ただしこのときにマウントオプションがちゃんと引き継がれずにパーミッション情報がおかしくなってしまう。多分syslogに出てるコイツが原因。
s3fs: ###curlCode: 65  msg: Send failed since rewinding of the data stream failed

#!/bin/sh
MOUNTPOINT=/foo/bar

LS_L=`/bin/ls -ld $MOUNTPOINT`
UID=`echo $LS_L | /usr/bin/awk '{ print $3 } ;'`
GID=`echo $LS_L | /usr/bin/awk '{ print $4 } ;'`

if [ $UID != www ] || [ $GID != www ] ; then
  /sbin/umount $MOUNTPOINT
  /usr/local/bin/s3fs バケツ名 \
    $MOUNTPOINT \
    -o rw,uid=80,gid=80,allow_other,passwd_file=パスワードファイル
fi

lsがエラー起こす場合があるので修正。

#!/bin/sh
MOUNTPOINT=/foo/bar

LS_L=`/bin/ls -ld $MOUNTPOINT 2> /dev/null`
UID=`echo $LS_L | /usr/bin/awk '{ print $3 } ;'`
GID=`echo $LS_L | /usr/bin/awk '{ print $4 } ;'`

if [ X$UID != Xwww ] || [ X$GID != Xwww ] ; then
  /sbin/umount $MOUNTPOINT
  /usr/local/bin/s3fs バケツ名 \
    $MOUNTPOINT \
    -o rw,uid=80,gid=80,allow_other,passwd_file=パスワードファイル
fi

この感じ見ると、スクリプト仕込んで大正解の様子。

# tail -f /var/log/messages | grep s3fs
May 14 13:36:18 owncloud s3fs: init v1.78 (OpenSSL)
May 14 13:56:49 owncloud s3fs: ###curlCode: 65  msg: Send failed since rewinding of the data stream failed
May 14 13:58:30 owncloud s3fs: init v1.78 (OpenSSL)
May 14 14:12:45 owncloud s3fs: ###curlCode: 65  msg: Send failed since rewinding of the data stream failed
May 14 14:17:00 owncloud s3fs: init v1.78 (OpenSSL)
May 14 14:32:59 owncloud s3fs: ###curlCode: 65  msg: Send failed since rewinding of the data stream failed
May 14 14:33:00 owncloud s3fs: init v1.78 (OpenSSL)
May 14 14:52:19 owncloud s3fs: ###curlCode: 65  msg: Send failed since rewinding of the data stream failed
May 14 14:53:00 owncloud s3fs: init v1.78 (OpenSSL)
May 14 15:17:46 owncloud s3fs: ###curlCode: 65  msg: Send failed since rewinding of the data stream failed
May 14 15:18:01 owncloud s3fs: init v1.78 (OpenSSL)