[No space left on device] EC2 インスタンスEBSボリュームが枯渇したときの対処方法
テクニカルサポートの丸屋 正志(まるちゃん)です。
久しぶりに EC2 インスタンスに SSH 接続をしようとして、入れなかった時ってありませんか?僕は勿論ありますよ。そしてめっちゃ焦ります。
前提条件
現状はインスタンスに対して SSH 接続ができない状態で、かつバッチ処理やサービスも提供ができていないと想定します。
まず初めにシステムログを確認
接続ができない状況の EC2 インスタンスの【システムログ】を確認します。
【システムログを取得】のページに繊維すると下記のように閲覧ができます。
システムログはブラウザー上でも確認自体は可能ですが、人間の目には限界があるため【ダウンロード】を選択して任意のエディターで開いてください。
(個人的には、 VScode で開いて log 形式にして見てあげると見やすいです。)
ダウンロードしたインスタンスの起動ログ内で【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% になってしまいる可能性が物凄く高いです。 そのため、ディスクの拡張を実施する必要があります。
ディスク容量のを拡張
作業をする際は必ずバックアップをしましょう。
- 【対象インスタンス】を選択
- 【ストレージ】タブを選択
- アタッチされている【ボリューム】を選択
- 【対象インスタンス】のボリュームを選択
- 【ボリュームの変更】を選択
- 【サイズ】の欄にて任意のサイズを入力して【変更】を選択
- 注意画面が表示されますが【はい】を選択
以上でストレージボリュームが枯渇してしまった時の対処方法になります。
なお、ボリュームの変更を実施したにも関わらず SSH 接続が出来ない場合は、別途調査用の EC2 インスタンスにボリュームをアタッチ後に調査をしてみてください。
おわりに
システムログは嘘をつかない。