VMFSデータストアをアンマウント・削除できない「リソースが使用中」エラーの解決方法
古いHP MSA 2000ストレージから新しいDell EMC Unityストレージシステムへ仮想マシンのファイルを移行する作業中(いずれもSAN経由でESXiホストに接続)、VMware vSphereで空になったVMFSデータストアを削除しようとしたところ、問題に遭遇しました。ESXiホストからVMFSデータストアをアンマウントしようとすると、「データストアはまだ使用中/ビジー状態である」というエラーメッセージが表示されます。
Unmount VMFS volume vmesxi2.woshub.com. The resource 'Datastore Name: MSA2000_LUN1 VMFS uuid: xxxxx--xxxxx-x-xxxxx-xxxx' is in use. Cannot unmount volume Datastore Name VMFS "file system is busy".
VMware公式ドキュメントに基づく事前チェックリスト
エラー内容から、ESXiホストまたはvSphereがまだ何らかのデータを書き込むためにストレージを使用しているため、VMFSデータストアを削除できないことがわかります。VMwareのドキュメントによれば、vSphereからLUNを削除する際には以下の点を確認する必要があります。
- VMFSデータストア上に仮想マシン、テンプレート、スナップショット、ISOイメージファイルが存在しないこと(VMを別のVMFSデータストアへ移行するか、電源をオフにして削除するか、vSphereから登録解除する必要があります)
- データストアに対してStorage I/O Controlが無効になっていること
- データストアがデータストアクラスタの一部になっていないこと
- LUNがRDMデバイスとして使用されていないこと
- VMFSデータストアが、vSphere HAのデータ、Storage DRS、ログ、ダンプ(/vmkdump/)、vSANデータ(/vsantraced/)、テクニカルサポートデータ(スクラッチパーティション)、仮想マシンのスワップファイルの保存先として使用されていないこと
仮想マシンはすでにStorage vMotionを使って新しいデータストアへ移動済みです。それでは、VMFSデータストアに他にどのようなファイルやフォルダが残っているのか確認してみましょう。
ご覧のとおり、logdir(ログ用ディレクトリ)、sdd.sf(SCSIデバイスの記述情報を格納するディレクトリ)、dbsData(分散仮想スイッチのデータ用ディレクトリ)、そしてnaa…(VMFSメタデータ)の各フォルダが残っています。
原因:ESXiホストのログ出力先(Scratch Location)
今回のケースでは、ESXiホストのログがまだVMFSデータストア上(Scratch Location)に出力されていました。まず、ESXiホストの設定でログの出力先としてそのデータストアが指定されていないか確認してください。Manage → Settings → Advanced System Settings の順に開き、ScratchConfig.CurrentScratchLocation と Syslog.global.logDir を探します。ここに該当のVMFSデータストアが指定されている場合は、ログディレクトリのパスを別の場所へ変更します。
その後、ESXiホストを再起動するか、ホスト上のSyslog Serverサービスを再起動します。
再度アンマウントとLUNデタッチを試みる
改めてESXiホストからデータストアをアンマウントしてみます。Manage → Storage → Storage Device を開き、一覧から対象のLUNを見つけて選択し、「Detaches the selected device from the host(選択したデバイスをホストからデタッチ)」をクリックします。
しかし、私の環境では再びエラーが発生しました。Detach SCSI LUN The resource is in use.
かなりの時間をかけてこのデータストアを使用しているプロセスを特定しようとしましたが、最終的には、VMFSデータストアのパーティションテーブルを削除してしまうのが最も簡単な方法だと判断しました(もちろん、対象のデータストアを誤って削除しないよう、細心の注意を払って作業してください)。
SSH経由でVMFSパーティションを削除する手順
- SSH接続:VMFSストアがマウントされている任意のESXiホストへSSHで接続します。
- デバイス名の確認:vSphereインターフェイスでデータストアのIDをコピーし、ESXiホスト上でどのデバイス・パスが対応するかを確認します。
esxcfg-scsidevs -c | grep naa.6001438005df0dee0000700004be0000naa.6001438005df0dee0000700004be0000 Direct-Access /vmfs/devices/disks/naa.6001438005df0dee0000700004be0000 512000MB NMP HP Fibre Channel Disk (naa.6001438005df0dee0000700004be0000)
esxcfg-scsidevs -m | grep naa.6001438005df0dee0000700004be0000naa.6001438005df0dee0000700004be0000:1 /vmfs/devices/disks/naa.6001438005df0dee0000700004be0000:1 570e5298-08f4c74e-ca3a-b4b52f5e2b38 0 MSA2000_LUN1
- 使用容量の確認:VMFSデータストア上でどれだけ容量が使用されているか確認します(ほぼ空のはずです)。
df -h | grep MSA2000_LUN1VMFS-5 499.8G 1.4G 498.3G 0% /vmfs/volumes/MSA2000_LUN1

- これで、データストア名とストアIDが削除したいLUNと一致していることを確認できました。
- パーティションテーブルの確認:次に、データストアのパーティションテーブル情報を取得します。
partedUtil getptbl /vmfs/devices/disks/naa.6001438005df0dee0000700004be0000gpt 65270 255 63 1048576000 1 2048 1048575966 AA31E02A400F11DB9590000C2911D1B8 vmfs 0
- この例では、LUNにはVMFSファイルシステムのパーティションが1つだけ存在しています。
- パーティションの削除:このディスク(LUN)からID 1 のVMFSパーティションを削除します。十分に注意してください!!
partedUtil delete /vmfs/devices/disks/naa.6001438005df0dee0000700004be0000 1
データストアのアンマウント・デタッチ・削除
パーティションを削除すると、vSphereでLUNをアンマウントできるようになります。「Unmount Datastore」を実行しても、「datastore is in use(データストアは使用中)」というエラーは二度と表示されません。
データストアをアンマウントするESXiホストを選択します。
あるいは、ESXiホストに接続されたストレージデバイスの一覧から「Detach」を実行することもできます。実行後、接続状態が「Detached」に変わります。
その後、VMFSストアを削除(Delete Datastore)すると、vSphereからも完全に消えます。
-
「要求されたリソースは使用中です」エラーの対処法
Windows OSでプログラムのインストールやアンインストールを行う際、思った以上に手間取ることがあります。通常の手順は比較的シンプルです。設定アプリを開くか、コントロールパネルの「プログラムと機能」にアクセスすれば、アンインストールしたいプログラムやアプリケーションを簡単に操作できます。しかし、アンインストールウィザードが正常に動作しない場合や、そもそもアンインストール機能が用意されていない場合には、さまざまな問題が発生することがあります。また、一部の悪意あるアプリケーションは特定のプログラムのアンインストールを妨げるため、その場合はできるだけ早く除去する必要があります。 「要求されたリソ
-
Redis HDELコマンド徹底解説 – ハッシュからフィールドを削除する方法
このチュートリアルでは、Redisに保存されたハッシュ値から1つ以上のフィールドを削除する方法を解説します。削除にはredis-cliでHDELコマンドを使用します。 HDELコマンドは、キーに格納されているハッシュ値から指定したフィールドを1つ以上削除します。ハッシュ内に存在しないフィールドが指定された場合、そのフィールドは単純に無視されます。 キーが存在しない場合は空のハッシュとして扱われ、戻り値として0が返されます。一方、キーは存在するものの、その値がハッシュ型ではない場合はエラーが返されます。 構文 redis host:port> HDEL <keyname> &l