
Я работаю на сервере Linux, мы используем этот сервер как общий диск Samba. Со вчерашнего дня внезапно размер одного из общих дисков начал увеличиваться (~ 100 МБ каждые десять минут). На этом общем диске слишком много папок и подпапок. Теперь на общем диске заканчивается место.
Пожалуйста, помогите мне, как мне найти, какая папка увеличивается. Я попробовал следующую команду, чтобы получить размер подкаталогов общего диска. Но мне нужно сравнить вывод, и это займет слишком много времени, если мне не повезет.
du -sh --maxdepth=1
Не могли бы вы подсказать мне, есть ли другой способ найти транзакцию данных в этой файловой системе?
решение1
Найдите недавно измененные файлы, используя команду ниже. Она покажет файлы, измененные за последние десять минут внутри FOLDER. Увеличьте параметр -mmin -10, чтобы увидеть, как FOLDER изменялась с течением времени. Смотритечеловек находити ищите-мтайми-мммдля получения полной информации:
sudo find FOLDER -xdev -type f -mmin -10 -ls
Другая ситуация — когда удаленные файлы все еще занимают дисковое пространство, которое не восстанавливается из-за процессов, которые все еще их используют. В этом случае определите процессы, использующие удаленные файлы, и завершите их, чтобы восстановить пространство:
sudo lsof | grep deleted
Поиск размера здесь не поможет, так как множество маленьких файлов могут занимать столько же места или даже больше, чем большой файл. Проверьте также номера inode. Также, чтобы получить размер всех папок внутри FOLDER:
sudo find FOLDER -xdev -type d | xargs -I DIR du -sm DIR | sort -nk1
решение2
Вы можете попробовать iotop
инструмент, который показывает использование ввода-вывода процессами (другими словами, какие основные процессы используют ваш диск), так что вы можете отслеживать, какой процесс отвечает за потребление пространства. Другой способ — использовать inotify
(часть inotify-tools
), которая может отслеживать изменения в каталогах.
Или простой способ — использовать du
следующим образом.
Определите следующие псевдонимы:
alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'
Затем перейдите в какую-нибудь подозрительную папку и запустите, big
чтобы увидеть самые большие файлы и каталоги в текущем каталоге. Или запустите, big-files
чтобы увидеть самые большие файлы рекурсивно в текущей папке.
Примечание: Для корректной работы на OSX/BSD (поскольку
sort
там нет-h
) установитеsort
илиcoreutils
удалите-h
иls
используйтеsort -nr
вместо этого .
решение3
Я обычно использую его ncdu
для изучения использования дискового пространства. Если ваша постоянно увеличивающаяся папка не блокирует вашу систему или сканирование ncdu, вы сможете найти, посмотрев, какие папки выглядят ненормально большими.