ブログのHetzner鯖移行とスワップ領域作成
3 min read
こんにちは、無能です。
Hetzner鯖には移行できたのですが、deno task lume
でスタックしていました。それで、top
を眺めているとメモリが枯渇していることを発見。
という訳で、仮想メモリを作成しマウントしていきます。
12/31に・・・。
スワップ領域作成
使っちゃだめとかって言われていますが、お手軽なのでこれでやっていきます。
イメージ的には、ディスクにはfallocate
でここからここまで使うよーって言っておいて、mkswap
でmkfs
のようにファイルシステム構築するように仮想メモリ使えるようにフォーマット、swapon
でmount
のように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枚になるというのが全くずっと変わってないですね。