คำสั่งของการเรียบเป็นสิ่งสำคัญ การเริ่มต้นเซิร์ฟเวอร์ใหม่หลังจากไคลเอนต์อาจส่งผลให้สถานการณ์นี้ หมายเลขอ้างอิงเก่าของ NFS บ่งชี้ว่าไคลเอ็นต์มีไฟล์เปิดอยู่ แต่เซิร์ฟเวอร์ไม่รู้จักการจัดการไฟล์อีกต่อไป ในบางกรณี NFS จะล้างโครงสร้างข้อมูลหลังจากหมดเวลา ในกรณีอื่น ๆ คุณจะต้องทำความสะอาดโครงสร้างข้อมูล NFS ด้วยตัวคุณเองและรีสตาร์ท NFS หลังจากนั้น ที่โครงสร้างเหล่านี้ตั้งอยู่ค่อนข้าง O / S
ลองรีสตาร์ท NFS ก่อนบนเซิร์ฟเวอร์จากนั้นไคลเอนต์ นี่อาจล้างไฟล์ที่จับ
ไม่แนะนำให้รีบูตเซิร์ฟเวอร์ NFS ด้วยไฟล์ที่เปิดจากเซิร์ฟเวอร์อื่น นี่เป็นปัญหาโดยเฉพาะอย่างยิ่งถ้าลบไฟล์ที่เปิดอยู่บนเซิร์ฟเวอร์ เซิร์ฟเวอร์อาจเปิดไฟล์ไว้จนกว่าจะมีการรีบูทใหม่ แต่การรีบูตจะลบหมายเลขอ้างอิงไฟล์ในหน่วยความจำทางฝั่งเซิร์ฟเวอร์ จากนั้นไคลเอ็นต์จะไม่สามารถเปิดไฟล์ได้อีกต่อไป
การพิจารณาว่าการเมาท์ใดที่ใช้งานจากเซิร์ฟเวอร์นั้นยากและไม่น่าเชื่อถือ showmount -a
ตัวเลือกอาจแสดงม้าใช้งานบางอย่าง แต่อาจจะไม่รายงานทั้งหมดของพวกเขา ไฟล์ที่ถูกล็อคนั้นระบุได้ง่ายกว่า แต่ต้องการการล็อคเพื่อเปิดใช้งานและต้องอาศัยซอฟต์แวร์ไคลเอนต์เพื่อล็อคไฟล์
คุณสามารถใช้lsof
กับไคลเอนต์เพื่อระบุกระบวนการที่มีไฟล์เปิดอยู่บนเมาท์
ฉันใช้hard
และintr
เมานต์ตัวเลือกในการเมาท์ NFS ของฉัน hard
ตัวเลือกที่ทำให้เกิด IO จำเป็นต้องลองไปเรื่อย ๆ intr
ตัวเลือกที่ช่วยให้กระบวนการจะถูกฆ่าตายถ้าพวกเขากำลังรออยู่บน NFS IO เสร็จสมบูรณ์
hard, intr
เป็นคำแนะนำที่ดี อย่างไรก็ตามโปรดทราบว่า NFS จะเพิ่มการหมดเวลาเป็นสองเท่าด้วยการลองแต่ละครั้ง ดังนั้นคุณที่ดีที่สุดตั้งtimeo=1
และretrans=5
หรือเพื่อให้ โปรดทราบว่าสิ่งนี้จะทำให้เครียดมากบนเซิร์ฟเวอร์ NFS ของคุณหลังจากที่รีสตาร์ท NFS พยายามอย่ารีสตาร์ทบริการ NFS ของคุณบ่อยครั้ง;)