google-cloud-platformgoogle-cloud-storagegcsfusegoogle-cloud-compute-engine

GCSFUSE mount error of bucket as folder in a compute engine VM


We have installed VCPUBLISHER, a 3D Map authoring tool, on a GCP VM.

The bucket is public, and the default compute engine account has the Storage Admin role.

The application displays the data based on a path configuration by specifying the location of the files. By testing the application with the files stored locally we can display the data from the app without a problem. We want to test the application from a compute engine instance, however, because the data is very large in size, more than 40 GB on average per dataset, we would like to test it with the data stored in a cloud storage bucket.

To mount the folder we run the following command:

gcsfuse gs://bucket_name /var/full/path/to/mount/location

This is supposed to mount the bucket as a directory in the virtual machine's OS, an operation that we have already done using the GCSFUSE utility on other virtual machines. However, in this case we get the following error:

Error while mounting gcsfuse: mountWithArgs: mountWithStorageHandle: fs.NewServer: create file system: SetUpBucket: Error in iterating through objects: storage: bucket doesn't exist

When listing the bucket and its contents using "gsutil ls", we can see the contents listed without any problems, but when reviewing the gcsfuse log in more detail, it shows this other error:

Error returned from GetStorageLayout: rpc error: code = InvalidArgument desc = Invalid storage layout name. Storage layout name should be a valid bucket resource name followed by '/storageLayout'.\nerror details: name = ErrorInfo reason = INVALID_STORAGE_LAYOUT_NAME domain = storage.googleapis.com metadata = map[ ]

Any help about how to solve this problem is greatly appreciated.

After reading the very helpful suggestion, researching and trying the command with different arguments the bucket was finally mounted, first the mount directory needed ownership and permissions for the current user:

sudo chown user:user /var/full/path/to/mount/location

sudo chmod 755 /var/full/path/to/mount/location

Then the command was given some arguments until it did not produce any error while mounting and it looks like this: gcsfuse -o allow_other --implicit-dirs bucketname /var/full/path/to/mount/location


Solution

  • Bucket name shouldn't be passed with gs:// while using gcsfuse.
    Eg: gcsfuse bucket_name /var/full/path/to/mount/location