Header Ads

Como aumentar o espaço tmpfs no Linux

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 geralmente de tamanho limitado. Pode-se cultivar facilmente? Descubra & mais!

O que é tmpfs?

Tudo dentro de um computador tem uma certa velocidade nativa de operação. Ele começa com a CPU (a Unidade de Processamento Central) em seu computador, que tem um conjunto de caches L1-Lx (Nível 1 a Nível x), que são muito pequenos (por exemplo, 16Kb), mas ultrarrápidos (e provavelmente ultra -caro).

Depois dos caches da CPU, existem os principais bancos de memória, que ainda são muito mais rápidos (e byte a byte mais caros) do que o disco rígido e assim por diante. Como você pode ver, é uma questão de custo versus tamanho versus velocidade. A regra geral é que o custo aumenta com o aumento da velocidade e que o tamanho diminui para limitar o custo, etc.

Se você armazenasse todos os seus dados dentro dos principais chips de memória do seu computador, o que é tecnicamente ultra-possível e bastante fácil de fazer, seu trabalho voaria literalmente em comparação com quando você está usando apenas o disco, pois os chips de memória são muito mais rápidos do que a maioria das unidades de disco rígido.

Existem, no entanto, algumas limitações técnicas com isso. Depois de desligar o computador, seus arquivos serão perdidos. Uma falha irrecuperável do aplicativo pode ser o suficiente para fazer você ter que reiniciar o computador e perder seus arquivos. Além disso, você nunca poderia desligar seu computador novamente, a menos que tivesse algum recurso avançado (que não existe até onde eu sei) para manter seus arquivos nos chips de memória, semelhante a uma unidade de backup de bateria compatível com BBU ) cache em um controlador RAID.

Observe que há, no entanto, um recurso semelhante (mas não idêntico) a este que você já pode estar usando: quando você suspende seu sistema para a RAM (usando hibernação ou outra terminologia similar empregada por sistemas operacionais), um pouco de poder ser continuamente fornecido aos seus chips de memória para manter seus dados atuais.

Então, quando você retomar o seu sistema, poderá continuar de onde parou. Mas desligar enquanto mantém o conteúdo da memória geralmente não é usado com computadores. Ele pode ser potencialmente usado por tablets inteligentes, embora alguém possa argumentar que tais estados não são verdadeiros estados de desligamento, mas sim estados de baixa energia.

Tendo esclarecido como, em geral, &’ provavelmente não é uma ideia sólida salvar seus arquivos em chips de memória, existem alguns outros usos em que pode ser útil. Por exemplo, ao fazer testes / garantia de qualidade em relação a programas, você provavelmente iniciará e encerrará o programa em teste muitas vezes.

Esses arquivos são temporários e de pouco valor individual (a menos que um bug seja encontrado, nesse ponto, os dados podem ser copiados de volta para o disco principal) e, como tal, podem ser armazenados em seus chips de memória. Isso é 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 você estaria correto. Continue lendo.

Aqueles que objetariam podem ter feito imediatamente a afirmação de que o espaço tmpfs não tem garantia de estar na memória, e isso é verdade. Você pode ver o tmpfs como um híbrido entre um disco ram verdadeiro (um disco criado na memória volátil) e o armazenamento em disco permanente real. Em certos casos, o kernel do Linux irá trocar o conteúdo tmpfs para o espaço de troca do sistema, que pode estar no disco. Isso é feito de forma transparente (sem a necessidade de interação do usuário).

Se você quiser aprender mais sobre como configurar um ramdisk, consulte nosso guia Como criar uma unidade RAM no Linux.

Seu tamanho tmpfs atual

Agora que temos o espaço tmpfs melhor definido, vamos dar uma olhada no tamanho atual do seu espaço tmpfs. Você pode pensar no sistema tmpfs como uma unidade virtual, temporária 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 à opção -h):

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

Aqui, usamos df -h (explicado acima) combinado com um pipe (|) para enviar a saída resultante do df -h para um grep, que usa um ( -E) formato regex sem distinção entre maiúsculas e minúsculas (-i ou simplesmente i quando combinado com outra opção) para selecionar o título superior (que inclui a palavra Tamanho) e qualquer linha que inclua o texto shm.

A razão de usarmos o grep para shm é que quase sempre, como também podemos ver na saída aqui, o espaço tmpfs é mapeado para o diretório do sistema de arquivos / dev / shm. Se o comando acima não gerar nenhuma saída, basta executar df -h e revisar os resultados totais para procurar o espaço tmpfs, se houver.

Observe que, por padrão, o sistema operacional também alocará / definirá alguns espaços tmpfs, que podem, por exemplo, ser mapeados / montados nos diretórios / sys / fs / cgroup, / run e / run / lock. Não tente modificá-los.

Quanto ao / dev / shm e outros diretórios, observe que ver essas pastas na estrutura de diretórios do sistema operacional [árvore] não significa que os arquivos são realmente / fisicamente armazenado no disco em algum diretório / dev / shm!

Significa simplesmente que, de acordo com e de acordo com a maneira padrão do Linux de ser capaz de montar drives (ou neste caso, tmpfs) em qualquer diretório na hierarquia do sistema de arquivos, se houver arquivos em tal diretório antes para a montagem, eles simplesmente não seriam visíveis até que o ponto de montagem fosse retirado.

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

