我正在尝试以这种方式设置交换/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/xvdb
in /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