ConoHa VPSは低廉な料金と、高品質なサービス、そして沢山のテンプレートイメージの使い勝手の良さで、愛用している方も多いと思います。かくいう私もその一人なのであり、Debian GNU/Linuxのテンプレートイメージを使用して、自前サーバーを維持してきました。
ところが最近になって、アンチウイルスソフトであるClamAVのメモリ使用量が増大してメモリを使い果たしてしまい(1.2GBを上回る使用量)、kernelによって自動的にkillされて、エラーメッセージが大量に発生するという問題が発生しました。
この場合、/lib/systemd/system/clamav-daemon.service
の[service]セクションに
MemoryLimit=256M
と追加することで、物理メモリの使用を抑えられるため、これを実行したのですが、しばらくすると問題は再発します。どうやら、swapメモリの容量がそもそも少ないようです。しかし、ConoHaのテンプレートイメージではswapパーティションは最初から2GBと決め打ちされており(メモリ1GBプランの場合)、自分でカスタマイズすることはできません。そこであれこれ試行錯誤した結果、以下の方法で動作中のサーバーのswapパーティションを拡大することに成功しましたので、やり方を書いておきます。
Ⅰ.ConoHa上で動いているサーバーの動作イメージを作る
コントロールパネルから以下の操作を実行する。
- 「イメージ」タブから東京リージョンを選び、右側にあるアイコンをクリックして、イメージの保存容量を一時的に550GBに増やす。これを行わないと、ディスク容量不足で次の「イメージの保存」に失敗する。
- 「サーバー」タブから、動作中のサーバーをシャットダウンする。ダウンタイムを許容できないサーバーの場合は、一旦、別のサーバーを契約し、全体をコピーしておいてからこのステップを実行するほかない。
- 「イメージの保存」を行う。名称は自分が分かれば適当で良い。100GBのデータを保存するので時間がかかる。最低でも20分程度はかかる。
- 「イメージ」タブに戻り、作成したイメージが正常に作成されているかを入念に確認する。ここで正常にできていないと、後の手順が万が一失敗したときに回復する手段が無くなる。
Ⅱ.GParted Live CDのISOイメージをConoHaにマウントする
- 以下のページにアクセスしてconoha-isoコマンドをダウンロードする。
Mac用、Linux用、Windows用があるので環境に合わせてダウンロードする。 - ConoHaのコントロールパネルを開き、「API」タブを開く。「APIユーザー」のところの「ユーザー名」と「パスワード」を控える。パスワードは、分からなければ自分で新しく設定できる。さらに、「テナント情報」のところの「テナント名」を控える。
- conoha-isoに上記の情報をオプションとして与えて、テストする。
./conoha-iso list -u ユーザー名 -p パスワード -n テナント名
- GParted Live CDのウェブサイトにアクセスして、最新のLive CDのダウンロード用URLを取得する。
https://gparted.org/download.php
※2021/1/26現在、AMD64アーキテクチャの最新版は、以下がダウンロード用のURLになります。ここでダウンロードする必要は無く、あくまでURLの取得のみで構いません。
https://jaist.dl.sourceforge.net/project/gparted/gparted-live-stable/1.1.0-8/gparted-live-1.1.0-8-amd64.iso
- conoha-isoコマンドを使用して、ConoHaにISOイメージをダウンロードさせる。
./conoha-iso download -u ユーザー名 -p パスワード -n テナント名 -i 上記で取得したURL
ダウンロードには数分の時間がかかる。
- ダウンロードされたか、③のステップを行って確認する。
- conoha-isoコマンドを使って、サーバーにISOイメージを挿入する。
./conoha-iso insert -u ユーザー名 -p パスワード -n テナント名
実行するとサーバー選択のメニュー、続いて、ISOイメージ選択メニューが表示されるので、順番に選ぶ。正常に終了したことを確認する。
Ⅲ.サーバーを起動してGPartedで設定する
- ConoHaコントロールパネルの「サーバー」タブから、当該のサーバーを起動する。
- 「コンソール」を押して、コンソール画面を表示させる。
- GParted Live CDのGUIが表示されるので、Enterを押して進む。
次いでキーマップの設定が出るが、デフォルトのままで良い。
その後、言語の設定がでるので「15(Japanese)」を選ぶ。
さらに、GUIの選択がでるので「0(Continue to start X to use GParted automatically」を選択。 - GUIが表示されたら、「/dev/vda1」パーティションを選択し、上部メニュー「パーティション」から「移動/リサイズ」を選択する。
- 後ろに空けるサイズを考えて、新しいサイズを入力する。
- 「/dev/vda2」パーティション(linux-swap)を選択し、上部の「パーティション」メニューから「Delete」を選択。
- 「未割り当て」領域を選択し、「パーティション」メニューから「New」を選択。
- 「種類」を「基本パーティション」、ファイルシステムを「linux-swap」にしてから「Add」を押す。サイズのところは触らないでOK。
- 「編集」メニューから「保留中の全ての操作を適用する」を選択し、「Apply」を押す。
- linux-swapパーティションが希望のサイズになっていることを確認し、「GParted」メニューから「Quit」を押す。
- GParted Live CDのメインメニューから「Exit」を押して、しばらく待つ。
- 「Shutdown」を選んで「OK」を押してサーバーをシャットダウンさせる。コンソールで確実に終了したことを確認すること。(してない場合は次のステップが失敗する)
Ⅳ.ISOイメージをConoHaから取り出してサーバーを起動する。
- 以下のコマンドを実行して、ISOイメージをejectする。
./conoha-iso eject -u ユーザー名 -p パスワード -n テナント名
- ConoHaコントロールパネルの「サーバー」タブから、当該のサーバーを起動させる。
- 「コンソール」からrootでログインする。
- swapパーティションがオフになっているので以下のコマンドを実行してUUIDを調べる。
# blkid
表示されたswapパーティションのUUID=”●”の、●の部分を控えておく。
- /etc/fstabを開き、swapパーティション部分のUUIDを上記で控えたものに変更する。
- スワップを有効にする。
# swapon -a
- topコマンドを実行して、swapパーティションが正常に認識されているか確認する。
Ⅴ.ConoHaのイメージ領域を解約する
- ConoHaコントロールパネルにログイン。
- 「イメージ」をクリックし、「イメージ保存容量」の東京リージョンの右のアイコンを選択。
- 「変更後の保存容量」を「50GB」にして「はい」を押す。
これでイメージ保存領域が元に戻ります。これを行わないと、毎月1,500円が余分にかかってしまいますので、ご注意下さい。ただ、この領域を削除するとバックアップを失うことになりますので、元のサーバーが正常に動作しているか、入念なチェックを行ってからの実施をお勧めします。
以上になります。
この方法にたどり着く前に、5つくらいの方法を試しましたが、色々な問題が生じました。恐らく、上記の方法が最も確実、かつ簡便と思われます。何かのお役に立てましたら幸いです。
コメント
色々と試されたようですが、ddとmkswapでスワップ領域をファイルシステム上に作成、swaponで追加する方法はダメだったでしょうか?
dd if=/dev/zero of=/var/tmp/swapfile bs=1M count=1k
sudo chown root:root /var/tmp/swapfile
sudo chmod 600 /var/tmp/swapfile
sudo mkswap /var/tmp/swapfile
sudo swapon /var/tmp/swapfile
実はこの方法を実行し、記事にまとめた後で、「そもそもスワップファイルを作成してそれを指定すれば良かったんじゃね?」と気づいたのです。(^_^;) 25年前からLinuxをいじっていると、「スワップはパーティションを切るもの」という固定観念が染みついていたようです。そんな面倒なことをしなくても、仰る通り、スワップファイルで良かったと気づいた時は後の祭りでした。しかし、すでに記事にしてしまったので、消すのも勿体ないため、そのまま残すことにした次第です。今からやるとしたら、私もご指摘の方法を行うと思います。ご指摘有り難うございます。