فشل الترقية: مساحة القرص منخفضة - ملفات التراكب الزائدة؟

حسنًا، تنهد – لقد علقت في ترقية فاشلة.

أنا على خادم افتراضي خاص بسعة 25 جيجابايت، وأستخدم تثبيت Docker المدعوم.

ترقية docker_manager عبر لوحة الإدارة تمت بنجاح.

ترقية Discourse من v3.2.0.beta1 +125 إلى v3.2.0.beta3 +325 عبر لوحة الإدارة فشلت، لذا حاولت التثبيت عبر سطر الأوامر:

cd /var/discourse
git pull
./launcher rebuild app

… والذي فشل أيضًا:

لديك أقل من 5 جيجابايت من المساحة الحرة على القرص حيث يوجد /var/lib/docker. ستحتاج إلى مساحة أكبر للمتابعة
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda2        23G   22G  640M  98% /

يبدو أن السبب هو ملفين “overlay” بحجم 18 جيجابايت:

root@forum:/var/discourse# df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs            95M  1.4M   94M   2% /run
/dev/vda2        23G   18G  4.1G  82% /
tmpfs           474M     0  474M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/vda1       511M  6.1M  505M   2% /boot/efi
tmpfs            95M  4.0K   95M   1% /run/user/0
overlay          23G   18G  4.1G  82% /var/lib/docker/overlay2/8a331589d7fa9046a6ef73489cc830c2583cb76c9174125c8bfe1064d58cd503/merged
overlay          23G   18G  4.1G  82% /var/lib/docker/overlay2/d56574358c8edbc9bc1fb50022585b854462a8ce56daa636b07f3a3771949251/merged

(ثلاثة ملفات بحجم 18 جيجابايت على خادم بسعة 25 جيجابايت؟ هذا 54 جيجابايت…)

يبدو أن شيئًا ما يمكن استعادته:

root@forum:/var/discourse# docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          2         2         4.3GB     3.334GB (77%)
Containers      2         2         1.849GB   0B (0%)
Local Volumes   0         0         0B        0B
Build Cache     0         0         0B        0B

… لكنني لست متأكدًا مما هو أو كيف.

محتويات /var/discourse/shared/standalone/backups/default لا تتجاوز 67 ميجابايت.

أوقفت docker باستخدام systemctl stop docker وحاولت هذه الأوامر دون جدوى:

docker system prune -a
docker buildx prune --all
docker builder prune --all

… جميعها أبلغت عن تحرير 0 بايت.

لدي صورتان لـ Docker، واحدة لـ Discourse وواحدة لـ… “لا شيء؟”

root@forum:/var/discourse/image# docker images
REPOSITORY            TAG       IMAGE ID       CREATED        SIZE
local_discourse/app   latest    5ff1dcfe050c   2 months ago   4.09GB
<none>                <none>    bbaceb5f4a80   2 months ago   214MB

يبدو أن “لا شيء” يشير إلى صورة معلقة أو وسيطة: Why the “none” image appears in Docker and how can we avoid it - Stack Overflow – لكنها صغيرة جدًا لدرجة أنني لا أعتقد أنها أولويتي القصوى.

عندما تصل النصائح في Is it safe to clean docker/overlay2/ - Stack Overflow إلى البحث عن overlays مقابل الصور، أفقد التركيز. هناك 60 مجلدًا مشفرًا في docker/overlay2… من فضلك لا تجعلني أبحث 120 مرة…

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

(وكيف يكون لدي 3 ملفات بحجم 18 جيجابايت على مثيل بسعة 25 جيجابايت..؟)

إذا كان هناك أي شخص مستيقظ في هذا الوقت ولديه أي مدخلات، فسأكون ممتنًا.

فقط للتأكد من الأساسيات، ولكنك جربت ./launcher cleanup وهذا ما تبقى بعد ذلك؟

3 إعجابات

نعم - لم يكن للتنظيف أي تأثير.

إعجابَين (2)

ليس لديك ملفا تراكب بحجم 18 جيجابايت، هذا تضليل. يستخدم Docker نظام overlayfs وهذه مجرد طريقة لعرض القرص الحالي الخاص بك للحاوية. /dev/vda2 هو القرص الخاص بك وهو مثبت في / - هذا هو المكان الذي يجب أن توجه جهودك إليه.

