إصلاح مشكلة نفاد المساحة في نظام SUSE Linux Enterprise LVM Thin Provisioning بأمان

ما الذي يجب عليك تحديده قبل تغيير أي شيء؟

حدد أولاً ما إذا كانت مساحة البيانات أو مساحة البيانات الوصفية أو كليهما قد استُنفدت في مجموعة التخزين الرقيقة . هذا التمييز يُغيّر خطة الاسترداد. تحتوي مجموعة التخزين الرقيقة على وحدة تخزين منطقية للبيانات تُخزّن الكتل المُخصصة، ووحدة تخزين منطقية للبيانات الوصفية تُتابع هذه التخصيصات. قد يتجاوز الحجم الافتراضي لوحدات التخزين المنطقية الرقيقة السعة الفعلية للمجموعة، وهذا هو الهدف من التزويد الرقيق، ولكنه أيضاً سبب ضرورة مراقبة تجاوز التخصيص.

تؤكد وثائق SUSE Linux Enterprise Server 15 SP7 أن وحدات التخزين الرقيقة تُخصص مساحة من مجموعة التخزين الرقيقة عند الطلب، وأن الحجم الظاهري المُجمع قد يتجاوز سعة التخزين الفعلية المتاحة. وتضيف وثائق LVM thin-pool الأصلية قاعدة تشغيلية هامة: توسيع المجموعة قبل أن تصل أي من Data%المساحتين Meta%إلى 100%. راجع دليل إدارة التخزين في SUSE Linux Enterprise Server 15 SP7 ودليل التزويد الرقيق لـ LVM .

1. هل مساحة البيانات ممتلئة، أم أن البيانات الوصفية ممتلئة؟

قم بتشغيل البرنامج lvsباستخدام أعمدة محددة بدلاً من الاعتماد على فحص عام لمساحة القرص. يمكن لنظام الملفات أن يُبلغ عن مساحة افتراضية متاحة حتى وإن كانت مساحة التخزين الفعلية الرقيقة الموجودة أسفله شبه مستنفدة.

lvs -a -o lv_name,vg_name,lv_attr,lv_size,data_percent,metadata_percent
يعرض طرفية نظام SUSE Linux مخرجات lvs مع استخدام بيانات يقارب 100% واستخدام بيانات ميتا أقل.

التعليق: يجب تحديد مجموعة التخزين الرقيقة من خلال قيم Data% و Meta% الخاصة بها؛ المساحة الحرة في نظام الملفات وحدها لا تُظهر استنفاد مجموعة التخزين الرقيقة المادية.

إذا Data%كانت قيمة `min` تساوي 100 أو قريبة منها، فهذا يعني أن مجموعة التخزين قد نفدت من الكتل المخصصة للكتابة الجديدة. تحذر وثائق LVM الأصلية من أن عمليات الكتابة قد تُرجع أخطاءً عند استنفاد مجموعة البيانات، مما قد يُلحق الضرر بأنظمة الملفات. أما إذا Meta%وصلت قيمة `min` إلى 100، فسيكون رد الفعل أكثر تحفظًا لأن استنفاد البيانات الوصفية قد يُؤدي إلى عدم اتساق كلٍ من البيانات الوصفية لمجموعة التخزين الرقيقة وأنظمة الملفات.

2. هل لا تزال مجموعة المجلدات تحتوي على مساحات فيزيائية حرة؟

هذه هي نقطة القرار التالية. لا يمكن لمجموعة التخزين الرقيقة أن تتوسع إلا إذا كانت مجموعة وحدات التخزين الخاصة بها تحتوي على مساحات تخزين فارغة، إلا إذا قمت أولاً بإضافة المزيد من مساحة التخزين الفعلية إلى مجموعة وحدات التخزين تلك.

vgs -o vg_name,vg_size,vg_free
vgdisplay VG_NAME
طرفية SUSE Linux تعرض مخرجات vgs و vgdisplay حيث لا تحتوي مجموعة وحدات التخزين على مساحات تخزين حرة

