rozbieżności rozmiaru partycji / wolnego miejsca


14

Podczas tworzenia partycji kopii zapasowej 250GiB dla moich danych zauważyłem wiele rozbieżności między raportowanym rozmiarem partycji a wolną przestrzenią w Nautilus, gParted, df, tune2fs itp.

Na początku myślałem, że to zamieszanie w GiB / GB. To nie było .

Wtedy pomyślałem, że mogą to być zastrzeżone bloki ext4. To nie było .

Jestem całkowicie zdziwiony. Oto kilka zdjęć. Oto kroki:

  • Po pierwsze, NTFS. 524288000 sektorów x 512 bajtów / sektor = 268435456000 bajtów = 268,4 GB = 250 GiB.

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

Nautilus mówią „ Całkowita pojemność: 250,0 GB ” (nawet jeśli tak naprawdę to GiB, a nie GB). Poza tym niewielkim błędnym oznakowaniem, jak dotąd, tak dobrze

  • Teraz ta sama partycja sformatowana jako ext4 z gparted:

wprowadź opis zdjęcia tutaj

Po pierwsze, ostatni i całkowity sektor są takie same. Jest to ta sama partycja 250GiB. Użyty rozmiar to 4.11GiB (może zarezerwowane bloki?)

wprowadź opis zdjęcia tutaj

Nie. Wygląda na to, że zarezerwowane bloki wynoszą 12,7 GiB (~ 5%. Ouch! ). Ale ... dlaczego Całkowita pojemność wynosi teraz tylko 246,1 GiB ??? . Ta różnica (w pewnym sensie) odpowiada 4.11 GiB zgłoszonych przez gparted. Ale ... jeśli to nie z zastrzeżonych bloków, co to jest? I dlaczego gparted nie zgłosił, że 12,7 GiB wykorzystanej przestrzeni?

$ df -h /dev/sda5
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5             247G  188M  234G   1% /media/BACKUP

dfpasuje do Nautilusa w zgłoszonym wolnym miejscu. Ale ... tylko 188M używanych? Nie powinno to być ~ 12 GB? A całkowita pojemność jest nadal błędna. Pobiegłem tune2fswięc znaleźć wskazówki. (niepotrzebne wyjście jest odrzucane)

$ sudo tune2fs -l /dev/sda5
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   BACKUP
Filesystem UUID:          613d592e-47f5-4206-96a7-210090d340ef
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Filesystem state:         clean
Filesystem OS type:       Linux
Block count:              65536000
Reserved block count:     3276800
Free blocks:              64459851
First block:              0
Block size:               4096

65536000 wszystkich bloków * 4096 bajtów / blok = 268435456000 bajtów = 268,4 GB = 250 GiB. Pasuje do gparted.

3276800 zarezerwowanych bloków = 13421772800 bajtów = 13,4 GB = 12,5 GiB. To (znowu, w pewnym sensie) pasuje do Nautilusa.

64459851 wolnych bloków = 264027549696 bajtów = 264,0 GB = 245,9 GiB. Dlaczego? Czy nie powinno to być 250-12,5 = 237,5 (lub 250- (12,5 + 4,11) = ~ 233)?

Usuwanie zarezerwowanych bloków:

$ sudo tune2fs -m 0 /dev/sda5
tune2fs 1.41.12 (17-May-2010)
Setting reserved blocks percentage to 0% (0 blocks)

$ sudo tune2fs -l /dev/sda5
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   BACKUP
Filesystem UUID:          613d592e-47f5-4206-96a7-210090d340ef
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Filesystem state:         clean
Filesystem OS type:       Linux
Block count:              65536000
Reserved block count:     0
Free blocks:              64459851
Block size:               4096

Zgodnie z oczekiwaniami, ta sama liczba bloków, 0 bloków zarezerwowanych, ale ... te same wolne bloki ? Czy właśnie uwolniłem 12,5 GiB?

$ df -h /dev/sda5
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5             247G  188M  246G   1% /media/BACKUP

wprowadź opis zdjęcia tutaj

Wygląda jak ja. Dostępna powierzchnia wzrosła z 233 do 245,9 GiB. gparted wcale się nie przejmował, pokazując dokładnie te same informacje! (bezużyteczne, aby opublikować identyczny zrzut ekranu)

Co za wielki bałagan!

Starałem się to udokumentować najlepiej, jak potrafiłem ... Więc proszę, czy ktoś może dać mi jakieś wskazówki, co się tutaj dzieje?

  • Czego brakuje tajemniczych 4.11 GiB w NTFS -> formatowanie ext4?
  • Dlaczego jest tak wiele rozbieżności między gparted, Nautilus, tune2fs, df?
  • Co jest nie tak z moją matematyką? (pogrubione pytania rozproszone w tym poście)

Każda pomoc jest mile widziana. Chociaż nie mogę zrozumieć, co się dzieje, poważnie rozważam rezygnację z ext4 na rzecz NTFS dla wszystkiego oprócz mojej partycji.

Dzięki!




@Uri Herrera: czy przeczytałeś moje pytanie lub przynajmniej kilka pierwszych wierszy? To nie jest problem GiB / GB. Partycja ma 268,4 GB = 250,0 GiB, a nie 246,1
MestreLion,

1
Kolejna odpowiedź, na którą możesz spojrzeć: askubuntu.com/questions/5335/…
enzotib,

Odpowiedzi:


13

