Общий доступ к диску, подключенному к Google Fuse, с помощью Samba

#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 ) точного момента перетаскивания. Посмотрите, какая именно операция вызывает ошибку.