Como expandir o espaço tmpfs no Linux

Conteúdo

Bash Shell

Você já ouviu falar de tmpfs no Linux? É aquele pequeno sistema de arquivos temporário que reside na memória e é instalado por padrão nas distribuições Linux. Ultra-rápido, mas regularmente limitado em tamanho. Você pode crescer facilmente? Saber mais!

O que é tmpfs?

Tudo dentro de um computador tem uma certa velocidade operacional nativa. Começa com a CPU (a Unidade Central de Processamento) No seu computador, que tem um conjunto de caches L1-Lx (Nível 1 no nível x), eles são muito pequenos (como um exemplo, 16 Kb) mas ultrarrápido (e provavelmente ultrarrápido). -dispendioso).

Após os caches de CPU, são os principais bancos de memória, que ainda são muito mais rápidos (e byte por byte mais caro) que o disco rígido, etc. Como você pode ver, trata-se de custo versus tamanho versus velocidade. A regra geral é que o custo aumenta à medida que a velocidade aumenta e o tamanho diminui para limitar o custo, etc.

Se você armazenou todos os seus dados dentro dos principais chips de memória do seu computador, o que é tecnicamente muito viável e bastante simples de fazer, seu trabalho literalmente voe em comparação com o uso de um único disco, uma vez que os chips de memória são muito mais rápidos do que a maioria dos discos rígidos.

Apesar disto, existem algumas limitações técnicas com este. Depois de desligar o computador, seus arquivos irão desaparecer. Uma falha irrecuperável de aplicativo pode ser o suficiente para você ter que reiniciar o computador e perder seus arquivos. Ao mesmo tempo, você nunca poderia desligar seu computador novamente, a menos que tivesse alguns recursos avançados (isso não existe até onde eu sei) para manter seus arquivos em chips de memória, equivalente a um cache compatível com BBU (Unidade de backup de bateria) em um controlador de ataque.

Apesar disto, observe que há um recurso equivalente (mas não idêntico) para este que você já pode estar usando: quando você suspende seu sistema para RAM (usando dormir ou outra terminologia equivalente usada por sistemas operacionais), alguma energia será continuamente fornecida aos seus chips de memória para manter seus dados atualizados.

Subseqüentemente, quando você reinicia o seu sistema, você pode continuar de onde parou. Mas desligar enquanto mantém o conteúdo da memória geralmente não é usado com computadores. Potencialmente, pode ser usado por tablets inteligentes, mesmo que possa ser argumentado que tais estados não são verdadeiros estados, mas sim estados de baixo consumo.

Tendo esclarecido como, em termos gerais, armazenar seus arquivos em chips de memória provavelmente não é uma ideia sólida, existem outros usos onde pode ser útil. Como um exemplo, ao testar / controle de qualidade do programa, é provável que inicie e feche o programa em teste normalmente.

Esses arquivos são temporários e de pouco valor individual. (a menos que um bug seja encontrado, em que ponto os dados podem ser copiados de volta para o disco principal) e, Como tal, pode ser armazenado em seus chips de memória. Isto é o que tmpfs é e faz: É um sistema de arquivos temporário dentro da sua memória. Alguns de vocês podem se opor imediatamente e dizer: “Isso não é verdade.”, E eles estariam certos. continue lendo.

Aqueles que se opuseram poderiam ter feito imediatamente a alegação de que o tmpfs não é garantido que o espaço esteja na memória, e isso é verdade. Podes ver tmpfs como um híbrido entre um disco RAM real (um disco criado em memória volátil) e armazenamento em disco permanente real. Em certos casos, o kernel do Linux irá trocar o conteúdo do tmpfs no espaço de troca do sistema, que poderia estar no disco. Isso é feito de forma transparente (sem a necessidade de interação do usuário).

Para obter mais informações sobre como configurar um disco RAM, veja nosso guia Como criar uma unidade RAM no Linux.

