Como o array grande está em um controlador de um tipo separado (marca e modelo, ou melhor: chipset), e nada nele é necessário para o processo de inicialização do sistema, você pode contornar isso forçando uma inicialização do controlador atrasada. A maneira mais fácil de fazer isso é simplesmente colocar na lista negra o módulo do kernel que faz a inicialização do kernel, depois carregá-lo manualmente muito tarde no processo de inicialização.
NOTA: É extremamente importante que isso seja feito apenas com controladores que não contêm nada que seja necessário para o sistema inicializar corretamente. Caso contrário, você se verá com uma falha de inicialização - qualquer coisa, desde serviços que falham ao iniciar ou ler / gravar arquivos no lugar errado, até um pânico do kernel. Tenha isso em mente antes de implementar um esquema como este.
Primeiro, descubra qual módulo do kernel manipula o controlador em questão. Uma rápida pesquisa no Google com base nas informações fornecidas na pergunta diz que provavelmente é o módulo mpt2sas
. Segundo, certifique-se de que o código seja realmente compilado como um módulo; algo como find "/lib/modules/$(uname -r)" -name 'mpt2sas*' -print
vai fazer bem. (Sim, eu sei que -print
é o padrão, mas eu gosto de ser explícito ...) Verifique seu status como um módulo carregado usando lsmod | grep mpt2sas
.
Em seguida, adicione o módulo ao arquivo de lista negra de módulos. Você pode adicioná-lo ao /etc/modprobe.d/blacklist.conf ou a um arquivo de configuração separado, como /etc/modprobe.d/mpt2sas.conf. Basta adicionar a seguinte linha a esse arquivo.
blacklist mpt2sas
Isso desativará o carregamento automático do módulo em questão. Vamos aproveitar o fato de que ainda pode ser carregado manualmente usando, e. modprobe - onde "manualmente" pode significar "de um script".
Abra /etc/rc.local (que é executado depois de todos os outros scripts rc) em um editor e adicione as seguintes linhas em algum lugar:
modprobe mpt2sas
mount -a
Você provavelmente quer colocar isso no final do arquivo, mas obviamente antes de qualquer exit
ou diretivas similares. O mount -a
pode ou não ser necessário dependendo se os sistemas de arquivos são realmente montados na inicialização e se eles são montados automaticamente quando forem encontrados pelo teste da partição de disco do kernel. Você pode tentar sem primeiro, se você quiser e se sentir seguro de que você pode obter acesso ao sistema se ele não funcionar. Se você precisar de algo especial para inicializar o RAID ou algo assim, isso vai entre modprobe
e mount
. Se algum serviço específico precisar que o grande array esteja disponível, você pode criar um script rc separado para iniciar o array e especificar que ele deve ser executado antes que qualquer serviço seja iniciado. Você pode fazê-lo executar em segundo plano, agrupando-o em um subshell com uma sintaxe como ( commands ) &
, mas isso pode ou não ter qualquer efeito perceptível no resultado, pois a análise da partição é feita no kernel. Você pode usar hdparm
para desativar as unidades após a partição ter sido montada, se elas forem acessadas raramente. Resumindo, esta é a parte que você pode querer personalizar para suas necessidades particulares .
Em seguida, atualize seu initramfs executando update-initramfs -u
como root.
Se nada falhou, você agora deve ser capaz de reboot
do seu sistema e aproveitar os benefícios do atraso no spin-up do disco e da análise da partição.