סביבת הרצה של VPN בזיכרון RAM לא אומרת דבר על יומנים
סביבת tmpfs והצהרה שאין יומנים הן שתי הצהרות שונות. עקבו אחר כל כותב אל היעד שלו ובדקו את ה-swap ואת העברת היומן לפני שאתם מאמינים.
שרת VPN שעולה מדימוי לקריאה בלבד ושומר את מצב ההרצה שלו ב-tmpfs הוא עיצוב אמיתי ושימושי. קל גם לתאר אותו כנקי מיומנים, מה שהעיצוב אינו מוכיח. מיקום האחסון קובע היכן עותק חי; האיסוף והשמירה קובעים אם רשומה קיימת בכלל, והפעלה מחדש משפיעה רק על הראשון. ההפרדה בין השניים היא כל הסקירה.
התחילו בתיעוד כל תהליך שיכול לכתוב מצב: הדמון, שירות האימות, היומן, כל סוכן ניטור וכלי הניהול.
אחסון ואיסוף הם שאלות שונות
לכל כותב יש יעד משלו ומדיניות משלו. דמון ה-VPN כותב קובצי מצב, שירות האימות כותב אירועי חשבון, היומן אוסף פלט שירותים, וסוכן ניטור שולח מדדים למקום אחר לגמרי. עיצוב שגורם לאחד מהם להיעלם בהפעלה מחדש לא אמר דבר על שלושת האחרים. עקבו אחר כל כותב אל היעד שלו וציינו אם היעד הזה נמצא בכלל במכונה.
קובצי יישום ייעודיים, אבחון שהועלה ושירותים חיצוניים זקוקים לאותו יחס. היעדר יומן מקומי מוכר אינו מוכיח שרשומות חיבור או חשבון אינן קיימות בשום מקום; הוא מוכיח שעוד לא מצאתם לאן הן הולכות.
tmpfs אינו ערובה
Linux tmpfs אינו דיסק RAM פיזי. תיעוד הליבה מפורש שדפים יכולים להיכתב ל-swap כשההרכבה מאפשרת זאת, כך שקובץ tmpfs יכול להגיע לדיסק בלי שהיישום יעתיק אותו לשם אי פעם. mount מראה אם tmpfs מבוסס swap פועל, ומערכות קבצים אחרות בזיכרון מתנהגות אחרת לגמרי. קראו את אפשרויות ההרכבה בפועל במקום להניח שנתיב תחת /run משמעו נדיפות.
לאחר מכן עשו מלאי של הדברים ששורדים הפעלה מחדש בדרכים שאנשים שוכחים: שכבה עליונה מתמשכת, אחסון מחובר, דימויי שינה, דאמפים של קריסה ותצלומי תשתית של כל ה-VM. כל אחד מהם הוא יעד אפשרי למצב שחשבתם שהוא חולף. הרשימה הזו היא משהו לבדוק, לא הצהרה שלכל מארח יש את כולם.
ל-Journald שני יעדים ומעביר אחד
Journald ממחיש את הפיצול היטב. אחסון נדיף שומר רשומות תחת /run/log/journal, אחסון מתמשך תחת /var/log/journal, והמצב האוטומטי בוחר בין השניים; המצב התקף מגיע מהמערכת הפועלת ולא מתיאור הדימוי. מעבר לנדיף אינו מוחק את מה שכבר נכתב באופן מתמשך. העברה היא גם ערוץ נפרד: אפילו הגדרת אחסון שאינה שומרת דבר מקומית יכולה למסור הודעות ליעד אחר.
קראו את המצב האפקטיבי מהיומן עצמו או מקובץ התצורה שלו, ואז בדקו בנפרד את יעדי ההעברה, כי הגדרה אחת אינה שולטת בשנייה.
מה חייב לשרוד הפעלה מחדש
סביבת הרצה חסרת מצב תומכת בהחלפה חוזרת, והיא זקוקה למקורות מכוונים לתצורה, להרשאה ולחומר השחזור שהשירות אינו יכול להמציא. לאבד את מצב הרישום או הביטול היחיד שעובד כדי שהכתיבות המקומיות ייעלמו הוא עסקה גרועה, ונפוצה. החליטו מה חייב לשרוד בכוונה, ואז ודאו שכך קורה.
אותו היגיון חל על רשומות תפעוליות. החליטו אילו אירועים אבטחה וניהול שירות באמת דורשים, עם היקף ושמירה מוצדקים, ומזערו את השאר. מזעור אינו זהה לכיבוי כל אבחון.
השוו את תצורת האחסון וההעברה האפקטיבית לכמה אירועים בלתי מזיקים, ואז הפעילו מחדש או החליפו את המכונה ובדקו שוב מה נשאר והיכן השירות שחזר את מצבו.