2020-10-16

Linux Kernel 5.8 で swapfile が使えなくなった

先日、Linux Mint 20 に Linux Kernel 5.8 が配信されたので適用してみたのですが、スワップが無効になっていることに気付きました。

journalctl でシステムログを確認してみると、確かに /etc/fstab に指定してある swapfile のに失敗していました。

swapon[629]: swapon: /home/swapfile: swapon が失敗しました: 無効な引数です
kernel: swapon: swapfile has holes
systemd[1]: home-swapfile.swap: Swap process exited, code=exited, status=255/EXCEPTION
systemd[1]: home-swapfile.swap: Failed with result 'exit-code'.
systemd[1]: Failed to activate swap /home/swapfile.
systemd[1]: Dependency failed for Swap.
systemd[1]: swap.target: Job swap.target/start failed with result 'dependency'.

「無効な引数」です、ということらしいです。


試しに手動で swapfile を有効化してみましたが、同じ結果でした。

$ sudo swapon /home/swapfile
swapon: /home/swapfile: swapon が失敗しました: 無効な引数です

構文としては合っていそうなんですが、、、、、


調べてみると、fallocate で作っただけの swapfile は認識してくれないようで、dd で具を入れると回避できるようです。
※試しに 1GB の swapfile を用意しようとしたのですが、dd のパラメーターを間違えたら 16GB の swapfile が出来上がってしまいました、、、、

$ sudo fallocate -l 1G /home/swap2
$ sudo chmod 600 /home/swap2
$ sudo mkswap /home/swap2
スワップ空間バージョン 1 を設定します。サイズ = 1024 MiB (1073737728 バイト)
ラベルはありません, UUID=0aa1430d-118e-4628-8f1d-95a8d6d25917
$ sudo swapon /home/swap2
swapon: /home/swap2: swapon が失敗しました: 無効な引数です 
$ sudo dd if=/dev/zero of=/home/swap2 count=4096 bs=4MiB
4096+0 レコード入力
4096+0 レコード出力
17179869184 bytes (17 GB, 16 GiB) copied, 46.0303 s, 373 MB/s
$ sudo mkswap /home/swap2
スワップ空間バージョン 1 を設定します。サイズ = 16 GiB (17179865088 バイト)
ラベルはありません, UUID=2c9419c2-5ba0-494e-a4e8-02476ce176d8
$ sudo swapon /home/swap2
$ sudo swapon -s
ファイル名				タイプ		サイズ	使用済み	優先順位
/home/swap2                            	file    	16777212	0	-2

インターネット上を検索してみると、どうも Linux Kernel 5.8 のバグのようです。

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1894910


しばらくスワップが未設定の状態で Linux Mint 20 を使っていたのですが、物理メモリーが 16GB なのでスワップなしの方が精神衛生的に快適かもしれません。
※スワップが発生しているかちょこちょこ気にしてしまう性格でして、、、、