OpenWrt 屏障破坏器,r44952; mikrotik rb951 2nd。
我尝试进行交换,但没有成功:
root@OpenWrt:~# dd if=/dev/zero of=/tmp/swapfile bs=10k count=5
5+0 records in
5+0 records out
root@OpenWrt:~# chmod 0600 /tmp/swapfile
root@OpenWrt:~# mkswap /tmp/swapfile
Setting up swapspace version 1, size = 44 KiB
no label, UUID=9358f4ae-b266-4470-b131-2eb2708b861f
root@OpenWrt:~# swapon /tmp/swapfile
block: failed to swapon /tmp/swapfile (-1)
怎么了?
答案1
从 Pastebin 信息中/tmp
安装的信息tmpfs
不支持交换文件。关于您的rootfs
格式化yaffs
,它似乎也不支持交换文件。不知道为什么,但这可能是如何yaffs
分配磁盘空间的。来自swapon
联机帮助页。
内核中的交换文件实现期望能够直接写入文件,而不需要文件系统的帮助。
一种解决方法可能是将文件映射到环回设备并使用环回设备作为交换设备。这也应该适用于tmpfs
已安装的路径,但没有多大意义,因为您限制了可用 RAM 并更快地进行交换。但是,为了完整起见。
首先证明tmpfs
不支持swapfiles。
[root@localhost ~]# df -T /tmp/
Filesystem Type 1K-blocks Used Available Use% Mounted on
tmpfs tmpfs 4029400 102616 3926784 3% /tmp
[root@localhost ~]# dd if=/dev/zero of=/tmp/swapfile bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 0.0390268 s, 2.7 GB/s
[root@localhost ~]# mkswap /tmp/swapfile
mkswap: /tmp/swapfile: insecure permissions 0644, 0600 suggested.
Setting up swapspace version 1, size = 100 MiB (104853504 bytes)
no label, UUID=bde6a47d-47f9-46b8-a492-786ab9565813
[root@localhost ~]# chmod 600 /tmp/swapfile
[root@localhost ~]# swapon /tmp/swapfile
swapon: /tmp/swapfile: swapon failed: Invalid argument
然后将交换文件映射到环回设备和swapon
.
[root@localhost ~]# losetup /dev/loop0 /tmp/swapfile
[root@localhost ~]# swapon /dev/loop0
[root@localhost ~]# cat /proc/swaps
Filename Type Size Used Priority
/dev/dm-1 partition 4194300 0 -2
/dev/loop0 partition 102396 0 -3