التعليق: فحص المساحة الحرة في مجموعة وحدات التخزين (VG) يفصل بين امتداد بسيط لمجموعة التخزين الرقيقة وحالة تتطلب إضافة وحدة تخزين أولاً.

إذا كانت وحدة التخزين (VG) تحتوي على مساحة كافية، يمكنك عادةً توسيع مجموعة التخزين الرقيقة مباشرةً. أما إذا VFreeكانت المساحة صفرًا أو صغيرة جدًا، فلا تُعاود المحاولة lvextend؛ بل قرر ما إذا كان بإمكانك إزالة وحدات التخزين الرقيقة أو اللقطات غير الضرورية، أو استعادة الكتل باستخدام أمر الحذف، أو إضافة وحدة تخزين فعلية جديدة.

3. هل يجب إيقاف التطبيقات قبل الاستعادة؟

إذا كانت مساحة التخزين ممتلئة بنسبة 100%، فأوقف أو جمّد التطبيقات التي تُجري عمليات كتابة مكثفة قبل إجراء أي تغييرات على التخزين. هذا يقلل من احتمالية استمرار قواعد البيانات أو الأجهزة الافتراضية أو الحاويات أو الخدمات الأخرى في إجراء عمليات الكتابة أثناء تعطل طبقة التخزين أو إصلاحها.

systemctl stop YOUR_APPLICATION.service
systemctl status YOUR_APPLICATION.service
طرفية SUSE Linux تُظهر توقف خدمات التطبيقات التي تتطلب عمليات كتابة مكثفة قبل صيانة مجموعة التخزين الرقيقة LVM

التعليق: يؤدي إيقاف التطبيقات إلى الحد من عمليات الكتابة الإضافية أثناء استعادة مجموعة التخزين الرقيقة الممتلئة أو التالفة.

لا توجد قائمة موحدة بالخدمات التي يجب إيقافها. استخدم بنية أحمال العمل وإجراءات الصيانة الخاصة بك. بالنسبة لقواعد البيانات والأجهزة الافتراضية، يُفضل استخدام طريقة الإيقاف أو التجميد المدعومة من المنتج بدلاً من إنهاء العمليات فجأة.

4. إذا كانت نسبة البيانات ممتلئة وكان لدى وحدة التخزين مساحة خالية، فكيف تقوم بتوسيع المجموعة؟

قم بتوسيع نطاق مجموعة التخزين الرقيقة نفسها، وليس وحدة التخزين المنطقية الرقيقة الافتراضية، لأن المشكلة تكمن في نقص سعة مجموعة التخزين الفعلية. على سبيل المثال:

lvextend -L +20G VG_NAME/THIN_POOL
lvs -o lv_name,vg_name,lv_size,data_percent,metadata_percent VG_NAME/THIN_POOL
يعرض طرفية نظام SUSE Linux عملية زيادة حجم مجموعة التخزين الرقيقة LVM بواسطة الأمر lvextend، ثم انخفاض نسبة البيانات بعد ذلك.

التعليق: يؤدي توسيع مجموعة التخزين الرقيقة إلى زيادة السعة المادية؛ ومن المتوقع أن تنخفض نسبة البيانات الناتجة بمجرد توفر المساحة الجديدة.

يوثق دليل lvextend توسيع مجموعة التخزين الرقيقة المباشر وخيار --poolmetadatasizeالبيانات الوصفية المنفصل. اختر قيمة الزيادة بناءً على معدل النمو الفعلي وسعة التخزين التي يمكنك حجزها. +20Gلا يُعد مثال ثابت مثل هذا توصية لتحديد الحجم المناسب لكل نظام.

5. ماذا لو لم يكن لمجموعة الحجم مساحة حرة؟

أضف وحدة تخزين فقط بعد التأكد من أن وحدة التخزين المستهدفة غير مستخدمة ولا تحتوي على أي بيانات تحتاجها. عند إنشاء وحدة تخزين فعلية LVM، يتم كتابة بيانات تعريف LVM إلى الجهاز المحدد، لذا فإن أي خطأ في اسم الجهاز قد يؤدي إلى تلفه.

