gcsfuse монтирует выходы со статусом 1

Пытаюсь использовать gcsfuse, но когда я запускаю

gcsfuse <bucket> /target/dir

Я продолжаю получать эту ошибку

daemonize.Run: readFromProcess: sub-process: mountWithArgs: mountWithConn: Mount: mount: fusermount: exit status 1

Я делаю это из экземпляра GCE с полными разрешениями доступа API к сервисам Google Cloud

Папка существует, и я в группе предохранителей.

Я попытался запустить все переключатели отладки, но они не обнаружили ничего полезного

> gcsfuse --uid "33" --gid "33" --debug_fuse --debug_gcs --debug_http --debug_invariants bucket-name /target/dir
Using mount point: /target/dir
Opening GCS connection...
Opening bucket...
Mounting file system...
daemonize.Run: readFromProcess: sub-process: mountWithArgs: mountWithConn: Mount: mount: fusermount: exit status 1

информация о версии: gcsfuse версия 0.15.0 (Go версия go1.5.2)

5 ответов

Решение

my /target/dir принадлежал www-data:fuse, но у группы не было разрешения на запись в каталог до монтирования.

У меня была такая же проблема, когда я пытался смонтировать папку в контейнере докера. Однако оказалось, что контейнер должен работать в привилегированном режиме, чтобы gcsfuse работал.

docker --privileged имя-образа-докера

Приведенная выше команда работает нормально. В качестве альтернативы, если кто-то использует кубернеты, контекст безопасности необходимо указать следующим образом:

  containers:
  - name: application-name
    securityContext:
      privileged: true

Я получил такое же сообщение об ошибке, но решение было другим. У основной учетной записи ServiceAccount отсутствовало разрешение на доступ к этому сегменту.

НО

Я смог выяснить это при запуске следующих флагов отладки в команде

      gcsfuse --foreground --debug_fuse --debug_fs --debug_gcs --debug_http -o nonempty  bucket_name /local/mount/folder

gcsfuse версии 0.41.6 (версия Go go1.18.4) | Центос7

В моем случае я обнаружил, что хотя папка монтирования имеет разрешение на чтение/запись как для пользователя, так и для группы, некоторые подпапки не имеют разрешения на запись для группы. Это произошло потому, что эти папки были смонтированы в контейнере докеров.

В этом случае просто добавьте групповое разрешение с помощью

      sudo chmod g+w /mnt/folder/mysubfolder

Однако иногда вы не можете установить ковш, так как вам просто нужно бытьrootпользователь; это происходит, если вы выключите виртуальную машину. В этом случае просто войдите как root и смонтируйте ведро:

      sudo -sH
sudo gcsfuse --uid $(id -u) --gid $(id -g) --dir-mode 775 --file-mode 775 -o allow_other mybucket /mnt/myfolder

Эй, пожалуйста, очистите папку монтирования внутри этого файла каталога, он не должен быть виден, иначе он не будет работать.

Другие вопросы по тегам