2017-05-09 9 views
5

मेरे ओपनस्टैक स्विफ्ट संस्करण 2.14.0 स्थापना में बाल्टी (कंटेनर) बनाना और मिटाना अच्छी तरह से काम करता है। यह केवल एक स्विफ्ट है स्थापना। कीस्टोन जैसी कोई और ओपनस्टैक सेवाएं तैनात नहीं की गई हैं।एक ओपनस्टैक स्विफ्ट 2.14.0 में एक रास्पबेरी पीआई 3 पर फ़ाइल अपलोड करने में असमर्थ "[Errno 13] अनुमति अस्वीकार की गई"

$ swift stat 
         Account: AUTH_test 
        Containers: 2 
         Objects: 0 
          Bytes: 0 
Containers 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 testing 
bucket 
s3perf 

ये (सकारात्मक) फ़ाइल 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] Permission denied कारण बनता है।

$ 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-continue 
From Object Server 127.0.0.1:6010/d1 (txn: txfbf08bffde6d4657a72a5- 
00591dee30) (client_ip: 10.0.0.220) 

मैं उपयोगकर्ता 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/ 

मैंने स्विफ्ट this way तैनात किया।

मुझे आश्चर्य है कि क्यों बाल्टी बनाने (conrainers) काम करता है लेकिन फ़ाइल का अपलोड Permission denied के कारण विफल रहता है।

अद्यतन 1:

$ 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  

अद्यतन 2

आवश्यक बंदरगाहों खुले हैं।

$ 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 

अद्यतन 3

मैं फ़ोल्डर जहां स्विफ्ट वस्तुओं की दुकान चाहिए अंदर उपयोगकर्ता pi के रूप में लिख सकते हैं।

$ whoami 
pi 
$ 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

सभी तेज प्रक्रियाओं उपयोगकर्ता pi के हैं।

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

जब मैं एक बाल्टी बनाने के लिए, स्विफ्ट सेवा इस तरह का फ़ोल्डर बनाता है:

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

और इस फ़ोल्डर एक db -file 7a23d9409f11da3062432c6faa75f9d5.db की तरह होता है। मुझे लगता है कि यह सही व्यवहार है।

लेकिन जब मैं एक बाल्टी के अंदर एक फ़ाइल अपलोड करने का प्रयास करता हूं, तो स्विफ्ट इस तरह एक खाली फ़ोल्डर बनाता है।

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

मैं उपयोगकर्ता pi रूप touch या echo के माध्यम से इन खाली फ़ोल्डर के अंदर फ़ाइलें बना सकते हैं लेकिन किसी अज्ञात कारण से, स्विफ्ट इन फ़ोल्डरों के अंदर फ़ाइलों को स्टोर नहीं करता है।

अद्यतन 6

आगे इस मामले की जांच में, मैं स्विफ्ट SAIO - Swift All In One एक रास्पबेरी पाई 3 पर Ubuntu 14.04 LTS के साथ एक VMware ESXi आभासी मशीन के अंदर निर्देश एक बार और Raspbian अंदर एक और समय के अनुसार स्थापित नतीजा यह है कि उबंटू 14.04 वीएम के अंदर, स्विफ्ट पूरी तरह से काम करता है, लेकिन जब रासबेरी पीई के चालू होने पर, फाइल अपलोड करना काम नहीं करता है।

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", 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) 

अपडेट 7

समस्या अभी भी तय नहीं है, लेकिन मैं अब रास्पबेरी Pi पर एक काम स्विफ्ट सेवा है। मैंने (काफी पुराना) स्विफ्ट संशोधन 2.2.0 स्थापित किया, जिसे रास्पियन के साथ भेज दिया गया है और यह अच्छी तरह से काम करता है। मैंने किए गए कदमों को here समझाया गया है।

+1

आप निम्न कमांड के उत्पादन में pastebin कर सकते हैं रिंग-बिल्डर /etc/swift/object.builder –

उत्तर

1

आपके द्वारा प्रदान की गई जानकारी के आधार पर त्रुटियां मेटाडेटा लिखने के दौरान होती हैं।

मेटाडाटा लिखने के लिए संचालन दो श्रेणियों में पड़ता है: इनोड में हेरफेर करना और विस्तारित विशेषताओं में हेरफेर करना। तो आपकी त्रुटियों के लिए दो संभावित स्रोत हैं।

सबसे पहले, यह एक इनोड से संबंधित त्रुटि है। डिवाइस को आरोहित करते समय inode64 पैरामीटर सेट करने के कारण यह त्रुटि हो सकती है। XFS man page के अनुसार:

तो अनुप्रयोगों उपयोग जो आईनोड संख्या 32 बिट्स से भी बड़ा संभाल न हो, inode32 विकल्प निर्दिष्ट किया जाना चाहिए।

दूसरा, यह एक विस्तारित विशेषताओं से संबंधित त्रुटि है। विस्तारित विशेषताओं को लिखने के लिए आप पाइथन के xattr पैकेज का उपयोग कर सकते हैं और जांच सकते हैं कि अपवाद होता है या नहीं। /etc/swift/container.builder $ sudo swift- /etc/swift/account.builder $ sudo तेज-अंगूठी-बिल्डर $ sudo तेज-अंगूठी निर्माता:

संबंधित मुद्दे