我正在尝试使用 gcsfuse 安装 Google 存储桶。我能够安装它,但当我尝试使用触摸来测试在其中创建文件时收到输入/输出错误消息。
下面的命令显示尝试连接到谷歌云时完全没有错误
my_name@deployment-test:~$ sudo gcsfuse -o rw -o allow_other -file-mode=777 -dir-mode=777 --foreground --debug_gcs --debug_http --debug_fuse --debug_invariants company-name-deployment-test test2
命令给出结果
Using mount point: /home/my_name/test2
Opening GCS connection...
WARNING: gcsfuse invoked as root. This will cause all files to be owned by
root. If this is not what you intended, invoke gcsfuse as the user that will
be interacting with the file system.
Opening bucket...
gcs: Req 0x0: <- ListObjects()
http: ========== REQUEST:
GET http://www.googleapis.com/storage/v1/b/company-name-deployment-test/o?maxResults=1&projection=full HTTP/1.1
Host: www.googleapis.com
User-Agent: gcsfuse/0.0
Authorization: Bearer ya29.EmQkBGU8LBXoLOWE6bt7QU7Ulg9k6_ALV9shBuGILqzZxEf4mE0xXIVuelOscxJiXwLpvNAPO23oNT3oqE1YT8KJxmvcGlhv1XwAV3jOqO2-2NMeB9w1pLreGGXNLMBcxG7NoUIX
Accept-Encoding: gzip
http: ========== RESPONSE:
HTTP/2.0 200 OK
Content-Length: 31
Cache-Control: private, max-age=0, must-revalidate, no-transform
Content-Type: application/json; charset=UTF-8
Date: Wed, 05 Apr 2017 14:53:47 GMT
Expires: Wed, 05 Apr 2017 14:53:47 GMT
Server: UploadServer
Vary: Origin
Vary: X-Origin
X-Guploader-Uploadid: AEnB2Uo_mWOeNeVYEKUDSUgXG5l6OW3rdBghHeFlfzUjDMGMSl4934ZLq57ujokZuJoSAefKXIlqZTjURPcx_HTq0obPy94PgQ
{
"kind": "storage#objects"
}
http: ====================
gcs: Req 0x0: -> ListObjects() (80.50838ms): OK
Mounting file system...
fuse_debug: Op 0x00000001 connection.go:395] <- init
fuse_debug: Op 0x00000001 connection.go:474] -> OK ()
File system has been successfully mounted.
尝试触摸会给出:
touch test2/test.txt
touch: cannot touch ‘test2/test.txt’: Input/output error
由于从调试输出来看我的凭据似乎没问题,还有什么可能导致此输入/输出错误消息?
读完 Jacobsa 的评论后,我意识到我没有得到所有我能得到的信息,一旦系统安装好运行我的命令,我就打开了第二个 ssh 连接,而这仍然是正常的,并尝试触摸产生的文件:
fuse_debug: Op 0x00000003 connection.go:395] <- LookUpInode (parent 1, name "test.txt")
gcs: Req 0x1: <- StatObject("test.txt")
gcs: Req 0x2: <- StatObject("test.txt/")
http: ========== REQUEST:
GET http://www.googleapis.com/storage/v1/b/tembo-deployment-test/o/test.txt?projection=full HTTP/1.1
Host: www.googleapis.com
User-Agent: gcsfuse/0.0
Authorization: Bearer ya29.EmQmBNtnKIPWQvvhLiCU-178OTVIA44gXrXRzQaNb5tBTfRpusKgmgmF83FR6QCI1Cg6jACSkZ3iCWyqarhS7WSuPfMUih0gZpKXGSdSg4fQ6VbFQnj7ru24k4erRUTVdR04NrcH
Accept-Encoding: gzip
http: ========== REQUEST:
GET http://www.googleapis.com/storage/v1/b/tembo-deployment-test/o/test.txt%2F?projection=full HTTP/1.1
Host: www.googleapis.com
User-Agent: gcsfuse/0.0
Authorization: Bearer ya29.EmQmBNtnKIPWQvvhLiCU-178OTVIA44gXrXRzQaNb5tBTfRpusKgmgmF83FR6QCI1Cg6jACSkZ3iCWyqarhS7WSuPfMUih0gZpKXGSdSg4fQ6VbFQnj7ru24k4erRUTVdR04NrcH
Accept-Encoding: gzip
http: ========== RESPONSE:
HTTP/2.0 404 Not Found
Content-Length: 165
Cache-Control: private, max-age=0
Content-Type: application/json; charset=UTF-8
Date: Fri, 07 Apr 2017 15:29:07 GMT
Expires: Fri, 07 Apr 2017 15:29:07 GMT
Server: UploadServer
Vary: Origin
Vary: X-Origin
X-Guploader-Uploadid: AEnB2Uo2tVrtHfLuSn2RDpYqO3bgg6gEPL1fjOO2wdBgKGGyNzKHVQXlEoh4ObOx0YH1soFOQijWzXuewbAtMBdNcSxmeHzuGg
{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "Not Found"
}
],
"code": 404,
"message": "Not Found"
}
}
http: ====================
gcs: Req 0x2: -> StatObject("test.txt/") (54.298126ms): gcs.NotFoundError: googleapi: Error 404: Not Found, notFound
http: ========== RESPONSE:
HTTP/2.0 404 Not Found
Content-Length: 165
Cache-Control: private, max-age=0
Content-Type: application/json; charset=UTF-8
Date: Fri, 07 Apr 2017 15:29:07 GMT
Expires: Fri, 07 Apr 2017 15:29:07 GMT
Server: UploadServer
Vary: Origin
Vary: X-Origin
X-Guploader-Uploadid: AEnB2UrAcoLYqm97VH1sDql_CLiVM3_q0EXW_gy1VaxmWJOLksZkcIV78WRFN-Y9hkWmDKN1LJfSz767jkWAhomwoaLqwlFeyw
{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "Not Found"
}
],
"code": 404,
"message": "Not Found"
}
}
http: ====================
gcs: Req 0x1: -> StatObject("test.txt") (57.69261ms): gcs.NotFoundError: googleapi: Error 404: Not Found, notFound
fuse_debug: Op 0x00000003 connection.go:476] -> Error: "no such file or directory"
fuse_debug: Op 0x00000004 connection.go:395] <- CreateFile (parent 1, name "test.txt")
gcs: Req 0x3: <- CreateObject("test.txt")
http: ========== REQUEST:
POST http://www.googleapis.com/upload/storage/v1/b/tembo-deployment-test/o?ifGenerationMatch=0&projection=full&uploadType=resumable HTTP/1.1
Host: www.googleapis.com
User-Agent: gcsfuse/0.0
Content-Length: 156
Authorization: Bearer ya29.EmQmBNtnKIPWQvvhLiCU-178OTVIA44gXrXRzQaNb5tBTfRpusKgmgmF83FR6QCI1Cg6jACSkZ3iCWyqarhS7WSuPfMUih0gZpKXGSdSg4fQ6VbFQnj7ru24k4erRUTVdR04NrcH
Content-Type: application/json
X-Upload-Content-Type: text/plain; charset=utf-8
Accept-Encoding: gzip
{"bucket":"tembo-deployment-test","contentType":"text/plain; charset=utf-8","metadata":{"gcsfuse_mtime":"2017-04-07T15:29:07.544167408Z"},"name":"test.txt"}
http: ========== RESPONSE:
HTTP/2.0 403 Forbidden
Content-Length: 208
Content-Type: application/json; charset=UTF-8
Date: Fri, 07 Apr 2017 15:29:07 GMT
Server: UploadServer
Vary: Origin
Vary: X-Origin
Www-Authenticate: Bearer realm="https://accounts.google.com/", error=insufficient_scope, scope="https://www.googleapis.com/auth/cloud-platform"
X-Guploader-Uploadid: AEnB2UpoWv_gpFyC_fxo8wV5bFBRUX9DLTWEzmNcymxDjERaaml3m-hv4BBmt_kErbFCYj8SYEwka0rkvomWyz1DbusJr-giLw
{
"error": {
"errors": [
{
"domain": "global",
"reason": "insufficientPermissions",
"message": "Insufficient Permission"
}
],
"code": 403,
"message": "Insufficient Permission"
}
}
http: ====================
gcs: Req 0x3: -> CreateObject("test.txt") (14.054889ms): googleapi: Error 403: Insufficient Permission, insufficientPermissions
fuse_debug: Op 0x00000004 connection.go:476] -> Error: "CreateChildFile: googleapi: Error 403: Insufficient Permission, insufficientPermissions"
fuse: 2017/04/07 15:29:07.567837 *fuseops.CreateFileOp error: CreateChildFile: googleapi: Error 403: Insufficient Permission, insufficientPermissions
fuse_debug: Op 0x00000005 connection.go:395] <- LookUpInode (parent 1, name "test.txt")
gcs: Req 0x4: <- StatObject("test.txt")
http: ========== REQUEST:
GET http://www.googleapis.com/storage/v1/b/tembo-deployment-test/o/test.txt?projection=full HTTP/1.1
Host: www.googleapis.com
User-Agent: gcsfuse/0.0
Authorization: Bearer ya29.EmQmBNtnKIPWQvvhLiCU-178OTVIA44gXrXRzQaNb5tBTfRpusKgmgmF83FR6QCI1Cg6jACSkZ3iCWyqarhS7WSuPfMUih0gZpKXGSdSg4fQ6VbFQnj7ru24k4erRUTVdR04NrcH
Accept-Encoding: gzip
http: ========== RESPONSE:
HTTP/2.0 404 Not Found
Content-Length: 165
Cache-Control: private, max-age=0
Content-Type: application/json; charset=UTF-8
Date: Fri, 07 Apr 2017 15:29:07 GMT
Expires: Fri, 07 Apr 2017 15:29:07 GMT
Server: UploadServer
Vary: Origin
Vary: X-Origin
X-Guploader-Uploadid: AEnB2UqxK0wYlDTOf4vT2j_X40E57dJJqEZf8YQL67c_x_3bURpf0xJVJIJuPpc17k0jHUiOAbk4JasDqZd9uD-NK0XNFODJXQ
{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "Not Found"
}
],
"code": 404,
"message": "Not Found"
}
}
http: ====================
gcs: Req 0x4: -> StatObject("test.txt") (98.990226ms): gcs.NotFoundError: googleapi: Error 404: Not Found, notFound
fuse_debug: Op 0x00000005 connection.go:476] -> Error: "no such file or directory"
因此我需要向我正在连接的帐户授予权限。
最佳答案
运行$ gcsfuse nmjcloud_jar_test/gcp/gcsfuse/mount --key-file="/home/niaomingjian/gcpconfig/My First Project-6f9cff47c4f0.json"
后,
$ touch/gcp/gcsfuse/mount/test.txt
在我的测试环境中成功创建了 test.txt 文件。
关于google-cloud-platform - gcsfuse触摸: cannot touch ‘test2/test.txt’ : Input/output error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43235681/