Обновление свободного размера диска без перезагрузки хоста

23

Я использую RHEL4 с LVM2 на нем. Иногда даже после удаления больших файлов размером более ГБ размер раздела не обновляется при использовании dfкоманды.

-bash-3.00$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/sys-root  3.9G  1.4G  2.3G  39% /
/dev/cciss/c0d0p1     251M   19M  219M   8% /boot
/dev/mapper/sys-home  250G  125G  113G  53% /home
/dev/mapper/sys-tmp   3.9G   41M  3.7G   2% /tmp
/dev/mapper/sys-var   3.9G  3.6G   98M  98% /var

Но когда я проверяю с помощью du, он показывает правильный размер

-bash-3.00$ sudo du -sh /var/
 179M   /var/

вы можете видеть, что в выводе df указано, что раздел / var будет использовать 3,6 ГБ, но du показывает, что он занимает всего 179 МБ.

Теперь проблема в том, что ни sync, ни partprobe не обновляют информацию. Но, безусловно, перезагрузка хоста решит проблему. Но так как это рабочий сервер, я не могу перезагрузить его. Можно ли как-нибудь обновить информацию о диске вручную, не перезагружая хост?

Каннан Мохан
источник
1
Возможно, у вас есть открытые удаленные файлы (т.е. процессы, которые держатся за удаленные файлы). Попробуйте что-то вроде lsofузнать. Используется / не хранится в таблице разделов, partprobe (или любой тип перечитанного раздела) не поможет вообще.
Мат

Ответы:

28

Когда файл удаляется / удаляется / не связывается, если он все еще остается открытым каким-либо процессом, тогда удаляется только запись каталога для файла, а не данные файла. Когда файл полностью закрыт всеми процессами, данные возвращаются в пул свободного пространства. Это особенность, так как вы можете иметь анонимные файлы таким образом.

Чтобы увидеть, есть ли у вас открытый удаленный файл в файловой системе, выполните одну из следующих команд, где /mount/pointнаходится точка монтирования ( /varв вашем случае):

lsof +L1 /mount/point

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

Нуно Перейра
источник
2
Я удалял журналы, но dfне показывал свободного места, пока не перезапустил процессы сервера. Благодарность!
FET
Лучше вызвать lsof с 'lsof + L1', который показывает удаленные файлы. Сделал предложение по редактированию
Nuno Pereira
Так как их закрыть?
faressoft