首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swapfile Swapon无效参数

Swapfile Swapon无效参数
EN

Unix & Linux用户
提问于 2020-07-23 10:03:36
回答 3查看 16K关注 0票数 4

我已经从一个swapfile交换了很长一段时间,但由于某种原因,它停止了工作。

代码语言:javascript
复制
sudo fallocate -l 4G /home/.swap/swapfile
sudo chmod 600 /home/.swap/swapfile
sudo mkswap /home/.swap/swapfile

# /etc/fstab
/home/.swap/swapfile swap swap defaults 0 0

sudo swapon -a

swapon: /home/.swap/swapfile: swapon failed: Invalid argument

我正在运行Fedora的最新版本,那么是否有可能随着更新而发生了一些变化,或者是什么原因呢?

EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2020-07-23 10:50:49

请试着替换

fallocate -l 4G /home/.swap/swapfile

使用

dd if=/dev/zero of=/home/.swap/swapfile bs=1M count=4096

票数 8
EN

Unix & Linux用户

发布于 2020-10-12 20:28:21

被接受的答案的基础上构建一个解释:引用swapon(8)

有孔文件

内核中的交换文件实现希望能够直接写入文件,而不需要文件系统的帮助,这是存在漏洞的文件或像Btrfs这样的文件系统上的复制上的问题。

像cp(1)或截断(1)这样的命令创建有漏洞的文件。这些文件将被swapon拒绝。

根据文件系统的不同,由fallocate(1)创建的预分配文件也可以解释为带有漏洞的文件。XFS支持预先分配的交换文件,因为Linux4.18支持预先分配的交换文件。

创建交换文件的最可移植的解决方案是使用dd(1)和/dev/zero

斜体注释似乎解释了一切。不幸的是,即使输出很长,swapon也没有提到失败的原因(有漏洞的文件)。

票数 3
EN

Unix & Linux用户

发布于 2022-08-17 13:24:40

如果您使用的是btrfs,您应该像这样创建swapfile。在将任何内容写入文件之前,chattr +C是很重要的:

代码语言:javascript
复制
truncate -s 0 swapfile
chattr +C swapfile
fallocate -l 2G swapfile
chmod 0600 swapfile
mkswap swapfile
swapon swapfile

使用以下条目将其添加到/etc/fstab中:

代码语言:javascript
复制
/path/swapfile        none        swap        defaults      0 0

我在精细材料中找到了它。

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/599949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档