Właśnie zauważyłem, że żaden z systemów plików {2,3,4}, które próbuję utworzyć na dysku 500G, nie używa całej dostępnej przestrzeni (466G). Próbowałem także reiser3, xfs, jfs, btrfs, a nawet vfat. Wszystkie tworzą fs o rozmiarze 466G (jak pokazano na df -h ). Jednak ext * tworzy fs z 459G. Wyłączenie zarezerwowanych bloków zwiększa przestrzeń dostępną dla użytkownika, ale rozmiar fs nadal wynosi 459G.
To samo dotyczy HDD 1 TB: reiserfs 932G, 917G ext4.
Co to za różnica 1,5%? Dlaczego tak się dzieje i czy istnieje sposób na wypełnienie całego tomu ext?
UPD: Wszystkie testy wykonywane na tej samej maszynie, na tym samym dysku twardym itp. Nie ma znaczenia, w jaki sposób 466G różni się od marketingu 500G. Problem polega na tym, że różni się dla różnych FS ”.
O df - pokazuje całkowity rozmiar FS, używany rozmiar i wolne miejsce. W tym przypadku mam:
dla reiserfs:
/ dev / sda1 466G 33M 466G 1% / mnt
dla ext4:
/ dev / sda1 459G 198M 435G 1% / mnt
Jeśli wyłączę rezerwację bloków root, 435G zmieni się na 459G - pełny rozmiar fs (minus 198M). Ale fs to wciąż 459G dla ext4 i 466G dla reisera!
UPD2: Wypełnianie woluminów rzeczywistymi danymi przez dd:
reiserfs:
fs:~# dd if=/dev/zero of=/mnt/1 dd: запись в «/mnt/1»: На устройстве кончилось место 975702649+0 записей считано 975702648+0 записей написано скопировано 499559755776 байт (500 GB), 8705,61 c, 57,4 MB/c
ext2 z wyłączoną rezerwacją bloków (mke2fs -m 0):
fs:~# dd if=/dev/zero of=/mnt/1 dd: запись в «/mnt/1»: На устройстве кончилось место 960356153+0 записей считано 960356152+0 записей написано скопировано 491702349824 байта (492 GB), 8870,01 c, 55,4 MB/c
Przepraszam za rosyjski, ale uruchomiłem go w domyślnych ustawieniach regionalnych i powtarzanie go jest za długie. Nie ma znaczenia, wyjście dd jest oczywiste.
Okazuje się więc, że mke2fs naprawdę tworzy mniejszy system plików niż inne mkfs.
LANG=C foo
lubLC_ALL=C foo
Odpowiedzi:
Istnieją dwa powody, dla których to prawda.
Po pierwsze, z jakiegoś powodu lub innego twórcy systemu operacyjnego nadal zgłaszają wolne miejsce w systemie bazowym 2, a producenci dysków twardych zgłaszają wolne miejsce w systemie bazowym 10. Na przykład pisarz systemu operacyjnego wywoła 1024 bajty (2 ^ 10 bajtów) na kilobajt, a produkcja dysków twardych wywoła 1000 bajtów na kilobajt. Ta różnica jest dość niewielka w przypadku kilobajtów, ale po osiągnięciu terabajtów jest to dość znaczące. Twórca systemu operacyjnego wywoła 1099511627776 bajtów (2 ^ 40 bajtów) terabajt, a producent dysku twardego wywoła 1000000000000 bajtów na terabajt.
Te dwa różne sposoby mówienia o rozmiarach często powodują wiele zamieszania.
Istnieje spottily obsługiwane Prefiks ISO dla wielkości binarnych . Interfejsy użytkownika zaprojektowane z myślą o nowym prefiksie będą pokazywać TiB, GiB (lub bardziej ogólnie XiB) podczas wyświetlania rozmiarów z systemem prefiksów bazowych 2.
Po drugie, df -h informuje, ile miejsca jest dostępne do użycia. Wszystkie systemy plików muszą zapisywać informacje porządkowe, aby śledzić rzeczy dla ciebie. Te informacje zajmują część miejsca na dysku. Na ogół nie bardzo, ale niektóre. To również tłumaczy część widocznych strat.
Po edycji posta, aby było jasne, że żadna z moich odpowiedzi nie odpowiada na twoje pytanie, spróbuję odpowiedzieć na twoje pytanie ...
Różne systemy plików wykorzystują różne ilości miejsca na informacje dotyczące sprzątania i zgłaszają wykorzystanie przestrzeni na różne sposoby.
Na przykład ext2 dzieli dysk na grupy cylindrów. Następnie wstępnie przydziela przestrzeń w każdej grupie cylindrów dla i-węzłów i map wolnej przestrzeni. ext3 robi to samo, ponieważ zasadniczo jest to księgowanie ext2 +. A ext4 robi dokładnie to samo, ponieważ jest to dość prosta (i prawie wstecznie kompatybilna) modyfikacja ext3. Ponieważ ten narzut meta-danych jest naprawiony podczas tworzenia systemu plików lub zmiany rozmiaru, nie jest on zgłaszany jako przestrzeń „używana”. Podejrzewam, że dzieje się tak również dlatego, że metadane grupy cylindrów znajdują się w ustalonych miejscach na dysku, a więc jest po prostu implikowane jako używane, a zatem nie jest oznaczone ani uwzględnione w mapach wolnej przestrzeni.
Ale reiserfs nie przydziela wstępnie żadnych metadanych. Nie ma limitu i-węzła, który jest ustalony na tworzenie systemu plików, ponieważ przydziela wszystkie jego i-węzły w locie, tak jak w przypadku bloków danych. Co najwyżej potrzebuje pewnych struktur opisujących katalog główny i pewnego rodzaju wolną mapę przestrzeni. Używa więc znacznie mniej miejsca, gdy nie ma w nim nic.
Oznacza to jednak, że podczas dodawania plików reiserfs zajmie więcej miejsca, ponieważ będzie przydzielać metadane (jak i-węzły), jak również rzeczywistą przestrzeń danych dla pliku.
Nie wiem dokładnie, jak jfs i btrfs śledzą wykorzystanie przestrzeni danych metadanych. Ale podejrzewam, że śledzą to bardziej, jak robi to reiserfs. vfat w szczególności nie ma żadnej koncepcji i-węzła. Jego mapa wolnej przestrzeni (której rozmiar jest ustalany w tworzonym systemie plików (niesławna tabela FAT)) przechowuje wiele danych, które miałby i-węzeł, a wpis katalogu (który jest dynamicznie przydzielany) przechowuje resztę.
źródło
Oprócz zagadnień, o których wspomina Omnifarious, z ext2 / 3/4 zarezerwowana jest pewna ilość miejsca dla roota - ta zarezerwowana przestrzeń nie pojawia się na wyjściu df.
Na przykład utworzenie małego systemu plików (~ 100mb) z domyślnymi opcjami, używając ext2 zamiast 3 lub 4, aby zignorować przestrzeń, która w innym przypadku byłaby zajęta przez dziennik:
Dostosowywanie opcji zarezerwowanych bloków (
tune2fs
jest-m
opcja ustawia zarezerwowane bloki w procentach, a-r
opcja ustawia zarezerwowane bloki jako prostą liczbę bloków):Jak widać w powyższym przykładzie, nawet po zalogowaniu się jako root
df
nie pokazuje zarezerwowanego miejsca w liczbie „Dostępne”. Zarezerwowane miejsce nie jest wyświetlane w liczbie „Używane”, niezależnie od tego, czy jest zalogowany jako użytkownik root, czy mniej uprzywilejowany. Może to czasami powodować zamieszanie, gdy system plików jest prawie pełny, jeśli nie spodziewasz się tych dwóch faktów.Zwróć również uwagę na to
tune2fs
, pomimo swojej nazwy, jest odpowiedni dla systemów plików ext3 i ext4, jak również dla systemów ext2.źródło
O różnicy między systemami plików, różne systemy plików organizują bloki różnie i potrzebują więcej lub mniej danych do identyfikacji i śledzenia bloków. Rozmiar bloku również ma znaczenie, ponieważ jeśli masz więcej lub mniej bloków na to samo miejsce, masz mniej lub więcej „zagubionej” przestrzeni. Ponadto, bloki grup systemów plików, aby uniknąć fragmentacji plików, a każdy klaster bloków ma identyfikator o pewnym rozmiarze, więc mniej lub więcej klastrów bloków będzie używać innego fizycznego miejsca na dysku. Różnica polega na tym, jak system plików organizuje przestrzeń fizyczną.
Tutaj jest opis dla ext2 i prawdopodobnie znajdziesz coś podobnego dla reiserfs, ale nigdy go nie użyłem, więc go nie mam.
źródło