Dateisystem
In den Dateisystemen wird festgelegt, wie Informationen auf Datenträger organisiert sind.
Dateisysteme
Folgende Liste zeigt einen Auszug verschiedener Dateisysteme.
Linux
- ext → Extended File System – für Linux entwickelte Version des minix-Dateisystems.
- ext2 → Second Extended File System – weiterentwickelte Variante von ext, lange Linux Standard.
- ext3 → Third Extended File System – weiterentwickelte Variante von ext2 mit Journaling.
- reiserfs → ein Journaling-Dateisystem.
- reiser4 –> ein Journaling-Dateisystem mit Plugin-Unterstützung.
Unix
- XFS → Journaling-Dateisystem.
- ZFS → Zetta File System - Dateisystem mit vielfältigem Volumenmanagement.
- minix → minix Dateisystem.
Windows
- fat → Dateisystem der FAT-(File-Allocation-Table)-Dateisystemfamilie unter MS-DOS. Gängig war diese Dateisystem für Disketten.
- fat16 → neuere Variante mit erweiterten Limits.
- fat32 → neuere Variante mit erweiterten Limits.
- exfat → Flash-Speicher spezialisierte Version von fat32.
- vfat → Virtual fat - Eine Optionale Erweiterung für fat12/ fat16/ fat32, die eine Unterstützung für lange Dateinamen und Sonderzeichen gewährleistet.
- ntfs → New Technology File System - Journaling-Dateisystem von Windows. Seit Windows XP Standarddateisystem.
CD, DVD
- ISO 9660 → Standarddateisystem für CDs.
- Joliet → Erweiterung des ISO9660-Formats für längere Dateinamen mit Unicodezeichen.
- Rockridge → Erweiterung des ISO9660-Formats für UNIX-artige Betriebssysteme (Dateirechte werden hier berücksichtigt).
- UDF → Universal Disk Format - Standarddateisystem für DVDs und Blu-Rays.
Linux Dateisystem
In Linux und Unix sind Dateisysteme und Partitionen Verzeichnisse. Zum eintauchen in Verzeichnisse wird cd (Change Directory) verwendet. Der Verzeichnis Inhalt wird mit ls [-Optionen] ausgegeben.
Bedeutung der Verzeichnisse nach dem File Hierarchie Standard (FHS).
- / ⇒ Das Wurzelverzeichnis ist der Beginn der Hierarchie.
- /bin ⇒ enthält wichtige Programme, die für jeden Nutzer erreichbar sein sollen. Darf keine Unterverzeichnisse enthalten.
- /boot ⇒ enthält zum Start des Systems notwendige Dateien. Statischer Teil des Kernels, Initiale Ramdisk, memtest86.bin.
- /boot/grub ⇒ enthält Grub Bootloader Dateien. menu.lst, grub stage1 + 2.
- /boot/grub/splashimages ⇒ Hintergrundbilder für Grub.
- /dev ⇒ Abbildung von Gerätedateien und Hot Plug Dateisysteme.
- /etc ⇒ enthält Konfigurationsdateien für Programme, Dienste und Systemeinstellungen.
- /etc/opt ⇒ Konfigurationsdateien für Programme in /opt.
- /etc/X11 ⇒ Konfigurationsdateien für den X-Server.
- /etc/network ⇒ enthält Netzwerk Konfigurationsdateien.
- /etc/init.d ⇒ Start und Stop Skripte für Dienste.
- /home ⇒ enthält Nutzerverzeichnisse für alle User ausser root.
- /lib ⇒ wichtige 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.
- /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 ⇒ Verzeichnis des Superusers root.
- /sbin ⇒ ausführbare Programme und Aufgaben der Systemverwaltung für Superuser (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, Desktop Umgebungen.
- /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 Document Root Verzeichnis vom Apache Webserver Dienst httpd.
- /sys ⇒ vom FHS noch nicht spezifiziert. Besteht aus Kernelschnittstellen. Wie /proc ein Virtuelles Dateisystem.
Zusätzlich definierte Pfade:
- /dev/null ⇒ Ausgabe verwerfen.
- /dev/zero ⇒ Hier werden beliebig viele Null Bits generiert.
- /dev/tty ⇒ Gerät auf dem der Prozess läuft.
/home
Das Verzeichnis /home ist das Heimatverzeichnis der im System angelegten Benutzer. Sie tragen auch die Namen der jeweiligen Benutzer (z.B. /home/ulli/).
Im Nutzerverzeichnis werden weitere Arbeits Verzeichnisse wie ~/Arbeisfläche, ~/Schreibtisch oder in älteren Systemen ~/Desktop, ~/Bilder, ~/Videos angelegt.
Ein angemeldeter User kann zum Wechsel ins Heimatverzeichnis ~ (Tilde) als Abkürzung verwenden.
- ~/Downloads ⇒ wechselt in das Download Verzeichnis des angemeldeten Benutzers.
- ~ulli/Downloads ⇒ wechselt ins Download Verzeichnis des Benutzers ulli.
In der Konfigurationsdatei ~/.config/user-dirs.dirs im Heimatverzeichnis werden die Standardeinstellungen der Verzeichnisse für Benutzer abgelegt.
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"
Auch Programme legen Einstellungen und Informationen im Heimatverzeichnis des Benutzers ab. So hat jeder Benutzer seine Programmeinstellungen gespeichert, ohne die Einstellungen anderer Benutzer zu ändern.
Heimatverzeichnis verschieben
Mit usermod kann der Ort und Name des Heimatverzeichnisses geändert werden.
Syntax:
- usermod -l [Nutzername neu] -d [/home/Nutzername neu] -m [Nutzername alt]
Optionen:
- -l ⇒ neuer Benutzerlogin.
- -d ⇒ neues Heimatverzeichnis (lässt man diesen Parameter weg, bleibt das alte Heimatverzeichnis erhalten.)
- -m ⇒ enthaltene Dateien werden ins neue Heimatverzeichnis verschoben.
- -a ⇒ weist dem Benutzer Gruppen zu (nur mit der Option -g benutzen.)
- -g ⇒ Benutzer der Login Gruppe zuweisen. (die Gruppe muss vorhanden sein.)
- -f ⇒ hier können die Tage angegeben werden, an dem der Account gelöscht wird. (0 deaktiviert den Account sofort.)
Beispiel:
root@home:~# usermod -l nadine -d /home/nadine -m ulli
Im Beispiel wird der Nutzer ulli in nadine umgewandelt und das Heimatverzeichnis nach /home/nadine/ verschoben.
/proc
Das Prozessdateisystem /proc ist ein virtuelles Dateisystem, in dem das System zur Laufzeit gespiegelt wird.
- Die Kernel Information werden in hierarchischer Struktur angeordnet.
- Infos über jeden laufenden Prozess.
- Hardwareeinstellungen.
- Netzwerkinformationen.
- offene Dateien, Dateisperren.
Beispiel:
procinfo -fn2
Prozess Informationen mit einem Aktualisierungsintervall von 2 Sekunden ausgeben.
swap
Die swap Partition oder Datei ist ein virtuellen Speicher, der RAM Inhalte zwischenspeichern, bzw. auslagern kann.
Einrichten einer swap Partition
Um eine swap Partition zu Formatieren benötigt man das Programm mkswap. Eine Partition vom Typ82 kann vorher mit fdisk erstellt werden.
mkswap /dev/hd?
Swap Partition erstellen.
swapon -v [Gerät]
Swap Partition aktivieren.
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.
/dev/hdb2 swap swap pri=42 0 0
Swap Speicher als Datei
Um einen swap Auslagerungsdatei zu erzeugen, muss zuerst eine Datei in gewünschter Grösse erzeugt werden.
dd if=/dev/zero of=~/swap_file bs=1024 count 524288
Hier werden Nullen in die Datei swap_file kopiert. Die Blockgrösse 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 Datei gleich nach dem Systemstart verfügbar wird muss die Datei /etc/fstab bearbeitet werden.
/swap_file swap swap defaults 0 0
UUID (Universally Unique Identifier)
Zur eindeutigen Identifikation werden Dateisysteme mit UUIDs gekennzeichnet. Wie die Dateisysteme behandelt werden, wird in der Datei /etc/fstab geregelt. Hier können die Dateisysteme über UUIDs angesprochen und mount Optionen angepasst werden.
UUIDs anzeigen
Mit blkid können UUIDs von Dateisystemen ausgelesen werden. Die Zuordnung der UUIDs zu den Gerätedateien wird durch Softlinks aus der Datei /dev/disk/by-uuid hergestellt. Mehr Informationen zu Geräteattribute.
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 anzeigen.
- -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 Dateisystem 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
ext
Bei ext2, ext3 und ext4 Dateisysteme kann die UUID mit tune2fs geändert werden.
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
Bei reiserfs Dateisysteme kann zum ändern der UUIDs reiserfstune verwendet werden.
root@home:~#reiserfstune -u UUID /dev/device
Hier wird im ausgewählten device eine neue UUID (UUID) erzeugt.
root@home:~#reiserfstune -u $(uuidgen) /dev/device
Hier wird die neue UUID automatisch erzeugt.
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
Unter Windows werden bei den Dateisysteme keine UUIDs, sondern Seriennummern verwendet. Mit disk dump kann die Seriennummer eines Datenträgers temporär gespeichert, bearbeitet und zurückgeschrieben werden.
device | fat16 | fat32 | ntfs |
---|---|---|---|
skip,seek | 39 | 67 | 72 |
count | 4 | 4 | 8 |
Die Werte für skip (auslesen), seek (schreiben) und count stehen oben in der Tabelle.
Beispiel für ein ntfs Dateisystem:
root@home:~#dd if=/dev/<device> of=/tmp/ntfsnr bs=1 skip=72 count=8
root@home:~#dd if=/tmp/ntfsnr of=/dev/<device> bs=1 seek=72 count=8
Jetzt kann die Datei /tmp/ntfsnr mit einem Hexeditor bearbeitet und die Datei zurückgeschrieben werden.
Inodes
Inodes ist eine Technik, in der Informationen über alle im System befindlichen Verzeichnisse und Dateien gespeichert werden. Inodes werden in Nummern angezeigt. Jeder Inode Nummer ist eine Datei zugeordnet. Werden Verzeichnisse oder Dateien verschoben, wird häufig nur der Inode Eintrag angepasst.
Inodes speichern folgende Informationen.
- Rechte.
- User,Gruppe.
- Größe.
- Zeitstempel.
- Erzeugung.
- Letzte Änderung.
- Letzter Zugriff.
- 12 Zeiger auf Datenblöcke.
- 1 indirekter Zeiger (verweist auf weitere Datenblöcke).
- 256 Zeiger.
- Doppelt indirekter Verweis.
- 256 indirekte Verweise.
- Dreifach indirekter Verweis
- 256 zweifache Verweise
- Bis zu 16777216 Datenblöcke insgesamt.
Über die Bitmaps wird dargestellt, welche Blöcke und Inodes frei sind. In Gruppen werden folgende Inhalte zusammengefasst:
- Kopie des Superblocks.
- Informationen über Blockgrösse.
- Status des Dateisystems.
- Liste aller Gruppen.
- Enthalten Infos über Gruppen und Inodes und deren Ort.
- Bitmaps für Inodes und Datenblöcke.
Journal
Mit Journal werden alle zur Zeit bearbeiteten Dateioperationen im Dateisystem protokolliert und behalten ihren Zustand, bis die die Änderungen auf dem Datenträger vollständig gespeichert sind.
Das Journal Protokoll überprüft , ob eine Dateioperation vollständig ausgeführt wurde. Mit Journaling kann versucht werden, eine Dateioperation rückgängig zu machen. Dabei kann jedoch ein Datenverlust nicht ausgeschlossen werden.
Journaling ist z.B. bei Linux Systeme mit reiserfs und ab ext3 möglich. Bei Unix Systeme kann das Dateisystem XFS verwendet werden.
Journal 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, können jedoch nicht wiederhergestellt werden.
- data=writeback ⇒ wie data=ordered, Journal wartet nicht auf den Abschluss der Dateioperation. Dieser Modus ist ein wenig schneller als data=ordered, durch das asynchrone Journaling kann die Datei aber ältere Daten enthalten.
- data=journal ⇒ es werden Metadaten und Inhaltsdaten protokolliert. Dadurch müssen Änderungen ins Journal und Datei geschrieben werden, das ext3 Dateisystem wird dann etwas langsamer. Es können aber Dateien wiederhergestellt werden, die im Journal eingetragen sind.
Journaling mit mount in einem ext3 Dateisystem.
root@home:~#mount -t ext3 -o data=journal /dev/sda9 /public
In diesem Beispiel wird das Dateisystem /dev/sda9 mit Journaling als /public eingehängt. Bei einem Neustart des Systems, gehen diese Einstellungen verloren.
Journaling beim Systemstart.
In folgendem Beispiel wird die Datei /etc/fstab konfiguriert. Beim Systemstart wird die Datei /etc/fstab eingelesen und aktiviert das Journaling.
... # /public was on /dev/sda9 during installation UUID=e2er5730-f0a4-46a5-af73-fc5rr5w6b818 /public ext3 data=journal 0 2 ...
Der im Kernel integrierte Dienst kjournald aktualisiert dann regelmässig die Journal Datei und startet automatisch beim Systemstart oder wenn ein Dateisystem mit mount eingehängt wird.
Links
Linux und Unix unterscheiden zwei Arten von Links. Mit dem Kommando ln werden standardmässig Hardlinks erstellt. Hardlinks können nur innerhalb einer Partition erstellt und nicht auf Verzeichnisse angewendet werden.
Softlinks (symbolische Links) können auf Verzeichnisse verweisen und Partitions übergreifend angewendet werden.
Links können auch mit dem Befehl cp -l (Hardlink) oder cp -s (Softlink) erstellt werden.
Hardlink
Bei einem Hardlink besitzen die Dateien, die aufeinander verlinkt sind, die gleiche Inode Nummer. Wird eine der verlinkten Dateien bearbeitet, verändern sich automatisch auch die verlinkten Dateien, da es sich tatsächlich um die gleiche Datei handelt.
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 Inode Nummer der Datei /workspace/datei1 362657, gleicht der Datei im Verzeichnis Dokumente/link1. Ein Zähler (im Beispiel 2) zeigt, wie viele Dateien miteinander verlinkt sind. Bearbeitet man Dateien, bleibt der Inhalt der verlinkten Dateien gleich. Erst wenn alle Links auf eine Datei gelöscht sind, ist die Datei wirklich gelöscht.
Softlink
Softlinks können Festplatten übergreifend erstellt werden und auf Verzeichnisse verweisen. Mit ls wird bei symbolischen Links angezeigt, wo sich die Ursprungsdatei befindet. Wie viele Zähler (Links) auf die Ursprungsdatei verweisen wird bei ls nicht angezeigt.
Bei Softlinks wird nicht der Inode gespeichert, sondern auf die Pfadangabe und Dateinamen verwiesen. Softlinks verwenden die Berechtigungen der Zieldatei, der Softlink selbst hat immer lese, schreib und Ausführungsrechte (777).
Syntax:
- ln -s [ziel] [linkname]
Beispiel:
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
Tote Links mit dem Befehl find suchen.
hans@home:~$ find -L workspace/ -type l workspace/LinktoDoc2 workspace/Dokumente1/link1
Dateisysteme ein / aushängen
Dateisysteme, die beim Systemstart automatisch eingehängt (gemountet) werden sollen, sind in der Datei /etc/fstab eingetragen und verschiedenen mount Optionen eingestellt.
fstab
Beispiel einer /etc/fstab Datei.
# /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 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 beliebigen User ausgehängt werden).
- defaults ⇒ setzt Standardeinstellungen (Ausnahmen Kommagetrennt angeben).
mount
Mit mount Dateisysteme einhängen. Wird mount ohne Optionen ausgeführt, erhält man eine Auflistung der eingehängten 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/[Dateisystem|Gerät] [/Einhängepunkt]
Optionen:
- -a ⇒ hängt alle Dateisysteme ein, die in der Datei /etc/fstab gelistet sind.
- -r ⇒ hängt Dateisystem schreibgeschützt ein.
- -w ⇒ hängt Dateisystem im lese/schreib Modus ein.
- -t ⇒ gibt den Dateisystem Typ an.
- -v ⇒ Verbose (geschwätzig).
- -o ⇒ übergibt Mountoptionen.
Beispiele:
mount -t ext3 /dev/hdb2 /public
Ein ext3 Dateisystem Typ, /dev/hdb2 die Partition, die eingehängt werden soll und /public den Mountpoint und Bezeichnung.
mount /public
Ist das Dateisystem bereits in der Datei /etc/fstab gelistet, reicht die Angabe des Mountpoints aus.
mount -t iso 9660 /dev/hdc /media/cdrom0
CD Dateisysteme einhängen.
mount -o remount,rw /public
Mit der Option -o werden mount Optionen übergeben. Das Dateisystem /public wird mit Lese und Schreibrechte neu gemountet.
Netzwerkresourcen einhängen
Mit mount können auch entfernte Dateisysteme eingehängt werden.
mount -t nfs [hostname]:/zu/exportierendes/Verzeichnis
NFS Verzeichnisfreigabe einhängen.
mount -t smbfs -o username=hans,passwort=passwort //hans/daten /mnt/hans
Samba Verzeichnisfreigabe einhängen.
mtab
Ist Dateisystem eingehängt, trägt mount, den Dateisystem Typ, den Mountpoint und Optionen in die Datei /etc/mtab ein. Eine Ausnahme sind Dateisysteme, die mit der Option -n eingehängt sind.
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
cat /proc/mounts
umount
Dateisysteme aushängen.
umount /dev/hdb2
Dateisystemkennungen
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 |
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
Datenträger Partitionieren
fdisk
Partitionen können mit dem Konsolen Frontend fdisk erstellt, bearbeitet und gelöscht werden.
Syntax:
- fdisk [opt] [device]
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)
Beispiele:
fdisk -l
Eine Auflistung aller Partitionen ausgeben.
fdisk /dev/hda
Einrichten der ersten Festplatte mit fdisk.
Beispiel Partitionierung mit fdisk.
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
Das wird so oft wiederholt, soviele 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.
Ist 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 jetzt formatiert werden.
cfdisk
gparted
Partitionierungs Programm für Grafische Oberflächen. In vielen Linux Live Distributionen ist gparted enthalten und eignet sich sehr zur Dateisystem Konfiguration. Die folgenden Abbildungen zeigen eine gparted Version 0.7.0 auf Debian 6.0.10 Squeeze System.
Dateisysteme formatieren
mkfs / mke2fs
Zur Formatierung von Dateisysteme kann 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 Volume Disk Label.
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.
Das Laufwerk sdb1 wird mit dem Dateisystem ext3 formatiert.
root@home:~# mkfs -t ext2 -j /dev/sdb1
Formatierung mit der Option ext2 -j.
Um eine Partition mit dem XFS Dateisystem zu formatieren, wird 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
Das XFS Dateisystem wird auf sdb1 erstellt, das Journaling auf sda1.
XFS Werkzeuge
Tools für XFS Dateisysteme. Zum reparieren müssen die Dateisysteme vorher 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 von XFS Dateisysteme.
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 wiederherstellen.
Dateisysteme konvertieren
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 angewendet werden:
mkfs -t ext3 /dev/hda2
mkfs -t ext2 -j /dev/hda2
Integrität und Problembehebung
Programme zum Prüfen der Integrität von Dateisystemen.
fsck, e2fsck
Mit dem Programm fsck können Dateisysteme auf ihre Igrentität und beschädigte Blöcke überprüft werden. Zur Überprüfung von ext2, ext3 Dateisystemen steht auch das Programm e2fsck zur Verfügung. Bei e2fsck handelt es sich um Hardlinks 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 [Dateisystem Typ] ⇒ 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 Reperaturen.
umount /dev/hdb2
Anschliessend kann die Prüfung durchgeführt werden.
fsck -f /dev/hdb2
shutdown -rf now
Dateisystemprüfung nach dem Neustart unterbinden.
shutdown -sF now
Dateisystemprüfung nach dem Neustart erzwingen.
tune2fs
Dateisystemparameter von ext2/ext3/ext4 Dateisystemen können mit tune2fs bearbeitet werden.
Syntax:
- tune2fs [opt] [device]
Optionen:
- -c [n] ⇒ X Anzahl der Systemstarts zwischen den Dateisystemprüfungen.
- -C [n] ⇒ legt fest, wie oft das Dateisystem nach der letzten Prüfung gestartet wurde.
- -i [n] ⇒ 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/….] ⇒ erzeugt zufällige UUID.
- time [/dev/….] ⇒ erzeugt eine aus der aktuellen Uhrzeit generierte UUID.
- clear [/dev/….] ⇒ löscht UUID (00000000-0000-0000-0000-000000000000).
Beispiel:
root@home:~#tune2fs -U random /dev/sda10
Neue Zufällige UUID generieren.
debugfs
Das Programm debugfs kann ext2, ext3 und ext4 Dateisysteme interaktiv untersuchen oder modifizieren. Es besteht auch die Möglichkeit, mit debugfs, gelöschte Dateien wiederherzustellen. Dazu muss 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, werden gelöschte Inodes angezeigt. Anschliessend die Datei mit dem dump wiederherstellen, das Dateisystem mounten und die Datei von /tmp/restored zurück kopieren.
dump [inodenr] /tmp/restored
dumpe2fs
Mit dumpe2fs können detaillierte Informationen über ext2, ext3 und ext4 Dateisysteme angezeigt werden. Wegen der umfangreichen Ausgabe kann die Ausgabe auch an less weitergeleitet werden.
dumpe2fs /dev/hda1 | less
mke2fs
Mit mke2fs können ext2/ ext3/ ext4 Dateisysteme erstellt, umgewandelt und überprüft werden.
Syntax:
- mke2fs [opt] [args] [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.
Beispiele:
root@home:~# mke2fs -c /dev/hdb2
Prüft die Partition auf Bad Blocks, bevor das Dateisystem erstellt wird.
Um Dateisysteme zu überprüfen oder zu reparieren, muss zuerst ermittelt werden, 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)
Als nächstes wird geprüft, ob eine Datei auf das auszuhängende Verzeichnis zugreift.
root@home:~# lsof /dev/sda10
Wenn keine Datei auf das Device zugreift, kann /dev/sda10 ausgehängt werden.
root@home:~# umount -v /dev/sda10 /dev/sda10 umounted
Eine erste Diagnose lässt sich beim wieder Einhängen ermitteln.
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.
Wenn hier Fehler ausgegeben werden oder das Dateisystem soll geprüft werden, muss es zuerst wieder ausgehängt werden.
root@home:~# umount -v /dev/sda10 /dev/sda10 umounted
Jetzt kann das Dateisystem mit fsck geprü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
Es wurden keine Fehler gefunden.
Datei / Dateisystemstatus
stat
Mit stat kann der Status einer Datei oder eines Dateisystems ermittelt werden. Je nach verwendeter Shell können die Optionen und Formate variieren.
Syntax:
- stat [opt] [Datei|Verzeichnis]
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 genutzter Shell, weichen die Optionen von einander ab. In diesen Fall wurde die GNU Bash-4.1 verwendet.
Backup Lösungen
dd (disk dump)
Mit dd (disk dump) ist es möglich, 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. Das Programm dd löscht alle Daten der Sicherungsfestplatte, es sei denn man speichert die Sicherung in eine Datei. Die Sicherung hat dabei immer die gleiche Grösse, als die zu sichernde Partition.
MBR (Master Boot Record) 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
Das loopdevice kann jetzt gelöscht werden.
losetup -d /dev/loop0
Um 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
Die Partition einbinden.
mkdir backup/ mount -t ext3 /dev/loop0 backup/
Cloud