В Linux и Unix файлы могут быть удалены, пока они остаются открытыми в процессе. Однако операционная система по-прежнему отслеживает это. Чтобы прочитать или записать файл, процесс должен сначала запросить его открытие. Затем он получает дескриптор файла. Когда это будет сделано с файлом или выйдет, он должен закрыть файл.
Если файл удаляется, в то время как процесс все еще сохраняет открытый файловый дескриптор, данные фактически не освобождаются перед завершением процесса. Это делается для того, чтобы избежать очень опасной проблемы :. Если процесс A держит открытым файл X (, например файл журнала ), который затем удаляется, а затем процесс B запрашивает запись в новый файл, он не должно быть выделено пространство, занятое X, иначе вы можете внезапно получить два процесса, записывающих в один и тот же файл, и процесс A может повредить файл, записанный процессом B.
Чтобы найти файлы и идентификаторы процессов, используйте lsof | grep '(deleted)'
. В первых столбцах перечислены имя процесса, идентификатор процесса и имя пользователя процесса. В зависимости от характера процессов с удаленными файлами вы можете решить, следует ли остановить процессы(kill [pid]
)или вместо этого перезагрузить систему.
Если у вас есть процессы, содержащие терабайт устаревших данных, похоже, что какая-то программа серьезно неисправна. Но это, конечно, зависит от того, для чего вы используете эту коробку.
Если у вас есть KVM Manager (GUI ), вы можете без проблем следовать этому руководству. Процесс тот же:Порт VMware Workstation -перенаправление