Dlaczego serwer NFS jest montowany jako rw zwracający błędy systemu plików tylko do odczytu

18

Pracuję na Ubuntu Server 64bit. Zainstalowałem nfs jako rw, ale za każdym razem, gdy próbuję edytować coś w danym punkcie montowania, pojawia się błąd systemu plików tylko do odczytu

moje etc/fstabczyta:

# <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 zwroty:

/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 zwroty:

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

Pliki w mnt są w porządku, ale za każdym razem, gdy próbuję coś zmienić, pojawia się błąd:

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

Mogę połączyć się z danymi serwerami z innych serwerów i czytać i pisać w porządku. Jedyny problem dotyczy tego serwera. Próbowałem, mount -o remount,rw vnxnfs1.company.com:/NFS2 /mnt/nfs2jak sugerują odpowiedzi na powiązane pytania, ale bezskutecznie.

Przepraszam za zrzut danych, po prostu próbowałem dołączyć wszystko, co może dać wskazówki.

EDYTOWAĆ:

więcej szczegółów

Testowałem od rootużytkownika na maszynie z problemami, a pisanie do nfs działa z, rootjak również userz innego serwera (nfs-write-is-working).

z działającego serwera: 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

z 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
źródło
Czy masz / etc / export z serwera vnxnfs1? Czy użytkownik, z którym testujesz, ma prawa tam pisać (root squash / UID nieznany itp.)? Jeśli możesz zrobić „ls -la” na działającym serwerze katalogu NFS2, może to pomóc
TheFiddlerWins

Odpowiedzi:

9

Błąd „System plików tylko do odczytu” wskazuje, że system plików jest eksportowany jako tylko do odczytu. Opcja montowania rw informuje klienta, że ​​„WRITE” może zostać wysłane na serwer. W zwykłych systemach uniksowych sprawdź plik / etc / export:

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

na urządzeniach sprawdź dokumentację do eksportu jako do odczytu i zapisu.

kofemann
źródło
1
/ etc / export jest pusty na moim serwerze NFS, myślę, że dzieje się tak, ponieważ nasz stary administrator skonfigurował go tak, aby server_exportnarzędzie obsługiwało tę funkcjonalność. I miałeś rację, że dany serwer nie został uwzględniony w bloku IP oznaczonym jako rw z server_export server -llisty. Dzięki!
stupac8908
7

Eksport folderu nadrzędnego (ro) zastąpi eksport podrzędny (rw).

Przykładowy eksport:

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

SHARE1 będzie tylko do odczytu, ponieważ NFS_ROOT jest tylko do odczytu. Masz ograniczenia dotyczące wyeksportowanego katalogu głównego, który może być przyczyną problemu.

Brian Walton
źródło
6

Jak powiedział Brian, eksport nadrzędny może zastąpić eksport podrzędny. Możesz to jednak rozwiązać, dodając priorytety do eksportu. Na przykładzie Briana rozwiązałoby to problem:

/NFS_ROOT *(ro,fsid=2)
/NFS_ROOT/SHARE1 *(rw,fsid=1)
Xmister
źródło
2

Jeśli punktem montowania na kliencie jest /var/share, upewnij się, że został utworzony z prawami ustawionymi na 777:

chmod 777 /var/share

W przeciwnym razie możesz mieć dziwne dziwne błędy, w których możesz pisać tylko z rootem, ale masz RO z wszystkimi innymi użytkownikami, prawa do zamontowanych plików ---------lub inne dziwne zachowania.

sjas
źródło
1
W moim przypadku folder nadrzędny udziału nie był 777 - dzięki.
hdave