Dateisystem



Legen fest wie Informationen auf Datenträgern organisiert sind.
FIXME


Linux


  • ext2, ext3, ext4 → extended filesysteme
  • reiserfs
  • xfs → kann im laufenden Betrieb verändert werden
  • jfs → von IBM




BSD


FIXME


DOS Windows u. andere


  • vfat fat fat32
  • ntfs → new technology file system
  • hpfs → win IBM
  • hfs → Os




CD, DVD


  • iso9660 → win joliet, lux Rockridge
  • udf




Netzwerk


  • nfs
  • smbfs (cifs)
  • coda
  • ncpfs




Virtuelle Filesysteme


  • devpts
  • proc
  • usbdefs






Verzeichnisse und deren Bedeutung laut FHS (File Hirarchie-Standard).

  • / ⇒ Wurzelverzeichnis ist Beginn der Hierarchie.
  • /bin ⇒ wichtige Programme, die für jeden Nutzer erreichbar sein sollen, darf keine Unterverzeichnisse enthalten.
  • /boot ⇒ zum Start des Systems unbedingt notwendige Dateien z.B. statischer Teil des Kernels, initiale Ramdisk, memtest86.bin.
    • /boot/grub ⇒ grub Bootloaderdateien z.B. menu.lst, grub stage1 + 2.
    • /boot/grub/splashimages ⇒ Hintergrundbilder für Grub.
  • /dev ⇒ Abbildung von Gerätedateien, Hot Plug Systeme über die Hardware angesprochen wird.
  • /etc ⇒ Konfigurationsdateien für Programme bzw. Systemeinstellungen.
    • /etc/opt ⇒ Konfiguratiionsdateien für Programme in /opt.
    • /etc/X11 ⇒ Konfigurationsdateien für XServer.
    • /etc/network ⇒ Konfigurationsdateien des Netzwerks.
    • /etc/init.d ⇒ Start und Stopscripte für Dienste.
  • /home ⇒ enthält Nutzerverzeichnisse für alle User außer root.
  • /lib ⇒ wichtigste Funktionsbibliotheken des Systems.
    • /lib/modules ⇒ Kernelmodule.
    • /lib/udev ⇒ Bibliotheken und Programme für udev.
    • /lib/linux-restricted-modules ⇒ für eingeschränkte Treiber.
  • /lost+found ⇒ Dateien, die beim Versuch ein Defektes System zu reparieren übriggeblieben sind.
  • /media ⇒ Einhängepunkte für transportable Medien. z.B.
    • /media/floppy ⇒ Disketten.
    • /media/cdrom0 ⇒ CD-Laufwerk.
  • /mnt ⇒ wird für Temporär eingebundene Partitionen verwendet.
  • /proc ⇒ bildet alle aktuell laufenden Kernel Prozesse ab. Virtuelles Dateisystem.
  • /root ⇒ Heimat - Verzeichnis des Superusers.
  • /sbin ⇒ ausführbare Programme und Aufgaben der Systemverwaltung für Super User (Systemprogramme).
  • /tmp ⇒ Nimmt Temporäre Dateien auf (lese und schreibrechte für alle user).
  • /usr ⇒ enthält installierte Programme, Systemtools und Bibliotheken (sekundäre Hirarchie).
    • /usr/bin ⇒ Programme, Desktopumgebungen.
    • /usr/include ⇒ Header Dateien für C Programme.
    • /usr/lib ⇒ Bibliotheken.
    • /usr/local ⇒ gleiche Struktur wie /usr, für Programme die nicht von Paketverwaltung erfasst werden sollen und selbstentwickelte Programme und Scripte.
    • /usr/sbin ⇒ nicht unbedingt benötigte Systemprogramme.
    • /usr/share ⇒ für statische sich nicht ändernde Dateien.
    • /usr/share/man ⇒ Manpages.
  • /var ⇒ Dateien, deren Inhalt sich häufig verändert (z.B. logdateien).
    • /var/log ⇒ Logdateien der Systemprogramme.
    • /var/games ⇒ Spielstände.
    • /var/spool ⇒ Druckaufträge, nicht abgeholte mails.
  • /opt ⇒ optionale Software mit eigenen Bibliotheken, die nicht zur Distribution gehören.
  • /srv ⇒ noch nicht genau spezifiziert. Bei SuSE Verzeichnis von www. Enthält Dateien von Diensten wie www oder fdp.
  • /sys ⇒ vom FHS noch nicht spezifiziert. Besteht im meist aus Kernelschnittstellen. Wie /proc ein Virtuelles Dateisystem.



Zusätzlich definierte Pfade:

  • /dev/null ⇒ auf diesem Gerät ausgegebene Dateien werden verworfen.
  • /dev/zero ⇒ hier werden beliebig viele null Bits generiert.
  • /dev/tty ⇒ repräsentiert das Gerät auf dem der Prozess läuft.






In dieser Partition werden die Homeverzeichnisse der Benutzer gespeichert. Sie tragen die Namen der jeweiligen Benutzer. Im Benutzerverzeichnis werden weitere Verzeichnisse wie „~/Arbeisfläche“, „~/Schreibtisch“ oder in älteren Systemen „~/Desktop“, „~/Bilder“, „~/Videos“ usw. angelegt. FIXME

Zum Wechsel ins Homeverzeichnis kann man (~) (Tilde) als Abkürzung verwenden.

  • ~/Downloads ⇒ wechselt in das Downloadverzeichnis des angemeldeten Benutzers
  • ~ulli/Downloads ⇒ wechselt ins Downloadverzeichnis des Benutzers ulli.



Über die Konfigurationsdatei „~/.config/user-dirs.dirs“ werden die Standardeinstellungen der Verzeichnisse für Benutzer festgelegt.

ulli@home:~$ cat ~/.config/user-dirs.dirs
# This file is written by xdg-user-dirs-update
# If you want to change or add directories, just edit the line you're
# interested in. All local changes will be retained on the next run
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
# absolute path. No other format is supported.
# 
XDG_DESKTOP_DIR="$HOME/Desktop"
XDG_DOWNLOAD_DIR="$HOME/Downloads"
XDG_TEMPLATES_DIR="$HOME/Vorlagen"
XDG_PUBLICSHARE_DIR="$HOME/Öffentlich"
XDG_DOCUMENTS_DIR="$HOME/Dokumente"
XDG_MUSIC_DIR="$HOME/Musik"
XDG_PICTURES_DIR="$HOME/Bilder"
XDG_VIDEOS_DIR="$HOME/Videos"



Die Programme legen Einstellungen und Informationen im Homeverzeichnis des Benutzers ab. So hat jeder Benutzer seine Programmeinstellungen gespeichert, ohne die Einstellungen anderer Benutzer zu ändern.



Beim starten von Anwendungen und Scripte die im Homeverzeichnis abgelegt sind, muß der Pfad angegeben werden, da das Verzeichnis nicht in der $PATH Umgebungsvariable geführt ist.



/home verschieben


Mit „usermod“ kann man z.B. den Ort und Namen des Homeverzeichnisses ändern.

# Nutzernamen ändern
sudo usermod -l <benutzername neu> -d </home/benutzername neu> -m <benutzername alt>
# Nutzernamen ändern von ulli zu nadine und Homeverzeichnis verschieben
sudo usermod -l nadine -d /home/nadine -m ulli



Optionen:

  • -l ⇒ neuer Benutzerlogin
  • -d ⇒ neues Homeverzeichnis (lässt man diesen Parameter weg bleibt das alte Homeverzeichnis erhalten.)
  • -m ⇒ enthaltene Dateien werden ins neue Homeverzeichnis verschoben.
  • -a ⇒ weist dem Benutzer Gruppen zu (nur mit der Option -g benutzen.)
  • -g ⇒ Benutzer der Logingruppe zuweisen. (die Gruppe muß vorhanden sein.)
  • -f ⇒ hier können die Tage angegeben werden, an dem der Account gelöscht wird. (0 deaktiviert den Account sofort.)



usermod kann nicht bei angemeldeten Benutzern durchführt werden.






FIXME

  • virtuelles Dateisystem
    • spiegelt System zur Laufzeit wieder
    • Kernelinformation werden in hierarchischer Struktur angeordnet
      • Infos über jeden laufenden Prozess
      • Hardwareeinstellungen (IO-Ports,Basisadr….)
      • Netzwerkinfos
      • offene Dateien, Dateisperren



Beispiel:

procinfo -fn2

prozessinformationen mit aktualisierungsintervall von 2 sec.




FIXME




Alle Linux Dateisysteme besitzen „UUIDs“ zur Identifikation der Devices und sind eindeutig. In der Datei „/etc/fstab“ werden Dateisysteme gelistet und können über „UUIDs“ angesprochen werden. FIXME


UUIDs anzeigen


blkid


UUIDs von Devices können mit „blkid“ ausgelesen werden. Die Zuordnung der UUIDs zu den Gerätedateien wird durch Softlinks aus der Datei „/dev/disk/by-uuid“ hergestellt.


Syntax:

  • blkid [option] [device]



Beispiel:

root@home:~# blkid
/dev/sda1: UUID="E6589071400149FF" TYPE="ntfs" 
/dev/sda3: UUID="c2478a7d-56c6-78d2-a2d1-8654kc28be5a" TYPE="ext3" 
/dev/sda4: UUID="ggtr59e5-f578-66d0-e85c-08089jk70778" TYPE="ext3" 
/dev/sda5: UUID="45ef7f54-bcff-56b8-9dc2-1d7a2u7f3a5b" TYPE="swap" 
/dev/sda6: UUID="j78cd88d-1a4c-48ca-a984-cjj87tr9c7ed" TYPE="ext3" 
/dev/sda7: UUID="4r4t6j64-20cb-4981-aff0-8888t4a915c5" TYPE="ext3" 
/dev/sda8: UUID="666h75e6-sd57-sd5j-brr7-zz68dff44ae0" TYPE="ext3" 
/dev/sda9: UUID="35sfc730-dga4-46a5-add3-f6857f36b818" TYPE="ext3" 
/dev/sda10: UUID="sf3f910-3545-43500-bbe1-c7714c67777" TYPE="ext3" 



Optionen:

  • blkid ⇒ UUIDs aller vorhandenen Dateisysteme.
  • -g ⇒ Cache leeren und UUIDs neu einlesen.
  • /dev/sda3 ⇒ liefert uuid von sda3.
  • -h ⇒ Kurzreferenz gebräuchlicher Parameter.
  • -t ⇒ Filtert nach Kriterium. Die Attribute „LABEL, UUID, SEC_TYPE, TYPE“ können eingesetzt werden. Dabei werden nur Informationen über Datenträger ausgegeben auf die das Kriterium 100% zutrifft.
  • -l ⇒ Auf Kriterium passender Treffer wird ausgegeben. Nur zusammen mit (-t).
  • -L ⇒ gibt device zu einem Label aus.
  • -o [wert] ⇒ Formatierte Ausgabe (werte: value, list, device, full, udev).



Beispiel:

root@home:~#blkid -t TYPE=ntfs

Nur ntfs formatierte Geräte anzeigen.


root@home:~#blkid -o list

Formatierte Ausgabe.


root@home:~# ls -Al /dev/disk/by-uuid
insgesamt 0
lrwxrwxrwx 1 root root 10  1. Feb 23:55 666h75e6-sd57-sd5j-brr7-zz68dff44ae0 -> ../../sda8
lrwxrwxrwx 1 root root 11  1. Feb 23:55 sf3f910-3545-43500-bbe1-c7714c67777 -> ../../sda10
lrwxrwxrwx 1 root root 10  1. Feb 23:55 4r4t6j64-20cb-4981-aff0-8888t4a915c5 -> ../../sda7
lrwxrwxrwx 1 root root 10  1. Feb 23:54 45ef7f54-bcff-56b8-9dc2-1d7a2u7f3a5b -> ../../sda5
lrwxrwxrwx 1 root root 10  1. Feb 23:55 j78cd88d-1a4c-48ca-a984-cjj87tr9c7ed -> ../../sda6
lrwxrwxrwx 1 root root 10  1. Feb 23:55 c2478a7d-56c6-78d2-a2d1-8654kc28be5a -> ../../sda3
lrwxrwxrwx 1 root root 10  1. Feb 23:55 35sfc730-dga4-46a5-add3-f6857f36b818 -> ../../sda9
lrwxrwxrwx 1 root root 10  1. Feb 23:54 E6589071400149FF -> ../../sda1
lrwxrwxrwx 1 root root 10  1. Feb 23:55 ggtr59e5-f578-66d0-e85c-08089jk70778 -> ../../sda4

Hier werden UUIDs mit dem Kommando „ls“ ausgelesen.



UUIDs ändern


ext2 / ext3


Bei „ext2“, „ext3“ Dateisystemen lässt sich die UUID mit tune2fs ändern. FIXME


Syntax:

  • tune2fs [UUID][Optionen][device]



Optionen:

  • random ⇒ erzeugt zufällige UUID.
  • time ⇒ setzt aus aktuellen Timestamp neue UUID.
  • clear ⇒ setzt UUID auf 00000000-0000-0000-0000-000000000000.





reiserfs


Um mit „reiserfs“ Dateisystemen eine UUID zu ändern kann „reiserfstune“ verwendet werden.

root@home:~#reiserfstune -u UUID /dev/<device>

Oder zufällig erzeugen mit …

root@home:~#reiserfstune -u $(uuidgen) /dev/<device>





swap


UUID in „swap“ Partition setzen.

root@home:~#swapoff -v /dev/<device>
root@home:~#mkswap -U UUID /dev/<device>
root@home:~#swapon -v /dev/<device>





fat / ntfs


Bei Windows Dateisystemen wird keine UUID, sondern eine Seriennummer verwendet. Mit disk dump kann man die Seriennummer temporär speichern, bearbeiten und zurückschreiben.


devicefat16fat32ntfs
skip,seek396772
count448


Die Werte für „skip(auslesen)“, „seek(schreiben)“ und „count“ stehen oben in der Tabelle.


Beispiel für ntfs Dateisystem:

root@home:~#dd if=/dev/<device> of=/tmp/ntfsnr bs=1 skip=72 count=8


Nun kann man die Datei ntfsnr mit einem Hexeditor bearbeiten und die Datei zurückschreiben.

root@home:~#dd if=/tmp/ntfsnr of=/dev/<device> bs=1 seek=72 count=8






Jedes Verzeichnis beinhaltet Inode Nummern der in dem Verzeichnis befindlichen Dateinamen. Diese Nummern sind die Verweise auf die Dateien. Jeder im Verzeichnis enthaltenen Inodenummer ist einer Datei zugeordnet. Wird eine Datei verschoben wird nur der Inode Eintrag angepasst.

  • Inodes speichern Verwaltungsdaten einer Datei.
    • Rechte.
    • User,Gruppe.
    • Size.
    • Zeitstempel.
      • Erzeugung.
      • Letzte Änderung.
      • Letzter Zugriff.
    • 12 Zeiger auf Dateblocks.
    • 1 indirekter Zeiger (verweist auf weitere Datenblöcke).
      • 256Zeiger.
    • Doppelt indierekter Verweis.
      • 256 indirekte Verweise.
    • Dreifach indirekter Verweis
      • 256zweifache Verweise
    • Bis zu 16777216 Datenblöcke insgesamt.



Über Bitmaps wird dargestellt, welche Blöcke und Inodes frei sind. In Gruppen werden folgende Inhalte zusammengefaßt:

  • Kopie des Superblocks.
    • Informationen über Blockgröße.
    • Status des Dateisystems.
  • Liste aller Gruppendiskriptoren.
    • Enthalten Infos über Gruppen u. Inode wo sie liegen.
  • Bitmaps für Inodes u. Datenblöcke.


FIXME




Journal protokolliert in einer speziellen Datei alle zur Zeit bearbeiteten Dateioperationen, sie behalten ihren Zustand bis die Änderungen auf dem Datenträger gespeichert sind. Durch das Protokoll kann dann überprüft werden, ob eine Dateioperation vollständig ausgeführt wurde. Dadurch kann eine Transaktion wiederrufen aufgerufen werden und den vorherigen zustand der Datei meist wiederhergestellt werden. Journaling Dateisysteme schließen jedoch einen Datenverlust nicht aus.


Modi:

  • data=ordered ⇒ Standard Journaling, es werden nur Metadaten und keine Inhalte gespeichert. Dateien werden vom Journal erst als korrekt eingestuft, wenn sie Vollständig auf der Festplatte gespeichert sind. Nach einem Systemabsturz werden alle unvollständig gespeicherten Dateien erkannt, es ist jedoch nicht möglich diese wiederherzustellen.
  • data=writeback ⇒ wie data=ordered, Journal wartet nicht auf Abschluß der Speicheraktion. Dieser Modus ist ein wenig schneller als data=ordered, jedoch durch das asynchrone Journaling kann die Datei ältere Daten enthalten.
  • data=journal ⇒ es werden Metadaten und Inhaltsdaten protokolliert. Dadurch müssen Änderungen ins Journal und Datei geschrieben werden. ext3 ist hier etwas langsamer. Es können aber Dateien wiederhergestellt werden, die im Journal eingetragen sind.



Journaling mit mount u. Option -o:

root@home:~#mount -t ext3 -o data=journal /dev/sda9 /public




Journaling in /etc/fstab:

...
# /public was on /dev/sda9 during installation
UUID=e2er5730-f0a4-46a5-af73-fc5rr5w6b818 /public         ext3    data=journal        0       2
...


Der im Kernel integrierte Dämon „kjournald“ aktualisiert regelmäßig die Journaling Datei und startet automatisch wenn z.B. ein „ext3“ Dateisystem mit „mount“ eingehängt wird.




Unter Linux gibt es zwei Arten von Links. Mit dem Kommando „ln“ werden Standardmäßig Hardlinks (feste Links) erstellt. Diese können nur innerhalb einer Partition erstellt und nicht auf Verzeichnisse angewendet werden. Des weitern kann man Softlinks (symbolische Links) erzeugen, sie können auf Verzeichnisse verweisen und Partitionsübergreifend angewendet werden.
FIXME


Links können auch mit dem Befehl cp -l (Hardlink) und cp -s (Softlink) erstellt werden.



Bei einem Hardlink haben die Dateien, die aufeinander Verlinkt sind, die gleiche Inodenummer. Bearbeitet man eine der Dateien verändern sich automatisch die Verlinkten Dateien, da es sich in Wirklichkeit um die gleiche Datei handelt.

Ein Hardlink kann jedoch nicht auf Verzeichnisse angewandt werden.



Syntax:

  • ln [opt] [ziel] [linkname]



Beispiel:

hans@home:~/workspace$ ls -li
insgesamt 12
362657 -rw-r--r-- 2 hans hans   57 11. Okt 22:48 datei1
566869 drwxr-xr-x 2 hans hans 4096 11. Okt 22:53 Dokumente1
566871 drwxr-xr-x 2 hans hans 4096 11. Okt 22:45 Dokumente2


hans@home:~/workspace$ ln datei1 Dokumente1/link1


hans@home:~/workspace$ ls -li Dokumente1
insgesamt 4
362657 -rw-r--r-- 2 hans hans 57 11. Okt 22:48 link1

Die Inodenummer der Datei /workspace/datei1 362657 gleicht der Datei im Verzeichnis Dokumente/link1. Ein Zähler (im Beispiel 2) zeigt wieviele Dateien miteinander Verlinkt sind. Löscht man, oder bearbeitet man nun eine der Dateien, ist der Inhalt gleich. Erst wenn alle Links auf eine Datei gelöscht sind, ist die Datei dann wirklich gelöscht.



Softlinks können Festplattenübergreifend erstellt werden. Sie können auch auf Verzeichnisse verweisen. Mit ls wird bei Symbolischen Links gezeigt, wo sich die Ursprungsdatei befindet, es wird jedoch kein Zähler gezeigt, wieviele Links auf die Ursprungsdatei verweisen. Hier wird nicht der Inode, sondern die Pfadangabe und Dateiname gespeichert. Der Link verwendet die Berechtigungen der Zieldatei und ist immer mit Lese, Schreib und Ausführungsrechte ausgestattet.


Syntax:

  • ln -s [ziel] [linkname]



Beispiele:

hans@home:~/workspace$ ll
insgesamt 12
362361 -rw-r--r-- 1 hans hans    9 11. Okt 23:31 datei1
566869 drwxr-xr-x 2 hans hans 4096 11. Okt 23:31 Dokumente1
566871 drwxr-xr-x 2 hans hans 4096 11. Okt 22:45 Dokumente2


hans@home:~/workspace$ ln -s datei1 Dokumente1/link1


hans@home:~/workspace$ ls -li Dokumente1
insgesamt 0
566872 lrwxrwxrwx 1 hans hans 6 11. Okt 23:38 link1 -> datei1


hans@home:~/workspace$ ln -s Dokumente2 LinktoDoc2


hans@home:~/workspace$ ls -l
insgesamt 8
drwxr-xr-x 2 hans hans 4096 11. Okt 23:38 Dokumente1
drwxr-xr-x 2 hans hans 4096 11. Okt 22:45 Dokumente2
lrwxrwxrwx 1 hans hans   10 11. Okt 23:47 LinktoDoc2 -> Dokumente2



Löscht man bei Softlinks die Ursprungsdatei/Verzeichnis geht die Datei verloren und der Link zeigt ins leere.


Es sollten beim erstellen von Links relative Pfade verwendet werden, da sich Probleme beim Mounten per NFS oder beim verschieben von Verzeichnissen ergeben können.





Tote Links kann man mit dem Befehl find suchen.

hans@home:~$ find -L workspace/ -type l
workspace/LinktoDoc2
workspace/Dokumente1/link1






Mit „md5sum“ kann man Prüfsummen für Dateien erstellen oder überprüfen, dabei wird ein Hashwert generiert der aus einem 32 Zeichen bestehenden Wert aus den Ziffern 0-9 und a-f besteht. Mit diesem Wert lassen sich Dateien auf Veränderungen oder Beschädigung z.B. beim Download überprüfen.


Syntax:

  • md5sum [opt.] [datei] [datei2] [*]




Optionen:

  • -b ⇒ Im Binärmodus lesen.
  • -c [md5sum] ⇒ Prüfsumme aus Datei einlesen und überprüfen.
  • -t ⇒ Im Textmodus einlesen (default).
  • --quiet ⇒ Nicht für jede erfolgreich geprüfte Datei Ok ausgeben.
  • -w ⇒ Bei ungeeignet formatierten Prüfsummenzeilen warnen.
  • --help ⇒ Hilfe anzeigen und Ende.
  • --version ⇒ Versionsinformationen ausgeben.




Beispiel:

hans@home:~$ md5sum datei > MD5SUM



hans@home:~$ ls -l
insgesamt 8
-rw-r--r-- 1 hans hans 59 14. Okt 14:47 datei
-rw-r--r-- 1 hans hans 40 14. Okt 14:48 MD5SUM



hans@home:~$ cat MD5SUM 
1e5321725fbf0477b2dee7594d0603fb  datei


hans@home:~$ md5sum -c MD5SUM 
datei: OK



Verändert man die Datei „datei“ …

hans@home:~$ md5sum -c MD5SUM 
datei: FEHLSCHLAG
md5sum: Warnung: die berechnete Prüfsumme passte NICHT



olga@home:~$ md5sum /dev/sr0

Ermittelt die Prüfsumme einer CD.




Das Ein und Aushängen von Dateisystemen muß von root ausgeführt werden. Verzeichnisse die beim Systemstart automatisch gemountet werden oder auch nicht, sind in der Datei „/etc/fstab“ gekennzeichnet.


mount


Mount erwartet zum einhängen von Dateisysteme Optionen, den Pfad zum Gerät und den Pfad zum Einhängepunkt. Führt man „mount“ ohne Optionen aus, erhält man eine Auflistung momentan eingehängter Dateisysteme.

root@home:~# mount
/dev/hda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
procbususb on /proc/bus/usb type usbfs (rw)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)



Syntax:

  • mount [opt] [args] [/pfad/zum/gerät] [/einhängepunkt]



Optionen:

  • -a ⇒ hängt alle Dateisysteme ein, die in /etc/fstab gelistet sind
  • -r ⇒ hängt Dateisystem Schreibgeschützt ein
  • -w ⇒ hängt Dateisystem im lese/schreib Modus ein
  • -t ⇒ gibt den Dateisystemtyp an
  • -v ⇒ verbose
  • -o ⇒ übergibt Mountoptionen



Beispiele:

mount -t ext3 /dev/hdb2 /public

Hier entspricht „ext3“ dem Dateisystemtyp, „/dev/hdb2“ die Partition, die eingehängt werden soll und „/public“ den Mountpoint.


mount /public

Wenn das Dateisystem bereits in „/etc/fstab“ gelistet ist, reicht die Angabe des Mountpoints.


mount -t iso 9660 /dev/hdc /media/cdrom0

Auf die gleiche weise werden CD Laufwerke, USB Sticks usw. eingehängt.


mount -o remount,rw /public

Mit der Option -o können Mountoptionen übergeben werden. In diesem Beispiel wird „/public“ im lesen und schreiben Modus neu gemountet.



umount


Dateisysteme mit umount aushängen.

umount /dev/hdb2




sync


Sollte das Kommando umount versagen, kann das daran liegen, dass sich noch Dateien im Systempuffer befinden. Mit „sync“ wird der Schreibcache entleert und geänderte Blöcke auf die Festplatte geschrieben.
FIXME



Netzwerkresourcen einhängen


Mit „mount“ können auch entfernte Dateisysteme eingehängt werden.

mount -t nfs <hostname>:/exportierendes Verzeichnis

Eine NFS Verzeichnisfreigabe mounten.

mount -t smbfs -o username=hans,passwort=passwort //hans/daten /mnt/hans

Eine Samba Verzeichnisfreigabe mounten.



/etc/fstab


In der Datei „/etc/fstab“ sind die Dateisysteme gelistet, die automatisch beim Systemstart gemountet werden. Natürlich ist es auch möglich, mit dem Parameter „noauto“ ein automatisches Mounten eines Dateisystems zu verhindern.

Beispiel einer /etc/fstab

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# / was on /dev/sda4 during installation
UUID=f78ff9e5-f233-23d0-9e1c-29c741870778 /               ext3    errors=remount-ro 0       1
# /boot was on /dev/sda3 during installation
UUID=c3498a7d-50c6-48d2-a2d1-178cbc28be5a /boot           ext3    defaults        0       2
# /home was on /dev/sda6 during installation
UUID=b34cd82d-4d4e-46za-a014-cd781239c7ed /home           ext3    defaults        0       2
# /opt was on /dev/sda10 during installation
UUID=422af910-0945-4f00-bbe1-cf66utc64519 /opt            ext3    defaults        0       2
# /public was on /dev/sda9 during installation
UUID=e2er5730-f0a4-46a5-af73-fc5rr5w6b818 /public         ext3    data=journal        0       2
# /usr was on /dev/sda8 during installation
UUID=48i785e6-70de-45ed-b1b7-32d33c344rr0 /usr            ext3    defaults        0       2
# /var was on /dev/sda7 during installation
UUID=4dd47c64-20ab-4c81-agh0-951uu8a915c5 /var            ext3    defaults        0       2
# swap was on /dev/sda5 during installation
UUID=a0ef7f54-bg7f-4zz8-9di2-6666669f3a5b none            swap    sw              0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto     0       0
pluto:/share    /mnt/pluto                                 nfs    defaults        0       0


Die Felder der /etc/fstab haben folgende Bedeutung:

  • 1. Feld ⇒ Einzuhängendes Gerät als Device Name oder UUID. Hier können auch Resourcen eines anderen Systems eingetragen werden.
  • 2. Feld ⇒ Einhängepunkt des Dateisystems.
  • 3. Feld ⇒ Typ des Dateisystems.
  • 4. Feld ⇒ Mountoptionen.
  • 5. Feld ⇒ Sicherungsoptionen für dump. [0] Dateisystem wird nicht gesichert. [1] Daeisystem wird gesichert.
  • 6. Feld ⇒ Zeigt, ob und in welcher Reihenfolge fsck Dateisysteme überprüft.
    • 0 ⇒ Dateisystem wird nicht geprüft.
    • 1 ⇒ Dateisystem wird vorzugsweise geprüft.
    • 2 ⇒ Wird geprüft, nachdem Dateisysteme mit [1] geprüft wurden.



Optionen:

  • auto ⇒ ermöglicht automatisches einhängen mit mount -a.
  • noauto ⇒ verhindert automatisches einhängen mit mount -a.
  • usrquota ⇒ aktiviert die möglichkeit von Quota auf Userebene.
  • grpquota ⇒ aktiviert die möglichkeit von Quota auf Gruppenebene.
  • suid ⇒ ermöglicht Funktion von SUID Bits.
  • nosuid ⇒ verhindert Funktion von SUID Bits.
  • exec ⇒ erlaubt das ausführen von Dateien auf dem Dateisystem.
  • noexec ⇒ verhindert das ausführen von Dateien auf dem Dateisystem.
  • ro ⇒ Dateisystem wird im readonly Modus eingehängt.
  • rw ⇒ Dateisystem wird im read/write Modus eingehängt.
  • user ⇒ erlaubt einem normalen User das Dateisystem einzuhängen (kann nur vom selben user oder root ausgehängt werden).
  • nouser ⇒ verbietet einem normalen User das Dateisystem einzuhängen.
  • users ⇒ erlaubt einem normalen User das Dateisystem einzuhängen (kann von belibigen user ausgehängt werden).
  • defaults ⇒ setzt Standardeinstellungen (Ausnahmen Kommagetrennt angeben).


Nach manueller bearbeitung der /etc/fstab sollte unter der letzten Zeile eine Leerzeile folgen.





/etc/mtab


Wird ein Dateisystem eingehängt, trägt „mount“ das Dateisystem, den Mountpoint und evtl. Optionen in die Datei „/etc/mtab“ ein. Eine Ausnahme sind Dateisysteme die mit der Option -n gemountet wurden.

root@home:~# cat /etc/mtab
/dev/hda1 / ext3 rw,errors=remount-ro 0 0
tmpfs /lib/init/rw tmpfs rw,nosuid,mode=0755 0 0
proc /proc proc rw,noexec,nosuid,nodev 0 0
sysfs /sys sysfs rw,noexec,nosuid,nodev 0 0
procbususb /proc/bus/usb usbfs rw 0 0
udev /dev tmpfs rw,mode=0755 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0
devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=620 0 0



Im „/proc“ Dateisystem werden eingehängte Dateisysteme in jedem Fall gelistet, auch wenn die Option -n übergeben wurde.

cat /proc/mounts






Start der fdisk Partitionsverwaltung.

Syntax:

  • fdisk [opt] <device>



Beispiel:

fdisk -l

Auflistung aller Partitionen.


fdisk /dev/hda

Fdisk starten z.B zum einrichten der ersten Festplatte.


Optionen:

  • a ⇒ toggle a bootable flag
  • b ⇒ edit bsd disklabel
  • c ⇒ toggle the dos compatibility flag
  • d ⇒ delete a partition
  • l ⇒ list known partition types
  • m ⇒ print this menu
  • n ⇒ add a new partition
  • o ⇒ create a new empty DOS partition table
  • p ⇒ print the partition table
  • q ⇒ quit without saving changes
  • s ⇒ create a new empty Sun disklabel
  • t ⇒ change a partition's system id
  • u ⇒ change display/entry units
  • v ⇒ verify the partition table
  • w ⇒ write table to disk and exit
  • x ⇒ extra functionality (experts only)





Dateisystemkennungen


  • 7 ⇒ HPFS/Windows NTFS
  • c ⇒ Windows95 FAT32 LBA
  • f ⇒ Windows95 erweiterte Partition LBA
  • 82 ⇒ Linux Swap
  • 83 ⇒ Linux (alle Dateisysteme ext2, ext3, reiserfs usw.)
  • 85 ⇒ Linux extended
  • 8e ⇒ Linux LVM


Dateisystemkennungen
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 41 PPC PReP Boot 85 Linux extended c7 Syrinx
5 Extended 42 SFS 86 NTFS volume set da Non-FS data
6 FAT16 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility
8 AIX 4f QNX4.x 3rd part 8e Linux LVM df BootIt
9 AIX bootable 50 OnTrack DM 93 Amoeba e1 DOS access
a OS/2 Boot Manag 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 5c Priam Edisk a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 61 SpeedStor a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary
16 Hidden FAT16 64 Novell Netware af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 65 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 70 DiskSecure Mult b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 75 PC/IX bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 80 Old Minix be Solaris boot ff BBT
1e Hidden W95 FAT1




Wenn man die Partitionierung einer Festplatte ändern will, sollte man die aktuelle Belegung genau kennen. Eine Übersicht aller Partitionen der Festplatten kann man im „/proc“ abfragen.




Beispiel:

root@home:~# cat /proc/partitions
major minor  #blocks  name

   3     0   19551168 hda
   3     1   18691596 hda1
   3     2          1 hda2
   3     5     859446 hda5





Dateisysteme einrichten


cfdisk


Das Programm „cfdisk“ ist ein Menügeführtes Intuitiv bedienbares Partitionierungswerkzeug.





fdisk


Zum starten von „fdisk“ muß das zu bearbeitende Device angegeben werden. Mit „fdisk -l“ kann man die aktuelle Partitionierung einsehen.

root@home:~# fdisk /dev/sdb

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): 



Nach dem Start kann man mit der Option [m] eine Übersicht über die Kommandos anzeigen lassen.

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help): 



Durch die Option [n] wird das erstellen einer neuen Partition eingeleitet.

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)


Partition number (1-4): 1
First cylinder (1-19457, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-19457, default 19457): +58000MB

Dies kann man wiederholen, soviel Partitionen erstellt werden sollen.


Command (m for help): p

Disk /dev/sdb: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x129e129d

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        7052    56645158+  83  Linux
/dev/sdb2            7053       13861    54693292+  83  Linux
/dev/sdb3           13862       19457    44949870   83  Linux

Command (m for help): 

Mit der Option [p] kann man dann die erstellten Partitionen überprüfen.


Findet man die Partitionstabelle in Ordnung kann sie mit [w] geschrieben werden.

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Die Partitionierung ist jetzt abgeschlossen, die Dateisysteme können nun Formatiert werden.




mkfs/mke2fs


Zur Formatierung von Dateisysteme können die Befehle „mkfs“ oder „mke2fs“ verwendet werden. Der Befehl mke2fs ist lediglich ein Hardlink auf mkfs.ext2, mkfs.ext3, mkfs.ext4.


Syntax:

  • mkfs [opt] [dateisystem] [device]
  • mkfs.ext2 ⇒ Erstellt ext2 und ext3 Dateisysteme. Für ext3 wird die Option -j (journal) benötigt.
  • mkfs.ext3 ⇒ Formatiert ext3 Dateisystem.
  • mkfs.ext4 ⇒ Formatiert ext4 Dateisystem.
  • mkfs.reiserfs ⇒ Erstellt Linux reiserfs Dateisystem.
  • mkfs.msdos ⇒ Erstellt MSDOS Dateisystem, auf diesem Dateisystem kann man kein Betriebssystem starten.
  • mkfs.vfat ⇒ Ist ein Softlink auf mkfsdosfs.
  • mkfs.ntfs ⇒ Erstellt NTFS Dateisysteme.
  • mkfs.xfs ⇒ Erstellt XFS Dateisysteme.
  • mkfs.cramfs ⇒ Erstellt cramFS Dateisystem. Es handelt sich hier um ein komprimiertes read-only Dateisystem, das für Embedded Systeme verwendet wird.
  • mkfs.jfs ⇒ Erstellt das Dateisystem JFS.



Optionen:

  • -t [type] ⇒ Legt den zu Formatierenden Dateisystemtyp fest.
  • -c ⇒ Prüft das Gerät auf Fehlerhafte Sektoren.
  • -v ⇒ Verbose, Informativere Ausgabe.
  • -j ⇒ Erstellt ein Journal für ext3.
  • -L ⇒ Erstellt Volumelabel.



Beispiele:

root@home:~# mkfs -t ext3 -L pub /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
Dateisystem-Label=pub
OS-Typ: Linux
Blockgröße=4096 (log=2)
Fragmentgröße=4096 (log=2)
Stride=0 Blöcke, Stripebreite=0 Blöcke
3547136 Inodes, 14161289 Blöcke
708064 Blöcke (5.00%) reserviert für den Superuser
Erster Datenblock=0
Maximale Dateisystem-Blöcke=0
433 Blockgruppen
32768 Blöcke pro Gruppe, 32768 Fragmente pro Gruppe
8192 Inodes pro Gruppe
Superblock-Sicherungskopien gespeichert in den Blöcken: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624, 11239424

Schreibe Inode-Tabellen: erledigt                        
Erstelle Journal (32768 Blöcke): erledigt
Schreibe Superblöcke und Dateisystem-Accountinginformationen: erledigt

Das Dateisystem wird automatisch nach jeweils 35 Einhäng-Vorgängen bzw.
alle 180 Tage überprüft, je nachdem, was zuerst eintritt. Dies kann durch
tune2fs -c oder -i geändert werden.

Hier wird das Laufwerk sdb1 mit dem Dateisystem ext3 Formatiert.

root@home:~# mkfs -t ext2 -j /dev/sdb1

Dasselbe funktioniert auch mit der Option ext2 -j.



XFS


Um eine Partition mit dem XFS Dateisystem Formatieren zu wollen, wird ebenfalls der Partitionstyp „Linux 83“ benötigt. XFS kann Journal verwenden, das auch auf einer anderen Partition angelegt werden kann. Für die Wartung des Dateisystems werden die Programme „xfsprogs“ und „xfsdump“ benötigt.

root@home:~# mkfs.xfs /dev/sdb1 -l logdev=/dev/sda1

Hier wird ein xfs Dateisystem auf sdb1 erstellt, das Journaling auf sda1.


XFS Werkzeuge


Tools für „xfs“ Dateisysteme. Zum reparieren der Dateisysteme müssen diese zuvor ausgehängt werden. Das Dateisicherungsprogramm xfsdump sichert auch Dateiattribute.

  • xfs_growfs ⇒ Größe des Dateisystems nachträglich erweitern.
  • xfs_fsr ⇒ Dateisystem reorganisieren.
  • xfs_info ⇒ Informationen über Dateisystem.
  • xfs_metadump ⇒ Speichert Metainfos in eine Datei.
  • xfs_check ⇒ Dateisystem überprüfen. Journaldateien auf einer anderen Partition müssen mit -l /dev/sdx angegeben werden.
  • xfs_repair ⇒ XFS Dateisystem reparieren.
  • xfsdump ⇒ Zum Sichern von xfs Dateisysteme.
  • xfsrestore ⇒ Wiederherstellen eines xfs Dateisystems.

FIXME

Beispiele:

root@home:~# umount /dev/sdb1



root@home:~# xfs_repair /dev/sdb1



root@home:~# xfsdump -v trace -f /backups/xfs-save1 /xfs-device

Das xfs-device wird mit allen Dateiattributen nach /backups/xfs-save1 gesichert.

root@home:~# xfsrestore -f /backups/xfs-save1 /xfs-device

Dateisystem wird wiederhergestellt.




Ein ext2 in ein ext3 Dateisystem konvertieren.

tune2fs -j /dev/hda2

Bei ext3 Dateisystemen handelt es sich eigentlich um ext2 mit Journaling.

Bei der Formatierung können folgende Kommandos angewand werden:

mkfs -t ext3 /dev/hda2
oder
mkfs -t ext2 -j /dev/hda2






Unter „swap“ versteht man einen Virtuellen Speicher, der es ermöglicht, Ram Inhalte zwischenzuspeichern. Es können swap Dateien und swap Partitionen verwendet werden.


Einrichten einer swap Partition


Um eine swap Partition zu Formatieren benötigt man das Programm „mkswap“. Eine Partition vom Typ82 muß vorher mit fdisk erstellt werden.

mkswap <dev/hd?>

Swap Partition erstellen.

swapon -v <gerät>

Swap aktivieren. Einige Optionen für swapon …

  • -s ⇒ Zeigt verwendete swap Dateisysteme an.
  • -U ⇒ Aktiviert swap Dateisystem über die UUID.
  • -L ⇒ Aktiviert swap Dateisystem über ein Disk-Label.
  • -a ⇒ Aktiviert alle swap Dateisysteme, die in der /etc/fstab stehen.



swapoff -v <gerät>

Swap beenden.

Ohne die Option -v erhält man keine Bestätigung, ob die neue swap Partition verwendet wird. Dass die neue „swap“ Partition nach dem Systemstart verfügbar ist muss sie in die Datei „/etc/fstab“ eingetragen werden.



/dev/hdb2    swap    swap    pri=42    0 0





Swap Speicher als Datei


Datei gewünschter Größe erzeugen.

dd if=/dev/zero of=~/swap_file bs=1024 count 524288

Hier werden nullen in die Datei swap_file kopiert. Die Blockgröße ist 1024 Bytes. Das wiederholt sich 524288 mal und es entsteht eine Datei, die aus 512 MB nullen besteht.


mkswap ~/swap_file

Datei für swap formatieren.


swapon ~/swap_file

Swap für Datei starten.


Damit die swap File Datei gleich nach dem Systemstart verfügbar wird muß die Datei „/etc/fstab“ bearbeitet werden.

/swap_file    swap    swap    defaults    0 0



Mit dem Kommando cat /proc/swaps oder free kann man überprüfen ob der swap File aktiv ist.






Programme zum Prüfen der Integrität von Dateisystemen. Siehe auch System, Verzeichnis und Prozessinformationen.

Die zu prüfenden Dateisysteme sollten während der Prüfung nicht eingehängt sein.




fsck, e2fsck


Mit dem Programm „fsck“ können Dateisysteme überprüft werden. Es ruft zur Laufzeit andere Programme auf, die auf die Dateisysteme spezialisiert sind. Zur Überprüfung von ext2, ext3 Dateisysteme steht zusätzlich das Programm „e2fsck“ zur Verfügung. Es ist aber lediglich ein Hardlink auf die Programme fsck.ext2 und fsck.ext3. Zur Dateisystemprüfung können auch Live Systeme, wie z.B. grml verwendet werden.

Die Backends für die Dateisystemprüfung können auch direkt aufgerufen werden.

  • fsck.ext2 ⇒ prüft ext2 und ext3 Dateisysteme
  • fsck.ext3 ⇒ ist ein Hardlink zu fsck.ext2 und e2fsck
  • fsck.reiserfs ⇒ prüft reiserfs Dateisysteme
  • fsck.mimix ⇒ prüft minix Dateisysteme
  • fsck.cramfs ⇒ prüft cramfs Dateisysteme
  • fsck.xfs ⇒ prüft XFS Dateisysteme
  • fsck.jfs ⇒ prüft JFS Dateisysteme
  • fsck.msdos und fsck.vfat ⇒ links zu dosfsck



Optionen:

  • -f ⇒ (force) erzwingt die Prüfung
  • -A ⇒ prüft alle Dateisysteme die in /etc/fstab eingetragen sind
  • -t <dateisystemtyp> ⇒ startet das passende Backend
  • -c ⇒ sucht nach Defekten Blöcken
  • -b <blocknummer> ⇒ gibt einen alternativen Superblock an
  • -y ⇒ beantwortet alle fragen mit yes. Für unbeaufsichtigte Reperatur



umount /dev/hdb2

Unmounten des zu überprüfenden Dateisystems.


fsck -f /dev/hdb2

Anschließend kann die Prüfung durchgeführt werden.

Standardmäßig wird das Dateisystem, je nach Distribution, in gewissen Intervallen beim Systemstart geprüft.



shutdown -rf now

Dateisystempüfung nach Neustart unterbinden.

shutdown -sF now

Dateisystempüfung nach Neustart durchführen.



tune2fs


Ermöglicht das bearbeiten der Dateisystemparameter von ext2/ext3/ext4 Dateisysteme.


Syntax:

  • tune2fs [opt] [device]



Optionen:

  • -c ⇒ Anzahl der mounts zwischen Dateisystemprüfungen.
  • -C ⇒ legt fest, wie oft das Dateisystem nach der letzten Prüfung gemountet wurde.
  • -i ⇒ legt Intervall zwischen Prüfungen in Tagen, Wochen oder Minuten fest. Ohne Optionen schaltet es die automatische Prüfung aus.
  • -T YYYYMMDD[[HHMM]SS] ⇒ Legt Zeitpunkt fest, wann letzte Dateisystemprüfung stattgefunden hat.
  • -j ⇒ Konvertiert ein ext2 in ein ext3 Dateisystem.
  • -1 ⇒ Superblock anzeigen.
  • -U ⇒ neue UUID für ext2, ext3 device setzen.
    • [neue uuid] [/dev/<device>] ⇒ setzt neue uuid.
    • random [/dev/….] ⇒ zufällige UUID erzeugen.
    • time [/dev/….] ⇒ erzeugt einen aus der aktuellen Uhrzeit generierten UUID.
    • clear [/dev/….] ⇒ löscht UUID (00000000-0000-0000-0000-000000000000).



Beispiel:

root@home:~#tune2fs -U random /dev/sda10

Neue zufällige UUID generieren. (Siehe auch uuids ändern).



debugfs


Das Programm kann ext2, ext3, ext4 Dateisysteme interaktiv untersuchen oder modifizieren. Es besteht auch die Möglichkeit, mit „debugfs“ gelöschte Dateien wiederherzustellen. Dazu muß das betroffene Dateisystem ausgehängt und mit „debugfs“ geöffnet werden.

umount /dev/hdb2


debugfs /dev/hdb2

Öffnen des Dateisystems mit debugfs.

Gibt man am Prompt „lsdel“ ein, können gelöschte Inodes angezeigt werden.

dump [inodenr] /tmp/restored

Anschließend die Datei mit dem Kommando dump wiederherstellen, danach Dateisystem mounten und Datei von /tmp/restored zurückkopieren.



dumpe2fs


Mit „dumpe2fs“ können detailierte Informationen über ext2, ext3 und ext4 Dateisysteme erfahren werden. Wegen der umfangreichen Ausgabe kann die Ausgabe an „less“ weitergegeben werden.

dumpe2fs /dev/hda1 | less





mke2fs


Programm zum erstellen, umwandeln oder üerprüfen von ext2/ext3/ext4 Dateisysteme.


Syntax:

  • mke2fs [opt] [arg] [dateisystem]



Optionen:

  • -c ⇒ Prüft Partition auf bad blocks, bevor das Dateisystem erstellt wird.
  • -L ⇒ Erstellt ein Label (Namen) für ein ausgewähltes Dateisystem.
  • -j ⇒ Erstellt ein ext3 Dateisystem mit Journaling.
  • -t [fs-type] ⇒ Erstellt angegebenes Dateisystem.



Beispiel:

root@home:~# mke2fs -c /dev/hdb2





Dateisysteme prüfen / reparieren


Um ein bestimmtes Dateisystem zu überprüfen oder reparieren, sollte man zuerst herausbekommen, welcher Gerätedatei dem Verzeichnis zugewiesen ist.

root@home:~# mount
/dev/sda4 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/sda3 on /boot type ext3 (rw)
/dev/sda6 on /home type ext3 (rw)
/dev/sda10 on /opt type ext3 (rw)
/dev/sda9 on /tmp type ext3 (rw)
/dev/sda8 on /usr type ext3 (rw)
/dev/sda7 on /var type ext3 (rw)



Zunächst wird überprüft, ob eine Datei auf das auszuhängende Verzeichnis zugreift.

root@home:~# lsof /dev/sda10



Sollte keine Datei auf das Device zugreifen, kann es ausgehängt werden.

root@home:~# umount -v /dev/sda10
/dev/sda10 umounted




Eine erste Diagnose läßt sich beim wieder einhängen stellen.

root@home:~# mount -v /dev/sda10
/dev/sda10 on /opt type ext3 (rw)


root@home:~# dmesg | tail -n3
[87962.192146] kjournald starting.  Commit interval 5 seconds
[87962.192386] EXT3 FS on sda10, internal journal
[87962.192395] EXT3-fs: mounted filesystem with ordered data mode.

Hier wurden keine Fehlermeldungen ausgegeben. Sollten Fehler ausgegeben worden sein oder das Filesystem soll dennoch überprüft werden, muß es zuerst wieder ausgehängt werden.

root@home:~# umount -v /dev/sda10
/dev/sda10 umounted




Jetzt kann das Filesystem mit z.B. mit fsck überprüft werden.

root@home:~# fsck -t ext3 -V /dev/sda10
fsck from util-linux-ng 2.17.2
[/sbin/fsck.ext3 (1) -- /opt] fsck.ext3 /dev/sda10 
e2fsck 1.41.12 (17-May-2010)
/dev/sda10: sauber, 36/427392 Dateien, 64226/1708800 Blöcke

Hier wurden keine Fehler gefunden. Sollten Fehler beseitigt worden sein, kann man „dmesg“ zur Überprüfung erneut anwenden.

In der /etc/fstab kann mit der Option errors=remount-ro bei einer Zugriffsstörung das mounten im nur-lesen Modus aktiviert werden, es können dann keine Fehlerhaften Dateien geschrieben werden.






Quota sind Beschränkungen der Festplattennutzung auf User oder Gruppenebene, sie werden pro Partition festgelegt. Es können alle in der „/etc/fstab“ gelisteten Geräte eingeschränkt werden, wenn sie beschreibbar und in einem Linux-Dateisystem vorliegen. Die Beschränkung kann sich auf den Festplattenspeicherplatz oder auf die Anzahl der Daten, die angelegt werden dürfen, beziehen.

Damit Quotas verwendet werden können, werden „usrquota“ und/oder „grpquota“ durch ein Komma getrennt in die Datei „/etc/fstab“ eingetragen und mit dem Befehl „mount -o remount,rw /dev“ die fstab neu eingelesen, wobei (/dev) für die jeweilige Partition steht.


Beispiel fstab:

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
 proc            /proc           proc    defaults        0       0
 /dev/hda1       /               ext3    errors=remount-ro,usrquota,grpquota 0       1
 /dev/hda5       none            swap    sw              0       0
 /dev/hdc        /media/cdrom0   udf,iso9660 user,noauto     0       0
 /dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0



Userquotas stehen hierarchisch über Groupquotas.




quotacheck


Die Quotierungsdateien werden getrennt nach Benutzer (aquota.user) und Gruppenquotas (aquota.group) im Hauptverzeichnis des zu quotierenden Dateisystems eingerichtet. Diese Dateien sollten die Berechtigung 600 haben. Durch quotacheck wird die aktuelle Belegung ermittelt.

[root@localhost ~]# quotacheck -avugm



Optionen:

  • -a ⇒ alle in fstab markierten Partitionen.
  • -v ⇒ verbose (geschwätzig).
  • -u ⇒ userquotas prüfen, erstellen (aktualisieren) der aquota.user Datei, falls erforderlich.
  • -g ⇒ groupquotas prüfen, erstellen (aktualisieren) der aquota.group Datei, falls erforderlich.
  • -m ⇒ remount in Read Only Modus unterdrücken.
  • -c ⇒ create, Schreiben der Dateien auf die Festplatte.
  • -f ⇒ force, Operation erzwingen.




Mit dem Kommando „quotacheck -avugm“ entstehen in den zu quotierenden Partitionen die Dateien „aquota.user“ bzw. „aquota.group“. Vorhandene Quotadateien werden aktualisiert.

[root@localhost /]# ls -l
insgesamt 142
-rw-------   1 root root   7168 14. Okt 18:25 aquota.user
...



Manchmal kann es auch notwendig sein, die Dateien manuell im Hauptverzeichnis des zu quotierenden Dateisystems erstellen und berechtigungen auf 600 einstellen. In der Regel werden aber diese Dateien von „quotacheck“ automatisch erstellt.

[root@localhost /]# touch aquota.user

und/oder …

[root@localhost /]# touch aquota.group


[root@localhost /]# chmod 600 aquota*




Um nur die „aquota.user“ Datei im Verzeichnis „/public“ zu aktualisieren gibt man folgenden Befehl ein. Dies kann auch mit der Option [g] auf Gruppenquotas angewendet werden.

[root@localhost /]# quotacheck -vu /public




Quota Werte einrichten


Limits für Benutzer und Gruppen einrichten.


edquota


Beschränkung der Festplattennutzung auf Nutzer und/oder Gruppenebene. Der Beispielcode auf Nutzerebene läßt sich genauso auf Gruppen anwenden.


Syntax:

  • edquota [optionen] [user|gruppe] [-f Dateisystem]



Optionen:

  • -u ⇒ Benutzerquota bearbeiten.
  • -g ⇒ Gruppenquota bearbeiten.
  • -p [nutzer] ⇒ Übertragen von Nutzer oder Gruppenquotas auf andere Nutzer oder Gruppen.
  • -f [dateisystem] ⇒ Dateisystem für Quotas auswählen. Standard sind alle Quotierten Dateisysteme.
  • -t ⇒ Grace Period für das Dateisystem (default 0). Es werden die Einheiten sec, min, hour, day, week und month unterstützt.
  • -T ⇒ Grace Period für Benutzer und Gruppen. Die Einheiten sind wie bei (-t).




[root@localhost /]# edquota -f / -u michel


Disk quotas for user michel (uid 500):
     Filesystem                   blocks   soft   hard inodes soft hard
     /dev/hda2                        28  61440  81920      7    0    0

Die Spalte „blocks“ zeigt die vom Nutzer „michel“ verwendeten Blöcke in KiloByte für diese Partition an. Die Spalte „inodes“ zeigt die Anzahl der Dateien an, die dem Nutzer „michel“ gehören. In den Spalten „soft“ (Softlimit) und „hard“ (Hardlimit) nach „blocks“, kann nun in „blocks“ das Limit festgelegt werden.

  • Softlimit darf eine Festgelegte Zeit (Gracetime) überschritten werden.
  • Hardlimit ist das absolute Limit, wird dies überschritten kann der Nutzer die Datei nicht speichern oder sich ggf. nicht mehr einloggen.




Daher sollte das Softlimit immer unter dem Hardlimit gesetzt werden. Mit den zweiten Hard und Softlimitspalten läßt sich das Limit mit „Inodes“ (Dateien) setzen.


Ob ein Block aus 1024, 2048 oder 4096 Bytes besteht, läßt sich mit dumpe2fs feststellen. Es kann auch sein, dass quota Standardmäßig eine Blocksize von 1024 Bytes verwendet.

[root@localhost /]# dumpe2fs -h /dev/hda1 | grep "Block size"
dumpe2fs 1.39 (29-May-2006)
Block size:                1024




Weitere Beispiele:

[root@localhost /]# edquota -g [gruppe]

Quotaoptionen für [gruppe] einstellen.


[root@localhost /]# edquota -u [nutzer]

Quotaoptionen für [nutzer] einstellen.


[root@localhost /]# edquota -p patti `awk -F: '$3 > 1000 {print $1}' /etc/passwd`

Hier werden alle Benutzer, deren ID > 1000 mit den Quotawerten von „patti“ besetzt.


gracetime


Erlaubte Zeit, in der das Softlimit überschritten werden darf.

[root@localhost /]# edquota -u -T michel



Oder Allgemein für User.

[root@localhost /]# edquota -u -t


Grace Period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
  Filesystem    Block grace period    Inode grace period
  /dev/hdb2     2days                 2days




Quotierungen übertragen


[root@localhost /]# edquota -p user1 -u user2,user3,user4

Die Einstellungen von „user1“ werden auf alle angegebenen User übertragen. Dies läßt sich auch auf Gruppen anwenden.


Quotas aktivieren


quotaon


Quotas aktivieren.


Syntax:

  • quotaon [opt] [dateisystem]



Optionen:

  • -a ⇒ Alle in fstab gekennzeichneten Partitionen aktivieren.
  • -u ⇒ Userquotas aktivieren.
  • -g ⇒ Groupquotas aktivieren.
  • -v ⇒ Verbose.



[root@localhost /]# quotaon -vu /
/dev/hda1 [/]: user quotas turned on


[root@localhost ~]# quotaon -augv
quotaon: using //aquota.user on /dev/hda1 [/]: Das Gerät oder die Ressource ist belegt

Wird hier diese Fehlermeldung angezeigt, kann es sein, dass Quota schon aktiviert ist.


Quotas deaktivieren


quotaoff

Quotierungen deaktivieren.

[root@localhost /]# quotaoff -vu /
/dev/hda1 [/]: user quotas turned off

Userquotas deaktivieren.


[root@localhost /]# quotaoff -avug

Alle Quotas deaktivieren.

Sollen mit quotacheck Quotadateien aktualisiert werden, müssen Quotas deaktiviert werden und ggf. die Option (-m) gesetzt werden.




Quotas anzeigen


Die angemeldeten Nutzer können mit „quota“ deren Status anzeigen. Root kann mit der Option „-u [nutzer]“ die Einstellungen anderer User einsehen.

quota




Soll der Zugriff auf die Quotaeinträge nur root gestattet werden.

[root@localhost /]# chmod 600 /quota.*




Bericht erstellen mit repquota


Einen Bericht über die aktuellen Quotierungen und die Belegung des Dateisystems kann man mit „repquota“ darstellen. Dabei können folgende Kommandos angewendet werden. Je nach Quotaversion funktionieren einige Optionen nicht mehr.


