DELOGs
Webサーバのディスク容量を拡張する

Webサーバのディスク容量を拡張する

さくらのクラウドのWebサーバのディスク容量を増やす方法

初回公開日

最終更新日

さくらのクラウドのWebサーバのディスク容量を増やしてみます。
せっかくクラウドなので最初は少ないディスク容量で始めて、使用容量が増えてきたら拡張するという運用をしたいものです。 しかし、私のような初心者にとっては、これもハードルが高いです。一度経験しておけば、次からは安心して作業ができるので、まだ容量に余裕がある段階ですが、とりあえず一度やってみたいと思います。
当サイトではさくらのクラウドを使用していますので、その実践記録になります。今回は20GBのSSDを40GBへ拡張します。また、OSはUbuntu 24.04.XX LTSです。
大枠の手順は下記の通りです。
  • 現状のパーミッションやファイルシステムの状態を確認
  • 新しい40GBディスクを追加してコピー作成
  • Webサーバを停止
  • 旧ディスクを外し、新ディスクを接続
  • サーバ起動後にパーティション拡張
  • 旧ディスクを削除
注意が必要なのは、ディスク容量を拡張するのは今回の手順で比較的簡単にできるのですが、逆に容量を減らすことは別の方法を用いることになります。これは少し大変そうです。安易に容量を増やすと費用も増えますので、予算を考慮して慎重に検討して実行する必要がありそうです。

1. 現状のパーミッションやファイルシステムの状態を確認

まずは、現状の確認です。これは新ディスクを接続した後にパーティション拡張の作業する際のコマンドに関わってくるので、最初に確認しておきます。WebサーバにSSH接続してdfコマンドで調べます。
bash
1df -T 2 3Filesystem Type 1K-blocks Used Available Use% Mounted on 4tmpfs tmpfs 813192 1016 812176 1% /run 5/dev/vda2 ext4 20463316 7782764 11615748 41% / 6tmpfs tmpfs 4065944 0 4065944 0% /dev/shm 7tmpfs tmpfs 5120 0 5120 0% /run/lock 8tmpfs tmpfs 813188 12 813176 1% /run/user/1001
私の環境だと上記のように出力されました。
/dev/vda2 ext4 20463316 7782764 11615748 41% / の内容から、対象のディスク:/dev/vda2、ファイルシステム:ext4、マウントポイント:/ということがわかります。
また、もう一点、念の為パーミッション拡張とファイルシステムの拡張時に使うコマンドが利用可能か確認しておきます。
bash
1which growpart 2/usr/bin/growpart 3 4which resize2fs 5/usr/sbin/resize2fs
whichコマンドでパスが返ってくるか確認しました。私の環境では、デフォルトでインストールされていました。

2. 新しい40GBディスクを追加してコピー作成

ここからさくらのクラウドの管理画面で作業します。
サイドメニューから「ストレージ」のサブメニュー「ディスク」をクリックして、現状のディスクの表示画面へ遷移します。 その後、上部にある「追加」ボタンをクリックします。
ディスク追加
下記のように詳細設定画面が表示されます。 「ディスクソース」でディスクを選択すると「ディスク選択」で既存のディスクを選択可能になります。これがコピー元の設定になります。
ディスク追加の詳細
あとは、上記のようにディスクサイズを40GBにして「作成」ボタンをクリックします。 サーバ選択は後ほど行いますので、ここでは未入力のまま作成します。
「追加」を実行すると実行確認のポップアップと進捗状況確認のポップアップが表示されます。コピー元のデータ容量が大きいと少し時間が掛かるようです。今回、サーバは7GB程度しか使用していませんでしたので、3分ほどで作成が完了しました。

3.Webサーバを停止

次はWebサーバを停止して、作成したディスクと紐付けできるようにします。サーバ稼働中は紐付け作業ができない仕様となっています。
さくらのクラウドの管理画面で停止作業します。 サイドメニューの「サーバ」をクリックして、現行のサーバのチェックボックスをチェックします。
上部メニューの「電源操作」をクリックしてサブメニュー「シャットダウン」をクリックします。
webサーバ停止

4.旧ディスクを外し、新ディスクを接続

