[NFS] FreeBSD, Linux en locking

Pagina: 1
Acties:

  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 09:26
De NFS nachtmerrie:

Ik heb hier staan:
- een linux servertje met debian en 2.4.20-wolk4.1s, deze exporteert via NFS mijn /home
- een FreeBSD 5.1 machine, deze mount /home op de linux server

UIDmapping gaat via nss_ldap (wel experimenteel op FreeBSD, maar het werkt wel :))

Alles leuk en aardig, draait allemaal leuk, snel zat over 100Mbit. Totdat ik evolution op de FreeBSD machine zet:

Error while 'Storing folder 'home/jan/evolution/local/Inbox'':
Failed to get lock using fcntl(2): Operation not supported

Tja, locking he ;)

Op de server draait nfs-kernel-server en ik zie dat [lockd] draait. Op de client zie ik niets van locking draaien, maar als ik mijn mount opdracht zo bekijk met mount_nfs, zou dat ding volgens de manpage wel degelijk locking moeten doen. Tussen linux en linux zou het geen probleem moeten zijn: op school gebruiken we ook linux als NFS server en linux als NFS client, daar werkt Evolution wel gewoon zonder geflikker.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
jan@ck408323-a:~$ rpcinfo -p localhost
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100021    1   udp  32770  nlockmgr
    100021    3   udp  32770  nlockmgr
    100021    4   udp  32770  nlockmgr
    100021    1   tcp  32774  nlockmgr
    100021    3   tcp  32774  nlockmgr
    100021    4   tcp  32774  nlockmgr
    100005    1   udp  32771  mountd
    100005    1   tcp  32775  mountd
    100005    2   udp  32771  mountd
    100005    2   tcp  32775  mountd
    100005    3   udp  32771  mountd
    100005    3   tcp  32775  mountd
    100024    1   udp  32863  status
    100024    1   tcp  60946  status


Wel degelijk locking lijkt mij. Vanaf de FreeBSD machine dezelfde output.

Inmiddels een vuile workaround gevonden die werkt:
code:
1
mount -t nfs -o nfsv3,tcp,intr,rdirplus,-r=32768,-w=32768,-L 192.168.0.1:/home /home


Wat deze mountopties uitvreten: Locking niet aan de server doorgeven, maar lekker alles lokaal uitzoeken. Ik ben toch niet 2x als dezelfde user ingelogd op 2 verschillende machines, dus ik heb hier geen problemen mee. Een echte oplossing zou natuurlijk mooi zijn.

[ Voor 11% gewijzigd door _JGC_ op 22-06-2003 15:09 ]


  • MadCow*
  • Registratie: Januari 2001
  • Laatst online: 05-08-2025

MadCow*

<= icon space for rent

zou het helpen als je in je rc.conf :
code:
1
2
rpc_lockd_enable="YES"
rpc_statd_enable="YES"


Dit heeft iets met locking te maken maar weet niet presies wat ..
Note dit is alleen voor 5.x :)

Veni, Vidi, Et je n'en crois pas mes yeux! (ik kwam, ik zag, en ik geloofde mijn ogen niet!) - J. Caesar (Asterix en de gladiatoren) | Nu vernieuwd met toegevoegde lazyness.


Verwijderd

idd, je moet wel ff beide regeltjes in rc.conf hebben, dan heeft je fbsd box ook locking support. Overigens geld dit net zo goed voor 4.x als voor 5.x hoor MadCow.

  • Leon
  • Registratie: Maart 2000
  • Laatst online: 10-04 09:12

Leon

Rise Of The Robots

vers van de mailing list:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
From:   Kris Kennaway <kris@obsecurity.org>
To:     Rudolph Pereira <memetical@yahoo.com.au>
Cc:     stable@freebsd.org
Subject:    Re: nfs locking between current and stable
Date:   Sun, 22 Jun 2003 04:43:03 -0700 
On Sun, Jun 22, 2003 at 09:14:57PM +1000, Rudolph Pereira wrote:
> Hello,
> I am attempting to get flock/file locking working between my -stable
> (updated ~19 may) nfs file server and -current desktop; the server is
> running lockd/statd, and both my mail client (mutt) and a simple perl
> program complain that files on the nfs server cannot be locked.

The client also needs to run lockd/statd.  Be aware that rpc.lockd in
4.x and earlier is a null implementation that does not actually
perform NFS file locking with the server, it just returns success to
the client.  A working lockd was implemented in 5.0.

Kris


en

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
From:   Andrey Alekseyev <uitm@blackflag.ru>
To:     Rudolph Pereira <memetical@yahoo.com.au>
Cc:     stable@freebsd.org
Subject:    Re: nfs locking between current and stable
Date:   Sun, 22 Jun 2003 16:03:58 +0400 (MSD)   
Rudolph,

