- OS: Ubuntu 22.04
fallocate
コマンドで以ってスワップファイルを度々作成している。dd
コマンドよりも短時間で片が付くから重宝するのである。終ぞ特段の不都合にぶつかった試しがないけれども、どうやらこれは良くない気配である。
NOTES
Files with holes
The swap file implementation in the kernel expects to be able to write to the file directly, without the assistance of the filesystem. This is a problem on files with holes or on copy-on-write files on filesystems like Btrfs.
Commands like cp(1) or truncate(1) create files with holes. These files will be rejected by swapon.
Preallocated files created by fallocate(1) may be interpreted as files with holes too depending of the filesystem. Preallocated swap files are supported on XFS since Linux 4.18.
The most portable solution to create a swap file is to use dd(1) and /dev/zero.
$ man 8 swapon
スワップファイルはファイルシステムの助けを借りずに書き込める想定で実装されているという。ところがfallocateで作成されたスパースファイルの取り扱いはファイルシステムの出番となるからスワップファイルに適さない。という意味であろうとおもう。結局はddが良いということであった。
ddを用いて2GBのスワップファイルを作成するならこういう具合である。
$ sudo dd if=/dev/zero of=/swapfile2gb bs=128K count=16384 status=progress $ sudo chmod 600 /swapfile2gb $ sudo mkswap /swapfile2gb スワップ空間バージョン 1 を設定します。サイズ = 2 GiB (2147479552 バイト) ラベルはありません, UUID=962db686-3bf1-41e2-99f1-f90e214e0806 $ sudo swapon /swapfile2gb $ cat /proc/swaps Filename Type Size Used Priority /swapfile2gb file 2097148 0 -3
翻意してスワップ領域としての役割を取り消す場合はswapoff
コマンドを走らせる。
$ sudo swapoff /swapfile2gb
OS再起動後も引き続きスワップを有効にするなら/etc/fstab
に設定を投じておく。
$ sudo vi /etc/fstab /swapfile2gb none swap sw 0 0