CD-ROMs, Disketten, externe Massenspeicher

Linux: Mount von externen Massenspeichern

26.01.2005 von Michael Kofler
Unsere Artikelserie führt in die Administration des Linux-Dateisystems ein. Der dritte Teil erläutert die Einbindung von CD-ROMs, externen Festplatten, USB-Sticks und Systempartitionen wie swap.

Unsere neue Linux-Serie beschreibt die verschiedenen Facetten der Administration des Dateisystems. Mit Ausnahme der ersten beiden Teile richtet sich die Serie explizit an Linux-Profis. Die achtteilige Artikelreihe behandelt dabei folgende Themen:

Die Artikelserie basiert auf dem Kapitel 25 des Standardwerks "Linux - Installation, Konfiguration, Anwendung" von Michael Kofler aus dem Verlag Addison-Wesley. Sie können dieses über 1200 Seiten starke Buch auch in unserem Buchshop versandkostenfrei bestellen oder als eBook herunterladen.

Serie: Administration des Linux-Dateisystems

Teil 1

Dateisystemtypen

Teil 2

mount und fstab

Teil 3

CD-ROMs, Disketten, externe Massenspeicher

Teil 4

ext3 und reiserfs

Teil 5

Partitionierung der Festplatte

Teil 6

RAID mit Linux

Teil 7

LVM, Logical Volume Manager

Teil 8

DMA mit IDE-Festplatten

CD-ROMs und DVDs

CD-ROM-und DVD-Laufwerke werden im Prinzip wie Festplatten verwaltet. Es gibt aber zwei wesentliche Unterschiede: Erstens ist bei einem CD/DVD-Laufwerk ein Wechsel der CD/DVD möglich, während Sie eine herkömmliche Festplatte im laufenden Betrieb nicht wechseln können. Zweitens verwenden Daten-CDs und -DVDs ein anderes Dateisystem (meist iso9660 oder udf).

Die meisten Distributionen sind so vorkonfiguriert, dass der Zugriff auf CD-ROM-Laufwerke unter KDE/Gnome mit einem Mausklick möglich ist. Unter KDE stehen dazu Desktop-Icons zur Verfügung; der Gnome-Dateimanager Nautilus sieht stattdessen eigene Menükommandos vor.

Im manuellen Betrieb reicht ein einfaches mount oder umount-Kommando, wobei lediglich das Verzeichnis je nach Distribution variiert (/media/cdrom oder /mnt/cdrom):

user$ [u]mount /mnt/cdrom

Übliche /etc/fstab-Einträge sehen so aus:

# /etc/fstab: CD-ROM- und DVD-Laufwerke
/dev/cdrom /media/cdrom auto ro,noauto,user 0 0
/dev/dvd /media/dvd auto ro,noauto,user 0 0

Als Dateisystem wird statt auto oft iso9660,udf angegeben, weil bei CDs und DVDs in der Regel nur diese beiden Formate in Frage kommen. Falls Sie Programme, die sich auf der CD oder DVD befinden, unmittelbar starten möchten, müssen Sie außerdem die Option exec angeben.

CD/DVD-Device-Namen

Die folgende Liste gibt an, welche Device-Namen beim Zugriff auf das CD-ROM-Laufwerk verwendet werden. Alle marktüblichen CD-ROM-Laufwerke sind entweder am IDE-oder am SCSI-Bus angeschlossen. Wenn Sie nicht wissen, welchen Laufwerkstyp Sie verwenden und wie das Laufwerk mit dem Controller verbunden ist, haben Sie die größte Trefferwahrscheinlichkeit mit /dev/hdb oder /dev/hdc.

CD-ROM-Device-Namen

Bezeichnung

Device

/dev/cdrom

Link auf das CD-ROM-Device

/dev/dvd

Link auf das DVD-Device

/dev/hda

IDE/ATAPI: IDE-Controller 1, Laufwerk 1 (master)

/dev/hdb

IDE/ATAPI: IDE-Controller 1, Laufwerk 2 (slave)

/dev/hdc

IDE/ATAPI: IDE-Controller 2, Laufwerk 1 (master)

