Main /

Fehlertolerantes Mounten

Fehlertolerantes Mounten

/ HomePage / Computer / Hardwareübersicht / PC-Zentraleinheit / Festplatte

Fehlertolerantes Mounten von Festplatten, Kameras, ... linux

Wer kennt das nicht: wie mounte ich mal eben schnell eine fremde Festplatte?

Dazu nur soviel, ist USB richtig installiert und wird jetzt die Festplatte angeschlossen, sollte sie zumindest per fdisk -l sichtbar sein. Sonst fehlt irgendein USB Treiber. ohci_hcd, uhci_hcd, ehci_hcd

Für eigene Festplatten die immer wieder gemountet werden sollen, kann man Einträge in die /etc/fstab vornehmen. Das hilft aber nicht wirklich, wenn häufiger fremde Festplatten angeschlossen werden, da jeder seiner Platte selbst ein Partionschema zuordnen kann. Das ist nicht unbedingt immer eine primäre Partion. Zudem stimmt die Reihenfolge der Platten nicht immer überein. So bekommt die zuerst angeschlossene Platte per USB das Device /dev/sda, die zweite Platte /dev/sdb und so weiter. Nach einem reboot kann es aber sein, dass die Reihenfolge umgekehrt ist. Daraus folgt das es einfach zu kompliziert ist, schnell mal eine Platte anschließen und mal eben zu mounten.

Beispiel von fdisk zeigt alle angeschlossenen Platten.

 # fdisk -l
 Platte /dev/hda: 80.0 GByte, 80026361856 Byte
 255 Köpfe, 63 Sektoren/Spuren, 9729 Zylinder
 Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes

    Gerät  boot.     Anfang        Ende     Blöcke   Id  System
 /dev/hda1               1         243     1951866    b  W95 FAT32
 /dev/hda2   *         244         250       56227+  83  Linux

[...]

 Platte /dev/sda: 80.0 GByte, 80026361856 Byte
 255 Köpfe, 63 Sektoren/Spuren, 9729 Zylinder
 Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes

    Gerät  boot.     Anfang        Ende     Blöcke   Id  System
 /dev/sda1               1        9729    78148161    c  W95 FAT32 (LBA)

Es werden alle angeschlossenen Laufwerke gezeigt, was mitunter zu einer recht langen Ausgabe führen kann. Desweiteren ist hier leider nicht ersichtlich, ob einige Devices Geräte nicht doch schon irgendwohin gemountet sind. Das kann man dann per mount -l sehen.

 # mount -l
 /dev/hda5 on / type ext3 (rw,noatime)
 proc on /proc type proc (rw)
 sysfs on /sys type sysfs (rw)
 udev on /dev type tmpfs (rw,nosuid)
 devpts on /dev/pts type devpts (rw)
 /dev/hda7 on /space/local/Media1 type ext3 (rw,noatime)
 shm on /dev/shm type tmpfs (rw,nosuid,nodev)
 /var/portage.loop on /usr/portage type reiserfs (rw,noatime,loop=/dev/loop0)
 usbfs on /proc/bus/usb type usbfs (rw,devmode=0664,devgid=85)
 svcdir on /var/lib/init.d type tmpfs (rw,mode=0755,size=2048k)
 nfsd on /proc/fs/nfs type nfsd (rw)
 rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
 automount(pid7322) on /mynet type autofs (rw,fd=4,pgrp=7322,minproto=2,maxproto=4)
 automount(pid7318) on /misc type autofs (rw,fd=4,pgrp=7318,minproto=2,maxproto=4)
 /var/db.loop on /var/db type reiserfs (rw,loop=/dev/loop1)

Auch hier wieder das Problem, das die Ausgabe schnell recht lang ausartet und man nicht sofort sehen kann, wo welche Devices gemountet sind.

Ich Lars habe jetzt mal ein kleines Perl Script geschrieben, das ein wenig Linderung verspricht. Siehe Files

Was kann das Tool:

  1. Es liest die Ausgabe von fdisk -l um die vorhandenen Partionen zu identifizieren.
  2. Es liest die Ausgabe von mount -l um zu sehen welche Devices wohin gemountet sind.
  3. Es liest die /etc/fstab um zu sehen, wo nicht gemountete Devices hingemountet werden könnten.
  4. Es kann (alle) nicht gemountete Devices nach /mnt/Devicename mounten.
  5. Es kann alle hiermit gemounteten Devices auch wieder unmounten.

Es werden die gemounteten und die ungemounteten Devices getrennt ausgegeben. Als kleine Hilfe wird die Größe der Partion angegeben und die Größe der gesamten Festplatte. So wie man die Platte gekauft hat. Evtl. die gefundenen Mountpoints. Bei den nicht gemounteten Partionen werden nummern in eckigen Klammern davor ausgegeben.

Beispiel:

 # ftmount.pl
 Currently mounted partions:
 /dev/hda5   10.0GB   80.0GB '/'
 /dev/hda7   58.0GB   80.0GB '/space/local/Media1'

 Currently not mounted partions:
 [1] /dev/hda1    2.0GB   80.0GB
 [2] /dev/hda2   57.6MB   80.0GB '/boot'
 [3] /dev/hda6   10.0GB   80.0GB
 [4] /dev/sda1   80.0GB   80.0GB '/mnt/usbstick'

