Lior Goikhburg
2008-Dec-09 12:26 UTC
[Gluster-users] File uploaded to webDAV server on GlusterFS AFR - ends up without xattr!
Hello list. I'm testing GlusterFS AFR mode as a solution for implementing a highly available webDAV file storage for our production environment. Whlie doing performance tests I've notticed a strange behavior: the files which are uploaded via a webDAV server, end up without extended attributes, which removes the ability to self-heal. The set up is a simple testing environment with 2 servers and one AFR client which runs Nginx web server which accepts HTTP PUT requests from clients. I'm uploading with the following command: curl -0 -s -T /data/100399.crp http://localhost:8024/file/ The AFR volume is mounted in /var/www/storage (is available to Nginx web server): glusterfs -f /etc/glusterfs/glusterfs-client.vol -n afr1 /var/www/storage/ Nginx receives the file into a temp directory "client_body_temp_path" /var/www/storage/tmp2 (untill it receives the entire file) and then renames the file (with rename () function) to the destination dir: /var/www/storage/data The files that are being created/copied/moved/modified/etc manualy (via shell), has their xattrs set up fine: search101:/srv/export/files/data/file# getfattr -d -m ".*" test # file: test trusted.glusterfs.createtime="1228825236" trusted.glusterfs.version="2" But not the ones uploaded via Nginx: search101:/srv/export/files/data/file# getfattr -d -m ".*" 99/30/0/100399.crp search101:/srv/export/files/data/file# Here is the configuration used: on both servers: cat /etc/glusterfs/glusterfs-server.vol volume posix type storage/posix option directory /srv/export/files end-volume volume server type protocol/server option transport-type tcp/server subvolumes posix option auth.ip.posix.allow * end-volume on client machine: cat /etc/glusterfs/glusterfs-client.vol volume client1 type protocol/client option transport-type tcp/client option remote-host 192.168.1.176 option transport-timeout 10 option remote-subvolume posix end-volume volume client2 type protocol/client option transport-type tcp/client option remote-host 192.168.1.177 option transport-timeout 10 option remote-subvolume posix end-volume volume afr1 type cluster/afr subvolumes client1 client2 end-volume Below is the debug log of the upload process. search106:~# glusterfs --no-daemon --log-file=/dev/stdout --log-level=DEBUG -f /etc/glusterfs/glusterfs-afr1.vol -n afr1 /var/www/storage/ 2008-12-09 14:52:55 D [glusterfs.c:167:get_spec_fp] glusterfs: loading spec from /etc/glusterfs/glusterfs-afr1.vol 2008-12-09 14:52:55 D [spec.y:107:new_section] parser: New node for 'client1' 2008-12-09 14:52:55 D [xlator.c:115:xlator_set_type] xlator: attempt to load file /usr/lib/glusterfs/1.3.12/xlator/protocol/client.so 2008-12-09 14:52:55 D [spec.y:127:section_type] parser: Type:client1:protocol/client 2008-12-09 14:52:55 D [spec.y:141:section_option] parser: Option:client1:transport-type:tcp/client 2008-12-09 14:52:55 D [spec.y:141:section_option] parser: Option:client1:remote-host:192.168.1.176 2008-12-09 14:52:55 D [spec.y:141:section_option] parser: Option:client1:transport-timeout:10 2008-12-09 14:52:55 D [spec.y:141:section_option] parser: Option:client1:remote-subvolume:posix 2008-12-09 14:52:55 D [spec.y:141:section_option] parser: Option:client1:debug:on 2008-12-09 14:52:55 D [spec.y:209:section_end] parser: end:client1 2008-12-09 14:52:55 D [spec.y:107:new_section] parser: New node for 'client2' 2008-12-09 14:52:55 D [xlator.c:115:xlator_set_type] xlator: attempt to load file /usr/lib/glusterfs/1.3.12/xlator/protocol/client.so 2008-12-09 14:52:55 D [spec.y:127:section_type] parser: Type:client2:protocol/client 2008-12-09 14:52:55 D [spec.y:141:section_option] parser: Option:client2:transport-type:tcp/client 2008-12-09 14:52:55 D [spec.y:141:section_option] parser: Option:client2:remote-host:192.168.1.178 2008-12-09 14:52:55 D [spec.y:141:section_option] parser: Option:client2:transport-timeout:10 2008-12-09 14:52:55 D [spec.y:141:section_option] parser: Option:client2:remote-subvolume:posix 2008-12-09 14:52:55 D [spec.y:141:section_option] parser: Option:client2:debug:on 2008-12-09 14:52:55 D [spec.y:209:section_end] parser: end:client2 2008-12-09 14:52:55 D [spec.y:107:new_section] parser: New node for 'afr1' 2008-12-09 14:52:55 D [xlator.c:115:xlator_set_type] xlator: attempt to load file /usr/lib/glusterfs/1.3.12/xlator/cluster/afr.so 2008-12-09 14:52:55 D [spec.y:127:section_type] parser: Type:afr1:cluster/afr 2008-12-09 14:52:55 D [spec.y:196:section_sub] parser: child:afr1->client1 2008-12-09 14:52:55 D [spec.y:196:section_sub] parser: child:afr1->client2 2008-12-09 14:52:55 D [spec.y:209:section_end] parser: end:afr1 2008-12-09 14:52:55 D [glusterfs.c:128:fuse_graph] glusterfs: setting option mount-point to /var/www/storage/ 2008-12-09 14:52:55 D [xlator.c:115:xlator_set_type] xlator: attempt to load file /usr/lib/glusterfs/1.3.12/xlator/mount/fuse.so 2008-12-09 14:52:55 D [client-protocol.c:5009:init] client1: setting transport-timeout to 10 2008-12-09 14:52:55 D [transport.c:80:transport_load] transport: attempt to load file /usr/lib/glusterfs/1.3.12/transport/tcp/client.so 2008-12-09 14:52:55 D [client-protocol.c:5040:init] client1: defaulting limits.transaction-size to 268435456 2008-12-09 14:52:55 D [client-protocol.c:5009:init] client2: setting transport-timeout to 10 2008-12-09 14:52:55 D [transport.c:80:transport_load] transport: attempt to load file /usr/lib/glusterfs/1.3.12/transport/tcp/client.so 2008-12-09 14:52:55 D [client-protocol.c:5040:init] client2: defaulting limits.transaction-size to 268435456 2008-12-09 14:52:55 D [afr.c:6084:init] afr1: self-heal is enabled (default) 2008-12-09 14:52:55 D [afr.c:6112:init] afr1: (default) reads will be scheduled between the children 2008-12-09 14:52:55 D [client-protocol.c:5340:notify] client1: got GF_EVENT_PARENT_UP, attempting connect on transport 2008-12-09 14:52:55 D [client-protocol.c:5340:notify] client2: got GF_EVENT_PARENT_UP, attempting connect on transport 2008-12-09 14:52:56 D [client-protocol.c:4757:client_protocol_reconnect] client1: attempting reconnect 2008-12-09 14:52:56 D [tcp-client.c:77:tcp_connect] client1: socket fd = 6 2008-12-09 14:52:56 D [tcp-client.c:107:tcp_connect] client1: finalized on port `1021' 2008-12-09 14:52:56 D [tcp-client.c:128:tcp_connect] client1: defaulting remote-port to 6996 2008-12-09 14:52:56 D [common-utils.c:179:gf_resolve_ip] resolver: DNS cache not present, freshly probing hostname: 192.168.1.176 2008-12-09 14:52:56 D [common-utils.c:204:gf_resolve_ip] resolver: returning IP:192.168.1.176[0] for hostname: 192.168.1.176 2008-12-09 14:52:56 D [common-utils.c:212:gf_resolve_ip] resolver: flushing DNS cache 2008-12-09 14:52:56 D [tcp-client.c:161:tcp_connect] client1: connect on 6 in progress (non-blocking) 2008-12-09 14:52:56 D [tcp-client.c:205:tcp_connect] client1: connection on 6 success 2008-12-09 14:52:56 D [client-protocol.c:5362:notify] client1: got GF_EVENT_CHILD_UP 2008-12-09 14:52:56 D [client-protocol.c:4757:client_protocol_reconnect] client2: attempting reconnect 2008-12-09 14:52:56 D [tcp-client.c:77:tcp_connect] client2: socket fd = 7 2008-12-09 14:52:56 D [tcp-client.c:107:tcp_connect] client2: finalized on port `1020' 2008-12-09 14:52:56 D [tcp-client.c:128:tcp_connect] client2: defaulting remote-port to 6996 2008-12-09 14:52:56 D [common-utils.c:179:gf_resolve_ip] resolver: DNS cache not present, freshly probing hostname: 192.168.1.178 2008-12-09 14:52:56 D [common-utils.c:204:gf_resolve_ip] resolver: returning IP:192.168.1.178[0] for hostname: 192.168.1.178 2008-12-09 14:52:56 D [common-utils.c:212:gf_resolve_ip] resolver: flushing DNS cache 2008-12-09 14:52:56 D [tcp-client.c:161:tcp_connect] client2: connect on 7 in progress (non-blocking) 2008-12-09 14:52:56 D [client-protocol.c:5103:client_protocol_handshake_reply] client1: reply frame has callid: 424242 2008-12-09 14:52:56 D [client-protocol.c:5137:client_protocol_handshake_reply] client1: SETVOLUME on remote-host succeeded 2008-12-09 14:52:56 D [afr.c:6001:notify] afr1: GF_EVENT_CHILD_UP from client1 2008-12-09 14:52:56 D [tcp-client.c:205:tcp_connect] client2: connection on 7 success 2008-12-09 14:52:56 D [client-protocol.c:5362:notify] client2: got GF_EVENT_CHILD_UP 2008-12-09 14:52:56 D [inode.c:1163:inode_table_new] fuse: creating new inode table with lru_limit=1024, sizeof(inode_t)=156 2008-12-09 14:52:56 D [afr.c:5933:afr_check_xattr_cbk] afr1: 'client1' supports Extended attribute 2008-12-09 14:52:56 D [client-protocol.c:5103:client_protocol_handshake_reply] client2: reply frame has callid: 424242 2008-12-09 14:52:56 D [client-protocol.c:5137:client_protocol_handshake_reply] client2: SETVOLUME on remote-host succeeded 2008-12-09 14:52:56 D [afr.c:6001:notify] afr1: GF_EVENT_CHILD_UP from client2 2008-12-09 14:52:56 D [inode.c:577:__create_inode] fuse/inode: create inode(1) 2008-12-09 14:52:56 D [inode.c:367:__active_inode] fuse/inode: activating inode(1), lru=0/1024 2008-12-09 14:52:56 D [afr.c:5933:afr_check_xattr_cbk] afr1: 'client2' supports Extended attribute 2008-12-09 14:52:57 D [client-protocol.c:4763:client_protocol_reconnect] client1: breaking reconnect chain 2008-12-09 14:52:57 D [client-protocol.c:4763:client_protocol_reconnect] client2: breaking reconnect chain 2008-12-09 14:53:09 D [fuse-bridge.c:384:fuse_entry_cbk] glusterfs-fuse: 2: (34) / => 1 2008-12-09 14:53:09 W [fuse-bridge.c:398:fuse_entry_cbk] glusterfs-fuse: 2: (34) / => 1 Rehashing 0/0 2008-12-09 14:53:09 D [fuse-bridge.c:521:fuse_lookup] glusterfs-fuse: 3: LOOKUP /tmp2 2008-12-09 14:53:09 D [fuse-bridge.c:384:fuse_entry_cbk] glusterfs-fuse: 3: (34) /tmp2 => 589835 2008-12-09 14:53:09 D [inode.c:577:__create_inode] fuse/inode: create inode(589835) 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589835), lru=0/1024 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589835), lru=0/1024 2008-12-09 14:53:09 D [fuse-bridge.c:521:fuse_lookup] glusterfs-fuse: 4: LOOKUP /tmp2/12 2008-12-09 14:53:09 D [fuse-bridge.c:464:fuse_entry_cbk] glusterfs-fuse: 4: (34) /tmp2/12 => -1 (2) 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589835), lru=0/1024 2008-12-09 14:53:09 D [fuse-bridge.c:521:fuse_lookup] glusterfs-fuse: 5: LOOKUP /tmp2/12 2008-12-09 14:53:09 D [fuse-bridge.c:464:fuse_entry_cbk] glusterfs-fuse: 5: (34) /tmp2/12 => -1 (2) 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589835), lru=0/1024 2008-12-09 14:53:09 D [fuse-bridge.c:1133:fuse_mkdir] glusterfs-fuse: 6: MKDIR /tmp2/12 2008-12-09 14:53:09 D [fuse-bridge.c:384:fuse_entry_cbk] glusterfs-fuse: 6: (3) /tmp2/12 => 589833 2008-12-09 14:53:09 D [inode.c:577:__create_inode] fuse/inode: create inode(589833) 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589833), lru=0/1024 2008-12-09 14:53:09 D [fuse-bridge.c:633:fuse_getattr] glusterfs-fuse: 7: GETATTR 589835 (/tmp2) 2008-12-09 14:53:09 D [fuse-bridge.c:580:fuse_attr_cbk] glusterfs-fuse: 7: (0) /tmp2 => 589835 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589833), lru=0/1024 2008-12-09 14:53:09 D [fuse-bridge.c:521:fuse_lookup] glusterfs-fuse: 8: LOOKUP /tmp2/12/04 2008-12-09 14:53:09 D [fuse-bridge.c:464:fuse_entry_cbk] glusterfs-fuse: 8: (34) /tmp2/12/04 => -1 (2) 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589833), lru=0/1024 2008-12-09 14:53:09 D [fuse-bridge.c:1133:fuse_mkdir] glusterfs-fuse: 9: MKDIR /tmp2/12/04 2008-12-09 14:53:09 D [fuse-bridge.c:384:fuse_entry_cbk] glusterfs-fuse: 9: (3) /tmp2/12/04 => 589834 2008-12-09 14:53:09 D [inode.c:577:__create_inode] fuse/inode: create inode(589834) 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589834), lru=0/1024 2008-12-09 14:53:09 D [fuse-bridge.c:633:fuse_getattr] glusterfs-fuse: 10: GETATTR 589833 (/tmp2/12) 2008-12-09 14:53:09 D [fuse-bridge.c:580:fuse_attr_cbk] glusterfs-fuse: 10: (0) /tmp2/12 => 589833 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589834), lru=0/1024 2008-12-09 14:53:09 D [fuse-bridge.c:521:fuse_lookup] glusterfs-fuse: 11: LOOKUP /tmp2/12/04/0000000412 2008-12-09 14:53:09 D [fuse-bridge.c:464:fuse_entry_cbk] glusterfs-fuse: 11: (34) /tmp2/12/04/0000000412 => -1 (2) 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589834), lru=0/1024 2008-12-09 14:53:09 D [fuse-bridge.c:1508:fuse_create] glusterfs-fuse: 12: CREATE /tmp2/12/04/0000000412 2008-12-09 14:53:09 D [fuse-bridge.c:1389:fuse_create_cbk] glusterfs-fuse: 12: (27) /tmp2/12/04/0000000412 => 0x1eeadf0 2008-12-09 14:53:09 D [inode.c:577:__create_inode] fuse/inode: create inode(589837) 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589837), lru=0/1024 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 13: WRITE (0x1eeadf0, size=102400, offset=0) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 13: WRITE => 102400/102400,0/102400 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 14: WRITE (0x1eeadf0, size=102400, offset=102400) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 14: WRITE => 102400/102400,102400/204800 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 15: WRITE (0x1eeadf0, size=102400, offset=204800) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 15: WRITE => 102400/102400,204800/307200 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 16: WRITE (0x1eeadf0, size=102400, offset=307200) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 16: WRITE => 102400/102400,307200/409600 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 17: WRITE (0x1eeadf0, size=102400, offset=409600) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 17: WRITE => 102400/102400,409600/512000 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 18: WRITE (0x1eeadf0, size=102400, offset=512000) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 18: WRITE => 102400/102400,512000/614400 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 19: WRITE (0x1eeadf0, size=102400, offset=614400) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 19: WRITE => 102400/102400,614400/716800 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 20: WRITE (0x1eeadf0, size=102400, offset=716800) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 20: WRITE => 102400/102400,716800/819200 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 21: WRITE (0x1eeadf0, size=102400, offset=819200) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 21: WRITE => 102400/102400,819200/921600 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 22: WRITE (0x1eeadf0, size=102400, offset=921600) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 22: WRITE => 102400/102400,921600/1024000 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 23: WRITE (0x1eeadf0, size=102400, offset=1024000) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 23: WRITE => 102400/102400,1024000/1126400 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 24: WRITE (0x1eeadf0, size=102400, offset=1126400) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 24: WRITE => 102400/102400,1126400/1228800 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 25: WRITE (0x1eeadf0, size=102400, offset=1228800) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 25: WRITE => 102400/102400,1228800/1331200 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 26: WRITE (0x1eeadf0, size=102400, offset=1331200) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 26: WRITE => 102400/102400,1331200/1433600 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 27: WRITE (0x1eeadf0, size=102400, offset=1433600) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 27: WRITE => 102400/102400,1433600/1536000 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 28: WRITE (0x1eeadf0, size=102400, offset=1536000) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 28: WRITE => 102400/102400,1536000/1638400 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 29: WRITE (0x1eeadf0, size=102400, offset=1638400) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 29: WRITE => 102400/102400,1638400/1740800 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 30: WRITE (0x1eeadf0, size=102400, offset=1740800) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 30: WRITE => 102400/102400,1740800/1843200 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 31: WRITE (0x1eeadf0, size=102400, offset=1843200) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 31: WRITE => 102400/102400,1843200/1945600 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 32: WRITE (0x1eeadf0, size=102400, offset=1945600) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 32: WRITE => 102400/102400,1945600/2048000 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 33: WRITE (0x1eeadf0, size=102400, offset=2048000) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 33: WRITE => 102400/102400,2048000/2150400 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 34: WRITE (0x1eeadf0, size=102400, offset=2150400) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 34: WRITE => 102400/102400,2150400/2252800 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 35: WRITE (0x1eeadf0, size=102400, offset=2252800) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 35: WRITE => 102400/102400,2252800/2355200 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 36: WRITE (0x1eeadf0, size=102400, offset=2355200) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 36: WRITE => 102400/102400,2355200/2457600 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 37: WRITE (0x1eeadf0, size=102400, offset=2457600) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 37: WRITE => 102400/102400,2457600/2560000 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 38: WRITE (0x1eeadf0, size=102400, offset=2560000) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 38: WRITE => 102400/102400,2560000/2662400 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 39: WRITE (0x1eeadf0, size=102400, offset=2662400) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 39: WRITE => 102400/102400,2662400/2764800 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 40: WRITE (0x1eeadf0, size=102400, offset=2764800) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 40: WRITE => 102400/102400,2764800/2867200 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 41: WRITE (0x1eeadf0, size=102400, offset=2867200) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 41: WRITE => 102400/102400,2867200/2969600 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 42: WRITE (0x1eeadf0, size=102400, offset=2969600) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 42: WRITE => 102400/102400,2969600/3072000 2008-12-09 14:53:09 D [fuse-bridge.c:1677:fuse_write] glusterfs-fuse: 43: WRITE (0x1eeadf0, size=64512, offset=3072000) 2008-12-09 14:53:09 D [fuse-bridge.c:1640:fuse_writev_cbk] glusterfs-fuse: 43: WRITE => 64512/64512,3072000/3136512 2008-12-09 14:53:09 D [fuse-bridge.c:521:fuse_lookup] glusterfs-fuse: 44: LOOKUP /data 2008-12-09 14:53:09 D [fuse-bridge.c:384:fuse_entry_cbk] glusterfs-fuse: 44: (34) /data => 589829 2008-12-09 14:53:09 D [inode.c:577:__create_inode] fuse/inode: create inode(589829) 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589829), lru=0/1024 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589829), lru=0/1024 2008-12-09 14:53:09 D [fuse-bridge.c:521:fuse_lookup] glusterfs-fuse: 45: LOOKUP /data/file 2008-12-09 14:53:09 D [fuse-bridge.c:384:fuse_entry_cbk] glusterfs-fuse: 45: (34) /data/file => 589830 2008-12-09 14:53:09 D [inode.c:577:__create_inode] fuse/inode: create inode(589830) 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589830), lru=0/1024 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589830), lru=0/1024 2008-12-09 14:53:09 D [fuse-bridge.c:521:fuse_lookup] glusterfs-fuse: 46: LOOKUP /data/file/99 2008-12-09 14:53:09 D [fuse-bridge.c:464:fuse_entry_cbk] glusterfs-fuse: 46: (34) /data/file/99 => -1 (2) 2008-12-09 14:53:09 D [fuse-bridge.c:633:fuse_getattr] glusterfs-fuse: 47: GETATTR 589834 (/tmp2/12/04) 2008-12-09 14:53:09 D [fuse-bridge.c:580:fuse_attr_cbk] glusterfs-fuse: 47: (0) /tmp2/12/04 => 589834 2008-12-09 14:53:09 D [fuse-bridge.c:758:do_chmod] glusterfs-fuse: 48: CHMOD /tmp2/12/04/0000000412 2008-12-09 14:53:09 D [fuse-bridge.c:580:fuse_attr_cbk] glusterfs-fuse: 48: (9) /tmp2/12/04/0000000412 => 589837 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589830), lru=0/1024 2008-12-09 14:53:09 D [fuse-bridge.c:521:fuse_lookup] glusterfs-fuse: 49: LOOKUP /data/file/99 2008-12-09 14:53:09 D [fuse-bridge.c:464:fuse_entry_cbk] glusterfs-fuse: 49: (34) /data/file/99 => -1 (2) 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589830), lru=0/1024 2008-12-09 14:53:09 D [fuse-bridge.c:521:fuse_lookup] glusterfs-fuse: 50: LOOKUP /data/file/99 2008-12-09 14:53:09 D [fuse-bridge.c:464:fuse_entry_cbk] glusterfs-fuse: 50: (34) /data/file/99 => -1 (2) 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589830), lru=0/1024 2008-12-09 14:53:09 D [fuse-bridge.c:1133:fuse_mkdir] glusterfs-fuse: 51: MKDIR /data/file/99 2008-12-09 14:53:09 D [fuse-bridge.c:384:fuse_entry_cbk] glusterfs-fuse: 51: (3) /data/file/99 => 589838 2008-12-09 14:53:09 D [inode.c:577:__create_inode] fuse/inode: create inode(589838) 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589838), lru=0/1024 2008-12-09 14:53:09 D [fuse-bridge.c:633:fuse_getattr] glusterfs-fuse: 52: GETATTR 589830 (/data/file) 2008-12-09 14:53:09 D [fuse-bridge.c:580:fuse_attr_cbk] glusterfs-fuse: 52: (0) /data/file => 589830 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589838), lru=0/1024 2008-12-09 14:53:09 D [fuse-bridge.c:521:fuse_lookup] glusterfs-fuse: 53: LOOKUP /data/file/99/30 2008-12-09 14:53:09 D [fuse-bridge.c:464:fuse_entry_cbk] glusterfs-fuse: 53: (34) /data/file/99/30 => -1 (2) 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589838), lru=0/1024 2008-12-09 14:53:09 D [fuse-bridge.c:1133:fuse_mkdir] glusterfs-fuse: 54: MKDIR /data/file/99/30 2008-12-09 14:53:09 D [fuse-bridge.c:384:fuse_entry_cbk] glusterfs-fuse: 54: (3) /data/file/99/30 => 589839 2008-12-09 14:53:09 D [inode.c:577:__create_inode] fuse/inode: create inode(589839) 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589839), lru=0/1024 2008-12-09 14:53:09 D [fuse-bridge.c:633:fuse_getattr] glusterfs-fuse: 55: GETATTR 589838 (/data/file/99) 2008-12-09 14:53:09 D [fuse-bridge.c:580:fuse_attr_cbk] glusterfs-fuse: 55: (0) /data/file/99 => 589838 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589839), lru=0/1024 2008-12-09 14:53:09 D [fuse-bridge.c:521:fuse_lookup] glusterfs-fuse: 56: LOOKUP /data/file/99/30/0 2008-12-09 14:53:09 D [fuse-bridge.c:464:fuse_entry_cbk] glusterfs-fuse: 56: (34) /data/file/99/30/0 => -1 (2) 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589839), lru=0/1024 2008-12-09 14:53:09 D [fuse-bridge.c:1133:fuse_mkdir] glusterfs-fuse: 57: MKDIR /data/file/99/30/0 2008-12-09 14:53:09 D [fuse-bridge.c:384:fuse_entry_cbk] glusterfs-fuse: 57: (3) /data/file/99/30/0 => 589840 2008-12-09 14:53:09 D [inode.c:577:__create_inode] fuse/inode: create inode(589840) 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589840), lru=0/1024 2008-12-09 14:53:09 D [fuse-bridge.c:633:fuse_getattr] glusterfs-fuse: 58: GETATTR 589839 (/data/file/99/30) 2008-12-09 14:53:09 D [fuse-bridge.c:580:fuse_attr_cbk] glusterfs-fuse: 58: (0) /data/file/99/30 => 589839 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589840), lru=0/1024 2008-12-09 14:53:09 D [fuse-bridge.c:521:fuse_lookup] glusterfs-fuse: 59: LOOKUP /data/file/99/30/0/100399.crp 2008-12-09 14:53:09 D [fuse-bridge.c:464:fuse_entry_cbk] glusterfs-fuse: 59: (34) /data/file/99/30/0/100399.crp => -1 (2) 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589840), lru=0/1024 2008-12-09 14:53:09 D [fuse-bridge.c:1310:fuse_rename] glusterfs-fuse: 60: RENAME `/tmp2/12/04/0000000412' -> `/data/file/99/30/0/100399.crp' 2008-12-09 14:53:09 D [fuse-bridge.c:1251:fuse_rename_cbk] glusterfs-fuse: 60: /tmp2/12/04/0000000412 -> /data/file/99/30/0/100399.crp => 0 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589834), lru=0/1024 2008-12-09 14:53:09 D [fuse-bridge.c:633:fuse_getattr] glusterfs-fuse: 61: GETATTR 589834 (/tmp2/12/04) 2008-12-09 14:53:09 D [fuse-bridge.c:580:fuse_attr_cbk] glusterfs-fuse: 61: (0) /tmp2/12/04 => 589834 2008-12-09 14:53:09 D [inode.c:367:__active_inode] fuse/inode: activating inode(589834), lru=0/1024 2008-12-09 14:53:09 D [fuse-bridge.c:521:fuse_lookup] glusterfs-fuse: 62: LOOKUP /tmp2/12/04/0000000412 2008-12-09 14:53:09 D [fuse-bridge.c:464:fuse_entry_cbk] glusterfs-fuse: 62: (34) /tmp2/12/04/0000000412 => -1 (2) 2008-12-09 14:53:09 D [fuse-bridge.c:1701:fuse_flush] glusterfs-fuse: 63: FLUSH 0x1eeadf0 2008-12-09 14:53:09 D [fuse-bridge.c:939:fuse_err_cbk] glusterfs-fuse: 63: (16) ERR => 0 2008-12-09 14:53:09 D [fuse-bridge.c:1728:fuse_release] glusterfs-fuse: 64: CLOSE 0x1eeadf0 2008-12-09 14:53:09 D [fuse-bridge.c:939:fuse_err_cbk] glusterfs-fuse: 64: (17) ERR => 0 2008-12-09 14:53:15 D [inode.c:367:__active_inode] fuse/inode: activating inode(589837), lru=1/1024 2008-12-09 14:53:15 D [inode.c:321:__destroy_inode] fuse/inode: destroy inode(589837) [@0x7fe718002300]
Krishna Srinivas
2008-Dec-10 10:51 UTC
[Gluster-users] File uploaded to webDAV server on GlusterFS AFR - ends up without xattr!
Can you put "option debug on" in AFR vol definition and paste me the log when you copy through webdav? Start glusterfs with -L DEBUG Thanks Krishna On Tue, Dec 9, 2008 at 5:56 PM, Lior Goikhburg <glior at hh.ru> wrote:> Hello list. > > I'm testing GlusterFS AFR mode as a solution for implementing a highly > available webDAV file storage for our production environment. > Whlie doing performance tests I've notticed a strange behavior: the > files which are uploaded via a webDAV server, end up without extended > attributes, which removes the ability to self-heal. > The set up is a simple testing environment with 2 servers and one AFR > client which runs Nginx web server which accepts HTTP PUT requests from > clients. > > I'm uploading with the following command: > curl -0 -s -T /data/100399.crp http://localhost:8024/file/ > > > The AFR volume is mounted in /var/www/storage (is available to Nginx web > server): > glusterfs -f /etc/glusterfs/glusterfs-client.vol -n afr1 /var/www/storage/ > > Nginx receives the file into a temp directory "client_body_temp_path" > /var/www/storage/tmp2 (untill it receives the entire file) and then > renames the file (with rename () function) to the destination dir: > /var/www/storage/data > > The files that are being created/copied/moved/modified/etc manualy (via > shell), has their xattrs set up fine: > search101:/srv/export/files/data/file# getfattr -d -m ".*" test > # file: test > trusted.glusterfs.createtime="1228825236" > trusted.glusterfs.version="2" > > But not the ones uploaded via Nginx: > search101:/srv/export/files/data/file# getfattr -d -m ".*" > 99/30/0/100399.crp