I'm trying to setup the swap in /etc/rc.local this way:

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

This however returns an error:

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

my partitions (EC2) are this:

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

with dd it works, but it's kinda slow, I wanted to make sure swap is present on boot.


As of the Linux Kernel v2.6.31, the fallocate system call is supported by the btrfs, ext4, ocfs2, and xfs filesystems.

You can confirm which file system you have with this command (assuming the device name given above):

file -sL /dev/xvdb 

Unfortunately, it appears that in some cases the instance storage is provided formatted at ext3 instead of ext4.

Assuming your instance storage is at /dev/svdb and you want to make a swap file at /mnt/swap that's 16GB in size (huge!), Putting this is /etc/rc.local will make that happen every time at boot. You should comment out the line for /dev/xvdb in /etc/fstab in that case, because now the device will be mounted by /etc/rc.local late in the boot process instead of early.

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

|improve this answer|||||

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.