Azure NetApp Files容量プール変更をAzure CLIで行う方法とFlexibleプールへの安全な移行手順

Azure NetApp Files(ANF)を本番で使っていると、「このボリュームだけ Premium にしたい」「新しく出てきた Flexible プールへ寄せたい」といった要望が必ず出てきます。本記事では、Azure ポータルではなく Azure CLI を使ってボリュームを別容量プールへ移動する方法と、従来の Standard / Premium / Ultra プールから Flexible プールへ安全に移行する手順を、実運用を意識した観点で整理します。

目次

Azure NetApp Files の構造と容量プール変更のイメージ

まずは前提となる ANF のストレージ階層を軽く整理しておきます。Azure NetApp Files は大まかに次の三層構造です。

レイヤー主な役割代表的な制約
Azure サブスクリプション課金・RBAC の管理単位ANF リソースの「移行(migrate)」はサブスクリプションをまたいでサポートされない
NetApp アカウント容量プールの論理的なコンテナ(リージョン単位)NetApp アカウント間で容量プールを移動することは不可
容量プール(Capacity Pool)サービス レベルと QoS タイプを持つ「容量の箱」1プールにつき 1 つのサービス レベルのみ / 1 つの NetApp アカウントにのみ所属
ボリューム実際に NFS / SMB でマウントされるファイル共有1つのボリュームは必ず 1 つの容量プールに所属

このうち、ボリュームを別の容量プールへ「動かす」操作が、Azure ポータルの「プールの変更(Change pool)」および Azure CLI の az netappfiles volume pool-change に相当します。

Azure CLI で容量プール変更は可能か?

結論から言うと、Azure CLI で ANF ボリュームを別容量プールへ移動することは可能です。

  • コマンド:az netappfiles volume pool-change(コア CLI に含まれる GA コマンド)
  • 用途:同一 NetApp アカウント内でボリュームを別容量プールへ移動し、結果としてサービス レベルを変更(Standard ⇔ Premium ⇔ Ultra 等)
  • 動作:データの再コピーは行われず、オンラインなままサービス レベルを変更できる(原則として I/O 停止なし)

Microsoft Q&A でも、同コマンドでの容量プール変更が公式に案内されています。

項目要件 / 挙動
移動先プール事前に作成済みである必要あり(サイズ・サービス レベル・QoS タイプ・暗号化種別を考慮)
アカウント同一 NetApp アカウント内のみ移動可能(アカウントをまたぐ移動は不可)
リージョンNetApp アカウントはリージョン単位のため、結果として同一リージョン内の移動のみとなる
データ プレーン影響設計上は I/O 継続のままサービス レベルを変更可能。とはいえ、重要ワークロードではメンテナンス枠での実行推奨
Flexible との関係後述の通り、Flexible プールだけはボリュームの移動が禁止されており、pool-change の対象外

CLI での容量プール変更手順(Standard / Premium / Ultra 向け)

ここでは、従来プール(Standard / Premium / Ultra / StandardZRS)間でボリュームを移動する手順を CLI ベースで整理します。

1. 前提条件の確認

  • 最新の Azure CLI を使用している(az upgrade またはクラウドシェルを利用)。
  • 実行ユーザーは対象リソース グループ/NetApp アカウントに対する Contributor 以上の権限を持つ。
  • 移動先プールに、対象ボリュームのプロビジョニング容量+スナップショット分の空き容量がある。
  • 暗号化種別(Single / Double)やネットワーク機能(Basic / Standard)が互換である。特に暗号化種別が異なるプールへの変更はサポートされません。

2. 容量プール一覧の取得

az netappfiles pool list \
  --resource-group MY_RESOURCE_GROUP \
  --account-name MY_ANF_ACCOUNT \
  -o table

ここで、各プールの serviceLevel(Standard / Premium / Ultra / Flexible など)と size、qosType を確認しておきます。

3. 移動先プールのリソース ID を取得

az netappfiles pool show \
  --resource-group MY_RESOURCE_GROUP \
  --account-name MY_ANF_ACCOUNT \
  --name MY_TARGET_POOL \
  --query id -o tsv

出力された値(例:/subscriptions/.../netAppAccounts/.../capacityPools/MY_TARGET_POOL)を控え、NEW_POOL_ID と呼ぶことにします。

4. ボリュームを別プールへ移動

az netappfiles volume pool-change \
  --resource-group MY_RESOURCE_GROUP \
  --account-name MY_ANF_ACCOUNT \
  --pool-name MY_CURRENT_POOL \
  --name MY_VOLUME \
  --new-pool-resource-id "NEW_POOL_ID"

--pool-name は「現在の」容量プール名である点に注意してください。

バックグラウンドでプール変更が実行されます。大容量ボリュームでは数分程度かかることがあります。

