Dlaczego rozmiar partycji i wyjście df są różne?

16

Mam partycję / dev / sda1.
Narzędzie dyskowe pokazuje, że ma pojemność 154 GB.
df -h pokazuje

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             123G  104G   14G  89% /
devtmpfs             1006M  280K 1006M   1% /dev
none                 1007M  276K 1006M   1% /dev/shm
none                 1007M  216K 1006M   1% /var/run
none                 1007M     0 1007M   0% /var/lock
none                 1007M     0 1007M   0% /lib/init/rw

Dlaczego wyniki są różne? Gdzie brakuje 31 GB?

xralf
źródło
3
Proszę zamieścić dane wyjściowe fdisk -l /dev/sda(uruchom jako root).
Gilles 'SO - przestań być zły'
2
Z jakiego systemu plików korzystasz? Jeśli jest to ext2 / 3/4, możesz użyć go tune2fs -l /dev/sda1do sprawdzenia. Sprawdź liczbę i rozmiar bloku i pomnóż je, aby uzyskać rozmiar systemu plików. Ponadto, fdisk -s /dev/sda1aby uzyskać rozmiar partycji w blokach 1k. Pomnóż to przez 1024, aby uzyskać rozmiar w bajtach. Liczba ta powinna być tylko nieco większa niż system plików. Na mojej partycji ext4 40 GB jest ona o 3072 bajty większa. Jeśli twój system plików jest dziwnie mniejszy, możesz spróbować zmienić jego rozmiar. Dla ext2 / 3/4 użyj resize2fs /dev/sda1. Możesz to zrobić podczas normalnego korzystania z komputera.
penguin359,
@Gilles sudo fdisk -l / dev / sda shows (publikuję tylko partycję sda1, ponieważ inni nas nie interesują). Blokowanie rozruchu urządzenia Start Koniec Blok ID System / dev / sda1 1 18706 150253568 83 Linux
xralf
@ penguin359 Mam system plików ext4. liczba bloków = 32668162, rozmiar bloku = 4096, 32668162 * 4096 = 133808791552, fdisk -s / dev / sda1 * 1024 = 153859653632. Wydaje się być dziwnie mniejszy. Czy mogę zmienić rozmiar bez utraty danych? Co spowodowało, że jest mniejszy?
xralf
@xralf: zmiana rozmiaru powinna być bezpieczna, nigdy nie straciłem danych. Może być nieco bezpieczniej zrobić to na odmontowanej partycji, na przykład na płycie CD na żywo. Ale najpierw zdobądź kopię zapasową. Zawsze wykonuj kopię zapasową przed wykonaniem głównych czynności administratora systemu.
Faheem Mitha,

Odpowiedzi:

25

Jednym z powodów, dla których pojemności partycji mogą się różnić, jest to, że część miejsca jest zarezerwowana dla użytkownika root, na wypadek, gdyby partycje się zapełniły. Jeśli nie ma miejsca zarezerwowanego dla roota, a partycje zapełniają się, system nie może działać. Jednak różnica ta jest zwykle rzędu 1%, więc nie wyjaśnia to różnicy w twoim przypadku. Ze strony podręcznika użytkownika dla df

Jeśli argument jest bezwzględną nazwą pliku węzła urządzenia dyskowego zawierającego zamontowany system plików, df pokazuje miejsce dostępne w tym systemie plików, a nie w systemie plików zawierającym węzeł urządzenia (który zawsze jest głównym systemem plików).

Więc df naprawdę pokazuje rozmiar twojego systemu plików, który zwykle jest wielkością urządzenia, ale może nie być tak w twoim przypadku. Czy Twój system plików obejmuje całą partycję?

Robi

resize2fs /dev/sda1

zrobić jakąś różnicę? To polecenie próbuje zwiększyć system plików, aby obejmował całą partycję. Ale upewnij się, że masz kopię zapasową, jeśli spróbujesz tego.

Faheem Mitha
źródło
>> Czy twój system plików obejmuje całą partycję? Chyba tak. To ext4. <br> Co powinienem wykonać kopię zapasową? Nie mam dysku dodatkowego, aby wykonać większą kopię zapasową.
xralf
@xralf: (Ok, to nie jest temat pod względem tego pytania, ale ...) Jeśli nie masz kopii zapasowej, skonfiguruj ją natychmiast. Jedyną alternatywą dobrej kopii zapasowej (i nie jest dobrą alternatywą) jest systematyczne korzystanie z rozproszonego systemu kontroli wersji i wypychanie go do jakiejś zdalnej lokalizacji. Ale oczywiście nie można poddać wszystkiego kontroli wersji, np. głoska bezdźwięczna. Przepraszam, jeśli jestem zajęty.
Faheem Mitha,
@ xralf: Chciałbym zamieścić wyniki swoich wyników w samym pytaniu, łatwiej jest je zobaczyć i przeczytać.
Faheem Mitha,
resize2fs jest dość bezpieczną operacją, nie ma potrzeby tworzenia kopii zapasowej (jeśli masz stabilną moc i używasz stabilnego oprogramowania). BTW, domyślna liczba zarezerwowanych bloków wynosi 5% dla systemów plików ext *.
rvs,
@rvs: nie zgadzam się na ponowne utworzenie kopii zapasowej. Masz rację co do 5% przynajmniej na Debianie. Źle pamiętałam. Ale nie wiem, czy to standard we wszystkich dystrybucjach.
Faheem Mitha
5

