Então, eu estou seguindo um tutorial para instalar o OTRS, que é um sistema de solicitação de ticket de código aberto. Portanto, para instalar, são necessários: 4 GB de espaço de swap. Aqui está o comando que eu usei:
[root@ip-10-0-7-41 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 50G 14G 37G 27% /
devtmpfs 478M 0 478M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 13M 484M 3% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
tmpfs 100M 0 100M 0% /run/user/1000
[root@ip-10-0-7-41 ~]# fallocate -l 4G /myswap
[root@ip-10-0-7-41 ~]# ls -lh /myswap
-rw-r--r--. 1 root root 4.0G Jul 8 08:44 /myswap
[root@ip-10-0-7-41 ~]# chmod 600 /myswap
[root@ip-10-0-7-41 ~]# mkswap /myswap
Setting up swapspace version 1, size = 4194300 KiB
no label, UUID=3656082a-148d-4604-96fb-5b4604fa5b2e
[root@ip-10-0-7-41 ~]# swapon /myswap
swapon: /myswap: swapon failed: Invalid argument
Você pode ver: Erro de argumento inválido aqui. Tentei várias vezes em vão habilitá-lo. Alguém por favor me diga como corrigir este erro. (Estou executando este CentOS 7 na AWS Instance EC2)
[root@ip-10-0-7-41 ~]# df -T | awk '{print $1,$2,$NF}' | grep "^/dev"
/dev/xvda1 xfs /
dd
. Lembre-se de que nem todos os sistemas de arquivos oferecem suporte à troca ou, pelo menos, não da mesma maneira.Respostas:
O problema
fallocate(1)
é que ele usa o sistemaioctls
de arquivos para tornar a alocação rápida e eficaz, a desvantagem é que ele não aloca fisicamente o espaço, mas oswapon(2)
syscall exige um espaço real. Referência: https://bugzilla.redhat.com/show_bug.cgi?id=1129205Eu já havia enfrentado esse problema anteriormente com minha caixa. Então, ao invés de usar
fallocate
, eu useidd
como o link sugeree avançar com
chmod
,mkswap
&swapon
comandos. Bingo! Funcionou.fonte
dd
parece estar fazendo muito mais trabalhotime dd if=/dev/zero of=/myswap count=4096 bs=1MiB
leva 14,003 segundos, ondetime fallocate -l 4G /swap3
leva 0,018 segundos, mas eles produzem o mesmo tamanho de arquivo. Eu estou supondo quefallocate
não copie em zeros da mesma formadd
eswapon
precisa desses zeros.swapon: /swapfile: read swap header failed: Invalid argument
obtive este erro depois de tentarswapon /swapfile
no servidor centos7 puppetenterpriseSiga estas etapas, ele funciona nas gotículas do DigitalOcean. Eu testei. Altere a quantidade 4096 de acordo com sua necessidade
adicione esta linha:
execute este comando
adicione esta linha
Para verificar o tamanho da troca
fonte
dd
comando seriadd if=/dev/zero of=/swapfile count=4 bs=1GiB
porque não posso ser incomodado com o cálculo de mebibytes em gibibytes sedd
puder fazer isso por mim. Você sabia que antigamente as pessoas o expressavam em kibibytes e o calculavam manualmente em gibibytes? Incrível!bs=
não é a maneira correta de fazer isso, pois tem consequências indesejadas, como prejudicar a eficiência e provavelmente não funcionará na maioria dos hostings de baixo custo. Se você é apenas preguiçoso, usecount_bytes
e deixedd
fazer por você a matemática e a escolha de um tamanho de bloco eficiente:dd if=/dev/zero of=/swapfile count=4GiB iflag=count_bytes
=)iflag=count_bytes
é uma excelente melhoria para o seu comentário. E eu não sou preguiçoso, eu me preocupo com a legibilidade. Dentro de seis meses, quando eu leio meu script novamente (ou quando o próximo mantenedor aparecer), o leitor deve entender o que está acontecendo. Não são apenas os computadores que lêem código, os humanos também lêem código!