Cyberduckでアップロードだけ失敗してしまう!原因と対処法について【file system full】

この記事は最終更新から4年以上が経過しています。情報が古くなっている可能性があります。

こんにちは、しばです。
非常にご無沙汰の投稿になりました。特に何かあった訳もなく気づいたら4月…早い…(´∀`)

引き続きWeb制作してるこの頃ですが、この間FTPソフトのCyberduck(Mac版)でファイルをアップロードしたところ、ただ「失敗」とだけ書かれたエラーが吐かれました。

Cyberduckは昔から利用しており、いつもは何かしらエラーコードがあったりヒントが書かれているのですが、それも無い_:(´ཀ`」 ∠):

なんとか解決しましたが、緊急だったこともありめちゃくちゃ焦ったので、
原因と対処法をまとめたいと思います。

ダウンロードは出来るが、アップロードが出来ない

事象の詳細について。
このエラーは、AWSのサーバにCyberDuck for MacでSFTP接続した時に起きました。
(※ と言ってもOSや接続の種類には関係無く起きるようです)

接続してまず最初に、修正するファイルのバックアップをとりたかったので、そのファイルのダウンロードを行いました。この時は全く問題なし。
その次に、修正を行ったファイルを上書きアップロードしようとしたところ、「失敗。 failed.」のダイアログが。

普段はヒントになるエラーコードやテキストを表示してくれるんですが、今回は本当に”失敗。 failed.”のみでした。

接続が切れている訳でもなく、改めてダウンロードするとやはり成功しますが、アップロードは何度試しても同エラーが表示されてしまいました。
ちなみにアップロードを試みたファイルは、ディレクトリのファイル一覧には表示されます。(容量は0KB)

これまでで原因が全く不明なので、SSH接続でvimを使って該当ファイルの書き換えを試してみました。

vimで書き換えて、上書き保存をしようとしたときターミナルに以下のエラーが。

“ファイル名” E514: write error (file system full?)

原因はファイルシステムの容量が満杯だったこと

このエラーメッセージで原因が判明。
日本語だと「”ファイル名” E514: 書込みエラー, (ファイルシステムが満杯?)」と書かれており、これ以上のファイルの作成ができないことを意味してるようです。

その原因としては、主に以下の2つがあるとのこと。

  1. ファイルの容量が満杯になった
  2. システムのメモリーが不足した

前者ならログやボリュームの大きいファイルを精査し、不要なファイルを削除すればOK
今回の場合は、容量にはまだ少し余裕があったので後者の可能性が高そうです。
なので以下の手順で、メモリの使用量を確認しつつメモリ解放をしてみました

(1) SSH接続でサーバにアクセス

ターミナルで「$ free -tm」とコマンドを打つ。
(free -tmはスワップや物理メモリの使用量、空き容量、合計を表示する命令)

total used free shared
Mem: xxxx xxxx xxxx xxxx
-/+ buffers/cache: xxxx xxxx
Swap: xxxx xxxx xxxx
Total: xxxx xxxx xxxx

→Mem行のfreeがtotalの4割を切っていて、余裕が少ないことを確認

(2) メモリを解放するため、管理画面からインスタンスの再起動を実施(AWSの場合)

AWSはインスタンスの再起動を行うことでメモリの解放ができます。
再起動の手順は下記の公式ページをご参照ください。

(3) インスタンスの再起動まで5-10分待機

(4) 再起動したら、再びSSH接続でサーバにアクセスして「$ free -tm」で確認

改めてメモリの使用量を確認。
再起動したことで、freeがtotalの4割から7.5割以上になりました。

この後SFTP接続したところ、問題なくアップロードできました!

メンテナンスは非常に重要

今回エラーが発生していたサイトは、普段もたまに落ちることがあったようでその度にDBの再起動を行っていたようです。
法人Webサイト、Webサービスの場合はこうなる前にしっかりメンテナンスして対処したいところですよね。

今回のことでメンテナンスの重要性を感じられたし、あんまり使ったことがなかったSSH接続やvimコマンドに触れる機会にもなって非常に勉強になりました。

今回の対処法はあくまで一時的な対応ですが、緊急でとにかく復旧させたい!という時にお役に立てれば幸いです。