O que eu estou tentando fazer é fazer com que meu cliente openBSD (OpenBSD 4.9) monte automaticamente um sistema de arquivos Linux NFS (Scientific Linux 6.1). Até agora, não tenho certeza se está configurado corretamente.
Para tirar as coisas do caminho, consigo montar o nfs manualmente:
# mount_nfs -T -3 192.168.15.100:/exports /mnt
# ls -la /mnt
total 52
drwxr-xr-x 7 root wheel 4096 Oct 4 22:42 .
drwxr-xr-x 16 root wheel 512 Nov 26 16:33 ..
drwxrwxr-x 5 _sndio _sndio 4096 Oct 31 21:58 centos
drwxr-xr-x 15 root wheel 4096 Nov 6 09:17 home
drwxr-xr-x 5 root wheel 4096 Oct 31 21:27 sl
drwxr-xr-x 3 root wheel 4096 Nov 19 16:02 sles
drwxr-xr-x 17 503 503 4096 Nov 10 17:37 users
#
Portanto, conectividade não é um problema, tanto quanto eu posso dizer.
Como na página man, o seguinte está configurado em /etc/amd/auto.home:
/defaults type:=nfs;sublink:=${key};opts:=rw,soft,intr,vers=3,proto=tcp
* rhost:=192.168.15.100;rfs:=/exports
Por sua vez, / etc / amd / master é configurado como tal:
# cat /etc/amd/master
/exports amd.home
Após a reinicialização, posso ver o mount, mas curiosamente, em vez do hostname:
amd:24490 0 0 0 100% /exports
Pelo que entendi, o amd age um pouco diferente do FreeBSD. Ainda assim, eu tentei ver se eu poderia automountount.
Não:
ksh: cd: /exports/users - Resource temporarily unavailable
# cd /exports/192.168.15.100/host/users
ksh: cd: /exports/192.168.15.100/host/users - Resource temporarily unavailable
Uma pesquisa no google não ajuda muito - parece que automontar o NFS com o OpenBSD não é algo que normalmente é feito. Além de isso , as informações são bastante escassas.
Eu posso, claro, sempre montar é permanentemente, mas eu costumo ser um pouco anal em convenção, então não por agora. :)
Alguma direção seria apreciação.
(E, caso você esteja se perguntando, tentei usar o amds no FreeBSD e isso não deu certo - embora eu não me importaria de explicar a diferença entre como o FreeBSD implementa e como o OpenBSD o implementa)
UPDATE: Depois de reescrever o arquivo do mapa várias vezes, cheguei a me comunicar com o servidor NFS com essa configuração:
/defaults type:=nfs;rhost:=kerberos.monzell.com;rfs:=/exports;\
sublink:=${key};opts:=rw,nodev,nosuid,soft,intr,tcp,resvport
* ${host}==${rhost};type:=nfs;fs:=${rfs};opts:=rw,nodev,nosuid,soft,intr,tcp,resvport
No entanto, por algum motivo, parece que o amd usará como padrão somente o NFS versão 2 em relação ao udp:
# tcpdump dst kerberos
tcpdump: listening on pcn0, link-type EN10MB
tcpdump: WARNING: compensating for unaligned libpcap packets
20:38:28.558385 openbsd.monzell.com.856 > kerberos.monzell.com.sunrpc: udp 100
20:38:28.559154 openbsd.monzell.com.856 > kerberos.monzell.com.892: udp 96
20:38:30.592761 openbsd.monzell.com.856 > kerberos.monzell.com.nfsd: xid 0x22000000 (NFSv2) 40 null
20:38:33.558107 arp reply openbsd.monzell.com is-at 52:54:00:52:8f:66
Eu tentei várias opções de forçá-lo a tentar montar como nfsv3 como:
/defaults type:=nfs;rhost:=kerberos.monzell.com;rfs:=/exports;\
sublink:=${key};opts:=rw,nodev,nosuid,soft,intr,vers=3,proto=tcp,resvport
* ${host}==${rhost};type:=nfs;fs:=${rfs};opts:=rw,nodev,nosuid,soft,intr,vers=3,proto=tcp,resvport
ou:
/defaults type:=nfs;rhost:=kerberos.monzell.com;rfs:=/exports;\
sublink:=${key};opts:=rw,nodev,nosuid,soft,intr,vers=-3,proto=tcp,resvport
* ${host}==${rhost};type:=nfs;fs:=${rfs};opts:=rw,nodev,nosuid,soft,intr,vers=3,proto=tcp,resvport
Nada ainda.
Curioso o suficiente, o OpenBSD monta o padrão para a versão 3, então não tenho certeza por que ele iria começar com a versão 3 em amd. Quais seriam as opções corretas para passar ao automount?
EDIT: Como eu indiquei, posso apontar via fstab. Para prova, aqui está:
kerberos:/exports /mnt nfs rw,nodev,nosuid,tcp,soft,intr 1 1
Filesystem 512-blocks Used Avail Capacity Mounted on
/dev/wd0a 290396 89032 186848 32% /
/dev/wd0k 3240316 1858940 1219364 60% /home
/dev/wd0d 448956 12 426500 0% /tmp
/dev/wd0f 1943196 903596 942444 49% /usr
/dev/wd0g 1105820 346852 703680 33% /usr/X11R6
/dev/wd0h 4387772 256560 3911824 6% /usr/local
/dev/wd0j 2137436 4 2030564 0% /usr/obj
/dev/wd0i 2137436 4 2030564 0% /usr/src
/dev/wd0e 498940 18676 455320 4% /var
amd:26660 0 0 0 100% /net
kerberos:/exports 103212280 66319088 31650312 68% /mnt
Como eu notei, o OpenBSD é montado primeiro pela versão 3, então eu não sei porque, sob o amd, ele não seria montado via versão 3 (tcp) e seria montado via versão 2 com o udp.
EDIT: Como sugerido, tentei as seguintes configurações:
defaults type:=nfs;fs:=${autodir}
# autodir = -a parameter of amd call = amd_mnt in rc.conf = /tmp_mnt
# Be careful with 'umount' and 'unmount' in the following.
remote type:=program;fs:=/mnt;\
mount:="/sbin/mount_nfs kerberos.monzell.com:/exports/";\
unmount:="/sbin/umount /mnt"
que retornou
# cd /net/remote
usage: [-23bcdilsTU] [-a maxreadahead] [-g maxgroups]
[-I readdirsize] [-o options] [-R retrycnt] [-r readsize]
[-t timeout] [-w writesize] [-x retrans] rhost:path node
ksh: cd: /net/remote - Operation not permitted
Então isso:
defaults type:=nfs;fs:=${autodir}
# autodir = -a parameter of amd call = amd_mnt in rc.conf = /tmp_mnt
# Be careful with 'umount' and 'unmount' in the following.
remote type:=program;fs:=/mnt;\
mount:="/sbin/mount nfs kerberos.monzell.com:/exports/";\
unmount:="/sbin/umount /mnt"
Que retornou isso:
# cd /net/remote
nfs: realpath kerberos.monzell.com:/exports/: No such file or directory
ksh: cd: /net/remote - Operation not permitted
Nada ainda.