Wszystkie systemy plików Linux mają rozmiar bloku 4 KB. Powiedzmy, że mam 10 MB miejsca na dysku twardym. Oznacza to, że mam dostępne 2560 bloków i powiedzmy, że skopiowałem 2560 plików, każdy o rozmiarze 1kb. Każdy blok 1 kb zajmie 1 blok, chociaż nie wypełnia całego bloku.
Cały mój dysk jest teraz zapełniony, ale nadal mam 2560 x 3 KB wolnego miejsca. Jeśli chcę zapisać inny plik, powiedzmy 1 MB, czy system plików pozwoli mi przechowywać? Czy będzie pisać w wolnej przestrzeni pozostawionej w poszczególnych blokach? Czy istnieje jakaś koncepcja rozwiązania tego problemu?
Byłbym wdzięczny za wyjaśnienia. Z góry dziękuję
Odpowiedzi:
Domyślny rozmiar bloku wynosił 512 bajtów od pierwszego Linuxa. Z wyjątkiem do niedawna wprowadzano 4k wielkości bloków, aby zaspokoić stale rosnący rozmiar dysków. Jest to nawet prawie podyktowane sprzętem dyskowym (zobacz więcej: /unix/178899/optimizing-logical-sector-size-for-physical-sector-size-4096-hdd ).
Jednak w przypadku konkretnego pytania: masz rację, że wszystkie pliki marnują niewykorzystane bajty ostatniego bloku na wielu typach systemów plików, co jest szczególnie marnotrawstwem dla małych plików. Ale btfrs i reiserfs wydają się być w stanie sobie poradzić, zgodnie z https://en.m.wikipedia.org/wiki/Block_suballocation
źródło
Systemy plików mogą mieć rozmiar bloku od 512 do (zwykle) 65536 bajtów. Rozmiar bloku można określić jako opcję mkfs.xxx. Domyślny rozmiar bloku w większości systemów plików Linux - 4096 bajtów.
Niektóre systemy plików obsługują pakowanie ogonów i / lub przydzielanie podbloków. ext2 / 3/4 - robi, xfs - nie. Jeśli planujesz wypełnić partycję kilkoma małymi plikami, możesz zmniejszyć zmarnowane miejsce „ogona”, zmniejszając rozmiar bloku do 512 lub 1024.
źródło