Как освободить место на диске?
Помогите, пожалуйста, грамотно освободить место, без потери данных.
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 шт):
Пардон, я проглядел, что у вас место закончилось в /, а не в /home.
Идея та же самая:
- найти каталог, который занимает больше всего места
- проанализировать его
- найти лекарство
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
.
.
Минус ещё три гигабайта.
Разумеется, у вас место будет занято чем-то другим. Но общая идея остаётся:
- Диагностика - где тратится более всего места.
- Поиск средств для очистки именно для тех приложений, которые занимают более всего места,
- Предметная чистка и проверка результата.
Повторять до тех пор, пока не освободиться достаточно места.
Если не уверены, добавьте в ваш вопрос вывод команды du -a -m -d 1 ~ | sort -nr, посмотрим, что и как можно удалить.
