Рейтинг:4

Не хватает примерно 900 ГБ свободного места на жестком диске.

флаг ae

У меня есть накопитель WD M.2 емкостью 2 ТБ (1,8 ТБ), на котором не хватает нескольких сотен ГБ дискового пространства, но я не могу выяснить, где он находится и что его занимает. Это также происходило на моем твердотельном накопителе Samsung SATA, поэтому я не думаю, что это имеет какое-либо отношение к самому диску. Это единственный раздел на любом из этих дисков.

дф говорит, что я использую 1,3 Т данных

trever@server:~$ df -h
Используемый размер файловой системы Доступно Использование % Установлено на
udev 32G 0 32G 0% /dev
tmpfs 6.3G 5.7M 6.3G 1%/запуск
/dev/nvme0n1p2 1,8 т 1,3 т 477 г 73% /

Анализатор использования диска (баобаб) говорит, что я использую ~ 850 ГБ пространства, что мне кажется более точным для того, что я ожидаю. Я запускал это как root (судо баобаб) и просканировал корневой диск / и это то, с чем я вернулся

введите описание изображения здесь

И затем системный монитор также говорит, что я использую 1.4T, и это нормально, я понимаю, что может быть некоторое округление и / или как рассчитывается дисковое пространство.

Использование 800-900 ГБ хранилища имеет для меня больше смысла, я проверил такие вещи, как зарезервированное пространство:

trever@server:~$ sudo tune2fs -l /dev/sda1 | grep -i "количество блоков"
[sudo] пароль для Тревера: 
Количество блоков: 976754176
Количество зарезервированных блоков: 48837708

Я также проверил размер /вар/журналы (20 ГБ) и /var/кэш/apt/архивы/ (380 МБ), и я до сих пор не понимаю, куда пропали сотни ГБ.

Есть еще предложения о том, что может занимать это место?

Обновление: со временем пропадает все больше и больше места. Вот где я сейчас:

trever@server:~$ df -h
Используемый размер файловой системы Доступно Использование % Установлено на
udev 32G 0 32G 0% /dev
tmpfs 6.3G 5.3M 6.3G 1%/запуск
/dev/nvme0n1p2 1,8 т 1,6 т 157 г 92% /

И вот что я могу объяснить:

root@server:~# du -cha --max-depth=1 --exclude=/Volumes/* / | grep -E "М|Г"
42M /скрипты
du: невозможно получить доступ к '/proc/44457': нет такого файла или каталога
du: невозможно получить доступ к '/proc/44535': нет такого файла или каталога
du: невозможно получить доступ к '/proc/44586/task/44586/fd/4': нет такого файла или каталога
du: невозможно получить доступ к '/proc/44586/task/44586/fdinfo/4': нет такого файла или каталога
du: невозможно получить доступ к '/proc/44586/fd/3': нет такого файла или каталога
du: невозможно получить доступ к '/proc/44586/fdinfo/3': нет такого файла или каталога
94G /вар
du: невозможно получить доступ к '/run/user/1000/gvfs': разрешение отклонено
5,3 м / пробег
2.1G / файл подкачки
183M / загрузка
14 м/и т. д.
538G/докер
202G /дом
8,9 г/usr
6,0 г / щелчок
1,8G / корень
852 г /
всего 852G

я сделал fsck и вроде нормально. Я не уверен, что волшебным образом поглощает мое пространство, но это очень беспокоит.

