Re: Significant difference in 'file size' and 'disk usage' for single files

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi together,

I have same problem with bigalloc ext4 filesystem. 

It's not a cosmetic problem! The space really "disappears" and cannot be used until you umount and mount the filesystem again.

This shows the problem:

root@sf4008:/media# uname -a
Linux sf4008 4.1.37 #1 SMP Fri Nov 3 20:41:50 CET 2017 armv7l GNU/Linux
root@sf4008:/media# fsck.ext4 -f /dev/sda
e2fsck 1.43.4 (31-Jan-2017)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sda: 11/3872 files (0.0% non-contiguous), 16736/985856 blocks
root@sf4008:/media# mount /dev/sda /media/sda
root@sf4008:/media# cd sda/
root@sf4008:/media/sda# tune2fs -l /dev/sda
tune2fs 1.43.4 (31-Jan-2017)
Filesystem volume name: <none>
Last mounted on: /media/sda
Filesystem UUID: 34f67143-5a31-46c1-b5ea-98e1a72294a4
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize bigalloc
Filesystem flags: unsigned_directory_hash 
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 3872
Block count: 985856
Reserved block count: 0
Free blocks: 969120
Free inodes: 3861
First block: 0
Block size: 4096
Cluster size: 65536
Reserved GDT blocks: 15
Blocks per group: 524288
Clusters per group: 32768
Inodes per group: 1936
Inode blocks per group: 121
Flex block group size: 16
Filesystem created: Thu Jan 1 01:28:53 1970
Last mount time: Sat Nov 11 11:51:00 2017
Last write time: Sat Nov 11 11:51:00 2017
Mount count: 1
Maximum mount count: -1
Last checked: Sat Nov 11 11:50:34 2017
Check interval: 0 (<none>)
Lifetime writes: 24 GB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 32
Desired extra isize: 32
Journal inode: 8
Default directory hash: half_md4
Directory Hash Seed: ebfabc52-1513-473e-8ba7-2dbd6ffbee6c
Journal backup: inode blocks
root@sf4008:/media/sda# df .
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda 3876736 256 3797632 0% /media/sda
root@sf4008:/media/sda# ls -las
 64 drwxr-xr-x 3 root root 4096 Nov 11 11:50 .
 0 drwxrwxrwt 4 root root 80 Jan 7 1970 ..
 64 drwx------ 2 root root 16384 Jan 1 1970 lost+found
root@sf4008:/media/sda# du -s
128 .
root@sf4008:/media/sda# dd if=/dev/zero of=test bs=1M count=3650
3650+0 records in
3650+0 records out
3827302400 bytes (3.6GB) copied, 541.852403 seconds, 6.7MB/s
root@sf4008:/media/sda# df .
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda 3876736 3739776 58112 98% /media/sda
root@sf4008:/media/sda# du -s 
3798336 .
root@sf4008:/media/sda# rm test 
root@sf4008:/media/sda# df .
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda 3876736 2112 3795776 0% /media/sda
root@sf4008:/media/sda# ls -las
 64 drwxr-xr-x 3 root root 4096 Nov 11 12:03 .
 0 drwxrwxrwt 4 root root 80 Jan 7 1970 ..
 64 drwx------ 2 root root 16384 Jan 1 1970 lost+found
root@sf4008:/media/sda# du -s
128 .
root@sf4008:/media/sda# ~/stress_ext4_bigalloc.sh 
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda 3876736 2112 3795776 0% /media/sda
10+0 records in
10+0 records out
10485760 bytes (10.0MB) copied, 0.043008 seconds, 232.5MB/s
1
10+0 records in
10+0 records out
10485760 bytes (10.0MB) copied, 0.040627 seconds, 246.1MB/s
2
10+0 records in
10+0 records out
10485760 bytes (10.0MB) copied, 0.042517 seconds, 235.2MB/s
3
....

48
10+0 records in
10+0 records out
10485760 bytes (10.0MB) copied, 0.044424 seconds, 225.1MB/s
49
10+0 records in
10+0 records out
10485760 bytes (10.0MB) copied, 0.046012 seconds, 217.3MB/s
50
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda 3876736 98432 3699456 3% /media/sda

root@sf4008:/media/sda# ls -las
 64 drwxr-xr-x 3 root root 4096 Nov 11 12:06 .
 0 drwxrwxrwt 4 root root 80 Jan 7 1970 ..
 64 drwx------ 2 root root 16384 Jan 1 1970 lost+found
root@sf4008:/media/sda# du -s
128 .