إذا لم يقم ./launcher cleanup بأي شيء، فأفترض أن docker image prune (يزيل الصور المعلقة) لن يفعل ذلك أيضًا. إذا كنت تستخدم هذا الخادم فقط لـ discourse، فقد تحتاج فقط إلى التحقق للتأكد من عدم وجود ملفات/مجلدات كبيرة في دليل المنزل الخاص بك.

3 إعجابات

أوه – حسنًا، هذا صعب من Docker…
لا، عمليات التنظيف لم تستعد أي شيء.
أنا أتصفح /usr باستخدام ncdu… لا يبدو أن هناك أي شيء لا ينتمي بوضوح، على الرغم من أنني لست متأكدًا مما يجب فعله بـ /usr/lib/modules:

  547.2 MiB [###########################] /6.2.0-37-generic
  547.2 MiB [########################## ] /6.2.0-34-generic
    1.2 MiB [                           ] /6.2.0-33-generic
    1.2 MiB [                           ] /6.2.0-32-generic
    1.2 MiB [                           ] /6.2.0-35-generic
    1.2 MiB [                           ] /6.2.0-36-generic

الاستخدام الأكبر على الإطلاق هو الطبقات المتراكبة في /var:

   16.0 GiB [###########################] /var
    4.3 GiB [#######                    ] /usr
    2.3 GiB [###                        ]  swapfile
    1.7 GiB [##                         ] /snap
  289.5 MiB [                           ] /boot

لا يوجد شيء في /snap سوى ما جاء معه:

root@forum:/# snap list
Name    Version       Rev    Tracking         Publisher   Notes
core22  20230801      864    latest/stable    canonical✓  base
lxd     5.19-8635f82  26200  latest/stable/…  canonical✓  -
snapd   2.60.4        20290  latest/stable    canonical✓  snapd

واو – /var/log/journal أصبح كبيرًا!

    1.8 GiB [###########################] /7341e5ac94ae440bbd06f743e242da89
   16.0 MiB [                           ] /7025a9ae870140c1bef8e55211d339dc

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

إعجابَين (2)

حسنًا، لم ينجح ذلك تمامًا، لذا قمت بترقية الخادم إلى 55G. إذا كانت تلك الملفات الكبيرة المتراكبة لا مفر منها، فأعتقد أنه لم يكن هناك خيار حقًا.
اكتملت ترقية Discourse للتو، ويبدو أن الموقع يعمل بشكل جيد على 3.2.0.beta4-dev. :sweat_smile:
شكرًا @JammyDodger و @Stephen على اهتمامكما ومدخلاتكما!

3 إعجابات

نفدت المساحة لدي على خادم Linode VPS بسعة 50 جيجابايت.

فيما يلي بعض الأشياء التي تستهلك مساحة ولم يتم ذكرها بعد. بعضها خاص بـ Discourse، وبعضها عام لأنظمة Linux.

  1. قم بتشغيل ll /lib/modules. لقد فوجئت برؤية حوالي 15 جيجابايت من النوى القديمة التي لم يهتم apt autoremove بإزالتها. يعتقد Claude أنها تم تثبيتها بطريقة غير قياسية، وقام بإنشاء برنامج نصي آمن للإزالة. استغرق الأمر حوالي ساعة ولكنه نجح (قم بتشغيله على مسؤوليتك الخاصة، بالطبع) وتمكنت من تشغيل ./launcher rebuild دون خطأ no space left on device.

  2. لم يقم البرنامج النصي بحذف الرؤوس المقابلة في /usr/src. لهذا، أنشأ ChatGPT برنامجًا نصيًا آخر.

  3. تم استهلاك حوالي نصف جيجابايت من المساحة بواسطة مناطق لغوية غير مفيدة.

  4. تم استهلاك جيجابايت إضافي بواسطة الدليل /var/lib/docker/overlay2/.../merged/home/discourse/.cache.

ربما يكون سؤالًا غبيًا، ولكن ما الذي تحتويه الدلائل merge و diff بالضبط؟ هل يمكن حذف أحدها بأمان في وقت ما؟

إعجاب واحد (1)