Eu tinha uma partição swap em um disco rígido (/dev/sdb3), que acabou falhando. A unidade foi removida e substituída. Uma nova troca foi criada, o fstab foi atualizado e ativado (/dev/sdc3), mas a troca antiga ainda está listada em /proc/swaps, mas com (deleted)
.
[root@server01 ~]# cat /proc/swaps
Filename Type Size Used Priority
/dev/sdc3 partition 4194300 0 -2
/dev/sdb3\040(deleted) partition 4194300 0 -1
/dev/sda3 partition 4194300 0 -3
Eu tentei remover a troca. swapoff /dev/sdb3
falha com nenhum tal arquivo ou diretório . swapoff -a e swapon -a parecem funcionar sem erros, mas /proc/swaps ainda lista a troca excluída.
Como removo a troca que realmente não existe? Se necessário, o sistema ainda tentará usar esse pedaço de espaço de troca? O que acontecerá então?
Histórico adicional: o servidor não pode ser reinicializado e a unidade foi substituída por meio da interface hotplug. As unidades são unidades AHCI SATA e não passam por um controlador RAID, HBA ou qualquer outra interface especial. Embora /dev/sdb tenha falhado e não exista mais, a nova unidade, quando inserida na mesma porta, tornou-se /dev/sdc. /dev/sda existe e funciona bem durante todo este processo.
Referência: Outro usuário perguntou o que faz com que a troca apareça como excluída , mas eu sei a causa, mas não como removê-la.
Você precisa reiniciar o sistema.
Ao gravar dados, o kernel deve simplesmente ignorar quaisquer partições/arquivos de troca excluídos.
Na leitura, qualquer processo pelo qual ele estava tentando trocar as páginas será encerrado (não tenho certeza de qual sinal é enviado, mas acredito que seja o mesmo que é enviado ao tentar acessar uma página que contém um erro de memória incorrigível) . Dependendo da configuração exata do kernel, isso também pode causar um kernel panic, travando o sistema. Este é o grande motivo pelo qual você deve reinicializar idealmente, pois desativar o espaço de troca faz com que todas as páginas armazenadas sejam trocadas novamente ou movidas para outro espaço de troca, portanto, desativar o espaço de troca que não existe e tem armazenamento de dados pode resultar em processos encerrados sem aviso prévio.
No seu caso, você não possui dados sobre o espaço de troca em questão, portanto, deve ser seguro desativá-lo. No entanto, como você descobriu, as ferramentas de linha de comando para desativar o espaço de troca não funcionam corretamente em dispositivos inexistentes. Para referência futura, desative qualquer espaço de troca em um dispositivo de armazenamento com falha antes de desconectá-lo, para evitar situações como essa.
Além disso, pode ser necessário atualizar
/etc/fstab
novamente após a reinicialização. A partição swap ativa, mas inexistente, ainda mantém uma referência ao dispositivo de armazenamento removido que será liberado na reinicialização. Até você reiniciar, a ordem de enumeração do dispositivo será diferente do que seria normalmente por causa disso, então o que está atualmente/dev/sdc
pode se tornar/dev/sdb
na reinicialização.