automount nfs: การตั้งค่าการหมดเวลาอัตโนมัติสำหรับเซิร์ฟเวอร์ที่ไม่น่าเชื่อถือ - วิธีหลีกเลี่ยงการแฮงเอาท์?


18

ฉันกำลังเรียกใช้เซิร์ฟเวอร์ขนาดเล็กสำหรับการแบ่งปันแบบคงที่ของเรา ส่วนใหญ่เป็นไฟล์เซิร์ฟเวอร์ที่มีบริการเพิ่มเติม ลูกค้าคือเครื่องลีนุกซ์ (ส่วนใหญ่เป็น Ubuntu แต่ก็มี Distros อื่น ๆ เช่นกัน) และ Mac (-Book) บางตัวอยู่ระหว่าง (แต่พวกเขาไม่สำคัญสำหรับคำถาม) เซิร์ฟเวอร์กำลังใช้งานUbuntu 11.10 (Oneiric Ocelot) 'Server Edition' ซึ่งเป็นระบบที่ฉันทำการตั้งค่าและทดสอบรัน 11.10 'Desktop Edition' เราใช้การแบ่งปันของเรากับ Samba (ซึ่งเราคุ้นเคยมากขึ้น) สักพักแล้วย้ายไปที่NFS (เพราะเราไม่มีผู้ใช้ Windows ใน LAN และต้องการลอง) และทุกอย่างก็ใช้ได้ดี .

ตอนนี้ฉันต้องการตั้งค่าการติดตั้งอัตโนมัติด้วยautofsเพื่อทำให้สิ่งต่าง ๆ ราบรื่นขึ้น (จนถึงตอนนี้ทุกคนจะเมาหุ้นด้วยตนเองเมื่อจำเป็น) ดูเหมือนว่าการติดตั้งอัตโนมัติจะทำงานเช่นกัน ปัญหาคือว่า "เซิร์ฟเวอร์" ของเราไม่ทำงานตลอด 24 ชั่วโมงเพื่อประหยัดพลังงาน (ถ้ามีคนต้องการสิ่งต่าง ๆ จากเซิร์ฟเวอร์เปิด / ปิดเครื่องแล้วปิดเครื่องในเวลาต่อมาดังนั้นจึงใช้เวลาสองสามชั่วโมงต่อวันเท่านั้น) แต่เนื่องจากการตั้งค่า autofs ไคลเอนต์วางสายออกบ่อยเมื่อเซิร์ฟเวอร์ไม่ทำงาน

  • ฉันสามารถเริ่มไคลเอนต์ทั้งหมดได้ดีแม้ในขณะที่เซิร์ฟเวอร์ไม่ทำงาน

  • แต่เมื่อฉันต้องการแสดงไดเรกทอรี (ใน terminal หรือ nautilus) ที่มีลิงค์สัญลักษณ์เพื่อแชร์ภายใต้/nfsในขณะที่เซิร์ฟเวอร์ไม่ทำงานมันแขวนเป็นเวลาอย่างน้อยสองนาที (เพราะ autofs ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ แต่เก็บ พยายามฉันสมมติ)

    • มีวิธีหลีกเลี่ยงสิ่งนั้นหรือไม่? ดังนั้นการติดตั้งจะล่าช้าจนกว่าการเปลี่ยนแปลงในไดเรกทอรีหรือจนกว่าเนื้อหาของไดเรกทอรีนั้นจะเข้าถึง? ไม่เมื่อ "มอง" ที่เชื่อมโยงไปยังหุ้นภายใต้/nfs? ฉันคิดว่าไม่ได้ แต่อาจเป็นไปได้ที่จะไม่พยายามเข้าถึงมันนานนัก? และให้ไดเรกทอรีที่ว่างเปล่ากับฉันหรือ "ไม่สามารถค้นหา / เชื่อมต่อกับ dir นั้น" หรืออะไรทำนองนั้น
  • เมื่อเซิร์ฟเวอร์ทำงานทุกอย่างทำงานได้ดี

  • แต่เมื่อเซิร์ฟเวอร์ปิดตัวลงก่อนที่จะมีการเลิกเมาท์เครื่องมือ (เช่นdfหรือll) แฮงค์ (สมมติว่าเป็นเพราะพวกเขาคิดว่าการแชร์ยังคงเปิดอยู่ แต่เซิร์ฟเวอร์จะไม่ตอบสนองอีกต่อไป)

    • มีวิธียกเลิกการต่อเชื่อมหุ้นอัตโนมัติหรือไม่เมื่อการเชื่อมต่อขาดหาย
  • นอกจากนี้ไคลเอนต์จะไม่ปิดหรือรีสตาร์ทเมื่อเซิร์ฟเวอร์หยุดทำงานและพวกเขายังคงใช้งานร่วมกันอยู่ พวกเขาแขวน (ไม่สิ้นสุดอย่างที่เห็น) ใน "การฆ่ากระบวนการที่เหลืออยู่ " และดูเหมือนว่าจะไม่มีอะไรเกิดขึ้น

