Не могу добавить своп с 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