Label von Festplatten auslesen

Post Reply
Message
Author
Karlomann

Label von Festplatten auslesen

#1 Post by Karlomann »

Hallo,

wenn ich einer Partition ein label zuweise, z.B mit: mke2fs -L VOLUME1 /dev/sda1, kann ich das später irgendwie auslesen?

Anders formuliert, kann ich mir irgendwie eine Liste aller Labels anzeigen lassen, die gerade im System vorhanden, aber nicht unbedingt eingebunden sind? Quasi so etwas wie /cat/proc/partitions, halt nur für Labels

Es geht darum, Wechselplatten anhand des Labels zu erkennen. Je nach eingelegter Platte soll ein script laufen, sprich:

Platte einlegen, dbus/hal/ivman(?) (damit muß ich mich noch beschäftigen) erkennt ein neues Ereignis, ließt daraufhin das Label aus und übergibt dieses Label dann an ein Skript, welches die Platte einbindet, nfs reexportiert usw. usf.

Da recht viel gewechselt wird, ist eine Festlegung anhand von Gerätenamen (/dev/sdx) nicht möglich, diese Option fällt also aus, und udev ist nicht in der Lage, Festplatten gleichen typs zu unterscheiden. Seriennummern o.ä. werden nicht ausgelesen

User avatar
jochen
prolinux-forum-admin
Posts: 699
Joined: 14. Jan 2000 15:37
Location: Jülich
Contact:

#2 Post by jochen »

Hi,

die gewünschte Information liefert Dir im Falle von ext2/3 das tune2fs-Kommando:

Code: Select all

[root@rechner ~]# file -s /dev/hda1
/dev/hda1: Linux rev 1.0 ext3 filesystem data (needs journal recovery) (large files)
[root@rechner ~]# tune2fs -l /dev/hda1
tune2fs 1.35 (28-Feb-2004)
Filesystem volume name:   /
Last mounted on&#58;          <not available>
Filesystem UUID&#58;          b43c990c-9eba-4b77-9a05-3aab174f653b
Filesystem magic number&#58;  0xEF53
Filesystem revision #&#58;    1 &#40;dynamic&#41;
Filesystem features&#58;      has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super large_file
Default mount options&#58;    &#40;none&#41;
Filesystem state&#58;         clean
Errors behavior&#58;          Continue
Filesystem OS type&#58;       Linux
Inode count&#58;              1026144
Block count&#58;              2048279
Reserved block count&#58;     102413
Free blocks&#58;              591408
Free inodes&#58;              781304
First block&#58;              0
Block size&#58;               4096
Fragment size&#58;            4096
Reserved GDT blocks&#58;      500
Blocks per group&#58;         32768
Fragments per group&#58;      32768
Inodes per group&#58;         16288
Inode blocks per group&#58;   509
Filesystem created&#58;       Mon Jun 27 16&#58;43&#58;48 2005
Last mount time&#58;          Thu Dec 14 07&#58;48&#58;33 2006
Last write time&#58;          Thu Dec 14 07&#58;48&#58;33 2006
Mount count&#58;              25
Maximum mount count&#58;      -1
Last checked&#58;             Mon Jun 27 16&#58;43&#58;48 2005
Check interval&#58;           0 &#40;<none>&#41;
Reserved blocks uid&#58;      0 &#40;user root&#41;
Reserved blocks gid&#58;      0 &#40;group root&#41;
First inode&#58;              11
Inode size&#58;               128
Journal inode&#58;            8
First orphan inode&#58;       863316
Default directory hash&#58;   tea
Directory Hash Seed&#58;      9dd4caa8-3e28-431c-b139-dd3926844fd2
Journal backup&#58;           inode blocks
Gegebenenfalls ist ein Identifizieren der Platten per UUID dann der sicherere Weg - Volume Labels hat man schnell schon mal doppelt vergeben, aber die UUID soll immer eindeutig sein. In der bash ist das schnell gebastelt:

Code: Select all

FS_UUID=$&#40;tune2fs -l $FS_DEVICE | awk -F '&#58; +' '$1 == "Filesystem UUID" &#123;print $NF &#125;'&#41;
Wenn Du doch lieber das Label verwenden möchtest, ersetze "Filesystem UUID" einfach durch "Filesystem volume name".

Disclaimer: So funktioniert's mit ext2/3, bei anderen Dateisystemarten sollte es zumindest ähnliche Tools geben - wenn ein Volume Label überhaupt gesetzt werden kann (reiserfs3.6 kann es m.E. nicht, aber da könnte ich mich irren).

Viel Spass beim Basteln,
Jochen
Die grösste Lüge der EDV? "Mal eben..."

sumsi

udev

#3 Post by sumsi »

Hallo,

eleganter, hat man sich einmal in die Theamtik eingearbeitet, geht das mit der seit Kernel 2.6.x verfügbarer udev-Methode.
Damit kann man so gut wie alle Eigenschaften (irgend) eines Devices verwerten.

http://de.gentoo-wiki.com/Udev
http://de.gentoo-wiki.com/Udev_Rules

lg. sumsi

komsomolze
Posts: 430
Joined: 03. Mar 2006 23:16

#4 Post by komsomolze »

(reiserfs3.6 kann es m.E. nicht, aber da könnte ich mich irren).
reiserfs hat LABEL, jedoch behandeln die Tools es nicht wie bei anderen FS mit dem Schalter '-L', sondern '-l'.
Das Log muss zudem Standard-Werte haben, zBsp darf es keine selbstgewählte logsize haben oder extern sein.

Ich persönlich ziehe LABEL den UUID vor. Bei den vielen Zahlen in der fstab wurde ich ziemlich fusselig.