ฉันคิดว่าทุกอย่างลงมาเพื่อค่าหมดเวลาที่เป็นระเบียบสำหรับการติดตั้งและยกเลิกการต่อเชื่อม และอาจจะลบการแชร์ทั้งหมดเมื่อการเชื่อมต่อกับเซิร์ฟเวอร์หายไป

ดังนั้นคำถามของฉันคือ: วิธีจัดการกับเรื่องนี้? และเป็นโบนัส: มีวิธีที่ดีในการเชื่อมโยงภายใน/nfsโดยไม่จำเป็นต้องติดหุ้นจริง (ตัวเลือก autofs หรืออาจใช้ pseudo FS /nfsซึ่งจะถูกแทนที่เมื่อการเมาท์เกิดขึ้นหรืออะไรทำนองนั้น)?

การตั้งค่าของฉัน

การตั้งค่า NFSค่อนข้างธรรมดาแต่ให้บริการเราดี (ใช้NFSv4 ):

/ etc / default / NFS ทั่วไป

NEED_STATD=
STATDOPTS=
NEED_IDMAPD=YES
NEED_GSSD=

/etc/idmapd.conf

[General]
Verbosity = 0
Pipefs-Directory = /var/lib/nfs/rpc_pipefs
Domain = localdomain
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup

/ etc / ส่งออก

/srv/   192.168.0.0/24(rw,no_root_squash,no_subtree_check,crossmnt,fsid=0)

ภายใต้รูทการเอ็กซ์ปอร์ต/srvเรามีสองไดเรกทอรีด้วยbind:

/ etc / fstab (เซิร์ฟเวอร์)

...
/shared/shared/      /srv/shared/      none    bind  0 0
/home/Upload/        /srv/upload/      none    bind  0 0

ส่วนที่ 1 นั้นส่วนใหญ่จะอ่านได้อย่างเดียว (แต่ฉันบังคับใช้ผ่านคุณสมบัติไฟล์และความเป็นเจ้าของแทนการตั้งค่า NFS) และส่วนที่สองคือrwสำหรับทุกคน หมายเหตุ: พวกเขาไม่มีรายการพิเศษใน/ etc / exports การติดตั้งแยกทำงานได้

ในฝั่งไคลเอ็นต์พวกเขาได้รับการติดตั้ง/etc/fstabและติดตั้งด้วยตนเองตามต้องการ ( mortonเป็นชื่อของเซิร์ฟเวอร์และแก้ไขได้)

/ etc / fstab (ไคลเอ็นต์)

morton:/shared  /nfs/shared nfs4    noauto,users,noatime,soft,intr,rsize=8192,wsize=8192    0   0
morton:/upload  /nfs/upload nfs4    noauto,users,noatime,soft,intr,rsize=8192,wsize=8192    0   0

สำหรับการตั้งค่า autofsฉันลบรายการจาก/etc/fstabบนไคลเอนต์และตั้งค่าส่วนที่เหลือเช่นนี้:

/etc/auto.master

/nfs    /etc/auto.nfs

ก่อนอื่นฉันเชื่อมโยงไฟล์ปฏิบัติการที่ให้มา/etc/auto.net(คุณสามารถดูได้ที่นี่ ) แต่มันจะไม่ติดอะไรให้ฉันโดยอัตโนมัติ จากนั้นฉันเขียน/etc/auto.nfsตาม HowTos ที่ฉันพบออนไลน์:

