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”.


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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.