オンプレミスではiSCSIや物理ドライブを増設しますが、AzureではManaged Diskをazコマンドで作成・アタッチするのが定石の流れです。
この記事では、AzureのLinux VMにデータディスクを追加し、parted・mkfs・fstabで永続マウントするまでの実践手順を解説します。Ubuntu 24.04 LTS / RHEL 9で動作確認済みです。
ディスクのオンラインサイズ変更方法とデタッチ・削除の手順も合わせて掲載します。
この記事のポイント
・ Managed Diskはaz disk createとaz vm disk attachの2コマンドでVMに追加できる
・ Linux側はlsblk→parted→mkfs→fstabの順に設定しUUIDでマウントを永続化する
・ テンポラリディスク(/dev/sdb)は再起動で内容が消えるため永続ストレージとして使わない
・ ディスクサイズはaz disk updateとgrowpartでオンライン拡張できる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
AzureのManaged DiskとOSディスク・データディスクの違い
AzureでLinux VMを起動すると、OSがインストールされた「OSディスク」が自動的にアタッチされます。データベースのデータ領域やアプリケーションのログ保存先には、OSディスクとは独立したデータディスクを追加するのがベストプラクティスです。AzureのLinux VMで確認できるディスクの種類を整理します。
・OSディスク(/dev/sda):OSのブート領域。VM削除時にデフォルトで一緒に削除される
・テンポラリディスク(/dev/sdb):ホストのローカルSSDで高速だが、VM再起動・再デプロイで内容が消える。/mnt/resourceにマウントされる。永続ストレージとして使ってはいけない
・データディスク(/dev/sdc以降):Managed Diskとして独立管理。VM削除後も保持でき、別VMにアタッチし直せる
Managed DiskにはSSD系の「Premium SSD」「Standard SSD」とHDD系の「Standard HDD」があります。本番DBにはPremium SSD v2、開発・検証環境ではStandard SSD LRSが一般的な選択です。
作業環境と前提条件
本記事の手順は以下の環境で動作確認しています。・VM: Standard D2s_v3(Ubuntu 24.04 LTS)
・リソースグループ: myRG / リージョン: japaneast
・Azure CLI 2.61以降がインストール済み
・az loginまたはサービスプリンシパルでログイン済み
まず現在ログイン中のサブスクリプションを確認します。
$ az account show --query "{name:name, id:id}" -o table Name Id ---------------------- ------------------------------------ My Azure Subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
azコマンドでManaged Diskを作成してVMにアタッチする
1. Managed Diskを作成する
データディスクはVMとは独立したリソースとして作成します。Standard SSD・100GiB・LRS(ローカル冗長)で作成する例です。$ az disk create --resource-group myRG --name myDataDisk --size-gb 100 --sku StandardSSD_LRS --location japaneast
・--size-gb:ディスクサイズ(GiB)。4~65,536 GiBの範囲で指定できる
・--sku:Premium_LRS / StandardSSD_LRS / Standard_LRS / UltraSSD_LRS から選択
・--zone:可用性ゾーンに配置する場合は 1/2/3 を指定(省略するとゾーンなし)
作成完了後、ディスクのサイズとSKUを確認します。
$ az disk show --resource-group myRG --name myDataDisk --query "{sizeGb:diskSizeGb, sku:sku.name, state:diskState}" -o table SizeGb Sku State -------- ---------------- ----------- 100 StandardSSD_LRS Unattached
2. 実行中のVMにアタッチする
az vm disk attach コマンドでVMにアタッチします。VMを停止しなくてもオンラインでアタッチできます。$ az vm disk attach --resource-group myRG --vm-name myVM --name myDataDisk
$ az vm show --resource-group myRG --name myVM --query "storageProfile.dataDisks[].{name:name, lun:lun, sizeGb:diskSizeGb}" -o table Name Lun SizeGb ------------ ----- -------- myDataDisk 0 100
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、Azureの学習をもっと体系的に進めたいなら、Azure実践ハンズオン講座をご覧ください。現役エンジニアが教える実務直結カリキュラムで、VM構築からインフラ管理まで一気に習得できます。
Linux側でディスクを認識・パーティション・フォーマットする
1. デバイス名を確認する
SSHでVMに接続し、lsblkでアタッチされたディスクを確認します。$ lsblk -o NAME,SIZE,TYPE,MOUNTPOINT NAME SIZE TYPE MOUNTPOINT sda 30G disk ├─sda1 29G part / ├─sda14 4M part └─sda15 106M part /boot/efi sdb 16G disk └─sdb1 16G part /mnt/resource sdc 100G disk
2. partedでGPTパーティションを作成する
2TB以上のディスクはGPT(GUIDパーティションテーブル)が必要です。Azure上のManaged Diskは最大65,536 GiBまであるため、最初からGPTで作成しておくのが安全です。$ sudo parted /dev/sdc --script mklabel gpt $ sudo parted /dev/sdc --script mkpart primary ext4 0% 100% $ sudo parted /dev/sdc --script print Model: Msft Virtual Disk (scsi) Disk /dev/sdc: 107GB Sector size (logical/physical): 512B/4096B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 107GB 107GB primary
--script フラグを付けることで、インタラクティブなプロンプトを出さずに実行できます。スクリプトやcronでの自動化にも使えます。3. mkfsでext4にフォーマットする
パーティション /dev/sdc1 をext4でフォーマットします。$ sudo mkfs.ext4 -L datadisk /dev/sdc1 mke2fs 1.47.0 (5-Feb-2023) Creating filesystem with 26213888 4k blocks and 6553600 inodes Filesystem UUID: a1b2c3d4-e5f6-7890-abcd-ef1234567890 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200 Allocating group tables: done Writing inode tables: done Creating journal (131072 blocks): done Writing superblocks and filesystem accounting information: done
-L datadisk でラベルを付けておくと、LABEL=datadisk 形式でのマウントも可能です。fstabに登録して永続マウントする
1. UUIDを確認する
blkidコマンドでUUIDを確認します。デバイス名(/dev/sdc1)は再起動や再デプロイでずれることがあるため、UUIDをfstabに記載するのが正しいやり方です。$ sudo blkid /dev/sdc1 /dev/sdc1: LABEL="datadisk" UUID="a1b2c3d4-e5f6-7890-abcd-ef1234567890" TYPE="ext4"
2. fstabに追記してマウントを永続化する
マウントポイントを作成し、/etc/fstabにエントリを追記します。$ sudo mkdir -p /data $ echo "UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890 /data ext4 defaults,nofail 0 2" | sudo tee -a /etc/fstab
nofail オプションは重要です。このディスクが見つからない場合でもOS起動を続行する設定で、テンポラリ障害でVMが起動不能になるのを防ぎます。fstabのオプションと永続マウントの仕組みはmount コマンドの使い方も合わせて確認してください。fstabへの追記後、sudo mount -a でテストマウントします。
$ sudo mount -a $ df -h /data Filesystem Size Used Avail Use% Mounted on /dev/sdc1 98G 24K 93G 1% /data
ディスクのサイズをオンラインで拡張する
データ量が増えてディスクが足りなくなった場合、Managed Diskはオンライン(VM停止なし)でサイズを拡張できます。1. Azure側でManaged Diskを拡張する
100GiBを200GiBに拡張する例です。$ az disk update --resource-group myRG --name myDataDisk --size-gb 200
2. Linux側でパーティションとファイルシステムを拡張する
lsblkで新しいサイズが認識されているか確認してから、growpartとresize2fsで拡張します。# Azureが新しいサイズを通知するまで数秒待つ $ lsblk /dev/sdc NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdc 8:32 0 200G 0 disk └─sdc1 8:33 0 100G 0 part /data # パーティションを拡張(アンマウント不要) $ sudo growpart /dev/sdc 1 CHANGED: partition=1 start=2048 old: size=209713152 end=209715199 new: size=419428319 end=419430366 # ファイルシステムをオンラインで拡張 $ sudo resize2fs /dev/sdc1 resize2fs 1.47.0 (5-Feb-2023) Filesystem at /dev/sdc1 is mounted at /data; on-line resizing required The filesystem on /dev/sdc1 is now 52428539 (4k) blocks long. # 拡張後を確認 $ df -h /data Filesystem Size Used Avail Use% Mounted on /dev/sdc1 197G 24K 187G 1% /data
データディスクをデタッチ・削除する
不要になったデータディスクはVMからデタッチしてから削除します。デタッチ前にLinux側でアンマウントとfstabの削除を行います。# Linux側でアンマウントしてfstabの該当行を削除する $ sudo umount /data $ sudo vim /etc/fstab # UUID行を削除 # AzureからVMをデタッチする $ az vm disk detach --resource-group myRG --vm-name myVM --name myDataDisk # Managed Diskリソースを削除する $ az disk delete --resource-group myRG --name myDataDisk --yes
トラブルシュート
デバイスが /dev/sdc に現れない場合
アタッチ直後にlsblkで認識されない場合は、udevのイベントがまだ処理中のことがあります。# カーネルにSCSIリスキャンを要求する $ sudo bash -c "echo "- - -" > /sys/class/scsi_host/host0/scan" $ lsblk
fstabの設定ミスでブートできなくなった場合
fstabに誤ったUUIDを記載した状態で再起動すると、Azureポータルの「シリアルコンソール」(VM → サポートとトラブルシューティング → シリアルコンソール)でアクセスして修正できます。nofailオプションを付けていれば、ディスクが見つからなくてもOSは起動します。新規追加ディスクのfstabエントリには必ずnofailを付ける習慣にしてください。
まとめ
AzureのLinux VMにデータディスクを追加する手順をまとめます。| やりたいこと | コマンド |
|---|---|
| Managed Diskを作成する | az disk create --resource-group RG --name DISK --size-gb 100 --sku StandardSSD_LRS |
| VMにデータディスクをアタッチする | az vm disk attach --resource-group RG --vm-name VM --name DISK |
| デバイス名を確認する | lsblk -o NAME,SIZE,TYPE,MOUNTPOINT |
| GPTパーティションを作成する | sudo parted /dev/sdc --script mklabel gpt |
| パーティションをext4でフォーマットする | sudo mkfs.ext4 -L datadisk /dev/sdc1 |
| UUIDを確認する | sudo blkid /dev/sdc1 |
| fstabに登録して永続マウントする | sudo mount -a && df -h /data |
| Azure側でディスクサイズを拡張する | az disk update --resource-group RG --name DISK --size-gb 200 |
| パーティションをオンラインで拡張する | sudo growpart /dev/sdc 1 |
| ファイルシステムをオンラインで拡張する | sudo resize2fs /dev/sdc1 |
| データディスクをデタッチして削除する | az vm disk detach ... && az disk delete ... |
Azureの学習をもっと体系的に進めたいなら、Azure実践ハンズオン講座をご覧ください。現役エンジニアが教える実務直結カリキュラムで、VM構築からインフラ管理まで一気に習得できます。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます