Назад | Перейти на главную страницу

Первичный раздел Linux Debian (/) сервера заполнен, как освободить для него место

Как безопасно освободить место в корневой файловой системе?

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, чтобы удалить их.

  • Вы могли бы использовать parted или аналогичные инструменты Инструменты RAID для изменения размеров разделов. Не забудьте перед этим подготовить текущую резервную копию!

  • Как быстрое средство, что я не могу рекомендовать, вы также можете переместить свой /usr папку в /home раздел и символическая ссылка от корня. Не забудьте перед этим подготовить текущую резервную копию! Мой рабочий порядок будет:

    1. Если возможно, выключите и перезагрузитесь из аварийной системы.
    2. Скопируйте папку со всеми разрешениями, ссылками и т.д .: # cp -a /usr /home/root-usr (Пути будут отличаться, когда вы работаете со спасательной системой! Убедитесь, что нет пользователя с именем root-usr! ;-))
    3. Сравните старую и новую папку, чтобы убедиться, что копирование сработало: # diff -r /usr /home/root-usr
    4. Удалите старый каталог и создайте символическую ссылку: # rm -rf /usr; ln -s /home/root-usr /usr (Убедитесь, что символическая ссылка верна, когда делаете это из спасательной системы! Возможно, вам придется chroot для этого.)
    5. Перезагрузитесь в вашу систему.

Всегда будьте осторожны. Вы должны знать, что делаете.

Ваш var В папке около 431 Мб данных, я бы начал с очистки ваших журналов.

Ваши числа не складываются. У вас могут быть данные о корневой файловой системе, которые вы не «видите».

Я могу рассчитывать только ~ 3G на выход du вашего рута. Я подозреваю, что у вас есть:

  • в какой-то момент скопировал данные в /home в другую файловую систему и изменил точку монтирования, но не смог удалить исходную копию - это, конечно, все еще занимает место. Теперь, когда вы изменили точку монтирования, этого просто не видно.

    Чтобы найти такой призрак оперы данные, можно сравнить итоги du на / (без пересечения границ ФС), и df.

  • Или создал несколько огромных файлов в /, и в этом случае вам нужно переместить / удалить их - им здесь не место.

Будет ли / home позже добавлен / смонтирован в систему?

если у вас есть старые данные в md1 и в его / home каталоге, и вы смонтировали новый раздел (md3) в / home каталог с непустой опцией, / home может скрыть исходные данные, которые поместили и зарезервировать его размер в md1, но вы можете не видеть, потому что скрыто этим другим патицией,

Если вы можете прервать работу сервера, переведите систему в режим восстановления.

init 1

umount /home system и найдите файлы, которые остались в исходном корневом разделе (md1)

ls -la /home