5. 完了確認

az netappfiles volume show \
  --resource-group MY_RESOURCE_GROUP \
  --account-name MY_ANF_ACCOUNT \
  --pool-name MY_TARGET_POOL \
  --name MY_VOLUME \
  --query "{state:provisioningState, pool:id}" -o json

provisioningState が Succeeded となり、pool が新しいプール ID になっていれば完了です。

なお、プール変更後は 過去のボリューム メトリックやアクティビティ ログは引き継がれず、新しいプール側で新規に計測が開始される点にも注意してください。

よくあるエラーと対処法

公式のトラブルシューティングでは、容量プール変更時の代表的なエラーと対処方法が整理されています。 以下に CLI 利用時に遭遇しやすい内容だけ抜粋した一覧を載せます。

エラー例原因対処
Capacity pool size is too small for total volume size移動先プールの空き容量が不足プールサイズを拡張するか、より大きいプールを選択して再実行
Pool not available or does not exist移動先プールが Succeeded 状態でない / 削除済みプールの状態を確認し、必要ならタグ追加など軽微な更新を行って状態を復旧
Volume with same name already exists in target pool同名ボリュームがすでに移動先プールに存在別のプールを選ぶか、重複ボリュームをリネーム・削除
Cannot change the volume’s pool because the destination pool uses different encryption typeSingle / Double 暗号化種別が不一致暗号化種別の同じプールを新規作成し、そちらへ移動

Flexible サービスレベルとは?特徴と注意点

Flexible は、従来の Standard / Premium / Ultra と異なり、容量とスループットを独立して調整できる新しいサービス レベルです。

  • 対象:新規に作成する Manual QoS の容量プール のみで利用可能(Auto QoS では利用不可)
  • スループット:プール全体の最大スループットは 5 × 128 MiB/s × プールサイズ(TiB)
  • 各ボリュームごとにスループットを個別指定(Manual QoS の特徴)
  • Azure Portal / CLI から、プールのスループット値(例:128〜2560 MiB/s)を後から増減可能(減速は 24 時間のクールダウン後)

サービス レベルごとのざっくりした特徴をまとめると次のようになります。

サービス レベル最大スループット/TiB(Auto QoS 時)主な用途イメージ
Standard~16 MiB/s汎用ファイル共有、開発環境
Premium~64 MiB/sVDI、ミドルレンジ DB
Ultra~128 MiB/s高 IOPS / 低レイテンシが求められる DB
Flexible(Manual QoS)プールサイズと設定スループットに依存(最大は 5 × 128MiB/s × プールサイズ)SAP HANA / Oracle など、容量とスループットを個別に最適化したいワークロード

Flexible プールの「動かせない」制約

Flexible プールでは、サービスの設計上、次のような制約が明示されています。

  • 既存の容量プールを Flexible に変換することはできない(逆方向も不可)。
  • Flexible サービスレベルの容量プールに属するボリュームは、他の容量プールへ移動できない。
  • 他の容量プール(Standard / Premium / Ultra 等)から Flexible サービスレベルの容量プールへ、ボリュームを移動することもできない。

つまり、Flexible プールは「ボリュームの pool-change がそもそも許可されない閉じた世界」と理解しておくと安全です。このため、従来プールから Flexible へ切り替えたい場合は、新しい Flexible プールを作成し、データを移行する、というパターン一択になります。Microsoft Q&A の回答でも同様の方針が示されています。

従来プールから Flexible プールへの安全な移行戦略

ここからは、Standard / Premium / Ultra プール上の既存ボリュームを、データ損失なく Flexible プールへ移行するための実践的な手順を整理します。

全体フローのイメージ

  1. 新しい Flexible 容量プールを作成する(Manual QoS)。
  2. Flexible プール上に新ボリューム(または一時ボリューム)を作成する。
  3. 従来ボリュームから新ボリュームへデータを同期する(rsync / robocopy / DB レプリケーション等)。
  4. 最終差分同期を実行し、短時間のダウンタイムでマウント先を切り替える。
  5. 旧ボリューム/旧プールを段階的に削除し、コスト最適化する。
移行方式対象プロトコルダウンタイムメリット注意点
rsync によるファイル コピーNFS短時間(最終差分同期+マウント切替)Linux だけで完結しやすく、制御が容易大量小ファイルでは初回同期に時間がかかる
robocopy によるミラーリングSMB短時間ACL やタイムスタンプを保持しやすいコマンド オプションを誤ると意図しない削除が発生しうる
スナップショットからのボリューム作成NFS / SMB最小限(差分同期のみ)コピー量を大きく削減できるFlexible プール側でのサポート状況や制限を事前確認
アプリケーション レベル レプリケーションDB / DWH 等数秒〜数分レベルに抑制可能アプリ側で一貫性のある切替を実現構成が複雑になりがちで、検証が必須

