Ich habe ein Linux-System, das für längere Zeit unbeaufsichtigt laufen muss. Das System verwendet eine industrielle CF-Karte zur Speicherung. Meistens gibt es keine Schreibvorgänge zum Flashen, obwohl hin und wieder einige Konfigurationsdaten / -einstellungen geändert werden können. Das System muss beständig gegen Stromausfälle sein.
Ich würde dafür gerne ext4 verwenden. Was ist der beste Weg, um ext4 für diese Art von Setup zu konfigurieren? Unter Berücksichtigung, dass:
- Leistung ist überhaupt kein Problem (insbesondere Schreibleistung)
- Bei einem Stromausfall sollte das System immer in einem sauberen Zustand gestartet werden, auch wenn dadurch Daten verloren gehen, die in den letzten Sekunden geschrieben wurden
- Wenn es möglich ist, fsck zu vermeiden, dann umso besser.
(Ich bin mir dieser verwandten Frage bewusst: Verhindern Sie Datenbeschädigung auf ext4 / Linux-Laufwerk bei Stromausfall )
Ich möchte das vorwegnehmen, indem ich sage, dass EXT (in all seinen Inkarnationen) ein ziemlich schreckliches Dateisystem ist - ich habe " interessantere " Fälle von Dateisystemkorruption in der relativ kleinen Anzahl von Linux / EXT gesehen {2,3,4} Systeme, die ich verwaltet habe, als ich sie in der relativ großen Anzahl von Not-EXT-Dateisystemen verwendet habe.
Versuchen Sie nach Möglichkeit, ein robusteres Dateisystem auszuwählen. Sie werden sich bedanken, wenn das Unvermeidliche passiert.
Davon abgesehen und all meine persönlichen Vorurteile gegenüber dem Rest der Welt, hat EXT4 drei Funktionen, von denen ich mir vorstellen kann, dass sie Ihnen helfen könnten:
Journaling
EXT4 kann ein Journaled-Dateisystem sein, wenn Sie es möchten. Aktivieren Sie die Journalfunktion (und stellen Sie den Datenjournalmodus speziell auf
journal
Viatune2fs
oder als Mount-Option ein).Dies führt zu Leistungseinbußen, da alle Daten in das EXT-Journal geschrieben werden müssen, bevor sie in das Dateisystem "übertragen" werden (jeder Schreibvorgang erfolgt grundsätzlich zweimal). Sie können jedoch jederzeit wiederherstellen, sofern bei einer Journalwiedergabe keine Daten vorhanden sind Probleme.
SYNC
Hronous MountsWenn Sicherheit an erster Stelle steht, ist das Mounten eines Dateisystems mit der
sync
Option immer eine gute Idee. Dies zwingt alle Schreibvorgänge sofort auf die Festplatte - auch dies ist ein Leistungseinbruch, aber eine gute Idee, wenn Sie einen Stromausfall erwarten oder zufällige Fremde die CF-Karte herausreißen.Beschreibbare Dateisysteme so weit wie möglich einschränken Dieses ist nicht EXT-spezifisch, aber die allzu verbreitete Linux-Philosophie "nur eine große Root-Partition erstellen und alles darin ablegen" ist ehrlich gesagt dumm . Erstellen Sie eine richtige Dateisystem - Struktur (
/
,/var
,/usr
,/home
, etc ...), und montieren , da viele der Dateisysteme schreibgeschützt wie möglich.Dies war früher ein allgemeiner Rat für Unix-Systeme aus Sicherheitsgründen, hat in Ihrem Fall jedoch einen zusätzlichen Vorteil: Sie können ein Dateisystem nicht beschädigen, wenn Sie nicht darauf schreiben können.
quelle
sync
nach jedem Schreibvorgang. Synchrone Bereitstellungen werden von einem Dateisystemschreibaufruf nicht zurückgegeben (oder sollten dies zumindest nicht tun), bis sich die Daten auf der Festplatte befinden. Beim Aufrufensync
werden alle ausstehenden Schreibvorgänge gelöscht. Zwischen der Rückkehr des Schreibvorgangs und Ihrem Rückruf,sync
in dem möglicherweise noch keine Daten auf die Festplatte geschrieben wurden , besteht jedoch ein (jedoch kurzes) Fenster .data=journal
(was ich oben beschrieben habe),data=ordered
(Metadaten werden aufgezeichnet. Daten werden auf die Festplatte geschrieben, bevor Metadaten in das Dateisystem geschrieben werden) unddata=writeback
(was praktisch keine Aufzeichnung / Schutz von Daten ist - Bad Things) kann nach einem Absturz passieren, wie z. B. Müll in der Mitte von Dateien). Ich glaube, dasordered
ist heutzutage die Standardeinstellung in den meisten Linux-Distributionen ...EXT4 scheint nicht die beste Wahl für Ihr System zu sein. Ich würde vorschlagen, sich ein Dateisystem mit Protokollstruktur anzusehen. Diese arbeiten, indem Daten als ein konstanter Strom von Schreibaktualisierungen gegen einen virtuellen Strom mit einem Zeiger behandelt werden, der auf den neuesten "Kopf" zeigt. Aktualisierungen erfolgen, indem Daten und Metadaten in den Speicher geschrieben und anschließend der Zeiger aktualisiert werden. Im Falle eines Absturzes nach dem Schreiben, aber vor der Zeigeraktualisierung, gehen die neuesten Daten verloren, aber das Dateisystem ist konsistent.
Zwei mögliche Dateisysteme sind LogFS und NILFS . Beide sind im Linux-Kernel verfügbar.
quelle
Ich bin fasziniert von dem Gerät, das Ihr Gebäude hat. Sie sind auf die Zuverlässigkeit eines eingebetteten Geräts angewiesen, wenn Sie ein Dateisystem verwenden, das nicht wirklich geeignet ist.
Ext4 (und Familie) ist ein feines Allzweck-Dateisystem mit (glaube ich) vielen Milliarden Stunden Nutzungsdauer auf verschiedenen Hardware- und Anwendungsfällen. Was Sie jedoch wünschen, passt nicht wirklich zu ext4. Die Hinweise von voretaq7 und Giovanni helfen Ihnen dabei, ext4 optimal zu nutzen, wenn Sie müssen. Die eigentliche Antwort ist jedoch, etwas zu verwenden, das Ihren Anforderungen besser entspricht. Steve hat dir ein paar Optionen gegeben. Wenn Sie weiterhin Strom aus einem ext4 FS ziehen, wird es irgendwann zu einem Chaos kommen.
Wenn dies ein einmaliges System ist, das Sie erstellen, sollten Sie die Wahl treffen, etwas passenderes zu verwenden, oder akzeptieren, dass es irgendwann Probleme geben wird. Es ist möglicherweise nur ein Stromausfall von 100 oder ein Stromausfall von 1000. Dies ist möglicherweise ausreichend, um das Risiko einzugehen, und das Gerät läuft möglicherweise über einen langen Zeitraum (Jahre), ohne dass ein manueller Eingriff erforderlich ist.
Wenn es sich um ein Produkt handelt, das Sie auf breiter Basis bereitstellen / auf den Markt bringen möchten, haben Sie die Wahl, ein geeigneteres Produkt zu verwenden. Oder Sie treffen die Geschäftsentscheidung, einen Prozentsatz der Geräte zu unterstützen, die jedes Jahr blockiert werden, und müssen entweder ausgetauscht oder manuell eingegriffen werden, um sie wiederherzustellen.
quelle