Seu atual tmpfs Tamanho

Agora que temos tmpfs espaço melhor definido, Vamos dar uma olhada no tamanho atual do seu tmpfs espaço. Você poderia pensar nele tmpfs sistema como uma unidade virtual, temporário e volátil. Você pode ver o espaço em uso usando df -h (uso de espaço em disco do sistema de arquivos (df) em formato legível por humanos, Graças ao -h opção):

df -h | grep -Ei 'shm|Tamanho'

Verificando o uso atual de tmpfs usando df -h

Aqui usamos df -h (explicado acima) combinado com um cano (|) para enviar a saída resultante do df -h ainda grep, usando um estendido (-E) formatar a expressão regular sem fazer distinção entre maiúsculas e minúsculas (-i ou simplesmente eu quando combinado com outra alternativa) para escolher o título principal (isso inclui a palavra Size) e qualquer linha que inclua o texto shm.

A razão pela qual grep shm isso é quase sempre, como também podemos ver na saída aqui, o espaço tmpfs é alocado para o diretório do sistema de arquivos /dev/shm. Se o comando acima não produzir nenhum resultado, apenas corra df -h e analise o total de resultados para pesquisar tmpfs espaço, sim tem.

tenha em conta que, por padrão, o sistema operacional também atribuirá / irá definir alguns espaços tmpfs, Isso poderia, como um exemplo, mapearse / Montar o /sys/fs/cgroup, /run e /run/lock diretórios. Não tente editá-los.

Em relação a /dev/shm e outros diretórios, observe para ver essas pastas na estrutura de diretórios do sistema operacional [árvore] não significa que os arquivos sejam realmente / fisicamente armazenado no disco em alguns /dev/shm diretório!

Simplesmente significa que, de acordo e de acordo com a maneira padrão do Linux de ser capaz de montar unidades (o para este caso, tmpfs) em qualquer diretório na hierarquia do sistema de arquivos, se havia arquivos nesse diretório antes da montagem , eles simplesmente não seriam visíveis até que o ponto de montagem fosse descartado.

Neste sistema particular, a tmpfs o espaço é de 32 GB e quase tudo não é usado. O pouco que está em uso (166 MB) é a mesa da meta / índice do próprio diretório, que é invisível para os usuários, mas está pronto para ser capaz de armazenar arquivos na estrutura do sistema de arquivos. O tamanho do tmpfs isto é, por padrão, metade da memória do sistema para certos sistemas operacionais.

Este é um muito grande tmpfs e seria apenas tecnicamente justificado, até certo ponto, em um sistema com, como um exemplo, 40 GB ou mais de memória física, ainda quando, dependendo das circunstâncias, um caso de uso específico pode justificar outras configurações. Em geral, Eu recomendo manter o tmpfs espaço menor que, Digamos, a 70-80% da memória, e essa porcentagem seria significativamente menor se a RAM (Memória de acesso aleatório, outra forma abreviada ou forma de se referir à memória do sistema) Eu era pequeno para começar.

A razão para isso é que você deseja disponibilizar espaço de memória suficiente para executar outros programas, sistemas operacionais e serviços de software.

Como um exemplo, Eu não gostaria de premiar o 80% de memória se o seu sistema tivesse 2 GB de memória, uma vez que isso provavelmente deixaria muito pouco para que outras coisas funcionassem corretamente ou de todo. E, pelo contrário, tem um monte de 256 GB de memória, incluindo o 90% disso (230,4 GB) Eu deixaria alguns bons 25 GB disponível, naquela, dependendo do caso de uso, poderia (ou não) seja o suficiente.

Em resumo, Eu recomendo que você sempre ajuste o tamanho de tmpfs dependendo de 1) quanto espaço você realmente precisa no tmpfs, 2) quanta memória há em seu sistema e 3) quanta memória real outros aplicativos estão usando ao mesmo tempo do tmpfs (incluindo suas operações, Serviços, etc.). A experiência com todas essas coisas ajuda aqui.