флаг in
Какую файловую систему вы используете на своем SSD? Если это ZFS, у вас может быть куча места, занятого моментальными снимками.
trever avatar
флаг ae
Извините, я должен был упомянуть об этом, я использую EXT4.
флаг in
Интересно, сколько «маленьких файлов» у вас есть, так как это может оставить большое количество блоков в основном пустыми. Разница между «размером файла» и «пространством, используемым файлом», как правило, не является проблемой, которую люди видят, пока не начнут работать с устройствами хранения данных емкостью несколько ТБ.
флаг za
Слишком давно, чтобы вспомнить точные детали, у меня трижды были похожие проблемы с выпусками до 20.04. Однажды была проблема с разделом. Когда-то был странный файл. Один раз ни чего не было, и я не мог найти решения, некому было помочь. У меня не осталось другого выбора, кроме как выполнить новую ручную установку. Новая установка заняла около 20 минут и решила все проблемы. лол, целесообразность имеет значение.
oldfred avatar
флаг cn
Вы вынесли мусор? Уборка? Некоторые инструменты показывают итоги с и другие без. Я предпочитаю инструменты командной строки, такие как df, du (или ncdu) и lsblk, а затем gparted, если использую графический интерфейс. Как /var получил 85 ГБ? Мой /var в Kubuntu 20.04 составляет 800 МБ.
флаг cc
Также проверьте, что находится под любыми точками монтирования. См. https://unix.stackexchange.com/questions/4426/access-to-original-contents-of-mount-point.
nobody avatar
флаг gh
`найти`, пожалуйста.
heynnema avatar
флаг ru
Есть ли на диске таблица разделов MBR (dos) или GPT? См. `sudo fdisk -l`. Доложить. Начинайте комментировать меня с @heynnema или я пропущу их.
trever avatar
флаг ae
@oldfred - да, я очистил корзину и все, что смог найти. `/var` большой из-за Docker.
trever avatar
флаг ae
@никто - https://gist.github.com/Treverr/79cfc04baac54db0a3dd1e97b1b03fe7
trever avatar
флаг ae
@heynnema — GPT (https://gist.github.com/Treverr/74b0bebf551e3b0cd187823fc08a995b)
Robert Riedl avatar
флаг us
вы используете разреженные файлы?
Satoshi Nakamoto avatar
флаг lc
Я не думаю, что что-то пропущено с `df -h`, это говорит о том, что 477G ДОСТУПНО. Вы имеете в виду необычное пространство, занимающее SATA, возможно, это проблема между производителем и способностью Ubuntu обрабатывать этот драйвер. Как это было раньше?
trever avatar
флаг ae
@RobertRiedl Я не на этом диске
trever avatar
флаг ae
@ Tyþë-à - Я вижу, что ИСПОЛЬЗУЕМОЕ пространство за вычетом емкости диска (1,8 Т) не приближается к тому, что сообщает доступное. Он выключен почти на 500 ГБ. Я вижу одно и то же на двух разных дисках, когда перешел с диска SATA на диск NVMe M.2.
Satoshi Nakamoto avatar
флаг lc
Конечно, так что вы сделали ошибку. Существует два типа данных: MiB (мегабибайты) и MB (мегабайты), ваш драйвер никогда не будет ровно 1,8 ТБ из-за этого преобразования.
Satoshi Nakamoto avatar
флаг lc
Кроме того, я вижу, что /udev и tmpfs занимают 38 ГБ и в сумме 477 ГБ + 38 ГБ = 515 ГБ. Я считаю, что вы получили свой ответ
ExploitFate avatar
флаг zm
Не могли бы вы запустить `fsck` и добавить вывод к вопросу?
trever avatar
флаг ae
@ExploitFate Недавно я запускал fsck, и файловая система в хорошем состоянии. Я могу запустить его снова. Но теперь `df` показывает, что у меня есть только 25 ГБ, и я до сих пор не могу понять, почему
trever avatar
флаг ae
У кого-нибудь есть другие идеи? Ничто не говорит о том, что это что-то сделало, и теперь у меня почти 1 ТБ недостающего места. Что-то серьезно не так.
trever avatar
флаг ae
@SatoshiNakamoto не уверен, что понимаю, что ты имеешь в виду. Например, теперь `du` составляет 852 ГБ, а `df` говорит, что было использовано 1,6 ТБ, что вдвое больше, но я все еще не могу понять, где 800 ГБ.
Robert Riedl avatar
флаг us
Я все еще думаю, что это как-то связано с тем, как докер обрабатывает файлы.
trever avatar
флаг ae
Любая идея, как я могу проверить эту теорию/подтвердить ее? Остановить все мои службы докеров?
Рейтинг:2
флаг in

Гипотеза: удаленные, но все еще открытые файлы

Учитывая информацию, предоставленную до сих пор, и намек на наличие большого объема файлов, связанных с докером, я подозреваю, что это вызвано удаленными, но все еще открытыми файлами, то есть файлами, которые создаются программой, а затем программа удаляет путь к файловой системе, оставляя файловый дескриптор открытым.

Это может быть результатом активности Docker в файловой системе.

Принцип решения

  • Выявите удаленные файлы, на которые все еще ссылаются процессы (способ см. ниже).
  • В идеале раскрывайте имена и/или идентификаторы процессов, чтобы у вас были подсказки о том, что происходит.
  • Закройте эти процессы, обратите внимание, что место освобождено.
  • Если ничего не помогает, просто перезагрузите машину. Если пространство освобождается, это согласуется с гипотезой.

Как раскрыть информацию

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

Первый взгляд

Для общего ознакомления вы можете сделать следующее:

lsof -n | egrep -w "удалено|^КОМАНДА"

Но это также будет перечислять множество псевдофайлов только в памяти, которые не занимают никакого фактического места для хранения.

Пример:

КОМАНДА PID TID TASKCMD ПОЛЬЗОВАТЕЛЬ FD ТИП УСТРОЙСТВА РАЗМЕР/ВЫКЛ ИМЯ УЗЛА
Xorg 1183 root 78u REG 0,1 4 2058 /memfd:xshmfence (удалено)
Xorg 1183 root 85u REG 0,1 4 7182 /memfd:xshmfence (удалено)
Xorg 1183 root 92u REG 0,1 4 7137 /memfd:xshmfence (удалено)
Xorg 1183 root 94u REG 0,1 4 7870 /memfd:xshmfence (удалено)

Отфильтрованный простой список

Это фильтрует и в основном показывает реальные файлы:

lsof -F "sn" -lnPX -M | sed -n 's|^n/|/|p' | grep удален | egrep -v '^/(dev/shm|memfd:|proc)' | LC_ALL=С сортировать -n | уникальный

Пример:

/tmp/#someinodenumber (удален)

Полная информация с размером, именем процесса и задачи

Это более интересно: в нем будут перечислены все файлы вместе с занимаемым ими пространством в байтах и ​​т. д.

Во-первых, медленная часть, сбор данных

# Вы можете запустить эту часть от имени пользователя root, чтобы убедиться, что все сообщается
lsof -F "ctsupMin" -lnPX -M >|/tmp/lfosoutput 

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

# Можно запускать как обычный пользователь, root не нужен
{ echo "РАЗМЕР^UID^PID^ИМЯ ПРОЦЕССА^ИМЯ ЗАДАЧИ^INODE^ПУТЬ"
</tmp/lfosoutput \
python3 -c $'import sys; е={}
def g(c): вернуть f.get(c,"(неизвестно)")
для строки в sys.stdin:
 с=строка[0] ; г=строка[1:].rstrip() ; е [с] = г
 если c=="n" и f["t"]=="REG" \
    и "(удалено)" в f["n"] \
    а не f["n"].startswith("/memfd:") \
    а не f["n"].startswith("/dev/shm") :
  print(f'\''{g("s")}^{g("u")}^{g("p")}^\"{g("c")}\"^\"{ г("М")}\"^{г("я")}^{г("п")}'\'')
  е={}' \
| LC_ALL=С сортировать -n | уникальный
echo "РАЗМЕР^UID^PID^ИМЯ ПРОЦЕССА^ИМЯ ЗАДАЧИ^INODE^ПУТЬ"
} | столбец -t -s '^'

Пример вывода: файл размером 36 мегабайт, используемый Firefox.

РАЗМЕР UID PID НАЗВАНИЕ ПРОЦЕССА НАЗВАНИЕ ЗАДАЧИ ИНОД ПУТЬ
36012032 1234 12345 "Isolated Web Co" "StyleThread#2" 1234567 /tmp/mozilla-temp-12345 (удален)
РАЗМЕР UID PID НАЗВАНИЕ ПРОЦЕССА НАЗВАНИЕ ЗАДАЧИ ИНОД ПУТЬ

(На самом деле таких строк много, это только пробная строка.)

Проверяем, действительно ли скрипт обнаруживает такие файлы, создавая один

В другом терминале скопируйте и вставьте это:

# Запустить интерактивный интерпретатор Python
питон3
# Теперь на Питоне
n="/tmp/любое_имя_файла_вам_хочу"
f = открыть (n, режим = 'а')
импорт ОС
os.unlink(n)
f.write("какое-то предложение")
f.flush()
# Не выходите сейчас, иначе файл действительно исчезнет

В первом терминале вы можете выполнить оба описанных выше шага (медленный lsof, затем часть форматирования). И пока процесс python, указанный выше, жив, сообщается эта строка:

РАЗМЕР UID PID НАЗВАНИЕ ПРОЦЕССА НАЗВАНИЕ ЗАДАЧИ ИНОД ПУТЬ
13 1000 1387343 "python3" "gdbus" 1308894 /tmp/любое_имя_файла_вам_хочу (удалено)
РАЗМЕР UID PID НАЗВАНИЕ ПРОЦЕССА НАЗВАНИЕ ЗАДАЧИ ИНОД ПУТЬ

Затем вы можете выйти из интерпретатора Python выше (нажмите Control-D или введите выход(0)). Если вы запустите обе части (медленный lsof, а затем часть форматирования), вы увидите, что тестовый файл больше не появляется.

Приведенный выше сценарий можно изменить для записи огромных объемов данных (например, сотен гигабайт), и с помощью ваших обычных инструментов вы увидите, что пространство действительно освобождается только после того, как процесс создания закроет файловый дескриптор. Завершения процесса достаточно, чтобы обеспечить закрытие файлового дескриптора.

Вернемся к вашему делу

Запустив это, вы, скорее всего, увидите имена процессов, имена задач и файлы. Либо несколько больших файлов, таких как изображения, которые Docker извлек из сети, либо огромное количество маленьких файлов, опять же, из Docker.

Или что-то другое.

Пожалуйста, скажите, поможет ли это вам.

Robert Riedl avatar
флаг us
Разве простая перезагрузка не избавит вас от открытых файлов, которые на самом деле удалены? или это ведет себя по-другому с докером?
mike mcleod avatar
флаг cn
Я получаю: **lsof: ПРЕДУПРЕЖДЕНИЕ: не могу stat() файловую систему nsfs /run/docker/netns/f91a371e0e9d**, так что на самом деле это не дает ответа. Но похоже на проблему с докером; попробуйте веб-сайт докера. Кроме того, у меня есть файлы в этом состоянии.Должен ли быть способ от парней из Ubuntu очистить эти файлы?
mike mcleod avatar
флаг cn
Я нашел **/tmp/.org.chromium.Chromium.XXXXX**, но когда я закрыл хром, он исчез! Остерегаться!
trever avatar
флаг ae
Спасибо за всю информацию! Итак, я запустил lsof и, несмотря на то, что получил кучу файлов 'can't stat() nsfs', я получил только 2 других реальных файла: `/home/trever/.local/share/gvfs-metadata/root (удалено)` и `/home/trever/.local/share/gvfs-metadata/root-5f2ee275.log (удален)`, оба небольшие. Ожидаете ли вы, что их будет намного больше, или вы думаете, что проблема с докером здесь виновата?
флаг in
`gvfs-метаданные` не связаны. Сообщения `can't stat() nsfs file system` действительно означают, что вам не хватает информации. Вы делали `lsof` как root?
trever avatar
флаг ae
А я нет. Я все это переделал и вот что у меня получилось: https://gist.github.com/Treverr/98137ab1cdc754dcef1b7d6dad6c937c
trever avatar
флаг ae
@StéphaneGourichon Есть ли у вас другие идеи? Теперь у меня почти 1 ТБ недостающего места. Что-то жрет "пространство" как сумасшедшее
флаг in
Судя по сути, которую вы опубликовали, размер удаленных файлов довольно мал, поэтому я бы сказал, что эта гипотеза не подтверждается. Можете ли вы позволить себе останавливать и запускать службы Docker и смотреть, освобождает ли он пространство? Перезагрузить машину и посмотреть, освобождает ли она место? Что это за файловая система (например, cat `/proc/mounts`) -- ср. комментарий матиго, это может быть другая причина.
trever avatar
флаг ae
@StéphaneGourichon- Спасибо, что ответили мне! Итак, я попробовал это, я остановил и отключил систему докеров, перезагрузился, и это не вернуло мне места. Я даже зашел так далеко, что полностью удалил Docker и перезагрузился, то же самое. Вот что я получил для `cat /proc/mounts` Еще раз спасибо! https://gist.github.com/Treverr/a250ebe9041b2939c873b1c167749b4f

Ответить или комментировать

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