[Gluster-users] NFS file locks
Steinmetz, Ian
Ian_Steinmetz at cable.comcast.com
Thu Apr 29 14:46:35 UTC 2010
I'm seeing an issue where I can't lock files on a NFS exported
GlusterFS mount. I have two servers connected to each other doing AFR
to provide a high available NFS server (mirror the content, one VIP for
NFS mounts to clients). Both of the servers have mounted
"/mnt/glusterfs" using GlusterFS with the client pointing to both
servers. I then export the filesyste with NFS. I grabbed a quick perl
program that tries to lock a file for testing, which fails only on the
glusterfs. When I export a normal directory "/mnt/test" the locking
works.
Any ideas appreciated. I have a feeling I've implemented the
posix/locks option incorrectly.
Both servers are running Ubuntu with identical setups, below are
relevant configs.
root at gluster01:/mnt/glusterfs# uname -a
Linux gluster01 2.6.31-20-generic-pae #58-Ubuntu SMP Fri Mar 12 06:25:51
UTC 2010 i686 GNU/Linux
root at gluster01:/mnt/glusterfs# cat /etc/exports
/mnt/glusterfs <ip removed for
security>/25(rw,no_root_squash,no_all_squash,no_subtree_check,sync,insec
ure,fsid=10)
/mnt/test <ip removed for
security>/25(rw,no_root_squash,no_all_squash,no_subtree_check,sync,insec
ure,fsid=11)
* I've tried async, rsync, removing all options except FSID.
root at gluster02:/etc/glusterfs# cat glusterfs.vol
volume brick1
type protocol/client
option transport-type tcp/client
option remote-host <ip removed for security> # IP address of the remote
brick
option remote-subvolume brick # name of the remote volume
end-volume
volume brick2
type protocol/client
option transport-type tcp/client
option remote-host <ip removed for security> # IP address of the
remote brick
option remote-subvolume brick # name of the remote volume
end-volume
volume afr1
type cluster/afr
subvolumes brick1 brick2
end-volume
volume writebehind
type performance/write-behind
option window-size 4MB
subvolumes afr1
end-volume
volume cache
type performance/io-cache
option cache-size 512MB
subvolumes writebehind
end-volume
volume readahead
type performance/read-ahead
option page-size 128KB # unit in bytes
subvolumes cache
end-volume
volume iothreads
type performance/io-threads
option thread-count 4
option cache-size 64MB
subvolumes readahead
end-volume
root at gluster02:/etc/glusterfs# cat glusterfsd.vol
volume posix
type storage/posix
option directory /data/export
end-volume
volume locks
type features/posix-locks
option manditory on # tried with and without this, found in a search
of earlier post
subvolumes posix
end-volume
volume brick
type performance/io-threads
option thread-count 8
subvolumes locks
end-volume
volume server
type protocol/server
option transport-type tcp
option auth.addr.brick.allow *
option auth.addr.brick-ns.allow *
option transport.socket.nodelay on
option auth.ip.locks.allow *
subvolumes brick
end-volume
* file to test locking...
root at gluster02:/mnt/glusterfs# cat locktest.pl
#!/usr/bin/perl
use Fcntl qw(:flock);
my $lock_file = 'lockfile';
open(LOCKFILE,">>$lock_file") or die "Cannot open $lock_file: $!\n";
print "Opened file $lock_file\n";
flock(LOCKFILE, LOCK_SH) or die "Can't get shared lock on $lock_file:
$!\n";
print "Got shared lock on file $lock_file\n";
sleep 2;
close LOCKFILE;
print "Closed file $lock_file\n";
exit;
*Test run from gluster02 using normal NFS mount:
root at gluster02:/# mount <ip removed for security>:/mnt/test /mnt/test
root at gluster02:/# cd /mnt/test
root at gluster02:/mnt/test# ./locktest.pl
Opened file lockfile
Got shared lock on file lockfile
Closed file lockfile
*Test run from gluster02 using gluster exported NFS mount:
root at gluster02:/# mount 74.81.128.17:/mnt/glusterfs /mnt/test
root at gluster02:/# cd /mnt/test
root at gluster02:/mnt/test# ./locktest.pl
Opened file lockfile
Can't get shared lock on lockfile:
No locks available
--
Ian Steinmetz
Comcast Engineering - Houston
713-375-7866
More information about the Gluster-users
mailing list