การเติบโตของดิสก์เซิร์ฟเวอร์ 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 เก่ายังถูกถืออยู่
เปรียบเทียบการวัดครั้งถัดไปกับครั้งนี้
กลับมาหลังหนึ่งสัปดาห์และเปรียบเทียบอัตราการเติบโตกับที่บันทึกไว้ อัตราที่ตรงกันหมายความว่าเพดานอยู่และภาระงานเสถียร อัตราที่เพิ่มเป็นสองเท่าหมายความว่ามีบางอย่างเปลี่ยนไป และคำถามที่มีประโยชน์คืออะไร อ่านเนื้อหาล็อกเพื่อหาความล้มเหลวซ้ำก่อน เพราะลูปลองใหม่เป็นทั้งอาการและสาเหตุของปริมาณ จากนั้นตรวจสอบทุกอย่างที่เพิ่งเปิดใช้งาน รวมถึงระดับดีบักที่เปิดระหว่างเหตุการณ์และไม่เคยปิด
เก็บสำรองไว้นอกโวลุ่มเดียวกัน หรือยอมรับว่าดิสก์เต็มหนึ่งลูกจะพาสำรองไปด้วย สำเนาที่เขียนลงบนโฮสต์ที่มันปกป้องไม่ใช่แผนการกู้คืน และการเก็บรักษาของมันต้องมีคำตอบของตัวเอง
เขียนสิ่งที่เก็บไว้ ที่ไหน นานเท่าใด และใครเป็นผู้ลบ ประโยคนั้นคือสิ่งที่ส่งมอบ และเป็นส่วนเดียวของงานนี้ที่อยู่รอดจากการรีสตาร์ตครั้งถัดไป