E4rat: Unterschied zwischen den Versionen
K ein wenig akualisiert |
Keine Bearbeitungszusammenfassung |
||
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt) | |||
Zeile 5: | Zeile 5: | ||
==Arbeitsweise== | ==Arbeitsweise== | ||
Betrachtet man einen gewöhnlichen Bootvorgang, dann stellt man fest, dass weder der Prozessor noch die Festplatte | Betrachtet man einen gewöhnlichen Bootvorgang, dann stellt man fest, dass weder der Prozessor noch die Festplatte währenddessen vollkommen ausgelastet sind. e4rat sorgt für eine hohe Auslastung der Festplatte und der CPU während des Systemstarts und reduziert somit die Startzeit immens. Dabei müssen drei Schritte durchlaufen werden: | ||
* '''e4rat-collect''' - Erstellt eine Liste der beim Start benötigten Dateien in einem festgelegtem Zeitraum (Standardwert sind 120 Sekunden. Dieser kann aber angepasst werden) | * '''e4rat-collect''' - Erstellt eine Liste der beim Start benötigten Dateien in einem festgelegtem Zeitraum (Standardwert sind 120 Sekunden. Dieser kann aber angepasst werden) | ||
* '''e4rat-realloc''' - Umsortieren der gelisteten Daten direkt auf dem Datenträger | * '''e4rat-realloc''' - Umsortieren der gelisteten Daten direkt auf dem Datenträger | ||
Zeile 21: | Zeile 21: | ||
Um e4rat-collect dazu zu bewegen, die Liste der beim Boot benötigten Dateien zu erstellen, ist es notwendig in der 'Kernel'-Zeile der Bootloader-Konfiguration ('''/boot/grub/menu.lst''' (grub legacy) oder '''/boot/grub/grub.cfg''' (grub2)) folgendes hinzuzufügen: | Um e4rat-collect dazu zu bewegen, die Liste der beim Boot benötigten Dateien zu erstellen, ist es notwendig in der 'Kernel'-Zeile der Bootloader-Konfiguration ('''/boot/grub/menu.lst''' (grub legacy) oder '''/boot/grub/grub.cfg''' (grub2)) folgendes hinzuzufügen: | ||
<pre>init=/ | <pre>init=/usr/bin/e4rat-collect</pre> | ||
Dies muss nur ein einziges Mal getan werden, weshalb die Zeile nach dem ersten Boot wieder von der Eingabe bereinigt werden sollte. | Dies muss nur ein einziges Mal getan werden, weshalb die Zeile nach dem ersten Boot wieder von der Eingabe bereinigt werden sollte. | ||
Zeile 35: | Zeile 35: | ||
<pre>pkill e4rat-collect</pre> | <pre>pkill e4rat-collect</pre> | ||
Nach einem erfolgreichen Start und nachdem die | Nach einem erfolgreichen Start und nachdem die eingestellte Wartezeit verstrichen ist, sollte folgende Datei existieren: | ||
'''/var/lib/e4rat/startup.log''' | '''/var/lib/e4rat/startup.log''' | ||
Zeile 46: | Zeile 46: | ||
<pre>e4rat-realloc /var/lib/e4rat/startup.log</pre> | <pre>e4rat-realloc /var/lib/e4rat/startup.log</pre> | ||
Je nachdem wie viele Dateien in startup.log aufgelistet sind, kann dieser Prozess einige Zeit in Anspruch nehmen. | Je nachdem wie viele Dateien in startup.log aufgelistet sind, kann dieser Prozess einige Zeit in Anspruch nehmen. | ||
Und man kann auch davon ausgehen, | Und man kann auch davon ausgehen, dass einmal e4rat-realloc laufen lassen nicht genügt. Man kann sich da ein Script bauen, das einem das erneut aufrufen von e4rat-ralloc übernimmt | ||
<pre> | <pre> | ||
for i in {1..50} | for i in {1..50} | ||
Zeile 52: | Zeile 52: | ||
/usr/bin/e4rat-realloc /var/lib/e4rat/startup.log | /usr/bin/e4rat-realloc /var/lib/e4rat/startup.log | ||
done</pre> | done</pre> | ||
...wenn man mag verschiebt man das | ...wenn man mag verschiebt man das Script nach: | ||
<pre>/usr/local/bin</pre> | <pre>/usr/local/bin</pre> | ||
dann kann mans ganz einfach im multi-user.target aufrufen. | dann kann mans ganz einfach im multi-user.target aufrufen. | ||
Zeile 59: | Zeile 59: | ||
Um sich die vorgenommenen Anpassungen zunutze machen zu können, ist folgender Eintrag in die 'kernel'-Zeile der Konfigurationsdatei des Bootloaders ('''/boot/grub/menu.lst''' (grub legacy) oder '''/boot/grub/grub.cfg''' (grub2)) notwendig: | Um sich die vorgenommenen Anpassungen zunutze machen zu können, ist folgender Eintrag in die 'kernel'-Zeile der Konfigurationsdatei des Bootloaders ('''/boot/grub/menu.lst''' (grub legacy) oder '''/boot/grub/grub.cfg''' (grub2)) notwendig: | ||
<pre>init=/ | <pre>init=/usr/bin/e4rat-preload</pre> | ||
Beim nächsten Start sollten sich die Geschwindigkeitsvorteile deutlich bemerkbar machen. Sollte sich beim Startvorgang etwas geändert haben, ist es ratsam die ersten beiden Schritte erneut durchzuführen, um die Veränderung auch in die Optimierung einfließen zu lassen. | Beim nächsten Start sollten sich die Geschwindigkeitsvorteile deutlich bemerkbar machen. Sollte sich beim Startvorgang etwas geändert haben, ist es ratsam die ersten beiden Schritte erneut durchzuführen, um die Veränderung auch in die Optimierung einfließen zu lassen. |
Aktuelle Version vom 21. Juni 2017, 20:10 Uhr
e4rat steht für e4 "reduced access time" und ist ein Projekt von Andreas Rid und Gundolf Kiefer. Die Software setzt sich aus drei Teilen zusammen: e4rat-collect, e4rat-realloc und e4rat-preload.
Wie aus dem Namen schon hervorgeht, funktioniert diese Software nur mit dem ext4-Dateisystem!
Arbeitsweise
Betrachtet man einen gewöhnlichen Bootvorgang, dann stellt man fest, dass weder der Prozessor noch die Festplatte währenddessen vollkommen ausgelastet sind. e4rat sorgt für eine hohe Auslastung der Festplatte und der CPU während des Systemstarts und reduziert somit die Startzeit immens. Dabei müssen drei Schritte durchlaufen werden:
- e4rat-collect - Erstellt eine Liste der beim Start benötigten Dateien in einem festgelegtem Zeitraum (Standardwert sind 120 Sekunden. Dieser kann aber angepasst werden)
- e4rat-realloc - Umsortieren der gelisteten Daten direkt auf dem Datenträger
- e4rat-preload - Vorheriges Laden der Dateien
Wem es etwas nützt, und wem nicht
Beim booten in den X-Server auf typischen Einzeluser-Systemen hat sich e4rat schon oft als sehr effizient erwiesen. Handelt es sich jedoch beim Rechner um einen Server, welcher nur in die Kommandozeile bootet, wird sich der Speedgewinn sehr in Grenzen halten. Weiterhin profitieren auch SSDs nicht sehr stark vom Umsortieren der Daten, da die Latenzen bei SSDs in der Regel unabhängig von der Position der Dateien auf dem Datenträger sind.
Achtung: Die Version 0.20 zerstörte noch komplette Dateisysteme, welche zu ext4-Systemen umgewandelt worden waren. Es wird generell geraten vor Installation und Verwendung der Tools ein Backup der auf der Partition befindlichen Dateien zu erstellen!
Installation
Das Programm ist als e4ratAUR im AUR verfügbar, und kann von dort zum Beispiel mit einem der AUR Hilfsprogramme installiert werden.
Bei der Verwendung von AUR-Hilfsprogrammen ist zu beachten, dass Pakete niemals „blind“ installiert werden sollten. Vor dem Installieren sollten die Kommentare im AUR gelesen, und das PKGBUILD geprüft werden.
Verwendung
e4rat-collect
Um e4rat-collect dazu zu bewegen, die Liste der beim Boot benötigten Dateien zu erstellen, ist es notwendig in der 'Kernel'-Zeile der Bootloader-Konfiguration (/boot/grub/menu.lst (grub legacy) oder /boot/grub/grub.cfg (grub2)) folgendes hinzuzufügen:
init=/usr/bin/e4rat-collect
Dies muss nur ein einziges Mal getan werden, weshalb die Zeile nach dem ersten Boot wieder von der Eingabe bereinigt werden sollte.
Da e4rat-collect die ersten 120 Sekunden des Bootvorgangs überwacht (dies kann in /etc/e4rat.conf geändert werden), ist es weiterhin ratsam, sich einzuloggen und danach alle oft verwendeten Programm zu starten. Denn deren benötigten Dateien werden auch gecached werden. Dies führt dazu, dass der Systemstart nicht nur schneller von statten geht, sondern auch dass oft verwendete Programme so gut wie augenblicklich gestartet werden können.
Um e4rat-collect manuell zu deaktivieren benutzt man entweder:
e4rat-collect -k
oder:
pkill e4rat-collect
Nach einem erfolgreichen Start und nachdem die eingestellte Wartezeit verstrichen ist, sollte folgende Datei existieren: /var/lib/e4rat/startup.log
Man sollte daran denken den Eintrag in die Konfigurationsdatei des Bootloaders wieder zu entfernen, sofern man den Befehl für die Analyse der beim Start benötigten Dateien nicht während des Bootvorgangs im Bootloader lediglich temporär hinzugefügt hat.
e4rat-realloc
Für die Umsortierung der Dateien, sollte man ins multi-user.target wechseln:
sudo systemctl isolate multi-user.target
Als root eingeloggt:
e4rat-realloc /var/lib/e4rat/startup.log
Je nachdem wie viele Dateien in startup.log aufgelistet sind, kann dieser Prozess einige Zeit in Anspruch nehmen. Und man kann auch davon ausgehen, dass einmal e4rat-realloc laufen lassen nicht genügt. Man kann sich da ein Script bauen, das einem das erneut aufrufen von e4rat-ralloc übernimmt
for i in {1..50} do /usr/bin/e4rat-realloc /var/lib/e4rat/startup.log done
...wenn man mag verschiebt man das Script nach:
/usr/local/bin
dann kann mans ganz einfach im multi-user.target aufrufen.
e4rat-preload
Um sich die vorgenommenen Anpassungen zunutze machen zu können, ist folgender Eintrag in die 'kernel'-Zeile der Konfigurationsdatei des Bootloaders (/boot/grub/menu.lst (grub legacy) oder /boot/grub/grub.cfg (grub2)) notwendig:
init=/usr/bin/e4rat-preload
Beim nächsten Start sollten sich die Geschwindigkeitsvorteile deutlich bemerkbar machen. Sollte sich beim Startvorgang etwas geändert haben, ist es ratsam die ersten beiden Schritte erneut durchzuführen, um die Veränderung auch in die Optimierung einfließen zu lassen.
e4rat mit anderem init-System
Standardmäßig ist e4rat-collect so eingestellt, dass es sich selbst mit /sbin/init nach erfolgreichem Ausführen ersetzt. Systemd benötigt jedoch PID 1, darum muß man den init-Parameter in /etc/e4rat.conf verändern, indem man die zugehörige Zeile ändert in:
/usr/lib/systemd/systemd
Tips und Tricks
Falls etwas nicht wie beschrieben funktionieren sollte, gibt es einige Möglichkeiten dies zu beheben:
startup.log wird nicht erstellt
- ist der kernel mit audit support kompiliert? wenn nicht, muß man sich selbst einen kernel mit audit support bauen:
1) linux PKGBUILD runter laden 2a) wenn man "nconfig" nutzt findet sich diese option in "general setup" => "auditing support" 2b) oder in der "config" datei "CONFIG_AUDIT=y" setzen und das führende # entfernen, makepkg -g >> PKGBUILD laufen lassen 3) kompilieren mit makepkg -rsi
e4rat beschwert sich fälschlicherweise über ein ext2-Dateisystem
- man füge folgenden Eintrag zur 'kernel'-Zeile des Bootloaders hinzu:
rootfstype=ext4