root@sf4008:/media/sda# dd if=/dev/zero of=test bs=1M count=3650
dd: writing 'test': No space left on device
3608+0 records in
3606+1 records out
3782017024 bytes (3.5GB) copied, 503.133933 seconds, 7.2MB/s
root@sf4008:/media/sda# 

So after mount I could create a 3650MB big file. After the test I couldn't create the same file in the empty filesystem. df shows 98432 used space. du only 128. 

The "stress test" does this:

#!/bin/sh

df .

cd /media/sda
mkdir testfiles
cd testfiles

i=0
while [ $i -lt 50 ]; do
 dd if=/dev/zero of=./test$i bs=1M count=10 > /dev/null
 cp test$i testx_$i
 sync
 let i=i+1
 echo $i
done

sync

cd ..
rm -rf testfiles

df .


Regards,
Frank

>  -------- Weitergeleitete Nachricht --------
> 
> Betreff:
> Re: Significant difference in 'file size' and 'disk usage' for single files
> 
> Datum:
> Fri, 10 Nov 2017 09:43:47 -0500
> 
> Von:
> Mattthew L. Martin linux@xxxxxxxxxxxxxxxx
> 
> An:
> mfe555 mfe555@xxxxxx, linux-ext4@xxxxxxxxxxxxxxx
> 
> Lukas,
> 
> Yes, please add any information you have to that bug report. We may be 
> developing more information here which I will add to the report once I 
> have proven it to the the issue. If it is, I will have a reproducer. 
> That may help things along.
> 
> Matthew
> 
> On 11/7/17 02:30, mfe555 wrote:
> > Dear Matthew,
> >
> > sorry about the misunderstanding. If you agree I will reply to your 
> > bug report at bugzilla.kernel.org, providing the details I have posted 
> > here initially. Is there anything else you would recommend me to do, 
> > or any other information you can share?
> >
> > Thanks a lot
> > Lukas
> >
> >
> > Am 06.11.2017 um 19:56 schrieb Mattthew L. Martin:
> >> Lukas,
> >>
> >> I think you might have misunderstood me. We are pretty much in the 
> >> same situation that you find yourself. We currently un-mount and 
> >> remount the file systems that have this behavior to ameliorate the 
> >> issue. We can provide information, but we don't have the manpower or 
> >> skill set to effect a fix.
> >>
> >> Matthew
> >>
> >>
> >> On 11/6/17 12:35, mfe555 wrote:
> >>> Dear Mathew,
> >>>
> >>> thank you very much for your message and for your offer of helping me.
> >>>
> >>> In my case, the file system has a cluster size of 262144. bigalloc 
> >>> is enabled, please see below for details (tune2fs). I have been able 
> >>> to confirm that unmounting and re-mounting the file system helps.
> >>>
> >>> Please let me know what else I can do for giving you more clues. For 
> >>> example, as our linux system is built for over 100 different settop 
> >>> boxes, I might be able to get help from other people, performing 
> >>> tests on specific linux kernels.
> >>>
> >>> Kind regards
> >>> Lukas
> >>>
> >>> =================================
> >>> # tune2fs -l /dev/sdb1
> >>> tune2fs 1.43.4 (31-Jan-2017)
> >>> Filesystem volume name:   
> >>> Last mounted on:          /media/hdd
> >>> Filesystem UUID:          1dbc401d-3ff4-4a46-acc7-8ec7b841bdb0
> >>> Filesystem magic number:  0xEF53
> >>> Filesystem revision #:    1 (dynamic)
> >>> Filesystem features:      has_journal ext_attr resize_inode 
> >>> dir_index filetype needs_recovery extent flex_bg sparse_super 
> >>> large_file huge_file uninit_bg dir_nlink extra_isize bigalloc
> >>> Filesystem flags:         signed_directory_hash
> >>> Default mount options:    user_xattr acl
> >>> Filesystem state:         clean
> >>> Errors behavior:          Continue
> >>> Filesystem OS type:       Linux
> >>> Inode count:              264688
> >>> Block count:              488378368
> >>> Reserved block count:     0
> >>> Free blocks:              146410368
> >>> Free inodes:              260432
> >>> First block:              0
> >>> Block size:               4096
> >>> Cluster size:             262144
> >>> Reserved GDT blocks:      14
> >>> Blocks per group:         2097152
> >>> Clusters per group:       32768
> >>> Inodes per group:         1136
> >>> Inode blocks per group:   71
> >>> Flex block group size:    16
> >>> Filesystem created:       Sun Mar 13 16:31:29 2016
> >>> Last mount time:          Thu Jan  1 01:00:04 1970
> >>> Last write time:          Thu Jan  1 01:00:04 1970
> >>> Mount count:              884
> >>> Maximum mount count:      -1
> >>> Last checked:             Sun Mar 13 16:31:29 2016
> >>> Check interval:           0 ()
> >>> Lifetime writes:          6971 GB
> >>> Reserved blocks uid:      0 (user root)
> >>> Reserved blocks gid:      0 (group root)
> >>> First inode:              11
> >>> Inode size:               256
> >>> Required extra isize:     28
> >>> Desired extra isize:      28
> >>> Journal inode:            8
> >>> Default directory hash:   half_md4
> >>> Directory Hash Seed:      c69a1039-0065-4c1b-8732-ff1b52b57313
> >>> Journal backup:           inode blocks
> >>>
> >>>
> >>>
> >>>
> >>> Am 06.11.2017 um 16:35 schrieb Mattthew L. Martin:
> >>>> I filed a bug for this a while ago:
> >>>>
> >>>> https://bugzilla.kernel.org/show_bug.cgi?id=151491
> >>>>
> >>>> We would be happy to help track this down as it is a pain to manage 
> >>>> this on running servers.
> >>>>
> >>>> Matthew
> >>>>
> >>>>
> >>>> On 11/5/17 06:16, mfe555 wrote:
> >>>>> Some follow-up:
> >>>>>
> >>>>> The issue only occurs with "bigalloc" enabled.
> >>>>>
> >>>>>     echo 3 > /proc/sys/vm/drop_caches
> >>>>>
> >>>>> seems to detach the blocked disk space from the files (so that 'du 
> >>>>> file' no longer includes the offset), but it does not free the 
> >>>>> space, 'df' still shows all file overheads as used disk space.
> >>>>>
> >>>>>
> >>>>>
> >>>>> Am 02.11.2017 um 20:17 schrieb mfe555:
> >>>>>> Hi, I'm using ext4 on a Linux based Enigma2 set-top box, kernel 
> >>>>>> 4.8.3.
> >>>>>>
> >>>>>> When creating a fresh file, there is a significant difference in 
> >>>>>> file size (ls -la) and disk usage (du). When making two copies of 
> >>>>>> the file ..
> >>>>>>
> >>>>>> gbquad:/hdd/test# cp file file.copy1
> >>>>>> gbquad:/hdd/test# cp file file.copy2
> >>>>>> gbquad:/hdd/test# ls -la
> >>>>>> -rw-------    1 root     root     581821460 Nov  1 18:52 file
> >>>>>> -rw-------    1 root     root     581821460 Nov  1 18:56 file.copy1
> >>>>>> -rw-------    1 root     root     581821460 Nov  1 18:57 file.copy2
> >>>>>> gbquad:/hdd/test# du *
> >>>>>> 607232  file
> >>>>>> 658176  file.copy1
> >>>>>> 644864  file.copy2
> >>>>>>
> >>>>>> ... all three files show an overhead in the ~10% range, and the 
> >>>>>> overhead is different for these files although their md5sums are 
> >>>>>> equal.
> >>>>>>
> >>>>>> When deleting a file (rm), the overhead remains occupied on the 
> >>>>>> disk. For example, after deleting "file", "df" reports approx. 
> >>>>>> 581821460 more bytes free, not 607232 kbytes more free space. The 
> >>>>>> overhead (607232 kB - 581821460 B =pprox. 39 MB) remains blocked.
> >>>>>>
> >>>>>> When re-booting, the blocked space becomes free again, and in 
> >>>>>> addition the overhead of those files that were not deleted also 
> >>>>>> disappears, so that after a reboot the'file size' and 'disk 
> >>>>>> usage' match for all files (except for rounding up to some block 
> >>>>>> size).
> >>>>>>
> >>>>>> A colleague and I have observed this on two different "kernel 
> >>>>>> 4.8.3" boxes and three ext4 disks, but not on a "kernel 3.14" box 
> >>>>>> also using ext4.
> >>>>>>
> >>>>>> Can anyone help me with this ?
> >>>>>>
> >>>>>> Thanks a lot
> >>>>>> Lukas
> >>>>>>
> >>>>>
> >>>>
> >>>
> >>
> >



[Index of Archives]     [Reiser Filesystem Development]     [Ceph FS]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite National Park]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]     [Linux Media]

  Powered by Linux