Как безопасно освободить место в корневой файловой системе?
df
говорит:
Filesystem Size Used Avail Use% Mounted on
/dev/md1 9.7G 9.2G 0 100% /
tmpfs 3.9G 0 3.9G 0% /lib/init/rw
udev 10M 244K 9.8M 3% /dev
tmpfs 3.9G 620K 3.9G 1% /dev/shm
/dev/md3 1.8T 327G 1.4T 19% /home
================================================== ====================
du
дает мне:
root@sbs691:/# ls | xargs du -hs
5.8M bin
13M boot
244K dev
8.0K dotdeb.gpg
8.1M etc
281G home
17M lib
3.7M lib32
0 lib64
16K lost+found
8.0K media
4.0K mnt
157M opt
du: cannot access `proc/31735/task/31735/fd/4': No such file or directory
du: cannot access `proc/31735/task/31735/fdinfo/4': No such file or directory
du: cannot access `proc/31735/fd/4': No such file or directory
du: cannot access `proc/31735/fdinfo/4': No such file or directory
0 proc
41M root
4.0K run
14M sbin
4.0K selinux
4.0K srv
0 sys
129M tmp
2.2G usr
431M var
================================================== ===
Обновление после 1-го комментария, du
из /var
:
root@sbs691:/var# ls | xargs du -hs
4.8M backups
149M cache
4.0K games
265M lib
4.0K local
12K lock
14M log
4.0K mail
4.0K opt
200K run
24K spool
4.0K tmp
16K www
Проблема теперь временно решена путем перезапуска nginx.
service nginx restart
После перезапуска
root@sbs691:/# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/md1 9.7G 6.0G 3.3G 65% /
tmpfs 3.9G 0 3.9G 0% /lib/init/rw
udev 10M 244K 9.8M 3% /dev
tmpfs 3.9G 620K 3.9G 1% /dev/shm
/dev/md3 1.8T 339G 1.4T 20% /home
Вероятно, у вас есть файл, который был удален, но остается открытым (через fd) выполняющим в него запись демоном. Взгляните на вывод
lsof +L1
который перечислит такие файлы. Когда вы знаете файл, вам просто нужно выяснить, какой демон, а затем сказать ему, чтобы он перезапустил или повторно открыл его файл журнала.
Из комментариев: Оказалось, что OP удалил файлы в / var и не перезапустил демонов (в частности, nginx), которые записывали в файлы.
Самый быстрый (и несколько очень хакерский) способ - загрузить сервер с загрузочного носителя и переместить /var
а может даже /usr
к /home
файловая система и ссылка на нее обратно.
Правильный (TM) подход - разумно изменить размер разделов, но, поскольку вы используете программный RAID, это не совсем просто или быстро.
Поскольку это система Debian, вы, вероятно, накопили много загруженных пакетов в /var/cache/apt
который может заполнить ваш /var
. Если у вас нет веской причины хранить их, выпускайте apt-get clean
как root, чтобы удалить их.
Вы могли бы использовать Инструменты RAID для изменения размеров разделов. Не забудьте перед этим подготовить текущую резервную копию! parted
или аналогичные инструменты
Как быстрое средство, что я не могу рекомендовать, вы также можете переместить свой /usr
папку в /home
раздел и символическая ссылка от корня. Не забудьте перед этим подготовить текущую резервную копию! Мой рабочий порядок будет:
# cp -a /usr /home/root-usr
(Пути будут отличаться, когда вы работаете со спасательной системой! Убедитесь, что нет пользователя с именем root-usr
! ;-))# diff -r /usr /home/root-usr
# rm -rf /usr; ln -s /home/root-usr /usr
(Убедитесь, что символическая ссылка верна, когда делаете это из спасательной системы! Возможно, вам придется chroot
для этого.)Всегда будьте осторожны. Вы должны знать, что делаете.
Ваш var
В папке около 431 Мб данных, я бы начал с очистки ваших журналов.
Ваши числа не складываются. У вас могут быть данные о корневой файловой системе, которые вы не «видите».
Я могу рассчитывать только ~ 3G на выход du вашего рута. Я подозреваю, что у вас есть:
в какой-то момент скопировал данные в /home
в другую файловую систему и изменил точку монтирования, но не смог удалить исходную копию - это, конечно, все еще занимает место. Теперь, когда вы изменили точку монтирования, этого просто не видно.
Чтобы найти такой призрак оперы данные, можно сравнить итоги du
на / (без пересечения границ ФС), и df
.
Или создал несколько огромных файлов в /
, и в этом случае вам нужно переместить / удалить их - им здесь не место.
Будет ли / home позже добавлен / смонтирован в систему?
если у вас есть старые данные в md1 и в его / home каталоге, и вы смонтировали новый раздел (md3) в / home каталог с непустой опцией, / home может скрыть исходные данные, которые поместили и зарезервировать его размер в md1, но вы можете не видеть, потому что скрыто этим другим патицией,
Если вы можете прервать работу сервера, переведите систему в режим восстановления.
init 1
umount /home
system и найдите файлы, которые остались в исходном корневом разделе (md1)
ls -la /home