これ書いたきっかけ
Google Compute Engineでmastodonを立ち上げたのは、まあ知人の紹介によるものでした。Amazon ECSが前提のサービスなのに「GCEのほうがモテるよ」と言われてホイホイ乗っちゃう方もあれなのですが、まあsshがパスワード入れなくてもブラウザで立ち上がっちゃったりsudoerに自分が入っていたりするという、開発者を甘やかしすぎる至れり尽くせりな環境には若干快感を感じちゃったりもしています。
一番小さいGCEのインスタンスでもmastodonはインストール可能、だけどもメモリが小さすぎるからってんでブートディスクに4GBくらいのswapfileを置いて構築したわけですが、いざ使い始めてみるとけっこう処理に時間がかかる。それだけでなく合計10GBくらいですと1人で適当に書き込んで数日たったくらいで使い切ってしまいました。これはひどい。画像ファイルやDBなんかはこの時点で外出しすることに決めていましたが、おそらく単体で一番大きいファイル、そう4GBのswap領域をSSD化することで高速化と容量確保の両面からの対処を目論みました。
とはいえ大したことは必要ないのです。
方法
追加のSSDを確保する
- 例のコンソールから、自分のVMインスタンスを選びます。
- 上の方のペンマーク[編集]を選びます。
- 真ん中下の方「追加ディスク」と書かれているところの「項目を追加」を選びます。
- 空欄をクリックして出て来るプルダウンメニューに「ディスクの作成」がありますので、それを選びます。
- 名前を適切につけて、説明を適当につけます。
- ディスクタイプは「SSD永続ディスク」、ソースは「なし」、サイズはまあスワップ用ですから10GBくらいでいいんじゃないでしょうか。暗号化は「自動」にしておきます。
- 「作成」したらあとはデフォルトでOK。モードは、読み取り/書き込み、インスタンス削除後も「ディスクを維持」でいいと思います。まあスワップですからディスク削除しても困らないような気はします。
- 一番下の「保存」でSSDは確保完了です。
追加のSSDをマウントする
これはGCEドキュメントの出来がいいのでそっちを読んでもらうのがいいです。簡単に書くと、
$sudo mkdir -p /mnt/disks/[適当な名前]
$ls /dev/disk/by-id/
$sudo mkfs.ext4 -F /dev/disk/by-id/(lsで見つけたSSDの名前)
$sudo mount -o discard,defaults /dev/disk/by-id/(lsで見つけたSSDの名前) /mnt/disks/[さっきの適当な名前]
$sudo chmod a+w /mnt/disks/[その適当な名前]
これで/mnt/disks/[適当な名前]
でSSDディスクが使えるようになります。
SSDが再起動しても使えるようにする
/etc/fstabに書き込む、ってやつです。さっきのGCEドキュメントの続きでもあります。
$echo UUID=`sudo blkid -s UUID -o value /dev/disk/by-id/(さっきのSSDの名前)` /mnt/disks/[適当な名前] ext4 discard,defaults,nofail 0 2 | sudo tee -a /etc/fstab
これで再起動後も使えるようになりました。
swapfileを作って有効にする
まあ、これもほかのところで語られているやつです。そもそもmastodonとか作った人なら過去にもやってるはずですが再掲します。
$sudo fallocate -l 8G /mnt/disks/[適当な名前]/swapfile
$sudo chmod 600 /mnt/disks/[適当な名前]/swapfile
$sudo mkswap /mnt/disks/[適当な名前]/swapfile
$sudo swapon /mnt/disks/[適当な名前]/swapfile
$echo '/mnt/disks/[適当な名前]/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
これで、新たに8GBのスワップ領域が出来ました。いや別に10GBのディスクをつけたんだから10Gでもいいはずなんですが、なんだか2のn乗にしたくなりますよね。のこり2GBの使いみちはおいおい考えます(考えるとは言っていない)。
今のswapfileを使うのをやめる
swapで実際に使っている量より、メモリの量が多い場合は適切なコマンドを打てば適切にスワップファイルの内容を退避してその使用をやめてくれるそうです。今はまだ大丈夫なはず、なので
$sudo swapoff /[今まで使っていたswapfile名]
すれば、今までのswapfileとはおさらばです。ついでに
$sudo vi /etc/fstab
して、現在のスワップファイルをマウントしている行までカーソルを動かして、
dd
と押せば、その行がまるっと消えます。
ZZ
すれば、保存して終了してくれます。間違えてなんか変になった場合は、
:q!
で保存せずに終了。もう一度viの立ち上げからやり直しましょう。
ここまでやれば、
$sudo rm /[そのswapfile名]
で4GBが浮きます。
評価(してない)
すいません、スピード比較してないんです。そもそも8Gもスワップが必要なのかどうかもわかりません。でもこれでうまく動いています。ゆるふわですみません。