/dev/hdd

IDE/ATAPI: IDE-Controller 2, Laufwerk 2 (slave)

/dev/scd0

SCSI-Laufwerk 1

/dev/scd1

SCSI-Laufwerk 2

Eine Besonderheit sind CD-R- und DVD-R-Laufwerke am IDE-Bus. Diese werden von Linux unter Umständen als SCSI-Geräte betrachtet (Kernel-Option ide-scsi). Daher kann es sein, dass Sie ein IDE-CD-R-Laufwerk mit /dev/scd0 ansprechen.

Die meisten Distributionen geben in /etc/fstab nicht direkt den Device-Namen an, sondern /dev/cdrom, /dev/dvd oder einen ähnlichen Namen. Dabei handelt es sich nicht unmittelbar um das Device, sondern um einen Link darauf. (Führen Siels -l /dev/cd* aus.)

mount-Optionen

Bei CDs und DVDs werden normalerweise außer ro (read-only) keine mount-Optionen angegeben. Der Treiber erkennt automatisch, wenn das ISO-9660-Dateisystem die Unixtypische Rockridge-Extension oder die Windows-typische Joliet-Erweiterung verwendet. Diese Erweiterungen zum ISO-Standard erlauben es, lange Dateinamen, Zugriffsrechte und andere Informationen auf der CD zu speichern. Ursprünglich war das im ISO-Standard nicht vorgesehen. Die automatische Berücksichtigung der Erweiterungen kann durch norock beziehungsweise nojoliet verhindert werden, was aber selten sinnvoll ist.

Bei Linux-CDs und -DVDs (Rockridge-Extension) können die Optionen uid und gid verwendet werden, um damit für alle Dateien den Benutzer und die Gruppenzugehörigkeit einzustellen.

Bei Windows-CDs und -DVDs (Joliet-Extension) können die Optionen iocharset und utf8 wie bei VFAT-Dateisystemen verwendet werden.

CD-ROM wechseln

Bevor Sie eine CD wechseln können, müssen Sie das Kommando umount ausführen und die CD so quasi abmelden. Dabei wird überprüft, ob Linux noch irgendwelche Daten von der CD benötigt. Wenn das der Fall ist, meldet umount device is busy. Das ist beispielsweise der Fall, wenn in irgendeiner Konsole das aktuelle Verzeichnis auf das CD-ROM-Laufwerk verweist. Führen Sie cd aus.

Nur wenn kein Zugriff auf die CD vorliegt, wird die CD freigegeben. Jetzt wechseln Sie die CD und melden die neue CD ebenso an wie die alte:

root# umount /mnt/cdrom
root# mount /mnt/cdrom

Statt umount können Sie auch eject ausführen. Durch dieses Kommando wird die CD nicht nur aus dem Dateisystem gelöst, sondern auch gleich ausgeworfen. Falls es im Rechner mehrere Datenträger gibt, die ausgeworfen werden können (CDs, DVDs, Magnetbänder), werden diese Möglichkeiten der Reihe nach getestet. Der erste gefundene Datenträger wird ausgeworfen. Optional kann der gewünschte Datenträger durch den Device-Namen oder Mount-Punkt angegeben werden.

Wenn umount den Fehler device is busy liefert, bedeutet das, dass ein anderes Programm noch Daten der CD-ROM nutzt. Das ist unter anderem auch dann der Fall, wenn in irgendeiner Shell ein Verzeichnis der CD-ROM geöffnet ist. Führen Sie dort cd aus, um in das Heimatverzeichnis zu wechseln. Bei der Suche nach dem Prozess, der die umount-Probleme verursacht, kann fuser helfen. Führen Sie fuser -m /cdromaus.

Eine weitere mögliche Fehlerursache ist NFS: Wenn das CD-ROM-Laufwerk via NFS auf einem anderen Rechner genutzt wurde, ist ein umount oft selbst dann unmöglich, wenn dieser Rechner das CD-ROM-Laufwerk längst wieder freigegeben hat. In solchen Fällen muss der NFS-Server und (in seltenen Fällen) sogar der Rechner neu gestartet werden.

Manche Distributionen versuchen, die Unbequemlichkeit im Umgang mit CDs und DVDs durch diverse Zusatzprogramme zu minimieren. Deswegen kann es sein, dass je nach Distribution beim Einlegen einer CD unter KDE und Gnome automatisch ein Dateimanager erscheint oder ein anderes Programm gestartet wird. Es scheint aber noch keine Distribution zu geben, bei der dies wirklich zufrieden stellend und ohne lästige Nebenwirkungen funktioniert.

Photo-CDs, Audio-CDs, CD-RWs, DVDs

Photo-CDs: Photo-CDs entsprechen im Wesentlichen normalen Daten-CDs. Die einzige Besonderheit besteht im eigenen Dateiformat für die Fotos, die in mehreren Auflösungen gespeichert werden. Zum Lesen von Photo-CDs können Sie beispielsweise das Programm xpcd verwenden.

Audio-CDs: Audio-CDs werden ganz anders als Daten-CDs behandelt. Sie werden nicht mit mount in das Dateisystem eingebunden, sondern mit speziellen Programmen direkt ausgelesen. Wenn Sie Audio-CDs abspielen möchten, stehen dazu gleich eine ganze Menge Programme zur Auswahl - etwa kscd oder gtcd. Auch das digitale Auslesen von Audio-Tracks (etwa zur späteren Umwandlung in Ogg-Vorbis-Dateien) ist möglich.

CD-R, CD-RW: Mit einem CD-R(W)-Laufwerk können Sie selbst Daten- und Audio-CDs erzeugen. Dazu steht unter Linux eine ganze Palette von Programmen zur Verfügung.

Daten-DVDs: Die meisten Daten-DVDs können wie Daten-CDs angesprochen werden, sofern als Dateisystem das ISO-9660-Format verwendet wird. Bei manchen DVDs kommt das neuere Universal Disk Format (UDF) zum Einsatz. Das gilt auch für manche CDs, die in einem CD-RW-Laufwerk beschrieben wurden (packet writing). Je nach Konfiguration in fstab muss bei mount unter Umständen explizit -t udf angegeben werden, damit Linux nicht das ISO-9660-Format verwendet.

Video-DVDs: Video-DVDs verwenden in der Regel UDF. Zum Abspielen solcher DVDs benötigen Sie spezielle Programme, zum Beispiel mplayer oder xine.

DVD-R, DVD-RW: Mit einem CD-R(W)-Laufwerk können Sie selbst Daten- und Audio-CDs erzeugen. Dazu steht unter Linux eine ganze Palette von Programmen zur Verfügung.

Disketten

Der Umgang mit Disketten ähnelt dem Umgang mit CDs/DVDs. Auch Disketten müssen mit mount in das Dateisystem eingebunden werden. Des Weiteren müssen Sie unbedingt daran denken, dass Sie umount ausführen, bevor Sie eine Diskette wieder aus dem Laufwerk nehmen - die Folge könnte sonst ein Datenverlust sein!

Es gibt aber auch Unterschiede im Vergleich zu CD-ROMs:

Die Zeile für Disketten in /etc/fstab sieht üblicherweise etwa so aus:

# /etc/fstab: Disketten
/dev/fd0 /mnt/floppy auto noauto,user,sync 0 0

/dev/fd0 ist das Default-Disketten-Device. Auf manchen sicherheitsbewussten Systemen dürfen nur root und Anwender, die der Gruppe disk angehören, auf diese Devices zugreifen. Wenn Sie auch normalen Anwendern den Zugriff ermöglichen wollen, müssen Sie diese Anwender in die disk-Gruppe aufnehmen und die Zugriffsbits ändern.

Wenn Sie eine Diskette formatieren möchten, steht dazu das Kommando fdformat zur Verfügung. Damit wird allerdings nur eine Lowlevel-Formatierung durchgeführt. Um anschließend ein Dateisystem einzurichten, müssen Sie mformat oder fdformat (DOS/Windows) beziehungsweise mke2fs (ext2) ausführen.

USB-, Firewire- und PCMCIA-Laufwerke, USB-Memory-Sticks

Das gemeinsame Merkmal aller in der Überschrift genannten Datenträger besteht darin, dass sie im laufenden Betrieb mit dem Computer verbunden und auch wieder gelöst werden. Intern werden die Laufwerke zumeist wie SCSI-Laufwerke behandelt; einzig einer der bislang getesteten PCMCIA-Flash-Adapter machte sich als neues IDE-Laufwerk bemerkbar.

Die meisten Distributionen laden automatisch die erforderlichen USB-, Firewire- und SCSI-Kernel-Module, um mit dem Laufwerk zu kommunizieren. Manche Distributionen versuchen darüber hinaus, auch einen fstab-Eintrag für das Laufwerk zu erzeugen und das Laufwerk gleich in das Dateisystem einzubinden. Im Idealfall erscheint unter KDE oder Gnome ein entsprechendes Icon oder ein Dateimanager mit dem Inhaltsverzeichnis des Datenträgers. Allerdings können gewöhnliche Benutzer zumeist nur Daten lesen; lediglich root darf die Daten auch verändern.

Nach dem Einstecken müssen Sie feststellen, welchen internen Device-Namen das Gerät bekommen hat. Wenn es sich um das einzige externe oder SCSI-Gerät handelt, lautet der Name immer /dev/sda. Die Daten befinden sich zumeist auf der ersten Partition des Datenträgers mit dem Namen /dev/sda1. Falls es mehrere externe Geräte gibt, wird aus sda entsprechend sdb, sdc et cetera.

Überblick mit fdisk verschaffen

Einen Überblick über alle Datenträger (inklusive Festplatten, aber ohne CD- und DVD-Laufwerke) gibt das Kommando fdisk -l. Beim folgenden Beispiel ist /dev/hda die eingebaute Festplatte mit diversen Linux- und Windows-Partitionen, und /dev/sda ist eine externe USB-Festplatte:

root# fdisk -l
Disk /dev/sda: 203.9 GB, 203927060480 bytes
255 heads, 63 sectors/track, 24792 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 15298 122881153+ 7 FAT32

Disk /dev/hda: 123.5 GB, 123522416640 bytes
255 heads, 63 sectors/track, 15017 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hda1 * 1 99 795186 6 FAT16
/dev/hda2 100 15016 119820802+ f Win95 Ext
/dev/hda5 100 112 104391 83 Linux
/dev/hda6 113 635 4200966 83 Linux
/dev/hda7 636 1158 4200966 83 Linux
/dev/hda8 1159 1668 4096543+ 83 Linux
/dev/hda9 1669 2178 4096543+ 7 HPFS/NTFS
/dev/hda10 2179 2276 787153+ 82 Linux swap

USB-Memory-Sticks können auch wie eine so genannte Superfloppy formatiert sein. Das bedeutet, dass es keine Partitionierungstabelle gibt. In diesem Fall wird das gesamte Laufwerk über den Device-Namen /dev/sda angesprochen, anstatt wie sonst üblich mit /dev/sda1 die Nummer einer bestimmten Partition anzugeben.

Externe CD- oder DVD-Laufwerke bekommen den Device-Namen /dev/scd0, /dev/ scd1 et cetera. Externe CD- und DVD-Brenner werden dagegen oft auch unter dem Namen /dev/sr0, /dev/sr1 et cetera angesprochen.

Wenn Sie die Device-Nummer wissen, ist alles Weitere einfach: Sie erstellen ein neues Verzeichnis und führen das folgende mount-Kommando aus:

root# mkdir /usb-festplatte
root# mount /dev/sda1 /usb-festplatte

Der Dateisystemtyp auf externen Datenträgern ist beliebig. In der Praxis kommt bei externen Festplatten und USB-Memory-Sticks aber am häufigsten VFAT zum Einsatz. Das gilt auch für Speicherkarten für diverse elektronische Geräte (PDAs, Digitalkameras), die mittels eines USB- oder PCMCIA-Adapters genutzt werden. Selbstverständlich können Sie den Datenträger unter Linux mit einem beliebigen Dateisystem neu formatieren oder die Partitionierung des Datenträgers etwa mit fdisk verändern.

Wenn Sie alle Daten gelesen oder geschrieben haben, führen Sie wie üblich umount aus. Entfernen Sie auf keinen Fall die USB- oder Firewire-Verkabelung, bevor Sie umount ausführen - Sie riskieren Datenverluste!

root# umount /usb-festplatte

Einbinden mit fstab

Ein grundsätzliches Problem besteht darin, dass nur root das Kommando mount ausführen darf. Die übliche Lösung besteht darin, einfach in fstab eine entsprechende Zeile mit der Option user einzufügen. Für einen USB-Memory-Stick mit VFAT-Dateisystem könnte diese Zeile so aussehen:

# /etc/fstab: USB-Stick
/dev/sda1 /usbstick vfat user,umask=0,noauto 0 0

Damit kann jeder Benutzer den USB-Stick Dateisystem mit mount /usbstick in das Dateisystem einbinden und die enthaltenen Daten lesen und verändern. Die Vorgehensweise hat allerdings zwei gravierende Nachteile:

Red Hat und Fedora löst das Zuordnungsproblem zwischen externen Geräten und Device-Namen durch das Programm devlabel. SuSE setzt stattdessen auf das Programm resmgrd .

Eine weitere SuSE-Besonderheit ist die sync-Option, die SuSE per Default für USB-Sticks vorsieht. Sie bewirkt, dass Änderungen sofort durchgeführt und nicht zwischengespeichert werden. Das ist zwar sicherer, bei manchen USB-Sticks aber extrem langsam.

Virtuelle Dateisysteme (proc, usbdevfs, devpts, shmfs)

Linux kennt eine Reihe virtueller Dateisysteme. Dabei handelt es sich um Linux-interne Verwaltungsinformationen, die wie Dateisysteme angesprochen werden. Tatsächlich existieren diese Dateien aber nicht auf irgendeiner Festplatte, sondern werden vom Kernel zur Verfügung gestellt. Linux und die unter Linux laufenden Programme sind auf diese Dateisysteme angewiesen. Details zu diesen Dateisystemen finden Sie im ersten Teil unserer Serie.

Zurzeit sind vier derartige Dateisysteme häufig im Einsatz:

Es ist von der Distribution abhängig, ob diese Dateisysteme direkt im Rahmen des Init-V-Prozesses eingebunden werden oder ob dazu fstab ausgewertet wird. Aus diesem Grund fehlen in fstab je nach Distribution einige der folgenden Zeilen:

# /etc/fstab: virtuelle Dateisysteme zur internen Verwaltung
none /dev/pts devpts mode=0620,gid=5 0 0
none /proc proc defaults 0 0
none /proc/bus/usb usbdevfs noauto 0 0
none /dev/shm tmpfs defaults 0 0

Bei manchen Distributionen wird statt none der Name des Dateisystems angegeben. Diese Information wird in jedem Fall ignoriert, weil es für diese Dateisysteme keinen Device-Namen gibt. Informationen darüber, wie die virtuellen Verzeichnisse tatsächlich in den Verzeichnisbaum integriert sind, erhalten Sie mit cat /etc/mtab.

Swap-Partitionen und -Dateien

Das Einrichten einer Swap-Partition erfolgt normalerweise im Rahmen der Installation. Die dazugehörenden Zeilen in /etc/fstab sehen wie folgt aus:

# /etc/fstab: Swap-Partitionen
/dev/hda9 swap swap pri=1 0 0
/dev/hdc7 swap swap pri=1 0 0

Die Option pri bewirkt, dass die beiden Partitionen von Linux gleichwertig behandelt werden. Das sorgt für eine Geschwindigkeitssteigerung wie beim Striping oder RAID-0, sofern sich die Partitionen auf zwei voneinander unabhängigen Festplatten befinden.

Ob und wie viel Swap-Speicher zur Verfügung steht und tatsächlich verwendet wird, kann mit dem Kommando free überprüft werden. Im Beispiel unten stehen 768 MByte Swap-Speicher zur Verfügung, von denen aber momentan nur 7 MByte genutzt sind. Vom verfügbaren RAM (502 MByte) werden 214 MByte verwendet, der Rest wird als Puffer und Cache für Dateien genutzt.

root# free -m
total used free shared buffers cached
Mem: 502 428 73 0 96 117
-/+ buffers/cache: 214 288
Swap: 768 7 761

Wie viel Swap-Speicher ist sinnvoll? Die gängige Empfehlung lautet: etwa das Zweifache des RAMs. Wenn Sie also 512 MByte RAM besitzen, sollten Sie etwa 1 GByte Swap vorsehen. Wie die obigen Zahlen zeigen, erfüllt das Demosystem nicht ganz diese Richtlinie und reserviert etwas weniger Festplattenplatz als Swap-Speicher.

Swap-Partition einrichten

Falls sich die Swap-Partition als zu klein herausstellt oder Sie aus anderen Gründen eine weitere Swap-Partition benötigen, richten Sie mit dem Programm fdisk eine neue Partition ein. Mit dem fdisk-Kommando T muss der Partitionstyp von 83 (Linux) auf 82 (Linux swap) gestellt werden. Nachdem die Partition mit mkswap formatiert wurde, kann sie mit swapon aktiviert werden. Wenn das klappt, sollte ein entsprechender Eintrag in /etc/fstab durchgeführt werden.

Beachten Sie, dass aus Geschwindigkeitsgründen nur eine Swap-Partition pro Festplatte eingerichtet werden sollte. Idealerweise sollte sich die Swap-Partition auf einer sonst nicht oder wenig genutzten Festplatte befinden.

Swap-Datei einrichten

Das Einrichten einer Swap-Datei ist eine Notlösung. Der Zugriff auf eine Swap-Datei ist erheblich langsamer als der Zugriff auf eine eigene Swap-Partition. Der einzige Vorteil besteht darin, dass keine eigene Partition erforderlich ist.

Swap-Dateien werden üblicherweise im Verzeichnis /dev angelegt. Der erste Schritt besteht darin, mit dem Kommando dd eine leere Datei mit einer vorgegebenen Größe zu erzeugen. Dabei wird als Datenquelle /dev/zero verwendet. Aus diesem Device können beliebig viele Null-Bytes gelesen werden. Die Größenangabe erfolgt in Blöcken, wobei die Blockgröße auf 1024 Bytes eingestellt wird. Anschließend wird die Swap-Datei wie eine Swap-Partition mit mkswap formatiert und mit swapon aktiviert. Das folgende Beispiel erzeugt eine recht kleine Swap-Datei von knapp 1 MByte:

root# dd bs=1024 if=/dev/zero of=/dev/swapfile count=1000
1000+0 records in
1000+0 records out
root# mkswap /dev/swapfile 1000
Setting up swapspace, size = 1019904 bytes
root# sync
root# swapon -v /dev/swapfile
swapon on device /dev/swapfile

Swap-Dateien können wie Swap-Partitionen in fstab aufgenommen werden:

# Erweiterung zu /etc/fstab
# Swap-Datei einbinden
/dev/swapfile none swap sw 0 0

Ausblick

Nachdem wir in diesem Teil die wichtigsten mount-Optionen für spezielle Speichertypen vorgestellt haben, geht es in Teil 4 um die Details der Dateisystemtypen ext3 und reiserfs. Speziell wird dabei das Journaling behandelt.

Diese Artikelserie basiert auf dem Kapitel 25 des Standardwerks "Linux - Installation, Konfiguration Anwendung" von Michael Kofler aus dem Verlag Addison-Wesley. Sie können dieses über 1200 Seiten starke Buch auch in unserem Buchshop versandkostenfrei bestellen oder als eBook herunterladen. (ala)

Serie: Administration des Linux-Dateisystems

Teil 1

Dateisystemtypen

Teil 2

mount und fstab

Teil 3

CD-ROMs, Disketten, externe Massenspeicher

Teil 4

ext3 und reiserfs

Teil 5

Partitionierung der Festplatte

Teil 6

RAID mit Linux

Teil 7

LVM, Logical Volume Manager

Teil 8

DMA mit IDE-Festplatten