Amazon EC2 Ubuntu

Буквально вчера меня встретило то, что меня удивило и было совершенно неожиданным. Я подключился к одному из своих удаленных серверов на AWS, чтобы отправить некоторые изменения, которые я внес в службу генератора отчетов в формате PDF, работающую на EC2. Как только я попытался вытащить свои изменения из Github, меня встретили

[log_config:warn] [pid 10720:tid 140282565658368] (28)No space left on device: 

Я был сбит с толку тем, что приложение, работающее на этом сервере, довольно мало. Я понятия не имел, с чего начать поиск. Вот шаги, которые в конечном итоге решили проблему.

  • Сначала проверьте, сколько места у вас доступно и какой раздел заполняется, с помощью следующей команды:
$ df -h

Результат будет выглядеть примерно так

Filesystem      Size  Used Avail Use% Mounted on
udev            992M     0  992M   0% /dev
tmpfs           200M   21M  180M  11% /run
/dev/xvda1       10G   10G     0 100% /
tmpfs          1000M     0 1000M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs          1000M     0 1000M   0% /sys/fs/cgroup
tmpfs           200M     0  200M   0% /run/user/1000

Судя по всему, у экземпляра нет места на диске, но что заполняет все это пространство, которое должно быть пустым?

  • Во-вторых, выясните, какие глубоко спрятанные большие файлы занимают много места в хранилище.
$ sudo du -shx /* | sort -h

Это может занять немного времени, после завершения работы будет возвращено следующее

...
4.0K    /srv
8.0K    /snap
16K     /lost+found
28K     /root
6.5M    /etc
7.1M    /tmp
14M     /sbin
16M     /bin
21M     /run
75M     /boot
185M    /lib
218M    /home
550M    /var
4.8G    /usr
  • Похоже, что каталог /usr может потребовать дополнительной проверки, измените предыдущую команду.
$ sudo du -shx /usr/* | sort -h

Тогда мы увидим что-то вроде

...
4.0K    /usr/games
20M     /usr/include
35M     /usr/sbin
221M    /usr/bin
221M    /usr/share
3.8G    /usr/src
461M    /usr/local
488M    /usr/lib

В моем случае каталог /usr/src заполнялся.

Снова отрегулируйте команду, чтобы мы могли дополнительно проверить каталог /usr/src.

$ sudo du -shx /usr/src/* | sort -h

В каталоге /usr/src были большие файлы заголовков Linux, заполнившие диск.

13M     /usr/src/linux-headers-4.4.0-1085-aws
13M     /usr/src/linux-headers-4.4.0-1087-aws
13M     /usr/src/linux-headers-4.4.0-1107-aws
106M    /usr/src/linux-aws-headers-4.4.0-1085
106M    /usr/src/linux-aws-headers-4.4.0-1087
106M    /usr/src/linux-aws-headers-4.4.0-1107

Насколько я знаю, это связано с автоматическими обновлениями на серверах Ubuntu. Я до сих пор не уверен, почему сервер медленно разрушается, не подавая никаких сигналов тревоги, но, по крайней мере, это одна из причин, по которой ваш экземпляр может заполняться.

  • Наконец, безопасно очистите эти запоминающиеся заголовки с помощью следующей команды и отпразднуйте свою победу.
$ sudo apt autoremove

Запустите $ df -h, чтобы проверить и убедиться, что освободили место.

Filesystem      Size  Used Avail Use% Mounted on
udev            992M     0  992M   0% /dev
tmpfs           200M   21M  180M  11% /run
/dev/xvda1      9.7G  2.9G  6.8G  30% /
tmpfs          1000M     0 1000M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs          1000M     0 1000M   0% /sys/fs/cgroup
tmpfs           200M     0  200M   0% /run/user/1000

Вы также можете использовать $ lsblk для лучшего обзора

Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/xvda1     ext4  9.7G  2.9G  6.8G  30% /

Если вам по-прежнему требуется больше места, просто повторите шаги, описанные ранее, чтобы найти более крупные каталоги или расширить свой раздел. После расширения раздела через консоль AWS не забудьте перезагрузить экземпляр, чтобы применить изменения.