Raspberry Pi tornando-o mais resiliente File Sistema
Escopo do documento
Este documento se aplica aos seguintes produtos Raspberry Pi:
Pi 0 | Pi 1 | Pi 2 | Pi 3 | Pi 4 | Pi 400 | CM1 | CM3 | CM4 | CM 5 | Pico | ||||
0 | W | H | A | B | A | B | B | Todos | Todos | Todos | Todos | Todos | Todos | Todos |
* | * | * | * | * | * | * | * | * | * | * | * | * | * |
|
Introdução
Os dispositivos Raspberry Pi Ltd são frequentemente usados como dispositivos de armazenamento e monitoramento de dados, muitas vezes em locais onde podem ocorrer quedas repentinas de energia. Como acontece com qualquer dispositivo de computação, quedas de energia podem causar corrupção de armazenamento. Este whitepaper fornece algumas opções sobre como evitar a corrupção de dados nessas e em outras circunstâncias, selecionando as opções apropriadas. file sistemas e configurações para garantir a integridade dos dados. Este whitepaper pressupõe que o Raspberry Pi esteja executando o sistema operacional (SO) Raspberry Pi (Linux) e totalmente atualizado com o firmware e os kernels mais recentes.
O que é corrupção de dados e por que ela ocorre?
Corrupção de dados refere-se a alterações não intencionais em dados de computador que ocorrem durante a gravação, leitura, armazenamento, transmissão ou processamento. Neste documento, estamos nos referindo apenas ao armazenamento, e não à transmissão ou processamento. Corrupção pode ocorrer quando um processo de gravação é interrompido antes de ser concluído, de forma a impedir a conclusão da gravação, por exemplo.ampse houver queda de energia. Vale a pena, neste ponto, fazer uma rápida introdução a como o sistema operacional Linux (e, por extensão, o Raspberry Pi OS) grava dados no armazenamento. O Linux geralmente usa caches de gravação para armazenar dados que devem ser gravados no armazenamento. Esses caches (armazenam temporariamente) os dados na memória de acesso aleatório (RAM) até que um determinado limite predefinido seja atingido, momento em que todas as gravações pendentes no meio de armazenamento são feitas em uma única transação. Esses limites predefinidos podem estar relacionados ao tempo e/ou ao tamanho. Por exemplo:ampPor exemplo, os dados podem ser armazenados em cache e gravados no armazenamento apenas a cada cinco segundos, ou gravados somente quando uma determinada quantidade de dados for acumulada. Esses esquemas são usados para melhorar o desempenho: gravar uma grande quantidade de dados de uma só vez é mais rápido do que gravar muitos pequenos blocos de dados.
No entanto, se houver perda de energia entre o armazenamento dos dados no cache e a gravação, esses dados serão perdidos. Outros problemas possíveis surgem posteriormente no processo de gravação, durante a gravação física dos dados no meio de armazenamento. Uma vez que um componente de hardware (por exemplo,ampEmbora a interface do cartão Secure Digital (SD) seja instruída a gravar dados, ainda leva um tempo finito para que esses dados sejam armazenados fisicamente. Novamente, se ocorrer uma queda de energia durante esse período extremamente breve, é possível que os dados que estão sendo gravados sejam corrompidos. Ao desligar um sistema de computador, incluindo o Raspberry Pi, a melhor prática é usar a opção de desligamento. Isso garantirá que todos os dados em cache sejam gravados e que o hardware tenha tempo de realmente gravar os dados no meio de armazenamento. Os cartões SD usados pela maioria dos dispositivos Raspberry Pi são ótimos como substitutos baratos de discos rígidos, mas são suscetíveis a falhas ao longo do tempo, dependendo de como estão sendo usados. A memória flash usada em cartões SD tem uma vida útil limitada do ciclo de gravação e, à medida que os cartões se aproximam desse limite, eles podem se tornar não confiáveis. A maioria dos cartões SD usa um procedimento chamado nivelamento de desgaste para garantir que durem o máximo possível, mas no final eles podem falhar. Isso pode levar de meses a anos, dependendo da quantidade de dados gravados ou (mais importante) apagados do cartão. Essa vida útil pode variar drasticamente entre os cartões. A falha do cartão SD geralmente é indicada por erros aleatórios file corrupções, pois partes do cartão SD ficam inutilizáveis.
Existem outras maneiras pelas quais os dados podem ser corrompidos, incluindo, entre outras, mídias de armazenamento defeituosas, bugs no software de gravação de armazenamento (drivers) ou bugs nos próprios aplicativos. Para os fins deste whitepaper, qualquer processo pelo qual possa ocorrer perda de dados é definido como um evento de corrupção.
O que pode causar uma operação de gravação?
A maioria dos aplicativos faz algum tipo de gravação no armazenamento, por exemploampinformações de configuração, atualizações de banco de dados e similares. Alguns destes filePodem até ser temporários, ou seja, usados apenas enquanto o programa estiver em execução, e não precisam ser mantidos durante um ciclo de energia; no entanto, ainda resultam em gravações no meio de armazenamento. Mesmo que seu aplicativo não grave nenhum dado, em segundo plano o Linux estará constantemente fazendo gravações no armazenamento, principalmente gravando informações de log.
Soluções de hardware
Embora não seja totalmente abrangido por este whitepaper, vale mencionar que a prevenção de quedas de energia inesperadas é uma medida de mitigação contra perda de dados comumente utilizada e bem compreendida. Dispositivos como fontes de alimentação ininterruptas (UPSs) garantem que o fornecimento de energia permaneça estável e, em caso de queda de energia, enquanto o UPS estiver funcionando com bateria, ele pode informar ao sistema do computador que a perda de energia é iminente, permitindo que o desligamento ocorra sem problemas antes que a fonte de alimentação de reserva se esgote. Como os cartões SD têm vida útil limitada, pode ser útil ter um regime de substituição que garanta que os cartões SD sejam substituídos antes que cheguem ao fim de sua vida útil.
Robusto file sistemas
Existem várias maneiras de proteger um dispositivo Raspberry Pi contra eventos de corrupção. A capacidade de prevenção de corrupção varia, com cada ação reduzindo a chance de ocorrência.
- Reduzindo gravações
A simples redução da quantidade de escrita que seus aplicativos e o sistema operacional Linux realizam pode ter um efeito benéfico. Se você estiver realizando muitos registros, as chances de gravações ocorrerem durante um evento de corrupção aumentam. A redução do registro em seu aplicativo é responsabilidade do usuário final, mas o registro no Linux também pode ser reduzido. Isso é especialmente relevante se você estiver usando armazenamento baseado em flash (por exemplo, eMMC, cartões SD) devido ao seu ciclo de vida de gravação limitado. - Alterando os tempos de confirmação
O tempo de compromisso para um file O tempo que o sistema leva para armazenar os dados em cache antes de copiá-los para o armazenamento. Aumentar esse tempo melhora o desempenho ao agrupar muitas gravações, mas pode levar à perda de dados se ocorrer um evento de corrupção antes da gravação. Reduzir o tempo de confirmação significa menos chance de um evento de corrupção levar à perda de dados, embora não a impeça completamente.
Para alterar o tempo de confirmação do EXT4 principal file sistema no Raspberry Pi OS, você precisa editar o \etc\fstab file que define como file os sistemas são montados na inicialização. - $sudo nano /etc/fstab
Adicione o seguinte à entrada EXT4 para a raiz file sistema:
- comprometer-se=
Portanto, o fstab pode se parecer com isso, onde o tempo de confirmação foi definido como três segundos. O tempo de confirmação será definido como cinco segundos por padrão, caso não seja definido especificamente.
Temporário file sistemas
Se uma aplicação exigir temporário file armazenamento, ou seja, os dados são usados apenas enquanto o aplicativo está em execução e não precisam ser salvos durante um desligamento, então uma boa opção para evitar gravações físicas no armazenamento é usar um temporário file sistema, tmpfs. Porque estes file os sistemas são baseados em RAM (na verdade, em memória virtual), quaisquer dados gravados em um tmpfs nunca são gravados no armazenamento físico e, portanto, não afetam a vida útil do flash e não podem ser danificados por um evento de corrupção.
A criação de um ou mais locais tmpfs requer a edição do /etc/fstab file, que controla todos os file sistemas sob o sistema operacional Raspberry Pi. O seguinte exemploample substitui os locais baseados em armazenamento /tmp e /var/log por temporários file localizações do sistema. O segundo example, que substitui a pasta de registro padrão, limita o tamanho geral do file sistema para 16 MB.
- tmpfs /tmp tmpfs padrões, noatime 0 0
- tmpfs /var/log tmpfs padrões,noatime,tamanho=16m 0 0
Há também um script de terceiros que ajuda a configurar o registro na RAM, que pode ser encontrado no GitHub. Ele tem o recurso adicional de despejar os registros baseados na RAM no disco em um intervalo predefinido.
Raiz somente leitura file sistemas
A raiz file sistema (rootfs) é o file sistema na partição do disco em que o diretório raiz está localizado e é o file sistema no qual todos os outros file Os sistemas são montados durante a inicialização. No Raspberry Pi, é / e, por padrão, está localizado no cartão SD como uma partição EXT4 totalmente de leitura/gravação. Há também uma pasta de inicialização, que é montada como /boot e é uma partição FAT de leitura/gravação. Tornar o rootfs SOMENTE leitura impede qualquer tipo de acesso de gravação a ele, tornando-o muito mais robusto a eventos de corrupção. No entanto, a menos que outras ações sejam tomadas, isso significa que nada pode ser gravado no rootfs. file sistema, portanto, salvar qualquer tipo de dado do seu aplicativo no rootfs é desabilitado. Se você precisa armazenar dados do seu aplicativo, mas deseja um rootfs somente leitura, uma técnica comum é adicionar um pendrive ou similar, usado apenas para armazenar dados do usuário.
OBSERVAÇÃO
Se você estiver usando uma troca file ao usar um somente leitura file sistema, você precisará mover o swap file para uma partição de leitura/gravação.
Sobreposição file sistema
Uma sobreposição file sistema (overlayfs) combina dois file sistemas, uma parte superior file sistema e um menor file sistema. Quando um nome existe em ambos file sistemas, o objeto na parte superior file sistema é visível enquanto o objeto na parte inferior file O sistema fica oculto ou, no caso de diretórios, mesclado com o objeto superior. O Raspberry Pi oferece uma opção no raspi-config para habilitar um overlayfs. Isso torna o rootfs (inferior) somente leitura e cria um objeto superior baseado em RAM. file sistema. Isso dá um resultado muito semelhante ao somente leitura file sistema, com todas as alterações do usuário sendo perdidas na reinicialização. Você pode habilitar um overlayfs usando a linha de comando raspi-config ou o aplicativo de configuração do Raspberry Pi para desktop no menu Preferências.
Existem também outras implementações de overlayfs que podem sincronizar as alterações necessárias da parte superior para a inferior file sistema em um cronograma pré-determinado. Por exemploampPor exemplo, você pode copiar o conteúdo da pasta pessoal de um usuário de cima para baixo a cada doze horas. Isso limita o processo de gravação a um período de tempo muito curto, o que significa que a corrupção é muito menos provável, mas significa que, se a energia for perdida antes da sincronização, todos os dados gerados desde a última serão perdidos. pSLC em módulos de computação A memória eMMC usada em dispositivos Raspberry Pi Compute Module é MLC (Multi-Level Cell), onde cada célula de memória representa 2 bits. pSLC, ou pseudo-Single Level Cell, é um tipo de tecnologia de memória flash NAND que pode ser habilitada em dispositivos de armazenamento MLC compatíveis, onde cada célula representa apenas 1 bit. Ela foi projetada para fornecer um equilíbrio entre o desempenho e a resistência do flash SLC e a relação custo-benefício e a maior capacidade do flash MLC. O pSLC tem uma resistência de gravação maior que o MLC porque gravar dados em células com menos frequência reduz o desgaste. Enquanto o MLC pode oferecer cerca de 3,000 a 10,000 ciclos de gravação, o pSLC pode atingir números significativamente maiores, aproximando-se dos níveis de resistência do SLC. Essa maior resistência se traduz em uma vida útil mais longa para dispositivos que usam a tecnologia pSLC em comparação àqueles que usam MLC padrão.
A memória MLC é mais econômica que a memória SLC, mas, embora a memória pSLC ofereça melhor desempenho e durabilidade do que a MLC pura, isso ocorre às custas da capacidade. Um dispositivo MLC configurado para pSLC terá metade da capacidade (ou menos) de um dispositivo MLC padrão, já que cada célula armazena apenas um bit em vez de dois ou mais.
Detalhes de implementação
O pSLC é implementado no eMMC como uma Área de Usuário Aprimorada (também conhecida como armazenamento aprimorado). A implementação real da Área de Usuário Aprimorada não é definida no padrão MMC, mas geralmente é pSLC.
- A Área de Usuário Aprimorada é um conceito, enquanto o pSLC é uma implementação.
- pSLC é uma maneira de implementar a Área de Usuário Aprimorada.
- No momento em que este artigo foi escrito, o eMMC usado nos Módulos de Computação do Raspberry Pi implementava a Área de Usuário Aprimorada usando pSLC.
- Não há necessidade de configurar toda a área de usuário do eMMC como uma Área de Usuário Aprimorada.
- Programar uma região de memória como Área de Usuário Aprimorada é uma operação única. Isso significa que não pode ser desfeita.
Ligando-o
O Linux fornece um conjunto de comandos para manipular as partições eMMC no pacote mmc-utils. Instale um sistema operacional Linux padrão no dispositivo CM e instale as ferramentas da seguinte maneira:
- sudo apt install mmc-utils
Para obter informações sobre o eMMC (este comando canaliza para less, pois há muitas informações para exibir):
- sudo mmc extcsd leia /dev/mmcblk0 | menos
AVISO
As operações a seguir são únicas – você pode executá-las uma vez e elas não podem ser desfeitas. Você também deve executá-las antes que o Módulo de Computação seja usado, pois elas apagarão todos os dados. A capacidade do eMMC será reduzida à metade do valor anterior.
O comando usado para ativar o pSLC é mmc enh_area_set, que requer vários parâmetros que informam quanta área de memória o pSLC deve ser ativado. O exemplo a seguirample usa toda a área. Consulte a ajuda do comando mmc (man mmc) para obter detalhes sobre como usar um subconjunto do eMMC.
Após a reinicialização do dispositivo, você PRECISARÁ reinstalar o sistema operacional, pois habilitar o pSLC apagará o conteúdo do eMMC.
O software Raspberry Pi CM Provisioner possui uma opção para definir o pSLC durante o processo de provisionamento. Isso pode ser encontrado no GitHub em https://github.com/raspberrypi/cmprovision.
- Fora do dispositivo file sistemas / inicialização de rede
O Raspberry Pi é capaz de inicializar por meio de uma conexão de rede, por exemploample usando a rede File Sistema (NFS). Isso significa que, uma vez que o dispositivo tenha concluído sua primeiratage boot, em vez de carregar seu kernel e root file sistema a partir do cartão SD, ele é carregado de um servidor de rede. Uma vez em execução, todos file as operações atuam no servidor e não no cartão SD local, que não desempenha mais nenhuma função nos procedimentos. - Soluções em nuvem
Hoje em dia, muitas tarefas de escritório são realizadas no navegador, com todos os dados armazenados online na nuvem. Manter o armazenamento de dados fora do cartão SD pode obviamente melhorar a confiabilidade, às custas da necessidade de uma conexão constante com a internet, bem como de possíveis cobranças de provedores de nuvem. O usuário pode usar uma instalação completa do Raspberry Pi OS, com o navegador otimizado para Raspberry Pi, para acessar qualquer um dos serviços de nuvem de fornecedores como Google, Microsoft, Amazon, etc. Uma alternativa é um dos provedores de thin-client, que substituem o Raspberry Pi OS por um sistema operacional/aplicativo executado a partir de recursos armazenados em um servidor central em vez do cartão SD. Os thin-clients funcionam conectando-se remotamente a um ambiente de computação baseado em servidor, onde a maioria dos aplicativos, dados confidenciais e memória são armazenados.
Conclusões
Quando os procedimentos corretos de desligamento são seguidos, o armazenamento em cartão SD do Raspberry Pi é extremamente confiável. Isso funciona bem em ambientes domésticos ou de escritório, onde o desligamento pode ser controlado. No entanto, ao usar dispositivos Raspberry Pi em casos de uso industrial ou em áreas com fornecimento de energia instável, precauções extras podem aumentar a confiabilidade.
Em resumo, as opções para melhorar a confiabilidade podem ser listadas da seguinte forma:
- Use um cartão SD conhecido e confiável.
- Reduza as gravações usando tempos de confirmação mais longos, usando temporários file sistemas, usando um overlayfs ou similar.
- Use armazenamento externo, como inicialização de rede ou armazenamento em nuvem.
- Implementar um regime para substituir cartões SD antes que eles atinjam o fim de sua vida útil.
- Use um no-break.
Raspberry Pi é uma marca registrada da Raspberry Pi Ltd
Raspberry Pi Ltda
Colofão
© 2020-2023 Raspberry Pi Ltd (anteriormente Raspberry Pi (Trading) Ltd.)
Esta documentação está licenciada sob uma Licença Creative Commons Atribuição-SemDerivações 4.0 Internacional (CC BY-ND).
- data de construção: 2024/06/25
- versão de compilação: githash: 3e4dad9-clean
Aviso legal de isenção de responsabilidade
DADOS TÉCNICOS E DE CONFIABILIDADE DOS PRODUTOS RASPBERRY PI (INCLUINDO FICHAS DE DADOS), CONFORME MODIFICADOS DE TEMPO EM TEMPO (“RECURSOS”) SÃO FORNECIDOS PELA RASPBERRY PI LTD (“RPL”) “COMO ESTÃO” E QUAISQUER GARANTIAS EXPRESSAS OU IMPLÍCITAS, INCLUINDO, MAS NÃO LIMITADAS TO, AS GARANTIAS IMPLÍCITAS DE COMERCIABILIDADE E ADEQUAÇÃO PARA UMA FINALIDADE ESPECÍFICA SÃO REJEITADAS. NA MÁXIMA EXTENSÃO PERMITIDA PELA LEI APLICÁVEL, EM NENHUM CASO A RPL SERÁ RESPONSÁVEL POR QUAISQUER DANOS DIRETOS, INDIRETOS, INCIDENTAIS, ESPECIAIS, EXEMPLARES OU CONSEQUENTES (INCLUINDO, ENTRE OUTROS, AQUISIÇÃO DE BENS OU SERVIÇOS SUBSTITUTOS; PERDA DE USO, DADOS , OU LUCROS; OU INTERRUPÇÃO DE NEGÓCIOS) DE QUALQUER CAUSA E EM QUALQUER TEORIA DE RESPONSABILIDADE, SEJA EM CONTRATO, RESPONSABILIDADE ESTRITA OU ILÍCITO (INCLUINDO NEGLIGÊNCIA OU DE OUTRA FORMA) DECORRENTE DE QUALQUER FORMA DO USO DOS RECURSOS, MESMO SE AVISADO DA POSSIBILIDADE DE TAIS DANOS.
A RPL reserva-se o direito de fazer quaisquer melhorias, aprimoramentos, correções ou quaisquer outras modificações nos RECURSOS ou em quaisquer produtos neles descritos a qualquer momento e sem aviso prévio. Os RECURSOS destinam-se a usuários qualificados com níveis adequados de conhecimento em design. Os usuários são os únicos responsáveis por sua seleção e uso dos RECURSOS e por qualquer aplicação dos produtos neles descritos. O usuário concorda em indenizar e isentar a RPL de todas as responsabilidades, custos, danos ou outras perdas decorrentes do uso dos RECURSOS. A RPL concede aos usuários permissão para usar os RECURSOS exclusivamente em conjunto com os produtos Raspberry Pi. Qualquer outro uso dos RECURSOS é proibido. Nenhuma licença é concedida a qualquer outro direito de propriedade intelectual da RPL ou de terceiros.
ATIVIDADES DE ALTO RISCO. Os produtos Raspberry Pi não são projetados, fabricados ou destinados ao uso em ambientes perigosos que exijam desempenho à prova de falhas, como na operação de instalações nucleares, sistemas de navegação ou comunicação de aeronaves, controle de tráfego aéreo, sistemas de armas ou aplicações críticas de segurança (incluindo sistemas de suporte à vida e outros dispositivos médicos), nos quais a falha dos produtos pode levar diretamente à morte, ferimentos pessoais ou danos físicos ou ambientais graves (“Atividades de Alto Risco”). A RPL se isenta especificamente de qualquer garantia expressa ou implícita de adequação para Atividades de Alto Risco e não se responsabiliza pelo uso ou inclusão de produtos Raspberry Pi em Atividades de Alto Risco. Os produtos Raspberry Pi são fornecidos sujeitos aos Termos Padrão da RPL. O fornecimento dos RECURSOS pela RPL não expande ou modifica de outra forma os Termos Padrão da RPL, incluindo, entre outros, as isenções de responsabilidade e garantias expressas neles.
Perguntas frequentes
- P: Quais produtos Raspberry Pi são suportados por este documento?
R: Este documento se aplica a vários produtos Raspberry Pi, incluindo Pi 0 W, Pi 1 A/B, Pi 2 A/B, Pi 3, Pi 4, Pi 400, CM1, CM3, CM4, CM5 e Pico. - P: Como posso reduzir as chances de corrupção de dados no meu dispositivo Raspberry Pi?
R: Você pode reduzir a corrupção de dados minimizando as operações de gravação, especialmente as atividades de registro, e ajustando os tempos de confirmação para file sistema conforme descrito neste documento.
Documentos / Recursos
![]() | Raspberry Pi tornando-o mais resiliente File Sistema [pdf] Guia do Usuário Pi 0, Pi 1, Tornando-o Mais Resiliente File Sistema, Mais Resiliente File Sistema, Resiliente File Sistema, File Sistema |