无法在 EC2 上使用 fallocate 添加交换

无法在 EC2 上使用 fallocate 添加交换

我正在尝试以这种方式设置交换/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 内核 v2.6.31 开始,fallocate 系统调用受 btrfs、ext4、ocfs2 和 xfs 文件系统支持。

您可以使用此命令确认您拥有哪个文件系统(假设上面给出了设备名称):

file -sL /dev/xvdb 

不幸的是,在某些情况下,实例存储的格式似乎是 ,ext3而不是ext4

假设您的实例存储为/dev/svdb,并且您想要创建一个/mnt/swap大小为 16GB(巨大!)的交换文件,则将其放入其中/etc/rc.local将使每次启动时都发生这种情况。在这种情况下,您应该注释掉行 for /dev/xvdbin /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

相关内容