Dlaczego rozmiar dysku jest tak duży dla pojedynczego pliku?

3

Przeczytałem kilka postów wyjaśniających, że gdy masz wiele małych plików, „rozmiar na dysku” zgłaszany przez system Windows może być znacznie większy niż zgłaszany „rozmiar”. Ma to dla mnie sens, ale z tego, co mogę powiedzieć, „rozmiar klastra” lub „jednostka alokacji” wynosi zwykle 4 kB, co (jeśli dobrze rozumiem argument) oznacza, że ​​pojedynczy plik nie powinien być większy niż 4 kB większy w metodzie „rozmiar na dysku”.

Mam obraz tiff, który ma podobno 65 kB w „rozmiarze”, ale 1,00 MB mierzony jako „rozmiar na dysku”. Co może być przyczyną tej dużej rozbieżności?

Aktualizacja: Teraz zdaję sobie sprawę, że plik znajduje się na dysku NAS z systemem Linux. Sprawdziłem rozmiar jednostki alokacji i to tylko 4 kB, a nie 1 MB, na przykład:

bash-3.2# /sbin/blockdev --getbsz /dev/sda1

4096

Sprawdziłem również plik, który ma „rozmiar” 1 kB i pokazuje się jako 1,00 MB w „rozmiarze na dysku”.

Jed
źródło
2
blockdevpokazuje rozmiar bloku urządzenia blokowego, a nie systemu plików. Na przykład, jeśli masz ext2 na ext4 można zobaczyć rozmiar bloku systemu plików za pomocą: tune2fs -l /dev/sda1 | grep -i size:. ------ Jak sprawdziłeś „rozmiar na dysku” w systemie Linux? Możesz użyć: ls --block-size=1 -s filenamelub du --block-size=1 filename.
pabouk
Zrobiłem kilka testów między WinXP a Ubuntu i udowodniłem, że Windows źle to robi. W moim przypadku zaokrągla rozmiar do wielokrotności 1024 bajtów zamiast 4096, ale różne sterowniki sieciowe systemu Windows i Linux mogą łatwo pokazać twoją obserwację. Polecenie Linuxa du --block-size 1 ...pokazało oczekiwaną wielokrotność 4096, więc jest to polecenie uwierzyć. Jeśli skopiujesz plik do katalogu Windows, nie powinieneś widzieć ogromnej rozbieżności.
AFH

Odpowiedzi:

-2

Dane (pliki są danymi binarnymi) na dyskach są zapisywane w klastrach. Tak działają dyski twarde. W tym przykładzie klastry mają długość 4 kb. Istnieją opcje formatowania dysków w mniejszych jednostkach alokacji.

Mówiąc prościej, pomyśl o klastrach jako gniazdach 4kb, które są gotowe do przechowywania danych binarnych. Jeśli plik jest większy niż 4 KB, zajmie dodatkowe miejsca. Jeśli jest mniejszy, zajmie dokładnie jedno miejsce.

Weźmy na przykład plik o rozmiarze 5 KB. Ponieważ nie zmieści się w jednym klastrze, zostanie użyty dodatkowy. Zatem rozmiar dysku wynosiłby 8 KB, nawet jeśli plik ma rozmiar 5 KB.

Spróbuj utworzyć mały plik (mniej niż 4 KB) i przekonaj się, że jego rozmiar dysku to dokładnie 4 KB.

ikromm
źródło
2
Hmmm ... twoja odpowiedź brzmi dokładnie tak, jak widziałem gdzie indziej i sprawia, że ​​myślę, że rozmiar na dysku powinien być zaokrąglony w górę do następnego rozmiaru 4kB (na przykład 65kB może wynosić 68kB). Tego się spodziewałem. Ale to, co widzę, jest zupełnie inne: 65 kB staje się 1 MB. Kiedy po raz pierwszy to opublikowałem, pomyślałem, że szukam pliku na dysku twardym, ale teraz zdaję sobie sprawę, że plik znajduje się na dysku NAS z systemem Linux ... czy to może być wskazówka?
Jed
Należy również wziąć pod uwagę, że system plików wymagałby zapisania dodatkowych danych zawierających mapę klastrów zawierających dane pliku. Niestety nie wiem, czy te dane mogą być tak długie.
ikromm