não pode adicionar swap com fallocate no EC2

2

Estou tentando configurar a troca em /etc/rc.local dessa maneira:

sudo fallocate -l 8192M /mnt/swapfile1
sudo mkswap /mnt/swapfile1
sudo swapon /mnt/swapfile1

Isso, no entanto, retorna um erro:

fallocate: /mnt/swapfile.sys: fallocate failed: Operation not supported

minhas partições (EC2) são as seguintes:

ubuntu@ip-10-0-0-52:~$ df -h

Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.8G  2.8G  4.6G  38% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            3.7G  8.0K  3.7G   1% /dev
tmpfs           752M  204K  752M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            3.7G     0  3.7G   0% /run/shm
none            100M     0  100M   0% /run/user
/dev/xvdb       414G   71M  393G   1% /mnt

com dd funciona, mas é meio lento, eu queria ter certeza de que a troca está presente na inicialização.

    
por John Smith 26.09.2014 / 10:48

1 resposta

2

A partir do Kernel Linux v2.6.31, a chamada do sistema fallocate é suportada pelos sistemas de arquivos btrfs, ext4, ocfs2 e xfs.

Você pode confirmar qual sistema de arquivos você tem com este comando (assumindo o nome do dispositivo dado acima):

file -sL /dev/xvdb 

Infelizmente, parece que, em alguns casos, o armazenamento da instância é fornecido formatado em ext3 em vez de ext4 .

Supondo que seu armazenamento de instância esteja em /dev/svdb e você queira criar um arquivo de troca em /mnt/swap que tenha 16 GB de tamanho (imenso!), colocar isso em /etc/rc.local fará isso acontecer toda vez na inicialização. Você deve comentar a linha para /dev/xvdb em /etc/fstab nesse caso, porque agora o dispositivo será montado por /etc/rc.local tarde no processo de inicialização, em vez de antes.

umount /dev/xvdb mkfs.ext4 /dev/xvdb mount /dev/xvdb /mnt fallocate -l 16GB /mnt/swap chmod 600 /mnt/swap mkswap /mnt/swap swapon /mnt/swap

    
por Mark Stosberg 14.01.2015 / 15:54