object-server cannot write to a disk with this message "Unable to locate fallocate in libc"

Asked by hanj

hello.. i'm testing swift with this configuration.

12 proxy, object, account, container-server per node and 1 authorization node.

everything is okay. but when i execute

st -v -A https://myIP:11000/v1.0 -U key_ac0:u0 -K pass upload mycontainer myfile

it hangs. And looking into the log, i got the following messages. It says that my libc library doesn't contain fallocate function.

Recently i updated centos to the latest version. is this the problem?

Linux laba06 2.6.18-238.9.1.el5 #1 SMP Tue Apr 12 18:10:13 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux

plz help me .....

May 17 17:37:44 laba06 object-server Unable to locate fallocate in libc. Leaving as a no-op. (txn: tx141fe0d1-6425-4f14-af86-8fd89ed57ef4)
May 17 17:37:44 laba06 object-server ERROR __call__ error with PUT /data1/222259/AUTH_8adeff7abb32486fa57af314d02c5c2f/bucket_6/obj_6 : Traceback (most recent call last): File "/usr/local/extlib/lib/python2.6/site-packages/swift-1.2.0-py2.6.egg/swift/obj/server.py", line 593, in __call__ res = getattr(self, req.method)(req) File "/usr/local/extlib/lib/python2.6/site-packages/swift-1.2.0-py2.6.egg/swift/obj/server.py", line 423, in PUT file.put(fd, tmppath, metadata) File "/usr/local/extlib/lib/python2.6/contextlib.py", line 34, in __exit__ self.gen.throw(type, value, traceback) File "/usr/local/extlib/lib/python2.6/site-packages/swift-1.2.0-py2.6.egg/swift/obj/server.py", line 205, in mkstemp yield fd, tmppath File "/usr/local/extlib/lib/python2.6/site-packages/swift-1.2.0-py2.6.egg/swift/obj/server.py", line 423, in PUT file.put(fd, tmppath, metadata) File "/usr/local/extlib/lib/python2.6/site-packages/swift-1.2.0-py2.6.egg/swift/obj/server.py", line 229, in put write_metadata(fd, metada
May 17 17:37:44 laba06 object-server 172.16.2.88 - - [17/May/2011:08:37:44 +0000] "PUT /data1/222259/AUTH_8adeff7abb32486fa57af314d02c5c2f/bucket_6/obj_6" 500 1665 "-" "tx141fe0d1-6425-4f14-af86-8fd89ed57ef4" "python-cloudfiles/1.7.9.2" 0.0694
May 17 17:37:44 laba06 proxy-server ERROR 500 Traceback (most recent call last): File "/usr/local/extlib/lib/python2.6/site-packages/swift-1.2.0-py2.6.egg/swift/obj/server.py", line 593, in __call__ res = getattr(self, req.method)(req) File "/usr/local/extlib/lib/python2.6/site-packages/swift-1.2.0-py2.6.egg/swift/obj/server.py", line 423, in PUT file.put(fd, tmppath, metadata) File "/usr/local/extlib/lib/python2.6/contextlib.py", line 34, in __exit__ self.gen.throw(type, value, traceback) File "/usr/local/extlib/lib/python2.6/site-packages/swift-1.2.0-py2.6.egg/swift/obj/server.py", line 205, in mkstemp yield fd, tmppath File "/usr/local/extlib/lib/python2.6/site-packages/swift-1.2.0-py2.6.egg/swift/obj/server.py", line 423, in PUT file.put(fd, tmppath, metadata) File "/usr/local/extlib/lib/python2.6/site-packages/swift-1.2.0-py2.6.egg/swift/obj/server.py", line 229, in put write_metadata(fd, metadata) File "/usr/local/extlib/lib/python2.6/site-packages/swift-1.2.0-py2.6.egg/swift/obj/s

Question information

Language:
English Edit question
Status:
Solved
For:
OpenStack Object Storage (swift) Edit question
Assignee:
No assignee Edit question
Solved by:
hanj
Solved:
Last query:
Last reply:
Revision history for this message
gholt (gholt) said :
#1

The fallocate missing should be fine, though the file system would become more fragmented if it's missing.

However, the other errors regarding write_metadata are bad. It would appear you don't have xattr support now.

Unfortunately I don't know of folks using centos, hopefully someone who does will chime in.

Revision history for this message
hanj (farain) said :
#2

thanks gholt. Acutually once i tested swift with same configuration as above. It worked fine.

The difference between now and then is file-system. Recently i changed file system from xfs to ext4.

I'm not sure whether i have to designate 'xattr' setting when i formatting ext4 or just when i mount devices.

is there anybody using ext4?

Revision history for this message
gholt (gholt) said :
#3

I think you just mount ext4 with the user_xattr option as long as the kernel supports it.

I don't know of anyone using ext4 with Swift. Years ago when we did testing of various file systems we found ext4 to be a good candidate but xfs a bit better overall. I can't find those test results anymore, but they'd probably be out of date at this point anyway.

I'd recommend doing extensive testing if you're really interested in ext4 vs. xfs with Swift. Best idea for testing I can come up with off the top of my head is to fill drives with millions of files (say from 0 bytes to 5G, average size of 1M) to 80% full, timing each to that point. Maybe even reading random files the whole time during the test for more realistic usage. Then run timing tests with churning files at this point, deleting some, creating more, reading a ton of them the whole time, keeping it at around 80% for a while.

Also, you'd want to do power loss testing while the drives are in use and figure how each handles such. xfs tends to create 0-byte length files, but retains xattr metadata allowing Swift auditors to detect the problems and clean them up. Not sure on ext4's behavior.

Revision history for this message
hanj (farain) said :
#4

thanks gholt for your prompt reponse :)

I 'll take a consideration of your test scenario. And I'll let you know the result of using ext4.

Thank you.

Revision history for this message
hanj (farain) said :
#5

adding user_xattr to the mount option solved problem!!

mount -o remount,user_xattr -t ext4 /dev/cciss/c0d1p1 /data1

:)