Azure NetApp Files(ANF)でスナップショットを有効にしたまま、5〜10TBのデータをまとめて削除すると「消したのに空き容量が増えない」ことがあります。60TBで使用率95%のような“ほぼ満杯”環境で安全に実施するために、仕組み・影響・具体的な手順を実務目線で整理します。
結論:Azure NetApp Filesで大量削除はできる。ただし「空き容量の反映」と「満杯リスク」を先に潰す
Azure NetApp Files(ANF)ボリュームから5〜10TB規模のデータを削除すること自体は、手順さえ誤らなければ基本的に実施できます。問題になりやすいのは「削除=すぐに空き容量が増える」と思い込んでしまう点です。スナップショットが有効なANFでは、削除しても物理的な使用容量がすぐ解放されないことがあり、特に使用率95%のように余裕が少ないと、削除作業の途中や直後に別の書き込みが重なって容量が枯渇し、業務側が先に止まるリスクが高まります。
- 削除しても空き容量が増えないのは、スナップショットが同じデータブロックを参照しているためです(後述)。
- パフォーマンス影響は「削除量(TB)」よりファイル数(メタデータ操作量)で増減します。
- 95%使用の前提では、削除を始める前に監視とバッファ確保(必要なら一時拡張)を入れるのが安全です。
まず押さえる:Azure NetApp Filesのスナップショットは「コピー」ではなく参照
ANFのスナップショットは、よくある“フォルダ丸ごと複製”のイメージとは違い、既存のデータブロックを参照(ポインタで指す)ことで世代管理を行う仕組みです。変更が入ったブロックだけを新規に確保するため、作成は高速で、容量効率も高い一方、削除時の見え方にクセが出ます。
イメージを簡単にすると、次のような流れになります。
- スナップショット作成:その時点のブロックを「参照」として固定する
- 以後の更新:更新されたブロックだけが新規確保され、古いブロックはスナップショットが保持する
- ファイル削除:現行(アクティブ)ファイルシステムから参照が外れるだけで、スナップショットが参照している限りブロックは残る
- スナップショット削除:参照が完全に無くなったブロックが、ここで初めて解放される
| 操作 | ユーザー視点の変化 | ストレージ内部で起きること | 容量回復のタイミング |
|---|---|---|---|
| ファイル削除 | ディレクトリから消える | アクティブ側の参照が外れる(ブロック自体は残り得る) | スナップショットが参照している間は回復しないことがある |
| スナップショット保持 | 復元ポイントが残る | 過去ブロックへの参照が保持され続ける | 保持期間が長いほど回復が遅く見える |
| スナップショット削除 | 復元ポイントが減る | 参照が外れ、不要ブロックが解放対象になる | 参照が無くなったブロックから順に回復 |
Azure NetApp Filesで「削除しても空き容量が増えない」代表的な理由
理由1:削除したデータをスナップショットが参照している
もっとも多い原因です。スナップショットが数日分残っている構成では、削除した直後に空き容量が増えないことはむしろ自然です。特に「削除対象が“スナップショット作成時点ですでに存在していたデータ”」であれば、そのブロックは過去世代から参照されやすく、回復はスナップショットの世代が進むまで待つ必要があります。
理由2:クローン、レプリケーション、バックアップが同じブロックを保持している
ANFの機能や運用によっては、スナップショット以外にも“参照関係”が残ります。代表例はボリュームクローン(スナップショットから作る派生ボリューム)や、レプリケーション/バックアップで使われる内部スナップショットです。これらが残っていると、見た目には削除したのに回復が進まない状態になりやすいので、削除前に「他機能がどの世代を掴んでいるか」を確認しておくと事故を減らせます。
理由3:ファイルが開かれたまま、またはクライアント都合で解放が遅延する
SMB/NFSでは、アプリケーションがファイルを開いたまま削除した場合、実体の解放が遅れることがあります。典型例として、バックアップソフトやインデックス作成、ログ収集エージェントがファイルを掴み続けているケースです。削除を入れる前に、対象ディレクトリをアプリケーションから切り離す(リネームして参照を外すなど)と、意図しない遅延を減らせます。
| 現象 | よくある原因 | 見分け方 | 現実的な対処 |
|---|---|---|---|
| 削除しても使用率がほぼ変わらない | スナップショットが参照 | スナップショット世代が残っている/削除対象が昔から存在 | 保持期間を短縮、不要スナップショットを安全に削除、世代が進むまで待つ |
| 数日後に突然空きが増える | 保持期限でスナップショットが順次削除 | ポリシー通りにスナップショットが消えたタイミングと一致 | 想定通り。削除作業後もしばらく監視を継続 |
| 空きが増えるが想定より少ない | 別データの増加/差分更新で新規ブロックが増えた | 削除期間中に書き込みが増えている(ログ、ETL、一時ファイル) | 増加要因を止める、削除と並行して発生する書き込みを減らす |
| 削除が遅い/クライアントが固まる | 小さなファイルが大量/ディレクトリ階層が深い | ファイル数が桁違い、rmが進まない | 分割削除、バッチ処理、リネーム→段階削除、オフピーク実行 |
今回の条件(60TB・95%使用・5〜10TB削除)を具体的に見る
60TBボリュームで使用率95%の場合、単純計算で使用量は約57TB、空きは約3TBです。ここで5〜10TBを削除しても、スナップショットが参照している間は物理使用量がすぐに減らず、空き3TBのままに見える可能性があります。削除と同時にアプリ側の書き込み(ログ、テンポラリ、追記)が続くと、「空かないまま書き込みが増えて満杯」という順番で問題化しやすい点が重要です。
| シナリオ | 論理的な使用量(削除直後のイメージ) | 物理的な使用量(スナップショット参照ありのイメージ) | 空き容量の見え方 |
|---|---|---|---|
| 現状:60TBの95%使用 | 約57TB | 約57TB | 約3TB |
| 5TB削除(スナップショットが参照し続ける) | 約52TB | 約57TBのままに見えることがある | 約3TBのままに見えることがある |
| 10TB削除(スナップショットが参照し続ける) | 約47TB | 約57TBのままに見えることがある | 約3TBのままに見えることがある |
| 保持期限が過ぎ、参照の無い世代が消えた後 | 約47〜52TB(環境により変動) | 参照が外れたブロックから順に減少 | このタイミングで空きが増え始める |
ポイントは、削除したTB数よりも「削除完了〜スナップショット世代が進むまでの期間に、どれだけ追加書き込みが起きるか」です。運用上は、削除の前に“空きが増えない期間”を耐えられるだけの余裕を作っておくのが最も効きます。
パフォーマンス影響は「TBの量」より「ファイル数」で決まる
5〜10TBの削除と聞くと巨大な処理に見えますが、ANF側が苦手なのは“容量”そのものより、ディレクトリ探索・権限確認・エントリ削除・タイムスタンプ更新のようなメタデータ操作が大量に発生するケースです。つまり、同じ10TBでも「10GBのファイルを1000個」なのか、「10KBのファイルを10億個」なのかで影響が全く変わります。
| データの傾向 | 削除処理の体感 | ANF/クライアントへの負荷 | おすすめの削除戦略 |
|---|---|---|---|
| 大きいファイルが中心(例:VMイメージ、バックアップ塊) | 比較的早い | メタデータは少なめ。主に削除要求の処理 | 業務影響の少ない時間に一括でも可。監視は継続 |
| 小さいファイルが大量(例:ログ、画像、ビルド成果物) | 非常に遅くなり得る | メタデータI/Oが増え、レイテンシが上がりやすい | 分割削除、段階削除、リネームで切り離し、並列度を上げすぎない |
| 深い階層+大量のディレクトリ | 進捗が見えにくい | 探索コストが増えがち | 対象をディレクトリ単位で整理してから削除。まず上位を切り離す |
メタデータ(inode/ディレクトリ)への影響と「一時的に増える」の正体
「削除でメタデータ使用量が増えるのか?」という疑問はもっともです。一般的には、削除はファイル数を減らすため、最終的にはメタデータも減る方向に働きます。一方で、削除の瞬間には大量のメタデータ更新が集中します。
- ディレクトリエントリの削除・更新
- アクセス権や所有者情報の確認(クライアント側の挙動も影響)
- スナップショットや差分管理のための内部処理
- 削除ログやジャーナリング相当の更新
その結果、短時間だけ「メタデータ処理が増える」「関連する内部領域の使用が揺れる」ことがあります。通常はTB単位のデータに比べれば小さな揺れですが、今回のようにボリュームが95%使用で余白が薄い場合、わずかな揺れでも“安全マージン”を削ってしまう点が注意ポイントです。
実務的には、メタデータ増加そのものよりも、削除が長引いた結果としてスナップショット世代が増え、差分が積み上がり、結果的に使用量が増えてしまう(ログが増える、更新が走る)といった“二次的な増加”が事故の原因になりがちです。
95%使用時の注意点:容量が足りないと「削除より先に止まる」
容量が逼迫していると、削除作業そのものは進んでも、並行して動く業務処理がエラーになり得ます。特にANFは「プロビジョニングした容量(ボリュームサイズ)内」でスナップショットも差分も管理されるため、削除直後に空かない状態で、さらにスナップショットが増えるという挙動が重なると危険です。
よくあるトラブルのパターンを整理すると次の通りです。
- アプリが書き込みを継続 → 空きが増えない期間に使用率がさらに上がる
- スナップショット作成が失敗(ポリシー通りに取れない)→ 復旧手段が弱くなる
- 一部の処理が「空き不足」で停止 → 削除作業の完了を待てずに業務影響が出る
この状態を避ける最も単純で効果が高い対策は、削除前にボリュームサイズ(または容量プール)を一時的に増やして余裕を作ることです。削除後にスナップショット世代が進み、物理使用量が下がって安定したら、必要に応じて元に戻す運用が現実的です。
削除前にやっておくべき確認(事故を防ぐチェックリスト)
- 削除対象の棚卸し:削除してよいディレクトリ/日付/プロジェクト単位を明確化(「消す範囲の固定」)。
- スナップショットの役割確認:復元に必要な世代がどれか、保持日数を短縮してよいか、復元手順は確立しているか。
- 他機能の依存確認:ボリュームクローン、バックアップ、レプリケーションなどが削除対象データのブロックを保持し続けないか。
- 現在の“増加要因”の特定:ログ、キャッシュ、テンポラリ、ETLなど、日々増えるデータが何かを把握。
- バッファの確保:95%使用なら、削除前に一時拡張を検討(少なくとも数TB〜十数TBの余裕を持つ)。
- 監視の準備:容量だけでなく、スナップショット消費、性能(遅延/IOPS/スループット)を同時に見られるようにする。
安全に5〜10TBを削除する実務手順
手順1:削除対象を「切り離す」(リネーム・アクセス遮断)
削除の最大の敵は「削除中に対象が更新され続けること」です。更新が続くと、スナップショット差分が膨らみ、思ったほど容量が戻らない/戻るまでに時間がかかる原因になります。可能なら、まずは対象ディレクトリをアプリケーションの参照パスから外します。
- ディレクトリをリネームし、アプリ側から見えない名前にする
- 共有設定やエクスポートポリシー(運用ルールの範囲で)で書き込みを止める
- 削除する範囲を“日付フォルダ単位”などにまとめてから実施する
この段階で、削除対象が増え続けない状態を作れるだけでも成功率が上がります。
手順2:余裕が薄い場合は一時的にボリューム(または容量プール)を拡張
使用率95%のまま削除を始めると、「削除しても空きが増えない期間」を耐えられずに満杯に到達する恐れがあります。削除対象が5〜10TBで、スナップショット保持が数日あるなら、削除前に数TB〜十数TBの追加余裕を用意すると安心です。
- ボリュームサイズを増やす(オンラインでの拡張が基本)
- 容量プールに余裕が無い場合は、プール側のキャパシティも見直す
- 削除と並行する書き込みが多い場合は、さらに厚めに確保する
手順3:スナップショット運用を「削除作業に合わせて」一時調整する
削除作業が長時間に及ぶ場合、いつも通りの頻度でスナップショットを取り続けると、復元ポイントが増えて安心な一方で、差分管理が複雑になり、容量回復のタイミングが読みづらくなることがあります。運用要件(RPO/RTO)を満たす範囲で、削除期間中だけ次のような調整を検討すると、現場の“混乱”を減らせます。
- 削除の直前に1つスナップショットを取り、そこから先は取得頻度を落とす
- 削除の最中に大量の世代が作られないよう、スケジュールを一時的に間引く
- 削除完了後、通常スケジュールに戻す
ただし、スナップショット頻度を下げるのは復旧力を下げる行為でもあるため、事前に関係者(アプリ/運用/監査)と合意してから実施してください。
手順4:削除は「一括」より「段階」が安全(特に小さなファイルが多い場合)
10TBを一気に消せる環境でも、運用上は2〜5回程度に分割し、各回の後に容量・性能・スナップショット消費を確認するほうが安全です。分割には次のメリットがあります。
- 性能劣化が出た場合に、次の削除を止めて影響範囲を限定できる
- 削除対象の誤りに早く気付ける(範囲ミスの被害を抑える)
- スナップショット世代の進み具合を見ながら計画を調整できる
手順5:プロトコル別の削除のコツ(NFS/Linux・SMB/Windows)
NFS/Linuxの場合は、巨大なディレクトリをrm -rfで一気に消すと、クライアント側が長時間ブロックされることがあります。現場でよく効くのは次の工夫です。
- まずディレクトリをリネームして業務から切り離し、削除は別セッションで進める
- 小さなファイルが多い場合は、ディレクトリ単位・日付単位でバッチ削除する
- 並列削除は効果が出ることもありますが、上げすぎると逆に遅延が増えるため段階的に調整する
SMB/Windowsの場合は、Explorerでの削除は時間がかかりやすいので、管理サーバーから計画的に実行します。
- 削除対象の共有パスを固定し、誤削除を防ぐ(パスの二重確認)
- 大量削除の前に、対象フォルダをリネームしてアプリ参照を止める
- 削除は業務影響の少ない時間帯に行い、途中経過を監視できる体制を取る
手順6:削除中〜削除後は「空き容量」だけで判断しない
削除の直後は、スナップショット参照の影響で容量が戻らないことがあります。そのため、成功可否を「空き容量が増えたか」だけで判定すると誤解が起きます。削除中・削除後の判断は、次の3点セットで行うと安定します。
- 削除対象のデータ量(論理):削除が予定通り進んでいるか(クライアント側のdu/ファイル数など)
- スナップショット消費(物理):古い世代が残っているか、削除で差分が増えていないか
- 性能指標:遅延が跳ねていないか、IOPS/スループットに異常がないか
削除後に空き容量を回復させるための運用ポイント
削除が終わっても、スナップショットの保持期間が残っている間は容量が戻りません。回復を早めたい場合に検討できるのは次の2つです。
- 不要なスナップショットを削除する:復元に使わない世代、依存関係の無い世代に限る
- 保持期間を見直す:一時的に保持日数を短縮し、回復後に元に戻す
ただし、ここで無理にスナップショットを削ると、万一の復旧手段を失います。削除する場合は「他のバックアップ(ANFバックアップ等)」「復元の必要性」「レプリケーションの整合性」を確認し、“消してよい根拠”を作ってから実施してください。
やってはいけない運用(失敗しやすいアンチパターン)
| アンチパターン | なぜ危ないか | 代わりにやること |
|---|---|---|
| 使用率95%のまま一気に削除し、空きが増えるのを待つ | 空きが増えない期間に追加書き込みが入ると満杯になり、業務が先に止まる | 一時拡張でバッファを作り、段階削除+監視で進める |
| 削除中も対象に書き込みが入り続ける状態を放置する | 差分が積み上がり、想定以上にスナップショットが容量を食う | リネーム等で切り離し、対象を“静止”させてから削除する |
| 復旧設計の確認なしにスナップショットを全削除する | 復元ポイントが消えて事故時の被害が拡大する | 必要な世代を定義し、不要分のみ安全に削除する。別バックアップも確認 |
| 複数クライアントから無制限に並列rmを走らせる | メタデータ操作が過剰になり、全体のレイテンシ悪化やタイムアウトを招く | 並列度は段階的に上げ、性能を見ながら調整する |
監視すべき指標(削除前・削除中・削除後)
監視は「容量」だけでは足りません。削除はメタデータ操作が多く、性能に影響が出る場合があります。Azure Monitorや運用監視ツールで、少なくとも次のカテゴリを同時に追うのがおすすめです。
| カテゴリ | 見るべきもの(例) | 削除前の目的 | 削除中の目的 | 削除後の目的 |
|---|---|---|---|---|
| 容量 | ボリューム使用率、空き、容量プール余裕 | 実施可否(余裕の有無)を判断 | 満杯に向かっていないかを早期検知 | スナップショット世代の進行後に回復しているか確認 |
| スナップショット | スナップショット消費量、世代数、作成/削除の成否 | 「空かない期間」がどれくらいか見積もる | 差分が膨らみすぎていないか確認 | 古い世代が消えたタイミングで回復が進むか追跡 |
| 性能 | レイテンシ、IOPS、スループット、クライアント側の体感 | 通常時の基準値を記録 | 遅延が跳ねたら削除ペースを調整 | 基準値に戻ったか、影響が残っていないか確認 |
| ファイル数 | ファイル/ディレクトリ数の増減、inode相当の上限指標 | 削除難易度(小ファイル大量か)を把握 | 削除が進んでいるかを定量で追う | 削除が完了したことの裏取り |
よくある質問
大量削除しても安全ですか?
削除対象が明確で、復旧手段(スナップショットやバックアップ)が設計されており、削除前に余裕(バッファ)を確保できていれば安全に実施できます。逆に、使用率が高いのにバッファを作らず、削除中も書き込みが続き、監視もしない状態がもっとも危険です。安全性は「削除コマンド」ではなく運用設計で決まります。
削除したのに「空き容量が0GBしか増えない」のは失敗ですか?
スナップショットが有効なANFでは、削除直後に空き容量が増えないことは珍しくありません。削除対象がスナップショットに参照されている限り、ブロックは保持されます。まずは、削除対象が本当に消えているか(論理)、スナップショット世代が残っていないか(物理)を切り分けて確認してください。
スナップショットを全部消せば、すぐに空きますか?
参照関係がスナップショットだけであれば、原理的には回復は早まります。ただし、レプリケーションやクローン、バックアップ等が絡むと別の依存が残ることがあります。また、スナップショットを全削除すると復旧手段が消えるため、運用上は「不要な世代だけ」を安全に削除するのが現実的です。
削除すると課金は下がりますか?
ANFは基本的に実使用量ではなくプロビジョニング(割り当て)容量に基づいて課金されます。そのため、データを削除しても、ボリュームサイズや容量プールを縮小しない限り、コストは変わりにくい点に注意してください。削除後に余裕が生まれたら、運用要件を満たす範囲でボリュームサイズ/容量プールの見直しを行うと、コスト最適化につながります。
「最低限これだけはやる」なら?
- 削除対象をリネーム等で切り離し、更新が入らない状態にする
- 容量が95%なら一時拡張を検討し、空きが増えない期間を耐えられる余裕を作る
- 削除は段階的に行い、各回で容量・スナップショット消費・性能を確認する
- スナップショットやバックアップの依存関係を把握し、復旧手段を残す
まとめ:Azure NetApp Files×スナップショット環境の大量削除で失敗しないコツ
- ANFのスナップショットは参照型のため、削除してもすぐに容量が戻らないことがある。
- 60TBで95%使用のような状態では、削除前に監視とバッファ確保を行うのが現実的に安全。
- 影響はTB量よりファイル数(メタデータ操作量)で決まる。小ファイル大量なら分割削除が有効。
- 削除後はスナップショット世代が進むまで待つ。必要なら保持ポリシー見直しや不要スナップショット削除を検討する。
- 削除の成否は「空き容量」だけで判断せず、論理削除・スナップショット消費・性能の3点で確認する。

コメント