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

Как я могу найти использование фантомного хранилища?

У меня есть файловый сервер Mac OS X 10.6.4 Snow Leopard Server (AFP), которому последние несколько недель не хватало места на загрузочном томе. Чтобы израсходовать оставшиеся 42 ГБ на загрузочном томе 80 ГБ, требуется около двух дней, даже если sudo du -chsx -I dev / по-прежнему показывает, что используется только 29 ГБ.

Я сталкивался с этим в прошлом с сервером Linux, журналы которого были удалены через N дней, но журнал все еще оставался открытым в Apache, в результате чего хранилище не освобождалось. В этом случае мне удалось найти его относительно легко с помощью sudo lsof, но мне нелегко найти виновника в этом случае (будучи файловым сервером, есть тонна открытых файлов и сокетов). Как мне отсортировать lsof вывод по размеру файла (и размер отображения в удобном для человека формате), чтобы я мог найти виновника?

На сервере 3 ГБ оперативной памяти. По прошествии 4 часов Activity Monitor показывает 700 МБ свободного, 1,5 ГБ неактивного и 200 ГБ виртуальной машины. mds имеет наибольшее использование ВМ - 1,8 ГБ, AppleFileServer на 2-м месте с 500 МБ, а все остальное использует 10–75 МБ виртуальной машины. При этом / private / var / vm составляет всего 128 МБ.

Перезагрузка системы устраняет проблему, поэтому я считаю, что это свободное пространство для хранения, которое все еще остается открытым для какого-то процесса или процессов.

Любые другие гипотезы, предложения и т. Д. Приветствуются.

Вы можете найти самые большие открытые файлы с помощью:

sudo lsof -s | awk '$5 == "REG"' | sort -n -r -k 7,7 | head -n 50

В нем будут перечислены обычные файлы (не каналы, сокеты и т. Д.), Отсортированные по размеру в порядке убывания, и будут выбраны первые 50.

Вы также можете посмотреть, какие процессы открывают больше всего файлов, например

sudo lsof | awk '$5 == "REG" {freq[$2]++ ; names[$2] = $1 ;} END {for (pid in freq) print freq[pid], names[pid], pid ; }' | sort -n -r -k 1,1

Я бы посмотрел на sudo lsof | grep deleted

sudo lsof +L1 покажет удаленные файлы. Для скорости совместите это с -Pn.

например lsof -Pn +L1