Step 1: Flexible 容量プールの作成(CLI)

Flexible プールは、Manual QoS かつ service-level=Flexible で作成します。必要に応じて --custom-throughput-mibps でプール全体の最大スループットを指定します。

az netappfiles pool create \
  --resource-group MY_RESOURCE_GROUP \
  --account-name MY_ANF_ACCOUNT \
  --name MY_FLEX_POOL \
  --location japan-east \
  --service-level Flexible \
  --qos-type Manual \
  --size 4 \
  --custom-throughput-mibps 1280
  • --size:容量プールのサイズ(TiB 単位)。4 TiB 以上・1 TiB きざみが推奨です。
  • --custom-throughput-mibps:Flexible プール全体の最大スループット。プールサイズと前述の「5 × 128MiB/s × TiB」上限を超えない値に設定します。

Step 2: Flexible プール上に新ボリュームを作成

次に、同一 VNet/サブネット上に新ボリュームを作成します。ここでは NFS ボリュームの例を示します。

az netappfiles volume create \
  --resource-group MY_RESOURCE_GROUP \
  --account-name MY_ANF_ACCOUNT \
  --pool-name MY_FLEX_POOL \
  --name MY_NEW_VOLUME \
  --location japan-east \
  --file-path my-new-share \
  --usage-threshold 1024 \
  --vnet my-vnet \
  --subnet my-anf-delegated-subnet \
  --protocol-types NFSv4.1 \
  --throughput-mibps 256
  • usage-threshold:ボリューム容量(GiB)。プール容量の範囲内で設定。
  • throughput-mibps:Manual QoS のため、各ボリュームごとにスループットを指定可能(プール全体の上限の範囲内)。

Step 3: データ同期(rsync / robocopy / スナップショット)

NFS の場合:rsync を使った段階同期

Linux クライアントから旧ボリュームと新ボリュームを両方マウントし、複数回の rsync で事前同期 → 最終同期を行うのが王道です。

# 初回フル同期
rsync -avxHAXS \
  --numeric-ids \
  /mnt/old_anf_volume/ \
  /mnt/new_anf_flex_volume/

# 切替前の最終差分同期(サービス停止後)
rsync -avxHAXS \
  --numeric-ids --delete \
  /mnt/old_anf_volume/ \
  /mnt/new_anf_flex_volume/
  • -x:別ファイルシステムへ跨らない(意図せぬ領域コピーを防止)。
  • -HAXS:ハードリンク/ACL/拡張属性/スパースファイルを維持。
  • --numeric-ids:UID/GID の数値をそのままコピー(NIS や AD 連携環境で有効)。
  • --delete:最終同期時に削除差分も反映し、ミラー状態に揃える。

SMB の場合:robocopy によるミラーリング

Windows ファイルサーバや VDI プロファイルのような SMB ワークロードでは、robocopy を使ったミラーリングが定番です。