lsblk
blkid

pvcreate /dev/NEW_DEVICE
vgextend VG_NAME /dev/NEW_DEVICE
vgs -o vg_name,vg_size,vg_free
يعرض طرفية نظام SUSE Linux قرصًا جديدًا تم التحقق منه باستخدام الأمر lsblk، ثم تمت تهيئته باستخدام الأمر pvcreate وإضافته إلى مجموعة وحدات تخزين باستخدام الأمر vgextend.

التعليق: عندما تمتلئ وحدة التخزين الافتراضية، يمكن إضافة وحدة تخزين فعلية جديدة أولاً، بعد أن يتحقق المسؤول من الجهاز غير المستخدم الصحيح.

تُشير وثائق SUSE إلى إمكانية توسيع مجموعات وحدات التخزين بإضافة أقسام أو أقراص كاملة. يُرجى مراجعة بنية التخزين قبل القيام بذلك على أنظمة متعددة المسارات، أو SAN، أو RAID، أو الأنظمة المشفرة، أو المجمعة، أو المدعومة بالسحابة، لأن طبقة الجهاز الصحيحة قد لا تكون القرص الخام الموضح في مثال بسيط.

6. ماذا لو وصلت نسبة Meta% إلى 100%؟

تعامل مع استنفاد البيانات الوصفية كحالة إصلاح خارج الشبكة بدلاً من مجرد إضافة سعة بيانات. ينص دليل LVM thin-pool صراحةً على أن استنفاد البيانات الوصفية قد يتسبب في عدم اتساق البيانات الوصفية وأنظمة الملفات في thin-pool. وتتمثل عملية الاسترداد الموثقة في تعطيل المجموعة، وإصلاحها lvconvert --repair، وتوسيع البيانات الوصفية، ثم فحص نظام الملفات.

بعد إيقاف التطبيقات، قم بفصل أنظمة الملفات أو تعطيل وحدات التخزين المنطقية الرقيقة باستخدام المجموعة. ثم اتبع إجراء صيانة مُنظّمًا مشابهًا لما يلي:

lvchange -an VG_NAME/THIN_LV
lvconvert --repair VG_NAME/THIN_POOL
lvextend --poolmetadatasize +1G VG_NAME/THIN_POOL
يعرض طرفية نظام SUSE Linux تعطيل وحدات التخزين المنطقية الرقيقة، وتشغيل أداة إصلاح lvconvert على مجموعة التخزين الرقيقة، وتوسيع مساحة البيانات الوصفية.

التعليق: تتطلب حالة امتلاء البيانات الوصفية إصلاحًا غير متصل بالإنترنت لمجموعة البيانات الرقيقة ومساحة إضافية للبيانات الوصفية، وليس مجرد المزيد من نطاقات البيانات.

الشكل +1Gالموضح هو مثال توضيحي فقط. يعتمد حجم البيانات الوصفية على حجم مجموعة التخزين، وحجم الجزء، واستخدام اللقطات، وسلوك التخصيص. بعد الإصلاح، افحص سجلات النظام، واستخدم إجراء الفحص أو الإصلاح المدعوم الخاص بنظام الملفات في حال حدوث أخطاء في الإدخال/الإخراج. لا تقم بتشغيل أداة إصلاح نظام الملفات بشكل عشوائي على نظام ملفات مُثبَّت.

هل يمكن لحذف الملفات تحرير مساحة تخزين البيانات الرقيقة على الفور؟

ليس دائمًا. يؤدي حذف ملف إلى تحرير مساحة داخل نظام الملفات، لكن مجموعة التخزين الرقيقة لا تستعيد الأجزاء المادية إلا عند وصول معلومات الحذف إليها. تشير وثائق LVM إلى fstrimإمكانية استعادة هذه الكتل، بينما قد تستمر اللقطات في الإشارة إلى الكتل ومنع تحريرها. إذا تم تكوين مجموعة التخزين لتجاهل عمليات الحذف، فلن تستعيد عملية الحذف الكتل.

