عدّادات حركة OpenVPN مقابل إدخال/إخراج القرص: ثلاثة أرقام مختلفة
تقيس بايتات الواجهة وعدّادات أحرف العملية وكتابات التخزين أعمالًا مختلفة. قارن بينها قبل تقدير أحجام الأقراص انطلاقًا من حجم النفق.
انقل ملفًا كبيرًا عبر نفق فيرتفع عدّاد الواجهة بمقدار حجم الملف. لا شيء في ذلك الرقم يعني أن الحجم نفسه وصل إلى قرص. تُقارن ثلاثة قياسات مختلفة في هذه النقاشات، وهي تجيب عن ثلاثة أسئلة مختلفة: كم من الحركة عبرت طبقة شبكة، وكم بايت قرأت عملية وكتبت عبر نداءات النظام، وكم من العمل وصل إلى طبقة التخزين.
مقارنة الأول بالثالث هي الخطأ المعتاد، وهي تُنتج إما مشكلة قرص وهمية وإما خطة سعة تتجاهل الكتابات التي تحدث فعلًا. الثلاثة قابلة للفصل، ولكل منها استخدام صحيح.
ثلاثة أرقام يُخلط بينها
تصف عدّادات الواجهة الحركة التي تُعالج في طبقة شبكة. وهي الرقم الصحيح لعرض النطاق، ولحجم النفق، ولنماذج الفوترة التي تسعّر العبور.
تصف عدّادات أحرف العملية البايتات المنقولة عبر نداءات القراءة والكتابة على أي واصف، بما في ذلك الأنابيب والأطراف الطرفية وأجهزة الأحرف. وهي الرقم الصحيح للسؤال عن مدى انشغال عملية عند حدود نداء النظام، وليست فاتورة تخزين.
تصف عدّادات التخزين البايتات التي حاولت النواة نقلها إلى جهاز كتلي أو منه. وهي الرقم الصحيح لتخطيط السعة، مع التحفظ بأن النواة توثّق حدود المحاسبة الخاصة بها: القراءات المخزنة مؤقتًا لا تصبح قراءات تخزين، والكتابة التي تُلغى لاحقًا لا تصبح كتابة جهاز مكتملة.
| Measurement | Question it answers |
|---|---|
| Interface bytes | How much traffic crossed this layer |
rchar and wchar | How much data the process moved through system calls |
read_bytes and write_bytes | How much work reached the storage layer |
لماذا لا يكون واصف الملف كتابة على القرص
تبادل شبكة VPN في مساحة المستخدم الحزم مع النواة عبر جهاز TUN، وهو جهاز أحرف لا ملف عادي. القراءة منه تُسلّم حزمة؛ والكتابة إليه تحقن حزمة. لا توجد صفحة من محتوى ملف تُجهّز للتخزين، ولا مسار نظام ملفات معنيّ.
لهذا يمكن لنفق مشغول أن يُظهر عدّادات أحرف ضخمة بلا عدّادات تخزين تقريبًا. العملية نقلت تلك البايتات فعلًا، والنواة لم تحتج فعلًا إلى قرص لفعل ذلك.
cat /proc/$(pgrep -n openvpn)/io
ip -s link show tun0
اقرأ المخرجات الأولى كمتراكمة منذ بدء العملية، لا كمعدّل. الثانية تعطي رؤية الواجهة للحركة نفسها. الفجوة الكبيرة بينهما متوقعة ولا تدل على تسرّب أو طابور أو إعداد خاطئ.
من أين تأتي البايتات فعلًا
للإخراج المستمر ميزانيته الخاصة، وهو مدفوع بالعمليات لا بالحمولة. مستوى سجل مطوّل، أو قائمة عملاء تتغير كثيرًا، أو خطأ يتكرر في حلقة ضيقة، يمكن أن تولّد كتابات كبيرة بينما يحمل النفق القليل جدًا.
ملف الحالة لقطة تُعاد كتابتها على فاصل زمني، فتكلفته تعتمد على الفاصل وعلى عدد السجلات التي يحتويها. وهو ليس نسخة جارية من حركة كل عميل، وتقصير الفاصل يغيّر حجم الكتابة دون تغيير حجم الحركة.
الملكية مهمة عندما تبحث عن تلك الكتابات. إذا سلّمت الخدمة الرسائل إلى عفريت تسجيل، فإن اليوميات أو ملف السجل يكتبه ذلك العفريت، وتظهر البايتات في محاسبة العفريت لا في عدّادات عملية الـ VPN نفسها. النظر إلى عملية الـ VPN وحدها لا يفسّر نشاط القرص ولا غيابه.
من السهل إغفال مساهمين آخرين: قراءات الشهادات والإعدادات عند البدء، والخطافات التي تكتب سجلاتها، وإضافات المحاسبة، وتفريغات الأعطال، وأحمال عمل غير ذات صلة على المضيف نفسه. لا ينبغي تقدير أي منها بمساواة حركة النفق بالبايتات المكتوبة.
قراءة كل عدّاد بشكل صحيح
ثلاثة تفاصيل تحدد ما إذا كانت المقارنة تعني شيئًا. هوية العملية مهمة، لأن خدمة أُعيد تشغيلها تُصفّر عدّاداتها. والفاصل الزمني مهم، لأن رقمًا متراكمًا ورسمًا بيانيًا لكل ثانية قياسان مختلفان. والوحدة مهمة، لأن الحجم الحالي لملف سجل ليس معدّلًا هو الآخر.
grep -E 'rchar|wchar|read_bytes|write_bytes' /proc/$(pgrep -n openvpn)/io
du -sh /var/log/openvpn 2>/dev/null
journalctl --disk-usage
إذا شككت في كتابات حمولة حقيقية، فابحث عن مكوّن وظيفته تخزين الحمولة: أداة التقاط حزم، أو وكيل يخزّن الأجسام، أو إضافة تؤرشف. تلك تولّد حركة تخزين تتدرج مع ما يُطلب منها تسجيله، وهي تنتمي إلى قرار سياسة منفصل بشأن الاحتفاظ والوصول.
تخطيط السعة بالرقم الصحيح
قدّر مسار الحزم بأرقام الشبكة: الإنتاجية والمعالجة التشفيرية وحركة الذاكرة. وقدّر التخزين بخيارات الرصد التي اتخذتها فعلًا: مستوى السجل، والاحتفاظ، وفاصل الحالة، وأي التقاط مُفعّل عن قصد.
إبقاء هاتين الميزانيتين منفصلتين يجعل الحوادث أسهل قراءة أيضًا. قرص ممتلئ مع حركة نفق متواضعة يشير إلى السجلات أو الالتقاطات أو شيء غير ذي صلة، وعدّاد الواجهة لن يفسّره أبدًا. رابط مشبع مع سجل هادئ يشير إلى الاتجاه الآخر.
المقارنة التي تستحق أن تُجرى هي بين قياسات من النوع نفسه. بايتات الواجهة مقابل بايتات الواجهة عبر الزمن تخبرك عن المسار. كتابات التخزين مقابل سعة التخزين تخبرك عن الاحتفاظ. المقارنة المتقاطعة، الحركة مقابل القرص، تبدو ذات معنى فقط ولا تكون كذلك أبدًا.