
Ich verwende Ubuntu 11.04 und frage mich, wie ich die Größe der Zuordnungseinheit herausfinden kann. Gibt es in Ubuntu einen Befehl, um dies herauszufinden? Ändert sich auch die Gesamtmenge des von einer Datei verwendeten Festplattenspeichers je nach Größe der Zuordnungseinheit? Ich habe die Dateigrößen mithilfe von und überprüft ls
und du -b
erhalte in beiden Fällen dieselben Werte.
Einschließlich Daten:
sudo tune2fs -l <file system>
Block count: 8052736
Reserved block count: 402636
Free blocks: 2797402
First block: 0
Block size: 4096
Reserved GDT blocks: 1022
Blocks per group: 32768
Inode blocks per group: 512
Flex block group size: 16
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
Journal backup: inode blocks
Wenn die Blockgröße also 4096 Byte beträgt, belegen Dateien, die kleiner als 4096 sind, 4096 Byte Speicherplatz auf der Festplatte. Wie viel Speicherplatz belegen Dateien, die größer als 4096 Byte sind? Gibt es einen Befehl, um das herauszufinden?
Antwort1
Top-Beitrag bearbeiten:
Größe präventiv ermitteln:
temp = int(Größe/Block) wenn mod(Größe/Block) != 0: Temperatur += 1 temp = temp*Block Drucktemperatur
um zu erfahren, wie viele Blöcke eine Datei auf der Festplatte hat:
ls -s
wobei Blockgröße die Partitionsblockgröße ist
und die Größe auf der Festplatte Blockgröße * Anzahl der Blöcke ist
Erklärung zu den terminologischen Unterschieden bei der Blockgröße,
sudo fdisk -l /dev/sda
wobei /dev/sda die betreffende Festplatte ist
Datenträger /dev/sda: 500,1 GB, 500107862016 Bytes 255 Köpfe, 63 Sektoren/Spur, 60801 Zylinder, insgesamt 976773168 Sektoren Einheiten = Sektoren von 1 * 512 = 512 Bytes Sektorgröße (logisch/physisch): 512 Bytes / 512 Bytes I/O-Größe (minimal/optimal): 512 Bytes / 512 Bytes Datenträgerkennung: 0x000c1f6b Gerät Booten Start Ende Blöcke Id System /dev/sda1 * 63 498014 248976 83 Linux /dev/sda2 498015 976768064 488135025 5 Erweitert /dev/sda5 498078 976768064 488134993+ 83 LinuxDas sagt Ihnen mehrere Dinge. Jemand anders hat es bereits besser ausgedrückt, also hier das Blockzitat:
Das Problem dabei ist, dass es vier verschiedene Einheiten gibt, die Sie im Auge behalten müssen. Um die Sache noch schlimmer zu machen, tragen zwei dieser Einheiten den gleichen Namen. Dies sind die verschiedenen Einheiten:
- Hardware-Blockgröße, „Sektorgröße“
- Dateisystem-Blockgröße, „Blockgröße“
- Blockgröße des Kernel-Puffercaches, „Blockgröße“
- Blockgröße der Partitionstabelle, „Zylindergröße“
Um zwischen der Blockgröße des Dateisystems und der Blockgröße des Puffercaches zu unterscheiden, folge ich der FAT-Terminologie und verwende „Clustergröße“ für die Blockgröße des Dateisystems.
Die Sektorgröße ist die Einheit, mit der die Hardware arbeitet. Sie variiert je nach Hardwaretyp, aber die meiste PC-Hardware (Disketten, IDE-Festplatten usw.) verwendet 512-Byte-Sektoren.
Die Clustergröße ist die Zuordnungseinheit, die das Dateisystem verwendet, und sie ist der Grund für die Fragmentierung – das wissen Sie sicher. Auf einem ext3-Dateisystem mittlerer Größe sind das normalerweise 4096 Bytes, aber das können Sie mit dumpe2fs überprüfen. Denken Sie daran, dass diese normalerweise auch „Blöcke“ genannt werden, nur dass ich sie hier als Cluster bezeichne.
Die Clustergröße wird in st_blksize im Statistikpuffer zurückgegeben, damit Programme die tatsächliche Festplattennutzung einer Datei berechnen können.
Die Blockgröße ist die Größe der Puffer, die der Kernel intern verwendet, wenn er Sektoren zwischenspeichert, die von Speichergeräten gelesen wurden (daher der Name „Blockgerät“). Da dies die primitivste Speicherform im Kernel ist, müssen alle Dateisystemclustergrößen ein Vielfaches davon sein. Diese Blockgröße ist auch das, worauf sich Userspace-Programme fast immer beziehen. Wenn Sie beispielsweise „du“ ohne die Optionen -h oder -H ausführen, wird zurückgegeben, wie viele dieser Blöcke eine Datei einnimmt. df meldet auch Größen in diesen Blöcken, die Spalte „Blöcke“ in der Ausgabe von fdisk -l ist von diesem Typ und so weiter. Es ist das, was am häufigsten als „Block“ bezeichnet wird. In jeden Block passen zwei Festplattensektoren.
Die Zylindergröße wird nur in der Partitionstabelle und vom BIOS verwendet (und das BIOS wird von Linux nicht verwendet).
„df“ arbeitet nur mit Dateisystemen, es kann also nicht ohne Dateisystem verwendet werden – ohne Dateisystem existieren die Daten, die es zurückgeben würde, nicht. „du“ arbeitet mit einzelnen Dateien.
ausHier.
Antwort2
stat
Befehl, der mit einem Einhängepunkt als Parameter ausgeführt wird, zeigt die Clustergröße des Dateisystems unter IO Block
der Eigenschaft
stat /dev/shm/minifs-mounted
wird zeigen
File: /dev/shm/minifs-mounted
Size: 1024 Blocks: 2 IO Block: 1024 directory
Device: 709h/1801d Inode: 2 Links: 3
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-12-27 14:03:15.000000000 -0300
Modify: 2022-12-27 14:01:50.000000000 -0300
Change: 2022-12-27 14:01:50.000000000 -0300
Birth: -
Die obigen Informationen beziehen sich auf ein Dateisystem, das erstellt wurde mit
cd /dev/shm
dd if=/dev/zero bs=1M count=100 of=minifs.img
mkfs.ext4 -b 1024 ./minifs.img
mount -o loop minifs.img minifs-mounted
Erzwingen eines 1024 Byte langen Clusters