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
Эй, пожалуйста, очистите папку монтирования внутри этого файла каталога, он не должен быть виден, иначе он не будет работать.