因此,我正在按照教程安装 OTRS,即开源票证请求系统。因此为了安装,需要: 4GB 交换空间。这是我使用的命令:
[root@ip-10-0-7-41 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 50G 14G 37G 27% /
devtmpfs 478M 0 478M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 13M 484M 3% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
tmpfs 100M 0 100M 0% /run/user/1000
[root@ip-10-0-7-41 ~]# fallocate -l 4G /myswap
[root@ip-10-0-7-41 ~]# ls -lh /myswap
-rw-r--r--. 1 root root 4.0G Jul 8 08:44 /myswap
[root@ip-10-0-7-41 ~]# chmod 600 /myswap
[root@ip-10-0-7-41 ~]# mkswap /myswap
Setting up swapspace version 1, size = 4194300 KiB
no label, UUID=3656082a-148d-4604-96fb-5b4604fa5b2e
[root@ip-10-0-7-41 ~]# swapon /myswap
swapon: /myswap: swapon failed: Invalid argument
您可以在此处看到:无效参数错误。我尝试了很多次都没有成功。请有人告诉我如何修复这个错误。 (我在 AWS 实例 EC2 上运行 CentOS 7)
[root@ip-10-0-7-41 ~]# df -T | awk '{print $1,$2,$NF}' | grep "^/dev"
/dev/xvda1 xfs /
答案1
问题fallocate(1)
是它使用文件系统ioctls
来使分配快速有效,缺点是它不物理分配空间但swapon(2)
系统调用需要真实的空间。参考 :https://bugzilla.redhat.com/show_bug.cgi?id=1129205
我的盒子之前也遇到过这个问题。因此,我没有使用 ,而是按照链接的建议fallocate
使用dd
sudo dd if=/dev/zero of=/myswap count=4096 bs=1MiB
并继续使用chmod
, mkswap
&swapon
命令。答对了 !有效。
答案2
按照以下步骤操作,它适用于 DigitalOcean 的 Droplet。我测试过。根据您的需要更改金额4096
yum install nano -y
sudo dd if=/dev/zero of=/swapfile count=4096 bs=1MiB
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo nano /etc/fstab
添加这一行:
/swapfile swap swap sw 0 0
运行这个命令
sudo sysctl vm.swappiness=10
sudo nano /etc/sysctl.conf
添加这一行
vm.swappiness = 10
vm.vfs_cache_pressure = 50
验证交换的大小
swapon --summary
free -h
答案3
就我而言,内核日志中有一个错误:
BTRFS warning (device sdd1): swapfile must not be copy-on-write
在分配空间之前禁用 CoW ( chattr +c /swapfile
) 可以解决该问题。