停止したWebサーバを選択して、詳細画面を開きます。
webサーバの詳細
詳細画面の「ディスク」タブを開きます。旧ディスクが接続された状態なので、これを取り外します。 取り外すには、ディスクの右端にある下向き▼ボタンをクリックします。「取り外す」というサブメニューが表示されますので、これをクリックして取り外しを実行します。
ディスクの取り外し
取り外しが完了すると、一旦何もディスクが接続されていない状態になります。「接続」ボタンをクリックします。
ディスクの接続
表示されたポップアップ画面で、「既存のディスクを接続」を選択した状態、ディスク選択のセレクトボックスで新規作成した40GBのディスクを選択して「更新」を実行します。
接続するディスクの選択
完了すると、無事に40GBのディスクと接続されたことが確認できます。
新ディスクの接続確認

5. Webサーバを起動

新規作成したディスクとWebサーバが接続された状態が確認できたら、Webサーバを起動します。停止中のWebサーバを選択して、「電源操作」から「起動」をクリックして、サーバを起動させます。
Webサーバ起動
無事に起動できれば、ssh接続可能になります。

6.パーティション拡張とファイルシステムの拡張

ssh接続して、df -Tコマンドを実行してみます。
bash
1Filesystem Type 1K-blocks Used Available Use% Mounted on 2tmpfs tmpfs 813192 1000 812192 1% /run 3/dev/vda2 ext4 20463316 7729980 11668532 40% / 4tmpfs tmpfs 4065944 0 4065944 0% /dev/shm 5tmpfs tmpfs 5120 0 5120 0% /run/lock 6tmpfs tmpfs 813188 12 813176 1% /run/user/1001
40GBのディスクに接続しているのですが、/dev/vda2のところを見ると20GBのままになっています。
これはOSはまだ20GBしか「使っていい」と思っていないという状態です。パーティションとファイルシステムを拡張する下記のコマンドを実行して、40GBまで使えるよとOSに認識してもらう必要があります。
bash
1# パーティション拡張(vda2 を対象に) 2sudo growpart /dev/vda 2 3 4# ファイルシステム拡張(ext4なので resize2fs を使用) 5sudo resize2fs /dev/vda2
再度、dfコマンドを実行するとディスク容量が拡張されたことが確認できます。
bash
1df -T 2Filesystem Type 1K-blocks Used Available Use% Mounted on 3tmpfs tmpfs 813192 1016 812176 1% /run 4/dev/vda2 ext4 41102780 7730028 31469192 20% / 5tmpfs tmpfs 4065944 0 4065944 0% /dev/shm 6tmpfs tmpfs 5120 0 5120 0% /run/lock 7tmpfs tmpfs 813188 12 813176 1% /run/user/1001
これで、Web表示やメール送信などして、元の状態のままディスクが拡張できているか確認してみます。
私の場合、Next.jsのWebアプリをpm2で動かしていたのですが、pm2が停止状態になっていました(多分、pm2 saveを実行するのを忘れていたんだと思います)。pm2を再起動したくらいで、他に異常は見られなかったです。nginxやcerbot、postfix、dovecot、fail2banなど正常に稼働していました。 fail2banは停止&起動しているので、fail2ban は新しいログに基づいて監視再開した感じです。
終わって見るとかなりあっさり完了しました。

7.旧ディスクの削除

これは、予算のとの兼ね合いですが、動作確認が完了して、旧ディスクが不要になったら、お金の節約のためにも早めに削除したいところです。
削除は、再度さくらのクラウドの管理画面から「ストレージ」のサブメニュー「ディスク」をクリックして、ディスク一覧を表示します。
ディスクの一覧
不要になった20GBのディスクの詳細へ移動して、上部メニューの「ディスクの削除」をクリックして削除を実行します。
ディスクの削除
これでディスクの拡張は無事完了です。
一度経験してしまえば、意外に簡単なので、今後の運用でも安心してディスク拡張ができそうです。
今回は以上になります。別途、DBアプライアンスの容量拡張も同様に実施したいと思います。
この記事の執筆・編集担当
DE

松本 孝太郎

DELOGs編集部/中年新米プログラマー

ここ数年はReact&MUIのフロントエンドエンジニアって感じでしたが、Next.jsを学んで少しずつできることが広がりつつあります。その実践記録をできるだけ共有していければと思っています。