それは不可能です。 swapon
システムコールには readpage
が必要です そして bmap
(間接的に) ファイルシステムによって実装されている呼び出し:
http://lxr.free-electrons.com/source/mm/swapfile.c?v=4.0#L2412
if (!mapping->a_ops->readpage) {
error = -EINVAL;
goto bad_swap;
}
しかし、tmpfs によって実装されているものはありません 、そのようなエントリは対応する address_space_operations
にありません :http://lxr.free-electrons.com/source/mm/shmem.c?v=4.0#L3104
同じ理由で、tmpfs はループ マウントを保持できず、ramfs も機能しません (bmap
はありません)。 コール)
この Q&A から https://superuser.com/questions/539287/swapon-failed-invalid-argument-on-a-linux-system-with-btrfs-filesystem (元の参照サイトは応答していません):
<ブロック引用>したがって、「無効な引数」は「あなたのファイルシステムはスワップファイルをサポートしていません」と読む必要があります
私が疑う非互換性の理由は、「循環依存」です。この記事から:http://www.jamescoyle.net/knowledge/951-the-difference-between-a-tmpfs-and-ramfs-ram-disk:
<ブロック引用>ramfs と tmpfs のこれら 2 つの違いにより、tmpfs ははるかに管理しやすくなりますが、これは大きな欠点の 1 つです。 tmpfs は SWAPspace を使用する場合があります。システムの物理 RAM が不足すると、tmpfs パーティション内のファイルがディスク ベースの SWAP パーティションに書き込まれる可能性があり、次にファイルにアクセスするときにディスクから読み取る必要があります。
あなたのシナリオでは、これはほとんど不可能です。
かもしれない ramfs
で動作します 、そう - この問題はありません。