背景
大学生の頃にドスパラで購入したデスクトップPC(i5(2400)/メモリ8GB)にUbuntu20.04をインストールして自宅用のメインPCにしているのだが、さすがに8年以上前から使い込んでいるため最近メモリが死んでしまった。といっても、厳密にはメモリではなくマザーボードのメモリスロット部分が死んだ。なので、メモリを買い換えれば解決するレベルではなく、マザーボードを買い替えるくらいのレベルだ(マザボ買い換えるくらいなら新しいPCを買ったほうがいい)
幸い、メモリ4スロットのうち2スロットはまだ生きており、2GB*2枚指しの4GBで起動できるので、冬のボーナスで新しいPCを買うことにして、それまではこのまま耐えることにしたのだが、さすがに4GBだとChromeを起動しながらDockerコンテナ起動したりするとSwap領域まで食いつぶしてフリーズしてしまうので、とりあえずswap領域を拡張して凌ぐことにした。
そういうわけで、OSインストール後にSwap領域を拡張する方法を備忘録の意味も兼ねて今回記事にすることにした。
Swap領域のための特殊ファイルを作成
Windowsでもそうだが、Swap領域は専用のシステムファイルで実現できるらしい。Ubuntu20.04だとswapon
コマンドで確認できる。自分の環境では/swapfile
がすでに存在しており、これがSwap領域として認識されているようだった。
$ swapon -s
ファイル名 タイプ サイズ 使用済み 優先順位
/swapfile file 2097148 1851152 -2
/swapfile
がすでにあるので/swapfile2
を作成してSwapファイルとして認識させる。
$ sudo fallocate -l 2G /swapfile2 # 2GBのファイルをアロケーション
$ sudo chmod 600 /swapfile2 # rootのみ読み書き可能に設定
$ sudo mkswap /swapfile2 # swap領域として設定
$ sudo swapon /swapfile2 # swap領域としてマウント
$ swapon -s
$ sudo vim /etc/fstab
$ grep swapfile /etc/fstab
/swapfile none swap sw 0 0
/swapfile2 none swap sw 0 0
$ reboot
$ swapon --show
無事にSwap領域が拡張できた。これでなんとかフリーズせずに使い続けることができるようになった。
蛇足
Swap領域のサイズって実メモリの2倍が理想って昔言われてたのを思い出したのだが、今はメモリがかなり安価に用意できるし、サーバはクラウドで設定値いじるだけで容易にメモリ増設できるようになったので、Swap領域のサイズとか全く意識しなくなっていたのだが、こういうことがあるとデフォルト値のままでなくカスタマイズしたほうがいいのかもしれないと思い直した。
にしても、最近のブラウザはメモリバカ食いしすぎだ。メモリ4GB+Swap2GBだとブラウザ使うだけでフリーズの危険があるって、WindowsXPのときはメモリ2GBで十分贅沢だと思っていたのに、インフレしすぎだよな。