robocopy \\old-anf\share \\new-anf-flex\share `
  /MIR /COPY:DATS /DCOPY:T /R:1 /W:1 /MT:16 /LOG:C:\logs\anf-migration.log
  • /MIR:ミラーリング(削除も反映)。
  • /COPY:DATS:データ・属性・タイムスタンプ・セキュリティ(ACL)をコピー。
  • /DCOPY:T:ディレクトリのタイムスタンプを保持。
  • /MT:16:並列コピーでスループットを引き上げ(環境に応じて調整)。

スナップショットを活用した高速移行

ワークロードによっては、既存ボリュームのスナップショットから新しいボリュームを作成し、その後に差分同期だけを行うことでコピー量を大幅に削減できる場合があります。ANF ではスナップショットからのボリューム作成がサポートされており、同一アカウント/リージョン内での運用が前提となります。

ただし Flexible プール固有の制約や、API バージョンによる挙動の違いがあり得るため、本番前に検証環境で手順を検証し、必要に応じて Microsoft サポートの最新ドキュメントを確認してください。

データベースのネイティブ レプリケーション

Oracle、SQL Server、SAP HANA などのデータベースでは、ストレージ コピーに頼らず、DB のネイティブ レプリケーション(Data Guard、Always On、HANA System Replication 等)を使って Flexbile プール側にセカンダリを作り、最終的にフェールオーバーするパターンも有力です。

  • ディスク I/O の一貫性やトランザクション整合性をアプリ側で担保できる。
  • 十分な帯域と CPU リソースがあれば、ダウンタイムを数秒〜数分まで圧縮可能。
  • 構成が複雑になりやすいため、DR テストと同レベルの検証が必須。

Step 4: アプリケーション切替

データ同期が完了したら、あとは マウント先を切り替えるだけです。

  • NFS:/etc/fstab やマウント スクリプトのエクスポートパスを、旧ボリュームから新ボリュームに変更し、マウントし直す。
  • SMB:ファイルサーバの共有フォルダ パスを変更するか、新しい共有名を DNS エイリアスでマッピングする。
  • DB:新ストレージ上のボリュームで DB を起動し、アプリケーション接続先を更新する。

切替直後は、Flexible プール固有のスループット特性が期待通りかどうか、待ち時間・IOPS・スループットをメトリックで必ず確認しておきましょう。

Step 5: 後片付け(コスト最適化)

  • 旧ボリュームを一定期間「読み取り専用」にしておき、想定外アクセスがないことを確認後に削除。
  • 旧容量プールのサイズを縮小したり、プール自体を削除してコストを削減。
  • 監査ログや CMDB 上のドキュメントを更新して、どのワークロードが Flexible に移行済みかを明確にする。

CLI を使うときの互換性チェックリスト

ここまでの内容を踏まえて、az netappfiles volume pool-change や Flexible への移行前にチェックすべきポイントを一覧にしておきます。

観点チェック内容
アカウント / リージョン同一 NetApp アカウント内・同一リージョン内である(アカウント間・サブスクリプション間移動は不可)。
サービス レベルStandard / Premium / Ultra 間の変更であれば pool-change 可能。Flexible は pool-change の対象外であり、「新規プール+データ移行」が必須。
QoS タイプAuto ⇔ Manual の混在は可能だが、Manual QoS 側では throughput の再設定が必要な場合がある。
暗号化種別Single / Double の暗号化種別が異なるプール間では pool-change 不可。
容量・スループット移動先プールに十分な容量とスループットの余裕があるか(プールサイズとサービス レベルで最大スループットが決まる)。
監視 / ログプール変更後はメトリック・アクティビティ ログが新規に開始されるため、必要に応じて旧ログをエクスポートしておく。

運用上のベストプラクティス

最後に、容量プール変更および Flexible への移行を実運用で行う際のベストプラクティスをまとめます。

  • メンテナンス時間帯で実施
    pool-change 自体はオンラインで動作するものの、スパイク的な遅延やアプリケーション側のタイムアウトなど、予期せぬ影響の可能性はゼロではありません。クリティカルなワークロードでは、メンテナンス ウィンドウを確保するのが無難です。
  • 「事前同期 → 最終差分 → 切替」の 3 段階を徹底
    初回フルコピーで時間をかけても、切替前の差分同期を短時間で済ませられれば、ダウンタイムを最小化できます。
  • スループットと容量の「頭打ち」を監視
    Flexible を含め、プールの容量・スループット上限に近づくと、ボリューム作成/拡張や pool-change が失敗しやすくなります。専用のアラートやダッシュボードを用意しておくと安心です。
  • ロールバック プランの準備
    切替後に想定外の遅延やアプリケーション エラーが発生した場合、「旧ボリュームへ戻す」ための手順(DNS 戻し・fstab 戻し)をあらかじめドキュメント化しておきましょう。
  • コスト検証を小さく始める
    Flexible は大きな自由度がある反面、設定次第でコスト構造も変わります。本番前に小さな検証環境で「典型的な 1 日」の負荷パターンを再現し、請求額とパフォーマンスのバランスを確認することをお勧めします。

まとめ

本記事のポイントを整理します。

  • CLI で容量プール変更は可能
    az netappfiles volume pool-change により、同一 NetApp アカウント内でボリュームを別容量プールへ移動できます。Standard / Premium / Ultra など従来プール間のサービス レベル変更は、ポータルの「プールの変更」と同様にオンラインで実行できます。
  • Flexible への直接“切り替え”は不可
    既存プールを Flexible に変換することも、ボリュームを Flexible プールへ pool-change することもできません。新しい Flexible プールを作成し、データ移行する必要があります。
  • 安全な移行の基本パターン
    「新プール作成 → 新ボリューム作成 → 事前同期 → 最終差分同期 → マウント切替 → 旧環境の解体」というフローを守れば、大規模ワークロードでもダウンタイムを最小限にできます。
  • 互換性・容量・コストを事前に再確認
    サービス レベル、QoS タイプ、暗号化種別、容量とスループットの上限を事前にチェックし、必要に応じてプールサイズやスループット設定を見直したうえで段階的に移行しましょう。

Azure NetApp Files の容量プール変更と Flexible への移行は、一見複雑そうですが、要点さえ押さえれば再現性の高い運用フローを組むことができます。まずは小さなボリュームで手順を確認し、自身の環境に合った標準手順書を整備しておくと、将来的なサービス レベル変更やコスト最適化にもスムーズに対応できるようになります。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次