Тунэль перастае прымаць злучэнні, служба двойчы перазапускаецца, і пасля гэтага ў яе журнале нічога не з’яўляецца. Гэтая цішыня і ёсць падказка, бо дыск запоўніў менавіта журнал, і дэману няма куды запісаць памылку, якой вы чакаеце. У такі стан можа трапіць любая доўгапрацуючая служба, і выдаленне каталога з назвай logs рэдка гэта выпраўляе. Надзейнае рашэнне — ведаць, якое сховішча вырасла, хто валодае палітыкай яго захавання і ці сапраўды пісьменнік адпусціў месца.

Знайдзіце сховішча, якое вырасла, і тэмп яго росту

Пачніце з двух лікаў, якія лёгка забыць: свабодныя блокі і свабодныя inode. Файлавая сістэма можа паведамляць пра шмат месца і ўсё ж адмовіць у запісе, бо ў ёй скончыліся inode, а гэта здараецца, калі служба стварае па адным файле на сесію. Запытайце абодва паказчыкі на адным томе, бо адказы могуць разыходзіцца ў той жа дзень. Рабіце гэта, пакуль хост здаровы, каб лікі апісвалі звычайную працу, а не збой.

df -h /var
df -i /var

Затым аднясіце рост да пэўнага ўладальніка. Уласны паказчык выкарыстання журнала ахоплівае толькі журнал і ніколі не ўбачыць дэман, які піша па шляху з свайго канфігурацыйнага файла.

journalctl --disk-usage

Рост у часе кажа больш, чым любое асобнае вымярэнне. Пакінуты ўключаным узровень адладкі, цыкл паўтораў, які запісвае кожную спробу, або файл захопу, які ніхто не спыніў: кожны з іх можа выглядаць звычайна ў адзін момант і трывожна праз гадзіну. Вазьміце адно вымярэнне, перачакайце напружаны перыяд, вазьміце другое і падзяліце на інтэрвал. Тэмп, які вы можаце назваць, ператварае ёмістасць у рашэнне, а не ў пажар.

Што ротацыя робіць з адкрытым файлам

Файл журнала — гэта імя, якое паказвае на inode, і месца вяртаецца толькі тады, калі закрываецца апошні адкрыты дэскрыптар. Перайменуйце файл — пісьменнік працягвае запаўняць той жа inode; выдаліце яго — пісьменнік працягвае запаўняць inode зусім без імя. Менавіта таму фраза «я выдаліў файл, а дыск застаўся поўным» апісвае файлавыя дэскрыптары, а не зламаную файлавую сістэму. Перазапуск пісьменніка або выбар рэжыму ротацыі, які паўторна адкрывае файл, — гэта тое, што сапраўды вяртае блокі.

lsof +L1 | head

Палітыка належыць кампаненту, які піша файл. Журнал ужывае свае абмежаванні сховішча з свайго канфігурацыйнага файла, а служба на аснове файлаў звычайна спадзяецца на logrotate — або з правілам стварэння і сігналам паўторнага адкрыцця, або з рэжымам абрэзкі на месцы, калі пісьменнік не можа адкрыць файл нанова. Спачатку пацвердзіце рашэнне, нічога не змяняючы:

logrotate -d /etc/logrotate.conf

Дзе месца абмежаванню і якім яно павінна быць

Размясціце абмежаванне там, дзе наладжаны пісьменнік, а не ў кропцы мантавання. Квота на ўвесь том абараняе хост, але нічога не кажа пра тое, якая служба адмовіць першай, а глабальны скрыпт ачысткі схільны выдаляць доказы, патрэбныя наступнаму інцыдэнту. Абмежаванне журнала, колькасць ротацый з максімальным памерам і захаванне на ўзроўні праграмы: кожнае абмяжоўвае аднаго вытворцу. Разам яны абмяжоўваюць агульнае; паасобку кожнае — здагадка.

Памер гэтага абмежавання вызначайце ад тэрміну захавання, які вы можаце абараніць, а не ад свабоднага месца. Калі для разбору патрэбны тыдзень спробаў злучэння, журнал павінен утрымаць тыдзень пры самым высокім чаканым тэмпе, і гэты тэмп — лік, вымераны раней.

Адладкавы журнал — гэта часовы рэжым з зафіксаваным часам запуску, а не план сховішча. Трымайце пытанне прыватнасці ў тым жа рашэнні, бо журналы злучэнняў змяшчаюць адрасы і ідэнтыфікатары. Больш доўгае захаванне — таксама выбар апрацоўкі даных, і рабіць яго павінен той, хто ведае абодва абмежаванні.

Праверце абмежаванне пасля перазапуску

Змена захавання, якая дзейнічае да наступнага перазапуску, не з’яўляецца зменай. Перазапусціце пісьменніка, пацвердзіце, што новы ліміт дзейнічае, і праверце, што ротацыя пасля гэтага ўсё яшчэ працуе. Для журнала адзін перазапуск і адно вымярэнне выкарыстання адказваюць на абодва пытанні:

systemctl restart systemd-journald
journalctl --disk-usage

Для службы на аснове файлаў запусціце задачу ротацыі адзін раз уручную і пацвердзіце, што файл заменены, а дэскрыптар адкрыты нанова. Пісьменнік, які трымае стары дэскрыптар, праходзіць павярхоўную праверку і падводзіць наступным разам, калі том запоўніцца. Сачыце за свабодным месцам падчас тэсту, бо файл, які паменшыўся, а месца не вярнулася, значыць стары inode ўсё яшчэ ўтрымліваецца.

Параўнайце наступнае вымярэнне з гэтым

Вярніцеся праз тыдзень і параўнайце тэмп росту з запісаным. Супадальны тэмп значыць, што абмежаванне трымае і нагрузка стабільная; удвая большы тэмп значыць, што нешта змянілася, і карыснае пытанне — што менавіта. Спачатку прачытайце змест журнала на прадмет паўторных збояў, бо цыкл паўтораў — адначасова і сімптом, і прычына аб’ёму. Затым праверце ўсё нядаўна ўключанае, у тым ліку ўзроўні адладкі, уключаныя падчас інцыдэнту і ніколі не выключаныя.

Трымайце рэзервовыя копіі па-за тым жа томам або прызнайце, што адзін поўны дыск забярэ копію з сабой. Копія, запісаная на хост, які яна абараняе, не з’яўляецца планам аднаўлення, і яе захаванне патрабуе ўласнага адказу.

Запішыце, што захоўваецца, дзе, як доўга і хто гэта выдаляе. Гэтае сказ — вынік працы, і яно адзіная частка гэтай работы, якая перажыве наступны перазапуск.

Падобныя артыкулы