本日、なにやら赤いエラーがイベントビュ~ワ~にあるのを発見・・・
'CentOS63 - 16GB VHD': VMMS Account does not have sufficient privilege to open attachment 'C:\Users\Public\Documents\Hyper-V\Virtual hard disks\HyperV_LinuxIntegrationServiceV3.4\LinuxICv34.iso'. Error: 'General access denied error' (0x80070005). (Virtual machine ID 89BBF1DB-485A-4B88-969B-D44D5ED423F9)
HyperV_LinuxIntegrationServiceV3.4\LinuxICv34.iso というのはマイクロソフトが提供している統合サービス用のISOイメージ。
仮想マシンのCDROMにいつも入っているので起動するときにアクセスしてアクセスできずにエラーになっているんだと思われる。
ファイルアクセス権限がない?
とりあえず
C:\Users\Public\Documents\Hyper-V\Virtual hard disks\HyperV_LinuxIntegrationServiceV3.4\
フォルダのプロパティをあけてみた。
ふむふむ。 "Virtual Machines" なるグループだかユーザーだかに許可がなにもない。
グ~グルさんにお伺いを立てたところ
この "Virtual Machines" グループというのはすべての仮想マシンを含んでいる特別なグループで Hyper-V によって管理されているらしいことがわかった。
( Hyper-V File Storage and Permissions :
A special group called Virtual Machines is also created to contain all the virtual machines Service SIDS registered on the Hyper-V server. )
というわけで、Security タブから Virtual Machines グループに Read 許可を与えることにした。
これでいいのかはよくわからない。
次に、ディレクトリ配下の問題の ISO ファイルのプロパティをあけてみた。
"Virtual Machines" グループがディレクトリから継承されて読み込み操作に許可が設定されている。
ところで、その下のやたら長い数字コードはなんだ?
いろいろ調べたところ、Hyper-V では仮想マシン毎にユーザIDのようなものが割り当てられてるらしく、各VM毎にアクセス管理ができるらしい。これを Virtual machine ID (仮想マシンID) というらしい。
つまり、VM1がアクセスできるファイルとVM2がアクセスできるファイルを区別できるようになっているわけ。
例えば、仮想VHDのプロパティを見てみると、そのVMの仮想マシンIDが入ってたりする。
というわけで、とりあえず特定の仮想マシンIDはプロパティから削除
ところで、削除の逆に追加するときはどうしたらいいのか?
追加ボタンで操作してもそんなグループもIDも見つからない。
どうやらコマンドライン(Administrator)から操作できるらしい。
特定の仮想マシンへあるファイルのアクセス許可をあたえるには、
icacls "E:\VMs\VMName\7E77503A-A26B-4BB5-9846-396F49A30141.xml" /grant "NT VIRTUAL MACHINE\7E77503A-A26B-4BB5-9846-396F49A30141":R
"Virtual Machines" グループへあるファイルのアクセス許可を与えるには
icacls D:\VHDs\Vol2 /grant "NT VIRTUAL MACHINE\Virtual Machines":R
となるみたい。 最後の :R は Read only を意味している。
ちなみに、個々の仮想マシンの仮想マシンIDをどうやって知るのかその方法はわからないw
参考にした記事:
Hyper-V virtual machines may not start, and you receive an error: “‘General access denied error’ (0x80070005)”
Snapshot - General access denied error (0x80070005)
No comments:
Post a Comment