> I am attempting to get flock/file locking working between my -stable
> (updated ~19 may) nfs file server and -current desktop; the server is
> running lockd/statd, and both my mail client (mutt) and a simple perl
> program complain that files on the nfs server cannot be locked.

NFS locking wasn't implemented in 4.4BSD. There is still no implementation
in STABLE. If you really need it, you may take a look at Terry's page
where an intra-client NFS lock implementation for STABLE could be found:

http://people.freebsd.org/~terry/

If you need the above mentioned patches that apply cleanly to RELENG_4,
take a look at this:

http://www.blackflag.ru/patches/nfs-client-and-server-locking-4.5-STABLE-20020312.diff

It works fine in our production environment and was tested under quite a
heavy load. However, do not miss that this patch doesn't actually implement
lock requests to the server. It only allows for locks being properly held
within a single client. That is, locks for the same file on several
different STABLE boxes *won't* work. Thus, the word "intra-client" :)

Hope this helps.


Dit post ik alleen maar ter aanvulling aangezien het hier om 5.x gaat :)

edit:

Madcow: 4.x ondersteund wel (met de in de 2de mail genoemde patches) wel gedeeltelijke locking.

[ Voor 5% gewijzigd door Leon op 23-06-2003 13:32 ]

Eeuwige n00b


  • MadCow*
  • Registratie: Januari 2001
  • Laatst online: 05-08-2025

MadCow*

<= icon space for rent

Verwijderd schreef op 23 June 2003 @ 00:13:
idd, je moet wel ff beide regeltjes in rc.conf hebben, dan heeft je fbsd box ook locking support. Overigens geld dit net zo goed voor 4.x als voor 5.x hoor MadCow.
Jah maar ik herrinerde nog iets vaags over dat de lockd in 4.x niet echt lockt (tnx leon voor het plakken van de mail).

Veni, Vidi, Et je n'en crois pas mes yeux! (ik kwam, ik zag, en ik geloofde mijn ogen niet!) - J. Caesar (Asterix en de gladiatoren) | Nu vernieuwd met toegevoegde lazyness.


Verwijderd

w00t, hmz, dan ben ik al een heeeele lange tijd "under the false impression" dat locking onder 4.x werkt |:(

Verwijderd

Toevallig ben ik hier ook mee bezig op dezelfde OSes (FreeBSD en Linux) maar niet voor 1 client, voor een stuk of 15-20 met uitbreidmogelijkgeden dus het ziet er niet naar uit dat dit een oplossing is. Het is hoofdzakelijk voor /home bedoelt zodat een user op elke bak een eigen useraccount heeft en een eigen homedir welke op elke bak hetzelfde is maar wel dynamisch is: de inhoud van /home moet dus veranderd mogen worden ook wanneer er in is gelogt vanaf meerdere computers. Eventueel ook /usr geshared (alles draait Debian met weinig schijfruimte. Dit is eigelijk helemaal geen probleem omdat /usr enkel voor lezen gebruikt wordt door users) en X server gecentraliseerd (scheelt ook verveling) maar dat staat hier min of meer los van. NFS is simpelweg geen oplossing omdat het geen locking ondersteunt, althans niet goed. Dus iets anders.

Voor Linux zijn enkele implementaties van SSHFS waarbij je remote SSH kunt mounten als user. Encryptie is echter overkill in dit geval en de paar FreeBSD clients hebben dit afaik niet hoewel dat laatste niet zo belangrijk is.

De enige bekende oplossing die ik me kan bedenken is SMB. Samba 3.0.x heeft ook LDAP support dus dat mixed goed. Maar.. liever iets anders dan Samba, en vind ik NFS een stuk makkelijker te configureren.

Wel gaaf dat FreeBSD nu ook nss_ldap werkend heeft. Op welke versies precies als ik via Google zoek kom ik op dezelfde page uit als X jaar geleden hetgeen me zegt: werkt niet. Op 4.7 krijg ik een foutmelding als ik dit in de port probeer te compilen van 'wordt pass gesupport in 5.1'

  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 09:26
FreeBSD 5.1 kent nss(_ldap), daarvoor is het nooit geimplementeerd geweest (5.0 wel, maar dat was nog beperkter dan dit)

Als ik nu een shell open, staat er "I have no name!@host12 ~#"

UID resolving met id werkt wel, en inloggen ook. Tis nog niet perfect zoals linux nsswitch, maar het begint er al sterk op te lijken.

Wat betreft Samba en LDAP: Dat heeft te maken met LDAP backend voor je PDC, iets wat ik op dit moment ook gebruik met samba 2.2.8a overigens.

je zou met modules als pam_mount kunnen werken om bij het inloggen direct al een SMB mount te maken.
Pagina: 1