عندما يدعم نظام الملفات وحمل العمل ذلك، تحقق من سلوك الحذف وقم بتنفيذ عملية التقليم فقط بعد أن يصبح المجمع مستقرًا بما يكفي للتشغيل:

lvs -o lv_name,discards VG_NAME/THIN_POOL
fstrim -v /mount/point

قد يؤدي حذف اللقطات القديمة الرقيقة إلى تحرير مساحة تخزين إضافية عندما تكون هذه اللقطات هي المراجع المتبقية للكتل. تحقق من متطلبات النسخ الاحتياطي والاحتفاظ بالبيانات قبل حذف اللقطات.

7. كيف تمنع حدوث ذلك مرة أخرى؟

قم بتمكين وتفعيل مراقبة مجموعات التخزين الرقيقة في LVM، وقم بتهيئة خاصية التوسيع التلقائي مع توفير سعة كافية في مجموعة وحدات التخزين (VG). يستخدم LVM في المصدر dmeventd، عادةً من خلال lvm2-monitorالخدمة، للتفاعل عندما يتجاوز استخدام البيانات أو البيانات الوصفية الحدّ المُهيأ.

systemctl status lvm2-monitor.service
lvs -o+seg_monitor VG_NAME/THIN_POOL
lvchange --monitor y VG_NAME/THIN_POOL

lvmconfig --type full activation/thin_pool_autoextend_threshold
lvmconfig --type full activation/thin_pool_autoextend_percent
طرفية SUSE Linux تعرض إعدادات lvm2-monitor النشطة وحدود ونسبة التوسيع التلقائي لمجموعة LVM thin-pool

التعليق: يعتمد التمديد التلقائي على المراقبة النشطة، وعتبة مناسبة، والمساحات الحرة المتبقية في مجموعة الحجم.

يذكر دليل LVM أن عتبة 100 تُعطّل التوسيع التلقائي، وأن الحد الأدنى المسموح به هو 50. تُتيح العتبة المنخفضة لـ LVM وقتًا أطول للاستجابة لمجموعات التخزين ذات معدلات الكتابة السريعة جدًا. وتُحدد نسبة التوسيع مقدار نمو مجموعة التخزين عند تفعيل السياسة.

يمكن أن يكون التكوين النموذجي كالتالي /etc/lvm/lvm.conf:

activation {
    thin_pool_autoextend_threshold = 70
    thin_pool_autoextend_percent = 20
}

هذه القيم أمثلة وليست قيماً افتراضية عامة. حدد هامش الأمان بناءً على معدل الكتابة المتتالية، وفترة المراقبة، ووقت تجهيز التخزين، والمساحة الحرة المتاحة في مجموعة وحدات التخزين. لا يمكن للتوسيع التلقائي أن يفيد إذا كانت مجموعة وحدات التخزين ممتلئة بالفعل.

8. كيف تعرف أن عملية التعافي نجحت بالفعل؟

تحقق من أكثر من إشارة واحدة. يجب أن يكون لدى مجموعة التخزين مساحة كافية، ويجب أن تحتوي مجموعة وحدات التخزين على مساحة حرة كافية للنمو المتوقع، ويجب أن تكون التطبيقات قادرة على الكتابة بشكل طبيعي، ويجب ألا تُظهر السجلات أخطاء إدخال/إخراج مستمرة في مجموعة التخزين الرقيقة أو أخطاء في البيانات الوصفية.

lvs -a -o lv_name,vg_name,lv_attr,lv_size,data_percent,metadata_percent
vgs -o vg_name,vg_size,vg_free
journalctl -u lvm2-monitor.service --since "30 minutes ago"
يعرض طرفية نظام SUSE Linux مجموعة تخزين رقيقة مستعادة بنسب بيانات وبيانات وصفية أقل، ومساحة خالية في مجموعة وحدات التخزين، وسجلات مراقبة سليمة.

