Windows Server 2008 R2 + Citrix XenApp 6.5の環境を、VMware ESXiの仮想基盤上に構築しています。また、ユーザープロファイルは、グループポリシーを使用して移動ユーザープロファイルを実装しています。
この様な構成の仮想デスクトップ環境で、C:\Usersフォルダー配下に、”.000″や”.001″というプロファイルフォルダーがどんどん蓄積する問題に遭遇しました。未来の私が同じ問題に直面した時に、すぐ解決できるようにこの記事を残しておきます。
事象
移動ユーザープロファイルを構成してシステムにおいて、ユーザーがログオフするごとに、C:\Usersフォルダーの下に、”%username%.%domain%.000″や”%username%.%domain%.001″というネーミングルールのフォルダが増殖し続けます。
事象が起こる仕組み
ユーザープロファイルはデフォルトの場合、C:\Usersに生成されます。
移動ユーザープロファイルでは、ユーザープロファイルをCドライブ以外(ファイルサーバーなど)に保持する機能ですが、移動ユーザープロファイルを構成した場合でも、C:\Users にユーザープロファイルフォルダーが生成されます。また、初めてログオンするユーザーはユーザープロファイルがないため、デフォルトユーザープロファイルから生成されます。
移動ユーザープロファイル構成のシステムでは、ユーザープロファイルの保存場所(ファイルサーバーなど)から、C:\Users 配下にプロファイルがコピーされます。そのため、C:\Usersに、ユーザープロファイルのフォルダーが生成されるわけです。
この様にC:\Users に生成されたユーザープロファイルのフォルダーを、ユーザーがシステムからログオフする際に、削除することが可能です。移動ユーザープロファイルの場合、C:\Usersにプロファイルを保持し続ける必要がないため、ディスク使用量の削減のため、ログオフ後に削除する様に設定することがあります。この構成はグループポリシーを使って設定します。
ユーザーがログオフした際に、システムがユーザープロファイルフォルダー削除しようとします。しかし何らかの問題によりプロファイルフォルダーが残留してしまい、次に同じユーザーがログオンする際に、”%username%.%domain%.000″を生成します。
この様に同じユーザーが同じコンピューターに、ログオン・ログオフを繰り返すことで、”%username%.%domain%.xxx”というネーミングルールのフォルダが増殖します。
Windows7やWindows Server 2008 R2はHotfixが用意されている
そんなトラブルを解決するHotfix「古いユーザー プロファイル フォルダーは、Windows 7 または Windows Server 2008 R2 で完全に削除されません。」を発見しました。このナレッジには以下の記載があります。
ユーザープロファイルサービス(Profsvc.dll)とWindows Searchサービス(SearchIndexer.exe)の間の競合状態が原因で発生します
Stale user profile folders are not deleted completely in Windows 7 or in Windows Server 2008 R2
早速Hotfixを適用してみましたが、問題は改善しませんでした。
Hotfixをヒントにフォルダーに残存するゴミを調べる
ユーザーログオフ時にユーザープロファイル内にある「何か」が正しく削除されず、残存してしまうことが問題の原因と考えられます。では何が残ってるのかを確かめるため、
“%username%.%domain%.000″の中を見てみたところ、”Application Data\VMware\hgfs.dat” というファイルが残存していることを確認しました。
VMwareToolsの設定が原因だった
”Application Data\VMware\hgfs.dat”についてググってみたところ、VMwaretoolsが生成するファイルであることが分かりました。「Windows guest cannot update hgfs.dat or vmhgs.dat」(2021現在リンク先が消失していたのでリンクを解除しました)
また、Citrixのナレッジでも、この問題に関する記載を発見しました。「Profile Manager does not Delete the Local Profile when using VMWare Hosts」
対策方法
レジストリを修正してhgfs.datを生成しない様にすることで対策が可能です。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order
“ProviderOrder”キーの値に「hgfs」「vmhgs」「vmhgfs」などの記述があれば削除します。
たとえば、キーにLanmanWorkstation、hgfsなどの値が含まれている場合は、値をLanmanWorkstationに変更します。
https://support.citrix.com/article/CTX133070
レジストリ設定後にOSを再起動すれば設定が反映します。
再発と恒久対策
上記の対策を実施しても、しばらくすると問題が再発することが分かりました。上記レジストリから「hgfs」「vmhgs」「vmhgfs」を削除しても、VMwareToolsが適時エントリを追加してしまうようです。
VMwate Toolsのインストール時にフルインストールした場合に追加される「ファイル共有(ホスト-ゲスト間のファイル共有)」機能が原因です。XenApp環境では基本的にこの機能は使用することが無いと思いますので、ファイル共有機能をアンインストールすれば解決します。今回はVMware Toolsをアンインストールし、ファイル共有機能を削除した状態で再インストールしいて回避しました。
コメント