/etc/auto.nfs

shared  -fstype=nfs4  morton:/shared
upload  -fstype=nfs4  morton:/upload

และมันก็ใช้งานได้ ... หรือจะทำงานถ้าเซิร์ฟเวอร์จะทำงานตลอด 24/7 ดังนั้นเราจะได้รับการแฮงค์เมื่อไคลเอนต์บูทโดยที่เซิร์ฟเวอร์ไม่ทำงานหรือเมื่อเซิร์ฟเวอร์ล่มขณะที่แชร์ที่ยังเชื่อมต่ออยู่

คำตอบ:


2

การใช้ระบบเมานต์ใด ๆ คุณต้องการหลีกเลี่ยงสถานการณ์ที่ Nautilus แสดงรายการไดเร็กตอรี่ที่มีการเมานต์ที่อาจจะติดตั้งหรือไม่ก็ได้ ดังนั้นด้วย autofs อย่าสร้างเมานต์ใน / nfs หากคุณทำเช่นนั้นเมื่อคุณใช้ Nautilus เพื่อแสดงรายการ 'ระบบไฟล์' มันจะพยายามสร้างสิ่งที่เมาท์ควรมีอยู่ใน / nfs และหากการเมานต์เหล่านั้นล้มเหลวก็จะใช้เวลาไม่นาน

ดังนั้นสิ่งที่ฉันทำคือเปลี่ยน auto.master เพื่อสร้างการเมาท์ใน / nfs / mnt

นี่เป็นการแก้ไขปัญหาสำหรับฉัน ฉันเพิ่งจะล่าช้าไปนานหากฉันพยายามแสดงรายการเนื้อหาของ / nfs / mnt ซึ่งฉันสามารถหลีกเลี่ยงได้อย่างง่ายดาย


20

เมานต์ NFS-share บนไคลเอนต์โดยใช้ mount-options "bg, intr, hard"

สิ่งสำคัญที่สุดในกรณีของคุณคือ "bg" สำหรับพื้นหลัง - ซึ่งบอกให้ระบบไม่บล็อกเมื่อเซิร์ฟเวอร์ไม่พร้อมใช้งาน

"intr" สำหรับการอินเตอร์รัปต์ - ดังนั้นคุณสามารถฆ่าการเมาท์ที่เมาท์บนไคลเอนต์ด้วยคำสั่ง kill

"hard" ตรงกันข้ามกับ "soft" ความแตกต่างคือ "ยาก" จะพยายามอย่างไม่มีที่สิ้นสุดในขณะที่ "อ่อน" จะกลับมาลองอีกครั้งแบบทวีคูณเมื่อเซิร์ฟเวอร์ไม่สามารถใช้ได้


ขอบคุณสำหรับคำตอบ ตอนนี้ฉันไม่สามารถทดสอบได้เพราะฉันไม่ได้อยู่ที่บ้าน แต่หลังจากคาดว่าจะได้รับหน้าคน (อีกครั้ง) ฉันได้รับคำถามเพิ่มเติม: hardและbgเสียงตอบโต้ที่ใช้งานง่ายสำหรับฉันในตอนแรก ฉันต้องการให้ภูเขาไม่ลองอีกครั้งและกลับคืนมาทันทีหากมีการประกันตัว? intrดูดี แต่ก็ดูเหมือนว่าจะไม่ทำงานอีกต่อไป: " ตัวเลือกการเมาท์ intr / nointr ถูกคัดค้านหลังจากเคอร์เนล 2.6.25 SIGKILL เท่านั้นที่สามารถขัดจังหวะการดำเนินการ NFS ที่ค้างอยู่บนเมล็ดเหล่านี้และหากระบุไว้ตัวเลือกการเมาท์นี้จะไม่สนใจ กับเมล็ดที่แก่กว่า "?
บรูตัส

2
ยากจะลองใหม่อย่างไม่รู้จบ - bg จะไม่ปิดกั้นหากไม่สามารถติดตั้งได้ในขณะนี้ ผลลัพธ์จะเป็นว่าถูกเมาท์เมื่อพร้อมใช้งาน แต่การดำเนินการอื่น ๆ ทั้งหมดจะดำเนินต่อไป ดูเหมือนว่าจะเป็นค่าเริ่มต้นในตอนนี้ - ซึ่งดีมาก ในการเริ่มต้นคุณต้องรีบู๊ตไคลเอนต์ที่หยุดทำงานหากเซิร์ฟเวอร์ NFS ของคุณเสียชีวิต ...
Nils

