メモリが足りなくなったときに、HDD(SSD)の一部をメモリとして使うスワップがあります。
メモリを増設すればいいので不要だと思われがちですが、暫定措置として結構使う。
そのスワップ領域をCentOS7で作成します。いらなくなることもあるので、ついでに削除の方法も。
対象OS | バージョン |
---|---|
CentOS | 7.7.1908 |
CentOSには公式のユーザーズガイドがありません。
(インストールガイドとリリースノート、Wikiはある。)
CentOSはRed Hat Enterprise Linuxの機能を少し抜いたクローンプロジェクトです。
ユーザーズガイドはRHEL7を参考にします。
RHELは有料版でサポートつき。CentOSはOSSで無料で使える。
(サポートなし。自力で解決。)
RHELは、オラクル・データベースをサポートするなど、大規模システムに対応している。
CentOSはそれらを外すなどしているが基本機能は見劣りしない。
(OSSの組み合わせでシステム構築も可能。自力が必要で安定しないが。)
RHELとCentOSのメジャーバージョンはそろえています。
ドキュメントは、CentOS7ならRHEL7を見ます。
スワップ領域とディスク容量確認
まずは、いまのスワップ領域とディスク容量を確認しましょう。今回、スワップ領域は2Gbyte設定します。
(メモリ2~8Gでの推奨スワップサイズはメモリと同じ。)
作業はすべてrootユーザーで行います。
free -h
total used free shared buff/cache available
Mem: 1.9G 1.1G 188M 81M 697M 627M
Swap: 0B 0B 0B
(-hオプションはサイズが見やすいように単位表示する。)
もうひとつ、スワップファイルを確認しましょう。
cat /proc/swaps
Filename Type Size Used Priority 0 0 0
スワップはありません。(OSのデフォルトはスワップを使っていない。)
スワップ領域を作るディスク領域は十分か確認します。
df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.5M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda1 15G 8.0G 7.1G 54% /
tmpfs 199M 0 199M 0% /run/user/0
(-hオプションはサイズが見やすいように単位表示。)
スワップの確認ではこれでもできます。
swapon -s
スワップがないので何も表示されません。
スワップファイル作成
スワップは、LVMとファイルによる2つの方法があります。今回はスワップファイルを使います。理由は、
スワップファイルのほうがかんたん。
メモリ増設も考えているので余計なことはしたくない。
LVMは、サイズ増減がかんたんにできる仮想のパーティションのようなもの。
スワップ用のディスク・パーティションも作りません。スワップファイルはrootのトップディレクトリに作ります。
スワップファイル作成
dd if=/dev/zero of=/swapfile bs=1024 count=2097152
2097152+0 レコード入力
2097152+0 レコード出力
2147483648 バイト (2.1 GB) コピーされました、 5.20771 秒、 412 MB/秒
if | 入力デバイス /dev/zeroは、ファイルサイズを変えずに0詰めする。 |
of | 出力デバイス スワップファイルを指定。 |
bs | ブロックサイズ(byte指定) ddで作成したファイルはブロックごとに読み書きする。 |
count | ブロック数 |
ファイズサイズはbsとcountで決まります。
bs = 1024byte = 1M
なので、
count = 1024 × ファイルサイズ(Mbyte)
1024 × 2048 (2G) = 2097152
スワップへのマウント
次に、作成したファイルをスワップに認識させます。
mkswap /swapfile
スワップ空間バージョン1を設定します、サイズ = 2097148 KiB
ラベルはありません, UUID=***
セキュリティのためスワップファイルの権限を変更します。(rootの読み書きのみ可。)
chmod 0600 /swapfile
OS再起動でもスワップ有効化
いまのままでは、OSを再起動するとスワップの設定はなくなってしまいます。
(スワップファイルは残る。)
OS起動時にスワップを有効化する設定をします。/etc/fstabに次の1行を追加してください。
/swapfile swap swap defaults 0 0
追加内容を反映させます。
systemctl daemon-reload
スワップの即時有効
OSを再起動すればスワップが有効化されますが、現実的ではありません。コマンドでファイルのスワップを有効化します。
swapon /swapfile
スワップ作成の確認
スワップが作成できたか確認します。
free -h
total used free shared buff/cache available
Mem: 1.9G 1.3G 107M 82M 503M 382M
Swap: 2.0G 0B 2.0G
cat /proc/swaps
Filename Type Size Used Priority
/swapfile file 2097148 0 -2
swapon -s
Filename Type Size Used Priority
/swapfile file 2097148 0 -2
『ぜんぶのコマンドで確認してください』ということではありません。こういう確認方法がありますよ?ということです。
スワップの削除
スワップの削除は作成の逆の作業をします。
swapoff -v /swapfile
次に、/etc/fstabから追加した行を削除して下さい。
fstabの設定反映も忘れずに。
systemctl daemon-reload
最後にスワップファイルを削除します。
rm /swapfile
恒久に使うならLVM
今回は、ずっとスワップを使うつもりがないのでファイル作成だけで済ませましたが、システムとして必要ならLVMで作った方が良いです。
(ディスク・パーティションすら作らなかった。)
くわしくは公式ドキュメントを参照してください。