исчезающее место на диске
исчезающее место на диске
Приветствую. Проблема такого рода, непонятно куда за короткий срок исчезло несколько десятков ГБ с раздела /usr
Причем сумарный объем файлов в примонтированой директории значительно меньше
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/cciss/c0d0p7 60G 1.5G 55G 3% /
/dev/cciss/c0d2p1 542G 314G 200G 62% /home
/dev/cciss/c0d3p1 542G 339G 175G 66% /home2
/dev/cciss/c0d1p2 258G 2.8G 242G 2% /backup
/dev/cciss/c0d0p6 9.7G 454M 8.8G 5% /tmp
/dev/cciss/c0d0p2 97G 77G 16G 83% /usr
/dev/cciss/c0d0p5 97G 14G 79G 15% /var
/dev/cciss/c0d1p1 284G 35G 235G 13% /var/lib/mysql
/dev/cciss/c0d0p1 289M 22M 252M 9% /boot
tmpfs 12G 0 12G 0% /dev/shm
В самой же /usr
# du -h /usr
13G /usr
куда исчезли 64 ГБ вообще непонятно.
Что это может быть? проблема с диском? с квотами?
Спасибо.
Причем сумарный объем файлов в примонтированой директории значительно меньше
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/cciss/c0d0p7 60G 1.5G 55G 3% /
/dev/cciss/c0d2p1 542G 314G 200G 62% /home
/dev/cciss/c0d3p1 542G 339G 175G 66% /home2
/dev/cciss/c0d1p2 258G 2.8G 242G 2% /backup
/dev/cciss/c0d0p6 9.7G 454M 8.8G 5% /tmp
/dev/cciss/c0d0p2 97G 77G 16G 83% /usr
/dev/cciss/c0d0p5 97G 14G 79G 15% /var
/dev/cciss/c0d1p1 284G 35G 235G 13% /var/lib/mysql
/dev/cciss/c0d0p1 289M 22M 252M 9% /boot
tmpfs 12G 0 12G 0% /dev/shm
В самой же /usr
# du -h /usr
13G /usr
куда исчезли 64 ГБ вообще непонятно.
Что это может быть? проблема с диском? с квотами?
Спасибо.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: исчезающее место на диске
КрутоJack писал(а):Проблема такого рода, непонятно куда за короткий срок исчезло несколько десятков ГБ с раздела /usr
Давайте разбираться...
1. за какой "короткий срок"(с)?
вы раньше эту картину наблюдали? какое время назад? и что было?
2. Что за система? (дисковые обозначения очень напоминающие Solaris или Minix3 )Jack писал(а): Причем сумарный объем файлов в примонтированой директории значительно меньше
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/cciss/c0d0p7 60G 1.5G 55G 3% /
/dev/cciss/c0d2p1 542G 314G 200G 62% /home
/dev/cciss/c0d3p1 542G 339G 175G 66% /home2
/dev/cciss/c0d1p2 258G 2.8G 242G 2% /backup
/dev/cciss/c0d0p6 9.7G 454M 8.8G 5% /tmp
/dev/cciss/c0d0p2 97G 77G 16G 83% /usr
/dev/cciss/c0d0p5 97G 14G 79G 15% /var
/dev/cciss/c0d1p1 284G 35G 235G 13% /var/lib/mysql
/dev/cciss/c0d0p1 289M 22M 252M 9% /boot
tmpfs 12G 0 12G 0% /dev/shm
Какой дистрибутив?
... и вообще, давайте сюда:
Код: Выделить всё
$ u_n_a_m_e -a
df & du могут мерять не совсем одно и то же самое...Jack писал(а): В самой же /usr
# du -h /usr
13G /usr
куда исчезли 64 ГБ вообще непонятно.
Код: Выделить всё
[olej@notebook ~]$ df
Файловая система 1K-блоков Исп Доступно Исп% смонтирована на
/dev/mapper/vg_notebook-lv_root
56424484 35980704 17587964 68% /
tmpfs 1026912 952 1025960 1% /dev/shm
/dev/sda1 198337 147562 50775 75% /boot
[olej@notebook ~]$ sudo du -hs /boot
139M /boot
df - по числу занятых секторов, du - по суммированию через inode ... а что там с ссылками? а с циклическими ссылками? (это из области предположений, я сейчас сразу не вспомню).
Re: исчезающее место на диске
Проблема решена.
Все оказалось гораздо проще . Решилось перезапуском служб. nginx или apache держал открытым логи которые либо удалились либо прошла ротация. Из за этого были такие расхождения между показаниями df и du
Все оказалось гораздо проще . Решилось перезапуском служб. nginx или apache держал открытым логи которые либо удалились либо прошла ротация. Из за этого были такие расхождения между показаниями df и du
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: исчезающее место на диске
Всё это наверное так, или даже скорее всего так.Jack писал(а):nginx или apache держал открытым логи которые либо удалились либо прошла ротация. Из за этого были такие расхождения между показаниями df и du
Но вот что интересно, вопрос хороший!, есть смысл до конца разобраться:
- В то время, когда, скажем, apache написал уже лог-файл на 10Gb - эти 10Gb, реально записанные на диск, должны видеть все: df, du, ls ...
- В принципе, если du "не видит" размер не закрытых (close()) файлов то могла бы возникать ситуация df >> du ;
- Но может быть и обратная ситуация: df << du ... когда du "не видит", что файл записан "с дырками", разреженный файл: когда записано 10 байт вначале, потом lseek() на 10Gb и записаны 10 байт в конце. Такой файл будет видится ls & du как 10G байт, а по du он будет занимать 20 байт (скорее всего, 2 сегмента диска: начальный и конечный). Эта история описана хорошо у Р.Стивенса:
Это сильно интересно, и я сейчас это проверю примером.
Как мне кажется, таких разреженных файлов не могло быть в Windows, MS-DOS, etc. ?
А в UNIX/Linux это не должно зависеть от вида файловой системы: ext2/3/4, zfs etc. ?
Это несколько причин, по которым данные du и df могут совершенно не совпадать.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: исчезающее место на диске
Вот немного перефразированный пример из Стивенса:Olej писал(а):Это несколько причин, по которым данные du и df могут совершенно не совпадать.
Код: Выделить всё
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <sys/stat.h>
unsigned long shift = 40;
int main ( int argc, char **argv ) {
char buf1[] = "abcdefghij",
buf2[] = "ABCDEFGHIJ";
int fd;
if( argc > 1 && atoi( argv[ 1 ] ) > strlen( buf1 ) + strlen( buf2 ) )
shift = atoi( argv[ 1 ] ) - strlen( buf2 );
if( ( fd = creat( "file.hole", S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH ) ) < 0 )
printf( "create error: %m" ), exit( EXIT_FAILURE );
if( write( fd, buf1, strlen( buf1 ) ) != strlen( buf1 ) )
printf( "buf1 write error: %m" ), exit( EXIT_FAILURE );
if( lseek( fd, shift, SEEK_SET ) == -1 )
printf( "lseek error: %m" ), exit( EXIT_FAILURE );
if( write( fd, buf2, strlen( buf2 ) ) != strlen( buf2 ) )
printf( "buf2 write error: %m" ), exit( EXIT_FAILURE );
close( fd );
exit( EXIT_SUCCESS );
}
Код: Выделить всё
[olej@notebook hole]$ ls --help | grep '\-\-size'
-s, --size print the allocated size of each file, in blocks
[olej@notebook hole]$ df
Файловая система 1K-блоков Исп Доступно Исп% смонтирована на
/dev/mapper/vg_notebook-lv_root
56424484 36139836 17428832 68% /
tmpfs 1026912 952 1025960 1% /dev/shm
/dev/sda1 198337 147562 50775 75% /boot
[olej@notebook hole]$ ./hole 10000000000
[olej@notebook hole]$ ls -ls file.hole
16 -rw-r--r-- 1 olej olej 2147483647 Мар 21 19:09 file.hole
[olej@notebook hole]$ df
Файловая система 1K-блоков Исп Доступно Исп% смонтирована на
/dev/mapper/vg_notebook-lv_root
56424484 36139852 17428816 68% /
tmpfs 1026912 952 1025960 1% /dev/shm
/dev/sda1 198337 147562 50775 75% /boot
[olej@notebook hole]$ du -hs
40K .
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: исчезающее место на диске
И скопируем такой дырявый файл в обычный:Olej писал(а):>2Gb файл (и ls его таким видит!) занимает на диске всего 16 секторов.
Код: Выделить всё
[olej@notebook hole]$ ./hole 1000000000
[olej@notebook hole]$ wc -c file.hole
1000000000 file.hole
[olej@notebook hole]$ time cp file.hole file.nohole
real 0m3.508s
user 0m0.341s
sys 0m1.493s
[olej@notebook hole]$ ls -ls file.*
16 -rw-r--r-- 1 olej olej 1000000000 Мар 21 19:27 file.hole
60 -rw-r--r-- 1 olej olej 1000000000 Мар 21 19:29 file.nohole
[olej@notebook hole]$ du -hs file.*
16K file.hole
60K file.nohole
И сильно зависит от того чем мерять.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя