权限 – 由于“[Errno 13] Permission denied”,无法将文件上传到Raspberry Pi 3上的OpenStack Swift 2.14.0

权限 – 由于“[Errno 13] Permission denied”,无法将文件上传到Raspberry Pi 3上的OpenStack Swift 2.14.0,第1张

概述在我的OpenStack Swift版本2.14.0安装中创建和擦除存储桶(容器)效果很好.这是一个Swift唯一的安装.没有部署像Keystone这样的OpenStack服务. $swift stat Account: AUTH_test Containers: 2 在我的OpenStack Swift版本2.14.0安装中创建和擦除存储桶(容器)效果很好.这是一个Swift唯一的安装.没有部署像Keystone这样的OpenStack服务.

$swift stat                        Account: AUTH_test                     Containers: 2                        Objects: 0                          Bytes: 0Containers in policy "policy-0": 2   Objects in policy "policy-0": 0     Bytes in policy "policy-0": 0                     Connection: keep-alive...$swift post s3perf$swift List -A http://10.0.0.253:8080/auth/v1.0 -U test:tester -K testingbuckets3perf

这些是关于文件storage1.error中的桶创建的(正)消息.

$tail -f /var/log/swift/storage1.error...May  9 13:58:50 raspBerrypi container-server: STDERR: (1114) accepted('127.0.0.1',38118)May  9 13:58:50 raspBerrypi container-server: STDERR: 127.0.0.1 - - [09/May/2017 11:58:50] "POST /d1/122/AUTH_test/s3perf http/1.1" 204 142 0.021630 (txn: tx982eb25d83624b37bd290-005911aefa)

但任何上传文件的尝试都会导致错误消息[Errno 13]权限被拒绝.

$swift upload s3perf s3perf-testfile1.txt Object PUT Failed: http://10.0.0.253:8080/v1/AUTH_test/s3perf/s3perf-testfile1.txt 503 Service Unavailable  [first 60 chars of response] <HTML><h1>Service Unavailable</h1><p>The server is currently$tail -f /var/log/swift/storage1.error...May 18 20:55:44 raspBerrypi object-server: STDERR: (927) accepted ('127.0.0.1',45684)May 18 20:55:44 raspBerrypi object-server: ERROR __call__ error with PUT /d1/40/AUTH_test/s3perf/testfile : #012Traceback (most recent call last):#012  file "/home/pi/swift/swift/obj/server.py",line 1105,in __call__#012    res = getattr(self,req.method)(req)#012  file "/home/pi/swift/swift/common/utils.py",line 1626,in _timing_stats#012    resp = func(ctrl,*args,**kwargs)#012  file "/home/pi/swift/swift/obj/server.py",line 814,in PUT#012    writer.put(Metadata)#012  file "/home/pi/swift/swift/obj/diskfile.py",line 2561,in put#012    super(diskfileWriter,self)._put(Metadata,True)#012  file "/home/pi/swift/swift/obj/diskfile.py",line 1566,in _put#012    tpool_reraise(self._finalize_put,Metadata,target_path,cleanup)#012  file "/home/pi/swift/swift/common/utils.py",line 3536,in tpool_reraise#012    raise resp#012IOError: [Errno 13] Permission denIEd (txn: txfbf08bffde6d4657a72a5-00591dee30)May 18 20:55:44 raspBerrypi object-server: STDERR: 127.0.0.1 - - [18/May/2017 18:55:44] "PUT /d1/40/AUTH_test/s3perf/testfile http/1.1" 500 875 0.015646 (txn: txfbf08bffde6d4657a72a5-00591dee30)

proxy.error文件还包含错误消息ERROR 500 Expect:100-continue From Object Server.

May 18 20:55:44 raspBerrypi proxy-server: ERROR 500 Expect: 100-continueFrom Object Server 127.0.0.1:6010/d1 (txn: txfbf08bffde6d4657a72a5-00591dee30) (clIEnt_ip: 10.0.0.220)

我已经将Swift作为用户pi启动并将这些文件夹分配给该用户:

