【ITニュース解説】How to expand diskspace on a Debian VM hosted on Hetzner Cloud
2025年09月16日に「Dev.to」が公開したITニュース「How to expand diskspace on a Debian VM hosted on Hetzner Cloud」について初心者にもわかりやすく解説しています。
ITニュース概要
Hetzner Cloud上のDebian VMでディスク容量が足りない時、既存VMを再構築せず、新しいストレージを追加し別マウントポイントで永続的に利用する方法を解説。これにより、データを独立して保存し、システムを整理できる。
ITニュース解説
クラウド環境で仮想マシン(VM)を運用していると、最初に割り当てたディスク容量が足りなくなる事態によく遭遇する。特にシステム開発やデータ処理など、大量のファイルを扱う作業では、予期せずディスク容量がひっ迫することがある。このような場合、既存のVMを一度削除して作り直すのは手間がかかるだけでなく、設定やデータ移行の手間も膨大だ。この記事では、Hetzner Cloudというクラウドサービスで稼働するDebianベースのVMを例に、既存のVMを維持したまま、新しいストレージ(ディスク領域)を追加し、それをVMで利用できるようにする具体的な手順を解説する。これはシステムエンジニアを目指す上で、クラウドインフラ管理の基本的なスキルとして非常に役立つ。
今回筆者は、自身のカスタムDebianパッケージリポジトリを作成中に、必要なディスク容量を見誤り、既存のVMのストレージが不足してしまった。VMを最初から再構築する手間を避けるため、新しいディスク領域を追加し、その領域をリポジトリデータ専用に使う方法を選択した。
まず、最初のステップとして、Hetzner Cloudの管理画面で新しいストレージを追加し、VMに接続する。クラウド環境におけるストレージは「ボリューム」と呼ばれることが多く、物理的なハードディスクドライブを仮想的に用意するようなものだ。Hetzner Cloudのウェブコンソールにログインし、左側のメニューから「Volumes」セクションを選択する。そこで「Create Volume」ボタンをクリックし、必要なディスク容量(GB)、ボリュームの名前、そしてこの新しいボリュームを接続したいVMを指定する。ここでは、自動マウントとファイルシステム(Debian系VMで一般的な「ext4」)も設定できる。筆者の場合、元々40GBだったVMに60GBのボリュームを追加した。これらの設定を終え、「Create & Buy Now」をクリックすると、新しいボリュームが作成され、選択したVMに自動的に接続される。
次に、この新しく接続されたボリュームをVM内で使えるように設定する。VMにSSHなどでログインし、lsblk -fコマンドを実行してみる。これはLinuxシステムに接続されているディスクデバイスとそのパーティション情報を表示するコマンドだ。ここで、新しく追加したボリュームが「sdb」のような名前で見えることを確認する。また、ファイルシステムが意図した通り「ext4」になっているかも確認できる。Hetzner Cloudで自動マウントオプションを選んでいる場合、/mnt/HC_Volume_103410845のような一時的なマウントポイントがすでに作成されていることがある。
この一時的なマウントポイントは筆者の目的に合わないため、まずはsudo umount /mnt/HC_Volume_103410845コマンドで一時的に解除する。もし解除できない場合は、そのマウントポイントで何らかのプロセスが動作している可能性があるため、sudo lsof <マウントポイントのパス>コマンドで確認するとよい。プロセスを停止するか、利用していない状態にしてから再度umountを試みる。
次に、筆者の目的であるDebianパッケージリポジトリのデータ格納場所として、/var/local/my-debian-repoという専用のディレクトリを作成する。これはsudo mkdir -p /var/local/my-debian-repoコマンドで実行する。「-p」オプションは、途中のディレクトリが存在しない場合でも自動的に作成してくれる。
ディレクトリが用意できたら、いよいよ新しく追加したボリュームをこのディレクトリに接続する。これにはsudo mount /dev/sdb /var/local/my-debian-repoコマンドを使用する。/dev/sdbは先ほどlsblk -fで確認した新しいボリュームのデバイスパス、/var/local/my-debian-repoは作成した新しいマウントポイントのパスだ。これで、/var/local/my-debian-repoにアクセスすると、追加したボリュームの領域が利用できるようになる。念のため、df -hコマンドで、新しいマウントポイントが正しくボリュームに接続されているか確認する。ここで注意すべき点として、もしマウント先に指定したディレクトリにすでにファイルが存在していた場合、ボリュームをマウントするとそのファイルは一時的に隠れてしまう。重要なデータが含まれる可能性がある場合は、事前にバックアップを取っておくことが賢明だ。
しかし、この状態ではVMを再起動すると、せっかく設定したマウントが解除されてしまう。これを永続化させるためには、Linuxシステムが起動時にどのストレージをどこにマウントするかを定義する設定ファイル/etc/fstabを編集する必要がある。このファイルはシステムの起動に深く関わる非常に重要なファイルであるため、編集前には必ずsudo cp /etc/fstab /etc/fstab.bakコマンドでバックアップを取ることを強く推奨する。
バックアップが完了したら、sudo echo '/dev/sdb /var/local/my-debian-repo ext4 defaults 0 2' | sudo tee -a /etc/fstabコマンド、またはnanoやvimのようなテキストエディタを使って/etc/fstabファイルの末尾に新しい行を追加する。追加する行の書式は「デバイスパス マウントポイント ファイルシステム オプション ダンプ パススルー」となる。筆者の例では、/dev/sdbがデバイスパス、/var/local/my-debian-repoがマウントポイント、ext4がファイルシステムの種類、defaultsが標準的なマウントオプション、0と2がそれぞれダンプとファイルシステムチェックに関する設定値を示している。これで、VMが再起動しても自動的にボリュームが指定のディレクトリにマウントされるようになる。cat /etc/fstabコマンドで、正しく設定が追加されたことを確認できる。
さらに、将来的に追加したボリュームの容量も不足することがあった場合、Hetzner Cloudのウェブコンソールから簡単にボリュームのサイズを拡張できる。「Volumes」セクションで該当するボリュームの「...」アイコンをクリックし、「Resize」を選択すればよい。ただし、ボリュームは拡張できるが、縮小はできない点に注意が必要だ。クラウド側でボリュームを拡張した後、VM内でもその新しい容量を認識させる必要がある。これにはsudo resize2fs /dev/sdbコマンドを使用する。これにより、ファイルシステムが新しいボリュームサイズに合わせて調整され、追加された領域がVM内で利用可能になる。
これらの手順を通じて、VMを再構築することなく、必要なストレージを柔軟に拡張し、システムを効率的に運用できる。クラウド環境におけるインフラ管理の基本的ながら重要なスキルであるため、ぜひ理解を深めてほしい。