Rm: لا يمكن إزالة '/var/run/postgresql': الدليل ليس فارغًا

بعد امتلاكي قرصًا كاملاً وعدم تمكني من نقل صوري، قررت حذف كل شيء، وبدء حاوية discourse جديدة واستخدام النسخة الاحتياطية.

حذفت /var/discourse وقمت بتشغيل docker system prune -a

ثم اتبعت الدليل الرسمي. ولكن… هناك خطأ ما:

./launcher rebuild app
x86_64 arch detected.
Ensuring launcher is up to date
Fordere an von origin
Launcher is up-to-date
2.0.20230222-0048: Pulling from discourse/base
Digest: sha256:XXXX
Status: Image is up to date for discourse/base:2.0.20230222-0048
docker.io/discourse/base:2.0.20230222-0048
/usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups.rb
/usr/local/bin/pups --stdin
I, [2023-03-04T12:04:27.482399 #1]  INFO -- : Reading from stdin
I, [2023-03-04T12:04:27.486188 #1]  INFO -- : > locale-gen $LANG && update-locale
I, [2023-03-04T12:04:28.456925 #1]  INFO -- : Generating locales (this might take a while)...
Generation complete.

I, [2023-03-04T12:04:28.457319 #1]  INFO -- : > mkdir -p /shared/postgres_run
I, [2023-03-04T12:04:28.581971 #1]  INFO -- :
I, [2023-03-04T12:04:28.583082 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2023-03-04T12:04:28.588444 #1]  INFO -- :
I, [2023-03-04T12:04:28.588792 #1]  INFO -- : > chmod 775 /shared/postgres_run
I, [2023-03-04T12:04:28.591995 #1]  INFO -- :
I, [2023-03-04T12:04:28.592147 #1]  INFO -- : > rm -fr /var/run/postgresql
rm: cannot remove '/var/run/postgresql': Directory not empty
I, [2023-03-04T12:04:28.616079 #1]  INFO -- :


FAILED
--------------------
Pups::ExecError: rm -fr /var/run/postgresql failed with return #<Process::Status: pid 16 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params "rm -fr /var/run/postgresql"
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.

هل يمكن لأحد مساعدتي في هذا؟

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

هل أوقفت الحاوية القديمة؟

docker stop app
docker rm app

إعجابَين (2)

حسنًا، بينما سيكون هذا بالتأكيد من شيمي، هذه المرة الأمر ليس بهذه البساطة:

# sudo -s
# cd /var/discourse/
# docker stop app
Error response from daemon: No such container: app
# docker rm app
Error: No such container: app

أعتقد أن المشكلة قد تكون أنني نقلت كل شيء من الموقع الافتراضي القديم لصور docker إلى المكان الجديد والآن لا يمكن لـ discourse docker الوصول إلى نظام الملفات الذي يتوقعه؟

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

/var/run/postgresql غير موجود.
ليس لدي أي فكرة لماذا لم يعد هذا يعمل. :cry:

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

كيف تبدو ملف app.yml الخاص بك؟

إعجاب واحد (1)
## هذا هو قالب حاوية Docker Discourse المستقل والمتكامل
##
## بعد إجراء تغييرات على هذا الملف، يجب عليك إعادة البناء
## /var/discourse/launcher rebuild app
##
## كن حذرًا جدًا عند التحرير!
## ملفات YAML حساسة للغاية للأخطاء في المسافات البيضاء أو المحاذاة!
## قم بزيارة http://www.yamllint.com/ للتحقق من صحة هذا الملف حسب الحاجة

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## قم بإلغاء التعليق على هذين السطرين إذا كنت ترغب في إضافة Lets Encrypt (https)
#  - "templates/web.ssl.template.yml"
#  - "templates/web.letsencrypt.ssl.template.yml"

## ما هي منافذ TCP/IP التي يجب أن تعرضها هذه الحاوية؟
## إذا كنت تريد أن تشارك Discourse منفذًا مع خادم ويب آخر مثل Apache أو nginx،
## راجع https://meta.discourse.org/t/17247 للحصول على التفاصيل
expose:
#  - "7890:80"   # http
#  - "7891:443" # https

labels:
  app_name: discourse
  traefik.enable: true
  traefik.http.routers.discourse.entrypoints: http
  traefik.http.routers.discourse.rule: Host(`talk.spielleiten.de`)      ## أدخل نطاقك هنا
  traefik.http.middlewares.discourse-https-redirect.redirectscheme.scheme: https
  traefik.http.routers.discourse.middlewares: discourse-https-redirect
  traefik.http.routers.discourse-secure.entrypoints: https
  traefik.http.routers.discourse-secure.rule: Host(`talk.spielleiten.de`)      ## أدخل نطاقك هنا
  traefik.http.routers.discourse-secure.tls: true
  traefik.http.routers.discourse-secure.tls.certresolver: http
  traefik.http.routers.discourse-secure.service: discourse
  traefik.http.services.discourse.loadbalancer.server.port: 80
  traefik.docker.network: proxy

docker_args:
  - "--network=proxy"

networks:
  - proxy

params:
  db_default_text_search_config: "pg_catalog.english"

  ## قم بتعيين db_shared_buffers إلى حد أقصى 25٪ من الذاكرة الإجمالية.
  ## سيتم تعيينه تلقائيًا بواسطة bootstrap بناءً على الذاكرة العشوائية المكتشفة، أو يمكنك تجاوز ذلك
  #db_shared_buffers: "256MB"

  ## يمكن أن يحسن أداء الفرز، ولكنه يضيف استخدام الذاكرة لكل اتصال
  #db_work_mem: "40MB"

  ## أي مراجعة Git يجب أن تستخدمها هذه الحاوية؟ (الافتراضي: tests-passed)
  #version: tests-passed

env:
  LC_ALL: de_DE.UTF-8
  LANG: de_DE.UTF-8
  LANGUAGE: dn_DE.UTF-8
  EMBER_CLI_PROD_ASSETS: 1
  # DISCOURSE_DEFAULT_LOCALE: en

  ## كم عدد طلبات الويب المتزامنة التي يمكن دعمها؟ يعتمد على الذاكرة ووحدات المعالجة المركزية.
  ## سيتم تعيينه تلقائيًا بواسطة bootstrap بناءً على وحدات المعالجة المركزية المكتشفة، أو يمكنك تجاوز ذلك
  #UNICORN_WORKERS: 3

  ## TODO: اسم النطاق الذي ستستجيب له هذه النسخة من Discourse
  ## مطلوب. لن تعمل Discourse برقم IP عارٍ.
  DISCOURSE_HOSTNAME: talk.spielleiten.de

  ## قم بإلغاء التعليق إذا كنت تريد بدء تشغيل الحاوية بنفس
  ## اسم المضيف (-h) كما هو محدد أعلاه (الافتراضي "hostname-config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: قائمة بالبريد الإلكتروني المفصولة بفواصل والتي ستصبح مسؤولة ومطورة
  ## عند التسجيل الأولي مثال 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'XXX'

  ## TODO: خادم البريد SMTP المستخدم للتحقق من الحسابات الجديدة وإرسال الإشعارات
  # عنوان SMTP واسم المستخدم وكلمة المرور مطلوبة
  # تحذير الحرف '#' في كلمة مرور SMTP يمكن أن يسبب مشاكل!
[تم الحذف لأسباب الخصوصية]

  ## عنوان CDN http أو https لهذه النسخة من Discourse (تم تكوينه للسحب)
  ## راجع https://meta.discourse.org/t/14857 للحصول على التفاصيل
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

  ## مفتاح Maxmind لتحديد الموقع الجغرافي للعنوان IP للبحث عن عنوان IP
  ## راجع https://meta.discourse.org/t/-/137387/23 للحصول على التفاصيل
  DISCOURSE_MAXMIND_LICENSE_KEY: XXX

## حاوية Docker عديمة الحالة؛ يتم تخزين جميع البيانات في /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## المكونات الإضافية تذهب هنا
## راجع https://meta.discourse.org/t/19157 للحصول على التفاصيل
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

## أي أوامر مخصصة لتشغيلها بعد البناء
run:
  - exec: echo "Beginning of custom commands"
  ## إذا كنت تريد تعيين عنوان البريد الإلكتروني "من" لتسجيلك الأول، قم بإلغاء التعليق والتغيير:
  ## بعد الحصول على بريد التسجيل الأول، أعد التعليق على السطر. يحتاج فقط إلى التشغيل مرة واحدة.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "End of custom commands"

لقد نجح هذا حتى قمت بتغيير daemon.json:

"data-root": "/srv/new-drive/new-docker-root"
إعجاب واحد (1)

إذًا هذه هي مشكلتك. هذه مشكلة في دوكر، وليست مشكلة في ديسكورس.

تخميني هو أن الأمر يتعلق بالأذونات أو أن محرك الأقراص غير موجود بطريقة ما.

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

أفترض ذلك. لكن جميع الخدمات الأخرى في دوكر تعمل كما هو متوقع! إنها فقط الخطاب الذي لن يحاول الوصول إلى جذر البيانات الجديد.
لهذا السبب كنت آمل في العثور على حل هنا.

إعجابَين (2)

قد تحتاج إلى تغيير وحدات التخزين لتكون في مكان آخر غير /var/discourse/shared/standalone

أفترض أنك قمت بالفعل بحذف /var/discourse/shared؟

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

لقد قمت بتشغيل rm -R /var/discourse واتبعت دليل التثبيت الرسمي كإحدى الخطوات الأولى.

سأجرب ذلك!

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

لقد جربت دليلًا على نفس القرص وكذلك مجلدًا في “data-root” - لم يتغير شيء.

لماذا يفشل أمر rm؟ أفترض أن هذا لا يزال نظام ملفات نظام التشغيل (على عكس ما هو داخل الحاوية) - وتنجح هذه العملية إذا كررت الأمر في الواجهة.

إعجابَين (2)

أعتقد أن أمر الحذف هذا موجود داخل الحاوية التي يتم بناؤها.

لا أعتقد أن لدي المزيد من الأفكار.

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

شكراً جزيلاً لك على كل حال!

إعجابَين (2)

هذا الدليل يرتبط بـ /var/discourse/shared/standalone/postgres_run في المضيف.

إعجابَين (2)
# ls -lsa /var/discourse/shared/standalone
إجمالي 16
4 drwxr-xr-x 4 root            root             4096 6 مارس 08:34 .
4 drwxr-xr-x 3 root            root             4096 6 مارس 08:34 ..
4 drwxr-xr-x 3 root            root             4096 6 مارس 08:34 log
4 drwxrwxr-x 2 systemd-resolve systemd-timesync 4096 6 مارس 08:34 postgres_run
# ls -lsa /var/discourse/shared/standalone/postgres_run/
إجمالي 8
4 drwxrwxr-x 2 systemd-resolve systemd-timesync 4096 6 مارس 08:34 .
4 drwxr-xr-x 4 root            root             4096 6 مارس 08:34 ..

هل هذا ما تتوقعه؟ يعرض df مساحة كافية، لذا فهي ليست مشكلة امتلاء القرص.

# ./discourse-doctor
DISCOURSE DOCTOR Mo 6. Mär 18:54:01 CET 2023
OS: Linux dracula 5.4.0-139-generic #156-Ubuntu SMP Fri Jan 20 17:27:18 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

تم العثور على containers/app.yml

==================== إعدادات YML ====================
[تم الحذف لأسباب تتعلق بالخصوصية]

==================== معلومات DOCKER ====================
DOCKER VERSION: Docker version 20.10.12, build 20.10.12-0ubuntu2~20.04.1

عمليات DOCKER (docker ps -a)

CONTAINER ID   IMAGE                                        COMMAND                  CREATED      STATUS                 PORTS                                                                      NAMES
f6d3f502384f   cthulhoo/ttrss-fpm-pgsql-static:latest       ”/opt/tt-rss/updater…”   4 days ago   Up 9 hours             9000/tcp                                                                   ttrss-docker_updater_1
fb0c774b31cb   cthulhoo/ttrss-web-nginx:latest              ”/docker-entrypoint.…”   4 days ago   Up 9 hours (healthy)   127.0.0.1:8280->80/tcp                                                     ttrss-docker_web-nginx_1
83a32795b305   cthulhoo/ttrss-fpm-pgsql-static:latest       ”/opt/tt-rss/dcron.s…”   4 days ago   Up 9 hours             9000/tcp                                                                   ttrss-docker_backups_1
c211bc93f368   cthulhoo/ttrss-fpm-pgsql-static:latest       ”/bin/sh -c ${SCRIPT…”   4 days ago   Up 9 hours             9000/tcp                                                                   ttrss-docker_app_1
4ecb89c6bb9f   postgres:12-alpine                           ”docker-entrypoint.s…”   4 days ago   Up 9 hours             5432/tcp                                                                   ttrss-docker_db_1
c668703d805d   traefik:latest                               ”/entrypoint.sh trae…”   4 days ago   Up 9 hours             0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   traefik
f67a63243f13   ghcr.io/paperless-ngx/paperless-ngx:latest   ”/sbin/docker-entryp…”   4 days ago   Up 9 hours (healthy)   0.0.0.0:8000->8000/tcp, :::8000->8000/tcp                                  paperless-web
d2fbf8682efb   postgres:13                                  ”docker-entrypoint.s…”   4 days ago   Up 9 hours             5432/tcp                                                                   paperless-db
8284f03fdcd0   redis:6.0                                    ”docker-entrypoint.s…”   4 days ago   Up 9 hours             6379/tcp                                                                   paperless-redis
ab29487743b0   tootsuite/mastodon                           ”/usr/bin/tini -- no…”   4 days ago   Up 9 hours (healthy)   3000/tcp, 4000/tcp                                                         mastodon_streaming_1
a117f5e785f8   tootsuite/mastodon                           ”/usr/bin/tini -- bu…”   4 days ago   Up 9 hours (healthy)   3000/tcp, 4000/tcp                                                         mastodon_sidekiq_1
5a4a7e99230c   tootsuite/mastodon                           ”/usr/bin/tini -- ba…”   4 days ago   Up 9 hours (healthy)   3000/tcp, 4000/tcp                                                         mastodon_web_1
5484d4dd39b6   postgres:14-alpine                           ”docker-entrypoint.s…”   4 days ago   Up 9 hours (healthy)   5432/tcp                                                                   mastodon_db_1
ecb2e7cbdc0b   redis:7-alpine                               ”docker-entrypoint.s…”   4 days ago   Up 9 hours (healthy)   6379/tcp                                                                   mastodon_redis_1

c211bc93f368   cthulhoo/ttrss-fpm-pgsql-static:latest       ”/bin/sh -c ${SCRIPT…”   4 days ago   Up 9 hours             9000/tcp                                                                   ttrss-docker_app_1

تطبيق Discourse قيد التشغيل

==================== الإضافات ====================
          - git clone https://github.com/discourse/docker_manager.git

لم يتم اكتشاف أي إضافات غير رسمية.

انظر https://github.com/discourse/discourse/blob/main/lib/plugin/metadata.rb للحصول على القائمة الرسمية.

========================================
إصدار Discourse في talk.spielleiten.de: لم يتم العثور عليه
إصدار Discourse في localhost: لم يتم العثور عليه

==================== معلومات الذاكرة ====================
RAM (MB):

              إجمالي      مشغول       فارغ       مشترك       مؤقت       متاح
الذاكرة:        7870        2292         141        4207        5436        1101
التبديل:        2047         580        1467

==================== فحص مساحة القرص ====================
---------- مساحة قرص نظام التشغيل ----------
نظام الملفات    الحجم المستخدم المتاح  النسبة المئوية  نقطة التركيب
/dev/sda2       109G     68G   36G   66% /
/dev/md0        3.7T    3.1T  581G   85% /mnt/raid

==================== معلومات القرص ====================
القرص /dev/sda: 111.81 GiB، 120034123776 بايت، 234441648 قطاعات
طراز القرص: Samsung SSD 840
الوحدات: قطاعات 1 * 512 = 512 بايت
حجم القطاع (منطقي/فعلي): 512 بايت / 512 بايت
حجم الإدخال/الإخراج (الحد الأدنى/الأمثل): 512 بايت / 512 بايت
نوع تسمية القرص: gpt
معرف القرص: F889FA6C-2FB7-44B6-8CDF-1E6A05B9E33D

الجهاز       البداية      النهاية  القطاعات  الحجم النوع
/dev/sda1     2048   1050623   1048576   512M نظام EFI
/dev/sda2  1050624 234440703 233390080 111.3G نظام ملفات Linux

القرص /dev/sdb: 186.32 GiB، 200049647616 بايت، 390721968 قطاعات
طراز القرص: SAMSUNG HD200HJ
الوحدات: قطاعات 1 * 512 = 512 بايت
حجم القطاع (منطقي/فعلي): 512 بايت / 512 بايت
حجم الإدخال/الإخراج (الحد الأدنى/الأمثل): 512 بايت / 512 بايت
نوع تسمية القرص: dos
معرف القرص: 0x13e913e8

الجهاز      Boot البداية      النهاية  القطاعات  الحجم النوع
/dev/sdb1         2048 390721967 390719920 186.3G 83 Linux

القرص /dev/sdc: 1.84 TiB، 2000398934016 بايت، 3907029168 قطاعات
طراز القرص: SAMSUNG HD203WI
الوحدات: قطاعات 1 * 512 = 512 بايت
حجم القطاع (منطقي/فعلي): 512 بايت / 512 بايت
حجم الإدخال/الإخراج (الحد الأدنى/الأمثل): 512 بايت / 512 بايت
نوع تسمية القرص: dos
معرف القرص: 0x00000000

الجهاز      Boot البداية       النهاية   القطاعات الحجم النوع
/dev/sdc1           63 3907024064 3907024002  1.8T fd اكتشاف تلقائي لـ Linux RAID

القرص /dev/sde: 1.84 TiB، 2000398934016 بايت، 3907029168 قطاعات
طراز القرص: SAMSUNG HD203WI
الوحدات: قطاعات 1 * 512 = 512 بايت
حجم القطاع (منطقي/فعلي): 512 بايت / 512 بايت
حجم الإدخال/الإخراج (الحد الأدنى/الأمثل): 512 بايت / 512 بايت
نوع تسمية القرص: dos
معرف القرص: 0x54cd8732

الجهاز      Boot البداية       النهاية   القطاعات الحجم النوع
/dev/sde1           63 3907024064 3907024002  1.8T fd اكتشاف تلقائي لـ Linux RAID

القرص /dev/sdd: 1.84 TiB، 2000398934016 بايت، 3907029168 قطاعات
طراز القرص: SAMSUNG HD203WI
الوحدات: قطاعات 1 * 512 = 512 بايت
حجم القطاع (منطقي/فعلي): 512 بايت / 512 بايت
حجم الإدخال/الإخراج (الحد الأدنى/الأمثل): 512 بايت / 512 بايت
نوع تسمية القرص: dos
معرف القرص: 0xd4a5e07f

الجهاز      Boot البداية       النهاية   القطاعات الحجم النوع
/dev/sdd1           63 3907024064 3907024002  1.8T fd اكتشاف تلقائي لـ Linux RAID

القرص /dev/md0: 3.65 TiB، 4000792182784 بايت، 7814047232 قطاعات
الوحدات: قطاعات 1 * 512 = 512 بايت
حجم القطاع (منطقي/فعلي): 512 بايت / 512 بايت
حجم الإدخال/الإخراج (الحد الأدنى/الأمثل): 65536 بايت / 131072 بايت

==================== نهاية معلومات القرص ====================

==================== تم! ====================

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