かなり長い間動作しているスワップファイルでスワップを実行しましたが、何らかの理由で動作が中断されました。
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を実行していますが、アップデート後に何かが変更されたことがありますか?それとも原因は何ですか?
答え1
交換してみてください
fallocate -l 4G /home/.swap/swapfile
そして
dd if=/dev/zero of=/home/.swap/swapfile bs=1M count=4096
答え2
使用する場合BTFSスワップファイルを作成する必要があります。いいえ書き込み時にコピーします。これはで行われますchattr +C
。ファイルに書き込む前にこのプロパティを設定することが重要です。
truncate -s 0 swapfile
chattr +C swapfile
fallocate -l 2G swapfile
chmod 0600 swapfile
mkswap swapfile
swapon swapfile
/etc/fstab
このエントリを使用して次に追加します。
/path/swapfile none swap defaults 0 0
ログインして見つかりました。優れた材料。
答え3
確立された受け入れられた回答説明が含まれます:で引用交換(8):
穴付きファイル
カーネルのスワップファイル実装は、ファイルシステムの助けを借りずにファイルに直接書き込むことができると予想します。これは、Btrfsなどのファイルシステムの脆弱なファイルや書き込み中のコピーファイルの問題です。
cp(1) や truncate(1) などのコマンドは脆弱なファイルを生成します。これらのファイルはswaponによって拒否されます。
fallocate(1)によって生成された事前に割り当てられたファイルは、ファイルシステムに応じて脆弱なファイルとして解釈される可能性があります。 Linux 4.18以降、XFSは事前に割り当てられたスワップファイルをサポートしています。
スワップファイルを生成する最も移植可能なソリューションは dd(1) と
/dev/zero
.
イタリック体はすべてを説明しているようです。残念ながら、詳細な出力があるにもかかわらず、
swapon
失敗の理由(脆弱なファイル)への言及はありません。
答え4
これは非常に古い質問ですが、ちょうど同じ問題に直面し、ここで議論した内容は私には役に立ちませんでしたが、btrfsファイルシステムのマニュアルページでこれを見つけました。
mkswapfile [-s size] file
Create a new file that's suitable and formatted as a swapfile. Default size is 2GiB, fixed page
size 4KiB, minimum size is 40KiB.
A swapfile must be created in a specific way: NOCOW and preallocated. Subvolume containing a
swapfile cannot be snapshotted and blocks of an activated swapfile cannot be balanced.
Swapfile creation can be achieved by standalone commands too. Activation needs to be done by com‐
mand swapon(8). See also command btrfs inspect-internal map-swapfile and the Swapfile feature de‐
scription.
NOTE:
The command is a simplified version of 'mkswap', if you want to set label, page size, or other
parameters please use 'mkswap' proper.
Options
-s|--size SIZE
Create swapfile of a given size SIZE (accepting k/m/g/e/p suffix).
-U|--uuid UUID
specify UUID to use, or a special value: clear (all zeros), random, time (time-based ran‐
dom)
だから私はこれをしました:
sudo btrfs filesystem mkswapfile --size 12g --uuid clear /swapfile/path
そして効果もとても良いです。
明らかに、あなたのファイルシステムはbtrfsでなければなりません。これは私が正確に覚えているなら、Fedoraの基本的なファイルシステムです。