Как освободить место на диске?

Помогите, пожалуйста, грамотно освободить место, без потери данных.

georgiy@debian-pp:~$ df -h
Файловая система                 Размер Использовано  Дост Использовано% Cмонтировано в
udev                               7,8G            0  7,8G            0% /dev
tmpfs                              1,6G         1,8M  1,6G            1% /run
/dev/sda2                          109G          98G  5,0G           96% /
tmpfs                              7,8G          27M  7,8G            1% /dev/shm
tmpfs                              5,0M          12K  5,0M            1% /run/lock
/dev/loop0                          56M          56M     0          100% /snap/core18/2846
/dev/loop2                          45M          45M     0          100% /snap/snapd/23545
/dev/loop3                          45M          45M     0          100% /snap/snapd/23771
/dev/loop1                          56M          56M     0          100% /snap/core18/2855
/dev/sda1                          511M         5,9M  506M            2% /boot/efi
/dev/sdb1                          229G         119G   98G           55% /home
192.168.88.93:/mnt/main/nfs-devs   975G          33G  942G            4% /var/nfs-devs
tmpfs                              1,6G         2,6M  1,6G            1% /run/user/1000

При запуске докера контейнеров в /dev/sda2 кончается место, и выдаются ошибки.

скриншот занятого места

Может быть, можно как-то соединить эти два раздела, главное, чтобы было безопасно.


Ответы (1 шт):

Автор решения: Pak Uula

Пардон, я проглядел, что у вас место закончилось в /, а не в /home.

Идея та же самая:

  1. найти каталог, который занимает больше всего места
  2. проанализировать его
  3. найти лекарство
sudo du -m -d1 -a -x / | sort -nr

Пример

176320  /
128564  /var
27587   /home
8193    /swap.img
8193    /swapfile
3777    /usr
6       /etc
4       /tmp
.
.

Аналогично смотрим содержимое /var: sudo du -mxad1 /var/ | sort -nr

128565  /var/
127187  /var/lib
1249    /var/log
127     /var/cache
2       /var/backups

Идём дальше

127188  /var/lib/
126250  /var/lib/docker
674     /var/lib/snapd
219     /var/lib/apt
34      /var/lib/dpkg
...

Что и требовалось доказать - докер занимает кучу места. Есть много вариантов как чистить докер. Самый безжалостный - удалить всё, кроме запущенных контейнеров и связанных с ними образов, томов и т.д.:

docker system prune -a --volumes

После того, как почистите, остановите докер и перенесите /var/docker в /home/docker, на другой раздел. И либо поставьте символическую ссылку ln -s /home/docker /var/docker, либо пропишите в конфигурационном файле /etc/docker/daemon.json

{
  "data-root": "/home/docker"
}

Исходный ответ

Для начала стоит узнать, куда делось место. Я для этого использую команду du:

  • ключ -d 1 выводит суммарное место, которое заменяет каталог со всеми подкаталогами на глубине 1 (то есть подкаталоги того каталога, для которого запущена команда)
  • ключ -m выводит размер в мегабайтах.
  • ключ -a включает в вывод файлы, не только каталоги
cd $HOME
du -a -m -d 1 . | sort -nr

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

Например, у меня:

10445   .
4016    ./go
3067    ./.cache
1798    ./work
1133    ./.vscode-server
224     ./.nvm
80      ./.npm
71      ./go1.23.4.linux-amd64.tar.gz
.
.

После такого анализа можно смотреть подробности, кто занимает максимум места, и посмотреть в интернете, как чистить так, чтобы ничего не сломать.

$ du -a -m -d 1 ./go | sort -nr
4016    ./go
3918    ./go/pkg
98      ./go/bin

$ du -a -m -d 1 ./.cache | sort -nr
3067    ./.cache
2681    ./.cache/go-build
336     ./.cache/cloud-code
42      ./.cache/pip
.
.

получается, у меня максимальное место занимают модули go и кэш сборки go. Значит, нужно смотреть в интернете, как его чистить.

$ go clean -modcache
$ du -a -m -d 1 . | sort -nr
6527    .
3067    ./.cache
1798    ./work
1133    ./.vscode-server
224     ./.nvm
98      ./go
.
.

Минус четыре гигабайта.

$ go clean -cache
$ du -a -m -d 1 . | sort -nr
3846    .
1798    ./work
1133    ./.vscode-server
386     ./.cache
224     ./.nvm
98      ./go
.
.

Минус ещё три гигабайта.

Разумеется, у вас место будет занято чем-то другим. Но общая идея остаётся:

  1. Диагностика - где тратится более всего места.
  2. Поиск средств для очистки именно для тех приложений, которые занимают более всего места,
  3. Предметная чистка и проверка результата.

Повторять до тех пор, пока не освободиться достаточно места.

Если не уверены, добавьте в ваш вопрос вывод команды du -a -m -d 1 ~ | sort -nr, посмотрим, что и как можно удалить.

→ Ссылка