Jak polecenie stat oblicza bloki pliku?

Zastanawiam się, jak polecenie stat oblicza bloki pliku. Czytamartykuł, to mówi:

Wartość st_blocks podaje rozmiar pliku w 512-bajtowych blokach. (Może to być mniejsze niż st_size / 512, np. Gdy plik ma dziury.) Wartość st_blksize daje „preferowany” rozmiar bloku dla wydajnego systemu plików I / O. (Zapisywanie do pliku w mniejszych fragmentach może spowodować nieefektywne przepisywanie i modyfikowanie).

ale nie mogę tego zweryfikować na moim teście.

mój system plików to ext3.

dumpe2fs -h / dev / sda3 pokazuje:

...
First block: 0
Block size: 4096
Fragment size: 4096
...

potem uciekam

kent@KentT60:~/Desktop$ stat Email
File: `Email'
Size: 965 Blocks: 8 IO Block: 4096 regular file
Device: 80ah/2058d Inode: 746095 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ kent) Gid: ( 1000/ kent)
Access: 2009-08-11 21:36:36.000000000 +0200
Modify: 2009-08-11 21:36:35.000000000 +0200
Change: 2009-08-11 21:36:35.000000000 +0200

Jeśli Bloki tutaj oznaczają: ile bloków 512 bajtów, liczba powinna wynosić 2 nie 8. Pomyślałem, że rozmiar bloku z systemu plików (blok io) wynosi 4k. Jeśli fs otrzyma plik Email, pobierze minimalnie 4k z dysku (8 x 512 bajtów), co oznacza 965/512 + 6 = 8. Nie jestem pewien, czy zgadywanie jest poprawne.

kolejny test:

kent@KentT60:~/Desktop$ stat wxPython-demo-2.8.10.1.tar.bz2
File: `wxPython-demo-2.8.10.1.tar.bz2'
Size: 3605257 Blocks: 7056 IO Block: 4096 regular file
Device: 80ah/2058d Inode: 746210 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ kent) Gid: ( 1000/ kent)
Access: 2009-08-12 21:45:45.000000000 +0200
Modify: 2009-08-12 21:43:46.000000000 +0200
Change: 2009-08-12 21:43:46.000000000 +0200


3605257/512=7041.xx = 7042

zgodnie z powyższym przypuszczeniem będzie to 7042 + 6 = 7048. ale wynik statystyczny pokazuje 7056.

I inny przykład z internetu pod adresemhttp://www.computerhope.com/unix/stat.htm. Kopię przykład na dole strony tutaj:

File: `index.htm'
Size: 17137 Blocks: 40 IO Block: 8192 regular file
Device: 8h/8d Inode: 23161443 Links: 1
Access: (0644/-rw-r--r--) Uid: (17433/comphope) Gid: ( 32/ www)
Access: 2007-04-03 09:20:18.000000000 -0600
Modify: 2007-04-01 23:13:05.000000000 -0600
Change: 2007-04-02 16:36:21.000000000 -0600

W tym przykładzie wielkość bloku FS wynosi 8k. Przypuszczam, że liczba bloków powinna wynosić 16xN, ale jest to 40. zgub się ...

każdy może wyjaśnić, w jaki sposób stat oblicza bloki?

Dzięki!

questionAnswers(2)

yourAnswerToTheQuestion