筆者在安裝Windows 2008系統(tǒng)群集過(guò)程中,創(chuàng)建AD域控制時(shí)最后出錯(cuò),無(wú)法配置DNS。經(jīng)排查,系統(tǒng)硬性規(guī)定了DNS線程的最大數(shù)量為120個(gè),但DNS對(duì)CPU的核心數(shù)并沒(méi)有做限制,因此創(chuàng)建超過(guò)120個(gè)線程就會(huì)報(bào)錯(cuò)。如何解決這個(gè)問(wèn)題呢?
近期,筆者在安裝Windows 2008系統(tǒng)群集,安裝環(huán)境為兩臺(tái)浪潮英信NF8560M2+存儲(chǔ)+2臺(tái)光纖交換機(jī)。
安裝步驟大體為:
1.安裝操作系統(tǒng)。
2.安裝系統(tǒng)驅(qū)動(dòng)。
3.安裝系統(tǒng)補(bǔ)丁。
4.存儲(chǔ)掛載和存儲(chǔ)區(qū)域劃分(仲裁+共享)。
5.安裝存儲(chǔ)自帶的客戶端程序+Windows自帶的多路徑(I/O)功能(服務(wù)器管理→功能→新增功能)。
6.聯(lián)機(jī)存儲(chǔ)硬盤,添加盤符(仲裁和共享盤符通常為X和Y,可以自定義)。
7.群集配置(具體配置文檔根據(jù)要安裝的數(shù)據(jù)庫(kù)可以從網(wǎng)上找到,重點(diǎn)是心跳網(wǎng)卡的設(shè)置)。
故障現(xiàn)象
在安裝過(guò)程中出現(xiàn)這樣一個(gè)問(wèn)題:在創(chuàng)建AD域控制到最后的時(shí)候報(bào)錯(cuò),提示無(wú)法配置DNS,RPC服務(wù)器不可用。點(diǎn)擊“確定”和“完成”后,DNS服務(wù)器可以創(chuàng)建,但是DNS服務(wù)會(huì)自動(dòng)關(guān)閉。查看事件日志,顯示DNS無(wú)法創(chuàng)建線程。
故障分析
在當(dāng)前Windows 2008 R2 x64以及Windows 2008或Windows 2008 R2的DNS服務(wù)代碼中,硬性規(guī)定了DNS線程的最大數(shù)量為120個(gè)。但是,DNS對(duì)CPU的核心數(shù)并沒(méi)有作任何的限制,因此會(huì)創(chuàng)建超過(guò)120個(gè)線程。
具體來(lái)說(shuō),DNS服務(wù)有2個(gè)功能的線程創(chuàng)建是根據(jù)CPU數(shù)量來(lái)決定的,DNS Dynamic update功能以及UDP I/O AND dispatch程序。在64位的機(jī)器上,它們會(huì)創(chuàng)建64個(gè)DNS Dynamic的線程和64個(gè)UDP處理線程。因此,在64位CPU的平臺(tái)上,線程數(shù)量就會(huì)大大超過(guò)限制的數(shù)量,就會(huì)報(bào)ERROR_SERVICE_NO_THEAD的錯(cuò)誤。在32位的平臺(tái)上,DNS服務(wù)就工作正常,因?yàn)樗疃鄤?chuàng)建86左右的線程。
筆者單位所用的服務(wù)器配置4路8核CPU,默認(rèn)開(kāi)啟了超線程技術(shù),實(shí)際32位可以模擬到64位(任務(wù)管理器→性能一欄可以查看)。
解決方法
目前確認(rèn)這個(gè)是Windows DNS服務(wù)的一個(gè)Bug,但是這個(gè)問(wèn)題可能僅會(huì)在Windows 2008中被修復(fù)。因此,當(dāng)下我們惟一的選擇是使用少于48位CPU的平臺(tái)來(lái)提供DNS服務(wù)(我們可以通過(guò)減少AD集成的DNS區(qū)域18個(gè)來(lái)符合線程的限制) 。當(dāng)然,如果我們僅用32位CPU,那就更沒(méi)有問(wèn)題了。具體解決步驟如下:
1.點(diǎn)擊“開(kāi)始”→“運(yùn)行”,鍵入“msconfig”,彈出“系統(tǒng)配置”窗口,在“啟動(dòng)”選項(xiàng)里找到“高級(jí)”選項(xiàng)卡,更改CPU個(gè)數(shù),將其改為32。
2.開(kāi)機(jī)后進(jìn)“BIOS→Advanced→ProcessClock→intel HT technology”,把這里默認(rèn)的Enable改為Disabled。
修改完成后,在“任務(wù)管理器→性能”一欄中,可以看到CPU數(shù)量調(diào)整為32個(gè),問(wèn)題由此解決。