Tutaj dzieje się kilka rzeczy. gparted zgłasza rzeczywiste wykorzystane / wolne miejsce. Jądro zmniejsza dostępną liczbę o zarezerwowane miejsce. Po usunięciu zarezerwowanego miejsca liczba wolnych miejsc nie zmieniła się, ponieważ zarezerwowane bloki były już wolne; po prostu użytkownicy nie będący użytkownikami root nie mogą atakować tego miejsca, aby zapobiec powodowaniu problemów przez zapełnienie dysku. Numery gnomów są nieco niestabilne z powodu błędu . Zamiast raportować używane miejsce, które jądro zgłasza (i pokazuje df), oblicza je, odejmując wolne miejsce od sumy. To powoduje, że wyświetla zarezerwowane miejsce jako używane.

Brakujące 4 GB jest faktycznie używane to narzut fs dla ext4. NTFS początkowo przydziela tylko niewielką ilość miejsca dla MFT i powiększa je w razie potrzeby. Jednak seria systemów plików ext przydziela miejsce dla tabeli i-węzłów (przybliżony odpowiednik MFT) w czasie formatowania i nie może się powiększać. Brakującym miejscem w raportowanym całkowitym miejscu jest tabela i-węzłów. Pozostały bit zajętego miejsca pochodzi z dziennika (zwykle 128 MB) i zmienia rozmiar i-węzłów.


Dzięki +1 za rozwiązanie niektórych zagadek! Ale jeśli ~ 4 GB to narzut systemu plików, to dlaczego część z niego (3,9 GB) jest odejmowana od całkowitego miejsca, podczas gdy 188 MB jest wyświetlane jako faktycznie wykorzystane? Który (lub oba) jest narzutem? A dlaczego inaczej? Ponadto, dfnawet w przypadku sudo, pokazuje całkowitą pojemność (247 GB) i zajęte miejsce (188 MB), takie jak Nautilus. Więc jeśli to błąd, to nie tylko gnom.
MestreLion,

Myślałem, że 188 MB to narzut (w porównaniu do 72 MB z NTFS). Ale jeśli narzut NTFS wzrośnie z czasem, czy to oznacza, że ​​Nautilus zgłosi później, że całkowita pojemność maleje ?
MestreLion,

Korekta: df zawsze pokazuje dostępne miejsce, bez względu na to, kto je uruchamia. Aby zobaczyć wolne miejsce (== dostępne miejsce + zarezerwowane miejsce), użyj stat -f /media/BACKUP.
Marius Gedminas,

Edytowana odpowiedź w celu wyjaśnienia. I wierzę, że NTFS po prostu zgłosi więcej zajętego miejsca, a nie zmniejszy całości wraz z rozwojem MFT. @Marius, to też nie jest poprawne. zarówno statfs (), a zatem zarówno df, jak i stat -f pokazują dostępne miejsce, nie licząc zarezerwowanych bloków. Mógłbym przysiąc, że dostosował się również do limitu i zmienił odpowiedź w zależności od dzwoniącego użytkownika, ale masz rację; nie liczy limitu i nie dba o to, jak użytkownik to nazwie.
psusi

@psusi: więc mam ~ 3,9GiB tabeli i-węzłów i ~ 188 MB dziennika + coś? I Nautilus odejmuje tabelę i-węzłów od Całkowitego rozmiaru, a raporty kroniki zajmują miejsce? I gparted zgłasza je jako pojedyncze 4,11 GiB wykorzystanej przestrzeni? Czy to jest poprawne? Jeśli tak, po prostu żałuję, że Nautilus nie potraktował obu nad głową w ten sam sposób .. albo oba odjęły od całości, albo oba były liczone jako „wykorzystana przestrzeń” (najlepiej).
MestreLion

7

Po pierwsze, zastrzeżone bloki nie są używane do wewnętrznego zarządzania systemem plików.

Zastrzeżone bloki są po prostu zarezerwowane root, aby zapewnić, że usługom używającym plików na tej partycji nie można wykluczyć braku miejsca przez użytkownika niebędącego administratorem, który zapełnia całe miejsce.

Nawet bez zastrzeżonych bloków ( -m 0) zawsze jest część przestrzeni wykorzystywanej do wewnętrznego zarządzania systemem plików, nie mogę powiedzieć, ile, nie mam tak głębokiej wiedzy.

Również Gparted jest wykonywany jako root, więc widzi zarezerwowane bloki jako wolne. Nautilus , wykonany jako użytkownik, widzi je jako niewolne.

Ok, odpowiedź @psusi jest bardzo jasna, nie mam nic do dodania.


Humm, bardzo pouczające, +1. Przynajmniej rozwiązuje to niektóre z problemów, które znalazłem. Widzenie zarezerwowanych bloków jako „limitu limitu” dla bloków innych niż root zamiast „używanych bloków” powoduje, że odczyty gparted, df i tune2fs są zgodne (i mają sens). Pozostają jednak pewne pytania, zwłaszcza 4 GB wykorzystanej przestrzeni / całkowita pojemność.
MestreLion,

1
Przeczytałem też gdzieś (jedną z tych starych „dlaczego nie musisz defragmentować partycji Linux co miesiąc” HOWTO?), Że zarezerwowanie 5% miejsca na root daje trochę miejsca na algorytmy alokacji extN i dlatego unika podział.
Marius Gedminas

1

Spróbuj zmniejszyć rozmiar partycji o kilka megabajtów, używając gparted, a następnie zwiększ go ponownie do pierwotnego rozmiaru. Może to spowodować, że inne aplikacje poprawnie odczytują rozmiary. Niedawno poprawiłem błąd 50 Gb w ten sposób!

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.