Случилась со мной одна оказия — закончилось место на винте. И оказия бы не случилась, если бы я знал, что оно заканчивается. А случилось вот что.
В логи посыпалось следующее:
- pid 1809 (nfsd), uid 0 inumber 186861599 on /freebsd/tunefs/filesystem/full: filesystem full
Файловый менеджер на удалённом компе, к которому примонтирована эта NFS–шара, клятвенно уверял, что свободного места полно — 100 гиг, не меньше. Но с ним в конфронтацию вступал df на NFS–сервере, который хоть и показывал, что есть те самые 100 гигабайт, и даже больше, неиспользованного места, но свободного места не показывал вообще:
- df -ih
- Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
- /dev/ad4s1a 1.8T 1.6T 0B 100% 150k 244M 0% /freebsd/tunefs/filesystem/full
Собственно, эта разница в количестве свободного и доступного места меня и смутила. Получается, что место как бы есть, но его как бы нет…
Раздел был несколько раз отмонтирован/примонтирован, проверен fsck, fsck_ufs, pater_noster и обматерён, но ничего так и не помогло.
И тут я вспомнил про tunefs, который может регулировать параметры файловой системы, а конкретно — объём зарезервированного для системы и рута места. Наличие такого резерва имеет смысл на системных разделах, чтобы админ чуть раньше реагировал на убывающее место и имел какое-то время для реакции. Но на разделе, отведённом под файлопомойку, этот резерв теряет всякий смысл, тем более, что этим местом всё–равно никто, кроме системы и рута, воспользоваться не сможет. Короче, следующее заклинание решило проблему:
- tunefs -m 0 /dev/ad4s1a
Эта команда обнулила резервное место, сделав всё пространство винта доступным:
- df -ih
- Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
- /dev/ad4s1a 1.8T 1.6T 132G 93% 150k 244M 0% /freebsd/tunefs/filesystem/full