外部ドライブへのバックアップが、明白な理由なく失敗する

自動バックアップを設定し、この ガイドに従って /var/discourse/shared/standalone/uploads/var/discourse/shared/standalone/backups を外部ドライブへ移動しました。つまり、以下の app.yml 設定になっています:

volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log
  - volume:
      host: /path/to/external/uploads
      guest: /shared/uploads
  - volume:
      host: /path/to/external/backups
      guest: /shared/backups

管理者には「Backup failed(バックアップに失敗しました)」というメッセージが表示され、そのログは 1 ヶ月間 こちら で確認できます。

このエラーメッセージは明らかな理由なく表示されますが、バックアップ自体は作成されているようです。ls -la /path/to/external/backups/default/ の出力は以下の通りです:

total 322618
drwxrwxrwx 2 root root         0 Sep 27  2019 .
drwxrwxrwx 2 root root         0 Jun 27  2019 ..
-rwxrwxrwx 1 root root 327798879 Mai  1 04:21 xxx-yyyy-2021-05-01-020805-v20210420015635.tar.gz

何が起きているのか、何か心当たりはありますか?当社の Discourse バージョンは 2.7.0.beta8 (656b0ae39e) です。バックアップ設定は以下の通りです:

権限の問題かもしれません。ディレクトリを全ユーザーが書き込めるように設定してみてください。

どのディレクトリのことをおっしゃっていますか?バックアップが含まれているディレクトリ(/path/to/external/backups/default)は、すでに誰でも書き込み可能です(上記の ls -la の出力をご参照ください)。

44 秒後にのみ失敗します。

gzip は完了時に圧縮された 2 つ目のファイルを作成し、元の未圧縮ファイルを削除します。つまり、少なくとも 327 MB のディスク容量が必要です。この操作が外部ドライブで行われているため、エラーメッセージが隠れてしまう可能性があります。推測:ディスク容量が不足しているのではないでしょうか?

SAMBA共有に gocryptfs をマウントしていますが、利用可能な領域は十分にあるはずです。df -h の出力は以下の通りです。

Filesystem                            Size  Used Avail Use% Mounted on
udev                                  1,9G     0  1,9G   0% /dev
tmpfs                                 385M  1,5M  384M   1% /run
/dev/mapper/hermes--vg-root            36G   21G   14G  60% /
tmpfs                                 1,9G     0  1,9G   0% /dev/shm
tmpfs                                 5,0M     0  5,0M   0% /run/lock
tmpfs                                 1,9G     0  1,9G   0% /sys/fs/cgroup
/dev/sda1                             704M  215M  439M  33% /boot
//xxx.file.core.windows.net/storage2  5,0T  491M  5,0T   1% /mnt/storage2/cipher
/mnt/storage2/cipher                  5,0T  491M  5,0T   1% /mnt/storage2/plain
tmpfs                                 385M     0  385M   0% /run/user/1000

注目すべきは、「はい(アップロードを含めない)」を選択した後に手動バックアップが成功したことです。ログはこちらです。したがって、失敗は圧縮されるデータ量に関連している可能性があります。

その後、バックアップを再度内部ドライブに移動したところ、アップロードを含めた場合でも手動バックアップが正常に動作するようになりました。ログはこちらです。

どうやらこの失敗は、当社の gocryptfs / SAMBA 構成に固有のもののようです。それでも、さらに調査するためのアイデアをお持ちの方がいれば、ぜひお聞かせください。具体的に何が gzip に「Operation not permitted」と言わせているのでしょうか。