Звідки зростає диск VPN-сервера і як його обмежити
Зростання журналів, перейменований inode і journal без межі виглядають як один повний диск. Виміряйте швидкість, обмежте письменника й перевірте межу після перезапуску.
Тунель перестає приймати з'єднання, служба двічі перезапускається, і після цього в її журналі нічого не з'являється. Ця тиша і є підказкою, бо диск заповнив саме журнал, і демонові нема де записати помилку, якої ви чекаєте. У такий стан може потрапити будь-яка тривало працююча служба, і видалення каталогу з назвою logs рідко це виправляє. Надійне рішення — знати, яке сховище виросло, кому належить політика його зберігання і чи справді письменник звільнив місце.
Знайдіть сховище, яке виросло, і швидкість його зростання
Почніть із двох чисел, які легко забути: вільні блоки та вільні inode. Файлова система може повідомляти про багато місця і все одно відмовити в записі, бо inode закінчилися, а це буває, коли служба створює по файлу на сеанс. Запитайте обидва показники на одному томі, бо відповіді можуть розійтися того ж дня. Робіть це, поки хост здоровий, щоб числа описували нормальну роботу, а не збій.
df -h /var
df -i /varПотім віднесіть зростання до власника. Власний показник витрат journal охоплює лише journal і ніколи не побачить демон, який пише за шляхом зі свого файлу конфігурації.
journalctl --disk-usageЗростання в часі говорить більше за будь-яке окреме вимірювання. Залишений увімкненим рівень налагодження, цикл повторних спроб, що записує кожну спробу, або файл захоплення, який ніхто не зупинив: кожен із них може виглядати звичайним в один момент і тривожним за годину. Зніміть одне вимірювання, перечекайте завантажений період, зніміть друге і поділіть на інтервал. Швидкість, яку ви можете назвати, перетворює ємність на рішення, а не на пожежу.
Що ротація робить з відкритим файлом
Файл журналу — це ім'я, що вказує на inode, і місце повертається лише коли закривається останній відкритий дескриптор. Перейменуйте файл, і письменник продовжує заповнювати той самий inode; видаліть його, і письменник продовжує заповнювати inode взагалі без імені. Саме тому фраза «я видалив файл, а диск залишився повним» описує файлові дескриптори, а не зламану файлову систему. Перезапуск письменника або вибір режиму ротації, який заново відкриває файл, — це те, що справді повертає блоки.
lsof +L1 | headПолітика належить компонентові, який пише файл. Journal застосовує власні обмеження зберігання зі свого файлу конфігурації, а служба на основі файлів зазвичай покладається на logrotate, або з правилом створення та сигналом повторного відкриття, або з режимом обрізання на місці, коли письменник не може відкрити файл заново. Спочатку підтвердьте рішення, нічого не змінюючи:
logrotate -d /etc/logrotate.confДе місце межі і якою вона має бути
Ставте межу там, де налаштований письменник, а не в точці монтування. Квота на весь том захищає хост, але нічого не каже про те, яка служба відмовить першою, а глобальний скрипт очищення схильний видаляти докази, потрібні наступному інциденту. Межа journal, кількість ротацій з максимальним розміром і зберігання на рівні застосунку кожне обмежує одного виробника. Разом вони обмежують загальне; окремо кожне — здогад.
Розраховуйте цю межу від терміну зберігання, який ви можете захистити, а не від вільного місця. Якщо для перегляду потрібен тиждень спроб з'єднання, journal має тримати тиждень за найвищої очікуваної швидкості, і ця швидкість — число, виміряне раніше.
Журнал налагодження — тимчасовий режим із зафіксованим часом початку, а не план зберігання. Тримайте питання приватності в тому самому рішенні, бо журнали з'єднань несуть адреси та ідентифікатори. Довше зберігання — це також вибір обробки даних, і його має робити той, хто знає обидва обмеження.
Перевірте межу після перезапуску
Зміна зберігання, що триває до наступного перезапуску, не є зміною. Перезапустіть письменника, підтвердьте, що нова межа діє, і перевірте, що ротація після цього ще працює. Для journal один перезапуск і одне вимірювання витрат відповідають на обидва питання:
systemctl restart systemd-journald
journalctl --disk-usageДля служби на основі файлів запустіть завдання ротації один раз вручну і підтвердьте, що файл замінено, а дескриптор відкрито заново. Письменник, який утримує старий дескриптор, проходить поверхневу перевірку і відмовляє наступного разу, коли том заповниться. Стежте за вільним місцем під час тесту, бо файл, який зменшився, а місце не повернулося, означає, що старий inode все ще утримується.
Порівняйте наступне вимірювання з цим
Поверніться за тиждень і порівняйте швидкість зростання із записаною. Збіжна швидкість означає, що межа тримається і навантаження стабільне; подвоєна швидкість означає, що щось змінилося, і корисне питання — що. Спершу прочитайте вміст журналу щодо повторюваних збоїв, бо цикл повторних спроб — водночас симптом і причина обсягу. Потім перевірте все нещодавно ввімкнене, зокрема рівні налагодження, увімкнені під час інциденту і так і не вимкнені.
Тримайте резервні копії поза тим самим томом або прийміть, що один повний диск забере копію з собою. Копія, записана на хост, який вона захищає, не є планом відновлення, і для її зберігання потрібна власна відповідь.
Запишіть, що зберігається, де, як довго і хто це видаляє. Це речення і є результатом, і це єдина частина цієї роботи, яка переживе наступний перезапуск.