在closures之前,Linux如何告诉LSI Megaraid卡刷新其caching?

LSI Megaraid控制器备有一个备用电池,用于写入caching,在发生意外停电时,可以保留caching的,尚未写入的数据,以便在下次启动服务器时将其写入磁盘向上。 在干净closures的情况下,这种备份可能是不必要的,因为干净closures的一部分将涉及控制器将高速caching的数据写出到磁盘。

RAID控制器如何获知关机即将发生? 据推测,这个刷新必须是在其他操作系统closures代码之后发生的最后一件事,这可能涉及将数据或日志写入到raid中。

是否有一些PCIe电平信号通知外围设备正在等待关机? Megaraid_sas内核模块是否通知卡挂起的关机? 或者一个MegaCli命令刷新caching需要从closures的初始化脚本运行?

我手动添加了一个Megaraid卡和一套额外的驱动器到一个没有安装的Linux系统,并且要确保我不需要手动添加一些东西来保证caching在关机时是一致的。

在关机期间,系统将卸载大部分文件系统。 那些不能卸载的是只读的重新安装。 Umount系统调用将通过VFS刷新磁盘caching,以及使用块设备后面的驱动程序的磁盘缓冲区。 在你的情况下,块设备驱动程序是通用SCSI驱动程序sg 。 这将使用您的设备的特定驱动程序和SCSI刷新命令将数据发送到SCSI设备,以便将数据从内部磁盘高速caching写入到磁盘存储介质。 所有这些都是同步的,只有数据在磁盘上后,umount才会返回。 对于重新安装的只读FS,closures脚本将只运行sync系统调用。