التعليق: يتم تأكيد التعافي عندما يكون هناك هامش لاستخدام المسبح، ويحتفظ VG بمساحة حرة قابلة للاستخدام، ولا تشير تقارير المراقبة إلى وجود أخطاء إدخال/إخراج مستمرة.

أعد تشغيل التطبيقات تدريجيًا وراقب مجموعة الموارد المحدودة أثناء عودة أحمال العمل الفعلية. إذا Data%ارتفع الطلب بسرعة غير معتادة مرة أخرى، فقد يكون توسيع مجموعة الموارد قد عالج الانقطاع الفوري دون حل مشكلة تخطيط السعة.

متى يجب عليك التوقف واستخدام مسار استعادة مختلف؟

ملاحظةالاتجاه الموصى به
Data%قريب من 100، Meta%سليم، VG لديه مساحة فارغةقم بتوسيع نطاق مجموعة البيانات الرقيقة وتحقق من استعادة عبء العمل.
Data%عند اقترابها من 100، لا يوجد لدى VG مساحة حرةأضف مساحة تخزين موثقة، واستعد الكتل بأمان، أو قلل من وحدات التخزين الرقيقة/اللقطات المحفوظة قبل التوسيع.
Meta%بلغ 100إيقاف أحمال العمل، وتعطيل المجموعة، وإصلاح البيانات الوصفية دون اتصال بالإنترنت، وتوسيع البيانات الوصفية، والتحقق من أنظمة الملفات.
lvconvert --repairيفشللا تقم بكتابة البيانات الوصفية بشكل متكرر دون اتباع التعليمات البرمجية. احتفظ بسجلات النظام ونسخ احتياطية من البيانات الوصفية، وقم بالتصعيد إلى دعم SUSE أو إلى مهندس استعادة LVM ذي خبرة.
أحجام رقيقة متجمعةاتبع إجراءات موارد المجموعة. يتطلب نظام SUSE إدارة مجموعة التخزين الرقيقة ووحدات التخزين الرقيقة معًا بحيث تظل حصرية لعقدة واحدة.
يمتلئ المسبح مرة أخرى بعد فترة وجيزة من تمديدهالتحقيق في الاحتفاظ باللقطات، وسلوك التخلص منها، ونمو الكتابة، وعتبات المراقبة، وتخطيط السعة.

ما الذي يجب عليك تجنبه؟

  • لا تفترض أن هناك df -hأدلة تثبت أن مجموعة التخزين الرقيقة تحتوي على مساحة تخزين فعلية مجانية.
  • لا تقم بتهيئة جهاز جديد pvcreateإلا بعد التأكد من أنه غير مستخدم.
  • لا تتعامل مع استنفاد البيانات الوصفية على أنه نفس مشكلة استنفاد البيانات العادية.
  • لا تعتمد على التمديد التلقائي دون حجز مساحات حرة في مجموعة وحدات التخزين.
  • لا تقم بتشغيل أوامر إصلاح نظام الملفات على أنظمة الملفات المثبتة إلا إذا كان بائع نظام الملفات يدعم هذه العملية بشكل صريح.
  • لا تقم بتعطيل المراقبة لمجرد كتم التحذيرات؛ فالتحذير غالباً ما يكون الفرصة الأخيرة لتوسيع المجموعة قبل فشل عمليات الكتابة.

المراجع الرسمية والأساسية

اترك تعليقاً

كيفية لعب لعبة Don't Starve Together على نظام لينكس

كيفية لعب لعبة Don't Starve Together على نظام لينكس

قم بتثبيت نسخة لينكس من لعبة Don't Starve Together عبر Steam، وابدأ عالمًا جديدًا، أو انضم إلى أصدقائك باتباع خطوات الإعداد واستكشاف الأخطاء وإصلاحها هذه.

كيفية تشغيل لعبة Squad على نظام Linux باستخدام Steam Proton

كيفية تشغيل لعبة Squad على نظام Linux باستخدام Steam Proton

