A execução da sincronização (8) ainda é necessária antes de desligar o linux?

18

Eu ainda vejo pessoas recomendando o uso de sync; sync; sync; sleep 30; halt encantamentos ao falar sobre desligar ou reiniciar o Linux.

Eu tenho rodado Linux desde o seu início e, embora este seja o procedimento recomendado nos dias 4,2 / 4,3 e SunOS 4 dias, não me lembro de ter que fazer isso pelo menos nos últimos dez anos, durante que eu provavelmente passei por shutdown / reboot do Linux talvez milhares de vezes.

Eu suspeito que isso seja um anacronismo desde os dias em que o kernel não pôde desmontar e sincronizar o sistema de arquivos raiz e outros sistemas de arquivos críticos necessários, mesmo durante o modo de usuário único (por exemplo, / tmp) e, portanto, foi necessário informá-lo explicitamente para liberar o máximo de dados possível para o disco.

Hoje em dia, sem encontrar o código relevante no código-fonte do kernel (acessando o link e o google), suspeito que o kernel esteja Inteligente o suficiente para desmontar de forma limpa até mesmo o sistema de arquivos raiz e o sistema de arquivos é inteligente o suficiente para fazer uma sincronização (2) antes de se desmontar durante uma% normalshutdown / reboot / poweorff .

O "sync; sync; sync" é necessário apenas em casos extremos em que o sistema de arquivos não será desmontado corretamente (por exemplo, falha no disco físico) ou o sistema está em um estado que apenas forçar uma reinicialização direta (8) (por exemplo, a carga é muito alta para permitir o agendamento do comando de desligamento).

Eu também nunca faço o procedimento sync antes de desmontar dispositivos removíveis e nunca obtenho um problema.

Outro exemplo - o Xen permite que o DomU receba um comando shutdown do Dom0, isso é considerado um "desligamento limpo" sem que alguém tenha que se logar e digitar o% mágicosync; sync; sync primeiro.

Estou certo ou tive sorte por alguns milhares de desligamentos do sistema?

    
por Amos Shapira 21.02.2010 / 09:05

4 respostas

17

A razão pela qual as pessoas executam sync; sync antes de um halt é porque o comando halt não desligaria o sistema de forma limpa em linux mais antigos. A maneira correta de fazer isso em sistemas SYSVr4 sempre é dizer ao init para mover para um nível de execução diferente.

O BSD e o SunOS 4 não são sistemas operacionais SYSVr4 e é por isso que eles diferem. O Solaris (SunOS 5) é o SYSVr4 e o Linux escolhe bits do padrão SYSVr4 que deseja usar.

Usar o halt é realmente uma maneira muito ruim de fazer isso na maioria dos UNIXes (sendo o Linux uma das exceções), pois ele não executa os scripts init para executar tarefas como parar processos e desmontar discos - ele simplesmente pára o processo. processador.

Se você pode garantir que nunca jamais utilizará qualquer tipo de sistema UNIX, então você pode continuar usando halt - se houver uma chance de usar outros UNIX, então eu recomendo adquirir o hábito de usar init _runlevel_ ou shutdown .

O comando shutdown informa o processo init para alterar seu nível de execução nível de execução - ao fazê-lo, o init continua a executar cada um dos scripts do K * init e scripts S * init associados a esse nível de execução. Um dos scripts no nível de execução 0 realiza a desmontagem dos sistemas de arquivos.

No Linux, o comando halt apenas chama o comando shutdown , a menos que o nível de execução já seja 0 (desligando) ou 6 (reinicializando) de qualquer maneira ; então não há perda lá.

O ato de desmontar um sistema de arquivos usando umount irá sincronizar os dados para o disco antes de desmontá-lo.

Se você estiver rodando sync; sync; halt no Linux, você terá estado bem com o estado do sistema de arquivos porque os desenvolvedores garantiram que halt faz a coisa correta ; no entanto, seria mais correto usar: shutdown now

    
por 21.02.2010 / 10:43
7

O uso de várias chamadas de sync foi para permitir que o tempo de OS e discos liberassem as filas de gravação. "sync; sync; sync" não foi considerado tão útil; um fez "sync<cr> sync<cr> sync<cr" eo atraso enquanto o seu ASR-33 fez o retorno de carro / nova linha desde o atraso suficiente. Halt sempre ligou para sync; a questão era se haveria tempo suficiente para liberar as filas antes que a energia fosse removida.

O sync; sleep 30 do pôster original está mais de acordo com o pretendido.

    
por 21.02.2010 / 14:26
7

Eu posso apenas falar por que você iria emitir sync várias vezes. O comando programa o flush para o disco, mas retorna antes que o flush real seja concluído. Qualquer comando sync subseqüente será bloqueado até que qualquer liberação pendente esteja em andamento antes de agendar outro flush e sair. Portanto, sync; sync garante um flush síncrono. Você não precisa fazer isso mais de 2 vezes, nem trazer sleep para o mix.

    
por 18.10.2012 / 21:03
4

Aqueles que estão nos dizendo que "sync; sync; sync" não tem propósito estão revelando sua idade.

De volta aos bons e velhos tempos, antes que o Unix fosse algo para os adolescentes, costumávamos usar o TAPE para nossas necessidades de streaming / backup. Frequentemente, montávamos um sistema de arquivos baseado em fita para fazer o backup dos backups e assim por diante. Essa banda longa e fina de fita plástica magnética era tudo que alguns de nós tínhamos para armazenar nossos arquivos ...

O comando 'sync; sync; sync' era uma forma que essas antigas gravadoras podiam ser instruídas a voltar completamente até o final (antes do desligamento) - tinham firmware embarcado que receberia o sync cmd (como todos os bons sistemas de arquivos), e se foi seguido quase imediatamente por mais dois comandos de buffer de sincronização, a própria unidade de fita interpretaria isso para significar "rebobinar a fita e desmontá-la". Não havia como dizer que a unidade de fita fosse retroceder, além desse método, e ficou meio que preso. Esse hábito passou para a palavra quando os discos rígidos se tornaram mais disponíveis - nós, operadores antigos e crus não apenas realocamos ( nossa memória muscular você sabe! Acredito que alcançou o status folclórico logo após as fitas se tornarem menos comuns e os discos rígidos ficarem mais disponíveis, mas ainda tem seus usos para aqueles de nós com unidades de fita.

    
por 22.03.2013 / 10:57