104.2 Lektion 1
Zertifikat: |
LPIC-1 |
---|---|
Version: |
5.0 |
Thema: |
104 Geräte, Linux-Dateisysteme, Filesystem Hierarchy Standard |
Lernziel: |
104.2 Die Integrität von Dateisystemen sichern |
Lektion: |
1 von 1 |
Einführung
Moderne Linux-Dateisysteme werden protokolliert. Das bedeutet, dass jede Operation in einem internen Protokoll (dem Journal) vor der Ausführung vermerkt wird. Wird die Operation aufgrund eines Systemfehlers (wie einer Kernel-Panik, eines Stromausfalls usw.) unterbrochen, kann sie durch Überprüfen des Protokolls rekonstruiert werden, wodurch eine Beschädigung des Dateisystems und ein Datenverlust vermieden wird.
Das reduziert die Notwendigkeit manueller Dateisystemprüfungen stark, sie können aber dennoch erforderlich sein. Die Kenntnis der dafür verwendeten Werkzeuge (und der entsprechenden Parameter) kann den Unterschied zwischen einem Abendessen zu Hause bei der Familie oder einer ganzen Nacht im Serverraumt ausmachen.
In dieser Lektion besprechen wir die Werkzeuge zur Überwachung von Dateisystemen, zur Optimierung des Betriebs und zur Überprüfung und Reparatur von Schäden.
Prüfen der Festplattennutzung
Es gibt zwei Befehle, um zu überprüfen, wie viel Speicherplatz auf einem Dateisystem belegt und wie viel übrig ist. Der erste ist du
, was für “disk usage” (Plattennutzung) steht.
du
ist rekursiver Natur. In seiner einfachsten Form zeigt der Befehl an, wie viele 1-Kilobyte-Blöcke vom aktuellen Verzeichnis und all seinen Unterverzeichnissen verwendet werden:
$ du 4816 .
Dies ist nicht sehr hilfreich, so dass wir “menschenlesbare” Ausgaben anfordern, indem wir den Parameter -h
hinzufügen:
$ du -h 4.8M .
Standardmäßig zeigt du
nur den Verbrauch von Verzeichnissen an (unter Berücksichtigung aller darin enthaltenen Dateien und Unterverzeichnisse). Für die individuelle Zählung aller Dateien im Verzeichnis verwenden Sie den Parameter -a
:
$ du -ah 432K ./geminoid.jpg 508K ./Linear_B_Hero.jpg 468K ./LG-G8S-ThinQ-Mirror-White.jpg 656K ./LG-G8S-ThinQ-Range.jpg 60K ./Stranger3_Titulo.png 108K ./Baidu_Banho.jpg 324K ./Xiaomi_Mimoji.png 284K ./Mi_CC_9e.jpg 96K ./Mimoji_Comparativo.jpg 32K ./Xiaomi FCC.jpg 484K ./geminoid2.jpg 108K ./Mimoji_Abre.jpg 88K ./Mi8_Hero.jpg 832K ./Tablet_Linear_B.jpg 332K ./Mimoji_Comparativo.png 4.8M .
Das Standardverhalten besteht darin, die Nutzung jedes Unterverzeichnisses und dann die gesamte Nutzung des aktuellen Verzeichnisses, einschließlich Unterverzeichnissen, anzuzeigen:
$ du -h 4.8M ./Temp 6.0M .
Im obigen Beispiel sehen wir, dass das Unterverzeichnis Temp
4,8 MB und das aktuelle Verzeichnis, einschließlich Temp
, 6,0 MB belegt. Aber wie viel Platz nehmen die Dateien im aktuellen Verzeichnis ein, ohne die Unterverzeichnisse? Dafür existiert der Parameter -S
:
$ du -Sh 4.8M ./Temp 1.3M .
Tip
|
Beachten Sie, dass bei Kommandozeilenparametern zwischen Groß- und Kleinschreibung unterschieden wird: |
Wenn Sie diese Unterscheidung zwischen dem von den Dateien im aktuellen Verzeichnis und dem von Unterverzeichnissen belegten Speicherplatz beibehalten wollen, aber am Ende auch eine Gesamtsumme wünschen, können Sie den Parameter -c
hinzufügen:
$ du -Shc 4.8M ./Temp 1.3M . 6.0M total
Mit dem Parameter -d N
steuern Sie, wie “tief” die Ausgabe von du
gehen soll, wobei N
die Ebenen beziffert. Der Parameter -d 1
gibt beispielsweise an, das aktuelle Verzeichnis und seine Unterverzeichnisse anzuzeigen, aber nicht deren Unterverzeichnisse.
Hier die Ausgabe ohne -d
:
$ du -h 216K ./somedir/anotherdir 224K ./somedir 232K .
Und die Begrenzung der Tiefe auf eine Ebene mit -d 1
:
$ du -h -d1 224K ./somedir 232K .
Bitte beachten Sie: Auch wenn anotherdir
nicht angezeigt wird, wird dessen Größe dennoch berücksichtigt.
Möchten Sie einige Dateitypen von der Zählung ausschließen, so erreichen Sie dies mit --exclude="PATTERN"
, wobei PATTERN
dem Muster entspricht, dessen Daten Sie exkludieren möchten. Betrachten Sie folgendes Verzeichnis:
$ du -ah 124K ./ASM68K.EXE 2.0M ./Contra.bin 36K ./fixheadr.exe 4.0K ./README.txt 2.1M ./Contra_NEW.bin 4.0K ./Built.bat 8.0K ./Contra_Main.asm 4.2M .
Nun verwenden wir --exclude
, um jede Datei mit der Endung .bin
herauszufiltern:
$ du -ah --exclude="*.bin" 124K ./ASM68K.EXE 36K ./fixheadr.exe 4.0K ./README.txt 4.0K ./Built.bat 8.0K ./Contra_Main.asm 180K .
Beachten Sie, dass die Summe nicht mehr die Größe der ausgeschlossenen Dateien umfasst.
Prüfung auf freien Speicherplatz
du
arbeitet auf Dateiebene. Es gibt einen weiteren Befehl, der Plattennutzung und verfügbaren Speicherplatz auf Dateisystemebene anzeigen kann: df
.
Der Befehl df
liefert eine Liste aller verfügbaren (bereits gemounteten) Dateisysteme auf dem System, einschließlich ihrer Gesamtgröße, wie viel Platz verbraucht wird, wie viel Platz verfügbar ist, dem prozentualen Verbrauch und wo dieser gemountet ist:
$ df Filesystem 1K-blocks Used Available Use% Mounted on udev 2943068 0 2943068 0% /dev tmpfs 595892 2496 593396 1% /run /dev/sda1 110722904 25600600 79454800 25% / tmpfs 2979440 951208 2028232 32% /dev/shm tmpfs 5120 0 5120 0% /run/lock tmpfs 2979440 0 2979440 0% /sys/fs/cgroup tmpfs 595888 24 595864 1% /run/user/119 tmpfs 595888 116 595772 1% /run/user/1000 /dev/sdb1 89111 1550 80824 2% /media/carol/part1 /dev/sdb3 83187 1550 75330 3% /media/carol/part3 /dev/sdb2 90827 1921 82045 3% /media/carol/part2 /dev/sdc1 312570036 233740356 78829680 75% /media/carol/Samsung Externo
Die Darstellung der Größe in 1 KB-Blöcken ist jedoch nicht sehr benutzerfreundlich. Wie bei du
können Sie den Parameter -h
für eine “menschenlesbarere” Ausgabe hinzufügen:
$ df -h Filesystem Size Used Avail Use% Mounted on udev 2.9G 0 2.9G 0% /dev tmpfs 582M 2.5M 580M 1% /run /dev/sda1 106G 25G 76G 25% / tmpfs 2.9G 930M 2.0G 32% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 2.9G 0 2.9G 0% /sys/fs/cgroup tmpfs 582M 24K 582M 1% /run/user/119 tmpfs 582M 116K 582M 1% /run/user/1000 /dev/sdb1 88M 1.6M 79M 2% /media/carol/part1 /dev/sdb3 82M 1.6M 74M 3% /media/carol/part3 /dev/sdb2 89M 1.9M 81M 3% /media/carol/part2 /dev/sdc1 299G 223G 76G 75% /media/carol/Samsung Externo
Sie können auch den -i
Parameter verwenden, um die benutzten/verfügbaren Inodes anstelle von Blöcken anzuzeigen:
$ df -i Filesystem Inodes IUsed IFree IUse% Mounted on udev 737142 547 736595 1% /dev tmpfs 745218 908 744310 1% /run /dev/sda6 6766592 307153 6459439 5% / tmpfs 745218 215 745003 1% /dev/shm tmpfs 745218 4 745214 1% /run/lock tmpfs 745218 18 745200 1% /sys/fs/cgroup /dev/sda1 62464 355 62109 1% /boot tmpfs 745218 43 745175 1% /run/user/1000
Ein nützlicher Parameter ist -T
, der auch den Typ jedes Dateisystems ausgibt:
$ df -hT Filesystem Type Size Used Avail Use% Mounted on udev devtmpfs 2.9G 0 2.9G 0% /dev tmpfs tmpfs 582M 2.5M 580M 1% /run /dev/sda1 ext4 106G 25G 76G 25% / tmpfs tmpfs 2.9G 930M 2.0G 32% /dev/shm tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs tmpfs 2.9G 0 2.9G 0% /sys/fs/cgroup tmpfs tmpfs 582M 24K 582M 1% /run/user/119 tmpfs tmpfs 582M 116K 582M 1% /run/user/1000 /dev/sdb1 ext4 88M 1.6M 79M 2% /media/carol/part1 /dev/sdb3 ext4 82M 1.6M 74M 3% /media/carol/part3 /dev/sdb2 ext4 89M 1.9M 81M 3% /media/carol/part2 /dev/sdc1 fuseblk 299G 223G 76G 75% /media/carol/Samsung Externo
Wenn Sie den Dateisystemtyp kennen, können Sie die Ausgabe filtern. Sie können nur Dateisysteme eines bestimmten Typs mit -t TYPE
anzeigen oder Dateisysteme eines bestimmten Typs mit -x TYPE
ausschließen, wie in den folgenden Beispielen zu sehen.
Ausschließen von tmpfs
-Dateisystemen:
$ df -hx tmpfs Filesystem Size Used Avail Use% Mounted on udev 2.9G 0 2.9G 0% /dev /dev/sda1 106G 25G 76G 25% / /dev/sdb1 88M 1.6M 79M 2% /media/carol/part1 /dev/sdb3 82M 1.6M 74M 3% /media/carol/part3 /dev/sdb2 89M 1.9M 81M 3% /media/carol/part2 /dev/sdc1 299G 223G 76G 75% /media/carol/Samsung Externo
Nur ext4
-Dateisysteme anzeigen:
$ df -ht ext4 Filesystem Size Used Avail Use% Mounted on /dev/sda1 106G 25G 76G 25% / /dev/sdb1 88M 1.6M 79M 2% /media/carol/part1 /dev/sdb3 82M 1.6M 74M 3% /media/carol/part3 /dev/sdb2 89M 1.9M 81M 3% /media/carol/part2
Sie können auch die Ausgabe von df
anpassen, indem Sie auswählen, was angezeigt werden soll und in welcher Reihenfolge. Verwenden Sie dazu den Parameter --output=
, gefolgt von einer durch Kommata getrennten Liste von Feldern, die angezeigt werden sollen. Einige der verfügbaren Felder lauten:
source
-
Das dem Dateisystem entsprechende Gerät.
fstype
-
Der Dateisystemtyp.
size
-
Die Gesamtgröße des Dateisystems.
used
-
Wie viel Platz genutzt wird.
avail
-
Wie viel Platz zur Verfügung steht.
pcent
-
Der Prozentsatz der Nutzung.
target
-
Wo das Dateisystem eingehängt, also gemountet ist (Mountpoint).
Wenn Sie eine Ausgabe mit Ziel, Quelle, Typ und Ausnutzung wünschen, gehen Sie wie folgt vor:
$ df -h --output=target,source,fstype,pcent Mounted on Filesystem Type Use% /dev udev devtmpfs 0% /run tmpfs tmpfs 1% / /dev/sda1 ext4 25% /dev/shm tmpfs tmpfs 32% /run/lock tmpfs tmpfs 0% /sys/fs/cgroup tmpfs tmpfs 0% /run/user/119 tmpfs tmpfs 1% /run/user/1000 tmpfs tmpfs 1% /media/carol/part1 /dev/sdb1 ext4 2% /media/carol/part3 /dev/sdb3 ext4 3% /media/carol/part2 /dev/sdb2 ext4 3% /media/carol/Samsung Externo /dev/sdc1 fuseblk 75%
Mit df
können Sie auch Inode-Informationen überprüfen, indem Sie die folgenden Felder an --output=
übergeben:
itotal
-
Die Gesamtzahl der Inodes im Dateisystem.
iused
-
Die Anzahl der verwendeten Inodes im Dateisystem.
iavail
-
Die Anzahl der verfügbaren Inodes im Dateisystem.
ipcent
-
Der Prozentsatz der verwendeten Inodes im Dateisystem.
Zum Beispiel:
$ df --output=source,fstype,itotal,iused,ipcent Filesystem Type Inodes IUsed IUse% udev devtmpfs 735764 593 1% tmpfs tmpfs 744858 1048 1% /dev/sda1 ext4 7069696 318651 5% tmpfs tmpfs 744858 222 1% tmpfs tmpfs 744858 3 1% tmpfs tmpfs 744858 18 1% tmpfs tmpfs 744858 22 1% tmpfs tmpfs 744858 40 1%
Wartung von ext2-, ext3- und ext4-Dateisystemen
Um ein Dateisystem auf Fehler zu überprüfen (und diese hoffentlich zu beheben), stellt Linux das Dienstprogramm fsck
zur Verfügung (denken Sie an “filesystem check” und Sie werden den Namen nie vergessen). In seiner einfachsten Form rufen Sie fsck
auf, gefolgt von dem Ort des zu überprüfenden Dateisystems:
# fsck /dev/sdb1 fsck from util-linux 2.33.1 e2fsck 1.44.6 (5-Mar-2019) DT_2GB: clean, 20/121920 files, 369880/487680 blocks
Warning
|
Lassen Sie NIEMALS |
fsck
überprüft das Dateisystem nicht selbst; es ruft lediglich das für den Dateisystemtyp passende Dienstprogramm dafür auf. Da im obigen Beispiel kein Dateisystemtyp angegeben wurde, nimmt fsck
standardmäßig ein ext2/3/4-Dateisystem an und ruft e2fsck
auf.
Mit der Option -t
geben Sie ein Dateisystem an, gefolgt von dem Namen des Dateisystems, wie in fsck -t vfat /dev/sdc
. Alternativ können Sie ein dateisystemspezifisches Dienstprogramm direkt aufrufen, wie z.B. fsck.msdos
für FAT-Dateisysteme.
Tip
|
Geben Sie |
fsck
kann einige Kommandozeilenargumente entgegennehmen — hier einige der gebräuchlichsten:
-A
-
Überprüft alle Dateisysteme, die in
/etc/fstab
aufgeführt sind. -C
-
Zeigt beim Prüfen eines Dateisystems einen Fortschrittsbalken an. Funktioniert aktuell nur auf ext2/3/4-Dateisystemen.
-N
-
Zeigt an, was getan werden würde, und beendet, ohne das Dateisystem tatsächlich zu verändern.
-R
-
In Verbindung mit
-A
überspringt es die Überprüfung des Root-Dateisystems. -V
-
Verbose-Modus, zeigt während des Betriebs mehr Informationen als gewöhnlich an. Dies ist für die Fehlersuche nützlich.
Das spezifische Dienstprogramm für ext2-, ext3- und ext4-Dateisysteme ist e2fsck
, auch fsck.ext2
, fsck.ext3
und fsck.ext4
genannt (diese drei sind lediglich Links zu e2fsck
). Standardmäßig läuft es im interaktiven Modus: Wenn ein Dateisystemfehler gefunden wird, stoppt es und fragt, was zu tun ist. Sie müssen nun y
eingeben, um das Problem zu beheben, n
, um es nicht zu beheben, oder a
, um das aktuelle Problem und alle nachfolgenden zu beheben.
Natürlich ist es wenig produktiv, vor einem Terminal zu sitzen, auf Fragen von e2fsck
zu warten und diese einzeln zu beantworten — besonders wenn Sie es mit einem großen Dateisystem zu tun haben. Es gibt also Optionen, e2fsck
im nicht-interaktiven Modus zu betreiben:
-p
-
versucht, alle gefundenen Fehler automatisch zu beheben. Bei einem Fehler, der ein Eingreifen des Systemadministrators erfordert, liefert
e2fsck
eine Beschreibung des Problems und beendet sich. -y
-
beantwortet alle Fragen mit
y
(ja). -n
-
Gegenteil von
-y
. Neben der Beantwortung aller Fragen mitn
(nein) führt dies dazu, dass das Dateisystem schreibgeschützt gemountet wird, so dass es nicht verändert werden kann. -f
-
zwingt
e2fsck
, ein Dateisystem zu überprüfen, auch wenn es als “sauber” markiert ist, d.h. korrekt ausgehängt wurde.
Feinabstimmung eines ext-Dateisystems
ext2-, ext3- und ext4-Dateisysteme haben eine Reihe von Parametern, die vom Systemadministrator angepasst oder “getunt” werden können, um den Anforderungen des Systems besser gerecht zu werden. Das zum Anzeigen oder Ändern dieser Parameter verwendete Dienstprogramm heißt tune2fs
.
Um die aktuellen Parameter für ein beliebiges Dateisystem zu sehen, verwenden Sie den Parameter -l
, gefolgt von dem Gerät, das die Partition repräsentiert. Das folgende Beispiel zeigt die Ausgabe dieses Befehls für die erste Partition der ersten Platte (/dev/sda1
) einer Maschine:
# tune2fs -l /dev/sda1 tune2fs 1.44.6 (5-Mar-2019) Filesystem volume name: <none> Last mounted on: / Filesystem UUID: 6e2c12e3-472d-4bac-a257-c49ac07f3761 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum Filesystem flags: signed_directory_hash Default mount options: user_xattr acl Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 7069696 Block count: 28255605 Reserved block count: 1412780 Free blocks: 23007462 Free inodes: 6801648 First block: 0 Block size: 4096 Fragment size: 4096 Group descriptor size: 64 Reserved GDT blocks: 1024 Blocks per group: 32768 Fragments per group: 32768 Inodes per group: 8192 Inode blocks per group: 512 Flex block group size: 16 Filesystem created: Mon Jun 17 13:49:59 2019 Last mount time: Fri Jun 28 21:14:38 2019 Last write time: Mon Jun 17 13:53:39 2019 Mount count: 8 Maximum mount count: -1 Last checked: Mon Jun 17 13:49:59 2019 Check interval: 0 (<none>) Lifetime writes: 20 GB Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 256 Required extra isize: 32 Desired extra isize: 32 Journal inode: 8 First orphan inode: 5117383 Default directory hash: half_md4 Directory Hash Seed: fa95a22a-a119-4667-a73e-78f77af6172f Journal backup: inode blocks Checksum type: crc32c Checksum: 0xe084fe23
ext-Dateisysteme haben Mount-Zähler (mount counts). Der Zähler wird jedes Mal um 1 erhöht, wenn das Dateisystem gemountet wird. Wird ein Schwellenwert, der maximale Mount-Zähler (maximum mount count) erreicht, wird das System beim nächsten Start automatisch mit e2fsck
überprüft.
Der maximale Mount-Zähler kann mit dem Parameter -c N
festgelegt werden, wobei N
die Anzahl der Dateisystem-Mounts ohne Überprüfung ist. Der Parameter -C N
setzt die Anzahl, die das System gemountet wurde, auf den Wert von N
. Beachten Sie, dass bei Kommandozeilenparametern die Groß-/Kleinschreibung berücksichtigt wird, so dass sich -c
von -C
unterscheidet.
Es ist auch möglich, ein Zeitintervall zwischen den Prüfungen zu definieren: mit dem Parameter -i
, gefolgt von einer Zahl und den Buchstaben d
für Tage, m
für Monate und y
für Jahre. Zum Beispiel würde -i 10d
das Dateisystem beim nächsten Neustart alle 10 Tage überprüfen. Verwenden Sie Null als Wert, um diese Funktion zu deaktivieren.
-L
dient dazu, ein Label für das Dateisystem zu setzen. Dieses Label kann bis zu 16 Zeichen umfassen. Der Parameter -U
legt die UUID für das Dateisystem als 128-Bit-Hexadezimalzahl fest. Im obigen Beispiel lautet die UUID 6e2c12e3-472d-4bac-a257-c49ac07f3761
. Sowohl das Label als auch die UUID können anstelle des Gerätenamens (wie /dev/sda1
) verwendet werden, um das Dateisystem zu mounten.
Die Option -e BEHAVIOUR
definiert das Verhalten des Kernels, wenn ein Dateisystemfehler gefunden wird. Es gibt drei mögliche Verhaltensweisen:
continue
-
Die Ausführung wird fortgesetzt.
remount-ro
-
Das Dateisystem wird schreibgeschützt neu gemountet.
panic
-
Verursacht eine Kernel-Panik.
Das Standardverhalten ist continue
(fortsetzen). remount-ro
könnte in datenempfindlichen Anwendungen nützlich sein, da es Schreibvorgänge auf die Platte sofort stoppt und so weitere potentielle Fehler vermeidet.
ext3-Dateisysteme sind im Grunde ext2-Dateisysteme mit einem Journal. Mit tune2fs
können Sie ein Journal zu einem ext2-Dateisystem hinzufügen und es so nach ext3 konvertieren. Die Prozedur ist einfach, übergeben Sie dazu den Parameter -j
an tune2fs
, gefolgt von dem Gerät, das das Dateisystem enthält:
# tune2fs -j /dev/sda1
Vergessen Sie danach beim Mounten des umgewandelten Dateisystems nicht, den Typ auf ext3
zu setzen, damit das Journal verwendet werden kann.
Wenn Sie mit Journal-Dateisystemen arbeiten, erlaubt der Parameter -J
zusätzliche Parameter, um einige Journaloptionen zu setzen, beispielsweise: -J size=
für die Journalgröße (in Megabytes); -J location=
, um anzugeben, wo das Journal gespeichert werden soll (entweder ein bestimmter Block oder eine bestimmte Position auf der Platte mit Suffixen wie M
oder G
); sogar -J device=
, um das Journal auf ein externes Gerät zu legen.
Sie können mehrere Parameter auf einmal angeben, indem Sie diese durch Kommas trennen. Zum Beispiel wird -J size=10,location=100M,device=/dev/sdb1
ein 10 MB großes Journal an der 100-MB-Position auf dem Gerät /dev/sdb1
erstellen.
Warning
|
|
Verwalten von XFS-Dateisystemen
Für XFS-Dateisysteme ist das Äquivalent von fsck
xfs_repair
. Wenn Sie vermuten, dass etwas mit dem Dateisystem nicht stimmt, müssen Sie es zunächst auf Schäden überprüfen.
Übergeben Sie dafür den Parameter -n
an xfs_repair
, gefolgt von dem Gerät, das das Dateisystem enthält. Der Parameter -n
bedeutet “no modify”: das Dateisystem wird überprüft, Fehler werden gemeldet, aber es werden keine Reparaturen durchgeführt:
# xfs_repair -n /dev/sdb1 Phase 1 - find and verify superblock... Phase 2 - using internal log - zero log... - scan filesystem freespace and inode maps... - found root inode chunk Phase 3 - for each AG... - scan (but do not clear) agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 - agno = 1 - agno = 2 - agno = 3 - process newly discovered inodes... Phase 4 - check for duplicate blocks... - setting up duplicate extent list... - check for inodes claiming duplicate blocks... - agno = 1 - agno = 3 - agno = 0 - agno = 2 No modify flag set, skipping phase 5 Phase 6 - check inode connectivity... - traversing filesystem ... - traversal finished ... - moving disconnected inodes to lost+found ... Phase 7 - verify link counts... No modify flag set, skipping filesystem flush and exiting.
Wenn Fehler gefunden werden, können Sie mit der Reparatur ohne den Parameter -n
fortfahren, beispielsweise so: xfs_repair /dev/sdb1
.
xfs_repair
akzeptiert eine Reihe von Befehlszeilenoptionen. Unter anderem:
-l LOGDEV
und-r RTDEV
-
Diese werden benötigt, wenn das Dateisystem externe Log- und Echtzeit-Sektionen besitzt. Ersetzen Sie in diesem Fall
LOGDEV
undRTDEV
durch die entsprechenden Geräte. -m N
-
Wird benutzt, um den Speicherverbrauch von
xfs_repair
aufN
Megabyte zu begrenzen, was bei Servereinstellungen nützlich sein kann. Laut Manpage skaliertxfs_repair
standardmäßig seinen Speicherverbrauch je nach Bedarf auf bis zu 75% des physischen RAM des Systems. -d
-
Der Modus “dangerous” (gefährlich) ermöglicht die Reparatur von Dateisystemen, die schreibgeschützt gemountet sind.
-v
-
Sie haben es vielleicht schon erraten: Verbose-Modus. Dieser Parameter erhöht die “Ausführlichkeit” der Ausgabe (z.B. wird
-v -v
mehr Informationen liefern als nur-v
).
Beachten Sie, dass xfs_repair
nicht in der Lage ist, Dateisysteme mit einem “schmutzigen” Log zu reparieren. Sie können ein korruptes Log mit dem Parameter L
“zurücksetzen”, aber bedenken Sie, dass dies der letzte Ausweg ist, da es zu einer Beschädigung des Dateisystems und Datenverlust führen kann.
Um ein XFS-Dateisystem zu debuggen, nutzen Sie das Dienstprogramm xfs_db
, beispielsweise mittels xfs_db /dev/sdb1
. Es wird meist verwendet, um verschiedene Elemente und Parameter des Dateisystems zu untersuchen.
Dieses Dienstprogramm hat eine interaktive Eingabeaufforderung, wie parted
, mit vielen internen Befehlen. Ein Hilfesystem ist ebenfalls verfügbar: Geben Sie help
für eine Liste aller Befehle ein, und help
gefolgt vom Namen des Befehls, um weitere Informationen über den Befehl zu erhalten.
Ein weiteres nützliches Dienstprogramm ist xfs_fsr
, um ein XFS-Dateisystem zu reorganisieren (“defragmentieren”). Ohne zusätzliche Argumente läuft es zwei Stunden lang und versucht, alle gemounteten, beschreibbaren XFS-Dateisysteme zu defragmentieren, die in der Datei /etc/mtab/
gelistet sind. Möglicherweise müssen Sie dieses Dienstprogramm mit dem Paketmanager Ihrer Linux-Distribution installieren, falls es nicht Teil einer Standardinstallation ist. Für weitere Informationen konsultieren Sie die entsprechende Manpage.
Geführte Übungen
-
Wie prüfen Sie mittels
du
, wie viel Speicherplatz nur von den Dateien im aktuellen Verzeichnis benutzt wird? -
Listen Sie mit
df
Informationen für jedes ext4-Dateisystem auf, wobei die Ausgaben die Felder in der folgenden Reihenfolge enthalten: Gerät, Einhängepunkt, Gesamtzahl der Inodes, Anzahl der verfügbaren Inodes, Prozentsatz des freien Speicherplatzes. -
Wie lautet der Befehl,
e2fsck
auf/dev/sdc1
im nicht-interaktiven Modus auszuführen und dabei zu versuchen, die meisten Fehler automatisch zu beheben? -
Angenommen,
/dev/sdb1
ist ein ext2-Dateisystem. Wie können Sie es nach ext3 konvertieren und gleichzeitig die Anzahl seiner Mounts zurücksetzen sowie seine Bezeichnung inUserData
ändern? -
Wie können Sie ein XFS-Dateisystem auf Fehler überprüfen, ohne die gefundenen Schäden zu reparieren?
Offene Übungen
-
Angenommen, Sie haben ein ext4-Dateisystem auf
/dev/sda1
mit den folgenden Parametern, die Sie mittune2fs
ermittelt haben:Mount count: 8 Maximum mount count: -1
Was passiert beim nächsten Bootvorgang, wenn zuvor der Befehl
tune2fs -c 9 /dev/sda1
ausgeführt wird? -
Betrachten Sie die folgende Ausgabe von
du -h
:$ du -h 216K ./somedir/anotherdir 224K ./somedir 232K .
Wie viel Platz wird nur von den Dateien im aktuellen Verzeichnis belegt? Wie könnten Sie den Befehl umschreiben, um diese Informationen deutlicher zu zeigen?
-
Was würde mit dem ext2-Dateisystem
/dev/sdb1
passieren, wenn der unten stehende Befehl ausgeführt wird?# tune2fs -j /dev/sdb1 -J device=/dev/sdc1 -i 30d
-
Wie überprüfen Sie ein XFS-Dateisystem auf
/dev/sda1
, das eine Log-Sektion auf/dev/sdc1
hat, auf Fehler, ohne irgendwelche Reparaturen vorzunehmen? -
Was ist der Unterschied zwischen den Parametern
-T
und-t
fürdf
?
Zusammenfassung
In dieser Lektion haben Sie gelernt:
-
Wie Sie den benutzten und freien Speicherplatz auf einem Dateisystem überprüfen.
-
Wie Sie die Ausgabe von
df
an die eigenen Bedürfnisse anpassen. -
Wie Sie die Integrität eines Dateisystems mit
fsck
unde2fsck
überprüfen und reparieren. -
Wie Sie ein ext-Dateisystem mit
tune2fs
feintunen. -
Wie Sie XFS-Dateisysteme mit
xfs_repair
überprüfen und reparieren.
Die folgenden Befehle wurden in dieser Lektion besprochen:
du
-
Zeigt die Menge des verwendeten Speicherplatzes auf einem Dateisystem an.
df
-
Zeigt die Menge des verfügbaren (freien) Speicherplatzes auf einem Dateisystem an.
fsck
-
Das Reparaturprogramm für den Dateisystemcheck.
e2fsck
-
Das für erweiterte (ext2/3/4) Dateisysteme spezifische Reparaturprogramm für Dateisystemprüfungen.
tune2fs
-
Ändert Dateisystemparameter auf einem erweiterten (ext2/3/4) Dateisystem.
xfs_repair
-
Das Äquivalent von
fsck
für XFS-Dateisysteme. xfs_db
-
Das Dienstprogramm für die Anzeige verschiedener Parameter eines XFS-Dateisystems.
Lösungen zu den geführten Übungen
-
Wie prüfen Sie mittels
du
, wie viel Speicherplatz nur von den Dateien im aktuellen Verzeichnis benutzt wird?Verwenden Sie zunächst den Parameter
-S
, um die Ausgabe des aktuellen Verzeichnisses von seinen Unterverzeichnissen zu trennen. Dann verwenden Sie-d 0
, um die Ausgabetiefe auf Null zu begrenzen, was “Unterverzeichnisse” ausschließt. Vergessen Sie nicht-h
für eine Ausgabe in einem “menschenlesbaren” Format:$ du -S -h -d 0
oder
$ du -Shd 0
-
Listen Sie mit
df
Informationen für jedes ext4-Dateisystem auf, wobei die Ausgaben die Felder in der folgenden Reihenfolge enthalten: Gerät, Einhängepunkt, Gesamtzahl der Inodes, Anzahl der verfügbaren Inodes, Prozentsatz des freien Speicherplatzes.Sie können Dateisysteme mit der Option
-t
gefolgt vom Dateisystemnamen filtern. Für die benötigte Ausgabe benutzen Sie--output=source,target,itotal,iavail,pcent
. Die Antwort lautet also:--output=source,target,itotal,iavail,pcent
:$ df -t ext4 --output=source,target,itotal,iavail,pcent
-
Wie lautet der Befehl,
e2fsck
auf/dev/sdc1
im nicht-interaktiven Modus auszuführen und dabei zu versuchen, die meisten Fehler automatisch zu beheben?Der Parameter zur automatischen Fehlerbehebung ist
-p
. Die Antwort lautet also:# e2fsck -p /dev/sdc1
-
Angenommen,
/dev/sdb1
ist ein ext2-Dateisystem. Wie können Sie es nach ext3 konvertieren und gleichzeitig die Anzahl seiner Mounts zurücksetzen sowie seine Bezeichnung inUserData
ändern?Denken Sie daran, dass das Umwandeln eines ext2-Dateisystems in ext3 nur im Hinzufügen eines Journals besteht, was mit dem Parameter
-j
geschieht. Um die Anzahl der Mounts zurückzusetzen, benutzen Sie-C 0
. Um die Bezeichnung zu ändern, benutzen Sie-L UserData
. Die richtige Antwort lautet:# tune2fs -j -C 0 -L UserData /dev/sdb1
-
Wie können Sie ein XFS-Dateisystem auf Fehler überprüfen, ohne die gefundenen Schäden zu reparieren?
Verwenden Sie den Parameter
-n
, wie inxfs -n
, gefolgt von dem entsprechenden Gerät.
Lösungen zu den offenen Übungen
-
Angenommen, Sie haben ein ext4-Dateisystem auf
/dev/sda1
mit den folgenden Parametern, die Sie mittune2fs
ermittelt haben:Mount count: 8 Maximum mount count: -1
Was passiert beim nächsten Bootvorgang, wenn zuvor der Befehl
tune2fs -c 9 /dev/sda1
ausgeführt wird?Der Befehl setzt die maximale Mount-Zahl für das Dateisystem auf 9. Da die aktuelle Mount-Zahl bei 8 liegt, wird beim nächsten Systemstart eine Überprüfung des Dateisystems durchgeführt.
-
Betrachten Sie die folgende Ausgabe von
du -h
:$ du -h 216K ./somedir/anotherdir 224K ./somedir 232K .
Wie viel Platz wird nur von den Dateien im aktuellen Verzeichnis belegt? Wie könnten Sie den Befehl umschreiben, um diese Informationen deutlicher zu zeigen?
Von den insgesamt 232 K werden 224 K von dem Unterverzeichnis
somedir
und seinen Unterverzeichnissen verwendet. Wenn man diese abzieht, haben wir also 8 K, die von den Dateien im aktuellen Verzeichnis belegt werden. Diese Information kann durch Verwendung des Parameters-S
, der die Verzeichnisse in der Aufzählung trennt, deutlicher dargestellt werden. -
Was würde mit dem ext2-Dateisystem
/dev/sdb1
passieren, wenn der unten stehende Befehl ausgeführt wird?# tune2fs -j /dev/sdb1 -J device=/dev/sdc1 -i 30d
Eine Journal wird zu
/dev/sdb1
hinzugefügt, das damit in ext3 umgewandelt wird. Das Journal wird auf dem Gerät/dev/sdc1
gespeichert, und das Dateisystem wird alle 30 Tage überprüft. -
Wie überprüfen Sie ein XFS-Dateisystem auf
/dev/sda1
, das eine Log-Sektion auf/dev/sdc1
hat, auf Fehler, ohne irgendwelche Reparaturen vorzunehmen?Verwenden Sie
xfs_repair
, gefolgt von-l /dev/sdc1
, um das Gerät anzugeben, das die Log-Sektion enthält, und-n
, um Änderungen zu vermeiden.# xfs_repair -l /dev/sdc1 -n
-
Was ist der Unterschied zwischen den Parametern
-T
und-t
fürdf
?Der Parameter
-T
wird den Typ jedes Dateisystems in die Ausgabe vondf
einschließen.-t
ist ein Filter und zeigt in der Ausgabe nur Dateisysteme des angegebenen Typs an — alle anderen werden ausgeblendet.