ฉันเพิ่งทดสอบมัน แต่ดูเหมือนว่าการเพิ่มhard,bgจะ/etc/auto.masterไม่มีอะไรเปลี่ยนแปลง A time ls -l ~(ผู้ใช้ของฉันมี symlink ไป/nfs/upload) ยังคงใช้เวลามากกว่านั้นสองนาทีเมื่อเซิร์ฟเวอร์ไม่ทำงาน
บรูตัส

คุณรีสตาร์ท autofs หรือไม่ เฉพาะการเปลี่ยนแปลงของ submap เท่านั้นที่จะเผยแพร่โดยไม่ต้องรีสตาร์ท autofs
นิลส์

ฉันทำ:sudo reload autofs && sudo restart autofs
บรูตัส

7

ฉันเล่นไปรอบ ๆ พร้อมกับตัวเลือกบางอย่างจาก man page ทั้งหมดbg,hard, bg,soft, fg,hardและfg,softให้ฉันกลับมาครั้งมากกว่าสอง minuets

retrans=1,retry=0แม้ว่าการตั้งค่า(รวมกับข้อใดข้อหนึ่ง) ทำให้ฉันมีเวลาประมาณสามวินาที ค่อนข้างดี แม้ว่าฉันจะไม่เงียบแน่นอนว่าชุดค่าผสมแต่ละชุดมีความหมายอย่างไร จะขุดไปเรื่อย ๆ

นอกจากนี้ผมมาในตัวเลือก autofs และMOUNT_WAIT UMOUNT_WAITฉันไม่สามารถรับผลลัพธ์ที่แตกต่างจากพวกเขาได้ แต่ฉันจะพยายามต่อไป ดูเหมือนว่าเป็นวิธีที่ดีในการใช้ตัวเลือก "ปลอดภัยมากขึ้น" (หรือลองอีกครั้งหรือมากกว่านั้น) ตัวเลือก NFS แต่กลับมาเร็วสำหรับ autofs หรือไม่?


1
ดูเหมือนจะมีตัวเลือกอื่น ๆ เช่นrsize=32768,wsize=32768,noatimeที่ระบุไว้ที่นี่: techrepublic.com/blog/opensource/ ......
Ehtesh Choudhury

-1

ในการตั้งค่าระบบไฟล์ NFS เพื่อเมาต์โดยอัตโนมัติทุกครั้งที่คุณเริ่มระบบ Red Hat Linux คุณต้องเพิ่มรายการสำหรับระบบไฟล์ NFS นั้นลงในไฟล์ / etc / fstab ไฟล์ / etc / fstab มีข้อมูลเกี่ยวกับระบบไฟล์ที่เมาท์ (และพร้อมที่จะเมาต์) สำหรับระบบ Red Hat Linux ของคุณ EX:: nfs สอดคล้องกับชื่อโฮสต์, ที่อยู่ IP หรือชื่อโดเมนแบบเต็มของเซิร์ฟเวอร์ที่ส่งออกระบบไฟล์ นี่คือพา ธ ไปยังไดเร็กทอรีที่เอ็กซ์พอร์ต ระบุตำแหน่งบนระบบไฟล์โลคัลเพื่อเมาต์ไดเร็กทอรีที่เอ็กซ์พอร์ต จุดเมานต์นี้ต้องมีอยู่ก่อนที่จะอ่าน / etc / fstab มิฉะนั้นการเมาต์จะล้มเหลวพื้นที่ระบุตัวเลือกการเมาท์สำหรับระบบไฟล์ ตัวอย่างเช่นหากพื้นที่ตัวเลือกระบุ rw, suid, ระบบไฟล์ที่เอ็กซ์พอร์ตจะถูกเมาท์เพื่ออ่าน - เขียนและผู้ใช้และกลุ่มที่ตั้งค่าโดยเซิร์ฟเวอร์จะถูกใช้ โปรดทราบว่าจะไม่ใช้วงเล็บในที่นี้

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