Programming Self-Study Notebook

勉強したことを忘れないように! 思い出せるように!!

仮想サーバがDiskFull時の対応方法

f:id:overworker:20200617233306p:plain:h250

環境

状況

  • 状況①:定期実行しているJobで不自然なログが出力されるようになった

  • 状況②:原因を解析するためにTeraTerm(ssh)でログイン、その後cdコマンドを実施してもエラーが発生する

f:id:overworker:20210331012400p:plain
$ cd auto-bash: ヒアドキュメント用一時ファイルを作成できません: デバイスに空き領域がありませんす

Linuxでdisk full、ディスクが一杯の状態であることを示している。

  • 状況③:Disk残量を確認する(DiskFullを確認する)
df -h --total
  • 以下は参考イメージです(記録し忘れたので、、、)
ファイルシス            サイズ  使用  残り 使用% マウント位置
/dev/mapper/centos-root   152G   20K  152G   100% /                  ←ココが枯渇していた
devtmpfs                  3.9G     0  3.9G    0% /dev
tmpfs                     3.9G     0  3.9G    0% /dev/shm
tmpfs                     3.9G  219M  3.7G    6% /run
tmpfs                     3.9G     0  3.9G    0% /sys/fs/cgroup
/dev/sda1                1014M  285M  730M   29% /boot
tmpfs                     783M   12K  783M    1% /run/user/42
/dev/sr0                  4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
total                     173G   20G  154G   12% -

対応方法

考え方

  • 手順①:サーバーの再起動を実施
    • 余計なpidファイルとか、tmpファイルが消える。
    • cdコマンドrmコマンドが利用可能になる
  • 手順②不要なディレクトリを削除して容量を確保する

手順1:サーバの再起動

reboot

rebootコマンドで以下のErrorが発生した

[ ~]$ reboot
User root is logged in on sshd.
User root is logged in on sshd.
User root is logged in on seat0.
Please retry operation after closing inhibitors and logging out other users.
Alternatively, ignore inhibitors and users with 'systemctl reboot -i'.
  • 1台のPC内で複数のTeraTermを起動し、並列でアクセスしている状態で、再起動コマンドを実行した際に発生したエラー表示
    • TeraTermが複数起動(かつ同一のマシンに接続)している場合は再起動できない

  • rebootコマンドを入力する接続以外は、切断することで解消されます

手順2:ディスクの使用状況を確認する

  • 少し空きが増えてることが確認できるはずです。
df -h --total

手順3:サイズが大きくなっているディレクトリを調べる

// 実行したディレクトリ、及び配下のディレクトリについて使用データサイズを抽出する
// (DiskFull位データがたくさんあると、算出に時間がかかると思います。)
du

// 合計値のみを表示する
du -s

※ 私はcdコマンドで対象ディレクトリへ移動しながらdu -sを実施しました

手順4:不要データ(ディレクトリごと)削除

rm -r (ディレクトリ名)

利用したUnixコマンド

reboot(サーバーを再起動する)

reboot

df(ディスクの残量を確認する)

df -h --total

duディレクトリ配下の容量を確認する)

// 詳細表示
du

// 合計値表示
du -s

rmディレクトリ配下をまとめて削除する)

rm -r (ディレクトリ名)