$sudo chown pi:pi /etc/swift$sudo chown -R pi:pi /mnt/sdb1/*$sudo chown -R pi:pi /var/cache/swift$sudo chown -R pi:pi /var/run/swift

sdb1是一个带有XFS文件系统的环回设备.

$mount | grep sdb1/srv/swift-disk on /mnt/sdb1 type xfs (rw,noatime,nodiratime,attr2,nobarrIEr,inode64,logbufs=8,noquota)$ls -ld /mnt/sdb1/1/drwxr-xr-x 3 pi pi 17 May 12 13:14 /mnt/sdb1/1/

我部署了Swift this way.

我想知道为什么创建存储桶(conrainers)有效但由于权限被拒绝而导致文件上传失败.

更新1:

$sudo swift-ring-builder /etc/swift/account.builder/etc/swift/account.builder,build version 2256 partitions,1.000000 replicas,1 regions,1 zones,1 devices,0.00 balance,0.00 dispersionThe minimum number of hours before a partition can be reassigned is 0 (0:00:00 remaining)The overload factor is 0.00% (0.000000)Ring file /etc/swift/account.ring.gz is up-to-dateDevices:   ID region zone ip address:port replication ip:port  name weight partitions balance flags Meta            0      1    1  127.0.0.1:6012      127.0.0.1:6012    d1   1.00        256    0.00   $sudo swift-ring-builder /etc/swift/container.builder/etc/swift/container.builder,0.00 dispersionThe minimum number of hours before a partition can be reassigned is 0 (0:00:00 remaining)The overload factor is 0.00% (0.000000)Ring file /etc/swift/container.ring.gz is up-to-dateDevices:   ID region zone ip address:port replication ip:port  name weight partitions balance flags Meta            0      1    1  127.0.0.1:6011      127.0.0.1:6011    d1   1.00        256    0.00    $sudo swift-ring-builder /etc/swift/object.builder/etc/swift/object.builder,0.00 dispersionThe minimum number of hours before a partition can be reassigned is 0 (0:00:00 remaining)The overload factor is 0.00% (0.000000)Ring file /etc/swift/object.ring.gz is up-to-dateDevices:   ID region zone ip address:port replication ip:port  name weight partitions balance flags Meta            0      1    1  127.0.0.1:6010      127.0.0.1:6010    d1   1.00        256    0.00

更新2

所需的端口已打开.

$nmap localhost -p 6010,6011,6012,8080,22...PORT     STATE SERVICE22/tcp   open  ssh6010/tcp open  x116011/tcp open  unkNown6012/tcp open  unkNown8080/tcp open  http-proxy

更新3

我可以在Swift应该存储对象的文件夹中写为用户pi.

$whoamipi$touch /srv/1/node/d1/objects/test$ls -l /srv/1/node/d1/objects/test-rw-r--r-- 1 pi pi 0 May 13 22:59 /srv/1/node/d1/objects/test

更新4

所有swift进程都属于用户pi.

$ps aux | grep swiftpi         944  3.2  2.0  24644 20100 ?        Ss   May12  65:14 /usr/bin/python /usr/local/bin/swift-proxy-server /etc/swift/proxy-server.confpi         945  3.1  2.0  25372 20228 ?        Ss   May12  64:30 /usr/bin/python /usr/local/bin/swift-container-server /etc/swift/container-server.confpi         946  3.1  1.9  24512 19416 ?        Ss   May12  64:03 /usr/bin/python /usr/local/bin/swift-account-server /etc/swift/account-server.confpi         947  3.1  1.9  23688 19320 ?        Ss   May12  64:04 /usr/bin/python /usr/local/bin/swift-object-server /etc/swift/object-server.confpi        1000  0.0  1.7 195656 17844 ?        Sl   May12   0:01 /usr/bin/python /usr/local/bin/swift-object-server /etc/swift/object-server.confpi        1001  0.0  1.8 195656 18056 ?        Sl   May12   0:01 /usr/bin/python /usr/local/bin/swift-object-server /etc/swift/object-server.confpi        1002  0.0  1.6  23880 16772 ?        S    May12   0:01 /usr/bin/python /usr/local/bin/swift-object-server /etc/swift/object-server.confpi        1003  0.0  1.7 195656 17848 ?        Sl   May12   0:01 /usr/bin/python /usr/local/bin/swift-object-server /etc/swift/object-server.confpi        1004  0.0  1.7  24924 17504 ?        S    May12   0:01 /usr/bin/python /usr/local/bin/swift-account-server /etc/swift/account-server.confpi        1005  0.0  1.6  24924 16912 ?        S    May12   0:01 /usr/bin/python /usr/local/bin/swift-account-server /etc/swift/account-server.confpi        1006  0.0  1.8  24924 18368 ?        S    May12   0:01 /usr/bin/python /usr/local/bin/swift-account-server /etc/swift/account-server.confpi        1007  0.0  1.8  24924 18208 ?        S    May12   0:01 /usr/bin/python /usr/local/bin/swift-account-server /etc/swift/account-server.confpi        1008  0.0  1.8  25864 18824 ?        S    May12   0:01 /usr/bin/python /usr/local/bin/swift-container-server /etc/swift/container-server.confpi        1009  0.0  1.8  25864 18652 ?        S    May12   0:01 /usr/bin/python /usr/local/bin/swift-container-server /etc/swift/container-server.confpi        1010  0.0  1.7  25864 17340 ?        S    May12   0:01 /usr/bin/python /usr/local/bin/swift-container-server /etc/swift/container-server.confpi        1011  0.0  1.8  25864 18772 ?        S    May12   0:01 /usr/bin/python /usr/local/bin/swift-container-server /etc/swift/container-server.confpi        1012  0.0  1.8  24644 18276 ?        S    May12   0:03 /usr/bin/python /usr/local/bin/swift-proxy-server /etc/swift/proxy-server.confpi        1013  0.0  1.8  24900 18588 ?        S    May12   0:03 /usr/bin/python /usr/local/bin/swift-proxy-server /etc/swift/proxy-server.confpi        1014  0.0  1.8  24900 18588 ?        S    May12   0:03 /usr/bin/python /usr/local/bin/swift-proxy-server /etc/swift/proxy-server.confpi        1015  0.0  1.8  24900 18568 ?        S    May12   0:03 /usr/bin/python /usr/local/bin/swift-proxy-server /etc/swift/proxy-server.conf

更新5

当我创建一个存储桶时,Swift服务会创建一个像这样的文件夹:

/mnt/sdb1/1/node/d1/containers/122/9d5/7a23d9409f11da3062432c6faa75f9d5/

此文件夹包含一个db-file,如7a23d9409f11da3062432c6faa75f9d5.db.我认为这是正确的行为.

但是当我尝试在存储桶中上传文件时,Swift只创建一个像这样的空文件夹.

/mnt/sdb1/1/node/d1/objects/139/eca/8b17958f984943fc97b6b937061d2eca

我可以通过touch或echo作为用户pi在这些空文件夹中创建文件,但由于未知原因,Swift不会将文件存储在这些文件夹中.

更新6

为了进一步研究这个问题,我根据SAIO – Swift All In One指令在Ubuntu 14.04 LTS的VMware ESXi虚拟机中安装了Swift,在RaspBerry Pi 3上安装了另一次在Raspbian内部.结果是,在Ubuntu 14.04 VM内部,Swift工作得很好,但是当在RasBerry Pi上运行时,上传文件不起作用.

Object PUT Failed: http://10.0.0.253:8080/v1/AUTH_test/s3perf-testbucket/testfiles/s3perf-testfile1.txt 503 Service Unavailable  [first 60 chars of response] <HTML><h1>Service Unavailable</h1><p>The server is currently

storage1.error日志文件仍然说:

May 24 13:15:15 raspBerrypi object-server: ERROR __call__ error with PUT /sdb1/484/AUTH_test/s3perf-testbucket/testfiles/s3perf-testfile1.txt :#012Traceback (most recent call last):#012  file "/home/pi/swift/swift/obj/server.py",in __call__#012    res = getattr(self,in _put#012    tpool_reraise(self._finalize_put,in tpool_reraise#012    raise resp#012IOError: [Errno 13] Permission denIEd  (txn: txdfe3c7f704be4af8817b3-0059256b43)

更新7

问题仍然没有解决,但我现在在RaspBerry Pi上有一个有效的Swift服务.我安装了(相当过时的)Swift 2.2.0版,它随Raspbian一起提供,效果很好.我做的步骤在here中解释.

解决方法 根据您提供的信息,在编写元数据期间会出现错误.

编写元数据的 *** 作分为两类: *** 作inode和 *** 作扩展属性.因此,您的错误有两种可能的来源.

首先,它是与inode相关的错误.由于在安装设备时设置inode64参数,可能会发生此错误.根据XFS man page:

If applications are in use which do not handle inode numbers bigger than 32 bits,the inode32 option should be specifIEd.

其次,它是与扩展属性相关的错误.您可以使用python的xattr包来编写扩展属性,并检查是否发生异常.

总结

以上是内存溢出为你收集整理的权限 – 由于“[Errno 13] Permission denied”,无法将文件上传到Raspberry Pi 3上的OpenStack Swift 2.14.0全部内容,希望文章能够帮你解决权限 – 由于“[Errno 13] Permission denied”,无法将文件上传到Raspberry Pi 3上的OpenStack Swift 2.14.0所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1015847.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存