เวอร์ชันการจัดเรียง
NFS4 ติดตั้งใน แทง
โดยปกติจะเริ่มบริการพื้นหลังเพื่อลองใหม่อีกครั้งเมื่อโฮสต์การเมานต์ไม่พร้อมใช้งาน อย่างไรก็ตาม เฉพาะระหว่างการรีบูตและหมดเวลาการเชื่อมต่อเท่านั้น บริการพื้นหลังไม่สามารถเริ่มทำงาน หากการเชื่อมต่อถูกปฏิเสธในการรีบูต หรือเงื่อนไขใดๆ หลังจากรีบูต บริการเบื้องหลังจะเริ่มทำงาน
เวอร์ชั่นยาว
นี่คือ Oracle8 ซึ่งเป็นรสชาติ RHEL8 / CentOS8 ใน /etc/fstab
ฉันมี
[xx:xx:xx:xx:xx:xx:xx:xx]:/example /mnt/example nfs4 ค่าเริ่มต้น 0 0
และใน /etc/nfsmount.conf
ฉันมี
[ NFSMount_Global_Options ]
ค่าเริ่มต้น = 4
nfsvers=4
พื้นหลัง = จริง
rw=จริง
ยาก = จริง
ซิงค์=จริง
rsize=32k
wsize=32k
นอร์ดีร์พลัส=จริง
แอคติโม=3
_netdev=จริง
ฉันยืนยันใน /proc/เมานต์
ว่ามีการใช้การตั้งค่าส่วนกลางกับการเมานต์เมื่อใช้งานได้ เมื่อบริการพื้นหลังเริ่มทำงานตามที่คาดไว้ คุณจะเห็นบริการทำงาน
[root@01b1 /]# ps aufx | เกรป เอ็นเอฟเอส
รูท 1077 0.0 0.0 0 0 ? ฉัน< 18:31 0:00 \_ [nfsiod]
รูท 1506 0.0 0.1 221928 1036 pts/0 S+ 19:16 0:00 \_ grep --color=auto nfs
ราก 1466 0.0 0.0 47812 588 ? Ss 18:36 0:00 /sbin/mount.nfs4 [xx:xx:xx:xx:xx:xx:xx:xx]:/example /mnt/example -o rw
และเพื่อความชัดเจน เมื่อโฮสต์เซิร์ฟเวอร์พร้อมใช้งาน การเมานต์จะทำงานทุกครั้ง ต่อไปนี้คือเมื่อโฮสต์ไม่พร้อมใช้งาน เช่น รีบูต พอร์ตถูกบล็อก เซิร์ฟเวอร์ nfs
หยุดลง ฯลฯ
เมื่อบริการพื้นหลังเริ่มต้นเมื่อรีบูตระบบจะแสดงสิ่งนี้ใน /var/log/messages
8 มิ.ย. 17:42:29 01b1 systemd[1]: mnt-example.mount: ไดเร็กทอรี /mnt/example ที่จะเมานต์ไม่ว่างเปล่า เมานต์ต่อไป
8 มิ.ย. 17:42:29 01b1 systemd[1]: การติดตั้ง /mnt/example...
8 มิ.ย. 17:42:31 01b1 เมานต์ [1027]: เมานต์ไปยังเซิร์ฟเวอร์ NFS 'xx:xx:xx:xx:xx:xx:xx:xx' ล้มเหลว: การเชื่อมต่อถูกปฏิเสธ กำลังลองใหม่
8 มิ.ย. 17:42:31 01b1 mount[1018]: mount.nfs4: backgrounding "[xx:xx:xx:xx:xx:xx:xx:xx]:/example"
8 มิ.ย. 17:42:31 01b1 mount[1018]: mount.nfs4: mount options: "rw,vers=4,bg,rw,hard,sync,rsize=32768,wsize=32768,nordirplus,actimeo=3,_netdev "
8 มิ.ย. 17:42:31 01b1 systemd[1]: mnt-example.mount: กระบวนการเมานต์เสร็จสิ้น แต่ไม่มีการเมานต์
8 มิ.ย. 17:42:31 01b1 systemd[1]: mnt-example.mount: ล้มเหลวด้วยผลลัพธ์ 'โปรโตคอล'
8 มิ.ย. 17:42:31 01b1 systemd [1]: ไม่สามารถเมานต์ / mnt / ตัวอย่าง
8 มิ.ย. 17:42:32 01b1 เมานต์ [1128]: เมานต์ไปยังเซิร์ฟเวอร์ NFS 'xx:xx:xx:xx:xx:xx:xx:xx' ล้มเหลว: การเชื่อมต่อถูกปฏิเสธ กำลังลองใหม่
8 มิ.ย. 17:42:34 01b1 เมานต์ [1128]: เมานต์ไปยังเซิร์ฟเวอร์ NFS 'xx:xx:xx:xx:xx:xx:xx:xx' ล้มเหลว: การเชื่อมต่อถูกปฏิเสธ กำลังลองใหม่
แต่เมื่อไม่สามารถเริ่มบริการพื้นหลังเมื่อรีบูตเครื่องจะแสดงสิ่งนี้
8 มิ.ย. 17:49:05 01b1 systemd[1]: mnt-example.mount: ไดเร็กทอรี /mnt/example ที่จะเมานต์ไม่ว่างเปล่า เมานต์ต่อไป
8 มิ.ย. 17:49:05 01b1 systemd[1]: กำลังติดตั้ง /mnt/example...
8 มิ.ย. 17:50:35 01b1 systemd[1]: mnt-example.mount: หมดเวลาการติดตั้ง สิ้นสุด
8 มิ.ย. 17:50:35 01b1 systemd[1]: mnt-example.mount: ออกจากกระบวนการเมานต์แล้ว, code=killed status=15
8 มิ.ย. 17:50:35 01b1 systemd[1]: mnt-example.mount: ล้มเหลวด้วยผลลัพธ์ 'หมดเวลา'
8 มิถุนายน 17:50:35 01b1 systemd[1]: ไม่สามารถเมานต์ / mnt / ตัวอย่าง
ในการรีบูตเมื่อพอร์ตโฮสต์เปิดอยู่ แต่ เซิร์ฟเวอร์ nfs
ไม่ทำงาน การเชื่อมต่อถูกปฏิเสธ และบริการพื้นหลังเริ่มทำงาน
ในการรีบูตเมื่อโฮสต์ปิดอยู่หรือพอร์ตถูกบล็อก การเชื่อมต่อหมดเวลา และบริการพื้นหลังไม่เริ่มทำงาน
ถ้าโฮสต์ไม่พร้อมใช้งาน แสดงว่าไคลเอ็นต์ไม่รีบูต และฉันจะทำเอง เมานต์ -a
บริการพื้นหลังจะเริ่มต้นเสมอแม้ว่าการเชื่อมต่อจะถูกปฏิเสธหรือหมดเวลา
มีความคิดใดว่าทำไมบริการพื้นหลังไม่สามารถเริ่มต้นเฉพาะเมื่อรีบูตเครื่องและหมดเวลาการเชื่อมต่อ มีวิธีแก้ไขอย่างไรเพื่อให้พื้นหลังเริ่มทำงานเมื่อไม่มีโฮสต์
--- อัปเดต ---
ฉันได้ลองใช้การตั้งค่าแบบสุ่มเพื่อดูว่ามีบางอย่างที่จะช่วยได้หรือไม่ ฉันพบว่าการปรับการตั้งค่าการหมดเวลา/การลองใหม่ทำให้บริการพื้นหลังเริ่มต้นเมื่อรีบูตทั้งการหมดเวลาและปฏิเสธการเชื่อมต่อ
/etc/nfsmount.conf
# เริ่มต้น timeo=600
# เริ่มต้น retrans = 2
ไทม์โอ=20
รีทรานส์=4
อย่างไรก็ตามฉันรู้สึกว่านี่เป็นการช่วยวงดนตรีและไม่ใช่วิธีแก้ปัญหา สิ่งนี้ไม่สมเหตุสมผลสำหรับฉันเว้นแต่จะเป็นข้อบกพร่องของ RHEL ฉันเดาว่าปัญหาการแข่งขันบางอย่างกำลังเกิดขึ้นในช่วงหมดเวลาที่นานขึ้นฉันไม่ไว้ใจสิ่งนี้เพราะจะเกิดอะไรขึ้นถ้าสภาพการแข่งขันเหล่านั้นเปลี่ยนไปและมันพังอีกครั้ง