El controlador LSI Megaraid tiene una batería de respaldo para su caché de escritura, que permite, en caso de un corte de energía no anticipado, retener los datos en caché, aún no escritos, para que pueda escribirlos en el disco la próxima vez que se inicie el servidor arriba. En el caso de un apagado limpio, esta copia de seguridad probablemente no sea necesaria, ya que parte del apagado limpio implicará que el controlador escriba los datos almacenados en caché en el disco.
¿Cómo se informa al controlador de incursión de que el cierre está a punto de ocurrir? Presumiblemente, este vaciado debe ser lo último que ocurra después de otro código de apagado del sistema operativo, lo que podría implicar la escritura de datos o registros en la redada.
¿Existe alguna señalización de nivel PCIe que informe a los periféricos de un apagado pendiente? ¿El módulo de kernel Megaraid_sas informa a la tarjeta del cierre pendiente? ¿O es MegaCli
necesario ejecutar un comando para vaciar el caché desde un script de inicio para el apagado?
Agregué manualmente una tarjeta Megaraid y un conjunto adicional de unidades a un sistema Linux que se instaló sin una, y quiero estar seguro de que no necesito agregar algo manualmente para garantizar que el caché sea consistente al apagar.
Respuestas:
Durante el apagado, el sistema desmontará la mayoría de los sistemas de archivos. Los que no se pueden desmontar se vuelven a montar de solo lectura. Umount syscall vaciará las memorias caché de disco a través de VFS, y las memorias intermedias de disco usarán el controlador detrás del dispositivo de bloque. El controlador de dispositivo de bloque en su caso es el controlador genérico SCSI
sg
. Esto enviará los datos al dispositivo SCSI utilizando el controlador específico para su dispositivo y un comando de descarga SCSI para que los datos se escriban desde la memoria caché interna del disco en el medio de almacenamiento del disco. Todo esto es síncrono y el montaje no volverá hasta que los datos estén en el disco. Para FS de solo lectura remontado, los scripts de apagado solo ejecutarán la llamada al sistema de sincronización.fuente