ブログのHetzner鯖移行とスワップ領域作成

3 min read

こんにちは、無能です。
Hetzner鯖には移行できたのですが、deno task lumeでスタックしていました。それで、topを眺めているとメモリが枯渇していることを発見。
という訳で、仮想メモリを作成しマウントしていきます。
12/31に・・・。

スワップ領域作成

使っちゃだめとかって言われていますが、お手軽なのでこれでやっていきます。
イメージ的には、ディスクにはfallocateでここからここまで使うよーって言っておいて、mkswapmkfsのようにファイルシステム構築するように仮想メモリ使えるようにフォーマット、swaponmountのようにSwap領域としてここを使います。としているようなイメージ。でいます。

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

free -hで確認

$ free -h
               total        used        free      shared  buff/cache   available
Mem:           1.9Gi       736Mi       202Mi       4.3Mi       1.1Gi       1.2Gi
Swap:          4.0Gi       621Mi       3.4Gi

カツカツサーバーなので必要ですね・・・。

永続化

作ったスワップファイルを起動時に読み込んで永続化させます。

sudo echo "/swapfile none swap sw 0 0" >> /etc/fstab

無事に通りました。

もう12月31日です・・・。我ながらなにやってんだか・・・。(;´д`)トホホ…

ちょいと説明

そもそものスワップ領域がなんなのか?という方向けに
コンピュータさんは、記憶を一時的に保存しておくためにRAMというものに保管します。
一応、CPUにも一次(L1)キャッシュや二次(二次)キャッシュキャッシュも存在しますがそれはもっと低レイヤーのお話であまりプログラム上で意識することはありません。

そうして、プログラムで保管しておく記憶領域として別に/tmpなどの一時ファイルを保管しておくディレクトリなども存在しています。これはRAM上に記録されるものであり非常に高速ですがRAMは揮発性メモリなので電源断、つまり再起動時には消去されます。

こんな感じでRAM領域にプログラムは保管しておくのですがこの領域を超えた場合、いっぱいいっぱいになってスタックしてしまうのである意味退避先として今回のスワップファイル領域を作ることでRAMに書き込めない分を逃がすことができます。

しかしですが、あくまで仮想メモリ領域なのでRAMのように見せたディスク上に存在する領域です。
HDDならHDD上に、SSDならSSD上に作られます。
これはちょっとハードよりの考えですが、本来RAMへの書き込みは高速にたくさんのファイルを扱うものなのでその分ディスク自体に負荷が掛かり寿命を縮める原因になったり、ディスクI/Oを増やしてしまうことにもなりかねないので一番はゴリゴリにRAMを積むこと。
ですが、そんなリッチな環境うらやましいよね…。
未だにマザーボードのメモリースロットがローエンドが2枚で、ミドルレンジから4枚になるというのが全くずっと変わってないですね。

PGP --- Contact --- Machines