Всем приветНедавно вычищал директорию /var/spool/clienmqueue. Удалил все. Однако ls и du говорят, что там лежит 20M файлов. Внизу копипаст консольных комманд.
# cd /var/spool/clienmqueue
# find ./ -type f -delete
# ls
# ls -lah
total 20M
drwxrwx--- 2 smmsp smmsp 20M Jul 12 01:20 .
drwxr-xr-x 11 root root 4.0K May 11 2011 ..
# cd ..
# du -ch clientmqueue/
20M clientmqueue/
20M totalПочему эти комманды выводят неактуальные данные?
P.S. В clienmqueue точно ничего нет (нет никаких скрытых файлов).
>[оверквотинг удален]
> # ls -lah
> total 20M
> drwxrwx--- 2 smmsp smmsp 20M Jul 12 01:20 .
> drwxr-xr-x 11 root root 4.0K May 11 2011 ..
> # cd ..
> # du -ch clientmqueue/
> 20M clientmqueue/
> 20M total
> Почему эти комманды выводят неактуальные данные?
> P.S. В clienmqueue точно ничего нет (нет никаких скрытых файлов).Вы не пробовали _читать_ ? А, в Вашем Windowz читать не надо, там всё мышкой тыкается и "интуитивно понятно"?
ребут сервера может помочь. попробуйте.
А потом - читать. Много читать.
> ребут сервера может помочь. попробуйте.не поможет, если конечно директория не в ram
> А потом - читать. Много читать.поможет :)
топикстартеру: du и ls говорят вам что директория весит 20Mb, а вы считаете что файлы в ней весят 20Mb ;)
> не поможет, если конечно директория не в ram
>> А потом - читать. Много читать.
> поможет :)
> топикстартеру: du и ls говорят вам что директория весит 20Mb, а вы
> считаете что файлы в ней весят 20Mb ;)Да, больше похоже на пустую директорию, в которой было [удалено] ~100тыс. файлов, но она не освободила неиспользуемое место, чем на FAQ им. "du vs df vs total".
---
Шел+авк все читают? %))$ for((d=0;d<5133;d++)); do touch 1/$d; echo "$d: `du -b 1`"; done|awk '{if($2!=p)print;p=$2;fflush()}'
0: 14 1
1: 22 1
2: 30 1
3: 38 1
4: 46 1
5: 54 1
6: 62 1
7: 70 1
8: 78 1
9: 86 1
10: 95 1
11: 104 1
12: 113 1
13: 122 1
14: 131 1
15: 140 1
16: 149 1
17: 4096 1
253: 8192 1
508: 12288 1
763: 16384 1
1018: 20480 1
1273: 24576 1
1528: 28672 1
1783: 32768 1
2038: 36864 1
2293: 40960 1
2548: 45056 1
2803: 49152 1
3058: 53248 1
3313: 57344 1
3568: 61440 1
3823: 65536 1
4078: 69632 1
4333: 73728 1
4588: 77824 1
4843: 81920 1
5098: 86016 1
$ for((d=5144;d>=0;d--)); do rm -f 1/$d; echo "$d: `du -b 1`"; done|awk '{i
f($2!=p)print ;p=$2;fflush()}'
5144: 86016 1
5098: 81920 1
4843: 77824 1
4588: 73728 1
4333: 69632 1
4078: 65536 1
3823: 61440 1
3568: 57344 1
3313: 53248 1
3058: 49152 1
2803: 45056 1
2548: 40960 1
2293: 36864 1
2038: 32768 1
1783: 28672 1
1528: 24576 1
1273: 20480 1
1018: 16384 1
763: 12288 1
508: 8192 1
253: 4096 1
17: 149 1
16: 140 1
15: 131 1
14: 122 1
13: 113 1
12: 104 1
11: 95 1
10: 86 1
9: 78 1
8: 70 1
7: 62 1
6: 54 1
5: 46 1
4: 38 1
3: 30 1
2: 22 1
1: 14 1
0: 6 1
$ _xfs "дувается" в онлайне[, извините].
А если создать в том же порядке, что и удалять (не в обратном, как выше), то$ for((d=5144;d>=0;d--)); do touch 1/$d; done
$ for((d=5144;d>=0;d--)); do rm -f 1/$d; echo "$d: `du -b 1`"; done|awk '{if($2!=p)print ;p=$2;fflush()}'|less
5144: 86016 1
0: 6 1уже не совем сразу.
В общем случай разный может быть.---И да, до сих пор в непонятках, где _такое _прочитать:)
ну тут явно не du vs df, тут du и lsнасчет xfs, не знаю но думаю что также: ext2,3 в файле типа директория хранит список имя файла и его inode и после удаления файлов из директории, этот список не изменяется, не дефрагментируется, поэтому уменьшить размер файла-директории можно только пересоздав ее, ну или отредактировав файл-директорию напрямую на диске
прочитать это можно в книжке по архитектуре unix, как правило ext2/ext3 там рассматриваются, в робачевском, книжка с черепашкой это есть...
> ну тут явно не du vs df, тут du и ls
> насчет xfs, не знаю но думаю что также: ext2,3 в файле типа
> директория хранит список имя файла и его inode и после удаления
> файлов из директории, этот список не изменяется, не дефрагментируется, поэтому уменьшить
> размер файла-директории можно только пересоздав ее, ну или отредактировав файл-директорию
> напрямую на диске
> прочитать это можно в книжке по архитектуре unix, как правило ext2/ext3 там
> рассматриваются, в робачевском, книжка с черепашкой это есть...нет в xfs не так как в ext
Структура директорий в XFS - это просто песня!.. цитата из http://www.opennet.me/docs/RUS/xfs_struct/
>> ну тут явно не du vs df, тут du и ls
>> насчет xfs, не знаю но думаю что также: ext2,3 в файле типа
>> директория хранит список имя файла и его inode и после удаления
>> файлов из директории, этот список не изменяется, не дефрагментируется, поэтому уменьшить
>> размер файла-директории можно только пересоздав ее, ну или отредактировав файл-директорию
>> напрямую на диске
>> прочитать это можно в книжке по архитектуре unix, как правило ext2/ext3 там
>> рассматриваются, в робачевском, книжка с черепашкой это есть...
> нет в xfs не так как в ext
> Структура директорий в XFS - это просто песня!.. цитата из http://www.opennet.me/docs/RUS/xfs_struct/вы удаляли файлы при работающем sendmail'е?!
lsof покажет вам кто держит файлы...
# service sendmail stop
# sync; syncВозможно, решат проблем без перезагрузки.
>[оверквотинг удален]
>>> напрямую на диске
>>> прочитать это можно в книжке по архитектуре unix, как правило ext2/ext3 там
>>> рассматриваются, в робачевском, книжка с черепашкой это есть...
>> нет в xfs не так как в ext
>> Структура директорий в XFS - это просто песня!.. цитата из http://www.opennet.me/docs/RUS/xfs_struct/
> вы удаляли файлы при работающем sendmail'е?!
> lsof покажет вам кто держит файлы...
> # service sendmail stop
> # sync; sync
> Возможно, решат проблем без перезагрузки.это не du vs df vs total
>[оверквотинг удален]
>>>> прочитать это можно в книжке по архитектуре unix, как правило ext2/ext3 там
>>>> рассматриваются, в робачевском, книжка с черепашкой это есть...
>>> нет в xfs не так как в ext
>>> Структура директорий в XFS - это просто песня!.. цитата из http://www.opennet.me/docs/RUS/xfs_struct/
>> вы удаляли файлы при работающем sendmail'е?!
>> lsof покажет вам кто держит файлы...
>> # service sendmail stop
>> # sync; sync
>> Возможно, решат проблем без перезагрузки.
> это не du vs df vs totalвы читать умеете?! буквы различаете?!
файлы были удалены при работающем sendmail демоне?!
Если точно сказать не можете: ответ - не помню, не уверен что остановил сервис sendmail
перед удалением файлов.
> вы читать умеете?! буквы различаете?!
> файлы были удалены при работающем sendmail демоне?!
> Если точно сказать не можете: ответ - не помню, не уверен что
> остановил сервис sendmail
> перед удалением файлов.я умею читать, но я не могу вас понять, я не топикстартер, поэтому на ваш вопрос ответить не могу.
Вы внимательно читали тред?
>> вы читать умеете?! буквы различаете?!
>> файлы были удалены при работающем sendmail демоне?!
>> Если точно сказать не можете: ответ - не помню, не уверен что
>> остановил сервис sendmail
>> перед удалением файлов.
> я умею читать, но я не могу вас понять, я не топикстартер,-----------------------------------------------^^^^^^^^^^^^^^^- sorry
> поэтому на ваш вопрос ответить не могу.
что тут отвечать, если sendmail работал и держал открытыми кучу файлов, то
после rm дескрипторы так и остались открытыми.разумеется что по ls мы увидим пустоту, а du и df скажут что место как было
занято, так и осталось занятым, хотя директория "вроде как пуста".Что тут непонятного, lsof в руки и он все покажет.
> Вы внимательно читали тред?
старался.
ну так ls не показывает пустоту# cd /var/spool/clienmqueue
# find ./ -type f -delete
# ls
# ls -lah
total 20M
drwxrwx--- 2 smmsp smmsp 20M Jul 12 01:20 .
он показывает что файл-директория занимает 20М, а не содержимое директории 20М,
в ext2/3 файл-директория не дефрагментируется после удаления файлов, удаленные, но открытые файлы здесь не причем...
> ну так ls не показывает пустоту
> # cd /var/spool/clienmqueue
> # find ./ -type f -delete
> # ls
> # ls -lah
> total 20M
> drwxrwx--- 2 smmsp smmsp 20M Jul 12 01:20 .
> он показывает что файл-директория занимает 20М, а не содержимое директории 20М,
> в ext2/3 файл-директория не дефрагментируется после удаления файлов, удаленные, но открытые
> файлы здесь не причем...именно что причем, попробуйте посмотреть сколько в ext2/3 уйдет на описание
директории, наверняка ~4KНе вдаваясь в знание ext2/3, просто mkdir name && ls -lah name
потом можно создать кучу файлов удалить и снова посмотреть.
stat /.../
File: «/.../»
Size: 189853696 Blocks: 371184 IO Block: 4096 каталог
Device: fe00h/65024d Inode: 2 Links: 5
Access: (0777/drwxrwxrwx) Uid: ( 1000/ user) Gid: ( 100/ users)
Access: 2012-04-02 10:16:10.000000000 +0400
Modify: 2012-07-12 12:11:02.000000000 +0400
Change: 2012-07-12 12:11:02.000000000 +0400189 мегов на описание директории, 2,8M файлов, если я их удалю столько и останется
> вы удаляли файлы при работающем sendmail'е?!
> lsof покажет вам кто держит файлы...
> # service sendmail stop
> # sync; sync
> Возможно, решат проблем без перезагрузки.sendmail остановлен (на момент удаления тоже был остановлен). Собственно, почтовика на сервере нет. Просто cron пытался слать отчеты root-у и от этого в clientmqueue скопилось много файлов. В выводе lsof нет ничего с директорией clienmqueue. sync тоже не помогает.
Вот еще что заметил. Если скопировать директорию в другую, та другая будет уже пустой.
# cp -a clientmqueue clientmqueue2
# ls -lah clientmqueue*
clientmqueue:
total 20M
...
clientmqueue2:
total 16K
...
чудеса да и только :)
> чудеса да и только :)Спасибо, что отвечаете. Поправьте, если не прав.
Насколько я понял, эти 20M, которые показывает ls и du - место, которое директория зарезервировала для себя самой, чтобы хранить информацию о файлах, которые в ней находятся. Т.е. если файлов было много, то и места для хранения "указателя" на каждый файл тоже нужно было много.Собственно, не хватает ответа на вопрос, "что делать?". Насколько я понял из Ваших ответов, директория не собирается возвращать эти 20М (ФС - ext3).
>> чудеса да и только :)
> Спасибо, что отвечаете. Поправьте, если не прав.
> Насколько я понял, эти 20M, которые показывает ls и du - место,
> которое директория зарезервировала для себя самой, чтобы хранить информацию о файлах,
> которые в ней находятся. Т.е. если файлов было много, то и
> места для хранения "указателя" на каждый файл тоже нужно было много.
> Собственно, не хватает ответа на вопрос, "что делать?". Насколько я понял из
> Ваших ответов, директория не собирается возвращать эти 20М (ФС - ext3).если 20М критично, то удалите и создайте директорию руками, естественно не забыв про permissions и owner:group
размер вырастет снова, когда в ней будет много файлов одновременно
если не удалять, то при создании новых файлов будет затираться старая информация, т.е. размер именно директории увеличится только когда накопится более 20М имен/инодов,
можно привести аналогию mysql:ibdata при innodb_file_per_table = 0, дефррагментация не возможна, по крайней мере в версиях до 5.1