Frage Wie sagt Linux einer LSI Megaraid-Karte, ihren Cache vor dem Herunterfahren zu leeren?


Der LSI Megarid-Controller verfügt über einen Battery-Backup für seinen Schreib-Cache, der im Falle eines unvorhergesehenen Stromausfalls ermöglicht, die zwischengespeicherten, noch nicht geschriebenen Daten zu speichern, so dass er beim nächsten Booten des Servers auf die Festplatte geschrieben werden kann oben. Im Falle eines sauberen Herunterfahrens ist diese Sicherung vermutlich nicht notwendig, da ein Teil des sauberen Herunterfahrens darin besteht, dass der Controller die zwischengespeicherten Daten auf die Platte schreibt.

Wie wird der Raid-Controller informiert, dass der Shutdown kurz bevorsteht? Vermutlich ist diese Flush-Aktion die letzte, die nach einem anderen Betriebssystem-Shutdown-Code auftritt, bei dem Daten oder Protokolle in den Raid geschrieben werden müssen.

Gibt es eine PCIe-Level-Signalisierung, die Peripheriegeräte über einen ausstehenden Stromausfall informiert? Informiert das Megalaid_sas-Kernelmodul die Karte über das ausstehende Herunterfahren? Oder macht a MegaCli Befehl zum Leeren des Caches muss von einem Init-Skript zum Herunterfahren ausgeführt werden?

Ich habe manuell eine Megaraid-Karte und einen zusätzlichen Satz von Laufwerken zu einem Linux-System hinzugefügt, das ohne eines installiert wurde, und möchte sicher sein, dass ich nicht manuell etwas hinzufügen muss, um sicherzustellen, dass der Cache beim Herunterfahren konsistent ist.


5
2017-10-20 19:33


Ursprung


Ich dachte nur, dass dies Teil des Kernels sein würde, und der scsi / raid - Treiber würde sich in den synchronisieren (2) Funktion, dass die Synchronisierung (8) Binär, die normalerweise während des Herunterfahrens ausgeführt wird. - Zoredache
Das wäre sinnvoll, obwohl ich keine Dokumentation finden konnte, die bestätigt, dass Gerätetreiber aufgerufen werden, wenn eine Synchronisierung ausgeführt wird, um ihre internen Caches zu leeren. Alles, was ich gefunden habe, sagt nur, dass es Linux veranlasst, Schreibvorgänge für alle schmutzigen Daten in seinem eigenen Cache zu planen - bk.


Antworten:


Während des Herunterfahrens deaktiviert das System die meisten Dateisysteme. Diejenigen, die nicht abgehängt werden können, werden read-only wiederhergestellt. Umount Syscall spült die Festplatten-Caches über VFS und Plattenpuffer mit dem Treiber hinter dem Block-Gerät. Der Blockgerätetreiber ist in Ihrem Fall der generische SCSI-Treiber sg. Dadurch werden die Daten unter Verwendung des spezifischen Treibers für Ihr Gerät und eines SCSI Flush-Befehls an das SCSI-Gerät gesendet, so dass die Daten vom internen Plattencache auf das Plattenspeichermedium geschrieben werden. All dies ist synchron und der umount kehrt erst zurück, wenn sich die Daten auf der Festplatte befinden. Für remounted Read-only FS führen die Shutdown-Skripte nur den sync syscall aus.


6
2017-10-20 22:33