Թունելը դադարում է ընդունել միացումներ, ծառայությունը երկու անգամ վերագործարկվում է, և դրանից հետո նրա մատյանում ոչինչ չի հայտնվում։ Այդ լռությունն է հուշումը, որովհետև մատյանն է լցրել սկավառակը, և դեյմոնը տեղ չունի գրելու այն սխալը, որին սպասում եք։ Ցանկացած երկար աշխատող ծառայություն կարող է հասնել այդ վիճակին, և 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-ը դեռ պահվում է։

Համեմատեք հաջորդ ցուցանիշը այս մեկի հետ

Վերադարձեք մեկ շաբաթ անց և համեմատեք աճի տեմպը գրանցվածի հետ։ Համընկնող տեմպը նշանակում է, որ սահմանը դիմանում է և բեռը կայուն է. կրկնապատկված տեմպը նշանակում է, որ ինչ-որ բան փոխվել է, և օգտակար հարցն այն է, թե ինչ։ Նախ կարդացեք մատյանի բովանդակությունը կրկնվող ձախողումների համար, որովհետև կրկնափորձի օղակը միաժամանակ և՛ ախտանիշ է, և՛ ծավալի պատճառ։ Ապա ստուգեք նոր միացված ամեն ինչ, ներառյալ միջադեպի ընթացքում միացված և երբեք չանջատված վրիպազերծման մակարդակները։

Պահուստները պահեք նույն ծավալից դուրս, կամ ընդունեք, որ մեկ լիքը սկավառակ իր հետ կտանի պահուստը։ Պաշտպանվող հոսթի վրա գրված պատճենը վերականգնման ծրագիր չէ, և դրա պահպանումն իր պատասխանն է պահանջում։

Գրեք, թե ինչ է պահվում, որտեղ, որքան ժամանակ և ով է հեռացնում այն։ Այդ նախադասությունը արդյունքն է, և դա այս աշխատանքի միակ մասն է, որը վերապրում է հաջորդ վերագործարկումը։

Առնչվող հոդվածներ