#google-cloud-platform #google-cloud-storage #samba #fuse #gcsfuse
#google-облачная платформа #google-облачное хранилище #samba #fuse #gcsfuse
Вопрос:
Я пытаюсь смонтировать хранилище Google Cloud Storage с помощью плагина Google Fuse и предоставить общий доступ к нему через Samba.
Установка корзины работает нормально. Я использую следующую команду:
gcsfuse --uid 1001 --gid 1002 --only-dir data -o allow_other bucket-name /mnt/bucket/data
-o allow_other
Флаг необходим, поскольку пользователю samba необходим доступ к каталогу.
Моя конфигурация общего доступа к samba приведена ниже.
[myshare]
path = /mnt/bucket/data
valid users = %U
writable = yes
durable handles = yes
kernel oplocks = no
kernel share modes = no
posix locking = no
ea support = yes
browseable = yes
read only = No
inherit acls = yes
Теперь, кажется, все работает. Я могу создавать файлы в подключенном облачном хранилище, если я подключен к серверу по ssh. Я даже могу подключиться к общему ресурсу samba и прочитать все файлы.
Есть только одна проблема. И это действительно странно. Если я попытаюсь загрузить файлы напрямую через samba, произойдет сбой (код ошибки -50 в Mac Finder, в разрешении cp отказано). Но, как ни странно, файл, который я пытаюсь загрузить, создается на общем ресурсе как пустой файл. Похоже, что мне разрешено создавать файлы, поскольку очевидно, что один из них создан, но клиент, похоже, не понимает этого и завершается сбоем без загрузки полного файла.
Есть ли проблема с моей настройкой? Разве невозможно предоставить общий доступ к дискам, подключенным к fuse, через samba?
Комментарии:
1. Существует вероятность, что Finder попытается записать альтернативный поток данных в дополнение к файлу. В smb.conf попробуйте настроить как для Mac поддержку vfs «fruit», так и для streams поддержку vfs «streams_xattr»:
vfs objects = fruit streams_xattr
есть вероятность, что этот fuse fs не будет поддерживать расширенные атрибуты. Альтернативой xattr является сохранение потоков в виде файлов с «хранилищем». В таком случае:vfs objects = fruit streams_depot
2. @OrenKishon Настройка streams_depot действительно работала, по крайней мере, для командной строки «cp». Finder по-прежнему выдает то же сообщение об ошибке. К сожалению, -50 — это очень общее сообщение об ошибке. У вас есть другая идея? Но спасибо и за это. По крайней мере, теперь это работает с командной строкой…
3. Следующим шагом должно быть отслеживание с помощью Wireshark (filter:
SMB2
) точного момента перетаскивания. Посмотрите, какая именно операция вызывает ошибку.