Hier zu sehen, 2 Partionen sind gemountet, die anderen 4 Partionen sind gefunden worden und noch nicht in das Filesystem eingehängt, wobei zu 2 Partionen Mountpoints in der /etc/fstab gefunden wurden.

mount
ftmount.pl -m mountet alle nicht gemounteten Devices, zu ihren Mountpoints oder /mnt. Als kleine Hilfe werden nicht gefundene Mountpoints angelegt.
mount einer Partion
ftmount.pl -m X mountet das mit X angegebene Devices, zu ihrem Mountpoint oder nach /mnt falls kein expliziter Mountpoint gefunden wurde. X ist eine Zahl von 1 bis Anzahl nicht gemounteter Partionen, die vor den nicht gemounteten Partionen in eckigen Klammern angezeigt wird.
umount
ftmount.pl -u sollte alle hiermit erstellten Mounts wieder rückgängig machen.

Dieses Tool stellt nur eine bessere Hilfe dar, es ist kein Ersatz für das normale mount.

Nachteile

  • Programm muß leider als root laufen. Aber da es im Source vorliegt, sollte das IMHO aber kein Problem darstellen. Mounten sollte sowieso nur root erlaubt sein.
  • CD/DVD Laufwerke werden nicht angezeigt. Hier wechselt aber auch nicht ständig das Partionschema oder das Device.
  • Es kann jetzt zwar genau nur ein Device gemountet werden, aber unmount geht immer nur auf alle mit diesem Programm gemounteten Devices.

Fazit

Recht praktisch.

Fragen, Anträge, Kommentare:

Elsni 21.04.2006 00:54 Uhr: Damit ich aber meine USB-Massenspeicher immer aufs gleiche Device gemoutet kriege, muß ich sicherlich für jedes Laufwerk eine UDEV-Regel erstellen, oder? Anmerkung: .pl dateien möglichst ohne .pl extension attachen, weil der webserver sie sonst bei klick ausführen will!

Lars 21.04.2006 07:15 Uhr: Das Mounten auf immer das selbe Device ist leider unmöglich, da es von der Reihenfolge abhängig ist in der die externen (USB|Firewire|Iomega Zip) Platten angestöpselt werden. Das heißt, die Platte die Du zuerst einsteckst landet in /dev/sda, die zweite dann in /dev/sdb und so weiter, wenn Du das System jetzt rebootest kann es sein, das die Platten nachher in der Reihenfoge vertauscht sind. Das nervt mich auch, deshalb zeigt mein Programm ja zumindest an, wie groß die Platten sind. Desweiteren ist damit das Mounten zu immer den selben Mountpoints unmöglich, da in der /etc/fstab leider steht, welches Device wohin gemountet wird. Da gibt es keinen Namen frowning smiley Vielleicht sollte ich noch den Disklabel anzeigen. Und ein Mounten zu einem Mountpoint über den Disknamen anbieten. Zur .pl Endung soviel: Es ist mein erster Wurf, es soll demnächst ein ebuild dazu geben winking smiley

Files

21.07.2006
Version 0.1.2 Attach:ftmount-0.1.2.ebuild nutzt dieses Archive: Attach:ftmount-0.1.2.tar.gz
21.04.2006
Version 0.1 Attach:ftmount-0.1.ebuild nutzt dieses Archive: Attach:ftmount-0.1.tar.gz

Updates

21.07.2006
In der alten Version wurde immer LANG=C gesetzt, das ist aber falsch, es muss LC_ALL=C sein, das wurde geändert. Zudem ist für FAT Dateisysteme jetzt die Option shortname=winnt gesetzt. Display the shortname as is mehr in der manpage zu mount. Noch eine Info meinerseits, da wir bequem sind, und ich immer nur genau ein Paket pflegen mag, CVS Source oder ein ebuild, habe ich einfach mal das ebuild mit in den Source Tree abgelegt. Erst mal für mich, um zu testen ob sowas überhaupt geht. Jetzt kann ich das ganze Sourcepaket in meinem CVS als ein Stück ablegen, ohne 2 verschiedene Dinge zu pflegen. ein make digest baut mir dann compressed tar und erstellt im overlay portage tree ein neues ebuild, mit der entsprechenden Version.
20.04.2006
Filesysteme, die ein FAT in ihrem Dateisystemtyp tragen z.B. W95 FAT32 werden jetzt mit dem Parameter -o quiet gemountet, damit kann man dann per FileManager mc auch alle möglichen Dateien kopieren, ohne das mc jedesmal meldet, das eine Operation wie chmod nicht durchgeführt werden konnte. Da FAT sowas ja nicht unterstützt.

sudo

19.06.2006
ftmount.pl als normaler User geht nicht, da fdisk und mount root Rechte brauchen um zu arbeiten. Dafür gibt es aber das Paket sudo, zu installieren per emerge sudo und dann per visudo in die /etc/sudoers folgendes eintragen:

<USERNAME> ALL=NOPASSWD:/usr/bin/ftmount.pl

Wobei <USERNAME> hier ein vorhandener Username sein muss. Schon funktioniert das überaus hilfreiche Programm auch ohne root access.

Fragen

  • Wie lese ich den Disklabel ein FAT Partion unter Linux aus?
    Bei ext2/3 geht das mit tune2fs -l DEVICE | grep "volume name"
Frische Änderungen | Menü editieren
zuletzt geändert am 09.02.2009 08:42 Uhr von Lars
Edit Page | Page History