Tips) Azure Files でファイルを「変更・移動・削除ができない」時の対処メモ
はじめに
Azure Files 利用時に、ファイルが「使用中」!?
その犯人、たいてい "開きっぱなしのハンドル" です。
この記事では Azure Files で発生しがちな「削除・移動・リネームできない」を、Get-AzStorageFileHandle / Close-AzStorageFileHandle を使ってサクッと解決。
数分でチェック→必要なら強制クローズまで、ご紹介。
Azure Portal 上にこんな画面が表示されたりします。
メッセージ:The specified resource is marked for deletion by an SMB client.
症状
Azure Files 上のファイル/ディレクトリで、以下のような操作が失敗することがあります。
-変更(上書き・追記など)
-移動
-名前の変更
-削除
多くの場合、別クライアントやサービスがファイルを開いたままで、ハンドルが閉じられていないことが原因です。
対応の全体像
-Microsoft公式資料の「Open-handles」セクションを確認
-影響や時間帯を考慮したうえで 該当ハンドルを強制的に閉じる
-再度ハンドルを確認し、操作が可能になったか検証
前提
- 実行環境: Azure PowerShell または Azure Cloud Shell
- 例示は Azure PowerShell ベースで記載
手順
-
Azure PowerShell モジュールをインストール
ガイドに沿って最新の Azure PowerShell を導入します。
https://learn.microsoft.com/ja-jp/powershell/azure/install-azure-powershell?view=azps-14.3.0 -
Azure にサインイン
認証方法は環境に合わせて選択。
https://learn.microsoft.com/ja-jp/powershell/azure/authenticate-azureps?view=azps-14.3.0 -
目的のサブスクリプションを選択します。
-
ストレージ アカウント コンテキストを作成します。
Connect-AzAccount
Set-AzContext -Subscription "xxxx-xxxx-xxxx-xxxx"
$account = Get-AzStorageAccount -ResourceGroupName <myRG> -Name <mystoraccount>
$account.Context
- 開いているハンドルを一覧表示します。
Get-AzStorageFileHandle コマンドレットを使用します。
Get-AzStorageFileHandle -ShareName "mysharename" -Recursive -Context $account.Context | Sort-Object ClientIP,OpenTime
再掲)https://learn.microsoft.com/en-us/powershell/module/az.storage/Get-AzStorageFileHandle
実行結果サンプル:
- 開いたハンドルを閉じます。
Close-AzStorageFileHandle コマンドレットを使用します。
例 1: 現在のストレージ アカウントのすべてのファイル共有を一覧表示し、ファイル共有のすべてのファイル ハンドルを再帰的に閉じます。
Close-AzStorageFileHandle -ShareName "mysharename" -CloseAll -Recursive -Context $account.context
例 2: ファイル上のすべてのファイルハンドルを閉じる
Close-AzStorageFileHandle -ShareName "mysharename" -Path 'dir1/dir2/test.txt' -CloseAll -Context $account.Context
- ハンドルを再確認します。
Get-AzStorageFileHandle コマンドレットを使用します。
例: ファイル共有上のすべてのファイル ハンドルを再帰的に一覧表示します。
Get-AzStorageFileHandle -ShareName "mysharename" -Recursive -Context $account.Context | Sort-Object ClientIP,OpenTime
ハンドルが消えていたら、対処完了です。
問題となっていたAzure Files 上のファイルの操作を試してみてください。
最後に
根本原因としては、多くの場合、別クライアント、サービス(プロセス) がファイルを開いたままで、ハンドルが閉じられていないことが原因です。
頻繁に発生する場合は、ファイルをオープンしている側が閉じていないと考えられるため、確認しましょう。
稀にあるのは、Azure Functions のコード内で開きっぱなしになっていることなどもあり、その他にも、誰が開いたままなのかわからないからとりあえずハンドルを閉じて対処しよう、というときにも本手順は活用できます。
(本記事は主にGPT-5によって生成しましたが、中身は人間(ワタシ)が確認しています。)
さて、ワタシというのもAIだったりして(ナイ
Discussion