Humanity

Edit the world by your favorite way

mount.davfs でハマった (fstab でマウント失敗、一定時間後にファイルが消える)

  • サーバ:CentOS 7 + Apache
  • クライアント:davfs2 でマウント

しようとしてみた。

/etc/fstab に _netdev 忘れてた

_netdev を付けないとオンラインになるまで待たずにマウントしようとして失敗する。

http://hogehost/webdav/ /mnt/dav davfs rw,user,uid=piyosuke,gid=piyosuke,_netdev 0 0

関連エントリ:_netdev重要 - Humanity

mount.davfs(8) でマウントした場所へ書き込んだ後一定時間後にファイルが消える

/etc/davfs2/davfs2.conf を開いて

delay_upload 0

にすると即座にアップロードされる。

デフォルトでは10(秒)となっているため、10秒後にアップロードされた際にエラーになるとファイルの書込み失敗となりファイルを消しよる。*1 delay_upload 0 すれば即座にアップロードされ、書き込み時にエラーがあった場合はコマンドにエラーが返されるみたい。*2 あと delay_upload 0 してても use_locks 0 してればやっぱりエラーは即座に返されない。Apache のエラーログ *3 にしか書き込まれない。

書き込めなかった原因

ちなみに書き込めなかった原因は権限エラーだった。

/etc/httpd/conf/httpd.conf で

User apache
Group apache

apacheユーザ + apacheグループで起動してるにも関わらず、書き込もうとしたディレクトリが root になってた。 その際のエラーは以下。

[Wed May 25 00:28:48.346929 2016] [dav:error] [pid 6382] [client {IPアドレス}:40417] Could not save .locknull file.  [500, #0]
[Wed May 25 00:28:48.346987 2016] [dav:error] [pid 6382] (2)No such file or directory: [client {IPアドレス}:40417] Error opening {書き込もうとしたディレクトリ}/.DAV/.locknull for writing  [500, #0]

davfs2 の キャッシュディレクトリを tmpfs にしたら大きいファイルのコピーがエラーになった

tyru.hatenablog.com

*1:なんでこれがデフォルトじゃないんだ…

*2:ちなみに最初 touch コマンドで試してたけど、新規作成の他に既存ファイルのタイムスタンプ更新の場合も出力なしなのでそれが原因でハマりそうで途中からリダイレクトで試した

*3:/var/log/httpd/error_log