새 인덱스 구성 요소를 만들고 복제 토폴로지에 추가 하시겠습니까?
-
10-12-2019 - |
문제
480K 항목이 들어있는 파일 서버를 크롤링하는 검색 서비스 응용 프로그램에 있습니다. SharePoint Server에는 20GB의 여유 공간이있는 시스템 디스크 만 있으며 다른 서버가 없습니다. 파일 서버를 크롤링하면 기본 인덱스 폴더가 C-드라이브에 있으므로 시스템 디스크가 공간이 부족했습니다. 우리는 크롤링을 중단하고 인덱스 재설정을 중단하고 검색 서비스 응용 프로그램을 다시 실행했지만 인덱스 구성 요소가 끊어졌습니다 (검색 관리 페이지 및 PowerShell에서 확인).
우리는 파일 서버를 크롤링하는 데 걸리는 새 디스크를 주문했지만 아직 사용할 수 없습니다. 우리는 작은 SharePoint 콘텐츠에서 전체 크롤링을 시도하고 있지만 크롤링은 결코 끝나지 않습니다. 아마도 인덱스 구성 요소를 사용할 수 없기 때문에
두 가지 옵션이 있습니다 :
- 현재 검색 서비스 응용 프로그램을 제거하고 처음부터 다시 시작하여 다시 재 작성하십시오.
- 새 인덱스 구성 요소를 만듭니다. 활성 토폴로지를 복제하고 클론에 새 인덱스 구성 요소를 추가하고 클론 토폴로지를 활성 사용자에게 설정합니다.
그러나 i hav는 새로운 인덱스 구성 요소를 만드는 방법을 찾지 못했습니다. 가능합니까?
해결책
As it turned out, this was not an easy task.
Clone Search Topology
At fisrt I tried clone the search topology, replace the failing Index Component, and activate the clone topology - like this following the technet guide Manage the index component in SharePoint Server 2013:
if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null)
{
Add-PSSnapin "Microsoft.SharePoint.PowerShell"
}
$hostA = Get-SPEnterpriseSearchServiceInstance -Identity "SharePointServerName"
# If the Search Service Instance isn't started, run the following command
#Start-SPEnterpriseSearchServiceInstance $hostA
# Wait for ONLINE status, check by using this
#Get-SPEnterpriseSearchServiceInstance $hostA
# When ONLINE, make a clone
$ssa = Get-SPEnterpriseSearchServiceApplication
$active = Get-SPEnterpriseSearchTopology -SearchApplication $ssa -Active
$clone = New-SPEnterpriseSearchTopology -SearchApplication $ssa -Clone -SearchTopology $active
# Create a new Index Partition (0) - outputs IndexComponent2
New-SPEnterpriseSearchIndexComponent -SearchTopology $clone -SearchServiceInstance $hostA -IndexPartition 0
# Verify that the search service application is running. False=Running, True=Paused
$ssa.IsPaused() –ne 0
# Set the clone as the new topology (takes a while). If Index component is Degraded, this will run with no end
$ssa.PauseForIndexRepartitioning()
Set-SPEnterpriseSearchTopology -Identity $clone
However, having an degraded index component made this action impossible. Reference: SharePoint 2013 Unable to change topology when Generation controller is not active
Create a new Topology
Next step, make a new, fresh topology (using this technet guide: Change the default search topology in SharePoint Server 2013).
if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null)
{
Add-PSSnapin "Microsoft.SharePoint.PowerShell"
}
$hostA = Get-SPEnterpriseSearchServiceInstance -Identity "SharePointServerName"
# If the Search Service Instance isn't started, run the following command
#Start-SPEnterpriseSearchServiceInstance $hostA
# Wait for ONLINE status, check by using this
#Get-SPEnterpriseSearchServiceInstance $hostA
# When ONLINE, make a new topology
$ssa = Get-SPEnterpriseSearchServiceApplication
$newTopology = New-SPEnterpriseSearchTopology -SearchApplication $ssa
# Create new components (one server only)
New-SPEnterpriseSearchAdminComponent -SearchTopology $newTopology -SearchServiceInstance $hostA
New-SPEnterpriseSearchCrawlComponent -SearchTopology $newTopology -SearchServiceInstance $hostA
New-SPEnterpriseSearchContentProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostA
New-SPEnterpriseSearchAnalyticsProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostA
New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostA
# Set the Admin Component without index
set-SPEnterpriseSearchAdministrationComponent -SearchApplication $ssa -SearchServiceInstance $hostA
# Remove temp Index files, and recreate the folder
$IndexLocation = "C:\Index" # Change to another disk than system disk
Remove-Item -Recurse -Force -LiteralPath $IndexLocation -ErrorAction SilentlyContinue
mkdir -Path $IndexLocation -Force
# Create new index component with a frech index folder
New-SPEnterpriseSearchIndexComponent -SearchTopology $newTopology -SearchServiceInstance $hostA -RootDirectory $IndexLocation -IndexPartition 0
# Activate the topology (either one of the following works)
$newTopology.Activate()
#Set-SPEnterpriseSearchTopology -Identity $newTopology
Up on activation, I got a conflict and failed again.
Exception calling "Activate" with "0" argument(s): "Topology activation failed. An update conflict has occurred, and you must re-try this action. The object Repartition
Info Name=RepartitionInfo was updated by DOMAIN\SPFarm, in the OWSTIMER (11712) process, on machine SharePointServerName. View the tracing log for more information about t
he conflict."
At line:1 char:1
+ $newTopology.Activate()
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : SearchTopologyActivationException
Delete current failing Search Service Application
This should be easy, just use Central Administration > Manage Service Application, select the Search Service Application and click delete-button in the ribbon. Failed, again.
In order to make this to work, you need to stop the sptimerv4...
>net stop sptimerv4
... and delete cache files located in \ProgramData\Microsoft\SharePoint\Config\{Guids Folders}
where cache.ini is located. CAUTION: Don't delete the cache.ini-file. Just edit the file and use another six digit random number. When you're done, start the service again. Reference: An update conflict has occurred, and you must re-try this action.
>net start sptimerv4
And finally the ribbon delete-button works. You're failing Search Service Application is gone. Now (finally) you can create a new Search Service Application, with a fresh topology and a working index component.
다른 팁
I had the exact same issue as you described where the index component was broken after an Index Reset.
I was ready to roll my sleeves up and work through your detailed steps (thank you by the way) when I resolved it by using the Pause/Resume option.
Why did I try Pause/Resume? Well after I did an IISRESET I found that the Content Sources were stuck on "Paused". Thus I toggled the Pause/Resume option and miraculously it fixed the index component.
EDIT: This was a temporary fix. In the end I had to rebuild the Search Service Application from scratch.
Try this through Powershell:
$hostA = Get-SPEnterpriseSearchServiceInstance -Identity "myserver1"
$ssa = Get-SPEnterpriseSearchServiceApplication
$topology = Get-SPEnterpriseSearchTopology -SearchApplication $ssa
New-SPEnterpriseSearchIndexComponent -SearchTopology $topology -SearchServiceInstance $hostA -IndexPartition 1
Here is more about managed Index Components: http://technet.microsoft.com/en-us/library/jj862355.aspx