Wie finde ich die Größe einer nicht gemounteten Partition unter Linux?

14

Ich verwende tune2fs, aber es gibt Daten in Blöcken und ich kann nicht den genauen Wert der Gesamtgröße der Partition abrufen.

Ich habe auch verwendet fdisk -l /dev/mmcblk0p1, aber die Größe, die ich von hier bekomme, ist auch ein anderer Wert.

Wie finde ich die genaue Partitionsgröße?

Sarthak_Bhutani
quelle
8
Beachten Sie, dass tune2fs nicht die Größe der Partition druckt, sondern die Größe des Dateisystems . Ein Dateisystem kann kleiner als eine Partition sein (wenn auf der Partition nicht verwendeter Speicherplatz vorhanden ist), es kann größer als eine Partition sein (falls die Partition auf irgendeine Weise abgeschnitten wurde; offensichtlich ist das Dateisystem in diesem Fall beschädigt, aber es ist immer noch größer als die Trennwand). Es kann sich auch über mehrere Partitionen erstrecken oder sogar "virtuell" sein, dh nicht einmal über ein Sicherungsgerät verfügen (z. B. sysfs, procfs, tmpfs).
Jörg W Mittag

Antworten:

22

Der Befehl lautet:

blockdev --getsize64 /dev/mmcblk0p1

Das Ergebnis wird in Bytes als 64-Bit-Ganzzahl angegeben. Es fragt die Bytegröße eines Blockgeräts ab , während der Kernel seine Größe sieht.

Der Grund, warum fdisk -l /dev/mmcblk0p1es nicht funktioniert hat, war, dass fdiskdies etwas völlig anderes bewirkt: Es liest die Partitionstabelle (= erster Sektor) des Block-Geräts und gibt aus, was es gefunden hat . Es prüft nichts, sagt nur, was in der Partitionstabelle steht.

Es stört nicht einmal, wenn die Partitionstabelle beschädigt ist oder das Blockgerät keine hat: Es wird eine Warnung ausgegeben, dass die Prüfsumme nicht in Ordnung ist, aber es wird trotzdem gedruckt, was gefunden wird, auch wenn die Werte eindeutig nicht sind -Sinn.

In Ihrem Fall ist Folgendes passiert: Es /dev/mmcblk0p1 gibt keine Partitionstabelle. Wie der Name des Geräts zeigt, ist es bereits die erste Partition der physischen Festplatte /dev/mmcblk0. Diese Festplatte enthält eine Partitionstabelle, mit der Sie sie abgefragt haben fdisk -l /dev/mmcblk0und die funktioniert hat (vorausgesetzt, sie hat eine msdos-Partitionstabelle).

Peterh: Setzen Sie Monica wieder ein
quelle
Mein Partitionsspeicherplatz ist genau 2 GB, aber sowohl blockdev als auch fdisk geben Werte an, die kleiner sind als der verbleibende Speicherplatz. Bitte teilen Sie dem Befehl auch mit, dass er seinen Wert
abrufen soll
@Sarthak_Bhutani Welche Informationen, die Sie benötigen, werden nicht gedruckt fdisk -l /dev/mmcblk0? Es sollte Ihnen die Größe eines Blocks, die Gesamtanzahl der Blöcke auf dem Gerät, die Größe der Partitionen sowie den Start- und Endblock jeder Partition anzeigen. Sie können anhand dieser Informationen auch Blockbereiche ermitteln, die keiner Partition zugewiesen sind.
Blackjack
9

Versuchen Sie lsblk, es erfordert nicht einmal root:

$ lsblk -b
NAME    MAJ:MIN RM        SIZE RO TYPE MOUNTPOINT
xvda    202:0    0 34359738368  0 disk 
├─xvda1 202:1    0  1676673024  0 part [SWAP]
└─xvda2 202:2    0 32682016768  0 part /var/spool

Der -bParameter fordert ihn auf, die Größe in Bytes auszugeben.

heinrich5991
quelle
Das ist ein sehr schönes Werkzeug !!! Vielen Dank! +1!
Rmbianchi
5

So ermitteln Sie den genauen Wert der Gesamtgröße der Partition:

awk '{print $1*512}' /sys/class/block/mmcblk0p1/size
GAD3R
quelle
2
Ich denke, es hängt auch davon ab, ob die Sektorgröße 512 beträgt (was heute die überwiegende Mehrheit der Fälle ist).
Peterh - Wiedereinsetzung von Monica
1
@peterh Es ist tatsächlich ungewöhnlich, dass ein Blockgerät heutzutage noch eine physische Sektorgröße von 512 hat, aber viele Dinge (ich kann keine genauen Informationen über / sys / class / block finden) sind so ausgelegt, dass sie in Einheiten von 512 Bytes gemeldet werden unabhängig von der tatsächlichen Blockgröße.
Random832