Por que um servidor nfs é montado como rw retornando erros de sistema de arquivos somente leitura

18

Estou trabalhando em um servidor Ubuntu de 64 bits. Montei um nfs como rw, mas sempre que tento editar algo no ponto de montagem em questão, recebo um erro de sistema de arquivos somente leitura

minhas etc/fstableituras:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
/dev/mapper/product-root /               ext4    errors=remount-ro 0       1
UUID=1cae6948-ca9d-4f0b-aec6-9e7a60bbbad8 /boot           ext2    defaults        0       2
/dev/mapper/product-swap_1 none            swap    sw              0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0
vnxnfs1.company.com:/NFS2         /mnt/nfs2                        nfs     defaults       0       0

mount retorna:

/dev/mapper/product-root on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
/dev/sda1 on /boot type ext2 (rw)
rpc_pipefs on /run/rpc_pipefs type rpc_pipefs (rw)
vnxnfs1.company.com:/NFS2 on /mnt/nfs2 type nfs (rw)

cat /proc/mounts retorna:

rootfs / rootfs rw 0 0
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
udev /dev devtmpfs rw,relatime,size=16465812k,nr_inodes=4116453,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,nosuid,relatime,size=6590172k,mode=755 0 0
/dev/mapper/product-root / ext4 rw,relatime,errors=remount-ro,data=ordered 0 0
none /sys/fs/fuse/connections fusectl rw,relatime 0 0
none /sys/kernel/debug debugfs rw,relatime 0 0
none /sys/kernel/security securityfs rw,relatime 0 0
none /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0
none /run/shm tmpfs rw,nosuid,nodev,relatime 0 0
/dev/sda1 /boot ext2 rw,relatime,errors=continue 0 0
rpc_pipefs /run/rpc_pipefs rpc_pipefs rw,relatime 0 0
vnxnfs1.company.com:/NFS2 /mnt/nfs2 nfs rw,relatime,vers=3,rsize=32768,wsize=32768,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=172.x.y.z,mountvers=3,mountport=1234,mountproto=udp,local_lock=none,addr=172.x.y.z 0 0

Os arquivos no mnt são lidos muito bem, mas sempre que tento alterar alguma coisa, recebo um erro:

touch: cannot touch `/mnt/nfs2/path/to/test_file.txt': Read-only file system

Posso conectar-me ao NFS em questão de outros servidores e ler e escrever muito bem. O único problema está neste servidor. Tentei mount -o remount,rw vnxnfs1.company.com:/NFS2 /mnt/nfs2como respostas a perguntas relacionadas sugerem, mas sem sucesso.

Desculpe pelo despejo de dados, apenas tentei incluir qualquer coisa que pudesse gerar pistas.

EDITAR:

mais detalhes

Tenho testado o rootusuário na máquina com problemas e a gravação no nfs funciona roottanto como userem outro servidor (o nfs-write-is-working).

do servidor de trabalho: ls -la /mnt/nfs2/

total 76
drwxrwxrwx 12 root root   1024 2013-04-18 10:14 .
drwxr-xr-x 24 root root   4096 2013-04-17 10:42 ..
drwxrwxr-x  2 user user   80 2013-04-18 10:14 archives
drwxrwxrwx  2 user user   1024 2012-08-15 10:13 assignee_dealiasing_temp_folder
drwxrwxr-x  9 user user   1024 2013-03-11 13:50 data_runs
drwxrwxrwx  2 user user   2048 2013-04-19 14:54 db_transfer_dumps
drwxrwxrwx  2 root daemon 1024 2013-08-22 01:00 .etc
drwxrwxrwx  2 root root   8192 2012-08-16 14:47 lost+found
drwxr-xr-x 13 user user   1024 2013-08-16 13:37 projects
drwxr-xr-x 35 user user   2048 2013-05-10 16:34 reports
drwxrwxrwx  6 root root   1024 2013-04-17 16:47 saved_logs

do vnxnfs1 server_export server_2 -list

server_2 :
export "/NFS3" rw=172.16.0.0/24 root=172.16.0.0/24
export "/NFS2" rw=172.16.0.0/24:172.16.9.0/24 root=172.16.0.0/24:172.16.9.0/24
export "/NFS1" rw=172.16.0.0/24:172.16.9.0/24 root=172.16.0.0/24:172.16.9.0/24
export "/ISO" rw=172.16.9.16:172.16.9.18:172.16.9.20 root=172.16.9.16:172.16.9.18:172.16.9.20
export "/NFS0" rw=172.16.0.0/24 root=172.16.0.0/24
export "/" anon=0 access=128.221.252.100:128.221.253.100:128.221.252.101:128.221.253.101
stupac8908
fonte
Você tem / etc / exportações do servidor vnxnfs1? O usuário com o qual você está testando tem direitos para escrever lá (squash raiz / UID desconhecido etc)? Se você pode fazer um "ls -la" em um servidor de trabalho do diretório NFS2 que poderia ajudar
TheFiddlerWins

Respostas:

9

O erro 'sistema de arquivos somente leitura' indica que o sistema de arquivos é exportado como somente leitura. A opção rw mount informa ao cliente que 'WRITE' pode ser enviado ao servidor. Em sistemas unix regulares, verifique o arquivo / etc / export:

/NFS2 172.x.y.z(rw)

em dispositivos, verifique a documentação para exportar como leitura / gravação.

Kofemann
fonte
11
/ etc / exportações está vazio no meu servidor nfs, acho que é porque nosso antigo administrador o configurou de forma que o server_exportutilitário lida com essa funcionalidade. E você estava certo de que o servidor em questão não foi incluído no bloco IP designado como rw da server_export server -llista. Obrigado!
precisa saber é o seguinte
7

A exportação de uma pasta pai (ro) substituirá uma exportação filho (rw).

Exportações de exemplo:

/NFS_ROOT *(ro)
/NFS_ROOT/SHARE1 *(rw)

SHARE1 será somente leitura porque NFS_ROOT é somente leitura. Você tem restrições em um diretório raiz exportado que pode estar causando o problema.

Brian Walton
fonte
6

Como Brian disse, uma exportação pai pode substituir uma exportação filho. Mas você pode resolver isso adicionando prioridades às suas exportações. Então, usando o exemplo de Brian, isso resolveria o problema:

/NFS_ROOT *(ro,fsid=2)
/NFS_ROOT/SHARE1 *(rw,fsid=1)
Xmister
fonte
2

Se o seu ponto de montagem no cliente for /var/share, verifique se ele foi criado com os direitos configurados para 777:

chmod 777 /var/share

Caso contrário, você poderá ter erros estranhos, estranhos, nos quais poderá escrever apenas com raiz, mas possuir RO com todos os outros usuários, direitos de arquivos montados como ---------ou outro comportamento estranho.

sjas
fonte
11
No meu caso, a pasta pai do compartilhamento não era 777 - obrigado.
Hdave 24/09/19