Este é um tmpfs bastante grande e só seria tecnicamente justificado, até certo ponto, em um sistema com, por exemplo, 40 GB ou mais de memória física, embora, dependendo do circunstâncias, um caso de uso específico pode justificar outras configurações. Em geral, eu recomendo manter o espaço tmpfs menor que, digamos, 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 ao seu sistema memória) era pequena para começar.

O motivo para isso é que você deseja deixar espaço de memória suficiente disponível para executar outros programas, sistemas operacionais e serviços de software.

Por exemplo, você não desejaria alocar 80% da memória se o seu sistema tivesse 2 GB de memória, pois isso provavelmente deixaria muito pouco para outras coisas funcionarem corretamente ou de todo. Se, por outro lado, você tem 256 GB de memória, mesmo 90% disso (230,4 GB) deixaria bons 25 GB disponíveis, o que — dependendo do caso de uso — pode (ou não) ser bastante.

Em resumo, eu recomendo que você sempre ajuste o tamanho do tmpfs dependendo de 1) quanto espaço você realmente precisa no tmpfs, 2) quanta memória há no seu sistema, e 3) quanta memória real outros aplicativos estão usando além do tmpfs (incluindo sua operação, serviços, etc.). A experiência com todas essas coisas ajuda aqui.

Ampliando tmpfs em seu sistema

Agora que sabemos o tamanho do volume tmpfs atual e qual tamanho fornecer no futuro usando algumas das considerações fornecidas no último parágrafo acima, podemos dar uma olhada em como aumentar (ou encolher) nosso espaço tmpfs.

Fazer isso é muito fácil. Tudo o que temos a fazer é, em vez de ter o sistema operacional configurando automaticamente o espaço / dev / shm tmpfs para nós, defini-lo estaticamente no arquivo / etc / fstab regular, que controla os mapeamentos de unidade na inicialização. Simplesmente adicionamos:

 # < sistema de arquivos > < ponto de montagem > < tipo > < options > < dump > < pass > tmpfs / dev / shm padrões tmpfs, rw, nodev, nofail, noatime, nosuid, size = 2G 0 0 

para o arquivo / etc / fstab. Não copie a primeira linha comentada (com o prefixo #), pois ela já estará lá. Além disso, altere o tamanho 2G (2 GB) para seu requisito calculado / estimado para o tamanho tmpfs. Provavelmente não é útil definir esse tamanho próximo ou acima do tamanho da memória disponível, como explicamos anteriormente.

As marcações de cabeçalho no arquivo / etc / fstab esclarecem os significados dos campos, e você pode encontrar mais informações no manual do fstab, que pode ser obtido digitando man fstab. Basicamente, estamos pedindo ao sistema operacional para montar um sistema de arquivos tmpfs (a localização do sistema está na memória, então, em vez de especificar um dispositivo, indicamos tmpfs.) E aquele do tipo tmpfs, montado em / dev / shm.

Também definimos várias opções. Provavelmente, você desejará deixar os padrões, rw, nodev, nofail no mínimo (Use padrões, acesso de leitura / gravação, nenhum dispositivo físico presente e não deixe de iniciar o sistema operacional se esta montagem falhar de alguma forma.) .

Você também pode escolher deixar as opções de otimizações noatime, nosuid se quiser (o que é ideal para configurações de teste / QA, pois irá torná-lo mais rápido, mantendo menos informações sobre os arquivos no espaço tmpfs), ou você pode remover aqueles (e suas vírgulas correspondentes). Além disso, deixe (e altere / especifique o tamanho) o parâmetro size = xG. Finalmente, temos um 0 0 bastante padrão para despejar e passar (ref man fstab para mais informações sobre essas duas opções).

Uma vez que a mudança foi feita, simplesmente reinicie o seu sistema e execute df -h para verificar se o seu espaço / dev / shm tmpfs está agora com o novo tamanho que você definiu ser. Se algo deu errado, simplesmente verifique dmesg (digitado em seu prompt de comando) e procure por mensagens de erro em vermelho (você provavelmente terá que rolar a página) para descobrir o que deu errado. Mesmo que algo deu errado, o sistema deveria ter iniciado bem de qualquer maneira, desde que você não tenha removido a opção nofail.

Para usuários do Ubuntu, existe, no entanto, um possível bug nofail que deve ser levado em consideração. Costumava haver uma opção alternativa nobootwait [em vez], embora não esteja claro se ainda pode ser usada e, se for, em quais versões do Ubuntu e seus derivados [apenas]. Como alternativa final para testar, desde que SystemD esteja sendo usado, pode-se considerar o uso de x-systemd. device-timeout = 10 timeout, onde 10 é o número de segundos que alguém está disposto a esperar durante a inicialização.

Concluindo

Neste artigo, demos uma olhada completa no dimensionamento do tmpfs, tendo em mente o caso de uso e outros fatores.

Também explicamos o tmpfs em detalhes, descobrimos como encontrar o tamanho atual do sistema de arquivos tmpfs da máquina e, finalmente, vimos como redimensionar o tmpfs.

Divirta-se usando tmpfs!

Nenhum comentário