Вопрос или проблема
У меня проблема с виртуальной машиной, на которой работает Nextcloud. Версия – Ubuntu 22.04 LTS.
Система постоянно указывает, что логический том /dev/mapper/ubuntu–vg-ubuntu–lv полон (использовано 100%). Чтобы поддерживать работу системы, мне приходилось постоянно увеличивать размер виртуального диска и расширять логический том (используя это руководство).
В настоящее время логический том имеет размер 440 ГБ, из которых 35 ГБ свободно.
Хранилище Nextcloud и резервный диск смонтированы в /mnt: хранилище Nextcloud (/mnt/nextcloud) – это диск iSCSI на NAS, в настоящее время на нем хранится 3 ТБ данных. Резервный диск (348 ГБ) также смонтирован в /mnt (/mnt/carpetarespaldosnas).
miusuario@nextcloud:~$ df -h
Файловая система Размер Использовано Доступно Использ% Смонтировано на
tmpfs 3.2G 1.7M 3.2G 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 440G 387G 35G 92% /
tmpfs 16G 28K 16G 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda2 2.0G 254M 1.6G 14% /boot
/dev/sda1 1.1G 6.1M 1.1G 1% /boot/efi
/dev/sdb1 24T 3.1T 20T 14% /mnt/nextcloud
tmpfs 3.2G 4.0K 3.2G 1% /run/user/1000
miusuario@nextcloud:~$ sudo du -cha --max-depth=1 /mnt 2>/dev/null
1.3G /mnt/NCBACKUP-OLD
1002M /mnt/NCBACKUP
4.0K /mnt/ncdata
3.1T /mnt/nextcloud
349G /mnt/carpetarespaldosnas
3.5T /mnt
3.5T всего
Поскольку логический том смонтирован на /, я пробовал различные способы определить его общий размер, чтобы выяснить, что занимает место, но он не показывает более 30 ГБ использованными.
miusuario@nextcloud:~$ sudo du -cha --max-depth=1 --exclude=/mnt / 2>/dev/null
0 /lib64
28K /dev
0 /proc
4.5G /usr
4.0K /opt
260M /boot
4.0K /media
0 /libx32
0 /sbin
0 /lib32
308K /home
3.8G /swap.img
1.8G /snap
124M /root
1.7M /run
240K /tmp
20G /var
0 /bin
0 /lib
4.0K /srv
16K /lost+found
11M /etc
0 /sys
30G /
30G всего
Таким образом, у меня нет представления о том, что заполняет диск или что фактически использует пространство.
Я был бы признателен за вашу помощь. Я носитель испанского языка, извините, если что-то написано неправильно. Спасибо
Ответ или решение
Как IT-эксперт, я понимаю, что проблема, с которой вы столкнулись, заключается в том, что логический том /dev/mapper/ubuntu--vg-ubuntu--lv
, смонтированный в корневую файловую систему /
, показывает использование 100%, в то время как команды df
и du
отображают разное количество занятых данных. Давайте подробно разберем это.
1. Проблема с отображением дискового пространства
На первый взгляд, кажется, что всё должно совпадать, но это не всегда так. Основная причина, по которой df
может показывать 100% использования, а du
— значительно меньше, заключается в том, что некоторые файлы могут быть открыты и использовать пространство, но они не видны при выполнении du
.
2. Файлы, которые могут не отображаться
a. Удаленные файлы, используемые процессами
Если какой-то процесс удаляет файл, но при этом продолжает его использовать, пространство, занимаемое этим файлом, все еще учитывается в визуализированных данных df
, но не отображается в результатах du
. Этот сценарий очень часто наблюдается с такими файлами, как журналы и временные файлы.
Решение
Чтобы выявить такие файлы, можно использовать команду lsof
(list open files):
sudo lsof | grep deleted
Эта команда покажет файлы, которые были удалены, но по-прежнему открыты процессами, и тем самым занимают место на диске.
b. Папки с закладками (bind mounts)
Если у вас есть монтированные точки (например, /mnt
), которые могут быть использованы в файловой системе следующим образом, то используемое пространство может не учитываться при использовании du
, если вы не исключите соответствующие директории. Ваши монтированные тома каждый имеют свое собственное пространство, и если файлы в них не видны, они не будут отображаться в du
, если вы не исключите нужные директории.
3. Использование du
и анализ пространства
Вы уже использовали команду du
, чтобы посмотреть размер различных директорий. Однако для более детального анализа можно выполнить следующие команды:
Наиболее используемые директории
sudo du -h / | sort -hr | head -n 20
Эта команда покажет 20 самых больших директорий, что обеспечит детализированный анализ, где может находиться проблема с заполнением диска.
Анализ незанятого пространства
Раздел var
может занимать большое пространство, особенно если там находятся временные файлы или журналы:
sudo du -h /var | sort -hr | head -n 20
4. Docker и контейнеры
Если вы используете Docker, возможно, контейнеры занимают гораздо больше места, чем вы ожидали. Проверьте, нет ли остановленных контейнеров или неиспользуемых образов:
sudo docker system df
5. Подводя итог
Ваша проблема может заключаться в использовании пространства файлами, которые были удалены, но остаются открытыми, или в контейнерах Docker (если они используются). Применив указанные выше команды, вы должны быть в состоянии точно определить, какое пространство занято и что именно его использует.
Рекомендуется также регулярно очищать ненужные файлы, такие как временные, и следить за работой системы, чтобы избежать таких ситуаций в будущем. Если проблема остается неразрешенной, вам может потребоваться оценить и оптимизировать используемое программное обеспечение, возможно, изменив архитектуру хранения данных вашего Nextcloud.