Główna różnica polega na tym, że niektóre rzeczy mówią, że 1 kilobajt to 1000 bajtów, a inne mówią, że 1 kilobajt to 1024 bajty.

Narzędzie dyskowe Gnome pokazuje pojemność przy użyciu 1 kilobajta = 1000 bajtów, ponieważ producenci dysków opisują w ten sposób rozmiary dysków. Oznacza to, że pojemność dysku jest bliska 154 000 000 000 bajtów .

Z drugiej strony większość systemów operacyjnych mówi 1 kilobajt = 1024 bajty. Wszystkie narzędzia lubią dfi fdiskkorzystają z tej konwencji. Tak więc 154 000 000 000 bajtów / 1024/1024/1024 = 143,4 GB .

Jak słusznie zauważa jlliagre (a Gilles sugeruje, pytając o fdiskdane wyjściowe), narzędzie dyskowe informuje o rozmiarze całego dysku twardego. Ale /dev/sda1jest pojedynczą partycją na dysku twardym. Na przykład na dysku twardym prawdopodobnie znajdują się inne partycje, takie jak partycja wymiany o wielkości 4-8 GB (znana również jako pamięć wirtualna) i partycja rozruchowa, która zwykle ma około 100 MB.

Nie opublikowałeś danych wyjściowych fdisk -l /dev/sda, więc załóżmy, że partycja wymiany wynosi 8 GB. Teraz spadamy do 135 GB .

Są też inne rzeczy, które przyczyniają się do różnicy.

Na przykład system plików używa niektórych partycji dysku na metadane. Metadane to takie rzeczy, jak nazwy plików, uprawnienia do plików, które części partycji należą do których plików i które części partycji są wolne. W moim systemie wykorzystuje się do tego około 2% partycji. Zakładając, że twoje jest podobne, zmniejszyłoby to wolne miejsce do około 132 GB .

System plików może również zarezerwować miejsce, z którego może korzystać tylko użytkownik root. W moim systemie jest to 5% partycji, więc w twoim przypadku oznaczałoby to całkowitą pojemność około 125 GB .

Dokładne liczby zależą od tego, czy używasz ext2, ext3, ext4, fat, ntfs, btrfs itp., Oraz jakie ustawienia zostały użyte podczas formatowania partycji.

Jeśli używasz ext2 lub ext3, sudo tune2fs -l /dev/sda1może pomóc zrozumieć, dokąd zmierza przestrzeń.

Mikel
źródło
Narzędzie dyskowe pokazuje dokładnie pojemność 154 GB (153 859 653 632 bajtów).
xralf
>> sudo tune2fs -l / dev / sda1 << Jakie parametry mówią mi, dokąd zmierza kosmos?
xralf,
2

Prawdopodobnie są używane przez i-węzły. MBR może zużyć pewną ilość.

balki
źródło
1
MBR nie pojawia się tak, jak w cylindrze 0 (nawet w pierwszej partycji, która często zaczyna się od sektora 2048). Istnieją jednak kopie superbloku. Mimo to są to i-węzły. Zobacz także: unix.stackexchange.com/questions/13547/... oraz polecenia „lsblk / dev / sdX” i „dumpe2fs -h / dev / sdX”
David Tonhofer
1

sda1 to nie cały dysk, ale jego pierwsza partycja podstawowa. Możliwe, że utworzyłeś inne odmontowane partycje, które nie pojawiają się na wyjściu df lub po prostu sda1 z jakiegoś powodu nie wypełnia całej dostępnej przestrzeni lub system plików nie wykorzystuje całej dostępnej przestrzeni na swojej partycji.

fdisk -l powie ci, jak wygląda twoja tablica partycji.

jlliagre
źródło
Oczywiście. Mówimy tylko o partycji / dev / sda1, a nie o całym dysku.
xralf,
Nie było to oczywiste z twojego pytania, gdy odwołujesz się do narzędzia dyskowego bez wyświetlania jego danych wyjściowych. Powinieneś go edytować, aby to wyjaśnić. Przydałoby się również powiedzenie, jak utworzyłeś system plików /.
jlliagre,
Odpowiednią częścią danych wyjściowych narzędzia dyskowego jest „pojemność partycji sda1 = 154 GB”.
xralf
Edytuj swoje pierwotne pytanie, aby to wyjaśnić.
jlliagre,