Extensão tmpfs em seu sistema

Agora que sabemos o tamanho do riacho tmpfs volume e que tamanho dar no futuro, usando algumas das considerações fornecidas no último parágrafo acima, podemos dar uma olhada para ampliar (ou reduzir) nosso tmpfs espaço.

Fazer é muito simples. Tudo o que vamos fazer é, Em vez de o sistema operacional configurar automaticamente o /dev/shm espaço tmpfs para nós, defini-lo estaticamente no lugar no /etc/fstab Arquivo, que controla os mapeamentos da unidade na inicialização. Nós simplesmente adicionamos:

# <sistema de ficheiros> <ponto de montagem> <modelo> <opções de opções>                                       <Despejar> <passar>
tmpfs /dev/shm tmpfs padrão,rw,nodev,nofail,noatime,nosuid,tamanho=2G   0      0

al /etc/fstab procedimentos. Não copie o primeiro comentário (# prefixo), uma vez que ele já estará lá. Ao mesmo tempo, mudar o 2G (2GB) de acordo com sua exigência calculada / estimado para o tamanho de tmpfs. pode não ser útil para determinar isso perto ou acima do tamanho da memória disponível, como explicamos anteriormente.

As marcas de cabeçalho no /etc/fstab arquivo explicar o significado de campos, e você pode encontrar mais informações no fstab manual, que pode ser obtido digitando man fstab. Simplesmente, pedimos ao sistema operacional para montar um tmpfs Sistema de arquivo (a localização do sistema está na memória, então, em vez de especificar um dispositivo, indicamos tmpfs.) e o tipo tmpfs, montado em /dev/shm.

Também estabelecemos uma série de alternativas. Você provavelmente vai querer deixar o defaults,rw,nodev,nofail minimamente (use padrões, acesso de leitura / escrita, nenhum dispositivo físico presente e não pare de iniciar o sistema operacional se esta montagem falhar de alguma forma).

Você também pode optar por deixar as alternativas de otimização noatime,nosuid Se você desejar (que é ideal para teste / configurações de controle de qualidade, uma vez que fará isso mais rápido, mantendo menos informações sobre os arquivos no espaço tmpfs), ou você pode excluí-los (e suas vírgulas correspondentes). Ao mesmo tempo, sair (e mudar / especificar o tamanho) a size=xG parâmetro. Em resumo, nós temos um padrão 0 0 por dump and pass (juiz man fstab para obter mais informações sobre essas duas opções).

Assim que a mudança for feita, apenas reinicie o seu sistema e execute df -h para verificar se você /dev/shm O espaço tmpfs agora tem o novo tamanho que você configurou. Se algo deu errado, Apenas verifique dmesg (digitado no prompt de comando) e verifique se há mensagens de erro em vermelho (você provavelmente terá que rolar) para descobrir o que deu errado. Mesmo quando algo deu errado, o sistema deveria ter iniciado bem de qualquer maneira, contanto que você não tenha excluído o nofail opção.

Para usuários do Ubuntu, existe, Apesar disto, um viável erro nofail prestar atenção. Costumava haver uma alternativa nobootwait opção [em vez de], mesmo que não esteja claro se ainda pode ser usado e, de ser assim, em quais versões do Ubuntu e seus derivados [só]. Como alternativa final para o teste, enquanto o SystemD estiver sendo usado, você poderia considerar usar x-systemd.device-timeout = 10 Tempo de espera, Onde 10 é o número de segundos que alguém está disposto a esperar durante o início.

Final

Neste post, nós analisamos em profundidade tmpfs dimensionamento, levando em consideração o caso de uso e outros fatores.

Nós também explicamos tmpfs em detalhe, descobri como encontrar o tamanho atual da máquina tmpfs Sistema de arquivo, e em suma, olhou como redimensionar tmpfs.

Divirta-se usando tmpfs!

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.