Syntax:

  • repquota [opt] [dev]



Optionen:

  • -a ⇒ Zeigt alle in der Datei /etc/mtab gelisteten Dateisysteme.
  • -v ⇒ Verbose.
  • -u ⇒ Report Nutzerquotas.
  • -g ⇒ Report Gruppenquotas.



Mit älteren Quotaversionen kann man mit folgenden Optionen einen Quotabericht erstellen.

[root@localhost /]# repquota -avug /public


[root@localhost /]# repquota -avug /dev/hdb1




Mit neueren Quotaversionen sollten folgende Optionen verwendet werden.

[root@localhost /]# repquota -stguv -a


[root@localhost /]# repquota -a


*** Report for user quotas on device /dev/hdb1
Block grace time: 2days; Inode grace time: 2days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
michel    --      36   81920    100M              5     0     0
...
...


  • soft-limit ⇒ Limit das kurzzeitig überschritten werden darf.
  • hard-limit ⇒ Absolutes limit.
  • grace-time ⇒ Zeitfrist in dem Softlimit überschritten werden darf.






dd (disk dump)


FIXME
Mit „dd“ (disk dump) kann man ganze Patitionen sichern. Es wird eine exakte 1:1 Kopie des Datenträgers ausgelesen und kopiert. Die zu sichernde Partition darf nicht ins Dateisystem eingehängt sein. „dd“ löscht alle Daten der Sicherungsfestplatte, es seidenn man speichert die Sicherung in eine Datei. Die Sicherung hat dabei immer die selbe Größe als die zu sichernde Partition, egal wie voll.


MBR sichern


dd if=/dev/sda of=~/mbrSuSE bs=512 count=1


  • if → input file
  • of → output file
  • bs=<wert> → Blocksize
  • count=<wert> → Anzahl Blöcke
  • skip=<wert> → Überspringe Blöcke vor lesebeginn
  • seek=<wert> → Überspringe Blöcke vor Schreibbeginn
  • Für verschiedene Blockgrössen
  • ibs=<wert> → Input Blocksize
  • obs=<wert> → Output Blocksize




Unkomprimiertes Backup


# Backup anlegen
dd if=/dev/sda3 of=/media/sdb1/backup.img bs=1M
# Backup zurückspielen
dd if=/media/sdb1/backup.img of=/dev/sda3 bs=1M




Komprimiertes Backup


# Komprimiertes Backup anlegen
dd if=/dev/sda3 bs=1M | gzip > /media/sdb1/backup.img.gz
# Komprimiertes Backup zurückspielen
gunzip -c /media/sdb1/backup.img | dd of=/dev/sda3 bs=1M




Einbinden eines unkomprimierten Backups


Zuerst wird das Backup an das loopdevice loop0 gehängt.

losetup /dev/loop0 /media/sdb1/backup.img




Aus Partitionstabelle die Anzahl der Sektoren auslesen und mit blocksize (bytes pro sector (z.B. 512)) multiplizieren.

fdisk -ul /dev/loop0
Disk /dev/loop0: 40.0 GB, 40007761920 bytes
255 heads, 63 sectors/track, 4864 cylinders, total 78140160 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0xddcdcccd
Device Boot Start End Blocks Id System
/dev/loop0p1 * 63 15631244 7815591 7 HPFS/NTFS
/dev/loop0p2 15631245 16707599 538177+ 82 Linux swap / Solaris
/dev/loop0p3 16707600 26475119 4883760 83 Linux
/dev/loop0p4 26475120 78140159 25832520 5 Extended
/dev/loop0p5 26475183 78140159 25832488+ 83 Linux




Loopdevice kann gelöscht werden.

losetup -d /dev/loop0




Um z.B. Partition 5 einzuhängen wird 26475183 * 512 = 13555293696. Das Backup wird über ein loopdevice am Anfang der fünften Partition angesprochen.

losetup -o 13555293696 /dev/loop0 /media/sdb1/backup.img




Nun kann die Partition eingebunden werden.

mkdir backup/
mount -t ext3 /dev/loop0 backup/






stat


Zeigt den Status einer Datei oder eines Dateisystems an. Je nach verwendeter Shell können die Optionen und Formate variieren.


Syntax:

  • stat [opt] [datei|verz]



Optionen:

  • -L ⇒ Verweisen folgen.
  • -f ⇒ Dateisystemstatus anstelle Dateistatus anzeigen.
  • -t ⇒ Informationen in Kurzform ausgeben.
  • -c [[Format][-][..]] ⇒ Das angegebene Format anstelle von Vorgabe ausgeben.
  • --printf=[Format[\\n]] ⇒ wie -c, jedoch Zeilenumbruch möglich.



Format für Dateien:

  • %a ⇒ Zugriffsrechte im Oktalformat.
  • %A ⇒ Zugriffsrechte in menschenlesbarer Form.
  • %b ⇒ Anzahl der reservierten Blöcke (siehe %B).
  • %B ⇒ Die Größe jedes mit %b gemeldeten Blocks in Byte.
  • %C ⇒ SELinux-Sicherheitskontext-Zeichenkette.
  • %d ⇒ Gerätenummer in dezimaler Schreibweise.
  • %D ⇒ Gerätenummer in hexadezimaler Schreibweise.
  • %f ⇒ Raw-Modus in hexadezimaler Schreibweise.
  • %F ⇒ Dateityp.
  • %g ⇒ Gruppen‐ID des Eigentümers.
  • %G ⇒ Gruppenname des Eigentümers.
  • %h ⇒ Anzahl der Hardlinks.
  • %i ⇒ Inode-Nummer.
  • %n ⇒ Dateiname.
  • %N ⇒ Dateiname in Anführungsstrichen mit Zurückverfolgung, falls sym-link.
  • %o ⇒ E/A‐Blockgröße.
  • %s ⇒ Gesamtgröße in Byte.
  • %t ⇒ Major-Gerätetyp in hexadezimaler Schreibweise.
  • %T ⇒ Minor‐Gerätetyp in hexadezimaler Schreibweise.
  • %u ⇒ ID des Eigentümers.
  • %U ⇒ Name desDateieigentümers.
  • %x ⇒ Zeit des letzten Zugriffs.
  • %X ⇒ Zeit des letzten Zugriffs in Sekunden in Unixzeit.
  • %z ⇒ Zeit der letzten Statusänderung.
  • %Z ⇒ Zeit der letzten Statusänderung in Sekunden in Unixzeit.



Format für Dateisysteme:

  • %a ⇒ Freie Blöcke, die Nicht‐Superusern zur Verfügung stehen.
  • %b ⇒ Gesamte Datenblöcke im Dateisystem.
  • %c ⇒ Gesamte Dateiknoten im Dateisystem.
  • %d ⇒ Freie Dateiknoten im Dateisystem.
  • %f ⇒ Freie Blöcke im Dateisystem.
  • %C ⇒ SELinux-Sicherheitskontext-Zeichenkette.
  • %i ⇒ Dateisystem‐ID in hexadezimaler Schreibweise.
  • %l ⇒ Maximale Länge von Dateinamen.
  • %n ⇒ Dateiname.
  • %s ⇒ Blockgröße (für schnellere Übertragungen).
  • %S ⇒ Grundlegende Blockgröße (für Blockzahlen).
  • %t ⇒ Typ in hexadezimaler Schreibweise.
  • %T ⇒ Typ in menschenlesbarer Form.




Beispiele:

root@home:~# stat /etc
  File: „/etc“
  Size: 12288     	Blocks: 24         IO Block: 4096   Verzeichnis
Device: 804h/2052d	Inode: 488641      Links: 142
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2012-10-17 19:22:42.000000000 +0200
Modify: 2012-10-17 20:59:43.000000000 +0200
Change: 2012-10-17 20:59:43.000000000 +0200


root@home:~# stat -c%A-%F-%G-%U datei*
-rw-r--r---reguläre Datei-root-root
-rw-r--r---reguläre Datei-root-root
-rw-r--r---reguläre Datei-root-root


root@jupiter:~# stat --printf=%A\\n%F\\n%G\\n%U\\n datei1
-rw-r--r--
reguläre Datei
root
root


root@jupiter:~# stat -f -c%T /home
ext2/ext3



Je nach benutzter Shell weichen die Optionen voneinander ab. In diesen Fall wurde die GNU Bash-4.1 verwendet.





Cloud