Zakładam, że używasz tutaj systemu plików FAT / FAT32, ponieważ wspominasz, że jest to karta SD. NTFS i exFAT zachowują się podobnie w odniesieniu do jednostek alokacji. Inne systemy plików mogą się różnić, ale i tak nie są obsługiwane w systemie Windows.
Jeśli masz dużo małych plików, jest to z pewnością możliwe. Rozważ to:
Ok, teraz minimalna zajmowana przestrzeń to 50 000 * 32 000 = 1,6 GB (użycie prefiksów SI, a nie binarnych, aby uprościć matematykę). Przestrzeń, jaką każdy plik zajmuje na dysku, jest zawsze wielokrotnością wielkości jednostki alokacji - i tutaj zakładamy, że każdy plik jest wystarczająco mały, aby zmieścił się w jednej jednostce, z pozostałą (zmarnowaną) przestrzenią.
Jeśli każdy plik ma średnio 2 kB, uzyskasz łącznie około 100 MB - ale marnujesz także 15x (30 kB na plik) średnio ze względu na rozmiar jednostki alokacji.
Szczegółowe wyjaśnienie
Dlaczego to się dzieje? System plików FAT32 musi śledzić miejsce przechowywania każdego pliku. Gdyby miał zachować listę każdego bajtu, tabela (podobnie jak książka adresowa) rozwijałaby się z tą samą prędkością co dane - i marnowałaby dużo miejsca. Dlatego używają „jednostek alokacji”, zwanych również „rozmiarem klastra”. Wolumin jest podzielony na te jednostki alokacji, a jeśli chodzi o system plików, nie można ich podzielić - są to najmniejsze bloki, które można rozwiązać. Podobnie jak masz numer domu, ale listonosz nie dba o to, ile masz sypialni i kto w nich mieszka.
Co się stanie, jeśli masz bardzo mały plik? System plików nie dba o to, czy plik ma 0 kB, 2 kB, a nawet 15 kB, da mu najmniej miejsca, jakie może - w powyższym przykładzie jest to 32 kB. Twój plik zajmuje tylko niewielką ilość tego miejsca, a reszta jest zasadniczo zmarnowana, ale nadal należy do pliku - podobnie jak sypialnia, którą opuszczasz.
Dlaczego istnieją różne rozmiary jednostek alokacji? Cóż, staje się to kompromisem między posiadaniem większego stołu (książka adresowa, np. Mówiąc, że John jest właścicielem domu przy 123 Fake Street, 124 Fake Street, 666 Satan Lane itp.), Albo więcej zmarnowanego miejsca w każdej jednostce (domu). Jeśli masz większe pliki, sensowniejsze jest użycie większych jednostek alokacji - ponieważ plik nie otrzymuje nowej jednostki (domu), dopóki wszystkie inne nie zostaną wypełnione. Jeśli masz dużo małych plików, to i tak będziesz mieć duży stół (książkę adresową), więc możesz również dać im małe jednostki (domy).
Duże jednostki alokacji z reguły marnują dużo miejsca, jeśli masz dużo małych plików. Zwykle nie ma dobrego powodu, aby przekraczać 4 kB do ogólnego użytku.
Podział?
Jeśli chodzi o fragmentację, fragmentacja nie powinna marnować miejsca w ten sposób. Duże pliki mogą być pofragmentowane, tj. Podzielone na wiele jednostek alokacji, ale każda jednostka powinna zostać wypełniona przed uruchomieniem następnej. Defragmentacja może zaoszczędzić trochę miejsca w tabelach alokacji, ale to nie jest twój konkretny problem.
Możliwe rozwiązania
Jak sugeruje gladiator2345 , jedynymi prawdziwymi opcjami w tym momencie są życie z nim lub formatowanie przy użyciu mniejszych jednostek alokacji.
Twoja karta może być sformatowana w systemie plików FAT16, który ma mniejszy limit wielkości tabeli i dlatego wymaga znacznie większych jednostek alokacji w celu zajęcia się większym wolumenem (z górnym limitem 2 GB z jednostkami alokacji 32 kB). Źródło dzięki uprzejmości Braiam . W takim przypadku powinieneś być w stanie bezpiecznie sformatować jako FAT32.