repquota грузит сервер — как лечить

Lumber room
Хочу поделиться решением проблемы с repquota, с которой столкнулся сегодня. Надеюсь, поможет кому-нибудь не тратить время на разбирательства.

Стоит FreeBSD 6.2. Регулярно с помощью repquota собирается статистика по использованию пространства пользователями.

Симптомы проблемы: при запуске repquota или quotacheck процесс начинает грузить CPU, а главное — валит диски по дисковым операциям. Сервер практически ложится.

Симптомы снимаются убиванием процесса repquota или quotacheck.

А оказалось, что файл /home/quota.user достиг невообразимых размеров: 64G. Заметил случайно — по логам бэкапов.

Проблема полностью вылечилась банально следующим:

rm /home/quota.user
rm /home/quota.group
quotaoff /usr/home
quotacheck /usr/home
quotaon /usr/home


UPD

Корень зла



Суть оказалась в формате файла quota.user. Информация о квоте хранится в файле по смещению uid * 32. Соответственно, при большом uid (или при отрицательном) файл оказывается слишком большим, и repquota тратит много времени на просмотр файла, чтобы добраться до последнего uid.

Подробнее на opennet и в рассылке freebsd.

Пользователя с огромным uid не нашлось, зато нашёлся файл с uid 2147483647. Его создавал exim, из-за того, что в системе был пользователь с логином, состоящим из 11 цифр. При назначении прав на почту пользователя exim начинал думать, что это uid, а не имя.

В общем, как-то так.
Tags:freebsdrepquotaquotacheckнагрузка на сервер
Hubs: Lumber room
0
298 1
Comments 3
Storage Engineer
from 3,000 to 4,000 $AxcientRemote job
Аналитик информационной безопасности
from 30,000 to 60,000 ₽БастионМосква
Python-разработчик на Backend
from 80,000 ₽СтилсофтСтавропольRemote job
Разработчик (на языке Python)
from 40,000 to 120,000 ₽Территория РостаМагнитогорскRemote job

Top of the last 24 hours