PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Harddiskinformationen aus /proc auslesen



TheDodger
01-05-2004, 12:32
Moin!

Ich schlag mich z.Z. ein wenig mit dem /proc Filesystem herum.
Momentan beschäftige ich mit dem Harddisk Kram ...

Gibt es eine Möglichkeit aus dem /proc System zu erfahren, wieviel Platz auf der Platte / den Partitionen schon belegt ist?
Ich finde immer nur die Gesamtgröße ...

Und wie komme ich eigentlich an die Informationen der angeschlossenen SCSI Devices, also Sachen wie Type, Größe, etc.?
Bei IDE ist es ja relativ einfach ....

Boron
01-05-2004, 14:35
Gibt es eine Möglichkeit aus dem /proc System zu erfahren, wieviel Platz auf der Platte / den Partitionen schon belegt ist?
Ich finde immer nur die Gesamtgröße ...Währe der Quellcode von "df" da eventuell hilfreich?

TheDodger
01-05-2004, 15:57
Original geschrieben von Boron
Währe der Quellcode von "df" da eventuell hilfreich?
Durchaus, daran hab ich auch schon gedacht, ich suche grad das Packet, in dem sich das Ding versteckt ...

[edit]
Ahh, coreutils ... allerdings steig ich da nicht ganz durch :(

anda_skoa
01-05-2004, 18:31
Siehe auch
man statfs

Ciao,
_

TheDodger
02-05-2004, 08:54
Ich habe da doch noch was gefunden in der Nacht ...
Das funktioniert soweit, bis auf kleine Abweichungen bei 'used' & 'free'.
Aber ich denke, das ist nur eine Sache von falschen Variablentypen.
Ich muß nur noch rausbekommen, welches Dateisystem sich auf den Platten befindet ...

[edit]
Als Anhang ein Testdesignstück, was ich gefunden habe,
in f_bsize (optimal transfer block size) steht für meine Partitionen 4k drin, mein df liefert mir allerdins 1k Blöcke zurück, genauso wnn ich fdisk -l aufrufe:



df -T
/dev/hda6 ext3 1929068 1174968 656108 65% /home

fdisk -l
/dev/hda6 188 431 1959898+ 83 Linux

xdf
/dev/hda6 /home 482267 293742 188525 60%

df -T --block-size=4096
/dev/hda6 ext3 482267 293742 164027 65% /home


Was ist da nun eigentlich richtig für mich?
Muß ich meine Sachen, erst auf 1k Blöcke umrechnen?

quinte17
02-05-2004, 14:38
mhh also: 4 x 482267(xdf) = 1929068(df)

ich schätze mal du musst umrechnen..
greetz

TheDodger
02-05-2004, 15:51
Das dacht ich mir schon, aber warum zeigt mir fdisk & df alles in 1k Blöcken an?

[edit]
Und da fällt mir nochwas auf ...
Wie kann ich eigentlich feststellen, ob ich eine erweiterte Partition vor mir hab?
statfs() enthält mir da die Informationen ...

anda_skoa
03-05-2004, 08:52
statfs ist auch auf Filesystem Ebene, Partitonstypen sind da drunter.

Ich schätze du wirst da im fdisk Code nachsehen müssen, befürchte fast, dass man den Partitiontable lesen muss.

Ciao,
_

TheDodger
03-05-2004, 10:04
Original geschrieben von anda_skoa
Ich schätze du wirst da im fdisk Code nachsehen müssen, befürchte fast, dass man den Partitiontable lesen muss.
Ich hab's schon befürchtet ...
Ich glaub, da bau ich mir doch eine 'schätz' funktion ... die 1. Partition in einer erweiterten ist ja immer [h|s]da5 ...

TheDodger
04-05-2004, 06:33
Soweit so gut ...
Bislang läuft das ganze ja ausgesprochen zufriedenstellend (bis auf das Problem mit den Partitionen, aber erstmal egal ;) ).
Ich suche gerade eine Möglichkeit, die Kapazität einer Festplatte zu bestimmen.
2 Möglichkeiten tun sich mir da auf ...
a ) /proc/ide/hdx/capacity
b ) aus der plattengeometrie berechnen

Bei [a] bekomme ich diesen Wert '78177792' bei einer 40GB großen Platte ...
In Bytes kann es ja schon mal nicht sein, denn dann würd ich ja nur ~74MB haben ...

[edit]
Args ...
78177792 * 512 == byte ... manchmal hilft das *ungezielte* suchen auch

TheDodger
05-05-2004, 14:02
Hat jemand eine Ahnung, wie ich an Informationen zu SCSI Geräten kommen kann?
Unterhalb von /proc/scsi hab ich bis dato nicht's sinnvolles finden können ...