قم بإعداد Squad على نظام Linux باستخدام Steam Play و Proton، ثم قم بتثبيت اللعبة، واختر أداة التوافق، وقم باستكشاف مشكلات مكافحة الغش وإصلاحها.

كيفية تثبيت نظام لينكس منت ديبيان الإصدار الخامس "إلسي" من خلال USB

كيفية تثبيت نظام لينكس منت ديبيان الإصدار الخامس "إلسي" من خلال USB

قم بتنزيل ملف LMDE 5 ISO المؤرشف والتحقق منه، ثم أنشئ قرص USB قابلًا للإقلاع، واختر إعدادات التثبيت الآمنة. انتهى دعم Elsie؛ راجع إصدار LMDE الحالي.

كيفية إنشاء قرص USB قابل للتشغيل لنظام التشغيل Windows 11 على نظام Linux

كيفية إنشاء قرص USB قابل للتشغيل لنظام التشغيل Windows 11 على نظام Linux

قم بإنشاء قرص USB لتثبيت نظام التشغيل Windows 11 على نظام Linux باستخدام Ventoy: احصل على ملف ISO الرسمي، وقم بتثبيت Ventoy بأمان، وانسخ الصورة، وقم بتشغيل جهاز الكمبيوتر المستهدف.

كيفية تشغيل لعبة It Takes Two على نظام لينكس باستخدام Steam Proton

كيفية تشغيل لعبة It Takes Two على نظام لينكس باستخدام Steam Proton

تعلم كيفية تشغيل لعبة It Takes Two على نظام Linux باستخدام Steam Proton، وتثبيت إصدار Steam، وتمكين التوافق، وإعداد وضع اللعب التعاوني، وحل مشاكل التشغيل.

كيفية تثبيت برنامج Wireshark على أنظمة Linux: أوبونتو، فيدورا، آرتش، وغيرها

كيفية تثبيت برنامج Wireshark على أنظمة Linux: أوبونتو، فيدورا، آرتش، وغيرها

قم بتثبيت Wireshark على Ubuntu أو Debian أو Fedora أو Arch أو openSUSE باستخدام أوامر الحزمة الحالية، ثم قم بتكوين التقاط الحزم المباشر بأمان.

كيفية لعب Slay the Spire على نظام Linux: قم بتثبيته وتشغيله باستخدام Steam

كيفية لعب Slay the Spire على نظام Linux: قم بتثبيته وتشغيله باستخدام Steam

قم بتثبيت Steam على نظام Linux، ثم احصل على نسخة Slay the Spire الأصلية لنظام Linux من مكتبتك، وقم بتشغيلها. يتضمن ذلك خطوات عملية لحل مشاكل بدء التشغيل الشائعة.

كيفية تشغيل لعبة DiRT Rally على نظام لينكس: إعداد Steam وإصلاحات Proton

كيفية تشغيل لعبة DiRT Rally على نظام لينكس: إعداد Steam وإصلاحات Proton

تعلم كيفية تشغيل لعبة DiRT Rally على نظام Linux إذا كنت تمتلكها بالفعل على Steam: قم بتثبيت الإصدار الأصلي، وقم بتشغيله، واستخدم Proton فقط كخيار احتياطي.

كيفية تثبيت ديفوان لينكس من قرص USB قابل للإقلاع

كيفية تثبيت ديفوان لينكس من قرص USB قابل للإقلاع

قم بتثبيت Devuan Excalibur من ملف ISO الخاص بنظام التشغيل المباشر على سطح المكتب. تحقق من التنزيل، أنشئ قرص USB قابل للتشغيل، احمِ الأقسام الموجودة، وأكمل التثبيت باستخدام برنامج Refracta Installer.

كيفية تشغيل لعبة The Forest على نظام Linux باستخدام Steam Proton

كيفية تشغيل لعبة The Forest على نظام Linux باستخدام Steam Proton

قم بتثبيت Steam على نظام Linux، وقم بتمكين Steam Play، واستخدم Proton لتنزيل وتشغيل The Forest، مع إعداد توافق لكل لعبة على حدة إذا لم يبدأ تشغيلها.