ฉันคิดว่าฉันรู้ว่าเกิดอะไรขึ้นที่นี่ และทำไม Arch wiki ถึงสับสน
NFS เวอร์ชันโบราณตั้งแต่ช่วงปี 1990 (เวอร์ชัน 3 และก่อนหน้า) สามารถส่งออกไดเร็กทอรีตามอำเภอใจซึ่งอยู่ที่ใดก็ได้ในระบบไฟล์ สิ่งนี้เปลี่ยนแปลงด้วย NFSv4 ซึ่งกำหนดให้ไดเร็กทอรีที่เอ็กซ์พอร์ตทั้งหมดเป็นไดเร็กทอรีย่อยของการเอ็กซ์พอร์ต "รูท" ระดับบนสุดซึ่งกำหนดโดยผู้ดูแลระบบและมีตัวเลือกเอ็กซ์พอร์ต fsid=0
เพื่อแยกแยะว่าเป็นราก ไม่มีรูทที่กำหนดไว้ล่วงหน้า ผู้ดูแลระบบทำการเลือกอย่างชัดเจนเพื่อกำหนดราก
ดังนั้นหากคุณกำหนด /srv/nfs
ในฐานะรูท การเอ็กซ์พอร์ต NFSv4 อื่นๆ ทั้งหมดต้องเป็นไดเร็กทอรีย่อยของไดเร็กทอรีนั้น
อย่างไรก็ตาม มีแนวโน้มว่าไดเร็กทอรีที่คุณต้องการส่งออกไม่ได้อยู่ภายใต้ /srv/nfs
. ตัวอย่างเช่น คุณอาจต้องการส่งออก /var/lib/docker/volumes
. ในการทำเช่นนี้ แทนที่จะย้ายไฟล์ไปรอบๆ ซึ่งอาจทำลายสิ่งต่างๆ ที่ขึ้นอยู่กับว่าไฟล์เหล่านั้นอยู่ในตำแหน่งดั้งเดิม คุณสามารถสร้างการผูกเมานต์เพื่อให้ไฟล์ยังคงอยู่ในตำแหน่งเดิมในระบบไฟล์ แต่ยังมองเห็นได้ภายใต้การผูก- เส้นทางที่ติดตั้ง
mkdir /srv/nfs/volumes
เมานต์ --bind /var/lib/docker/volumes /srv/nfs/volumes
ตอนนี้ไฟล์มีอยู่ทั้งสองตำแหน่งในแผนผังระบบไฟล์ และด้วยเหตุนี้ NFSv4 จึงสามารถส่งออกไฟล์เหล่านั้นได้
สิ่งเดียวที่ฉันยังคงสับสนคือเหตุใด Arch wiki จึงเรียกมันว่า "แนวปฏิบัติด้านความปลอดภัยที่ดี" ในเมื่อ NFSv4 ทำงานอย่างไร