Não é inseguro para um laptop hibernar / suspender enquanto um cartão SD é montado?

3

Eu tenho testemunhado há anos que meu laptop Dell congela quando ele retorna da hibernação enquanto um cartão SD é inserido no slot e montado. É claro que levei algum tempo para descobrir isso, mas posso reproduzir o incidente com 100% de precisão agora: todas as vezes meu laptop retoma a hibernação - conforme programei o gerenciador de energia para quando o tempo restante vai além de 8% - enquanto há um cartão SD inserido e montado que congela (bloqueia), e eu só posso hard power down ... perdendo claro mais do que alguns nibbles do meu cartão SD o tempo todo. Posso perder centenas de megabytes de uma só vez.

Recentemente aconteceu de ligar um computador com uma bateria de 12V. Em algum momento eu vi completamente congelar enquanto ele estava sendo executado a partir da minha chave USB, que eu tinha configurado como um dispositivo de inicialização [para executar o Linux Mint]. Mais tarde, percebi que o computador tinha congelado, porque eu tinha esquecido de ligar o carregador de energia e a voltagem da bateria diminuiu para algo como 11,5 volts. Eu também descobri que a partição de chave USB que eu estava usando para inicializar o computador tinha sido completamente corrompida e não recuperável no processo.

Acrescente a isso que eu também li muitas vezes usuários do Raspberry Pi (como eu) relataram corrupção no cartão SD e estes últimos são devido a problemas de energia (baixos) . Esta explicação veio a mim como eu (também) notei o tamanho utilizável do meu cartão SD Raspberry Pi diminuiu significativamente por razões desconhecidas antes de eu ler isso.

Conclusão

Então, resumidamente, aprendi da maneira mais difícil as conseqüências letais de usar vapores com dispositivos flash enquanto eles estão sendo usados.

Estou apenas suspeitando que é um problema elétrico, então estou basicamente pedindo confirmação. Eu experimentei alguns problemas no passado com drivers de cartão SD que faziam (pelo menos) o Linux sofrer de uma variedade de bugs, incluindo congelamentos de sistema, especialmente quando esses drivers eram jovens, ou seja, não tão maduros quanto hoje. Com o tempo, cheguei a me perguntar se meu laptop congela (sob as condições mencionadas acima) pode ser devido a como o hardware reage quando a energia da bateria está ficando um pouco "baixa".

A minha pergunta é : A minha análise faz algum sentido ou é realmente outra coisa, como o fraco design de gestão de energia em determinados computadores portáteis, etc.?

Se estiver correto, então não deve ser recomendado para usuários de laptop ligar a rede ao usar um cartão SD? (Independentemente do fato de que é sempre melhor para rodar na rede o máximo possível .)

Nota: Estou fazendo a pergunta aqui porque suspeito que o que eu tenho pensado é um bug no Linux driver do cartão SD, na verdade, é um problema de eletrônica (engenharia).

    
por Community 27.06.2015 / 12:51

2 respostas

1

Atenção: nenhum especialista em Linux aqui .

A corrupção do cartão pode ter ocorrido devido ao processo de hibernação, que não desconectou a placa corretamente ou não esperou o suficiente para que a placa concluísse um ciclo de gravação com dados possivelmente ainda no cache do PC. Danos de hardware a cartões de memória flash são muito mais comuns quando algo ruim (por exemplo, falha de energia) acontece durante operações de gravação.

Quanto ao congelamento do PC, suspeito que algum componente do SO tenha alguns problemas. Provavelmente, algum driver não é robusto o suficiente para lidar com falhas de hardware durante o processo de hibernação. Se algum componente de hardware não essencial (como o leitor de cartão SD) falhar, o sistema operacional não deve simplesmente congelar ou explodir (essa é uma das funções de um sistema operacional). É certo que o processo de hibernação não é um cenário comum, então talvez quem escreveu o driver tratou de eventos excepcionais no processo de desligamento (o cenário "especial" mais comum), mas esqueceu ou negligenciou o processo de hibernação.

PS: Eu vi também muitos PCs Windows congelando durante o wake-up da hibernação ou durante a hibernação, então eu normalmente desabilito o recurso por padrão nas minhas máquinas Windows (standby, no pelo contrário, funciona incrivelmente bem na maior parte do tempo). Eu suspeito que as interações com o hardware durante a hibernação não são uma grande preocupação para a indústria de PCs.

    
por 27.06.2015 / 13:14
0

Qual sistema de arquivos você usa no sdcard? Suponho que seja fat32 ou similar. Eu acho que o problema é com alguma transação atrasada esperando para ser feita pelo próprio sdcard, sendo transparente para o sistema operacional. (relatado como se fosse feito para o sistema operacional pelo sdcard) Essa transação enlouquece por um desligamento lento o suficiente. (Eu quero dizer que o transeunte do desligamento pode não ser necessariamente rápido, o que o torna propenso a estar fora dos estados definidos. Isso provavelmente está comprometido com a solicitação de hibernação, mas como o atraso de hardware está sendo transparente para o sistema de arquivos, ele não Meu palpite é que, se você usar ext4 ou btrfs com a opção de barreira está ativada (já é por padrão) há uma chance de que ele espere até chegar a um estado seguro.

É possível recuperar as mensagens do kernel deste evento?

Eu tentei replicar o problema com um laptop Dell Studio 14, o archlinux (3.18 vanilla kernel) rodando em um flashdisk usb, também montou uma partição ext2 de 2GB de um cartão SD. Suspenso para ram com "systemctl suspender". Acordado com sucesso.

A suspensão não é um processo simples, basta dizer ao kernel para suspender, que é apenas a última coisa que o script de suspensão deve fazer. O processo de preperation pode diferir em diferentes scripts de suspensão. Para mais informações: link

    
por 27.06.2015 / 14:08

Tags