FW: problem s NFS
Daniel Staněk
Daniel.Stanek na mius.cz
Sobota Srpen 26 13:43:25 CEST 2006
>
> mam problem s NFS, ktory sa uz dlhsie snazim vyriesit.
> prejavuje sa to v tom, ze pokial na primountovanom zvazku zacnem
> vykonavat nejaku narocnu I/O operaciu (rozumejme pracu so subormi,
> ktore maju 100+ MB, trebars rozbalenie nejakeho tarballu so zalohami,
> atd...), spojenie sa asi po
> 5-6 minutach prerusi (to som zistil za pomoci "nfsstat -ns"
> na serveri, ktory mi exportuje adresare) a klientska masina ide pomaly
> do kelu, I/O wait je 100% a nemozem s tym nic spravit, len reboot
> klienta :-(
>
> je mi jasne, ze kvoli tomuto preruseniu spojenia a opatovnemu
> nenadviazaniu sa tam vlastne caka na dokoncenie I/O operacie a preto
> to dojde do takeho stavu.
>
> ako prve som upodozrieval OpenVPN, pretoze nad tym to bezi, co sa mi
> ale neskor potvrdilo, ze to s tymto problemom nema nic spolocne,
> pretoze sa rovnaky problem deje i ked to bezi priamo.
>
> rovnako sa to chova aj pri TCP/UDP, nezavisle na tom, ci to bezi nad
> OpenVPN. NFS pouzivame verziu 3. skusal som aj menit rozne nastavenia
> pri mountovani NFS zvazkov (rsize,wsize,soft|hard,timeo,...), ale nic
> nepomohlo. na timeout spravu sa vobec nedockam. HW tych masin by nemal
> byt problem, su to relativne silne stroje.
>
> nevedel by ma niekto z vas nakopnut tym spravnym smerom ako tento stav
> vyriesit?
zdravim,
nenapsal si na jakem jadre/distribuci/architekture se problem vyskytuje. ale
jinak s jadry 2.6.x a nfsv3 mame problemy porad. bud nam tuhne klientska
aplikace ve stavu D (disk wait) pri vyssi zatezi (hlavne na SMP) nebo pri
delsi dobe neccinosti trva pomerne dlouho (radove desitky sekund) nez server
poprve odpovi. vypada to na spoustu chyb v jadre :(
zkus:
- aplikovat opravne patche znamych chyb - odkaz bude na nfs.sourceforge.net
- aplikovat tento patch pokud mas jadro 2.6.x a SMP system:
--- linux.orig/fs/nfs/inode.c 2005-07-06 11:08:27.000000000 -0700
+++ linux/fs/nfs/inode.c 2005-07-06 11:20:19.000000000 -0700
@@ -1153,10 +1155,12 @@ void nfs_end_data_update(struct inode *i
if (!nfs_have_delegation(inode, FMODE_READ)) {
/* Mark the attribute cache for revalidation */
+ lock_kernel();
nfsi->flags |= NFS_INO_INVALID_ATTR;
/* Directories and symlinks: invalidate page cache too */
if (S_ISDIR(inode->i_mode) || S_ISLNK(inode->i_mode))
nfsi->flags |= NFS_INO_INVALID_DATA;
+ unlock_kernel();
}
nfsi->cache_change_attribute ++;
atomic_dec(&nfsi->data_updates);
- nekde sem cetl ze nfsv3 funguje jakztakz az od verze 2.6.16 a vejs (?)
- zkus prejit na nfsvers=2, ten zda se funguje bez problemu (pokud ti nevadi
jeho principielni omezeni)
- jinak taky echo t > /proc/sysrq-trigger a prozkoumat stack trace tech
tvych procesu
v kazdym pripadku budu rad kdyz se ozve nekdo kdo s tim ma nejake zkusenosti
nebo komu se to podarilo vyresit.
dan
Další informace o konferenci Linux