Bei der Verwendung eines USB-Sticks mit einem persistenten Betriebssystem kommt es vor, dass die persistente Partition casper-rw
beschädigt wird, wenn der USB-Stick nach dem Herunterfahren des Betriebssystems zu früh herausgezogen wird.
Leider habe ich bei Ubuntustudio-20.04.2 nach dem Klicken auf die Schaltfläche „Herunterfahren“ Zeiträume von bis zu einer Minute erlebt, in denen der Bildschirm schwarz ist, aber große Schreibvorgänge auf der casper-rw
Partition stattfinden. Es kann also sehr leicht passieren, dass man es zerstört, wenn man den Stick zu früh herauszieht.
Um mich nach einem solchen Missgeschick zu erholen, erstelle ich eine Sicherungspartition casper-rw
und verwende (nachdem ich Superuser geworden bin) die folgenden Befehle, nachdem ich die Variablen QUELLE und ZIEL richtig gesetzt habe:
time cp -a "${QUELLE}/upper" "${ZIEL}"
time cp -a "${QUELLE}/work" "${ZIEL}"
time cp -a "${QUELLE}/lost+found" "${ZIEL}"
Wenn mein Skript ausgeführt wird, sehe ich
- sehr geringe CPU-Aktivität
- sehr geringer RAM-Verbrauch
htop
zeigt mir, dass sich dercp -a
Vorgang sehr viel Zeit im Zustand D befindet.
Wenn ich das richtig verstanden habe (bitte korrigieren Sie mich), bedeutet dies, dass der Computer sehr oft warten muss, weil der Controller des USB-Sticks diese vielen Lese- und Schreibvorgänge nicht effektiv bewältigen kann (obwohl es sich um ein USB3-Gerät in einer USB3-Buchse handelt!).
Gibt es eine Möglichkeit, cp -a
größere Puffer verwenden, um die Dinge zu beschleunigen, idealerweise ganze Dateien sequenziell schreiben?
Antwort1
Es sieht so aus, als ob man das Kopieren erheblich beschleunigen kann, indem man zuerst die Verzeichnisse und (sofern vorhanden) in der Partition in ein Verzeichnis auf einer SSD kopiert upper
. work
Dieser lost+found
Schritt casper-rw
dauert etwas mehr als 2 Minuten. Man kann cp -a
für diesen Zweck verwenden.
Wenn Sie das Backup auf demselben Stick in einer separaten Partition haben möchten, cp -a
dauerte das Kopieren von der SSD auf den USB-Stick etwa 31 Minuten (für 4,1 GiB Daten in etwa 66500 Dateien, USB3-Stick in einer USB3-Buchse). Der vorherige Inhalt der Partition wurde gelöscht, rm -rf "${ZIEL}/upper"; rm -rf "${ZIEL}/work"; rm -rf "${ZIEL}/lost+found
bevor der aktuelle Inhalt auf die Backup-Partition kopiert wurde.
Weiß jemand, ob es einen Unterschied macht, ob eine Partition vor der Wiederverwendung auf diese Weise gelöscht wurde oder ob es noch schneller geht, wenn man sie überformatiert, bevor man den Nettoinhalt dort ablegt? Im Falle einer beschädigten Partition casper-rw
muss man sie formatieren, bevor man ihren Inhalt aus dem Backup wiederherstellt.
Natürlich könnte man das noch verbessern, indem man ein Backup als macht backup.tar.gz
. Das reduziert die zu schreibende Datenmenge und vor allem der zweite Schritt würde davon profitieren.
Antwort2
Verwenden Sie sync
diese Option, um das sofortige Schreiben in das Ziel zu erzwingen.
Wenn Sie cp
eine Datei haben und diese im Zieldateisystem erscheint, ist nicht garantiert, dass sich die Datei tatsächlich schon auf dem Speichermedium befindet.
Der Grund dafür ist, dass die Daten zunächst zwischen verschiedenen internen Puffern abgerufen werden, was schneller und benutzerfreundlicher ist, bis sie tatsächlich auf dem Zielspeichergerät sind. Das Schreiben der Daten auf das Zielgerät erfolgt tatsächlich im Hintergrund und verbraucht nicht viele CPU-Zyklen. Deshalb kann es schwierig sein, es in den Aktivitätsmonitoren anzuzeigen.
Sie können immer versuchen, einen sofortigen Schreibvorgang aus den Puffern auf das Zielspeichergerät zu erzwingen, indem Sie sync
nach dem Kopieren beispielsweisecp ${QUELLE} ${ZIEL} && sync
Erwägen Sie außerdem, rsync
nur geänderte oder neue Dateien an das Ziel zu kopieren.