Не могу добавить своп с Fallocate на EC2

Я пытаюсь настроить своп в /etc/rc.local сюда:

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

Это однако возвращает ошибку:

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

мои разделы (EC2) это:

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

с dd это работает, но это довольно медленно, я хотел убедиться, что при загрузке присутствует своп.

1 ответ

Решение

Начиная с Linux Kernel v2.6.31, системный вызов fallocate поддерживается файловыми системами btrfs, ext4, ocfs2 и xfs.

Вы можете подтвердить, какая файловая система у вас есть, с помощью этой команды (при условии, что имя устройства указано выше):

file -sL /dev/xvdb 

К сожалению, в некоторых случаях хранилище экземпляров предоставляется в формате ext3 вместо ext4,

Предполагая, что ваше хранилище экземпляров находится в /dev/svdb и вы хотите сделать файл подкачки в /mnt/swap это 16GB по размеру (огромный!), положить это /etc/rc.local сделает это каждый раз при загрузке. Вы должны закомментировать строку для /dev/xvdb в /etc/fstab в этом случае, потому что теперь устройство будет установлено /etc/rc.local поздно в процессе загрузки, а не рано.

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

Другие вопросы по тегам