[No space left on device] EC2 インスタンスEBSボリュームが枯渇したときの対処方法

2021.03.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

テクニカルサポートの丸屋 正志(まるちゃん)です。

久しぶりに EC2 インスタンスに SSH 接続をしようとして、入れなかった時ってありませんか?僕は勿論ありますよ。そしてめっちゃ焦ります。

前提条件

現状はインスタンスに対して SSH 接続ができない状態で、かつバッチ処理やサービスも提供ができていないと想定します。

まず初めにシステムログを確認

接続ができない状況の EC2 インスタンスの【システムログ】を確認します。

  1. 該当の EC2 インスタンスを右クリック
  2. モニタリングとトラブルシューティング】にカーソルを持っていき
  3. システムログを取得】を選択 Image from Gyazo

システムログを取得】のページに繊維すると下記のように閲覧ができます。

システムログはブラウザー上でも確認自体は可能ですが、人間の目には限界があるため【ダウンロード】を選択して任意のエディターで開いてください。
(個人的には、 VScode で開いて log 形式にして見てあげると見やすいです。) Image from Gyazo

ダウンロードしたインスタンスの起動ログ内で【No space left on device】を検索します。

下記ログは一例になります。

[    7.065656] systemd-journald[399]: Failed to open system journal: No space left on device
[    8.684666] cloud-init[621]: tee: /var/log/cloud-init-output.log: No space left on device
[    9.124240] cloud-init[621]: OSError: [Errno 28] No space left on device: '/var/tmp/cloud-init/cloud-init-dhcp-0000_00'
[    9.813279] cloud-init[621]: OSError: [Errno 28] No space left on device
[    9.873904] cloud-init[621]: OSError: [Errno 28] No space left on device
[    9.906347] cloud-init[621]: OSError: [Errno 28] No space left on device
[    9.952212] cloud-init[621]: OSError: [Errno 28] No space left on device
[   10.031210] cloud-init[621]: OSError: [Errno 28] No space left on device
[   10.290620] cloud-init[719]: OSError: [Errno 28] No space left on device
[   10.329011] cloud-init[719]: OSError: [Errno 28] No space left on device

上記の様にダウンロードされたインスタンスログの中に【No space left on device】と出てしまっている場合は、ディスク容量が 100% になってしまいる可能性が物凄く高いです。
そのため、ディスクの拡張を実施する必要があります。

ディスク容量のを拡張

作業をする際は必ずバックアップをしましょう。

  1. 対象インスタンス】を選択
  2. ストレージ】タブを選択
  3. アタッチされている【ボリューム】を選択 Image from Gyazo
  4. 対象インスタンス】のボリュームを選択
  5. ボリュームの変更】を選択 Image from Gyazo
  6. サイズ】の欄にて任意のサイズを入力して【変更】を選択
  7. 注意画面が表示されますが【はい】を選択 Image from Gyazo

以上でストレージボリュームが枯渇してしまった時の対処方法になります。

なお、ボリュームの変更を実施したにも関わらず SSH 接続が出来ない場合は、別途調査用の EC2 インスタンスにボリュームをアタッチ後に調査をしてみてください。

おわりに

システムログは嘘をつかない。