Linux

交換文件交換無效參數

  • December 11, 2020

我從一個交換文件交換了很長一段時間,但由於某種原因它停止了工作。

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,所以是否有可能隨著更新而發生變化,或者可能是什麼原因?

請嘗試更換

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

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

已接受的答案的基礎上進行解釋: 引用swapon(8)

帶孔的文件

核心中的交換文件實現期望能夠直接寫入文件,而無需文件系統的幫助。這是帶有漏洞的文件或 Btrfs 等文件系統上的寫時復製文件的問題。

cp(1) 或 truncate(1) 之類的命令會創建帶有孔的文件。這些文件將被 swapon 拒絕。

fallocate(1) 創建的預分配文件也可能被解釋為帶有漏洞的文件,具體取決於文件​​系統。  自 Linux 4.18 起,XFS 支持預分配的交換文件。

創建交換文件最便攜的解決方案是使用 dd(1) 和/dev/zero.

斜體字似乎解釋了一切。不幸的是,即使有詳細的輸出, swapon也沒有提到失敗的原因(有漏洞的文件)。

引用自:https://unix.stackexchange.com/questions/599949