Frage:
cfdisk zeigt diese LABEL an jedoch nur "pro block-device".
Gibt es etwas, das ähnlich 'fdisk -l' auch eine cfdisk-artige Übersicht über alle Platten bietet? Also mit den LABEL!





--------------------------------------------------------------------
EDIT 2007-03-21
Doch, da gibt es etwas:

Code: Select all

blkid -c/dev/null -sLABEL -sTYPE
bzw. die /etc/blkid.tab, in der die Informationen LABEL und UUID vorliegen.
Last edited by komsomolze on 24. Mar 2007 11:27, edited 2 times in total.
mfg komsomolze

User avatar
jochen
prolinux-forum-admin
Posts: 699
Joined: 14. Jan 2000 15:37
Location: Jülich
Contact:

#5 Post by jochen »

komsomolze wrote:reiserfs hat LABEL, jedoch ...
Ah? Wieder was gelernt - danke.

In der fstab würde ich ebenfalls nur ungerne UUIDs verwenden. Für die festen Partitionen kann man dann ja Devicenamen/Labels nehmen und nur für die Wechselmedien die UUIDs.

Ein Tool für ein "fdisk -l à la cfdisk" kenne ich leider nicht.

Jochen
Die grösste Lüge der EDV? "Mal eben..."

an.max.

smart

#6 Post by an.max. »

OK. habe mich überzeugt, mit udev gleiche IDE-Plattten am gleichen Steckplatz geht nicht ...

Aber vielleicht damit:
http://www.linux-user.de/ausgabe/2004/1 ... tmontools/

bye an.max.

2.

serial

#7 Post by 2. »

seiennr. bekommt man auch mit

Code: Select all

hdparm -i
angezeigt

Karlomann

#8 Post by Karlomann »

@jochen: Vielen Dank. Zur Info: Die UUIDs für xfs gibt es mit xfs_admin -u /dev/sdx und für reiserfs mit reiserfstune /dev/sdx. Letzeres bei mir ohne irgend einen Schalter, da die nur zum setzen, nicht aber zum auslesen dienen.

@sumsi: udev kann keine Platten gleichen Typs unterscheiden, daß ist mein großes Dilemma und hat mich von der Sinnlosigkeit eines software RAID5 überzeugt, da es absolut nicht möglich ist, die defekte Platte ausfindig zu machen. Außer man legt eine extra Partition an, anhand derer die Platten identifiziert werden können.

@2. hdparm geht bei mir nicht:

Code: Select all

# hdparm -i /dev/sda
/dev/sda1&#58;
 HDIO_GET_IDENTITY failed&#58; Inappropriate ioctl for device
fstab soll in meinem Fall nicht verwedet werden, sondern das wird dereinst über ein Skript geregelt, welches von einem noch herauszufindenden hotplug Ereignis/Dienst aufgerufen wird.

Karlomann

#9 Post by Karlomann »

Ups, da ist mir ein Fehler unterlaufen. Keine Ahnung, wo die "1" hinter sda bei hdparm herkommt.

Nachtrag: smartctl klappt auch hervorragend:

Code: Select all

# smartctl -i -d ata /dev/sda
smartctl version 5.36 &#91;x86_64-pc-linux-gnu&#93; Copyright &#40;C&#41; 2002-6 Bruce Allen
Home page is http&#58;//smartmontools.sourceforge.net/

=== START OF INFORMATION SECTION ===
Device Model&#58;     SAMSUNG HD160JJ
Serial Number&#58;    S08HJ1MYC04503
Firmware Version&#58; WU100-33
User Capacity&#58;    160,041,885,696 bytes
Device is&#58;        In smartctl database &#91;for details use&#58; -P show&#93;
ATA Version is&#58;   7
ATA Standard is&#58;  ATA/ATAPI-7 T13 1532D revision 4a
Local Time is&#58;    Wed Jan 24 22&#58;27&#58;29 2007 CET
SMART support is&#58; Available - device has SMART capability.
SMART support is&#58; Enabled
Schade, das udev die Seriennummer nicht ausliest.

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#10 Post by Janka »

Udev ist ein Haufen Skripte. Es ist prinzipiell kein Problem, die Funktion nachzurüsten. Mein Gefühl sagt mir, dass du nicht der einzige mit diesem Problem bist.

Ich habe mit udev noch nicht soooo viel gemacht, aber vielleicht kriegen wir ja zusammen was hin.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

sumsi

es gibt noch ...

#11 Post by sumsi »

Hallo,
es gibt noch speziell für LABEL

ext2/3 : e2label /dev/partition
xfs: xfs_admin -l /dev/label

bye sumsi

CSa

vol_id

#12 Post by CSa »

Schon mal vol_id versucht (Benutzt udev auf Debian, um z.B. Links in /dev/disk/by-label/ zu erzeugen)?

# /lib/udev/vol_id --export /dev/sda1
ID_FS_USAGE=filesystem
ID_FS_TYPE=ext2
ID_FS_VERSION=1.0
ID_FS_UUID=038361dc-ce14-463c-8874-e13b5e01fc39
ID_FS_LABEL=boot
ID_FS_LABEL_SAFE=boot

sumsi

genial

#13 Post by sumsi »

Hallo allerseits,

einfach genial - CSa hat 's gefunden - ich glaub bei Linux lernt man nieee aus ;-)

Dann bringt uns einfach

Code: Select all

vol_id /dev/hda11|grep LABEL|grep -v SAFE|cut -f2 -d=
das Ergebnis.

Schönes WE
sumsi

Post Reply