交换失败

交换失败

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

相关内容