Azureを触り始めたLinuxエンジニアがよく感じる疑問です。VM間でデータを共有したい、バックアップを保存したい、大量のログをまとめておきたい——それぞれの用途によって使うべきストレージが違います。
この記事では、AzureのBlob StorageとManaged Diskの2つに絞って、Linuxから実際に操作する手順を解説します。azコマンド(Azure CLI)を使ったBlobのアップロード・ダウンロードと一覧確認、さらにManaged DiskをLinux VMにアタッチしてフォーマット・マウントするまでの流れを、実機の出力例つきで紹介します。
この記事のポイント
・Blob Storageはオブジェクト保存、Managed DiskはVM用ブロックストレージと役割が異なる
・az storage blob upload/download でLinuxから直接Blobを操作できる
・Managed DiskはAzureポータルかazコマンドでVMにアタッチ後、fdisk・mkfs・mountで使える
・Blob Storageはホットアクセス層・クールアクセス層でコストを調整できる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
AzureストレージはBlob Storage、Managed Disk、Files の3種類が基本
AzureのストレージはAWS S3やEBSに相当するものが、それぞれ別の名前で提供されています。まずこの3種類の使い分けを頭に入れておくと、後の操作が迷いなく進みます。・Blob Storage(オブジェクトストレージ):ファイルや画像、ログ、バックアップなどのファイルをオブジェクトとして保存する。AWSのS3に相当。
・Managed Disk(ブロックストレージ):VM専用の仮想ディスク。AWSのEBSに相当。VMにアタッチしてOSまたはデータディスクとして使う。
・Azure Files(ファイルストレージ):SMBプロトコルで複数VMから同時にマウントできる共有ストレージ。AWSのEFSに相当。
この記事ではLinuxエンジニアが最も頻繁に扱うBlobとManaged Diskを取り上げます。
Azure CLI(az コマンド)の準備とストレージアカウント作成
1. Azure CLIのインストール
RHEL/Rocky Linux系とUbuntu系のそれぞれにインストール手順があります。ここではRPMパッケージとaptパッケージの両方を紹介します。RHEL 9.x / Rocky Linux 9.x の場合:
# Microsoftのリポジトリを追加してインストール sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc sudo dnf install -y https://packages.microsoft.com/config/rhel/9.0/packages-microsoft-prod.rpm sudo dnf install -y azure-cli # バージョン確認 az --version
# Microsoftの署名キーとリポジトリを追加 curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash # バージョン確認 az --version
$ az --version azure-cli 2.61.0 core 2.61.0 telemetry 1.1.0 Python location '/opt/microsoft/azure-cli/bin/python3' Extensions directory '/home/azureuser/.azure/cliExtensions' Python (Linux) 3.11.9 (main, Apr 2 2024, 08:25:16) [GCC 11.4.1 20231218 (Red Hat 11.4.1-3)]
2. az login でAzureにサインイン
az login
# ブラウザが使えないサーバーでのログイン az login --use-device-code # → To sign in, use a web browser to open the page https://microsoft.com/devicelogin # and enter the code XXXXXXXX to authenticate.
3. ストレージアカウントの作成
Blob StorageはAzureの「ストレージアカウント」の配下に作成します。まずリソースグループとストレージアカウントを用意します。# リソースグループの作成(Japan Eastリージョン) az group create --name myStorageRG --location japaneast # ストレージアカウントの作成 # 名前は英小文字+数字のみ、3~24文字、グローバルで一意である必要がある az storage account create --name mystorageaccount20260701 --resource-group myStorageRG --location japaneast --sku Standard_LRS --kind StorageV2 --access-tier Hot
・Standard_LRS:3重冗長(同一データセンター内)。開発・テスト向け。
・Standard_GRS:地理的冗長(別リージョンに自動複製)。本番推奨。
・Hot アクセス層:頻繁にアクセスするファイル向け(ストレージ単価高め・転送単価低め)。
・Cool アクセス層:アクセス頻度の低いログや長期バックアップ向け(ストレージ単価低め・転送単価高め)。
Blob StorageをLinuxから操作する(az storage blob)
1. コンテナの作成
Blob Storageのファイルは「コンテナ」という単位でまとめて管理します。S3のバケットに相当するものです。# アカウントキーを変数に取得(コマンドを短くするため) export AZURE_STORAGE_ACCOUNT=mystorageaccount20260701 export AZURE_STORAGE_KEY= # コンテナの作成(パブリックアクセスなし) az storage container create --name mycontainer --public-access off
{ "created": true }
2. ファイルのアップロード(upload)
# 単体ファイルのアップロード az storage blob upload --container-name mycontainer --file /var/log/messages --name logs/messages-2026-07-01.log # ディレクトリごと一括アップロード(--pattern でワイルドカード指定可) az storage blob upload-batch --source /var/log/ --destination mycontainer/logs --pattern "*.log"
{ "etag": ""0x8DC9A1B2C3D4E5F6"", "lastModified": "2026-07-01T09:30:00+00:00" }
3. ファイルの一覧確認(list)
# コンテナ内のBlob一覧を表示 az storage blob list --container-name mycontainer --output table # プレフィックスで絞り込み(logsフォルダ以下のみ) az storage blob list --container-name mycontainer --prefix "logs/" --output table
Name Blob Type Blob Tier Length Content Type Last Modified -------------------------------- ----------- ----------- -------- ------------------------ ------------------------- logs/messages-2026-07-01.log BlockBlob Hot 185432 application/octet-stream 2026-07-01T09:30:00+00:00 logs/secure-2026-07-01.log BlockBlob Hot 12089 application/octet-stream 2026-07-01T09:31:05+00:00
4. ファイルのダウンロード(download)
# 単体ファイルのダウンロード az storage blob download --container-name mycontainer --name logs/messages-2026-07-01.log --file /tmp/messages-restored.log # バッチダウンロード(コンテナのlogsフォルダを丸ごとローカルへ) az storage blob download-batch --source mycontainer --destination /tmp/blob-restore/ --pattern "logs/*"
{ "content": null, "contentMd5": null, "deleted": false, "metadata": {}, "name": "logs/messages-2026-07-01.log", "properties": { "blobType": "BlockBlob", "contentLength": 185432 } }
5. SAS URLでの一時公開(期限付きURL)
Blobをパブリック公開せず、期限付きで外部から参照できるようにするには、SAS(Shared Access Signature)URLを使います。# 1時間だけ有効なダウンロードURL(読み取り権限のみ)を生成 az storage blob generate-sas --container-name mycontainer --name logs/messages-2026-07-01.log --permissions r --expiry --full-uri --output tsv
https://mystorageaccount20260701.blob.core.windows.net/mycontainer/logs/messages-2026-07-01.log?se=2026-07-01T10%3A30Z&sp=r&sv=2022-11-02&sr=b&sig=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Managed DiskをLinux VMにアタッチしてマウントする
Managed DiskはVMの「追加データディスク」として使うブロックストレージです。Blob Storageと違い、直接ファイルシステムをフォーマットしてマウントポイントを設定します。1. Managed Diskの作成とVMへのアタッチ
# 100GBのManaged Disk(Premium SSD)を作成 az disk create --resource-group myStorageRG --name myDataDisk --sku Premium_LRS --size-gb 100 --location japaneast # 既存VMにアタッチ(VMの名前は myLinuxVM とする) az vm disk attach --resource-group myStorageRG --vm-name myLinuxVM --name myDataDisk
・Premium_LRS:Premium SSD。データベースや高IOPSが必要なアプリ向け。
・Standard_LRS:Standard HDD。コスト重視のバックアップ・アーカイブ向け。
・StandardSSD_LRS:Standard SSD。一般的なWebサーバー・アプリサーバー向け。
2. Linux側でディスクを認識して確認
アタッチ後、VMのSSHで接続してディスクが認識されているか確認します。# ブロックデバイスの一覧でアタッチされたディスクを確認 lsblk # 出力例 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 30G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 2G 0 part [SWAP] └─sda3 8:3 0 27G 0 part / sdb 8:16 0 100G 0 disk ← 新しく追加されたManaged Disk
3. パーティションの作成とフォーマット
# GPTパーティションテーブルを作成(100GB以上ならGPT推奨) sudo parted /dev/sdb --script mklabel gpt sudo parted /dev/sdb --script mkpart primary ext4 0% 100% # パーティションの確認 sudo parted /dev/sdb print # ext4でフォーマット sudo mkfs.ext4 /dev/sdb1
$ sudo mkfs.ext4 /dev/sdb1 mke2fs 1.46.5 (30-Dec-2021) Discarding device blocks: done Creating filesystem with 26214144 4k blocks and 6553600 inodes Filesystem UUID: a1b2c3d4-e5f6-7890-abcd-ef1234567890 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872 Allocating group tables: done Writing inode tables: done Creating journal (131072 blocks): done Writing superblocks and filesystem accounting information: done
4. マウントとfstab設定
# マウントポイントの作成 sudo mkdir -p /data # 手動マウントで確認 sudo mount /dev/sdb1 /data # マウント確認 df -h /data
Filesystem Size Used Avail Use% Mounted on /dev/sdb1 98G 24K 93G 1% /data
# UUIDを確認 sudo blkid /dev/sdb1 # 出力例 /dev/sdb1: UUID="a1b2c3d4-e5f6-7890-abcd-ef1234567890" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" # fstabに追記 echo "UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890 /data ext4 defaults,nofail 0 2" | sudo tee -a /etc/fstab # fstabのエラー確認(必ず実行すること) sudo mount -a && echo "OK - fstab設定に問題なし"
Blob StorageとManaged Diskのコスト比較と使い分け判断
| 用途 | 推奨ストレージ | 理由 |
|---|---|---|
| VMのOSディスク・データディスク | Managed Disk(Premium SSD) | ブロックストレージが必要。fsシステム直接マウント |
| ログ・バックアップの長期保存 | Blob Storage(Cool層) | ストレージ単価が安く、月額コストを最小化できる |
| Web資産(画像・CSS・JS)の配信 | Blob Storage(Hot層)+ CDN | 静的コンテンツ配信はBlob+Azure Front Doorが定番 |
| 複数VMで同じファイルを共有 | Azure Files | SMBマウントで複数VMから同時アクセス可能 |
| スクリプト・CLIでのファイル転送 | Blob Storage(az storage blob) | azコマンドで操作しやすい。SAS URLで一時共有も可能 |
トラブルシュート:よくあるエラーと対処
「AuthorizationPermissionMismatch」が出る
ストレージアカウントキーまたはSASトークンが正しく設定されていない場合に発生します。# エラー例 The request is not authorized to perform this operation using this permission. ErrorCode: AuthorizationPermissionMismatch # 対処: 環境変数が正しくセットされているか確認 echo echo # または --account-name / --account-key を明示的に指定 az storage blob list --container-name mycontainer --account-name mystorageaccount20260701 --account-key "XXXXXXXX..."
Managed Diskアタッチ後にlsblkで見えない
VMへのアタッチが完了しているように見えてもカーネルがデバイスをスキャンできていない場合があります。# SCSIバスを強制リスキャン echo "- - -" | sudo tee /sys/class/scsi_host/host*/scan # デバイスが認識されたか再確認 lsblk
fstab設定後にVMが起動しない
fstabにUUIDを間違えて記入した場合にVMが起動しなくなることがあります。Azureポータルの「シリアルコンソール」またはAzureの「Boot Diagnostics」ログで確認できます。# 未然に防ぐ: fstab書き込み前に必ず以下でテスト sudo mount -a # エラーがなければ続行、エラーが出たら fstab を修正してから再試行
本記事のまとめ
| やりたいこと | コマンド・方法 |
|---|---|
| ストレージアカウントを作成 | az storage account create --name ... --sku Standard_LRS |
| Blobコンテナを作成 | az storage container create --name mycontainer |
| Blobにファイルをアップロード | az storage blob upload --container-name ... --file ... |
| Blob一覧を確認 | az storage blob list --container-name ... --output table |
| Blobをダウンロード | az storage blob download --container-name ... --name ... |
| 期限付きSAS URLを生成 | az storage blob generate-sas --permissions r --expiry ... |
| Managed Diskを作成してVMにアタッチ | az disk create ... → az vm disk attach ... |
| Managed Diskをフォーマット・マウント | mkfs.ext4 /dev/sdb1 → mount /dev/sdb1 /data |
| fstabに自動マウント設定 | UUID取得後に /etc/fstab へ nofail オプション付きで追記 |
Blob StorageとManaged Diskは役割がまったく異なります。VMのデータディスクとして高速アクセスが必要ならManaged Disk、ログや画像などのオブジェクト保存ならBlob Storageという切り分けを軸に選んでください。
AzureのストレージはLinuxエンジニアが避けて通れない実務スキルです。Blob Storageのオブジェクト操作からManaged DiskのマウントまでをCLIで体系的に身につけておくことで、現場でのトラブル対応速度が大きく変わります。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:AzureのPrivate DNSゾーンを設定する方法|VNet内の名前解決をazコマンドで構成する
- 前のページへ:AzureのNSGとSSH公開鍵認証でLinux VMを安全に保護する方法|ネットワークセキュリティグループの設定と実践例
- この記事の属するカテゴリ:Azureへ戻る

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