Боремося з ростом файлу Windows.edb служби пошуку Windows

файл Windows.edb є індексну базу даних служби пошуку Windows (Windows Search), яка забезпечує користувачам швидкий пошук даних на файлової системи за рахунок індексування файлів, листів в pst файлах і іншого контенту. Природно, чим більше файлів в системі, тим більший розмір може займати файл Windows.edb. У деяких випадках він може виростати до десятків і навіть сотень Гб, займаючи весь вільний простір на системному диску.

Даний файл є прихованим і за замовчуванням зберігається в каталозі C: \ ProgramData \ Microsoft \ Search \ Data \ Applications \ Windows \.

Примітка. Цей файл є в усіх сучасних клієнтських і серверних ОС MSFT: від Windows 7 / Vista / Server 2008 до Windows 10 / Server 2016.

Наприклад, в моєму випадку розмір файлу Windows.edb становить понад 15,5 Гб (а це майже 15% на моєму 100 Гб SSD диску)

Є кілька способів управління ростом розміру файлу Windows.edb

зміст:

  • Перебудова індексу Windows Search
  • Дефрагментація Windows.edb за допомогою Esentutl
  • Видалення і пересозданіе файлу Windows.edb
  • Перенесення файлу Windows.edb на інший диск
  • Виправлення для запобігання надмірного зростання файлу Windows.edb в Windows 8 / Windows Server 2012

Перебудова індексу Windows Search

Самий "правильний", але не найефективніший спосіб зменшити розмір файлу Windows.edb - запустити процес переиндексации даних в системі. Для цього відкрийте Панель Управління -> Indexing Options -> Advanced -> Rebuild (Для відкриття цього діалогу досить виконати команду rundll32.exe shell32.dll, Control_RunDLL srchadmin.dll).

Через деякий час (як правило досить тривалий), система закінчить переіндексацію даних і розмір edb файлу трохи зменшиться.

Дефрагментація Windows.edb за допомогою Esentutl

Так як індексний файл служби пошуку Windows являє собою базу в форматі EDB, можна виконати її дефрагментацію за допомогою стандартної утилітою для обслуговування таких баз esentutl.exe - Extensible Storage Engine Utilities (повинна бути добре знайома адміністраторам Exchange). Дефрагментація бази виконується в офлайн режимі (база не повинна використовуватися), тому спочатку доведеться зупинити служби пошуку. Всі ці операції можна об'єднати в один скрипт:

sc config wsearch start = disabled
sc stop wsearch
esentutl.exe / d% AllUsersProfile% \ Microsoft \ Search \ Data \ Applications \ Windows \ Windows.edb
sc config wsearch start = delayed-auto
sc start wsearch

Порада. Для виконання дефрагментації на диску повинно бути достатньо вільного місця, тому що буде створена копія edb файлу.

Утиліта esentutl в процесі роботи відображає прогрес виконання дефрагментації на екрані.

Примітка. Якщо при виконанні команди esentutl з'являється помилка: Operation terminated with error -1213 (JET_errPageSizeMismatch, The database page size does not match the engine) after 10.125 seconds, це означає що ваша система 64 бітна і для виполняненія дефрагментації потрібно використовувати x32 версію esentutl. Тобто третя команда буде виглядати так:
"C: \ Windows \ SysWOW64 \ esentutl.exe" / d% AllUsersProfile% \ Microsoft \ Search \ Data \ Applications \ Windows \ Windows.edb

У моєму випадку розмір edb файлу після дефрагментації зменшився на 30%.

Видалення і пересозданіе файлу Windows.edb

Якщо місця на диску критично мало, можна безпечно видалити файл Windows.edb. Для цього, зупиніть службу Windows Search і видаліть файл.

net stop "Windows Search"
del% PROGRAMDATA% \ Microsoft \ Search \ Data \ Applications \ Windows \ Windows.edb
net start "Windows Search"

Після перезапуску, служба Windows Search почне процес переиндексации системи і пересоздаст файл Windows.edb (в процесі повної переиндексации продуктивність системи може знизиться).

Перенесення файлу Windows.edb на інший диск

У деяких випадках, коли розмір файлу постійно збільшується Windows.edb, має сенс перенести індексну базу пошуку Windows на інший том. Тим самим екстремальний зростання бази не призведе до зупинки системи при вичерпанні вільного місця на системному розділі. Як правило, це необхідно виконувати на термінальних серверах RDS, на яких користувачі активно працюють з файлами, особистими папками і іншим індексовані контентом.

Для зміни місця розташування файлу відкрийте Control Panel \Indexing Options \Advanced \ Index location->New Location  і вкажіть шлях до нового місця розташування файлу Windows.edb.

Виправлення для запобігання надмірного зростання файлу Windows.edb в Windows 8 / Windows Server 2012

Для вирішення проблема постійного зростання розміру файлу Windows.edb в Windows 8 і Windows Server 2012 було випущено спеціальне оновлення, яке включено до складу пакету оновлень від травня 2013 року - KB 2836988. Рекомендується завантажити і встановити його в даних версіях Windows.