Não gosto muito de comprar um disco rígido USB, mas sei que os cartões SD não são adequados para muitas repetições de leitura e gravação.
Existem medidas que eu posso tomar para prolongar a vida útil do meu cartão SD enquanto ele está sendo usado pelo meu Raspberry Pi?
sd-card
durability
Altamente Irregular
fonte
fonte
Respostas:
Esses métodos devem aumentar a vida útil do cartão SD, minimizando o número de leituras / gravações de várias maneiras:
Desativar Troca
Trocar é o processo de usar parte do cartão SD como memória volátil. Isso aumentará a quantidade de RAM disponível, mas resultará em um número alto de leituras / gravações. É improvável aumentar significativamente o desempenho.
Desative a troca com o
swapoff
comando:Você também deve impedir que ele volte após uma reinicialização:
sudo apt-get remove dphys-swapfile
removê-lo permanentemente. Melhor remover porque definir oCONF_SWAPSIZE
0, conforme explicado nesta resposta , parece não funcionar e ainda cria um arquivo de troca de 100 MB após a reinicialização./etc/fstab
Desabilitando o Diário no Sistema de Arquivos
Usando um journaling, como
ext3
ouext4
sem um jornal é uma opção para diminuir a leitura / escreve. A desvantagem óbvia de usar um sistema de arquivos com o diário desativado é a perda de dados como resultado de uma desmontagem desagradável (ou seja, após falha de energia, bloqueio do kernel, etc.).Você pode desativar o registro no diário
ext3
montando-o comoext2
.Você pode desativar o registro em diário
ext4
em uma unidade desmontada como esta:The noatime Mount Flag
Atribua o sinalizador de montagem noatime às partições residentes no cartão SD, adicionando-o à seção de opções da partição em
/etc/fstab
.Diretórios na RAM
Diretórios altamente usados como
/var/tmp/
e possivelmente/var/log
podem ser realocados para a RAM da/etc/fstab
seguinte maneira:Isso permitirá
/var/tmp
usar 50 MB de RAM como espaço em disco. O único problema ao fazer isso é que qualquer unidade montada na RAM não persistirá após uma reinicialização. Portanto, se você montar/var/log
e seu sistema encontrar um erro que faz com que seja reiniciado, não será possível descobrir o porquê.Diretórios no disco rígido externo
Você também pode montar alguns diretórios em um disco rígido USB persistente. Mais detalhes sobre isso podem ser encontrados nesta pergunta .
O Raspberry Pi também pode inicializar sua partição raiz a partir de uma unidade externa. Isso pode ser via USB ou Ethernet e significa que o cartão SD será usado apenas para delegar a diferentes dispositivos durante a inicialização. Isso requer um pouco de hacking do kernel para ser realizado, pois não acho que o kernel padrão suporte o armazenamento USB. Você pode encontrar mais informações nesta pergunta ou nesta postagem de blog externo .
fonte
noatime
deve ser um padrão.noatime
não é o padrão, pelo menos no Arch./var/tmp
na memória. Talvez você tenha confundido isso/tmp
.noatime
causar problemas, você também pode usar orelatime
que reduz significativamente as gravações em disco na leitura, em vez de removê-las completamente.Se as opções fornecidas pelo Jivings não forem possíveis para o seu aplicativo, outra opção para prolongar sua vida substancialmente é usar um cartão SD muito maior do que o necessário.
Deixe bastante espaço livre
A maioria dos cartões SD decentes usa algoritmos de nivelamento de desgaste para minimizar o número de vezes que cada bloco é gravado; portanto, se o cartão SD for maior do que o necessário, o desgaste poderá ser espalhado por uma área muito maior de espaço livre.
Parte do motivo pelo qual o nivelamento de desgaste é tão importante é que alguns sistemas de arquivos, como o FAT (o formato padrão para muitos cartões SD), martelam os mesmos setores repetidamente.
Para obter mais informações, consulte as respostas para a pergunta. É verdade que um cartão SD / MMC usa nivelamento com seu próprio controlador? no Electronics Stack Exchange , especialmente esta resposta .
Uma estatística interessante dessa resposta é que
Mas o mais preocupante é que
Isso pode tornar sua escolha do sistema de arquivos importante se você precisar garantir um armazenamento confiável.
Uma observação final: dobrar o tamanho do cartão SD pode mais que dobrar a longevidade dele.
Ou seja, se você tiver um cartão SD de 2 GB com 200 MB livres, alternar para um cartão de 4 GB fornecerá 11 vezes o espaço livre, usará a capacidade de nivelamento e, portanto, longevidade, enquanto mudar para um cartão de 16 GB oferecerá 71 vezes mais espaço.
fonte
MMC_ERASE
comando (opcional) definido em algum lugar do padrão MMC / SD para esse fim. Apesar de todos os cartões SD, tentei apenas um (o que veio com o meu Pi-) realmente o suporta.A única coisa que vejo é NÃO trocar no cartão SD.
Trocar o cartão SD é provavelmente o que pode matar o seu cartão SD.
Se você precisar de mais memória RAM, tente usar o zram, há uma publicação em http://raspberry.pi.gw.gd/t50-Using-ZRAM.html, fornecendo alguns detalhes sobre o uso do ZRAM no raspberry pi
Mais informações sobre o zram em http://en.wikipedia.org/wiki/ZRam
Além disso, sabe-se que os cartões SD mais recentes são muito mais sólidos do que os mais antigos. Comprar um cartão SD classe 10 novinho em folha é provavelmente uma boa opção, pois você deseja vê-lo durar muito tempo.
fonte
Você pode tentar executar o Puppy Linux, que é completamente residente em ram. É muito pequeno e incrivelmente rápido, pois é executado completamente na memória, copiando a imagem de armazenamento (no cartão SD no seu caso) para a RAM na inicialização e, em seguida, liberando as alterações periodicamente de volta ao armazenamento. A frequência desse salvamento é controlada pelo usuário, incluindo manualmente.
O Puppy usa o sistema de arquivos aufs em camadas ou o unionfs mais antigo com qualquer um dos sistemas de arquivos Linux padrão como ext3 ou ext4. Também pode residir em partições FAT ou NTFS.
Existem pelo menos algumas versões do Puppy projetadas especificamente para o RPi, uma delas criada pelo "Puppy Master", Barry Kauler.
Para mais, acesse http://puppylinux.org/wikka/Puppi
fonte
A maioria das pessoas aqui fala sobre suas suposições e não fomenta a experiência pessoal.
Eu tenho usado meu RaspberryPi com RasPBX como um painel de controle da empresa com 8 extensões e um fax. Temos 3 troncos baseados em IP e um telefone fixo através do LinkSYS SPA3000. Levou apenas 1 mês para o meu SDCard inicial de 4 GB da Kingston morder a poeira.
Eu ainda estava experimentando e não tinha um backup. Aliás, o Pi está conectado a um no-break da APC. Em seguida, reconfigurei todo o RasPBX do zero, mas desta vez movi / var / log e / var / lib / mysql para o NAS corporativo. Este SD ainda estava OK após 3 meses.
Então tivemos um verão muito quente. Durante o terceiro mês, o pi começou a não detectar a Ethernet do nada. Então, um dia, descobri que todos os Leds são escuros e não inicializavam.
Substituí o Pi por um novo e pronto para uso. O que estava fora de ordem começou a funcionar após esfriar, mas funciona bastante irregular e, quando inicializado no RasPBX, o modo de vídeo não muda para gráficos, permanece em 80 * 25 de texto. Foi realmente uma bagunça. Eu pedi um conjunto de dissipador de calor desde então. O novo Pi trabalha com ele agora há mais de 2 meses 24/7.
Portanto, se você usar o pi em um ambiente 7/24, não seja barato - compre um dissipador de calor e evite usar / var / log e outros diretórios ocupados no SD CARD.
fonte
Comparei todas as soluções do utilitário TMPFS e a melhor resposta é uma síntese do script prepare-dirs (consulte http://grenzdebiel.dyndns.org/wordpress/?p=98 ) com um / etc / defaults / tmpfs adequado ( (consulte http://www.a-netz.de/2013/02/ramdisks-for-the-raspberry/ ).
As etapas necessárias para executar no raspbian são:
1. edite
/etc/default/tmpfs
e defina :Eu recomendo os seguintes tamanhos:
2. habilite diretórios adicionais usando / etc / fstab
3. use o script
/etc/init.d/prepare-dirs
para criar diretórios ausentes/var/log
para que todos os daemons iniciemVeja no final o que ele contém no meu caso.
4. Torne o script executável
chmod 755 /etc/initd/prepare-dirs
.5. Certifique-se de que o script seja iniciado primeiro na inicialização antes do início de seus daemons:
update-rc.d prepare-dirs defaults 01 99
conteúdo de
/etc/init.d/prepare-dir
:É isso aí.
fonte
Desativar arquivo de troca:
Não há necessidade de desinstalar; no entanto, se você não o estiver usando e desejar o espaço, poderá removê-lo com segurança. Comando alternativo para remover:
Uso: / sbin / dphys-swapfile {setup | swapon | swapoff | uninstall}
fonte
Resistência às Células Flash:
É puramente matemático em cartões grandes e com desgaste normal. Se você escrevesse em um cartão flash de 8 GB do tipo MLC, dia e noite, repetidamente, levaria cerca de 30 dias para matá-lo.
O episódio 99 da Techsnap fala sobre o desgaste de SSDs e Allen explica como é impossível usar um SSD no uso diário e não precisamos nos preocupar em desativar a troca, os crons e tudo mais. Apenas funciona agora! O nivelamento inteligente de desgaste cuida de tudo.
O desgaste normal, conforme citado por Kingston, deve proporcionar 27 anos de vida por uma câmera digital profissional.
O preço do flash caiu e a tecnologia é muito melhor.
A maioria dos cartões SD sobreviverá a duas ou três gerações de dispositivos e, nesse momento, será considerado pequeno e lento demais para usar com uma atualização muito melhor e mais barata disponível!
fonte
Como mencionado anteriormente, o principal problema são os arquivos e diretórios que não valem a pena serem salvos entre as reinicializações, mas são escritos com bastante frequência, como arquivos de cache, pastas de download, etc.
O Raspbian, assim como o Debian e o Ubuntu, têm um pacote chamado unburden-home-dir, cujo objetivo principal é vincular esses arquivos a um local menos problemático, como, por exemplo, uma
tmpfs
montagem ou um disco rígido externo que é menos propenso a se desgastar.Geralmente, ele é executado no momento do login no X e direcionado aos arquivos de cache do aplicativo GUI, mas também pode ser chamado a partir de scripts ou outros e configurado para arquivos arbitrários no diretório inicial do usuário.
fonte
Estas são as minhas recomendações para um Debian 8.0 (Jessie)
Eles são baseados em
iotop -bktoqqq
eiostat -dzp 5
. Você deve executar esses comandos primeiro para ter uma idéia do problema e sua solução.1. Desativar troca
2. Use as opções de montagem e RAM
Monte todas as partições no cartão SD com as
noatime,commit=1800
opções e monte os seguintes diretórios na RAM com estas entradas/etc/fstab/
:A confirmação atrasará as gravações e as coletará primeiro.
3. Registre os arquivos de log mais frequentes em
/var/tmp/log/
Veja minha descrição Como reduzir a gravação para arquivos de log .
4. Impeça o Chromium de martelar o cartão SD
Acontece que o Chromium escreve muito e não pode ser parado (consulte 176727 , 52663 ). Isso afeta o cache e o diretório de dados do usuário. O Chromium / Dicas e truques explicam como isso pode ser movido para a RAM. Como o Raspberry não possui muita RAM, o Tab Suspender sugerido é útil para economizar RAM.
a) Cache
Limite o tamanho do cache e mova-o para a RAM editando
/etc/chromium-browser/customizations/00-rpi-vars
paraAgora, o cache é pequeno o suficiente para ser movido para o disco RAM, alterando a
XDG_CACHE_HOME
entrada/etc/security/pam_env.conf
paraAgora, meus dois usuários têm um pequeno cache do navegador na RAM. Se isso não for suficiente, altere o cache ou / tmp / size conforme necessário.
b) Dir de dados do usuário
Além disso, os dados do usuário dir (
.config/chromium/
) sofrem gravações pesadas. O Profile-sync-daemon é recomendado pelo Chromium / Dicas e truques . Foi desenvolvido para gerenciar o perfil do seu navegador em tmpfs e sincronizá-lo periodicamente de volta ao seu disco físico. Infelizmente, o pacote ainda não faz parte da distribuição do Raspbian 8.0 (Jessie). Então, eu ainda não testei isso.5. Espaço livre no cartão SD
Espaço livre desinstalando pacotes e arquivos que você não precisa. Isso deve espalhar o desgaste de maneira mais uniforme nas partições.
Feito!
Agora corra
iotop -bktoqqq
eiostat -dzp 5
novamente e ver uma redução significativa no acesso de gravação quando o sistema estiver ocioso. Nada é gravado no meu disco por muitos minutos. E não se preocupe com o LED verde do ACT piscando . Aparentemente, não é um bom indicador de acesso de gravação.fonte
Apenas uma pequena redução nos ciclos de gravação pode ser alcançada transmitindo a saída do syslog para outro servidor. Obviamente, ter um servidor em
syslogd
execução é uma condição prévia. No entanto, com o Pi sendo um brinquedo para os entusiastas do Linux, esse é provavelmente o caso. :-)Para ativar esse streaming, basta inserir uma declaração como
na parte superior do arquivo
/etc/rsyslog.conf
, comente todas as outras linhas e reinicie o log emitindoservice rsyslog restart
. Depois disso, as mensagens devem chegar no servidor selecionado.Um claro efeito colateral vantajoso disso é que você pode monitorar facilmente seu Pi em conjunto com outras máquinas no mesmo servidor. Uma desvantagem é que, durante a inicialização e o desligamento do sistema, você pode perder algumas mensagens quando a conexão de rede ainda não foi estabelecida ou já foi desligada.
fonte
journald
quais os armazenam no diário systemd. Eles também configuramjournald
para encaminhar os logs para o soquete syslog no qualrsyslogd
está escutando; que coloca cópias adicionais das mensagens nos arquivos de log em/var/log
. Se você estiver acostumadojournalctl
a navegar nos seus logs (e funcionar muito melhor do que/var/log
quando estiver familiarizado com ele), poderá desativar completamentersyslog
e salvar algumas gravações.Nota: O limite de 100.000 ciclos é uma hipótese que se aplica a todos os dispositivos de computação, mesmo as teclas de um teclado. Acredito que executar o Pi em condições adequadas de resfriamento e em ciclos adequados de desligamento / início proporcionará melhores resultados, em vez de fazer analogias.
Também isso pode aumentar minha opinião acima.
Adicione um novo usuário além do usuário Pi [padrão]. Aponte o diretório inicial do novo usuário na unidade externa [polegar / disco rígido]. Conceda ao novo usuário permissões de superusuário e comece a usá-lo como sua conta principal.
Eu espero que isso ajude..
fonte
/var/log
e/var/tmp
. Além disso, ter evidências de que o resfriamento adequado faz a diferença é muito melhor do que dizer "eu acredito".Use o daemon syslog do busybox (no pacote busybox-syslogd no Raspbian / Debian / Ubuntu) em vez do daemon syslog padrão (geralmente rsyslog). Por padrão no Raspbian / Debian / Ubuntu, o syslogd do busybox efetua login apenas no buffer de anel na memória e não no disco. O buffer de anel tem um tamanho de 128kB por padrão, ou seja, as entradas de log antigas são desativadas em breve e desaparecem. Mas você pode configurá-lo para usar mais RAM para ele.
No entanto, esta é uma solução muito melhor do que não ter um daemon syslog, ou seja, você ainda pode efetuar login e ler as entradas de log do approx. algumas horas ou dias passados (dependendo do tamanho do tamp configurado anel) com o comando
logread
. Você também pode usarlogread -f
para obter umtail -f
comportamento semelhante, por exemplo, armazenar apenas entradas de log interessantes usando um script de filtro ou encaminhar entradas de log pela rede em outro local, por exemplo, usandostunnel
ou algo assim.fonte
Algumas coisas que fiz:
chmod do dphys-swapfile (em algum lugar no / etc - não próximo ao PI no momento) para:
Eu recebo erros menores na inicialização (não é possível iniciar o serviço dphys-swapfile) - Suponha que exista uma maneira melhor ... rc-update ??
Além disso, eu capturo imagens do módulo da câmera, para eventualmente colocar no meu servidor da web (o Pi). Formatei / dev / ram0 no ext2, montei-o como / media / ramdrive (usando /etc/init.rc, acho). São 4megs, grandes o suficiente para um piscar de olhos. Nenhuma gravação no SD.
O servidor (oululife.dnsdynamic.com) é experimental, mas está na web. Para enfatizar, eu também deixo transmitir um episódio em MP4 de 'Heartbeat *'. Ele roda lighttpd, Mysql, PHP, WordPress e, mesmo quando eu transmito remotamente pela Web, dificilmente suamos, com uma carga média de 0,2. Sem overclocking. Modelo-B rev. 2, até 24/7. Então, se eu conseguir colocar meus arquivos de log nos outros 15 / dev / ramX, acho que meu cartão Micro-SD 16G durará anos ...
fonte