[Openstack] Unable to upload a file into OpenStack Swift because of "[Errno 13] Permission denied"

Christian Baun christianbaun at web.de
Wed May 24 20:32:17 UTC 2017


Hello John,

Your "Swift on PI" instructions helped me a lot when I started my
attempt to get Swift running on the RPi3. I documented here what I
did:

https://github.com/christianbaun/s3perf/wiki/Swift-on-a-Raspberry-Pi-3-with-Raspbian-(Debian-Jessie-8.0)

I use the user pi and specified this in all configuration conf-files
inside /etc/swift. In order to get rid of the "Permission denied"
issue, i even gave /mnt/sdb1 and all subfolder full access privileges:

$ sudo chown -R pi:pi /mnt/sdb1/
$ sudo chmod -R 777 /mnt/sdb1/
$ mount | grep sdb1
/srv/swift-disk on /mnt/sdb1 type xfs
(rw,noatime,nodiratime,attr2,nobarrier,inode64,logbufs=8,noquota)

But the situation did not change. I can create buckets, but not upload objects.

Best Regards
   Christian



2017-05-24 18:07 GMT+02:00 John Dickinson <me at not.mn>:
>
>
> On 24 May 2017, at 5:47, Christian Baun wrote:
>
>> Hello all,
>>
>> I tried again to install Swift only ontop of a Raspberry Pi 3 with
>
> So, first off, I think that's really cool. I tried something like this a while back, too. https://github.com/notmyname/swift_on_pi
>
> However, you can see that since it was last updated in early 2013, it's not been something I've spend a lot of time maintaining ;-)
>
>> Rapbian and I followed this time the instructions "SAIO - Swift All In
>> One"
>>
>> https://docs.openstack.org/developer/swift/development_saio.html
>>
>> The installation went well and the service is running, but I still
>> cannot upload files into the service. The error message is still this
>> one on client side:
>>
>> 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
>>
>> and this one inside the file 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", 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: txdfe3c7f704be4af8817b3-0059256b43)
>>
>> I tried the installation instructions inside virtual machine with
>> Ubuntu 14.04 and there is no problem. The service runs and I can
>> upload files without any error.
>>
>> Has anybody here an idea how to locate the root cause of this issue
>> and how to fix it?
>
> You've done some good first steps. To state the obvious, there's some permissions problems somewhere. Probably something to do with the way the drive is mounted. If you're running it as the "swift" user, make sure the mounted drive is also owned by the swift user.
>
>>
>> Best Regards
>>    Christian
>>
>> ---------- Forwarded message ----------
>> From: Christian Baun <christianbaun at web.de>
>> Date: 2017-05-10 20:03 GMT+02:00
>> Subject: Unable to upload a file into OpenStack Swift because of
>> "[Errno 13] Permission denied"
>> To: openstack at lists.openstack.org
>>
>>
>> Hello,
>>
>> Creating and erasing buckets (containers) in my single node Swift only
>> installation works well, but any attempt to upload a file causes just
>> an error message.
>>
>> $ tail -f /var/log/swift/storage1.error
>> ...
>> May  9 14:03:10 raspberrypi object-server: ERROR __call__ error with
>> PUT /d1/237/AUTH_test/s3perf/s3perf-testfile1.txt : #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: txb986cc22c54f426c8289b-005911affd)
>>
>> I have started Swift as user pi and assigned these folders to this user:
>>
>> $ 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 is a loopback device with the XFS file system.
>>
>> I deployed Swift this way:
>> https://github.com/christianbaun/s3perf/wiki/Swift-on-a-Raspberry-Pi-3-with-Raspbian-%28Debian-Jessie-8.0%29
>>
>> I wonder why creating buckets (containers) works well, but the upload
>> of a file fails because of "Permission denied".
>>
>> $ sudo swift-ring-builder /etc/swift/account.builder
>> /etc/swift/account.builder, build version 2
>> 256 partitions, 1.000000 replicas, 1 regions, 1 zones, 1 devices, 0.00
>> balance, 0.00 dispersion
>> The 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-date
>> Devices:   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, build version 2
>> 256 partitions, 1.000000 replicas, 1 regions, 1 zones, 1 devices, 0.00
>> balance, 0.00 dispersion
>> The 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-date
>> Devices:   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, build version 2
>> 256 partitions, 1.000000 replicas, 1 regions, 1 zones, 1 devices, 0.00
>> balance, 0.00 dispersion
>> The 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-date
>> Devices:   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
>>
>> $ nmap localhost -p 6010,6011,6012,8080,22
>> ...
>> PORT     STATE SERVICE
>> 22/tcp   open  ssh
>> 6010/tcp open  x11
>> 6011/tcp open  unknown
>> 6012/tcp open  unknown
>> 8080/tcp open  http-proxy
>>
>> What can i do to find the root cause of this issue and fix it?
>>
>> Best Regards
>>    Christian
>>
>> _______________________________________________
>> Mailing list: http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
>> Post to     : openstack at lists.openstack.org
>> Unsubscribe : http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack




More information about the Openstack mailing list