CR課の前田です。今回は案件中に遭遇した問題の原因と解決策を記載していきます。
前提条件
後述の結論に記載していることは実際の環境によっては原因が異なったり、解決のための数字が異なることも考えられますのでご留意ください。
遭遇した事象について
お客様のEC2(Windows 2012 R2)に弊社のオペレーションユーザで初回サインインしようとしたところ、下記のメッセージが表示されてサインインに失敗してしまいました。
User Profile Serviceサービスによるサインインの処理に失敗しました。ユーザープロファイルを読み込みません。
結論
原因
新規ユーザが初回ログインする際に作成されるユーザ用フォルダのひな形となるフォルダ「C:\Users\Default」のサイズが大きく、ルートボリューム容量が不足するため。
解決策
- 下記どちらかを実施して、ルートボリューム残量を少なくとも「Defaultフォルダサイズの2倍に1GBを加えたサイズ」分確保する。
- EBSボリュームのサイズを拡張する。
- 「C:\Users\Default」下の余分なファイルを削除し、サイズを縮小する。
初回サインイン時の挙動について説明
- Windows新規ユーザが初回サインインする際、User Profile Serviceは「C:\Users\Default」をコピーして新規ユーザ用のフォルダを作成します。
- 「C:\Users\Default」のサイズが大きいと、新規ユーザフォルダ作成時にルートボリューム容量が不足してフォルダ作成に失敗、結果的にサインインも出来ない…ということになってしまいます。
- ルートボリューム残量はどれくらい確保すれば良いのかについては後述の検証結果を踏まえますと、Defaultフォルダサイズの2倍に1GBを加えたサイズを確保しておくと安全だと言えそうです。
検証
事象を発生させ、解決するところまで実際にやってみます。
※解決方法については、Defaultフォルダのサイズを削減する方法を実施します。EBSサイズ拡張は実施しません。
準備
最新OSのWindows Server 2022 Datacenterを指定して作成します。
フリートマネージャーを使用し、Administratorでサインインします。
テスト用ユーザ「testuser」を作成します。
この時点では、C:\Users下には「testuser」用フォルダは存在しません。
「C:\Users\Default」のサイズを大きくします。事象発生時に近づけつつも切りの良い数字にしておくため、ルートボリューム残量を8.5GB、Defaultフォルダを5GBに設定しておきます。
テスト用ユーザで初回サインイン
テスト用ユーザで初回サインインします。
メッセージが出て失敗しました。
イベントビューアーを開き、下記操作を実行して事象発生時のログを見てみます。
Windowsログ > Application > 現在のログをフィルター > イベントソースにて「User Profile Service」を指定 > OK
「ディスクに十分な空き領域がありません」と表示されています。
Defaultフォルダを縮小する。
Defaultフォルダのサイズをルートボリューム残量(8.5GB)の1/2(4.25GB)になるまで縮小しました。
再びテストユーザでサインインしてみます。再びエラーになってしまいました。
Defaultフォルダのサイズを4GBまで縮小してみます。
まだ失敗しますね…
3.75GBならどうでしょう
成功しました!
「testuser」フォルダが作成されています。
testuserフォルダはDefaultフォルダからは0.8GB分増加しており、比較してみたところtestuserフォルダにのみ作成されているファイルが大量にありました。
ルートボリューム残量は4.65GBとなっていました。残量8.5GBから3.83GBを消費したから正確には4.67GBなのではないかと思いますが、
testuserフォルダ外で0.2GB分新規作成されたファイルがあるのかもしれません。
以上のように、ルートボリューム残量8.5GBの時にDefaultフォルダを3.75GBまで縮小すればサインイン成功したことから、
ルートボリューム残量は少なくとも「Defaultフォルダサイズの2倍に1GBを加えたサイズ」分確保しておくと安全と言えそうです。
感想
なかなかレアケースな事象かもしれませんが、どなたかの一助になれば幸いです。