เหตุใดเซิร์ฟเวอร์ nfs จึงถูกเมาท์เนื่องจาก rw ส่งคืนข้อผิดพลาดระบบไฟล์แบบอ่านอย่างเดียว


18

ฉันทำงานบน Ubuntu Server 64 บิต ฉันติดตั้ง nfs เป็น rw แต่เมื่อใดก็ตามที่ฉันพยายามแก้ไขอะไรก็ตามบน mountpoint ที่เป็นปัญหาฉันจะได้รับข้อผิดพลาดของระบบไฟล์แบบอ่านอย่างเดียว

etc/fstabอ่านของฉัน:

# <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 ผลตอบแทน:

/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 ผลตอบแทน:

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

ไฟล์บน mnt อ่านได้ดี แต่เมื่อใดก็ตามที่ฉันพยายามที่จะเปลี่ยนแปลงสิ่งที่ฉันได้รับข้อผิดพลาด:

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

ฉันสามารถเชื่อมต่อกับ nfs ในคำถามจากเซิร์ฟเวอร์อื่น ๆ และอ่านและเขียนได้ดี ปัญหาเดียวที่อยู่บนเซิร์ฟเวอร์นี้ ฉันได้ลองmount -o remount,rw vnxnfs1.company.com:/NFS2 /mnt/nfs2เป็นคำตอบสำหรับคำถามที่เกี่ยวข้องแนะนำ แต่ไม่มีประโยชน์

ขออภัยสำหรับการถ่ายโอนข้อมูลฉันพยายามที่จะรวมสิ่งที่สามารถให้เบาะแส

แก้ไข:

รายละเอียดเพิ่มเติม

ฉันได้รับการทดสอบจากrootผู้ใช้บนเครื่องที่มีปัญหาและการเขียนไปยัง nfs ทำงานได้rootดีuserจากเซิร์ฟเวอร์อื่น ๆ (nfs-write-is-working)

จากเซิร์ฟเวอร์ที่ทำงาน: 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

จาก 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

คุณมี / etc / exports จากเซิร์ฟเวอร์ vnxnfs1 หรือไม่ ผู้ใช้ที่คุณกำลังทดสอบมีสิทธิ์เขียน (รูตสควอช / UID ที่ไม่รู้จัก ฯลฯ ) หรือไม่ หากคุณสามารถทำ "ls -la" บนเซิร์ฟเวอร์ที่ใช้งานได้ของไดเรกทอรี NFS2 มันอาจช่วยได้
TheFiddlerWins

คำตอบ:


9

ข้อผิดพลาด 'ระบบไฟล์แบบอ่านอย่างเดียว' บ่งชี้ว่าระบบไฟล์ถูกเอ็กซ์พอร์ตเป็นแบบอ่านอย่างเดียว ตัวเลือก rw mount บอกลูกค้าว่า 'เขียน' ได้รับอนุญาตให้ส่งไปยังเซิร์ฟเวอร์ บนระบบ unix ปกติให้ตรวจสอบไฟล์ / etc / exports:

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

บนเครื่องใช้ตรวจสอบเอกสารเพื่อส่งออกเป็นอ่าน - เขียน


1
/ etc / exports ว่างเปล่าบนเซิร์ฟเวอร์ nfs ของฉันฉันคิดว่านี่เป็นเพราะผู้ดูแลระบบเก่าของเราตั้งค่าดังกล่าวเพื่อให้server_exportยูทิลิตี้จัดการฟังก์ชั่นนี้ และคุณถูกต้องว่าเซิร์ฟเวอร์ดังกล่าวไม่รวมอยู่ในบล็อก IP ที่กำหนดเป็น rw จากserver_export server -lรายการ ขอบคุณ!
stupac8908

7

การส่งออกโฟลเดอร์หลัก (ro) จะแทนที่การส่งออกลูก (rw)

ตัวอย่างการส่งออก:

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

SHARE1 จะเป็นแบบอ่านอย่างเดียวเนื่องจาก NFS_ROOT เป็นแบบอ่านอย่างเดียว คุณมีข้อ จำกัด ในไดเรกทอรีรากที่ส่งออกซึ่งอาจทำให้เกิดปัญหา


6

ดังที่ Brian กล่าวว่าการส่งออกของผู้ปกครองสามารถแทนที่การส่งออกเด็กได้ แต่คุณสามารถแก้ปัญหานี้ได้โดยเพิ่มลำดับความสำคัญให้กับการส่งออกของคุณ ดังนั้นโดยใช้ตัวอย่างของไบรอันสิ่งนี้จะช่วยแก้ปัญหา:

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

2

หากเมานต์ของคุณบนไคลเอนต์/var/shareตรวจสอบให้แน่ใจว่ามันสร้างขึ้นด้วยสิทธิ์ที่กำหนดเป็น 777

chmod 777 /var/share

มิฉะนั้นคุณอาจมีข้อผิดพลาดแปลก ๆ ที่คุณสามารถเขียนเฉพาะกับรูท แต่มี RO กับผู้ใช้อื่น ๆ ทั้งหมดสิทธิของไฟล์ที่เมาท์เช่น---------หรือพฤติกรรมแปลก ๆ


1
ในกรณีของฉันโฟลเดอร์หลักของการแชร์ไม่ได้เป็น 777 - ขอบคุณ
hdave
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.