디스크 공간 부족으로 Discourse 재빌드 실패

image

작업을 수행하려고 할 때 aforementioned 오류가 발생합니다. 왜 이런 일이 일어나는지는 전혀 모르겠습니다.

다음처럼

./docker rebuild app

을 실행해 보고 어떤 일이 일어나는지 확인해 보셨나요? 먼저 git pull을 실행할 필요가 더 이상 없다고 생각합니다.

그렇지 않다면 app.conf 파일을 검토해야 할 수도 있습니다. 최근에 수정하신 적이 있나요?

image

아니요, 최근에 수정한 적은 없습니다. 어제 웹사이트가 충돌해서 클리닝을 실행한 뒤 rm /var/discourse/shared/standalone/backups/default/*를 실행했습니다.
그 다음 ./launcher rebuild app을 사용해 재빌드했습니다.

그 후 웹사이트가 다시 작동하기 시작했는데, 지금은 다시 죽은 상태입니다.

죄송합니다. 다음을 의미했습니다.

./launcher rebuild app

정확한 작업을 하고 계십니다.

Discourse Doctor를 확인해 보셨나요?

아, 저장 공간 문제군요. 지금 공간을 확보하려면 어떻게 해야 하나요? 초보자라 죄송하지만 방법을 잘 모르겠습니다.

방금 discourse-doctor를 실행했는데, 저장 공간이 가득 찼다는 메시지가 여러 줄로 표시되었습니다.

서버에 다른 것이 있나요? 없다면, 삭제할 수 있는 Discourse 백업일 가능성이 큽니다.

백업 삭제 과정을 다시 한번 설명해 주실 수 있을까요? 그 과정을 제대로 이해한 적이 없어서요. 정말 오랜 시간 동안 저장소 문제를 겪고 있어서 이번 기회에 확실히 해결하고 싶습니다.

서버에는 다른 것이 없습니다.

좋은 첫 단계는 다음을 실행하는 것입니다:

./launcher cleanup 

이 방법으로 해결되지 않으면 다음을 시도해 보세요:

./discourse-doctor

여전히 문제가 해결되지 않으면 다음 경로에서 오래된 백업을 삭제하는 것을 고려해 볼 수 있습니다:

/var/discourse/shared/standalone/backups/default

이 방법들이 어떻게 작동하는지 알려주세요!

안녕하세요 @seshu_ram

컨테이너가 재빌드될 때 고아 이미지(orphan images)가 남는 경우가 많습니다. 컨테이너를 자주 재빌드했다면, 이러한 이미지들이 상당한 공간을 차지할 수 있습니다.

실제로 최근 저희 서버에서는 이러한 고아 이미지들이 100GB 이상을 차지하고 있다가 제가 삭제하기 전까지 그대로 방치되어 있었습니다. 쉽게 확인할 수 있습니다.

아래 명령어의 출력을 게시해 주세요:

docker images

출력은 텍스트(복사-붙여넣기)로, 펜스드 마크다운(fenced markdown) 형식을 사용하여 게시해 주세요. 터미널 스크린샷은 모바일에서 읽기 어렵습니다.

감사합니다.

참고:

launcher cleanup 명령도 이러한 고아 이미지들을 정리(prune)합니다(아마도 지난 24시간 기준으로 작동하는 것 같습니다):

if tty >/dev/null; then
      read -p "Would you like to attempt to recover space by cleaning docker images and containers in the system? (y/N)" -n 1 -r
      echo
      if [[ $REPLY =~ ^[Yy]$ ]]
      then
        $docker_path container prune --force --filter until=1h >/dev/null
        $docker_path image prune --all --force --filter until=1h >/dev/null
        echo "If the cleanup was successful, you may try again now"
      fi
    fi

@neounix

local_discourse/app   latest              674fd54f165f        4 minutes ago       2.5GB
<none>                <none>              f3a4104c3f75        22 hours ago        2.5GB
discourse/base        2.0.20201221-2020   c0704d4ce2b4        11 days ago         2.11GB ```

이 방법으로 해결되었습니다. 제 웹사이트가 이제 라이브 상태입니다. 정말 감사합니다. 시간을 내주셔서 감사합니다! 큰 도움이 되었습니다.

@tobiaseigen

hey @seshu_ram

참고로: 이 고아 이미지를 삭제하여 디스크 공간을 조금 더 확보할 수 있습니다:

 f3a4104c3f75   
docker image rm  f3a4104c3f75  

런처의 정리 프로세스는(제가 기억하기로는) 24시간 미만인 이미지를 삭제하지 않습니다.

아니면, 몇 시간 후에 원하시는 대로 다시 정리를 실행하셔도 됩니다.

최근 Discourse의 명령줄 업데이트가 상당한 디스크 공간을 차지하는 것 같다는 점을 알게 되었습니다.

root@endoffice-b:/var/discourse# ./launcher cleanup
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] Y
Total reclaimed space: 0B
WARNING! This will remove all images without at least one container associated to them.
Are you sure you want to continue? [y/N] Y
Deleted Images:
deleted: sha256:284403a252ba061b3ab97f4bfe293ac5e8f05f39ada429d718f58e56191251c2
deleted: sha256:6b6899d54d4dd1f21568956b652975f7c0b9e439978b8cc53036efc46baaf971
untagged: discourse/base:2.0.20211118-0105
untagged: discourse/base@sha256:74b41fffd4f05433eb7c9b72954b1f5f8b15cd0e802bb724c96b7d699c3f6fa1
deleted: sha256:b6cc7cf8974a6ef7bb64c36f4592af261cda0d5565bd91da603568ce26968048
deleted: sha256:c1455b2fdbca024c36c4e75746051b77c3637020cfa1e36a41440292a8c39424
deleted: sha256:77b323d4ec74aad770337f99a60e862a64ccc53f4775b5f4945df0e606f78b90
untagged: discourse/base:2.0.20220128-1817
untagged: discourse/base@sha256:dcb4eb8e41a2e84f776f80587f308d167a54ad7ff4ba616199891828bbd4ddae

Total reclaimed space: 3.54GB

두 인스턴스 모두에서 이런 일이 발생했으며, 다른 인스턴스는 3.538GB였습니다 :slight_smile:

보통 저는 Discourse 업데이트 후 ./launcher cleanup를 실행하는 것에 대해 꽤 엄격하게 지켜왔고, 한 달에 한 번 정도 업데이트를 하므로, 이는 마지막 업데이트 자체가 거의 4GB의 디스크 공간을 차지했다는 것을 의미합니다. @falco @sam 이 문제를 우려해야 할까요? :thinking:

생각해 보면 어느 정도 불가피한 것 같습니다. 지난 몇 달 동안 베이스 이미지를 2번 업데이트했거든요. 우리가 할 수 있는 일은 많지 않습니다. 서버에서 정리 작업을 수행한 결과, 베이스 이미지 2개가 삭제된 것으로 보입니다.

@anon43908006, 가이드가 여기에 있습니다:

도메인 변경 시 고려해야 할 많은 사항들을 다루고 있으니 확인해 보세요. :slight_smile:

정리하자면, 업그레이드의 전체 크기가 증가하는 것에 대해 할 수 있는 일이 없다는 말인가요, 아니면 최근 베이스 이미지 활동이 급증한 것에 대해 할 수 있는 일이 없다는 말인가요(이것은 미래에는 큰 영향을 미치지 않을 것입니다)?

저는 놀랐습니다. 사용자가 매우 적은 아주 작은 디스코러스(Discourse) 인스턴스들을 여러 개 운영하는데, 최근 이 문제에 계속 부딪히고 있습니다. 업로드나 그런 것은 없습니다. 클라우드 설치 환경에서 디스크 공간(2GB RAM/1vCPU/50GB SSD)에 대해 한 단계 더 큰 크기를 권장하는 시점에 도달하고 있는 것은 아닌지 궁금합니다. :thinking:

채팅에서 @falco에게 이 부분에 대해 물어보았는데, 최근 종속성이 업데이트되면서 베이스 이미지 변경이 많이 발생했다고 합니다. 그래서 지난 약 6개월간 업그레이드 시 디스크 공간 사용량이 평소보다 많았다고 합니다.

도메인 이름 변경 중에 문제가 발생했다는 소식을 전해 주셔서 죄송합니다, @anon43908006.

여기가 Support 채널이므로, 정확한 상황을 설명하는 새로운 토픽을 만들어 주시기를 권해 드립니다. 이 토픽에서는 일반적인 패턴에 대해 논의하고 있을 뿐, 여러분의 상황은 더 많은 논의가 필요할 수 있기 때문입니다.

원하시면 저(@maiki)를 언급해 주시면 여러분의 사이트에서 일어나고 있는 상황에 대해 기꺼이 논의해 드리겠습니다. :slight_smile:

Discourse를 백업하려고 하면 동일한 No space left on device 오류가 발생합니다:

[2022-11-15 08:23:38] EXCEPTION: /var/www/discourse/lib/discourse.rb:131:in `exec': Failed to gzip archive.

gzip: /var/www/discourse/public/backups/default/forum-leasehackr-2022-11-15-080439-v20221110175456.tar.gz: No space left on device

백업 및 이미지 업로드는 DigitalOcean Spaces에 설정되어 있으며, 최근 몇 달 전까지는 수년간 문제없이 작동해 왔습니다. 지금까지 시도해 본 내용은 다음과 같습니다:

  1. DO Space의 모든 숨겨진 멀티파트 업로드를 삭제했습니다. DO Space에는 100GiB 이상의 저장 공간이 사용 가능한 상태여야 합니다.
  2. 다음 명령어를 사용하여 재구축 및 정리를 시도해 보았습니다:
cd /var/discourse
apt-get update
apt-get upgrade
apt-get autoclean
apt-get autoremove
./launcher rebuild app
./launcher cleanup

백업이 계속 실패하는 이유가 무엇인지 아시는 분 계신가요? 감사합니다!