[Gluster-users] glusterfs bdb backend problem

William Hanwoody hanwoody at gmail.com
Wed Mar 18 01:45:56 UTC 2009


I cannot touch or cp files to glusterfs filesystem with bdb backend.

orion31 is glusterfs server, orion28 is glusterfs client.

-------------------------------------------------------------------------------------------

[root at orion28 ~]# mount -t glusterfs /etc/glusterfs/glusterfs-bdb.vol /mnt
[root at orion28 ~]# touch /mnt/a
touch: cannot touch `/mnt/a': No such file or directory
[root at orion28 ~]# ls
a  b
[root at orion28 ~]# cp a /mnt/a
cp: writing `/mnt/a': File descriptor in bad state
cp: closing `/mnt/a': File descriptor in bad state
-------------------------------------------------------------------------------------------

[root at orion28 ~]# tail /var/log/glusterfs/glusterfs.log
2009-03-18 09:31:21 E [fuse-bridge.c:539:fuse_attr_cbk] glusterfs-fuse: 13: 
UTIMENS() /a => -1 (Operation not permitted)
2009-03-18 09:32:17 E [fuse-bridge.c:1606:fuse_writev_cbk] glusterfs-fuse: 17: 
WRITE => -1 (File descriptor in bad state)
2009-03-18 09:32:17 E [fuse-bridge.c:924:fuse_err_cbk] glusterfs-fuse: 18: 
FLUSH() ERR => -1 (File descriptor in bad state)
-------------------------------------------------------------------------------------------

My glusterfs server log:
[root at orion31 glusterfs]# tail glusterfsd.log -n 500
.........................
2009-03-18 09:30:26 W [xlator.c:426:validate_xlator_volume_options] brick: 
option 'mandatory' is deprecated, preferred is 'mandatory-locks', continuing 
with
 correction
2009-03-18 09:30:26 W [glusterfsd.c:451:_log_if_option_is_invalid] bdb: 
option 'logdir' is not recognized
2009-03-18 09:30:26 W [glusterfsd.c:451:_log_if_option_is_invalid] bdb: 
option 'errfile' is not recognized
2009-03-18 09:30:26 W [glusterfsd.c:451:_log_if_option_is_invalid] bdb: 
option 'lru-limit' is not recognized
2009-03-18 09:30:26 W [glusterfsd.c:451:_log_if_option_is_invalid] bdb: 
option 'checkpoint-timeout' is not recognized
2009-03-18 09:30:26 W [glusterfsd.c:451:_log_if_option_is_invalid] bdb: 
option 'cache' is not recognized
2009-03-18 09:30:26 W [glusterfsd.c:451:_log_if_option_is_invalid] bdb: 
option 'directory' is not recognized
2009-03-18 09:30:26 N [glusterfsd.c:1134:main] glusterfs: Successfully started
2009-03-18 09:31:14 N [server-protocol.c:7295:mop_setvolume] server: accepted 
client from 10.55.22.28:1023
2009-03-18 09:31:14 N [server-protocol.c:7295:mop_setvolume] server: accepted 
client from 10.55.22.28:1022
2009-03-18 09:31:17 E [bdb.c:2750:bdb_readdir] bdb: invalid argument: bfd
2009-03-18 09:31:17 E [bdb.c:1498:bdb_releasedir] bdb: failed to extract fd 
data from fd=0x513880
2009-03-18 09:31:21 E [bdb.c:123:bdb_mknod] bdb: bdb_db_get() failed for 
path: /a
2009-03-18 09:31:21 E [bdb.c:2022:bdb_utimens] bdb: failed to lstat 
on /data1/bdb-export/a (Operation not permitted)
2009-03-18 09:32:17 E [bdb.c:789:bdb_writev] bdb: invalid argument: bfd
2009-03-18 09:32:17 E [bdb.c:868:bdb_flush] bdb: invalid argument: bfd
2009-03-18 09:32:17 E [bdb.c:868:bdb_flush] bdb: invalid argument: bfd
2009-03-18 09:32:17 E [bdb.c:891:bdb_release] bdb: failed to extract bdb 
specific information from fd:0x513a80
-------------------------------------------------------------------------------------------

My server vol file:
[root at orion32 bdb-export]# cat /etc/glusterfs/glusterfsd-bdb.vol
volume bdb
  type storage/bdb
  option directory /data1/bdb-export
  #option transaction off   # default is on
  option cache on          # default is off
  #option access-mode btree # default will be hash
  option checkpoint-timeout 10 # default is 30seconds
  #option file-mode 0644  # default is 0644
  #option dir-mode 0755   # default is 0755
  option lru-limit 200    # default is 100
  option errfile /var/log/glusterfs/bdberrlog # default is /dev/null?
  option logdir /var/log/glusterfs
end-volume

volume brick
  type features/locks
  option mandatory on          # enables mandatory locking on all files
  subvolumes bdb
end-volume

volume server
  type protocol/server
  option transport-type tcp                      # For TCP/IP transport
  #option transport.socket.listen-port 6996       # Default is 6996
  subvolumes brick
  option auth.addr.brick.allow *               # access to "brick" volume
end-volume
-------------------------------------------------------------------------------------------

My client vol:
[root at orion28 ~]# cat /etc/glusterfs/glusterfs-bdb.vol
volume orion31
  type protocol/client
  option transport-type tcp
  option remote-host orion31         # IP address of the remote brick

# option transport-timeout 30          # seconds to wait for a reply
                                       # from server for each request
  option remote-subvolume brick # name of the remote volume
end-volume
-------------------------------------------------------------------------------------------

My system envirement:

centos4.4 linux  x86_64
dkms-fuse-2.7.4-1.nodist.rf
fuse-2.7.4-1.el4.rf
glusterfs 2.0.0rc4
bdb 4.7.25

my bdb 4.7.25:
[root at orion32 bdb-export]# rpm -ql db
/usr/local/bdb4.7/lib64/libdb-4.7.so
/usr/local/bdb4.7/lib64/libdb_cxx-4.7.so

[root at orion32 bdb-export]#rpm -ql db-devel
/usr/local/bdb4.7/include/db.h
/usr/local/bdb4.7/include/db_cxx.h
/usr/local/bdb4.7/lib/libdb-4.7.a
/usr/local/bdb4.7/lib/libdb-4.7.la
/usr/local/bdb4.7/lib/libdb-4.so
/usr/local/bdb4.7/lib/libdb.a
/usr/local/bdb4.7/lib/libdb.so
/usr/local/bdb4.7/lib/libdb_cxx-4.7.a
/usr/local/bdb4.7/lib/libdb_cxx-4.7.la
/usr/local/bdb4.7/lib/libdb_cxx-4.so
/usr/local/bdb4.7/lib/libdb_cxx.a
/usr/local/bdb4.7/lib/libdb_cxx.so

[root at orion32 bdb-export]# ls -l /lib64/libdb-4.7.so
lrwxrwxrwx  1 root root 36 Mar 17 
16:59 /lib64/libdb-4.7.so -> /usr/local/bdb4.7/lib64/libdb-4.7.so
[root at orion32 bdb-export]# ls -l /usr/lib64/libdb-4.7.so
lrwxrwxrwx  1 root root 36 Mar 17 
16:59 /usr/lib64/libdb-4.7.so -> /usr/local/bdb4.7/lib64/libdb-4.7.so
[root at orion32 bdb-export]#  

for bdb's version in centos4 is 4.2, and difficult to upgrade to 4.7.25, then 
I installed bdb4.7 in /usr/local/bdb/4.7 

and compile glusterfs 2.0.0rc4 with libdb-4.7 through modifing 
xlators/storage/bdb/src/Makefile.am/Makefile.in.
and link /usr/include/db.h to /usr/local/bdb4.7/include/db.h

-------------------------------------------------------------------------------------------




More information about the Gluster-users mailing list